Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

comment faire une base d'exercice accessible de n'importe quel dossier ?

19 views
Skip to first unread message

Fabrice

unread,
May 12, 2013, 4:17:10 PM5/12/13
to
Bonjour,

j'utilise texLive 2012.
Je souhaite avoir un dossier "base", contentant par exemple un dossier
Seconde, un sous dossier algo, un sous sous dossier exo001 contenant un
fichier enonce.tex et un fichier figure.pdf.

base
|__Seconde
|__algo
|__exo001
| |__enonce.tex et figure.pdf
|__exo002
|__enonce.tex et figure.pdf (bien s�r diff�rent)

Dans un autre dossier (qui n'est pas dans base et qui pourrait m�me �tre
sur un autre disque), je souhaite pouvoir faire :
\input{Seconde/algo/exo001/enonce}

dans le fichier enonce, j'aimerai faire \includegraphics{figure.pdf} ou
\includegraphics{Seconde/algo/exo001/figure.pdf} pour ne pas le
confondre avec celui de exo002 par exemple.

Comment faire ?

Merci,
Fabrice.

Jean-Côme Charpentier

unread,
May 12, 2013, 5:41:56 PM5/12/13
to
Le 12/05/2013 22:17, Fabrice a �crit :
En gros vous voulez qu'un r�pertoire et ses sous-r�pertoire
deviennent accessibles depuis n'importe o�. C'est tr�s exactement le
r�le de la variable d'environnement TeX nomm�e TEXINPUTS.

Essayez de rep�rer un fichier texmf.cnf r�serv� aux ajouts
personnels. Sur une TeXLive, c'est normalement � la racine de
l'arborescence TEXMF. Par exemple, chez moi, avant que la 2013 d�barque
c'est :
/usr/local/texlive/2012/texmf.cnf

Une fois que c'est rep�r�, ajoutez la ligne suivante :

TEXINPUTS = $TEXINPUTS;[machin windosien]/base//

o� [machin windosien] est sans doute ce qu'il faut faire pour indiquer
le disque. Comme je suis sous linux, ce concept n'existe pas et je ne
sais pas faire mais je suis certain que quelqu'un de la liste compl�tera
ce petit point technique.
En revanche, je n'ai jamais essay� de faire cela autrement que sur un
nom isol� de fichier. Je ne sais pas si cela fonctionnera pour un � bout
d'arborescence � bien qu'en toute logique, cela devrait. D�s que j'ai un
peu de temps et si personne n'a donn� une solution compl�te, je reviens
vers vous.

Jean-C�me Charpentier

Paul Gaborit

unread,
May 12, 2013, 6:14:26 PM5/12/13
to

À (at) Sun, 12 May 2013 22:17:10 +0200,
Fabrice <fabri...@gmail.com> écrivait (wrote):

> j'utilise texLive 2012.
> Je souhaite avoir un dossier "base", contentant par exemple un dossier
> Seconde, un sous dossier algo, un sous sous dossier exo001 contenant un
> fichier enonce.tex et un fichier figure.pdf.
>
> base
> |__Seconde
> |__algo
> |__exo001
> | |__enonce.tex et figure.pdf
> |__exo002
> |__enonce.tex et figure.pdf (bien sûr différent)
>
> Dans un autre dossier (qui n'est pas dans base et qui pourrait même être
> sur un autre disque), je souhaite pouvoir faire :
> \input{Seconde/algo/exo001/enonce}
>
> dans le fichier enonce, j'aimerai faire \includegraphics{figure.pdf} ou
> \includegraphics{Seconde/algo/exo001/figure.pdf} pour ne pas le
> confondre avec celui de exo002 par exemple.

Vous pouvez définir la variable d'environnement TEXINPUTS pour ajouter
'base' dans la liste des dossiers où trouver des fichiers. La manière de
le faire dépend de votre shell.

Pour sh (bash, ksh, zsh...) :
export TEXINPUTS=".:base:"
Pour csh (tcsh...) :
setenv TEXINPUTS ".:base:"

(étant entendu que 'base' est en fait le chemin complet de votre dossier
et que le ':' final est important.)

Tous les moteurs (La)TeX que vous utilisez devraient maintenant pouvoir
compiler vos documents correctement.

Avec les shells de type sh, on peut même le faire juste pour la durée
d'une commande :

TEXINPUTS=".:base:" pdflatex enonce.tex

--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>

Lucas Levrel

unread,
May 13, 2013, 3:25:56 AM5/13/13
to
Le 12 mai 2013, Jean-Cᅵme Charpentier a ᅵcrit :

> Le 12/05/2013 22:17, Fabrice a ᅵcrit :
>> dans le fichier enonce, j'aimerai faire \includegraphics{figure.pdf} ou
>> \includegraphics{Seconde/algo/exo001/figure.pdf} pour ne pas le
>> confondre avec celui de exo002 par exemple.
>
> En gros vous voulez qu'un rᅵpertoire et ses sous-rᅵpertoire deviennent
> accessibles depuis n'importe oᅵ. C'est trᅵs exactement le rᅵle de la variable
> d'environnement TeX nommᅵe TEXINPUTS.

Je crois comprendre que le PO a deux fichiers du mᅵme nom, dans le
rᅵpertoire courant et dans la base : figure.pdf. Non ? Dans ce cas il
suffit peut-ᅵtre d'utiliser ./figure.pdf pour imposer le fichier local ?

--
LL

Fabrice

unread,
May 13, 2013, 2:58:54 PM5/13/13
to
Le 12/05/2013 23:41, Jean-Côme Charpentier a écrit :
> Le 12/05/2013 22:17, Fabrice a écrit :
>> Bonjour,
>>
>> j'utilise texLive 2012.

Euh.. Effectivement, j'ai oublié de dire que je suis sous windows 7 (et
8) mais pour l'instant, j'essaie sous w7.

>> Je souhaite avoir un dossier "base", contentant par exemple un dossier
>> Seconde, un sous dossier algo, un sous sous dossier exo001 contenant un
>> fichier enonce.tex et un fichier figure.pdf.
>>
>> base
>> |__Seconde
>> |__algo
>> |__exo001
>> | |__enonce.tex et figure.pdf
>> |__exo002
>> |__enonce.tex et figure.pdf (bien sûr différent)
>>
>> Dans un autre dossier (qui n'est pas dans base et qui pourrait même être
>> sur un autre disque), je souhaite pouvoir faire :
>> \input{Seconde/algo/exo001/enonce}
>>
>> dans le fichier enonce, j'aimerai faire \includegraphics{figure.pdf} ou
>> \includegraphics{Seconde/algo/exo001/figure.pdf} pour ne pas le
>> confondre avec celui de exo002 par exemple.
>>
>> Comment faire ?
>
> En gros vous voulez qu'un répertoire et ses sous-répertoire
> deviennent accessibles depuis n'importe où. C'est très exactement le
> rôle de la variable d'environnement TeX nommée TEXINPUTS.
>
> Essayez de repérer un fichier texmf.cnf réservé aux ajouts
> personnels. Sur une TeXLive, c'est normalement à la racine de
> l'arborescence TEXMF. Par exemple, chez moi, avant que la 2013 débarque
> c'est :
> /usr/local/texlive/2012/texmf.cnf
>
> Une fois que c'est repéré, ajoutez la ligne suivante :
>
> TEXINPUTS = $TEXINPUTS;[machin windosien]/base//
>

Merci Jean-Côme. Malheureusement, je n'ai pas réussi :-(

j'ai trouvé le texmf.cnf dans C:\texlive\2012

Je pense que c'est le bon car il y bien mon TEXMFHOME, il contient
maintenant :

% (Public domain.)
% This texmf.cnf file should contain only your personal changes from the
% original texmf.cnf (for example, as chosen in the installer).
%
% That is, if you need to make changes to texmf.cnf, put your custom
% settings in this file, which is .../texlive/YYYY/texmf.cnf, rather than
% the distributed file (which is .../texlive/YYYY/texmf/web2c/texmf.cnf).
% And include *only* your changed values, not a copy of the whole thing!
%
TEXMFHOME = E:/Documents/SkyDrive/texmf
OSFONTDIR = $SystemRoot/fonts//
TEXINPUTS = $TEXINPUTS;E:/Documents/SkyDrive/BaseMaths//


Comme ça ne marchait pas, j'ai redémarré l'ordinateur. j'ai toujours
l'erreur : line 0 : File 'Seconde/algo/exo001/enonce.tex' not found

j'ai essayé de mettre enonce.tex à la racine de
E:/Documents/SkyDrive/BaseMaths mais même erreur.

Dans les propriétés systèmes de windows, il y a la variable Path qui
fonctionne de la même manière et qui finit par C:\texlive\2012\bin\win32
mais je n'ai pas de variables TEXMFHOME, OSFONTDIR, TEXINPUTS, ...
Dois-je en créer une avec E:/Documents/SkyDrive/BaseMaths// ?

Pourquoi cette ligne finit par // ? j'ai essayé sans mais même souci.

cordialement,
Fabrice.

Fabrice

unread,
May 13, 2013, 3:00:11 PM5/13/13
to
Le 13/05/2013 09:25, Lucas Levrel a écrit :
> Le 12 mai 2013, Jean-Côme Charpentier a écrit :
>
>> Le 12/05/2013 22:17, Fabrice a écrit :
>>> dans le fichier enonce, j'aimerai faire \includegraphics{figure.pdf} ou
>>> \includegraphics{Seconde/algo/exo001/figure.pdf} pour ne pas le
>>> confondre avec celui de exo002 par exemple.
>>
>> En gros vous voulez qu'un répertoire et ses sous-répertoire
>> deviennent accessibles depuis n'importe où. C'est très exactement le
>> rôle de la variable d'environnement TeX nommée TEXINPUTS.
>
> Je crois comprendre que le PO a deux fichiers du même nom, dans le
> répertoire courant et dans la base : figure.pdf. Non ? Dans ce cas il
> suffit peut-être d'utiliser ./figure.pdf pour imposer le fichier local ?
>


Non, non, je voulais dire que dans le fichier enonce.tex du dossier
exo001 je voulais inclure le fichier figure.pdf du même dossier exo001.

Merci Lucas.
Je n'ai pas encore essayé ./figure.pdf mais c'est bon à savoir.
cordialement,
Fabrice.

Lucas Levrel

unread,
May 14, 2013, 5:15:04 AM5/14/13
to
Le 13 mai 2013, Fabrice a ᅵcrit :

> Comme ᅵa ne marchait pas, j'ai redᅵmarrᅵ l'ordinateur. j'ai toujours l'erreur
> : line 0 : File 'Seconde/algo/exo001/enonce.tex' not found
>
> j'ai essayᅵ de mettre enonce.tex ᅵ la racine de
> E:/Documents/SkyDrive/BaseMaths mais mᅵme erreur.

As-tu pensᅵ ᅵ modifier en consᅵquence le source (\input{enonce.tex} sans
le chemin) ?

> Dans les propriᅵtᅵs systᅵmes de windows, il y a la variable Path qui
> fonctionne de la mᅵme maniᅵre et qui finit par C:\texlive\2012\bin\win32
> mais je n'ai pas de variables TEXMFHOME, OSFONTDIR, TEXINPUTS, ...
> Dois-je en crᅵer une avec E:/Documents/SkyDrive/BaseMaths// ?

Tu peux essayer, le $TEXINPUTS dans le fichier texmf.cnf sert peut-ᅵtre
justement ᅵ rᅵcupᅵrer cette variable.

> Pourquoi cette ligne finit par // ? j'ai essayᅵ sans mais mᅵme souci.

ᅵa doit vouloir dire ᅵᅵinclure tous les sous-rᅵpertoiresᅵᅵ. As-tu essayᅵ
avec ton chemin seul, sans ᅵᅵ$TEXINPUTS;ᅵᅵ, ᅵ titre de testᅵ?

--
LL

Fabrice

unread,
May 14, 2013, 10:10:37 AM5/14/13
to
Le 14/05/2013 11:15, Lucas Levrel a écrit :
> Le 13 mai 2013, Fabrice a écrit :
>
>> Comme ça ne marchait pas, j'ai redémarré l'ordinateur. j'ai toujours
>> l'erreur : line 0 : File 'Seconde/algo/exo001/enonce.tex' not found
>>
>> j'ai essayé de mettre enonce.tex à la racine de
>> E:/Documents/SkyDrive/BaseMaths mais même erreur.
>
> As-tu pensé à modifier en conséquence le source (\input{enonce.tex} sans
> le chemin) ?
>
>> Dans les propriétés systèmes de windows, il y a la variable Path qui
>> fonctionne de la même manière et qui finit par C:\texlive\2012\bin\win32
>> mais je n'ai pas de variables TEXMFHOME, OSFONTDIR, TEXINPUTS, ...
>> Dois-je en créer une avec E:/Documents/SkyDrive/BaseMaths// ?
>
> Tu peux essayer, le $TEXINPUTS dans le fichier texmf.cnf sert peut-être
> justement à récupérer cette variable.

je n'ai pas essayé car il n'y a pas non plus de TEXMFHOME alors que lui
marche bien.

>> Pourquoi cette ligne finit par // ? j'ai essayé sans mais même souci.
>
> Ça doit vouloir dire « inclure tous les sous-répertoires ». As-tu essayé
> avec ton chemin seul, sans « $TEXINPUTS; », à titre de test ?
>

Voici mon fichier ECM :

\documentclass[a4paper]{article}
\usepackage{graphicx}
\graphicspath{{E\string:/Documents/SkyDrive/base/}}

\begin{document}
\includegraphics{Seconde/algo/exo001/figure}
\includegraphics{E\string:/Documents/SkyDrive/base/Seconde/algo/exo001/figure}
\input{Seconde/algo/exo001/enonce}
\input{E:/Documents/SkyDrive/base/Seconde/algo/exo001/enonce}
\end{document}

et mon texmf.cnf

% (Public domain.)
% This texmf.cnf file should contain only your personal changes from the
% original texmf.cnf (for example, as chosen in the installer).
%
% That is, if you need to make changes to texmf.cnf, put your custom
% settings in this file, which is .../texlive/YYYY/texmf.cnf, rather than
% the distributed file (which is .../texlive/YYYY/texmf/web2c/texmf.cnf).
% And include *only* your changed values, not a copy of the whole thing!
%
TEXMFHOME = E:/Documents/SkyDrive/texmf
OSFONTDIR = $SystemRoot/fonts//
TEXINPUTS = E:/Documents/SkyDrive/base

j'ai essayé avec / ou // à la fin de base mais aucun changement :
\input{Seconde/algo/exo001/enonce} ne marche pas : not found alors que
la dernière ligne marche.

cordialement,
Fabrice.

Paul Gaborit

unread,
May 14, 2013, 12:17:34 PM5/14/13
to

À (at) Tue, 14 May 2013 16:10:37 +0200,
Fabrice <fabri...@gmail.com> écrivait (wrote):

> et mon texmf.cnf
>
> % (Public domain.)
> % This texmf.cnf file should contain only your personal changes from the
> % original texmf.cnf (for example, as chosen in the installer).
> %
> % That is, if you need to make changes to texmf.cnf, put your custom
> % settings in this file, which is .../texlive/YYYY/texmf.cnf, rather than
> % the distributed file (which is .../texlive/YYYY/texmf/web2c/texmf.cnf).
> % And include *only* your changed values, not a copy of the whole thing!
> %
> TEXMFHOME = E:/Documents/SkyDrive/texmf
> OSFONTDIR = $SystemRoot/fonts//
> TEXINPUTS = E:/Documents/SkyDrive/base
>
> j'ai essayé avec / ou // à la fin de base mais aucun changement :
> \input{Seconde/algo/exo001/enonce} ne marche pas : not found alors que
> la dernière ligne marche.
>


Essayez avec :

TEXINPUTS.latex = .;E:/Documents/SkyDrive/base//;$TEXMF/tex/{latex,generic,}//
TEXINPUTS.pdflatex = .;E:/Documents/SkyDrive/base//;$TEXMF/tex/{latex,generic,}//

(L'un des deux est nécessaire selon que vous compilez avec 'latex' ou 'pdflatex'...)

Fabrice

unread,
May 14, 2013, 3:48:45 PM5/14/13
to
Merci Paul, c'est la solution qui me convient.
J'ai continué avec votre idée (que j'ai retrouvé dans
/texlive/YYYY/texmf/web2c/texmf.cnf) pour rajouter xelatex que l'on m'a
recommandé dans un autre fil.

TEXMFHOME = E:/Documents/SkyDrive/texmf
OSFONTDIR = $SystemRoot/fonts//
TEXINPUTS.latex =
.;E:/Documents/SkyDrive/base//;$TEXMF/tex/{latex,generic,}//
TEXINPUTS.pdflatex =
.;E:/Documents/SkyDrive/base//;$TEXMF/tex/{latex,generic,}//
TEXINPUTS.xelatex =
.;E:/Documents/SkyDrive/base//;$TEXMF/tex/{xelatex,latex,xetex,generic,}//

Le piège dans lequel je me suis mis avec mon rajout :
à la fin de la dernière ligne, il faut appuyer sur entrée pour qu'elle
soit prise en compte.

Encore merci à tous ceux qui ont participé à ce fil.
cordialement,
Fabrice.
0 new messages