\includegraphics
当我使用诸如width
、、等常见选项时,height
我scale
希望图像的最终尺寸永远不会超过其自然尺寸。
如果是width
,则将其替换为max width
,则用选项 (借自adjustbox
从包)这是一个解决方案,但是呢scale
?
如果我想避免图片尺寸变大怎么办全球?
PS 我认为一个好的解决方案是增加一个新选项\includegraphics
对另一个问题的一些回答一样:按区域调整图像尺寸
答案1
这是一个快速解决方案。MWE 应该生成三张相同的图像和一张较小的图像。请注意,\includelimit
仅支持尺寸更改。
顺便说一句,这也回答了链接的问题。另外,不要使用\dimen0
with \includegraphics
。
\documentclass{standalone}
\usepackage{graphicx}
\newcommand{\includelimit}[2][]% will get bad results with [rotate]
{\bgroup
\sbox0{\includegraphics{#2}}%
\sbox1{\includegraphics[#1]{#2}}%
\dimen1=\ht0
\ifdim\ht1<\dimen1 \dimen1=\ht1\fi
\dimen2=\wd0
\ifdim\wd1<\dimen2 \dimen2=\wd1\fi
\includegraphics[width=\dimen2, height=\dimen1]{#2}%
\egroup}
\begin{document}
\includegraphics{example-image}
\includelimit[width=20cm]{example-image}
\includelimit[height=20cm]{example-image}
\includelimit[scale=0.5]{example-image}
\end{document}
这显示了如何用新版本替换 \includegraphics。我不建议这样做,因为它不再支持所有关键字。
\documentclass{standalone}
\usepackage{graphicx}
\let\oldincludegraphics=\includegraphics
\renewcommand{\includegraphics}[2][]% will get bad results with [rotate]
{\bgroup
\sbox0{\oldincludegraphics{#2}}%
\sbox1{\oldincludegraphics[#1]{#2}}%
\dimen1=\ht0
\ifdim\ht1<\dimen1 \dimen1=\ht1\fi
\dimen2=\wd0
\ifdim\wd1<\dimen2 \dimen2=\wd1\fi
\oldincludegraphics[width=\dimen2, height=\dimen1]{#2}%
\egroup}
\begin{document}
\oldincludegraphics{example-image}
\includegraphics[width=20cm]{example-image}
\includegraphics[height=20cm]{example-image}
\includegraphics[scale=0.5]{example-image}
\end{document}