diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/paresse/paresse.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/paresse/paresse.dtx | 1776 |
1 files changed, 1251 insertions, 525 deletions
diff --git a/Master/texmf-dist/source/latex/paresse/paresse.dtx b/Master/texmf-dist/source/latex/paresse/paresse.dtx index 7b413fdbcb3..9e2b79c1da0 100644 --- a/Master/texmf-dist/source/latex/paresse/paresse.dtx +++ b/Master/texmf-dist/source/latex/paresse/paresse.dtx @@ -1,414 +1,1230 @@ % \iffalse meta-comment -%-*- coding: iso-8859-15 -*- -% Time-stamp: <2013-02-16 10:32:18 novatux> -% -------------------------------------------------------------------- -% -% Copyright (C) 2011, 2013 -% 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. -% 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 +%% File: paresse.dtx +%% Copyright (C) 2020 Yvon Henel aka Le TeXnicien de surface +%% +%% It may be distributed and/or modified under the conditions of the +%% LaTeX Project Public License (LPPL), either version 1.3c of this +%% license or (at your option) any later version. The latest version +%% of this license is in the file +%% +%% http://www.latex-project.org/lppl.txt +%% % -% \iffalse -%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01] -%<*common> -\def\fileversion{v4.1} -\def\filedate{2013/02/16} -\def\fileinfo{fichier paresse par le TeXnicien de surface} -%</common> -%<*package> -\ProvidesPackage{paresse} - [\filedate\space\fileversion\space\fileinfo] -%</package> -% \fi -% \iffalse +%<*driver|package|doc> +\RequirePackage{expl3}[2020/09/24] +\GetIdInfo$Id: paresse.dtx 5.0 2020-10-06 TdS $ + {} +%</driver|package|doc> %<*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} -\usepackage{hypdoc,hologo} +\documentclass[full, english, draft]{l3doc} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{amsmath} +\usepackage[french,main=english]{babel} +\usepackage{xspace} + +\usepackage{paresse}[2020-10-06] \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[1][1]{% - \ifthenelse - {\equal{#1}{4.1}} - {\marginpar{\hspace*{\stretch{1}}% - \textbf{N (v4.1)}\hspace*{.5em}}}% - {}} - -% 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 -% then look for \StopEventually to make a bit of setup -\EnableCrossrefs -\CodelineIndex -\RecordChanges \begin{document} - \DocInput{paresse.dtx} + \DocInput{\jobname.dtx} \end{document} %</driver> % \fi % -% \CheckSum{592} +% \title{^^A +% The \pkg{paresse} package^^A +% \thanks{This file describes v\ExplFileVersion, last revised \ExplFileDate.}^^A +% } % -% \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 \~} +% \author{^^A +% Yvon Henel\thanks^^A +% {^^A +% E-mail: +% \href{mailto:le.texnicien.de.surface@yvon-henel.fr} +% {le.texnicien.de.surface@yvon-henel.fr}^^A +% }^^A +% } % +% \date{Released \ExplFileDate} % -% \changes{v0.0}{2004/02/07}{New name, some redefinitions, -% first public version} +% \maketitle +% +% \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{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{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} % \changes{v4.1}{2013/02/16}{Using skeyval-bc instead of (moving forward) skeyval} +% \changes{v5.0}{2020/10/06}{Uses expl3 to replace skeyval.} +% \changes{v5.0}{2020/10/06}{Two sub-packages.} +% \changes{v5.0}{2020/10/06}{\cs{varsigma} is added as \PSVerb{j} to legacy encoding.} % -% \GetFileInfo{paresse.sty} +% \thispagestyle{empty} +% +% \noindent\hrulefill % -% \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 +% \bgroup +% \begin{otherlanguage}{french} +% \begin{abstract} +% Cette extension, 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\). % -% \title{The package \Pkg{paresse}\thanks{This document corresponds -% to file \Pkg{paresse.sty}~\fileversion, dated \filedate.}} -% \author{Le \TeX nicien de surface\\ -% \href{mailto:le.texnicien.de.surface@wanadoo.fr}% -% {le.texnicien.de.surface@wanadoo.fr}} +% \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. +% +% Depuis la version~4, on peut utiliser cette extension même dans un source +% codé en utf-8 avec \hologo{LaTeX}, \hologo{LuaLaTeX} ou \hologo{XeLaTeX}. +% +% La documentation française pour l'utilisateur de l'extension \pkg{paresse} +% est disponible sous le nom de \texttt{paresse-fra}. +% \end{abstract} +% \end{otherlanguage} +% \egroup +% +% \noindent\hrulefill % -% \maketitle % \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 \PS activated and redefined. Instead of -% |\(\alpha\)| one types \PSVerb{a} to obtain \(\alpha\). +% 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}: 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}. +% \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. % -% The English documentation for the final user of the package -% \Pkg{paresse} is available in the file \texttt{paresse-en.pdf}. +% Since 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-eng}. % \end{abstract} -% \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 \PS actif et redéfini. Au -% lieu de |\(\alpha\)| ou tape \PSVerb{a} pour obtenir -% \(\alpha\). -% -% \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. % -% \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}. +% \noindent\hrulefill % -% 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} +% \DisableDocumentation % -% \tableofcontents{} +% \begin{documentation} +% \end{documentation} % -% \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> +%<*doc> +%<FRA>\documentclass[full, french]{l3doc} +%<ENG>\documentclass[full, english]{l3doc} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +%<FRA>\usepackage[english,main=french]{babel} +%<ENG>\usepackage[french,main=english]{babel} +\usepackage{xparse} +\usepackage{xspace} + +\usepackage[tame]{paresse}[2020-10-06] + +\newcommand*\PS{\texttt{\S}\xspace} +\newcommand*\PSVerb[1]{\texttt{\S #1}} +\newcommand\BOP{\discretionary{}{}{}} +\newcommand\Option[1]{\textsc{#1}} +\newcommand{\TO}{\textemdash\ \ignorespaces} +\newcommand{\TF}{\unskip\ \textemdash\xspace} + +\begin{document} +%<*FRA> +\title{Guide de l'utilisateur de \pkg{paresse}\thanks{Ce fichier décrit la + version~\ExplFileVersion, dernière révision~\ExplFileDate. Édition + \emph{Adieu à skeyval}.}} +%</FRA> +%<*ENG> +\title{\pkg{paresse} user guide\thanks{This file describes + version~\ExplFileVersion, last revised~\ExplFileDate. \emph{Adieu to + skeyval} edition.}} +%</ENG> +\author{Yvon Henel\thanks{E-mail: + \href{mailto:le.texnicien.de.surface@yvon-henel.fr} + {le.texnicien.de.surface@yvon-henel.fr}}} +\maketitle +\noindent\hrulefill + +\begin{abstract} +%<*FRA> + Cette extension, 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} : 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. + + Depuis la version~4, on peut utiliser cette extension même dans un source + codé en utf-8 avec \hologo{LaTeX}, \hologo{LuaLaTeX} ou \hologo{XeLaTeX}. +%</FRA> +%<*ENG> + 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}: 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. + + Since version~4, one can use this package even with utf8-encoded source for + \hologo{LaTeX}, \hologo{LuaLaTeX}, or \hologo{XeLaTeX}. +%</ENG> +\end{abstract} + +\noindent\hrulefill + +%<FRA> \begin{otherlanguage}{english} +%<ENG> \begin{otherlanguage}{french} +\begin{abstract} +%<*FRA> +The English documentation for the final user of the package +\pkg{paresse} is available in the file \texttt{paresse-eng}. +%</FRA> +%<*ENG> +La documentation française pour l'utilisateur de l'extension +\pkg{paresse} est disponible sous le nom de \texttt{paresse-fra}. +%</ENG> +\end{abstract} +\end{otherlanguage} + +\noindent\hrulefill +\vspace{\baselineskip} + +\tableofcontents{} + +%<*FRA> +\section{Introduction} +\label{sec: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 \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. +%</FRA> + + +%<*ENG> +\section{Introduction} +\label{sec:introduction} + +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. +%</ENG> + +%<*FRA> +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. +%</FRA> +%<*ENG> +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. +%</ENG> + +%<*FRA> +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. +%</FRA> +%<*ENG> +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. +%</ENG> + +%<*FRA> +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 +%</FRA> +%<*ENG> +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{} +%</ENG> + +%<FRA>\subsection{Pourquoi une 5\ieme version?} +%<ENG>\subsection{Why a 5th Version?} + +%<*FRA> +\emph{Sur mon brin de laurier, je dormais comme un loir} en utilisant +\pkg{paresse} presque quotidiennement quand il y a quelques jours, patatras! +Plus rien ne va, je me fais insulter rien qu'à charger l'extension. Je passe sur +les détails: la faute en revient à une modification du noyau qui vient perturber +le code acrobatique de \pkg{skeyval}. Comme la mise à jour de la dite extension +semble extrèmement improbable, j'ai décidé de réparer \pkg{paresse} en recourant +aux commandes de expl3. + +Ce n'est donc que pour remettre en marche ce dont je me sers souvent que je +viens soulever le capot de cette extension vieille de plus de 7~ans. +%</FRA> +%<*ENG> +I was happily using \pkg{paresse} almost every day until when, some days ago, +all hell broke loose! I was insulted just by loading \pkg{paresse}. To put it in +a nutshell: the culprit is an improvement of the \LaTeXe{} kernel which wreaks +havoc in the highly unconventional code of \pkg{skeyval}. As it seems very +improbable that that package will be corrected any time soon, I've decided to +rewrite some parts of \pkg{paresse} with expl3. + +So that is why I touch the more than seven-year-old code of this package. +%</ENG> + +%<*FRA> +Avec cette 5\ieme version, apparaissent deux \emph{sous}-extensions: +\pkg{paresse-old} et \pkg{paresse-utf8} que l'on peut charger directement et qui +offrent les mêmes options et les mêmes commandes. De fait, \pkg{paresse} charge +l'une ou l'autre suivant la situation. +%</FRA> +%<*ENG> +With this 5th version come two \emph{sub}-packages: \pkg{paresse-old} and +\pkg{paresse-utf8} which are directly loadable. They have the same options and +commands as \pkg{paresse} itself. In fact \pkg{paresse} loads one of them +according to the situation. +%</ENG> + +%<*FRA> +On utilisera \pkg{paresse-utf8} uniquement si le source est codé en utf-8 et que +l'on compile avec \texttt{latex} c.-à -d. avec le moteur \TeX{} et le format +\LaTeX{}. Dans tous les autres cas de figure on utilisera \pkg{paresse-old}. +%</FRA> +%<*ENG> +One will use \pkg{paresse-utf8} if and only if the source is utf-8 encoded and +compiled with \texttt{latex} i.~e. with the \TeX-engine and the \LaTeX{} +format. In all other case, on will use \pkg{paresse-old}. +%</ENG> + +%<*FRA> +La documentation de \pkg{paresse} couvre donc l'utilisation des trois +extensions. +%</FRA> +%<*ENG> +The documentation of \pkg{paresse} covers the use of the three packages. +%</ENG> + +%<FRA>\subsection{Pourquoi une 4\ieme version?} +%<ENG>\subsection{Why a 4th Version?} + +%<*FRA> +Je ne sais plus bien à quelle occasion \TO l'age et les pannes de machine +avec \og crachage\fg de disque aidant\TF et encore moins quand \TO si ce +n'est que cela remonte à plus d'un an maintenant\footnote{J'ai écrit cette + section à l'occasion de la sortie de la 4\ieme version, en 2013.}\TF +Christian \textsc{Tellechea} me faisait part de son désir d'utiliser +\pkg{paresse} avec des sources codées en utf-8 sous \hologo{LaTeX} \TO et +non \hologo{XeLaTeX} ou \hologo{LuaLaTeX}. + +Une discussion s'engagea, Christian me fit parvenir du matériel en +ordre de marche. Il me fit même cadeau de deux versions, la deuxième +améliorant la reconnaissance du codage déclaré avec +\pkg{inputenc}. Toutefois, je procrastinais. Il se peut que ma vie +personnelle et mon travail aient interféré avec le développement de +cette extension. + +Enfin, voici la chose. +%</FRA> +%<*ENG> +I don't remember exactly on what occasion \TO age, disk crash and computer +mishap aiding\TF and even less when \TO more than a year ago, I'm +afraid\footnote{I wrote this section in 2013 when the 4th version was + published.}\TF Christian \textsc{Tellechea} wrote me that he would be +glad to use \pkg{paresse} in his utf-8 encoded sources with \hologo{LaTeX} +\TO not with \hologo{XeLaTeX} nor \hologo{LuaLaTeX}. + +We exchanged emails, Christian sent me working material. He even made +me the gift of two versions, the second better for the identification +of the encoding passed, as an option, to \pkg{inputenc}. However I +procrastinated. My personal life and my job may have interfered with +the development of this package. + +At last, here is the thing. +%</ENG> + +%<*FRA> +Le plus nouveau devrait échapper à l'utilisateur de \hologo{LuaLaTeX} +ou \hologo{XeLaTeX} et même de \hologo{LaTeX} chargeant \pkg{inputenc} +avec une option comme \texttt{latin1} ou \texttt{latin9}. Cependant, +désormais, on peut utiliser cette extension avec \hologo{LaTeX} en +chargeant \pkg{inputenc} avec l'option \texttt{utf8}. +%</FRA> +%<*ENG> +The newest feature should escape the user of \hologo{LuaLaTeX} +or \hologo{XeLaTeX} and even of \hologo{LaTeX} loading \pkg{inputenc} +with an option such as \texttt{latin1} or \texttt{latin9}. However, +henceforth, one can use this package with \hologo{LaTeX} loading +\pkg{inputenc} with option \texttt{utf8}. +%</ENG> + +%<*FRA> +J'ai profité de cette nouvelle version pour ajouter une macro en \PS: +\PSVerb{Z} qui produit \S, symbole déjà accessible par |\S|, ce qui +fait que je n'ose pas vraiment parler de \og raccourci\fg. +%</FRA> +%<*ENG> +I take advantage of this new version to add a \PS-macro: +\PSVerb{Z} which produces \S, symbol already available with +|\S|, so I don't dare to present it as a real ``shortcut''. +%</ENG> + +%<FRA>\subsection{Pourquoi une 3\ieme version?} +%<ENG>\subsection{Why a 3rd Version?} + +%<*FRA> +C'est par courriel que Claudio \textsc{Beccari} m'a signalé 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 \pkg{paresse}. +%</FRA> +%<*ENG> +With a mail 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 \pkg{paresse}. +%</ENG> + +%<*FRA> +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}. +%</FRA> +%<*ENG> +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. +%</ENG> + +%<*FRA> +J'en profite pour faire quelques changements cosmétiques: +désormais toutes les macros internes \emph{secrètes}\footnote{À la mode + \LaTeXe{}, pour la version~5.0 j'utilise en partie expl3 et, dans ce cas, + le préfixe \texttt{paresse}.} ont un nom qui +commence par \cs{GA@}; +le fichier |.dtx| est réorganisé pour faciliter la tache de +traduction de la documentation. +%</FRA> +%<*ENG> +I take advantage of this update to make some cosmetic changes: from now on +all inner \emph{secret} macros\footnote{Macros \emph{à la mode} + \LaTeXe{}. As of version~5.0, partially \emph{translated} in expl3, when + dealing with expl3 commands and variables I use the prefix + \texttt{paresse}.} have a name which begins with \cs{GA@}; the |.dtx| +file is reorganised to facilitate the translation of the documentation. +%</ENG> + +%<FRA>\section{Utilisation} +%<ENG>\section{Usage} + +%<*FRA> +On charge cette extension avec |\usepackage{paresse}|. Quand on utilise +\hologo{LaTeX} avec un codage 8-bits (comme \texttt{latin9} par exemple), +on la charge \textbf{après} l'extension \pkg{inputenc} avec l'option +idoine. Avec un \hologo{LaTeX} moderne \TO post 2019\TF et un source codé +en utf-8, on n'a pas besoin de charger explicitement \pkg{inputenc}. Dans +ce cas, \pkg{paresse} suppose que le source est codé en utf-8. + +Dans tous les cas il faut que le \og caractère \fg § soit reconnu par \TeX\ +comme une lettre. + +% On pourra, par exemple, utiliser l'option \texttt{latin1} de +% \pkg{inputenc} pour obtenir cela. + +On obtiendra le même comportement, à l'exception \TO signalée dans le +paragraphe intitulé \textbf{restriction} page~\pageref{restriction}\TF +près, avec \pkg{inputenc} et l'option \texttt{utf8}. + +Il n'y a pas ce genre de restriction quand on travaille avec +\hologo{LuaLaTeX} ou \hologo{XeLaTeX} sur un source codé en utf-8. +%</FRA> +%<*ENG> +One loads the package with |\usepackage{paresse}|. +When one uses \hologo{LaTeX} with an 8-bit encoded source +(e.g. \texttt{latin9}), one must load \pkg{paresse} \textbf{after} the +package \pkg{inputenc} whith the correct option. + +In all cases the sign § must be recognised as a letter by \TeX. + +% On can use for instance \pkg{inputenc} with option |latin1| for such a +% purpose. + +One will obtain the same behaviour, but for the exception pointed out in +paragraph \textbf{restriction} on page~\pageref{restriction}, with +\pkg{inputenc} and option \texttt{utf8}. + +There is no such restriction when one compiles with \hologo{LuaLaTeX} +or \hologo{XeLaTeX} a source encoded in utf-8. +%</ENG> + +%<*FRA> +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 à \pkg{paresse} l'option \Option{tame} avec +|\usepackage[tame]|\BOP|{paresse}|. Il faut alors utiliser la commande +\cs{ActiveLaParesse} ou l'environnement |ParesseActive| pour utiliser +les macros en~§. +%</FRA> +%<*ENG> +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]|\BOP|{paresse}|. One +must then use the command \cs{ActiveLaParesse} or the environment +|ParesseActive| to use the `§-macros'. +%</ENG> + +%<*FRA> +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. +%</FRA> +%<*ENG> +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. +%</ENG> + +\paragraph{Restriction} +%<*FRA> +On notera que les accolades sont optionelles et qu'on obtient un +résultat identique avec |\(§a^§b\)|, \textbf{à moins que} l'on utilise +un source codé en utf-8 avec \hologo{LaTeX}.\label{restriction} +%</FRA> +%<*ENG> +One will note that the curly braces are \emph{not} compulsory and that +one obtains the same result with just |\(§a^§b\)| \textbf{unless} one +uses a utf-8 encoded source with \hologo{LaTeX}.\label{restriction} +%</ENG> + +%<*ENG> +\section{The Package Options} +\label{sec:keys} + +%</ENG> + +%<*FRA> +\section{Les options de l'extension} +\label{sec:clefs} + +%</FRA> + +\begin{itemize} +%<*FRA> +\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 à §. +%</FRA> +%<*ENG> +\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. +%</ENG> + + +%<*FRA> +\item \Option{Levi} \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 + \pkg{paresse} tel que le donne la + table~\ref{codageorig}. Sinon, le codage est celui défini par Sylvio + \textsc{Levi}, cf. la table~\ref{codagelevi}. +%</FRA> +%<*ENG> +\item \Option{Levi} \DescribeOption{legacy / Levi} is the + contrary of \Option{legacy} which is the default. With + \Option{legacy} one uses the original encoding of + \pkg{paresse} 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}. +%</ENG> + +%<*FRA> +\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|. Cette option est inopérante si l'option + \Option{Levi} a été choisie. +%</FRA> +%<*ENG> +\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|. That option is ineffective when one has chosen + \Option{Levi}. +%</ENG> + +%<*FRA> + \textbf{Remarque :} 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. +%</FRA> +%<*ENG> +\textbf{Remark:} 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. +%</ENG> + +%<*FRA> +\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\). +%</FRA> +%<*ENG> +\item \Option{epsilon} \DescribeOption{epsilon / varepsilon} is the + contrary of \Option{varepsilon} which is selected by default. With + \Option{epsilon}, |§e| gives \(\epsilon\) otherwise |§e| gives + \(\varepsilon\). +%</ENG> + +%<*FRA> +\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}. +%</FRA> +%<*ENG> +\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}. +%</ENG> +\end{itemize} + +%<*FRA> +Par défaut on a \Option{varepsilon}, \Option{theta}, \Option{pi}, +\Option{rho}, \Option{sigma}, \Option{varphi}, \Option{wild} et +\Option{legacy}. Cela assure que cette version~3, se comporte, +par défaut, comme la précédente. +%</FRA> +%<*ENG> +The default options are \Option{varepsilon}, \Option{theta}, +\Option{pi}, \Option{rho}, \Option{sigma}, \Option{varphi}, +\Option{wild} and \Option{legacy}. That ensures that this 3rd +version behaves, by default, as the preceding one. +%</ENG> + +%<FRA>\subsection{Commandes et environnement} +%<ENG>\subsection{Commands and Environment} + +\DescribeMacro{\makeparesseletter} +%<*FRA> +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}. +%</FRA> +%<*ENG> +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|. +%</ENG> + +\DescribeMacro{\makeparesseother} +%<*FRA> +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}. + +Cette macro est inactive avec un codage utf-8 sous +\hologo{LaTeX}. Elle n'aurait d'ailleurs pas vraiment de sens. Son +utilisation produit un avertissement dans le fichier |.log|. +%</FRA> +%<*ENG> +This macro gives the catcode \emph{other} to the character §. It is +the `contrary' of the preceding one. It corresponds to |\makeatother|. + +This macro is inactivated when one uses a utf-8 encoding with +\hologo{LaTeX}. In such a case it wouldn't have a clear meaning. When +used it issues a warning in the |.log| file. +%</ENG> + +\DescribeMacro{\ActiveLaParesse} +%<*FRA> +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}. +%</FRA> +%<*ENG> +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}. +%</ENG> + +\DescribeEnv{ParesseActive} +%<*FRA> +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 +\pkg{paresse} avec l'option \texttt{tame}. +%</FRA> +%<*ENG> +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} is loaded whith the option \texttt{tame}. +%</ENG> + +\newpage{} + +%<FRA>\subsection{Tableaux des macros} +%<ENG>\subsection{Tables of the Macros} + +%<FRA>\subsubsection{Codage originel de \pkg{paresse}} +%<ENG>\subsubsection{\pkg{paresse}'s Original Encoding} + +%<*FRA> +C'est le codage actif lorsque l'on a choisit les options \Option{legacy} et +\Option{ttheta} qui sont des options par défaut. + +Cette version~5.0 ajoute \(\varsigma\) obtenu avec \PSVerb{j}. +%</FRA> +%<*ENG> +This is the active encoding when one choses the options \Option{legacy} and +\Option{ttheta} which are the default. + +This version~5.0 adds \(\varsigma\) obtained with \PSVerb{j}. +%</ENG> + +\begin{center}\Large +\begin{ParesseActive} \label{codageorig} +\begin{tabular}{*4{||>{\ttfamily \S}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 & Z & §Z\\ \hline +\end{tabular} +\end{ParesseActive} +\end{center} + +\vspace{2\baselineskip} + +\begin{center}\Large +\begin{ParesseActive} \label{codageorig} +\begin{tabular}{*7{||>{\ttfamily \S}c|c}||}\hline +a&§a&b&§b&c&§c&d&§d&e&§e&f&§f\\ \hline +g&§g&h&§h&i&§i&j&§j&k&§k&l&§l\\ \hline +m&§m&n&§n&o& &p&§p&q&§q&r&§r\\ \hline +s&§s&t&§t&u&§u&v&§v&w&§w&x&§x\\ \hline +y&§y&z&§z&A& &B& &C& &D&§D\\ \hline +E& &F&§F&G&§G&H& &I& &J& \\ \hline +K& &L&§L&M& &N& &O& &P&§P\\ \hline +Q&§Q&R& &S&§S&T&§T&U&§U&V&§V\\ \hline +W&§W&X&§X&Y& &Z&§Z&\multicolumn{4}{c||}{}\\ \hline +\end{tabular} +\end{ParesseActive} +\end{center} + + +%<*FRA> +\paragraph{Remarques : } à l'exception de {\ActiveLaParesse §v, §y, §q et §j} +les lettres utilisées dans les noms des macros sont chargées de vertu +mnémotechniques \texttt{:-)} et les capitales grecques, quand elles différent +des capitales latines, s'obtiennent à l'aide de la majuscule correspondante. +%</FRA> +%<*ENG> +\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. +%</ENG> + +\pagebreak[4] + +%<FRA>\subsubsection{Codage de Sylvio \textsc{Levi}} +%<ENG>\subsubsection{Sylvio \textsc{Levi}'s Encoding} + +%<*FRA> +On active ce codage avec l'option \Option{Levi}. +%</FRA> +%<*ENG> +One make this encoding active with the option \Option{Levi}. +%</ENG> + +\begin{center}\Large +\begin{ParesseActive} \label{codagelevi} +\begin{tabular}{*4{||>{\ttfamily \S}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 & Z & §Z\\ \hline +\end{tabular} +\end{ParesseActive} +\end{center} + +%<*FRA> +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: +%</FRA> +%<*ENG> +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: +%</ENG> + +\begin{center} +\newcommand\CT[1]{\multicolumn{1}{c|}{\texttt{#1}}} +\begin{ParesseActive} +\begin{tabular}{|l|*{7}{c|}}\hline +%<FRA>lettres grecques +%<ENG>greek letters +& §v & §y & §c & §q & §V & §Q & \(\varsigma\)\\\hline +%<FRA>codage originel +%<ENG>original encoding +&\CT{\S{}v/\S{}t}&\CT{\S{}y/\S{}t}&\CT{\S{}c} +&\CT{\S{}q}&\CT{\S{}V/\S{}T}&\CT{\S{}Q}& \CT{\S{}j} \\\hline +%<FRA>codage de S. \textsc{Levi} +%<ENG>S. \textsc{Levi}'s encoding +&\CT{\S{}j}&\CT{\S{}t}&\CT{\S{}q}&\CT{\S{}y} +&\CT{\S{}J}&\CT{\S{}Y} & \CT{\S{}c}\\\hline +\end{tabular} +\end{ParesseActive} +\end{center} + + +\vspace{\stretch{2}} + +\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} + +\vspace{\stretch{2}} + +\noindent\hspace*{0.2\textwidth}\hrulefill\hspace*{0.2\textwidth} +\begin{center} + \textsl{Le TeXnicien de Surface scripsit.} +\end{center} +\noindent\hspace*{0.2\textwidth}\hrulefill\hspace*{0.2\textwidth} + +\vspace*{\stretch{2}} + +\end{document} +%</doc> % \fi -% \section{The code} -% -% -% \subsection{The sty file} -% -% From the 4th version, I have used \Pkg{skeyval} for it provides -% toggle-keys. But times are a-changing and so is \Pkg{skeyval}. -% From this version 4.1, I use \Pkg{skeyval-bc} which retains the old -% ways of \Pkg{skeyval}. \Pkg{skeyval-bc} loads \Pkg{xkeyval} the -% macros of which I use to manage options. +% \begin{implementation} +% +% \section{\pkg{paresse} implementation} % -% \Pkg{ifluatex} and \Pkg{ifxetex} are required to take care of -% \hologo{LuaLaTeX} and \hologo{XeLaTeX} respectively. +% Three packages are coded below: the main one \pkg{paresse} loads one of the +% other two \pkg{paresse-old} or \pkg{paresse-utf8} depending on the +% \TeX{}-engine used and the encoding of the source. % +% \iffalse +%<*package> +% \fi +% The prefix is \texttt{paresse} for the three packages. % \begin{macrocode} -\RequirePackage{skeyval-bc} -\RequirePackage{ifluatex} -\RequirePackage{ifxetex} +%<@@=paresse> % \end{macrocode} -% -% With \cmd{\define@bitogkeys}, from \Pkg{skeyval-bc}, 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. +% +% \iffalse +%<*MAIN> +% \fi +% The main package \pkg{paresse} begins here. % \begin{macrocode} -\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}{}{} +\ProvidesExplPackage + {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} % \end{macrocode} -% -% I set the behaviour of the package in case of an unknown option -% with \cmd{\DeclareOptionX*}, from \Pkg{xkeyval}. +% \iffalse +%</MAIN> +% \fi +% \iffalse +%<*OLD> +% \fi +% Header of \pkg{paresse-old}: % \begin{macrocode} -\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.}} +\ProvidesExplPackage + {\ExplFileName-old}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} % \end{macrocode} +% \iffalse +%</OLD> +% \fi +% \iffalse +%<*UTF> +% \fi +% Header of \pkg{paresse-utf8}: +% \begin{macrocode} +\ProvidesExplPackage + {\ExplFileName-utf8}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +% \end{macrocode} +% \iffalse +%</UTF> +% \fi % -% The default options are: |legacy|, |wild|, |varepsilon|, -% |theta|, |pi|, |rho|, |sigma|, and |varphi|. -% \changes{v3}{2010/03/20}{Default option |legacy| added} +% The three packages require \pkg{xparse} and \pkg{l3keys2}: % \begin{macrocode} -\ExecuteOptionsX[GA]{legacy,wild,varepsilon,theta,pi,rho,sigma,varphi} -\ProcessOptionsX[GA]\relax +\RequirePackage{xparse} +\RequirePackage{l3keys2e} % \end{macrocode} +% \iffalse +%<*MAIN> +% \fi +% but the main \pkg{paresse} alone requires \pkg{iftex} to proceed according to +% the \TeX-engine. +% \begin{macrocode} +\RequirePackage{iftex} +% \end{macrocode} +% \iffalse +%</MAIN> +% \fi % -% 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-bc}. +% \iffalse +%<*!MAIN> +% \fi % \begin{macrocode} -\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}} +\cs_if_exist:NF \@@_main_package_loaded: +{ % \end{macrocode} +% \iffalse +%</!MAIN> +% \fi % +% \begin{macrocode} +\keys_define:nn {paresse} +{ + encoding_is_legacy .bool_set:N = \g_@@_encoding_is_legacy_bool, + encoding_is_levi .bool_set_inverse:N = + \g_@@_encoding_is_legacy_bool, + legacy .meta:n = { + encoding_is_legacy = #1 + }, + legacy .default:n = {true}, + legacy .initial:n = {true}, + levi .meta:n = { + encoding_is_levi = #1 + }, + levi .default:n = {true}, + levi .initial:n = {false}, + + mood_is_wild .bool_set:N = \g_@@_mood_is_wild_bool, + mood_is_tame .bool_set_inverse:N = + \g_@@_mood_is_wild_bool, + wild .meta:n = { + mood_is_wild = #1 + }, + wild .default:n = {true}, + wild .initial:n = {true}, + tame .meta:n = { + mood_is_tame = #1 + }, + tame .default:n = {true}, + tame .initial:n = {false}, + + letter_t_is_theta .bool_set:N = \g_@@_letter_t_is_theta_bool, + letter_t_is_tau .bool_set_inverse:N = + \g_@@_letter_t_is_theta_bool, + theta .meta:n = { + letter_t_is_theta = #1 + }, + theta .default:n = {true}, + theta .initial:n = {true}, + tau .meta:n = { + letter_t_is_tau = #1 + }, + tau .default:n = {true}, + tau .initial:n = {false}, + + letter_theta_is_theta .bool_set:N = \g_@@_letter_theta_is_theta_bool, + letter_theta_is_vartheta .bool_set_inverse:N = + \g_@@_letter_theta_is_theta_bool, + theta .meta:n = { + letter_theta_is_theta = #1 + }, + theta .default:n = {true}, + theta .initial:n = {true}, + vartheta .meta:n = { + letter_theta_is_vartheta = #1 + }, + vartheta .default:n = {true}, + vartheta .initial:n = {false}, + + letter_pi_is_pi .bool_set:N = \g_@@_letter_pi_is_pi_bool, + letter_pi_is_varpi .bool_set_inverse:N = + \g_@@_letter_pi_is_pi_bool, + pi .meta:n = { + letter_pi_is_pi = #1 + }, + pi .default:n = {true}, + pi .initial:n = {true}, + varpi .meta:n = { + letter_pi_is_varpi = #1 + }, + varpi .default:n = {true}, + varpi .initial:n = {false}, + + letter_rho_is_rho .bool_set:N = \g_@@_letter_rho_is_rho_bool, + letter_rho_is_varrho .bool_set_inverse:N = + \g_@@_letter_rho_is_rho_bool, + rho .meta:n = { + letter_rho_is_rho = #1 + }, + rho .default:n = {true}, + rho .initial:n = {true}, + varrho .meta:n = { + letter_rho_is_varrho = #1 + }, + varrho .default:n = {true}, + varrho .initial:n = {false}, + + letter_sigma_is_sigma .bool_set:N = \g_@@_letter_sigma_is_sigma_bool, + letter_sigma_is_varsigma .bool_set_inverse:N = + \g_@@_letter_sigma_is_sigma_bool, + sigma .meta:n = { + letter_sigma_is_sigma = #1 + }, + sigma .default:n = {true}, + sigma .initial:n = {true}, + varsigma .meta:n = { + letter_sigma_is_varsigma = #1 + }, + varsigma .default:n = {true}, + varsigma .initial:n = {false}, + + letter_epsilon_is_epsilon .bool_set:N = + \g_@@_letter_epsilon_is_epsilon_bool, + letter_epsilon_is_varepsilon .bool_set_inverse:N = + \g_@@_letter_epsilon_is_epsilon_bool, + epsilon .meta:n = { + letter_epsilon_is_epsilon = #1 + }, + epsilon .default:n = {true}, + epsilon .initial:n = {false}, + varepsilon .meta:n = { + letter_epsilon_is_varepsilon = #1 + }, + varepsilon .default:n = {true}, + varepsilon .initial:n = {true}, + + letter_phi_is_phi .bool_set:N = \g_@@_letter_phi_is_phi_bool, + letter_phi_is_varphi .bool_set_inverse:N = + \g_@@_letter_phi_is_phi_bool, + phi .meta:n = { + letter_phi_is_phi = #1 + }, + phi .default:n = {true}, + phi .initial:n = {false}, + varphi .meta:n = { + letter_phi_is_varphi = #1 + }, + varphi .default:n = {true}, + varphi .initial:n = {true}, +} +% \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 +\ProcessKeysOptions {paresse} % \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. +% \begin{macrocode} +\bool_if:nTF {\g_@@_letter_epsilon_is_epsilon_bool} +{\cs_new:Npn \@@_epsilon {\epsilon}} +{\cs_new:Npn \@@_epsilon {\varepsilon}} + +\bool_if:nTF {\g_@@_letter_theta_is_theta_bool} +{\cs_new:Npn \@@_theta {\theta}} +{\cs_new:Npn \@@_theta {\vartheta}} + +\bool_if:nTF {\g_@@_letter_pi_is_pi_bool} +{\cs_new:Npn \@@_pi {\pi}} +{\cs_new:Npn \@@_pi {\varpi}} + +\bool_if:nTF {\g_@@_letter_rho_is_rho_bool} +{\cs_new:Npn \@@_rho {\rho}} +{\cs_new:Npn \@@_rho {\varrho}} + +\bool_if:nTF {\g_@@_letter_sigma_is_sigma_bool} +{\cs_new:Npn \@@_sigma {\sigma}} +{\cs_new:Npn \@@_sigma {\varsigma}} + +\bool_if:nTF {\g_@@_letter_phi_is_phi_bool} +{\cs_new:Npn \@@_phi {\phi}} +{\cs_new:Npn \@@_phi {\varphi}} + +\bool_new:c {g__paresse_file_encoding_is_utf8_bool} +% \end{macrocode} % -% The first one takes care of problems of encoding. +% \iffalse +%<*!MAIN> +% \fi +% \begin{macrocode} +} +% \end{macrocode} +% \iffalse +%</!MAIN> +% \fi +% \iffalse +%<*MAIN> +% \fi % \begin{macrocode} -\newcommand\encoding@error{% - \@latex@error{% - paresse needs inputenc loaded with option "utf8" - or option such as "latin1" (8 bits encodign).}{}\stop} +\cs_new:Nn \__paresse_main_package_loaded: {} % \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}} +\ifluatex +% \end{macrocode} +% luatex specific code +% \begin{macrocode} +\PackageInfo{paresse}{compiling~with~luatex} +\RequirePackageWithOptions{paresse-old} +\else % \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. +% code for other engines % \begin{macrocode} -\AtBeginDocument{% - \@ifpackageloaded{inputenc}\find@encoding\encoding@error} +\ifxetex % \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. +% xetex specific code % \begin{macrocode} -\newtog[GA@]{utf8}[false] +\PackageInfo{paresse}{compiling~with~xetex} +\RequirePackageWithOptions{paresse-old} +\else % \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}. +% nor luatex nor xetex % \begin{macrocode} -\newcommand\find@encoding{% + +\PackageInfo{paresse}{compiling~with~tex} + +\newcommand\default@encoding@message{ + \bool_gset_true:c {g__paresse_file_encoding_is_utf8_bool} + \PackageWarningNoLine{paresse}{ + The~package~"paresse"~expects~a~"utf8"~encoded~file.~ + In~case~of~an~8~bits~encoding,~ + please~use~inputenc~with~the~correct~option} +} + +\newcommand\find@encoding{ \begingroup - \def\utf@encoding{utf8}% - \def\temp@a{\togoff{GA@utf8}% - \PackageInfo{paresse}{8-bit encoding expected\@gobble}} + \def\utf@encoding{utf8} + \def\temp@a{ + \bool_gset_false:c {g__paresse_file_encoding_is_utf8_bool} + \PackageInfo{paresse}{8-bit~encoding~expected\@gobble} + } \ifx\utf@encoding\inputencodingname - \def\temp@a{\togon{GA@utf8}% - \PackageInfo{paresse}{utf8 encoding detected\@gobble}} + \def\temp@a{ + \bool_gset_true:c {g__paresse_file_encoding_is_utf8_bool} + \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. -% -% \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} -\AtBeginDocument{% + +\@ifpackageloaded{inputenc} +{ + \PackageInfo{paresse}{inputenc~loaded} +} +{ + \PackageInfo{paresse}{inputenc~not~loaded,~utf8~expected\@gobble} +} + +\AtBeginDocument +{ + \@ifpackageloaded{inputenc} \find@encoding \default@encoding@message + \ExplSyntaxOn \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 + \bool_if:nTF {\use:c{g__paresse_file_encoding_is_utf8_bool}} + { + \PackageInfo{paresse}{charge~utf8} + \RequirePackageWithOptions{paresse-utf8} + } + { + \PackageInfo{paresse}{charge~vieux} + \RequirePackageWithOptions{paresse-old} + } + \makeatother + \ExplSyntaxOff +} + +\fi % END OF ifxetex +\fi % END OF ifluatex % \end{macrocode} -% -% And that's all for the main file. % \iffalse -%</package> +%</MAIN> % \fi +% % \iffalse -%<*oldpack> +%<*OLD> % \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-bc} 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`\^^a7 \let\GA@LaVieilleParesse= ^^a7 -% \end{macrocode} -% For sake of convienience, \PS is def'ed as |\S|. -% \begin{macrocode} \def\^^a7{\S} -% \end{macrocode} -% -% 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 `\^^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 @@ -418,27 +1234,15 @@ \else \let\GA@ActiveLaParesse \GA@ActiveLaParessexiii \fi -% \end{macrocode} -% -% 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} -% -% Now come the definitions of the meanings of the \PS-macros. For -% these definitions to work, \PS is made a letter. -% \begin{macrocode} + \makeparesseletter \def\^^a7a {\alpha} \def\^^a7b {\beta} \def\^^a7g {\gamma} \def\^^a7d {\delta} -\def\^^a7e {\GA@epsilon} +\def\^^a7e {\__paresse_epsilon} \def\^^a7z {\zeta} \def\^^a7h {\eta} \def\^^a7i {\iota} @@ -447,39 +1251,35 @@ \def\^^a7m {\mu} \def\^^a7n {\nu} \def\^^a7x {\xi} -\def\^^a7p {\GA@pi} -\def\^^a7r {\GA@rho} -\def\^^a7s {\GA@sigma} +\def\^^a7p {\__paresse_pi} +\def\^^a7r {\__paresse_rho} +\def\^^a7s {\__paresse_sigma} \def\^^a7u {\upsilon} -\def\^^a7f {\GA@phi} +\def\^^a7f {\__paresse_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} + +\bool_if:nTF {\g__paresse_encoding_is_legacy_bool} +{ + \def\^^a7j {\varsigma} + \def\^^a7v {\__paresse_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} + \bool_if:nTF {\g__paresse_letter_t_is_theta_bool} + { + \def\^^a7t {\__paresse_theta} + } + { + \def\^^a7t {\tau} + } +} +{ + \def\^^a7j {\__paresse_theta} \def\^^a7t {\tau} \def\^^a7q {\chi} \def\^^a7y {\psi} - \def\^^a7c {\varsigma}} -% \end{macrocode} -% Upper case letters are treated thence: -% \begin{macrocode} + \def\^^a7c {\varsigma} +} \def\^^a7G {\Gamma} \def\^^a7D {\Delta} \def\^^a7L {\Lambda} @@ -489,74 +1289,32 @@ \def\^^a7F {\Phi} \def\^^a7X {\Xi} \def\^^a7W {\Omega} -% \end{macrocode} -% Once again \Option{legacy} vs. \Option{levi}: -% \begin{macrocode} -\iftogon{GA@legacy}{% +\bool_if:nTF {\g__paresse_encoding_is_legacy_bool} +{ \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} -% -% The end is near! \PS is made active and the \PS-macros defined. This -% is old code --- directly from~\cite{tlachand}. -% \begin{macrocode} \catcode `\^^a7=\active \def^^a7#1{\ensuremath{\csname \string^^a7#1\endcsname}} -% \end{macrocode} -% In case option \Option{tame} is chosen, \PS is given its first -% catcode and meaning back. -% \begin{macrocode} -\iftogon{GA@tame}{% + +\bool_if:nF {\g__paresse_mood_is_wild_bool} +{ \catcode`\^^a7=\count@ \ifnum\count@=13 \let ^^a7=\GA@LaVieilleParesse \fi -}% +} % \end{macrocode} -% -% And that's all for \texttt{paresseold.sto}. -% % \iffalse -%</oldpack> +%</OLD> % \fi % \iffalse -%<*utf8pack> +%<*UTF> % \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. -% -% First a bit of identification -% \begin{macrocode} -\ProvidesFile{paresseutf8.sto} -% \end{macrocode} -% 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} \begingroup \catcode`\"=12 @@ -568,125 +1326,68 @@ \catcode`\~=13 \global\let\GA@parse@UTFviii@a=\parse@UTFviii@a \global\let\GA@parse@UTFviii@b=\parse@UTFviii@b -\gdef\declareunicodecharacter#1#2{% +\gdef\declareunicodecharacter#1#2{ \count@"#1\relax - \wlog{\space\space Redefining Unicode char U+#1 (decimal \the\count@)}% + \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}% + \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}}% + \gdef\UTFviii@tmp{\IeC{#2}} \endgroup} -\gdef\GA@parse@XML@charref{% +\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.,% + \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.{,;}% + \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.{!,;}% + \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} \newcommand{\makeparesseletter}{\DeclareUnicodeCharacter{00A7}\S} -\newcommand{\makeparesseother}{% - \PackageWarning{paresse}{% - Command \string\makeparesseother disabled}{% +\newcommand{\makeparesseother}{ + \PackageWarning{paresse}{ + Command \string\makeparesseother disabled}{ The command \string\makeparesseother would have been meaningless in the current context}} -% \end{macrocode} -% -% 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} \newcommand{\ActiveLaParesse}{\declareunicodecharacter{00A7}\@paresse} \newenvironment{ParesseActive}{\ActiveLaParesse}{} -% \end{macrocode} -% -% It's time to prepare the definition of the \PS-macros. To begin with -% we activate the character \PS. -% \begin{macrocode} \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} \def\@paresse{\futurelet\@toks\@i@paresse} -% \end{macrocode} -% 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} -\def\@i@paresse{% +\def\@i@paresse{ \csname\ifcat a\@toks @ii@paresse\else S\fi\endcsname} -% \end{macrocode} -% 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} -\def\@ii@paresse#1{% +\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{% +\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 e\__paresse_epsilon \define@paresse@car z\zeta \define@paresse@car h\eta \define@paresse@car i\iota @@ -695,25 +1396,36 @@ \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 p\__paresse_pi +\define@paresse@car r\__paresse_rho +\define@paresse@car s\__paresse_sigma \define@paresse@car u\upsilon -\define@paresse@car f\GA@phi +\define@paresse@car f\__paresse_phi \define@paresse@car w\omega -\iftogon{GA@legacy}{% - \define@paresse@car v\GA@theta + +\bool_if:nTF {\g__paresse_encoding_is_legacy_bool} +{ + \define@paresse@car j\varsigma + \define@paresse@car v\__paresse_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 + + \bool_if:nTF {\g__paresse_letter_t_is_theta_bool} + { + \define@paresse@car t\__paresse_theta + } + { + \define@paresse@car t\tau + } +} +{ + \define@paresse@car j\__paresse_theta \define@paresse@car t\tau \define@paresse@car q\chi \define@paresse@car y\psi - \define@paresse@car c\varsigma} + \define@paresse@car c\varsigma +} \define@paresse@car G\Gamma \define@paresse@car D\Delta \define@paresse@car L\Lambda @@ -723,30 +1435,44 @@ \define@paresse@car F\Phi \define@paresse@car X\Xi \define@paresse@car W\Omega -\iftogon{GA@legacy}{% + +\bool_if:nTF {\g__paresse_encoding_is_legacy_bool} +{ \define@paresse@car V\Theta \define@paresse@car T\Theta - \define@paresse@car Q\Psi}{% + \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} + \define@paresse@car Y\Psi +} + +\bool_if:nF {\g__paresse_mood_is_wild_bool}{\makeparesseletter} % \end{macrocode} -% -% And that's all for the file \texttt{paresseutf8.sto}. % \iffalse -%</utf8pack> +%</UTF> +% \fi +% +% \iffalse +%</package> % \fi +% +% \end{implementation} +% % \Finale +% \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 +% \endinput %%% Local Variables: %%% mode: doctex -%%% fill-column: 70 -%%% coding: iso-8859-15 +%%% coding: utf-8 +%%% fill-column: 80 %%% TeX-master: t %%% End: - |