我想將由外部軟體產生的附錄的自訂行添加到目錄中。此外,應該可以指定任何特定附錄的頁數。我怎樣才能實現這個目標?
身為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
添加後,該命令可以在任何地方使用,並且不會產生額外的空格,請參閱“文字突然出現!”在範例中。
感謝您的幫助 :)