[Tex/LaTex] Correct way to use include and includeonly when writing a large document like a thesis

include

I am writing a large document with several chapters and I would like to work on each chapter separately. In my main.tex I include the chapters either like

 \include{chap1.tex}
 \include{chap2.tex}
 \include{chap3.tex}

or

 \input{chap1.tex}
 \input{chap2.tex}
 \input{chap3.tex}

I think \include is preferable if I want things to be referenced and cited correctly? but doing it the \include way latex main.tex I don't get any dvi output whereas with \input things compile fine to dvi. What's going wrong here?

I would then like to use \includeonly (or \excludeonly ) to work on individual sections of the document whilst maintaining the referencing etc.

A mwe can be handy:

\documentclass[a4paper,10pt]{article}
\includeonly{chap1}

\begin{document}
  \include{chap1}
  \include{chap2}
  \include{chap3}
\end{document}

Best Answer

Cross referencing and citation should work fine with \input. input is more or less invisible to the TeX processing, it just allows you to split up the file into smaller units for ease of editing.

If you do not use \includeonly then \include{file} is more or less the same as \clearpage\input{file}\clearpage so like \input but with forced page breaks. Since your chapter head probably forces a page break anyway this means that switching between \input and \include should not affect output.

If you use \include then you can use \includeonly to speed up processing by just typesetting specified chapters. Note however that it will use old aux files for the other chapters to get the numbering more or less correct. Thus you should occasionally (and initially) process the file without \includeonly so that all chapters are processed and usable aux files are generated for each chapter.


As noted by @Corentin in the comment, in the case of \include it is important that you use the file name without .tex at the end: \include{file1} not \include{file1.tex}.