在以下示例中:
\documentclass[twocolumn]{memoir}
\usepackage{lipsum}
\setlength{\columnseprule}{0.4pt}
\begin{document}
\twocoltocetc
\tableofcontents
\chapter{test}
\lipsum[1]
\end{document}
我在空白页上看到一条垂直线,看上去很丑。我怎样才能强制仅在有内容的地方显示垂直列线?
答案1
\newpage
我通过重新定义命令和十二页的预览附上了针对您的问题的补丁。
\documentclass[twocolumn]{memoir}
\usepackage{lipsum}
\setlength{\columnseprule}{6pt}
\begin{document}
\let\oldcdp=\newpage
\def\newpage{%
\setlength{\columnseprule}{0pt}
\oldcdp
\setlength{\columnseprule}{6pt}}
\twocoltocetc
\tableofcontents
\chapter{test}
\lipsum[1-28]
\chapter{test}
\lipsum[1-20]
\end{document}
答案2
通常由 创建一个空白页\cleardoublepage
,供文档分割命令( 、 ...)使用\chapter
。在类的情况下,memoir
还有\cleartorecto
和\cleartoverso
。以下示例(基于 Malipivo 的回答) 修补这些命令以将列规则宽度重置为零。
\documentclass[twocolumn]{memoir}
\usepackage{lipsum}
\setlength{\columnseprule}{.5\columnsep}% larger rule for illustration
\usepackage{etoolbox}
\makeatletter
\newcommand*{\patchclearpage}[1]{%
\patchcmd{#1}{%
\thispagestyle{cleared}%
\newpage
\if@twocolumn
\hbox{}%
\newpage
\fi
}{%
\thispagestyle{cleared}%
\newpage
\if@twocolumn
\begingroup
\setlength{\columnseprule}{0pt}%
\hbox{}%
\newpage
\endgroup
\fi
}{%
}{%
\errmessage{Patching of \string#1 failed}%
}%
}
\makeatother
\patchclearpage\cleartorecto
\patchclearpage\cleartoverso
\patchclearpage\cleardoublepage
\begin{document}
\twocoltocetc
\tableofcontents
\chapter{test}
\lipsum[1-14]
\newpage\null\newpage
\lipsum[15-28]
\chapter{test}
\lipsum[1-20]
\end{document}