我想编写一个命令来缩放给定的文本对象以适应给定区域并保持纵横比。也就是说,不应超过最大宽度和高度,但文本的宽度或高度应符合给定值。以下方法不起作用,因为可能会超过最大高度:
\resizebox{\mywidth}{!}{#1}
同样,以下内容也可以超出最大宽度:
\resizebox{!}{\myheight}{#1}
答案1
您可以使用 来完成此操作adjustbox
,诀窍是放大内容,因此需要缩小内容。
\documentclass{article}
\usepackage{amsmath}
\usepackage{adjustbox}
\newlength{\myheight}
\newlength{\mywidth}
\setlength{\myheight}{3cm}
\setlength{\mywidth}{6cm}
% A box for displaying the result
\newsavebox{\FRAME}
\sbox\FRAME{%
\setlength{\fboxsep}{0pt}%
\kern-\fboxrule
\fbox{\rule{\mywidth}{0pt}\rule{0pt}{\myheight}}%
\kern-\mywidth\kern-\fboxrule
}
\begin{document}
\usebox{\FRAME}%
\adjustbox{scale=100,max width=\mywidth,max height=\myheight}{%
\raisebox{\depth}{%
$\displaystyle
\int_{-\infty}^{\infty}e^{-x^{2}}\,dx=\sqrt{\pi}
$%
}%
}
\bigskip
\usebox{\FRAME}%
\adjustbox{scale=100,max width=\mywidth,max height=\myheight}{%
\raisebox{\depth}{%
$\displaystyle
\begin{bmatrix} 1 & 0 \\ 0 & 1 \\ 0 & 0 \\ 0 & 0 \end{bmatrix}
$%
}%
}
\end{document}
我使用它\usebox{\FRAME}
只是为了显示要填充的区域。还需要根据其深度来提升框,否则它会卡在该区域下方。