\tableofcontents, \listoffigures y \listoftables reúnen información de títulos y pies para montar el índice, la lista de figuras y la lista de tablas. Esta página explica cómo funciona (archivos auxiliares y dos pasadas), cómo controlar la profundidad, añadir a mano un título con estrella y dar forma a sangrías, fuentes y líderes punteados con tocloft. Los títulos en sí pertenecen a “Estructura, títulos e índice”; aquí nos centramos en generar estas listas y personalizarlas.
Tres listas automáticas
Un índice se produce simplemente colocando \tableofcontents. Del mismo modo, \listoffigures crea una lista de figuras a partir de las leyendas figure y \listoftables una lista de tablas a partir de las leyendas table. Normalmente se colocan juntas en la materia preliminar, justo después del título.
Las tres funcionan igual. Al procesar el documento, LaTeX escribe número, título y página de cada título o leyenda en un archivo auxiliar: .toc para el índice, .lof para figuras y .lot para tablas, todos con el nombre del archivo raíz. En la siguiente pasada lee ese auxiliar para componer la lista.
Esto tiene una consecuencia importante. En la primera pasada el archivo auxiliar aún no existe o está obsoleto, así que la lista sale vacía o incorrecta. Para un resultado correcto debes compilar al menos dos veces; el manual dice que una pasada almacena la información y la segunda la recupera. Si cambian los números de página, pueden hacer falta más pasadas; latexmk las repite automáticamente.
Los títulos proceden de macros dependientes del idioma: \contentsname (por defecto “Contents”) para el índice, \listfigurename para figuras y \listtablename para tablas, todas cambiables con \renewcommand. En book y report se componen como capítulos sin número (\chapter* internamente), y en article como secciones sin número. Al no tener número, las listas en sí no aparecen por defecto en el índice.
\documentclass{report}
\begin{document}
\tableofcontents % .toc を使う(2 回処理が必要)
\listoffigures % .lof
\listoftables % .lot
\chapter{序論}
\end{document}Profundidad del índice — tocdepth
Qué niveles de título entran en el índice lo decide el contador tocdepth. Su valor es el número de nivel del título (\section es 1, \subsection es 2, \chapter en book/report es 0, …) y nombra el nivel más profundo que se listará. Así, \setcounter{tocdepth}{1} se queda en secciones y omite subsecciones; \setcounter{tocdepth}{2} llega a subsecciones. Los valores predeterminados son 3 en article y 2 en book/report.
No lo confundas con secnumdepth, que gobierna la numeración. secnumdepth fija hasta qué profundidad los títulos se numeran; tocdepth fija hasta qué profundidad se incluyen en el índice. Ambos son independientes. Por ejemplo, puedes numerar hasta subsecciones pero listar solo hasta secciones. Las listas de figuras y tablas tienen un único nivel (figura, tabla), así que tocdepth no las afecta.
Añadir entradas a mano — addcontentsline y addtocontents
Un título con estrella (\section* o \chapter*) no tiene número ni referencia de página, así que no entra por sí solo en el índice. Si quieres que aparezcan “Introducción”, “Agradecimientos”, bibliografía o índice analítico, escribe una línea manual con \addcontentsline{ext}{unit}{text}. Los tres argumentos son obligatorios.
ext— la extensión del archivo auxiliar de destino:tocpara el índice,lofpara figuras,lotpara tablas.unit— el tipo de entrada. Entocpuede serpart,chapter,section,subsection, etc. (se usan su formato y sangría); enlofesfigure; enlotestable.text— la cadena que se listará. Anteponer\protect\numberline{}la alinea con entradas numeradas; cualquier comando frágil necesita\protect.
La ubicación importa: \addcontentsline registra el número de página vigente cuando el procesamiento llega a esa línea, así que colócalo justo después del comando de título. El patrón habitual para un título con estrella es el siguiente. LaTeX aporta automáticamente el número de página, por lo que nunca se escribe en text.
\section*{はじめに}
\addcontentsline{toc}{section}{はじめに}
\chapter*{謝辞}
\addcontentsline{toc}{chapter}{謝辞}Su compañero \addtocontents{ext}{text} inyecta material —espaciado o comandos de formato— en el archivo auxiliar en lugar de una línea. Toma dos argumentos: la extensión de destino ext y el contenido text que se escribirá. Para añadir espacio vertical en la lista de figuras, por ejemplo, se escribe lo siguiente. Como el .lof se lee de nuevo en la siguiente pasada, un comando frágil como \vspace necesita \protect. En resumen: las líneas con número de página van con \addcontentsline; el espaciado y la decoración van con \addtocontents.
\addtocontents{lof}{\protect\vspace{2ex}} % 図目次に縦の空きを差し込む
\addtocontents{toc}{\protect\setcounter{tocdepth}{1}} % ここ以降の目次の深さを変えるDar forma a las listas con tocloft
Cuando quieres controlar con detalle el aspecto de las listas estándar, el paquete habitual es tocloft (de Peter Wilson). Cárgalo con \usepackage{tocloft} y ajusta por separado sangría, ancho del número, fuente y líder punteado de cada nivel mediante \renewcommand y comandos dedicados. Los nombres de comandos son sistemáticos: combinan un prefijo del nivel de lista (toc = \part, chap = \chapter, sec = \section, subsec = \subsection, …, fig para figuras, tab para tablas) con una función.
Para sangría y ancho del número, \cftsetindents{entry}{indent}{numwidth} ajusta ambos de una vez: el primer argumento es el destino (section, …), indent es la sangría desde el margen izquierdo y numwidth el ancho reservado para el número. También puedes ajustar directamente los registros de longitud \cftsecindent y \cftsecnumwidth con \setlength. Si números más anchos empiezan a chocar con el título, aumenta numwidth.
Las fuentes se controlan por separado para la entrada y su número de página: \renewcommand{\cftsecfont}{...} fija la fuente del título de una entrada de sección, y \cftsecpagefont la de su número de página (para capítulos, \cftchapfont y \cftchappagefont). La fuente del encabezado de la lista se cambia con comandos como \cftloftitlefont para la lista de figuras.
El líder punteado —la fila de puntos entre el título y el número de página— lo controla \cftsecleader. La densidad de puntos es la longitud \cftdotsep (4.5 por defecto): valores menores acercan los puntos, valores mayores los separan. Para eliminar el líder por completo, usa \renewcommand{\cftsecleader}{\cftdotfill{\cftnodots}} (\cftnodots es un valor lo bastante grande para significar “no imprimir puntos”). El carácter del punto se define con \cftdot (un punto por defecto).
| Comando | Qué controla | |
|---|---|---|
\cftsetindents | Ajusta juntos la sangría y el ancho del número de un nivel | {entry}{indent}{numwidth} |
\cftsecfont | Fuente del título de una entrada de sección | Redefinir con \renewcommand |
\cftsecpagefont | Fuente del número de página de una entrada de sección | Redefinir con \renewcommand |
\cftsecleader | Líder punteado de una entrada de sección | p. ej. \cftdotfill{\cftdotsep} |
\cftdotsep | Espaciado de puntos del líder (4.5 por defecto; menor = más denso) | Una longitud (en mu) |
\cftnodots | Valor lo bastante grande para no imprimir puntos | Se usa para quitar un líder |
Este ejemplo pone en negrita los títulos de sección y aprieta un poco el líder punteado. Va en el preámbulo.
\usepackage{tocloft}
\renewcommand{\cftsecfont}{\bfseries} % 節の題を太字に
\renewcommand{\cftsecpagefont}{\bfseries} % ページ番号も太字に
\renewcommand{\cftsecleader}{\bfseries\cftdotfill{\cftdotsep}} % 太字の点線リーダー
\renewcommand{\cftdotsep}{2} % 点をやや密に
\cftsetindents{section}{1.5em}{2.5em} % 字下げと番号幅Incluir las listas en el índice
Como se indicó, los encabezados de \listoffigures, \listoftables (y también bibliografía e índice analítico) no están numerados, así que no aparecen por defecto en el índice. Hay dos formas de hacer que aparezcan. La rápida es colocar una línea \addcontentsline justo antes de cada comando de lista. Ten en cuenta que tocloft en sí no proporciona esta inserción automática.
\cleardoublepage
\addcontentsline{toc}{chapter}{\listfigurename} % 図目次を目次に載せる
\listoffigures
\cleardoublepage
\addcontentsline{toc}{chapter}{\listtablename} % 表目次を目次に載せる
\listoftablesLa otra forma es cargar el paquete tocbibind (también de Peter Wilson). Con \usepackage{tocbibind} añade automáticamente al índice los elementos existentes entre el propio índice, la lista de figuras, la lista de tablas, la bibliografía y el índice analítico. Puedes desactivar cada uno con opciones: nottoc (excluir el índice mismo), notlot (lista de tablas), notlof (lista de figuras), notbib (bibliografía) y notindex (índice analítico). Es más seguro que colocar \addcontentsline a mano, especialmente para una bibliografía o índice de varias páginas, y elimina esas líneas manuales.
Control más fino — titletoc y etoc
Cuando necesitas ir más allá de tocloft, destacan dos opciones. titletoc (de Javier Bezos, parte del paquete junto con titlesec) define el formato de cada línea del índice por nivel, incluido el material y los separadores antes y después de la línea. Ofrece hooks potentes para dar forma a las líneas de manera independiente y encaja bien con documentos cuyos títulos se estilizan con titlesec.
etoc (de Jean-François Burnol) va aún más lejos y permite rediseñar por completo el índice mediante un marco de “estilos de línea” y “estilos globales”. Su punto fuerte es \localtableofcontents, que compone un índice parcial para cada capítulo a partir del mismo .toc, e incluso puede renderizar el índice como árbol o mapa mental. Un buen orden es empezar con tocloft y pasar a titletoc o etoc solo cuando quieras rehacer la estructura misma.