diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/drac/drac-fr.dtx |
Initial commit
Diffstat (limited to 'macros/latex/contrib/drac/drac-fr.dtx')
-rw-r--r-- | macros/latex/contrib/drac/drac-fr.dtx | 361 |
1 files changed, 361 insertions, 0 deletions
diff --git a/macros/latex/contrib/drac/drac-fr.dtx b/macros/latex/contrib/drac/drac-fr.dtx new file mode 100644 index 0000000000..931fa59eb8 --- /dev/null +++ b/macros/latex/contrib/drac/drac-fr.dtx @@ -0,0 +1,361 @@ +% \iffalse meta-comment +% -*- coding: iso-8859-15 -*- +% -------------------------------------------------------------------- +% +% Copyright (C) 2004, 2008 by Josselin Noirel et Yvon Henel +% +% Y. Henel dit « le TeXnicien de surface » +% <le.texnicien.de.surface@wanadoo.fr> +% +% -------------------------------------------------------------------- +% +% This file may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, either version 1.2 of this license +% or (at your option) any later version. The latest version of this +% license is in: +% +% <URL: http://www.latex-project.org/lppl.txt > +% +% and version 1.2 or later is part of all distributions of LaTeX +% version 1999/12/01 or later. +% +% -------------------------------------------------------------------- +% \fi +% +% \iffalse +%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01] +%<package>\def\fileversion{v1} +%<package>\def\filedate{2008/08/14} +%<package>\def\fileinfo{fichier drac.sty par J. Noirel et Y. Henel} +%<package>\ProvidesPackage{drac} +%<package> [\filedate\space\fileversion\space\fileinfo] +% +%<*driver> +\documentclass[a4paper]{ltxdoc} +\usepackage{drac} +\usepackage{url,array,xspace} +\usepackage[latin9]{inputenc} +\usepackage[T1]{fontenc} +\IfFileExists{lmodern.sty}{\usepackage{lmodern}}{} +\usepackage{ifpdf} +\usepackage{textcomp} +\usepackage{calc} +\let\cs=\relax +\DeclareRobustCommand*{\cs}[1]{{\normalfont\ttfamily\char`\\#1}} +\renewcommand*{\meta}[1]{{\normalfont\textlangle{\itshape #1\/}\textrangle}} +\newcommand*{\fctt}{{\normalfont\ttfamily fr.comp.text.tex}} +\makeatletter +\DoNotIndex{\@tempa,\@tempb,\@tempc,\csname,\endcsname,\noexpand,\def,^^A + \edef,\ifx,\else,\endinput,\expandafter,\fi,\let,\newcommand,\relax,^^A + \string,\@ifstar} +\makeatother +\usepackage[english,frenchb]{babel} +% Commentez la ligne suivante pour avoir un document avec le code commenté +\OnlyDescription +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\GlossaryPrologue{% + \section*{{Changements}}} +\IndexPrologue{\section*{Index}% + Les nombres en italique renvoient à la page où l'entrée est décrite; les + nombres soulignés renvoient à la ligne de code de la définition; les + nombres en caractères romains renvoient à la ligne de code où l'entrée est + utilisée.} +\newcommand\BOP{\discretionary{}{}{}} +\begin{document} +\DocInput{drac-fr.dtx} +\end{document} +%</driver> +% \fi +% \CheckSum{72} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% \changes{v0}{2004/04/22}{A failli être la première version publique} +% \changes{v0.1}{2004/05/17}{A manqué de peu d'être la première +% version publique} +% \changes{v0.1}{2004/05/17}{Ajout de \cs{ReDeclareRobActChar}} +% \changes{v1}{2008/08/14}{1\iere version publique} +% \GetFileInfo{drac.sty} +% +% \title{Le module \textsf{drac}\thanks{Ce document correspond au +% fichier \textsf{drac}~\fileversion, du \filedate.}} +% \author{Josselin Noirel et Yvon Henel} +% +% \maketitle +% \begin{abstract} +% Ce module définit \cs{DeclareRobustActChar} et +% \cs{ReDeclareRobActChar}. +% +% On utilise \cs{DeclareRobustActChar} comme +% \cs{DeclareRobustCommand} mais elle protège le caractère actif, +% voir~\path{ltdefns.dtx} dans \path{/latex/base/}. Cela permet, par +% exemple, d'écrire ce caractère dans un fichier auxiliaire sans +% qu'il soit développé. Il est donc devenu \og robuste\fg au sens +% des arguments \og mobiles\fg de \LaTeX. +% +% \cs{ReDeclareRobActChar} permet de redéfinir le caractère actif +% défini préalablement par +% \cs{Declare}\BOP|Robust|\BOP|Act|\BOP|Char| à la manière de +% \cs{renewcommand}. +% \end{abstract} +% \begin{otherlanguage}{english} +% \begin{abstract} +% This package provides \cs{DeclareRobustActChar} and +% \cs{Re}\BOP|Declare|\BOP|Rob|\BOP|Act|\BOP|Char| macros. +% +% You should have downloaded with this file a file +% \path{drac-en.dtx} and a file \path{drac.pdf} which +% give the English documentation of this package. +% \end{abstract} +% \end{otherlanguage} +% \tableofcontents +% +% \section{Introduction} +% \begingroup\footnotesize{} +% Lorsqu'elle apparut pour la première fois, le \oldstylenums{8}~avril +% \oldstylenums{2004}, sur \fctt{} dans le fil de discussion \og la +% question à \oldstylenums{100}~euros\fg, le nom de la macro était +% \cs{DeclareRobustActiveCharacter} qui avait l'avantage d'être +% totalement descriptif mais l'inconvénient d'être long. Pour alléger +% quelque peu le travail du codeur mais \emph{surtout} pour éviter un +% joyeux bazar dans l'index de cette documentation, j'ai pris sur moi +% de la renommer \cs{DeclareRobustActChar}. +% +% À la lecture du fil mentionné ci-dessus, on s'appercevra sans peine +% que ce que je --- je c.-à-d. Y. Henel, \TeX nicien de surface --- +% fis ce fut de passer commande d'un code que Josselin Noirel me +% fournit très aimablement et tout aussi efficacement. +% +% Je fis mumuse un moment avec le code fourni par Josselin puis +% quelques mois plus tard la vie m'asséna un de ces coups dont la +% fréquentation assidue des classiques auraient du me prévenir mais, +% pour citer un de ses fameux (pseudo?) proverbe chinois, \og +% l'expérience n'éclaire que le chemin parcouru\fg. Ce qui fait que +% même si Josselin, de son côté assez occupé avec la fin de ses +% études, me fit parvenir, dans un courriel de février +% \oldstylenums{2005}, une \oldstylenums{2}\ieme version dans laquelle +% apparut \cs{ReDeclareRobActChar} dans un courriel de février +% \oldstylenums{2005} je n'étais guère en état d'en tirer profit. +% +% Puis le temps a passé\dots j'ai sorti la tête de l'eau et Josselin +% est parti vers d'autres cieux. +% +% Le code existe et fonctionne. Alors, plutôt que de le laisser moisir +% dans un coin obscur de mon disque dur, et puisque j'ai passé +% quelques heures à mettre à jour mes extensions, je me suis décidé à +% lancer \texttt{drac} dans le vaste monde. Je me contente de fournir +% l'emballage et porter le bébé dans mes bras velus jusqu'au serveur +% CTAN le plus proche. +% +% On aura compris que je ne m'engage pas du tout à assurer la +% maintenance de ce code si jamais le besoin s'en faisait +% sentir. J'arrive à peu près à comprendre ce que fait Josselin en +% suivant pas à pas ses explications mais je suis bien incapable de me +% hausser à de telles hauteurs. Il est donc temps maintenant de céder +% le clavier à Josselin. +% +% \hspace*{\stretch{4}}Le \TeX nicien de surface\hspace*{\stretch{1}} +% \endgroup +% +% \section{Utilisation} +% +% +% La macro \cs{DeclareRobustActChar} a la syntaxe habituelle des +% \cs{newcommand} et cons½urs: elle admet une forme étoilée selon +% que le caractère actif acceptera ou non des arguments \cs{long}s +% (c.-à-d. un argument pourra comporter une fin de paragraphe); +% ensuite vient le caractère actif; un nombre optionnel d'arguments, +% un argument optionnel qui est la valeur optionnelle du premier +% argument, enfin la définition proprement dite. Voilà les syntaxes +% valides: ^^A +% \begin{list}{}{\ttfamily\leftmargin=\leftmargini}\item +% \cs{DeclareRobustActChar}\marg{caractère actif}[\(n\)]\%\\ +% \ \ \oarg{valeur par défaut du premier argument}\marg{définition}\par +% \cs{DeclareRobustActChar}\marg{caractère actif}[\(n\)]\marg{définition}\par +% \cs{DeclareRobustActChar}\marg{caractère actif}\marg{définition}\par +% \cs{DeclareRobustActChar}*\marg{caractère actif}[\(n\)]\%\\ +% \ \ \oarg{valeur par défaut du premier argument}\marg{définition}\par +% \cs{DeclareRobustActChar}*\marg{caractère actif}[\(n\)]\marg{définition}\par +% \cs{DeclareRobustActChar}*\marg{caractère actif}\marg{définition} +% \end{list} +% ^^A +% Suite à quoi le caractère actif pourra être utilisé dans les +% arguments mobiles (dans les arguments de \cs{caption} par exemple) +% et dans les autres cas qui requièrent des commandes robustes +% (\cs{protected@edef}, \cs{protected@write}, etc.) +% +% De même \cs{ReDeclareRobActChar} a la syntaxe de \cs{renewcommand} +% d'où les syntaxes possibles: +% ^^A +% \begin{list}{}{\ttfamily\leftmargin=\leftmargini}\item +% \cs{ReDeclareRobActChar}\marg{caractère actif}[\(n\)]\%\\ +% \ \ \oarg{valeur par défaut du premier argument}\marg{définition}\par +% \cs{ReDeclareRobActChar}\marg{caractère actif}[\(n\)]\marg{définition}\par +% \cs{ReDeclareRobActChar}\marg{caractère actif}\marg{définition}\par +% \cs{ReDeclareRobActChar}*\marg{caractère actif}[\(n\)]\%\\ +% \ \ \oarg{valeur par défaut du premier argument}\marg{définition}\par +% \cs{ReDeclareRobActChar}*\marg{caractère actif}[\(n\)]\marg{définition}\par +% \cs{ReDeclareRobActChar}*\marg{caractère actif}\marg{définition} +% \end{list} +% ^^A +% \StopEventually{\PrintChanges\PrintIndex} +% \section{Le code} +% \begin{macro}{\DeclareRobustActChar} +% Nous commençons par définir \cs{DeclareRobustActChar} (qui ne fait +% pas grand-chose en réalité). +% ^^A +% \begin{macrocode} +% \iffalse +%<*package> +% \fi +\newcommand*{\DeclareRobustActChar}{ + \@ifstar{% + \def\@tempc{\newcommand*}\@declarerobustactchar}{% + \def\@tempc{\newcommand}\@declarerobustactchar}% +} +% \end{macrocode} +% \end{macro} +% ^^A +% \begin{macro}{\ReDeclareRobActChar} +% Et dans la foulée nous définissons \cs{ReDeclareRobActChar} (qui, +% comme la précédente, ne fait pas grand-chose mais légèrement +% différemment). +% ^^A +% \begin{macrocode} +\newcommand*{\ReDeclareRobActChar}{\@ifstar{% + \def\@tempc{\renewcommand*}\@declarerobustactchar}{% + \def\@tempc{\renewcommand}\@declarerobustactchar}% +} +% \end{macrocode} +% ^^A +% \cs{@ifstar} teste la présence d'une étoile. Selon le cas on +% définit \cs{@tempc} en conséquence. \cs{@tempc} sera utilisé à +% terme pour prendre en charge la définition. On appelle ensuite +% \cs{@declarerobustactchar}. +% \end{macro} +% \begin{macro}{\@declarerobustactchar} +% Vient la macro qui abat vraiment du travail: +% \cs{@declarerobustactchar}. Elle prend un argument qui est le +% caractère actif (qui est supposé être \emph{déjà} actif au moment de +% l'appel à \cs{DeclareRobustActChar}). +% ^^A +% \begin{macrocode} +\newcommand*{\@declarerobustactchar}[1]{% +% \end{macrocode} +% ^^A +% On conserve les valeurs actuelles de \cs{protect} et +% \cs{@typeset@protect} pour les restituer plus tard. +% ^^A +% \begin{macrocode} + \let\@tempa=\protect + \let\@tempb=\@typeset@protect +% \end{macrocode} +% ^^A +% \cs{protect} et \cs{@typeset@protect} sont définis équivalents à +% \cs{relax} pour qu'ils ne \og bougent\fg pas pendant le processus de +% développement dans \cs{edef}. +% ^^A +% \begin{macrocode} + \let\protect=\relax + \let\@typeset@protect\relax % Devrait être le cas +% \end{macrocode} +% ^^A +% On définit le caractère actif. Attention s'il n'est pas actif au +% moment de l'utilisation de \cs{DeclareRobustActChar} on risque +% fortement de voir \TeX{} râler à cause d'une commande +% \og inaccessible\fg. Le \meta{caractère actif} prend comme +% définition: +% ^^A +% \begin{flushleft}\begin{tabular}{@{}l@{}l@{}} +% \meta{caractère actif} $\stackrel{\mathrm{def}}{\equiv}$ \hskip0pt & +% \cs{ifx}\cs{protect}\cs{@typeset@protect} \\ +% & \ttfamily\ \ \cs{expandafter}\cs{DRAC@real@\meta{caractère actif}} \\ +% & \cs{else} \\ +% & \ttfamily\ \ \cs{protect}\meta{caractère actif} \\ +% & \cs{fi} \\ +% \end{tabular}\end{flushleft} +% ^^A +% Le test \cs{ifx} permet de connaître si l'on est dans un contexte +% d'argument mobile ou non. Le résultat du test est \og vrai\fg si ce +% n'est pas le cas; alors \cs{DRAC@real@\meta{caractère actif}} est +% exécutée: c'est la commande effectrice qui contiendra dans quelque +% temps la \meta{définition} dont nous parlions plus haut. +% Dans le cas où le test est \og faux\fg, étant dans un contexte +% d'argument mobile on replace simplement le \meta{caractère actif} en +% le \cs{protégeant}. +% Le \cs{expandafter} est là pour faire disparaître la portion de code +% \og \cs{else}\linebreak[0]\dots\linebreak[0]\cs{fi}\fg. +% ^^A +% \begin{macrocode} + \edef#1{% + \noexpand\ifx\protect\@typeset@protect + \noexpand\expandafter + \expandafter\noexpand + \csname DRAC@real@\string#1\endcsname + \noexpand\else % \noexpand\expandafter [JN : pas bon] + \protect % \noexpand\expandafter [JN : idem] + \noexpand#1% + \noexpand\fi + }% +% \end{macrocode} +% ^^A +% Les valeurs initiales de \cs{protect} et \cs{@typeset@protect} sont +% restituées. +% ^^A +% \begin{macrocode} + \let\protect=\@tempa + \let\@typeset@protect=\@tempb +% \end{macrocode} +% ^^A +% Maintenant on définit avec \cs{newcommand} --- par l'intermédiaire +% de \cs{@tempc}, vous souvenez-vous? --- la commande effectrice +% \cs{DRAC@read@\meta{caractère actif}}. C'est l'utilisation de +% \cs{newcommand} qui permet d'en propager la syntaxe. Mais on notera +% que cela interdit notamment la redéfinition de la commande +% (autrement dit il se pourrait que le package s'améliore encore). +% ^^A +% \begin{macrocode} + \expandafter\@tempc\csname DRAC@real@\string#1\endcsname +} +% \end{macrocode} +% ^^A +% \og FIN\fg +% ^^A +% \begin{macrocode} +\endinput +% \end{macrocode} +% \end{macro} +% ^^A +% \section{Papillons et limitations} +% Pas de bogue connu à ce jour. Les limitations elles sont +% nombreuses: ce package n'a pas de grande prétention. +% +% Bien que les macros ici définies puissent \emph{a priori} +% fonctionner avec les commandes aussi, nous recommandons d'utiliser +% \cs{DeclareRobustCommand} dans ce but. +% \Finale +% \iffalse +%</package> +% \fi +\endinput +%%% Local Variables: +%%% mode: doctex +%%% TeX-master: t +%%% fill-column: 70 +%%% End: |