在使用 的文字的兩列部分的最後一頁上multicol
,我想在頁面底部放置一個單列通知,並且我希望分隔列的規則一直延伸到上面一欄部分。使用vfill
外部multicols
將通知放在正確的位置,但規則僅擴展到實際的多列文字。使用vfill
內部multicols
沒有任何效果。
我希望它產生類似以下內容的內容,但顯然沒有手動\vspace*
命令:
\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}
在某些方面,這是相反的問題同一頁和多列問題,因為我需要確保multicols
環境之後的內容保留在同一頁上。
答案1
您可以使用以下命令在最後一頁插入垂直線eso-pic
:
\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}
上面的範例從文字區塊底部的\rule
最終頁面上覆蓋了最終頁面上的任何內容。3\baselineskip
你可以將其添加到\AtEndDocument
.然而,沒有進行任何測試來看看是否停止是否適合頁面,並且不與列中的現有文字重疊。
以下範例設定停止內容位於一個框(稱為\stopbox
)內,並使用該框作為垂直標尺應下降到最後一頁的距離的度量(+ one \baselineskip
):
\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}
答案2
新的套件multicolrule
(版本 1.1)可以處理這個問題,而不需要eso-pic
.雖然 Werner 的解決方案完全適用於 MWE 中提出的問題,但在生產文件中,它需要複雜的簿記來處理諸如環境上方有一列材料之類的情況multicols
,並且原始規則和重新繪製的規則略有偏差,需要我在重新繪製之前擦除舊線。使用新的軟體包,這些問題就不會出現。
\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}
結果: