如何创建动态部分列表

如何创建动态部分列表

我正在尝试制作一个包含大量描述任务的部分的文档。我想用某种标签将几个部分标记为“高优先级”,然后建立一个目录,其中仅列出标有此标签的部分。在 LaTeX 中执行此操作的最佳方法是什么?

答案1

下面是您可能想要的模型。

\highpriorityname它通过使用打印文档中所有带星号的部分,提供了新的“高优先级部分列表”(如 中定义) \listofhpsection。新的“列表”可以通过tocloft包裹。每个带星号的部分也包含在常规中,并带有编号。这是通过使用\tableofcontents常规命令的重新定义来实现的\sectionxparse。另外,作为一种内联标记机制,每个“高优先级”部分将在\star末尾添加一个星号。

因此,简而言之,\section*命令将使用传统的section计数器/数字加上进行排版\star,但它也将包含在新的“高优先级”部分列表中。使用 发出的部分\section将以传统方式排版。

在此处输入图片描述

\documentclass{article}
\usepackage[titles]{tocloft}% http://ctan.org/pkg/tocloft
\usepackage{xparse}% http://ctan.org/pkg/xparse
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\usepackage{letltxmacro}% http://ctan.org/pkg/letltxmacro
\newcommand{\highpriorityname}{List of High Priority Sections}
\newlistof{hpsection}{hps}{\highpriorityname}

\begin{document}
% ================ FRONTMATTER ================
\tableofcontents
\listofhpsection

% ================ REDEFINTION ================
\LetLtxMacro{\oldsection}{\section}% Store old \section macro
\RenewDocumentCommand{\section}{s o m}{%
  \setcounter{hpsection}{\value{section}}% Copy section counter
  \IfBooleanTF{#1}
    {\refstepcounter{hpsection}%
     \IfNoValueTF{#2}%
       {\oldsection[#3]{#3$^\star$}\addcontentsline{hps}{section}{\numberline{\thehpsection} #3}}% starred section \section*{<title>}
       {\oldsection[#2]{#3$^\star$}\addcontentsline{hps}{section}{\numberline{\thehpsection} #2}}% starred section \section*[<ToC>]{<title>}
    }%
    {\IfNoValueTF{#2}%
       {\oldsection{#3}}% unstarred section \section{<title>}
       {\oldsection[#2]{#3}}% unstarred section \section[<ToC>]{<title>}
    }%
}

% ================ MAINMATTER ================
\section{First section} \lipsum[1-2]
\section*{Second section} \lipsum[3-4]
\section{Third section} \lipsum[5-6]
\section*{Fourth section} \lipsum[7-8]
\section*{Fifth section} \lipsum[9-10]
\section{Final section} \lipsum[11-12]
\end{document}

文档结构是这样的,部分重新定义发生之间 FRONTMATTERMAINMATTER。否则ContentsList of High Priority Sections也将被编号为部分。

保存原始\section命令是使用letltxmacro包裹, 尽管lipsum提供虚拟文本。

相关内容