PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Referenzierung auf makelabel



Ltd83
26-02-2009, 12:17
Hi!

Ich hab ein kleines Problem, dass sich aber vielleicht irgendwie lösen lässt: ich möchte mit dem enumerate-paket die Label bzw. die Ausgabe durch ref so verändern, dass ich sie wie unten ausgebe. (Analog auch mit eigenen Listen und dem veränderten Makelabel). Jetzt wäre es super, wenn ich durch den Ref-Befehl direkt auf das Label verweisen könnte, also:



\documentclass{scrartcl}

\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{enumerate}

\newenvironment{aliste}
{%
\begin{list}{G}
{\renewcommand{\makelabel}[1]{##1}}
}
{%
\end{list}
}

\begin{document}
Liste durch enumerate:
\begin{enumerate}[$M_1$]
\item erstes ding\label{L1}
\item zweites ding\label{L2}
\end{enumerate}

eigene liste:
\begin{aliste}
\item[bla] Testeintrag\label{L3}
\item[zweites bla] nochn Testeintrag\label{L4}
\end{aliste}

Hier sollte jetzt "`$M_1$"', "`$M_2$"', "`bla"' und "`zweites bla"' stehen:\\
\ref{L1}\\
\ref{L2}\\
\ref{L3}\\
\ref{L4}
\end{document}

Gibts dafür irgend eine Lösung?

cookie170
26-02-2009, 16:57
Ich bin mir nicht sicher, Dich richtig verstanden zu haben: Du willst Verweise in einer speziellen Form haben, ja?

In einer meiner Bauteilesammlungen habe ich das mal so zusammengefasst:

Bei Aufzählungen verwendet LaTeX für die vier möglichen Ebenen folgende vier Zähler: enumi, enumii, enumiii, enumiv

Die sind im Grunde uninteressant, denn man will ja eine Zählung von 1-10 ohne Lücken und ähnliches. Zur Anpassung der Auflistungen an fachliche Gepflogenheiten muß man die Darstellung der Aufzählung anpassen.

Zunächst läßt sich die Nummerierung in der Liste ändern, das geht entweder mit Paketen wie enumerate oder paralist oder per Hand. Die Pakete geben ein zusätzliches, optionales Argument.

Per Hand geht's aber auch für das gesamte Dokument. Dazu ändert man mit dem üblichen


\renewcommand{\labelenumi}{\alph{enumi}}
\label{enu:dingens}


die Nummerierungsweise ab. Jede Klasse verfügt über eine Definition von
\labelenumXX

Allerdings muss man gleichzeitig auch die Art des Verweises ändern, denn sonst führt ein Verweis auf
enu:dingens zu einer arabischen Zahl und nicht zu beispielsweise einem Buchstaben.
\ref greift sich jedoch einfach
\theenumXX und stellt ihm ab der zweiten Ebene den Inhalt von
\p@enumi voran.

Daher muss man, will man auf die geänderte Nummerierung verweisen, die Darstellung von \theenumXX ändern. Leider benutzt \labelenumXX dieses Makro ebenfalls. Darüber hinaus werden beide auch in der jeweiligen Klasse vordefiniert, wie auch die das »Präfix« p@enumX, auf das bei einem Verweis zurückgegriffen wird.

Daher muss man alles neu definieren: \theenumXX, \labelenumXX und \p@enumi bzw. \p@enumii . . . Das ganze sieht dann so aus:




\renewcommand{\p@enumii}{\theenumi.\,}
\renewcommand{\p@enumiii}{\theenumi.\,\theenumii\, }
\renewcommand{\p@enumiv}{\theenumi.\,\theenumii\,\ theenumiii\,}
\renewcommand{\theenumiii}{\alph{enumiii}\alph{enu miii})}
\renewcommand{\theenumiv}{(\arabic{enumiv})}
\renewcommand{\theenumii}{\alph{enumii})}
\renewcommand{\labelenumiii}{\theenumiii}
\renewcommand{\labelenumiv}{\theenumiv}
\renewcommand{\labelenumii}{\alph{enumii})}

Ich habe mir hier auf eine Komascript-Klasse bezogen. Viel Spaß beim Basteln,

Gruß,
Alexander