在我为学生编写的脚本中,我有很多截图,我通过\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.
在终端。