我想用 elegantbook 模板写双面文本。模板似乎有一个错误。当我选择 twoside 选项时,elegantbook 会写出单词章节前在每一页空白上。
我怎样才能解决这个问题?
以下是最小代码示例:
\documentclass[12pt,twoside]{elegantbook}
\begin{document}
\maketitle
\frontmatter
\tableofcontents
\mainmatter
\chapter{xy}
\chapter{yz}
\end{document}
答案1
我认为elegantbook
随 MiKTeX 一起发布的文档类存在错误。在 CTAN 上,该类被标记为过时,因此我不清楚该文档类的当前状态或最新版本是什么。
无论如何,在与 MiKTeX 一起分发的最新版本(即 2022/04/09 v4.3)中,我们可以找到以下几行(第 1387 行及后续行elegantbook.cls
);
\renewcommand*{\cleardoublepage}{\clearpage\if@twoside \ifodd\c@page\else
\hbox{}%
\thispagestyle{empty}%
beforechap\newpage%
\if@twocolumn\hbox{}\newpage\fi\fi\fi}
我真的不能说出文档类的作者在这里想要做什么,但是当该选项处于活动状态时,这会在每一页上打印单词“beforechap” twoside
。
一个侵入性最小的修补程序是将其放置在文档的开头,这样就可以删除烦人的单词:
\makeatletter
\renewcommand*{\cleardoublepage}{\clearpage\if@twoside \ifodd\c@page\else
\hbox{}%
\thispagestyle{empty}%
\newpage%
\if@twocolumn\hbox{}\newpage\fi\fi\fi}
\makeatother
请注意,存在更新版本在 GitHub 上其中这个错误显然已经修复。不过,我不确定这个文档类的维护状态,所以我建议不要使用它。