From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/engrec/engrec.dtx | 472 +++++++++++++++++++++++++++++++++ 1 file changed, 472 insertions(+) create mode 100644 macros/latex/contrib/engrec/engrec.dtx (limited to 'macros/latex/contrib/engrec/engrec.dtx') diff --git a/macros/latex/contrib/engrec/engrec.dtx b/macros/latex/contrib/engrec/engrec.dtx new file mode 100644 index 0000000000..ecaac44b0f --- /dev/null +++ b/macros/latex/contrib/engrec/engrec.dtx @@ -0,0 +1,472 @@ +% \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: -- cgit v1.2.3