3

Currently, (and this is even mentioned in the current Beamer User Guide, Chapter 19), in-frame notes are ordered such that those notes that used the "[item]" option are all bunched up at the end of the subject note page.

Is there a relatively painless way to change this so that you can list said "[item]" notes, say, in the middle of the notes page?

Here is a MWE to show what I'm looking for:

\documentclass{beamer}

\setbeameroption{show notes}

\begin{document}

\begin{frame}
    This is boring.
    \note{I want this to be line 1\par}
    \note[item]{I want this to be line 2}
    \note{I want this to be line 3}
\end{frame}

\end{document}

The output (notes page) of this code is:

**enter image description here**

WHAT FINALLY WORKED FOR ME:

Please see the selected answer below, plus the comments attached to same, for the explanation behind the following code. Also note that the indentation problem (as per ted_kingdom's comment below said selected answer) still exists.

\documentclass{beamer}
\setbeameroption{show notes}
\begin{document}


\makeatletter
\def\myrenewcommand{\@ifnextchar<{\beamer@myrenewcom}{\beamer@origrenewcommand}}
\def\beamer@myrenewcom<>{\@star@or@long\beamer@myrenew@command}
\def\beamer@myrenew@command#1{%
  \expandafter\def\expandafter\beamer@name\expandafter{\csname @orig\string#1\endcsname}%
  \expandafter\let\beamer@name=#1\relax%
\@ifnextchar[{\beamer@@myrenewcom{#1}}{\beamer@myrenewcomnoopt
{#1}{0}}}
\def\beamer@@myrenewcom#1[#2]{\@ifnextchar[{\beamer@myrenewcomopt{#1}{#2}}{\beamer@myrenewcomnoopt{#1}{#2}}}
\long\def\beamer@myrenewcomnoopt#1#2#3{%
  \ifnum#2=0\relax%
    \expandafter\def\expandafter#1\expandafter{\expandafter\beamer@sortzero\expandafter{\csname beamerx@\string#1\endcsname}}%
  \else
    \expandafter\def\expandafter#1\expandafter{\expandafter\beamer@sort\expandafter{\csname beamerx@\string#1\endcsname}{#2}}%
  \fi%
  \beamer@argscount=#2\relax%
  \advance\beamer@argscount by 1\relax%
  \expandafter\renewcommand\csname beamerx@\string#1\endcsname[\beamer@argscount]{#3}%
}
\long\def\beamer@myrenewcomopt#1#2[#3]#4{%
  \expandafter\def\expandafter#1\expandafter{\expandafter\beamer@presort\expandafter{\csname beamerx@\string#1\endcsname}{#2}{#3}}%
  \beamer@argscount=#2\relax%
  \advance\beamer@argscount by 1\relax%
  \expandafter\renewcommand\csname beamerx@\string#1\endcsname[\beamer@argscount]{#4}%
}


\makeatletter
\myrenewcommand<>{\beamer@inframenote}[2][]{%
  \ifbeamer@inlecture%
    \only#3{%
      \def\beamer@temp{#1}%
      \ifx\beamer@temp\beamer@itemtext%
        \expandafter\gdef\expandafter\beamer@notes%
        \expandafter{\beamer@notes\par\hskip30pt$\bullet$\hskip10pt#2\par}%
      \else
        \expandafter\gdef\expandafter\beamer@notes%
         \expandafter{\beamer@notes#2\par}
      \fi%
    }%
  \fi%
  }

\begin{frame}
    This is boring.
    \note{I want this to be line 1}
    \note[item]{I want this to be line 2}
    \note[item]{I want this to be line 3}
    \note{I want this to be line 4}
    \note{I want this to be line 5}
    \note[item]{I want this to be line 6}
    \note[item]{I want this to be line 7}
    \note{I want this to be line 8}
    \note{I want this to be line 9}
    \note[item]{I want this to be line 10}
\end{frame}

\end{document}

enter image description here

4
+50

A minimal working example

\documentclass{beamer}
\setbeameroption{show notes}
\begin{document}

\makeatletter
\renewcommand<>{\beamer@inframenote}[2][]{%
  \ifbeamer@inlecture%
    \only#3{%
      \def\beamer@temp{#1}%
      \ifx\beamer@temp\beamer@itemtext%
        \expandafter\gdef\expandafter\beamer@notes%
        \expandafter{\beamer@notes\par\hskip30pt$\bullet$\hskip10pt#2\par}%
      \else
        \expandafter\gdef\expandafter\beamer@notes%
          \expandafter{\beamer@notes#2}%
      \fi%
    }%
  \fi%
  }

\begin{frame}
    This is boring.
    \note{I want this to be line 1}
    \note[item]{I want this to be line 2}
    \note[item]{I want this to be line 3}
    \note{I want this to be line 4}
    \note{I want this to be line 5}
    \note[item]{I want this to be line 6}
    \note[item]{I want this to be line 7}
    \note{I want this to be line 8}
    \note{I want this to be line 9}
    \note[item]{I want this to be line 10}
\end{frame}

\end{document}

  • 1
    I can confirm that it works. However, it breaks text indentation of the itemised text spanned across multiple lines. – honey_badger Jul 24 '17 at 17:59
  • @ted_kingdom Maybe we can fix it by \parshape or \hangindent or whatsoever... I have little idea about the TeX core. – Symbol 1 Jul 24 '17 at 18:03
  • @Symbol1 Thank you for answering! – user36296 Jul 25 '17 at 19:21
  • 1
    @Digger It seems related to a known, solved bug. Maybe ....... update? – Symbol 1 Jul 25 '17 at 21:09
  • 1
    @Digger Lines 4 and 5 are together because there is not \par at the end of line 4. In your MWE there does exist a \par. So what do you want? You want to control this manually or automatically? For the later, replace the line \expandafter{\beamer@notes#2} by \expandafter{\beamer@notes#2\par}. – Symbol 1 Jul 28 '17 at 15:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.