Ich versuche derzeit, enumitem
benutzerdefinierte 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 ref
Parameter 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}