Quiero agregar líneas personalizadas para mis apéndices, producidos en software externo, al índice. Además, debería ser posible especificar el número de páginas de cualquier apéndice en particular. ¿Cómo puedo conseguir esto?
Como MWE haré mi mejor esfuerzo.
\documentclass{report}
\newcommand{\append}[2]{%
\stepcounter{chapter}%
\newpage\thispagestyle{empty}\phantom{-}%
\addcontentsline{toc}{chapter}{\protect\numberline{\Alph{chapter}}{#1}}%
\newpage\addtocounter{page}{-1}\addtocounter{page}{#2}%
}
\begin{document}
\tableofcontents
\chapter{Chapter 1}
Bla bla
\chapter{Chapter 2}
Bla bla bla
\appendix
\chapter{Appendix 1}
Blah
\append{Extra 1}{2}
\append{Extra 2}{1}
\end{document}
TOC generado:
Lamentablemente, para funcionar, es necesario insertar una página en blanco para cada apéndice.
¿Cómo puedo deshacerme de esas páginas en blanco adicionales y mantener otras características del \input
comando?
Respuesta1
Como no desea que se incluya ninguna página en blanco, porque va a trazar algunos dibujos CAD de gran formato por separado, miré cómo \cftaddtitleline{toc}{chapter}{<text>}{<page>}
se define en eldocumentacióndel tocloft
paquete, página 49:
\newcommand{\cftaddtitleline}[4]{
\addtocontents{#1}{%
\protect\contentsline{#2}{#3}{#4}
}
}
Por lo tanto, sólo tienes que usar \addtocontents
en lugar de \addcontentsline
. Para que se muestre igual que las otras chapter
entradas, debe definir el título como \protect\numberline{\Alph{chapter}}#1}
, lo que producirá esta entrada en su *.toc
archivo:
\contentsline {chapter}{\numberline {2}Chapter 2}{3} %automatically done with \chapter{}
\contentsline {chapter}{\numberline {A}Appendix 1}{11} %added
Sin embargo, no puede usarlo \thepage
e incrementarlo en la siguiente línea, porque todas las secciones obtendrán el mismo número:
\addtocontents{toc}{\protect\contentsline{chapter}{\protect\numberline{\Alph{chapter}}#1}{\thecnt}}
\addtocounter{page}{#2}
Agregué un contador que se configura \thepage
antes de llamar \append
y se modifica para no afectar el número del capítulo anterior (Apéndice 1).
\documentclass{report}
\newcounter{cnt}
\newcommand{\append}[2]{%
\stepcounter{chapter}
\addtocontents{toc}{\contentsline{chapter}{\protect\numberline{\Alph{chapter}}#1}{\thecnt}}
\addtocounter{cnt}{#2}
}
\begin{document}
\tableofcontents
\chapter{Chapter 1}
Bla bla
\chapter{Chapter 2}
Bla bla bla
\appendix
\chapter{Appendix 1}
Blah
\setcounter{cnt}{\thepage}
\stepcounter{cnt}
\append{Extra 1}{7}
\append{Extra 2}{8}
% In case you want to add other 'normal' appendices
%\clearpage
%\setcounter{page}{\thecnt}
%\chapter{Appendix \thechapter}
\end{document}
Respuesta2
Después de dormir un poco, se me ocurrió una alternativa y funcionó como deseaba. Se basa en cierta medida en la respuesta de U. Martínez-Corral.
Historia de fondo: quería crear un comando que agregara un elemento a la tabla de contenido y reservara una cantidad específica de páginas.
Aquí está el código.
\documentclass{report}
\usepackage{afterpage}
\newcounter{count}
\newcounter{add}\setcounter{add}{1}
\newcommand{\append}[2]{%
\stepcounter{chapter}%
\setcounter{count}{\thepage}\addtocounter{count}{\theadd}%
\addtocontents{toc}{\protect\contentsline{chapter}{\protect\numberline{\thechapter}#1}{\thecount}}%
\addtocounter{add}{#2}%
\afterpage{\addtocounter{page}{-1}\addtocounter{page}{\theadd}\setcounter{add}{1}}%
\ignorespaces%
}
\begin{document}
\tableofcontents
\append{Extra 1}{3}
\append{Extra 2}{1}
\chapter{Chapter 1}
\chapter{Chapter 2}
\appendix
\chapter{Appendix A}
Some text
\append{Extra B}{2}
\append{Extra C}{1}
Text out of nowhere!
\append{Extra D}{3}
\chapter{Appendix F}
\append{Extra G}{1}
\append{Extra H}{1}
\end{document}
Unas pocas palabras para explicar lo que está pasando.
\setcounter{count}...
La línea calcula la página inicial del capítulo fantasma, teniendo en cuenta el número de páginas ya reservadas.
\addtocontents...
agrega una línea personalizada a ToC, la línea tiene el mismo formato que cualquier otro capítulo.
\addtocounter{add}{#2}
incrementa el número total de páginas reservadas. Este número se utilizará en la página siguiente o en la siguiente \append
.
\afterpage...
Se invoca cuando comienza una nueva página. Agrega el número de páginas reservadas al page
contador y restablece el número a 1.
\ignorespaces
se agrega para que el comando pueda usarse en cualquier lugar y no produzca espacios en blanco adicionales; consulte "¡Texto surgido de la nada!" en el ejemplo.
Gracias por tu ayuda :)