Иногда у меня есть два (или более) окружения фигур, которые я хочу разместить на одной странице, и разместить горизонтальную линию в центре. Чтобы это сделать, я помещаю \vfill\hrule\vfill между двумя окружениями. Однако это работает только в том случае, если я создаю мини-страницу, охватывающую всю текстовую область страницы.
Однако если я это сделаю, то получу либо переполнение hbox, либо переполнение vbox, в зависимости от класса документа. Для статьи это переполнение hbox в 15pt, для phdthesis (cls, который я схватил из сети) это переполнение vbox также в 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}
Вторая мини-страница не выдает такого предупреждения, но мне пришлось вычесть 15pt из ширины. Откуда взялись эти 15pt? почему \textwidth шире ширины текстовой области?
решение1
Это отступ по умолчанию. Что касается LaTeX, a minipage
— это как большая буква. Так \begin{minipage}
начинается абзац, если он еще не внутри другого.
\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}