% \iffalse meta-comment % %%%% Copyright (C) 2004 by Yvon Henel %%%% -------------------------------------------------------- % % % 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{v1a} %\def\filedate{2005/03/01} %\def\fileinfo{file paresse.dtx (English version) by The `\TeX nicien 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[frenchb,english]{babel} % comment out the following line to obtain the full code with explanations \OnlyDescription \EnableCrossrefs \CodelineIndex \RecordChanges \begin{document} \DocInput{english-paresse.dtx} \end{document} % % \fi % % \CheckSum{319} % % \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}{New name, some redefinitions, first public % release} % \changes{v1}{2004/04/17}{New documentation} % \changes{v1a}{2005/03/01}{Error in Infofile corrected} % % \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{The package \textsf{paresse}\thanks{This document corresponds to the % file \textsf{paresse}~\fileversion, dated \filedate.}\\ % English translation by the author\footnote{Any comment about the % translation is welcome.}} % \author{Le \TeX nicien de surface\\ \url{Yvon.Henel@wanadoo.fr}} % % \maketitle % \begin{otherlanguage}{french} % \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} |inputenc| si % ce dernier est utilisé. De plus, il faut que le signe § soit une lettre % pour \TeX. % \end{abstract} % \end{otherlanguage} % \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 % |inputenc| package if the latter is used. Moreover the sign % § must be a letter for \TeX. % \end{abstract} % % \section{Introduction} % This is the English version of the |paresse| package. % % This package provides only a `quick and low-cost' access to greek letters % which one can obtain with a macro such as |\alpha| or |\Omega|. It provides % also an environment and a macro which make possible the use of § to type in % those letters. Because of an |\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. % % The idea of the method is from T.~\textsc{Lachand-Robert} and described % in~\cite{tlachand}. I have just add the % |\ensuremath| which is so agreeable to write macros. % % There is \emph{no} macros for the lowercase omicron nor for the uppercase % alpha, beta... 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. % % 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... or maybe... % % \section{Usage} % % 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. % % 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 % |tame| by writing % |\usepackage[tame]{paresse}|. One must then use the % command |\ActiveLaParesse| or the environment |ParesseActive| % to use the `§-macros'. % % 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 |\alpha|, % see the table page~\pageref{tableau}. 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\)|. % % \subsection{Options} % % \begin{itemize} % \item |tame| is the contrary of |wild| which is the option by % default. When |tame| reigns, one \textbf{must} use an environment % |ParesseActive| or a command |\ActiveLaParesse| in order to % use the §-macros. % \item |ttau| is the contrary of |ttheta| which is selected by % default. When |ttheta| is active |§t| gives \(\theta\) in the % contrary |§t| gives \(\tau\). In all cases, \(\theta\) % is given by |§v| and \(\tau\) by |§y|. % % \textbf{Remark:} \(\Theta\) is `regularly' obtained with |§V| and % \emph{also} with |§T| whatever is the chosen option. % % \item |epsilon| is the contrary of |varepsilon| which is selected by % default. With |epsilon|, |§e| gives \(\epsilon\) otherwide |§e| % gives \(\varepsilon\). % \item The following `couples' behave as |epsilon|, |varepsilon|: % |theta| and |vartheta|; |pi| and |varpi|; |rho| % and |varrho|; |sigma| and |varsigma|; |phi| and |varphi|. % % The default options are |theta|, |pi|, |rho|, |sigma| and |varphi|. % \end{itemize} % % \subsection{Commands and environment} % \DescribeMacro{\makeparesseletter} % 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|. % % \DescribeMacro{\makeparesseother} % This macro gives the catcode \emph{other} to the character §. It is the % `contrary' of the preceding one. It corresponds to |\makeatother|. % % \DescribeMacro{\ActiveLaParesse} % 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 table~\pageref{tableau}. % % \DescribeEnv{ParesseActive} % 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}. % % % \subsection{Table of the §-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{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. % % \StopEventually{ % \selectlanguage{french} % \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} % % \section{Implementation} % There is almost no comment in the code. I hope it is clear enough moreover % it largely looks like the code of the package |engpron| from the same % \emph{author}. % % Here I use a lot of |\def| to grab the redefinitions of the macros done by % packages such as |fourier|\footnote{Many thanks to Michel \textsc{Bovani} % for his precious advice on \url{fr.comp.text.tex}.}. % % The package says `hello'. Some booleans are defined and default values are % set. Options are cared for and the package yells if one option is not valid. % \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 % \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} % \DeclareOption{defaut}{\@optiontamefalse \@optionvarepstrue \@optionvarthetafalse \@optionvarrhofalse \@optionvarsigmafalse \@optionvarpifalse \@optionvarphitrue \@optiontaufalse} % \DeclareOption*{\PackageError{paresse}{% The option \CurrentOption\space is not known!\MessageBreak The default options are `wild' and `theta'.}% {Choose between `wild' (for an active Paresse in all the document) \MessageBreak and `tame' (so that § prints the paragraph symbol). \MessageBreak Choose between ` theta' (for §t to give theta) \MessageBreak and `tau' (for §t to give tau).}} \ExecuteOptions{defaut} \ProcessOptions\relax % \end{macrocode} % The current catcode and definition of § are saved. % \begin{macrocode} \count@=\catcode`\§ \let\GA@LaVieilleParesse= § % \end{macrocode} % A macro is defined to obtain the character itself. It could happen to be % usefull, maybe... % \begin{macrocode} \def\§{\S} % \end{macrocode} % Some more or less `hidden' macros are defined. The contorsions are % required in order not to make \TeX\ yell something as vulgar as % |\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} % The usefull macro then \emph{the} environment. They both use % the \emph{hidden} macro which follows. % \begin{macro}{\ActiveLaParesse} % \begin{macrocode} \newcommand{\ActiveLaParesse}{\GA@ActiveLaParesse} % \end{macrocode} % \end{macro} % \begin{environment}{ParesseActive} % \begin{macrocode} \newenvironment{ParesseActive}{\GA@ActiveLaParesse}{} % \end{macrocode} % \end{environment} % \begin{macro}{\GA@ActiveL@P@resse} % \begin{macrocode} \newcommand{\GA@ActiveL@P@resse}{\catcode `\§=\active% \def§##1{\ensuremath{\csname \string§##1\endcsname}}} % \end{macrocode} % \end{macro} % A sequence of macros for the letters with variants. % \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} % § becomes a \TeX-letter and I define macros whith the help of % |\def\§...|. Before going to uppercases, I take care of the % letter t (options |ttau| and |ttheta|). % \begin{macrocode} \makeparesseletter %%% lowercase \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} % \if@optiontau \def\§t {\tau}\else \def\§t {\@theta}\fi % %%% uppercase \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} % § is made active and the §-macros are defined. % \begin{macrocode} \catcode `\§=\active \def§#1{\ensuremath{\csname \string§#1\endcsname}} % \end{macrocode} % If |tame| has been set, § is given its previous state and the package % finishes. % \begin{macrocode} \if@optiontame \catcode`\§=\count@ \ifnum\count@=13 \let §=\GA@LaVieilleParesse \fi \fi \endinput % \end{macrocode} % \Finale \endinput %%% Local Variables: %%% mode: latex %%% coding: iso-8859-15 %%% TeX-master: t %%% End: