我想让未编号的章节/节出现在标题中,因此我使用了 titlesec 并定义了一个页面样式,该样式仅在左/右标记中显示章节/节标题。现在,我希望编号的章节显示为“第 X 章。章节标题”,对于节,它将显示为“XY 节标题”。对于未编号的,它将仅显示“章节标题”和“节标题”。
我的解决方案是编辑\chaptermark
如下\sectionmark
内容:
\titleformat{\chapter}[display]
{\chaptermark{This is a test \thechapter. #1}\bfseries \Huge}
{\chaptertitlename \hspace{0ex} \thechapter}
{2ex}
{#1}
它适用于章节、未编号章节、未编号部分但不适用于部分
分数维:
\documentclass{book}
\usepackage[pagestyles,explicit]{titlesec}
\newpagestyle{myps}[\scshape]{%
\sethead[\footnotesize \oldstylenums{\thepage}][][\chaptertitle]% even
{\sectiontitle}{}{\footnotesize \oldstylenums{\thepage}} % odd
}
\titleformat{name=\chapter , numberless}
{\chaptermark{#1}\normalfont\bfseries\Huge \filcenter}
{}
{0pt}
{#1}
\titleformat{\chapter}[display]
{\chaptermark{This is a test \thechapter. #1}\bfseries \Huge}
{\chaptertitlename \hspace{0ex} \thechapter}
{2ex}
{#1}
\titleformat{\section}
{\sectionmark{This is a test \thesection #1} \Large \bfseries \filcenter}
{\thesection}
{0.7em}
{#1}
\titleformat{name=\section , numberless}
{\sectionmark{#1} \Large \bfseries \filcenter}
{}
{0.7em}
{#1}
\begin{document}
\pagestyle{myps}
\chapter{Chapter title}
\section{Section title}
test
\newpage
test
\newpage
test
\end{document}
问题 :
因为以下代码不起作用
\titleformat{\section}
{\sectionmark{This is a test \thesection #1} \Large \bfseries \filcenter}
{\thesection}
{0.7em}
{#1}
同时所有其他功能均正常运作。
答案1
您的问题并没有真正说明如何调用无编号的章节/节。如果您更改计数器,secnumdepth
则可以使用 titlesec 的工具。如果您还想为带星号的章节和节使用它,那么您就没那么幸运了:titlesec 不会设置标记,也没有界面可以重新插入它们,修补 titlesec 并不是一件容易的事(甚至 hyperref 也不会这样做……)。您最好的办法是定义发出标记命令的新命令:
\documentclass{book}
\usepackage[pagestyles,explicit]{titlesec}
\newpagestyle{myps}[\scshape]{%
\sethead[\footnotesize \oldstylenums{\thepage}][][\ifthechapter{Chapter~\thechapter~}{}\chaptertitle]% even
{\ifthesection{Section~\thesection~}{}\sectiontitle}{}{\footnotesize \oldstylenums{\thepage}} % odd
}
\makeatletter
\titleformat{name=\chapter , numberless}
{\normalfont\bfseries\Huge\filcenter}
{}
{0pt}
{#1}
\titleformat{\chapter}[display]
{\bfseries \Huge}
{\chaptertitlename \hspace{0ex} \thechapter}
{2ex}
{#1}
\titleformat{\section}
{\Large \bfseries \filcenter}
{\thesection}
{0.7em}
{#1}
\titleformat{name=\section , numberless}
{\Large \bfseries\filcenter}
{}
{0.7em}
{#1}
\newcommand\starredchapter[1]{%
\chapter*{#1}\chaptermark{#1}}
\newcommand\starredsection[1]{%
\section*{#1\sectionmark{#1}}\sectionmark{#1}}
\begin{document}
\chapter{Chapter title}
\section{Section title}
test
\newpage
test
\newpage
test
\setcounter{secnumdepth}{-1}
\chapter{Nonumber Chapter title}
\section{Nonumber Section title}
test
\newpage
test
\newpage
test
\starredchapter{Starred Chapter title}
\starredsection{Starred Section title}
test
\newpage
test
\newpage
test
\end{document}
答案2
您或许可以为编号部分定义一个自定义部分命令,该命令定义\sectionmark
该部分之后的内容:
\newcommand{\numberedsection}[1]{\section{#1}\sectionmark{This is a test \thesection\ #1}}
并将编号部分的样式更改为:
\titleformat{\section}
{ \Large \bfseries \filcenter}
{\thesection}
{0.7em}
{#1}
对于未编号的部分,您可以\section*
正常使用。