调整对象大小的具体操作和语法是什么?
我正在编写一个宏包,用于在多种纸张尺寸上打印,包括 A4 2 列、电子书大小、纵向和 9 英寸 x 6 英寸 WEB 可浏览(横向)。
我想在需要时以缩小尺寸显示浮动对象,以适合一页。我现在正在使用\resizebox
。在大多数情况下,它可以正常工作,但是当我有纵向对象和横向纸张时,它会将对象的宽度设置为\textwidth
并裁剪对象的底部。(我的意思是使用参数{!}{!}
)我想减小宽度并以全高显示对象。是否有一些特殊的参数化,或者我应该继续检查纸张格式并使用类似的东西\resizebox{!}{\.65\paperheight}
?
答案1
还应该注意,\resizebox
存在舍入问题,并且经常略微超出其限制。
\documentclass{article}
\usepackage{graphicx}
\usepackage{mwe}
\newlength{\testlen}
\newcommand{\maxsizebox}[3]{% #1 = max h-space, #2 = max v-space, #3 = contents
\settowidth{\testlen}{\resizebox{!}{#2}{#3}}%
\ifdim\testlen>#1\relax\resizebox{#1}{!}{#3}%
\else\resizebox{!}{#2}{#3}\fi
}
\newsavebox{\tempbox}
\begin{document}
\savebox{\tempbox}{\includegraphics{example-image}}
\begin{center}
% fit to reduced width
\rule{0.5\textwidth}{1pt}\par
\maxsizebox{0.5\textwidth}{\textheight}{\usebox{\tempbox}}
%fit to reduced height
\maxsizebox{\textwidth}{0.2\textheight}{\usebox{\tempbox}}\rlap{ \rule{1pt}{0.2\textheight}}
\end{center}
\end{document}