客观的
我有几张图像,希望它们都具有相同的比例,但那些太宽或太高而无法放在一页上的图像除外。
限制图像宽度的代码
% Auto scale images
\makeatletter
\newbox\image@box%
\newdimen\image@width%
\newdimen\image@height%
\newcommand\IncludeGraphics[2][\@empty]{%
\setbox\image@box=\hbox{\includegraphics[#1]{#2}}%
%\setbox\image@box=\vbox{\includegraphics[#1]{#2}}%
\image@width\wd\image@box%
\image@height\ht\image@box%
\ifdim \image@width>\linewidth%
\setbox\image@box=\hbox{\includegraphics[width=\linewidth]{#2}}%
\box\image@box%
\else
\ifdim \image@height>0.8\textheight%
\setbox\image@box=\vbox{\includegraphics[height=0.8\textheight]{#2}}%
\box\image@box%
\else%
\includegraphics[#1]{#2}%
\fi%
\fi%
}
这会自动将图像缩放到我设置的任何大小,\IncludeGraphics
例如\scale=0.7
,除非图像比页面宽,在这种情况下图像宽度设置为width=\linewidth
。
限制图像高度的代码
除了取消注释的行之外,这是相同的代码%\setbox\image@box=\vbox{\includegraphics[#1]{#2}}%
。
问题
如果打开了图像高度限制,则图像宽度限制将丢失。
疑虑
我认为可以通过创建两个事物/对象/变量(或它们实际上是什么)来解决此问题image@box
。因为定义image@box=\hbox
覆盖了image@box=\vbox
。但是,我尚未成功创建两个这样的对象,使得图像宽度和高度都受到限制(同时仍允许默认缩放)。
问题
因此,我想问:如果图像高度超出页面高度,我该如何添加一个额外的 if 条件来限制图像高度(否则缩放到默认比例(如果图像宽度不比 更宽\linewidth
))?