编辑自定义类文件以消除空白页,修复目录

编辑自定义类文件以消除空白页,修复目录

我正在使用经过修改的BYU 论文模板作为我的论文。

这个模板有两个不受欢迎的功能我想消除:

  1. 该模板会在各个地方创建空白页。例如,在第一页(标题)之后和摘要之后等等。该模板还会在某些章节之后创建空白页。我认为这是为了确保在双面纸上打印时,新章节不会从页面背面开始。简而言之,我想删除所有空白页。
  2. 在目录中,我想删除标题、摘要、致谢和目录。

答案1

为了实现您的目标,您的文档结构应该类似于:

\documentclass[..,honors,etd,openany,..]{BYUPhys}
\let\oldToC\tableofcontents
\renewcommand{\tableofcontents}{{% Remove ToC entries
  \renewcommand{\addcontentsline}[3]{}\oldToC}}
\let\oldmakepreliminarypages\makepreliminarypages
\renewcommand{\makepreliminarypages}{{% Remove ToC entries
  \renewcommand{\addcontentsline}[3]{}\oldmakepreliminarypages}}
%...
\begin{document}
%...
\makepreliminarypages
\renewcommand{\clearemptydoublepage}{\clearpage}
%...
\end{document}

以下是对正在发生的事情的简短讨论:

  1. 为了解决空白页问题,您需要做几件事:

    • 使用etd文档类别的选项(显然是 BYU 特有的提交类型)删除论文“初步页面”部分中的空白页:

      \documentclass[..,etd,...]{BYUPhys}
      %...
      
    • \renewcommand{\clearemptydoublepage}{\clearpage}立即插入\makepreliminarypages以删除目录周围的空白页:

       \begin{document}
       %...
       \makepreliminarypages
       \renewcommand{\clearemptydoublepage}{\clearpage}
       %...
      
    • 使用openany文档类的选项删除每章的空白页:

      \documentclass[..,openany,..]{BYUPhys}
      %...
      
  2. 在文档序言中添加

    \let\oldToC\tableofcontents
    \renewcommand{\tableofcontents}{{% Remove ToC entries
      \renewcommand{\addcontentsline}[3]{}\oldToC}}
    \let\oldmakepreliminarypages\makepreliminarypages
    \renewcommand{\makepreliminarypages}{{% Remove ToC entries
      \renewcommand{\addcontentsline}[3]{}\oldmakepreliminarypages}}
    

    这会暂时重新定义与内容相关的宏,\addcontentsline使其不执行任何操作(吞噬其 3 个强制参数)。请注意两个命令重新定义内的分组(双括号)。默认情况下,目录中不包含标题、摘要或致谢,但在honors类选项下,它们会包含。


以下是对正在发生的事情的详细讨论:

  1. 删除空白页:

    • 文档etd类选项定义了适当的“清除页面”宏:

      \DeclareOption{etd}{
        \renewcommand{\clearemptydoublepage}{\clearpage}
      
    • \makepreliminarypages重新定义\clearemptydoublepage上述内容以重新插入空白页:

      \newcommand{\makepreliminarypages}{
        \singlespace
        \changepage{0.5in}{}{}{}{}{}{-0.2in}{-0.3in}{}
        \BYUtitlepage
        \abstractpage
        \acknowledgmentspage
        \renewcommand{\clearemptydoublepage}{\cle@remptydoublep@ge}% <-------- !
        \changepage{-0.5in}{}{}{}{}{}{0.2in}{0.3in}{}
        \doublespace
      }
      

      通过插入上述建议\renewcommand,我们覆盖了这个重新定义以维持不插入更多空白页的现状。

    • 自从BYUPhys.cls加载默认book文档类并且没有重新定义\chapter,我们可以在那里查看以进行任何更改。

      book.cls定义\chapter

      \newcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi
                          \thispagestyle{plain}%
                          \global\@topnum\z@
                          \@afterindentfalse
                          \secdef\@chapter\@schapter}
      

      它会插入到文档类选项\cleardoublepageopenright。因此,对于常规的\clearpage,我们使用openany选项。

  2. \tableofcontents默认在目录中插入一些内容:

    \let\TEMPtableofcontents\tableofcontents
    \renewcommand{\tableofcontents}{
      \clearemptydoublepage
      \singlespace
      \providecommand\phantomsection{} \phantomsection
      \addcontentsline{toc}{chapter}{Table of Contents}% <-------- !
      \TEMPtableofcontents
      \clearemptydoublepage
      \doublespace
    }
    

    \makepreliminarypages,在目录(标题、摘要和致谢)之前设置了初步页面,包括类似的用法\addcontentsline

    \DeclareOption{honors}{
      \renewcommand{\makepreliminarypages}{
        \changepage{0.5in}{-0.5in}{}{0.5in}{}{}{-0.2in}{-0.3in}{}
        \providecommand\phantomsection{} \phantomsection
        \addcontentsline{toc}{chapter}{Title and signature page}% <-------- !
        \honorstitlepage
        \providecommand\phantomsection{} \phantomsection
        \addcontentsline{toc}{chapter}{Abstract}% <-------- !
        \honorsabstractpage
        \honorsacknowledgmentspage% <-------- ! (hidden, but in there...)
        \renewcommand{\clearemptydoublepage}{\cle@remptydoublep@ge}
        \changepage{-0.5in}{}{}{}{}{}{0.2in}{0.3in}{}
        \doublespace
      }
    }
    

    通过重新定义\addcontentsline暂时不执行任何操作,上面标记的行不执行任何操作。

相关内容