Soit un texte qui serait édité en trois versions. Sa syntaxe ne changerait pas de l'une à l'autre, mais son vocabulaire, si :
Comment réaliser ça en LaTeX ? Il s'agirait de n'avoir qu'un seul fichier source, qui contiendrait par exemple des commandes du type Et c'est lors de la compilation que, par l'entreprise de quelque makefile (ce mot est très mystérieux pour moi), on déciderait si l'on compile en français strict, en français actuel ou en franglais. Quelque TeXnicien saurait-il m'expliquer comment faire ça ? Posée 28 Jui '17, 20:24 Pathe ♦♦ |
Voici une solution, avec l'extension optional. Ouvrir dans l'éditeur Overleaf
\documentclass[french]{article} \usepackage{lmodern} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{babel} \usepackage{optional} \newcommand{\selecteur}[3]{% \opt{fr}{#1}% \opt{en}{#2}% \opt{fe}{#3}} \begin{document} Il s'agirait de n'avoir qu'un seul fichier source, qui contiendrait par exemple des commandes du type \selecteur{volet de démarrage à froid}{starter}{choke} \end{document} À compiler en utilisant la commande Remarque 1 Remarque 2 le nom de commande Remarque 3 On peut remplacer
mais il faut alors remplacer Deuxième solution (sans extensions supplémentaires) Ouvrir dans l'éditeur Overleaf
\documentclass[french]{article} \usepackage{lmodern} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{babel} \newcounter{fr} \providecommand\lan{1}% par défault c'est (1) fr strict \setcounter{fr}{\lan} \makeatletter \let\selecteur\@nameuse \newcommand{\mtselecteur}[3]{% %\mtselecteur{franglais}{fr strict}{fr actuel} \ifcase\value{fr}\or \@namedef{#1}{#2}\or% si 1 fr strict \@namedef{#1}{#3}\or% si 2 fr actuel \@namedef{#1}{#1}\fi}% si 3 franglais \makeatother \mtselecteur{choke}{volet de démarrage à froid}{starter} \begin{document} \tableofcontents \section{\selecteur{choke}} Il s'agirait de n'avoir qu'un seul fichier source, qui contiendrait par exemple des commandes du type \selecteur{choke} mais \end{document} À compiler avec la commande Les différentes versions sont données au préambule (ou n'importe où avant l'utilisation)
comme dans Publiée 29 Jui '17, 00:19 touhami Le soin que vous mettez à fournir une explication, tant claire que détaillée, est remarquable.
(29 Jui '17, 00:45)
Pathe ♦♦
J'ai tenté la compilation. Malheureusement, j'obtiens : Ouvrir dans l'éditeur Overleaf $ pdflatex \def\UseOption{fe} \input{monfichier.tex} This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) (preloaded format=pdflatex) restricted \write18 enabled. entering extended mode ! I can't find file `defUseOption{fe}'. <*> defUseOption{fe} input{monfichier.tex} (Press Enter to retry, or Control-D to exit) Please type another input file name:
(29 Jui '17, 07:46)
Pathe ♦♦
Je suis sous windows, ça marche pour moi, mais je ne sait pas pour les autres systèmes. Pouvez vous essayer
(29 Jui '17, 09:54)
touhami
Cela fonctionne parfaitement (je me sers de linux et du shell
(29 Jui '17, 12:04)
Pathe ♦♦
|
il y a l'extension optional.
faire ça en LaTeX n'est peut être pas la meilleure idée. Il ne suffit pas toujours de changer des mots isolés. Personnellement je scripterais. Je placerais les parties à changer entre balises. Un premier script créerait une liste des expressions à remplacer. Cette liste serait éditée pour ajouter le remplacement proposé. Une recherche et remplacement utilisant cette liste fait le travail. sed peut faire ça. On peut aussi faire ça avec quelques lignes de code Elisp dans Emacs. Emacs permet même d'adapter la chaîne de remplacement "à la volée"
Merci pour votre contribution, mais je n'ai guère envie de scripter. La liste des expressions à remplacer serait évidemment précieuse, mais j'ai envie de taper du texte courant et pas des chaînes à remplacer.
En revanche, je serais heureux de piger comment sortir de mon fichier la liste des correspondances entre les différentes expressions ! Cela fera peut-être l'objet d'une nouvelle question.