Inclusions de fichiers avec \input et $HOME

Tout ce qui concerne le langage TeX/LaTeX et ses variantes. Ce langage est utilisable sur le forum via les balises tex.
[participation réservée aux utilisateurs inscrits]
Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
Sylvain D

Inclusions de fichiers avec \input et $HOME

Message non lu par Sylvain D »

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
gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2804
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: Inclusions de fichiers avec \input et $HOME

Message non lu par gigiair »

Sylvain 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
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'arborescence
`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.
Sylvain D

Message non lu par Sylvain D »

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.
gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2804
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Message non lu par gigiair »

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.
Il n'y a pas besoin d'être root pour s'installer un texmf dans son \$HOME.
ni pour aucune des manipulations que je propose.

Que renvoie la commande :
#kpsewhich --expand-var='\$TEXMF'?


--
JJR.
Sylvain D

Message non lu par Sylvain D »

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
gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2804
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Message non lu par gigiair »

Sylvain 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
Donc vous avez bien un texmf local dans votre \$HOME
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
Sylvain D

Message non lu par Sylvain D »

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...
gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2804
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Message non lu par gigiair »

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...
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.
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.
la main gauche

Message non lu par la main gauche »

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).
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message