使用双栏模式时,如何删除空白页的分隔规则?

使用双栏模式时,如何删除空白页的分隔规则?

在以下示例中:

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

结果

相关内容