我从其他答案中了解到如何使用图像文件作为背景和使其透明。由于我的背景文件不一定具有精确的页面尺寸(它们由用户提供),因此我需要缩放和剪辑它们以适应。
然而,我发现使用
\includegraphics[width=\paperwidth,height=\paperheight,keepaspectratio,clip]{#1}
缩放并不总是正确;横向图像会缩放,以便宽度适合,如果它们非常平坦,则根本不会裁剪,因此会保留白色条。例如,这是使用1600x750 图像在美国信件横向页面上:
\documentclass[landscape]{article}
\usepackage{eso-pic,graphicx}
\pagestyle{empty}
\begin{document}
\AddToShipoutPicture*{%
\put(0,0){%
\parbox[b][\paperheight]{\paperwidth}{%
\includegraphics[width=\paperwidth,height=\paperheight,keepaspectratio,clip]{test.png}%
}%
}%
}%
\phantom{lorem ipsum}
\end{document}
我怎样才能知道includegraphics
总是缩放较短的尺寸以适应?
答案1
据我所知,你不能。adjustbox
,总是值得一看,似乎也没有提供必要的选项。
幸运的是,我们可以破解它。观察
\includegraphics[width=\paperwidth,keepaspectratio,clip]{img}
非常适合肖像图像 - 缩放它们以便宽度适合并剪辑 - 反之亦然
\includegraphics[height=\paperheight,keepaspectratio,clip]{img}%
适用于风景图像。因此我们可以根据图像尺寸使用哪个版本:
\settoheight\imageheight{\includegraphics{img}}%
\settowidth\imagewidth{\includegraphics{img}}%
\ifthenelse{\dimtest{\imageheight}{>=}{\imagewidth}}{%
\includegraphics[width=\paperwidth,keepaspectratio,clip]{img}%
}{%
\includegraphics[height=\paperheight,keepaspectratio,clip]{img}%
}%
请注意,这需要包xifthen
。该示例最终编译为:
我还没有弄清楚在裁剪时如何选择图像中一个明确的部分,比如中间部分;默认情况下,它似乎从左侧或底部开始。此外,裁剪后的图像似乎会产生Overful \hbox
警告。