如何向自定义的“列表...”添加 \chapter 标记?

如何向自定义的“列表...”添加 \chapter 标记?

经过多年阅读其他人的帖子和用乳胶编写的 3 篇论文后,我终于自己发布了一个问题。

我有一个包含蓝图的文档(以图像或 .pdf 格式包含),这些蓝图按不同的章节组织,因此我定义了一个自定义“列表”,以便创建“蓝图表”。

我可以创建蓝图表,并且蓝图本身包含在其中,没有任何复杂性。

但是,我还想在蓝图中包括蓝图所在的章节,为此我使用了 \addcontentsline 命令。

问题是,在蓝图表中我只能获得章节编号(使用 \chaptername 和 \thechaper);我尝试使用 \chaptermark 但无济于事,因为我收到以下错误:

\chaptermark 的参数有一个额外的 }。...{pln}{chapter}{\thechapter : \chaptermark}

因此,我采取了手动解决方案,通过在 \addcontentsline 命令中手动输入章节标题,但我想知道是否有办法使其自动化。

这些是我检查过的一些帖子添加章节标题以列出...在列表中包含章节标题...自动章节列表;我尝试遵循他们的代码,但我不确定我应该查看哪里。

这是我的 MWE:

\documentclass[12pt,a4paper]{report}
\usepackage[utf8]{inputenc}
\usepackage{titlesec,tocbibind,tocloft}
%
% List of Blueprints creation
\newcommand{\listplano}{{\huge \textbf{Table of blueprints}}}% custom list of blueprints
\newlistof{plano}{pln}{\listplano}% plano=blueprint in Spanish
\newcommand{\plano}[1]{% custom command to create a new blueprint
\refstepcounter{plano}% counter
\par\noindent\textbf{Plano \theplano. #1}% caption
\addcontentsline{pln}{plano}{\protect\numberline{\theplano}#1}\par}% add the blueprint to the list of blueprints
%
\begin{document}    
%
\newpage
\tableofcontents
%
% List of blueprints
\newpage
\phantomsection
\addcontentsline{toc}{chapter}{Table of blueprints}% add an entry for the Table of blueprints to the ToC
\listofplano% print the list of blueprints
%
\chapter{Blueprints of Project X}
\addcontentsline{pln}{chapter}{\thechapter \, Blueprints of Project X}% add chapter to the list of blueprints; here is where I tried to use \chaptermark
\newpage
\plano{Project X - A}
Here I add the blueprint as an image or a pdf.
%
\chapter{Blueprints of Project Y}
\addcontentsline{pln}{chapter}{\thechapter \, Blueprints of Project Y}% add chapter   to the list of blueprints
\newpage
\plano{Project Y - 1}
 Here I add the blueprint as an image or a pdf.
 %
 \newpage
 \plano{Project Y - 2}
 Here I add the blueprint as an image or a pdf.
 %
 \end{document}

感谢所有能提供帮助的人。多年来我一直在咨询这些论坛,并从社区中学到了很多东西。

答案1

您确实应该将其纳入\addcontentsline的定义中\chapter。以下是管理该问题的一种方法:

\NewCommandCopy{\oldchapter}{\chapter}
\RenewDocumentCommand{\chapter}{ s +O{#3} +m }
   {
      \IfBooleanTF{#1}
         {\oldchapter*{#3}} % Starred chapter
         {                  % Non-starred chapter
           \oldchapter[#2]{#3}
           \addcontentsline{pln}{chapter}{\thechapter \, #2}
           \newpage
         }
   }

然后,您就可以\chapter像没有任何更改一样进行书写。这也会启动您当前正在手动创建的新页面。

答案2

\chaptermark由 执行,\chapter并将(短)章节标题作为参数传递。好消息是您可以修改它以将章节标题保存到宏(如\chaptertitle)。坏消息是当您更改页面样式时它会被重新定义。

\documentclass[12pt,a4paper]{report}
\usepackage[utf8]{inputenc}
\usepackage{titlesec,tocbibind,tocloft}
%
% List of Blueprints creation
\newcommand{\listplano}{{\huge \textbf{Table of blueprints}}}% custom list of blueprints
\newlistof{plano}{pln}{\listplano}% plano=blueprint in Spanish
\newcommand{\plano}[1]{% custom command to create a new blueprint
\refstepcounter{plano}% counter
\par\noindent\textbf{Plano \theplano. #1}% caption
\addcontentsline{pln}{plano}{\protect\numberline{\theplano}#1}\par}% add the blueprint to the list of blueprints
%
\makeatletter
\def\chaptermark#1{%
      \markboth {\MakeUppercase{%
        \ifnum \c@secnumdepth >\m@ne
            \@chapapp\ \thechapter. \ %
        \fi
        #1}}{}\xdef\chaptertitle{#1}}%
\makeatother
\begin{document}    
%
\newpage
\tableofcontents
%
% List of blueprints
\newpage
\phantomsection
\addcontentsline{toc}{chapter}{Table of blueprints}% add an entry for the Table of blueprints to the ToC
\listofplano% print the list of blueprints
%
\chapter{Blueprints of Project X}
\addcontentsline{pln}{chapter}{\thechapter \, \chaptertitle}% add chapter to the list of blueprints; here is where I tried to use \chaptermark
\newpage
\plano{Project X - A}
Here I add the blueprint as an image or a pdf.
%
\chapter{Blueprints of Project Y}
\addcontentsline{pln}{chapter}{\thechapter \, \chaptertitle}% add chapter   to the list of blueprints
\newpage
\plano{Project Y - 1}
 Here I add the blueprint as an image or a pdf.
 %
 \newpage
 \plano{Project Y - 2}
 Here I add the blueprint as an image or a pdf.
 %
 \end{document}

相关内容