2009-12-20 19 views
24

¿Existe alguna manera de aumentar el nivel máximo de anidamiento de listas (enumerar, etc.) en Latex? Necesito cinco niveles para una clase, y Google no me encuentra nada ...Nivel máximo de anidamiento de listas en Latex

+4

Esta cuestión parece ser fuera de tema, ya que se trata de látex, que pertenece en el subsitio de Tex sE – puk

Respuesta

5

tiene que copiar las definiciones de \enumerate y \itemize de archivo latex.ltx y cambiar el código de

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

a

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

y también se tendrá que definir contadores enumv, secuencia de control \labelitemv , y un montón de otras cosas para soportar profundidad 5.

N.B. Si quieres hacer esto fuera un archivo .sty, tendrá que rodear sus nuevas definiciones de

\makeatletter 
.... 
\makeatother 

En general, es una buena cantidad de trabajo de detalle, pero si usted está acostumbrado a LaTeX piratería, es bastante sencillo. Si la tarea parece demasiado, y no tiene tiempo para aprender, puede intentar publicar una recompensa aquí o en cualquier otro lugar :-)

2

IIRC, la limitación está en el número de contadores de enumeración proporcionados por defecto. Nunca tuve que hacer esto, pero es posible que desee consultar el LaTeX Wikibook para obtener algunas sugerencias. La última vez que tuve que modificar listas serias, terminé recurriendo al uso de macros de TeX basadas en algunas cosas en TeX for the Impatient.

+0

yo no lo creo --- se ha añadido un contador con \ newcounter y una etiqueta con \ newcommand {\ labelenumv} y todavía obtengo "Demasiado profundamente anidado". Tal vez me estoy perdiendo algo? – c4757p

+0

Hice un poco más de profundización (en 'ltlists.dtx') y parece que los límites son bastante difíciles si usas las listas proporcionadas por LaTeX. '\ list' te limita a seis niveles donde' \ enumerate' y '\ itemize' te limitan a cuatro niveles. –

+0

Puede definir su propia macro de lista basada en '\ list' y ampliar el límite o escribir su propio entorno desde cero. No parece que los entornos de lista estándar de LaTeX te permitan anidarlos mucho más profundamente. –

3

También podría simplemente usar un itemize-environment dentro de un enumerate-environment.

13

Puede usar el paquete enumitem. Después de lo que sólo hay que poner el nivel de profundidad que desea:

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

Y puede tener hasta 9 niveles anidados para sus listas, fácil ;-)

Esta función está disponible en el paquete desde 3.0 (Ubuntu me instaló el 2.2 por ejemplo). En caso de que tenga una versión anterior simplemente reemplácela por: http://ctan.mackichan.com/macros/latex/contrib/enumitem/enumitem.sty

Espero que ayude!

+1

No funciona para mí. Copié el reciente enumitem.sty y puedo llamar a \ setlistdepth {9} - pero sigo teniendo el error "Demasiado profundamente anidado". – Alex

+1

Encontró una solución y la publicó a continuación. – Alex

28

Solución utilizando el paquete enumitem

  1. Si no tiene la versión 3 de la enumitem.sty instalado, download enumitem.sty manually y colocarlo en la carpeta de su proyecto.
  2. Para listas itemize, añada lo siguiente al preámbulo de su documento:
 
\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} 

Para los otros tipos de listas que esto tiene que ser adaptado.

ayuda Solución de problemas

  • si obtiene "! Indefinido secuencia de control. \ Setlistdepth", la versión de que el látex enumitem.sty utiliza es más viejo que la versión 3.
  • si continúa recibiendo el error "demasiado profundamente anidado", entonces el comando renewlist falta para el tipo de lista se utiliza
  • si obtiene "enumitem paquete de error: Etiqueta no definida.", Entonces la etiqueta para una de las niveles no se definied con el comando \setlist[itemize,$LEVEL] ...
Cuestiones relacionadas