在 TikZ 中使用章节名称和章节编号来设置章节样式

在 TikZ 中使用章节名称和章节编号来设置章节样式

我正在尝试为我的论文定义自己的章节样式。我正在使用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进行相应的更新。

相关内容