He escrito una tesis y está lista para enviarse, pero desafortunadamente el límite de páginas para un volumen es 300 páginas y mi tesis es 324. Se ha decidido que la solución es dividir los apéndices del texto principal y colocarlo en un documento separado. volumen.
Lo que necesito ahora es tener una página de contenido que diga:
Volume one
Chapter 1 blah..... 1
Chapter 2 blah..... 4
...
Volume two
Appendix 1 ...... A1
Appendix 2 ...... A3
Appendix 3 ...... A12
...
Esta página de contenido debería aparecer en ambos volúmenes. Una vez como está actualmente y otra al comienzo del volumen dos.
Mi preámbulo es:
\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}
Me doy cuenta de que esto es similar aDividir un libro en varios volúmenespero las exigencias de numeración y formato son diferentes.
Respuesta1
Describiré una manera de ir con elbook
clase usandoetoc. El código de muestra es mínimo, pero debería poder transferir las partes relevantes a su caso de uso real.
vea la actualización a continuación en respuesta a la pregunta formulada en el comentario
Aquí están las dos tablas de contenido (con hipervínculos correctos):
Código:
\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}
Aquí hay ahora una variante en la que el TOC del Volumen Dos solo enumera los apéndices. También se reinicia la numeración de páginas para el Volumen Dos.
\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}
Respuesta2
ACTUALIZAR
Esto resultó sorprendentemente problemático. Originalmente publiqué lo que pensé que era una solución, basada en una modificación \tableofcontents
que duró unos diez segundos, antes de descubrir que no funcionaría con hyperref
. Luego encontré algo que funcionó, pero que era complicado. Esta versión es más agradable: mi instinto inicial (modificar la forma en que se imprimen los índices para habilitar dos de ellos) fue correcto; el problema fue hyperref
. La solución radica en la sugerencia de la respuesta de pst a continuación que memoir
podría hacer esto. Se me ocurrió que memoir
probablemente se había solucionado el problema que tenía, y así fue.
Por lo tanto, lo siguiente se debe en gran medida al código de Peter Wilson (y creo que también puede haber algo de David Carlisle allí, creo) que he adoptado, y a la sugerencia de pst de mirar Memoir, sin la cual no creo. Alguna vez habría encontrado una solución al problema conhyperref
.
EL MÉTODO
Definimos el comando
\startvolume{name}
para iniciar un nuevo volumen. Dado que el Interlocutor aparentemente no usa "parte", simplemente lo adapté, aunque sin duda sería más elegante definir una nueva unidad de sección.\startvolume
borra la página, restablece la numeración de páginas a 1, imprime una hoja de guarda introductoria y realiza una entrada apropiada en la tabla de contenido.Para mantener la tabla de contenidos ordenada, redefinimos la macro interna
l@part
, para que no intente poner ningún número de página en la lista. También jugueteamos con la definición de\part
para asegurarnos de no obtener un número de página en nuestra página de volumen. (El diseño adecuado de un libro requiere que la hoja de guarda de un volumen aparezca (a) primero, antes de la página de título; (b) no lleve número de folio, pero (c) se trate como el folio 1.)Luego la parte que parece fácil en principio pero resultó difícil. La definición estándar de LaTeX
\tableofcontents
significa que sólo puede tener uno: tan pronto como se imprime, el archivo necesario se "golpea". Ésta es la consecuencia de cómo\@starttoc
se escribe. Esto no es difícil de cambiar en principio, y se vuelve complicado sólo porquehyperref
también se toca el violín. De todos modos,memoir
tiene el código correcto, que me he apoderado.Todo esto funcionó, pero Hyperref se quejaba porque restablecer la numeración de páginas lo confundió. Probé varias soluciones. Al final, la opción más fácil y confiable parecía ser utilizar la opción
hypertexnames=false
; Esto parece estar funcionando, pero es una verdadera programación de culto a la carga del peor tipo, ya que no puedo pretender entender realmente lo que está sucediendo.Fue necesario realizar algunos ajustes
\backmatter
porque (¡ya que nadie anticipó que podría seguir inmediatamente desde\frontmatter
!) no restablece la paginación a romano.
No lo he probado exhaustivamente con la gran cantidad de paquetes que utilizas, por lo que sin duda puede que sea necesario retocar un poco. Pero al menos es un comienzo.
\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}
Respuesta3
Si cambiar de book
a memoir
es aceptable en una etapa tan avanzada del proceso, podría usarlo. Una característica es que \tableofcontents
comandos similares se pueden repetir, ya que no se borran cuando se usan, como en las clases estándar. Aquí hay una prueba de concepto sin pulir de cómo hacer esto en memoir
, creando un resultado que luego se puede dividir en los dos volúmenes.
\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}