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