summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/yagusylo
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/yagusylo
Initial commit
Diffstat (limited to 'macros/latex/contrib/yagusylo')
-rw-r--r--macros/latex/contrib/yagusylo/LISEZMOI40
-rw-r--r--macros/latex/contrib/yagusylo/Makefile145
-rw-r--r--macros/latex/contrib/yagusylo/README37
-rw-r--r--macros/latex/contrib/yagusylo/yagusylo-en.pdfbin0 -> 1107176 bytes
-rw-r--r--macros/latex/contrib/yagusylo/yagusylo-fr.pdfbin0 -> 1121689 bytes
-rw-r--r--macros/latex/contrib/yagusylo/yagusylo.cfg26
-rw-r--r--macros/latex/contrib/yagusylo/yagusylo.dtx3918
-rw-r--r--macros/latex/contrib/yagusylo/yagusylo.ins59
-rw-r--r--macros/latex/contrib/yagusylo/yagusylo.pdfbin0 -> 433411 bytes
-rw-r--r--macros/latex/contrib/yagusylo/yagusylo.sty561
10 files changed, 4786 insertions, 0 deletions
diff --git a/macros/latex/contrib/yagusylo/LISEZMOI b/macros/latex/contrib/yagusylo/LISEZMOI
new file mode 100644
index 0000000000..ecd0c11674
--- /dev/null
+++ b/macros/latex/contrib/yagusylo/LISEZMOI
@@ -0,0 +1,40 @@
+-*- coding: utf-8 -*-
+L’extension yagusylo
+<Yet Another Grand Unified SYmbols LOader>
+version 1.2 du 2009-02-26
+
+===========================================================================
+Description:
+Cette extension permet d’obtenir un symbole sans avoir à charger
+l’extension qui le fournit habituellement. Cela permet d’éviter
+des conflits de noms.
+
+On peut la considérer comme une extension de pifont en
+technicolor. Son comportement est controlé à l’aide de clés
+grâce à xkeyval.
+
+===========================================================================
+Fichiers:
+===== documentation =====
+LISEZMOI ce fichier
+README
+yagusylo.pdf le code
+yagusylo-en.pdf doc anglaise pour l’utilisateur
+yagusylo-fr.pdf doc française pour l’utilisateur
+===== source =====
+Makefile
+yagusylo.dtx
+yagusylo.ins
+===== fichiers pour LaTeX =====
+yagusylo.sty
+yagusylo.cfg
+---------------------------------------------------------------------------
+
+Je fournis également le fichier yagusylo.tds.zip avec cette extension.
+
+
+2009-02-26T22:32:12+0100
+Copyright (C) 2009 by Yvon Henel
+dit «le TeXnicien de surface»
+<le.texnicien.de.surface@wanadoo.fr>
+
diff --git a/macros/latex/contrib/yagusylo/Makefile b/macros/latex/contrib/yagusylo/Makefile
new file mode 100644
index 0000000000..28fd582c6d
--- /dev/null
+++ b/macros/latex/contrib/yagusylo/Makefile
@@ -0,0 +1,145 @@
+# ---------------------------------------------------------------
+# Makefile for the yagusylo package by Y. Henel
+# modified version of the Makefile of the kerntest package
+# many thanks to Harald Harders
+# ---------------------------------------------------------------
+PKGNAME= yagusylo
+VERSION= 1.2 # Edition du cinquantenaire, 1re version CTAN
+
+TEX= \
+ $(PKGNAME).sty\
+ $(PKGNAME).cfg
+
+
+DOC= \
+ $(PKGNAME).pdf \
+ $(PKGNAME)-en.pdf \
+ $(PKGNAME)-fr.pdf \
+ LISEZMOI \
+ README
+
+SOURCE= \
+ Makefile \
+ $(PKGNAME).dtx \
+ $(PKGNAME).ins \
+
+PRODUITS= \
+ $(PKGNAME).sty \
+ $(PKGNAME)-tools.sty \
+ $(PKGNAME).pdf \
+ $(PKGNAME)-en.pdf \
+ $(PKGNAME)-fr.pdf \
+ $(PKGNAME)-en.ltx \
+ $(PKGNAME)-fr.ltx \
+
+
+REPERTS= \
+ doc \
+ tex \
+ source
+
+# ---------------------------------------------------------------
+
+.SUFFIXES: .sty .ins .dtx .dvi .ps .pdf .ltx
+
+# ---------------------------------------------------------------
+.ins.sty:
+ latex $<
+
+.dtx.pdf:
+ pdflatex $<
+ pdflatex $<
+ makeindex -s gind.ist $(*D)/$(*F)
+ makeindex -s gglo.ist -o $(*D)/$(*F).gls $(*D)/$(*F).glo
+ pdflatex $<
+
+.ltx.pdf:
+ pdflatex $<
+ pdflatex $<
+ makeindex $(*D)/$(*F)
+ pdflatex $<
+
+.tex.pdf:
+ pdflatex $<
+ pdflatex $<
+
+# ---------------------------------------------------------------
+
+all: $(PKGNAME).sty $(PKGNAME).pdf\
+ $(PKGNAME)-tools.sty\
+ $(PKGNAME)-en.pdf $(PKGNAME)-en.ltx\
+ $(PKGNAME)-fr.pdf $(PKGNAME)-fr.ltx
+# ---------------------------------------------------------------
+
+help:
+ @-echo "************************************************************"
+ @-echo "* *"
+ @-echo "* Choisir une des options : *"
+ @-echo "* 'all' -> yagusylo.sty *"
+ @-echo "* 'doc' pour la documentation *"
+ @-echo "* 'doc' for the documentation *"
+ @-echo "* 'sty' -> yagusylo.sty *"
+ @-echo "* 'dist'-> yagusylo.sty & doc *"
+ @-echo "* 'clean' petit nettoyage *"
+ @-echo "* 'distclean' (encore plus propre) *"
+ @-echo "* *"
+ @-echo "************************************************************"
+# ---------------------------------------------------------------
+
+dist: all clean
+
+# ---------------------------------------------------------------
+
+clean:
+ @-rm -f *.{aux,log,toc,out,glo,gls,ilg,ind,idx,hd}
+ @-rm -f *~
+ @-rm -f xmpl.ltx
+
+# ---------------------------------------------------------------
+
+distclean: clean
+ @-rm -f $(PRODUITS)
+
+# ---------------------------------------------------------------
+
+texlive: all clean
+ @-rm -rf $(REPERTS)
+ @-mkdir -p tex/latex/$(PKGNAME)
+ @-mkdir -p doc/latex/$(PKGNAME)
+ @-mkdir -p source/latex/$(PKGNAME)
+ @-cp $(TEX) tex/latex/$(PKGNAME)
+ @-cp $(DOC) doc/latex/$(PKGNAME)
+ @-cp $(SOURCE) source/latex/$(PKGNAME)
+ @-mkdir -p $(PKGNAME)
+ @-cp $(DOC) ./$(PKGNAME)
+ @-cp $(SOURCE) ./$(PKGNAME)
+ @-cp $(TEX) ./$(PKGNAME)
+
+# ---------------------------------------------------------------
+
+zip: texlive
+ @-rm -f $(PKGNAME).zip
+ @-zip -r $(PKGNAME) $(REPERTS)
+ @-rm -rf $(REPERTS)
+ @mv $(PKGNAME).zip $(PKGNAME).tds.zip
+ @zip -r $(PKGNAME) $(PKGNAME)
+ @zip -r $(PKGNAME) $(PKGNAME).tds.zip
+ @-rm -rf $(PKGNAME)
+ @-rm -f $(PKGNAME).tds.zip
+
+# ---------------------------------------------------------------
+ctan: zip distclean
+
+# ---------------------------------------------------------------
+
+$(PKGNAME).sty: $(PKGNAME).ins $(PKGNAME).dtx
+$(PKGNAME)-tools.sty: $(PKGNAME).ins $(PKGNAME).dtx
+$(PKGNAME)-en.ltx: $(PKGNAME).ins $(PKGNAME).dtx
+$(PKGNAME)-fr.ltx: $(PKGNAME).ins $(PKGNAME).dtx
+
+sty: $(PKGNAME).sty $(PKGNAME)-tools.sty
+doc: $(PKGNAME).ins $(PKGNAME).pdf
+
+# ---------------------------------------------------------------
+# echu e an abaden
+# Le \TeX nicien de surface 2008-05-10
diff --git a/macros/latex/contrib/yagusylo/README b/macros/latex/contrib/yagusylo/README
new file mode 100644
index 0000000000..d7cc863365
--- /dev/null
+++ b/macros/latex/contrib/yagusylo/README
@@ -0,0 +1,37 @@
+The package yagusylo
+<Yet Another Grand Unified SYmbols LOader>
+version 1.2 dated 2009-02-26
+
+===========================================================================
+Description:
+This package enables you to obtain a symbol whithout loading the
+package which usually provides it in order to avoid name clashes.
+
+It could be considered as an extension of pifont gone
+technicolor. It's behaviour is controlled by keys using
+xkeyval.
+
+===========================================================================
+Files:
+===== documentation =====
+LISEZMOI
+README: this file
+yagusylo.pdf the code
+yagusylo-en.pdf English doc for user
+yagusylo-fr.pdf French doc for user
+===== source =====
+Makefile
+yagusylo.dtx
+yagusylo.ins
+===== files for LaTeX =====
+yagusylo.sty
+yagusylo.cfg configuration file
+---------------------------------------------------------------------------
+
+The file yagusylo.tds.zip is also provided with this package.
+
+
+2009-02-26T22:29:25+0100
+Copyright (C) 2009 by Yvon Henel
+dit «le TeXnicien de surface»
+<le.texnicien.de.surface@wanadoo.fr>
diff --git a/macros/latex/contrib/yagusylo/yagusylo-en.pdf b/macros/latex/contrib/yagusylo/yagusylo-en.pdf
new file mode 100644
index 0000000000..b741cfda25
--- /dev/null
+++ b/macros/latex/contrib/yagusylo/yagusylo-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/yagusylo/yagusylo-fr.pdf b/macros/latex/contrib/yagusylo/yagusylo-fr.pdf
new file mode 100644
index 0000000000..7dfa925042
--- /dev/null
+++ b/macros/latex/contrib/yagusylo/yagusylo-fr.pdf
Binary files differ
diff --git a/macros/latex/contrib/yagusylo/yagusylo.cfg b/macros/latex/contrib/yagusylo/yagusylo.cfg
new file mode 100644
index 0000000000..899ce9c8e5
--- /dev/null
+++ b/macros/latex/contrib/yagusylo/yagusylo.cfg
@@ -0,0 +1,26 @@
+%%
+%% This is file `yagusylo.cfg',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% yagusylo.dtx (with options: `config')
+%% This is a generated file.
+%%
+%% Copyright (C) 2009 Y. 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.
+\defyagenumpattern{wastrol}{symfam=wasysym,
+ firstitemnum=88, enumlength=14, symcolor=purple}
+\endinput
+%%
+%% End of file `yagusylo.cfg'.
diff --git a/macros/latex/contrib/yagusylo/yagusylo.dtx b/macros/latex/contrib/yagusylo/yagusylo.dtx
new file mode 100644
index 0000000000..6403d95e53
--- /dev/null
+++ b/macros/latex/contrib/yagusylo/yagusylo.dtx
@@ -0,0 +1,3918 @@
+% \iffalse meta-comment
+% Time-stamp: <2009-02-27T07:51:49 (cet) [yvon sur hypatie]>
+% Copyright (C) 2009 by Yvon Henel
+% dit «le TeXnicien de surface» <le.texnicien.de.surface@wanadoo.fr>
+% ------------------------------------------------------------------
+%
+% This file may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.2
+% of this license or (at your option) any later version.
+% The latest version of this license is in:
+%
+% http://www.latex-project.org/lppl.txt
+%
+% and version 1.2 or later is part of all distributions of LaTeX
+% version 1999/12/01 or later.
+% \fi
+%
+% \iffalse
+%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<package>\def\fileversion{v1.2}
+%<package>\def\filedate{2009/02/26}
+%<package>\def\docdate{2009/02/26}
+%<package>\def\fileinfo{Yet Another Grand Unified Symbols Loader
+%<package> par Le TeXnicien de surface}
+%<package>\ProvidesPackage{yagusylo}
+%<package> [\filedate\space\fileversion\space\fileinfo]
+%<*driver>
+\documentclass[a4paper]{ltxdoc}
+\usepackage[latin9]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[onerror=nice]{yagusylo}
+\usepackage{xspace,fixltx2e,array}
+\IfFileExists{lmodern.sty}{\usepackage{lmodern}}{}
+\usepackage[np, autolanguage]{numprint}
+\usepackage[frenchb,english]{babel}
+\usepackage[colorlinks=true,
+ linkcolor=blue,
+ urlcolor=blue,
+ citecolor=blue]{hyperref}
+% décommentez la macro \OnlyDescription pour obtenir un document avec
+% le code
+% comment out the following line to obtain a document with code
+% \OnlyDescription
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+%%% customization
+\makeatletter
+\def\Describe@Macro#1{\endgroup
+ \par\noindent\hspace*{-5em}
+ {\PrintDescribeMacro{#1}}%
+ \SpecialUsageIndex{#1}\par}
+\makeatother
+\newcommand{\TO}{\textemdash~\ignorespaces}
+\newcommand{\TF}{\unskip~\textemdash\xspace}
+\newcommand{\BOP}{\discretionary{}{}{}}
+\newcommand\Pkg[1]{\textsf{#1}}
+\newcommand{\fctt}{\texttt{fr.comp.text.tex}\xspace}
+\newcommand{\Sourire}{\texttt{;-)}\xspace}
+\newcommand\Option[1]{\textsc{#1}}
+\def\Module{yagusylo}
+%%% end of customization
+\begin{document}
+ \DocInput{yagusylo.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{971}
+%
+% \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 \~}
+%
+% \GetFileInfo{yagusylo.sty}
+%
+% \changes{v1.1}{2008/06/25}{first version on personnal site}
+% \changes{v1.2}{2008/08/17}{first version on CTAN}
+%
+% \DoNotIndex{\newcommand,\newenvironment,\i,\ae,\oe,\DeclareOption,^^A
+% \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
+% \upalpha, \upbeta, \upgamma, \updelta, \upepsilon,^^A
+% \upvarepsilon, \upzeta, \upeta, \uptheta, \upvartheta, \upiota, \upkappa,^^A
+% \uplambda, \upmu, \upnu, \upxi, \uppi, \upvarpi, \uprho, \upvarrho, \upsigma,^^A
+% \upvarsigma, \uptau, \upupsilon, \upphi, \upvarphi, \upchi, \uppsi, \upomega,^^A
+% \Delta, \Gamma, \Theta, \Lambda, \Xi, \Pi, \Phi, \Psi \Sigma,^^A
+% \Upsilon, \ExecuteOptions, \providecommand, \newif,^^A
+% \fi, \if, \or, \ifnum, \ifinner, \ifcase, \def, \expandafter,^^A
+% \RequirePackage, \@ctrerr, \ProcessOptions,\relax,^^A
+% \AtEndOfPackage, \AtBeginDocument,\,, \{, \}, \`,^^A
+% \DeclareMathOperator, \InputIfFileExists,^^A
+% \@ifstar, \@gobble, \@ifdefinable, \@nil,^^A
+% \ifthenelse, \equal, \value,^^A
+% \frac, \geqslant, \leqslant, \dfrac,\ast, \imath, \jmath, \binom,^^A
+% \displaystyle, \ifx, \infty, \int, \langle, \left, \let, \llbracket,^^A
+% \longmapsto, \longrightarrow, \lVert, \lvert, \MakeUppercase, \mathbb,^^A
+% \mathscr, \MessageBreak, \mspace, \newtoks, \overrightarrow,^^A
+% \PackageError, \PackageInfo, \PackageWarningNoLine, \partial, \rangle,^^A
+% \renewcommand, \right, \rrbracket, \rVert, \rvert, \string, \the,^^A
+% \varnothing, \xrightarrow, \xspace,^^A
+% \text, \textup \csname, \endcsname, \value, \else, \Omega, \ensuremath}
+%
+% \title{The package \textsf{yagusylo}\thanks{This document corresponds to
+% the file \textsf{yagusylo}~\fileversion, \filedate,
+% 50th anniversary edition.}}
+% \author{Le \TeX nicien de surface\thanks{%
+% \href{mailto:le.texnicien.de.surface@wanadoo.fr}%
+% {le.texnicien.de.surface@wanadoo.fr}}}
+%
+% \maketitle
+%
+% \begin{abstract}
+% This package enables you to obtain a symbol whithout loading the
+% package which usually provides it in order to avoid name clashes.
+%
+% It could be considered as an extension of \Pkg{pifont} gone
+% technicolor. It's behaviour is controlled by keys using
+% \Pkg{xkeyval}.
+%
+% The English documentation for the user is available in
+% \texttt{\Module-en.pdf}.
+% \end{abstract}
+% \begin{otherlanguage}{frenchb}
+% \begin{abstract}
+% Cette extension permet d'obtenir un symbole sans avoir à charger
+% l'extension qui le fournit habituellement. Cela permet d'éviter
+% des conflits de noms.
+%
+% On peut la considérer comme une extension de \Pkg{pifont} en
+% technicolor. Son comportement est controlé à l'aide de clés
+% grâce à \Pkg{xkeyval}.
+%
+% La documentation en français pour l'utilisateur est
+% \texttt{\Module-fr.pdf}.
+% \end{abstract}
+% \end{otherlanguage}
+% \tableofcontents{}
+% \newpage
+%
+% \StopEventually{}
+% \section{The code}
+% \label{secCode}
+%
+% \iffalse
+%<*package>
+% \fi
+% We begin with the usual salutations
+% and then load some packages
+% \begin{macrocode}
+\RequirePackage{xifthen}
+\RequirePackage{suffix}
+\RequirePackage{xargs}
+% \end{macrocode}
+% \Pkg{xargs} requires \Pkg{xkeyval} and
+% \Pkg{xifthen} requires \Pkg{etex}, \Pkg{calc}, \Pkg{ifthen}, and
+% \Pkg{ifmtarg} so no need to ask for them again but they are all
+% available from now on.
+%
+% Two macros the behaviour of which will be controlled by options on
+% the document body level. For the moment, no info, no warning.
+% \begin{macrocode}
+\newcommand*{\Y@GINFO}[2][]{}
+\newcommand*{\Y@GWARNING}[3]{}
+% \end{macrocode}
+%
+% The first global key controls the symfam
+% \begin{macrocode}
+\define@choicekey*+[Y@G]{yagusylo.sty}{symfam}[\Y@G@SymFamChoice\nr]%
+ {marvosym,fourier,wasysym,bbding,dingbat,ark,ifsym,ifsymgeo,%
+ ifsymgeonarrow,ifsymgeowide,ifsymclock,ifsymweather,pifont}%
+ [pifont]%
+ {\Y@GINFO{You choose \Y@G@SymFamChoice}}%
+ {\PackageError{yagusylo}%
+ {The symbols family ``\Y@G@SymFamChoice'' is not yet known.}
+ {I don't know the family you required.\MessageBreak
+ If it's not a typo you may consider to contact me
+ (TdS)\MessageBreak to obtain support for it.}}
+% \end{macrocode}
+% the boolean key |color| will control the loading of \Pkg{xcolor}
+% thereafter
+% \begin{macrocode}
+\define@boolkey[Y@G]{yagusylo.sty}[Y@G@]{color}[false]{}
+% \end{macrocode}
+% the boolean key |configfile| will control the inputing of the
+% configuration file, if it exists,
+% \begin{macrocode}
+\define@boolkey[Y@G]{yagusylo.sty}[Y@G@]{configfile}[false]{}
+% \end{macrocode}
+%
+% The keys |info| and |onerror| control the behaviour of
+% \Pkg{yagusylo}
+% \begin{macrocode}
+\define@choicekey*+[Y@G]{yagusylo.sty}{info}[\Y@G@Info\nr]%
+ {mute,normal,verbose}[normal]{}{}
+\define@choicekey*+[Y@G]{yagusylo.sty}{onerror}[\Y@G@OnError\nr]%
+ {nice,tough}[tough]{}{}
+% \end{macrocode}
+%
+% It is possible to pass options to \Pkg{xcolor} with the following
+% key
+% \begin{macrocode}
+\define@key[Y@G]{yagusylo.sty}{XcolorOptions}[!Y@G!]%
+ {\def\Y@GXcolorOptions{#1}}
+% \end{macrocode}
+%
+% It's now time to set the default values of the global keys, read the
+% options given by the user and relax the macro \cs{nr} which wont be
+% mentioned again.
+% \begin{macrocode}
+\ExecuteOptionsX[Y@G]{symfam,color,XcolorOptions,info,onerror,configfile}
+\ProcessOptionsX[Y@G]\relax
+\let\nr\relax
+% \end{macrocode}
+%
+% Depending of the value given to the key |color| we load \Pkg{xcolor}
+% or not. If the value of |XcolorOptions| is the default |!Y@G!|
+% \Pkg{xcolor} is loaded without any option, if not \Pkg{xcolor} is
+% loaded with the options provided by the user. The control of the
+% validity of those options will be done by \Pkg{xcolor} itself.
+% \begin{macrocode}
+\ifY@G@color
+\ifthenelse{\equal{\Y@GXcolorOptions}{!Y@G!}}
+ {\RequirePackage{xcolor}}
+ {\RequirePackage[\Y@GXcolorOptions]{xcolor}
+ \PackageInfo{yagusylo}{Package xcolor loaded with options:
+ \Y@GXcolorOptions}}
+\define@key[Y@G]{yagusylo.sty}{symcolor}[red]{\def\Y@GSymColor{#1}}
+\setkeys[Y@G]{yagusylo.sty}{symcolor}
+\newcommand\Y@G@Couleur[1]{\color{#1}}
+\else
+\define@key[Y@G]{yagusylo.sty}{symcolor}[]{}
+\newcommand\Y@G@Couleur[1]{\relax}
+\def\Y@GSymColor{\relax}
+\fi
+% \end{macrocode}
+%
+% We don't want the global options |color|, |info| and |onerror| to be
+% changed afterwards so we disable them.
+% \begin{macrocode}
+\disable@keys[Y@G]{yagusylo.sty}{color,onerror,info}
+% \end{macrocode}
+%
+% \begin{macro}{\setyagusylokeys}
+% The macro requires an argument, if it is a \texttt{*} the default
+% settings of the global keys are redone, in the other case, the user
+% is meant to provide legal pairs of key-value.
+% \begin{macrocode}
+\newcommand\setyagusylokeys[1]{%
+ \ifthenelse{\equal{#1}{*}}%
+ {\setkeys[Y@G]{yagusylo.sty}{%
+ symfam,symcolor,%
+ leadtype,symplace,sympos,boxwidth,before,after,%
+ head,tail}}%
+ {\setkeys[Y@G]{yagusylo.sty}{#1}}}
+% \end{macrocode}
+% \end{macro}
+%
+% Whatever the value of |onerror| key, \Pkg{yagusylo} will give, at
+% the end of its loading, a summary of the global setup which is
+% enforced at the beginning of the document:
+% \begin{macrocode}
+\AtEndOfPackage{%
+\PackageInfo{yagusylo}{^^J%
+============================================================^^J%
+^^J%
+****************** YAGUSYLO GLOBAL SETUPS ******************^^J%
+^^J%
+===================== GENERAL OPTIONS ======================^^J%
+^^J%
+option ``info'' ......... is ``\Y@G@Info''^^J%
+option ``onerror'' ...... is ``\Y@G@OnError''^^J%
+option ``color'' ........ is \ifY@G@color``true''\else``false''\fi^^J%
+option ``configfile'' ... is \ifY@G@configfile``true''\else``false''\fi^^J%
+^^J%
+-------------------- CHANGEABLE OPTIONS --------------------^^J%
+^^J%
+\ifY@G@color
+option ``symcolor'' ....... is ``\Y@GSymColor''^^J\fi
+option ``symfam'' ......... is ``\Y@G@SymFamChoice''^^J%
+option ``leadtype'' ....... is ``\Y@Gyagfillleadtype''^^J%
+option ``symplace'' ....... is ``\Y@Gyagfillsymplace''^^J%
+option ``sympos'' ......... is ``\Y@Gyagfillsympos''^^J%
+option ``boxwidth'' ....... is ``\Y@Gyagfillboxwidth''^^J%
+option ``before'' ......... is ``\Y@Gyagfillbefore''^^J%
+option ``after'' .......... is ``\Y@Gyagfillafter''^^J%
+option ``head'' ........... is ``\the\Y@Glinehead''^^J%
+option ``tail'' ........... is ``\the\Y@Glinetail''^^J%
+::::::::::::::::: OPTIONS FOR YAGENUMERATE :::::::::::::::::^^J%
+option ``firstitemnum'' ... is ``\number\Y@GEnumFirstItemNum''^^J%
+option ``enumlength'' ..... is ``\number\Y@GEnumLength''^^J%
+\ifY@G@color
+option ``symcolor'' ....... is ``\Y@GEnumSymColor''^^J\fi
+option ``symfam'' ......... is ``\Y@G@EnumSymFamChoice''^^J%
+------------------------------------------------------------^^J%
+^^J%
+The known patterns for environment ``yagenumerate'' are:^^J%
+``piwcr'' (default), ``piwcs'', ``pibcr'', and ``pibcs''.^^J%
+^^J%
+============================================================%
+\@gobbletwo}%
+% \end{macrocode}
+%
+% Always at the end of the loading, we redefine the info and
+% warning\slash error commands:
+% \begin{macrocode}
+\ifthenelse{\equal{\Y@G@Info}{verbose}}
+ {\renewcommand*{\Y@GINFO}[2][0]{\PackageInfo{yagusylo}{#2}}}{}%
+\ifthenelse{\equal{\Y@G@Info}{normal}}
+ {\renewcommand*{\Y@GINFO}[2][0]{%
+ \ifthenelse{#1>0}{\PackageInfo{yagusylo}{#2}}}{}}{}%
+ \ifthenelse{\equal{\Y@G@OnError}{tough}}
+ {\renewcommand*{\Y@GWARNING}[3]{\PackageError{yagusylo}{#1}{#3}}}{}
+ \ifthenelse{\equal{\Y@G@OnError}{normal}}
+ {\renewcommand*{\Y@GWARNING}[3]{\PackageError{yagusylo}{#1}{#3}}}{}
+ \ifthenelse{\equal{\Y@G@OnError}{nice}}
+ {\renewcommand*{\Y@GWARNING}[3]{\PackageWarning{yagusylo}{#1#2}}}{}}
+% \end{macrocode}
+%
+% This is the first utility macro which is not really more than an
+% abbreviation. |Y@G| is the prefix of all internal names.
+% \begin{macrocode}
+\newcommand\Y@G@U@FamilyDef[1]{\fontencoding{U}\fontfamily{#1}}
+% \end{macrocode}
+% And then two other shortcuts.
+% \begin{macrocode}
+\newcommand\Y@Gif[3]{%
+ \ifthenelse{\equal{#1}{#2}}{\Y@G@U@FamilyDef{#3}}{}}
+\newcommand\Y@GifE[4]{%
+ \ifthenelse{\equal{#1}{#2}}{\Y@G@U@FamilyDef{#3}#4}{}}
+% \end{macrocode}
+%
+% The internal macro.
+% \begin{macrocode}
+\newcommand\Y@Gyagding[3]{{%
+ \Y@G@GetSymb{#1}\selectfont\Y@G@Couleur{#3}\char#2}}
+% \end{macrocode}
+%
+% \begin{macro}{\yagding}
+% This user-level macro is defined taking advantage of the features of
+% \cs{newcommandx} of \Pkg{xargs} which enable us to have an optional
+% argument before and another after the mandatory one. The default
+% values of 1st and 3rd arguments ensure that the produced ding will
+% be chosen in current default symfam with current default colour, if
+% there is any.
+% \begin{macrocode}
+\newcommandx\yagding[3][1=\Y@G@SymFamChoice,3=\Y@GSymColor]{{%
+ \Y@G@GetSymb{#1}\selectfont\Y@G@Couleur{#3}\char#2}}
+% \end{macrocode}
+% \end{macro}
+%
+% The \cs{Y@G@GetSymb} macro selects the correct font setting from the
+% symbolic name of the symfam. There is no check mechanism for the
+% argument is passed through the key-value mechanism and so checked
+% at giving time.
+% \begin{macrocode}
+\newcommand\Y@G@GetSymb[1]{%
+ \Y@GifE{#1}{marvosym}{mvs}{\fontseries{m}\fontshape{n}}%
+ \Y@Gif{#1}{fourier}{futs}%
+ \Y@Gif{#1}{wasysym}{wasy}%
+ \Y@Gif{#1}{bbding}{ding}%
+ \Y@Gif{#1}{dingbat}{dingbat}%
+ \Y@Gif{#1}{ark}{ark}%
+ \Y@Gif{#1}{ifsym}{ifsym}%
+ \Y@Gif{#1}{ifsymgeo}{ifgeo}%
+ \Y@GifE{#1}{ifsymgeonarrow}{ifgeo}{\fontshape{na}}%
+ \Y@GifE{#1}{ifsymgeowide}{ifgeo}{\fontshape{w}}%
+ \Y@Gif{#1}{ifsymclock}{ifclk}%
+ \Y@Gif{#1}{ifsymweather}{ifwea}%
+ \Y@Gif{#1}{pifont}{pzd}}
+% \end{macrocode}
+%
+% \begin{macro}{\defdingname}
+% Next user-level macro relies on the \cs{newcommandx} to enable 3
+% optional arguments, the last one placed after the mandatory
+% ones. The 4th argument is used to build the name of the internal
+% macro with \cs{edef} or \cs{xdef} depending of the value of the
+% 2nd (optional) argument which defaults to |local|.
+%
+% This macro issues an info message if |info| key has value
+% |verbose|.
+%
+% To facilitate the use of the 2nd argument we provide a shortcut
+% for the 1st one. It's because you have to give the 1st explicity
+% to be able to give the 2nd explicity as well.
+%
+% \begin{macrocode}
+\newcommandx\defdingname[5][1=*,2=local,5=\Y@GSymColor]{%
+ \Y@GINFO{You define ``#4'' with symbols family ``#1'' and color
+ ``#5''}%
+% \end{macrocode}
+% First we treat the default, and commonest (?), case for 1st argument
+% \begin{macrocode}
+ \ifthenelse{\equal{#1}{*}}
+% \end{macrocode}
+% in which case we do the same for the 2nd argument
+% \begin{macrocode}
+ {\ifthenelse{\equal{#2}{local}}
+% \end{macrocode}
+% and then we look at the last, about color.
+% \begin{macrocode}
+ {\ifthenelse{\equal{#5}{*}}
+ {\expandafter\edef\csname Y@G@@ #4\endcsname
+ {\yagding[\Y@G@SymFamChoice]{#3}[\noexpand\Y@GSymColor]}}
+ {\expandafter\edef\csname Y@G@@ #4\endcsname
+ {\yagding[\Y@G@SymFamChoice]{#3}[#5]}}}%
+% \end{macrocode}
+% Here the ding name will be globally defined.
+% \begin{macrocode}
+ {\ifthenelse{\equal{#2}{global}}
+ {\ifthenelse{\equal{#5}{*}}
+ {\expandafter\xdef\csname Y@G@@ #4\endcsname
+ {\yagding[\Y@G@SymFamChoice]{#3}[\noexpand\Y@GSymColor]}}
+ {\expandafter\xdef\csname Y@G@@ #4\endcsname
+ {\yagding[\Y@G@SymFamChoice]{#3}[#5]}}}%
+% \end{macrocode}
+% And we come here in case the 2nd argument is neither |local| nor
+% |global|.
+% \begin{macrocode}
+ {\Y@GWARNING{Value #2 not recognised} {.\MessageBreak The possible
+ values are ``local'' (default) and ``global''.\MessageBreak I
+ will assume you wanted ``local''} {The possible values are
+ ``local'' (default) and ``global''}}}}%
+% \end{macrocode}
+% We use the same pattern of nested \cs{ifthenelse} when the 1st
+% argument is explicitly provided.
+% \begin{macrocode}
+ {\ifthenelse{\equal{#2}{local}}
+ {\ifthenelse{\equal{#5}{*}}
+ {\expandafter\edef\csname Y@G@@ #4\endcsname
+ {\yagding[#1]{#3}[\noexpand\Y@GSymColor]}}
+ {\expandafter\edef\csname Y@G@@ #4\endcsname
+ {\yagding[#1]{#3}[#5]}}}%
+ {\ifthenelse{\equal{#2}{global}}
+ {\ifthenelse{\equal{#5}{*}}
+ {\expandafter\xdef\csname Y@G@@ #4\endcsname
+ {\yagding[#1]{#3}[\noexpand\Y@GSymColor]}}
+ {\expandafter\xdef\csname Y@G@@ #4\endcsname
+ {\yagding[#1]{#3}[#5]}}}%
+ {\Y@GWARNING{Value #2 not recognised} {.\MessageBreak The possible
+ values are ``local'' (default) and ``global''.\MessageBreak I
+ will assume you wanted ``local''} {The possible values are
+ ``local'' (default) and ``global''}}}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\yagding+}
+% First appearance of \cs{WithSuffix} from \Pkg{suffix}. The default
+% font encoding is still |U| but it can be given explicitly, enabling
+% the user to pick something in a font with different encoding. Here
+% once again, \texttt{*} has a special meaning for 3rd and 4th
+% arguments.
+% \begin{macrocode}
+\WithSuffix\newcommandx\yagding+[6][1=U,6=\Y@GSymColor]{{%
+ \fontencoding{#1}\fontfamily{#2}%
+ \ifthenelse{\equal{#3}{*}}{}{\fontseries{#3}}%
+ \ifthenelse{\equal{#4}{*}}{}{\fontshape{#4}}%
+ \selectfont\Y@G@Couleur{#6}\char#5}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\WithSuffix\newcommand\yagding*[1]{%
+ \ifthenelse{\isnamedefined{Y@G@@ #1}}
+ {\csname Y@G@@ #1\endcsname}
+ {[\string? #1 \string?]%
+ \Y@GWARNING{The name #1 is not defined}
+ {.\MessageBreak
+ Or you forgot to define it\MessageBreak
+ or you defined it inside an alien group.\MessageBreak
+ In any case you used it}{}}}
+% \end{macrocode}
+%
+% \begin{macro}{\defdingname+}
+% And now the ``grown-up'' version of \cs{defdingname} which mixes the
+% syntax of both \cs{defdingname} and \cs{yagding+}.
+% \begin{macrocode}
+\WithSuffix\newcommandx\defdingname+[8] [1=U,2=local,8=\Y@GSymColor]{%
+ \ifthenelse{\equal{#2}{local}}%
+ {\ifthenelse{\equal{#8}{*}}%
+ {\expandafter\edef\csname Y@G@@ #7\endcsname
+ {\yagding+[#1]{#3}{#4}{#5}{#6}[\noexpand\Y@GSymColor]}}%
+ {\expandafter\edef\csname Y@G@@ #7\endcsname
+ {\yagding+[#1]{#3}{#4}{#5}{#6}[#8]}}}%
+ {\ifthenelse{\equal{#2}{global}}%
+ {\ifthenelse{\equal{#8}{*}}%
+ {\expandafter\xdef\csname Y@G@@ #7\endcsname
+ {\yagding+[#1]{#3}{#4}{#5}{#6}[\noexpand\Y@GSymColor]}}%
+ {\expandafter\xdef\csname Y@G@@ #7\endcsname
+ {\yagding+[#1]{#3}{#4}{#5}{#6}[#8]}}}%
+ {\Y@GWARNING{Value #2 not recognised} {.\MessageBreak The possible
+ values are ``local'' (default) and ``global''.\MessageBreak I
+ will assume you wanted ``local''} {The possible values are
+ ``local'' (default) and ``global''}}}}
+% \end{macrocode}
+% \end{macro}
+%
+% The \cs{Y@Gfill} macro does the internal work when one of the
+% \cs{yagfill(*/+)} is called. There is generally no error control for
+% the arguments are passed by keys.
+%
+% It is heavily indebted to the code of the \cs{Pifill} of
+% \Pkg{pifont}.
+% \begin{macrocode}
+\newcommand{\Y@Gfill}[7]%
+{{\leavevmode
+ \dimendef\Y@Glongi=255\relax
+ \dimendef\Y@GBoxActualWidth=254\relax
+ \ifthenelse{\equal{#2}{l}}{\let\Leaders=\leaders}{}%
+ \ifthenelse{\equal{#2}{x}}{\let\Leaders=\xleaders}{}%
+ \ifthenelse{\equal{#2}{c}}{\let\Leaders=\cleaders}{}%
+ \ifthenelse{\equal{#3}{a}}
+ {\def\LaBoite{\hbox{\makebox{\hspace{#6}#1\hspace{#7}}}}}
+ {%
+% \end{macrocode}
+% Now we can check the required length against the actual length of
+% the material to be typeset.
+% \begin{macrocode}
+ \settowidth{\Y@Glongi}{#1}%
+ \ifdim#5>\Y@Glongi%
+ \setlength{\Y@GBoxActualWidth}{#5}%
+ \else
+ \setlength{\Y@GBoxActualWidth}{\Y@Glongi}%
+ \Y@GINFO{The choosen value for ``boxwidth'' is too short,\MessageBreak
+ I will use the natural width of the symbol: \the\Y@GBoxActualWidth}\fi
+ \ifthenelse{\equal{#3}{n}}
+ {\ifthenelse{\(#4<0\)\or\(#4>1000\)}
+ {\Y@GWARNING{I don't understand what you want}
+ {.\MessageBreak I assume the default}
+ {You should read the documentation [[SECyagfillboxwidth]].}%
+ \def\LaBoite{\hbox{\makebox[\Y@GBoxActualWidth][c]{#1}}}}%
+ {\setlength{\Y@Glongi}{\Y@GBoxActualWidth-\Y@Glongi}%
+ \setlength{\Y@Glongi}{\Y@Glongi/1000*#4}%
+ \def\LaBoite{\hbox{\makebox%
+ [\Y@GBoxActualWidth][l]{\hspace*{\Y@Glongi}#1\hfill}}}}}%
+ {\def\LaBoite{\hbox{\makebox[\Y@GBoxActualWidth][#3]{#1}}}}}%
+ \Leaders\LaBoite\hfill\kern\z@}}
+% \end{macrocode}
+%
+% We then define the keys governing the behaviour of
+% \cs{yagfill(*/+)}.
+% \begin{macrocode}
+\define@choicekey*+[Y@G]{yagusylo.sty}{leadtype}[\Y@Gyagfillleadtype\nr]%
+ {l,c,x}[l]%
+ {\Y@GINFO{Key ``leadtype'' is ``\Y@Gyagfillleadtype''}}%
+ {\PackageError{yagusylo}%
+ {Possible choices for key ``leadtype'': l (default), c or x}
+ {I don't know the type you required.\MessageBreak
+ Read the doc, please}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\define@choicekey*+[Y@G]{yagusylo.sty}{symplace}[\Y@Gyagfillsymplace\nr]%
+ {c,r,l,a,n}[c]%
+ {\Y@GINFO{Key ``symplace'' is ``\Y@Gyagfillsymplace''}}%
+ {\PackageError{yagusylo}%
+ {Possible choices for key ``symplace'': c (default), l, r, a or n}
+ {I don't know the place you required.\MessageBreak
+ Read the doc, please}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\define@key[Y@G]{yagusylo.sty}{sympos}[0]{%
+ \ifthenelse{\(#1<0\)\or\(#1>1000\)}
+ {\PackageError{yagusylo}
+ {Your choice ``#1'' for key ``sympos'' is out of bound}
+ {You should chose a interger between 0 and 1000.\MessageBreak
+ You should read the documentation}}
+ {\Y@GINFO{Keys ``sympos'' is ``#1''}%
+ \def\Y@Gyagfillsympos{#1}}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\define@key[Y@G]{yagusylo.sty}{boxwidth}[0.2in]{%
+ \ifthenelse{\dimtest{#1}<{0pt} \or \dimtest{#1}={0pt}}
+ {\PackageError{yagusylo}
+ {Your choice ``#1'' for key ``boxwidth'' is out of bound}
+ {You should chose a positive length.\MessageBreak
+ You should read the documentation}}
+ {\Y@GINFO
+ {You've asked for ``#1'' as box width.\MessageBreak
+ In any case the box will be at least\MessageBreak
+ as large as the symbol itself}}%
+ \def\Y@Gyagfillboxwidth{#1}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\define@key[Y@G]{yagusylo.sty}{before}[0pt]{%
+ \ifthenelse{\dimtest{#1}<{0pt}}
+ {\PackageError{yagusylo}
+ {Your choice ``#1'' for key ``before'' is out of bound}
+ {You should chose a non-negative length.\MessageBreak
+ You should read the documentation}}
+ {\Y@GINFO{Key ``before'' is ``#1''}}%
+ \def\Y@Gyagfillbefore{#1}}
+% \end{macrocode}
+%
+% The key \texttt{after} has a special behaviour. If it has the
+% default value, the length \cs{Y@Gyagfillafter} is made equal to the
+% length \cs{Y@Gyagfillbefore}, else it is checked and an error is
+% issued if it is negative.
+% \begin{macrocode}
+\define@key[Y@G]{yagusylo.sty}{after}[!Y@G!]{%
+ \ifthenelse{\equal{#1}{!Y@G!}}%
+ {\def\Y@Gyagfillafter{\Y@Gyagfillbefore}}%
+ {\ifthenelse{\dimtest{#1}<{0pt}}
+ {\PackageError{yagusylo}
+ {Your choice ``#1'' for key ``after'' is out of bound}
+ {You should chose a non-negative length.\MessageBreak
+ You should read the documentation}}
+ {\Y@GINFO{Key ``after'' is ``#1''}}%
+ \def\Y@Gyagfillafter{#1}}}
+% \end{macrocode}
+%
+% And now we set the keys just defined.
+% \begin{macrocode}
+\setkeys[Y@G]{yagusylo.sty}{leadtype,symplace,sympos,boxwidth,before,after}
+% \end{macrocode}
+%
+% \begin{macro}{\yagfill}
+% Here comes the first user macro to fill with dings. If the optional
+% argument is given it must be a list of key-value pairs.
+% \begin{macrocode}
+\newcommand\yagfill[2][!Y@G!]{%
+\begingroup
+\ifthenelse{\equal{#1}{!Y@G!}}{}%
+ {\setkeys[Y@G]{yagusylo.sty}{#1}}%
+ \Y@Gfill{\yagding{#2}}%
+ {\Y@Gyagfillleadtype}{\Y@Gyagfillsymplace}%
+ {\Y@Gyagfillsympos}{\Y@Gyagfillboxwidth}%
+ {\Y@Gyagfillbefore}{\Y@Gyagfillafter}%
+\endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% And then its friends,
+% \begin{macro}{\yagfill*}
+% first the starred version,
+% \begin{macrocode}
+\WithSuffix\newcommand\yagfill*[2][!Y@G!]{%
+\begingroup
+\ifthenelse{\equal{#1}{!Y@G!}}%
+ {}%
+ {\setkeys[Y@G]{yagusylo.sty}{#1}}%
+\Y@Gfill{\yagding*{#2}}%
+ {\Y@Gyagfillleadtype}{\Y@Gyagfillsymplace}%
+ {\Y@Gyagfillsympos}{\Y@Gyagfillboxwidth}%
+ {\Y@Gyagfillbefore}{\Y@Gyagfillafter}%
+\endgroup}
+% \end{macrocode}
+% \begin{macro}{\yagfill+}
+% then the plussed version.
+% \end{macro}
+% \begin{macrocode}
+\WithSuffix\newcommand\yagfill+[2][!Y@G!]{%
+\begingroup
+\ifthenelse{\equal{#1}{!Y@G!}}{}%
+ {\setkeys[Y@G]{yagusylo.sty}{#1}}%
+\Y@Gfill{#2}%
+ {\Y@Gyagfillleadtype}{\Y@Gyagfillsymplace}%
+ {\Y@Gyagfillsympos}{\Y@Gyagfillboxwidth}%
+ {\Y@Gyagfillbefore}{\Y@Gyagfillafter}%
+\endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% Some lengths and some keys
+% \begin{macrocode}
+\newlength{\Y@Glinehead}
+\newlength{\Y@Glinetail}
+\define@key[Y@G]{yagusylo.sty}{head}[0.5in]{%
+ \setlength{\Y@Glinehead}{#1}}
+\define@key[Y@G]{yagusylo.sty}{tail}[0.5in]{%
+ \setlength{\Y@Glinetail}{#1}}
+\setkeys[Y@G]{yagusylo.sty}{head,tail}
+% \end{macrocode}
+% which can be set up with the next macro
+% \begin{macrocode}
+\newcommandx\setyagline[2][2=!Y@G!]{%
+ \ifthenelse{\equal{#2}{!Y@G!}}%
+ {\setkeys[Y@G]{yagusylo.sty}{head=#1,tail=#1}}%
+ {\setkeys[Y@G]{yagusylo.sty}{head=#1,tail=#2}}}
+% \end{macrocode}
+% \begin{macro}{\yagline}
+% and are used by
+% \begin{macrocode}
+\newcommand{\yagline}[2][!Y@G!]%
+{\begingroup
+ \ifthenelse{\equal{#1}{!Y@G!}}{}%
+ {\setkeys[Y@G]{yagusylo.sty}{#1}}%
+ \par\noindent\hspace{\Y@Glinehead}%
+ \Y@Gfill{\yagding[\Y@G@SymFamChoice]{#2}}%
+ {\Y@Gyagfillleadtype}{\Y@Gyagfillsymplace}%
+ {\Y@Gyagfillsympos}{\Y@Gyagfillboxwidth}%
+ {\Y@Gyagfillbefore}{\Y@Gyagfillafter}%
+ \hspace{\Y@Glinetail}\kern\z@\par
+\endgroup}
+% \end{macrocode}
+% and his friends
+% \begin{macrocode}
+\WithSuffix\newcommand\yagline*[2][!Y@G!]%
+{\begingroup
+ \ifthenelse{\equal{#1}{!Y@G!}}{}%
+ {\setkeys[Y@G]{yagusylo.sty}{#1}}%
+ \par\noindent\hspace{\Y@Glinehead}%
+ \Y@Gfill{\yagding*{#2}}%
+ {\Y@Gyagfillleadtype}{\Y@Gyagfillsymplace}%
+ {\Y@Gyagfillsympos}{\Y@Gyagfillboxwidth}%
+ {\Y@Gyagfillbefore}{\Y@Gyagfillafter}%
+ \hspace{\Y@Glinetail}\kern\z@\par
+\endgroup}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\WithSuffix\newcommand\yagline+[2][!Y@G!]%
+{\begingroup
+ \ifthenelse{\equal{#1}{!Y@G!}}{}%
+ {\setkeys[Y@G]{yagusylo.sty}{#1}}%
+ \par\noindent\hspace{\Y@Glinehead}%
+ \Y@Gfill{#2}%
+ {\Y@Gyagfillleadtype}{\Y@Gyagfillsymplace}%
+ {\Y@Gyagfillsympos}{\Y@Gyagfillboxwidth}%
+ {\Y@Gyagfillbefore}{\Y@Gyagfillafter}%
+ \hspace{\Y@Glinetail}\kern\z@\par
+\endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% We need a macro to check the number of nested levels we are at in
+% the list-type environments. The six arguments are: ItemLevel,
+% YagitemizeMaxDepth, ItemMark, setyagitemize, yagitemize, the number
+% of the section in the documentation of this package.
+%
+% The warning or error \TO depending of the key \texttt{onerror}\TF is
+% issued once when the level reached has number YagitemizeMaxDepth.
+% \begin{macrocode}
+\newcommand{\Y@GLevelTest}[6]{%
+ \ifthenelse%
+ {\cnttest{\value{Y@G#1}}<{\value{Y@G#2}}}%
+ {\setcounter{Y@G#3}{\value{Y@G#1}}}%
+ {\setcounter{Y@G#3}{\value{Y@G#2}}%
+ \ifthenelse{\cnttest{\value{Y@G#1}}={\value{Y@G#2}}}
+ {\Y@GWARNING{Too deeply nested for your setup}
+ {.\MessageBreak
+ I keep on using the last symbol.\MessageBreak
+ You could have a look at your last\MessageBreak
+ ``#4''\MessageBreak First ``#5'' too many}%
+ {You could have a look at your last\MessageBreak
+ ``#4''\MessageBreak First ``#5'' too many.\MessageBreak
+ You should read the documentation [[#6]].}}{}}}
+% \end{macrocode}
+% We need some global counters.
+% \begin{macrocode}
+\newcounter{Y@GItemLevel}
+\newcounter{Y@GItemMark}
+\newcounter{Y@GYagitemizeMaxDepth}
+% \end{macrocode}
+%
+% \begin{environment}{yagitemize}
+% The first list-like environment is a yagusylo version of itemize,
+% hence its name.
+% \begin{macrocode}
+\newenvironmentx{yagitemize}[3][1=\Y@G@SymFamChoice,3=\Y@GSymColor]
+{\stepcounter{Y@GItemLevel}%
+ \ifthenelse{\equal{#2}{*}}
+% \end{macrocode}
+% The second argument is \texttt{*}.
+% \begin{macrocode}
+ {\Y@GLevelTest{ItemLevel}{YagitemizeMaxDepth}{ItemMark}
+ {setyagitemize}{yagitemize}{5.1.2}%
+ \edef\numero{\roman{Y@GItemMark}}%
+ \begin{list}{%
+ \yagding%
+ [\csname Y@G@symfam@niveau\numero\endcsname]%
+ {\csname Y@G@symfam@numero\numero\endcsname}%
+ [\csname Y@G@symfam@couleur\numero\endcsname]}{}}
+% \end{macrocode}
+% The second argument is explicitly given.
+% \begin{macrocode}
+ {\begin{list}{\yagding[#1]{#2}[#3]}{}}}%
+ {\end{list}\addtocounter{Y@GItemLevel}{-1}}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\setyagitemize}
+% A macro to set up the \texttt{yagitemize} environment. The
+% argument of \cs{setyagitemize} must be a list of triples separated
+% by periods. Each triple defines a pattern with values separated by
+% comas: firstly the symfam, secondly the number and thirdly the
+% color.It uses \cs{Y@Gsetyagitemize}
+% \begin{macrocode}
+\newcommand{\setyagitemize}[1]{%
+ \setcounter{Y@GYagitemizeMaxDepth}{0}%
+ \Y@Gsetyagitemize #1.Y@G@.\@nil}
+% \end{macrocode}
+% which is defined here with the help of \cs{Y@Gsetyagitemizeaux}.
+% \begin{macrocode}
+\def\Y@Gsetyagitemizeaux #1\fi{%
+ \fi \Y@Gsetyagitemize #1}%
+\def\Y@Gsetyagitemize #1.#2{%
+ \def\Y@Gfairemotif ##1,##2,##3\@Y@Gnil{%
+ \edef\Y@Gpremier{##1}\edef\Y@Gdeuxieme{##2}\edef\Y@Gtroisieme{##3}%
+ }
+ \ifx#2\@nil\relax
+ \else
+ \Y@Gfairemotif#1\@Y@Gnil
+ \stepcounter{Y@GYagitemizeMaxDepth}%
+ \edef\numero{\roman{Y@GYagitemizeMaxDepth}}%
+ \expandafter\edef\csname Y@G@symfam@niveau\numero\endcsname{\Y@Gpremier}
+ \expandafter\edef\csname Y@G@symfam@numero\numero\endcsname{\Y@Gdeuxieme}
+ \expandafter\edef\csname Y@G@symfam@couleur\numero\endcsname{\Y@Gtroisieme}
+ \Y@Gsetyagitemizeaux #2\fi}
+% \end{macrocode}
+% At the end, the counter \texttt{Y@GYagitemizeMaxDepth} has value the
+% number of levels defined which is also the deepest level of nesting
+% available before a warning \TO if \texttt{onerror} is
+% \texttt{nice}\TF or an error.
+% \end{macro}
+%
+% \begin{macrocode}
+\newcounter{Y@GYagitemizeStarMaxDepth}
+\WithSuffix\newcommand\setyagitemize*[1]{%
+ \setcounter{Y@GYagitemizeStarMaxDepth}{0}%
+ \Y@Gsetyagitemizestar #1.Y@G@.\@nil}
+\def\Y@Gsetyagitemizestaraux #1\fi{%
+ \fi \Y@Gsetyagitemizestar #1}%
+\def\Y@Gsetyagitemizestar #1.#2{%
+ \ifx#2\@nil%
+ \relax
+ \else
+ \def\motif{#1}%
+ \stepcounter{Y@GYagitemizeStarMaxDepth}%
+ \edef\numero{\roman{Y@GYagitemizeStarMaxDepth}}%
+ \expandafter\edef%
+ \csname Y@Gsymbol@listdepth\numero\endcsname{%
+ \yagding*{\motif}}%
+ \Y@Gsetyagitemizestaraux #2\fi}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newcounter{Y@GItemStarLevel}
+\newenvironment{yagitemize*}[1][!Y@G!]%
+{\stepcounter{Y@GItemStarLevel}
+ \ifthenelse{\equal{#1}{!Y@G!}}
+ {\Y@GLevelTest{ItemStarLevel}{YagitemizeStarMaxDepth}{ItemMark}
+ {setyagitemize*}{yagitemize*}{5.2.2}%
+ \edef\Y@GActualSymbol{\csname
+ Y@Gsymbol@listdepth\roman{Y@GItemMark}\endcsname}}
+ {\edef\Y@GActualSymbol{\yagding*{#1}}}%
+ \begin{list}{\Y@GActualSymbol}{}}
+{\end{list}\addtocounter{Y@GItemStarLevel}{-1}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newcommand\yagnumber[3]{\protect\Y@Gyagding{#1}{\arabic{#2}}{#3}}
+% \end{macrocode}
+% The boolean is used to control the redefinition of \cs{item}.
+% \begin{macrocode}
+\newboolean{Y@GitemRedefined}
+% \end{macrocode}
+%
+% Here are the keys of the enum bunch.
+% \begin{macrocode}
+\define@choicekey*+[Y@G]{y@genum}{symfam}[\Y@G@EnumSymFamChoice\nr]%
+ {marvosym,fourier,wasysym,bbding,dingbat,ark,ifsym,ifsymgeo,%
+ ifsymgeonarrow,ifsymgeowide,ifsymclock,ifsymweather,pifont}%
+ [pifont]%
+ {\Y@GINFO{You choose \Y@G@EnumSymFamChoice}}%
+ {\PackageError{yagusylo}%
+ {The symbols family ``\Y@G@EnumSymFamChoice'' is not yet known.}
+ {I don't know the family you required.\MessageBreak
+ If it's not a typo you may consider to contact me
+ (TdS)\MessageBreak to obtain support for it.}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\define@key[Y@G]{y@genum}{symcolor}[blue]{\def\Y@GEnumSymColor{#1}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\define@key[Y@G]{y@genum}{firstitemnum}['254]{%
+ \ifthenelse{\(#1<0\)\or \(#1>255\)}
+ {\PackageError{yagusylo}
+ {``#1'' is out of bound or not a number}
+ {``firstitemnum'' requires a natural number\MessageBreak
+ between 0 and 255}}%
+ {\def\Y@GEnumFirstItemNum{#1}%
+ \Y@GINFO{Key ``firstitemnum'' is
+ ``\number\Y@GEnumFirstItemNum''}}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\define@key[Y@G]{y@genum}{enumlength}[10]{%
+ \ifthenelse{\(#1<1\)\or \(#1>255\)}
+ {\PackageError{yagusylo}
+ {``#1'' is out of bound or not a number}
+ {``enumlength'' requires a natural number\MessageBreak
+ between 1 and 255}}%
+ {\def\Y@GEnumLength{#1}%
+ \Y@GINFO{Key ``enumlength'' is ``\number\Y@GEnumLength''}}}
+% \end{macrocode}
+%
+% \begin{macro}{\newenumpattern}
+% The macro to create patterns for the \texttt{yagenumerate}
+% environment. The macro where the pattern \texttt{foo} is kept is
+% \cs{Y@GEnumPattern@foo}.
+% \begin{macrocode}
+\newcommand*\newenumpattern[2]{%
+ \ifthenelse{\isnamedefined{Y@GEnumPattern@#1}}
+ {\PackageError{yagusylo}{Pattern ``#1'' already defined}{%
+ You should choose another name\MessageBreak
+ this version does NOT provide a ``renewenumpattern'' macro}}
+ {{\renewcommand*{\Y@GINFO}[1]{}
+ \expandafter\gdef\csname Y@GEnumPattern@#1\endcsname{%
+ \setkeys[Y@G]{y@genum}{#2}}}
+ \Y@GINFO[1]{Pattern ``#1'' defined with\MessageBreak
+ symfam=\Y@G@EnumSymFamChoice\MessageBreak
+ symcolor=\Y@GEnumSymColor\MessageBreak
+ firstitetemnum=\number\Y@GEnumFirstItemNum\MessageBreak
+ enumlength=\Y@GEnumLength\MessageBreak}}}
+% \end{macrocode}
+% \end{macro}
+%
+% Here we define the 4~default patterns.
+% \begin{macrocode}
+\newenumpattern{piwcr}{symfam=pifont,firstitemnum='254,enumlength=10}
+\newenumpattern{piwcs}{symfam=pifont,firstitemnum='300,enumlength=10}
+\newenumpattern{pibcr}{symfam=pifont,firstitemnum='266,enumlength=10}
+\newenumpattern{pibcs}{symfam=pifont,firstitemnum='312,enumlength=10}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newcommand{\Y@GSetYagEnumerate}[1]{%
+ \ifthenelse{\isnamedefined{Y@GEnumPattern@#1}}%
+ {\csname Y@GEnumPattern@#1\endcsname}%
+ {\Y@GWARNING{The pattern ``#1'' is not know}
+ {.\MessageBreak I select ``piwcr'' instead}
+ {You should read the documentation [[SECyagpattern]].}%
+ \csname Y@GEnumPattern@piwcr\endcsname}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\define@key[Y@G]{y@genum}{enumpattern}[piwcr]{%
+ \edef\Y@GEnumPatternChoice{#1}%
+ \Y@GSetYagEnumerate{#1}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\setkeys[Y@G]{y@genum}{symfam,symcolor,firstitemnum,enumlength}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newcommand\setyagenumeratekeys[1]{%
+ \ifthenelse{\equal{#1}{*}}%
+ {\setkeys[Y@G]{y@genum}
+ {symfam,symcolor,firstitemnum,enumlength,enumpattern}}%
+ {\setkeys[Y@G]{y@genum}{#1}}}
+% \end{macrocode}
+%
+% \begin{environment}{yagenumerate}
+% To create the following macros, I have resorted to allready
+% written code from the \LaTeXe\ kernel and the \texttt{pifont}
+% package. I am also indebted to Arnaud \textsc{Schmittbuhl} on
+% \fctt for invaluable pieces of advice.
+% \begin{macrocode}
+\newcounter{Y@Gmaxitem}
+\newcounter{Y@Gcitem}
+\newenvironment{yagenumerate}[1][!Y@G!]
+{%
+ \ifthenelse{\equal{#1}{!Y@G!}}
+ {\setkeys[Y@G]{y@genum}{symfam,symcolor,firstitemnum,enumlength}}
+ {\ifthenelse{\equal{#1}{*}}
+ {\setkeys[Y@G]{y@genum}{enumpattern=\Y@GEnumPatternChoice}}
+ {\setkeys[Y@G]{y@genum}{#1}}}%
+ \ifnum\@enumdepth>\thr@@\@toodeep\else
+ \advance\@enumdepth \@ne
+ \def\STOP{\PackageError{yagusylo}
+ {at least one item too many}
+ {you can't use more than ``\number\Y@GEnumLength'' items}}%
+ \setcounter{Y@Gmaxitem}{\Y@GEnumFirstItemNum}
+ \addtocounter{Y@Gmaxitem}{\Y@GEnumLength}
+ \setcounter{Y@Gcitem}{\Y@GEnumFirstItemNum}
+ \ifthenelse{\boolean{Y@GitemRedefined}}{}
+ {\let\Y@Golditem\item
+ \def\item{\stepcounter{Y@Gcitem}
+ \ifnum\theY@Gcitem>\theY@Gmaxitem\expandafter\STOP
+ \else\expandafter\Y@Golditem\fi}
+ \setboolean{Y@GitemRedefined}{true}}
+ \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
+ \expandafter\def\csname p@enum\romannumeral\the\@enumdepth\endcsname{}%
+ \expandafter\def\csname labelenum\romannumeral\the\@enumdepth\endcsname{%
+ \csname theenum\romannumeral\the\@enumdepth\endcsname}%
+ \expandafter\def\csname theenum\romannumeral\the\@enumdepth\endcsname{%
+ \yagnumber{\Y@G@EnumSymFamChoice}%
+ {enum\romannumeral\the\@enumdepth}{\Y@GEnumSymColor}}%
+ \list{\csname label\@enumctr\endcsname}{%
+ \@nmbrlisttrue
+ \def\@listctr{\@enumctr}%
+ \setcounter{\@enumctr}{\Y@GEnumFirstItemNum}%
+ \addtocounter{\@enumctr}{-1}%
+ \def\makelabel##1{\hss\llap{##1}}}
+ \fi}{\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% The following environment is a wrapper which enables to go back to a
+% ``classical'' enumerate. It redefines \cs{item}
+% \begin{macrocode}
+\newenvironment{notyagenum}
+ {\let\item\Y@Golditem
+% \end{macrocode}
+% and takes care of the boolean \texttt{Y@GitemRedefined} just in case
+% a \texttt{yagenumerate} would be nested in the \texttt{enumerate}.
+% \begin{macrocode}
+ \setboolean{Y@GitemRedefined}{false}}{}
+% \end{macrocode}
+%
+% If the config-file is asked for, we check that it exists before
+% loading it.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \ifY@G@configfile
+ \InputIfFileExists{yagusylo.cfg}%
+ {\PackageInfo{yagusylo}{Configuration file found and read\@gobble}}%
+ {\PackageErrorNoLine{yagusylo}
+ {No configuration file found}
+ {Or yagusylo.cfg does not exist\MessageBreak
+ or it is in some place unknown of TeX.}}%
+ \fi}
+% \end{macrocode}
+% \iffalse
+%</package>
+% \fi
+% \Finale \PrintChanges\PrintIndex
+% \iffalse
+%<*doc-sty>
+\ProvidesPackage{yagusylo-tools}
+\RequirePackage[a4paper,%
+ inner=5cm,%
+ outer=2cm,%
+ tmargin=2.5cm,%
+ bmargin=3cm,%
+ marginparwidth=5cm]{geometry}
+\RequirePackage{fancyvrb}
+\RequirePackage{xargs}
+\AtBeginDocument{\DefineShortVerb{\|}}
+\def\Module{yagusylo}
+\newcommand\BOP{\discretionary{}{}{}}
+\newcommand\Option[1]{\textsc{#1}}
+\newcommand\Pkg[1]{\textsf{#1}}
+\newcommand{\TO}{\textemdash\ \ignorespaces}
+\newcommand{\TF}{\unskip\ \textemdash\xspace}
+\newcommand{\VSP}[1][1]{\vspace{#1\baselineskip}}
+\newcommand{\CAD}{%
+ \iflanguage{frenchb}{c.-à-d.\xspace}{}%
+ \iflanguage{english}{i.~e.\ }{}}
+\newcommand{\PX}{%
+ \iflanguage{frenchb}{p.~ex.\xspace}{}%
+ \iflanguage{english}{e.~g.\ }{}}
+\newcommand{\CHARNUM}{char-num}
+\newcommand{\COLOUR}{colour}
+\newcommand{\FAMILY}{family}
+\newcommand{\SERIES}{series}
+\newcommand{\SHAPE}{shape}
+\newcommand{\ENC}{encoding}
+\newcommand{\LISTKV}{list of key-value pairs}
+\newcommand{\MATERIAL}{material}
+\newcommand{\DINGNAME}{ding-name}
+\newcommand{\DINGNAMES}{ding-names}
+\newcommand{\NUMBER}{number}
+\newcommand{\LENGTH}{length}
+\newcommand{\PLENGTH}{P-length}
+\newcommand{\GLIST}{G-list}
+\newcommand{\ELIST}{E-list}
+\newcommand\STAR[1][***]{%
+ {\upshape\texttt{*}}%
+ \ifthenelse{\equal{#1}{***}}{}{\index{*@\texttt{*}}}%
+ \xspace}
+\newcommand\fctt{\url{fr.comp.text.tex}\xspace}
+\newcommand\Sourire{\texttt{\string;-)}}
+%%% piqué dans doc.sty
+\DeclareRobustCommand\meta[1]{%
+ \ensuremath\langle
+ \ifmmode \expandafter \nfss@text \fi
+ {%
+ \meta@font@select
+ \edef\meta@hyphen@restore
+ {\hyphenchar\the\font\the\hyphenchar\font}%
+ \hyphenchar\font\m@ne
+ \language\l@nohyphenation
+ #1\/%
+ \meta@hyphen@restore
+ }\ensuremath\rangle
+}
+\def\meta@font@select{\itshape}
+%%% piqué dans ltxdoc.cls
+\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
+\providecommand\marg[1]{%
+ {\ttfamily\char`\{}\meta{#1}{\ttfamily\char`\}}}
+\providecommand\oarg[1]{%
+ {\ttfamily[}\meta{#1}{\ttfamily]}}
+\providecommand\parg[1]{%
+ {\ttfamily(}\meta{#1}{\ttfamily)}}
+\newcommand\Yaglabel[2][c]{%
+ \ifthenelse{\equal{#1}{c}}{\phantomsection\label{clef#2}}{}%
+ \ifthenelse{\equal{#1}{m}}{\phantomsection\label{macro#2}}{}%
+ \ifthenelse{\equal{#1}{e}}{\phantomsection\label{envir#2}}{}}
+\newcommand\Yagref[2][c]{%
+ \ifthenelse{\equal{#1}{c}}{\ref{clef#2}}{}%
+ \ifthenelse{\equal{#1}{m}}{\ref{macro#2}}{}%
+ \ifthenelse{\equal{#1}{e}}{\ref{envir#2}}{}}
+\newcommand\Yagpageref[2][c]{%
+ \ifthenelse{\equal{#1}{c}}{\pageref{clef#2}}{}%
+ \ifthenelse{\equal{#1}{m}}{\pageref{macro#2}}{}%
+ \ifthenelse{\equal{#1}{e}}{\pageref{envir#2}}{}}
+%%% redéfinitions et définitions
+\newcommand\DescribeMacro[2][*]{%
+ \leavevmode\@bsphack
+ \ifthenelse{\equal{#1}{*}}{\Yaglabel[m]{#2}}{}%
+ \index{#2@\cs{#2}}%
+ \marginpar{\raggedleft\cs{#2}}\@esphack}
+\newcommand{\ENVIRNAME}{environnement}
+\newcommand\DescribeEnv[1]{\leavevmode\@bsphack
+ \Yaglabel[e]{#1}%
+ \marginpar{\raggedleft\texttt{#1}}%
+ \index{#1@\texttt{#1} (\protect\ENVIRNAME)}%
+ \index{environment@\protect\ENVIRNAME!#1@\texttt{#1}}%
+ \@esphack}
+\newcommand{\KEYNAME}{clef}
+\newcommand\DescribeOptionCle[1]{\leavevmode\@bsphack
+ \Yaglabel[c]{#1}%
+ \marginpar{\raggedleft
+ \OptionclePresent{#1}}%
+ \index{#1 (\textsc{\protect\KEYNAME})}%
+ \iflanguage{frenchb}{\index{cle@\textsc{clé}!#1@\texttt{#1}}}{}%
+ \iflanguage{english}{\index{cle@\textsc{key}!#1@\texttt{#1}}}{}%
+ \@esphack}
+\newcommand\DescribeOptionVal[2]{\leavevmode\@bsphack
+ \marginpar{\raggedleft
+ \OptionvalP{#1}}\index{#1 [#2]}\@esphack}
+\newcommand\IndexVal[2]{\index{#1 [#2]}}
+\newcommand\Page[2][*]{%
+ page~\ifthenelse{\equal{#1}{*}}{\pageref{#2}}{\Yagpageref[#1]{#2}}}
+\newcommand\Voir[2][*]{%
+ \iflanguage{frenchb}{cf. }{}%
+ \iflanguage{english}{see }{}%
+ \Page[#1]{#2}}
+\newcommand\OptionclePresent[1]{\texttt{\textbf{#1}}}
+\newcommand\Optioncle[1]{\OptionclePresent{#1}}
+\newcommand\OptionvalP[1]{\texttt{\textit{#1}}}
+\newcommand\Optionval[2]{\OptionvalP{#1}\IndexVal{#1}{#2}}
+\newenvironment{CodeEx}{\par\noindent\hspace{3em}\ignorespaces}{\par}
+\newenvironment{CodeEx*}{\par\noindent\hspace*{3em}\ignorespaces}{\par\noindent}
+\newcommand\SAUT[1][3em]{\\\hspace*{#1}\ignorespaces}
+\newenvironment{FrameBox}{\let\makebox=\framebox}{}
+\newcounter{NumExemple}
+\newcommandx{\Exemple}[5][1=avec,3=*,4=*,5=xmpl]{%
+ \refstepcounter{NumExemple}\par
+ \ifthenelse{\equal{#1}{avec}}{%
+ \VerbatimInput[label={\arabic{NumExemple} \rule[.4ex]{1em}{.75pt}
+ \ifthenelse{\equal{#2}{*}}{exemple}{#2}},
+ firstnumber=last]{#5.ltx}}{}%
+ \ifthenelse{\equal{#4}{*}}{\begin{quote}}{\par\begingroup}
+ \ifthenelse{\equal{#3}{*}}{}{\label{XMPL#3}}%
+ \input{#5.ltx}
+ \ifthenelse{\equal{#4}{*}}{\end{quote}}{\endgroup\par}\VSP}
+%%%%%%%%%%%%%%%%%%%%%%%%%% POUR LA VITRINE %%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcounter{DEB}\newcounter{FIN}\newcounter{FINAL}
+\newcommand*{\map}[2]{%
+ %% une macro par Josselin Noirel, adaptation Le TdS
+ %% #1 = one-argument control sequence
+ %% #2 = liste (éléments séparés par une virgule)
+ \let\my@tempa=#1%
+ \@for\my@tempc:=#2\do{%
+ \expandafter\my@tempa\expandafter{\my@tempc}}}
+\def\Tr@iter@ux#1.#2\@nil{%
+ \setcounter{DEB}{#1}%
+ \ifthenelse{\equal{#2}{}}{%
+ \setcounter{FIN}{#1}}{%
+ \setcounter{FIN}{#2}}}
+\newcommand\EEF[1]{%
+ \expandafter\Tr@iter@ux#1\@nil%
+%% ce que renvoit \map c'est une macro il faut donc développer pour
+%% permettre à \Tr@iter@ux de voir le point séparant les deux
+%% valeurs
+ \EFF{DEB}{FIN}}
+\newcommand\PresenterSymboleNum[1]{%
+ \makebox[\malong][l]{%
+ \makebox[2em][c]{%
+ \arabic{#1}}:~\yagding{\value{#1}}}}
+\newcommand\EFF[2]{\par
+ \setcounter{combien}{\value{#1}}%
+ \setcounter{FINAL}{\value{#2}}\stepcounter{FINAL}%
+ \whiledo{\value{combien}<\value{FINAL}}%
+ {\PresenterSymboleNum{combien}\hspace{1.5em}
+ \stepcounter{combien}}\par\VSP}
+\newcounter{combien}\setcounter{combien}{0}
+\newcommand\MontrerFonte[2]{%
+ \subsection{%
+ \iflanguage{frenchb}{Les symboles de la symfam }{}%
+ \iflanguage{english}{The Symbols of Symfam }{}%
+ \texttt{#1}}\index{symfam@\textsc{symfam}!#1@\texttt{#1}}
+ \setyagusylokeys{symfam=#1}%
+ \map{\EEF}{#2}\newpage}
+\newcommand\LaSection[1]{%
+ \section{%
+ \iflanguage{frenchb}{De l'extension }{}%
+ \iflanguage{english}{From the package }{}%
+ \Pkg{#1}}\index{package@\textsc{package}!#1@\Pkg{#1}}}
+\newcommand\SHOWCASE{%
+\begingroup
+\setyagusylokeys{symcolor=black}
+\setlength{\parindent}{0pt}
+\LaSection{pifont}
+\MontrerFonte{pifont}{33.126,161.254}
+
+\LaSection{ifsym}
+\MontrerFonte{ifsym}{0.12,14.,16.42,45.46,48.63,68.,72.,76.77,100.,108.109,124.}
+\MontrerFonte{ifsymgeo}{0.9,13.15,26.38,47.54,63.70,79.86,95.102,111.118}
+\MontrerFonte{ifsymgeonarrow}{0.9,13.15,26.38,47.54,63.70,79.86,95.102,111.118}
+\MontrerFonte{ifsymgeowide}{0.9,13.15,26.38,47.54,63.70,79.86,95.102,111.118}
+\MontrerFonte{ifsymweather}{0.11,16.36,48.58}
+\MontrerFonte{ifsymclock}{0.143,148.155}
+
+\LaSection{marvosym}
+\MontrerFonte{marvosym}{0.255}
+
+\LaSection{fourier}\label{fourier}
+\MontrerFonte{fourier}{65.66,69.,76.78,84.85,88.93,102.104,106.,109.111,116.117}
+
+\LaSection{wasysym}
+\MontrerFonte{wasysym}{0.76,80.82,85.127}
+
+\LaSection{bbding}
+\MontrerFonte{bbding}{0.123}
+
+\LaSection{dingbat}
+\MontrerFonte{dingbat}{66.68,73.,78.79,83.,90.,97.104}
+
+\subsection{%
+ \iflanguage{frenchb}{Symboles larges de }{}%
+ \iflanguage{english}{Large Symbols of}{}%
+ \texttt{dingbat}}
+
+69: \yagding{69}\hspace*{\stretch{1}}
+70: \yagding{70}\hspace*{\stretch{1}}
+
+71: \yagding{71}\hspace*{\stretch{1}}
+72: \yagding{72}\hspace*{\stretch{1}}
+
+74: \yagding{74}\hspace*{\stretch{1}}
+75: \yagding{75}\hspace*{\stretch{1}}
+
+76: \yagding{76}\hspace*{\stretch{1}}
+77: \yagding{77}\hspace*{\stretch{1}}
+
+\newpage
+\MontrerFonte{ark}{67.69,76.,80.,82.,85.,87.,100.,117.}
+\endgroup}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\fvset{frame=single,numbers=left,numbersep=5pt}
+\def\Module{yagusylo}
+\def\FileVersion{v1}
+\def\FileDate{2009/02/26}
+\def\DocDate{2009/02/26}
+\reversemarginpar
+%</doc-sty>
+%<*doc>
+\documentclass[a4paper]{article}
+\usepackage{fixltx2e}
+\usepackage{xspace,array}
+\usepackage[latin9]{inputenc}
+\usepackage[T2C,T1]{fontenc}
+%<fr>\usepackage[english,frenchb]{babel}
+%<en>\usepackage[frenchb,english]{babel}
+\usepackage[np, autolanguage]{numprint}
+\usepackage{yagusylo-tools}
+\usepackage[color=true,onerror=nice]{yagusylo}
+\usepackage{makeidx}
+\usepackage[colorlinks=true,
+ linkcolor=blue,
+ urlcolor=blue,
+ citecolor=blue]{hyperref}
+\makeindex
+%<*fr>
+\renewcommand{\CHARNUM}{num-car}
+\renewcommand{\COLOUR}{couleur}
+\renewcommand{\FAMILY}{famille}
+\renewcommand{\SERIES}{série}
+\renewcommand{\SHAPE}{forme}
+\renewcommand{\ENC}{codage}
+\renewcommand{\LISTKV}{liste de paires clé-valeur}
+\renewcommand{\MATERIAL}{matériel}
+\renewcommand{\DINGNAME}{nom-ding}
+\renewcommand{\DINGNAMES}{noms-dings}
+\renewcommand{\NUMBER}{nombre}
+\renewcommand{\LENGTH}{longueur}
+\renewcommand{\PLENGTH}{longueur pos.}
+\renewcommand{\GLIST}{G-liste}
+\renewcommand{\ELIST}{E-liste}
+%</fr>
+%<*en>
+\renewcommand{\KEYNAME}{key}
+\renewcommand{\ENVIRNAME}{environment}
+%</en>
+\begin{document}
+\defdingname[fourier][global]{116}{mainb}[blue]
+\defdingname[fourier][global]{116}{mainr}[red]
+\defdingname[fourier][global]{116}{mainv}[green]
+\defdingname[fourier][global]{116}{maing}[gray]
+\defdingname[fourier][global]{116}{mainn}[black]
+%<*fr>
+\title{Documentation française de l'extension
+ \Pkg{\Module}\thanks{%
+ Ce document correspond au fichier
+ \Pkg{\Module}~\FileVersion,
+ du \FileDate, édition du cinquantenaire.}}
+%</fr>
+%<*en>
+\title{The English documentation of the package
+ \Pkg{\Module}\thanks{This document corresponds to the file
+ \Pkg{\Module}~\FileVersion, dated \FileDate.}}
+%</en>
+\author{Le \TeX nicien de surface\\
+ \href{mailto:le.texnicien.de.surface@wanadoo.fr}%
+ {le.texnicien.de.surface@wanadoo.fr}}
+\date{\DocDate}
+
+\maketitle
+
+%<*fr>
+\begin{abstract}
+ Cette extension permet d'obtenir un symbole sans avoir à charger
+ l'extension qui le fournit habituellement. Cela permet d'éviter des
+ conflits de noms.
+
+ On peut la considérer comme une version étendue de \Pkg{pifont} en
+ technicolor.
+\end{abstract}
+
+\begin{otherlanguage}{english}
+ \begin{abstract} The documentation of \Pkg{yagusylo} is available
+ in English with the name \texttt{yagusylo-en} and
+ \texttt{yagusylo-en.pdf} should be available with this package.
+ \end{abstract}
+\end{otherlanguage}
+%</fr>
+%<*en>
+\begin{abstract}
+ This package enables you to obtain a symbol whithout loading the
+ package which usually provides it in order to avoid name clashes.
+
+ It could be considered as a extended version of \Pkg{pifont} gone
+ technicolor.
+\end{abstract}
+\begin{otherlanguage}{frenchb}
+ \begin{abstract} La documentation de \Pkg{yagusylo} est disponible
+ en français sous le nom de \texttt{yagusylo-fr} et
+ \texttt{yagusylo-fr.pdf} devrait être disponible avec extension.
+ \end{abstract}
+\end{otherlanguage}
+%</en>
+
+\tableofcontents
+\newpage{}
+%<*en|fr>
+\section{Introduction}
+\label{secIntro}
+%</en|fr>
+
+%<*en>
+I began to write this package when, for I wanted this symbol
+\yagding[marvosym]{84}[black] in front of my phone number in a
+document using the class \texttt{lettre}, I realised that both
+\Pkg{marvosym} and \texttt{lettre.cls} define a macro
+\cs{fax}. Because of this name clash I was pretty disappointed.
+%</en>
+%<*fr>
+J'ai commencé à écrire cette extension lorsque, voulant placer le
+symbole \yagding[marvosym]{84}[black] devant mon numéro de téléphone
+dans un document utilisant la classe \texttt{lettre}, je me suis rendu
+compte que \Pkg{marvosym} et \texttt{lettre.cls} définissaient tous
+deux une macro \cs{fax}. Du fait de ce conflit de noms, je fus très
+déçu.
+%</fr>
+
+%<*en>
+In fact, very often, we use just some symbols of all those provided
+by a package such as \texttt{marovsym}. So a lot of macros are
+defined and loaded for pretty nothing. \Pkg{yagusylo} limits the
+number of macros but cannot prevent \TeX\ to load all the necessary
+fonts, which is rather good.
+%</en>
+%<*fr>
+De fait, très souvent, nous n'utilisons que quelques symboles parmi
+tous ceux fournis par une extension comme \texttt{marvosym}. Aussi un
+grand nombre de macros sont définies et chargées pour pas grand'
+chose. \Pkg{yagusylo} limite le nombre de macros mais ne peut empêcher
+\TeX\ de charger toutes les fontes nécessaires, ce qui est plutôt bien.
+%</fr>
+
+%<*en>
+Actually, after some thinking, the shortest and quickest way out of
+the quagmire in which I was stuck was certainly not to write this
+package but for it was written I would have loathed to let it gather
+dust in some remote part of my hard disk and I uploaded to my site as
+a sort of pre-CTAN version.
+%</en>
+%<*fr>
+En fait, après réflexion, je n'ai certainement pas choisi la route la
+plus courte pour me sortir du bourbier où je m'étais enfoncé en me
+décidant à écrire cette extension. Cependant, comme elle était écrite,
+je n'aurais pas apprécié de la laisser prendre la poussière dans un
+coin reculé de mon disque dur et je l'ai chargé sur mon site comme une
+sorte de version pré-CTAN.
+%</fr>
+
+%<*en>
+There I rest for a while before uploading the then version \TO after a
+bit of beautification perhaps\TF on CTAN and I happen to reread a part
+of the LaTeX Companion 2nd edition and to stumble upon the
+\Pkg{pifont} package. And I was appaled for it seemed that my package
+did not qualify any more for a quick CTANification.
+%</en>
+%<*fr>
+Puis, je me reposai quelques temps avant de charger la version d'alors
+\TO après quelques toilettages\TF sur le CTAN et je me retrouvai à
+relire un passage du \emph{LaTeX Companion 2nd edition} et tombai sur
+le passage concernant l'extension \Pkg{pifont}. Et je fus attéré car
+il me semblait que mon extension n'était plus qualifiée pour une
+rapide CTANinification.
+%</fr>
+
+%<*en>
+I decided to add some new capabilities to \Pkg{yagusylo} and first of
+all some equivalent of the environments provided by \Pkg{pifont}. And
+now, after some work and not a few hints from the usual suspects of
+\fctt \TO Jean-Côme \textsc{Charpentier}, Arnaud \textsc{Schmittbuhl},
+Manuel \textsc{Pégourié-Gonnard}\TF I can without too much blushing
+upload the true first version of my tiny work.
+%</en>
+%<*fr>
+Je me décidai alors à ajouter quelques nouvelles capacités à
+\Pkg{yagusylo} et tout d'abord, quelques équivalents aux
+environnements fournis par \Pkg{pifont}. Aujourd'hui, après quelques
+travaux et un bon peu d'aide gracieusement fournie par les habitués de
+\fctt, à savoir Jean-Côme \textsc{Charpentier}, Arnaud
+\textsc{Schmittbuhl} et Manuel \textsc{Pégourié-Gonnard}, je peux sans
+trop rougir déposer la vraie première version de mon petit travail.
+%</fr>
+
+%<*en>
+Before going on hard facts about the usage, just a word about its
+name. \Pkg{yagusylo} is the acronym of \emph{Yet another grand
+ unified symbols loader}. This is kind of ironic for I think there
+are not so many packages entitled \emph{unified symbols loader} if
+any. I leave the reader decide if ``grand'' is the appropriate
+adjective \Sourire
+%</en>
+%<*fr>
+Avant de passer aux explications quant à son utilisation, je finirai
+par un petit mot au sujet de son nom. \Pkg{yagusylo} est l'acronyme de
+\emph{Yet another grand unified symbols loader} \TO Encore un
+grandiose chargeur unifié de symboles. On y trouvera certainement
+quelque ironie puisque je ne pense pas qu'il y ait beaucoup
+d'extension nommée \emph{unified symbols loader} \TO chargeur unifié
+de symboles. Je laisse au lecteur le soin de décider si l'adjectif \og
+grandiose\fg est vraiment approprié \Sourire
+%</fr>
+
+%<en>\section{Special names and general conventions}
+%<fr>\section{Noms spéciaux et conventions générales}
+
+%<*en>
+Hereafter a ``symbols family'' is a set of glyphs which is, in terms
+of NFSS, defined by the encoding U, a family, and possibly a series,
+and a shape. \Pkg{yagusylo} provides names for these symbols families
+which you could read in table~\ref{TABsymfams}, page~\pageref{TABsymfams}.
+%</en>
+%<*fr>
+Désormais, une \og famille de symboles\fg est un ensemble de glyphes
+qui est, dans les termes de NFSS, défini par un codage U, une famille
+et peut-être une série et une forme. \Pkg{yagusylo} fournit des noms
+pour ces familles de symboles que l'on peut lire dans la
+table~\ref{TABsymfams}, page~\pageref{TABsymfams}.
+%</fr>
+
+%<*en>
+It is often the name of the package which provides the symbols,
+e. g. \emph{fourier} or \emph{marvosym} but, for some packages, there
+are many families: with \Pkg{dingbat} there are \emph{dingbat} and
+\emph{ark}.
+%</en>
+%<*fr>
+Il s'agit souvent du nom de l'extension qui fournit les symboles,
+p.~ex. \emph{fourier} ou \emph{marvosym} mais, pour quelques
+extensions, il y a plus d'une famille: avec \Pkg{dingbat} on a
+\emph{dingbat} et \emph{ark}.
+%</fr>
+
+%<*en>
+So when you require the symbols family \texttt{marvosym}, it boils
+down to something as |\fontencoding{U}|\BOP|\fontfamily{mvs}|\BOP%
+|\fontseries{m}|\BOP|\fontshape{n}|\BOP|\select|\BOP|font| plus a tiny
+bit of code to put some color, if the option \Optioncle{color} is
+enabled, and the fact that it is done in a group to limit the font
+change.
+%</en>
+%<*fr>
+Ainsi lorsque l'on demande la famille de symboles \texttt{marvosym},
+cela revient à quelque chose comme
+|\fontencoding{U}|\BOP|\fontfamily{mvs}|\BOP%
+|\fontseries{m}|\BOP|\fontshape{n}|\BOP|\select|\BOP|font| plus un peu
+de code pour ajouter de la couleur, si l'option \Optioncle{color} est
+choisie, et le fait que tout est fait dans un groupe pour limiter
+l'effet du changement de fonte.
+%</fr>
+
+%<*en>
+For sake of laziness, ``symfam'' will be an abbreviation of ``symbols
+family''. I will sometimes refer to a symbol as a \emph{ding}.
+%</en>
+%<*fr>
+Par pure fainéantise, j'utiliserai \og symfam\fg comme abréviation de
+\og famille de symboles\fg. Je ferai parfois référence à un symbole
+sous le nom de \emph{ding}.
+%</fr>
+
+%<*en>
+This package uses \Pkg{xkeyval} to handle its options. So an option is
+in fact a key and its value. There are global options wich can be set
+in the preamble within the optional argument of \cs{usepackage} for
+instance
+%</en>
+%<*fr>
+Cette extension utilise \Pkg{xkeyval} pour manipuler ses
+options. Aussi une option est-elle en fait une clé et sa valeur. Il y
+a des options globales que l'on peut fixer dans le préambule dans
+l'argument optionnel de \cs{usepackage} p.~ex.
+%</fr>
+\begin{CodeEx*}
+|\usepackage[onerror=nice, info=mute]{yagusylo}|
+\end{CodeEx*}%
+%<*en>
+which sets two global options viz. |onerror| and |mute|.
+The global option keys are disabled at the end of the preamble so you
+can't change these options in the middle of the document.
+%</en>
+%<*fr>
+qui fixe deux options globales, à savoir |onerror| et |mute|. Les clés
+des options globales sont rendues invalides à la fin du préambule
+aussi ne peut-on pas changer ces options dans le cours du document.
+%</fr>
+
+%<*en>
+The other keys are still active at the beginning of the document and
+are used intensively to change the behaviour of the macros of
+\Pkg{yagusylo}. They will be refered at as ``local options''.
+%</en>
+%<*fr>
+Les autres clés sont encore actives au début du document et sont
+utilisées intensivement pour modifier le comportement des macros de
+\Pkg{yagusylo}. J'y ferai référence comme \og options locales\fg.
+%</fr>
+
+%<*en>
+They are local in that first, internally, I do not use \cs{gsetkeys}
+to set them and, secondly, in that they ``respect the group
+limits''. So, if you set some local option inside an environment, the
+setup will be confined to that environment and the option will find
+its previous value after the environment.
+%</en>
+%<*fr>
+Elles sont locales, premièrement, en ce que, en interne, je n'utilise
+pas \cs{gsetkeys} pour les fixer et, deuxièmement, en ce qu'elles \og
+respectent les limites de groupes\fg. Aussi, si on règle quelque
+option locale dans un environnement, le réglage est confiné à cet
+environnement et l'option reprendra sa valeur précédente à la fin de
+l'environnement courant.
+%</fr>
+
+%<*en>
+All the local keys affect the behaviour of almost all the commands but
+\emph{not} the behaviour of the environment
+\texttt{yagenumerate}. There are special keys for it.
+%</en>
+%<*fr>
+Toutes les clés locales affectent le comportement de presque toutes
+les commandes mais \emph{pas} celui de l'environnement
+\texttt{yagenumerate} qui dispose de ses propres clés.
+%</fr>
+
+%<*en>
+Some macros have a starred and some even a plussed version. That is
+that you will find along with \cs{somemacro} a \cs{somemacro*} and
+perhaps also a \cs{somemacro+}. Where the bare version \cs{somemacro}
+expects a \meta{\CHARNUM} \TO an integer between \np{0} and \np{255}\TF
+the starred version \cs{somemacro*} awaits a \meta{\DINGNAME} as defined by
+macros \cs{defdingname} or \cs{defdingname+}, \Voir{macrodefdingname}.
+%</en>
+%<*fr>
+Quelques macros on une version étoilées et quelques unes même une
+version plussée. On trouvera donc à côté de \cs{unemacro},
+\cs{unemacro*} et peut-être aussi \cs{unemacro+}. Là où la version nue
+\cs{unemacro} attend un \meta{\CHARNUM} \TO un entier compris entre
+\np{0} et \np{255}\TF la version étoilée \cs{unemacro*} attend un
+\meta{\DINGNAME} défini par les macros \cs{defdingname} or
+\cs{defdingname+}, \Voir{macrodefdingname}.
+%</fr>
+
+%<*en>
+The plus versions are not for the fainthearted and require a lot. Be
+aware and shun them accordingly \Sourire
+%</en>
+%<*fr>
+Les versions plussées ne sont pas pour les c½urs de lièvres, ugh!
+Elles attendent beaucoup d'arguments. Soyez-en conscient et évitez-les
+comme il se doit \Sourire
+%</fr>
+
+%<*en>
+For sake of convenience I will write \cs{somemacro(*)} to refer to
+both the macros \cs{somema}\BOP|cro| and \cs{somemacro*}; I will write
+\cs{somemacro(*/+)} to refer to the macros \cs{somemacro},
+\cs{some}\BOP|macro*|, and \cs{some}\BOP|macro+| together.
+%</en>
+%<*fr>
+J'écrirai \cs{unemacro(+)} pour faire référence aux deux macros
+\cs{unemacro} et \cs{unemacro+}, \cs{unemacro(*/+)} pour parler des
+trois commandes \cs{unemacro}, \cs{unemacro*} et \cs{unemacro+}
+ensemble.
+%</fr>
+
+%<*en>
+Some macros accept a argument which can have a ``normal'' value or the
+\emph{special} value \STAR[1]. I will then write that argument as
+\meta{normal/\STAR}.
+%</en>
+%<*fr>
+Certaines macros acceptent un argument qui peut être une valeur \og
+normale\fg ou la valeur \emph{spéciale} \STAR[1]. J'écrirai cet
+argument sous la forme \meta{normal/\STAR}.
+%</fr>
+
+
+\newpage{}
+%<en>\part{Usage}
+%<fr>\part{Utilisation}
+
+%<*en>
+\paragraph{Remark} In this document \Pkg{yagusylo} is loaded with
+%</en>
+%<*fr>
+\paragraph{Remarque} Dans ce document, \Pkg{yagusylo} est chargé avec
+%</fr>
+|\usepackage[color=true,|\BOP| on|\BOP|er|\BOP|ror|\BOP|=|\BOP|nice]|\BOP|{yagusylo}|.
+
+%<en>\section{One Glyph Macros}
+%<fr>\section{Macros pour glyphe unique}
+
+%<*en>
+The first three macros provide a means of obtaining \emph{one}
+glyph. Their behaviour depends, in some way, on two
+keys\DescribeOptionCle{symfam}\DescribeOptionCle{symcolor}
+\Optioncle{symfam} and \Optioncle{symcolor} that is why I first
+explain how to set keys with \Pkg{yagusylo}.
+%</en>
+%<*fr>
+Les trois premières macros fournissent le moyen d'obtenir \emph{un}
+glyphe. Leur comportement dépend, d'une certaine manière, de deux
+clés\DescribeOptionCle{symfam}\DescribeOptionCle{symcolor}
+\Optioncle{symfam} et \Optioncle{symcolor} et c'est pourquoi je vais
+commencer par expliquer comment régler les clés dans \Pkg{yagusylo}.
+%</fr>
+
+%<en>\subsection{Of Keys and How to Set Them}
+%<fr>\subsection{Des clés et de leur réglage}
+
+%<*en>
+You can use \cs{setyagusylokeys} with as its one and only
+one\DescribeMacro{setyagusylokeys}
+mandatory argument a list of pairs of the form \texttt{key=value}:
+%</en>
+%<*fr>
+On peut se servir de \cs{setyagusylokeys} avec pour seul
+argument\DescribeMacro{setyagusylokeys}
+obligatoire une liste de paires de la forme \texttt{clé=valeur}:
+%</fr>
+\begin{CodeEx*}
+ \cs{setyagusylokeys}\marg{\LISTKV/\STAR[1]}.
+\end{CodeEx*}%
+
+%<*en>
+To set \PX the key \Optioncle{symfam} to the value
+\OptionvalP{marvosym} and the key \Optioncle{symcolor} to
+\OptionvalP{gray} you will type
+%</en>
+%<*fr>
+Pour régler, \PX, la clé \Optioncle{symfam} sur la valeur
+\OptionvalP{marvosym} et la clé \Optioncle{symcolor} sur
+\OptionvalP{gray} on tapera
+%</fr>
+\begin{CodeEx*}
+ \cs{setyagusylokeys}|{symfam=marvosym, symcolor=gray}|
+\end{CodeEx*}%
+%<*en>
+and the values will be set up until the end of the group in which the
+command is given or until the next use of \cs{setyagusylokeys}.
+%</en>
+%<*fr>
+et les valeurs seront fixées jusqu'à la fin du groupe dans lequel on a
+écrit les commandes ou jusqu'à l'utilisation suivante de
+\cs{setyagusylokeys}.
+%</fr>
+
+%<*en>
+You can use the \cs{setyagusylokeys} macro with the special argument
+\STAR[1] to return to the default values of the local keys of the
+package.
+%</en>
+%<*fr>
+On peut utiliser \cs{setyagusylokeys} avec l'argument spécial \STAR[1]
+pour revenir aux valeurs par défaut des clés locales de l'extension.
+%</fr>
+
+%<*en>
+After \cs{setyagusylokeys}|{*}|, \Optioncle{symfam} has value
+\OptionvalP{pifont} and \Optioncle{symcolor} \OptionvalP{red}, see
+table~\ref{TAByagusylokeys} on~\Page{TAByagusylokeys}, for a complete
+list of local keys and their default values.
+%</en>
+%<*fr>
+Après \cs{setyagusylokeys}|{*}|, \Optioncle{symfam} a la valeur
+\OptionvalP{pifont} et \Optioncle{symcolor} la valeur
+\OptionvalP{red}, voir la table~\ref{TAByagusylokeys},
+\Page{TAByagusylokeys}, pour une liste complète des clés locales et de
+leurs valeurs par défaut.
+%</fr>
+
+%<*en>
+The macro \cs{setyagusylokeys} does not affect the behaviour of
+\texttt{yagenumerate} environment.
+%</en>
+%<*fr>
+La macro \cs{setyagusylokeys} n'affecte pas le comportement de
+l'environnement \texttt{yag}\BOP|enu|\BOP|me|\BOP|rate|.
+%</fr>
+
+%<en>\subsection{The Macros Proper}
+%<fr>\subsection{Les macros elles-mêmes}
+
+%<*en>
+\Pkg{yagusylo} provides the macro \cs{yagding} the
+syntax\DescribeMacro{yagding} of which is:
+%</en>
+%<*fr>
+\Pkg{yagusylo} fournit la macro \cs{yagding} dont la
+syntaxe\DescribeMacro{yagding}
+est:
+%</fr>
+\begin{CodeEx*}
+ \cs{yagding}\oarg{\FAMILY}\marg{\CHARNUM}\oarg{\COLOUR}
+\end{CodeEx*}%
+%<*en>
+where \meta{\FAMILY} is one of the symfams. By default,
+\meta{\FAMILY} equals \texttt{pifont} unless you have given an other
+value to the key \Optioncle{symfam} before using \cs{yagding}
+either in the preamble or the document body.
+%</en>
+%<*fr>
+où \meta{\FAMILY} est l'une des symfams. Par défaut,
+\meta{\FAMILY} vaut \texttt{pifont} à moins que l'on ait donné une
+autre valeur à la clé \Optioncle{symfam}, dans le préambule ou dans le
+corps du document, avant d'utiliser \cs{yagding}.
+%</fr>
+
+%<*en>
+The \meta{\CHARNUM} is the number of the symbol in the font file which
+``describes'' it. You can look at the section~\ref{SECshowcase} on
+\Page{SECshowcase}, to find the list of all available symbols with
+their families and numbers. In any case \meta{\CHARNUM} is an integer
+between \np{0} and \np{255} inclusive.
+%</en>
+%<*fr>
+Le \meta{\CHARNUM} est le numéro du symbole dans le fichier de fonte
+qui le \og décrit\fg. On trouvera en section~\ref{SECshowcase},
+\Page{SECshowcase}, la liste de tous les symboles disponibles avec
+leurs famille et numéro. Dans tous les cas, \meta{\CHARNUM} est un
+entier compris entre \np{0} et \np{255} inclusivement.
+%</fr>
+
+%<*en>
+The \meta{\COLOUR} is the name of a colour known by \Pkg{xcolor} which
+deals with all the gory details. By default the colour is the value of
+\Optioncle{symcolor} which is itself \texttt{red} by default.
+%</en>
+%<*fr>
+La \meta{\COLOUR} est le nom d'une couleur connue par \Pkg{xcolor} qui
+se charge de tous les détails sordides de l'affaire. Par défaut, la
+couleur est la valeur de \Optioncle{symcolor} qui est elle-même
+\texttt{red} \TO rouge\TF par défaut.
+%</fr>
+
+%<*en>
+For example, I get ``\yagding[fourier]{88}[blue]'' with
+|\yagding[fourier]{88}[blue]|. With |\yagding{88}| I obtain
+``\yagding{88}'', symbol defined in the \texttt{pifont} package with
+the default colour \texttt{red}. With |\yagding{88}|\BOP|[green]| I
+obtain ``\yagding{88}[green]''.
+%</en>
+%<*fr>
+Par exemple, j'obtiens \og \yagding[fourier]{88}[blue]\fg avec
+|\yagding[fourier]{88}[blue]|. Avec |\yagding{88}|, j'obtiens \og
+\yagding{88}\fg, symbole défini dans l'extension \texttt{pifont} avec
+la couleur \texttt{rouge} par défaut. Avec
+|\yagding{88}|\BOP|[green]|, j'obtiens \og \yagding{88}[green]\fg.
+%</fr>
+
+%<*en>
+Thanks to \Pkg{xargs}, \Pkg{yagusylo} provides macros which
+accept more than one optional argument.
+%</en>
+%<*fr>
+Grâce à \Pkg{xargs}, \Pkg{yagusylo} fournit des macros qui acceptent
+plus d'un argument optionnel.
+%</fr>
+
+%<*en>
+With \cs{defdingname} you can give a \emph{local} or
+\emph{global}\DescribeMacro{defdingname} name to a symbol:
+%</en>
+%<*fr>
+Avec \cs{defdingname}, on peut donner un nom \emph{local}
+ou\DescribeMacro{defdingname} \emph{global} à un symbole:
+%</fr>
+\begin{CodeEx*}
+\cs{defdingname}\oarg{\FAMILY/\STAR[1]}\oarg{defext}\marg{\CHARNUM}%
+\marg{\DINGNAME}\oarg{\COLOUR/\STAR[1]}
+\end{CodeEx*}%
+%<*en>
+where \meta{\FAMILY}, \meta{\CHARNUM}, and \meta{\COLOUR}
+have the same meanings than above. Moreover \meta{\FAMILY} and
+\meta{\COLOUR} have also the same default values than above.
+%</en>
+%<*fr>
+où \meta{\FAMILY}, \meta{\CHARNUM} et \meta{\COLOUR} ont les mêmes
+significations que ci-dessus. De plus, \meta{\FAMILY} et
+\meta{\COLOUR} ont aussi les mêmes valeurs par défaut que ci-dessus.
+%</fr>
+
+%<*en>
+If \meta{defext} has value \texttt{local} \TO which is the default
+value\TF the name is \emph{local} in the sense that its existence is
+limited to the englobing group. To obtain a \emph{global} definition
+you have to give \meta{defext} the value \texttt{global}. Other value
+will result in an error, if \Optioncle{onerror} has value
+\OptionvalP{tough} or in a warning and then in a \emph{local}
+definition.
+%</en>
+%<*fr>
+Si \meta{defext} a la valeur \texttt{local} \TO qui est la valeur par
+défaut\TF le nom est \emph{local} dans le sens que son existence est
+limitée au groupe courant. Pour obtenir une définition \emph{globale},
+on donnera la valeur \texttt{global} à \meta{defext}. Toute autre
+valeur provoquera une erreur, si l'option \Optioncle{onerror} a la
+valeur \OptionvalP{tough}, ou un avertissement et la définition sera
+\emph{locale}.
+%</fr>
+
+%<*en>
+To be able to use the 2nd optional argument \meta{defext} you must
+provide the first one. So you can define a name like this:
+%</en>
+%<*fr>
+Pour pouvoir utiliser le 2\ieme argument optionnel \meta{defext}, on
+doit fournir le premier. On peut donc définir un nom comme suit:
+%</fr>
+\begin{CodeEx*}
+ \cs{defdingname}|[fourier][global]{116}{rhand}[red]|
+\end{CodeEx*}%
+%<*en>
+and then, even if that definition is made in a group, everywhere in
+the following part of the document you will obtain
+``\yagding[fourier]{116}[red]'' with \cs{yagding*}|{rhand}|. To help
+the user to obtain the usual behaviour of \cs{defdingname} with 2nd
+argument \texttt{global}, \Pkg{yagusylo} enables the use of \texttt{*}
+as value of the first (optional) argument. So
+\cs{defdingname}\BOP|[*]|\BOP|[global]|\BOP|{75}| will create,
+globally, the same macro as \cs{defdingname}|{75}| does locally.
+%</en>
+%<*fr>
+et alors, même si la définition est faite dans un groupe, partout dans
+la suite du document on obtiendra \og \yagding[fourier]{116}[red]\fg
+avec \cs{yagding*}\BOP|{rhand}|. Pour permettre à l'utilisateur
+d'obtenir le comportement habituel de \cs{defdingname} même avec un
+2\ieme argument \texttt{global}, \Pkg{yagusylo} autorise l'utilisation
+de \STAR[1] comme valeur du premier argument (optionnel). Aussi
+\cs{defdingname}\BOP|[*]|\BOP|[global]|\BOP|{75}| créera,
+globallement, la macro que \cs{defdingname}\BOP|{75}| crée en local.
+%</fr>
+
+%<*en>
+The last (optional) argument \meta{\COLOUR/\STAR[1]} leads to a special
+behaviour when its value is \texttt{*}. In that case, the colour of
+the ding will be the colour which is current at the time of use of
+\cs{yagding*} and not, as usual, if \meta{\COLOUR/\STAR} is not explicitly
+given, at the time of definition.\label{casspecialdef}
+%</en>
+%<*fr>
+Le dernier argument (optionnel) \meta{\COLOUR/\STAR[1]} entraine un
+comportement particulier quand sa valeur est \STAR. Dans ce cas, la
+couleur du ding sera la couleur qui est la couleur courante au moment
+de l'utilisation de \cs{yagding*} et non pas, comme c'est le cas quand
+\meta{\COLOUR/\STAR} n'est pas donné explicitement, celle courante au
+moment de la définition.\label{casspecialdef}
+%</fr>
+
+%<*en>
+To be clearer, let's assume that at a certain time, the current
+\Optioncle{symcolor} has value \OptionvalP{red} and then you write
+%</en>
+%<*fr>
+Pour être plus clair, supposons qu'à un certain point l'option
+\Optioncle{symcolor} ait pour valeur courante \OptionvalP{red} et que
+l'on écrive
+%</fr>
+\begin{CodeEx*}
+ \cs{defdingname}|[fourier]{116}{hand}|%
+ \cs{defdingname}|[fourier]{116}{handvar}[*]|
+\end{CodeEx*}%
+%<*en>
+then, as long as \Optioncle{symcolor} is not redefined,
+\cs{yagding*}|{hand}| and \cs{yagding*}|{handvar}| give the same glyph
+\yagding[fourier]{116}[red] \emph{but} after a
+%</en>
+%<*fr>
+alors tant que l'on ne change pas l'option \Optioncle{symcolor},
+\cs{yagding*}|{hand}| et \cs{yagding*}\BOP|{hand|\BOP|var}| donneront
+le même glyphe \yagding[fourier]{116}[red] \emph{mais} après
+%</fr>
+\begin{CodeEx*}
+ \cs{setyagusylokeys}|{symcolor=blue}|
+\end{CodeEx*}%
+%<*en>
+if \cs{yagding*}|{hand}| gives the same \yagding[fourier]{116}[red],
+\cs{yagding*}|{handvar}| gives \yagding[fourier]{116}[blue].
+%</en>
+%<*fr>
+si \cs{yagding*}|{hand}| donne toujours \yagding[fourier]{116}[red],
+\cs{yagding*}\BOP|{hand|\BOP|var}| donne \yagding[fourier]{116}[blue].
+%</fr>
+
+%<*en>
+\paragraph{Remark} The \Pkg{yagusylo} macros the name of which begins
+with \texttt{def}, as \cs{defdingname}, do not check previous
+existence and enable redifinition.
+%</en>
+%<*fr>
+\paragraph{Remarque} Les macros de \Pkg{yagusylo} dont le nom commence
+par \texttt{def}, comme \cs{defdingname}, ne vérifient pas l'existence
+préalable et permettent la redéfinition.
+%</fr>
+
+\VSP
+
+%<*en>
+You will then be able to use \cs{yagding*} to obtain the
+named\DescribeMacro{yagding*} symbol with
+%</en>
+%<*fr>
+On pourra alors utiliser \cs{yagding*} pour obtenir le symbole nommé
+avec\DescribeMacro{yagding*}
+%</fr>
+\begin{CodeEx*}
+\cs{yagding*}\marg{\DINGNAME}
+\end{CodeEx*}%
+%<*en>
+and the obtained glyph cannot be affected by the settings of the local
+keys except \Optioncle{symcolor} in the special case of a definition
+using \STAR[1] as 4th argument as explained above, \Voir{casspecialdef}.
+%</en>
+%<*fr>
+et le glyphe obtenu n'est pas affecté par les réglages des clés
+locales sauf \Optioncle{symcolor} dans le cas spécial d'une définition
+utilisant \STAR[1] pour 4\ieme argument comme expliqué ci-dessus,
+\Voir{casspecialdef}.
+%</fr>
+
+%<*en>
+For example, with |\defdingname[fourier]{116}{finger}[gray]| I
+define the name of the symbol ``\yagding[fourier]{116}[gray]''
+and I can then get it with |\yagding*{finger}|.
+%</en>
+%<*fr>
+Par exemple, avec |\defdingname[fourier]{116}{doigt}[gray]| on définit
+le nom du symbole \og \yagding[fourier]{116}[gray]\fg et on peut
+l'obtenir ensuite avec |\yagding*{doigt}|.
+%</fr>
+
+%<*en>
+In fact, the \textbf{true} name of the macro which is used internally
+by \Pkg{yagusylo} is \verb*+\Y@G@@ +\BOP|fin|\BOP|ger|. If with such a
+name there is still a clash it's because somebody did it on purpose!
+%</en>
+%<*fr>
+En fait, le \textbf{vrai} nom de la macro utilisée en interne par
+\Pkg{yagusylo} est \verb*+\Y@G@@ +\BOP|doigt|. Si, avec un tel nom, il
+y avait encore un conflit de nom, c'est que quelqu'un l'aura fait
+exprès.
+%</fr>
+
+%<en>\subsection{For Those in the Know}
+%<fr>\subsection{Pour les initiés}
+
+%<en>\cs{yagding+} has syntax:
+%<fr>La syntaxe de \cs{yagding+} est:
+\DescribeMacro{yagding+}
+\begin{CodeEx*}
+ \cs{yagding+}\oarg{\ENC}\marg{\FAMILY}\marg{\SERIES}\marg{\SHAPE}%
+ \marg{\CHARNUM}\oarg{\COLOUR}
+\end{CodeEx*}%
+%<*en>
+where \meta{\CHARNUM} and \meta{\COLOUR} have the meaning defined
+above. The default value of the optionnal argument \meta{\COLOUR} is
+the current colour, as above once again.
+%</en>
+%<*fr>
+où \meta{\CHARNUM} et \meta{\COLOUR} ont les significations définies
+ci-dessus. La valeur par défaut de l'argument optionnel \meta{\COLOUR}
+est la couleur courante, comme ci-dessus encore.
+%</fr>
+
+%<*en>
+All the other arguments refer to the NFSS specification: \meta{\ENC} is
+the font encoding, which defaults to \texttt{U}, \meta{\FAMILY} is the
+font family, \meta{\SERIES} is the font series, and \meta{\SHAPE} is the
+font shape. If you want to use a glyph for which series or shape is
+undefined, just give \texttt{*} as argument.
+%</en>
+%<*fr>
+Tous les autres arguments font référence aux spécification de la NFSS:
+\meta{\ENC} est le codage de la fonte, dont la valeur par défaut est
+\texttt{U}, \meta{\FAMILY} est la famille de la fonte \TO
+\emph{family}\TF, \meta{\SERIES} est la série de la fonte \TO
+\emph{series}\TF et \meta{\SHAPE} est sa forme \TO \emph{shape}. Si
+l'on veut utiliser un glyphe dont la série ou la forme sont
+indéfinies, on donnera la valeur \STAR à l'argument.
+%</fr>
+
+%<en>So
+%<fr>Ainsi
+|\yagding+{futs}{*}{*}{84}[blue]|
+%<en>gives
+%<fr>donne
+``\yagding+{futs}{*}{*}{84}[blue]'',
+|\yagding+|\BOP|{|\BOP|futs|\BOP|}|\BOP|{*}|\BOP|{*}|\BOP|{85}|
+%<en>gives
+%<fr>donne
+``\yagding+{futs}{*}{*}{85}''.
+
+%<en>\cs{defdingname+} has syntax:
+%<fr>La syntaxe de \cs{defdingname+} est:
+\DescribeMacro{defdingname+}
+\begin{CodeEx*}
+ \cs{defdingname+}\oarg{\ENC}\oarg{defext}\marg{\FAMILY}\marg{\SERIES}\\
+ \hspace*{6em}\marg{\SHAPE}\marg{\CHARNUM}\marg{\DINGNAME}\oarg{\COLOUR/\STAR[1]}
+\end{CodeEx*}%
+%<*en>
+where the arguments \meta{\DINGNAME}, \meta{defext}, and
+\meta{\COLOUR/\STAR} have the same role as in
+\cs{def}\BOP|ding|\BOP|na|\BOP|me|.
+%</en>
+%<*fr>
+où les arguments \meta{\DINGNAME}, \meta{defext} et
+\meta{\COLOUR/\STAR} ont le même rôle que dans
+\cs{def}\BOP|ding|\BOP|na|\BOP|me|.
+%</fr>
+
+%<*en>
+By default \meta{\ENC} which awaits a font encoding has value
+\texttt{U}. By default \meta{\SERIES} \TO a font series\TF and
+\meta{\SHAPE} \TO a font shape\TF have a value which leads to their
+getting lost. \meta{\FAMILY} would like to be set to a legal font
+family name.
+%</en>
+%<*fr>
+Par défaut \meta{\ENC}, qui attend un codage de fonte, a pour valeur
+\texttt{U}; \meta{\SERIES} et \meta{\SHAPE} ont des valeurs qui les
+font ignorer. \meta{\FAMILY} apprécierait de recevoir le nom légal
+d'une famille de fonte.
+%</fr>
+
+%<*en>
+Once the symbol name defined, you will use it with the usual
+\cs{yagding*}.
+%</en>
+%<*fr>
+Une fois défini le nom du symbole, on peut l'utiliser avec le
+\cs{yagding*} habituel.
+%</fr>
+
+%<*en>
+\textbf{Be aware} that in order to use a font encoding different from
+|U|, you have to declare it in the preamble as an argument of
+\Pkg{fontenc}. So to be able to show you what follows I have this
+%</en>
+%<*fr>
+\textbf{Attention!} Pour utiliser un codage de fonte autre que |U|, on
+doit le déclarer dans le préambule comme argument de
+\Pkg{fontenc}. Afin de pouvoir montrer ce qui suit, j'ai ceci
+%</fr>
+|\usepackage[T2C,T1]|\BOP|{fontenc}|
+%<en>in the preamble of this document and then
+%<fr>en préambule de ce document, ce qui fait que
+|\yagding+|\BOP|[T2C]|\BOP|{cmr}|\BOP|{m}|\BOP|{n}|\BOP|{128}|\BOP|[blue]|
+%<en>gives
+%<fr>donne
+\yagding+[T2C]{cmr}{m}{n}{128}[blue].
+
+%<en>\section{Filling and Line}
+%<fr>\section{Remplissage et ligne}
+
+%<*en>
+The macros \cs{yagline(*/+)} use \cs{yagfill(*/+)} to place the dings
+so I begin with filling.
+%</en>
+%<*fr>
+Les macros \cs{yagline(*/+)} utilisent \cs{yagfill(*/+)} pour placer
+les dings aussi je commence par le remplissage \TO \emph{filling}.
+%</fr>
+
+%<en>\subsection{Filling}
+%<fr>\subsection{Remplissage}
+
+%<*en>
+The filling mechanism is based on the \TeX\ commands \cs{leaders},
+\cs{xleaders} and \cs{cleaders}. Some keys are reserved for setting
+the behaviour of \cs{yagfill(*/+)} and then govern also the behaviour
+of \cs{yagline(*/+)}.
+%</en>
+%<*fr>
+Le mécanisme de remplissage est basé sur les commandes \TeX\
+\cs{leaders}, \cs{xleaders} et \cs{cleaders}. Quelques clés sont
+réservées aux réglages du comportement de \cs{yagfill(*/+)} et
+gouvernent aussi celui de \cs{yagline(*/+)}.
+%</fr>
+
+%<en>\subsubsection{The Keys}
+%<fr>\subsubsection{Les clés}
+
+%<*en>
+Six option keys govern the behaviour of the macros
+\cs{yagfill(*/+)}. They are \Optioncle{leadtype}, \Optioncle{symplace},
+\Optioncle{sympos}, \Optioncle{boxwidth}, \Optioncle{before}, and
+\Optioncle{after}.
+%</en>
+%<*fr>
+Six clés d'option gouvernent le comportement des macros
+\cs{yagfill(*/+)}: \Optioncle{leadtype}, \Optioncle{symplace},
+\Optioncle{sympos}, \Optioncle{boxwidth}, \Optioncle{before} et
+\Optioncle{after}.
+%</fr>
+
+%<*en>
+The key \Optioncle{leadtype} has default value
+\OptionvalP{l}\DescribeOptionCle{leadtype} and can also have value
+\OptionvalP{x} or \OptionvalP{c}. With \OptionvalP{l} the \TeX\ macro
+\cs{leaders} is used, with \OptionvalP{c} it is \cs{cleaders} and with
+\OptionvalP{x} it is \cs{xleaders}. Some examples below will show the
+different looks, \Voir{SSECXMPLyagfill}.
+%</en>
+%<*fr>
+La clé \Optioncle{leadtype} a la valeur \OptionvalP{l} par
+défaut\DescribeOptionCle{leadtype} et peut prendre les valeurs
+\OptionvalP{x} or \OptionvalP{c}. Avec \OptionvalP{l} la macro
+\cs{leaders} de \TeX\ est utilisée, avec \OptionvalP{c} c'est
+\cs{cleaders} et avec \OptionvalP{x} c'est \cs{xleaders}. Quelques
+exemples montrent les différences d'aspect, \Voir{SSECXMPLyagfill}.
+%</fr>
+
+%<*en>
+The key \Optioncle{symplace} takes its value
+among\DescribeOptionCle{symplace} \OptionvalP{c} \TO default\TF,
+\OptionvalP{r}, \OptionvalP{l}, \OptionvalP{a}, and \OptionvalP{n}.
+%</en>
+%<*fr>
+La clé \Optioncle{symplace} prend une valeur
+parmi\DescribeOptionCle{symplace} \OptionvalP{c} \TO valeur par
+défaut\TF, \OptionvalP{r}, \OptionvalP{l}, \OptionvalP{a} et
+\OptionvalP{n}.
+%</fr>
+
+%<*en>
+If \OptionvalP{n} is chosen, then the\DescribeOptionCle{sympos}
+key \Optioncle{sympos} must be set, \Optioncle{sympos} requires an
+integer between \np{0} and \np{1000} inclusive.
+%</en>
+%<*fr>
+Si on choisit \OptionvalP{n} alors on doit régler la
+clé\DescribeOptionCle{sympos} \Optioncle{sympos}. Elle demande un
+entier compris entre \np{0} et \np{1000}, bornes comprises.
+%</fr>
+
+%<*en>
+If \OptionvalP{a} is chosen, then the keys
+\Optioncle{before}\DescribeOptionCle{before} and \Optioncle{after}
+must be set. Both those options require a non-negative \LaTeX\ length
+but if you do not set \Optioncle{after}\DescribeOptionCle{after}
+explicitly it will take the same value as \Optioncle{before}.
+%</en>
+%<*fr>
+Si on choisit \OptionvalP{a}, les clés
+\Optioncle{before}\DescribeOptionCle{before} et \Optioncle{after}
+doivent être définies. Ces deux options attendent une longueur \LaTeX
+ienne positive ou nulle. Si l'on ne fixe pas explicitement la valeur
+de \Optioncle{after}\DescribeOptionCle{after}, elle prendra celle de
+\Optioncle{before}.
+%</fr>
+
+%<*en>
+Except when \OptionvalP{a} is chosen, \Optioncle{boxwidth}
+must\DescribeOptionCle{boxwidth} be a non-negative \LaTeX\ length. If
+\Optioncle{boxwidth} has value \OptionvalP{0 pt} \TO or any other null
+length\TF then the actual box width will be the natural width of the
+symbol\footnote{That natural width is obtained with \cs{settowidth}.}
+used by the macros \cs{yagfill(*)}. In fact, that will be the case
+whenever the value given to \Optioncle{boxwidth} is less than the
+natural width of the symbol.
+%</en>
+%<*fr>
+Sauf quand on choisit \OptionvalP{a}, \Optioncle{boxwidth} doit
+prendre une\DescribeOptionCle{boxwidth} longueur \LaTeX ienne positive
+ou nulle. Si \Optioncle{boxwidth} a pour valeur \OptionvalP{0 pt} \TO
+ou toute autre longueur nulle\TF alors la largeur effective de la
+boite sera la largeur naturelle du symbole\footnote{Cette largeur
+ naturelle est obtenue avec \cs{settowidth}.} utilisé par la macro
+\cs{yagfill(*)}. En fait, cela sera ainsi chaque fois que la valeur
+donnée à \Optioncle{boxwidth} sera inférieure à la largeur naturelle
+du symbole.
+%</fr>
+
+%<en>\subsubsection{The Macros for Filling}
+%<fr>\subsubsection{Macros de remplissage}
+
+%<en>The macro \cs{yagfill} has the following syntax:
+%<fr>La syntaxe de \cs{yagfill} est la suivante:
+\DescribeMacro{yagfill}
+\begin{CodeEx*}
+ \cs{yagfill}\oarg{\LISTKV}\marg{\CHARNUM}
+\end{CodeEx*}%
+%<*en>
+where the \meta{\LISTKV}, if provided, sets up the value of the keys
+listed. In case a key is not explicitly set, it keeps its current
+value. So if the optional argument is not given, all the following
+keys have their current value:
+%</en>
+%<*fr>
+où la \meta{\LISTKV}, si elle est fournie, règle les valeurs des clés
+de la liste. Au cas où la valeur d'une clé n'est pas donnée
+explicitement, elle conserve sa valeur courante. Ainsi, si on ne donne
+pas cet argument optionnel, les clés suivantes ont leur valeur
+courante:
+%</fr>
+\Optioncle{symfam},\Optioncle{symcolor}, \Optioncle{leadtype},
+\Optioncle{symplace}, \Optioncle{sympos}, \Optioncle{boxwidth},
+\Optioncle{before}
+%<en>, and
+%<fr>et
+\Optioncle{after}.
+
+\meta{\CHARNUM}
+%<en>has the same meaning as it has for
+%<fr>a la même signification que pour
+\cs{yagding}
+%<en>above.
+%<fr> ci-dessus.
+
+%<en>The macro \cs{yagfill*} has the following syntax:
+%<fr>La syntaxe de \cs{yagfill*} est la suivante:
+\DescribeMacro{yagfill*}
+\begin{CodeEx*}
+ \cs{yagfill*}\oarg{\LISTKV}\marg{\DINGNAME}
+\end{CodeEx*}%
+%<*en>
+where the \meta{\LISTKV} has the same usage as with \cs{yagfill} but
+where \meta{\DINGNAME} must be the name of a symbol previously defined
+via \cs{defdingname(+)}.
+%</en>
+%<*fr>
+où la \meta{\LISTKV} a la même utilisation que dans \cs{yagfill} mais
+où \meta{\DINGNAME} doit être le nom d'un symbole défini préalablement
+à l'aide de \cs{defdingname(+)}.
+%</fr>
+
+%<en>The macro \cs{yagfill+} has the following syntax:
+%<fr>La syntaxe de \cs{yagfill+} est la suivante:
+\DescribeMacro{yagfill+}
+\begin{CodeEx*}
+ \cs{yagfill+}\oarg{\LISTKV}\marg{\MATERIAL}
+\end{CodeEx*}%
+%<*en>
+where \meta{\MATERIAL} is something wich can be typeset and has a
+positive width.
+%</en>
+%<*fr>
+où \meta{\MATERIAL} est quelque chose qui peut être composé et a une
+largeur positive.
+%</fr>
+
+%<*en>
+You can look at some examples in the section~\ref{SSECXMPLyagfill}, on
+\Page{SSECXMPLyagfill}.
+%</en>
+%<*fr>
+On trouvera quelques exemples en section~\ref{SSECXMPLyagfill},
+\Page{SSECXMPLyagfill}.
+%</fr>
+
+%<en>\subsubsection{The Making-Of}
+%<fr>\subsubsection{Dans les coulisses}
+
+%<*en>
+The three macros use the same internal code to build the boxes used by
+the \TeX\ macro \cs{leaders}, \cs{cleaders}, or \cs{xleaders}. The
+more general is clearly the \texttt{+}-ed version.
+%</en>
+%<*fr>
+Les trois macros utilisent le même code interne pour fabriquer les
+boites utilisées par la macro \TeX ienne \cs{leaders}, \cs{cleaders}
+ou \cs{xleaders}. La macro généraliste est évidemment la version
+plussée.
+%</fr>
+
+%<*en>
+First in case \Optioncle{symplace} is not \OptionvalP{a}, the box has
+width the value of \Optioncle{boxwidth} unless that value is less than
+the natural width of the box containing the material to be typeset in
+which case the natural width is assumed.
+%</en>
+%<*fr>
+D'abord, lorsque \Optioncle{symplace} ne vaut pas \OptionvalP{a}, la
+boite a pour largeur \Optioncle{boxwidth} a moins que cette dernière
+valeur soit inférieure à la largeur naturelle de la boite contenant le
+matériel à composer, auquel cas on prend cette largeur naturelle.
+%</fr>
+
+%<*en>
+With \Optioncle{symplace} equals \OptionvalP{a}, the width of the
+box equals the sum of the values of \Optioncle{before},
+\Optioncle{after}, and the natural width of the material. In this case
+the material begins at distance the value of \Optioncle{before} from
+the beginning of the box.
+%</en>
+%<*fr>
+Avec \Optioncle{symplace} valant \OptionvalP{a}, la largeur de la
+boite vaut la somme des valeurs de \Optioncle{before},
+\Optioncle{after} et de la largeur naturelle du matériel. Dans ce cas
+le matériel commence à la distance \Optioncle{before} du bord gauche
+de la boite.
+%</fr>
+
+%<*en>
+When \Optioncle{symplace} doesn't equal \OptionvalP{a}, you have to
+provide a means of positionning the material.
+%</en>
+%<*fr>
+Lorsque \Optioncle{symplace} ne vaut pas \OptionvalP{a}, on doit
+fournir une indication de positionnement du matériel.
+%</fr>
+
+%<*en>
+The more general case is then to use of \OptionvalP{n} as value of
+\Optioncle{symplace} together with a integer between \np{0} and
+\np{1000} as value of \Optioncle{sympos}. In that case, the distance
+between the left end of the box and the left end of the material is
+given by \(bw \times n / \np{1000}-\np{0.5}mw\) where \(bw\) is the
+actual boxwidth, \(n\) the value of \Optioncle{sympos}, and \(mw\)
+the width of the material. If \(n\) is not an integer or is out of
+bound you will have an error.
+%</en>
+%<*fr>
+La façon la plus générale est alors d'utiliser \OptionvalP{n} comme
+valeur de \Optioncle{symplace} et de donner un entier compris entre
+\np{0} et \np{1000} pour valeur de \Optioncle{sympos}. Dans ce cas, la
+distance entre le bord gauche de la boite et le bord gauche du
+matériel est donné par \(bw \times n / \np{1000}-\np{0.5}mw\) où
+\(bw\) est la largeur effective de la boite, \(n\) la valeur de
+\Optioncle{sympos} et \(mw\) la largeur du matériel.
+%</fr>
+
+%<*en>
+You can consider ``\texttt{symplace=c}'', ``\texttt{symplace=l}'', and
+``\texttt{symplace=r}'' as abbreviations for ``\texttt{symplace=n,
+ sympos=500}'', ``\texttt{symplace=n, sympos=0}'', and
+``\texttt{symplace=n, sympos=1000}'' respectively, to achieve a
+placement centered, on the left, and on the right respectively. I have
+kept the mnemomics of \PX \cs{makebox}.
+%</en>
+%<*fr>
+On peut considérer \og \texttt{symplace=c}\fg, \og
+\texttt{symplace=l}\fg et \og \texttt{symplace=r}\fg comme des
+abréviations de \og \texttt{symplace=n, sympos=500}\fg, \og
+\texttt{symplace=n, sympos=0}\fg et \og \texttt{symplace=n,
+ sympos=1000}\fg respectivement, ce qui assure un placement centré, à
+gauche et à droite respectivement. J'ai conservé la signification des
+arguments que l'on trouve dans \cs{makebox} \PX
+%</fr>
+
+%<*en>
+It could seem obvious but it costs nothing to repeat it: you can set
+the options governing \cs{yagfill} and friends with
+\cs{setyagusylokeys}, \Voir{XMPLreglages}, example~\ref{XMPLreglages}.
+%</en>
+%<*fr>
+Même si cela semble évident, il ne coute rien de redire que l'on peut
+fixer les options gouvernant \cs{yagfill} et ses amis avec
+\cs{setyagusylokeys}, \Voir{XMPLreglages}, exemple~\ref{XMPLreglages}.
+%</fr>
+
+%<en>\subsection{To Draw a Line}
+%<fr>\subsection{Tracer une ligne}
+
+%<en>\subsubsection{Special Keys for Lines}
+%<fr>\subsubsection{Clés spéciales pour les lignes}
+
+%<*en>
+The macros \cs{yagline(*/+)} use internally\DescribeOptionCle{head}
+the equivalent of \cs{yagfill+} and so are subjects to the same keys
+but there are two extra keys to set the behaviour of \cs{yagline} and
+friends. The key \Optioncle{head} must be a \LaTeX\ length, which can
+be negative. It fixes the distance between the left margin and the
+left end of the first box of the line with the proviso that the
+\Optioncle{leadtype} may make some differences in this respect.
+%</en>
+%<*fr>
+Les macros \cs{yagline(*/+)} utilisent en
+interne\DescribeOptionCle{head} les équivalents de \cs{yagfill+} et
+sont donc soumises aux mêmes clés mais deux clés supplémentaires
+règlent le comportement de \cs{yagline} et ses amis. La clé
+\Optioncle{head} doit être une longueur \LaTeX ienne, qui peut être
+négative. Elle détermine la distance entre la marge de gauche et le
+bord gauche de la 1\iere boite de la ligne. On notera cependant que
+l'option \Optioncle{leadtype} peut avoir quelques effets à cet égard.
+%</fr>
+
+%<*en>
+The option key \Optioncle{tail} fixes the distance between the
+right\DescribeOptionCle{tail} margin and the right end of the last box
+of the line with the same remark about the behaviour of
+\cs{leaders}. If \Optioncle{tail} is not explicitly given a value,
+which must be a legal \LaTeX\ length, the mecanism assumes that it has
+the same value as \Optioncle{head}.
+%</en>
+%<*fr>
+La clé \Optioncle{tail}\DescribeOptionCle{tail} détermine la distance
+entre la marge de droite et le bord droit de la dernière boite de la
+ligne. On fera ici la même remarque quant au comportement de
+\cs{leaders}. Si on ne donne pas explicitement \Optioncle{tail}, qui
+doit recevoir une longueur \LaTeX ienne légale, le mécanisme lui
+attribue la même valeur qu'à \Optioncle{head}.
+%</fr>
+
+%<*en>
+To set both those keys, \Pkg{yagusylo} provides the macro
+\cs{setyagline} the syntax of which is the rather unusual:
+%</en>
+%<*fr>
+Pour régler ces deux clés, \Pkg{yagusylo} fournit la macro
+\cs{setyagline} dont la syntaxe est plutot inhabituelle:
+%</fr>
+\begin{CodeEx*}
+ \cs{setyagline}\marg{head-value}\oarg{tail-value}
+\end{CodeEx*}%
+%<*en>
+where both values must be lengths. I have decided for this syntax
+because then head and tail are in the \emph{natural}\footnote{Natural
+ at least for left-to-right writing!} order.
+%</en>
+%<*fr>
+où les deux valeurs doivent être des longueurs. Je me suis décidé pour
+cette syntaxe car elle conserve la tête \TO \emph{head}\TF et la queue
+\TO \emph{tail}\TF dans l'ordre \emph{naturel}\footnote{Naturel, au
+ moins, pour des écritures de gauche à droite!}.
+%</fr>
+
+%<*en>
+By default, \Optioncle{head} and \Optioncle{tail} have value
+\OptionvalP{0.5in} and \cs{setyagusylokeys}|{*}| set them back to that
+value.
+%</en>
+%<*fr>
+Par défaut, \Optioncle{head} et \Optioncle{tail} ont pour valeur
+\OptionvalP{0.5in} et \cs{setyagusylokeys}|{*}| la leur redonne.
+%</fr>
+
+%<en>\subsubsection{The Macros for Drawing a Line}
+%<fr>\subsubsection{Macros pour tracer une ligne}
+
+%<en>The syntax of \cs{yagline} is
+%<fr>La macro \cs{yagline} a pour syntaxe
+\DescribeMacro{yagline}
+\begin{CodeEx*}
+ \cs{yagline}\oarg{\LISTKV}\marg{\CHARNUM}
+\end{CodeEx*}%
+%<*en>
+where \meta{\LISTKV} and \meta{\CHARNUM} have their usual meanings.
+%</en>
+%<*fr>
+où \meta{\LISTKV} et \meta{\CHARNUM} ont le sens habituel.
+%</fr>
+
+%<en>The syntax of \cs{yagline*} is
+%<fr>La macro \cs{yagline*} a pour syntaxe
+\DescribeMacro{yagline*}
+\begin{CodeEx*}
+ \cs{yagline*}\oarg{\LISTKV}\marg{\DINGNAME}
+\end{CodeEx*}%
+%<*en>
+where \meta{\LISTKV} and \meta{\DINGNAME} have their usual meanings
+once again.
+%</en>
+%<*fr>
+où \meta{\LISTKV} et \meta{\DINGNAME} ont toujours le sens habituel.
+%</fr>
+
+%<en>The syntax of \cs{yagline+} is
+%<fr>La macro \cs{yagline+} a pour syntaxe
+\DescribeMacro{yagline+}
+\begin{CodeEx*}
+ \cs{yagline+}\oarg{\LISTKV}\marg{\MATERIAL}
+\end{CodeEx*}%
+%<*en>
+where all the arguments have the same meanings as in \cs{yagfill+}.
+%</en>
+%<*fr>
+où tous les arguments ont le même sens que dans \cs{yagfill+}.
+%</fr>
+
+%<*en>
+All three macros begin and end with a \cs{par} so |some|
+|text|\BOP|\yagline{40}|\BOP|and| |text| results in ``some
+text\yagline{40}and text''. Perhaps in such a case it would be better
+to code |some| |text|\BOP|\yagline{41}|\BOP|\noindent| |and| |text|
+which gives ``some text\yagline{41}\noindent and text'' and I was
+\emph{not} refering to the chosen glyph.
+%</en>
+%<*fr>
+Ces trois macros commencent et finissent avec un \cs{par} aussi |du|
+|texte|\BOP|\yagline{40}|\BOP|et| |du| |texte| donnera \og du
+texte\yagline{40}et du texte\fg. Peut-être, en ce cas, serait-il
+préférable de coder |du| |texte|\BOP|\yagline{41}|\BOP|\noindent| |et|
+|du| |texte| qui donnera \og du texte\yagline{41}\noindent et du
+texte\fg et je ne faisais \emph{pas} allusion au glyphe choisi!
+%</fr>
+
+%<en>\section{Itemize}
+%<fr>\section{Listes}
+\label{SECyagitemize}
+
+%<*en>
+\Pkg{yagusylo} provide two environments \texttt{yagitemize} and
+\texttt{yagitemize*} and two macros
+\cs{setyag}\BOP|item|\BOP|ize|\BOP|(*)| to set the default behaviour
+of each environment respectively.
+%</en>
+%<*fr>
+\Pkg{yagusylo} fournit deux environnements \texttt{yagitemize} et
+\texttt{yagitemize*} et deux macros
+\cs{setyag}\BOP|item|\BOP|ize|\BOP|(*)| pour en fixer le comportement
+par défaut.
+%</fr>
+
+%<*en>
+\subsection{Environment yagitemize}
+\subsubsection{The Environment yagitemize\dots}
+%</en>
+%<*fr>
+\subsection{L'environnement yagitemize}
+\subsubsection{L'environnement yagitemize\dots}
+%</fr>
+
+%<*en>
+Here comes the first environment of \Pkg{yagusylo}. As it names could
+suggest it is a kind of \texttt{itemize} environment. It has the
+following syntax:
+%</en>
+%<*fr>
+Voici le 1\ier environnement de \Pkg{yagusylo}. Comme son nom peut
+l'indiquer, c'est une sorte d'environnement \texttt{itemize}. Sa
+syntaxe est la suivante
+%</fr>
+\DescribeEnv{yagitemize}
+\begin{CodeEx*}
+ \cs{begin}|{yagitemize}|\oarg{symfam}\marg{\CHARNUM/\STAR[1]}\oarg{\COLOUR}
+\end{CodeEx*}%
+%<en>then a certain number of \cs{item}s and
+%<fr>puis viennent quelques \cs{item}s et enfin
+\begin{CodeEx*}
+ \cs{end}|{yagitemize}|
+\end{CodeEx*}%
+%<en>as usual.
+%<fr>comme d'habitude.
+
+%<*en>
+The mandatory argument \meta{\CHARNUM} must be a number in the above
+defined meaning or a star \STAR[1] in which case the behaviour of the
+environment changes a little: in such a case, \texttt{yagitemize}
+relies on the default values you will have already provided via
+\cs{setyagitemize} at which we will look below.
+%</en>
+%<*fr>
+L'argument obligatoire \meta{\CHARNUM} doit être un numéro de
+caractère comme défini précédemment ou une étoile \STAR[1] auquel cas
+le comportement de l'environnement change quelque peu:
+\texttt{yagitemize} compte sur des valeurs par défaut que l'on devra
+avoir fournie préalablement à l'aide de \cs{setyagitemize} que je
+présenterai plus loin.
+%</fr>
+
+%<*en>
+You can nest as many \texttt{yagitemize} as you want but do not
+complaint if too much results in too ugly. Moreover, because
+\texttt{yagitemize} rests on the well known and ubiquitous
+\texttt{list} environment, \LaTeX\ could complain about too many
+nested lists at a certain time and don't forget that a \texttt{quote}
+environment is also a \texttt{list}.
+%</en>
+%<*fr>
+On peut enboiter autant de \texttt{yagitemize} que l'on veut mais je
+décline toute responsabilité quant à l'esthétique. De plus, comme
+\texttt{yagitemize} repose sur l'environnement \texttt{list} bien
+connu et présent partout, \LaTeX\ pourrait se plaindre d'un trop grand
+nombre de listes emboitées. N'oublions pas que, \PX, un environnement
+\texttt{quote} est aussi une \texttt{list}.
+%</fr>
+
+%<en>\subsubsection{And How to Set It Up}
+%<fr>\subsubsection{Et comment le régler}
+
+%<*en>
+The macro \cs{setyagitemize} enables you to define
+different\DescribeMacro{setyagitemize} symbols for the different level
+of nesting of the \texttt{yagitemize} environment. It takes an only
+mandatory argument which must have the following form:
+\begin{CodeEx}
+ |symfam1,| |number1,| |colour1.|
+ |symfam2,| |number2,| |colour2.|
+ \dots{}
+ |symfam|\(n\)|,| |number|\(n\)|,| |colour|\(n\)
+\end{CodeEx}
+%</en>
+%<*fr>
+La macro \cs{setyagitemize} permet de définir différents symboles pour
+différents niveaux d'emboitement\DescribeMacro{setyagitemize} de
+l'environnement \texttt{yagitemize}. Il ne prend qu'un argument
+obligatoire qui doit avoir la forme suivante
+\begin{CodeEx}
+ |symfam1,| |nombre1,| |couleur1.|
+ |symfam2,| |nombre2,| |couleur2.|
+ \dots{}
+ |symfam|\(n\)|,| |nombre|\(n\)|,| |couleur|\(n\)
+\end{CodeEx}
+%</fr>
+
+%<*en>
+With a period ``\texttt{.}'' you change depth level. For each level
+you have to provide three values separated by commas. The first one is
+a \emph{symfam} as defined above, the second is the number of the
+required symbol and the third is the colour of that symbol. I have not
+provided means of considering default values. All three must be
+explicitly set up.
+%</en>
+%<*fr>
+On change de niveau avec un point \og \texttt{.}\fg. Pour chaque
+niveau, on doit fournir trois valeurs séparées par des virgules. La
+première est une \emph{symfam} comme définie ci-avant, la deuxième est
+le numéro du symbole demandé, la troisième est la couleur de ce
+symbole. Je n'ai pas fourni de mécanismes utilisant des valeurs par
+défaut: chacun de ces trois arguments doit être donnés explicitement.
+%</fr>
+
+%<*en>
+When \texttt{yagitemize} encounters the \(n+1\)th level, where \(n\) is
+the number of the last given triplet, it emits a warning or an error,
+depending of the value of the global key \Optioncle{onerror}, and if
+\Optioncle{onerror} has not the value \OptionvalP{tough}, it assumes
+the \(n\)-th level setup for the subsequent level.
+%</en>
+%<*fr>
+Lorsque \texttt{yagitemize} atteint le niveau \(n+1\), où \(n\) est le
+numéro du dernier triplet fourni, il émet un avertissement ou une
+erreur, suivant la valeur de la clé globale \Optioncle{onerror}, et,
+si \Optioncle{onerror} n'a pas la valeur \OptionvalP{tough}, il
+continue avec le réglage du \(n\)-ieme niveau.
+%</fr>
+
+%<*en>
+I have taken measures to ensure that the first \texttt{yagitemize}
+will use the first definition given in \cs{setyagitemize}, at the
+price of some new \LaTeX\ counters, whichever level of nested list you
+begin it.
+%</en>
+%<*fr>
+Je me suis arrangé pour que le premier \texttt{yagitemize} utilise le
+premier réglage donné dans \cs{setyagitemize}, \TO au prix de la
+définitions de quelques compteurs \LaTeX iens \TF quel que soit le
+niveau d'emboitement de listes auquel on se place.
+%</fr>
+
+%<*en>
+\subsection{Environment yagitemize\texttt{*}}
+\subsubsection{The Environment yagitemize\texttt{*}\dots}
+%</en>
+%<*fr>
+\subsection{L'environment yagitemize\texttt{*}}
+\subsubsection{L'environment yagitemize\texttt{*}\dots}
+%</fr>
+
+%<en>The \texttt{yagitemize*} environment has the following syntax:
+%<fr>L'environnement \texttt{yagitemize*} a la syntaxe suivante:
+\DescribeEnv{yagitemize*}
+\begin{CodeEx*}
+ \cs{begin}|{yagitemize*}|\oarg{\DINGNAME}
+\end{CodeEx*}%
+%<*en>
+its optional argument, if provided, must be a symbol name, as usual
+for a starred macro. When no argument \meta{\DINGNAME} is provided, it
+uses the default setup defined via \cs{set}\BOP|yag|\BOP|itemize*|.
+%</en>
+%<*fr>
+son argument optionnel, s'il est fourni, doit être le nom d'un
+symbole, comme il est habituel pour une macro étoilée. Lorsque l'on ne
+fournit aucun argument \meta{\DINGNAME}, l'environnement utilise le
+réglage par défaut obtenu à l'aide de \cs{set}\BOP|yag|\BOP|itemize*|.
+%</fr>
+
+%<en>\subsubsection{And How to Set It Up}
+%<fr>\subsubsection{Et comment le régler}
+
+%<*en>
+The macro \cs{setyagitemize*} enables you to define
+different\DescribeMacro{setyagitemize*} symbols for the different
+level of nesting of the \texttt{yagitemize*} environment. It takes an
+only mandatory argument which must have the following form:
+%</en>
+%<*fr>
+La macro \cs{setyagitemize*} permet de définir différents
+symboles\DescribeMacro{setyagitemize*} pour les différents niveaux
+d'emboitement des environnements \texttt{yagitemize*}. Elle ne prend
+qu'un seul argument obligatoire qui doit avoir la forme suivante.
+%</fr>
+\begin{CodeEx*}
+ |dingname1. dingname2. | \dots{} |. dingname|\(n\)
+\end{CodeEx*}%
+%<*en>
+where each |dingname|\(k\) must be a valid name defined with
+\cs{defdingname(+)}, \Voir{XMPLyagitemizestar},
+example~\ref{XMPLyagitemizestar}.
+%</en>
+%<*fr>
+où chaque |dingname|\(k\) doit être un nom valide défini par
+\cs{defdingname(+)}, \Voir{XMPLyagitemizestar},
+exemple~\ref{XMPLyagitemizestar}.
+%</fr>
+
+%<*en>
+The mechanism is analog to that of \cs{setyagitemize} and
+\cs{setyagitemize*} has on the environment \texttt{yagitemize*} the
+same effect as the non-starred macro has on the non-starred
+environment.
+%</en>
+%<*fr>
+Le mécanisme en est analogue à celui de \cs{setyagitemize} et
+\cs{setyagitemize*} a sur l'environnement \texttt{yagitemize*} le même
+effet que la macro non-étoilée sur l'environnement non-étoilé.
+%</fr>
+
+%<*en>
+\paragraph{Remark} I do not provide a plussed version of the
+\texttt{yagitemize} environment for it is possible to define symbol
+names with \cs{defdingname+} and use them in
+\cs{set}\BOP|yag|\BOP|itemize*|.
+%</en>
+%<*fr>
+\paragraph{Remarque} Je ne fournis pas de version plussée de cet
+environnement car il est toujours possible de définir un nom de
+symbole avec \cs{defdingname+} et de l'utiliser dans
+\cs{set}\BOP|yag|\BOP|itemize*|.
+%</fr>
+
+%<en>\section{Enumerate}
+%<fr>\section{Énumération}
+\label{SECyagenumerate}
+
+%<*en>
+As \texttt{yagitemize} mimics the usual \LaTeX\ \texttt{itemize},
+\texttt{yagenumerate} apes \LaTeX\ \texttt{enumerate} but with a
+yagusylo dressing \Sourire
+%</en>
+%<*fr>
+De même que \texttt{yagitemize} singe le \texttt{itemize} de \LaTeX,
+\texttt{yagenumerate} copie \texttt{enumerate} mais avec un costume
+yagusylo-esque.
+%</fr>
+
+%<en>\subsection{Special Keys for yagenumerate}
+%<fr>\subsection{Clés spéciales pour yagenumerate}
+\label{SSECspecialkeys}
+
+%<*en>
+The behaviour of the \texttt{yagenumerate} environment is controlled
+by the following keys:
+%</en>
+%<*fr>
+Le comportement de l'environnement \texttt{yagenumerate} est controlé
+par les clés suivantes:
+%</fr>
+\Optioncle{symfam}, \Optioncle{symcolor},
+\Optioncle{firstitemnum}, \Optioncle{enumlength}
+%<en>, and
+%<fr> et
+\Optioncle{enumpattern}.
+%<*en>
+Both \Optioncle{symfam} and \Optioncle{symcolor}, in this context, are
+different from the \emph{non special local keys} \Optioncle{symfam}
+and \Optioncle{symcolor}. We could say that there are two bunches of
+keys, one for \texttt{yagenumerate} \TO refered at as the \emph{enum
+ bunch}\TF and the other \TO which I will refer to as the
+\emph{general bunch}\label{generalbunch}\TF for all the rest and that,
+even if they looks alike, two keys attached to different bunches do
+not open the same doors.
+%</en>
+%<*fr>
+Les deux clés \Optioncle{symfam} et \Optioncle{symcolor}, dans ce
+contexte, sont différentes des \emph{clés locales ordinaires}
+\Optioncle{symfam} et \Optioncle{symcolor}. On pourrait dire qu'il y a
+deux trousseaux de clés, un pour \texttt{yagenumerate} \TO connu comme
+le \emph{trousseau enum}\TF et l'autre \TO appelé \emph{trousseau
+ général}\label{generalbunch}\TF pour tout le reste et que, même si
+elles se ressemblent, deux clés attachées à des trousseaux différents
+n'ouvrent pas les mêmes portes.
+%</fr>
+
+%<*en>
+Nonetheless, both \Optioncle{symfam} and\DescribeOptionCle{symfam
+ [enum]}\DescribeOptionCle{symcolor [enum]} \Optioncle{symcolor} of
+the enum bunch do control the symfam and the colour of the dings used
+in the enumeration. At the beginning of the document \TO after
+\cs{begin}|{document}|\TF they have values \texttt{pifont} and
+\texttt{blue} respectively.
+%</en>
+%<*fr>
+Toutefois, les clés\Optioncle{symfam} et\DescribeOptionCle{symfam
+ [enum]}\DescribeOptionCle{symcolor [enum]} \Optioncle{symcolor} du
+trousseau enum controllent effectivement la symfam et la couleur des
+dings utilisés dans l'énumération. Au début du document \TO après le
+\cs{begin}\BOP|{document}|\TF elles ont, respectivement, pour valeur
+\texttt{pifont} et \texttt{blue}.
+%</fr>
+
+%<*en>
+In a \texttt{yagenumerate} environment, each \cs{item} increment
+a\DescribeOptionCle{firstitemnum} counter which will point to the
+glyph used for that item. The number, in the symfam as usual, of the
+first such glyph is set by \Optioncle{firstitemnum} which defaults to
+\np{172}.
+%</en>
+%<*fr>
+Dans un environnement \texttt{yagenumerate}, chaque \cs{item}
+incrémente un\DescribeOptionCle{firstitemnum} compteur qui pointe sur
+le glyphe utilisé pour cet article. Le numéro, comme d'habitude dans
+la symfam, du premier glyphe est fixé par \Optioncle{firstitemnum} qui
+vaut par défaut \np{172}.
+%</fr>
+
+%<*en>
+With \Optioncle{enumlength} we control the number of items which
+may\DescribeOptionCle{enumlength} appear on the same level of
+\texttt{yagenumerate}. Its default value is \np{10}. After that you
+will have an error whatever the value of the key \Optioncle{onerror}.
+%</en>
+%<*fr>
+La clé \Optioncle{enumlength} fixe le nombre d'articles pouvant
+apparaitre\DescribeOptionCle{enumlength} au même niveau de
+\texttt{yagenumerate}. Sa valeur par défaut est \np{10}. Au delà, on
+aura une erreur quelle que soit la valeur de la clé
+\Optioncle{onerror}.
+%</fr>
+
+%<*en>
+The special key \Optioncle{enumpattern} is even more
+special.\DescribeOptionCle{enumpattern} You will read more detailled
+explanations about it in the following section.
+%</en>
+%<*fr>
+La clé spéciale \Optioncle{enumpattern} est encore plus
+spéciale.\DescribeOptionCle{enumpattern} J'en donne une explication
+détaillée dans la section suivante.
+%</fr>
+
+%<en>\subsection{Patterns and how to create them}
+%<fr>\subsection{Les motifs et leur création}
+\label{SSECyagenumeratepatterns}
+
+%<*en>
+A \texttt{pattern} for \texttt{yagenumerate} is a means of keeping and
+calling a whole set of special keys.
+%</en>
+%<*fr>
+Un \texttt{pattern} \TO motif\TF pour \texttt{yagenumerate} est un
+moyen de conserver et appeler un ensemble complet de clés spéciales.
+%</fr>
+
+
+%<en>There are four pre-defined pattern, viz.\
+%<fr>Il y a quatre motifs prédéfinis, à savoir
+\texttt{piwcr}, \texttt{piwcs}, \texttt{pibcr}
+%<en>, and
+%<fr>et
+\texttt{pibcs}.
+%<en>The defaut pattern is
+%<fr>Le motif par défaut est
+\texttt{piwcr}.
+%<en>In those names
+%<fr>Dans ces noms
+\texttt{pi}
+%<en>means
+%<fr>signifie
+\texttt{pifont};
+\texttt{c}
+%<en>is for
+%<fr>est là pour
+\texttt{circle}; \texttt{w}
+%<en>for
+%<fr>pour
+\texttt{white}
+%<en>and
+%<fr>et
+\texttt{b}
+%<en>for
+%<fr>pour
+\texttt{black}
+%<en>which could be a bit misleading as you will soon see;
+%<fr>ce qui est peut-être maladroit comme on le verra bientot;
+\texttt{s}
+%<en>is for
+%<fr>est là pour
+\texttt{sans-serif}
+%<en>and
+%<fr>et
+\texttt{r}
+%<en>for
+%<fr>pour
+\texttt{roman}.
+%<en>They all limit the enumerate length to
+%<fr>Ils limitent tous la longueur de l'énumération à
+\np{10}.
+
+%<en>Here are the first number for those patterns:
+%<fr>Voici le premier nombre de chacun de ces motifs:
+
+\begin{yagitemize*}[maing]
+ \item \texttt{piwcr}: \yagding[pifont]{172}[blue]
+ \item \texttt{piwcs}: \yagding[pifont]{'300}[blue]
+ \item \texttt{pibcr}: \yagding[pifont]{'266}[blue]
+ \item \texttt{pibcs}: \yagding[pifont]{'312}[blue]
+\end{yagitemize*}
+
+%<*en>
+You can defined your own pattern with
+\cs{newenumpattern}\DescribeMacro{newenumpattern} the syntax of which
+is:
+%</en>
+%<*fr>
+On peut définir son propre motif avec
+\cs{newenumpattern}\DescribeMacro{newenumpattern} dont la syntaxe est:
+%</fr>
+\begin{CodeEx*}
+ \cs{newenumpattern}\marg{patname}\marg{\LISTKV}
+\end{CodeEx*}%
+%<*en>
+in which \meta{patname} is the name of the pattern and \meta{\LISTKV}
+contains at least \Optioncle{symfam}, \Optioncle{firstitemnum}, and
+\Optioncle{enumlength}. If \Optioncle{symcolor} is not used, the
+colour of the pattern will be the default one at the time of the
+definition. I have not provided a mechanism similar to that of
+\cs{defdingname}, feel free to ask if you find it would be useful.
+%</en>
+%<*fr>
+où \meta{patname} est le nom du motif et où \meta{\LISTKV} contient au
+moins \Optioncle{symfam}, \Optioncle{firstitemnum} et
+\Optioncle{enumlength}. Si l'on n'utilise pas \Optioncle{symcolor}, la
+couleur du motif sera la couleur courante au moment de la
+définition. Je n'ai pas prévu de mécanisme semblable à celui de
+\cs{defdingname} mais on peut me le demander si l'on n'en éprouve le
+besoin.
+%</fr>
+
+%<en>\subsection{The environment yagenumerate}
+%<fr>\subsection{L'environnement yagenumerate}
+\label{SSECyagenumerateenvir}
+
+%<*en>
+The environment \texttt{yagenumerate} begins
+with\DescribeEnv{yagenumerate}
+%</en>
+%<*fr>
+L'environnement \texttt{yagenumerate} commence
+avec\DescribeEnv{yagenumerate}
+%</fr>
+\begin{CodeEx*}
+ \cs{begin}|{yagenumerate}|\oarg{\LISTKV/\STAR[1]}
+\end{CodeEx*}%
+%<*en>
+and inside you will use \cs{item} as in a usual \LaTeX\
+\texttt{enumerate}.
+%</en>
+%<*fr>
+et à l'intérieur on utilise \cs{item} comme il est habituel en \LaTeX.
+%</fr>
+
+%<*en>
+If there is no argument, \CAD you type something like
+%</en>
+%<*fr>
+S'il n'y a pas d'argument, \CAD si l'on a saisi quelque chose comme
+%</fr>
+\begin{CodeEx*}
+ \cs{begin}|{yagenumerate}|\\
+ \hspace*{6em}\cs{item} |...|
+\end{CodeEx*}%
+%<*en>
+then the aspect of the enumeration is provided by the current values
+of \Optioncle{symfam}, \Optioncle{symcolor}, \Optioncle{firstitemnum},
+and \Optioncle{enumlength}.
+%</en>
+%<*fr>
+alors l'aspect de l'énumération est déterminée par les valeurs
+courantes de \Optioncle{symfam}, \Optioncle{symcolor},
+\Optioncle{firstitemnum} et \Optioncle{enumlength}.
+%</fr>
+
+%<*en>
+If the argument is a \STAR[1] then the aspect is controlled by the
+current default pattern.
+%</en>
+%<*fr>
+Si l'argument est \STAR[1], l'aspect est déterminé par le motif par
+défaut courant.
+%</fr>
+
+%<*en>
+Lastly the aspect is determined by the list of key-value pairs
+provided by the user. The keys not explicity provided will have their
+default values.
+%</en>
+%<*fr>
+Enfin on peut fixer l'aspect à l'aide d'une liste de paires
+clé-valeur. Les clés qui ne sont pas fournies ont alors leur valeur
+par défaut.
+%</fr>
+
+%<*en>
+Because \texttt{yagenumerate} redefines \cs{item} you can't use a
+normal \texttt{enumerate} nested in a \texttt{yagenumerate} without
+using the environment \texttt{notyagenum} as a kind of wrapper of the
+\LaTeX\ \texttt{enumerate}, \Voir{XMPLnotyagenum},
+example~\ref{XMPLnotyagenum}.
+%</en>
+%<*fr>
+Comme \texttt{yagenumerate} redéfinit \cs{item}, on ne peut utiliser
+un \texttt{enumerate} normal imbriqué dans un environnement
+\texttt{yagenumerate} sans utiliser l'environnement
+\texttt{notyagenum} comme une sorte d'enveloppe du
+\texttt{enumerate}de \LaTeX, \Voir{XMPLnotyagenum},
+exemple~\ref{XMPLnotyagenum}.
+%</fr>
+
+%<*en>
+The limits of nesting are those of \LaTeX.
+%</en>
+%<*fr>
+Les limites d'imbrication sont celles de \LaTeX.
+%</fr>
+
+%<en>\subsection{To Set the Environment}
+%<fr>\subsection{Définir l'environnement}
+\label{SSECyagenumeratesettings}
+
+%<*en>
+To set the keys which govern the aspect of \texttt{yagenumerate}
+you\DescribeMacro{setyagenumeratekeys} can use the macro
+\cs{set}\BOP|yag|\BOP|enu|\BOP|meratekeys| which has a syntax analog
+to that of \cs{setyagusylokeys}, \Voir[m]{setyagusylokeys}.
+%</en>
+%<*fr>
+Pour régler les clés qui gouvernent l'aspect de \texttt{yagenumerate},
+on peut utiliser la macro\DescribeMacro{setyagenumeratekeys}
+\cs{set}\BOP|yag|\BOP|enu|\BOP|me|\BOP|ra|\BOP|te|\BOP|keys| dont la
+syntaxe est analogue à celle de
+\cs{set}\BOP|ya|\BOP|gu|\BOP|sy|\BOP|lo|\BOP|keys|,
+\Voir[m]{setyagusylokeys}.
+%</fr>
+
+%<*en>
+With \cs{setyagenumeratekeys}|{*}| keys \Optioncle{symfam},
+\Optioncle{symcolor}, \Optioncle{firstitemnum},
+\Optioncle{enumlength}, and \Optioncle{enumpattern} revert to
+their default values.
+%</en>
+%<*fr>
+Avec \cs{setyagenumeratekeys}|{*}|, les clés \Optioncle{symfam},
+\Optioncle{symcolor}, \Optioncle{firstitemnum}, \Optioncle{enumlength}
+et \Optioncle{enumpattern} retrouvent leurs valeurs par défaut.
+%</fr>
+
+%<en>\section{Miscellaneous}
+%<fr>\section{Mélanges}
+
+%<*en>
+I put here some items I have not yet been able to insert cleverly in
+the course of the documentation.
+%</en>
+%<*fr>
+Je place ici quelques sujets que je n'ai pas été capable d'introduire
+de manière pertinente jusque maintenant.
+%</fr>
+
+%<en>\subsection{Configuration file}
+%<fr>\subsection{Fichier de configuration}
+
+%<*en>
+It is possible to use a configuration file. \Pkg{yagusylo} may read
+the file \texttt{yagusylo.cfg} if you have set the boolean
+key\DescribeOptionCle{configfile} \Optioncle{configfile} to
+\OptionvalP{true}. Its default value is \OptionvalP{false}. The file
+\texttt{yagusylo.cfg} must be findable by \TeX. In case it is not an
+error will be produced.
+%</en>
+%<*fr>
+On peut utiliser un fichier de configuration. \Pkg{yagusylo} lira le
+fichier \texttt{yagusylo.cfg} si l'on a donné la valeur
+\OptionvalP{true} à la clé\DescribeOptionCle{configfile}
+\Optioncle{configfile}. Sa valeur par défaut est
+\OptionvalP{false}. \TeX\ doit pouvoir trouver le fichier
+\texttt{yagusylo.cfg} sinon on aura une erreur.
+%</fr>
+
+%<en>\subsection{Colours and How to Get Rid of It}
+%<fr>\subsection{Les couleurs et comment s'en débarrasser}
+
+%<*en>
+As stated before the colour management is devoluted to \Pkg{xcolor}
+if\DescribeOptionCle{color} the key \Optioncle{color} is set,
+globally, to \OptionvalP{true}. That provides two means of reverting
+to black on white only.
+%</en>
+%<*fr>
+Comme je l'écris plus haut, la gestion des couleurs est laissée à
+\Pkg{xcolor} si\DescribeOptionCle{color} la clé \Optioncle{color} est
+réglée, globalement, sur \OptionvalP{true}. Cela fournit deux moyens
+de repasser en noir et blanc.
+%</fr>
+
+%<*en>
+The first method is simply to change the value of \Optioncle{color} to
+\OptionvalP{false}. All the colours of yagusylo will be then turned
+off.
+%</en>
+%<*fr>
+La première méthode consiste simplement à changer la valeur de
+\Optioncle{color} en \OptionvalP{false}. Toutes les couleurs de
+yagusylo seront alors supprimées.
+%</fr>
+
+%<*en>
+The second method is to pass the option \texttt{monochrome} to
+\Pkg{xcolor}. To do so you will load \Pkg{yagusylo} thus:
+%</en>
+%<*fr>
+La seconde méthode est de passer l'option \texttt{monochrome} à
+\Pkg{xcolor}. Pour ce faire, on chargera \Pkg{yagusylo} comme suit:
+%</fr>
+\begin{CodeEx}
+ \cs{usepackage}|[color=true, XcolorOptions=monochrome]{yagusylo}|
+\end{CodeEx}
+
+%<*en>
+I will seize the opportunity of mentioning
+\Optioncle{XcolorOptions}\DescribeOptionCle{XcolorOptions} to add
+this: if you want to pass more than one options to \Pkg{xcolor} you
+have to list them inside curly braces thus:
+%</en>
+%<*fr>
+Je profite de ce que je mentionne
+\Optioncle{XcolorOptions}\DescribeOptionCle{XcolorOptions} pour
+ajouter ceci: si l'on veut passer plus d'une option à \Pkg{xcolor}, on
+doit en placer la liste entre accolades comme ceci:
+%</fr>
+\begin{CodeEx}
+ \cs{usepackage}|[color=true, XcolorOptions={monochrome, table}]{yagusylo}|
+\end{CodeEx}
+
+\newpage{}
+%<en>\part{Summary of usage}
+%<fr>\part{Résumé de l'utilisation}
+\label{SECsummary}
+
+%<en>\section{The Package Keys}
+%<fr>\section{Les clés de l'extension}
+
+%<*en>
+The table~\ref{TABsymfams} lists the symfams known to the day by
+\Pkg{yagusylo}, the symfams are also the possible values of the key
+\Optioncle{symfam}.
+%</en>
+%<*fr>
+La table~\ref{TABsymfams} donne la liste de toutes les symfams connues
+à ce jour par \Pkg{yagusylo}, ces symfams sont les valeurs possibles
+de la clé \Optioncle{symfam}.
+%</fr>
+
+\begin{table}[H,h,t]\centering
+\newlength{\templong}\settowidth{\templong}{ifsymgeonarrow}
+\begin{tabular}[t]{|>{\ttfamily}l p{\templong} || >{\ttfamily}l
+ p{\templong} |}\hline
+%<en>package
+%<fr>extension
+& symfam &
+%<en>package
+%<fr>extension
+& symfam \\ \hline\hline
+pifont & pifont & marvosym & marvosym \\
+ifsym & ifsym & fourier & fourier \\
+ & ifsymgeo & wasysym & wasysym \\
+ & ifsymgeonarrow & bbding & bbding \\
+ & ifsymgeowide & dingbat & dingbat \\
+ & ifsymweather & & ark \\
+ & ifsymclock & & \\ \hline
+\end{tabular}
+%<en>\caption{The Symfams}
+%<fr>\caption{Les symfams}
+\label{TABsymfams}
+\end{table}
+
+%<*en>
+The table~\ref{TAByagusylokeys} shows all the option keys, default
+values and other possible values. Self-understandingly, when I write
+``any length'' it must be understood that that length has to make
+sense in the context.
+%</en>
+%<*fr>
+La table~\ref{TAByagusylokeys} montre toutes les clés d'option, leurs
+valeurs par défaut et toutes les autres valeurs possibles. Bien
+entendu, lorsque j'écris \og n'importe quelle longueur\fg, on doit
+comprendre que cette longueur doit avoir du sens dans le contexte de
+son utilisation.
+%</fr>
+
+\begin{table}[H,h,t]\centering
+ \begin{tabular}[c]{|>{\ttfamily}l l l|}\hline
+%<en> key & default value & other possible values\\ \hline\hline
+%<fr> clé & valeur par défaut & autres valeurs possibles\\ \hline\hline
+%<en> \multicolumn{3}{|c|}{Global option keys}\\
+%<fr> \multicolumn{3}{|c|}{Clés d'options globales}\\
+ info & normal & verbose, mute\\
+ onerror & tough & nice\\
+ color & false & true\\
+%<en> XcolorOptions & & list of options known by \Pkg{xcolor}\\
+%<fr> XcolorOptions & & liste d'options connues par \Pkg{xcolor}\\
+ configfile & false & true\\ \hline
+%<en> \multicolumn{3}{|c|}{Local option keys, general bunch}\\
+%<fr> \multicolumn{3}{|c|}{Clés d'options locales, trousseau général}\\
+ symfam & pifont &
+%<en>see table~\ref{TABsymfams}\\
+%<fr>voir la table~\ref{TABsymfams}\\
+ symcolor & red &
+%<en>any colour known by \Pkg{xcolor}\\
+%<fr>toute couleur connue de \Pkg{xcolor}\\
+ leadtype & l & c, x \\
+ symplace & c & l, r, a, n \\
+ sympos & 0 &
+%<en>integer between \np{0} and \np{1000} inclusive\\
+%<fr>entier entre \np{0} et \np{1000} bornes comprises\\
+ boxwidth & \np{0.2} in &
+%<en>any non-negative length\\
+%<fr>n'importe quelle longueur positive\\
+ before & \np{0} pt &
+%<en>any non-negative length \\
+%<fr>n'importe quelle longueur positive\\
+ after & \np{0} pt &
+%<en>any non-negative length \\
+%<fr>n'importe quelle longueur positive\\
+ head & \np{36.135} pt &
+%<en>any length \\
+%<fr>n'importe quelle longueur\\
+ tail & \np{36.135} pt &
+%<en>any length \\ \hline
+%<fr>n'importe quelle longueur\\
+%<en> \multicolumn{3}{|c|}{Local option keys, enum bunch}\\
+%<fr> \multicolumn{3}{|c|}{Clés d'options locales, trousseau enum}\\
+ firstitemnum & \np{172} &
+%<en>integer between \np{0} and \np{255} inclusive\\
+%<fr>entier entre \np{0} et \np{255} bornes comprises\\
+ enumlength & \np{10} &
+%<en>integer\\
+%<fr>entier\\
+ symcolor & blue &
+%<en>any colour known by \Pkg{xcolor}\\
+%<fr>toute couleur connue de \Pkg{xcolor}\\
+ symfam & pifont &
+%<en>see
+%<fr>voir la
+table~\ref{TABsymfams} \\ \hline
+ \end{tabular}
+%<en>\caption{The Keys of \Pkg{yagusylo}}
+%<fr>\caption{Clés de \Pkg{yagusylo}}
+\label{TAByagusylokeys}
+\end{table}
+
+%<en>\section{The Commands and Environments}
+%<fr>\section{Commandes et environnements}
+
+%<*en>
+I give here all the possible usages of the \Pkg{yagusylo} macros and
+environments.
+%</en>
+%<*fr>
+Je donne ici toutes les utilisations possibles des commandes et
+environnements de \Pkg{yagusylo}.
+%</fr>
+
+%<*en>
+I will use the following \meta{denomination}s to refer to some well
+defined objects:
+%</en>
+%<*fr>
+J'utiliserai les \meta{denomination}s suivantes pour faire référence à
+quelques objets bien définis:
+%</fr>
+
+\begin{yagenumerate}[symfam=wasysym,%
+ firstitemnum=88, enumlength=14, symcolor=purple]
+ \item \meta{\CHARNUM}:
+%<en>an integer between \np{0} and \np{255} inclusive,
+%<fr>un entier entre \np{0} et \np{255} bornes comprises;
+ \item \meta{\NUMBER}:
+%<en>an integer for which some additional properties could be provided,
+%<fr>un entier pour lequel on peut fournir quelques propriétés supplémentaires;
+ \item \meta{symfam}:
+%<en>the symbolic name of a symfam as listed in
+%<fr>le nom symbolique de la symfam comme donné dans la
+table~\ref{TABsymfams}
+%<en>,
+%<fr>;
+ \item \meta{\COLOUR}:
+%<en>the symbolic name of a colour known by \Pkg{xcolor},
+%<fr>le nom symbolique d'une couleur connue de \Pkg{xcolor};
+ \item \meta{\DINGNAME}:
+%<en>the name of a ding as defined with
+%<fr>le nom d'un ding défini avec
+\cs{defdingname(+)}
+%<en>,
+%<fr>;
+ \item \meta{defext}:
+%<en>the ``extension'' of the definition, can be |local| \TO default\TF or |global|,
+%<fr>l'étendue de la définition, peut être |local| \TO valeur par défaut\TF ou |global|;
+ \item \meta{\GLIST}:
+%<*en>
+a list which consists of any number of key-value pairs in which the
+keys are attached to the general bunch,
+%</en>
+%<*fr>
+une liste composée d'un nombre quelconque de paires clé-valeur dans
+lesquelles les clés sont attachées au trousseau général;
+%</fr>
+\Voir{TAByagusylokeys},
+ \item \meta{\ELIST}:
+%<*en>
+a list which consists of any number of key-value pairs in which the
+keys are attached to the enum bunch,
+%</en>
+%<*fr>
+une liste composée d'un nombre quelconque de paires clé-valeur dans
+lesquelles les clés sont attachées au trousseau enum;
+%</fr>
+\Voir{TAByagusylokeys},
+ \item \meta{\LENGTH}:
+%<en>any \LaTeX\ length,
+%<fr>n'importe quelle longueur \LaTeX ienne;
+ \item \meta{\PLENGTH}:
+%<en>any non-negative \LaTeX\ length.
+%<fr>n'importe quelle longueur \LaTeX ienne positive.
+\end{yagenumerate}
+
+%<*en>
+By the way, the preceding yagenumaration has been obtain with
+%</en>
+%<*fr>
+Au passage, l'énumération précédente, à la yagusylo, est obtenue avec
+%</fr>
+\begin{CodeEx}
+ \cs{begin}|{yagenumerate}|\BOP|[symfam=wasysym,| |firstitemnum=88,|
+ |enumlength=14,| |sym|\BOP|co|\BOP|lor|\BOP|=|\BOP|purple]|
+\end{CodeEx}
+
+%<en>\subsection{One Glyph Macros}
+%<fr>\subsection{Macros pour un glyphe}
+
+\begin{CodeEx}
+ \cs{yagding}\marg{\CHARNUM}\SAUT
+ \cs{yagding}\marg{\CHARNUM}\oarg{colour}\SAUT
+ \cs{yagding}\oarg{symfam}\marg{\CHARNUM}\SAUT
+ \cs{yagding}\oarg{symfam}\marg{\CHARNUM}\oarg{\COLOUR}\SAUT
+ \cs{yagding}\marg{\DINGNAME}\SAUT
+\end{CodeEx}
+
+\begin{CodeEx*}
+ \cs{yagding+}\oarg{\ENC}\marg{\FAMILY}\marg{\SERIES/\STAR}%
+ \marg{\SHAPE/\STAR}\marg{\CHARNUM}\oarg{\COLOUR}
+\end{CodeEx*}%
+%<*en>
+where \meta{\ENC} is a font encoding (default |U|), \meta{\FAMILY} a
+font family, \meta{\SERIES} a font series \TO use \STAR[1] to provide
+no series\TF, \meta{\SHAPE} a font shape \TO use \STAR[1] to provide no
+shape.
+%</en>
+%<*fr>
+où \meta{\ENC} est un codage de fonte (défaut |U|), \meta{\FAMILY} une
+famille de fonte, \meta{\SERIES} une série de fonte \TO utiliser
+\STAR[1] pour ne fournir aucune série\TF, \meta{\SHAPE} une forme,
+\emph{shape}, de fonte \TO utiliser \STAR[1] pour ne fournir aucune
+forme.
+%</fr>
+
+\VSP
+
+\begin{CodeEx}
+ \cs{defdingname}\marg{\CHARNUM}\marg{\DINGNAME}\SAUT
+ \cs{defdingname}\oarg{symfam}\marg{\CHARNUM}\marg{\DINGNAME}\SAUT
+ \cs{defdingname}|[*]|\marg{\CHARNUM}\marg{\DINGNAME}\SAUT
+ \cs{defdingname}\oarg{symfam}\oarg{defext}\marg{\CHARNUM}\marg{\DINGNAME}\SAUT
+ \cs{defdingname}|[*]|\oarg{defext}\marg{\CHARNUM}\marg{\DINGNAME}\SAUT
+ \cs{defdingname}\marg{\CHARNUM}\marg{\DINGNAME}\oarg{\COLOUR}\SAUT
+ \cs{defdingname}\oarg{symfam}\marg{\CHARNUM}\marg{\DINGNAME}\oarg{\COLOUR}\SAUT
+ \cs{defdingname}|[*]|\marg{\CHARNUM}\marg{\DINGNAME}\oarg{\COLOUR}\SAUT
+ \cs{defdingname}\oarg{symfam}\oarg{defext}\marg{\CHARNUM}\marg{\DINGNAME}\oarg{\COLOUR}\SAUT
+ \cs{defdingname}|[*]|\oarg{defext}\marg{\CHARNUM}\marg{\DINGNAME}\oarg{\COLOUR}\SAUT
+ \cs{defdingname}\marg{\CHARNUM}\marg{\DINGNAME}|[*]|\SAUT
+ \cs{defdingname}\oarg{symfam}\marg{\CHARNUM}\marg{\DINGNAME}|[*]|\SAUT
+ \cs{defdingname}|[*]|\marg{\CHARNUM}\marg{\DINGNAME}|[*]|\SAUT
+ \cs{defdingname}\oarg{symfam}\oarg{defext}\marg{\CHARNUM}\marg{\DINGNAME}|[*]|\SAUT
+ \cs{defdingname}|[*]|\oarg{defext}\marg{\CHARNUM}\marg{\DINGNAME}|[*]|\SAUT
+\end{CodeEx}
+
+\begin{CodeEx}
+ \cs{defdingname+}\oarg{enc}\oarg{defext}\marg{\FAMILY}\marg{\SERIES}\SAUT[9em]
+ \marg{\SHAPE}\marg{\CHARNUM}\marg{\DINGNAME}\oarg{\COLOUR/\STAR}
+\end{CodeEx}
+
+\VSP
+
+\begin{CodeEx}
+ \cs{setyagusylokeys}\marg{\GLIST}\SAUT
+ \cs{setyagusylokeys}|{*}|
+\end{CodeEx}
+
+%<en>\subsection{Filling and Line Drawing}
+%<fr>\subsection{Remplissage et ligne}
+
+\begin{CodeEx}
+ \cs{yagfill}\marg{\CHARNUM}\SAUT
+ \cs{yagfill}\oarg{\GLIST}\marg{\CHARNUM}
+\end{CodeEx}
+
+\VSP
+
+\begin{CodeEx}
+ \cs{yagfill*}\marg{\DINGNAME}\SAUT
+ \cs{yagfill*}\oarg{\GLIST}\marg{\DINGNAME}
+\end{CodeEx}
+
+\VSP
+
+\begin{CodeEx*}
+ \cs{yagfill+}\marg{\MATERIAL}\SAUT
+ \cs{yagfill+}\oarg{\GLIST}\marg{\MATERIAL}
+\end{CodeEx*}%
+%<*en>
+where \meta{\MATERIAL} is something which can be typeset and has
+positive width. \textbf{Caution}: do not expect it to work with just
+anything!
+%</en>
+%<*fr>
+où \meta{\MATERIAL} est quelque chose qui peut être composé et a une
+largeur positive. \textbf{Attention}: on ne s'attendra pas à ce que
+cette macro fonctionne avec n'importe quoi!
+%</fr>
+
+\VSP
+
+\begin{CodeEx}
+ \cs{setyagline}\marg{\LENGTH}\SAUT
+ \cs{setyagline}\marg{\LENGTH}\oarg{\LENGTH}
+\end{CodeEx}
+
+\VSP
+
+\begin{CodeEx}
+ \cs{yagline}\marg{\CHARNUM}\SAUT
+ \cs{yagline}\oarg{\GLIST}\marg{\CHARNUM}\SAUT
+ \cs{yagline*}\marg{\DINGNAME}\SAUT
+ \cs{yagline*}\oarg{\GLIST}\marg{\DINGNAME}\SAUT
+ \cs{yagline+}\marg{\MATERIAL}\SAUT
+ \cs{yagline+}\oarg{\GLIST}\marg{\MATERIAL}
+\end{CodeEx}
+
+%<en>\subsection{Itemize and Enumerate (Yagusylo Way)}
+%<fr>\subsection{Itemize et enumerate à la yagusylo}
+
+%<*en>
+All the environments are list-like, inside you have to use \cs{item}
+to achieve some meaningfull typesetting but it is up to you.
+I only give the syntax of the beginning of environments for I assume
+you know how to \texttt{end} them \Sourire
+%</en>
+%<*fr>
+Tous les environnements sont basés sur l'environnement
+\texttt{list}. On utilisera \cs{item} à l'intérieur pour obtenir une
+présentation intéressante mais cela vous regarde. Je ne donne la
+syntaxe que pour le début de l'environnement car je pense que l'on
+sait comment les clore \Sourire
+%</fr>
+
+\VSP
+
+\begin{CodeEx}
+ \cs{begin}|{yagitemize}|\marg{\CHARNUM}\SAUT
+ \cs{begin}|{yagitemize}||{*}|\SAUT
+ \cs{begin}|{yagitemize}|\oarg{symfam}\marg{\CHARNUM}\SAUT
+ \cs{begin}|{yagitemize}|\oarg{symfam}|{*}|\SAUT
+ \cs{begin}|{yagitemize}|\marg{\CHARNUM}\oarg{\COLOUR}\SAUT
+ \cs{begin}|{yagitemize}||{*}|\oarg{\COLOUR}\SAUT
+ \cs{begin}|{yagitemize}|\oarg{symfam}\marg{\CHARNUM}\oarg{\COLOUR}\SAUT
+ \cs{begin}|{yagitemize}|\oarg{symfam}|{*}|\oarg{\COLOUR}\SAUT
+\end{CodeEx}
+
+\VSP
+
+\begin{CodeEx}
+ \cs{begin}|{yagitemize*}|\SAUT
+ \cs{begin}|{yagitemize*}|\oarg{\DINGNAME}
+\end{CodeEx}
+
+\VSP
+
+\begin{CodeEx*}
+ \cs{setyagitemize}%
+%<en>\marg{special list}
+%<fr>\marg{liste spéciale}
+\end{CodeEx*}%
+%<*en>
+whith
+\begin{CodeEx*}
+\meta{special list} \(=\) \meta{triple}|.| \(\cdots\)
+\meta{triple}|.|\meta{triple}
+\end{CodeEx*}%
+%</en>
+%<*fr>
+avec
+\begin{CodeEx*}
+\meta{liste spéciale} \(=\) \meta{triplet}|.| \(\cdots\)
+\meta{triplet}|.|\meta{triplet}
+\end{CodeEx*}%
+%</fr>
+%<en>where
+%<fr>où
+\begin{CodeEx*}
+%<en>\meta{triple}
+%<fr>\meta{triplet}
+\(=\) \meta{symfam}|,|\meta{\CHARNUM}|,|\meta{\COLOUR}
+\end{CodeEx*}%
+%<*en>
+with the usual meaning of \meta{symfam}, \meta{\CHARNUM}, and
+\meta{\COLOUR}.
+%</en>
+%<*fr>
+avec le sens habituel de \meta{symfam}, \meta{\CHARNUM} et
+\meta{\COLOUR}.
+%</fr>
+
+\VSP
+
+\begin{CodeEx*}
+ \cs{setyagitemize*}
+%<en>\marg{list of \DINGNAMES}
+%<fr>\marg{liste de \DINGNAMES}
+\end{CodeEx*}%
+%<en>whith
+%<fr>avec
+\begin{CodeEx*}
+%<en>\meta{list of \DINGNAMES}
+%<fr>\meta{liste de \DINGNAMES}
+\(=\) \meta{\DINGNAME}|.| \(\cdots\)
+\meta{\DINGNAME}|.|\meta{\DINGNAME}
+\end{CodeEx*}%
+%<en>with the usual meaning of \meta{\DINGNAME}.
+%<fr>avec le sens habituel de \meta{\DINGNAME}.
+
+\VSP
+
+\begin{CodeEx}
+ \cs{begin}|{yagenumerate}|\SAUT
+ \cs{begin}|{yagenumerate}|\oarg{\ELIST}\SAUT
+ \cs{begin}|{yagenumerate}[*]|
+\end{CodeEx}
+
+\VSP
+
+\begin{CodeEx}
+ \cs{setyagenumeratekeys}\marg{\ELIST}\SAUT
+ \cs{setyagenumeratekeys}|{*}|
+\end{CodeEx}
+
+\VSP
+
+\begin{CodeEx*}
+ \cs{newenumpattern}\marg{patname}\marg{\ELIST}
+\end{CodeEx*}%
+%<*en>
+where \meta{patname} is a name you can later use as value for the key
+\Optioncle{enumpattern}.
+%</en>
+%<*fr>
+où \meta{patname} est un nom que l'on peut utiliser ensuite comme
+valeur de la clé \Optioncle{enum}\BOP|pat|\BOP|tern|.
+%</fr>
+
+\newpage{}
+%<*en>
+\part{Examples}
+%</en>
+%<*fr>
+\part{Exemples}
+%</fr>
+
+%<*en>
+\section{\texorpdfstring{\cs{yagding}, \cs{defdingname}, and
+ \cs{yagding*}}{yagding, defdingname, and yagding*}}
+%</en>
+%<*fr>
+\section{\texorpdfstring{\cs{yagding}, \cs{defdingname} et
+ \cs{yagding*}}{yagding, defdingname et yagding*}}
+%</fr>
+\label{SSECXMPLonesymbol}
+
+\begin{VerbatimOut}{xmpl.ltx}
+ \setyagusylokeys{symfam=fourier}
+ \begin{quote}
+%<en>inside \texttt{quote} environment\par
+%<fr>dans un environnement \texttt{quote}\par
+ \defdingname{116}{lHand}\yagding*{lHand}
+ \quad
+ \defdingname{116}{lHandStar}[*]\yagding*{lHandStar}
+ \quad
+ \defdingname[*][global]{116}{gHandRed}[red]\yagding*{gHandRed}
+ \quad
+ \defdingname[*][global]{116}{gHandStar}[*]\yagding*{gHandStar}
+ \quad \yagding{117}
+
+ \setyagusylokeys{symcolor=blue}
+ \yagding*{lHand}\quad\yagding*{lHandStar}\quad
+ \yagding*{gHandRed}\quad\yagding*{gHandStar}\quad \yagding{117}
+ \end{quote}
+%<en>outside \texttt{quote} environment\par
+%<fr>hors environnement \texttt{quote}\par
+ \yagding*{lHand}\quad\yagding*{lHandStar}\quad
+ \yagding*{gHandRed}\quad\yagding*{gHandStar}\quad \yagding{117}
+
+ \setyagusylokeys{symcolor=green, symfam=pifont}
+ \yagding*{lHand}\quad\yagding*{lHandStar}\quad
+ \yagding*{gHandRed}\quad\yagding*{gHandStar}\quad \yagding{117}
+\end{VerbatimOut}
+
+\Exemple{\cs{defdingname}}
+
+\begin{VerbatimOut}{xmpl.ltx}
+ \yagding+{logo}{m}{n}{77}[blue]\yagding+{logo}{m}{n}{69}[red]%
+ \yagding+{logo}{m}{n}{84}[gray]\yagding+{logo}{m}{n}{65}[black]%
+ \yagding+{logo}{m}{n}{80}[orange]\yagding+{logo}{m}{n}{79}[purple]%
+ \yagding+{logo}{m}{n}{83}[brown]\yagding+{logo}{m}{n}{84}[green]
+\end{VerbatimOut}
+
+\Exemple{\cs{yagding+}}
+
+%<*en>
+\section{\texorpdfstring{\cs{yafgill} and \cs{yagfill*}}{yafgill and yagfill*}}
+%</en>
+%<*fr>
+\section{\texorpdfstring{\cs{yafgill} et \cs{yagfill*}}{yafgill et yagfill*}}
+%</fr>
+\label{SSECXMPLyagfill}
+
+%<en>\subsection{The Key leadtype}
+%<fr>\subsection{La clé \og leadtype\fg}
+
+\begin{VerbatimOut}{xmpl.ltx}
+thinggummy\yagfill{84}kinda big%
+\setyagusylokeys{boxwidth=2cm,symcolor=gray}\par
+thinggummy\yagfill{84}kinda big\par
+thing\yagfill{84}kinda very very big\par
+thinggummy\yagfill[leadtype=x]{84}kinda big\par
+thing\yagfill[leadtype=x]{84}kinda very very big\par
+thinggummy\yagfill[leadtype=c]{84}kinda big\par
+thing\yagfill[leadtype=c]{84}kinda very very big
+\end{VerbatimOut}
+\Exemple{\Optioncle{leadtype}}
+
+%<*en>
+\noindent and the same thing in which I show the boxes used by \TeX\
+to type the leaders:
+%</en>
+%<*fr>
+\noindent et la même chose dans laquelle je montre les boites
+utilisées par \TeX\ pour composer les \emph{leader}s:
+%</fr>
+
+\begin{FrameBox}
+\Exemple[sans]{*}
+\end{FrameBox}
+
+%<en>\subsection{The Key symplace}
+%<fr>\subsection{La clé symplace}
+
+%<en>\subsubsection{Values other than a}
+%<fr>\subsubsection{Valeurs différentes de a}
+
+\begin{VerbatimOut}{xmpl.ltx}
+\setyagusylokeys{boxwidth=2cm, symcolor=blue}%
+Caversham Heights \yagfill[symplace=c]{87}Bradshaw\par
+Caversham Heights \yagfill[symplace=l]{87}Bradshaw\par
+Caversham Heights \yagfill[symplace=r]{87}Bradshaw\par
+Caversham Heights \yagfill[symplace=n,sympos=250]{87}Bradshaw\par
+\end{VerbatimOut}
+
+\begin{FrameBox}
+\Exemple{*}[reglages]
+\end{FrameBox}
+
+%<en>\subsubsection{Value a}
+%<fr>\subsubsection{Valeur a}
+
+\begin{VerbatimOut}{xmpl.ltx}
+The Squire of High Potternews
+\yagfill[symplace=a, before=0.1in]{84}Jurisfiction\par
+The Squire of High Potternews
+\yagfill[symplace=a, before=0.1in, after=0.3in]{84}Jurisfiction\par
+The Squire of High Potternews
+\yagfill[symplace=a, after=0.3in]{84}Jurisfiction\par
+The Squire of High Potternews
+\yagfill[leadtype=x, symplace=a,
+ before=0.1in, after=0.3in]{84}Jurisfiction \par
+\end{VerbatimOut}
+
+%<en>\Exemple{\Optioncle{symplace}, \Optioncle{before}, and \Optioncle{after}}
+%<fr>\Exemple{\Optioncle{symplace}, \Optioncle{before} et \Optioncle{after}}
+
+\begin{VerbatimOut}{xmpl.ltx}
+\defdingname[fourier]{116}{mainv}[green]
+\defdingname[fourier]{116}{mainb}[blue]
+\defdingname[fourier]{116}{mainr}[red]
+\yagfill+[boxwidth=1.25cm]{\yagding*{mainv}%
+ \yagding*{mainb}\yagding*{mainr}}
+\end{VerbatimOut}
+
+\begin{FrameBox}
+\Exemple{\cs{yagfill+}}
+\end{FrameBox}
+
+%<*en>
+\section{\texorpdfstring{Environments \texttt{yagitemize} and
+ \texttt{yagitemize*}}
+ {Environments yagitemize and yagitemize*}}
+%</en>
+%<*fr>
+\section{\texorpdfstring{Environnements \texttt{yagitemize} et
+ \texttt{yagitemize*}}
+ {Environnements yagitemize et yagitemize*}}
+%</fr>
+
+%<*en>
+\subsection{\texorpdfstring{Environment \texttt{yagitemize*}}
+ {Environment yagitemize*}}
+%</en>
+%<*fr>
+\subsection{\texorpdfstring{Environnement \texttt{yagitemize*}}
+ {Environnement yagitemize*}}
+%</fr>
+
+\begin{VerbatimOut}{xmpl.ltx}
+\defdingname[fourier]{116}{mainv}[green]
+\defdingname[fourier]{116}{mainb}[blue]
+\defdingname[fourier]{116}{mainr}[red]
+\defdingname[fourier]{116}{maing}[gray]
+\setyagitemize*{mainv. mainb. mainr. maing}
+\begin{yagitemize*}\item A\begin{yagitemize*}\item B
+\begin{yagitemize*}\item C\begin{yagitemize*}\item D
+\begin{yagitemize*}\item E
+\begin{yagitemize*}\item F \item G \end{yagitemize*}
+\item H\end{yagitemize*} \item I
+\end{yagitemize*} \item J \end{yagitemize*} \item K
+\end{yagitemize*} \item L\end{yagitemize*}
+\end{VerbatimOut}
+
+%<en>\Exemple{\cs{yagitemize*} and \cs{setyagitemize*}}[yagitemizestar][+]
+%<fr>\Exemple{\cs{yagitemize*} et \cs{setyagitemize*}}[yagitemizestar][+]
+
+%<*en>
+With such a setup, for this document has \texttt{onerror=nice} at the
+loading of \Pkg{yagusylo}, you'll find the following text in the
+|.log| file:
+%</en>
+%<*fr>
+Avec un tel réglage, comme ce document a un \texttt{onerror=nice} au
+chargement de \Pkg{yagusylo}, on trouve le texte qui suit dans le
+fichier |. log|:
+%</fr>
+
+\begin{Verbatim}
+ Package yagusylo Warning: Too deeply nested for your setup.
+(yagusylo) I keep on using the last symbol.
+(yagusylo) You could have a look at your last
+(yagusylo) ``setyagitemize''
+(yagusylo) First ``yagitemize*'' too many on input line ***.
+\end{Verbatim}
+
+%<*en>
+\noindent in which \texttt{***} would give the number of the line on
+which is the fifth \cs{begin}|{yagitemize*}| for we provided explicit
+setup for four levels only.
+%</en>
+%<*fr>
+\noindent dans lequel \texttt{***} donne le numéro de la ligne sur
+laquelle se trouve le 5\ieme \cs{begin}|{yagitemize*}| puisque je n'ai
+donné le réglage explicite que pour seulement quatre niveaux.
+%</fr>
+
+\begin{VerbatimOut}{xmpl.ltx}
+ \begin{yagenumerate}
+ \item Thursday Next;
+ \begin{notyagenum}
+ \begin{enumerate}
+ \item Light armoured brigade;
+ \item SpecOps 27;
+ \end{enumerate}
+ \end{notyagenum}
+ \item Landen Park-Lane;
+ \end{yagenumerate}
+\end{VerbatimOut}
+
+%<en>\Exemple{yagenumerate and notyagenum}[notyagenum]
+%<fr>\Exemple{yagenumerate et notyagenum}[notyagenum]
+
+%<en>\section{The configuration file}
+%<fr>\section{Fichier de configuration}
+
+%<*en>
+Here is the core of the configuration file \texttt{yagusylo.cfg}
+provided, as an example, with this package:
+%</en>
+%<*fr>
+Voici le c½ur du fichier de configuration \texttt{yagusylo.cfg}
+fourni, comme exemple, avec cette extension:
+%</fr>
+
+\VerbatimInput[firstline=22, lastline=23]{yagusylo.cfg}
+
+\newpage{}
+
+
+%<en>\part{Showcase}
+%<fr>\part{Gallerie}
+\label{SECshowcase}
+
+\newlength{\malong}\setlength{\malong}{.18\textwidth-2em}
+
+\SHOWCASE
+
+\printindex
+\end{document}
+%</doc>
+%<*config>
+\defyagenumpattern{wastrol}{symfam=wasysym,
+ firstitemnum=88, enumlength=14, symcolor=purple}
+%</config>
+% \fi
+\endinput
+% \iffalse
+%%% Local Variables:
+%%% mode: doctex
+%%% coding: iso-8859-15
+%%% TeX-master: t
+%%% fill-column: 70
+%%% End:
+% \fi
diff --git a/macros/latex/contrib/yagusylo/yagusylo.ins b/macros/latex/contrib/yagusylo/yagusylo.ins
new file mode 100644
index 0000000000..970bbf8ecd
--- /dev/null
+++ b/macros/latex/contrib/yagusylo/yagusylo.ins
@@ -0,0 +1,59 @@
+%%
+%% Copyright (C) 2008 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.
+%%
+\input docstrip
+\keepsilent
+\preamble
+This is a generated file.
+
+Copyright (C) 2009 Y. 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.
+\endpreamble
+
+\askforoverwritefalse
+\generate{
+ \file{yagusylo.sty}{\from{yagusylo.dtx}{package,en}}
+ \file{yagusylo-tools.sty}{\from{yagusylo.dtx}{doc-sty}}
+ \file{yagusylo-en.ltx}{\from{yagusylo.dtx}{doc,en}}
+ \file{yagusylo-fr.ltx}{\from{yagusylo.dtx}{doc,fr}}
+ \file{yagusylo.cfg}{\from{yagusylo.dtx}{config}}
+ }
+\obeyspaces
+\Msg{*****************************************************************}
+\Msg{* *}
+\Msg{* To finish the installation you have to move the following *}
+\Msg{* file into a directory searched by TeX: *}
+\Msg{* yagusylo.sty *}
+\Msg{*****************************************************************}
+\Msg{* Pour finir l'installation vous devez placer *}
+\Msg{* le fichier suivant dans un dossier parcouru par TeX: *}
+\Msg{* yagusylo.sty *}
+\Msg{* *}
+\Msg{* To produce the documentation read the README file *}
+\Msg{* Pour produire la documentation lire le fichier LISEZMOI *}
+\Msg{* *}
+\Msg{** Happy TeXing **}
+\Msg{** TeXez dans la joie ! **}
+\Msg{*****************************************************************}
+\endbatchfile
diff --git a/macros/latex/contrib/yagusylo/yagusylo.pdf b/macros/latex/contrib/yagusylo/yagusylo.pdf
new file mode 100644
index 0000000000..60970fcd93
--- /dev/null
+++ b/macros/latex/contrib/yagusylo/yagusylo.pdf
Binary files differ
diff --git a/macros/latex/contrib/yagusylo/yagusylo.sty b/macros/latex/contrib/yagusylo/yagusylo.sty
new file mode 100644
index 0000000000..bcef7dad25
--- /dev/null
+++ b/macros/latex/contrib/yagusylo/yagusylo.sty
@@ -0,0 +1,561 @@
+%%
+%% This is file `yagusylo.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% yagusylo.dtx (with options: `package,en')
+%% This is a generated file.
+%%
+%% Copyright (C) 2009 Y. 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.
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\def\fileversion{v1.2}
+\def\filedate{2009/02/26}
+\def\docdate{2009/02/26}
+\def\fileinfo{Yet Another Grand Unified Symbols Loader
+ par Le TeXnicien de surface}
+\ProvidesPackage{yagusylo}
+ [\filedate\space\fileversion\space\fileinfo]
+\RequirePackage{xifthen}
+\RequirePackage{suffix}
+\RequirePackage{xargs}
+\newcommand*{\Y@GINFO}[2][]{}
+\newcommand*{\Y@GWARNING}[3]{}
+\define@choicekey*+[Y@G]{yagusylo.sty}{symfam}[\Y@G@SymFamChoice\nr]%
+ {marvosym,fourier,wasysym,bbding,dingbat,ark,ifsym,ifsymgeo,%
+ ifsymgeonarrow,ifsymgeowide,ifsymclock,ifsymweather,pifont}%
+ [pifont]%
+ {\Y@GINFO{You choose \Y@G@SymFamChoice}}%
+ {\PackageError{yagusylo}%
+ {The symbols family ``\Y@G@SymFamChoice'' is not yet known.}
+ {I don't know the family you required.\MessageBreak
+ If it's not a typo you may consider to contact me
+ (TdS)\MessageBreak to obtain support for it.}}
+\define@boolkey[Y@G]{yagusylo.sty}[Y@G@]{color}[false]{}
+\define@boolkey[Y@G]{yagusylo.sty}[Y@G@]{configfile}[false]{}
+\define@choicekey*+[Y@G]{yagusylo.sty}{info}[\Y@G@Info\nr]%
+ {mute,normal,verbose}[normal]{}{}
+\define@choicekey*+[Y@G]{yagusylo.sty}{onerror}[\Y@G@OnError\nr]%
+ {nice,tough}[tough]{}{}
+\define@key[Y@G]{yagusylo.sty}{XcolorOptions}[!Y@G!]%
+ {\def\Y@GXcolorOptions{#1}}
+\ExecuteOptionsX[Y@G]{symfam,color,XcolorOptions,info,onerror,configfile}
+\ProcessOptionsX[Y@G]\relax
+\let\nr\relax
+\ifY@G@color
+\ifthenelse{\equal{\Y@GXcolorOptions}{!Y@G!}}
+ {\RequirePackage{xcolor}}
+ {\RequirePackage[\Y@GXcolorOptions]{xcolor}
+ \PackageInfo{yagusylo}{Package xcolor loaded with options:
+ \Y@GXcolorOptions}}
+\define@key[Y@G]{yagusylo.sty}{symcolor}[red]{\def\Y@GSymColor{#1}}
+\setkeys[Y@G]{yagusylo.sty}{symcolor}
+\newcommand\Y@G@Couleur[1]{\color{#1}}
+\else
+\define@key[Y@G]{yagusylo.sty}{symcolor}[]{}
+\newcommand\Y@G@Couleur[1]{\relax}
+\def\Y@GSymColor{\relax}
+\fi
+\disable@keys[Y@G]{yagusylo.sty}{color,onerror,info}
+\newcommand\setyagusylokeys[1]{%
+ \ifthenelse{\equal{#1}{*}}%
+ {\setkeys[Y@G]{yagusylo.sty}{%
+ symfam,symcolor,%
+ leadtype,symplace,sympos,boxwidth,before,after,%
+ head,tail}}%
+ {\setkeys[Y@G]{yagusylo.sty}{#1}}}
+\AtEndOfPackage{%
+\PackageInfo{yagusylo}{^^J%
+============================================================^^J%
+^^J%
+****************** YAGUSYLO GLOBAL SETUPS ******************^^J%
+^^J%
+===================== GENERAL OPTIONS ======================^^J%
+^^J%
+option ``info'' ......... is ``\Y@G@Info''^^J%
+option ``onerror'' ...... is ``\Y@G@OnError''^^J%
+option ``color'' ........ is \ifY@G@color``true''\else``false''\fi^^J%
+option ``configfile'' ... is \ifY@G@configfile``true''\else``false''\fi^^J%
+^^J%
+-------------------- CHANGEABLE OPTIONS --------------------^^J%
+^^J%
+\ifY@G@color
+option ``symcolor'' ....... is ``\Y@GSymColor''^^J\fi
+option ``symfam'' ......... is ``\Y@G@SymFamChoice''^^J%
+option ``leadtype'' ....... is ``\Y@Gyagfillleadtype''^^J%
+option ``symplace'' ....... is ``\Y@Gyagfillsymplace''^^J%
+option ``sympos'' ......... is ``\Y@Gyagfillsympos''^^J%
+option ``boxwidth'' ....... is ``\Y@Gyagfillboxwidth''^^J%
+option ``before'' ......... is ``\Y@Gyagfillbefore''^^J%
+option ``after'' .......... is ``\Y@Gyagfillafter''^^J%
+option ``head'' ........... is ``\the\Y@Glinehead''^^J%
+option ``tail'' ........... is ``\the\Y@Glinetail''^^J%
+::::::::::::::::: OPTIONS FOR YAGENUMERATE :::::::::::::::::^^J%
+option ``firstitemnum'' ... is ``\number\Y@GEnumFirstItemNum''^^J%
+option ``enumlength'' ..... is ``\number\Y@GEnumLength''^^J%
+\ifY@G@color
+option ``symcolor'' ....... is ``\Y@GEnumSymColor''^^J\fi
+option ``symfam'' ......... is ``\Y@G@EnumSymFamChoice''^^J%
+------------------------------------------------------------^^J%
+^^J%
+The known patterns for environment ``yagenumerate'' are:^^J%
+``piwcr'' (default), ``piwcs'', ``pibcr'', and ``pibcs''.^^J%
+^^J%
+============================================================%
+\@gobbletwo}%
+\ifthenelse{\equal{\Y@G@Info}{verbose}}
+ {\renewcommand*{\Y@GINFO}[2][0]{\PackageInfo{yagusylo}{#2}}}{}%
+\ifthenelse{\equal{\Y@G@Info}{normal}}
+ {\renewcommand*{\Y@GINFO}[2][0]{%
+ \ifthenelse{#1>0}{\PackageInfo{yagusylo}{#2}}}{}}{}%
+ \ifthenelse{\equal{\Y@G@OnError}{tough}}
+ {\renewcommand*{\Y@GWARNING}[3]{\PackageError{yagusylo}{#1}{#3}}}{}
+ \ifthenelse{\equal{\Y@G@OnError}{normal}}
+ {\renewcommand*{\Y@GWARNING}[3]{\PackageError{yagusylo}{#1}{#3}}}{}
+ \ifthenelse{\equal{\Y@G@OnError}{nice}}
+ {\renewcommand*{\Y@GWARNING}[3]{\PackageWarning{yagusylo}{#1#2}}}{}}
+\newcommand\Y@G@U@FamilyDef[1]{\fontencoding{U}\fontfamily{#1}}
+\newcommand\Y@Gif[3]{%
+ \ifthenelse{\equal{#1}{#2}}{\Y@G@U@FamilyDef{#3}}{}}
+\newcommand\Y@GifE[4]{%
+ \ifthenelse{\equal{#1}{#2}}{\Y@G@U@FamilyDef{#3}#4}{}}
+\newcommand\Y@Gyagding[3]{{%
+ \Y@G@GetSymb{#1}\selectfont\Y@G@Couleur{#3}\char#2}}
+\newcommandx\yagding[3][1=\Y@G@SymFamChoice,3=\Y@GSymColor]{{%
+ \Y@G@GetSymb{#1}\selectfont\Y@G@Couleur{#3}\char#2}}
+\newcommand\Y@G@GetSymb[1]{%
+ \Y@GifE{#1}{marvosym}{mvs}{\fontseries{m}\fontshape{n}}%
+ \Y@Gif{#1}{fourier}{futs}%
+ \Y@Gif{#1}{wasysym}{wasy}%
+ \Y@Gif{#1}{bbding}{ding}%
+ \Y@Gif{#1}{dingbat}{dingbat}%
+ \Y@Gif{#1}{ark}{ark}%
+ \Y@Gif{#1}{ifsym}{ifsym}%
+ \Y@Gif{#1}{ifsymgeo}{ifgeo}%
+ \Y@GifE{#1}{ifsymgeonarrow}{ifgeo}{\fontshape{na}}%
+ \Y@GifE{#1}{ifsymgeowide}{ifgeo}{\fontshape{w}}%
+ \Y@Gif{#1}{ifsymclock}{ifclk}%
+ \Y@Gif{#1}{ifsymweather}{ifwea}%
+ \Y@Gif{#1}{pifont}{pzd}}
+\newcommandx\defdingname[5][1=*,2=local,5=\Y@GSymColor]{%
+ \Y@GINFO{You define ``#4'' with symbols family ``#1'' and color
+ ``#5''}%
+ \ifthenelse{\equal{#1}{*}}
+ {\ifthenelse{\equal{#2}{local}}
+ {\ifthenelse{\equal{#5}{*}}
+ {\expandafter\edef\csname Y@G@@ #4\endcsname
+ {\yagding[\Y@G@SymFamChoice]{#3}[\noexpand\Y@GSymColor]}}
+ {\expandafter\edef\csname Y@G@@ #4\endcsname
+ {\yagding[\Y@G@SymFamChoice]{#3}[#5]}}}%
+ {\ifthenelse{\equal{#2}{global}}
+ {\ifthenelse{\equal{#5}{*}}
+ {\expandafter\xdef\csname Y@G@@ #4\endcsname
+ {\yagding[\Y@G@SymFamChoice]{#3}[\noexpand\Y@GSymColor]}}
+ {\expandafter\xdef\csname Y@G@@ #4\endcsname
+ {\yagding[\Y@G@SymFamChoice]{#3}[#5]}}}%
+ {\Y@GWARNING{Value #2 not recognised} {.\MessageBreak The possible
+ values are ``local'' (default) and ``global''.\MessageBreak I
+ will assume you wanted ``local''} {The possible values are
+ ``local'' (default) and ``global''}}}}%
+ {\ifthenelse{\equal{#2}{local}}
+ {\ifthenelse{\equal{#5}{*}}
+ {\expandafter\edef\csname Y@G@@ #4\endcsname
+ {\yagding[#1]{#3}[\noexpand\Y@GSymColor]}}
+ {\expandafter\edef\csname Y@G@@ #4\endcsname
+ {\yagding[#1]{#3}[#5]}}}%
+ {\ifthenelse{\equal{#2}{global}}
+ {\ifthenelse{\equal{#5}{*}}
+ {\expandafter\xdef\csname Y@G@@ #4\endcsname
+ {\yagding[#1]{#3}[\noexpand\Y@GSymColor]}}
+ {\expandafter\xdef\csname Y@G@@ #4\endcsname
+ {\yagding[#1]{#3}[#5]}}}%
+ {\Y@GWARNING{Value #2 not recognised} {.\MessageBreak The possible
+ values are ``local'' (default) and ``global''.\MessageBreak I
+ will assume you wanted ``local''} {The possible values are
+ ``local'' (default) and ``global''}}}}}
+\WithSuffix\newcommandx\yagding+[6][1=U,6=\Y@GSymColor]{{%
+ \fontencoding{#1}\fontfamily{#2}%
+ \ifthenelse{\equal{#3}{*}}{}{\fontseries{#3}}%
+ \ifthenelse{\equal{#4}{*}}{}{\fontshape{#4}}%
+ \selectfont\Y@G@Couleur{#6}\char#5}}
+\WithSuffix\newcommand\yagding*[1]{%
+ \ifthenelse{\isnamedefined{Y@G@@ #1}}
+ {\csname Y@G@@ #1\endcsname}
+ {[\string? #1 \string?]%
+ \Y@GWARNING{The name #1 is not defined}
+ {.\MessageBreak
+ Or you forgot to define it\MessageBreak
+ or you defined it inside an alien group.\MessageBreak
+ In any case you used it}{}}}
+\WithSuffix\newcommandx\defdingname+[8] [1=U,2=local,8=\Y@GSymColor]{%
+ \ifthenelse{\equal{#2}{local}}%
+ {\ifthenelse{\equal{#8}{*}}%
+ {\expandafter\edef\csname Y@G@@ #7\endcsname
+ {\yagding+[#1]{#3}{#4}{#5}{#6}[\noexpand\Y@GSymColor]}}%
+ {\expandafter\edef\csname Y@G@@ #7\endcsname
+ {\yagding+[#1]{#3}{#4}{#5}{#6}[#8]}}}%
+ {\ifthenelse{\equal{#2}{global}}%
+ {\ifthenelse{\equal{#8}{*}}%
+ {\expandafter\xdef\csname Y@G@@ #7\endcsname
+ {\yagding+[#1]{#3}{#4}{#5}{#6}[\noexpand\Y@GSymColor]}}%
+ {\expandafter\xdef\csname Y@G@@ #7\endcsname
+ {\yagding+[#1]{#3}{#4}{#5}{#6}[#8]}}}%
+ {\Y@GWARNING{Value #2 not recognised} {.\MessageBreak The possible
+ values are ``local'' (default) and ``global''.\MessageBreak I
+ will assume you wanted ``local''} {The possible values are
+ ``local'' (default) and ``global''}}}}
+\newcommand{\Y@Gfill}[7]%
+{{\leavevmode
+ \dimendef\Y@Glongi=255\relax
+ \dimendef\Y@GBoxActualWidth=254\relax
+ \ifthenelse{\equal{#2}{l}}{\let\Leaders=\leaders}{}%
+ \ifthenelse{\equal{#2}{x}}{\let\Leaders=\xleaders}{}%
+ \ifthenelse{\equal{#2}{c}}{\let\Leaders=\cleaders}{}%
+ \ifthenelse{\equal{#3}{a}}
+ {\def\LaBoite{\hbox{\makebox{\hspace{#6}#1\hspace{#7}}}}}
+ {%
+ \settowidth{\Y@Glongi}{#1}%
+ \ifdim#5>\Y@Glongi%
+ \setlength{\Y@GBoxActualWidth}{#5}%
+ \else
+ \setlength{\Y@GBoxActualWidth}{\Y@Glongi}%
+ \Y@GINFO{The choosen value for ``boxwidth'' is too short,\MessageBreak
+ I will use the natural width of the symbol: \the\Y@GBoxActualWidth}\fi
+ \ifthenelse{\equal{#3}{n}}
+ {\ifthenelse{\(#4<0\)\or\(#4>1000\)}
+ {\Y@GWARNING{I don't understand what you want}
+ {.\MessageBreak I assume the default}
+ {You should read the documentation [[SECyagfillboxwidth]].}%
+ \def\LaBoite{\hbox{\makebox[\Y@GBoxActualWidth][c]{#1}}}}%
+ {\setlength{\Y@Glongi}{\Y@GBoxActualWidth-\Y@Glongi}%
+ \setlength{\Y@Glongi}{\Y@Glongi/1000*#4}%
+ \def\LaBoite{\hbox{\makebox%
+ [\Y@GBoxActualWidth][l]{\hspace*{\Y@Glongi}#1\hfill}}}}}%
+ {\def\LaBoite{\hbox{\makebox[\Y@GBoxActualWidth][#3]{#1}}}}}%
+ \Leaders\LaBoite\hfill\kern\z@}}
+\define@choicekey*+[Y@G]{yagusylo.sty}{leadtype}[\Y@Gyagfillleadtype\nr]%
+ {l,c,x}[l]%
+ {\Y@GINFO{Key ``leadtype'' is ``\Y@Gyagfillleadtype''}}%
+ {\PackageError{yagusylo}%
+ {Possible choices for key ``leadtype'': l (default), c or x}
+ {I don't know the type you required.\MessageBreak
+ Read the doc, please}}
+\define@choicekey*+[Y@G]{yagusylo.sty}{symplace}[\Y@Gyagfillsymplace\nr]%
+ {c,r,l,a,n}[c]%
+ {\Y@GINFO{Key ``symplace'' is ``\Y@Gyagfillsymplace''}}%
+ {\PackageError{yagusylo}%
+ {Possible choices for key ``symplace'': c (default), l, r, a or n}
+ {I don't know the place you required.\MessageBreak
+ Read the doc, please}}
+\define@key[Y@G]{yagusylo.sty}{sympos}[0]{%
+ \ifthenelse{\(#1<0\)\or\(#1>1000\)}
+ {\PackageError{yagusylo}
+ {Your choice ``#1'' for key ``sympos'' is out of bound}
+ {You should chose a interger between 0 and 1000.\MessageBreak
+ You should read the documentation}}
+ {\Y@GINFO{Keys ``sympos'' is ``#1''}%
+ \def\Y@Gyagfillsympos{#1}}}
+\define@key[Y@G]{yagusylo.sty}{boxwidth}[0.2in]{%
+ \ifthenelse{\dimtest{#1}<{0pt} \or \dimtest{#1}={0pt}}
+ {\PackageError{yagusylo}
+ {Your choice ``#1'' for key ``boxwidth'' is out of bound}
+ {You should chose a positive length.\MessageBreak
+ You should read the documentation}}
+ {\Y@GINFO
+ {You've asked for ``#1'' as box width.\MessageBreak
+ In any case the box will be at least\MessageBreak
+ as large as the symbol itself}}%
+ \def\Y@Gyagfillboxwidth{#1}}
+\define@key[Y@G]{yagusylo.sty}{before}[0pt]{%
+ \ifthenelse{\dimtest{#1}<{0pt}}
+ {\PackageError{yagusylo}
+ {Your choice ``#1'' for key ``before'' is out of bound}
+ {You should chose a non-negative length.\MessageBreak
+ You should read the documentation}}
+ {\Y@GINFO{Key ``before'' is ``#1''}}%
+ \def\Y@Gyagfillbefore{#1}}
+\define@key[Y@G]{yagusylo.sty}{after}[!Y@G!]{%
+ \ifthenelse{\equal{#1}{!Y@G!}}%
+ {\def\Y@Gyagfillafter{\Y@Gyagfillbefore}}%
+ {\ifthenelse{\dimtest{#1}<{0pt}}
+ {\PackageError{yagusylo}
+ {Your choice ``#1'' for key ``after'' is out of bound}
+ {You should chose a non-negative length.\MessageBreak
+ You should read the documentation}}
+ {\Y@GINFO{Key ``after'' is ``#1''}}%
+ \def\Y@Gyagfillafter{#1}}}
+\setkeys[Y@G]{yagusylo.sty}{leadtype,symplace,sympos,boxwidth,before,after}
+\newcommand\yagfill[2][!Y@G!]{%
+\begingroup
+\ifthenelse{\equal{#1}{!Y@G!}}{}%
+ {\setkeys[Y@G]{yagusylo.sty}{#1}}%
+ \Y@Gfill{\yagding{#2}}%
+ {\Y@Gyagfillleadtype}{\Y@Gyagfillsymplace}%
+ {\Y@Gyagfillsympos}{\Y@Gyagfillboxwidth}%
+ {\Y@Gyagfillbefore}{\Y@Gyagfillafter}%
+\endgroup}
+\WithSuffix\newcommand\yagfill*[2][!Y@G!]{%
+\begingroup
+\ifthenelse{\equal{#1}{!Y@G!}}%
+ {}%
+ {\setkeys[Y@G]{yagusylo.sty}{#1}}%
+\Y@Gfill{\yagding*{#2}}%
+ {\Y@Gyagfillleadtype}{\Y@Gyagfillsymplace}%
+ {\Y@Gyagfillsympos}{\Y@Gyagfillboxwidth}%
+ {\Y@Gyagfillbefore}{\Y@Gyagfillafter}%
+\endgroup}
+\WithSuffix\newcommand\yagfill+[2][!Y@G!]{%
+\begingroup
+\ifthenelse{\equal{#1}{!Y@G!}}{}%
+ {\setkeys[Y@G]{yagusylo.sty}{#1}}%
+\Y@Gfill{#2}%
+ {\Y@Gyagfillleadtype}{\Y@Gyagfillsymplace}%
+ {\Y@Gyagfillsympos}{\Y@Gyagfillboxwidth}%
+ {\Y@Gyagfillbefore}{\Y@Gyagfillafter}%
+\endgroup}
+\newlength{\Y@Glinehead}
+\newlength{\Y@Glinetail}
+\define@key[Y@G]{yagusylo.sty}{head}[0.5in]{%
+ \setlength{\Y@Glinehead}{#1}}
+\define@key[Y@G]{yagusylo.sty}{tail}[0.5in]{%
+ \setlength{\Y@Glinetail}{#1}}
+\setkeys[Y@G]{yagusylo.sty}{head,tail}
+\newcommandx\setyagline[2][2=!Y@G!]{%
+ \ifthenelse{\equal{#2}{!Y@G!}}%
+ {\setkeys[Y@G]{yagusylo.sty}{head=#1,tail=#1}}%
+ {\setkeys[Y@G]{yagusylo.sty}{head=#1,tail=#2}}}
+\newcommand{\yagline}[2][!Y@G!]%
+{\begingroup
+ \ifthenelse{\equal{#1}{!Y@G!}}{}%
+ {\setkeys[Y@G]{yagusylo.sty}{#1}}%
+ \par\noindent\hspace{\Y@Glinehead}%
+ \Y@Gfill{\yagding[\Y@G@SymFamChoice]{#2}}%
+ {\Y@Gyagfillleadtype}{\Y@Gyagfillsymplace}%
+ {\Y@Gyagfillsympos}{\Y@Gyagfillboxwidth}%
+ {\Y@Gyagfillbefore}{\Y@Gyagfillafter}%
+ \hspace{\Y@Glinetail}\kern\z@\par
+\endgroup}
+\WithSuffix\newcommand\yagline*[2][!Y@G!]%
+{\begingroup
+ \ifthenelse{\equal{#1}{!Y@G!}}{}%
+ {\setkeys[Y@G]{yagusylo.sty}{#1}}%
+ \par\noindent\hspace{\Y@Glinehead}%
+ \Y@Gfill{\yagding*{#2}}%
+ {\Y@Gyagfillleadtype}{\Y@Gyagfillsymplace}%
+ {\Y@Gyagfillsympos}{\Y@Gyagfillboxwidth}%
+ {\Y@Gyagfillbefore}{\Y@Gyagfillafter}%
+ \hspace{\Y@Glinetail}\kern\z@\par
+\endgroup}
+\WithSuffix\newcommand\yagline+[2][!Y@G!]%
+{\begingroup
+ \ifthenelse{\equal{#1}{!Y@G!}}{}%
+ {\setkeys[Y@G]{yagusylo.sty}{#1}}%
+ \par\noindent\hspace{\Y@Glinehead}%
+ \Y@Gfill{#2}%
+ {\Y@Gyagfillleadtype}{\Y@Gyagfillsymplace}%
+ {\Y@Gyagfillsympos}{\Y@Gyagfillboxwidth}%
+ {\Y@Gyagfillbefore}{\Y@Gyagfillafter}%
+ \hspace{\Y@Glinetail}\kern\z@\par
+\endgroup}
+\newcommand{\Y@GLevelTest}[6]{%
+ \ifthenelse%
+ {\cnttest{\value{Y@G#1}}<{\value{Y@G#2}}}%
+ {\setcounter{Y@G#3}{\value{Y@G#1}}}%
+ {\setcounter{Y@G#3}{\value{Y@G#2}}%
+ \ifthenelse{\cnttest{\value{Y@G#1}}={\value{Y@G#2}}}
+ {\Y@GWARNING{Too deeply nested for your setup}
+ {.\MessageBreak
+ I keep on using the last symbol.\MessageBreak
+ You could have a look at your last\MessageBreak
+ ``#4''\MessageBreak First ``#5'' too many}%
+ {You could have a look at your last\MessageBreak
+ ``#4''\MessageBreak First ``#5'' too many.\MessageBreak
+ You should read the documentation [[#6]].}}{}}}
+\newcounter{Y@GItemLevel}
+\newcounter{Y@GItemMark}
+\newcounter{Y@GYagitemizeMaxDepth}
+\newenvironmentx{yagitemize}[3][1=\Y@G@SymFamChoice,3=\Y@GSymColor]
+{\stepcounter{Y@GItemLevel}%
+ \ifthenelse{\equal{#2}{*}}
+ {\Y@GLevelTest{ItemLevel}{YagitemizeMaxDepth}{ItemMark}
+ {setyagitemize}{yagitemize}{5.1.2}%
+ \edef\numero{\roman{Y@GItemMark}}%
+ \begin{list}{%
+ \yagding%
+ [\csname Y@G@symfam@niveau\numero\endcsname]%
+ {\csname Y@G@symfam@numero\numero\endcsname}%
+ [\csname Y@G@symfam@couleur\numero\endcsname]}{}}
+ {\begin{list}{\yagding[#1]{#2}[#3]}{}}}%
+ {\end{list}\addtocounter{Y@GItemLevel}{-1}}
+\newcommand{\setyagitemize}[1]{%
+ \setcounter{Y@GYagitemizeMaxDepth}{0}%
+ \Y@Gsetyagitemize #1.Y@G@.\@nil}
+\def\Y@Gsetyagitemizeaux #1\fi{%
+ \fi \Y@Gsetyagitemize #1}%
+\def\Y@Gsetyagitemize #1.#2{%
+ \def\Y@Gfairemotif ##1,##2,##3\@Y@Gnil{%
+ \edef\Y@Gpremier{##1}\edef\Y@Gdeuxieme{##2}\edef\Y@Gtroisieme{##3}%
+ }
+ \ifx#2\@nil\relax
+ \else
+ \Y@Gfairemotif#1\@Y@Gnil
+ \stepcounter{Y@GYagitemizeMaxDepth}%
+ \edef\numero{\roman{Y@GYagitemizeMaxDepth}}%
+ \expandafter\edef\csname Y@G@symfam@niveau\numero\endcsname{\Y@Gpremier}
+ \expandafter\edef\csname Y@G@symfam@numero\numero\endcsname{\Y@Gdeuxieme}
+ \expandafter\edef\csname Y@G@symfam@couleur\numero\endcsname{\Y@Gtroisieme}
+ \Y@Gsetyagitemizeaux #2\fi}
+\newcounter{Y@GYagitemizeStarMaxDepth}
+\WithSuffix\newcommand\setyagitemize*[1]{%
+ \setcounter{Y@GYagitemizeStarMaxDepth}{0}%
+ \Y@Gsetyagitemizestar #1.Y@G@.\@nil}
+\def\Y@Gsetyagitemizestaraux #1\fi{%
+ \fi \Y@Gsetyagitemizestar #1}%
+\def\Y@Gsetyagitemizestar #1.#2{%
+ \ifx#2\@nil%
+ \relax
+ \else
+ \def\motif{#1}%
+ \stepcounter{Y@GYagitemizeStarMaxDepth}%
+ \edef\numero{\roman{Y@GYagitemizeStarMaxDepth}}%
+ \expandafter\edef%
+ \csname Y@Gsymbol@listdepth\numero\endcsname{%
+ \yagding*{\motif}}%
+ \Y@Gsetyagitemizestaraux #2\fi}
+\newcounter{Y@GItemStarLevel}
+\newenvironment{yagitemize*}[1][!Y@G!]%
+{\stepcounter{Y@GItemStarLevel}
+ \ifthenelse{\equal{#1}{!Y@G!}}
+ {\Y@GLevelTest{ItemStarLevel}{YagitemizeStarMaxDepth}{ItemMark}
+ {setyagitemize*}{yagitemize*}{5.2.2}%
+ \edef\Y@GActualSymbol{\csname
+ Y@Gsymbol@listdepth\roman{Y@GItemMark}\endcsname}}
+ {\edef\Y@GActualSymbol{\yagding*{#1}}}%
+ \begin{list}{\Y@GActualSymbol}{}}
+{\end{list}\addtocounter{Y@GItemStarLevel}{-1}}
+\newcommand\yagnumber[3]{\protect\Y@Gyagding{#1}{\arabic{#2}}{#3}}
+\newboolean{Y@GitemRedefined}
+\define@choicekey*+[Y@G]{y@genum}{symfam}[\Y@G@EnumSymFamChoice\nr]%
+ {marvosym,fourier,wasysym,bbding,dingbat,ark,ifsym,ifsymgeo,%
+ ifsymgeonarrow,ifsymgeowide,ifsymclock,ifsymweather,pifont}%
+ [pifont]%
+ {\Y@GINFO{You choose \Y@G@EnumSymFamChoice}}%
+ {\PackageError{yagusylo}%
+ {The symbols family ``\Y@G@EnumSymFamChoice'' is not yet known.}
+ {I don't know the family you required.\MessageBreak
+ If it's not a typo you may consider to contact me
+ (TdS)\MessageBreak to obtain support for it.}}
+\define@key[Y@G]{y@genum}{symcolor}[blue]{\def\Y@GEnumSymColor{#1}}
+\define@key[Y@G]{y@genum}{firstitemnum}['254]{%
+ \ifthenelse{\(#1<0\)\or \(#1>255\)}
+ {\PackageError{yagusylo}
+ {``#1'' is out of bound or not a number}
+ {``firstitemnum'' requires a natural number\MessageBreak
+ between 0 and 255}}%
+ {\def\Y@GEnumFirstItemNum{#1}%
+ \Y@GINFO{Key ``firstitemnum'' is
+ ``\number\Y@GEnumFirstItemNum''}}}
+\define@key[Y@G]{y@genum}{enumlength}[10]{%
+ \ifthenelse{\(#1<1\)\or \(#1>255\)}
+ {\PackageError{yagusylo}
+ {``#1'' is out of bound or not a number}
+ {``enumlength'' requires a natural number\MessageBreak
+ between 1 and 255}}%
+ {\def\Y@GEnumLength{#1}%
+ \Y@GINFO{Key ``enumlength'' is ``\number\Y@GEnumLength''}}}
+\newcommand*\newenumpattern[2]{%
+ \ifthenelse{\isnamedefined{Y@GEnumPattern@#1}}
+ {\PackageError{yagusylo}{Pattern ``#1'' already defined}{%
+ You should choose another name\MessageBreak
+ this version does NOT provide a ``renewenumpattern'' macro}}
+ {{\renewcommand*{\Y@GINFO}[1]{}
+ \expandafter\gdef\csname Y@GEnumPattern@#1\endcsname{%
+ \setkeys[Y@G]{y@genum}{#2}}}
+ \Y@GINFO[1]{Pattern ``#1'' defined with\MessageBreak
+ symfam=\Y@G@EnumSymFamChoice\MessageBreak
+ symcolor=\Y@GEnumSymColor\MessageBreak
+ firstitetemnum=\number\Y@GEnumFirstItemNum\MessageBreak
+ enumlength=\Y@GEnumLength\MessageBreak}}}
+\newenumpattern{piwcr}{symfam=pifont,firstitemnum='254,enumlength=10}
+\newenumpattern{piwcs}{symfam=pifont,firstitemnum='300,enumlength=10}
+\newenumpattern{pibcr}{symfam=pifont,firstitemnum='266,enumlength=10}
+\newenumpattern{pibcs}{symfam=pifont,firstitemnum='312,enumlength=10}
+\newcommand{\Y@GSetYagEnumerate}[1]{%
+ \ifthenelse{\isnamedefined{Y@GEnumPattern@#1}}%
+ {\csname Y@GEnumPattern@#1\endcsname}%
+ {\Y@GWARNING{The pattern ``#1'' is not know}
+ {.\MessageBreak I select ``piwcr'' instead}
+ {You should read the documentation [[SECyagpattern]].}%
+ \csname Y@GEnumPattern@piwcr\endcsname}}
+\define@key[Y@G]{y@genum}{enumpattern}[piwcr]{%
+ \edef\Y@GEnumPatternChoice{#1}%
+ \Y@GSetYagEnumerate{#1}}
+\setkeys[Y@G]{y@genum}{symfam,symcolor,firstitemnum,enumlength}
+\newcommand\setyagenumeratekeys[1]{%
+ \ifthenelse{\equal{#1}{*}}%
+ {\setkeys[Y@G]{y@genum}
+ {symfam,symcolor,firstitemnum,enumlength,enumpattern}}%
+ {\setkeys[Y@G]{y@genum}{#1}}}
+\newcounter{Y@Gmaxitem}
+\newcounter{Y@Gcitem}
+\newenvironment{yagenumerate}[1][!Y@G!]
+{%
+ \ifthenelse{\equal{#1}{!Y@G!}}
+ {\setkeys[Y@G]{y@genum}{symfam,symcolor,firstitemnum,enumlength}}
+ {\ifthenelse{\equal{#1}{*}}
+ {\setkeys[Y@G]{y@genum}{enumpattern=\Y@GEnumPatternChoice}}
+ {\setkeys[Y@G]{y@genum}{#1}}}%
+ \ifnum\@enumdepth>\thr@@\@toodeep\else
+ \advance\@enumdepth \@ne
+ \def\STOP{\PackageError{yagusylo}
+ {at least one item too many}
+ {you can't use more than ``\number\Y@GEnumLength'' items}}%
+ \setcounter{Y@Gmaxitem}{\Y@GEnumFirstItemNum}
+ \addtocounter{Y@Gmaxitem}{\Y@GEnumLength}
+ \setcounter{Y@Gcitem}{\Y@GEnumFirstItemNum}
+ \ifthenelse{\boolean{Y@GitemRedefined}}{}
+ {\let\Y@Golditem\item
+ \def\item{\stepcounter{Y@Gcitem}
+ \ifnum\theY@Gcitem>\theY@Gmaxitem\expandafter\STOP
+ \else\expandafter\Y@Golditem\fi}
+ \setboolean{Y@GitemRedefined}{true}}
+ \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
+ \expandafter\def\csname p@enum\romannumeral\the\@enumdepth\endcsname{}%
+ \expandafter\def\csname labelenum\romannumeral\the\@enumdepth\endcsname{%
+ \csname theenum\romannumeral\the\@enumdepth\endcsname}%
+ \expandafter\def\csname theenum\romannumeral\the\@enumdepth\endcsname{%
+ \yagnumber{\Y@G@EnumSymFamChoice}%
+ {enum\romannumeral\the\@enumdepth}{\Y@GEnumSymColor}}%
+ \list{\csname label\@enumctr\endcsname}{%
+ \@nmbrlisttrue
+ \def\@listctr{\@enumctr}%
+ \setcounter{\@enumctr}{\Y@GEnumFirstItemNum}%
+ \addtocounter{\@enumctr}{-1}%
+ \def\makelabel##1{\hss\llap{##1}}}
+ \fi}{\endlist}
+\newenvironment{notyagenum}
+ {\let\item\Y@Golditem
+ \setboolean{Y@GitemRedefined}{false}}{}
+\AtBeginDocument{%
+ \ifY@G@configfile
+ \InputIfFileExists{yagusylo.cfg}%
+ {\PackageInfo{yagusylo}{Configuration file found and read\@gobble}}%
+ {\PackageErrorNoLine{yagusylo}
+ {No configuration file found}
+ {Or yagusylo.cfg does not exist\MessageBreak
+ or it is in some place unknown of TeX.}}%
+ \fi}
+\endinput
+%%
+%% End of file `yagusylo.sty'.