% \iffalse meta-comment % -*- mode: LaTeX; coding: iso-8859-15 -*- % Time-stamp: <2008-05-07T21:09:22 (cest) [yvon sur hypatie]> % Copyright (C) 2004, 2008 by Yvon Henel % dit «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 % 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}[1999/12/01] %\def\PackageName{engrec} %\def\fileversion{v1.1} %\def\filedate{2008/05/07} %\def\fileinfo{fichier engrec.sty par Le TeXnicien de surface} %\ProvidesPackage{engrec} % [\filedate\space\fileversion\space\fileinfo] %<*driver> \documentclass[a4paper]{ltxdoc} \usepackage[latin9]{inputenc} \usepackage[T1]{fontenc} \usepackage{engrec}[2008/05/07] \usepackage{xspace,url,multicol,ifthen} \IfFileExists{lmodern.sty}{\usepackage{lmodern}}{} \usepackage[english,frenchb]{babel} % commentez 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 \makeatletter %%% 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 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}} \renewcommand{\SpecialMainEnvIndex}[1]{% \@bsphack\special@index{% #1\actualchar {\string\ttfamily\space#1} (environnement)% \encapchar main}% \special@index{environnements:\levelchar{% \string\ttfamily\space#1}\encapchar main}\@esphack} \makeatother \def\generalname{Général -- General} %%% fin de la francisation \setlength{\columnseprule}{0.5pt} \setlength{\multicolsep}{6pt plus 2.0pt minus 1.5pt} \def\FraTitre{\relax} \def\EngTitre{\relax} \newcommand{\TraiteTitre}[1]{\TraiteTitreAux#1/ZZZ} \def\TraiteTitreAux#1/#2/ZZZ{\def\FraTitre{\TitreMorciau{#1}}% \ifthenelse{\equal{#2}{}}{\def\LarGuMent{#1}}{\def\LarGuMent{#2}} \def\EngTitre{\TitreMorciau{\LarGuMent}}} \newcommand{\TitreMorciau}[1]{\paragraph{#1}} \newenvironment{Morciau}[1][ZXZXZ]{\begin{multicols}{2}% \selectlanguage{french}% \ifthenelse{\equal{#1}{ZXZXZ}}{\relax}{\TraiteTitre{#1}\FraTitre}}% {\end{multicols}} \newcommand{\EnAnglais}{\columnbreak\mbox{} \par\selectlanguage{english}\EngTitre} \newcommand{\NomDeModule}[1]{\texttt{#1.sty}\xspace} \newcommand{\fctt}{\texttt{fr.comp.text.tex}\xspace} \newcommand{\Sourire}{\texttt{;-)}\xspace} %%% fin de la personalisation \begin{document} \DocInput{engrec.dtx} \end{document} % % \fi % % \CheckSum{444} % % \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 \~} % % \GetFileInfo{engrec.sty} % % \changes{v1}{2004/05/20}{1\iere version publique. 1st public version.} % \changes{v1.1}{2008/05/04}{Recquiert \texttt{amstext} au lieu de % \texttt{amsmath}. Demands \texttt{amstext} instead of \texttt{amsmath}.} % \changes{v1.1}{2008/05/04}{Utilise \cs{ensuremath}. Uses \cs{ensuremath}.} % % \DoNotIndex{\newcommand,\newenvironment,\i,\ae,\oe,\DeclareOption,^^A % \alpha, \beta, \gamma, \delta, \epsilon,^^A % \varepsilon, \zeta, \eta, \theta, \vartheta, \iota, \kappa,^^A % \lambda, \mu, \nu, \xi, \pi, \varpi, \rho, \varrho, \sigma,^^A % \varsigma, \tau, \upsilon, \phi, \varphi, \chi, \psi, \omega,^^A % \upalpha, \upbeta, \upgamma, \updelta, \upepsilon,^^A % \upvarepsilon, \upzeta, \upeta, \uptheta, \upvartheta, \upiota, \upkappa,^^A % \uplambda, \upmu, \upnu, \upxi, \uppi, \upvarpi, \uprho, \upvarrho, \upsigma,^^A % \upvarsigma, \uptau, \upupsilon, \upphi, \upvarphi, \upchi, \uppsi, \upomega,^^A % \Delta, \Gamma, \Theta, \Lambda, \Xi, \Pi, \Phi, \Psi \Sigma,^^A % \Upsilon, \ExecuteOptions, \providecommand, \newif,^^A % \fi, \if, \or, \ifnum,\ifcase, \def, \expandafter,^^A % \RequirePackage, \@ctrerr, \ProcessOptions,\relax,^^A % \text, \textup \csname, \endcsname, \value, \else, \Omega, \ensuremath} % % \title{Le module \textsf{engrec}\thanks{Ce document correspond au % fichier \textsf{engrec}~\fileversion, du \filedate. Édition % du cinquantenaire.}\\ % The package \textsf{engrec}\thanks{Corresponds to the % file \textsf{engrec}~\fileversion, dated \filedate. 50th % anniversary edition.}} % % \author{Le \TeX nicien de surface\thanks{% % \texttt{le.texnicien.de.surface@wanadoo.fr}}} % % \maketitle % %\section{Introduction} %\label{secIntro} % \begin{Morciau}[Macros~publiques/Public~Macros] % Deux macros \cs{engrec} et \cs{EnGrec} pour numéroter, par exemple % des listes, avec des minuscules ou des majuscules grecques. Leur % syntaxe est celle de \cs{alph}. % \EnAnglais % Two macros \cs{engrec} and \cs{EnGrec} to enumerate, for example % some lists, with lower case or upper case greek letters. They have % the syntax of \cs{alph}. % \end{Morciau} % \begin{Morciau}[Syntaxe/Syntax] % \cs{engrec}\marg{compteur} \cs{EnGrec}\marg{compteur} % \EnAnglais % \cs{engrec}\marg{counter}\\ \cs{EnGrec}\marg{counter} % \end{Morciau} % \begin{Morciau}[Options/] % Le module admet des options qui permettent de selectionner la % forme des caractères à variante. \texttt{toto} étant égal à % \texttt{epsilon} ou \texttt{theta} ou \texttt{pi} ou \texttt{rho} % ou \texttt{sigma} ou \texttt{phi}, l'option \texttt{vartoto} % sélectionne la lettre grecque minuscule \cs{vartoto} et s'oppose à % l'option \texttt{toto} qui sélectionne \cs{toto}. % \EnAnglais % The package has options which enable us to select the shape of the % greek lower case character with variant. Let \texttt{toto} be equal % to \texttt{epsilon} or \texttt{theta} or \texttt{pi} or \texttt{rho} % or \texttt{sigma} or \texttt{phi}, the option \texttt{vartoto} % selects the greek lower case character \cs{vartoto} and is the % opposite of the option \texttt{toto} which selects \cs{toto}. % \end{Morciau} % \begin{Morciau}[Minuscules~droites/Upright~Lowercases] % Le module admet aussi l'option \texttt{upgreek} qui charge % \NomDeModule{upgreek} pour fournir des minuscules grecques droites. Cette % option s'oppose à \texttt{slgreek}, option par défaut. % \EnAnglais % The package has also option \texttt{upgreek} which loads \NomDeModule{upgreek} % to provide upright lower case greek characters. That option is the opposite of % the default \texttt{slgreek}. % \end{Morciau} % \begin{Morciau}[Avec~fourier.sty/With~fourier.sty] % Il admet enfin l'option \texttt{upright} qui règle le cas du \emph{omicron} et % doit être utilisée lorsque l'on charge \NomDeModule{fourier} avec l'option % \texttt{upright}. Cette option s'oppose à \texttt{sloped}, prise par défaut. % \EnAnglais % It has also option \texttt{upright} which takes care of the % \emph{omicron} and must be used when one loads \NomDeModule{fourier} % with option \texttt{upright}. This option is the opposite of the % default \texttt{sloped}. % \end{Morciau} % \begin{Morciau} % La façon la plus simple de passer cette option est alors d'utiliser\\ % \cs{DocumentClass}[\texttt{upright}$\cdots$]\marg{classe}\\ plutôt que de % charger et \NomDeModule{fourier} et \NomDeModule{engrec} avec, tous deux, % l'option \texttt{upright}. % \EnAnglais % The easiest way of selecting that option is to use\\ % \cs{DocumentClass}[\texttt{upright}$\cdots$]\marg{class}\\ instead of % loading and \NomDeModule{fourier} and \NomDeModule{engrec} both with option % \texttt{upright}. % \end{Morciau} % \begin{Morciau}[\text{Options~par~défaut}/\text{Default~Options}] % \texttt{varepsilon}, \texttt{theta}, \texttt{pi}, \texttt{rho}, % \texttt{sigma}, \texttt{varphi}, \texttt{sloped}, \texttt{slgreek}. % \EnAnglais % \texttt{varepsilon}, \texttt{theta}, \texttt{pi}, \texttt{rho}, % \texttt{sigma}, \texttt{varphi}, \texttt{sloped}, \texttt{slgreek}. % \end{Morciau} % \begin{Morciau}[Module~chargé/Loaded~Package] % Ce module nécessite \NomDeModule{amstext} dont il utilise la % commande \cs{text} pour définir les macros comme \cs{Alpha} qui sont % les \og noms \fg des majuscules grecques qui n'en ont pas % d'habitude car leur forme est semblable à celle d'une lettre % latine : {\ttfamily Alpha, Beta, Epsilon, Zeta, Eta, Iota, % Mu, Nu, Omicron, Rho, Tau, Chi}. Par exemple \cs{Alpha} est égale à % \EnAnglais % This package requires \NomDeModule{amstext} for it uses \cs{text} % defined there to create macros such as \cs{Alpha} which are the % `names' of the upper case greek letters which have usually no names % since their shape is similar to the shape of a latin character, % viz.: {\ttfamily Alpha, Beta, Epsilon, Zeta, Eta, Iota, Mu, Nu, % Omicron, Rho, Tau, Chi}. \cs{Alpha}, e. g., is equal to % \end{Morciau} % \hspace*{\stretch{1}}\cs{text}|{|\cs{rmfamily}\cs{upshape}| A}|\hspace*{\stretch{1}} % \begin{Morciau}[omicron/] % Il définit également la minuscule \texttt{omicron}. % \cs{omicron} est définie comme ci-dessous et % apparaît comme $\omicron$. Il en donne une version toujours droite avec % \cs{upomicron} : \upomicron. % \EnAnglais % The lower case \texttt{omicron} is also provided by \cs{omicron} and % defined as shown below which is printed % $\omicron$. There is also an always upright version with % \cs{upomicron}:~\upomicron. % \end{Morciau} % \hspace*{\stretch{1}}\cs{text}|{|\cs{rmfamily}\cs{itshape}| o}|\hspace*{\stretch{1}} % \begin{Morciau}[Le code/The Code] % Le code des macros \cs{engrec}, \cs{EnGrec} et des macros % auxiliaires associées |\@grec| et |\@Grec| est repris quasi verbatim % de \texttt{latex.ltx}. % \EnAnglais % The code of macros \cs{engrec}, \cs{EnGrec} and of associated % auxiliary macros |\@grec| and |\@Grec| is taken, almost verbatim, % from \texttt{latex.ltx}. % \end{Morciau} % % \section{Utilisation -- Usage} % \begin{Morciau}[Exemple/Example] % On crée un compteur, on l'initialise à 1, on en fait écrire la valeur par % \cs{engrec} puis on l'augmente de 1 et on fait écrire sa valeur par % \cs{engrec} 24 fois grace à \cs{whiledo} de \texttt{ifthen}. Puis la même % chose avec \cs{EnGrec}. % \EnAnglais % We create a counter, initialise it to 1, make \cs{engrec} write its value then % we add 1 and write its value with \cs{engrec} 24 times with the help of % \cs{whiledo} from \texttt{ifthen}. Then the same with \cs{EnGrec}. % \end{Morciau} % \bgroup \setlength{\parindent}{0pt} % |\newcounter{montruc} \setcounter{montruc}{1}|\\ % |\whiledo{\value{montruc}<25}{\engrec{montruc} \stepcounter{montruc}}| % % \newcounter{montruc} \setcounter{montruc}{1} % \whiledo{\value{montruc}<25}{\engrec{montruc} \stepcounter{montruc}} % % |\newcounter{montruc} \setcounter{montruc}{1}|\\ % |\whiledo{\value{montruc}<25}{\EnGrec{montruc} \stepcounter{montruc}}| % % \setcounter{montruc}{1} % \whiledo{\value{montruc}<25}{\EnGrec{montruc} \stepcounter{montruc}} % \egroup %^^A % \StopEventually{} % \section{Le code} % \label{secCode} % On dit boujour, puis on définit les huit tests qui correspondent aux % six paires d'options possibles. % \iffalse %<*package> % \fi % \begin{macrocode} \newif\if@varepsilon \newif\if@vartheta \newif\if@varpi \newif\if@varrho \newif\if@varsigma \newif\if@varphi \newif\if@upomicron \newif\if@upgreek % \end{macrocode} % On définit les options. Chacune fixe à \texttt{true} ou % \texttt{false} le booléen correspondant. % \begin{macrocode} \DeclareOption{upright}{\@upomicrontrue} \DeclareOption{sloped}{\@upomicronfalse} \DeclareOption{upgreek}{\@upgreektrue} \DeclareOption{slgreek}{\@upgreekfalse} \DeclareOption{varepsilon}{\@varepsilontrue} \DeclareOption{epsilon}{\@varepsilonfalse} \DeclareOption{vartheta}{\@varthetatrue} \DeclareOption{theta}{\@varthetafalse} \DeclareOption{varpi}{\@varpitrue} \DeclareOption{pi}{\@varpifalse} \DeclareOption{varrho}{\@varrhotrue} \DeclareOption{rho}{\@varrhofalse} \DeclareOption{varsigma}{\@varsigmatrue} \DeclareOption{sigma}{\@varsigmafalse} \DeclareOption{varphi}{\@varphitrue} \DeclareOption{phi}{\@varphifalse} % \end{macrocode} % On exécute les options par défaut. % \begin{macrocode} \ExecuteOptions{varepsilon,theta,pi,rho,sigma,varphi,sloped,slgreek} \ProcessOptions\relax % \end{macrocode} % On charge le module \NomDeModule{amstext} qui fournit la macro \cs{text}. % \begin{macrocode} \RequirePackage{amstext} % \end{macrocode} % On charge le module \NomDeModule{upgreek} si l'option \texttt{upgreek} a été % choisie. % \begin{macrocode} \if@upgreek \RequirePackage{upgreek}\fi % \end{macrocode} % % \begin{macro}{\Alpha} % On définit les macros \og manquantes \fg de telle sorte que chaque % lettre grecque ait sa macro. On utilise \cs{providecommand} au cas % où un module se chargerait de les définir. On fixe la famille romaine et la % forme droite avec \cs{rmfamily} et \cs{upshape}. % \changes{v1.1}{2008/05/07}{Fixe la forme romain droit. Fix roman upshape.} % % \begin{macrocode} \providecommand{\Alpha}{\text{\rmfamily\upshape A}} \providecommand{\Beta}{\text{\rmfamily\upshape B}} \providecommand{\Epsilon}{\text{\rmfamily\upshape E}} \providecommand{\Zeta}{\text{\rmfamily\upshape Z}} \providecommand{\Eta}{\text{\rmfamily\upshape H}} \providecommand{\Iota}{\text{\rmfamily\upshape I}} \providecommand{\Kappa}{\text{\rmfamily\upshape K}} \providecommand{\Mu}{\text{\rmfamily\upshape M}} \providecommand{\Nu}{\text{\rmfamily\upshape N}} \providecommand{\Omicron}{\text{\rmfamily\upshape O}} \providecommand{\Rho}{\text{\rmfamily\upshape P}} \providecommand{\Tau}{\text{\rmfamily\upshape T}} \providecommand{\Chi}{\text{\rmfamily\upshape X}} \providecommand{\omicron}{\text{\rmfamily\itshape o}} \providecommand{\upomicron}{\text{\rmfamily\upshape o}} % \end{macrocode} % \end{macro} % \begin{macro}{\engrec} % Le code est copié sur celui de \cs{alph} dans \texttt{latex.ltx}. % \begin{macrocode} \def\engrec#1{\expandafter\@grec\csname c@#1\endcsname} % \end{macrocode} % \end{macro} % \begin{macro}{\@grec} % Le code est copié sur celui de |\@alph| dans \texttt{latex.ltx} avec les % interventions des options. On utilise \cs{ensuremath} au lieu de |$ $| pour % permettre l'utilisation au milieu des mathématiques. % \begin{macrocode} \if@upgreek \def\@grec#1{% \ifcase#1\or \ensuremath{\upalpha}\or \ensuremath{\upbeta}\or \ensuremath{\upgamma}\or \ensuremath{\updelta}\or \if@varepsilon \ensuremath{\upvarepsilon}\else \ensuremath{\upepsilon}\fi \or \ensuremath{\upzeta}\or \ensuremath{\upeta}\or \if@vartheta \ensuremath{\upvartheta}\else \ensuremath{\uptheta}\fi \or \ensuremath{\upiota}\or \ensuremath{\upkappa}\or \ensuremath{\uplambda}\or \ensuremath{\upmu}\or \ensuremath{\upnu}\or \ensuremath{\upxi}\or \ensuremath{\upomicron}\or \if@varpi \ensuremath{\upvarpi}\else \ensuremath{\uppi}\fi \or \if@varrho \ensuremath{\upvarrho}\else \ensuremath{\uprho}\fi \or \if@varsigma \ensuremath{\upvarsigma}\else \ensuremath{\upsigma}\fi \or \ensuremath{\uptau}\or \ensuremath{\upupsilon}\or \if@varphi \ensuremath{\upvarphi}\else \ensuremath{\upphi}\fi \or \ensuremath{\upchi}\or \ensuremath{\uppsi}\or \ensuremath{\upomega}\else \@ctrerr\fi}% \else \def\@grec#1{% \ifcase#1\or \ensuremath{\alpha}\or \ensuremath{\beta}\or \ensuremath{\gamma}\or \ensuremath{\delta}\or \if@varepsilon \ensuremath{\varepsilon}\else \ensuremath{\epsilon}\fi \or \ensuremath{\zeta}\or \ensuremath{\eta}\or \if@vartheta \ensuremath{\vartheta}\else \ensuremath{\theta}\fi \or \ensuremath{\iota}\or \ensuremath{\kappa}\or \ensuremath{\lambda}\or \ensuremath{\mu}\or \ensuremath{\nu}\or \ensuremath{\xi}\or \if@upomicron \ensuremath{\upomicron}\else \ensuremath{\omicron}\fi\or \if@varpi \ensuremath{\varpi}\else \ensuremath{\pi}\fi \or \if@varrho \ensuremath{\varrho}\else \ensuremath{\rho}\fi \or \if@varsigma \ensuremath{\varsigma}\else \ensuremath{\sigma}\fi \or \ensuremath{\tau}\or \ensuremath{\upsilon}\or \if@varphi \ensuremath{\varphi}\else \ensuremath{\phi}\fi \or \ensuremath{\chi}\or \ensuremath{\psi}\or \ensuremath{\omega}\else \@ctrerr\fi} \fi % \end{macrocode} % \end{macro} % \begin{macro}{\EnGrec} % Le code est encore copié sur celui de \cs{alph} dans \texttt{latex.ltx}. % \begin{macrocode} \def\EnGrec#1{\expandafter\@Grec\csname c@#1\endcsname} % \end{macrocode} % \end{macro} % \begin{macro}{\@Grec} % C'est encore pareil. Ici, pas de variante pour les majuscules. % \begin{macrocode} \def\@Grec#1{% \ifcase#1\or \ensuremath{\Alpha}\or \ensuremath{\Beta}\or \ensuremath{\Gamma}\or \ensuremath{\Delta}\or \ensuremath{\Epsilon}\or \ensuremath{\Zeta}\or \ensuremath{\Eta}\or \ensuremath{\Theta}\or \ensuremath{\Iota}\or \ensuremath{\Kappa}\or \ensuremath{\Lambda}\or \ensuremath{\Mu}\or \ensuremath{\Nu}\or \ensuremath{\Xi}\or \ensuremath{\Omicron}\or \ensuremath{\Pi}\or \ensuremath{\Rho}\or \ensuremath{\Sigma}\or \ensuremath{\Tau}\or \ensuremath{\Upsilon}\or \ensuremath{\Phi}\or \ensuremath{\Chi}\or \ensuremath{\Psi}\or \ensuremath{\Omega}\else \@ctrerr\fi} % \end{macrocode} % \end{macro} % \iffalse % % \fi % \Finale \PrintChanges\PrintIndex \endinput %%% Local Variables: %%% mode: latex %%% TeX-master: t %%% End: