如何在 LaTeX 中获取零件名称?

如何在 LaTeX 中获取零件名称?

实际上我正在使用该fancyhdr包,并尝试将当前零件名称放在正确的标题中。

我知道\rightmark\leftmark分别用于表示当前章节和章节标题,但我找不到任何类似的东西来表示部分名称。

答案1

这取决于您所指的是哪种类型的“部分” ,,,,,,\chaptername等等......请参阅\sectionname\thepage\thesection\thechapter此链接了解详情。

编辑:根据您的评论,此主题似乎正在讨论解决方案(笔记:有一个拼写错误,应该是\renewcommand{\part}...,即必须添加反斜杠):

要使用这些部件,您可以执行以下操作:

\let\Oldpart\part
\newcommand{\parttitle}{}
\renewcommand{part}[1]{\Oldpart{#1}\renewcommand{\parttitle}{#1}}

然后在标题栏中使用 \parttitle。

另一种选择是使用 titlesec提供类似命令的包\partmark

答案2

将零件标题放入页眉并不常见,因此没有默认的宏。

您可以重新定义\part宏来保存它的参数,例如,\parttitle然后可以在自定义标题中使用的宏:

\newcommand*\parttitle{}
\let\origpart\part
\renewcommand*{\part}[2][]{%
   \ifx\\#1\\% optional argument not present?
      \origpart{#2}%
      \renewcommand*\parttitle{#2}%
   \else
      \origpart[#1]{#2}%
      \renewcommand*\parttitle{#1}%
   \fi
}

答案3

在 KOMA 类中\part执行一个\partmark命令,您可以使用该命令来设置\rightmark\leftmark部分标题。

但是,由于\part总是会生成一个新页面,并且您可能只需要下一页的标题,您也可以做一些简单的操作,例如:

\newcommand\partcontent{}
...

\part{Blub}
\renewcommand\partcontent{Blub}

然后\partcontent在标题中使用。

答案4

我找不到保存该部分标题的宏,因此我使用了etoolbox包来修补命令中的内部内容\part。然后,您只需获取该保存宏并将其放在任何地方即可。

\documentclass{report}
\title{part name in right mark}
\usepackage{fancyhdr}
\usepackage{lipsum}
\usepackage{etoolbox}

\makeatletter
% patch \@part[#1]{#2} and \@spart (see the class file) to save the part name
\pretocmd{\@part}{\gdef\parttitle{#1}}{}{}
\pretocmd{\@spart}{\gdef\parttitle{#1}}{}{}
\makeatother

\pagestyle{fancy}
\renewcommand{\rightmark}{\parttitle}


\begin{document}


\maketitle
\tableofcontents

\part{First part}

\chapter{first chapter}

\lipsum\lipsum\lipsum

\chapter{second chapter}

\lipsum\lipsum\lipsum

\part{Second part}

\chapter{third chapter}

\lipsum\lipsum\lipsum

\chapter{fourth chapter}

\lipsum\lipsum\lipsum

\end{document}

相关内容