Como adicionar linhas personalizadas com número de página especificado ao índice?

Como adicionar linhas personalizadas com número de página especificado ao índice?

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:

MWE

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 \inputcomando?

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 tocloftpacote, página 49:

\newcommand{\cftaddtitleline}[4]{
 \addtocontents{#1}{%
  \protect\contentsline{#2}{#3}{#4}
 }
}

Assim, você só precisa usar \addtocontentsem vez de \addcontentsline. Para que seja exibido da mesma forma que as outras chapterentradas, você deve definir o título como \protect\numberline{\Alph{chapter}}#1}, o que produzirá esta entrada em seu *.tocarquivo:

\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 \thepagee 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 \thepageantes de chamar \appende 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 pagecontador 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 :)

informação relacionada