我希望在 Latex 中有一个数字变量,用于 includegraphics 命令中的 scale 参数(例如,让所有有限状态机图片缩放到相同大小)。如果我只使用 makro,则可行,如下所示:
\newcommand{\fsmScale}{0.7}
\includegraphics[scale=\fsmScale]{...}
但有时候数字可能有点太大(左右),我可能想做这样的事情:
\includegraphics[scale=0.9\fsmScale]{...}
但这仅适用于长度,而长度具有不能作为比例的单位(pt、mm 等)。
这是我想做的一个最小的非工作示例:
\documentclass{article}
\newlength{\mylength}
\setlength{\mylength}{0.7}
\begin{document}
\includegraphics[scale=0.9\mylength]{...}
\end{document}
有没有办法做到这一点或类似的事情?
答案1
不幸的是,您无法使用 (La)TeX 计算两个非整数因子的乘积并得到一个因子,至少不能直接这样做。其中一个必须是维度,结果也将是维度。但是,LaTeX 有一个内部宏,\rem@pt
可以从维度值中删除尾随部分pt
以将其转换为因子。可以使用 eTeX 进行乘法\dimexpr
:
\documentclass{article}
\usepackage{graphicx}
\newcommand{\myfactor}{0.7}
\newcommand{\scaletomyfactor}[1]{%
\csname rem@pt\expandafter\endcsname\the\dimexpr #1\dimexpr\myfactor pt\relax\relax
}
\begin{document}
\includegraphics[scale=\scaletomyfactor{0.7}]{example-image}
\end{document}
如果\myfactor
是 LaTeX 长度寄存器,您可以\dimexpr\myfactor pt\relax
简单地更改为\myfactor
。
答案2
如果你希望它们大小相同,最好使用height=
,scale=
但你可以按照你建议的算术进行操作
\includegraphics[scale=\mylength,scale=0.9]{...}