我正在写一份文件,其中必须定义多项要求。这些要求分散在整个文档中,因为它们属于不同的部分并分别进行解释。
有一个所有这些要求都集中概览在一处,例如表格。不幸的是,我不知道如何做到这一点,所以我不必手动将需求文本写入表格中(如果我稍后更改其中一个单词,它也应该在概览中自动更改,类似于词汇表或目录)。
我已经制作了自己的计数器,因此我不必手动对所有内容进行编号,因为我以后可能会添加需求。但是,我以前也尝试过使用附加词汇表来解决这个问题,但这些包对我来说相当……难以处理,因此我使用这种方法失败了。
一个完美的解决方案是,如果我只需要写 \newreq{Requirement description},它就会生成一个自动编号的输出,如 R01 Requirement description - 此外,我还可以使用 \printreqoverview 之类的命令来打印表格。
我可以稍后修改格式或外观等细节,但我目前只能使用这种引用 - 而且它确实有帮助,因为我必须将每个描述写两次并且每次都检查拼写错误 - 引用会有所帮助。
抱歉,我想我不能很好地描述这个问题......
我添加了一个最小工作示例,它不包含任何引用,仅包含自动编号:
\documentclass[10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{lipsum}
\usepackage{fmtcount}
\newcounter{rcount}
\setcounter{rcount}{0}
\newcommand{\newreq}{
\stepcounter{rcount}
\textbf{R\padzeroes[2]{\decimal{rcount}}}
}
\begin{document}
\section{First Chapter}
\lipsum[4]
\begin{enumerate}
\item[\newreq] This is the first requirement.
\item[\newreq] This is the second requirement.
\end{enumerate}
\lipsum[4]
\begin{enumerate}
\item[\newreq] This is the third requirement.
\end{enumerate}
\lipsum[4]
\section{Overview Table}
\begin{tabular}{|l|l|}
\hline
\# & Requirement \\ \hline
\hline
R01 & Text of R01 \\ \hline
R02 & Text of R02 \\ \hline
R03 & Text of R03 \\ \hline
\end{tabular}
\end{document}
答案1
这是tocloft
包。它允许自定义打印目录、图片列表和表格列表;还可以定义新的“列表...”。
\documentclass{article}
\usepackage{lipsum}
\usepackage{fmtcount}
\usepackage{tocloft}
\newlistof{requirement}{lor}{List of Requirements}
\renewcommand\therequirement{R\padzeroes[3]{\decimal{requirement}}}
\newcommand{\newreq}[1]{%
\refstepcounter{requirement}%
\par\noindent\textbf{\therequirement. }#1%
\addcontentsline{lor}{requirement}{\protect\numberline{\therequirement} #1}%
}
\begin{document}
\section{First Chapter}
\lipsum
\newreq{This is the first requirement.}
\newreq{This is the second requirement.}
\lipsum
\newreq{This is the third requirement.}
\lipsum
\listofrequirement
\end{document}
该行\newlistof{requirement}{lor}{List of Requirements}
基于计数器创建了一个新的“列表” requirement
(我重命名了您的rcount
;LaTeX 计数器与其他宏位于不同的命名空间中,因此名称中不必包含count
)。该列表将生成在一个文件中,该文件的基本名称与当前作业名称相同,扩展名为.lor
。最后一个参数是要显示的列表的标题。此命令创建宏\listofrequirement
,您可以调用它来打印列表。
但是,每次创建需求时,编写列表都是逐步进行的。需求的文本需要作为 的参数\newreq
。新\newreq
命令首先打印需求标签,然后打印需求文本。(您可以自定义需求的格式。)该\addcontentsline
命令向文件添加一行.lor
。扩展后,该行将如下所示:
\contentsline {requirement}{\numberline {R\padzeroes [3]{\@decimal {1}}} This is the first requirement.}{2}
您可以将需求列表更改为表格形式,但您必须确保在文档开头和结尾处 \begin{tabular}
将 写入文件。并且可以在这里使用。 但也许这样就足够了。.lor
\end{tabular}
\AtBeginDocument
\AtEndDocument