如何自动使图像居中?

如何自动使图像居中?

在 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}

在此处输入图片描述

相关内容