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)?
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:
- TeX foire aux Questions: "Temporaire" de l'installation de (La)TeX fichiers
- Paramètre TeX Variable D'Environnement Chemins
- Variables D'environnement pour exécuter LaTeX
- TeX (et Variations) pour la Rédaction de Math - math.umn.edu (voir "TeX Entrées')
- Installation de packages LaTeX - TeX chemins de recherche
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
.
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}
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.