无法在 \newcommand 中为 includegraphics 乘以宽度

无法在 \newcommand 中为 includegraphics 乘以宽度

最小示例,乘以 0.5 会导致命令失败:

\documentclass{beamer}
\usepackage{graphicx}
\begin{document}
\newcommand{\dontwork}[1]{\includegraphics[width=0.5*(#1)\textwidth]{frog.jpg}}
\newcommand{\work}[1]{\includegraphics[width=#1\textwidth]{frog.jpg}}

\begin{frame}{Frame 1}
    \dontwork{1}
\end{frame}
\end{document}

我收到此错误: 这是我的错误

答案1

使用\dimexpr(由 e-TeX 扩展提供,其可用性是当今 LaTeX 的标准):

\includegraphics[width=\dimexpr.5\textwidth*(#1)\relax]{frog.jpg}

请注意,在乘法的情况下, 的正式语法\dimexpr要求首先给出维度,最后给出比例因子,如果由数值表达式形成,则嵌套在括号中。例如,如果形成有效的数值表达式,则
\dimexpr(.5\textwidth)*(#1)\relax
有效 ,否则无效。#1
\dimexpr(#1)*(.5\textwidth)\relax

如果#1不一定是整数,则缩放其\dimexpr本身:

\includegraphics[width=#1\dimexpr.5\textwidth\relax]{frog.jpg}
或者
\includegraphics[width=.5\dimexpr#1\textwidth\relax]{frog.jpg}

答案2

你可以使用

  \includegraphics[width=#1\dimexpr0.5\textwidth\relax]{...}

虽然指定一半的分数\textwidth似乎是一个非常奇怪的界面,但您想要一半的分数吗\columnwidth

答案3

我在 latex discord 上得到了一个答案:

\newcommand{\flatfrog}[1]{\includegraphics[width=\dimexpr 0.33\textwidth*(#1)\relax]{frog.jpg}}

工作,进行保留所需\dimexpr维度的评估\textwidth

相关内容