From 0fd3b07a05d03a6576e7dfc8936b848b742490fc Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 1 Mar 2009 17:58:58 +0000 Subject: new laex package yagusylo (27feb09) git-svn-id: svn://tug.org/texlive/trunk@12271 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/yagusylo/LISEZMOI | 40 + Master/texmf-dist/doc/latex/yagusylo/README | 37 + .../texmf-dist/doc/latex/yagusylo/yagusylo-en.pdf | Bin 0 -> 1107176 bytes .../texmf-dist/doc/latex/yagusylo/yagusylo-fr.pdf | Bin 0 -> 1121689 bytes Master/texmf-dist/doc/latex/yagusylo/yagusylo.pdf | Bin 0 -> 433411 bytes Master/texmf-dist/source/latex/yagusylo/Makefile | 145 + .../texmf-dist/source/latex/yagusylo/yagusylo.dtx | 3918 ++++++++++++++++++++ .../texmf-dist/source/latex/yagusylo/yagusylo.ins | 59 + Master/texmf-dist/tex/latex/yagusylo/yagusylo.cfg | 26 + Master/texmf-dist/tex/latex/yagusylo/yagusylo.sty | 561 +++ 10 files changed, 4786 insertions(+) create mode 100644 Master/texmf-dist/doc/latex/yagusylo/LISEZMOI create mode 100644 Master/texmf-dist/doc/latex/yagusylo/README create mode 100644 Master/texmf-dist/doc/latex/yagusylo/yagusylo-en.pdf create mode 100644 Master/texmf-dist/doc/latex/yagusylo/yagusylo-fr.pdf create mode 100644 Master/texmf-dist/doc/latex/yagusylo/yagusylo.pdf create mode 100644 Master/texmf-dist/source/latex/yagusylo/Makefile create mode 100644 Master/texmf-dist/source/latex/yagusylo/yagusylo.dtx create mode 100755 Master/texmf-dist/source/latex/yagusylo/yagusylo.ins create mode 100644 Master/texmf-dist/tex/latex/yagusylo/yagusylo.cfg create mode 100644 Master/texmf-dist/tex/latex/yagusylo/yagusylo.sty (limited to 'Master/texmf-dist') diff --git a/Master/texmf-dist/doc/latex/yagusylo/LISEZMOI b/Master/texmf-dist/doc/latex/yagusylo/LISEZMOI new file mode 100644 index 00000000000..ecd0c11674d --- /dev/null +++ b/Master/texmf-dist/doc/latex/yagusylo/LISEZMOI @@ -0,0 +1,40 @@ +-*- coding: utf-8 -*- +L’extension yagusylo + +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» + + diff --git a/Master/texmf-dist/doc/latex/yagusylo/README b/Master/texmf-dist/doc/latex/yagusylo/README new file mode 100644 index 00000000000..d7cc8633657 --- /dev/null +++ b/Master/texmf-dist/doc/latex/yagusylo/README @@ -0,0 +1,37 @@ +The package yagusylo + +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» + diff --git a/Master/texmf-dist/doc/latex/yagusylo/yagusylo-en.pdf b/Master/texmf-dist/doc/latex/yagusylo/yagusylo-en.pdf new file mode 100644 index 00000000000..b741cfda25c Binary files /dev/null and b/Master/texmf-dist/doc/latex/yagusylo/yagusylo-en.pdf differ diff --git a/Master/texmf-dist/doc/latex/yagusylo/yagusylo-fr.pdf b/Master/texmf-dist/doc/latex/yagusylo/yagusylo-fr.pdf new file mode 100644 index 00000000000..7dfa925042b Binary files /dev/null and b/Master/texmf-dist/doc/latex/yagusylo/yagusylo-fr.pdf differ diff --git a/Master/texmf-dist/doc/latex/yagusylo/yagusylo.pdf b/Master/texmf-dist/doc/latex/yagusylo/yagusylo.pdf new file mode 100644 index 00000000000..60970fcd933 Binary files /dev/null and b/Master/texmf-dist/doc/latex/yagusylo/yagusylo.pdf differ diff --git a/Master/texmf-dist/source/latex/yagusylo/Makefile b/Master/texmf-dist/source/latex/yagusylo/Makefile new file mode 100644 index 00000000000..28fd582c6d5 --- /dev/null +++ b/Master/texmf-dist/source/latex/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/Master/texmf-dist/source/latex/yagusylo/yagusylo.dtx b/Master/texmf-dist/source/latex/yagusylo/yagusylo.dtx new file mode 100644 index 00000000000..6403d95e534 --- /dev/null +++ b/Master/texmf-dist/source/latex/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» +% ------------------------------------------------------------------ +% +% This file may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.2 +% of this license or (at your option) any later version. +% The latest version of this license is in: +% +% http://www.latex-project.org/lppl.txt +% +% and version 1.2 or later is part of all distributions of LaTeX +% version 1999/12/01 or later. +% \fi +% +% \iffalse +%\NeedsTeXFormat{LaTeX2e}[1999/12/01] +%\def\fileversion{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] +%<*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} +% +% \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 +% +% \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> +\documentclass[a4paper]{article} +\usepackage{fixltx2e} +\usepackage{xspace,array} +\usepackage[latin9]{inputenc} +\usepackage[T2C,T1]{fontenc} +%\usepackage[english,frenchb]{babel} +%\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} +% +%<*en> +\renewcommand{\KEYNAME}{key} +\renewcommand{\ENVIRNAME}{environment} +% +\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.}} +% +%<*en> +\title{The English documentation of the package + \Pkg{\Module}\thanks{This document corresponds to the file + \Pkg{\Module}~\FileVersion, dated \FileDate.}} +% +\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} +% +%<*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} +% + +\tableofcontents +\newpage{} +%<*en|fr> +\section{Introduction} +\label{secIntro} +% + +%<*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. +% +%<*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. +% + +%<*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. +% +%<*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. +% + +%<*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. +% +%<*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. +% + +%<*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. +% +%<*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. +% + +%<*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. +% +%<*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. +% + +%<*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 +% +%<*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 +% + +%\section{Special names and general conventions} +%\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}. +% +%<*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}. +% + +%<*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}. +% +%<*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}. +% + +%<*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. +% +%<*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. +% + +%<*en> +For sake of laziness, ``symfam'' will be an abbreviation of ``symbols +family''. I will sometimes refer to a symbol as a \emph{ding}. +% +%<*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}. +% + +%<*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 +% +%<*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. +% +\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. +% +%<*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. +% + +%<*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''. +% +%<*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. +% + +%<*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. +% +%<*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. +% + +%<*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. +% +%<*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. +% + +%<*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}. +% +%<*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}. +% + +%<*en> +The plus versions are not for the fainthearted and require a lot. Be +aware and shun them accordingly \Sourire +% +%<*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 +% + +%<*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. +% +%<*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. +% + +%<*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}. +% +%<*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}. +% + + +\newpage{} +%\part{Usage} +%\part{Utilisation} + +%<*en> +\paragraph{Remark} In this document \Pkg{yagusylo} is loaded with +% +%<*fr> +\paragraph{Remarque} Dans ce document, \Pkg{yagusylo} est chargé avec +% +|\usepackage[color=true,|\BOP| on|\BOP|er|\BOP|ror|\BOP|=|\BOP|nice]|\BOP|{yagusylo}|. + +%\section{One Glyph Macros} +%\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}. +% +%<*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}. +% + +%\subsection{Of Keys and How to Set Them} +%\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}: +% +%<*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}: +% +\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 +% +%<*fr> +Pour régler, \PX, la clé \Optioncle{symfam} sur la valeur +\OptionvalP{marvosym} et la clé \Optioncle{symcolor} sur +\OptionvalP{gray} on tapera +% +\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}. +% +%<*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}. +% + +%<*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. +% +%<*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. +% + +%<*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. +% +%<*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. +% + +%<*en> +The macro \cs{setyagusylokeys} does not affect the behaviour of +\texttt{yagenumerate} environment. +% +%<*fr> +La macro \cs{setyagusylokeys} n'affecte pas le comportement de +l'environnement \texttt{yag}\BOP|enu|\BOP|me|\BOP|rate|. +% + +%\subsection{The Macros Proper} +%\subsection{Les macros elles-mêmes} + +%<*en> +\Pkg{yagusylo} provides the macro \cs{yagding} the +syntax\DescribeMacro{yagding} of which is: +% +%<*fr> +\Pkg{yagusylo} fournit la macro \cs{yagding} dont la +syntaxe\DescribeMacro{yagding} +est: +% +\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. +% +%<*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}. +% + +%<*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. +% +%<*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. +% + +%<*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. +% +%<*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. +% + +%<*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]''. +% +%<*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. +% + +%<*en> +Thanks to \Pkg{xargs}, \Pkg{yagusylo} provides macros which +accept more than one optional argument. +% +%<*fr> +Grâce à \Pkg{xargs}, \Pkg{yagusylo} fournit des macros qui acceptent +plus d'un argument optionnel. +% + +%<*en> +With \cs{defdingname} you can give a \emph{local} or +\emph{global}\DescribeMacro{defdingname} name to a symbol: +% +%<*fr> +Avec \cs{defdingname}, on peut donner un nom \emph{local} +ou\DescribeMacro{defdingname} \emph{global} à un symbole: +% +\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. +% +%<*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. +% + +%<*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. +% +%<*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}. +% + +%<*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: +% +%<*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: +% +\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. +% +%<*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. +% + +%<*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} +% +%<*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} +% + +%<*en> +To be clearer, let's assume that at a certain time, the current +\Optioncle{symcolor} has value \OptionvalP{red} and then you write +% +%<*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 +% +\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 +% +%<*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 +% +\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]. +% +%<*fr> +si \cs{yagding*}|{hand}| donne toujours \yagding[fourier]{116}[red], +\cs{yagding*}\BOP|{hand|\BOP|var}| donne \yagding[fourier]{116}[blue]. +% + +%<*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. +% +%<*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. +% + +\VSP + +%<*en> +You will then be able to use \cs{yagding*} to obtain the +named\DescribeMacro{yagding*} symbol with +% +%<*fr> +On pourra alors utiliser \cs{yagding*} pour obtenir le symbole nommé +avec\DescribeMacro{yagding*} +% +\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}. +% +%<*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}. +% + +%<*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}|. +% +%<*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}|. +% + +%<*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! +% +%<*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. +% + +%\subsection{For Those in the Know} +%\subsection{Pour les initiés} + +%\cs{yagding+} has syntax: +%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. +% +%<*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. +% + +%<*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. +% +%<*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. +% + +%So +%Ainsi +|\yagding+{futs}{*}{*}{84}[blue]| +%gives +%donne +``\yagding+{futs}{*}{*}{84}[blue]'', +|\yagding+|\BOP|{|\BOP|futs|\BOP|}|\BOP|{*}|\BOP|{*}|\BOP|{85}| +%gives +%donne +``\yagding+{futs}{*}{*}{85}''. + +%\cs{defdingname+} has syntax: +%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|. +% +%<*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|. +% + +%<*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. +% +%<*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. +% + +%<*en> +Once the symbol name defined, you will use it with the usual +\cs{yagding*}. +% +%<*fr> +Une fois défini le nom du symbole, on peut l'utiliser avec le +\cs{yagding*} habituel. +% + +%<*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 +% +%<*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 +% +|\usepackage[T2C,T1]|\BOP|{fontenc}| +%in the preamble of this document and then +%en préambule de ce document, ce qui fait que +|\yagding+|\BOP|[T2C]|\BOP|{cmr}|\BOP|{m}|\BOP|{n}|\BOP|{128}|\BOP|[blue]| +%gives +%donne +\yagding+[T2C]{cmr}{m}{n}{128}[blue]. + +%\section{Filling and Line} +%\section{Remplissage et ligne} + +%<*en> +The macros \cs{yagline(*/+)} use \cs{yagfill(*/+)} to place the dings +so I begin with filling. +% +%<*fr> +Les macros \cs{yagline(*/+)} utilisent \cs{yagfill(*/+)} pour placer +les dings aussi je commence par le remplissage \TO \emph{filling}. +% + +%\subsection{Filling} +%\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(*/+)}. +% +%<*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(*/+)}. +% + +%\subsubsection{The Keys} +%\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}. +% +%<*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}. +% + +%<*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}. +% +%<*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}. +% + +%<*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}. +% +%<*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}. +% + +%<*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. +% +%<*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. +% + +%<*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}. +% +%<*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}. +% + +%<*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. +% +%<*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. +% + +%\subsubsection{The Macros for Filling} +%\subsubsection{Macros de remplissage} + +%The macro \cs{yagfill} has the following syntax: +%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: +% +%<*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: +% +\Optioncle{symfam},\Optioncle{symcolor}, \Optioncle{leadtype}, +\Optioncle{symplace}, \Optioncle{sympos}, \Optioncle{boxwidth}, +\Optioncle{before} +%, and +%et +\Optioncle{after}. + +\meta{\CHARNUM} +%has the same meaning as it has for +%a la même signification que pour +\cs{yagding} +%above. +% ci-dessus. + +%The macro \cs{yagfill*} has the following syntax: +%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(+)}. +% +%<*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(+)}. +% + +%The macro \cs{yagfill+} has the following syntax: +%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. +% +%<*fr> +où \meta{\MATERIAL} est quelque chose qui peut être composé et a une +largeur positive. +% + +%<*en> +You can look at some examples in the section~\ref{SSECXMPLyagfill}, on +\Page{SSECXMPLyagfill}. +% +%<*fr> +On trouvera quelques exemples en section~\ref{SSECXMPLyagfill}, +\Page{SSECXMPLyagfill}. +% + +%\subsubsection{The Making-Of} +%\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. +% +%<*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. +% + +%<*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. +% +%<*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. +% + +%<*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. +% +%<*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. +% + +%<*en> +When \Optioncle{symplace} doesn't equal \OptionvalP{a}, you have to +provide a means of positionning the material. +% +%<*fr> +Lorsque \Optioncle{symplace} ne vaut pas \OptionvalP{a}, on doit +fournir une indication de positionnement du matériel. +% + +%<*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. +% +%<*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. +% + +%<*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}. +% +%<*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 +% + +%<*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}. +% +%<*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}. +% + +%\subsection{To Draw a Line} +%\subsection{Tracer une ligne} + +%\subsubsection{Special Keys for Lines} +%\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. +% +%<*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. +% + +%<*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}. +% +%<*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}. +% + +%<*en> +To set both those keys, \Pkg{yagusylo} provides the macro +\cs{setyagline} the syntax of which is the rather unusual: +% +%<*fr> +Pour régler ces deux clés, \Pkg{yagusylo} fournit la macro +\cs{setyagline} dont la syntaxe est plutot inhabituelle: +% +\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. +% +%<*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!}. +% + +%<*en> +By default, \Optioncle{head} and \Optioncle{tail} have value +\OptionvalP{0.5in} and \cs{setyagusylokeys}|{*}| set them back to that +value. +% +%<*fr> +Par défaut, \Optioncle{head} et \Optioncle{tail} ont pour valeur +\OptionvalP{0.5in} et \cs{setyagusylokeys}|{*}| la leur redonne. +% + +%\subsubsection{The Macros for Drawing a Line} +%\subsubsection{Macros pour tracer une ligne} + +%The syntax of \cs{yagline} is +%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. +% +%<*fr> +où \meta{\LISTKV} et \meta{\CHARNUM} ont le sens habituel. +% + +%The syntax of \cs{yagline*} is +%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. +% +%<*fr> +où \meta{\LISTKV} et \meta{\DINGNAME} ont toujours le sens habituel. +% + +%The syntax of \cs{yagline+} is +%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+}. +% +%<*fr> +où tous les arguments ont le même sens que dans \cs{yagfill+}. +% + +%<*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. +% +%<*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! +% + +%\section{Itemize} +%\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. +% +%<*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. +% + +%<*en> +\subsection{Environment yagitemize} +\subsubsection{The Environment yagitemize\dots} +% +%<*fr> +\subsection{L'environnement yagitemize} +\subsubsection{L'environnement yagitemize\dots} +% + +%<*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: +% +%<*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 +% +\DescribeEnv{yagitemize} +\begin{CodeEx*} + \cs{begin}|{yagitemize}|\oarg{symfam}\marg{\CHARNUM/\STAR[1]}\oarg{\COLOUR} +\end{CodeEx*}% +%then a certain number of \cs{item}s and +%puis viennent quelques \cs{item}s et enfin +\begin{CodeEx*} + \cs{end}|{yagitemize}| +\end{CodeEx*}% +%as usual. +%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. +% +%<*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. +% + +%<*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}. +% +%<*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}. +% + +%\subsubsection{And How to Set It Up} +%\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} +% +%<*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} +% + +%<*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. +% +%<*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. +% + +%<*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. +% +%<*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. +% + +%<*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. +% +%<*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. +% + +%<*en> +\subsection{Environment yagitemize\texttt{*}} +\subsubsection{The Environment yagitemize\texttt{*}\dots} +% +%<*fr> +\subsection{L'environment yagitemize\texttt{*}} +\subsubsection{L'environment yagitemize\texttt{*}\dots} +% + +%The \texttt{yagitemize*} environment has the following syntax: +%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*|. +% +%<*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*|. +% + +%\subsubsection{And How to Set It Up} +%\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: +% +%<*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. +% +\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}. +% +%<*fr> +où chaque |dingname|\(k\) doit être un nom valide défini par +\cs{defdingname(+)}, \Voir{XMPLyagitemizestar}, +exemple~\ref{XMPLyagitemizestar}. +% + +%<*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. +% +%<*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é. +% + +%<*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*|. +% +%<*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*|. +% + +%\section{Enumerate} +%\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 +% +%<*fr> +De même que \texttt{yagitemize} singe le \texttt{itemize} de \LaTeX, +\texttt{yagenumerate} copie \texttt{enumerate} mais avec un costume +yagusylo-esque. +% + +%\subsection{Special Keys for yagenumerate} +%\subsection{Clés spéciales pour yagenumerate} +\label{SSECspecialkeys} + +%<*en> +The behaviour of the \texttt{yagenumerate} environment is controlled +by the following keys: +% +%<*fr> +Le comportement de l'environnement \texttt{yagenumerate} est controlé +par les clés suivantes: +% +\Optioncle{symfam}, \Optioncle{symcolor}, +\Optioncle{firstitemnum}, \Optioncle{enumlength} +%, and +% 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. +% +%<*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. +% + +%<*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. +% +%<*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}. +% + +%<*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}. +% +%<*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}. +% + +%<*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}. +% +%<*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}. +% + +%<*en> +The special key \Optioncle{enumpattern} is even more +special.\DescribeOptionCle{enumpattern} You will read more detailled +explanations about it in the following section. +% +%<*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. +% + +%\subsection{Patterns and how to create them} +%\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. +% +%<*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. +% + + +%There are four pre-defined pattern, viz.\ +%Il y a quatre motifs prédéfinis, à savoir +\texttt{piwcr}, \texttt{piwcs}, \texttt{pibcr} +%, and +%et +\texttt{pibcs}. +%The defaut pattern is +%Le motif par défaut est +\texttt{piwcr}. +%In those names +%Dans ces noms +\texttt{pi} +%means +%signifie +\texttt{pifont}; +\texttt{c} +%is for +%est là pour +\texttt{circle}; \texttt{w} +%for +%pour +\texttt{white} +%and +%et +\texttt{b} +%for +%pour +\texttt{black} +%which could be a bit misleading as you will soon see; +%ce qui est peut-être maladroit comme on le verra bientot; +\texttt{s} +%is for +%est là pour +\texttt{sans-serif} +%and +%et +\texttt{r} +%for +%pour +\texttt{roman}. +%They all limit the enumerate length to +%Ils limitent tous la longueur de l'énumération à +\np{10}. + +%Here are the first number for those patterns: +%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: +% +%<*fr> +On peut définir son propre motif avec +\cs{newenumpattern}\DescribeMacro{newenumpattern} dont la syntaxe est: +% +\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. +% +%<*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. +% + +%\subsection{The environment yagenumerate} +%\subsection{L'environnement yagenumerate} +\label{SSECyagenumerateenvir} + +%<*en> +The environment \texttt{yagenumerate} begins +with\DescribeEnv{yagenumerate} +% +%<*fr> +L'environnement \texttt{yagenumerate} commence +avec\DescribeEnv{yagenumerate} +% +\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}. +% +%<*fr> +et à l'intérieur on utilise \cs{item} comme il est habituel en \LaTeX. +% + +%<*en> +If there is no argument, \CAD you type something like +% +%<*fr> +S'il n'y a pas d'argument, \CAD si l'on a saisi quelque chose comme +% +\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}. +% +%<*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}. +% + +%<*en> +If the argument is a \STAR[1] then the aspect is controlled by the +current default pattern. +% +%<*fr> +Si l'argument est \STAR[1], l'aspect est déterminé par le motif par +défaut courant. +% + +%<*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. +% +%<*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. +% + +%<*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}. +% +%<*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}. +% + +%<*en> +The limits of nesting are those of \LaTeX. +% +%<*fr> +Les limites d'imbrication sont celles de \LaTeX. +% + +%\subsection{To Set the Environment} +%\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}. +% +%<*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}. +% + +%<*en> +With \cs{setyagenumeratekeys}|{*}| keys \Optioncle{symfam}, +\Optioncle{symcolor}, \Optioncle{firstitemnum}, +\Optioncle{enumlength}, and \Optioncle{enumpattern} revert to +their default values. +% +%<*fr> +Avec \cs{setyagenumeratekeys}|{*}|, les clés \Optioncle{symfam}, +\Optioncle{symcolor}, \Optioncle{firstitemnum}, \Optioncle{enumlength} +et \Optioncle{enumpattern} retrouvent leurs valeurs par défaut. +% + +%\section{Miscellaneous} +%\section{Mélanges} + +%<*en> +I put here some items I have not yet been able to insert cleverly in +the course of the documentation. +% +%<*fr> +Je place ici quelques sujets que je n'ai pas été capable d'introduire +de manière pertinente jusque maintenant. +% + +%\subsection{Configuration file} +%\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. +% +%<*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. +% + +%\subsection{Colours and How to Get Rid of It} +%\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. +% +%<*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. +% + +%<*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. +% +%<*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. +% + +%<*en> +The second method is to pass the option \texttt{monochrome} to +\Pkg{xcolor}. To do so you will load \Pkg{yagusylo} thus: +% +%<*fr> +La seconde méthode est de passer l'option \texttt{monochrome} à +\Pkg{xcolor}. Pour ce faire, on chargera \Pkg{yagusylo} comme suit: +% +\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: +% +%<*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: +% +\begin{CodeEx} + \cs{usepackage}|[color=true, XcolorOptions={monochrome, table}]{yagusylo}| +\end{CodeEx} + +\newpage{} +%\part{Summary of usage} +%\part{Résumé de l'utilisation} +\label{SECsummary} + +%\section{The Package Keys} +%\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}. +% +%<*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}. +% + +\begin{table}[H,h,t]\centering +\newlength{\templong}\settowidth{\templong}{ifsymgeonarrow} +\begin{tabular}[t]{|>{\ttfamily}l p{\templong} || >{\ttfamily}l + p{\templong} |}\hline +%package +%extension +& symfam & +%package +%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} +%\caption{The Symfams} +%\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. +% +%<*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. +% + +\begin{table}[H,h,t]\centering + \begin{tabular}[c]{|>{\ttfamily}l l l|}\hline +% key & default value & other possible values\\ \hline\hline +% clé & valeur par défaut & autres valeurs possibles\\ \hline\hline +% \multicolumn{3}{|c|}{Global option keys}\\ +% \multicolumn{3}{|c|}{Clés d'options globales}\\ + info & normal & verbose, mute\\ + onerror & tough & nice\\ + color & false & true\\ +% XcolorOptions & & list of options known by \Pkg{xcolor}\\ +% XcolorOptions & & liste d'options connues par \Pkg{xcolor}\\ + configfile & false & true\\ \hline +% \multicolumn{3}{|c|}{Local option keys, general bunch}\\ +% \multicolumn{3}{|c|}{Clés d'options locales, trousseau général}\\ + symfam & pifont & +%see table~\ref{TABsymfams}\\ +%voir la table~\ref{TABsymfams}\\ + symcolor & red & +%any colour known by \Pkg{xcolor}\\ +%toute couleur connue de \Pkg{xcolor}\\ + leadtype & l & c, x \\ + symplace & c & l, r, a, n \\ + sympos & 0 & +%integer between \np{0} and \np{1000} inclusive\\ +%entier entre \np{0} et \np{1000} bornes comprises\\ + boxwidth & \np{0.2} in & +%any non-negative length\\ +%n'importe quelle longueur positive\\ + before & \np{0} pt & +%any non-negative length \\ +%n'importe quelle longueur positive\\ + after & \np{0} pt & +%any non-negative length \\ +%n'importe quelle longueur positive\\ + head & \np{36.135} pt & +%any length \\ +%n'importe quelle longueur\\ + tail & \np{36.135} pt & +%any length \\ \hline +%n'importe quelle longueur\\ +% \multicolumn{3}{|c|}{Local option keys, enum bunch}\\ +% \multicolumn{3}{|c|}{Clés d'options locales, trousseau enum}\\ + firstitemnum & \np{172} & +%integer between \np{0} and \np{255} inclusive\\ +%entier entre \np{0} et \np{255} bornes comprises\\ + enumlength & \np{10} & +%integer\\ +%entier\\ + symcolor & blue & +%any colour known by \Pkg{xcolor}\\ +%toute couleur connue de \Pkg{xcolor}\\ + symfam & pifont & +%see +%voir la +table~\ref{TABsymfams} \\ \hline + \end{tabular} +%\caption{The Keys of \Pkg{yagusylo}} +%\caption{Clés de \Pkg{yagusylo}} +\label{TAByagusylokeys} +\end{table} + +%\section{The Commands and Environments} +%\section{Commandes et environnements} + +%<*en> +I give here all the possible usages of the \Pkg{yagusylo} macros and +environments. +% +%<*fr> +Je donne ici toutes les utilisations possibles des commandes et +environnements de \Pkg{yagusylo}. +% + +%<*en> +I will use the following \meta{denomination}s to refer to some well +defined objects: +% +%<*fr> +J'utiliserai les \meta{denomination}s suivantes pour faire référence à +quelques objets bien définis: +% + +\begin{yagenumerate}[symfam=wasysym,% + firstitemnum=88, enumlength=14, symcolor=purple] + \item \meta{\CHARNUM}: +%an integer between \np{0} and \np{255} inclusive, +%un entier entre \np{0} et \np{255} bornes comprises; + \item \meta{\NUMBER}: +%an integer for which some additional properties could be provided, +%un entier pour lequel on peut fournir quelques propriétés supplémentaires; + \item \meta{symfam}: +%the symbolic name of a symfam as listed in +%le nom symbolique de la symfam comme donné dans la +table~\ref{TABsymfams} +%, +%; + \item \meta{\COLOUR}: +%the symbolic name of a colour known by \Pkg{xcolor}, +%le nom symbolique d'une couleur connue de \Pkg{xcolor}; + \item \meta{\DINGNAME}: +%the name of a ding as defined with +%le nom d'un ding défini avec +\cs{defdingname(+)} +%, +%; + \item \meta{defext}: +%the ``extension'' of the definition, can be |local| \TO default\TF or |global|, +%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, +% +%<*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; +% +\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, +% +%<*fr> +une liste composée d'un nombre quelconque de paires clé-valeur dans +lesquelles les clés sont attachées au trousseau enum; +% +\Voir{TAByagusylokeys}, + \item \meta{\LENGTH}: +%any \LaTeX\ length, +%n'importe quelle longueur \LaTeX ienne; + \item \meta{\PLENGTH}: +%any non-negative \LaTeX\ length. +%n'importe quelle longueur \LaTeX ienne positive. +\end{yagenumerate} + +%<*en> +By the way, the preceding yagenumaration has been obtain with +% +%<*fr> +Au passage, l'énumération précédente, à la yagusylo, est obtenue avec +% +\begin{CodeEx} + \cs{begin}|{yagenumerate}|\BOP|[symfam=wasysym,| |firstitemnum=88,| + |enumlength=14,| |sym|\BOP|co|\BOP|lor|\BOP|=|\BOP|purple]| +\end{CodeEx} + +%\subsection{One Glyph Macros} +%\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. +% +%<*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. +% + +\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} + +%\subsection{Filling and Line Drawing} +%\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! +% +%<*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! +% + +\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} + +%\subsection{Itemize and Enumerate (Yagusylo Way)} +%\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 +% +%<*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 +% + +\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}% +%\marg{special list} +%\marg{liste spéciale} +\end{CodeEx*}% +%<*en> +whith +\begin{CodeEx*} +\meta{special list} \(=\) \meta{triple}|.| \(\cdots\) +\meta{triple}|.|\meta{triple} +\end{CodeEx*}% +% +%<*fr> +avec +\begin{CodeEx*} +\meta{liste spéciale} \(=\) \meta{triplet}|.| \(\cdots\) +\meta{triplet}|.|\meta{triplet} +\end{CodeEx*}% +% +%where +%où +\begin{CodeEx*} +%\meta{triple} +%\meta{triplet} +\(=\) \meta{symfam}|,|\meta{\CHARNUM}|,|\meta{\COLOUR} +\end{CodeEx*}% +%<*en> +with the usual meaning of \meta{symfam}, \meta{\CHARNUM}, and +\meta{\COLOUR}. +% +%<*fr> +avec le sens habituel de \meta{symfam}, \meta{\CHARNUM} et +\meta{\COLOUR}. +% + +\VSP + +\begin{CodeEx*} + \cs{setyagitemize*} +%\marg{list of \DINGNAMES} +%\marg{liste de \DINGNAMES} +\end{CodeEx*}% +%whith +%avec +\begin{CodeEx*} +%\meta{list of \DINGNAMES} +%\meta{liste de \DINGNAMES} +\(=\) \meta{\DINGNAME}|.| \(\cdots\) +\meta{\DINGNAME}|.|\meta{\DINGNAME} +\end{CodeEx*}% +%with the usual meaning of \meta{\DINGNAME}. +%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}. +% +%<*fr> +où \meta{patname} est un nom que l'on peut utiliser ensuite comme +valeur de la clé \Optioncle{enum}\BOP|pat|\BOP|tern|. +% + +\newpage{} +%<*en> +\part{Examples} +% +%<*fr> +\part{Exemples} +% + +%<*en> +\section{\texorpdfstring{\cs{yagding}, \cs{defdingname}, and + \cs{yagding*}}{yagding, defdingname, and yagding*}} +% +%<*fr> +\section{\texorpdfstring{\cs{yagding}, \cs{defdingname} et + \cs{yagding*}}{yagding, defdingname et yagding*}} +% +\label{SSECXMPLonesymbol} + +\begin{VerbatimOut}{xmpl.ltx} + \setyagusylokeys{symfam=fourier} + \begin{quote} +%inside \texttt{quote} environment\par +%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} +%outside \texttt{quote} environment\par +%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*}} +% +%<*fr> +\section{\texorpdfstring{\cs{yafgill} et \cs{yagfill*}}{yafgill et yagfill*}} +% +\label{SSECXMPLyagfill} + +%\subsection{The Key leadtype} +%\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: +% +%<*fr> +\noindent et la même chose dans laquelle je montre les boites +utilisées par \TeX\ pour composer les \emph{leader}s: +% + +\begin{FrameBox} +\Exemple[sans]{*} +\end{FrameBox} + +%\subsection{The Key symplace} +%\subsection{La clé symplace} + +%\subsubsection{Values other than a} +%\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} + +%\subsubsection{Value a} +%\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} + +%\Exemple{\Optioncle{symplace}, \Optioncle{before}, and \Optioncle{after}} +%\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*}} +% +%<*fr> +\section{\texorpdfstring{Environnements \texttt{yagitemize} et + \texttt{yagitemize*}} + {Environnements yagitemize et yagitemize*}} +% + +%<*en> +\subsection{\texorpdfstring{Environment \texttt{yagitemize*}} + {Environment yagitemize*}} +% +%<*fr> +\subsection{\texorpdfstring{Environnement \texttt{yagitemize*}} + {Environnement yagitemize*}} +% + +\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} + +%\Exemple{\cs{yagitemize*} and \cs{setyagitemize*}}[yagitemizestar][+] +%\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: +% +%<*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|: +% + +\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. +% +%<*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. +% + +\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} + +%\Exemple{yagenumerate and notyagenum}[notyagenum] +%\Exemple{yagenumerate et notyagenum}[notyagenum] + +%\section{The configuration file} +%\section{Fichier de configuration} + +%<*en> +Here is the core of the configuration file \texttt{yagusylo.cfg} +provided, as an example, with this package: +% +%<*fr> +Voici le c½ur du fichier de configuration \texttt{yagusylo.cfg} +fourni, comme exemple, avec cette extension: +% + +\VerbatimInput[firstline=22, lastline=23]{yagusylo.cfg} + +\newpage{} + + +%\part{Showcase} +%\part{Gallerie} +\label{SECshowcase} + +\newlength{\malong}\setlength{\malong}{.18\textwidth-2em} + +\SHOWCASE + +\printindex +\end{document} +% +%<*config> +\defyagenumpattern{wastrol}{symfam=wasysym, + firstitemnum=88, enumlength=14, symcolor=purple} +% +% \fi +\endinput +% \iffalse +%%% Local Variables: +%%% mode: doctex +%%% coding: iso-8859-15 +%%% TeX-master: t +%%% fill-column: 70 +%%% End: +% \fi diff --git a/Master/texmf-dist/source/latex/yagusylo/yagusylo.ins b/Master/texmf-dist/source/latex/yagusylo/yagusylo.ins new file mode 100755 index 00000000000..970bbf8ecd1 --- /dev/null +++ b/Master/texmf-dist/source/latex/yagusylo/yagusylo.ins @@ -0,0 +1,59 @@ +%% +%% Copyright (C) 2008 by Yvon Henel alias Le TeXnicien de surface +%% +%% +%% 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 + + +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/Master/texmf-dist/tex/latex/yagusylo/yagusylo.cfg b/Master/texmf-dist/tex/latex/yagusylo/yagusylo.cfg new file mode 100644 index 00000000000..899ce9c8e5a --- /dev/null +++ b/Master/texmf-dist/tex/latex/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 +%% +%% +%% 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/Master/texmf-dist/tex/latex/yagusylo/yagusylo.sty b/Master/texmf-dist/tex/latex/yagusylo/yagusylo.sty new file mode 100644 index 00000000000..bcef7dad259 --- /dev/null +++ b/Master/texmf-dist/tex/latex/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 +%% +%% +%% 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'. -- cgit v1.2.3