Как избежать дублирования текста в ссылках пользовательских меток с помощью enumitem в LaTeX?

Как избежать дублирования текста в ссылках пользовательских меток с помощью enumitem в LaTeX?

В настоящее время я пытаюсь использовать 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}

введите описание изображения здесь

Связанный контент