在目录中的某个位置,如果当前页是奇数,则必须设置分页符,但如果是偶数,则不必设置分页符。我已经在文档中使用了一个命令,它运行良好。
\makeatletter
\newcommand{\setCurPage}{
\ifodd\c@page
\renewcommand{\curPage}{\right}
\else
\renewcommand{\curPage}{\left}
\fi
}
\makeatother
我这样使用它:
\setCurPage\ifnum\curPage=\right\clearpage\fi
但是如果我将此代码添加到我的 toc 文件中, \curPage 的值取决于目录开始的页面,而不是实际页面。如果我知道它是目录的第一页、第二页、第三页还是其他页,那么它对我来说也行。
答案1
当将宏添加到目录时,您需要保护它,否则它会展开并使用页码的当前值(或产生各种错误)。
您可以通过查看来了解发生了什么事情\jobname.toc
。
尝试一下这个,它用于\NewDocumentCommand
定义一个受保护的宏,可以安全地包含在目录中。
我还用它\usepackage[strict]{changepage}
来检查页码,因为在某些情况下检查页码计数器可能不可靠。(虽然我承认我不知道这是否是其中之一。它似乎在没有strict
返回到仅检查的选项的情况下工作\c@page
。)使用的缺点strict
是需要额外运行 LaTeX。
\documentclass{article}
\usepackage[strict]{changepage}
\NewDocumentCommand{\clearpageifodd}{}{%
\checkoddpage
\ifoddpage
\clearpage
\fi}
\begin{document}
\tableofcontents
\section{First section}
\addtocontents{toc}{\clearpageifodd}
\section{Second section}
\addtocontents{toc}{\clearpageifodd}
\section{Third section}
\section{Fourth section}
\end{document}
当你查看时,\jobname.toc
你会发现:
\contentsline {section}{\numberline {1}First section}{2}{}%
\clearpageifodd
\contentsline {section}{\numberline {2}Second section}{2}{}%
\clearpageifodd
\contentsline {section}{\numberline {3}Third section}{2}{}%
\contentsline {section}{\numberline {4}Fourth section}{2}{}%
之后会出现分页符第一部分,但之后第二部分。