Latex


Latex: Start enumerate list with value zero (0) with no additional plugins

\begin{enumerate}
	\setcounter{enumi}{-1}
	\item Item 0
	\item Item 1
\end{enumerate}

The above snippet is a solution we used to start an enumeration list in Latex from the number zero (0). We wanted to avoid adding new packages and the above solution worked out for us.


Latex / Beamer: Automatically split the content of a frame to multiple slides

Did you ever wrote too much content for a frame?

Did that content spill out of the slide?

Were you too bored to create a new slide and split the content between them?

If the answer is yes, which most probably is, you will love the allowframebreaks parameter for the \begin{frame} directive.

\begin{frame}[allowframebreaks]{Bibliography}
	%Include a working bibliography of key texts that inform your study and methodology.
	%Your appendices may include Experiment Diagrams, Permissions for Human Subject Testing, etc.
	%Both bibliographies and required appendices tend to be discipline specific: know what the requirements are.
	\bibliography{bibliography}{}
	\bibliographystyle{IEEEtran}
\end{frame}

The \begin{frame}[allowframebreaks]{Bibliography} directive creates a new frame name Bibliography, if the contents of the frame exceed the size of the slide, it will automatically create new ones to accommodate the requirements.

Note: Using the allowframebreaks parameter automatically appends to the title of the slide Latin numbering (e.g. the first slide will be Bibliography I).


Latex / Beamer: Table of contents that shows other subsections only for current section

The following snippet will create a table of contents which will show the titles of all sections but it will include the subsections that belong to the current section only. This way, we can copy paste this slide in different parts of the presentation and have a custom table of contents per section.

\section{Introduction}

\begin{frame}{Outline for \secname}
	\tableofcontents[currentsection, hideothersubsections, sectionstyle=show/show]
\end{frame}

Latex / Beamer: Variable to get current Section name

Recently, we were trying to write a table of contents for a specific section in a Latex / Beamer presentation. Being too lazy to update the frame title each time the section name might change we needed an automation to do that for us!

Luckily, the following variable does the trick: \secname gets the Section name. \subsecname gets the subsection name for those that might need it.

\begin{frame}
	\frametitle{Outline for \secname}
	\tableofcontents[currentsection, hideothersubsections, sectionstyle=show/show] 
\end{frame}


Latex/Beamer: Undefined control sequence. …meroption{show notes on second screen=right}

When trying to enable the option that shows presentation notes on a different monitor using:

\setbeameroption{show notes on second screen=right}

we got the following error:

Undefined control sequence. …meroption{show notes on second screen=right}
Missing \begin{document}. …meroption{show notes on second screen=right}

To fix this issue we enabled the package pgfpages

\usepackage{pgfpages}

To present this special built PDF presentation across two screens we used dspdfviewer.

dspdfviewer is a pre-rendering and caching (read: fast) full-screen pdf viewer specifically designed for latex-beamer presentations, that were created with the show notes on second screen=right option (\setbeameroption{show notes on second screen=right}).

https://dspdfviewer.danny-edel.de/
http://manpages.ubuntu.com/manpages/focal/man1/dspdfviewer.1.html

Special note: when we were testing dspdfviewer on Ubuntu 20.04LTS we thought that the secondary screen had to be on the left of the primary (because of the build command that specifies that notes need to be on the right). That was actually wrong, as you will see in the following picture even though we built the presentation to have the notes on the “right” dspdfviewer was able to work as expected even when the secondary screen was on top of the primary.