includegraphics:仅适用于缩小比例的选项

includegraphics:仅适用于缩小比例的选项

在我为学生编写的脚本中,我有很多截图,我通过\includegraphics[width=0.7\linewidth]{"MyScreenshot"}缩小它们将其包含在论文中,这样效果很好。

但通常只有屏幕片段,其放大 0.7 倍即可达到 200% 或 300%。

所以我想定义一个类似的宏(伪代码)

if actualwidth(#1) >= 0.7\linewidth then
   \includegraphics[width=0.7\linewidth]{#1}
else
   \includegraphics{#1}
endif

(当然我知道 0.7 也应该作为可选参数)。

如有任何提示我将不胜感激。

亲切的问候,

LateComer(LaTex 新手,55 岁)

答案1

以下定义了\downgraphics与 语法相同的宏\includegraphics。它使用选项并将结果放入一个框中,此外,它还包含另一个框中的图形而不使用选项。然后比较这些框的宽度并使用较小的一个。

这假设您不使用选项来旋转或裁剪图像,\includegraphics而只使用缩放选项。

日志和终端中打印了一条状态消息,显示该图形的选项已被忽略。

\documentclass[]{article}

\usepackage[]{graphicx}

\newcommand\downgraphics[2][]
  {%
    \begingroup
      \sbox0{\includegraphics{#2}}%
      \sbox2{\includegraphics[{#1}]{#2}}%
      \ifdim\wd2>\wd0
        \typeout
          {%
            Downgraphics:
            Width of original image is smaller than scaled one^^J
            \space\space\space\space\space\space\space\space\space\space\space\space\space
            (\the\wd0 \space< \the\wd2).^^J
            \space\space\space\space\space\space\space\space\space\space\space\space\space
            Using unscaled image #2.%
          }%
        \usebox0
      \else
        \usebox2
      \fi
    \endgroup
  }

\begin{document}
\downgraphics[width=0.5\linewidth]{example-image-duck}
\downgraphics[width=0.5\linewidth]{example-image-duck-portrait}
\end{document}

这将打印

Downgraphics: Width of original image is smaller than scaled one
              (53.15445pt < 172.5pt).
              Using unscaled image example-image-duck-portrait.

在终端。

相关内容