
Ich möchte \section
den Befehl so umdefinieren, dass er eine Eingabe annehmen kann, \sectiondesc
die eine Beschreibung dazu enthält. Betrachten Sie das MWE:
\documentclass{beamer}
\usepackage{graphicx}
\begin{document}
%%% old definition
\section[short title]{Long Title}
%%% new definition
%\section[short title]{Long Title}{Really long description \\ multiple lines, often with graphics \includegraphics[width=.5\textwidth]{example-image-a}}
\begin{frame}
\sectionpage
\begin{center}
\normalfont
% \sectiondesc
\end{center}
\end{frame}
\end{document}
Antwort1
Der Weg mit xparse
und \RenewDocumentCommand
ist aus meiner Sicht der einfachste.
Ich schlage \section[]{}[]
jedoch vor, es zu verwenden, d. h. es ist möglich, die Abschnittsbeschreibung wegzulassen.
Das \sectiondesc
Makro wird so neu definiert, dass es bei jedem Aufruf auf Null erweitert wird \section
. Wenn also das vierte Argument weggelassen wird, wird keine Abschnittsbeschreibung bereitgestellt.
\documentclass{beamer}
\usepackage{graphicx}
\usepackage{xparse}
\let\beameroldsection\section% Store the old definition first
\def\sectiondesc{}
\RenewDocumentCommand{\section}{sO{#3}m+O{}}{%
\gdef\sectiondesc{}
\IfBooleanTF{#1}{% Grab the starred version, i.e. \section*
\beameroldsection*{#3}%
}{%
\beameroldsection[#2]{#3}%
\gdef\sectiondesc{#4}% Store argument 4
}%
}
\begin{document}
\section[short title]{Long Title}[Really long description \\ multiple lines, often with graphics \includegraphics[width=.5\textwidth]{example-image-a}]
\begin{frame}
\sectionpage
\begin{center}
\normalfont
\sectiondesc
\end{center}
\end{frame}
\section*{Foo}
\begin{frame}
\sectionpage
\begin{center}
\normalfont
\sectiondesc
\end{center}
\end{frame}
\end{document}