引用枚举列表

引用枚举列表

首先,我意识到这个话题有很多问题,我已经仔细研究过这个问题的答案,但还没有找到;如果这个网站上有重复的内容,我深表歉意。现在来谈谈真正的问题……

我想创建一个枚举列表,以便我可以选择标签,然后对该标签进行超链接引用。这个 SE 问题上接受的答案这里 几乎正是我想要的。答案给出了以下 MWE。

\documentclass{article}
\usepackage{enumitem}
\begin{document}
\begin{enumerate}[label=\textbf{S.\arabic*}]
\item a
\item \label{l} b
\item c. goto \ref{l}
\end{enumerate}
\end{document}

现在,我想这样做,但我不想label=...每次都写。以前,我使用过类似

\newcommand{\alphanumbering}{\renewcommand{\labelenumi}{(\textit{\alph{enumi}})}}

然后在输入之前begin{enumerate}我会输入\alphanumbering。但是当我使用 时\ref,我只会得到计数器(是enumi?),我甚至不能使用类似 的东西\alph{\ref{1}}

然后我想进一步扩展这一点,写一些类似\alphaarabicnumbering之前的内容enumerate,其中

\newcommand{\alphaarabicnumbering}{
    \renewcommand{\labelenumi} {(\textit{\alph{enumi}})}
    \renewcommand{\labelenumii}{\arabic{enumii}.} }

这样就给出了一个列表,其中第一级为 (a)、(b)...,第二级为 1.、2.、...。例如,

(a) foo
    1. bar
    2. foobar

我想将“foobar”引用为(a.2),其他行也类似。(请注意,简单的引用应该是(a)2,这不是我想要的。)

另请参阅这个 SE 问题

答案1

...我不想label=...每次都必须写。

由于您正在加载enumitem包,因此您可能希望利用其\newlist\setlist宏来创建一个自定义枚举环境,以自动执行特殊标记。该解决方案与包完全兼容hyperref

\documentclass{article}

\usepackage{enumitem}
\newlist{senum}{enumerate}{1} % create a new, 1-level enumerated environment
\setlist[senum]{label=\textbf{S.\arabic*}} % define the labels

\begin{document}
\begin{senum}
\item a
\item \label{x} b
\item c.\ goto \ref{x}
\end{senum}
\end{document}

答案2

这里有一个 MWE,可以提供更多细节。对于那些非常熟悉 TeX 的人来说,Mico 的回答和对文档的简要浏览(其中有一些示例,但不一定正是我想要的)就足够了,但对于像我这样的人来说,我们需要做一些测试才能确切地了解发生了什么!下面是它。

\documentclass[]{article}
\usepackage{enumitem}
\newlist{list1}{enumerate}{2}
\setlist[list1,1]{label=\arabic{list1i},ref=\arabic{list1i}}
\setlist[list1,2]{label=\alph{list1ii},ref=(\arabic{list1i}.\alph{list1ii})}
\begin{document}
\begin{list1}
    \item \label{1} ITEM 1
    \item \label{2} ITEM 2
    \begin{list1}
        \item \label{3} ITEM (2.a)
    \end{list1}
\end{list1}
\ref{1} \ref{2} \ref{3}
\end{document}

相关内容