Inclusions de fichiers avec \input et $HOME
Inclusions de fichiers avec \input et $HOME
Bonjour à tous,
J'ai un problème avec Latex sous Suse (je précise que je n'avais pas ce problème sous Fedora ou sous KDE). Quand je cherche à
inclure un fichier, par exemple un fichier de style, en utilisant la commande \input, et un chemin d'accès qui commence par \$HOME/ j'obtiens une erreur (fichier introuvable).
Quand je tape echo \$HOME dans un terminal, j'obtiens un résultat qui m'a l'air tout à fait correct :
/private/staff/dupond
Quand, dans le fichier principal, je remplace
\input \$HOME/dossier/fichier.sty
par
\input /private/staff/dupond/dossier/fichier.sty
alors tout marche très bien.
J'en conclus que c'est probablement la commande \input qui n'arrive pas à lire correctement la variable \$HOME. Mais je ne comprends pas pourquoi, et surtout j'aimerais bien résoudre ce problème. Parce que remplacer tous les \$HOME par des /private/staff/dupond nuirait fortement à la portabilité de mes fichiers.
Pouvez-vous m'aider ?
Merci d'avance,
Sylvain
J'ai un problème avec Latex sous Suse (je précise que je n'avais pas ce problème sous Fedora ou sous KDE). Quand je cherche à
inclure un fichier, par exemple un fichier de style, en utilisant la commande \input, et un chemin d'accès qui commence par \$HOME/ j'obtiens une erreur (fichier introuvable).
Quand je tape echo \$HOME dans un terminal, j'obtiens un résultat qui m'a l'air tout à fait correct :
/private/staff/dupond
Quand, dans le fichier principal, je remplace
\input \$HOME/dossier/fichier.sty
par
\input /private/staff/dupond/dossier/fichier.sty
alors tout marche très bien.
J'en conclus que c'est probablement la commande \input qui n'arrive pas à lire correctement la variable \$HOME. Mais je ne comprends pas pourquoi, et surtout j'aimerais bien résoudre ce problème. Parce que remplacer tous les \$HOME par des /private/staff/dupond nuirait fortement à la portabilité de mes fichiers.
Pouvez-vous m'aider ?
Merci d'avance,
Sylvain
-
- Utilisateur chevronné
- Messages : 2804
- Inscription : samedi 08 juillet 2006, 20:56
- Localisation : Saint Bonnet Elvert
Re: Inclusions de fichiers avec \input et $HOME
Bon, ce n'est peut-être pas la réponse attendue, mais si l'emplacement de tes fichiers n'est pas absolument imposé, pourquoi ne pas les mettre dans un répertoire de l'arborescenceSylvain D a écrit :Bonjour à tous,
J'ai un problème avec Latex sous Suse (je précise que je n'avais pas ce problème sous Fedora ou sous KDE). Quand je cherche à
inclure un fichier, par exemple un fichier de style, en utilisant la commande \input, et un chemin d'accès qui commence par \$HOME/ j'obtiens une erreur (fichier introuvable).
Quand je tape echo \$HOME dans un terminal, j'obtiens un résultat qui m'a l'air tout à fait correct :
/private/staff/dupond
Quand, dans le fichier principal, je remplace
\input \$HOME/dossier/fichier.sty
par
\input /private/staff/dupond/dossier/fichier.sty
alors tout marche très bien.
J'en conclus que c'est probablement la commande \input qui n'arrive pas à lire correctement la variable \$HOME. Mais je ne comprends pas pourquoi, et surtout j'aimerais bien résoudre ce problème. Parce que remplacer tous les \$HOME par des /private/staff/dupond nuirait fortement à la portabilité de mes fichiers.
Pouvez-vous m'aider ?
Merci d'avance,
Sylvain
`kpsewhich --expand-var='\$TEXINPUTS'` ?
par exemple sous ~/texmf/tex/mesinputs/monbeaufichier.sty
Un coup de mktexlsr ~/texmf et ensuite \input monbeaufichier.sty suffit.
Autrement, on peut modifier la valeur de \$TEXINPUTS'`: texdoc kpathsea
--
JJR.
Heu... Merci pour cette réponse, mais je n'ai pas tout compris. Surtout je ne suis pas sûr de pouvoir faire les choses que tu me proposes : je n'ai pas les droits root (je suis un simple utilisateur à l'université). Je n'ai pas trouvé de dossier texmf. Je voudrais bien modifier la valeur de \$TEXINPUTS mais je ne sais pas comment faire. Quand je tape texdoc kpathsea on me répond qu'il n'y a pas de doc disponible sur kpathsea.
-
- Utilisateur chevronné
- Messages : 2804
- Inscription : samedi 08 juillet 2006, 20:56
- Localisation : Saint Bonnet Elvert
Il n'y a pas besoin d'être root pour s'installer un texmf dans son \$HOME.Sylvain D a écrit :Heu... Merci pour cette réponse, mais je n'ai pas tout compris. Surtout je ne suis pas sûr de pouvoir faire les choses que tu me proposes : je n'ai pas les droits root (je suis un simple utilisateur à l'université). Je n'ai pas trouvé de dossier texmf. Je voudrais bien modifier la valeur de \$TEXINPUTS mais je ne sais pas comment faire. Quand je tape texdoc kpathsea on me répond qu'il n'y a pas de doc disponible sur kpathsea.
ni pour aucune des manipulations que je propose.
Que renvoie la commande :
#kpsewhich --expand-var='\$TEXMF'?
--
JJR.
Dans l'ancien système (sous Red Hat, où tout marchait bien) elle renvoie le texte suivant :
{!!/USERS/dupond/texmf,!!/usr/local/share/texmf,!!/usr/share/texmf}
Dans le nouveau (sous Suse) :
{/private/staff/dupond/texmf,!!/etc/texmf,!!/var/lib/texmf,!!/usr/share/texmf,!!/usr/local/share/texmf,!!/usr/share/texmf/contrib}
Sylvain
{!!/USERS/dupond/texmf,!!/usr/local/share/texmf,!!/usr/share/texmf}
Dans le nouveau (sous Suse) :
{/private/staff/dupond/texmf,!!/etc/texmf,!!/var/lib/texmf,!!/usr/share/texmf,!!/usr/local/share/texmf,!!/usr/share/texmf/contrib}
Sylvain
-
- Utilisateur chevronné
- Messages : 2804
- Inscription : samedi 08 juillet 2006, 20:56
- Localisation : Saint Bonnet Elvert
Donc vous avez bien un texmf local dans votre \$HOMESylvain D a écrit :Dans l'ancien système (sous Red Hat, où tout marchait bien) elle renvoie le texte suivant :
{!!/USERS/dupond/texmf,!!/usr/local/share/texmf,!!/usr/share/texmf}
Dans le nouveau (sous Suse) :
{/private/staff/dupond/texmf,!!/etc/texmf,!!/var/lib/texmf,!!/usr/share/texmf,!!/usr/local/share/texmf,!!/usr/share/texmf/contrib}
Sylvain
vous pouvez donc procéder à la manipulation que je vous ai indiqué.
copiez fichier.sty dans le répertoire /private/staff/dupond/texmf/tex/latex/mesinputs
que vous aurez préalablement créé, puis
#mktexlsr /private/staff/dupond/texmf
Pour vérifier
#kpsewich fichier.sty
devrait répondre
#/private/staff/dupond/texmf/tex/latex/mesinputs/fichier.sty
Vous pouvez alors appeler directement fichier.sty en LaTeX.
Je m'étonne : \input /private/staff/dupond/dossier/fichier.sty
est une méthode tout à fait baroque pour inclure un fichier de style. Pour faire ça, il faut être assez expérimenté et bien comprendre ce que l'on fait.
Dans ce cas, vous devriez connaître ce que je vous dis.
La façon normale d'inclure un fichier de style est \usepackage{fichier} et il y a un tel nombre de fichiers de style dans tetex qu'il est rarissime d'avoir à procéder comme vous voulez le faire.
Précisez : qu'est censé faire ce \input fichier.sty ?
Pourquoi ne pas vous contenter de les placer dans votre répertoire de travail ?
--
JJR
Merci beaucoup, j'ai fait ce que vous m'avez dit, ça marche très bien !
Concernant votre étonnement sur mes connaissances de Latex... ben simplement depuis les trois ou quatre années que j'utilise Latex j'ai appris un peu sur le tas, j'ai appris des choses tout seul, en naviguant sur le net, ou bien au hasard de discussions avec d'autres personnes, selon mes besoins (comme la plupart des gens je pense). Le résultat c'est que mes connaissances sont assez inhomogènes : il y a des choses pointues que je connais, et sans doute des réflexes élémentaires que je n'ai pas. Je ne connaissais pas ce dont vous m'avez parlé.
Sur ma façon de procéder... En fait je travaille assez souvent sur plusieurs documents en même temps, et j'aime bien taper du Latex en utilisant des macros. En gros le fichier fichier.sty contient le préambule de mes documents, du moins tout ce qui est commun, comme les inclusions des packages les plus standards, quelques instructions de mise en page, et surtout mes macros. Par ailleurs j'aime bien classer mes documents, donc j'ai des documents dans plusieurs dossiers différents. Je pourrais toujours compiler depuis le répertoire où se trouve fichier.sty, mais alors ce répertoire contiendrait toujours tout un tas de fichiers en .aux, .log, .dvi, et je me disais que c'était peut-être mieux qu'un fichier comme article.aux soit dans le même dossier que article.tex (c'est juste pour que ce soit un peu rangé). Donc je compile depuis le répertoire où se trouve article.tex. Enfin je préfère avoir un seul fichier de macros car ce fichier évolue au cours du temps (régulièrement je rajoute dedans une nouvelle macro que je trouve utile, ou alors je modifie un peu la mise en page) et je souhaite que ces modifications soient prises en compte pour tous mes documents en même temps. J'en suis arrivé à faire un dossier latex qui contient essentiellement 'fichier.sty' et un fichier mabiblio.bib (pour bibtex). Si vous avez une meilleure organisation à proposer je suis preneur.
Je viens à ce propos de m'apercevoir que j'ai le même problème avec bibtex : dans mes fichiers j'utilise une bibliographie que j'appelle par
\bibliography{\$HOME/latex/mabiblio}
Ca marchait très bien sous Red Hat, ça ne marche plus sous Suse...
Concernant votre étonnement sur mes connaissances de Latex... ben simplement depuis les trois ou quatre années que j'utilise Latex j'ai appris un peu sur le tas, j'ai appris des choses tout seul, en naviguant sur le net, ou bien au hasard de discussions avec d'autres personnes, selon mes besoins (comme la plupart des gens je pense). Le résultat c'est que mes connaissances sont assez inhomogènes : il y a des choses pointues que je connais, et sans doute des réflexes élémentaires que je n'ai pas. Je ne connaissais pas ce dont vous m'avez parlé.
Sur ma façon de procéder... En fait je travaille assez souvent sur plusieurs documents en même temps, et j'aime bien taper du Latex en utilisant des macros. En gros le fichier fichier.sty contient le préambule de mes documents, du moins tout ce qui est commun, comme les inclusions des packages les plus standards, quelques instructions de mise en page, et surtout mes macros. Par ailleurs j'aime bien classer mes documents, donc j'ai des documents dans plusieurs dossiers différents. Je pourrais toujours compiler depuis le répertoire où se trouve fichier.sty, mais alors ce répertoire contiendrait toujours tout un tas de fichiers en .aux, .log, .dvi, et je me disais que c'était peut-être mieux qu'un fichier comme article.aux soit dans le même dossier que article.tex (c'est juste pour que ce soit un peu rangé). Donc je compile depuis le répertoire où se trouve article.tex. Enfin je préfère avoir un seul fichier de macros car ce fichier évolue au cours du temps (régulièrement je rajoute dedans une nouvelle macro que je trouve utile, ou alors je modifie un peu la mise en page) et je souhaite que ces modifications soient prises en compte pour tous mes documents en même temps. J'en suis arrivé à faire un dossier latex qui contient essentiellement 'fichier.sty' et un fichier mabiblio.bib (pour bibtex). Si vous avez une meilleure organisation à proposer je suis preneur.
Je viens à ce propos de m'apercevoir que j'ai le même problème avec bibtex : dans mes fichiers j'utilise une bibliographie que j'appelle par
\bibliography{\$HOME/latex/mabiblio}
Ca marchait très bien sous Red Hat, ça ne marche plus sous Suse...
-
- Utilisateur chevronné
- Messages : 2804
- Inscription : samedi 08 juillet 2006, 20:56
- Localisation : Saint Bonnet Elvert
L'essentiel, cest que vous vous y retrouviez. Pour ma part, je m'étais fais une classe personelle de document qui me permettait de retrouver mon environnement habituel en l'appelant par \documentclass . Un fichier de style sera plutôt appelé par \usepackage que par un \input, mais pourquoi pas, si ça marche.Sylvain D a écrit :Merci beaucoup, j'ai fait ce que vous m'avez dit, ça marche très bien !
Concernant votre étonnement sur mes connaissances de Latex... ben simplement depuis les trois ou quatre années que j'utilise Latex j'ai appris un peu sur le tas, j'ai appris des choses tout seul, en naviguant sur le net, ou bien au hasard de discussions avec d'autres personnes, selon mes besoins (comme la plupart des gens je pense). Le résultat c'est que mes connaissances sont assez inhomogènes : il y a des choses pointues que je connais, et sans doute des réflexes élémentaires que je n'ai pas. Je ne connaissais pas ce dont vous m'avez parlé.
Sur ma façon de procéder... En fait je travaille assez souvent sur plusieurs documents en même temps, et j'aime bien taper du Latex en utilisant des macros. En gros le fichier fichier.sty contient le préambule de mes documents, du moins tout ce qui est commun, comme les inclusions des packages les plus standards, quelques instructions de mise en page, et surtout mes macros. Par ailleurs j'aime bien classer mes documents, donc j'ai des documents dans plusieurs dossiers différents. Je pourrais toujours compiler depuis le répertoire où se trouve fichier.sty, mais alors ce répertoire contiendrait toujours tout un tas de fichiers en .aux, .log, .dvi, et je me disais que c'était peut-être mieux qu'un fichier comme article.aux soit dans le même dossier que article.tex (c'est juste pour que ce soit un peu rangé). Donc je compile depuis le répertoire où se trouve article.tex. Enfin je préfère avoir un seul fichier de macros car ce fichier évolue au cours du temps (régulièrement je rajoute dedans une nouvelle macro que je trouve utile, ou alors je modifie un peu la mise en page) et je souhaite que ces modifications soient prises en compte pour tous mes documents en même temps. J'en suis arrivé à faire un dossier latex qui contient essentiellement 'fichier.sty' et un fichier mabiblio.bib (pour bibtex). Si vous avez une meilleure organisation à proposer je suis preneur.
Je viens à ce propos de m'apercevoir que j'ai le même problème avec bibtex : dans mes fichiers j'utilise une bibliographie que j'appelle par
\bibliography{\$HOME/latex/mabiblio}
Ca marchait très bien sous Red Hat, ça ne marche plus sous Suse...
J'ai essayé sur ma Debian de préfixer un chemin par \$HOME, et ça ne veut rien savoir.
Par contre, les chemins relatifs, du genre \input ../../monrep/monsousrep/monfich
marchent très bien.
Si vous vous partez toujours du même répertoire, vous pourvez aussi déclarer vos chemnins comme ça. Mais il ne faut pas changer ses habitudes...
En ce qui concerne bibtex (que je n'ai jamais trop utilisé), la même méthode doit marcher, les fichiers de style .bst doivent être dans le chemin décrit par
#kpsewhich --expand-var='\$BSTINPUTS'
et les fichiers .bib dans le chemin
#kpsewhich --expand-var='\$BIBINPUTS'#
Mais là je ne fais que citer la doc de kpathsea.
http://www.tug.org/texlive/Contents/liv ... /kpathsea/
--
JJR.
Si on utilise des chemins qualifiés, les fichiers source obtenus ne sont pas portables: tous les sytémes n'utilisent pas les mêmes conventions pour décrire la position d'un élément dans le systéme de fichiers. S'il fonctionnait sous Unix, un "\input $HOME/blabla.tex" n'aurait aucune raison de marcher sous DOS ou d'autres systémes surlesquels HOMe ne signifie rien; et "\input ../../cefichier" et peut-être compris par certaines implémentations pour plateformes microsoft ou Mac, et peut-être pas pour d'autres.
Les solutions que j'aime utilisent des liens symboliques sur certqins fichiers, et la vqriqble TEXINPUTS sur la ligne de commande (et un makefile pour ne pas taper de commandes compliquées dans le shell, c'est trop fatiguant).
Les solutions que j'aime utilisent des liens symboliques sur certqins fichiers, et la vqriqble TEXINPUTS sur la ligne de commande (et un makefile pour ne pas taper de commandes compliquées dans le shell, c'est trop fatiguant).
-
- Sujets similaires
- Réponses
- Vues
- Dernier message