Miktex 2.9
dans LaTeX
Bonjour,
Je viens d'installer Miktex 2.9 64-bit sur windows 8, et à la compilation, de fichiers contenant des \include trucmuch.tex dans des subdirectories, le message d'erreur suivant sort : "I can't write on file trucmuch.aux"... En regardant un peu sur le web, j'ai vu que miktex refuse d'écrire à l'intérieur des directories, à cause d'une sécurité supplémentaire sur la version 2.9, qu'on peut désactiver grâce à la commande "set MIKTEX_ALLOWUNSAFEOUTPUTFILES=1". Le problème est que je ne sais pas comment on peut activer cette commande !.. Alors si quelqu'un peut m'y aider ou m'indiquer une procédure de remplacement pour ce faire, je lui en serais reconnaissant. Merci
Faouzi
Je viens d'installer Miktex 2.9 64-bit sur windows 8, et à la compilation, de fichiers contenant des \include trucmuch.tex dans des subdirectories, le message d'erreur suivant sort : "I can't write on file trucmuch.aux"... En regardant un peu sur le web, j'ai vu que miktex refuse d'écrire à l'intérieur des directories, à cause d'une sécurité supplémentaire sur la version 2.9, qu'on peut désactiver grâce à la commande "set MIKTEX_ALLOWUNSAFEOUTPUTFILES=1". Le problème est que je ne sais pas comment on peut activer cette commande !.. Alors si quelqu'un peut m'y aider ou m'indiquer une procédure de remplacement pour ce faire, je lui en serais reconnaissant. Merci
Faouzi
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Plutôt que recréer un topic identique, je déterre celui-ci vieux de 8 ans.
Donc si quelqu’un pouvait expliquer la procédure, ce serait sympa.
Dans la commande 'set' ci-dessus, MIKTEX_ALLOWUNSAFEOUTPUTFILES est une variable d'environnement. Il est possible d'affecter une variable d'environnement de manière globale pour Windows (un truc comme Paramètres système, Environnement, bla bla bla ; cela a certainement changé depuis la dernière fois que j'ai fait ça, presque au siècle dernier). On peut supposer que cela permettrait de « résoudre » le problème sans avoir à compiler depuis la ligne de commande. Mais vu le nom de ladite variable d'environnement, je ne m'y risquerais pas.
Je regarderais d'abord si le MiKTeX est à jour (peut-être est-ce un problème déjà réglé) et s'il l'est, j'essaierais de modifier la structure de l'arborescence dans laquelle se trouvent les fichiers .tex pour ne plus avoir le problème — cela doit au moins marcher avec tout dans le même dossier !
Merci pour votre retour.
J'ai la version la plus récente de MikTeX et le problème persiste toujours.
Je ne peux pas faire \include{ ../Dossier/fichier.tex} car j'ai le message d'erreur "I can't write on file fichier.aux". Visiblement c'est une mesure de sécurité et après des recherches sur Internet, la seule méthode que j'ai trouvée est set MIKTEX_ALLOWUNSAFEOUTPUTFILES=1.
Je n'ai pas d'erreur avec input au lieu de include mais dans ce cas, je ne bénéficie plus de la commande \includeonly, qui est très pratique puisque mon cours est divisé en de nombreux chapitres (et je souhaite bien sûr conserver l'arborescence de mes dossiers)
Comme je l’ai écrit, je ne souhaite pas modifier l’arborescence de mes fichiers.
Et je ne comprends pas:
- pourquoi ça marche avec un input
- ce que ça change que mon fichier à inclure soit dans un dossier parent
Bref, tant pis, je ferai des input au lieu de include et je compilerai à chaque fois l’intégralité
Comme je l'ai dit, tu peux mettre l'option si tu veux ; je t'ai donné le mot-clé : variable d'environnnement. Un moteur de recherche quelconque te dira comment procéder avec ta version de Windows. Évidemment, je le déconseille.
Voici mon arborescence:
1. Dossier cours
2. Dossiers chapitres
Mon fichier cours.tex est dans le dossier cours, et il appelle les chapitres qui sont dans le dossier chapitres.
Je ne vois vraiment pas ce qui est risqué là-dedans.
Le fait qu'il lise me suffit largement mais malheureusement il n'existe pas de commande \inputonly
Je propose quelque chose comme ça :
cours.tex qui fait \include{chapitres/truc}
chapitres/truc.tex
chapitres/machin.tex
etc.
cours.tex est au même niveau que le dossier 'chapitres'. Peut-être que ceci marche aussi à condition de compiler main.tex, à vérifier :
main.tex qui \input cours/cours.tex
cours/cours.tex qui \include ../chapitres/truc ou ../chapitres/machin
chapitres/truc.tex
chapitres/machin.tex
etc.
avec main.tex au même niveau que les dossiers 'cours' et 'chapitres'.
Oui, si cours.tex est au même niveau que le dossier Chapitres, cela doit fonctionner
Je ne comprends pas pourquoi il n'existe pas de commande \inputonly
Il ne serait pas difficile d'écrire une macro \inputonly et un \myinput qui va avec ; mais dans ce cas, supposons que tu mettes \inputonly{machin,truc} dans main.tex et qu'une partie de ce que tu compiles exécute $\backslash$ref{sec-bidule} où le \label{sec-bidule} correspondant est uniquement présent dans bidule.tex. Il y aurait alors un message car la référence 'sec-bidule' ne serait pas définie au moment du $\backslash$ref{sec-bidule}. Même chose pour les éléments que bidule.tex ajoute à la table des matières : ils sont écrits dans le fichier .aux adéquat qui est ensuite relu pour écrire ces choses-là dans le fichier .toc, lequel est lu par \tableofcontents pour produire la table des matières formatée.
Je crois que je vais déplacer mon fichier cours.tex