Como evitar texto duplicado em referências de rótulos personalizados com enumitem em LaTeX?

Como evitar texto duplicado em referências de rótulos personalizados com enumitem em LaTeX?

Atualmente, estou tentando enumitemcriar rótulos de referência personalizados em meu documento. Defini comandos globais para os enumeradores, da seguinte forma:

% 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}

...

No entanto, quando uso os seguintes comandos da lista, encontro estes resultados:
Terms § 1
Terms § Terms § 1(a)
Terms § Terms § 1(Terms § Terms § 1(a))–i

O que quero receber:
Terms § 1
Terms § 1(a)
Terms § 1(a)–i

Parece que as variáveis ​​estão sendo expandidas várias vezes porque quando omito o refparâmetro na lista pai, a duplicação desaparece parcialmente.

Pergunta principal:
Como posso evitar isso ou alterar o comportamento para alcançar o resultado desejado?

Responder1

Você só precisa ser um pouco mais explícito em seus novos comandos de rótulo para evitar essa expansão.

\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}

insira a descrição da imagem aqui

informação relacionada