使用“无单位长度”作为比例参数

使用“无单位长度”作为比例参数

我希望在 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]{...}

相关内容