Question

J'utilise des fichiers .sty qui ne font pas partie de texlive et que vous voulez les avoir dans un sous-répertoire du dossier avec mon main.tex. Je la ligne suivante à charger le paquet:

\usepackage{sty/prettythesis}

Cela fonctionne, mais la compilation du 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)

Y at-il un moyen d'éviter cet avertissement ou traiter ce cas sans avoir à inclure « sty \ » dans tous les fichiers .sty-\ commande ProvidesPackage ou définir la variable d'environnement TEXINPUTS (qui ne semble pas être possible de la principale. tex lui-même)?

Était-ce utile?

La solution

Je crois que ce fil ici:

parle exactement la même chose: il semble donc, les seules alternatives sont soit en utilisant la variable d'environnement TEXINPUTS; ou en utilisant le package d'importation . ( note, il est une variante sur le paquet import sur ... Y compris les fichiers tex pg 3. )

Un peu plus sur TEXINPUTS:

Hope this helps;
À votre santé!

EDIT: J'espérais que l'on pourrait définir le chemin de TEXINPUTS directement dans le fichier tex ( en utilisant \write18 - et la note, certaines versions de LaTeX utilisation --enable-write18, la mine utilise -shell-escape pour permettre \write18, voir aussi cette ) - mais il semble qu'il est impossible :

  

" ... Ce n'est pas possible. ... La variable d'environnement du processus de l'enfant est défini, mais cela n'a pas d'effet à son processus parent (TeX). " ( Re: Réglage des TEXINPUTS variables d'environnement dans les latex - comp .text.tex ).

... donc, maintenant, je viens d'appeler pdflatex dans mon Linux bash comme ceci:

  

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

et il résoudra directement \usepackage{mypackage} dans le fichier myfile.tex -. Même si mypackage.sty est dans un sous-répertoire, dire ./subdir/mypackage.sty

Autres conseils

La ligne ci-dessous avant de mettre simplement l'appel à pdflatex (ou latex) dans votre script makefile ou construire:

export TEXINPUTS=".:./sty:"

référence ensuite votre paquet:

\usepackage{prettythesis}

Comme vous le découvriez, mettre le paquet dans un sous-répertoire (par exemple, ./sty/prettythesis.sty par rapport à votre fichier principal .tex à ./), et appeler le paquet via

\usepackage{sty/prettythesis}

se charge avec succès le paquet, 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 fichier .sty, alors vous pouvez simplement changer le nom du paquet qu'il rapporte, en changeant la commande \ProvidesPackage à

\ProvidesPackage{sty/prettythesis}

Cela peut être pratique si vous allez être en mouvement autour des charges, mais la charge de modifications est pas trop mal non plus.

Encore mieux, si ce que vous avez là une spécifique, version modifiée d'un ensemble standard de TeX (comme, par exemple, ce patch de natbib ), le changement du nom de package indique clairement quel paquetage il est fournir, et si vous réutilisez le fichier, il (le plus probable) re-raise un avertissement vous invite à faire en sorte que vous savez ce que vous faites.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top