% \iffalse meta-comment %-*- coding: iso-8859-15 -*- % -------------------------------------------------------------------- % % 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\fileversion{v2.1} %\def\filedate{2008/08/16} %\def\fileinfo{fichier paresse.dtx par le TeXnicien de surface} %\ProvidesPackage{paresse} % [\filedate\space\fileversion\space\fileinfo] % %<*driver> \documentclass[a4paper]{ltxdoc} \usepackage[latin1]{inputenc} \usepackage[T1]{fontenc} \usepackage[tame]{paresse} \usepackage{xspace,url,array, ifthen} \IfFileExists{lmodern.sty}{\usepackage{lmodern}}{} \usepackage[english,frenchb]{babel} \usepackage[colorlinks=true, linkcolor=blue, urlcolor=blue, citecolor=blue]{hyperref} % commentez la ligne suivante pour avoir un document avec le code % \OnlyDescription % puis cherchez \StopEventually pour d'éventuels réglages \EnableCrossrefs \CodelineIndex \RecordChanges \makeatletter %%% \makeatletter \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 nombres en caractères romains renvoient à la ligne de code où l'entrée est utilisée.} \def\generalname{Général} \newcommand\DescribeOption[1]{\@bsphack \marginpar{\raggedleft \textsc{#1}}\index{#1 (option)}\@esphack} \def\SpecialMainEnvIndex#1{\@bsphack\special@index{% #1\actualchar {\string\ttfamily\space#1} (environnement)% \encapchar main}% \special@index{environnements:\levelchar#1\actualchar{% \string\ttfamily\space#1}\encapchar main}\@esphack} \makeatother %%% \newcommand{\TO}{\textemdash\ \ignorespaces} \newcommand{\TF}{\unskip\ \textemdash\xspace} \newcommand{\CAD}{c.-à-d.\xspace} \newcommand\BOP{\discretionary{}{}{}} \newcommand\Option[1]{\textsc{#1}} \newcommand\MODULE[1]{\textsf{#1}} \begin{document} \DocInput{paresse.dtx} \end{document} % % \fi % % \CheckSum{300} % % \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.0}{2004/02/07}{Nouveau nom, quelques redéfinitions, % première version publique.} % \changes{v1}{2004/04/17}{Mise à jour de la documentation.} % \changes{v1a}{2005/03/01}{Correction d'une erreur dans Infofile qui % empéchait le chargement du module.} % \changes{v2}{2008/08/13}{Suppression d'une macro inutile.} % \changes{v2}{2008/08/13}{Réorganisation de la documentation.} % \changes{v2}{2008/08/13}{Réemballage pour fournir un tds.zip.} % \changes{v2.1}{2008/08/16}{Correction d'une erreur dans Infofile qui % empéchait le chargement du module. Une fois encore!} % % \GetFileInfo{paresse.sty} % % \DoNotIndex{\newcommand,\newenvironment,\i,\ae,\oe,\DeclareOption,% % \ifthenelse,\if,\else,\fi,\tr@@c,\ExecuteOptions,\ProcessOptions,% % \relax,\MessageBreak,\CurrentOption,\RequirePackage,\PackageError,% % \def,\endinput,\let,\boolean,\newboolean,\setboolean,\renewcommand,% % \afterassignment,\global,\aftergroup,\bgroup,\egroup,\csname,% % \endcsname,\emph,\catcode,\space,\string,\next,\active,\rmfamily,\rule,% % \textsl,\upshape, \alpha, \beta, \gamma, \delta, \epsilon, % % \varepsilon, \zeta, \eta, \theta, \vartheta, \iota, \kappa, % % \lambda, \mu, \nu, \xi, \pi, \varpi, \rho, \varrho, \sigma, % % \varsigma, \tau, \upsilon, \phi, \varphi, \chi, \psi, \omega, % % \Delta, \Gamma, \Theta, \Lambda, \Xi, \Pi, \Sigma, \Upsilon, % % \Phi, \Psi, \Omega, \newif, \ifnum, \count@, \ensuremath} % % % \title{Le module \MODULE{paresse}\thanks{Ce document correspond au % fichier \MODULE{paresse.sty}~\fileversion, du \filedate, édition du % cinquantenaire.}} % \author{Le \TeX nicien de surface\\ % \url{le.texnicien.de.surface@wanadoo.fr}} % % \maketitle % \begin{abstract} % Ce module, reprenant un exemple de T.~\textsc{Lachand-Robert} % dans~\cite{tlachand}, fournit un moyen de taper des lettres % grecques isolées à l'aide du caractère actif et % redéfini. Au lieu de |\(\alpha\)| ou tape |§a| pour obtenir % \(\alpha\). % % \textbf{Important} : Il doit être chargé \textbf{après} % \MODULE{inputenc} si ce dernier est utilisé. De plus, il faut que % le signe § soit une lettre pour \TeX. % \end{abstract} % \begin{otherlanguage}{english} % \begin{abstract} % This package implements an example from % T.~\textsc{Lachand-Robert} in~\cite{tlachand}. It provides a % means of typing isolated greek letters with the character § % activated and redefined. Instead of |\(\alpha\)| one types |§a| % to obtain \(\alpha\). % % \textbf{Important}: You have to load it \textbf{after} the % \MODULE{inputenc} package if the latter is used. Moreover the % sign § must be a letter for \TeX. % \end{abstract} % \end{otherlanguage} % % \tableofcontents{} % % \section{Introduction} % Cette extension ne fournit qu'un accès \og rapide et économique \fg % aux lettres grecques qui s'obtiennent à l'aide d'une macro comme % |\alpha| ou |\Omega|. Elle fournit un environnement et une commande % qui permettent d'utiliser § pour taper ces lettres. Un |\ensuremath| % nous dispense de nous placer explicitement \TO c'est-à-dire en % tapant |$ $| ou bien |\( \)| ou encore |\[ \]| ou tout autre chose % ayant le même effet\TF en mode mathématique pour obtenir une lettre % grecque. % % L'idée de la méthode est due à T.~\textsc{Lachand-Robert} et est % exposée dans~\cite{tlachand}. Je n'ai fait qu'ajouter le % |\ensuremath| bien agréable pour l'écriture de macros. % % Bien entendu, on \textbf{ne} dispose \textbf{pas} de macros pour la % minuscule omicron ni pour les majuscules alpha, beta\dots{} qui % s'obtiennent à l'aide des latines romaines de même % apparence\footnote{Je ne ferai aucune remarque sur les problèmes de % codage que cela pose.}. Je ne me suis pas senti le courage ni la % force de fournir une solution qui permettent d'obtenir dans une % formule baignant dans un texte en italique gras un alpha majuscule % droit, romain, \&c. % % Pour finir cette introduction, glosons le nom de cette % extension. |paresse| vient de ce que le signe § indique un \og % paragraphe \fg en ayant une forme lointainement apparentée au % S et n'a donc aucun lien avec le \emph{défaut} si fréquent, % encore que, à bien y réfléchir\dots % % \section{Utilisation} % % On charge cette extension avec |\usepackage{paresse}| % \textbf{après} l'extension |inputenc|. Il faut que la \og % caractère \fg § soit reconnu par \TeX\ comme une lettre. On % pourra, par exemple, utiliser l'option |latin1| de |inputenc| % pour obtenir cela. % % % Par défaut, l'extension est chargée avec l'option |wild| ce qui % signifie que les macros de la forme |§a| sont disponibles. Si % l'on préfère, on peut passer à |paresse| l'option |tame| avec % |\usepackage[tame]{paresse}|. Il faut alors utiliser la % commande |\ActiveLaParesse| ou l'environnement |ParesseActive| % pour utiliser les macros en §. % % Lorsque la \og paresse est active \fg, il suffit de taper |§a| % pour obtenir \(\alpha\). On a de même accès à toutes les % lettres grecques auxquelles sont consacrées une macro comme % |\alpha|, voyez~\pageref{tableau}. On obtient, de même, % \(\alpha^{\beta}\) avec |\(§a^{§b}\)| lorsque § est active. On % notera que, si l'extension |amsmath| est utilisée, les % accolades sont optionelles et qu'on obtient un résultat % identique avec |\(§a^§b\)|. % % \subsection{Les options} % % \begin{itemize} % \item |tame| s'oppose à |wild| qui est l'option par % défaut. Lorsque |tame| règne, il \textbf{faut} un environnement % |ParesseActive| ou une commande |\ActiveLaParesse| pour % utiliser les macros à §. % % \item |ttau| s'oppose à |ttheta| qui est l'option par % défaut. Lorsque |ttheta| est active |§t| donne \(\theta\) dans % le cas contraire |§t| donne \(\tau\). En tous cas, \(\theta\) % est accessible par |§v| et \(\tau\) par |§y|. % % \textbf{Remarque :} \(\Theta\) est obtenu par |§V| de manière % \og régulière \fg et \emph{également} par |§T| quelle que soit % l'option choisie. % % \item |epsilon| s'oppose à |varepsilon| qui est l'option par % défaut. Avec |epsilon|, |§e| donne \(\epsilon\) sinon |§e| % donne \(\varepsilon\). % % \item Se comportent comme le couple |epsilon|, |varepsilon| les % couples suivants |theta| et |vartheta| ; |pi| et |varpi| ; |rho| % et |varrho| ; |sigma| et |varsigma| ; |phi| et |varphi|. % \end{itemize} % % Par défaut on a |varepsilon|, |theta|, |pi|, |rho|, |sigma|, % |varphi| et |wild|. % % \subsection{Commandes et environnement} % \DescribeMacro{\makeparesseletter} % Cette macro donne au \og caractère \fg § le catcode d'une % lettre. Après cela, on peut se servir de § dans un nom de % macro, par exemple. C'est le pendant de |\makeatletter|. % % \DescribeMacro{\makeparesseother} % Cette macro donne au caractère § le catcode % \emph{other}. C'est le \og contraire \fg de la % précédente. Cela équivaut au |\makeatother|. % % \DescribeMacro{\ActiveLaParesse} % Cette macro active le caractère § et permet ainsi d'accéder aux % macros dont le nom commence par § comme |§a|. Pour une % liste de ces macros et leurs significations, voyez le % tableau~\pageref{tableau}. % % \DescribeEnv{ParesseActive} % Dans cet environnement le caractère § est actif ce qui permet % d'utiliser les macros en §. % On utilisera cet environnement si l'on veut utiliser les macros % quand on a chargé l'extension \MODULE{paresse} avec % l'option \texttt{tame}. % % % \subsection{Tableau des macros} % % \begin{center}\Large % \begin{ParesseActive} \label{tableau} % \begin{tabular}{*4{||>{\ttfamily \§}c| c}||}\hline % a & §a & b & §b & g & §g & d & §d\\ \hline % e & §e & z & §z & h & §h & v & §v\\ \hline % i & §i & k & §k & l & §l & m & §m\\ \hline % n & §n & x & §x & p & §p & r & §r\\ \hline % s & §s & y & §y & u & §u & f & §f\\ \hline % c & §c & q & §q & w & §w &\multicolumn{1}{ c|}{} & \\ \hline\hline % G & §G & D & §D & V & §V & L & §L\\ \hline % X & §X & P & §P & S & §S & U & §U\\ \hline % F & §F & Q & §Q & W & §W &\multicolumn{1}{ c|}{} & \\ \hline % \end{tabular} % \end{ParesseActive} % \end{center} % % \paragraph{Remarques : } à l'exception de {\ActiveLaParesse §v, % §y et §q} les lettres utilisées dans les noms des macros sont % chargées de vertu mnémotechniques \texttt{:-)} et les % majuscules grecques s'obtiennent à l'aide de la majuscule % correspondante. % % \StopEventually{ % \begin{thebibliography}{99} % \addcontentsline{toc}{section}{Bibliographie} % \bibitem{tlachand} T.~\textsc{Lachand-Robert}. % \emph{La maîtrise de \TeX{} et \LaTeX{}}. % Masson, Paris, Milan, Barcelone, \oldstylenums{1995}.\\ % \textsc{isbn} : \texttt{2-225-84832-7}. % \end{thebibliography} % \PrintChanges \PrintIndex} % \iffalse %<*package> % \fi % \section{Le code} % Le code est fourni presque sans commentaire. J'espère qu'il est % assez clair. Cela dit, il ressemble beaucoup à celui de % l'extension |engpron| du même \emph{auteur}. % % Ici j'utilise |\def| à outrance pour récupérer les % redéfinitions des macros faites par des extensions comme % |fourier|\footnote{Mes remerciements à Michel \textsc{Bovani} % pour ses conseils sur \url{fr.comp.text.tex}.}. % % On dit bonjour. On définit quelques variables booléennes et on % fixe leur valeur par défaut. On traite les options et on crie % si l'une d'elles n'est pas connue. % \begin{macrocode} \newif\if@optiontame \newif\if@optiontau \newif\if@optionvareps \newif\if@optionvartheta \newif\if@optionvarrho \newif\if@optionvarsigma \newif\if@optionvarphi \newif\if@optionvarpi % \end{macrocode} % % Déclarations des options. Suivant l'option on fixe la valeur des % booléens avec les \cs{@option...true/false}. % \begin{macrocode} \DeclareOption{tame}{\@optiontametrue} \DeclareOption{wild}{\@optiontamefalse} \DeclareOption{ttau}{\@optiontautrue} \DeclareOption{ttheta}{\@optiontaufalse} \DeclareOption{varepsilon}{\@optionvarepstrue} \DeclareOption{epsilon}{\@optionvarepsfalse} \DeclareOption{vartheta}{\@optionvarthetatrue} \DeclareOption{theta}{\@optionvarthetafalse} \DeclareOption{varrho}{\@optionvarrhotrue} \DeclareOption{rho}{\@optionvarrhofalse} \DeclareOption{varpi}{\@optionvarpitrue} \DeclareOption{pi}{\@optionvarpifalse} \DeclareOption{varsigma}{\@optionvarsigmatrue} \DeclareOption{sigma}{\@optionvarsigmafalse} \DeclareOption{varphi}{\@optionvarphitrue} \DeclareOption{phi}{\@optionvarphifalse} % \end{macrocode} % % On traite le cas des options inconnues avec un message d'erreur. % \begin{macrocode} \DeclareOption*{\PackageError{paresse} {The option \CurrentOption\space is not known!\MessageBreak The default options are:\MessageBreak varepsilon, theta, pi, rho, sigma, and varphi.}% {Choose between `wild' (for an active Paresse in all the document) \MessageBreak and `tame' (so that § prints the paragraph symbol). \MessageBreak See the documentation for other options.}} % \end{macrocode} % % On active les options par défaut: |wild|, |varepsilon|, |theta|, % |pi|, |rho|, |sigma| et |varphi|. % \begin{macrocode} \ExecuteOptions{wild,varepsilon,theta,pi,rho,sigma,varphi} \ProcessOptions\relax % \end{macrocode} % % On sauvegarde le catcode et la définition courante du caractère §. % \begin{macrocode} \count@=\catcode`\§ \let\GA@LaVieilleParesse= § % \end{macrocode} % On définit une macro pour pouvoir obtenir le caractère % lui-même. Ça peut servir, parfois\dots % \begin{macrocode} \def\§{\S} % \end{macrocode} % % On définit une série de macros plus ou moins \og cachées \fg. % On doit recourir à des acrobaties pour obtenir ce que l'on veut % et pour éviter que \TeX\ ne hurle des méchancetés du genre % |\inaccessible|. % \begin{macrocode} \newcommand{\makeparesseletter}{\catcode `\§=11\relax} \newcommand{\makeparesseother}{\catcode `\§=12\relax} \newcommand{\GA@MakeParesseActive}{\catcode `\§=\active} \def\GA@ActiveLaParessexii{\catcode `\§=\active} \def\GA@ActiveLaParessexiii{\catcode `\§=\active \def§##1{\ensuremath{\csname \string§##1\endcsname}}} \ifnum\count@=12 \let\GA@ActiveLaParesse \GA@ActiveLaParessexii \else \let\GA@ActiveLaParesse \GA@ActiveLaParessexiii \fi % \end{macrocode} % La macro utile puis l'environnement itou. Ils font tous les % deux appels à la macro \emph{cachée} qui suit. % \begin{macro}{\ActiveLaParesse} % Ce n'est qu'un alias pour \cs{GA@ActiveLaParesse}. % \begin{macrocode} \newcommand{\ActiveLaParesse}{\GA@ActiveLaParesse} % \end{macrocode} % \end{macro} % % \begin{environment}{ParesseActive} % Environnement minimaliste qui se contente d'appeler % \cs{GA@ActiveLaParesse} en bornant son effet par le groupe créé par % l'environnement. % \begin{macrocode} \newenvironment{ParesseActive}{\GA@ActiveLaParesse}{} % \end{macrocode} % \end{environment} % % % Une série de macros pour les lettres à variantes. % \begin{macrocode} \if@optionvareps \def\@epsilon {\varepsilon} \else \def\@epsilon {\epsilon} \fi \if@optionvartheta \def\@theta {\vartheta} \else \def\@theta {\theta} \fi \if@optionvarpi \def\@pi {\varpi} \else \def\@pi {\pi} \fi \if@optionvarrho \def\@rho {\varrho} \else \def\@rho {\rho} \fi \if@optionvarsigma \def\@sigma {\varsigma} \else \def\@sigma {\sigma} \fi \if@optionvarphi \def\@phi {\varphi} \else \def\@phi {\phi} \fi % \end{macrocode} % On fait de § une lettre et on définit les macros à coup de % |\def\§...|. Avant de passer aux majuscules, on s'occupe de la % lettre t (option |ttau| et |ttheta|). % \begin{macrocode} \makeparesseletter % \end{macrocode} % % \begin{macrocode} \def\§a {\alpha} \def\§b {\beta} \def\§g {\gamma} \def\§d {\delta} \def\§e {\@epsilon} \def\§z {\zeta} \def\§h {\eta} \def\§v {\@theta} \def\§i {\iota} \def\§k {\kappa} \def\§l {\lambda} \def\§m {\mu} \def\§n {\nu} \def\§x {\xi} \def\§p {\@pi} \def\§r {\@rho} \def\§s {\@sigma} \def\§y {\tau} \def\§u {\upsilon} \def\§f {\@phi} \def\§c {\chi} \def\§q {\psi} \def\§w {\omega} % \end{macrocode} % % \begin{macrocode} \if@optiontau \def\§t {\tau}\else \def\§t {\@theta}\fi % \end{macrocode} % % \begin{macrocode} \def\§G {\Gamma} \def\§D {\Delta} \def\§V {\Theta} \def\§T {\Theta} \def\§L {\Lambda} \def\§X {\Xi} \def\§P {\Pi} \def\§S {\Sigma} \def\§U {\Upsilon} \def\§F {\Phi} \def\§Q {\Psi} \def\§W {\Omega} % \end{macrocode} % On rend actif le caractère § et on définit les macros à % noms commençant par §. % \begin{macrocode} \catcode `\§=\active \def§#1{\ensuremath{\csname \string§#1\endcsname}} % \end{macrocode} % Si l'option |tame| est en vigueur, on remet § dans son état % initial et on sort. % \begin{macrocode} \if@optiontame \catcode`\§=\count@ \ifnum\count@=13 \let §=\GA@LaVieilleParesse \fi \fi \endinput % \end{macrocode} % \iffalse % % \fi % \Finale \endinput %%% Local Variables: %%% mode: doctex %%% fill-column: 70 %%% coding: iso-8859-15 %%% TeX-master: t %%% End: