¿Cómo extender la regla de columnas en la página final de un entorno multicol?

¿Cómo extender la regla de columnas en la página final de un entorno multicol?

En la página final de una porción de dos columnas de un texto que usa multicol, quiero colocar un aviso de una columna en la parte inferior de la página y me gustaría que la regla que separa las columnas se extienda hasta justo arriba. la parte de una columna. El uso vfillde afuera multicolscoloca el aviso en el lugar correcto, pero la regla solo se extiende hasta el texto real de varias columnas. Usarlo vfillen el interior multicolsno tiene ningún efecto.

Me gustaría que produzca algo como lo siguiente, pero obviamente sin el \vspace*comando manual:

\documentclass{article}
\usepackage{multicol}
\usepackage{lipsum}
\setlength{\columnsep}{0.5in}
\setlength{\columnseprule}{0.5pt}
\begin{document}

\begin{multicols}{2}
    \lipsum[1]
    \columnbreak
    \lipsum[2]
    \vspace*{300pt}
\end{multicols}
\centering\Huge\textbf{\textsf{STOP}}

\end{document}

En algunos aspectos, este es el problema opuesto alMisma página y multicols.pregunta, en el sentido de que necesito asegurarme de que algo que viene después del multicolsentorno se mantenga en la misma página.

Respuesta1

Puede insertar la regla vertical en la última página usandoeso-pic:

ingrese la descripción de la imagen aquí

\documentclass{article}

\usepackage{multicol,eso-pic,lipsum,xcolor}

\setlength{\columnsep}{0.5in}
\setlength{\columnseprule}{0.5pt}

\begin{document}

\begin{multicols}{2}
  \sloppy\lipsum[1-15]
\end{multicols}

\AddToShipoutPictureFG*{%
  \AtTextLowerLeft{%
    \makebox[0pt][l]{\makebox[\textwidth]{\Huge\bfseries\sffamily STOP}}% Set STOP
    % Move to the right of the left text column
    \hspace*{.5\dimexpr\textwidth-\columnseprule-2\columnsep}%
    % Skip over column sep
    \hspace*{\columnsep}%
    % Insert vertical rule
    \rule[3\baselineskip]{\columnseprule}{\dimexpr\textheight-3\baselineskip}%
  }%
}

\end{document}

El ejemplo anterior superpone a \ruleen la página final 3\baselineskipdesde la parte inferior del bloque de texto sobre lo que esté en la página final.

Podrías agregar esto a\AtEndDocument . Sin embargo, no se han realizado pruebas para ver siDETENERcabrá en la página o no, y no se superpondrá con el texto existente en las columnas.


El siguiente ejemplo establece elDETENERcontenido dentro de un cuadro (llamado \stopbox) y usa este cuadro como una medida de hasta dónde debe llegar la regla vertical en la última página (+ uno \baselineskip):

ingrese la descripción de la imagen aquí

\documentclass{article}

\usepackage{multicol,eso-pic,lipsum,xcolor}

\setlength{\columnsep}{0.5in}
\setlength{\columnseprule}{0.5pt}

\newsavebox{\stopbox}
\savebox{\stopbox}{%
  \begin{tabular}[b]{c}
    \Huge\bfseries\sffamily STOP \\
    \small\itshape \ldots right here
  \end{tabular}
}

\begin{document}

\begin{multicols}{2}
  \sloppy\lipsum[1-15]
\end{multicols}

\AddToShipoutPictureFG*{%
  \AtTextLowerLeft{%
    \makebox[0pt][l]{\makebox[\textwidth]{\usebox{\stopbox}}}% Set STOP
    % Move to the right of the left text column
    \hspace*{.5\dimexpr\textwidth-\columnseprule-2\columnsep}%
    % Skip over column sep
    \hspace*{\columnsep}%
    % Insert vertical rule
    \rule[\dimexpr\ht\stopbox+\baselineskip]{\columnseprule}{\dimexpr\textheight-\ht\stopbox-\baselineskip}%
  }%
}

\end{document}

Respuesta2

El nuevo paquete multicolrule(versión 1.1) puede solucionar este problema sin necesidad de eso-pic. Si bien la solución de Werner era perfectamente útil para el problema establecido en el MWE, en los documentos de producción se requería una contabilidad complicada para hacer frente a situaciones tales como tener material de una columna encima del multicolsentorno, y las reglas originales y rediseñadas estaban ligeramente desalineadas, lo que me exigía para borrar la línea anterior antes de volver a dibujarla. Con el nuevo paquete, estos problemas no surgen.

\documentclass{article}
\usepackage{multicolrule}
\usepackage{lipsum}
\setlength{\columnsep}{0.5in}

\newsavebox{\stopbox}
\savebox{\stopbox}{%
  \begin{tabular}[b]{c}
    \Huge\bfseries\sffamily STOP \\
    \small\itshape \ldots right here
  \end{tabular}
}

\SetMCRule{width=0.5pt,line-style=solid,extend-fill,extend-reserve=\ht\stopbox}

\begin{document}
\lipsum[1]

\begin{multicols}{2}
  \lipsum[2-3]
\end{multicols}
\centering\usebox{\stopbox}  
\end{document}

Y el resultado:

ingrese la descripción de la imagen aquí

información relacionada