有时我会有两个(或更多)图形环境,我想将它们布局在一页上,并在中间放置一条水平线。为了实现这一点,我在两个环境之间放置了一个 \vfill\hrule\vfill。但是,这只有在我创建一个跨页面整个文本区域的迷你页面时才有效。
但是,如果我这样做,则会出现水平框或垂直框溢出,具体取决于文档类别。对于 article,水平框溢出为 15pt;对于 phdthesis(我从网上抓取的类别),垂直框溢出也为 15pt。
这是一个最小的工作示例:
\documentclass{article}
\newlength{\minipagewidth}
\newlength{\minipageheight}
\begin{document}%
%results in: Badbox, line 9: Overfull \hbox (15.0pt too wide) in paragraph at lines 9-26
\setlength{\minipagewidth}{\textwidth}%
\setlength{\minipageheight}{\textheight}%
\begin{minipage}[t][\minipageheight]{\minipagewidth}%
Top of the page
\vfill\hrule\vfill
Bottom of the page
\end{minipage}
% no vbox or hbox overflow:
\addtolength{\minipagewidth}{-15pt}%
%\addtolength{\minipageheight}{-15pt}%
\begin{minipage}[t][\minipageheight]{\minipagewidth}%
Top of the page
\vfill\hrule\vfill
Bottom of the page
\end{minipage}%
\end{document}
第二个 minipage 没有出现这样的警告,但我不得不从宽度中减去 15pt。这个 15pt 是从哪里来的?为什么 \textwidth 比文本区域的宽度更宽?
答案1
这是默认缩进。就 LaTeX 而言,aminipage
就像一个大写字母。因此,\begin{minipage}
如果段落尚未包含在段落内,则 a 会开始一个段落。
\noindent\begin{minipage}{\textwidth}
解决了这个问题。
关于高度,我不确定你真正想要达到什么。
对于整页浮动,你可以这样做
\documentclass{article}
\usepackage{graphicx}
\usepackage{lipsum} % just for the example
\begin{document}
\lipsum[1-3]
\begin{figure}[p]
\centering
\begin{minipage}[c][\dimexpr\textheight-\baselineskip+\topskip\relax][s]{\textwidth}
\centering
\includegraphics[width=8cm]{example-image-a}
\caption{A caption to the first figure}
\vfill
\hrule
\vfill
\includegraphics[width=8cm]{example-image-b}
\caption{A caption to the second figure}
\end{minipage}
\end{figure}
\lipsum[4-10]
\end{document}