Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I would like to change the folder structure of the ClassicThesis project. My current folder setup looks like this.

|-- bib // Some *.bib files.
|-- bst // Some *.bst files.
|-- cfg // Configuration tex file and sty file.
|-- fbm // Front back matter.
|-- img // Images
|-- prj // The main tex file.
|-- src // All tex files that contain content.
|-- CHANGES
|-- COPYING
|-- README

I changed all the paths to match the new directory structure. Thus Kile complains about accessing the various files.

/usr/local/bin/pdflatex: Not writing to ../fbm/Titlepage.aux (openout_any = p).

! I can't write on file `../fbm/Titlepage.aux'.
\@include ...\immediate \openout \@partaux #1.aux 
                                                  \immediate \write \@partau...
l.87 \include{../fbm/Titlepage}

(Press Enter to retry, or Control-D to exit; default file extension is `.tex')
Please type another output file name
! Emergency stop.
\@include ...\immediate \openout \@partaux #1.aux 
                                                  \immediate \write \@partau...
l.87 \include{../fbm/Titlepage}

!  ==> Fatal error occurred, no output PDF file produced!
Transcript written on ClassicThesis.log.

When I remove the subdirectory path Kile produces a PDF with zero bytes.

Optional: If possible, I would also like to have separate folder for the binary and temporary files. Saying, the PDF would go into bin/ and the *.aux files would go into tmp/.

share|improve this question
2  
Don't use \include: TeX Live inhibits writing in directories whose path includes going above the current working directory. \input doesn't suffer from this limitation, as it doesn't use an .aux file for each input file like \include does. –  egreg Apr 9 '12 at 13:40
    
Nice. That works. Thank you. So how can I grand you the answer.. –  JJD Apr 9 '12 at 13:46

1 Answer 1

up vote 4 down vote accepted

Your setup clashes with the "paranoid" setting of TeX Live (and MiKTeX, also) when it comes to writing files. You see it in the information line

/usr/local/bin/pdflatex: Not writing to ../fbm/Titlepage.aux (openout_any = p)

The distribution is set up so that TeX programs never open for writing files whose path includes going up from the working directory, or an absolute path; if you use \include, then you run into this limitation, as

\include{<path>/filename}

starts writing a filename.aux file in the same directory as filename.tex.

An easy solution is to use \input instead of \include, because reading files has no limitation about paths.

You can also set the output directories, using a command line option for pdflatex, namely --output-dir=./tmp, for example; but this will be used also for the produced PDF file.

share|improve this answer
    
Thx! Is there a way to include the output directory option with the *.tex file so I could add the setting into my version control? –  JJD Apr 9 '12 at 14:06
1  
@JJD No, this is an "engine option", which must be launched before the file is read. However there might be some editor related trick; for example, with TeXworks it's possible to specify in the .tex file which command to run for compiling it when the green arrow is pressed, and this command can be a script. I don't know with Kile. –  egreg Apr 9 '12 at 14:09

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.