Definieren Sie \section neu, um eine weitere Eingabe zu erhalten

Definieren Sie \section neu, um eine weitere Eingabe zu erhalten

Ich möchte \sectionden Befehl so umdefinieren, dass er eine Eingabe annehmen kann, \sectiondescdie 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 xparseund \RenewDocumentCommandist aus meiner Sicht der einfachste.

Ich schlage \section[]{}[]jedoch vor, es zu verwenden, d. h. es ist möglich, die Abschnittsbeschreibung wegzulassen.

Das \sectiondescMakro 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}

verwandte Informationen