我\includegraphics
可以给出结果图像的宽度(将被缩放)。
我如何给出图像的最大宽度?也就是说,如果原始图像小于 X,我想保留较小的图像,如果图像大于 X,则图像宽度应为 X。
使用pdflatex
/ graphicx
。
答案1
对于更奇特的要求adjustbox
或resizebox
有用,但你实际上并不需要任何额外的命令(除了本地命令只是为了@
更轻松地访问命令)
\documentclass{article}
\usepackage{graphicx}
\makeatletter
\def\maxwidth#1{\ifdim\Gin@nat@width>#1 #1\else\Gin@nat@width\fi}
\makeatother
\begin{document}
\includegraphics[width=\maxwidth{1in}]{image}
\includegraphics[width=\maxwidth{1cm}]{image}
\end{document}
答案2
提供adjustbox
了一个max width
密钥,专门用于此目的。如果软件包中加载了该export
选项,则此密钥和大多数其他密钥也可用于\includegraphics
。
这里,只有当前内容的大小大于给定宽度时,才会调整内容的大小。它的工作方式与 David Carlisle 的答案中的代码基本相同。如果\adjincludegraphics
使用宏,则可以直接将原始宽度作为 访问\width
。请注意,该选项未启用此功能。但是,可以\includegraphics
通过在加载后使用而不是使用export
来实现。\includegraphics
\adjincludegraphics
\let\includegraphics\adjincludegraphics
adjustbox
\documentclass{article}
\usepackage{mwe}% just for the example images
\setlength{\parindent}{0pt}
\usepackage[export]{adjustbox}% 'export' allows adjustbox keys in \includegraphics
\begin{document}
\hrule% to see \linewidth
\includegraphics[max width=\linewidth]{example-image-1x1}
\includegraphics[max width=\linewidth]{example-image-a4}
% With \adjincludegraphics (or \adjustimage) you can also use the original width as \width:
\adjincludegraphics[width=\ifdim\width>\linewidth \linewidth\else\width\fi]{example-image}
\end{document}
答案3
\documentclass{article}
\usepackage[demo]{graphicx}
\newlength\MaxWidth \newsavebox\IBox
\MaxWidth=100pt
\newcommand*\IncludeGraphics[2][]{%
\sbox\IBox{\includegraphics[#1]{#2}}%
\ifdim\wd\IBox>\MaxWidth \resizebox{\MaxWidth}{!}{\usebox\IBox}%
\else\usebox\IBox\fi}
\begin{document}
\includegraphics{image}
\IncludeGraphics{image}
\IncludeGraphics[width=50pt]{image}
\end{document}