![表格内的参考部分包括该部分中设置的标签](https://linux22.com/image/453613/%E8%A1%A8%E6%A0%BC%E5%86%85%E7%9A%84%E5%8F%82%E8%80%83%E9%83%A8%E5%88%86%E5%8C%85%E6%8B%AC%E8%AF%A5%E9%83%A8%E5%88%86%E4%B8%AD%E8%AE%BE%E7%BD%AE%E7%9A%84%E6%A0%87%E7%AD%BE.png)
LS,
对于可以添加和删除包含某个部分的 .tex 文件的模块化文档,我正在寻找一种方法来包含这些部分的概览表。在此表中,还需要显示在所述部分中设置的标签。
例如:
\section{Name of finding 1}
\label{not solved}
\label{Critical}
我试图将其显示在表格中:
发现: | 地位: | 严重性: |
---|---|---|
发现 1 的名称 | 未解决 | 批判的 |
发现 2 的名称 | 解决了 | 低的 |
发现 3 的名称 | 未解决 | 低的 |
ETC... |
具有不同发现的部分的大小是可变的,因此需要生成的表格也应该基于当前存在的部分来生成。
目录似乎能够引用所有不同的部分,但是我还没有发现任何定制目录的可能性,也没有发现包括在特定部分中设置的不同标签的可能性。
有没有什么软件包可以实现这个功能?
谢谢!
答案1
以下是一个想法:
您不能\label
为此使用该命令,因为它已经具有含义并且每个标签必须是唯一的。
但是我们可以定义一个新命令\Label
,然后最好给它两个参数,而不是使用两个\Label
命令。
必须将命令\section
更改为将章节标题放入“变量”中,然后命令\Label
可以拾取它并将其与其两个参数一起放在列表中。
\documentclass{article}
\usepackage{xparse} % Can be omitted with a recent LaTeX distribution
\usepackage{tocloft}
\usepackage{lipsum}
\newlistof{finding}{sec}{List of Findings}
\newcommand{\CurrentSection}{}
\newcommand{\origsection}{}
\let \origsection\section
% Redefine \section to pick up 3 arguments (but not if \section*)
\RenewDocumentCommand \section { s O{#3} m }
{
\IfBooleanTF{#1}% test if * present
{\origsection*{#3}}
{\origsection[#2]{#3}}
\renewcommand{\CurrentSection}{#3}
}
\newcommand{\Label}[2]{%
\addtocontents{sec}{\CurrentSection & #1 & #2\\\protect\hline}
}
\AtBeginDocument{%
\addtocontents{sec}{%
\begin{tabular}{|l|l|l|}
\protect\hline
\textbf{Finding:} & \textbf{Status:} & \textbf{Severity:} \\
\protect\hline
}
}
\AtEndDocument{\addtocontents{sec}{\end{tabular}}}
\begin{document}
\tableofcontents
\newpage
\listoffinding
\newpage
\section{First Section}\Label{Not Solved}{Critical}
\lipsum
\section{SECOND Section}\Label{Not Solved}{Critical}
\lipsum
\section{Third Section}\Label{Solved}{Critical}
\lipsum
\section{Fourth Section}\Label{Not Solved}{Not Critical}
\lipsum
\section{Fifth Section}\Label{Solved}{Not Critical}
\lipsum
\section{SIXTH Section}\Label{Not Solved}{Very Critical}
\lipsum
\end{document}
是否获得所需的格式取决于您。