我想在每一章的开头添加代码。特别是命令\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
)作为执行章节标题实际排版的宏,具体取决于您想要的确切效果。
您还缺少了修补成功或失败时使用的success
和failure
分支。\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}