我有一个两列的 latex 文档,在每一章的开头,我想手动插入一个横跨两列的小页面。不幸的是,右列中的文本将始终与小页面重叠。我该如何防止这种情况发生?
\documentclass[twocolumn]{memoir}
\usepackage{lipsum}
\begin{document}
\chapter{test}
% minipage spanning entire width.
% how do I prevent the text below from overlaying into the minipage?
\begin{minipage}[t]{\textwidth}
STARTMINIPAGE \lipsum[1] ENDMINIPAGE
\end{minipage}
% text across two columns. the right column wraps into the minipage.
\lipsum[1-20]
\end{document}
答案1
把这写在你的序言中:
\makeatletter
\let\memoir@makechapterhead\@makechapterhead
\def\@makechapterhead#1{\memoir@makechapterhead{#1}\dochapterprolog}
\makeatother
\def\chapterprolog#1{\gdef\dochapterprolog{%
\if\relax\detokenize{#1}\relax\else
\noindent\begin{minipage}{\textwidth}#1\end{minipage}\vspace{3\baselineskip}
\fi\chapterprolog{}}}
你将开始一个章节
\chapterprolog{What we want in the full width minipage}
\chapter{Chapter title}
章节序言的内容在使用后将被重置为空,因此如果章节没有序言,则无需执行任何特殊操作。
调整3\baselineskip
至适合您的程度。
(注:新版本也可在单列模式下工作)
答案2
您想在不弹出页面的情况下在onecolumn
和twocolumn
模式之间切换。我建议使用multicol
专门为此编写的包。
答案3
包裹\multicol
对于您想要在多列开始之前跨越所有列的文本,有第二个可选参数。
请注意,这里的使用似乎存在一些问题\lipsum
,但添加真实文本似乎可以起作用。
\documentclass{memoir}
\usepackage{lipsum}
\usepackage{multicol}
\begin{document}
\begin{multicols}{2}[%
\chapter{test}
\hrule
Place your single column text here.
It will go across the page and the two column
text will begin after this.
\hrule
]
% text across two columns.
\lipsum[1-20]
\end{multicols}
\end{document}