Bruno - 6 months ago 40
LaTeX Question

# How to load latex .sty files from a subdirectory?

I use some .sty-files that are not part of texlive and want to have them in a subdirectory of the folder with my main.tex. I used the following line to load the package:

``````\usepackage{sty/prettythesis}
``````

This works, but compiling the main.tex with xelatex and using rubber gives me a warning:

``````sty/prettythesis.sty: You have requested package `sty/prettythesis',
but the package provides `prettythesis'. (page 1)
``````

Is there a way to prevent this warning or handle this case without having to include "sty\" in all .sty-files' \ProvidesPackage command or set the TEXINPUTS environment variable (which seems not to be possible from the main.tex itself)?

talks about precisely the same thing: so it seems, the only alternatives are either using `TEXINPUTS` environment variable; or using the import package. (note, there is a variant on the `import` package on ...Including tex files pg 3.)

Hope this helps;
Cheers!

EDIT: I hoped that one could set the TEXINPUTS path directly in the tex file (by using `\write18` -- and note, some versions of LaTeX use `--enable-write18`, mine uses `-shell-escape` to enable `\write18`; see also this) - but it seems it is not possible:

"... This isn't possible. ... The environment variable of the child process is set, but this hasn't an effect to its parent process (TeX)." (Re: Setting the environmental variable TEXINPUTS within latex - comp.text.tex).

... so, now I just call `pdflatex` in my Linux `bash` like this:

`TEXINPUTS=.//:\$TEXINPUTS pdflatex ./myfile.tex`

and then it will resolve directly `\usepackage{mypackage}` in the `myfile.tex` file - even if `mypackage.sty` is in a subdirectory, say `./subdir/mypackage.sty`.