\newcommand{\Chapter}[1]{{\let\cleardoublepage\relax\chapter{#1}}}
运行正常。我如何对 .cls 文件中的星号 (*) 版本执行相同操作?
(其他人可能会感兴趣:在主文档中定义它有什么区别吗?)
答案1
您曾表示想要重新定义\chapter
和\chapter*
。为此,我建议您在课堂上更深入地了解,这不是初学者的任务。
无论如何,您都可以构建一个包含星号版本并使用\chapter
您在课堂上编写的命令的宏。
一个非常基本的方法如下:
\documentclass{scrbook}
\newcommand{\MyChapter}{%
\let\cleardoublepage\empty
\clearpage
\chapter
}
\begin{document}
\tableofcontents
\MyChapter{Introduction}
some text
\MyChapter[My Introduction]{Introduction}
some text
\MyChapter*{Introduction}
some text
\end{document}
该命令\MyChapter
会删除\cleardoublepage
,它会执行\clearpage
和\chapter
。它将具有旧 的所有\chapter
功能,因为\chapter
它最后执行,并将您在 之后输入的任何内容作为参数\MyChapter
。
然而后者不是一个好的做法,因为命令\cleardoublepage
变得无用,并且删除 latex 命令通常会导致功能失常。
我认为一个“体面”的做法是保存\cleardoublepage
它并在以后恢复它:
\documentclass{scrbook}
\newcommand{\ResCdp}{%
\let\cleardoublepage\cdp
}
\newcommand{\MyChapter}{%
\let\cdp\cleardoublepage
\let\cleardoublepage\empty
\clearpage
\chapter
}
\begin{document}
\tableofcontents
\MyChapter{Introduction}\ResCdp
some text
\MyChapter[My Introduction]{Introduction}\ResCdp
some text
\cleardoublepage
\MyChapter*{Introduction}\ResCdp
some text
\end{document}
虽然读写起来有点困难,但可以安全地完成任务。
要避免\ResCdp
在不删除\cleardoublepage
并保留所有\chapter
功能的情况下使用它需要付出更多的努力。
答案2
您已表明您使用scrbook
文档类。如果您想重新定义\chapter
(和\chapter*
)来执行\clearpage
而不是\cleardoublepage
,我建议您加载etoolbox
包并使用其\patchcmd
宏来修改chapter
宏:
\usepackage{etoolbox}
\patchcmd{\chapter}{\cleardoublepage}{\clearpage}{}{}
答案3
scrbook
在使用选项的情况下openany
,请\cleardoublepage
手动插入。
这并不是问题的确切答案,但我仍然决定使用此方法。