在 beamer-LaTeX 文档中,我希望将所有图像水平居中,而无需在每种情况下都明确指定。我做了以下事情:
在序言中我写道:
\let\oig\includegraphics % original includegraphics
\renewcommand{\includegraphics}[1]{{\centering\oig{#1}\par}}
在身体里例如
\begin{frame}{Frame title}
\includegraphics{mcg}
\end{frame}
结果是错误信息
[9
]
Runaway argument?
][
! Paragraph ended before \Gin@iii was complete.
<to be read again>
\par
l.224 \end{frame}
(上面的代码片段生成了我的演示文稿的第 10 张幻灯片,代码片段的最后一行是 .tex 文件的第 224 行。)
我做错了什么?如何正确完成?
注意:beamer-LaTeX 文档的主体由 pandoc 自动生成,这意味着我无法更改包含图像的语法。
答案1
该类beamer
被重新定义\includegraphics
,使其成为一个强大的命令和覆盖感知。
要使事情正确起来有点复杂,因为重新定义发生在文档开始时。
\documentclass{beamer}
\usepackage{etoolbox}
\AtBeginDocument{%
\letcs\oig{@orig\string\includegraphics}%
\renewcommand<>\includegraphics[2][]{%
\only#3{%
{\centering\oig[{#1}]{#2}\par}%
}%
}%
}
\begin{document}
\begin{frame}
\frametitle{Test}
Some meaningless text
\includegraphics<2>[width=.3\textwidth]{duck}
Other meaningless text
\end{frame}
\end{document}
答案2
为什么不像保留原有选项newcommand*
那样更简单、更安全呢?\newcommand*{\myincludegraphics}[2]{{\centering\includegraphics[#1]{#2}\par}}
\includegraphics
\documentclass{beamer}
\usepackage{lmodern}
\begin{document}
\newcommand*{\myincludegraphics}[2]{{\centering\includegraphics[#1]{#2}\par}}
\begin{frame}
\myincludegraphics{width=.4\textwidth}{example-image-A}
\end{frame}
\begin{frame}
\myincludegraphics{width=.4\textwidth}{example-image-B}
\end{frame}
\begin{frame}
\myincludegraphics{width=.4\textwidth}{example-image-C}
\end{frame}
\end{document}