diff options
author | Karl Berry <karl@freefriends.org> | 2008-05-06 01:01:01 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2008-05-06 01:01:01 +0000 |
commit | 101395e54ec0c670b2308650550de02c7b4ce460 (patch) | |
tree | dbec239e2ab1c70d621cf26daa1f53724728298e /Master/texmf-dist/source/latex/modroman/modroman.dtx | |
parent | 025d02f98224c010aa33c9bbc95e31660d39b08b (diff) |
modroman update (5may08)
git-svn-id: svn://tug.org/texlive/trunk@7881 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/modroman/modroman.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/modroman/modroman.dtx | 164 |
1 files changed, 98 insertions, 66 deletions
diff --git a/Master/texmf-dist/source/latex/modroman/modroman.dtx b/Master/texmf-dist/source/latex/modroman/modroman.dtx index ea8bc3a3295..70952fdeb01 100644 --- a/Master/texmf-dist/source/latex/modroman/modroman.dtx +++ b/Master/texmf-dist/source/latex/modroman/modroman.dtx @@ -1,7 +1,9 @@ % \iffalse meta-comment % -% Copyright (C) 2003 by Yvon Henel <Yvon.Henel@wanadoo.fr> -% -------------------------------------------------------- +% Copyright (C) 2003, 2004, 2008 by Yvon 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 @@ -17,8 +19,8 @@ % % \iffalse %<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01] -%<package>\def\fileversion{v0.3} -%<package>\def\filedate{2004/05/19} +%<package>\def\fileversion{v0.4} +%<package>\def\filedate{2008/05/03} %<package>\def\fileinfo{fichier modroman.dtx par Le TeXnicien de surface} %<package>\ProvidesPackage{modroman} %<package> [\filedate\space\fileversion\space\fileinfo] @@ -26,19 +28,20 @@ %<*driver> \documentclass{ltxdoc} \usepackage{xspace,url,multicol} -\usepackage{modroman} +\usepackage{modroman}[2008/05/03] \usepackage[latin1]{inputenc} \usepackage[T1]{fontenc} \usepackage[english,frenchb]{babel} \IfFileExists{lmodern.sty}{\usepackage{lmodern}}{}% -% commentez la ligne suivante pour avoir un document avec le code +% commenter la ligne suivante pour avoir un document avec le code \OnlyDescription % comment out the preceding line to obtain the full code % with explanations in French only, sorry. \EnableCrossrefs \CodelineIndex \RecordChanges -\GlossaryPrologue{\section*{{Changements}}\markboth{{Changements}}{{Changements}}} +\GlossaryPrologue{% + \section*{{Changements}}\markboth{{Changements}}{{Changements}}} \IndexPrologue{\section*{Index}\markboth{Index}{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 @@ -47,14 +50,15 @@ \def\generalname{Général} \setlength{\columnseprule}{0.5pt} \setlength{\multicolsep}{6pt plus 2.0pt minus 1.5pt} -\newenvironment{EnAnglais}{\columnbreak\mbox{}\par\begin{otherlanguage}{english}}{\end{otherlanguage}} +\newenvironment{EnAnglais}{\columnbreak\mbox{} + \par\begin{otherlanguage}{english}}{\end{otherlanguage}} \begin{document} \DocInput{modroman.dtx} \end{document} %</driver> % \fi % -% \CheckSum{113} +% \CheckSum{101} % % \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 @@ -77,6 +81,9 @@ % \changes{v0.2}{2004/02/11}{Ajout des options upourv et vpourv} % \changes{v0.3}{2004/05/18}{Quelques actions cosmétiques sur la documentation} % \changes{v0.3}{2004/05/18}{Attirail pour *nix et CTAN.} +% \changes{v0.4}{2008/05/03}{Je me débarrasse des \cs{if}s.} +% \changes{v0.4}{2008/05/03}{Protection par \cs{@ifdefinable} des \cs{def}.} +% \changes{v0.4}{2008/05/03}{J'introduis \cs{modrom@actuelV}.} %\iffalse %<*eng> \changes{v0.1}{2003/04/20}{Initial version} @@ -84,15 +91,19 @@ \changes{v0.3}{2004/05/18}{Some cosmetic actions on the doc.} \changes{v0.3}{2004/05/18}{Provides CTAN-ware and *nix tool.} \changes{v0.3}{2004/05/18}{Bug corrected: 101 is at last written cj.} +\changes{v0.4}{2008/05/03}{Get rid of the \cs{if}s.} +\changes{v0.4}{2008/05/03}{Creation of \cs{modrom@actuelV}.} %</eng> %\fi % \GetFileInfo{modroman.sty} % % \DoNotIndex{\newcommand,\newenvironment,\fi,\ ,{}} % -% \title{Le module \textsf{modroman}\thanks{Ce document -% correspond au fichier \textsf{modroman}~\fileversion, du \filedate.}} -% \author{Le \TeX nicien de surface\\ \url{Yvon.Henel@wanadoo.fr}} +% \title{Le module \textsf{modroman}\thanks{ +% Ce document correspond au fichier +% \textsf{modroman}~\fileversion, du \filedate\ +% et en est l'édition du cinquantenaire.}} +% \author{Le \TeX nicien de surface\\ \url{Yvon.Henel@orange.fr}} % % \maketitle % @@ -227,6 +238,7 @@ % Masson, Paris, Milan, Barcelone, \oldstylenums{1995}. % \textsc{isbn} : \texttt{2-225-84832-7}. % \end{thebibliography} +% % \StopEventually{} % % \section{Le code} @@ -237,90 +249,110 @@ % Les erreurs que l'on pourrait trouver dans ce fichier sont entièrement % de moi. % -% On déclare un nouveau \cs{if} et les deux options, on sélectionne l'option -% |vpourv| par défaut, on charge les options. +% On définit les deux options, on sélectionne l'option |vpourv| par défaut, on +% charge les options. +% % \begin{macrocode} -\newif\if@upourv -\DeclareOption{upourv}{\@upourvtrue} -\DeclareOption{vpourv}{\@upourvfalse} -\DeclareOption{defaut}{\@upourvfalse} -\ExecuteOptions{defaut} +\DeclareOption{vpourv}{% +% \end{macrocode} +% \begin{macro}{\modrom@actuelV} Cette macro contient la forme effective du +% chiffre romain V: ce sera |u| avec l'option |upourv| et |v| avec |vpourv|, +% l'option par défaut. Dans le 2\ieme \cs{DeclareOption}, qui définit l'option +% |upourv|, la macro \cs{modrom@actuelV} étant déjà définie lors du traitement +% de l'option par défaut, \emph{via} |\ExecuteOptions{vpourv}|, on ne contrôle +% pas la \cs{def} avec \cs{@ifdefinable}, sinon on a une erreur systématique! +% \begin{macrocode} + \@ifdefinable\modrom@actuelV{\def\modrom@actuelV{v}} +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\DeclareOption{upourv}{\def\modrom@actuelV{u}} +\ExecuteOptions{vpourv} \ProcessOptions\relax % \end{macrocode} -% \begin{macro}{\modromannumeral} -% La première macro, dans le style \TeX, que je décris ci-dessous. -% -% On commence par créer un nouveau compteur \cs{romt@mp}. +% \begin{macro}{\romt@mp} +% On commence par créer un nouveau compteur \cs{romt@mp} à la mode \TeX, en +% s'assurant que c'est possible. % \begin{macrocode} -\newcount\romt@mp +\@ifdefinable\romt@mp{\newcount\romt@mp} % \end{macrocode} -% On poursuit en écrivant la macro principale qui fait appel à -% \cs{modrom@naux}. Le \cs{afterassignment} permet de commencer par lire le -% nombre \(N\) qui suit et l'affecter au compteur \cs{romt@mp} puis ensuite de -% lancer \cs{modrom@naux} avec \cs{romt@mp} comme argument. +% \end{macro} +% \begin{macro}{\modromannumeral} +% On poursuit en écrivant la macro principale, définie à la \TeX\ mais en +% ayant pris soin de s'assurer que c'est possible avec \cs{@ifdefinable}. Elle +% fait appel à \cs{modrom@naux}. Le \cs{afterassignment} permet de commencer +% par lire le nombre \(N\) qui suit et l'affecter au compteur \cs{romt@mp} +% puis ensuite de lancer \cs{modrom@naux} avec \cs{romt@mp} comme argument. % \begin{macrocode} -\def\modromannumeral{\afterassignment\modrom@naux \romt@mp=} +\@ifdefinable\modromannumeral{% + \def\modromannumeral{\afterassignment\modrom@naux \romt@mp=}} % \end{macrocode} +% \end{macro} +% \begin{macro}{\modrom@naux} % On continue avec \cs{modrom@naux} qui regarde si \(N\) est strictement % inférieure à 10. Si c'est le cas on exécute \cs{modrom@ni} avec \cs{romt@mp} % pour argument. Sinon on exécute \cs{modrom@nii} avec ce même argument. % \begin{macrocode} -\def\modrom@naux{\ifnum\romt@mp<10 - \modrom@ni{\romt@mp}\else\modrom@nii{\romt@mp}\fi\relax} +\@ifdefinable\modrom@naux{% + \def\modrom@naux{\ifnum\romt@mp<10 + \modrom@ni{\romt@mp}\else\modrom@nii{\romt@mp}\fi\relax}} % \end{macrocode} -% La macro \cs{modrom@ni} admet un argument. Elle se contente de réécrire la -% forme souhaitée du nombre à un chiffre \(N\) passé en argument à -% \cs{modromannumeral}. On utilise un test \cs{ifcase} \cs{or} \texttt{\dots} -% \cs{fi}. On remarquera que le premier \cs{or} suit directement la condition -% puisque ce nombre ne peut être nul. Suivant le choix de l'option on aura -% une définition ou l'autre. +% \end{macro} +% \begin{macro}{\modrom@ni} Cette macro sert à écrire la version modifiée du +% nombre en chiffre romain quand ce nombre est inférieur à \(10\). Elle fait +% appel à \cs{modrom@actuelV} pour savoir quelle forme du $5$ romain écrire. On +% utilise un test \cs{ifcase} \cs{or} \texttt{\dots} \cs{fi}. On remarquera que +% le premier \cs{or} suit directement la condition puisque ce nombre ne peut +% être nul. +% \changes{v0.4}{2008/05/03}{Réécriture de la définition à l'aide de +% \cs{modrom@actuelV}.} % \begin{macrocode} -\if@upourv -\def\modrom@ni#1{\ifcase#1 \or i\or ij\or iij\or iu\or - u\or uj\or uij\or uiij\or ix\fi\relax}\else -\def\modrom@ni#1{\ifcase#1 \or i\or ij\or iij\or iv\or - v\or vj\or vij\or viij\or ix\fi\relax}\fi +\@ifdefinable\modrom@ni{% + \def\modrom@ni#1{\ifcase#1 \or i\or ij\or iij\or i\modrom@actuelV\or + \modrom@actuelV\or \modrom@actuelV j\or \modrom@actuelV ij\or + \modrom@actuelV iij\or ix\fi\relax}}% % \end{macrocode} -% +% \end{macro} +% \begin{macro}{\modrom@nii} % La macro \cs{modrom@nii} admet un argument. Elle utilise la macro % auxiliaire \cs{modrom@nij}. Elle crée dans un groupe ---~notez les doubles % parenthèses ouvrantes et fermantes~--- deux compteurs temporaires. On -% affecte \(N\) aux deux compteurs. +% affecte \(N\) aux deux compteurs. % % Après la 1\iere instruction de la deuxième ligne le compteur 0 |\count0| -% contient le quotient \(q\) de l'argument principal \(N\) dans la division +% contient le quotient, \(q\), de l'argument principal, \(N\), dans la division % euclidienne par \(10\). À la fin de cette ligne il contient \(10q\). % -% Après la troisième ligne, le compteur 1 comptient contient \(r\) le reste de +% Après la troisième ligne, le compteur 1 comptient contient \(r\), le reste de % la division de \(N\) par \(10\). Pour finir, on écrit \(10q\) en chiffres -% romains grâce à la primitive \TeX{} \cs{romannumeral} et on écrit le reste \(r\) +% romains grâce à la primitive \TeX{} \cs{romannumeral} et on écrit le reste~\(r\) % grâce à \cs{modrom@nij}. % \begin{macrocode} -\def\modrom@nii#1{{\count0 =#1\count1 =\count0 % - \divide\count0 by 10 \multiply\count0 by 10 % - \advance \count1 by -\count0 % - \romannumeral\count0\modrom@nij{\count1}% - }} +\@ifdefinable\modrom@nii{% + \def\modrom@nii#1{{\count0 =#1\count1 =\count0 % + \divide\count0 by 10 \multiply\count0 by 10 % + \advance \count1 by -\count0 % + \romannumeral\count0\modrom@nij{\count1}}}} % \end{macrocode} % \end{macro} -% La macro \cs{modrom@nij} admet un argument. Elle pratique comme -% \cs{modrom@ni} en tenant compte toutefois que \(N\) est un nombre à au moins -% deux chiffres ce qui entraine que, p. ex., \(101\) s'écrit -% \modromannumeral 101. Et on a une \og double \fg définition comme ci-dessus -% pour les mêmes raisons. -% \begin{macro}{\modrom@nij} -% C'est la macro qui écrit le reste lorsque \(N > 9\). -% \changes{v0.3}{2004/05/18}{Correction d'un bogue : 101 donne enfin \emph{cj}.} +% \begin{macro}{modrom@nij} La commande \cs{modrom@nij} écrit le dernier +% chiffre romain d'un nombre supérieur à \(10\). Elle admet un argument et +% pratique comme \cs{modrom@ni} en tenant compte toutefois que \(N\) est un +% nombre à au moins deux chiffres ce qui entraine que, p. ex., \(101\) s'écrit +% \modromannumeral 101. Elle fait également appel à \cs{modrom@actuelV} pour +% tenir compte de l'option choisie. +% \changes{v0.4}{2008/05/03}{Réécriture de la définition à l'aide de +% \cs{modrom@actuelV}.} % \begin{macrocode} -\if@upourv -\def\modrom@nij#1{\ifcase#1 \or j\or ij\or iij\or iu\or - u\or uj\or uij\or uiij\or ix\fi\relax}\else -\def\modrom@nij#1{\ifcase#1 \or j\or ij\or iij\or iv\or - v\or vj\or vij\or viij\or ix\fi\relax}\fi +\@ifdefinable\modrom@nij{% + \def\modrom@nij#1{\ifcase#1 \or j\or ij\or iij\or i\modrom@actuelV\or + \modrom@actuelV\or \modrom@actuelV j\or \modrom@actuelV ij\or + \modrom@actuelV iij\or ix\fi\relax}} % \end{macrocode} % \end{macro} -% \begin{macro}{\modroman} % +% \begin{macro}{\modroman} % La deuxième macro, dans le style \LaTeX, est bien plus courte. Elle % fait appel à \cs{expandafter} pour que \cs{value} passe bien un nombre % --~la valeur du compteur passé en argument~-- à \cs{modromannumeral} |