From ba9765989cdf7729cd58417d41092eeb6f152eaa Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 29 Jul 2020 21:33:43 +0000 Subject: clefval (29jul20) git-svn-id: svn://tug.org/texlive/trunk@55985 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/source/latex/clefval/clefval.dtx | 277 ++++++++++++++------- 1 file changed, 191 insertions(+), 86 deletions(-) (limited to 'Master/texmf-dist/source/latex/clefval/clefval.dtx') diff --git a/Master/texmf-dist/source/latex/clefval/clefval.dtx b/Master/texmf-dist/source/latex/clefval/clefval.dtx index 67bbea73a8e..d8cc603b7c2 100644 --- a/Master/texmf-dist/source/latex/clefval/clefval.dtx +++ b/Master/texmf-dist/source/latex/clefval/clefval.dtx @@ -1,55 +1,51 @@ % \iffalse meta-comment -% -*- mode: LaTeX; coding: iso-8859-15 -*- % -%%%% Copyright (C) 2004 by Josselin Noirel -%%%% and Yvon Henel +%%%% Copyright (C) 2004, 2020 by Josselin Noirel +%%%% and Yvon Henel aka Le TeXnicien de surface %%%% -------------------------------------------------------- % % This file may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either version 1.2 +% conditions of the LaTeX Project Public License, either version 1.3c % of this license or (at your option) any later version. % The latest version of this license is in: % % 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 %\NeedsTeXFormat{LaTeX2e} -%\def\fileversion{v0} -%\def\filedate{2004/05/22} +%\def\fileversion{v0.1} +%\def\filedate{2020/07/27} %\def\fileinfo{d\'efinir et utiliser des paires cle/valeurs} %\def\fileinfo{define and use pair of key/values} %\ProvidesPackage{clefval} % [\filedate\space\fileversion\space\fileinfo] %<*driver> \documentclass[a4paper]{ltxdoc} -\usepackage[latin9]{inputenc} \usepackage[T1]{fontenc} \usepackage{clefval} \usepackage{xspace,url,multicol,ifthen} \IfFileExists{lmodern.sty}{\usepackage{lmodern}}{} -\usepackage[english,frenchb]{babel} +\usepackage[english, main=french]{babel} % commentez la ligne suivante pour avoir un document avec le code -\OnlyDescription +% \OnlyDescription % comment out the preceding line to obtain the full code % with explanations in French only, sorry. \EnableCrossrefs \CodelineIndex \RecordChanges \makeatletter -%%% quelques redéfinition de commande de la classe ltxdoc.cls ou de -%%% l'extension doc.sty pour une documentation en français. +%%% quelques redéfinition de commande de la classe ltxdoc.cls ou de +%%% l'extension doc.sty pour une documentation en français. \GlossaryPrologue{\section*{{Changements -- Changes}}\markboth{{Changements -- Changes}}{{Changements -- Changes}}} \IndexPrologue{\section*{Index}\markboth{Index}{Index}% \begin{Morciau}\selectlanguage{french} - 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.\EnAnglais Numbers written in italic refer to the page where the + 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.\EnAnglais Numbers written in italic refer to the page where the corresponding entry is described; numbers underlined refer to the code line of the definition; numbers in roman refer to the code line where the entry is used.\end{Morciau}} @@ -60,7 +56,7 @@ \special@index{environnements:\levelchar{% \string\ttfamily\space#1}\encapchar main}\@esphack} \makeatother -\def\generalname{Général} +\def\generalname{Général} %%% fin de la francisation \setlength{\columnseprule}{0.5pt} \setlength{\multicolsep}{6pt plus 2.0pt minus 1.5pt} @@ -109,7 +105,17 @@ % % \GetFileInfo{clefval.sty} % -% \changes{v0}{2004/05/20}{1\iere version publique.} +% \changes{v0}{2004/05/20}{1\iere version +% publique. \textit{\foreignlanguage{english}{1st public version.}}} +% \changes{v0.1}{2020/07/27}{Amélioration du message d'erreur dans le +% document. \textit{\foreignlanguage{english}{Improved error message +% in document.}}} +% \changes{v0.1}{2020/07/27}{Version permettant l'utilisation du +% codage utf-8 avec \texttt{pdflatex}, \texttt{lualatex} et +% \texttt{xelatex}. \textit{\foreignlanguage{english}{This version can +% be used in utf-8 encoded source with \texttt{pdflatex}, +% \texttt{lualatex} and \texttt{xelatex}.}}} + % % \DoNotIndex{\newcommand, \renewcommand, \providecommand,^^A % \def, \let,\csname, \endcsname, \afterassignment,^^A @@ -133,7 +139,8 @@ % \textsf{clefval}} % % \author{Le \TeX nicien de -% surface\thanks{\texttt{Yvon.Henel@wanadoo.fr}}\and Josselin Noirel} +% surface\thanks{\texttt{le.texnicien.de.surface@yvon-henel.fr}}\and +% Josselin Noirel} % % \maketitle % @@ -141,68 +148,96 @@ % \label{secIntro} % \noindent\textbf{Description}\DescribeMacro{\TheKey}\DescribeMacro{\TheValue} % \begin{Morciau}[Macros~publiques/Public~Macros] -% Deux macros \cs{TheKey} et \cs{TheValue} pour définir puis utiliser +% Deux macros \cs{TheKey} et \cs{TheValue} pour définir puis utiliser % des paires clef/valeur. % \EnAnglais % Two macros \cs{TheKey} and \cs{TheValue} to define then use pairs % of key/value. % \end{Morciau} % \begin{Morciau}[Syntaxe/Syntax] -% \cs{TheKey}\marg{clé}\marg{valeur} pour définir la \emph{valeur} -% associée à la \emph{clé}, ne produit pas de texte ; -% \cs{TheValue}\marg{clé} pour insérer la \emph{valeur} associée à la -% \emph{clé}. +% \cs{TheKey}\marg{clé}\marg{valeur} pour définir la \emph{valeur} +% associée à la \emph{clé}, ne produit pas de texte ; +% \cs{TheValue}\marg{clé} pour insérer la \emph{valeur} associée à la +% \emph{clé}. % \EnAnglais % \cs{TheKey}\marg{key}\marg{value} to define the \emph{value} % associated to the \emph{key}, does not produce text ; % \cs{TheValue}\marg{key} to insert the \emph{value} linked to the % \emph{key}. % \end{Morciau} +% +% +% \subsection{Version 0.1} +% +% \begin{Morciau} +% Edd \textsc{Barrett}, le 27 juillet 2020, a signalé sur +% \texttt{stackexchange} un problème lié à l'utilisation de +% \texttt{clefval}. C'est lui, également, qui a fourni un ECM et +% trouvé la cause dudit problème: la présence d'un espace insécable +% dans le fichier codé en \texttt{iso-8859-15} entrainait l'arrêt de +% \LaTeX{} avec le message: +% \EnAnglais +% On the 27th July 2020, Edd \textsc{Barrett} wrote on +% \texttt{stackexchange} about a problem linked to the use of +% \texttt{clefval}. He also wrote a MCE and found the cause of the +% said problem: an unbreakable space in the file encoded in +% \texttt{iso-8859-15} forced \LaTeX{} to stop with the following +% error message: +% \end{Morciau} +% +% \texttt{Package inputenc Error: Invalid UTF-8 byte "A0.} +% +% \begin{Morciau} +% Comme tout le travail avait été fait, il m'a été facile de +% corriger l'erreur dans le code. J'en ai profité pour faire +% apparaître, \emph{dans le document}, un message d'erreur plus +% explicite nommant la clé indéfinie et pour moderniser un peu cette +% extension. +% \EnAnglais +% As all the work was already done I easily wrote the correction in +% the code. I've taken the opportunity to make appear, \emph{in the +% document}, a more explicit error message in case of undefined key +% and to modernise a bit this package. +% \end{Morciau} +% % \section{Utilisation -- Usage} % -% \begin{Morciau}[Procédé/Process] -% Le procédé mis en ½uvre par ce module est le même que celui des -% références classiques de \LaTeX{} avec \cs{label} et \cs{ref}. Il +% \begin{Morciau}[Procédé/Process] +% Le procédé mis en Å“uvre par ce module est le même que celui des +% références classiques de \LaTeX{} avec \cs{label} et \cs{ref}. Il % faut donc deux compilations pour en voir l'effet. % \EnAnglais % \texttt{clefval} uses the process which \LaTeX's \cs{label} and \cs{ref} % use. You must therefore compile twice to obtain the full effect. % \end{Morciau} % \begin{Morciau} -% Lors de la 1\iere compilation, \cs{TheKey}\LB|{clé}|\LB|{valeur}| écrit, -% dans le fichier \texttt{aux}, \cs{newkey}\LB|{clé}|\LB|{{valeur}}|. |clé| et -% |valeur| sont développés à moins qu'ils ne soient protégés soit pour avoir -% été déclarés robustes (voir \cs{DeclareRobustCommand}) soit pour avoir été -% protégés (voir \cs{protect}) par vous. +% Lors de la 1\iere compilation, \cs{TheKey}\LB|{clé}|\LB|{valeur}| écrit, +% dans le fichier \texttt{aux}, \cs{newkey}\LB|{clé}|\LB|{valeur}|. |clé| et +% |valeur| sont développés à moins qu'ils ne soient protégés soit pour avoir +% été déclarés robustes (voir \cs{DeclareRobustCommand}) soit pour avoir été +% protégés (voir \cs{protect}) par vous. % \EnAnglais % During the 1st run of \LaTeX, \cs{TheKey}\LB|{key}|\LB|{value}| writes -% \cs{newkey}\LB|{key}|\LB|{{value}}| in the \texttt{aux} file. |key| +% \cs{newkey}\LB|{key}|\LB|{value}| in the \texttt{aux} file. |key| % and |value| are expanded unless they are protected since they have been % declared robust (see \cs{DeclareRobustCommand}) or since they have been % protected (see \cs{protect}) by you. % \end{Morciau} % \begin{Morciau} -% Lors de la 2\ieme compilation, après lecture du fichier \texttt{aux}, -% \cs{TheValue}|{clé}| écrit |valeur|. +% Lors de la 2\ieme compilation, après lecture du fichier \texttt{aux}, +% \cs{TheValue}|{clé}| écrit |valeur|. % \EnAnglais % During the 2nd run, the \texttt{aux} file having been read, % \cs{TheValue}|{key}| writes |value|. % \end{Morciau} % \begin{Morciau}[Attention/Caution] % Les deux arguments de \cs{TheKey} sont \og mobiles \fg au sens de \LaTeX{} -% et il faudra donc parfois les protéger. On écrira donc -% \cs{TheKey}\LB\texttt{\{}\LB\cs{protect}|\(|\LB|2+3|\cs{protect}|\)|\LB\texttt{\}} si on -% ne veut pas d'ennuis ou, plus simplement, -% \cs{TheKey}\LB\texttt{\{}\LB|$|\LB|2+3|\LB|$|\LB\texttt{\}} \Sourire +% et il faudra donc parfois les protéger. % \EnAnglais % Both arguments of \cs{TheKey} are `moving' as \LaTeX{} defines it and we have % sometimes to protect them. -% -% So one will write -% \cs{TheKey}\LB\texttt{\{}\LB\cs{protect}|\(|\LB|2+3|\cs{protect}|\)|\LB\texttt{\}} -% to avoid troubles or, more easily, -% \cs{TheKey}\LB\texttt{\{}\LB|$|\LB|2+3|\LB|$|\LB\texttt{\}} \Sourire % \end{Morciau} +% % \begin{Morciau} % Par ailleurs, les arguments ne doivent pas contenir de saut de % paragraphe (\cs{par}) ---~ou tout autre truc interdit dans les @@ -212,29 +247,67 @@ % (\cs{par}) ---~or any other thingummy which is forbidden in the % arguments of a macro which is not \cs{long}. % \end{Morciau} +% +% \begin{Morciau}[Exemples/Examples] +% On peut écrire +% \EnAnglais +% On can write +% \end{Morciau} +% +% {\centering \TheKey{clou}{$2+5=7$}|\TheKey{clou}{$2+5=7$}| +% \TheKey{glue}{\(2+6=8\)}|\TheKey{glue}{\(2+6=8\)}| +% \par} +% +% \begin{Morciau} +% puis \EnAnglais then +% \end{Morciau} +% +% {\centering |\TheValue{clou}|, |\TheValue{glue}|\par} +% +% \begin{Morciau} +% pour obtenir \EnAnglais to obtain +% \end{Morciau} +% +% {\centering \TheValue{clou}, \TheValue{glue}.\par} +% +% \begin{Morciau} +% On peut utiliser |$2+3$| comme clé --- même si on ne voit pas +% pourquoi on le ferait --- mais \textbf{pas} |\(2+3\)|. Ce qui +% tient à la manière dont les commandes |\(| et |\)| ont été +% robustifiées. \emph{Ce n'est pas un bogue mais une fonctionnalité.} +% \EnAnglais +% On can use |$2+3$| as a key ---and I don't say that one should--- +% but \textbf{not} |\(2+3\)|. That is due to the way the macros |\(| +% and |\)| have been robustified. \emph{It's not a bug but a feature.} +% \end{Morciau} +% +% % \begin{Morciau}[Avertissements/Warnings] -% Le module signale les définitions multiples d'une même clef et -% marque {\selectlanguage{english}\textbf{????}} là où l'on utilise -% \cs{TheValue}\LB|{clou}| alors que |clou| n'est pas définie comme +% Le module signale les définitions multiples d'une même clef et +% marque {\selectlanguage{english}\textbf{[?? clou ??]}} là où l'on utilise +% \cs{TheValue}\LB|{clou}| alors que |clou| n'est pas définie comme % clef. En cas d'erreur, le fichier \texttt{log} contient la ligne : % \EnAnglais % The package warns about multiple definitions of the same key and -% writes \textbf{????} where one used \cs{TheValue}\LB|{kew}| whereas +% writes \textbf{[?? kew ??]} where one used \cs{TheValue}\LB|{kew}| whereas % |kew| was not defined as a key. In case of error, the \texttt{log} % file contains the line: % \end{Morciau} % \noindent\hspace*{\stretch{1}}\texttt{LaTeX Warning: There were undefined -% references.}\hspace*{\stretch{1}} +% references.}\hspace*{\stretch{1}} +% +% \vspace{\baselineskip} +% % \begin{Morciau}[Remarque/Remark] % Josselin \textsc{Noirel} est intervenu efficacement, tant sur \fctt % que par courriel, pour corriger les modifications que j'avais fait -% subir au code tiré de \texttt{ltxref} et \texttt{ltfiles}. C'est -% pour sa contribution décisive qu'il est cité comme co-auteur de ce -% module. Qu'il trouve là l'expression de ma profonde gratitude. +% subir au code tiré de \texttt{ltxref} et \texttt{ltfiles}. C'est +% pour sa contribution décisive qu'il est cité comme co-auteur de ce +% module. Qu'il trouve là l'expression de ma profonde gratitude. % -% Cependant, j'assume l'entière responsabilité de la rédaction de -% cette documentation et de sa traduction ainsi que la paternité de -% l'idée d'utiliser le mécanisme des \cs{label} pour accéder à un +% Cependant, j'assume l'entière responsabilité de la rédaction de +% cette documentation et de sa traduction ainsi que la paternité de +% l'idée d'utiliser le mécanisme des \cs{label} pour accéder à un % \texttt{hashage} rudimentaire. % \EnAnglais % Josselin \textsc{Noirel} has efficiently helped me, on \fctt and by @@ -248,24 +321,56 @@ % having fathered the idea of using the \cs{label} mecanism to obtain % a rudimentary \texttt{hash}. % \end{Morciau} -% \hspace*{\stretch{1}}Le \TeX nicien de surface. \hspace*{0.125\linewidth} +% +% \vspace{\baselineskip} +% +% \begin{Morciau}[Version 0.1/Version 0.1] +% Cette version est compatible avec un fichier codé en utf-8 compilé +% avec \texttt{pdflatex}, \texttt{lualatex} ou \texttt{xelatex} +% d'après mes --- quelques --- essais. Si ce n'était pas le cas, +% n'hésitez pas à me signaler le problème. +% \EnAnglais +% This version is usable with a utf-8 encoded source run through +% \texttt{pdflatex}, \texttt{lualatex} or \texttt{xelatex} as it +% appears from my ---not very numerous--- trials. If it was not the +% case don't hesitate to contact me. +% \end{Morciau} +% +% \hspace*{\stretch{1}}Le \TeX nicien de +% surface. \hspace*{0.125\linewidth} +% +% \vspace{2\baselineskip} +% +% \begingroup +% \small +% \hspace*{\stretch{1}}\textbf{In memoriam Énola Néra}\hspace*{\stretch{1}} +% +% \begin{Morciau} +% Gentille chienne aimante et fidèle, compagne de plus de 10 ans que +% son cÅ“ur a laché le 27 juillet 2020. +% \EnAnglais +% Kind, loving and faithfull bitch, companion of more than 10 years +% whose heart stopped on the 27th July 2020. +% \end{Morciau} +% \endgroup +% % \StopEventually{} % \section{Le code} % \label{secCode} % % Le code comporte des balises utilisable par \texttt{DocStrip} avec -% lesquelles on peut produire une version francisée ou une version +% lesquelles on peut produire une version francisée ou une version % anglaise de \NomDeModule{clefval}. Voir la documentation de % \texttt{DocStrip} pour de plus amples renseignements. % -% On dit boujour, en français ou en anglais suivant la manière dont on -% a créé \NomDeModule{clefval}. Puis on entre dans le vif du +% On dit boujour, en français ou en anglais suivant la manière dont on +% a créé \NomDeModule{clefval}. Puis on entre dans le vif du % sujet. % -% Le code a d'abord été repris de \texttt{ltxref} mais j'avais +% Le code a d'abord été repris de \texttt{ltxref} mais j'avais % quelques ennuis avec les avertissements concernant les clefs non -% définies ou définies plusieurs fois. Josselin Noirel a bien voulu -% répondre à mon appel au secours sur \fctt. Le code qui suit est donc +% définies ou définies plusieurs fois. Josselin Noirel a bien voulu +% répondre à mon appel au secours sur \fctt. Le code qui suit est donc % la correction par Josselin de mes modifications du code de % \texttt{ltxref}, moyennant quoi, je signe \Sourire % @@ -273,30 +378,30 @@ %<*package> % \fi % \begin{macro}{\@setTheValue} -% Le code est copié sur celui de |\@setref| dans -% \texttt{ltxref}. Cette macro est appelée par \cs{TheValue}. Elle -% vérifie que la clef appelée existe. Si elle n'existe pas elle -% imprime {\selectlanguage{english}\textbf{????}} et place un +% Le code est copié sur celui de |\@setref| dans +% \texttt{ltxref}. Cette macro est appelée par \cs{TheValue}. Elle +% vérifie que la \meta{clef} appelée existe. Si elle n'existe pas elle +% imprime {\selectlanguage{english}\textbf{[?? \meta{clef} ??]}} et place un % avertissement dans le \texttt{log}. Sinon elle rend son premier % argument. % % On utilise |\G@refundefinedtrue| pour provoquer le message d'erreur % \og There were undefined references \fg. Un peu sybillin pour ce qui -% nous concerne, il a l'avantage d'être reconnu par au moins +% nous concerne, il a l'avantage d'être reconnu par au moins % \texttt{emacs} plus \texttt{Auctex} et d'indiquer qu'il faut % relancer la compilation. % \begin{macrocode} \newcommand*{\@setTheValue}[2]{% \ifx#1\relax \protect\G@refundefinedtrue - \nfss@text{\reset@font\bfseries ????}% + \nfss@text{\reset@font\bfseries[?? #2 ??]}% % \end{macrocode} % \end{macro} % \iffalse % %<*packfra> % \fi -% \textsf{Messages d'avertissement en français} +% \textsf{Messages d'avertissement en français} % \begin{macrocode} \@latex@warning{Valeur de #2 en page \thepage\space non d\'efinie}% % \end{macrocode} @@ -316,16 +421,16 @@ \else #1\null \fi} % \end{macrocode} % \begin{macro}{\TheValue} -% Le code est copié sur celui de |\ref| dans \texttt{ltxref}. Si +% Le code est copié sur celui de |\ref| dans \texttt{ltxref}. Si % l'argument de \cs{TheValue} est une clef valide, on obtient la -% valeur référencée par cette clef. +% valeur référencée par cette clef. % \begin{macrocode} \newcommand*{\TheValue}[1]{\expandafter\@setTheValue\csname V@#1\endcsname{#1}} % \end{macrocode} % \end{macro} % \begin{macro}{\@newk@ey} -% Le code est copié sur celui de |\@newl@bel| dans \texttt{ltxref}. +% Le code est copié sur celui de |\@newl@bel| dans \texttt{ltxref}. % \begin{macrocode} \newcommand*{\@newk@ey}[3]{{% \@ifundefined{#1@#2}% @@ -337,7 +442,7 @@ % %<*packfra> % \fi -% \textsf{Messages d'avertissement en français} +% \textsf{Messages d'avertissement en français} % \begin{macrocode} \@latex@warning@no@line{Des clefs sont d\'efinies plusieurs fois.}}% \@latex@warning@no@line{La clef #2 est d\'efinie plusieurs fois}}% @@ -359,7 +464,7 @@ \global\@namedef{#1@#2}{#3}}} % \end{macrocode} % \begin{macro}{\newkey} -% On opère ici une puissante magie qui fait que tout marche comme +% On opère ici une puissante magie qui fait que tout marche comme % attendu \Sourire % \begin{macrocode} \def\newkey{\@newk@ey V} @@ -372,16 +477,16 @@ % ^^A fin du code de Josselin Noirel %<*package> % \fi -% À partir d'ici votre serviteur s'est débrouillé tout seul pour +% À partir d'ici votre serviteur s'est débrouillé tout seul pour % modifier le code des bases de \LaTeX. % % \begin{macro}{\@protected@write} -% Le code est copié sur celui de |\protected@write| défini dans -% \texttt{ltfiles}. On n'a besoin que d'un seul argument qui est écrit -% dans le fichier |\@auxout| c-à-d. le fichier \texttt{aux}. -% La macro prend soin de ce qui est protégé soit de manière définitive -% pour avoir été défini par \cs{DeclareRobustCommand} et ses petits -% amis, soit pour être précédé de \cs{protect} comme on doit le faire +% Le code est copié sur celui de |\protected@write| défini dans +% \texttt{ltfiles}. On n'a besoin que d'un seul argument qui est écrit +% dans le fichier |\@auxout| c-à-d. le fichier \texttt{aux}. +% La macro prend soin de ce qui est protégé soit de manière définitive +% pour avoir été défini par \cs{DeclareRobustCommand} et ses petits +% amis, soit pour être précédé de \cs{protect} comme on doit le faire % parfois pour les arguments \og mobiles \fg (\emph{moving % argument}). % \begin{macrocode} @@ -394,9 +499,9 @@ % \end{macrocode} % \end{macro} % \begin{macro}{\@multiplekeys} -% En mettant |\@multiplekeys| à \cs{relax}, on s'assure qu'il n'y aura -% pas de hurlements alors que rien n'est encore défini et donc encore -% moins défini plusieurs fois \Sourire +% En mettant |\@multiplekeys| à \cs{relax}, on s'assure qu'il n'y aura +% pas de hurlements alors que rien n'est encore défini et donc encore +% moins défini plusieurs fois \Sourire % \begin{macrocode} \let \@multiplekeys \relax % \end{macrocode} @@ -404,7 +509,7 @@ % \begin{macro}{\TheKey} % Le code remprend celui de \cs{label} mais il nous faut deux % arguments, le 1\ier pour la clef, le 2\textsuperscript{nd} pour la -% valeur associée. +% valeur associée. % \begin{macrocode} \def\TheKey#1#2{{\@bsphack \@protected@write{\string\newkey{#1}{#2}}% -- cgit v1.2.3