寻找带有参数、自定义标签和自定义参考文本的编号列表

寻找带有参数、自定义标签和自定义参考文本的编号列表

我将给出我真正需要的示例。输出应该看起来像默认的描述列表,带有编号标签。

REQ-ABC-001    Lorem Ipsum ...
     if the text is longer than a line, it is indent like normal description-lists.
REQ-ABC-002    Second item
REQ-ABC-003    and so on\label{req:label}

在文本中,这些项目应该被视为See~\ref{req:label}导致See REQ-ABC-003。这是我的实际问题。

列表本身应通过以下 LaTeX 代码显示:

\begin{reqlist}{abc}
  \item Lorem Ipsum ...
  \item ... 
\end{reqlist}

该参数描述了项目标签的内部部分(REQ 是常量)。我希望保持使用非常简单。

我尝试过 enumerate/description/list-environments。每个都有其优点和缺点,但都有相同的问题。我没有设法更改 的输出\ref。当我使用enumitemwith时\newlist,我没有看到包含参数的方法。

有人能告诉我如何实现这一目标吗?


为了方便起见,计数器的显示可以这样进行。只需提供一个计数器即可。

\newcommand{\arabicThree}[1]{%
\ifthenelse{\value{#1}<10}{%
00\arabic{#1}}{%
\ifthenelse{\value{#1}<100}{%
0\arabic{#1}}{%
\arabic{#1}%
}}}

答案1

这可以借助软件包来完成enumitem;我定义了\threeatdigits命令(类似于内核的\two@digits命令)来在数字中添加必要数量的零:

\documentclass{article}
\usepackage{enumitem}

% adds zeroes at the left of the number
\newcommand\parameter{}
\def\threeatdigits#1{\ifnum#1<10 00\else\ifnum#1<100 0\fi\fi\number#1}

\usepackage{lipsum}
\newlist{mylist}{enumerate}{4}
\setlist[mylist]{label={REQ-\parameter-\protect\threeatdigits{\arabic*}}, leftmargin=*,
labelsep=*,itemindent=5em}

\newenvironment{reqlist}[1]
  {\renewcommand\parameter{#1}
\begin{mylist}}
  {\end{mylist}}

\begin{document}

As can be seen in~\ref{a}
\begin{reqlist}{ABC}
  \item \lipsum[1]\label{a}
\end{reqlist}

\end{document}

在此处输入图片描述

答案2

这是 Gonzalo 主题的一个变种;这个变种展示了如何注册一个计数器表示枚举项

\usepackage{enumitem}

\newlist{reqlist}{enumerate}{1}
\setlist[reqlist]{label=\req*,leftmargin=*,labelsep=*,itemindent=5em}

\newcommand{\req}[1]{\expandafter\inreq\csname c@#1\endcsname}
\newcommand{\inreq}[1]{REQ-ABC-\threedigits{#1}}
\newcommand{\threedigits}[1]{%
  \ifnum#1<100 0\fi\ifnum#1<10 0\fi\number#1\relax}
\AddEnumerateCounter{\req}{\inreq}{REQ-ABC-000}

这样代码就更整洁了,因为它更好地分离了形式和内容。

相关内容