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

1 Answer 1

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}

9
  • 1
    I can confirm that it works. However, it breaks text indentation of the itemised text spanned across multiple lines. Commented Jul 24, 2017 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
    Commented Jul 24, 2017 at 18:03
  • @Symbol1 Thank you for answering! Commented Jul 25, 2017 at 19:21
  • 1
    @Digger It seems related to a known, solved bug. Maybe ....... update?
    – Symbol 1
    Commented Jul 25, 2017 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
    Commented Jul 28, 2017 at 15:18

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .