2009-12-20 5 views
24

Gibt es eine Möglichkeit, die maximale Verschachtelungsebene von Listen (Aufzählung usw.) in Latex zu erhöhen? Ich brauche fünf Stufen für eine Klasse, und Google findet mich nichts ...Maximale Verschachtelungsebene von Listen in Latex

+4

Diese Frage scheint zu sein Wegthema definiertem, weil es über LaTeX ist, die – puk

Antwort

5

Sie müssen die Definitionen von \enumerate und \itemize aus Datei latex.ltx und ändern Sie den Code aus

\ifnum \@itemdepth >\[email protected]@\@toodeep\else 

zu

\ifnum \@itemdepth >4\@toodeep\else 

und Sie werden auch Zähler enumv, Steuersequenz \labelitemv definieren müssen kopieren und ein Bündel anderer Sachen, um die Tiefe 5 zu unterstützen.

N.B. Wenn Sie diese außerhalb einer .sty Datei tun möchten, müssen Sie Ihre neue Definitionen umgeben von

\makeatletter 
.... 
\makeatother 

in allem ist es eine ganze Menge Detailarbeit, aber wenn Sie zu hacken LaTeX gewöhnt sind, ist es ziemliech direkt. Wenn die Aufgabe zu viel scheint und Sie keine Zeit haben zu lernen, könnten Sie versuchen, hier oder anderswo ein Kopfgeld zu posten :-)

2

IIRC, die Beschränkung ist in der Anzahl der standardmäßig bereitgestellten Aufzählungszähler. Ich musste das nie tun, aber Sie können die LaTeX Wikibook für einige Hinweise überprüfen. Das letzte Mal, als ich zu ernsthaften Tweak-Listen musste, fiel ich damit zurück, gerade TeX-Makros zu verwenden, die auf einigen Sachen in TeX for the Impatient basierten.

+0

auf der Tex-Subsite von SE gehört ich glaube nicht --- einen Zähler Hinzugefügt mit \ newcounter und ein Label mit \ newcommand {\ labelenumv} und ich bekomme immer noch "Zu tief verschachtelt". Vielleicht vermisse ich etwas? – c4757p

+0

Ich habe etwas mehr (in 'ltlists.dtx') geforscht und es sieht so aus, als ob die Grenzen ziemlich hart codiert sind, wenn Sie die von LaTeX bereitgestellten Listen verwenden. '\ list' beschränkt Sie auf sechs Ebenen, wobei' \ enumerate' und '\ itemize' Sie auf vier Ebenen begrenzen. –

+0

Sie könnten Ihr eigenes Listenmakro basierend auf '\ list' definieren und das Limit erweitern oder Ihre eigene Umgebung von Grund auf neu schreiben. Es sieht nicht so aus, als ob die Standard-LaTeX-Listenumgebungen Sie viel tiefer verschachteln können. –

3

Sie könnten auch einfach eine itemize-environment innerhalb einer enumerate-environment verwenden.

13

Sie können das enumitem-Paket verwenden. Nach dem, was Sie gerade die Tiefe Ebene setzen müssen Sie:

\usepackage{enumitem} 
... 
\setlistdepth{9} 

Und Sie können für Ihre Listen, einfach ;-)

Diese Funktion ist in dem Paket seit 3.0 bis zu 9 verschachtelten Ebenen haben (Ubuntu hat mir zum Beispiel die 2.2 installiert). Wenn Sie eine alte Version haben, ersetzen Sie sie einfach durch: http://ctan.mackichan.com/macros/latex/contrib/enumitem/enumitem.sty

Hoffe, dass hilft!

+1

Funktioniert nicht für mich. Ich habe die aktuelle enumitem.sty kopiert und kann \ setlistdepth {9} aufrufen - aber ich bekomme immer noch den "zu tief verschachtelten" Fehler. – Alex

+1

Eine Lösung gefunden und unten veröffentlicht. – Alex

28

Lösung enumitem Paket mit

  1. Wenn Sie die Version 3 des enumitem.sty nicht installiert haben, dann download enumitem.sty manually und legen Sie sie in den Ordner Ihres Projekts.
  2. Für itemize Listen, fügen Sie den folgenden auf die Präambel Ihres Dokuments:
 
\usepackage{enumitem} 
\setlistdepth{9} 

\setlist[itemize,1]{label=$\bullet$} 
\setlist[itemize,2]{label=$\bullet$} 
\setlist[itemize,3]{label=$\bullet$} 
\setlist[itemize,4]{label=$\bullet$} 
\setlist[itemize,5]{label=$\bullet$} 
\setlist[itemize,6]{label=$\bullet$} 
\setlist[itemize,7]{label=$\bullet$} 
\setlist[itemize,8]{label=$\bullet$} 
\setlist[itemize,9]{label=$\bullet$} 

\renewlist{itemize}{itemize}{9} 

Für die anderen Listentypen diese angepasst werden muss.

Hilfe zur Fehlerbehebung

  • wenn Sie bekommen! "Nicht definierte Kontrollsequenz. \ Setlistdepth", die Version von enumitem.sty, die LaTeX verwendet, ist älter als 3-Version.
  • Wenn Sie immer noch den Fehler "Zu tief verschachtelt" erhalten, dann fehlt der Befehl renewlist für den Listentyp, den Sie verwenden
  • , wenn Sie "Package enumitem Fehler: Undefined Label.", Dann die Bezeichnung für eine der Ebene nicht mit dem \setlist[itemize,$LEVEL] ... Befehl
Verwandte Themen