如何使用 LaTeX 中的 enumitem 避免自定义标签引用中的重复文本?

如何使用 LaTeX 中的 enumitem 避免自定义标签引用中的重复文本?

我目前正在尝试使用enumitem在文档中创建自定义引用标签。我已为枚举器定义了全局命令,如下所示:

% File: enumitem-config.tex
\newcommand
    {\SectionName}
    {Terms}


\newcommand
    {\FirstLevelEnumerator}
    {{\SectionName} {\S} \theenumi}


\newcommand
    {\SecondLevelEnumerator}
    {{\FirstLevelEnumerator}(\theenumii)}


\newcommand
    {\ThirdLevelEnumerator}
    {{\SecondLevelEnumerator}--\theenumiii}



% File: main.tex
\import{path/to}{enumitem-config.tex}

...

\begin{enumerate}[ref = \FirstLevelEnumerator]
   \item\label{reference:one} Item 1
   \begin{enumerate}[ref = \SecondLevelEnumerator]
      \item\label{reference:one-a} Item 1(a)
      \begin{enumerate}[ref = \ThirdLevelEnumerator]
         \item\label{reference:one-a-i} Item 1(a)-i
      \end{enumerate}
   \end{enumerate}
\end{enumerate}

...

但是,当我在列表中使用以下命令时,我会遇到以下结果:
Terms § 1
Terms § Terms § 1(a)
Terms § Terms § 1(Terms § Terms § 1(a))–i

我想要收到的内容:
Terms § 1
Terms § 1(a)
Terms § 1(a)–i

似乎变量被扩展了多次,因为当我省略ref父列表中的参数时,重复部分消失。

主要问题
我该如何避免这种情况或改变行为以实现期望的结果?

答案1

您只需要在新的标签命令中更加明确一点,即可避免这种扩展。

\documentclass{article}
\usepackage{enumitem}

\newcommand{\SectionName}{Terms\ \S}

\newcommand{\FirstLevelEnumerator}{\SectionName\ \theenumi}
\newcommand{\SecondLevelEnumerator}{\theenumi(\theenumii)}
\newcommand{\ThirdLevelEnumerator}{\theenumii--\theenumiii}

\begin{document}

\begin{enumerate}[ref=\FirstLevelEnumerator]
   \item\label{reference:one} Item 1 REF: \ref{reference:one}
   \begin{enumerate}[ref=\SecondLevelEnumerator]
      \item\label{reference:one-a} Item 1(a) REF: \ref{reference:one-a}
      \begin{enumerate}[ref=\ThirdLevelEnumerator]
         \item\label{reference:one-a-i} Item 1(a)-i REF: \ref{reference:one-a-i}
      \end{enumerate}
   \end{enumerate}
\end{enumerate}

\end{document}

在此处输入图片描述

相关内容