我将给出我真正需要的示例。输出应该看起来像默认的描述列表,带有编号标签。
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
。当我使用enumitem
with时\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}
这样代码就更整洁了,因为它更好地分离了形式和内容。