PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Makro in paralist



kitkat
02-06-2012, 11:47
Hallo,

mit dem package paralist kann die Listennummerierung optional angegeben werden. Also bei
\begin{enumerate}[(a)] ...
wird
(a)
(b)
(c) ... gesetzt.

Jedoch kann hier offenbar kein Makro verwendet werden. Im Beispiel wird dann
(a)
(a)
(a) gesetzt

weis hier jemand Abhilfe?




\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{paralist} % erweitert enumerate um eigene Symbole

\newcommand{\absfmt}{(a)}

\begin{document}

\begin{enumerate}[§1]
\item Erster Punkt
\begin{enumerate}[\absfmt]
\item bla
\item bla bla
\item bla bla bla
\end{enumerate}
\item Zweiter Punkt
\end{enumerate}

\end{document}

mechanicus
02-06-2012, 13:32
Hi,

abgesehen davon, dass ich zu enumitem rate, musst du sicherstellen, dass das Makro vor der Übergabe expandiert wird:


\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{paralist} % erweitert enumerate um eigene Symbole

\newcommand{\absfmt}{(a)}

\begin{document}

\begin{enumerate}[§1]
\item Erster Punkt
\begingroup
\edef\x{\endgroup\noexpand\begin{enumerate}[\absfmt]}\x
\item bla
\item bla bla
\item bla bla bla
\end{enumerate}
\item Zweiter Punkt
\end{enumerate}

\end{document}

Marco

kitkat
02-06-2012, 14:22
Hallo,

o.k. vielen Dank.

mit enumitem funktioniert auch das Makro ohne dass vorher explizit expandiert wird.



\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{enumitem}

\newcommand{\absfmt}{(\roman*)}

\begin{document}

\begin{enumerate}[label=§\arabic*]
\item Erster Punkt
\begin{enumerate}[label=\absfmt]
\item bla
\item bla bla
\item bla bla bla
\end{enumerate}
\item Zweiter Punkt
\begin{enumerate}[label=\absfmt]
\item a
\item b
\end{enumerate}
\end{enumerate}

\end{document}


mau
kitkat

mechanicus
02-06-2012, 14:51
mit enumitem funktioniert auch das Makro ohne dass vorher explizit expandiert wird.

Es hat niemand das Gegenteil behauptet.

Marco

sommerfee
02-06-2012, 17:08
musst du sicherstellen, dass das Makro vor der Übergabe expandiert wird:

Ich halte das für einen Bug in paralist, sollte man IMHO dem Autor melden.

mechanicus
02-06-2012, 18:27
Ich halte das für einen Bug in paralist, sollte man IMHO dem Autor melden.

Dann muss aber mehr geändert werden:


\makeatletter
\def\@enumlabel@#1[#2]{%
\@plmylabeltrue
\@tempcnta0
\pl@lab{}%
\let\pl@the\pl@qmark
\expandafter \expandafter \expandafter\pl@loop\@gobble#2\@@@
\ifnum\@tempcnta=1\else
\PackageWarning{paralist}{Incorrect label; no or multiple
counters.\MessageBreak The label is: \@gobble#2}%
\fi
\expandafter\edef\csname label\@enumctr\endcsname{\the\pl@lab}%
\expandafter\let\csname the\@enumctr\endcsname\pl@the
#1}
\makeatother
Das wäre die richtige Definition.

Wird paralist überhaupt noch gepflegt?

Marco

sommerfee
02-06-2012, 21:17
Wird paralist überhaupt noch gepflegt?

Laut http://ctan.org/author/id/schandl ja, was aber nicht viel sagen muß...