最小示例,乘以 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