[latexrefman-commits] [SCM] latexrefman updated: r767 - trunk

vincentb1 at gnu.org.ua vincentb1 at gnu.org.ua
Sun Mar 29 15:00:16 CEST 2020


Author: vincentb1
Date: 2020-03-29 16:00:16 +0300 (Sun, 29 Mar 2020)
New Revision: 767

Modified:
   trunk/latex2e-fr.texi
Log:
Insert & translates nodes ?\194?\171?\194?\160\openin & \openout?\194?\160?\194?\187, ?\194?\171?\194?\160\read?\194?\160?\194?\187 & ?\194?\171?\194?\160\write?\194?\160?\194?\187

Subnodes of ?\194?\171?\194?\160\write?\194?\160?\194?\187, i.e.  ?\194?\171?\194?\160\message?\194?\160?\194?\187, ?\194?\171?\194?\160\wlog?\194?\160?\194?\187, and
?\194?\171?\194?\160\write18?\194?\160?\194?\187, are just inserted w/o translation for the time being.


Modified: trunk/latex2e-fr.texi
===================================================================
--- trunk/latex2e-fr.texi	2020-03-29 12:42:17 UTC (rev 766)
+++ trunk/latex2e-fr.texi	2020-03-29 13:00:16 UTC (rev 767)
@@ -13092,11 +13092,148 @@
 @cindex entrée/sortie console
 
 @menu
+* \openin & \openout::  Ouvrir un fichier.
+* \read::               Lire du texte à partir d'un fichier.
 * \typein::             Lire du texte à partir de la console.
 * \typeout::            Écrire du texte vers la console.
+* \write::              Écrire du texte dans un fichier ou le terminal.
 @end menu
 
+ at node \openin & \openout
+ at section @code{\openin} & @code{\openout}
 
+ at findex \openin
+ at findex \openout
+ at findex \closein
+ at findex \closeout
+ at cindex file, opening
+ at cindex file, closing
+ at cindex open a file
+
+Synopsis :
+
+ at example
+\openin at var{numéro}=@var{nomfichier}
+ at end example
+
+ou :
+
+ at example
+\openout at var{numéro}=@var{nomfichier}
+ at end example
+
+Ouvre un fichier pour y lire, ou pour y écrire.  Le @var{numéro} doit
+être entre 0 et 15, comme dans @code{\openin3} (dans Lua at LaTeX{} @var{numéro}
+peut être entre 0 et 255).
+
+Ici @TeX{} ouvre le fichier le fichier @file{presidents.tex} en lecture.
+
+ at example
+\newread\fichierpresidents
+\openin\fichierpresidents=presidents
+\typeout@{fichierpresidents vaut \the\fichierpresidents@}
+\read\fichierpresidents to\presidentligne
+\typeout@{\presidentligne@}
+ at end example
+
+ at noindent
+La commande @code{\newread} alloue des numéros de flux d'entrée de 0
+à 15 (il y a aussi une commande @code{\newwrite}).  La variable
+ at code{\fichierpresidents} est plus facile à mémoriser mais sous le capot
+ce n'est rien de plus qu'un numéro ; le premier @code{\typeout} donne
+queleque-chose du genre de @samp{fichierpresidents vaut 1}.  De plus,
+ at code{\newread} garde la trace de l'allocation de sorte que si vous en
+utilisez trop alors vous obtiendrez une erreur du genre de @samp{! No
+room for a new \read}.  Le second @code{\typeout} produit la première
+ligne du fihcier, quelque-chose du genre de @samp{1 Bonaparte,
+Louis-Napoléon}.
+
+D'ordinaire @TeX{} n'essaie pas d'ouvrir le fichier jusqu'à la prochaine
+éjection de page. Pour changer cela, utilisez
+ at code{\immediate\openin at var{numéro}=@var{nomfichier}} ou
+ at code{\immediate\openout at var{numéro}=@var{nomfichier}}.
+
+Fermez les fichiers avec @code{\closein at var{numéro}} et
+ at code{\closeout at var{numéro}}.
+
+La façon dont @LaTeX{} manipule les noms de fichiers varie selon les
+distributions, et peut même varier d'une version à l'autre d'une même
+distribution.  Si le nom de fichier n'a pas d'extension alors @TeX{} y
+ajoute un @file{.tex}. L'exemple suivant crée @file{presidents.tex}, y
+écrit une ligne, et le ferme.
+
+ at example
+\newwrite\fichierpresidents
+\openout\fichierpresidents=presidents
+\write\fichierpresidents@{1 Bonaparte, Louis-Napoléon@}
+\closeout\fichierpresidents
+ at end example
+
+ at noindent
+Maus les noms de fichier avec un point peuvent causer des problèmes : is
+ at TeX{} tombre sur un @var{nomfichier} comme @file{presidents.dat} il se
+peut qu'il cherche d'abord @file{presidents.dat.tex} et ensuite
+ at file{presidents.dat}, ou bien le contraire.  La documentation de votre
+distribution devrait en dire plus, et si cela fonctionne pour vous tant
+mieux, mais pour assurer une portabilité complète le mieux et d'utiliser
+des noms de fichier ne contenant que les vingt-six lettres ASCII
+(insensible à la casse case-sensitive) et les dix chiffres, ainsi que
+les tiret de 8 @samp{_} et de 6 @samp{-}, et en particulier sans point
+ni espace.
+
+Pour @code{\openin}, si @TeX{} ne peut pas trouver le fichier alors il
+ne produit pas une erreur.  Il ne fait que considérer que ce flux n'est
+pas ouvert (ce qu'on peut vérifier avec @code{\ifeof} ; on peut
+également recourir à la commande @code{\InputIfFileExists}, @pxref{Class
+and package commands}).  Si vous essayer d'utiliser le même numéro deux
+fois, @LaTeX{} ne produit pas d'erreur.  Si vous essayer d'utiliser un
+mauvais numéro, alors vous obtiendrez un message d'erreur du genre de
+ at samp{!  Bad number (16).  <to be read again> = l.30 \openin16=test.jh}.
+
+ at node \read
+ at section @code{\read}
+
+ at findex \read
+ at cindex fichier, lecture d'un
+ at cindex lire un fichier
+ at cindex lecture d'un fichier
+
+Synopsis :
+
+ at example
+\read at var{numéro} to at var{macro}
+ at end example
+
+Fait que la commande @var{macro} contienne la ligne suivante d'entrée du
+flux de texte @var{numéro}, comme dans @code{\read5 to\data}.
+
+L'exemple suivant ouvre le fichier @file{mel.tex} en lecture, me le
+contenu de la première ligne dans la commande @code{\courriel}, et
+ensuite ferme le fichier.
+
+ at example
+\newread\fichierreception
+\openin\fichierreception=mel
+\read\fichierreception to\courriel
+\typeout@{Adresse mél : \courriel@}
+\closein\fichierreception
+ at end example
+
+Si @var{numéro} est hors de l'intervalle de 0 à 15 ou si aucun fichier
+avec ce numéro n'est ouvert, ou si le fichier est à sa fin, alors
+ at code{\read} prend son entrée à partir du terminal.  Notez, cependant,
+que la méthode naturelle en @LaTeX{} de prendre en entrée à partir du
+terminal est @code{\typein} (@pxref{\typein}).
+
+Pour lire un fichier entier en une fois utilisez @code{\input}
+(@pxref{\input}) ou @code{\include} (@pxref{\include & \includeonly}).
+
+ at PkgIndex{datatool}
+
+Une raison usuelle de vouloir lire d'un fichier de données est de faire
+du publipostage.  CTAN a plusieurs paquetage pour cela ; parmi lesquels
+ at file{datatool}.
+
 @node \typein
 @section @code{\typein[@var{cmd}]@{@var{msg}@}}
 @findex \typein
@@ -13138,6 +13275,330 @@
 @code{msg} provoque un unique espace tapé, indépendant des espaces qui
 l'entourent. Un @code{^^J} dans @code{msg} tape un saut à la ligne.
 
+ at node \write
+ at section @code{\write}
+
+ at findex \write
+
+Synopsis :
+
+ at example
+\write at var{numéro}@{@var{chaîne}@}
+ at end example
+
+Write @var{chaîne} dans le fichier journal (@file{.log}), vers le
+terminal, ou dans un fichier ouvert par @code{\openout}.  Par exemple,
+ at code{\write6} écrit vers le flux textuel numéro 6
+
+Si le code suivant apparaît dans le fichier @file{@var{fichierbase}.tex}
+alors cela ouvre le fichier @file{@var{fichierbase}.jh}, y écrit
+ at samp{Bonjour tout le monde !} et un saut le ligne, et ferme ce fichier.
+
+ at example
+\newwrite\monfichier
+\immediate\openout\monfichier=\jobname.jh   % \jobname le the nom du fichier courant
+  ...
+\immediate\write\monfichier@{Bonjour tout le monde !@}
+  ...
+\immediate\closeout\monfichier
+ at end example
+
+ at noindent
+Le @code{\newwrite} alloue un numéro de flux, en lui donnant un nom
+symbolique pour se faciliter la vie, de sorte que @code{test
+\newwrite\monfichier\the\monfichier} produit quelque-chose du genre de
+ at samp{test 3}.  Ensuite @code{\openout} associe le numéro de flux avec
+le nom de fichier fourni.  Avec ceci, @code{\write3} place la chaîne
+dans le fichier.
+
+Typiquement @var{numéro} est compris entre 0 et 15 parce que typiquement
+les auteurs @LaTeX{} suivent l'exemple précédent et le numéro est alloué
+par le système.  Si @var{numéro} est hors de l'intervalle de 0 à 15 ou
+si il n'est pas associé à un fichier ouvert alors @LaTeX{} écrit
+ at var{chaîne} vers le fichier journal.  Si @var{numéro} est positif alors
+ne plus @LaTeX{} écrit @var{chaîne} vers le terminal. Ainsi, @code{test
+\write-1@{Bonjour tout le monde !@}} place @samp{Bonjour tout le
+monde !} suivi d'un saut de ligne dans le fichier journal (c'est cez que
+la commande @code{\wlog} fait ; @pxref{\wlog}).  Et
+ at code{\write100@{Bonjour tout le monde !@}} met la même chose dans le
+fichier jornal mais aussi met @samp{Bonjour tout le monde !} suivi d'un
+saut de ligne dans la sortie terminal.  (Mais 16, 17, et 18 sont des
+valeurs spéciales de @var{numéro} ; voir ci-dessous.)
+
+Dans Lua at TeX{}, au lieu de 16 flux de sortie il y en a 256
+(@pxref{@TeX{} engines}).
+
+On écrit dans le fichier @file{.aux} courant qui est associé au fichier
+principal ou au fichier inclus courant, en utilisant
+ at code{\write\@@auxout@{@var{chaîne}@}}.  On écrit vers le fichier
+ at file{.aux} principal en utilisant
+ at code{\write\@@mainaux@{@var{chaîne}@}}.
+
+ at c Credit: David Carlisle https://tex.stackexchange.com/a/115933/121234
+Par défaut @LaTeX{} n'écrit pas @var{chaîne} vers le fichier
+immediatement.  C'est ainsi parce que, par exemple, vous pourriez
+utiliser @code{\write} pour sauvegarder le numéro de page courant mais
+au moment où @TeX{} rencontre une commande @code{\write} il pourrait ne
+pas être encore sûr de quelle page est-ce, puisque il n'a pas encore
+découpé la sortie en pages.  Ainsi vous utilisez @code{\write} dans l'un
+des trois contextes suivants.
+
+ at example
+\immediate\write\@@auxout@{@var{chaîne}@}
+\write\@@auxout@{@var{chaîne}@}
+\protected@@write\@@auxout@{@}@{@var{chaîne}@}
+ at end example
+
+Avec le premier, @LaTeX{} écrit @var{chaîne} vers le fichier.  Toutes
+les macros dans @var{chaîne} sont développés (exactement comme dans
+ at code{\edef} de sorte que pour empêcher le développement vous pouvez
+utiliser @code{\noexpand} ou un @code{toks}, mais avec la différence que
+vous devez utiliser @code{#} au lieu de @code{##}).  Avec le deuxième,
+ at var{chaîne} est stocké dans la liste courante des choses (comme un
+« machin » de @TeX{}) et conservé jusqu'à ce que la page soit éjectée et
+de la même manière les macros ne sont pas développées jusqu'à
+l'éjection.  Le troisième, @code{\protected@@write}, est sembable au
+deuxième sauf que vous pouvez utiliser @code{\protect} sur les macros
+fragiles. Le premier argument qui est en plus vous permet d'insérer
+locallement des définitions supplémentaires pour que plus de macros
+soient sûre ou aient une définition spéciale pendant l'écriture.
+
+Dans l'exemple suivant @var{chaîne} contient une séquence de contrôle.
+
+ at example
+\newwrite\fichierjh
+\openout\fichierjh=test.jh
+\newcommand@{\triplex@}@{XXX@}
+\write\fichierjh@{test \triplex test@}
+ at end example
+
+ at noindent
+Ceci résulte en ce que le fichier @file{test.jh} contienne @samp{test
+XXXtest} suivi d'un saut de ligne.
+
+Les cas où @var{numéro} vaut 16, 17, ou 18 sont spéciaux.  À cause du
+comportement de @code{\write} quand @var{numéro} est hors de
+l'intervalle de 0 à 15 qu'on a déjà décrit plus haut, dans Plain @TeX{}
+ at code{\write16} et @code{\write17} étaient parfois utilisés pour écrire
+dans le fichier journal et le terminal.  Notez que dans @LaTeX{} la
+façon naturelle de faire ceci est d'utiliser @code{\typeout}
+(@pxref{\typeout}).  La commande @code{\write18} est encore plus
+spéciale ; les systèmes @TeX{} modernes l'utilisent pour passer des
+commandes au système d'exploitation (@pxref{\write18}).
+
+D'ordinaire @code{\write} produit en sortie une unique ligne. On y
+rajoute un saut de ligne avec @code{^^J}.  Ainsi, l'exemple suivant
+produit deux lignes dans le fichier journal.
+
+ at example
+\wlog@{Les lignes parallèles ont beaucoup en commun.^^JMais elles ne se
+rencontrent jamais.@}
+ at end example
+
+La possibilité d'écrire dans des fichier soulève des problèmes de
+sécurtié. Si vous compilez un fichier @LaTeX{} téléchargé et qu'il
+écrase votre fichier de mot de passe alors vous serez à juste titre
+embêté. Les systèmes @TeX{} par défaut ne vous autorise à ouvrir en
+écriture que les fichiers qui sont dans le répertoire courant ou dans un
+sousrépertoire. L'exemple suivant
+
+ at example
+\newwrite\fichierjh
+\openout\fichierjh=../test.jh
+ at end example
+
+ at noindent
+produit une erreur du genre de @samp{Not writing to ../test.jh
+(openout_any = p). !  I can't write on file `../test.jh'}.  Notez qu'il
+est possible d'avoir une telle erreur lorsqu'on essaie d'utiliser une
+commande telle que @code{\include@{../filename@}} puisque @LaTeX{} va
+essayer d'ouvrir @file{../filename.aux}.  La solution la plus simple est
+de placer les fichiers inclus dans le même répertoire que le fichier
+principal, ou dans des sous-répertoire.
+
+ at PkgIndex{answers}
+Un cas usuel dans lequel des auteurs tentent d'écrire dans un fichier
+qui n'est pas encore fourni par @LaTeX{} est pour les réponse à des
+exerccies, ou dans quelque autre situation où vous désirer écrire en
+sortie verbatim, dans développer les macros.  CTAN a plusiuers
+paquetages pour cela ; parmi lesquels @file{answers}.
+
+ at menu
+* \message::          Write part of a line to log file and terminal.
+* \wlog::             Write to the log file.
+* \write18::          Write to the operating system.
+ at end menu
+
+
+ at node \message
+ at c xxx À traduire
+ at subsection @code{\message}
+
+ at findex \message
+
+Synopsis:
+
+ at example
+\message@{@var{chaîne}@}
+ at end example
+
+Write @code{string} to the log file and the terminal.
+
+Typically, @LaTeX{} authors use @code{\typeout} (@pxref{\typeout}). It
+allows you to use @code{\protect} on any fragile commands in
+ at var{chaîne} (@pxref{\protect}).  But @code{\typeout} always inserts a
+newline at the end of @var{chaîne} while @code{\message} does not, so
+the latter can be useful.
+
+With this example document body.
+
+ at example
+before\message@{One Two@}\message@{Three@}\message@{Four^^JI@}
+\message@{declare a thumb war.@}After
+ at end example
+
+under some circumstances (see below) @LaTeX{} writes the following to
+both the terminal and the log file.
+
+ at example
+One Two Three Four
+I declare a thumb war.
+ at end example
+
+ at noindent
+Note that @code{^^J} produces a newline.  Also, in the output document,
+between @samp{before} and @samp{After} will be a single space (from
+the end of line following @samp{I@}}).
+
+While @code{\message} allows you more control over formatting
+interaction lines, a gotcha is that @LaTeX{} may mess up your formatting
+because it inserts line breaks depending on what it has already put
+out. Contrast this document body, where the @samp{Two} has moved, to the
+one given above.
+
+ at example
+before\message@{One@}\message@{Two Three@}\message@{Four^^JI@}
+\message@{declare a thumb war.@}After
+ at end example
+
+This can happen: when @LaTeX{} is outputting the messages to the
+terminal, now the message with @samp{One} is shorter and it fits at the
+end of the output terminal line, and so @LaTeX{} breaks the line between
+it and the @samp{Two Three}.  That line break appears also in the log
+file.  This line break insertion can depend on, for instance, the length
+of the full path names of included files.  So producing finely-formatted
+lines in a way that is portable is hard.
+
+
+ at node \wlog
+ at c xxx À traduire
+ at subsection @code{\wlog}
+
+ at findex \wlog
+
+Synopsis:
+
+ at example
+\wlog@{@var{chaîne}@}
+ at end example
+
+Write @code{string} to the log file.
+
+ at example
+\wlog@{Did you hear about the mathematician who hates negatives?@}
+\wlog@{He'll stop at nothing to avoid them.@}
+ at end example
+
+Ordinarily @var{chaîne} appears in a single separate line.  Use
+ at code{^^J} to insert a newline.
+
+ at example
+\wlog@{Helvetica and Times Roman walk into a bar.@}
+\wlog@{The barman says,^^JWe don't serve your type.@}
+ at end example
+
+
+ at node \write18
+ at subsection @code{\write18}
+ at c xxx À traduire
+ at findex \write18
+ at cindex external commands
+ at cindex commands, run from LaTeX
+ at c Derived from: Joseph Wright: https://tex.stackexchange.com/a/20446/121234
+
+Synopsis:
+
+ at example
+\write18@{@var{shell_command}@}
+ at end example
+
+Issue a command to the operating system shell.  The operating system
+runs the command and @LaTeX{}'s execution is blocked until that
+finishes.
+
+ at PkgIndex{Asymptote}
+This
+
+ at example
+\usepackage@{graphicx@}  % in preamble
+  ...
+\newcommand@{\fignum@}@{1@}
+\immediate\write18@{cd pix && asy figure\fignum@}
+\includegraphics@{pix\figure\fignum.pdf@}
+ at end example
+
+ at noindent
+will run @file{Asymptote} on @file{pix/figure1.asy}, so that the
+document can later read in the resulting graphic
+(@pxref{\includegraphics}).  Like any @code{\write}, here @LaTeX{}
+expands macros in @var{shell_command} so that @code{\fignum} is replaced
+by @samp{1}.
+
+Another example is that you can automatically run Bib at TeX{} at the start
+of each @LaTeX{} run (@pxref{Using BibTeX}) by including
+ at code{\immediate\write18@{bibtex8 \jobname@}} as the first line of the
+file.  Note that @code{\jobname} gives the base name of the current
+file.
+
+You sometimes need to do a multi-step process to get the information
+that you want.  This will insert into the input a list of all PDF files
+in the current directory.
+
+ at example
+\immediate\write18@{ls *.pdf > tmp.dat@}
+\input@{tmp.dat@}
+ at end example
+
+The standard behaviour of any @code{\write} is to wait until a page is
+being shipped out before expanding the macros or writing to the stream
+(@pxref{\write}). But sometimes you want it done now.  For this, use
+ at code{\immediate\write18@{@var{shell_command}@}}.
+
+There are obvious security issues with allowing system commands inside a
+ at LaTeX{} file.  If you download a file off the net and it contains
+commands to delete all your files then you would be annoyed. The
+standard settings in modern distributions turn off full shell
+access. You can turn it on, if you are sure the shell commands are safe,
+by compiling with @code{latex --shell-escape @var{nomfichier}} for @TeX{}
+Live or Mac at TeX{} or @code{latex --enable-write18 @var{nomfichier}} for
+MiK at TeX{} (@pxref{Command line options}).
+
+In the place of full shell access, modern distributions by default use a
+restricted version that allows some commands to work, such as those that
+run Metafont to generate missing fonts, even if you do not use the
+ at code{shell-escape} or @code{enable-write18} option. By default this
+list of allowed commands is short and features only commands that are
+under the control of the distribution maintainers (@pxref{Command line
+options}).
+
+Some packages need to run external system commands. For instance
+ at file{sagetex} allows you to have the mathematics software system
+ at i{Sage} do calculations or draw graphs and then incorporate that output
+in your document. For this you must compile with full @code{\write18}
+capability turned on.
+
+
+
 @node Command line
 @chapter Ligne de commande
 @cindex ligne de commande



More information about the latexrefman-commits mailing list.