easylist ist ein Paket (von Paul Isambert, verteilt auf CTAN unter der LPPL), in dem Sie tief verschachtelte Listen durch die *Anzahl der Markierungszeichen* am Anfang jeder Zeile ausdrücken. Der Verschachtelungsstandard itemize oder enumerate stoppt auf vier Ebenen, aber easylist hat keine Tiefenbeschränkung. Seine Stärke ist das knappe Schreiben von Listen mit einer Tiefe von 5 bis 6 Ebenen – ideal für juristische Dokumente und fein strukturierte Gliederungen.
Die Markierungsanzahl ist die Ebene
Eine normale verschachtelte Liste stapelt \begin{itemize} … \item … \end{itemize} auf jeder Ebene tiefer. easylist geht einen völlig anderen Weg. Innerhalb von \begin{easylist} … \end{easylist} ist die Anzahl der Markierungszeichen am Anfang einer Zeile *die Ebene dieses Elements. Eine Markierung bedeutet Ebene 1, zwei bedeutet Ebene 2, drei bedeutet Ebene 3 und so weiter – kein \item, keine verschachtelten Umgebungen.
Die Markierung ist ein einzelnes aktives Zeichen – sie hat nur innerhalb der easylist Umgebung eine besondere Bedeutung und nimmt außerhalb der Umgebung wieder ihr normales Selbst an. Die Standardmarkierung ist das Abschnittszeichen §, aber da die Eingabe umständlich ist, können Sie mit der Option \usepackage zu einem einfacheren Zeichen wechseln (siehe unten). Auf dieser Seite verwenden wir wie durchgehend angenommen # als Markierung. Um # zu erhalten, laden Sie das Paket als \usepackage[sharp]{easylist}.
Hier ist ein Minimalbeispiel mit # als Markierung. Eine Zeile mit einem # ist Ebene 1, ## ist Ebene 2, ### ist Ebene 3. Setzen Sie immer ein Leerzeichen direkt nach der Markierungsreihe – ohne dieses wird keine Zahl gedruckt. Jede Markierung beginnt auch automatisch eine neue Zeile, sodass das Zusammenführen von Elementen in einer Zeile zum gleichen Ergebnis führt.
\documentclass{article}
\usepackage[sharp]{easylist}
\begin{document}
\begin{easylist}
# First proposition.
## Interesting comment.
### A note on the comment.
### Another note.
#### By the way...
# Let's start something new.
\end{easylist}
\end{document}Bei dieser Verarbeitung werden die Elemente automatisch nach Tiefe nummeriert, mit Punkttrennzeichen: 1 / 1.1 / 1.1.1 / 1.1.2 / 1.1.2.1 / 2. Wenn Sie eine Ebene überspringen, zählt die übersprungene Ebene als 0 (z. B. wird ein Element der Ebene 3 direkt nach einem Element der Ebene 1 zu 1.0.1).
Auswahl der Markierung – warum [at] existiert
Sie wählen den Marker mit einer Paketoption aus. Mit none ist es §; [pilcrow] ergibt ¶, [sharp] ergibt #, [at] ergibt @ und [ampersand] ergibt &. Die Verwendung ist unabhängig von Ihrer Wahl identisch: Das ausgewählte Zeichen wird nur zwischen \begin{easylist} und \end{easylist} aktiv.
| Option | Markierung | |
|---|---|---|
(none) | § (Abschnittszeichen, Standard) | Standard |
pilcrow | ¶ (pilcrow) | \usepackage[pilcrow]{easylist} |
sharp | # (Zahlenzeichen) | \usepackage[sharp]{easylist} |
at | @ (at-Zeichen) | \usepackage[at]{easylist} |
ampersand | & (kaufmännisches Und) | \usepackage[ampersand]{easylist} |
Es lohnt sich zu fragen, warum [at] (@) überhaupt bereitgestellt wird. # ist das Parameterzeichen von LaTeX in Makrodefinitionen (#1, #2, …) und hat in tabular und anderswo eine besondere Bedeutung. Wenn Sie also # als Markierung auswählen, kommt es zu Konflikten innerhalb von Makrodefinitionen und Tabellen. Aktive Charaktere sind anfangs schwierig und benehmen sich innerhalb von Boxen schlecht. In solchen Situationen ist es am sichersten, zu einem weniger konfliktanfälligen Marker wie [at] (@) oder [ampersand] (&) zu wechseln.
Wenn Sie einen einfachen Marker mit Befehlen kombinieren müssen, die innerhalb der Umgebung verwendet werden, definieren Sie diese Befehle entweder außerhalb der easylist Umgebung oder verwenden Sie \Activate und \Deactivate (die den Marker aktiv/inaktiv machen) innerhalb der Liste. Standardmäßig werden zehn Zählerebenen erstellt; Um tiefer zu gehen, erhöhen Sie die Anzahl mit einer numerischen Option wie \usepackage[50]{easylist}.
Styling mit \ListProperties
Nummerierung, Markierungen, Einrückungen und der Rest des Layouts werden gemeinsam von \ListProperties(...) gesteuert. Sie schreiben key=value-Paare durch Kommas getrennt in die Klammern, und \ListProperties wirkt sich auf alle nachfolgenden Elemente und Listen aus. Viele Schlüssel haben eine nummerierte Form pro Ebene: Numbers gilt für jede Ebene, Numbers3 nur für Ebene 3 (im Allgemeinen key + Ebenennummer). Mit \NewList auf die Standardeinstellungen zurücksetzen.
| Schlüssel | Was es tut | |
|---|---|---|
Numbers / Numbersn | Zahlenstil. a=Arabisch (Standard), r/R=Klein-/Großroman, l/L=Klein-/Großbuchstaben, z=Zapf Dingbats | Stile pro Ebene sind zulässig |
Mark / FinalMark | Satzzeichen zwischen Zählern (Standardzeitraum). FinalMark ist die Markierung nach dem letzten Zähler | z.B. \ListProperties(Mark=.,FinalMark=) |
Style / Stylen | Schriftart der Zahl und des Textes. * zielt nur auf die Zahl ab, ** nur auf den Text | Pass \bfseries, \color{blue} usw. |
Hide / Hiden | Die ersten n Zähler ausblenden; ermöglicht das Erstellen nicht nummerierter Listen | Hide=10000 verbirgt alle Ebenen |
Start / Startn* | Zählerstartwert; Das *-Formular verknüpft es mit einem externen Zähler (z. B. \thesection). | \ListProperties(Start1*=\thesection) |
Progressive / Progressive* | Linker Rand wächst mit der Tiefe; Das *-Formular behält Ebene 1 am aktuellen Rand bei | \ListProperties(Progressive*=.5cm) |
Space / Space* | Vertikaler Abstand zwischen Elementen; Das *-Formular befindet sich zwischen Elementen derselben Ebene | Negative Werte komprimieren die Liste |
Beispielsweise sorgt \ListProperties(Numbers3=l, FinalMark=) dafür, dass Ebene 3 die Buchstabennummerierung a, b, c… verwendet und den abschließenden Punkt entfernt. Um ein Literalkomma oder eine schließende Klammer in einem Wert zu verwenden, schließen Sie es in geschweifte Klammern ein, wie in \ListProperties(FinalMark={)}). Andere Tasten ermöglichen eine Feinabstimmung: Hang (Text an der Zahl hängen lassen), Align (Elemente auf gleicher Höhe ausrichten), Margin/Indent (linker Rand und Absatzeinzug), FinalSpace (Lücke zwischen Zahl und Text, Standard .3em) und CtrCom (die ganze Zahl in einen Befehl wie \fbox einschließen).
Ein tief verschachteltes Beispiel
Ohne Tiefenbeschränkung können Sie fünfstufige und tiefere Strukturen wie Vertragsklauseln direkt schreiben. Im folgenden Beispiel werden die Ziffern der Stufe 1 fett, die römischen Ziffern der Stufe 2 und die Kleinbuchstaben der Stufe 3 dargestellt, wobei die Einrückung schrittweise um die Tiefe erfolgt. Beachten Sie, dass Sie durch das Hinzufügen eines einzelnen Markierungszeichens eine Ebene tiefer gelangen.
\documentclass{article}
\usepackage[sharp]{easylist}
\begin{document}
\ListProperties(Style1*=\bfseries, Numbers2=R, Numbers3=l,
Progressive=1.5em, Space*=2pt)
\begin{easylist}
# Agreement.
## Definitions.
### Party means a signatory hereto.
### Effective Date means the date of last signature.
## Term and termination.
### This Agreement begins on the Effective Date.
#### Either party may terminate on 30 days notice.
##### Notice must be given in writing.
# Miscellaneous.
\end{easylist}
\end{document}In diesem Beispiel sind die Zahlen der Ebene 1 1 und 2 (fett, arabisch), die Zahlen der Ebene 2 sind lateinische Großbuchstaben und die Zahlen der Ebene 3 sind Kleinbuchstaben, zusammengesetzt aus 1.I.a, 1.II.a. Die Ebenen 4 und 5 werden weiter eingerückt und durch einfaches Schreiben von #### und ##### angezeigt. Das Schreiben derselben Struktur mit verschachteltem enumerate würde auf vier Ebenen blockieren und erfordert eine zusätzliche Einrichtung (z. B. mit enumitem), um tiefer zu gehen – mit easylist fügen Sie einfach eine Markierung hinzu.
Wann Sie danach greifen sollten
easylist ist eine Nische, aber eine willkommene Alternative, wenn Sie die Vier-Ebenen-Grenze von Standardlisten erreichen. Es glänzt, wenn Sie Elemente auflisten möchten, die sowohl nummeriert als auch detailliert sind – Rechtsdokumente, Begriffe, Spezifikationen und Gliederungen mit vielen Ebenen. Für gewöhnliche flache Listen, stark gestaltete Ebenen oder Inline-Listen sind itemize/enumerate oder enumitem natürlicher. Da die #-Markierung mit Makros und Tabellen kollidieren kann, ist sie in einer eigenständigen Liste auf Prosaebene am sichersten.