我可以根据书的各个部分使用不同的章节标题样式吗?

我可以根据书的各个部分使用不同的章节标题样式吗?

例如 - 如果我使用\frontmatter、、\mainmatter和...,我可以使用不同的格式来格式化“章节”\appendix吗?我使用 tikz 来设置我的主要章节和附录标题的样式,但我希望前面的目录和其他内容不使用相同的样式,以及后面的索引。\backmattertitlesec

这就是我现在使用的章节标题样式。

\documentclass{book}
\usepackage{tikz}
\usepackage[explicit]{titlesec}
\usepackage{geometry}
\geometry{
  left=2.50in,
  right=0.75in,
  top=1.25in,
  bottom=1.25in,
  marginparwidth=1.5in,
  marginparsep=.5in,
  asymmetric}

\makeatletter
\titleformat{\chapter}
  {\normalfont\sffamily\Huge\scshape}
  {}
  {0pt}
  {
    \thispagestyle{empty}    % Remove page number on new chapters
    \begin{tikzpicture}[remember picture,overlay]
      \node[yshift=-3cm] at (current page.north west)
        {\begin{tikzpicture}[remember picture, overlay]
          \draw[fill=cyan!50] (0,-1) rectangle
            (25cm,3cm);
          \draw[fill=cyan!50] (0,-24) rectangle
            (25cm,-25cm);
          \ifttl@label% <---------------------- Added condition on \ifttl@label
            \node[anchor=west,xshift=.236\paperwidth,yshift=-.01\paperheight,rectangle]
                {\color{white}\LARGE \MakeUppercase{\@chapapp} \Huge\thechapter};
          \fi% <------------------------------- end condition on \ifttl@label
         \end{tikzpicture}
        };
    \end{tikzpicture}\endgraf
    \vskip-.7cm
    \color{cyan}\Huge\raggedright\leftskip-1cm
    \MakeUppercase{#1}\endgraf
    }
\titlespacing*{\chapter}{0pt}{10pt}{0pt}{}
\makeatother
\begin{document}
  \chapter{test}

\end{document}

答案1

好的,经过一番探索之后,我发现我可以直接挂接到我想要控制的命令上。

我使用 etoolbox 设置了一个切换按钮

\newtoggle{fancychapter}

然后我挂钩到各个部分命令并根据需要进行切换。

\gpreto{\frontmatter}{%
  \togglefalse{fancychapter}}
\gpreto{\mainmatter}{%
  \toggletrue{fancychapter}}
\gpreto{\backmatter}{%
  \togglefalse{fancychapter}}

此后,我在自定义章节标题中添加了两个条件,如下所示:

\titleformat{\chapter}
  {\normalfont\sffamily\Huge\scshape}
  {}
  {0pt}
  {
    \thispagestyle{empty}    % Remove page number on new chapters
    \iftoggle{fancychapter}{%
    \begin{tikzpicture}[remember picture,overlay]
      \node[yshift=-3cm] at (current page.north west)
        {\begin{tikzpicture}[remember picture, overlay]
          \draw[fill=cyan!50] (0,-1) rectangle
            (25cm,3cm);
          \draw[fill=cyan!50] (0,-24) rectangle
            (25cm,-25cm);
          \ifttl@label% <---------------------- Added condition on \ifttl@label
            \node[anchor=west,xshift=.236\paperwidth,yshift=-.01\paperheight,rectangle]
                {\color{white}\LARGE \MakeUppercase{\@chapapp} \Huge\thechapter};
          \fi% <------------------------------- end condition on \ifttl@label
         \end{tikzpicture}
        };
    \end{tikzpicture}\endgraf}%
    {\titlespacing*{\chapter}{0pt}{35pt}{0pt}{}}
    \vskip-.7cm
    \color{cyan}\Huge\raggedright\leftskip-1cm
    }

虽然目前它还没有 100% 发挥作用,但是这个想法是存在的。

相关内容