Quero adicionar linhas personalizadas para meus apêndices, produzidos em software externo, ao índice. Além disso, deverá ser possível especificar o número de páginas de qualquer apêndice específico. Como posso conseguir isso?
Como MWE farei o meu melhor.
\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}
Sumário gerado:
Infelizmente, para funcionar, é necessário inserir uma página em branco para cada apêndice.
Como posso me livrar dessas páginas extras em branco, mantendo outras características do \input
comando?
Responder1
Como você não deseja que nenhuma página em branco seja incluída, porque você irá plotar alguns desenhos cad de grande formato separadamente, observei como \cftaddtitleline{toc}{chapter}{<text>}{<page>}
é definido nodocumentaçãodo tocloft
pacote, página 49:
\newcommand{\cftaddtitleline}[4]{
\addtocontents{#1}{%
\protect\contentsline{#2}{#3}{#4}
}
}
Assim, você só precisa usar \addtocontents
em vez de \addcontentsline
. Para que seja exibido da mesma forma que as outras chapter
entradas, você deve definir o título como \protect\numberline{\Alph{chapter}}#1}
, o que produzirá esta entrada em seu *.toc
arquivo:
\contentsline {chapter}{\numberline {2}Chapter 2}{3} %automatically done with \chapter{}
\contentsline {chapter}{\numberline {A}Appendix 1}{11} %added
Porém, você não pode usar \thepage
e incrementar na linha a seguir, pois todas as seções receberão o mesmo número:
\addtocontents{toc}{\protect\contentsline{chapter}{\protect\numberline{\Alph{chapter}}#1}{\thecnt}}
\addtocounter{page}{#2}
Eu adicionei um contador que é definido \thepage
antes de chamar \append
e foi modificado para não afetar o número do 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}
Responder2
Depois de dormir um pouco consegui encontrar uma alternativa, trabalhando conforme desejado. É um pouco baseado na resposta de U.Martinez-Corral.
História: Eu queria criar um comando que adicionasse um item ao Índice e reservasse uma quantidade especificada de páginas.
Aqui está o 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}
Algumas palavras para explicar o que está acontecendo.
\setcounter{count}...
linha calcula a página inicial do capítulo fantasma, levando em consideração o número de páginas já reservadas.
\addtocontents...
adiciona uma linha personalizada ao ToC, a linha é formatada exatamente como qualquer outro capítulo.
\addtocounter{add}{#2}
aumenta o número total de páginas reservadas. Este número será usado na próxima página ou na próxima página \append
.
\afterpage...
é invocado quando uma nova página começa. Adiciona o número de páginas reservadas ao page
contador e redefine o número para 1.
\ignorespaces
é adicionado para que o comando possa ser usado em qualquer lugar e não produza espaços em branco adicionais, consulte "Texto do nada!" no exemplo.
Obrigado pela ajuda :)