diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/paresse/paresse.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/paresse/paresse.dtx | 1536 |
1 files changed, 589 insertions, 947 deletions
diff --git a/Master/texmf-dist/source/latex/paresse/paresse.dtx b/Master/texmf-dist/source/latex/paresse/paresse.dtx index 87cd632d60c..5a1b6a47287 100644 --- a/Master/texmf-dist/source/latex/paresse/paresse.dtx +++ b/Master/texmf-dist/source/latex/paresse/paresse.dtx @@ -1,14 +1,14 @@ % \iffalse meta-comment %-*- coding: iso-8859-15 -*- -% Time-stamp: <2010-03-21 14:57:16 yvon> +% Time-stamp: <2011-04-19 17:31:53 yvon> % -------------------------------------------------------------------- % -% Copyright (C) 2004, 2008, 2010 by Yvon Henel -% dit « le TeXnicien de surface » <le.texnicien.de.surface@wanadoo.fr> +% Copyright (C) 2011 +% by Yvon Henel alias 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. @@ -22,12 +22,17 @@ % % \iffalse %<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01] -%<package|doc>\def\fileversion{v3} -%<package|doc>\def\filedate{2010/03/21} -%<package>\def\fileinfo{fichier paresse.dtx par le TeXnicien de surface} -%<package>\ProvidesPackage{paresse} -%<package> [\filedate\space\fileversion\space\fileinfo] -% +%<*common> +\def\fileversion{v4} +\def\filedate{2011/04/19} +\def\fileinfo{fichier paresse par le TeXnicien de surface} +%</common> +%<*package> +\ProvidesPackage{paresse} + [\filedate\space\fileversion\space\fileinfo] +%</package> +% \fi +% \iffalse %<*driver> \documentclass[a4paper]{ltxdoc} \usepackage[latin1]{inputenc} @@ -35,61 +40,34 @@ \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} +\usepackage[frenchb,english]{babel} +\usepackage{hypdoc,hologo} + +\newcommand*\PS{\texttt{\S}\xspace} +\newcommand*\PSVerb[1]{\texttt{\S #1}} +\newcommand\BOP{\discretionary{}{}{}} +\newcommand\Option[1]{\textsc{#1}} +\newcommand\Pkg[1]{\textsf{#1}} +\newcommand\NOUVO{% + \marginpar{\hspace*{\stretch{1}}% + \textbf{N (v4)}\hspace*{.5em}}\xspace} % commentez la ligne suivante pour avoir un document avec le code % \OnlyDescription +% comment the preceding line to obtain a document with the code % puis cherchez \StopEventually pour d'éventuels réglages -\EnableCrossrefs +% then look for \StopEventually to make a bit of setup +\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}} -\newcommand\NOUVO{% - \marginpar{\hspace*{\stretch{1}}% - \textbf{N (v3)}\hspace*{.5em}}\xspace} \begin{document} \DocInput{paresse.dtx} \end{document} %</driver> % \fi % -% \CheckSum{332} +% \CheckSum{592} % % \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 @@ -108,73 +86,89 @@ % 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!} -% \changes{v3}{2010/03/19}{Option pour codage de Sylvio \textsc{Levi}.} +% \changes{v0.0}{2004/02/07}{New name, some redefinitions, +% first public version} +% \changes{v1}{2004/04/17}{Documentation updated} +% \changes{v1a}{2005/03/01}{Correction of a bug in Infofile which prevented the loading of the package} +% \changes{v2}{2008/08/13}{A useless macro is deleted} +% \changes{v2}{2008/08/13}{Documentation reorganised} +% \changes{v2}{2008/08/13}{New wrapping to provide a tds.zip.} +% \changes{v2.1}{2008/08/16}{Correction of a bug in Infofile, once again} +% \changes{v3}{2010/03/19}{Option for Sylvio \textsc{Levi}'s encoding} +% \changes{v4}{2011/04/16}{Documentation of the code in English} +% \changes{v4}{2011/04/16}{paresse goes utf8} % % \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} % +% \DoNotIndex{\newcommand,\newenvironment,\i,\ae,\oe,\DeclareOption,^^A +% \ifthenelse,\if,\else,\fi,\tr@@c,\ExecuteOptions,\ProcessOptions,^^A +% \relax,\MessageBreak,\CurrentOption,\RequirePackage,\PackageError,^^A +% \def,\endinput,\let,\boolean,\newboolean,\setboolean,\renewcommand,^^A +% \afterassignment,\global,\aftergroup,\bgroup,\egroup,\csname,^^A +% \endcsname,\emph,\catcode,\space,\string,\next,\active,\rmfamily,\rule,^^A +% \textsl,\upshape, \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 +% \Delta, \Gamma, \Theta, \Lambda, \Xi, \Pi, \Sigma, \Upsilon, ^^A +% \ExecuteOptionsX,\ProcessOptionsX,\DeclareOptionX,^^A +% \DeclareUnicodeCharacter, \parse@XML@charref, ^^A +% \parse@UTFviii@a, \parse@UTFviii@b, \AtBeginDocument, ^^A +% \@eha, \@firstofone, \@gobble,\@toks, \@latex@error, ^^A +% \begingroup, \endgroup, \gdef, \IeC, \ifcat, \ifcsname, ^^A +% \ifluatex, \ifxetex, \iftogoff, \iftogon, \UTFviii@tmp, ^^A +% \UTFviii@four@octets, \UTFviii@three@octets, \UTFviii@two@octets,^^A +% \ifx, \the, \wlog, \togoff, \togon, \@ifpackageloaded, ^^A +% \expandafter, \futurelet, \makeatletter, \makeatother, ^^A +% \inputencodingname, \InputIfFileExists, \PackageInfo,^^A +% \PackageWarning, \newtog, \ProvidesFile, \PS, \PSVerb, ^^A +% \stop, \S, \usepackage, \temp@a, \define@bitogkeys, ^^A +% \Phi, \Psi, \Omega, \newif, \ifnum, \count@, \ensuremath, ^^A +% \~, \", \^} ^^A % -% \title{Le module \MODULE{paresse}\thanks{Ce document correspond au -% fichier \MODULE{paresse.sty}~\fileversion, du \filedate, édition du -% cinquantenaire.}} +% \title{The package \Pkg{paresse}\thanks{This document corresponds +% to file \Pkg{paresse.sty}~\fileversion, dated \filedate.}} % \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\). +% 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 \PS activated and redefined. Instead of +% |\(\alpha\)| one types \PSVerb{a} to obtain \(\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. +% \textbf{Important}: You have to load it \textbf{after} the +% \Pkg{inputenc} package if the latter is used. Moreover the sign +% \PS must be a letter for \TeX. +% +% \textbf{New}: with this version~4, one can use this package even +% with utf8-encoded source for \hologo{LaTeX}, \hologo{LuaLaTeX}, or +% \hologo{XeLaTeX}. +% +% The English documentation for the final user of the package +% \Pkg{paresse} is available in the file \texttt{paresse-en.pdf}. % -% La documentation française pour l'utilisateur de l'extension -% \MODULE{paresse} est désormais disponible sous le nom de -% \texttt{paresse-fr}. % \end{abstract} -% \begin{otherlanguage}{english} +% \begin{otherlanguage}{french} % \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\). +% 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 \PS actif et redéfini. Au +% lieu de |\(\alpha\)| ou tape \PSVerb{a} pour obtenir +% \(\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. +% \textbf{Important} : Il doit être chargé \textbf{après} +% \Pkg{inputenc} si ce dernier est utilisé. De plus, il faut +% que le signe \PS soit une lettre pour \TeX. % -% The English documentation for the final user of the package -% \MODULE{paresse} is available in the file \texttt{paresse-en}. +% \textbf{Nouveau}: avec cette version~4, on peut utiliser cette +% extension même dans un source codé en utf-8 avec \hologo{LaTeX}, +% \hologo{LuaLaTeX} ou \hologo{XeLaTeX}. % -% The code documentation is in French only. Sorry. But nonetheless, -% in case you really want it, look at the \texttt{.dtx} file and -% find \cs{OnlyDescription} as usual. +% La documentation française pour l'utilisateur de l'extension +% \Pkg{paresse} est disponible sous le nom de +% \texttt{paresse-fr.pdf}. % \end{abstract} % \end{otherlanguage} % @@ -192,907 +186,555 @@ % \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. +% \section{The code} +% +% +% \subsection{The sty file} +% +% From this 4th version, I use \Pkg{skeyval} for it provides +% toggle-keys. \Pkg{skeyval} loads \Pkg{xkeyval} the macros of +% which I use to manage options. +% +% \Pkg{ifluatex} and \Pkg{ifxetex} are required to take care of +% \hologo{LuaLaTeX} and \hologo{XeLaTeX} respectively. +% % \begin{macrocode} -\newif\ifGA@optiontame -\newif\ifGA@optiontau -\newif\ifGA@optionvareps -\newif\ifGA@optionvartheta -\newif\ifGA@optionvarrho -\newif\ifGA@optionvarsigma -\newif\ifGA@optionvarphi -\newif\ifGA@optionvarpi +\RequirePackage{skeyval} +\RequirePackage{ifluatex} +\RequirePackage{ifxetex} % \end{macrocode} -% \changes{v3}{2010/03/19}{pour l'option Levi} +% +% With \cmd{\define@bitogkeys}, from \Pkg{skeyval}, I define nine +% pairs of complementary toggle keys. If one of the pair is set to +% \texttt{true}, the other will be automatically set to \texttt{false} +% and vice-versa. % \begin{macrocode} -\newif\ifGA@optionlegacy +\define@bitogkeys[GA]{paresse.sty}[GA@]{legacy}[true]{levi}{}{} +\define@bitogkeys[GA]{paresse.sty}[GA@]{wild}[true]{tame}{}{} +\define@bitogkeys[GA]{paresse.sty}[GA@]{ttau}[true]{ttheta}{}{} +\define@bitogkeys[GA]{paresse.sty}[GA@]{varepsilon}[true]{epsilon}{}{} +\define@bitogkeys[GA]{paresse.sty}[GA@]{varphi}[true]{phi}{}{} +\define@bitogkeys[GA]{paresse.sty}[GA@]{pi}[true]{varpi}{}{} +\define@bitogkeys[GA]{paresse.sty}[GA@]{sigma}[true]{varsigma}{}{} +\define@bitogkeys[GA]{paresse.sty}[GA@]{rho}[true]{varrho}{}{} +\define@bitogkeys[GA]{paresse.sty}[GA@]{theta}[true]{vartheta}{}{} % \end{macrocode} % -% Déclarations des options. Suivant l'option on fixe la valeur des -% booléens avec les \cs{@option...true/false}. +% I set the behaviour of the package in case of an unknown option +% with \cmd{\DeclareOptionX*}, from \Pkg{xkeyval}. % \begin{macrocode} -\DeclareOption{tame}{\GA@optiontametrue} -\DeclareOption{wild}{\GA@optiontamefalse} -\DeclareOption{ttau}{\GA@optiontautrue} -\DeclareOption{ttheta}{\GA@optiontaufalse} -\DeclareOption{varepsilon}{\GA@optionvarepstrue} -\DeclareOption{epsilon}{\GA@optionvarepsfalse} -\DeclareOption{vartheta}{\GA@optionvarthetatrue} -\DeclareOption{theta}{\GA@optionvarthetafalse} -\DeclareOption{varrho}{\GA@optionvarrhotrue} -\DeclareOption{rho}{\GA@optionvarrhofalse} -\DeclareOption{varpi}{\GA@optionvarpitrue} -\DeclareOption{pi}{\GA@optionvarpifalse} -\DeclareOption{varsigma}{\GA@optionvarsigmatrue} -\DeclareOption{sigma}{\GA@optionvarsigmafalse} -\DeclareOption{varphi}{\GA@optionvarphitrue} -\DeclareOption{phi}{\GA@optionvarphifalse} +\DeclareOptionX*{\PackageError{paresse} {The option "\CurrentOption" + is not known!\MessageBreak The default options are:\MessageBreak + legacy, varepsilon, theta, pi, rho, sigma, and varphi.}% + {Choose between `wild' (for an active Paresse in all the document) + \MessageBreak and `tame', so that the character obtained by + \string\S\MessageBreak prints the section symbol \string\S). + \MessageBreak See the documentation for other options.}} % \end{macrocode} -% \changes{v3}{2010/03/20}{ajout des options |legacy| et |Levi|} +% +% The default options are: |legacy|, |wild|, |varepsilon|, +% |theta|, |pi|, |rho|, |sigma|, and |varphi|. +% \changes{v3}{2010/03/20}{Default option |legacy| added} % \begin{macrocode} -\DeclareOption{legacy}{\GA@optionlegacytrue} -\DeclareOption{Levi}{\GA@optionlegacyfalse} +\ExecuteOptionsX[GA]{legacy,wild,varepsilon,theta,pi,rho,sigma,varphi} +\ProcessOptionsX[GA]\relax % \end{macrocode} % -% On traite le cas des options inconnues avec un message d'erreur. +% The prefix of the \emph{secret} macros of this package is +% |GA@|. Here I define the macros which will print the correct +% character according to the chosen options. \cs{iftogon} is provided +% by \Pkg{skeyval}. % \begin{macrocode} -\DeclareOption*{\PackageError{paresse} - {The option \CurrentOption\space is not known!\MessageBreak - The default options are:\MessageBreak - legacy, 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.}} +\iftogon{GA@varepsilon}{% + \def\GA@epsilon{\varepsilon}}{\def\GA@epsilon{\epsilon}} +\iftogon{GA@vartheta}{\def\GA@theta{\vartheta}}{\def\GA@theta{\theta}} +\iftogon{GA@varpi}{\def\GA@pi{\varpi}}{\def\GA@pi{\pi}} +\iftogon{GA@varrho}{\def\GA@rho{\varrho}}{\def\GA@rho{\rho}} +\iftogon{GA@varsigma}{\def\GA@sigma{\varsigma}}{\def\GA@sigma{\sigma}} +\iftogon{GA@varphi}{\def\GA@phi{\varphi}}{\def\GA@phi{\phi}} +% \end{macrocode} +% +% +% I test the engine, it it is \hologo{XeTeX} or \hologo{LuaTeX}, the +% file \texttt{paresseold.sto} is loaded. +% \begin{macrocode} +\ifluatex + \PackageInfo{paresse}{compiling with luatex} + \InputIfFileExists{paresseold.sto}{% + \PackageInfo{paresse}{paresseold loaded}}{% + \PackageInfo{paresse}{paresseold not loaded}} +\else + \ifxetex + \PackageInfo{paresse}{compiling with xetex} + \InputIfFileExists{paresseold.sto}{% + \PackageInfo{paresse}{paresseold loaded}}{% + \PackageInfo{paresse}{paresseold not loaded}} + \else +% \end{macrocode} +% We arrive here if the working engine is good old \hologo{TeX} (in +% fact, good not so old \hologo{eTeX} I hope for some things could +% depend on \hologo{eTeX}-nical internals). +% +% First some useful macros to take care of the encoding. The macros +% have been given to me by Christian \textsc{Tellechea} I do heartily +% thank for his kindness. +% +% The first one takes care of problems of encoding. +% \begin{macrocode} +\newcommand\encoding@error{% + \@latex@error{% + paresse needs inputenc loaded with option "utf8" + or option such as "latin1" (8 bits encodign).}{}\stop} +% \end{macrocode} +% The second checks that \Pkg{inputenc} has been loaded before +% \Pkg{paresse}. +% \begin{macrocode} +\@ifpackageloaded{inputenc}\relax +{\PackageError{paresse}{% + Please, load inputenc package before paresse}{% + With LaTeX, "paresse" needs to know the encoding to work well and so + the package "inputenc" must be loaded, with \string\usepackage, before + loading "paresse" itself}} +% \end{macrocode} +% The test for \Pkg{inputenc} and encoding is delayed at the beginning +% of the document where all things about encoding should be settled. +% \begin{macrocode} +\AtBeginDocument{% + \@ifpackageloaded{inputenc}\find@encoding\encoding@error} +% \end{macrocode} +% I create a new toggle |GA@utf8| and set it to \texttt{false}. It +% will be used later to chose the correct action. +% \begin{macrocode} +\newtog[GA@]{utf8}[false] % \end{macrocode} +% A bit of code to find the declared encoding and set up the toggle +% |GA@utf8| accordingly. There again work by Christian +% \textsc{Tellechea}. +% \begin{macrocode} +\newcommand\find@encoding{% + \begingroup + \def\utf@encoding{utf8}% + \def\temp@a{\togoff{GA@utf8}% + \PackageInfo{paresse}{8-bit encoding expected\@gobble}} + \ifx\utf@encoding\inputencodingname + \def\temp@a{\togon{GA@utf8}% + \PackageInfo{paresse}{utf8 encoding detected\@gobble}} + \fi + \expandafter\endgroup\temp@a} +% \end{macrocode} +% +% The main action is then delayed at the beginning of the document for +% reasons already given above. In case the utf8 encoding has been +% detected, the file \texttt{paresseutf8.sto} is loaded, otherwise it +% is \texttt{paresseold.sto} once again. % -% On active les options par défaut: |legacy|, |wild|, |varepsilon|, -% |theta|, |pi|, |rho|, |sigma| et |varphi|. -% \changes{v3}{2010/03/20}{Ajout de l'option |legacy| par défaut} +% \cs{makeatletter} is needed to mimic the loading of a \texttt{sty} +% file for, at the beginning of the document, |@| is no more a +% letter. Naturally, we must revert |@| to its non-letter status at +% the end of the loading. % \begin{macrocode} -\ExecuteOptions{legacy,wild,varepsilon,theta,pi,rho,sigma,varphi} -\ProcessOptions\relax +\AtBeginDocument{% + \makeatletter + \iftogoff{GA@utf8}{% + \InputIfFileExists{paresseold.sto}{% + \PackageInfo{paresse}{old loaded\@gobble}}{% + \PackageError{paresse}{paresseold.sto not found}{% + The package "paresse" needs to load the file "paresseold.sto" + but can't find it. Something seems to be broken in your TeX + system}}}{% + \InputIfFileExists{paresseutf8.sto}{% + \PackageInfo{paresse}{utf8 loaded\@gobble}}{% + \PackageError{paresse}{paresseutf8 not found}{% + The package "paresse" needs to load the file "paresseutf8.sto" + but can't find it. Something seems to be broken in your TeX + system}}} + \makeatother} +\fi +\fi % \end{macrocode} % -% On sauvegarde le catcode et la définition courante du caractère §. +% And that's all for the main file. +% \iffalse +%</package> +% \fi +% \iffalse +%<*oldpack> +% \fi +% +%\subsection{The file paresseold.sto} +% +% This file will be loaded in all cases except when the working engine is +% \hologo{LaTeX} with |[utf8]{inputenc}| loaded. |^^a7| is \TeX nical +% code for the character I type, on my French keypad, with key \S. +% +% This is almost the content of the version~3 of +% \texttt{paresse.sty}. The changes are the use of toggles provided by +% \Pkg{skeyval} and the appearance of \PSVerb{Z} to obtain \S --- +% which is always available through \cs{S}\footnote{So could I speak +% of \PSVerb{Z} in terms of ``shortcut''?}. +% +% \begin{macrocode} +\ProvidesFile{paresseold.sto} +% \end{macrocode} +% Presentations made, I save the current category code (catcode) of +% the character \PS and its definition in \cs{GA@LaVieilleParesse}. % \begin{macrocode} -\count@=\catcode`\§ -\let\GA@LaVieilleParesse= § +\count@=\catcode`\^^a7 +\let\GA@LaVieilleParesse= ^^a7 % \end{macrocode} -% On définit une macro pour pouvoir obtenir le caractère lui-même. Ça -% peut servir, parfois\dots +% For sake of convienience, \PS is def'ed as |\S|. % \begin{macrocode} -\def\§{\S} +\def\^^a7{\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|. +% Come some end-user macros. \cs{makeparesseletter} changes the +% \DescribeMacro{\makeparesseletter} catcode of \PS to~\(11\) which is +% the code of letter and \DescribeMacro{\makeparesseother} +% \cs{makeparesseother} changes that code to~\(12\) the code of other +% characters. % \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}}} +\newcommand{\makeparesseletter}{\catcode `\^^a7=11\relax} +\newcommand{\makeparesseother}{\catcode `\^^a7=12\relax} +% \end{macrocode} +% \cs{GA@MakeParesseActive} is an internal macro to activate \PS. +% \DescribeMacro{\GA@MakeParesseActive} +% Then come two macros to activate \PS for the remaining part of the +% file. On of them is applied according to the catcode of \PS at the +% beginning --- catcode saved in |\count@|. +% \begin{macrocode} +\newcommand{\GA@MakeParesseActive}{\catcode `\^^a7=\active} +\def\GA@ActiveLaParessexii{\catcode `\^^a7=\active} +\def\GA@ActiveLaParessexiii{\catcode `\^^a7=\active + \def^^a7##1{\ensuremath{\csname \string^^a7##1\endcsname}}} \ifnum\count@=12 -\let\GA@ActiveLaParesse \GA@ActiveLaParessexii + \let\GA@ActiveLaParesse \GA@ActiveLaParessexii \else -\let\GA@ActiveLaParesse \GA@ActiveLaParessexiii + \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}. +% +% It's time to provide one end-user macro and one environment useful +% \DescribeMacro{\ActiveLaParesse} +% \DescribeEnv{ParesseActive} +% when the package has been loaded with option \Option{tame} to +% locally activate \PS. % \begin{macrocode} \newcommand{\ActiveLaParesse}{\GA@ActiveLaParesse} +\newenvironment{ParesseActive}{\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. +% Now come the definitions of the meanings of the \PS-macros. For +% these definitions to work, \PS is made a letter. % \begin{macrocode} -\newenvironment{ParesseActive}{\GA@ActiveLaParesse}{} +\makeparesseletter +\def\^^a7a {\alpha} +\def\^^a7b {\beta} +\def\^^a7g {\gamma} +\def\^^a7d {\delta} +\def\^^a7e {\GA@epsilon} +\def\^^a7z {\zeta} +\def\^^a7h {\eta} +\def\^^a7i {\iota} +\def\^^a7k {\kappa} +\def\^^a7l {\lambda} +\def\^^a7m {\mu} +\def\^^a7n {\nu} +\def\^^a7x {\xi} +\def\^^a7p {\GA@pi} +\def\^^a7r {\GA@rho} +\def\^^a7s {\GA@sigma} +\def\^^a7u {\upsilon} +\def\^^a7f {\GA@phi} +\def\^^a7w {\omega} +% \end{macrocode} +% In case of option \Option{legacy}, definitions of \PSVerb{v}, +% \PSVerb{y}, \PSVerb{c}, and \PSVerb{q} as in the first two versions +% of this package. +% \begin{macrocode} +\iftogon{GA@legacy}{% + \def\^^a7v {\GA@theta} + \def\^^a7y {\tau} + \def\^^a7c {\chi} + \def\^^a7q {\psi} +% \end{macrocode} +% Care is taken of options \Option{ttau} and \Option{ttheta}. +% \begin{macrocode} + \iftogon{GA@ttau}{\def\^^a7t {\tau}}{\def\^^a7t {\GA@theta}}}{% +% \end{macrocode} +% Definitions of the same \PSVerb{v}, \PSVerb{y}, \PSVerb{c}, and +% \PSVerb{q} with option \Option{levi}. In that case, options +% \Option{ttau} and \Option{ttheta} are no-op. +% \begin{macrocode} + \def\^^a7j {\GA@theta} + \def\^^a7t {\tau} + \def\^^a7q {\chi} + \def\^^a7y {\psi} + \def\^^a7c {\varsigma}} +% \end{macrocode} +% Upper case letters are treated thence: +% \begin{macrocode} +\def\^^a7G {\Gamma} +\def\^^a7D {\Delta} +\def\^^a7L {\Lambda} +\def\^^a7P {\Pi} +\def\^^a7S {\Sigma} +\def\^^a7U {\Upsilon} +\def\^^a7F {\Phi} +\def\^^a7X {\Xi} +\def\^^a7W {\Omega} +% \end{macrocode} +% Once again \Option{legacy} vs. \Option{levi}: +% \begin{macrocode} +\iftogon{GA@legacy}{% + \def\^^a7V {\Theta} + \def\^^a7T {\Theta} + \def\^^a7Q {\Psi} +}{% + \def\^^a7J {\Theta} + \def\^^a7Y {\Psi} +}% +% \changes{va4}{2011/04/17}{\PSVerb{Z} added to produce \PS} +\def\^^a7Z {\S} % \end{macrocode} -% \end{environment} % -% Une série de macros pour les lettres à variantes. +% The end is near! \PS is made active and the \PS-macros defined. This +% is old code --- directly from~\cite{tlachand}. % \begin{macrocode} -\ifGA@optionvareps\def\GA@epsilon{\varepsilon}\else\def\GA@epsilon{\epsilon}\fi -\ifGA@optionvartheta\def\GA@theta{\vartheta}\else\def\GA@theta{\theta}\fi -\ifGA@optionvarpi\def\GA@pi{\varpi}\else\def\GA@pi{\pi}\fi -\ifGA@optionvarrho\def\GA@rho{\varrho}\else\def\GA@rho{\rho}\fi -\ifGA@optionvarsigma\def\GA@sigma{\varsigma}\else\def\GA@sigma{\sigma}\fi -\ifGA@optionvarphi\def\GA@phi{\varphi}\else\def\GA@phi{\phi}\fi +\catcode `\^^a7=\active +\def^^a7#1{\ensuremath{\csname \string^^a7#1\endcsname}} % \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|). +% In case option \Option{tame} is chosen, \PS is given its first +% catcode and meaning back. % \begin{macrocode} -\makeparesseletter +\iftogon{GA@tame}{% + \catcode`\^^a7=\count@ + \ifnum\count@=13 \let ^^a7=\GA@LaVieilleParesse \fi +}% % \end{macrocode} +% +% And that's all for \texttt{paresseold.sto}. +% +% \iffalse +%</oldpack> +% \fi +% \iffalse +%<*utf8pack> +% \fi +% +%\subsection{The file paresseutf8.sto} +% +% This part is brand new. It deals with the document encoded in utf8 +% via |\usepackage[utf8]{fontenc}| and compiled with \hologo{LaTeX}. +% +% It is at the request of Christian \textsc{Tellechea} that this +% package now deals with such source. Most of the macros of this part +% were created by the same Christian. % -% Définitions des macros communes aux options |legacy| et |Levi|: +% First a bit of identification % \begin{macrocode} -\def\§a {\alpha} -\def\§b {\beta} -\def\§g {\gamma} -\def\§d {\delta} -\def\§e {\GA@epsilon} -\def\§z {\zeta} -\def\§h {\eta} -\def\§i {\iota} -\def\§k {\kappa} -\def\§l {\lambda} -\def\§m {\mu} -\def\§n {\nu} -\def\§x {\xi} -\def\§p {\GA@pi} -\def\§r {\GA@rho} -\def\§s {\GA@sigma} -\def\§u {\upsilon} -\def\§f {\GA@phi} -\def\§w {\omega} +\ProvidesFile{paresseutf8.sto} % \end{macrocode} -% Traitements pour l'option |legacy|: +% followed by code partially taken from \texttt{utf8.def} for I wanted +% to implement the option \Option{tame} and, to do so, needed to +% redeclare the character \PS. Four macros are used in such a +% redeclaration and they are made unavailable outside preamble in +% \texttt{utf8.def}. +% +% The original \cs{DeclareUnicodeCharacter} depends on +% \cs{parse@XML@charref} which itself depends on \cs{parse@UTFviii@a} +% and \cs{parse@UTFviii@b}. Those two last macros are defined in terms +% of accessible macros. Therefore, I first create an alias of the last +% two and then define \cs{declareunicodecharacter} and +% \cs{GA@parse@XML@charref} in terms of the \emph{localised} version +% of \cs{parse@UTFviii@a} and \cs{parse@UTFviii@b}. +% +% To be on the safe side, I repeat the invocations of catcode of +% \texttt{utf8.def}. % \begin{macrocode} -\ifGA@optionlegacy -\def\§v {\GA@theta} -\def\§y {\tau} -\def\§c {\chi} -\def\§q {\psi} +\begingroup +\catcode`\"=12 +\catcode`\<=12 +\catcode`\.=12 +\catcode`\,=12 +\catcode`\;=12 +\catcode`\!=12 +\catcode`\~=13 +\global\let\GA@parse@UTFviii@a=\parse@UTFviii@a +\global\let\GA@parse@UTFviii@b=\parse@UTFviii@b +\gdef\declareunicodecharacter#1#2{% + \count@"#1\relax + \wlog{\space\space Redefining Unicode char U+#1 (decimal \the\count@)}% + \begingroup + \GA@parse@XML@charref + \def\UTFviii@two@octets##1##2{\csname u8:##1\string##2\endcsname}% + \def\UTFviii@three@octets##1##2##3{\csname u8:##1% + \string##2\string##3\endcsname}% + \def\UTFviii@four@octets##1##2##3##4{\csname u8:##1% + \string##2\string##3\string##4\endcsname}% + \expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter + \expandafter + \gdef\UTFviii@tmp{\IeC{#2}}% + \endgroup} +\gdef\GA@parse@XML@charref{% + \ifnum\count@<"A0\relax + \PackageError{inputenc}{Cannot\space define\space Unicode\space + char\space value\space <\space 00A0}\@eha + \else\ifnum\count@<"800\relax + \GA@parse@UTFviii@a,% + \GA@parse@UTFviii@b C\UTFviii@two@octets.,% + \else\ifnum\count@<"10000\relax + \GA@parse@UTFviii@a;% + \GA@parse@UTFviii@a,% + \GA@parse@UTFviii@b E\UTFviii@three@octets.{,;}% + \else + \GA@parse@UTFviii@a;% + \GA@parse@UTFviii@a,% + \GA@parse@UTFviii@a!% + \GA@parse@UTFviii@b F\UTFviii@four@octets.{!,;}% + \fi + \fi +\fi} +\endgroup % \end{macrocode} -% +% Here ends the \emph{localisation}. +% +% I provide the same macros as in the preceding case but in such a +% context \cs{makeparesseother} doesn't make sense. It just produces a +% warning. % \begin{macrocode} -\ifGA@optiontau \def\§t {\tau}\else \def\§t {\GA@theta}\fi +\newcommand{\makeparesseletter}{\DeclareUnicodeCharacter{00A7}\S} +\newcommand{\makeparesseother}{% + \PackageWarning{paresse}{% + Command \string\makeparesseother disabled}{% + The command \string\makeparesseother would have been meaningless + in the current context}} % \end{macrocode} -% traitements pour l'option |Levi|: +% +% The end-user macro \cs{ActiveLaParesse} and the corresponding +% environment |ParesseActive|. +% +% The Unicode character of code \texttt{00A7} is made equal to the +% macro \cs{@paresse}. % \begin{macrocode} -\else -\def\§j {\GA@theta} -\def\§t {\tau} -\def\§q {\chi} -\def\§y {\psi} -\def\§c {\varsigma} -\fi +\newcommand{\ActiveLaParesse}{\declareunicodecharacter{00A7}\@paresse} +\newenvironment{ParesseActive}{\ActiveLaParesse}{} % \end{macrocode} -% Idem pour majuscules: +% +% It's time to prepare the definition of the \PS-macros. To begin with +% we activate the character \PS. % \begin{macrocode} -\def\§G {\Gamma} -\def\§D {\Delta} -\def\§L {\Lambda} -\def\§P {\Pi} -\def\§S {\Sigma} -\def\§U {\Upsilon} -\def\§F {\Phi} -\def\§X {\Xi} -\def\§W {\Omega} +\ActiveLaParesse % \end{macrocode} -% +% +% And now for the \emph{working} code: when the paresse is active, the +% byte \texttt{00A7} is an alias for \cs{@paresse} and, because of the +% following, the code \cs{@paresse}\meta{token} is changed into +% \cs{@i@paresse}\meta{token} with the side effect that \cs{@toks} is +% let to \meta{token}. % \begin{macrocode} -\ifGA@optionlegacy -\def\§V {\Theta} -\def\§T {\Theta} -\def\§Q {\Psi} -\else -\def\§J {\Theta} -\def\§Y {\Psi} -\fi +\def\@paresse{\futurelet\@toks\@i@paresse} % \end{macrocode} -% On rend actif le caractère § et on définit les macros à -% noms commençant par §. +% Then if \meta{token}, now ``in'' \cs{@toks}, has the same category +% than \texttt{a} --- hopefully a letter --- then we obtain +% \cs{@ii@paresse} else \cs{S}. +% % \begin{macrocode} -\catcode `\§=\active -\def§#1{\ensuremath{\csname \string§#1\endcsname}} +\def\@i@paresse{% + \csname\ifcat a\@toks @ii@paresse\else S\fi\endcsname} % \end{macrocode} -% Si l'option |tame| est en vigueur, on remet § dans son état -% initial et on sort. +% At that point, the code which was \cs{@paresse}\meta{token} is +% either \cs{S}\meta{token} or \cs{@ii@paresse} which awaits for an +% argument. That argument will be the still present \meta{token}. +% +% If the command \cs{@paresse@}\meta{token} is defined then it does +% its job, else we obtain \cs{S}\meta{token}. % \begin{macrocode} -\ifGA@optiontame -\catcode`\§=\count@ -\ifnum\count@=13 \let §=\GA@LaVieilleParesse \fi -\fi +\def\@ii@paresse#1{% + \ifcsname @paresse@#1\endcsname + \csname @paresse@#1\endcsname\expandafter\@gobble + \else + \expandafter\@firstofone + \fi{\S#1}} +% \end{macrocode} +% +% The next macro is used to define the \PS-macros. +% +% I have not used it in \texttt{paresseold.sto} for that definition +% prevent a feature I'm attached to, to wit, obtaining +% \(\alpha^{\beta}\) with |\(|\PSVerb{a}|^|\PSVerb{b}|\)|. I would +% have been loath to force some of the users to change their until now +% working sources. +% \begin{macrocode} +\def\define@paresse@car#1#2{% + \expandafter\def\csname @paresse@#1\endcsname{\ensuremath{#2}}} +% \end{macrocode} +% +% From now on, there are just definitions of \PS-macros. +% +% The first one, \PSVerb{Z} is new. +% \begin{macrocode} +\define@paresse@car Z\S +\define@paresse@car a\alpha +\define@paresse@car b\beta +\define@paresse@car g\gamma +\define@paresse@car d\delta +\define@paresse@car e\GA@epsilon +\define@paresse@car z\zeta +\define@paresse@car h\eta +\define@paresse@car i\iota +\define@paresse@car k\kappa +\define@paresse@car l\lambda +\define@paresse@car m\mu +\define@paresse@car n\nu +\define@paresse@car x\xi +\define@paresse@car p\GA@pi +\define@paresse@car r\GA@rho +\define@paresse@car s\GA@sigma +\define@paresse@car u\upsilon +\define@paresse@car f\GA@phi +\define@paresse@car w\omega +\iftogon{GA@legacy}{% + \define@paresse@car v\GA@theta + \define@paresse@car y\tau + \define@paresse@car c\chi + \define@paresse@car q\psi + \iftogon{GA@ttau}{% + \define@paresse@car t\tau}{% + \define@paresse@car t\GA@theta}}{% + \define@paresse@car j\GA@theta + \define@paresse@car t\tau + \define@paresse@car q\chi + \define@paresse@car y\psi + \define@paresse@car c\varsigma} +\define@paresse@car G\Gamma +\define@paresse@car D\Delta +\define@paresse@car L\Lambda +\define@paresse@car P\Pi +\define@paresse@car S\Sigma +\define@paresse@car U\Upsilon +\define@paresse@car F\Phi +\define@paresse@car X\Xi +\define@paresse@car W\Omega +\iftogon{GA@legacy}{% + \define@paresse@car V\Theta + \define@paresse@car T\Theta + \define@paresse@car Q\Psi}{% + \define@paresse@car J\Theta + \define@paresse@car Y\Psi}% % \end{macrocode} +% +% At the end of the package, if the option \Option{tame} is chosen, \PS +% is made a letter again. +% \begin{macrocode} +\iftogon{GA@tame}{\makeparesseletter} +% \end{macrocode} +% +% And that's all for the file \texttt{paresseutf8.sto}. % \iffalse -%</package> +%</utf8pack> % \fi % \Finale -% \iffalse -%<*doc> -\documentclass[a4paper]{ltxdoc} -\usepackage[latin1]{inputenc} -\usepackage[T1]{fontenc} -\usepackage[tame]{paresse} -\usepackage{xspace,url,array,ifthen} -\IfFileExists{lmodern.sty}{\usepackage{lmodern}}{} -%<fr>\usepackage[english,frenchb]{babel} -%<en>\usepackage[frenchb,english]{babel} -\usepackage[colorlinks=true, - linkcolor=blue, - urlcolor=blue, - citecolor=blue]{hyperref} -\makeatletter -\newcommand\DescribeOption[1]{\@bsphack \marginpar{\raggedleft - \textsc{#1}}\index{#1 (option)}\@esphack} -%<*fr> -\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} -\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} -%</fr> -\newcommand\BOP{\discretionary{}{}{}} -\newcommand\Option[1]{\textsc{#1}} -\newcommand\MODULE[1]{\textsf{#1}} -\newcommand\NOUVO{% - \marginpar{\hspace*{\stretch{1}}% - \textbf{N (v3)}\hspace*{.5em}}\xspace} - -\begin{document} -\GetFileInfo{paresse.sty} % marche pô! :( - -%<*fr> -\title{Le module \MODULE{paresse}\thanks{Ce document correspond au - fichier \MODULE{\filename}~\fileversion, du \filedate.}} -%</fr> -%<*en> -\title{The package \MODULE{paresse}\thanks{This document corresponds - to the file \MODULE{\filename}~\fileversion, dated \filedate.} - \mbox{}\thanks{English translation by the author. Any comment - about the translation is welcome.}} -%</en> -\author{Le \TeX nicien de surface\\ -\url{le.texnicien.de.surface@wanadoo.fr}} -\maketitle{} - -%<*fr> -\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. - - Le fichier \texttt{paresse.pdf} contient le code commenté en - français. -\end{abstract} -\begin{otherlanguage}{english} - \begin{abstract} - This is the French documentation for the final user of the package - \MODULE{paresse}. The English documentation for the final user is - available in the file \texttt{paresse-en.pdf}. - - The code is not commented in English any more. Sorry. See the - French documentation for French commented code in - \texttt{paresse.pdf}. - \end{abstract} -\end{otherlanguage} -%</fr> -%<*en> -\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\). - - The code is not commented in English any more. Sorry. See the French - documentation for French commented code in \texttt{paresse.pdf}. -\end{abstract} -\begin{otherlanguage}{french} - \begin{abstract} - La documentation française pour l'utilisateur de l'extension - \MODULE{paresse} est désormais disponible sous le nom de - \texttt{paresse-fr.pdf}. - - Le fichier \texttt{paresse.pdf} contient le code commenté en - français. - \end{abstract} -\end{otherlanguage} -%</en> - -\tableofcontents{} - -\newpage - -%<fr>\section{Introduction} -%<en>\section{Introduction} - -%<*fr> -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 -\cs{alpha} ou \cs{Omega}. Elle fournit un environnement et une commande -qui permettent d'utiliser § pour taper ces lettres. Un \cs{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. -%</fr> -%<*en> -This package provides only a `quick and low-cost' access to greek -letters which one can obtain with a macro such as \cs{alpha} or -\cs{Omega}. It provides also an environment and a macro which make -possible the use of § to type in those letters. Because of an -\cs{ensuremath} we are not bound to explicitly enter ---i.e. by typing -|$ $| or |\( \)| or else |\[ \]| or anything whatsoever with the same -effect--- mathematics mode to obtain a greek letter. -%</en> - -%<*fr> -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 -\cs{ensuremath} bien agréable pour l'écriture de macros. -%</fr> -%<*en> -The idea of the method is from T.~\textsc{Lachand-Robert} and -described in~\cite{tlachand}. I have just add the \cs{ensuremath} which -is so agreeable to write macros. -%</en> - -%<*fr> -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. -%</fr> -%<*en> -There is \emph{no} macros for the lowercase omicron nor for the -uppercase alpha, beta\dots{} that one can obtain with the latin roman -letters with the same look. I have not had the courage nor the -strength to build a solution which would provide a means of obtaining -an upright uppercase alpha in a math formula enbedded in an italic -boldfaced text. -%</en> - -%<*fr> -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 -%</fr> -%<*en> -Even if the meaning of the French `paresse' is just `lazyness' I would -like to enphasize that the name of this package comes from the fact -that the sign § can be used to point at a paragraph and looks like an -S. So there is no connection between the name and the not unfrequent -sin of the same (French) name\dots{} or maybe\dots{} -%</en> - -%<fr>\section{Pourquoi une 3\ieme version?} -%<en>\section{Why a 3rd Version?} - -%<*fr> -C'est par un courriel du 3~mars 2003 que Claudio \textsc{Beccari} me -signalait très aimablement qu'il existait un codage de l'alphabet -grec en lettres latines près de 15~ans avant que je ne commette -cette extension. Ce codage était dû à Sylvio \textsc{Levi} qui -l'avait mis au point, alors qu'il dessinait les premières fontes -grecques pour \TeX, en s'appuyant sur la correspondance entre les -claviers américain et grec. Il me faisait remarquer à juste titre -que si quelqu'un avait pris l'habitude du codage de Sylvio -\textsc{Levi}, il préférerait conserver ses habitudes pour -\MODULE{paresse}. -%</fr> -%<*en> -With a mail dated march, 3, 2003, Claudio \textsc{Beccari} kindly -informed me that there was an encoding of the greek alphabet with latin -letters some 15~years before I commited this extension. This encoding -was devised by Sylvio \textsc{Levi} who, at the time, was designing -the first greek font for \TeX, using the correspondance between greek -and us keyboard. Claudio wrote to me, and I can't but agree with him, -that if one is used to \textsc{Levi}'s encoding, one would rather keep -one's habit in order to use \MODULE{paresse}. -%</en> - -%<*fr> -J'ai donc décidé de fournir un nouveau couple d'options exclusives -l'une de l'autre que j'ai nommées, pour l'une, \Option{legacy} --- -pour \og héritage\fg --- qui assure le codage originel de cette -extension et qui est active par défaut et, pour l'autre, \Option{Levi} -qui assure le codage de Sylvio \textsc{Levi}. -%</fr> -%<*en> -I, then, decided to provide a new couple of mutually exclusive -options: the first one is \Option{legacy} with which one obtain the -original encoding of this extension and which is active by default, -the other one is \Option{Levi} which provides Sylvio \textsc{Levi}'s -encoding. -%</en> - -%<*fr> -J'en profite pour faire quelques changements cosmétiques: -désormais toutes les macros internes \emph{secrètes} ont un nom qui -commence par \cs{GA@}; -le fichier |.dtx| est réorganisé pour faciliter la tache de -traduction de la documentation. -%</fr> -%<*en> -I take advantage of this update to make some cosmetic changes: from -now on all inner \emph{secret} macros have a name which begins with -\cs{GA@}; the |.dtx| file is reorganised to facilitate the translation -of the documentation. -%</en> - -%<fr>\section{Utilisation} -%<en>\section{Usage} - -%<*fr> -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. -%</fr> -%<*en> -One loads the package with |\usepackage{paresse}| \textbf{after} the -package |inputenc|. The sign § must be recognised as a letter by -\TeX. On can use for instance |inputenc| with option |latin1| for such -a purpose. -%</en> - -%<*fr> -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 \Option{tame} avec -|\usepackage[tame]{paresse}|. Il faut alors utiliser la commande -\cs{ActiveLaParesse} ou l'environnement |ParesseActive| pour utiliser -les macros en §. -%</fr> -%<*en> -By default the package is loaded with option |wild| and so the macros -such as |§a| are immediately available. If one prefers one can choose -the option \Option{tame} by writing |\usepackage[tame]{paresse}|. One -must then use the command \cs{ActiveLaParesse} or the environment -|ParesseActive| to use the `§-macros'. -%</en> - -%<*fr> -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 \cs{alpha}, -voyez~\ref{codageorig} et~\ref{codagelevi}. 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\)|. -%</fr> -%<*en> -When `paresse' is active, one has just to type |§a| in to obtain -\(\alpha\). One has access, by the same means, to all the other greek -letters to which a macro is devoted such as \cs{alpha}, see the -tables~\ref{codageorig} and~\ref{codagelevi}. One obtains -\(\alpha^{\beta}\) with |\(§a^{§b}\)| when § is active. One will note -that, if the package |amsmath| is loaded, the curly braces are -\emph{not} compulsory and that one obtains the same result with just -|\(§a^§b\)|. -%</en> - -%<fr>\subsection{Les options} -%<en>\subsection{Options} - -\begin{itemize} -%<*fr> -\item \Option{tame}\DescribeOption{tame / wild} s'oppose à - \Option{wild} qui est l'option par défaut. Lorsque \Option{tame} - règne, il \textbf{faut} un environnement |ParesseActive| ou une - commande \cs{ActiveLaParesse} pour utiliser les macros à §. -%</fr> -%<*en> -\item \Option{tame}\DescribeOption{tame / wild} is the contrary of - \Option{wild} which is the option by default. When \Option{tame} - reigns, one \textbf{must} use an environment |ParesseActive| or a - command \cs{ActiveLaParesse} in order to use the §-macros. -%</en> - - -%<*fr> -\item \Option{Levi}\NOUVO\DescribeOption{legacy / Levi} s'oppose à - \Option{legacy} qui est l'option par défaut. Avec l'option - \Option{legacy} on utilise le codage \og originel\fg de - \MODULE{paresse.sty} tel que le donne la - table~\ref{codageorig}. Sinon, le codage est celui défini par Sylvio - \textsc{Levi}, cf. la table~\ref{codagelevi}. -%</fr> -%<*en> -\item \Option{Levi}\NOUVO\DescribeOption{legacy / Levi} is the - contrary of \Option{legacy} which is the default. With - \Option{legacy} one uses the original encoding of - \MODULE{paresse.sty} as it is given by the - table~\ref{codageorig}. If the option \Option{Levi} is enforced, one - uses the Sylvio \textsc{Levi} encoding, see the - table~\ref{codagelevi}. -%</en> - -%<*fr> -\item \Option{ttau}\DescribeOption{ttau / ttheta} s'oppose à - \Option{ttheta} qui est l'option par défaut. Lorsque \Option{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|. \NOUVO Cette option est inopérante si l'option - \Option{Levi} a été choisie. -%</fr> -%<*en> -\item \Option{ttau}\DescribeOption{ttau / ttheta} is the contrary of - \Option{ttheta} which is selected by default. When \Option{ttheta} - is active |§t| gives \(\theta\) in the contrary |§t| gives - \(\tau\). In all cases, \(\theta\) is given by |§v| and \(\tau\) by - |§y|. \NOUVO That option is ineffective when one has chosen - \Option{Levi}. -%</en> - -%<*fr> - \textbf{Remarque :} \NOUVO quand l'option \Option{legacy} a été choisie, - \(\Theta\) est obtenu par |§V| de manière \og régulière \fg et - \emph{également} par |§T| quelle que soit l'option choisie. Dans - le cas de l'option \Option{Levi}, |§V| ne correspond à aucune lettre - grecque. -%</fr> -%<*en> -\textbf{Remark:} \NOUVO when one has chosen the option -\Option{legacy}, \(\Theta\) is `regularly' obtained with |§V| and -\emph{also} with |§T| whatever is the chosen option. In the case of -the option \Option{Levi}, |§V| doesn't correspond to any greek letter. -%</en> - -%<*fr> -\item \Option{epsilon}\DescribeOption{epsilon / varepsilon} s'oppose à - \Option{varepsilon} qui est l'option par défaut. Avec - \Option{epsilon}, |§e| donne \(\epsilon\) sinon |§e| donne - \(\varepsilon\). -%</fr> -%<*en> -\item \Option{epsilon}\DescribeOption{epsilon / varepsilon} is the - contrary of \Option{varepsilon} which is selected by default. With - \Option{epsilon}, |§e| gives \(\epsilon\) otherwide |§e| gives - \(\varepsilon\). -%</en> - -%<*fr> -\item Se comportent comme le couple \Option{epsilon}, - \Option{varepsilon} les couples suivants \Option{theta} et - \Option{vartheta} ; \Option{pi} et \Option{varpi} ; \Option{rho} et - \Option{varrho} ; \Option{sigma} et \Option{varsigma} \og |§s| donne - \(\varsigma\)\fg; \Option{phi} et \Option{varphi}. -%</fr> -%<*en> -\item The following `couples' behave as \Option{epsilon}, - \Option{varepsilon}: \Option{theta} and \Option{vartheta}; - \Option{pi} and \Option{varpi}; \Option{rho} and \Option{varrho}; - \Option{sigma} and \Option{varsigma}; \Option{phi} and - \Option{varphi}. -%</en> -\end{itemize} - -%<*fr> -Par défaut on a \Option{varepsilon}, \Option{theta}, \Option{pi}, -\Option{rho}, \Option{sigma}, \Option{varphi}, \Option{wild} et -\Option{legacy}\NOUVO. Cela assure que cette version~3, se comporte, -par défaut, comme la précédente. -%</fr> -%<*en> -The default options are \Option{varepsilon}, \Option{theta}, -\Option{pi}, \Option{rho}, \Option{sigma}, \Option{varphi}, -\Option{wild} and \Option{legacy}\NOUVO. That ensures that this 3rd -version behaves, by default, as the preceding one. -%</en> - -%<fr>\subsection{Commandes et environnement} -%<en>\subsection{Commands and Environment} - -\DescribeMacro{\makeparesseletter} -%<*fr> -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 \cs{makeatletter}. -%</fr> -%<*en> -This command gives the letter-catcode to the `character' §. After that -one can use § in the name of a macro, for instance. It corresponds to -the well-known |\makeatletter|. -%</en> - -\DescribeMacro{\makeparesseother} -%<*fr> -Cette macro donne au caractère § le catcode \emph{other}. C'est le \og -contraire \fg de la précédente. Cela équivaut au \cs{makeatother}. -%</fr> -%<*en> -This macro gives the catcode \emph{other} to the character §. It is -the `contrary' of the preceding one. It corresponds to |\makeatother|. -%</en> - -\DescribeMacro{\ActiveLaParesse} -%<*fr> -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 les tableaux~\ref{codageorig} -et~\ref{codagelevi}. -%</fr> -%<*en> -This macro makes § active and thus enable one to access the macros the -name of which begins with § such as |§a|. A list of these macros and -theirs meanings is given in the tables~\ref{codageorig} -and~\ref{codagelevi}. -%</en> - -\DescribeEnv{ParesseActive} -%<*fr> -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}. -%</fr> -%<*en> -In this environment § is active and one can use the §-macros. One -could use this environment if one want to use the §-macros when the -package \texttt{paresse.sty} is loaded whith the option \texttt{tame}. -%</en> - -%<fr>\subsection{Tableaux des macros} -%<en>\subsection{Tables of the Macros} - -%<fr>\subsubsection{Codage originel de \MODULE{paresse.sty}} -%<en>\subsubsection{\MODULE{paresse.sty}'s Original Encoding} - -%<*fr> -C'est le codage actif lorsque l'on a choisit l'option \Option{legacy} qui -est l'option par défaut. -%</fr> -%<*en> -This is the active encoding when one choses the option \Option{legacy} -which is the default. -%</en> - -\begin{center}\Large -\begin{ParesseActive} \label{codageorig} -\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} - -%<*fr> -\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. -%</fr> -%<*en> -\paragraph{Remarks : } all the latin letters used in the name of the -§-macros, but for {\ActiveLaParesse §v, §y and §q}, are loaded with -reminiscences, I hope \texttt{:-)} and the greek uppercases are -obtained with the (latin) corresponding uppercases. -%</en> - -%<fr>\subsubsection{Codage de Sylvio \textsc{Levi}} -%<en>\subsubsection{Sylvio \textsc{Levi}'s Encoding} - -%<*fr> -On active ce codage avec l'option \Option{Levi}. -%</fr> -%<*en> -One make this encoding active with the option \Option{Levi}. -%</en> - -\begin{center}\Large\NOUVO -\begin{ParesseActive} \label{codagelevi} -\begin{tabular}{*4{||>{\ttfamily \§}c|c}||}\hline -a & §a & b & §b & g & §g & d & §d\\ \hline -e & §e & z & §z & h & §h & j & §v\\ \hline -i & §i & k & §k & l & §l & m & §m\\ \hline -n & §n & x & §x & p & §p & r & §r\\ \hline -s & §s & t & §y & u & §u & f & §f\\ \hline -q & §c & y & §q & w & §w & c & \(\varsigma\)\\ \hline\hline -G & §G & D & §D & J & §V & L & §L\\ \hline -X & §X & P & §P & S & §S & U & §U\\ \hline -F & §F & Y & §Q & W & §W &\multicolumn{1}{c|}{}&\\ \hline -\end{tabular} -\end{ParesseActive} -\end{center} - -%<*fr> -Le codage de Sylvio \textsc{Levi} donne accès directement à \cs{varsigma} -(\(\varsigma\)) avec |§c| et ne diffère du codage originel que pour -les lettres {\ActiveLaParesse §v, §y, §c et §q}. Voici un résumé de -ces différences: -%</fr> -%<*en> -Sylvio \textsc{Levi}'s encoding gives a direct acces to \cs{varsigma} -(\(\varsigma\)) with |§c| and is different from the original encoding -just for the letters {\ActiveLaParesse §v, §y, §c et §q}. Here is a -summary of theses differences: -%</en> - -\begin{center} -\newcommand\CT[1]{\multicolumn{1}{c|}{\texttt{#1}}} -\begin{ParesseActive} -\begin{tabular}{|l|*{7}{c|}}\hline -%<fr>lettres grecques -%<en>greek letters -& §v & §y & §c & §q & §V & §Q & \(\varsigma\)\\\hline -%<fr>codage originel -%<en>original encoding -&\CT{\§v/\§t}&\CT{\§y/\§t}&\CT{\§c} -&\CT{\§q}&\CT{\§V/\§T}&\CT{\§Q}& --- \\\hline -%<fr>codage de S. \textsc{Levi} -%<en>S. \textsc{Levi}'s encoding -&\CT{\§j}&\CT{\§t}&\CT{\§q}&\CT{\§y} -&\CT{\§J}&\CT{\§Y} & \CT{\§c}\\\hline -\end{tabular} -\end{ParesseActive} -\end{center} - -\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} - -\end{document} -%</doc> -%<*exemple> -\documentclass[a4paper,12pt]{article} -\usepackage[latin1]{inputenc} -\usepackage[T1]{fontenc} -\usepackage[tame]{paresse} -\usepackage{amsmath,xspace,array,fancyvrb} -%<fr>\usepackage[frenchb]{babel} -%<en>\usepackage[english]{babel} -%<lmodern>\IfFileExists{lmodern.sty}{\usepackage{lmodern}}{} -%<fourier>\IfFileExists{fourier.sty}{\usepackage[upright]{fourier}}{} -\setlength{\parindent}{0pt} -\newcommand\BOP{\discretionary{}{}{}} -\begin{document} -\pagestyle{empty} -\begin{center}\large -%<fr>Exemples d'utilisation de l'extension \texttt{paresse}.\\ -%<en>Examples of \texttt{paresse} package usage.\\ - le \TeX nicien de surface\\ - 2008-08-12 -\end{center} - -%<*fr> -Ce fichier charge les extensions \texttt{amsmath} et, -%<lmodern>si elle est disponible localement, \texttt{lmodern}. -%<*fourier> -\texttt{fourier} avec l'option \texttt{upright} si cette extension est -présente sur votre installation. - -\IfFileExists{fourier.sty}{}{% - {\Large Désolé l'extension fourier.sty semble absente ! Vous - obtiendrez la fonte par défaut de votre site.}} -%</fourier> - -\textbf{Attention}: l'extension \texttt{paresse} est chargée avec -l'option \texttt{tame} pour montrer l'utilisation de la commande -\verb!\ActiveLaParesse! et de l'environnement -\verb!Pares!\BOP\verb!se!\BOP\verb!Ac!\BOP\verb!tive!. -%</fr> -%<*en> -This file loads the \texttt{amsmath} package and, -%<lmodern>if it locally exists, the \texttt{lmodern} package. -%<*fourier> -if it locally exists, the \texttt{fourier} package with option -\texttt{upright}. - -\IfFileExists{fourier.sty}{}{% - {\Large Sorry the fourier.sty seems to be missing! You will obtain the - default font of your site.}} -%</fourier> - -\textbf{Caution}: the \texttt{paresse} package is loaded with the -option \texttt{tame} to show the usage of macro -\verb!\ActiveLaParesse! and environment \verb!ParesseActive!. -%</en> - -\vspace{\baselineskip} - -%<fr>Avec la commande \verb!\ActiveLaParesse! pour activer le caractère §. -%<en>With the macro \verb!\ActiveLaParesse! to make the § character active. -%<*fr> -\begin{Verbatim}[frame=single] -{\ActiveLaParesse -\(§a^{§b}_{§g}\) et encore \(§D^§a_§d\) -} -\end{Verbatim} -%</fr> -%<*en> -\begin{Verbatim}[frame=single] -{\ActiveLaParesse -\(§a^{§b}_{§g}\) and also \(§D^§a_§d\) -} -\end{Verbatim} -%</en> -%<fr>pour obtenir : -%<en>to obtain: -%<fr>{\ActiveLaParesse \(§a^{§b}_{§g}\) et encore \(§D^§a_§d\)} -%<en>{\ActiveLaParesse \(§a^{§b}_{§g}\) and also \(§D^§a_§d\)} - -\vspace{\baselineskip} - -%<fr>Avec l'environnement \verb!ParesseActive!. -%<en>With the environment \verb!ParesseActive!. - -\begin{Verbatim}[frame=single] -\begin{ParesseActive}\large -\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 -... -X & §X & P & §P & S & §S & U & §U\\ \hline -F & §F & Q & §Q & W & §W &\multicolumn{1}{c|}{}& \\ \hline -\end{tabular} -\end{ParesseActive} -\end{Verbatim} - -\medskip - -\begin{center} -\begin{ParesseActive}\large -\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} -\end{document} -%</exemple> -% \fi \endinput %%% Local Variables: %%% mode: doctex |