当我在文档中包含图像时,我使用:
\includegraphics[width=\linewidth]{image.png}
。
有时我需要缩放宽度,因此我会使用:
\includegraphics[width=0.5\linewidth]{image.png}
。
有时我会使用同一篇文档创建两个不同的输出,并\ifthen
定义一个开关来更改文档的某些部分。这包括\scalefactor
。当我使用时:
\newcommand{\scalefactor}{0.5}
\includegraphics[width=\scalefactor*0.5\linewidth]{example-image}
我收到错误Illegal unit of measure (pt inserted).
要使它工作,需要做什么?
这里有一个 MWE 可以提供帮助:它可以工作,但是当取消注释注释行时,我们就会收到错误。
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\newcommand{\scalefactor}{0.5}
\includegraphics[width=\scalefactor\linewidth]{example-image}
\renewcommand{\scalefactor}{0.35}
\includegraphics[width=\scalefactor\linewidth]{example-image}
\includegraphics[width=0.35\linewidth]{example-image}
%\includegraphics[width=\scalefactor*0.75\linewidth]{example-image}
\end{document}
答案1
这是一个expl3
进行计算的简单方法:这样您就可以用它\imgscale{<original fraction>}
完成这项工作。
\documentclass{article}
\usepackage{graphicx}
\ExplSyntaxOn
\NewDocumentCommand { \imgscale } { m }
{
\fp_eval:n { \scalefactor * #1 }
}
\ExplSyntaxOff
\begin{document}
\newcommand{\scalefactor}{0.5}
\includegraphics[width=\scalefactor\linewidth]{example-image}
\renewcommand{\scalefactor}{0.35}
\includegraphics[width=\scalefactor\linewidth]{example-image}
\includegraphics[width=0.35\linewidth]{example-image}
\includegraphics[width=\imgscale{0.75}\linewidth]{example-image}
\end{document}
当然,您可以做一些调整使其更简单,例如为比例因子添加一个可选参数。
答案2
您可以使用\dimexpr
进一步扩展已扩展的内容:
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\newcommand{\scalefactor}{0.5}
\includegraphics[width=\scalefactor\linewidth]{example-image}
\bigskip
\renewcommand{\scalefactor}{0.35}
\includegraphics[width=\scalefactor\linewidth]{example-image}
\includegraphics[width=0.35\linewidth]{example-image}
\bigskip
\includegraphics[width=\scalefactor\dimexpr0.75\linewidth]{example-image}
\includegraphics[width=0.2625\linewidth]{example-image}
\end{document}