論文を書き上げ、提出する準備は整いましたが、残念ながら 1 巻あたりのページ制限は 300 ページですが、私の論文は 324 ページです。解決策として、付録を本文から分離して別の巻にまとめることが決定されました。
今必要なのは、次のような内容のコンテンツ ページです。
Volume one
Chapter 1 blah..... 1
Chapter 2 blah..... 4
...
Volume two
Appendix 1 ...... A1
Appendix 2 ...... A3
Appendix 3 ...... A12
...
この目次ページは両方の巻に表示される必要があります。1 回は現状のまま、もう 1 回は第 2 巻の冒頭に表示されます。
私の序文は次のとおりです。
\documentclass[a4paper, 11pt, oneside]{book}
\usepackage[UKenglish]{babel}
\usepackage[left=3cm, right=3cm, bottom=3.5cm, top=3.5cm]{geometry}
\usepackage[
font=footnotesize,
center
]{caption} % Changes font size of figure captions to small
\usepackage[
backend=biber,
block=space,
date=long,
doi=false,
dashed=false,
eprint=false,
firstinits=true,
isbn=false,
minnames=2,
maxnames=2,
mincitenames=2,
maxcitenames=2,
natbib=true,
sortcites=false,
sorting=nyt,
style=authoryear-comp,
terseinits=true,
uniquelist=false,
uniquename=false,
url=false
]{biblatex}
\addbibresource{C:/Documents and Settings/LBOYD/My Documents/LaTeX/BibTex/library.bib}
%Put initials after names...
\DeclareNameAlias{sortname}{last-first}
\DeclareNameAlias{default}{last-first}
%Remove "and" before last name. However, this also removes "and" in a textcite...
\renewcommand*{\finalnamedelim}{\space\&\space}
\usepackage{fancyhdr} % Provides support for improved document headers
\usepackage{graphicx} % Provides support for inserting images
\usepackage{tikz} % Provides support for tikz images
\usetikzlibrary{arrows} % Add arrows package to tikz
\usepackage{wrapfig} % Allows text to wrap around images
\usepackage{sidecap} % Allows captions to be put to side of figures
\usepackage{subfig} % Allows us to include sub-figures
\usepackage{float}
\usepackage{pdflscape}
\usepackage{makeidx}
\usepackage[big,compact]{titlesec}
\usepackage{pdfpages}
\usepackage[inline]{enumitem}
\usepackage{multirow}
\usepackage{mathtools}
\usepackage[hidelinks]{hyperref}
\hypersetup{
pdftitle=Third Year Report,
pdfauthor=Liam Boyd,
pdfkeywords=EngD Thesis CMOS VCO Oscillator Transmission
}
\usepackage{longtable}
\usepackage{acro}% needs v0.4 of `acro'
\acsetup{
page-name=Acronyms,
list-style=longtable,
list-header=chapter*,
list-table-width=10cm,
list-long-format=\capitalisewords
}
\usepackage{mfirstuc}% provides\capitalisewords
\include{Frontmatter/acronyms2} %Include external acronym list.
\makeindex
\setlength{\parindent}{0in}
\usepackage{setspace}
\doublespacing
\newcommand{\comment}[1]{}
\begin{document}
%%---------------------------------------------------------------
% FRONTMATTER
%%---------------------------------------------------------------
\pdfbookmark[0]{Title}{Title}
\input{Frontmatter/titlepage} % Custom front page
\frontmatter
\input{Frontmatter/abstract} % Document Abstract
\addcontentsline{toc}{chapter}{Abstract}
\pagestyle{plain} % Set page style
\input{Frontmatter/declaration}
\addcontentsline{toc}{chapter}{Declaration}
\input{Frontmatter/acknowledgments} % Acknowledgements page
\addcontentsline{toc}{chapter}{Acknowledgements}
\listoffigures % List of figures
\addcontentsline{toc}{chapter}{List of Figures}
\newpage % Start a new page
\listoftables % List of Tables
\addcontentsline{toc}{chapter}{List of Tables}
\newpage % Start a new page
\begingroup
\setlength{\LTleft}{-\tabcolsep}
\printacronyms
\endgroup
\addcontentsline{toc}{chapter}{Acronyms}%\printacronyms
\clearpage % Start a new page
\pdfbookmark[0]{Contents}{Contents}
\tableofcontents % Insert a table of contents
\clearpage
%%---------------------------------------------------------------
% INPUT CHAPTERS
%%---------------------------------------------------------------
\mainmatter
\pagestyle{plain}
\input{Mainmatter/Introduction}
\input{Mainmatter/DesignOptions}
\input{Mainmatter/SystemsContext}
\input{Mainmatter/MB8AW4316}
\input{Mainmatter/MB8AW5318}
\input{Mainmatter/Analysis}
\input{Mainmatter/Conclusion}
%%---------------------------------------------------------------
% BACK MATTER
%%---------------------------------------------------------------
\backmatter % States that we are now into Appendicies
\pagestyle{plain}
\printbibliography[heading=bibintoc] % Insert Bibliography
\input{Backmatter/Appendix} % Appendix
\end{document}
これは本を複数の巻に分割するただし、番号付けと形式の要件は異なります。
答え1
私は、book
クラスエトックコードサンプルは最小限ですが、関連部分を実際のユースケースに転送できるはずです。
コメントで尋ねられた質問に対する回答として、以下の更新を参照してください。
ここに 2 つの目次があります (正しいハイパーリンク付き)。
コード:
\documentclass{book}
\usepackage{hyperref}
\usepackage{blindtext}
\usepackage{etoc}
\newcommand{\TableOfContents}{%
\centerline{\LARGE\scshape Thesis Contents}
\vspace{0.5cm}
\markboth{\MakeUppercase\contentsname}{\MakeUppercase\contentsname}
\phantomsection
\addcontentsline{toc}{chapter}{Thesis contents}
\etocsettagdepth {VolumeOne}{all}
\etocsettagdepth {VolumeTwo}{none}
\etocsettocstyle {\section*{Volume One}}{\bigskip}
\tableofcontents
\etocsettagdepth {VolumeOne}{none}
\etocsettagdepth {VolumeTwo}{all}
\etocsettocstyle {\section*{Volume Two}}{\cleardoublepage}
\tableofcontents
}
\begin{document}
\etocdepthtag.toc {VolumeOne}
\frontmatter
\vspace*{1cm}
\begin{center}
\huge\bfseries Volume One:\\ Oscillation Theory and Beyond
\end{center}
\vspace{2cm}
\TableOfContents
\mainmatter
\chapter{Foo}
\blindtext
\chapter{Bar}
\blindtext
\backmatter
\etocdepthtag.toc {VolumeTwo}
\vspace*{1cm}
\begin{center}
\huge\bfseries Volume Two:\\ Appendices
\end{center}
\vspace{2cm}
\TableOfContents
\chapter{Appendix}
\blindtext
\chapter{Another appendix}
\blindtext
\end{document}
ここでは、第 2 巻の目次に付録のみがリストされているバリエーションがあります。また、第 2 巻ではページ番号が最初からやり直されています。
\documentclass{book}
\usepackage{hyperref}
\usepackage{blindtext}
\usepackage{etoc}
\newcommand{\TableOfContents}{%
\centerline{\LARGE\scshape Thesis Contents}
\vspace{0.5cm}
\markboth{\MakeUppercase\contentsname}{\MakeUppercase\contentsname}
\phantomsection
\addcontentsline{toc}{chapter}{Thesis contents}
\etocsettagdepth {VolumeOne}{all}
\etocsettagdepth {VolumeTwo}{none}
\etocsettocstyle {\section*{Volume One}}{\bigskip}
\tableofcontents
\etocsettagdepth {VolumeOne}{none}
\etocsettagdepth {VolumeTwo}{all}
\etocsettocstyle {\section*{Volume Two}}{\cleardoublepage}
\tableofcontents
}
\begin{document}
\etocdepthtag.toc {VolumeOne}
\frontmatter
\vspace*{1cm}
\begin{center}
\huge\bfseries Volume One:\\ Oscillation Theory and Beyond
\end{center}
\vspace{2cm}
\TableOfContents
\mainmatter
\chapter{Foo}
\blindtext
\chapter{Bar}
\blindtext
\mainmatter % to restart page numbering
\backmatter
\etocdepthtag.toc {VolumeTwo}
\vspace*{1cm}
\begin{center}
\huge\bfseries Volume Two:\\ Appendices
\end{center}
\vspace{2cm}
\etocsettagdepth {VolumeOne}{none}
\etocsettagdepth {VolumeTwo}{all}
\etocsettocstyle {\section*{\contentsname}\phantomsection
\addcontentsline{toc}{chapter}{\contentsname}}
{\cleardoublepage}
\markboth{\MakeUppercase\contentsname}{\MakeUppercase\contentsname}
\tableofcontents
\chapter{Appendix}
\blindtext
\chapter{Another appendix}
\blindtext
\end{document}
答え2
アップデート
これは意外にも面倒でした。私は最初、 を修正して解決策だと思ったものを投稿しましたが、\tableofcontents
約 10 秒かかり、 では機能しないことがわかりましたhyperref
。その後、機能するものを見つけましたが、使いにくいものでした。このバージョンの方が満足のいくものです。私の最初の直感 (目次を 2 つ印刷できるように変更する方法) は正しかったのですが、問題は でしたhyperref
。解決策は、これを実行できる以下の pst の回答の提案にありました。でおそらく問題が解決しただろうmemoir
と思い、それが実現しました。memoir
したがって、以下の内容は、私が採用したピーター・ウィルソンのコード(デイビッド・カーライルのコードも少し含まれていると思います)と、メモワールを見るようにというpstの提案のおかげです。メモワールがなければ、この問題の解決策を見つけることはできなかったと思います。hyperref
。
方法
\startvolume{name}
新しい巻を開始するコマンドを定義します。質問者は明らかに「part」を使用していないので、私はそれを単純に適応させましたが、新しいセクション単位を定義する方が間違いなくエレガントです。\startvolume
ページをクリアし、ページ番号を 1 にリセットし、紹介用のフライリーフを印刷し、目次に適切なエントリを作成します。目次を整理するために、内部マクロ を再定義し
l@part
、リストにページ番号を入れないようにします。また、 の定義を調整して、\part
巻のページにページ番号が付かないようにしています。(適切な本のデザインでは、巻の見返しが (a) タイトルページの前に最初に来ること、(b) フォリオ番号が付かないが (c) フォリオ 1 として扱われることが求められます。)次に、原理的には簡単そうに見えますが、難しいことが判明した部分です。 の標準 LaTeX 定義は、
\tableofcontents
1 つしか持てないことを意味します。つまり、印刷されるとすぐに、必要なファイルは「上書き」されます。 これは、 の\@starttoc
書き方の結果です。 原理的には変更するのは難しくありませんが、変更が複雑になるのは、hyperref
変更が複雑すぎるからです。 とにかく、 にはmemoir
正しいコードがあり、それを私が手に入れました。これはすべてうまくいきましたが、ページ番号をリセットすると混乱するため、hyperref が文句を言っていました。私はさまざまな解決策を試しました。最終的に、最も簡単で信頼性の高い方法は、オプションを使用することのようでした
hypertexnames=false
。これはうまくいっているようですが、何が起こっているのか本当に理解しているふりをすることができないため、これは最悪の種類の真のカーゴ カルト プログラミングです。には少し調整が必要でした
\backmatter
。なぜなら、( の直後に が続くとは誰も予想していなかったため\frontmatter
) ページ区切りがローマンにリセットされないからです。
使用しているパッケージが非常に多いため、これを包括的にテストしたわけではないので、多少の調整が必要になることは間違いありません。しかし、少なくともこれは始まりです。
\documentclass[a4paper,oneside]{book}
\usepackage{filecontents}% Just for demonstration
\begin{filecontents}{\jobname-c.tex}
\chapter{Blah}
\lipsum% Just for demonstration
\chapter{More Blah}
\lipsum
\end{filecontents}
\usepackage[hypertexnames=false]{hyperref}
\usepackage{lipsum}
\makeatletter
%This is to enable an unpaginated "part" entry in the TOC, based on l@part in book.cls
\renewcommand*\l@part[2]{%
\ifnum \c@tocdepth >-2\relax
\addpenalty{-\@highpenalty}%
\addvspace{2.25em \@plus\p@}%
\setlength\@tempdima{3em}%
\begingroup
\parindent \z@ \rightskip \@pnumwidth
{\leavevmode
\large \bfseries #1}\par
\nobreak
\global\@nobreaktrue
\everypar{\global\@nobreakfalse\everypar{}}%
\endgroup
\fi}
%And this is simply to ensure that we get an empty page for the volume titles
\renewcommand\part{%
\if@openright
\cleardoublepage
\else
\clearpage
\fi
\thispagestyle{empty}%
\if@twocolumn
\onecolumn
\@tempswatrue
\else
\@tempswafalse
\fi
\null\vfil
\secdef\@part\@spart}
%backmatter needs to be patched to reset pagination to arabic
\renewcommand\backmatter{%
\if@openright
\cleardoublepage
\else
\clearpage
\fi
\pagenumbering{arabic}%
\@mainmatterfalse}
\newcommand{\secondtableofcontents}{%
\tableofcontents
\if@filesw
[Table of Contents will generate here]\par
\typeout{Warning: No second table of contents generated. Rerun with \nofiles once all references are stable.}
\fi}
%Finally we patch the \@starttoc macro so that it doesn't clobber the .toc file,
%this code is taken straight from memoir. We are using hyperref here, but for
%completeness we provide for both
\renewcommand{\@starttoc}[1]{%
\begingroup\makeatletter
\@input{\jobname.#1}%
\if@filesw
\AtEndDocument{%
\expandafter\ifx\csname tf@#1\endcsname\relax
\expandafter\newwrite\csname tf@#1\endcsname
\immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
\fi
}%
\fi
\@nobreakfalse
\endgroup}
\@ifpackageloaded{hyperref}{%
\Hy@AtBeginDocument{%
\ifx\hyper@last\@undefined
\def\@starttoc#1{%
\begingroup\makeatletter
\IfFileExists{\jobname.#1}{%
\Hy@WarningNoLine{%
old #1 file detected, not used; run LaTeX again%
}%
}{}%
\if@filesw
\AtEndDocument{%
\expandafter\ifx\csname tf@#1\endcsname\relax
\expandafter\newwrite\csname tf@#1\endcsname
\immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
\fi
}
\fi
\@nobreakfalse
\endgroup
}%
\fi
}
}
% \startvolume{Title} at beginning of each volume: print a starting page
% for hyperref to grab and add contents line
\newcommand{\startvolume}[1]{%
\cleardoublepage%
\setcounter{page}{1}%
\part*{#1}%
\addcontentsline{toc}{part}{#1}%
}
\makeatother
\begin{document}
\frontmatter
\startvolume{I}
\tableofcontents
\mainmatter
\input{\jobname-c.tex}
\frontmatter
\startvolume{II}
\tableofcontents
\backmatter
\input{\jobname-c.tex}
\end{document}
答え3
プロセスのこの段階で から への変更が許容される場合は、 を使用できます。 の 1 つの特徴は、book
および類似のコマンドを繰り返すことができることです。これは、標準のクラスとは異なり、使用時にクリアされないためです。 以下は、 でこれを実行する方法の概念実証の未完成版です。この実証では、後で 2 つのボリュームに分割できる結果を作成します。memoir
\tableofcontents
memoir
\documentclass{memoir}
\usepackage{blindtext}
\begin{document}
\author{A. Uthor}
\title{The Book -- Volume One}
\frontmatter
\addcontentsline{toc}{part}{Volume one}
\maketitle
\newpage
\tableofcontents*
\mainmatter
\chapter{Foo}
\blindtext
\chapter{Bar}
\blindtext
% Restart page numbering
\frontmatter
\addcontentsline{toc}{part}{Volume two}
\title{The Book -- Volume Two}
\maketitle
\newpage
\tableofcontents*
\mainmatter
\backmatter
\chapter{Appendix}
\blindtext
\chapter{Another appendix}
\blindtext
\end{document}