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.

Here's the path where my tex file stands :

/home/me/documents/foo.tex

I also have one import file here :

/home/me/texmf/tex/latex/personal/bar.tex

However for security purpose I also include it here locally :

/home/me/documents/bar.tex

When I input it in my tex file, e.g. :

\input{bar}

I noticed the local file is used over the remote one (latex personal directory)

My question is : how can I manage the following statement ?

  • If the distant file exists then include it over the local one.
  • If the distant file is none then include the local one.
share|improve this question
add comment

1 Answer

The file search strategy of TeX can be configured, see texmf.cnf for TeX Live. Example for pdflatex:

TEXINPUTS.pdflatex      = .;$TEXMF/tex/{latex,generic,}//

And TEXMF is set by default as:

TEXMF = {$TEXMFCONFIG,$TEXMFVAR,$TEXMFHOME,!!$TEXMFSYSCONFIG,!!$TEXMFSYSVAR,!!$TEXMFLOCAL,!!$TEXMFDIST}

Or shorter, first the current directory is used, then the home texmf tree, the local texmf tree and at last the distribution tree.

Of course the search order can be changed by changing or overwriting the entries, e.g.

TEXINPUTS=/my/documents:

Then first the directory /my/documents/ is searched, then the normal search of the configured TEXINPUT applies because of the trailing colon.

However, the search is directory based, The search order cannot be changed for single files. In your case you have both the main TeX file foo.tex and the other file bar.tex in the same directory /home/me/documents/. The first file should be found there, but the latter should be first found somewhere else:

/home/me/texmf/tex/latex/personal/bar.tex

Thus changing the search order will not help, because foo.tex should not be found first somewhere else, too.

However, in this case, there is a difference in the parent directory of the file that can be used here to differentiate between the two versions:

\InputIfFileExists{personal/bar.tex}{%
  % File personal/bar.tex exists and is read
}{%
  % File personal/bar.tex is not found, try bar.tex
  \input{bar.tex}%
}
share|improve this answer
add comment

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.