如何在每章开头添加代码?

如何在每章开头添加代码?

我想在每一章的开头添加代码。特别是命令\minitoc。我希望\appto这能奏效。但没有成功。

\usepackage{etoolbox}
\appto\chapter{Test}

只需使用电视作为章节标题和美东时间本章之后。

使用\apptocmd也不起作用。例如,我查看了是否可以在章节开头添加命令?。不幸的是,我认为它的标题具有误导性。

这是一个完整的例子:

\documentclass{book}

\usepackage{etoolbox}
\appto\chapter{Test}

\begin{document}

\chapter{One}

\end{document}

渲染结果如下

在此处输入图片描述

答案1

\chapter只是一个顶级命令,它实际上不接受任何参数,也不排版任何内容。它只是将 LaTeX 带到正确的页面(正面/背面)并设置页面样式和一些其他小东西,然后它调用\@chapter\@schapter,取决于您是否使用了\chapter\chapter*(所有这些都适用于book类;其他类的行为可能不同)。事实上,\chapter不接受参数,因此如果您将其附加Test到其定义,则与您执行的操作相同:

\chapter Test{One}

这就是为什么章节标题变成T,其余部分 ( estOne) 排版在其下方。这就是 egreg 在他的回答(在您链接的帖子中)中的意思:

如果你

\apptocmd{\chapter}{
    \exewidth{(34)}
}{}{}

(注意两个尾随参数,查看文档etoolbox了解说明),您将使命令\secdef失败。

他还在答案的最后对所发生的事情进行了详细的解释。

您需要修补内部\@chapter\@schapter如果您愿意的\chapter*话),它将内容写入目录并设置页眉,或者,修补\@makechapterhead(和\@makeschapterhead)作为执行章节标题实际排版的宏,具体取决于您想要的确切效果。

您还缺少了修补成功或失败时使用的successfailure分支。\apptocmd

\documentclass{book}
\usepackage{etoolbox}
\makeatletter
\apptocmd\@chapter % or \@makechapterhead
  {Test}
  {}{\FAILED}
% \apptocmd\@schapter % or \@makeschapterhead
%   {Test}
%   {}{\FAILED}
\makeatother
\begin{document}
\chapter{One}
\end{document}

在此处输入图片描述

相关内容