Neudefinition der Bildhöhe mit dem Befehl „renew“

Neudefinition der Bildhöhe mit dem Befehl „renew“

\secimageAls Bild habe ich auf meiner Abschnittstitelseite definiert :

\AtBeginSection[]{
  \begin{frame}
  \vfill
  \begin{center}
  %\centering
  \includegraphics[width=4cm]{\secimage}\\
  \begin{beamercolorbox}[sep=8pt,center,shadow=true,rounded=true]{title}
    \usebeamerfont{title}\insertsectionhead\par%
  \end{beamercolorbox}
  \end{center}
  \vfill
  \end{frame}
}

Und für jeden Abschnitt definiere ich das Bild mit neu \renewcommand{\secimage}{figureofchoice}. Aber in einem der Abschnitte möchte ich auch die Breite/Höhe neu definieren. Ich habe es \renewcommand{\secimage}[heigth=4cm]{image}so versucht, wie die Dokumentation des renewcommand die Optionen definiert, aber ich habe einen Kompilierungsfehler.

Wenn mir jemand sagen könnte, was ich falsch mache

Antwort1

Der folgende Code schlägt eine Änderung Ihrer Notation vor. Anstelle von \renewcommand{\secimage}{<image>}verwenden Sie , \setsecimage{[<options>]{<image>}}wobei es Ihnen ermöglicht, zusätzliche Optionen anzugeben.

\newcommand{\setsecimage}[1]{\gdef\secimagedetail{#1}}% Store section image detail
\let\secimagedetail\relax% Default definition of section image detail

\AtBeginSection{
  \begin{frame}
    \vfill
    \begin{center}
      \ifx\secimagedetail\relax\else % If section image exists
        \expandafter\includegraphics\secimagedetail \\
      \fi
      \begin{beamercolorbox}[sep=8pt,center,shadow=true,rounded=true]{title}
        \usebeamerfont{title}\insertsectionhead\par%
      \end{beamercolorbox}
    \end{center}
    \vfill
  \end{frame}
  \let\secimagedetail\relax% Remove section image detail
}

mit einer typischen Verwendung ähnlich

\setsecimage{[width=50pt]{example-image}}

\section{A section}

\section{Another section}

\setsecimage{{example-image}}

\section{Final section}

Wenn Ihr \setsecimagekeine enthält <options>(für den letzten Abschnitt im obigen Code), müssen Sie das <image>Argument trotzdem in eine „doppelte Klammer“ setzen, wie in \setsecimage{{<image>}}.

Antwort2

Definieren Sie einen \setsecimageBefehl mit derselben Syntax wie \includegraphics. Der Trick besteht darin, dass dadurch ein anderes Makro neu definiert wird.

\documentclass{beamer}

\AtBeginSection[]{
  \begin{frame}
  \vfill
  \begin{center}
  %\centering
  \addsecimage\\
  \begin{beamercolorbox}[sep=8pt,center,shadow=true,rounded=true]{title}
    \usebeamerfont{title}\insertsectionhead\par%
  \end{beamercolorbox}
  \end{center}
  \vfill
  \end{frame}
}

\newcommand{\setsecimage}[2][width=4cm]{%
  \renewcommand{\addsecimage}{\includegraphics[#1]{#2}}%
}
\newcommand{\addsecimage}{} % initialize

\begin{document}

\setsecimage{example-image}

\section{Normal}

\setsecimage[width=2cm]{example-image-a}

\section{Small}

\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen