% \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