当使用大于文本区域的图像时,我想缩放它们,但同时考虑宽度和高度。问题恰好出现在宽度和高度都是禁止的。在这里,我必须确定哪一个更大,然后缩放它,因此这个过程也会影响另一个,并且图像将完美地适合文本区域。
我尝试了几种方法来解决这个问题。例如:(我正在使用calc
包)
\makeatletter
\def\ScaleThisP{%
\ifdim\Gin@nat@width>\Gin@nat@height
\ifdim\Gin@nat@width>\textwidth
\textwidth
\else
\Gin@nat@width
\fi
\else
\ifdim\Gin@nat@height>\textheight
\Gin@nat@width/{\Gin@nat@height/{\textheight}}
\else
\Gin@nat@height
\fi
\fi
}
\makeatother
...
\includegraphics[width=\ScaleThisP]{myfig.jpg}
结果(始终认为宽度和高度大于文本区域)是:
情况 1:宽度 > 高度 | 正常工作!
情况 2:高度 > 宽度 | 什么都不显示。根本没有包含任何图像!
如果您注意到,我正在使用宽度来缩放,因为如果我使用比例属性\includegraphics
,它会出现错误。
我尝试了许多其他方法,但没有人能给出我想要的结果。我认为问题出在我执行计算的那一行:
\Gin@nat@width/{\Gin@nat@height/{\textheight}}
如果我将其替换为,例如,
.5\textwidth
它显示缩小的图像并保持纵横比(所以,我知道它有效……有点)。有人能帮我解决这个问题吗?我不知道还能做什么,也许可以使用包xifthen
?
答案1
忽略你问的问题,有一个简单的解决方案,你的实际问题:\includegraphics
有一个可选参数keepaspectratio
,(引用手册),
如果设置为 true,则指定
width
和height
(或totalheight
)不会扭曲图形,但会按比例缩放,以使指定的尺寸均不超过。
因此,你可以简单地写
\includegraphics[height=5cm,width=.5\textwidth,keepaspectratio]{some_image.jpg}