Say I have a document structured as follows.
main.tex
+ ch1
- ch.tex
- s1.tex
- s2.tex
+ ch2
- ch.tex
- s1.tex
- s2.tex
Here, *.tex
are LaTeX files, and ch1
and ch2
are directories.
% main.tex
\documentclass{article}
\usepackage{import}
\includeonly{ch1/ch}
\begin{document}
\subimport{ch1/}{ch}
\subimport{ch2/}{ch}
\end{document}
% ch1/ch.tex
\input{s1}
\input{s2}
% ch1/s1.tex
Section 1.1
% ch1/s2.tex
Section 1.2
% ch2/ch.tex
\input{s1}
\input{s2}
% ch2/s1.tex
Section 2.1
% ch2/s2.tex
Section 2.2
Unfortunately, this compiles the whole document, not just chapter 1. I'm probably doing this completely wrong, but I was trying to do the following. I have a separate folder for each chapter; in each chapter folder, I have a file ch.tex
that manages the chapter as a whole, and files s1.tex
, s2.tex
,… that contain the major sections of the chapter. I am using the import command because I want to be able to use relative paths within ch.tex
(both for inputing the section files, and for things like including graphics). However, in order to speed up compilation, I want to be able to use \includeonly
. Is there a way to get the advantages of both import
and \includeonly
? What is the best practice for structuring large documents like this? (I'm curious about the best practice even if it means giving up relative paths or includeonly
. Based on the other posts I read, it seems like the experts favor include
instead of import
[How to use the import package?, Splitting a large document into several files, How to make "\input" in a "\include"-d file use the correct current path? ] — is there a good reason for this?) I saw a post (Getting \includeonly functionality with import package) that I hoped would give me the answer, but that post ended up skirting the actual issue.
Best Answer
Here's the outline of a structure I've grown over the years.
Each chapter has a well named directory containing
contents.tex
and any other needed files for that chapter.In my preamble,
macros.tex
:In the main driver,
book.tex
:Then, in a typical
contents.tex
Remembering to use
\here
for files referenced fromcontents.tex
takes care of finding those files in the current directory.Since there are only a dozen or so chapters and they change infrequently, cutting and pasting the three line block of code for each chapter is easier than writing a macro to do the job.
I've found this structure to be pretty robust. There's a lot more in my preamble, and adding even some complex functionality (writing selected material to other files for later compilation) can be managed from one place.
For a large project you're just beginning, I recommend wrapping some standard
LaTeX
constructs (e.g. themytikz
environment above) with your own macros, so that you can change their behavior later with less wizardry and hence fewer questions on this site.Edit: To compile just one chapter, use the following driver in the chapter directory.