Wie erweitert man die Spaltenerweiterung auf der letzten Seite einer Multicol-Umgebung?

Wie erweitert man die Spaltenerweiterung auf der letzten Seite einer Multicol-Umgebung?

Auf der letzten Seite eines zweispaltigen Textabschnitts, der verwendet multicol, möchte ich unten auf der Seite einen einspaltigen Hinweis einfügen, und ich möchte, dass die Trennlinie zwischen den Spalten bis knapp über den einspaltigen Abschnitt reicht. Mit vfilloutside multicolswird der Hinweis an die richtige Stelle gesetzt, aber die Trennlinie reicht nur bis zum eigentlichen mehrspaltigen Text. Die Verwendung vfillinside multicolshat keine Wirkung.

Ich möchte, dass es etwa das Folgende erzeugt, aber natürlich ohne den manuellen \vspace*Befehl:

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

In mancher Hinsicht ist dies das gegenteilige Problem desDieselbe Seite und mehrere SpaltenFrage, da ich sicherstellen muss, dass alles, was nach der multicolsUmgebung kommt, auf dem gleichen Stand bleibt.

Antwort1

Die vertikale Linie können Sie auf der letzten Seite einfügen miteso-pic:

Bildbeschreibung hier eingeben

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

Das obige Beispiel legt ein \ruleauf der letzten Seite 3\baselineskipvom unteren Rand des Textblocks über den Inhalt der letzten Seite.

Sie könnten dies hinzufügen \AtEndDocument. Es gibt jedoch keine Tests, um festzustellen, obSTOPPENauf die Seite passt oder nicht und nicht mit dem vorhandenen Text in den Spalten überlagert wird.


Das folgende Beispiel legt dieSTOPPENInhalt innerhalb einer Box (genannt \stopbox) und verwendet diese Box als Maß dafür, wie weit die vertikale Linie auf der letzten Seite nach unten reichen soll (+ eins \baselineskip):

Bildbeschreibung hier eingeben

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

Antwort2

Das neue Paket multicolrule(Version 1.1) kann dieses Problem ohne die Notwendigkeit von lösen eso-pic. Während Werners Lösung für das im MWE beschriebene Problem vollkommen geeignet war, erforderte sie in Produktionsdokumenten komplizierte Buchführung, um Situationen wie einspaltiges Material über der multicolsUmgebung zu behandeln, und die ursprünglichen und neu gezeichneten Regeln waren leicht falsch ausgerichtet, sodass ich die alte Linie löschen musste, bevor ich sie neu zeichnen konnte. Mit dem neuen Paket treten diese Probleme nicht auf.

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

Und das Ergebnis:

Bildbeschreibung hier eingeben

verwandte Informationen