避免全局扩大图像尺寸

避免全局扩大图像尺寸

\includegraphics当我使用诸如width、、等常见选项时,heightscale希望图像的最终尺寸永远不会超过其自然尺寸。

如果是width,则将其替换为max width,则用选项 (借自adjustbox从包)这是一个解决方案,但是呢scale

如果我想避免图片尺寸变大怎么办全球

PS 我认为一个好的解决方案是增加一个新选项\includegraphics对另一个问题的一些回答一样:按区域调整图像尺寸

答案1

这是一个快速解决方案。MWE 应该生成三张相同的图像和一张较小的图像。请注意,\includelimit仅支持尺寸更改。

顺便说一句,这也回答了链接的问题。另外,不要使用\dimen0with \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}

相关内容