在 \includegraphics 中将宽度乘以缩放因子

在 \includegraphics 中将宽度乘以缩放因子

当我在文档中包含图像时,我使用:

\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}

在此处输入图片描述

相关内容