如何將指定頁碼的自訂行新增至目錄?

如何將指定頁碼的自訂行新增至目錄?

我想將由外部軟體產生的附錄的自訂行添加到目錄中。此外,應該可以指定任何特定附錄的頁數。我怎樣才能實現這個目標?

身為MWE,我會盡我最大的努力。

\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}

產生的目錄:

微量元素

不幸的是,要工作它需要為每個附錄插入一個空白頁。

我怎麼能擺脫那些額外的空白頁,同時保留命令的其他特徵\input

答案1

由於您根本不希望包含任何空白頁,因為您將單獨繪製一些大格式的 cad 繪圖,所以我查看瞭如何\cftaddtitleline{toc}{chapter}{<text>}{<page>}文件包裝tocloft,第 49 頁:

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

因此,您只需使用\addtocontents而不是\addcontentsline.為了使其與其他chapter條目顯示相同,您應該將標題定義為\protect\numberline{\Alph{chapter}}#1},這將在您的*.toc文件中產生此條目:

\contentsline {chapter}{\numberline {2}Chapter 2}{3} %automatically done with \chapter{}
\contentsline {chapter}{\numberline {A}Appendix 1}{11} %added

但是,您不能\thepage在下面的行中使用和遞增它,因為所有部分都將獲得相同的編號:

  \addtocontents{toc}{\protect\contentsline{chapter}{\protect\numberline{\Alph{chapter}}#1}{\thecnt}}
  \addtocounter{page}{#2}

\thepage我添加了一個計數器,在呼叫前設置\append,並修改為不影響上一章的數量(附錄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}

答案2

睡了一覺後,我想出了一個替代方案,按照自己的意願工作。它在某種程度上是基於 U.Martinez-Corral 的回答。

背景故事:我想建立一個命令,將一個項目新增到目錄中並保留指定數量的頁面。

這是代碼。

\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}

幾句話來解釋一下發生了什麼事。

\setcounter{count}...行計算虛擬章節的起始頁,同時考慮已保留的頁數。

\addtocontents...在目錄中新增自訂行,該行的格式與任何其他章節完全相同。

\addtocounter{add}{#2}增加保留頁的總數。該號碼將在下一頁或下一頁使用\append

\afterpage...當新頁面開始時調用。它將保留頁的數量加到page計數器中,並將該數字重設為 1。

\ignorespaces添加後,該命令可以在任何地方使用,並且不會產生額外的空格,請參閱“文字突然出現!”在範例中。

感謝您的幫助 :)

相關內容