我的图表(和表格)有时确实带有几行长的标题。我试图以最佳方式填充页面,因此我将有效内容放在 \maxsizebox 中。在大多数情况下,它工作正常,直到注释太长,在这种情况下部分标题会超出页面。据我了解,我无法将浮动对象放在 \maxsizebox 中。我可以以某种方式限制图像+标题的高度吗?
答案1
可以使用\newlength
和\settowidth
代替\savebox
,但这样更快。也可以将宽度设置minipage
为\textwidth
而不是图像宽度。主要区别在于,这样长标题将与图像匹配。
\documentclass{article}
\usepackage{adjustbox}
\usepackage{mwe}
\newsavebox{\tempbox}
\begin{document}
\begin{figure}
\savebox{\tempbox}{\includegraphics{example-image}}% get width of image
\centering\maxsizebox{\textwidth}{.2\textheight}{%
\begin{minipage}{\wd\tempbox}%
\usebox{\tempbox}
\caption{\blindtext}
\end{minipage}}
\end{figure}
\lipsum[1-6]
\end{document}
请注意,也可以仅调整图像大小,以便图像和标题适合给定的高度。
\newcommand{\maxfigure}[3]% #1 = max height, #2 = image, #3 = caption
{\bgroup
\sbox0{\begin{minipage}{\textwidth}\caption{#3}\end{minipage}}%
\ifdim\ht0>#1\relax\errmessage{\string\maxfigure: caption too big}
\else\centering\maxsizebox{\textwidth}{\dimexpr #1 - \ht0}{#2}\fi
\par\box0
\egroup}
答案2
或者,您可以使用该\usepackage[figuresleft]{rotating}
包来实现这一点,它会自动扩展。
或者一个不太优雅但更短的手动解决方案是使用scale
选项
\includegraphics[scale=0.6]{figure.png}