\resizebox 和页面大小

\resizebox 和页面大小

调整对象大小的具体操作和语法是什么?

我正在编写一个宏包,用于在多种纸张尺寸上打印,包括 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}

测试

相关内容