我正在尝试为我的论文定义自己的章节样式。我正在使用memoir
,并希望将例如“第 3 章”或“附录 C”的部分放在单个 TikZ 图形中。到目前为止,我的代码如下,但它自然不适用于附录,因为它们也只会读取例如“第 C 章”而不是“附录 C”。我一直在浏览网络和文档memoir
,我发现我可能能够使用\@chapapp
,但我无能为力。你能帮忙吗?
\makechapterstyle{nicechap}
{
\setlength{\beforechapskip}{0cm} % Distance from top of page to chapter headings
\setlength{\afterchapskip}{1cm} % Distance from chapter text to body
\setlength{\midchapskip}{0cm} % Distance between chapter number and heading
\renewcommand*{\chapnamefont}{\huge\scshape}
\renewcommand*{\printchaptername}{}
\renewcommand*{\chaptitlefont}{\huge\scshape\bfseries}
\renewcommand\chapternamenum{}
\renewcommand\printchapternum
{
\makebox[0pt][l]
{
%\tikzset{external/remake next}
\begin{tikzpicture}[->, thick]
\node[draw, minimum height=3em] at (0,0) (chap) {\chapnamefont {\bfseries Chapter~\thechapter}};
% other TikZ drawing stuff here..
\end{tikzpicture}
}
}
}
答案1
您应该将整个内容包装\makechapterstyle{nicechap}{...}
在\makeatletter
...\makeatother
对内,然后替换Chapter
为\@chapapp
:
\makeatletter
\makechapterstyle{nicechap}
{
\setlength{\beforechapskip}{0cm} % Distance from top of page to chapter headings
\setlength{\afterchapskip}{1cm} % Distance from chapter text to body
\setlength{\midchapskip}{0cm} % Distance between chapter number and heading
\renewcommand*{\chapnamefont}{\huge\scshape}
\renewcommand*{\printchaptername}{}
\renewcommand*{\chaptitlefont}{\huge\scshape\bfseries}
\renewcommand\chapternamenum{}
\renewcommand\printchapternum
{
\makebox[0pt][l]
{
%\tikzset{external/remake next}
\begin{tikzpicture}[->, thick]
\node[draw, minimum height=3em] at (0,0) (chap) {\chapnamefont {\bfseries\@chapapp~\thechapter}};
% other TikZ drawing stuff here..
\end{tikzpicture}
}
}
}
\makeatother
@
为什么?因为你在宏定义中使用了一个符号。请参阅做什么\makeatletter
和\makeatother
做什么?此外,因为当你\appendix
发出memoir
它重新定义\@chapapp
为\appendixname
(扩展为Appendix
),此外还增加了一些其他内容(包括章节计数器表示)。
无论在何处使用(\frontmatter
、\mainmatter
或\backmatter
),上述建议都应有效。请注意,您需要\appendix
在附录之前发出,以便\@chapapp
进行相应的更新。