У меня есть документ из двух столбцов с повторяющимися полями.
Поэтому я создал эти макросы (не обращайте внимания на цвета и высоту блока):
% -------------------------------------------------------
% aitparagraph
%
% gives header and content with proper size and color
% for an arbitrary box
%
\newcommand{\aitparagraph}[2]{
\vspace{0.5cm}
{\Large \bf \textcolor{AITred}{#1}} \\[10pt] {#2}
}
% -------------------------------------------------------
% aitbox
%
% a single box
%
\newcommand{\aitbox}[2]{
\begin{minipage}[t]{\hsize}
\fcolorbox{AITgray}{white}{
\begin{minipage}[t]{0.92 \hsize}
\vbox to \the\boxheight{
\aitparagraph{#1}{#2}
\vfill
}
\end{minipage}
}
\end{minipage}
}
При использовании этих макросов в моем документе следующим образом:
\begin{multicols}{2}
\aitbox{FIRSTBOX}{
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue euneque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat. Integer sapien est, iaculis in, pretium quis, viverra ac, nunc. Praesent eget sem vel leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla.
}
\columnbreak
\begin{minipage}[t]{\hsize}
\fcolorbox{AITgray}{white}{
\begin{minipage}[t]{0.92 \hsize}
\vbox to \the\boxheight{
\aitparagraph{SECOND}{Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue euneque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat. Integer sapien est, iaculis in, pretium quis, viverra ac, nunc. Praesent eget sem vel leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla.}
\vfill
}
\end{minipage}
}
\end{minipage}
\end{multicols}
Первый блок («FIRSTBOX») выдает мне «Undefull \hbox (badness 10000) in paragraph)», тогда как чистая версия без макросов отображается без каких-либо жалоб.
Использование макроса приводит к появлению этого предупреждения. Почему? Как от него избавиться? Что я делаю не так?
решение1
Я не буду критиковать весь ваш код, я просто могу посоветовать вам почитать здесь некоторое время, чтобы поучиться у мудрых мужчин и женщин ;-)
Что касается Undefull \hbox
сообщений, то здесь есть два вопроса:
- В вашем макросе вы вводите пробел после второй мини-страницы. Почему это проблема, я не совсем уверен, но комментирование пробела заставляет предупреждение исчезнуть (ввод пробела после мини-страницы в примере без макроса не приводит к появлению предупреждения; не спрашивайте меня...)
- При использовании макроса вы начинаете новый абзац (из-за пустой строки) сразу после разрыва, созданного макросом in
\\
,\aitparagraph
что приводит к появлению второго предупреждения.
Таким образом, минимальные изменения, необходимые для исчезновения обоих предупреждений, следующие:
% -------------------------------------------------------
% aitparagraph
%
% gives header and content with proper size and color
% for an arbitrary box
%
\newcommand{\aitparagraph}[2]{
\vspace{0.5cm}
{\Large \bf \textcolor{red}{#1}} \\[10pt] {#2}
}
% -------------------------------------------------------
% aitbox
%
% a single box
%
\newcommand{\aitbox}[2]{
\begin{minipage}[t]{\hsize}
\fcolorbox{green}{white}{
\begin{minipage}[t]{0.92 \hsize}
\vbox{
\aitparagraph{#1}{#2}
\vfill
}
\end{minipage}
}
\end{minipage}%
}
\begin{document}
\begin{multicols}{2}
\aitbox{FIRSTBOX}{Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue euneque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat. Integer sapien est, iaculis in, pretium quis, viverra ac, nunc. Praesent eget sem vel leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla.
}
\columnbreak
\begin{minipage}[t]{\hsize}
\fcolorbox{green}{white}{
\begin{minipage}[t]{0.92 \hsize}
\vbox{
\aitparagraph{SECOND}{Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue euneque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat. Integer sapien est, iaculis in, pretium quis, viverra ac, nunc. Praesent eget sem vel leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla.}
\vfill
}
\end{minipage}
}
\end{minipage}
\end{multicols}
Относительно введенного мной знака процента см.Для чего нужны знаки процентов в конце строк?.
Что касается использования \\
пустых строк, я не смог найти ни одного канонического ответа, но посмотритездесь.