Comment charger latex.des fichiers sty d'un sous-répertoire?

j'en utilise .sty-fichiers qui ne font pas partie de texlive et qui veulent les avoir dans un sous-répertoire du dossier avec mon main.tex. J'ai utilisé la ligne suivante pour charger le paquet:

usepackage{sty/prettythesis}

cela fonctionne, mais en compilant le main.tex avec xelatex et en utilisant en caoutchouc me donne un avertissement:

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

Existe-t-il un moyen de prévenir cet avertissement ou de gérer ce cas sans avoir à inclure "sty" dans tous .commande ProvidesPackage de sty-files ou paramétrez les TEXINPUTS variable d'environnement (ce qui ne semble pas être possible à partir de la principale.tex lui-même)?

36
demandé sur Bruno 2010-10-14 22:57:32

3 réponses

je crois que ce fil ici:

parle exactement de la même chose: il semble donc que les seules alternatives sont soit en utilisant TEXINPUTS variable d'environnement; ou en utilisant le importer le package. (notez qu'il y a une variante sur le import package ...Y compris les fichiers tex pg 3.)

un peu plus sur les TEXINPUTS:

j'Espère cette aide;

Acclamations!

EDIT: j'espère que l'on pourrait définir le TEXINPUTS chemin directement dans le fichier tex (en utilisant \write18 -- et, selon certaines versions de LaTeX utiliser --enable-write18, le mien utilise -shell-escape activer \write18; voir aussi ) - mais il semble que ce ne soit pas possible:

"... Ce n'est pas possible. ... La variable d'environnement du processus enfant est définie, mais cela n'a pas effet sur son processus parent (TeX)." ( Re: définir la variable D'environnement TEXINPUTS dans latex - comp.texte.tex).

... alors, maintenant, je viens de l'appeler pdflatex dans mon Linux bash comme ceci:

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

et puis il va résoudre directement \usepackage{mypackage} dans le myfile.tex fichier - même si mypackage.sty est dans un sous-répertoire, disons ./subdir/mypackage.sty.

13
répondu sdaau 2015-01-08 16:01:22

mettez simplement la ligne ci-dessous avant l'appel à pdflatex (ou latex) dans votre makefile ou script de construction:

export TEXINPUTS=".:./sty:"

alors référez votre paquet comme:

\usepackage{prettythesis}
3
répondu Rudy Matela 2014-02-25 13:16:49

Comme vous l'avez découvert, en mettant le paquet dans un sous-répertoire (par exemple, ./sty/prettythesis.sty en ce qui concerne votre principal .tex le fichier ./), et appelant le paquet via

\usepackage{sty/prettythesis}

va charger le paquet avec succès, mais il produira l'avertissement

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

si tout ce que vous voulez est de se débarrasser de cet avertissement, et vous êtes OK avec des modifications mineures dans le .sty le fichier, alors vous pouvez simplement changer le nom du paquet qu'il rapporte, en changeant l' \ProvidesPackage commande

\ProvidesPackage{sty/prettythesis}

cela peut être gênant si vous allez le déplacer autour des charges, mais la charge de modifications n'est pas trop mauvaise non plus.

encore mieux, si ce que vous avez là-dedans est une version spécifique et modifiée d'un paquet tex standard (comme, disons, ce patch de natbib), puis le changement dans le nom du paquet indique clairement quel paquet il procure, et si vous réutilisez le fichier, il sera (probablement)-relancer un avertissement pour t'inciter à t'assurer que tu sais ce que tu fais.

0
répondu E.P. 2017-04-13 12:34:29