% \iffalse meta-comment
%-*- coding: iso-8859-15 -*-
% --------------------------------------------------------------------
% 
% Copyright (C) 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
% 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
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\def\fileversion{v2.1}  
%<package>\def\filedate{2008/08/16}
%<package>\def\fileinfo{fichier paresse.dtx par le TeXnicien de surface}
%<package>\ProvidesPackage{paresse}
%<package>   [\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
%%% <francisation>
\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
%%% </francisation>
\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}
%</driver>
% \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
%</package>
% \fi
% \Finale
\endinput
%%% Local Variables: 
%%% mode: doctex
%%% fill-column: 70
%%% coding: iso-8859-15
%%% TeX-master: t
%%% End: 
