Page 1 sur 1

Afficher le nom du fichier courant

MessagePosté: Mercredi 09 Mai 2018, 22:15
par christianw
Bonjour,

j'ai un document (qui commence à devenir gros - 70 pages et pas fini...) composé avec la classe book dont j'ai découpé le contenu en plus petits fichiers. Le découpage n'est pas toujours fait très intuitivement (un peu au fil de l'écriture, en fonction de la structure mais aussi du volume du baratin) j'ai pas été très malin sur ce coup là, mais bon... Les « morceaux » sont évidement inclus dans le tout par \input{petit_bout.tex}

Provisoirement j'aimerais pouvoir avoir dans le pdf généré l'indication du fichier...

J'ai essayé en mettant \marginpar{\jobname} en début de chaque fichier mais ça marche pas : ça indique fort logiquement le nom du document maître mais pas celui du document courant.

Quelle solution adopter ?

Merci d'avance.

(édition : confusion include input : c'est bien \input que j'utilise)

Re: afficher le nom du fichier courant

MessagePosté: Mercredi 09 Mai 2018, 22:39
par un bon petit
Redéfinissez \input (dans le cas où vous mettez son argument entre accolades, parce que \input a une autre syntaxe qui fait appel à un mécanisme différent). Solution pas testée :

Code: Tout sélectionner
\makeatletter
\def\@iinput#1{%
  \marginpar{#1}%
  \InputIfFileExists{#1}{}%
  {\filename@parse{#1}%
   \edef\reserved@a{\noexpand\@missingfileerror
     {\filename@area\filename@base}%
     {\ifx\filename@ext\relax tex\else\filename@ext\fi}}%
   \reserved@a}}
\makeatother

Re: afficher le nom du fichier courant

MessagePosté: Jeudi 10 Mai 2018, 07:26
par gigiair
christianw a écrit:Bonjour,

j'ai un document (qui commence à devenir gros - 70 pages et pas fini...) composé avec la classe book dont j'ai découpé le contenu en plus petits fichiers. Le découpage n'est pas toujours fait très intuitivement (un peu au fil de l'écriture, en fonction de la structure mais aussi du volume du baratin) j'ai pas été très malin sur ce coup là, mais bon... Les « morceaux » sont évidement inclus dans le tout par \input{petit_bout.tex}

Cette méthode de gestion des très gros documents présente quelques inconvénients :
- elle rend la sauvegarde et la transmission des documents plus complexe ;
- elle rend une recherche et remplacement pour tout le document plutôt délicate.

Un éditeur évolué peut permettre de restreindre l'édition à une partie du document et d'effectuer la compilation d'une sélection. Emacs et sans doute d'autres éditeurs le font.

Re: afficher le nom du fichier courant

MessagePosté: Jeudi 10 Mai 2018, 10:34
par evariste_G
Bonjour.

Je viens de tester le code de un bon petit. Il m'a paru nécessaire d'enlever le "at" lors de la définition de la commande \@iinput sans quoi, on ne peut pas y faire appel dans un document classique.

Code: Tout sélectionner
\documentclass[10pt,a4paper,french]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lipsum}
\makeatletter
\def\iinput#1{%
  \marginpar{#1}%
  \InputIfFileExists{#1}{}%
  {\filename@parse{#1}%
   \edef\reserved@a{\noexpand\@missingfileerror
     {\filename@area\filename@base}%
     {\ifx\filename@ext\relax tex\else\filename@ext\fi}}%
   \reserved@a}}
\makeatother
\begin{document}
\iinput{ssdoc1.tex}
\iinput{ssdoc2.tex}
\end{document}

Re: afficher le nom du fichier courant

MessagePosté: Jeudi 10 Mai 2018, 10:57
par un bon petit
evariste_G a écrit:Je viens de tester le code de un bon petit. Il m'a paru nécessaire d'enlever le "at" lors de la définition de la commande \@iinput sans quoi, on ne peut pas y faire appel dans un document classique.

La modification que je propose est celle d'une macro privée de la macro chapeau \input, cela suppose donc que l'on écrive
Code: Tout sélectionner
\input{nom du fichier}

Re: afficher le nom du fichier courant

MessagePosté: Vendredi 11 Mai 2018, 17:43
par evariste_G
un bon petit a écrit:
evariste_G a écrit:Je viens de tester le code de un bon petit. Il m'a paru nécessaire d'enlever le "at" lors de la définition de la commande \@iinput sans quoi, on ne peut pas y faire appel dans un document classique.

La modification que je propose est celle d'une macro privée de la macro chapeau \input, cela suppose donc que l'on écrive
Code: Tout sélectionner
\input{nom du fichier}


Ah ! Je n'avais pas compris que \input faisait appel à \@iinput (je le suis pas un texien niveau expert). Dans ce cas, rien à changer en effet.

Le code qui fonctionne :

Code: Tout sélectionner
\documentclass[10pt,a4paper,french]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lipsum}
\makeatletter
\def\@iinput#1{%
  \marginpar{#1}%
  \InputIfFileExists{#1}{}%
  {\filename@parse{#1}%
   \edef\reserved@a{\noexpand\@missingfileerror
     {\filename@area\filename@base}%
     {\ifx\filename@ext\relax tex\else\filename@ext\fi}}%
   \reserved@a}}
\makeatother
\begin{document}
\input{ssdoc1.tex}
\input{ssdoc2.tex}
\end{document}