Aufzählungsproblem bei der Neudefinition der Umgebung „Aufzählung“

Aufzählungsproblem bei der Neudefinition der Umgebung „Aufzählung“

Ich möchte die enumerateUmgebung mit einem optionalen Argument neu definieren. Im Grunde möchte ich \theenumisie so neu definieren, dass jedes Mal, wenn ich ein Element beschrifte und es mit aufrufe, \refdie echte Beschriftung ausgedruckt wird und nicht nur der (arabische) Wert von counter enumi.

Ich habe es mit dem unten stehenden Code versucht und er funktioniert, abgesehen davon, dass er .jedem Etikett immer einen zusätzlichen Punkt () hinzufügt. Wenn ich ihn mit aufrufe, \refwird jedoch das richtige Etikett gedruckt.

Hier ist ein MWE von dem, was ich versucht habe:

\documentclass{book}
\usepackage{enumerate}
%%
%%
\let\oldenumerate\enumerate
\let\endoldenumerate\endenumerate
\renewenvironment{enumerate}[1][\arabic{enumi}.]% Defaults to 1. 2. 3. ...
{%
    \bgroup\renewcommand\theenumi{#1}%
    \oldenumerate%
}%
{%
    \endoldenumerate\egroup%
}%
\begin{document}
First list with default enumeration
\begin{enumerate}
\item First item
\item Second item
\end{enumerate}
Second list with custom enumeration
\begin{enumerate}[(\emph{\roman{enumi}})]
\item First item
\item Second item
\end{enumerate}
Labels have an extra dot in the lists, but references \ref{a} and \ref{b} are printed correctly.
\end{document}

und dies ist die Ausgabe des obigen Codes:

Ausgabe des obigen MWE

Wie muss ich es neu definieren, enumerateum den zusätzlichen Punkt in den Listen zu vermeiden?

Antwort1

Anstatt das Rad neu zu erfinden, ist es viel einfacher, das enumitemPaket für solche Dinge zu verwenden. Für dieses spezielle Beispiel habe ich einen negativen Kern hinzugefügt, damit die Klammern mit der kursiven Zahl gut abgesetzt sind. Wie Kannappan Sampath anmerkt, können Sie das Format der Referenzen auch separat angeben.

\documentclass{article}
\usepackage{enumitem}
\begin{document}
Second list with custom enumeration
\begin{enumerate}[label=(\kern-.5pt\emph{\roman*}),ref=(\roman*)]
\item First item \label{a}
\item Second item \label{b}
\end{enumerate}
Labels have an extra dot in the lists, but references \ref{a} and \ref{b} are printed correctly.
\end{document}

Bildbeschreibung hier eingeben

Antwort2

Hier ist eine Lösung mit enumitem:

\documentclass{book}
\usepackage{enumitem}
%%% Set the default: number followed by a period
\setlist[enumerate,1]{label=\arabic*.}

\begin{document}
First list with default enumeration
\begin{enumerate}
\item First item
\item\label{a} Second item
\end{enumerate}
Second list with custom enumeration
\begin{enumerate}[label=(\emph{\roman*})]
\item First item
\item\label{b} Second item
\end{enumerate}
Labels have an extra dot in the lists, and references
\ref{a} and \ref{b} are printed correctly.
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen