重复生成唯一数字

重复生成唯一数字

我正在用 LaTeX 编写软件规范,为每个需求分配一个唯一的编号被认为是最佳实践。章节编号不适用于此,因为即使在现有需求中间添加了新需求,这些编号也必须保持不变。

到目前为止我看到的唯一选择是手动分配这些号码。但这不能保证唯一性,而且当涉及到多人时会变得混乱。

你有什么建议吗?

答案1

更好的解决方案:

我建议手动标记每个需求,并确保不使用重复项。下面的 MWE 产生:

在此处输入图片描述

但如果您不小心使用了相同的环境标签(即,如果最后一个标签被用作\begin{Requirement}{1},则会产生:

包需求错误:重复需求:1。

因此作者会意识到需要使用不同的需求标签。

此版本基于 Ulrike Fischer 的建议:

代码:

\documentclass{article}
\usepackage{xstring}

\newcommand\CheckForDuplicateRequirement[1]{%
    \ifcsname Requirement#1\endcsname %
        \PackageError{Requirement}{Duplicate Requirement: #1}{}%
    \else%
        \expandafter\gdef\csname Requirement#1\endcsname{}%
    \fi%
}


\newenvironment{Requirement}[1]{%
    \CheckForDuplicateRequirement{#1}%
    \textbf{Requirement #1:}%
}{%
}%

\begin{document}

\begin{Requirement}{1}
  This is the first requirement
\end{Requirement}

\begin{Requirement}{X}
  This is the second requirement
\end{Requirement}

\begin{Requirement}{Z}
  This is the third requirement
\end{Requirement}
\end{document}

旧解决方案:

此解决方案使用以下方法构建引用列表如何保存字符串的运行列表,然后逐个处理它们\PackageError,如果提供了重复的要求标签,则发出

笔记:

  • 使用这种方法,标签可以是数字和/或字母,但不应包含<,或 ,>因为我将其用作字符串的分隔符。这是为了确保测试对于作为其他标签的子字符串的标签正常工作。如果使用标签 ,则以前的版本会报告重复项,XX后跟X

代码:

\documentclass{article}
\usepackage{xstring}

\newcommand\RequirementList{}
\newcommand\CheckForDuplicateRequirement[1]{%
\StrPosition{\RequirementList}{<#1>}[\Position]
    \IfEq{\Position}{0}{%
        \global\edef\RequirementList{\RequirementList<#1>}%
    }{%
        \PackageError{Requirement}{Duplicate Requirement: #1}{}%
    }%
}

\newenvironment{Requirement}[1]{%
    \CheckForDuplicateRequirement{#1}%
    \textbf{Requirement #1:}%
}{%
}%

\begin{document}

\begin{Requirement}{1}
  This is the first requirement
\end{Requirement}

\begin{Requirement}{X}
  This is the second requirement
\end{Requirement}

\begin{Requirement}{Z}
  This is the third requirement
\end{Requirement}
\end{document}

相关内容