如果手动缩放超出页面宽度或高度,则限制图像宽度和高度

如果手动缩放超出页面宽度或高度,则限制图像宽度和高度

客观的

我有几张图像,希望它们都具有相同的比例,但那些太宽或太高而无法放在一页上的图像除外。

限制图像宽度的代码

% 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))?

相关内容