Wie vermeidet man doppelten Text in benutzerdefinierten Beschriftungsreferenzen mit Enumitem in LaTeX?

Wie vermeidet man doppelten Text in benutzerdefinierten Beschriftungsreferenzen mit Enumitem in LaTeX?

Ich versuche derzeit, enumitembenutzerdefinierte Referenzbeschriftungen in meinem Dokument zu erstellen. Ich habe globale Befehle für die Enumeratoren wie folgt definiert:

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

...

Wenn ich jedoch die folgenden Befehle in der Liste verwende, erhalte ich diese Ergebnisse:
Terms § 1
Terms § Terms § 1(a)
Terms § Terms § 1(Terms § Terms § 1(a))–i

Was ich erhalten möchte:
Terms § 1
Terms § 1(a)
Terms § 1(a)–i

Es scheint, dass die Variablen mehrfach erweitert werden, denn wenn ich den refParameter in der übergeordneten Liste weglasse, verschwindet die Duplizierung teilweise.

Hauptfrage:
Wie kann ich dies vermeiden oder das Verhalten ändern, um das gewünschte Ergebnis zu erzielen?

Antwort1

Sie müssen in Ihren neuen Label-Befehlen nur etwas expliziter sein, um diese Erweiterung zu vermeiden.

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

Bildbeschreibung hier eingeben

verwandte Informationen