\newcommand crea underfull\hbox (maldad 10000) en el párrafo

\newcommand crea underfull\hbox (maldad 10000) en el párrafo

Tengo un documento de 2 columnas con cuadros repetidos.

Así que creé estas macros (no importa los colores ni la altura del cuadro):

% -------------------------------------------------------
% 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}
}

Cuando uso estas macros en mi documento de esta manera:

\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}

El primer cuadro ("FIRSTBOX") me da "Undefull \hbox (maldad 10000) en el párrafo)", mientras que la versión pura sin macros se procesa sin ninguna queja.

La utilización de la macro introduce esta advertencia. ¿Por qué? ¿Cómo puedo deshacerme de él? ¿Qué estoy haciendo mal?

Respuesta1

No voy a criticar todo tu código, sólo puedo aconsejarte que leas aquí durante un tiempo para aprender de los sabios ;-)

En cuanto a los Undefull \hboxmensajes, hay dos cuestiones:

  1. En su macro, está introduciendo un carácter de espacio después de la segunda minipágina. No estoy completamente seguro de por qué esto es un problema, pero comentar el espacio hace que la advertencia desaparezca (escribir espacio después de la minipágina en el ejemplo que no es macro no produce una advertencia; no me pregunten...)
  2. Cuando usa su macro, está comenzando un nuevo párrafo (causado por la línea vacía) inmediatamente después de la interrupción producida por la \\macro in \aitparagraph, lo que provoca la segunda advertencia.

Por lo tanto, los cambios mínimos necesarios para que ambas advertencias desaparezcan son:

% -------------------------------------------------------
% 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}

En cuanto al signo de porcentaje que introduje, consulte¿Para qué sirven los signos de porcentaje al final de las líneas?.

Con respecto al uso de \\líneas versus líneas vacías, no pude encontrar una sola respuesta canónica, pero miraaquí.

información relacionada