summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2010-07-11 01:02:19 +0000
committerKarl Berry <karl@freefriends.org>2010-07-11 01:02:19 +0000
commit0baee1132ce277d359c0b7466f457099243984e1 (patch)
tree72e5102e25f19d01df23ca624591a85c91cadc52
parent03170d5abeac0fc65b591f3177205c770f3220bc (diff)
yax update (10jul10)
git-svn-id: svn://tug.org/texlive/trunk@19360 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/generic/yax/README2
-rw-r--r--Master/texmf-dist/doc/generic/yax/yax-doc.pdfbin118088 -> 122921 bytes
-rw-r--r--Master/texmf-dist/doc/generic/yax/yax-doc.tex70
-rw-r--r--Master/texmf-dist/tex/generic/yax/t-yax.tex4
-rw-r--r--Master/texmf-dist/tex/generic/yax/yax.sty4
-rw-r--r--Master/texmf-dist/tex/generic/yax/yax.tex80
6 files changed, 121 insertions, 39 deletions
diff --git a/Master/texmf-dist/doc/generic/yax/README b/Master/texmf-dist/doc/generic/yax/README
index 21040a05a00..8a87c10a42a 100644
--- a/Master/texmf-dist/doc/generic/yax/README
+++ b/Master/texmf-dist/doc/generic/yax/README
@@ -2,7 +2,7 @@ This is the README file for the YaX package.
Author: Paul Isambert.
E-mail: zappathustra AT free DOT fr
Comments and suggestions are welcome.
-Date: June 2010.
+Date: July 2010.
The package is a format-independent key system,
with some peculiarities.
diff --git a/Master/texmf-dist/doc/generic/yax/yax-doc.pdf b/Master/texmf-dist/doc/generic/yax/yax-doc.pdf
index 23eef84a30c..c0de8b0ddb4 100644
--- a/Master/texmf-dist/doc/generic/yax/yax-doc.pdf
+++ b/Master/texmf-dist/doc/generic/yax/yax-doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/yax/yax-doc.tex b/Master/texmf-dist/doc/generic/yax/yax-doc.tex
index 45ce047d1ee..8ac6af50695 100644
--- a/Master/texmf-dist/doc/generic/yax/yax-doc.tex
+++ b/Master/texmf-dist/doc/generic/yax/yax-doc.tex
@@ -4,7 +4,7 @@
author = "Paul Isambert"
title = \yax
pdftitle = YaX
- version = 1.0
+ version = \yaxversion
date = "\the\month/\the\day/\the\year"
display = outlines
subject = "The YaX documentation."
@@ -57,7 +57,8 @@
\def#1{\arg{#2}\kern1pt\antigobblespace}%
}
\defarg\param{parameter} \defarg\paralist{list of parameters}
-\defarg\attr{attribute} \def\paramatt{\param\kern-1pt\tcode:\attr\antigobblespace}
+\defarg\attr{attribute} \defarg\attrlist{list of attributes}
+\def\paramatt{\param\kern-1pt\tcode:\attr\antigobblespace}
\defarg\attrlist{list of attributes} \defarg\vallist{list of values}
\defarg\value{value} \defarg\ospace{optional space}
\defarg\andvalue{value exists} \defarg\orvalue{no value}
@@ -146,6 +147,11 @@ or \verb/\usemodule[yax]/ respectively; anywhere else just use \verb/\input yax/
+\describe!\yaxversion.
+Starting with version 1.01, this macro holds \yax's version. Current is \yaxversion.
+
+
+
\section{Setting parameters}
@@ -169,8 +175,8 @@ Its simplified syntax is as follows:
\syntax
\noindent\com\setparameter \paralist\ :
- \attr\ = \value
- \attr\ = \value
+ \attrlist\ = \value
+ \attrlist\ = \value
...
\noindent\com\par
\syntax/
@@ -211,24 +217,25 @@ by default it does the same thing as using one big \com\setparameter. I say
parameter might be active and have deleted its own attributes after the first
call, which anyway is something we'll see later.
-Each \attr is made of the same thing as \param: i.e. anything expandable.
-However, an \attr cannot have a name beginning with the strings \verb/e:/,
-\verb/g:/ and \verb/x:/. Indeed, these prefixes are used to specify
-how an attribute is to be defined, and they are similar to \com\edef,
+Like \paralist, \attrlist is a list of space-delimited attributes.
+Each \attr is made of the same thing as a \param: i.e. anything expandable.
+However, at the beginning of a \attrlist, the strings \verb/e:/, \verb/g:/ and \verb/x:/
+have a special meaning: these prefixes are used to specify
+how an attribute or list of attributes is to be defined, and they are similar to \com\edef,
\com\gdef and \com\xdef (with no prefix meaning \com\def), i.e.:
\example
\setparameter foo :
- one = \whatever
- e: two = \whatever
- g: three = \whatever
- x: four = \whatever
+ one = \whatever
+ e: two = \whatever
+ g: three = \whatever
+ x: four five = \whatever
\example/
\noindent defines, for the parameter \verb/foo/, the attributes \verb/one/
-and \verb/three/ as \com\whatever and the attributes \verb/two/ and \verb/four/
+and \verb/three/ as \com\whatever and the attributes \verb/two/, \verb/four/ and \verb/five/
as the full expansion of \com\whatever; moreover, \verb/one/ and \verb/two/
-are locally defined, whereas \verb/three/ and \verb/four/ are globally
+are locally defined, whereas \verb/three/, \verb/four/ and \verb/five/ are globally
defined. The space between the prefix and the name of the parameter is
optional.
@@ -237,7 +244,7 @@ a space, e.g.:
\example
\setparameter Zappa :
- first name = Frank
+ firstname = Frank
motto = {Music is the best}
...
\example/
@@ -253,7 +260,7 @@ Otherwise, \arg{value} can be given between double quotes:
\example
\setparameter Zappa :
- first name = "Frank"
+ firstname = "Frank"
motto = "Music is the best"
hairstyle = "\mustache"
\example/
@@ -262,7 +269,7 @@ Otherwise, \arg{value} can be given between double quotes:
end of the line is optional and the following can be done:
\example
-\setparameter Zappa:first name="Frank"motto="Music is the best"...\par
+\setparameter Zappa:firstname="Frank"motto="Music is the best"...\par
\example/
\noindent Finally, there's a special rule. Control sequences gobble the
@@ -318,8 +325,9 @@ in an orderly fasion, e.g.:
\example
\setparameter page :
- pagewidth = 32cm
- pageheight = 30cm
+ pagewidth = 30cm
+ pageheight = 32cm
+ top bottom = 2cm
lines = 45
whatever = \foo
...
@@ -333,9 +341,21 @@ in an orderly fasion, e.g.:
\noindent Thus, I find commas to delimit values equally superfluous and find
the odd quote better. Anyway setting parameters is far from the whole story.
+But before turning to how to use them, here's on fast way of setting a single attribute:
-
-
+\describe\setattribute\paramatt=\value\arg{space}.
+\describe\esetattribute\paramatt=\value\arg{space}.
+\describe\gsetattribute\paramatt=\value\arg{space}.
+\describe\xsetattribute\paramatt=\value\arg{space}.
+This sets \attr (no list) for \param (no list) to \value; see
+below for the \paramatt syntax. Note that the \arg{space} is for real,
+so don't forget it. The `=' sign may be surrounded by optional space.
+This command can be used instead of \com\setparameter for two reasons:
+first, it is much faster (because it doesn't take lists into account);
+second, if \param is active it is \ital{not} executed (see the section
+\pdfstartlink attr{/B [0 0 0]} goto name{defpar} \ital{Defining parameters}\pdfendlink).
+The \verb"e-", \verb"g-" and \verb"x-"versions sets the attribute
+with the \verb"e:", \verb"g:" and \verb"x:" prefixes respectively.
@@ -692,6 +712,7 @@ you redefine the default commands, which is dangerous.
To be precise, the commands copied are (omitting the \verb/-or/
and \verb/-and/ variants, which are created too, if any):
+\com\setattribute, \com\esetattribute, \com\gsetattribute, \com\xsetattribute,
\com\ifattribute, \com\usevalue, \com\passvalue, \com\passvaluenobraces,
\com\settovalue, \com\storevalue, \com\ifvalue, \com\ifcasevalue,
\com\deleteattribute and \com\restrictattribute (which you'll learn
@@ -779,8 +800,8 @@ only the former restriction holds. E.g.:
-
\section{Defining parameters}
+\pdfdest name {defpar} xyz
\describe\defparameter\paralist\barg{definition}.
Parameters aren't just a way of organizing attributes. They
@@ -848,7 +869,10 @@ Fascinating. Once again?
Cool.
\Example/
-\vskip-2\baselineskip
+
+{\it\noindent See next page for the last example.}
+
+
\Example
\setparameter metasection :
skip = 2
diff --git a/Master/texmf-dist/tex/generic/yax/t-yax.tex b/Master/texmf-dist/tex/generic/yax/t-yax.tex
index 49d6af4a0b5..11aaacab5da 100644
--- a/Master/texmf-dist/tex/generic/yax/t-yax.tex
+++ b/Master/texmf-dist/tex/generic/yax/t-yax.tex
@@ -5,11 +5,11 @@
% Author: Paul Isambert.
% E-mail: zappathustra AT free DOT fr
% Comments and suggestions are welcome.
-% Date: June 2010.
+% Date: July 2010.
%
%D \module
%D [ file=t-yax,
-%D version=2010.06.17,
+%D version=2010.07.10,
%D title=\CONTEXT\ User Module,
%D subtitle=YaX,
%D author=Paul Isambert,
diff --git a/Master/texmf-dist/tex/generic/yax/yax.sty b/Master/texmf-dist/tex/generic/yax/yax.sty
index 58477727ee7..a537c3d92fc 100644
--- a/Master/texmf-dist/tex/generic/yax/yax.sty
+++ b/Master/texmf-dist/tex/generic/yax/yax.sty
@@ -5,10 +5,10 @@
% Author: Paul Isambert.
% E-mail: zappathustra AT free DOT fr
% Comments and suggestions are welcome.
-% Date: June 2010.
+% Date: July 2010.
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{yax}[2010/06/17 v.1.0 Yet Another Key System.]
+\ProvidesPackage{yax}[2010/07/10 v.1.01 Yet Another Key System.]
\chardef\formatnumber=4
\input yax.tex
\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/generic/yax/yax.tex b/Master/texmf-dist/tex/generic/yax/yax.tex
index f799557634d..36cf486f02a 100644
--- a/Master/texmf-dist/tex/generic/yax/yax.tex
+++ b/Master/texmf-dist/tex/generic/yax/yax.tex
@@ -4,12 +4,25 @@
% Author: Paul Isambert.
% E-mail: zappathustra AT free DOT fr
% Comments and suggestions are welcome.
-% Date: June 2010.
+% Date: July 2010.
%
\input texapi % Everything I need. It figures: I wrote it for this.
+\ifcsname yax@already_loaded\endcsname
+ \expandafter\endinput
+\fi
+
+% No need to test texapi's version, since \texapiversion was
+% defined in v.1.01 and that's the one needed.
+\unless\ifdefined\texapiversion
+ \senderror{YaX}{You need texapi with version at least 1.01. I quit}
+ \expandafter\endinput
+\fi
+
\setcatcodes{@_=11}
-\def\yax@error{\senderror{YAX}}
+\def\yaxversion{1.01}
+\let\yax@already_loaded\relax
+\def\yax@error{\senderror{YaX}}
%
% Retrieval of parameter and attribute.
@@ -66,6 +79,7 @@
}
\newfor\yax@setattributes_loop#1={%
\passtrim{#1}\yax@setattributes_checkprefix
+ \addright\yax@attribute{ }% Final space delimiter
\pausefor\yax@setattributes_howgiven
}[\iffcs{yax@\yax@parameter @active}
{\usecs{yax@\yax@parameter @def}}]
@@ -83,14 +97,24 @@
\yax@setattributes_getquote
% No need for a new nospace: it has been removed
{\ifcatnext\foo
- \yax@setattributes_do % Since one visible \cs is supposed to be the only token in value.
+ \yax@setattributes_getcommand
\yax@setattributes_getspace}%
}
-\long\def\yax@setattributes_getquote"#1"{%
+\long\def\yax@setattribute_single#1#2{%
+ \def\yax@attribute{#2}%
\yax@setattributes_do{#1}%
}
+\long\def\yax@setattributes_getquote"#1"{%
+ \passexpanded{\yax@space_loop{\yax@setattribute_single{#1}}}{\yax@attribute}%
+ \nospace{\resumefor\yax@setattributes_loop}% Better not to forget this!
+ }
+\long\def\yax@setattributes_getcommand#1{%
+ \passexpanded{\yax@space_loop{\yax@setattribute_single{#1}}}{\yax@attribute}%
+ \nospace{\resumefor\yax@setattributes_loop}%
+ }
\long\def\yax@setattributes_getspace#1 {%
- \yax@setattributes_do{#1}%
+ \passexpanded{\yax@space_loop{\yax@setattribute_single{#1}}}{\yax@attribute}%
+ \nospace{\resumefor\yax@setattributes_loop}%
}
\newif\ifyax@makedef
\long\def\yax@setattributes_do#1{%
@@ -116,7 +140,6 @@
\ifyax@makedef
\yax@dodef{yax@\yax@parameter:\yax@attribute}{#1}%
\fi
- \resumefor\yax@setattributes_loop% Better not to forget this!
}
%
%
@@ -229,6 +252,34 @@
\letcs{yax@#1:#2}\yax@undefined
}
%
+% \setattribute <parameter> : <attribute> = <value>
+%
+\def\yax@removesign#1#2#3#4={#1{#2}{#3}}%
+\def\setattribute{%
+ \let\yax@dodef\defcs
+ \yax@getall{\yax@removesign\yax@setattribute}%
+ }
+\def\esetattribute{%
+ \let\yax@dodef\edefcs
+ \yax@getall{\yax@removesign\yax@setattribute}%
+ }
+\def\gsetattribute{%
+ \let\yax@dodef\gdefcs
+ \yax@getall{\yax@removesign\yax@setattribute}%
+ }
+\def\xsetattribute{%
+ \let\yax@dodef\xdefcs
+ \yax@getall{\yax@removesign\yax@setattribute}%
+ }
+\def\yax@setattribute#1#2{%
+ \def\yax@parameter{#1}%
+ \def\yax@attribute{#2}%
+ \nospace\yax@setattribute_getvalue
+ }
+\def\yax@setattribute_getvalue#1 {%
+ \yax@setattributes_do{#1}%
+ }
+%
%
%
%
@@ -406,13 +457,12 @@
% \ifvalue
%
\def\ifvalue{%
- \yax@getall{\yax@ifvalue_removesign\yax@ifvalue_getvalue}%
+ \yax@getall{\yax@removesign\yax@ifvalue_getvalue}%
}%
\def\yax@ifvalue_nometa{%
- \yax@getall{\yax@ifvalue_removesign\yax@ifvaluenometa_getvalue}%
+ \yax@getall{\yax@removesign\yax@ifvaluenometa_getvalue}%
}%
-\def\yax@ifvalue_removesign#1#2#3#4={#1{#2}{#3}}%
\long\def\yax@ifvalue_getvalue#1#2#3 {%
\ifemptystring{#3}
{\yax@ifvalue_getvalue{#1}{#2}}
@@ -488,6 +538,10 @@
\long\def\yax@newsyntax#1#2{%
\defcs{#2restrictattribute}#1{\yax@restrictattribute_getrestrictions{##1}{##2}}%
\defcs{#2deleteattribute}#1{\letcs{yax@##1:##2}\yax@undefined}%
+ \defcs{#2setattribute}#1{\let\yax@dodef\defcs\yax@removesign{\nospace\yax@setattribute}{##1}{##2}}%
+ \defcs{#2esetattribute}#1{\let\yax@dodef\edefcs\yax@removesign{\nospace\yax@setattribute}{##1}{##2}}%
+ \defcs{#2gsetattribute}#1{\let\yax@dodef\gdefcs\yax@removesign{\nospace\yax@setattribute}{##1}{##2}}%
+ \defcs{#2xsetattribute}#1{\let\yax@dodef\xdefcs\yax@removesign{\nospace\yax@setattribute}{##1}{##2}}%
\defcs{#2ifattribute}#1{\yax@ifattribute_and{}\gobbleone{##1}{##2}}%
\defcs{yax@#2ifattribute_nometa}#1{\yax@ifattributenometa_and\gobbleone{##1}{##2}}%
\yax@newsyntax_noarg{#2usevalue}{#1}\usecs
@@ -496,8 +550,8 @@
\passexpanded{\yax@newsyntax_onearg{#2passvaluenobraces}}{\yax@temp{##2}{##3}}\yax@passvalue_nobrace
\passexpanded{\yax@newsyntax_onearg{#2settovalue}}{\yax@temp{##2}{##3}}\yax@settovalue
\passexpanded{\yax@newsyntax_onearg{#2storevalue}}{\yax@temp{##2}{##3}}\yax@storevalue
- \defcs{#2ifvalue}#1{\yax@ifvalue_removesign\yax@ifvalue_getvalue{##1}{##2}}%
- \defcs{yax@#2ifvalue_nometa}#1{\yax@ifvalue_removesign\yax@ifvaluenometa_getvalue{##1}{##2}}%
+ \defcs{#2ifvalue}#1{\yax@removesign\yax@ifvalue_getvalue{##1}{##2}}%
+ \defcs{yax@#2ifvalue_nometa}#1{\yax@removesign\yax@ifvaluenometa_getvalue{##1}{##2}}%
\defcs{#2ifcasevalue}#1{\yax@ifcasevalue_getvalue{##1}{##2}}%
\defcs{yax@#2ifcasevalue_nometa}#1{\expandafter\nometa\yax@ifcasevalue_getvalue{##1}{##2}}%
}
@@ -512,6 +566,10 @@
\def\copysyntax#1#2{%
\letcstocs{#1restrictattribute}{#2restrictattribute}%
\letcstocs{#1deleteattribute}{#2deleteattribute}%
+ \letcstocs{#1setattribute}{#2setattribute}%
+ \letcstocs{#1esetattribute}{#2esetattribute}%
+ \letcstocs{#1gsetattribute}{#2gsetattribute}%
+ \letcstocs{#1xsetattribute}{#2xsetattribute}%
\yax@let{ifattribute}{#1}{#2}%
\yax@let_all{usevalue}{#1}{#2}\yax@let_all{passvalue}{#1}{#2}\yax@let_all{passvaluenobraces}{#1}{#2}%
\yax@let_all{settovalue}{#1}{#2}\yax@let_all{storevalue}{#1}{#2}%