我正在尝试重新定义\appendix
命令,以便附录标题移至页面顶部。为此,我尝试了以下代码,但出现错误! Illegal parameter number in definition of \appendix
。为什么会出现此错误以及如何消除它?
\documentclass{book}
\makeatletter
\renewcommand\appendix{\par
\def\@makechapterhead#1{%
\vspace*{0\p@}%
{\parindent \z@ \raggedright \normalfont
\ifnum \c@secnumdepth >\m@ne
\if@mainmatter
\huge\bfseries \@chapapp\space \thechapter
\par\nobreak
\vskip 20\p@
\fi
\fi
\interlinepenalty\@M
\Huge \bfseries #1\par\nobreak
\vskip 40\p@
}}
\setcounter{chapter}{0}%
\setcounter{section}{0}%
\gdef\@chapapp{\appendixname}%
\gdef\thechapter{\@Alph\c@chapter}}
\makeatother
\begin{document}
\appendix
\chapter{Foo}
\end{document}
请记住,我知道一个解决方案是将 的重新定义放在文档主体中的命令\@makechapterhead
开头\appendix
,但我想在序言中完成这项工作。另外,我宁愿不使用额外的包来完成这项工作。
答案1
在 的定义中\appendix
,#1
将是 的第一个参数,\appendix
该参数不存在,\appendix
定义为无参数。对于定义中的定义的参数,您需要将哈希字符加倍:
\renewcommand\appendix{\par
\def\@makechapterhead##1{%
... ##1 ...
}%
...
}
如果\@makechapterhead
包含另一个带有参数的定义,则####
需要内部参数。