summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2011-01-26 23:20:47 +0000
committerKarl Berry <karl@freefriends.org>2011-01-26 23:20:47 +0000
commitb47db3c140fe93b5deb16f3a7ad16be2134e81e7 (patch)
treeaf12a714ae6c3d680fea8c145084073e6ed062e5 /Master/texmf-dist/source/latex
parent66c848bc93dc9fa2b85a8ad329ea12e2e0d0524b (diff)
xpackages 2138 (26jan11)
git-svn-id: svn://tug.org/texlive/trunk@21184 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex')
-rw-r--r--Master/texmf-dist/source/latex/xpackages/xbase/template-test.tex77
-rw-r--r--Master/texmf-dist/source/latex/xpackages/xbase/template-test2.tex110
-rw-r--r--Master/texmf-dist/source/latex/xpackages/xbase/tprestrict-test.tex80
-rw-r--r--Master/texmf-dist/source/latex/xpackages/xbase/xparse.dtx33
-rw-r--r--Master/texmf-dist/source/latex/xpackages/xcoffins/xcoffins-test.tex380
-rw-r--r--Master/texmf-dist/source/latex/xpackages/xcoffins/xcoffins-tschichold-example.tex185
-rw-r--r--Master/texmf-dist/source/latex/xpackages/xhead/xhead-test.tex245
-rw-r--r--Master/texmf-dist/source/latex/xpackages/xtras/l3keys2e-demo.tex46
8 files changed, 1142 insertions, 14 deletions
diff --git a/Master/texmf-dist/source/latex/xpackages/xbase/template-test.tex b/Master/texmf-dist/source/latex/xpackages/xbase/template-test.tex
new file mode 100644
index 00000000000..5684ce7a90f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xpackages/xbase/template-test.tex
@@ -0,0 +1,77 @@
+% \iffalse
+%% (C) Copyright 2000-2004 LaTeX3 Project
+%%
+%% It may be distributed and/or modified under the conditions of the
+%% LaTeX Project Public License (LPPL), either version 1.3a of this
+%% license or (at your option) any later version. The latest version
+%% of this license is in the file
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the ``xbase bundle'' (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+%% The released version of this bundle is available from CTAN.
+%%
+%% -----------------------------------------------------------------------
+%%
+%% The development version of the bundle can be found at
+%%
+%% http://www.latex-project.org/svnroot/experimental/trunk/
+%%
+%% for those people who are interested.
+%%
+%%%%%%%%%%%
+%% NOTE: %%
+%%%%%%%%%%%
+%%
+%% Snapshots taken from the repository represent work in progress and may
+%% not work or may contain conflicting material! We therefore ask
+%% people _not_ to put them into distributions, archives, etc. without
+%% prior consultation with the LaTeX Project Team.
+%%
+%% -----------------------------------------------------------------------
+%%
+%% $Id: template-test.tex 1628 2009-10-25 09:54:34Z mittelba $
+%%
+% \fi
+%
+\RequirePackage{template}
+
+\DeclareTemplateType{xxx}{0}
+
+\DeclareTemplate{xxx}{test}{0}
+ {
+ xkey=n \xkey,
+ key =i {yyy} \value
+ }
+ {
+ \DoParameterAssignments
+ \show\xkey
+ \show\value
+ \value
+ }
+
+\DeclareTemplateType{yyy}{0}
+
+\DeclareTemplate{yyy}{foo}{0}
+ {
+ keya =L \foo
+ }
+ {
+ \DoParameterAssignments
+ \show\foo
+ }
+
+
+\DeclareInstance{xxx}{bar}{test}
+ {
+ xkey = \UseTemplate{yyy}{foo}{ keya = 20pt },
+ key = \UseTemplate{yyy}{foo}{ keya = 10pt }
+ }
+
+\ShowInstance{xxx}{bar}
+
+\UseInstance{xxx}{bar}
+
+\stop
diff --git a/Master/texmf-dist/source/latex/xpackages/xbase/template-test2.tex b/Master/texmf-dist/source/latex/xpackages/xbase/template-test2.tex
new file mode 100644
index 00000000000..489e9f2304a
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xpackages/xbase/template-test2.tex
@@ -0,0 +1,110 @@
+% \iffalse
+%% (C) Copyright 2000-2004 LaTeX3 Project
+%%
+%% It may be distributed and/or modified under the conditions of the
+%% LaTeX Project Public License (LPPL), either version 1.3a of this
+%% license or (at your option) any later version. The latest version
+%% of this license is in the file
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the ``xbase bundle'' (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+%% The released version of this bundle is available from CTAN.
+%%
+%% -----------------------------------------------------------------------
+%%
+%% The development version of the bundle can be found at
+%%
+%% http://www.latex-project.org/cgi-bin/cvsweb.cgi/
+%%
+%% for those people who are interested.
+%%
+%%%%%%%%%%%
+%% NOTE: %%
+%%%%%%%%%%%
+%%
+%% Snapshots taken from the repository represent work in progress and may
+%% not work or may contain conflicting material! We therefore ask
+%% people _not_ to put them into distributions, archives, etc. without
+%% prior consultation with the LaTeX Project Team.
+%%
+%% -----------------------------------------------------------------------
+%%
+%% $Id: template-test2.tex 585 2006-12-12 17:31:48Z morten $
+%%
+% \fi
+%
+
+
+\RequirePackage{template}
+\RequirePackage{trace}
+
+\DeclareTemplateType{xxx}{0}
+
+\def\MultiSelection{\MultiSelectionError}
+%\def\foo{bar}
+
+%\traceon
+
+\DeclareTemplate{xxx}{test}{0}
+ {
+ xkey=n [\foo] \xkey,
+ ykey=n [\DelayEvaluation\foo] \ykey,
+ zkey=n \zkey,
+ last=n [last] \lastkey,
+ set =i {xxx} \xxx
+ }
+ {
+ \DoParameterAssignments
+ \typeout{abc}
+ }
+\ShowTemplate{xxx}{test}
+
+
+\DeclareInstance{xxx}{bar}{test}
+ {
+ zkey = foo,
+ xkey = baz,
+ }
+
+\DeclareInstance{xxx}{baz}{test}
+ {
+ last = first,
+ set = \UseTemplate{xxx}{test}{zkey=rrr},
+ zkey = foo
+ }
+
+
+\ShowInstance{xxx}{bar}
+\ShowInstance{xxx}{baz}
+
+\DeclareTemplateType{yyy}{0}
+
+\DeclareTemplate{yyy}{foo}{0}
+ {
+ keya =L \foo
+ }
+ {
+ \DoParameterAssignments
+ \show\foo
+ }
+
+
+\DeclareInstance{xxx}{bar}{test}
+ {
+ xkey = \UseTemplate{yyy}{foo}{ keya = 20pt },
+ key = \UseTemplate{yyy}{foo}{ keya = 10pt }
+ }
+
+\ShowInstance{xxx}{bar}
+
+\UseInstance{xxx}{bar}
+
+\stop
+
+%%% Local Variables:
+%%% mode: plain-tex
+%%% TeX-master: t
+%%% End:
diff --git a/Master/texmf-dist/source/latex/xpackages/xbase/tprestrict-test.tex b/Master/texmf-dist/source/latex/xpackages/xbase/tprestrict-test.tex
new file mode 100644
index 00000000000..d981888d450
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xpackages/xbase/tprestrict-test.tex
@@ -0,0 +1,80 @@
+% \iffalse
+%% (C) Copyright 2000-2004 LaTeX3 Project
+%%
+%% It may be distributed and/or modified under the conditions of the
+%% LaTeX Project Public License (LPPL), either version 1.3a of this
+%% license or (at your option) any later version. The latest version
+%% of this license is in the file
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the ``xbase bundle'' (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+%% The released version of this bundle is available from CTAN.
+%%
+%% -----------------------------------------------------------------------
+%%
+%% The development version of the bundle can be found at
+%%
+%% http://www.latex-project.org/svnroot/experimental/trunk/
+%%
+%% for those people who are interested.
+%%
+%%%%%%%%%%%
+%% NOTE: %%
+%%%%%%%%%%%
+%%
+%% Snapshots taken from the repository represent work in progress and may
+%% not work or may contain conflicting material! We therefore ask
+%% people _not_ to put them into distributions, archives, etc. without
+%% prior consultation with the LaTeX Project Team.
+%%
+%% -----------------------------------------------------------------------
+%%
+%% $Id: tprestrict-test.tex 1628 2009-10-25 09:54:34Z mittelba $
+%%
+% \fi
+%
+
+\makeatletter
+\RequirePackage{template}
+\IgnoreWhiteSpace
+
+\newcount\ca
+\newdimen\da
+
+
+\DeclareTemplateType{type}{0}
+
+\DeclareTemplate{type}{Ta}{0}{
+ one =l [2in] \da,
+ two =c [5] \ca}
+ {\DoParameterAssignments\typeout{\da=\the\da,\@spaces \ca=\the\ca}}
+
+\ShowTemplate{type}{Ta}
+
+\typeout{1^^J==}
+\UseTemplate{type}{Ta}{}
+
+\typeout{2^^J==}
+\UseTemplate{type}{Ta}{one=44pt, two=7}
+
+
+\DeclareRestrictedTemplate{type}{Tb}{Ta}{one=33pt}
+
+\ShowTemplate{type}{Tb}
+
+\typeout{RESTRICT^^J3^^J==}
+
+\DeclareInstance{type}{foo}{Tb}{two=9}
+
+\ShowInstance{type}{foo}
+
+\UseInstance{type}{foo}
+
+\typeout{4^^J==}
+\UseTemplate{type}{Tb}{two=7}
+
+\stop
+
diff --git a/Master/texmf-dist/source/latex/xpackages/xbase/xparse.dtx b/Master/texmf-dist/source/latex/xpackages/xbase/xparse.dtx
index ab2f5d2887c..ab45217f33f 100644
--- a/Master/texmf-dist/source/latex/xpackages/xbase/xparse.dtx
+++ b/Master/texmf-dist/source/latex/xpackages/xbase/xparse.dtx
@@ -41,7 +41,7 @@
\RequirePackage{l3names}
%</driver|package>
%\fi
-\GetIdInfo$Id: xparse.dtx 2125 2011-01-09 15:24:39Z joseph $
+\GetIdInfo$Id: xparse.dtx 2136 2011-01-23 12:15:49Z joseph $
{Generic document command parser}
%\iffalse
%<*driver>
@@ -90,7 +90,7 @@
% \item \cs{RenewDocumentEnvironment}
% \item \cs{ProvideDocumentEnvironment}
% \item \cs{IfNoValue(TF)} (the need for \cs{IfValue(TF)} is currently
-% an item of active discussion)x
+% an item of active discussion)
% \item \cs{IfBoolean(TF)}
%\end{itemize}
% with the other functions currently regarded as `experimental'. Please
@@ -166,7 +166,7 @@
% \item |#4| = |{Bar}|
% \item |#5| = |{default}|
%\end{itemize}
-% whereas `|[One][Two]{}[three]|' would be parsed as:
+% whereas `|[One][Two]{}[Three]|' would be parsed as:
%\begin{itemize}[nolistsep]
% \item |#1| = |\BooleanFalse|
% \item |#2| = |{One}|
@@ -175,8 +175,10 @@
% \item |#5| = |{Three}|
%\end{itemize}
% Note that after parsing the input there will be always exactly the
-% same number of brace groups or tokens as the number of letters in the
-% argument specifier.
+% same number of \meta{balanced text} arguments as the number of letters
+% in the argument specifier. The \cs{BooleanTrue} and \cs{BooleanFalse}
+% tokens are passed without braces; all other arguments are passed as
+% brace groups.
%
% Two more tokens have a special meaning when creating an argument
% specifier. First, \texttt{+} is used to make an argument long (to
@@ -324,7 +326,7 @@
% \IfNoValueTF {#1} {
% \DoSomethingJustWithMandatoryArgument {#2}
% }{
-% \DoSomethingBothArguments {#1} {#2}
+% \DoSomethingWithBothArguments {#1} {#2}
% }
% }
% \end{verbatim}
@@ -441,6 +443,9 @@
% An error is given if too many \meta{tokens} are present in the
% input. The processed input is places inside
% \( \text{\meta{number}} + 1 \) sets of braces for further use.
+% If there are less than \Arg{number} of \Arg{tokens} in the argument
+% then empty brace groups are added at the end of the processed
+% argument.
% \begin{verbatim}
% \DeclareDocumentCommand \foo
% { > { \SplitArgument { 2 } { ; } } m }
@@ -577,6 +582,10 @@
% the \meta{function} or \meta{environment} has no known argument
% specification then an error is issued.
%\end{function}
+%
+%\end{documentation}
+%
+%\begin{implementation}
%
%\subsection{Variables and constants}
%
@@ -954,10 +963,6 @@
% depending on the \cs{long} status of the expandable function.
%\end{function}
%
-%\end{documentation}
-%
-%\begin{implementation}
-%
%\section{\pkg{xparse} implementation}
%
% The usual lead-off: only needed for the package, of course (one day we
@@ -1796,7 +1801,7 @@
}
#5 \xparse_grab_arg_aux_ii:w ##1 #2 {
\tl_if_in:nnTF {##1} {#1} {
- \xparse_grab_D_nested:NNNnn #1 #2 {##1} {#4} #5
+ \xparse_grab_D_nested:NNnnN #1 #2 {##1} {#4} #5
}{
\xparse_add_arg:n {##1}
#4 \l_xparse_args_tl
@@ -1815,7 +1820,7 @@
%\end{macro}
%\end{macro}
%\end{macro}
-%\begin{macro}[aux]{\xparse_grab_D_nested:NNnNn}
+%\begin{macro}[aux]{\xparse_grab_D_nested:NNnnN}
%\begin{macro}{\_l_xparse_nesting_a_tl}
%\begin{macro}{\_l_xparse_nesting_b_tl}
%\begin{macro}{\q_xparse}
@@ -1834,7 +1839,7 @@
\tl_new:N \_l_xparse_nesting_a_tl
\tl_new:N \_l_xparse_nesting_b_tl
\quark_new:N \q_xparse
-\cs_new_protected:Npn \xparse_grab_D_nested:NNNnn #1#2#3#4#5 {
+\cs_new_protected:Npn \xparse_grab_D_nested:NNnnN #1#2#3#4#5 {
\tl_clear:N \_l_xparse_nesting_a_tl
\tl_clear:N \_l_xparse_nesting_b_tl
#5 \xparse_grab_arg:w ##1 #1 ##2 \q_xparse ##3 #2
@@ -1844,6 +1849,7 @@
\tl_if_in:nnTF {##2} {#1}
{ \xparse_grab_arg:w ##2 \q_xparse }
{
+ \tl_put_right:Nn \_l_xparse_nesting_a_tl {##2}
\tl_if_in:NnTF \_l_xparse_nesting_b_tl {#1}
{
\tl_set_eq:NN \l_xparse_tmp_tl \_l_xparse_nesting_b_tl
@@ -1852,7 +1858,6 @@
\l_xparse_tmp_tl \q_xparse
}
{
- \tl_put_right:Nn \_l_xparse_nesting_a_tl {##2}
\tl_put_right:NV \_l_xparse_nesting_a_tl
\_l_xparse_nesting_b_tl
\xparse_add_arg:V \_l_xparse_nesting_a_tl
diff --git a/Master/texmf-dist/source/latex/xpackages/xcoffins/xcoffins-test.tex b/Master/texmf-dist/source/latex/xpackages/xcoffins/xcoffins-test.tex
new file mode 100644
index 00000000000..1ede1770c08
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xpackages/xcoffins/xcoffins-test.tex
@@ -0,0 +1,380 @@
+
+\documentclass{article}
+
+\usepackage[T1]{fontenc}
+\usepackage{times,multicol}
+\usepackage{xcoffins}
+
+\usepackage{color}
+\newcommand\cbox[2][.8]{{\setlength\fboxsep{0pt}\colorbox[gray]{#1}{#2}}}
+
+\newcommand\hrulebox [2]{\setbox#1\hbox to#2{{\scriptsize\itshape
+ \color{blue}\hrulefill #2\hrulefill}}}
+\newcommand\vrulebox [2]{\setbox#1\vbox to#2{{\hsize 1pt\centering\scriptsize
+ \itshape\color{blue}\leaders\vrule\vfill
+ \hbox to0pt{\hss #2\hss}\leaders\vrule\vfill\par}}}
+
+
+\addtolength\textwidth{10pt}
+
+\showboxdepth 9999
+\showboxbreadth 9999
+\tracingonline 1
+
+
+\scrollmode
+
+\newbox\zzz
+
+
+\begin{document}
+
+
+\title{Test file for coffins}
+\author{FMi}
+\maketitle
+
+First we add a few test coffins:
+\begin{verbatim}
+ \newcoffin \aaa
+ \newcoffin \bbb
+ \newcoffin \ccc
+ \newcoffin \ddd
+\end{verbatim}
+ \newcoffin \aaa
+ \newcoffin \bbb
+ \newcoffin \ccc
+ \newcoffin \ddd
+and some boxes not set up as ordinary boxes (without extra poles):
+\begin{verbatim}
+ \newbox \xxx
+ \newbox \yyy
+\end{verbatim}
+ \newbox \xxx
+ \newbox \yyy
+
+
+If a coffin receives data a set of ``natural'' default poles are automatically added.
+\begin{verbatim}
+\sbox\aaa{\fbox{\begin{tabular}[b]{l}123\\4\\5\end{tabular}}}
+\showcoffindata \aaa
+\end{verbatim}
+\sbox\aaa{\fbox{\begin{tabular}[b]{l}123\\4\\5\end{tabular}}}
+\showcoffindata \aaa
+
+
+In contrast, boxes not declared as coffins have no poles defined. However, if
+used as coffins at least the natural default poles can be used without
+further problems, i.e.,they are changed to coffins automatically on use.
+\begin{verbatim}
+\sbox\xxx{\fbox{Some very looooonggg Caption Text}}
+\showpoles \xxx
+\end{verbatim}
+\sbox\xxx{\fbox{Some very looooonggg Caption Text}}
+\showcoffindata \xxx
+
+
+Using \verb|\setvcoffin| instead of \verb|\sbox| gives us the codes with
+\texttt{T} and \texttt{B}. Similar to \verb|\parbox| this command requires to
+specify a target width of the box:
+\begin{verbatim}
+\setvcoffin \aaa {1.5cm} {\centering
+ \fbox{\begin{tabular}[b]{l}123\\4\\5\end{tabular}}}
+\showcoffindata \aaa
+\end{verbatim}
+\setvcoffin \aaa {1.5cm} {\centering
+ \fbox{\begin{tabular}[b]{l}123\\4\\5\end{tabular}}}
+\showcoffindata \aaa
+
+There are a dozen natural poles per box (some with multiple names); you can
+move each of the poles to someplace else (either to an absolute position in
+``box space'' or relative to its previous position). The coordinates can
+refer to box dimensions (using \verb|\height|, \verb|\depth|,
+ and \verb|width|). First we move some pole and add one
+additional one:
+\begin{verbatim}
+\setcoffinpole \aaa [h]{t}(\height -3pt)
+\setcoffinpole \aaa [v]{l}(0pt)
+\setcoffinpole \aaa [h]{mybottom}(\depth +2pt)
+\showcoffindata \aaa
+\end{verbatim}
+\setcoffinpole \aaa [h]{t}(\height -3pt)
+\setcoffinpole \aaa [v]{l}(0pt)
+\setcoffinpole \aaa [h]{mybottom}(\depth +2pt)
+\showcoffindata \aaa
+
+
+More interesting in many cases is the relative move of poles. For this the
+poles better exist or one gets an error and \texttt{0pt,0pt} is used:
+\begin{verbatim}
+\adjustcoffinpole \aaa [h]{H}(1pt)
+\adjustcoffinpole \aaa [v]{l}(1pt)
+\adjustcoffinpole \aaa [h]{undefined}(1pt)
+\showcoffindata \aaa
+\end{verbatim}
+\adjustcoffinpole \aaa [h]{H}(1pt)
+\adjustcoffinpole \aaa [v]{l}(1pt)
+\adjustcoffinpole \aaa [h]{undefined}(1pt)
+\showcoffindata \aaa
+
+
+
+\sbox \aaa {\fontsize{14.4}{5.5pc minus .5pc}\sffamily C\,H\,A\,P\,T\,E\,R
+ \fontsize{36}{40pt}\selectfont 2}
+
+\setvcoffin \bbb {11cm}
+ {\raggedleft\normalfont\fontsize{36}{38pt}\bfseries
+ The Structure of a \LaTeX{} Document}
+
+\setvcoffin \ccc {13cm}
+ {Some sample blind text to produce paragraph data after a heading.
+ Some sample blind text to produce paragraph data after a heading.
+ Some sample blind text to produce paragraph data after a heading.
+ Some sample blind text to produce paragraph data after a heading.
+ \endgraf
+ Some more sample blind text to produce paragraph data after a heading.
+ Some more sample blind text to produce paragraph data after a heading.
+}
+
+
+Suppose you have the following blocks of text:
+
+\bigskip
+
+\noindent\cbox{\usebox\aaa}
+
+\begin{multicols}{2}
+\ttfamily\tiny
+\ExplSyntaxOn
+ \noindent \coffin_print_pole_values:Nn \aaa \\
+\ExplSyntaxOff
+\end{multicols}
+
+\medskip
+
+\noindent\cbox{\usebox\bbb}
+
+\medskip
+
+\noindent\cbox{\usebox\ccc}
+
+\bigskip
+
+produced by:
+\begin{verbatim}
+\sbox \aaa {\fontsize{14.4}{5.5pc minus .5pc}\sffamily
+ C\,H\,A\,P\,T\,E\,R
+ \fontsize{36}{40pt}\selectfont 2}
+\setvcoffin \bbb {11cm}
+ {\raggedleft\normalfont\fontsize{36}{38pt}\bfseries
+ The Structure of a \LaTeX{} Document}
+\setvcoffin \ccc {13cm}
+ {Some sample blind text to produce paragraph
+ data after a heading. ... }
+\end{verbatim}
+
+How do you turn this into a heading of TLC2?
+
+
+\newbox\RBi
+\newbox\RBii
+\newbox\RBiii
+
+\hrulebox\RBi{62pt}
+\vrulebox\RBii{90pt}
+\vrulebox\RBiii{60pt}
+
+\aligncoffins \bbb [T,r] \aaa [H,r](-62pt,60pt)
+\aligncoffins \ccc[T,r] \bbb[B,r](62pt,90pt)
+
+ \aligncoffins * \ccc[\bbb-T,\bbb-hc] \RBiii[b,hc](28pt,0pt)
+ \aligncoffins * \ccc[\bbb-b,\bbb-r] \RBi[H,r](0pt,-5pt)
+ \aligncoffins * \ccc[\bbb-B,\bbb-hc] \RBii[t,r](14pt,0pt)
+
+\newpage
+
+How do you best define/describe the following design?
+
+\medskip
+
+\noindent\cbox{\usebox\ccc}
+
+
+
+
+
+
+\newpage \pagestyle{empty}
+
+\newcoffin \eee
+\newcoffin \fff
+\newcoffin \ggg
+
+\sbox \aaa {\small\scshape les vases communicants}
+\sbox \bbb {\scshape comunicating}
+\sbox \ccc {\fontsize{70pt}{60pt} \bfseries Ve\S els}
+\sbox \ddd {\scshape andr\'e breton}
+\setvcoffin \eee {4.7cm}{\noindent Translated by Mary Ann Caws \&\break
+ Geoffrey T.\,Harris, with notes \&\break
+ introduction by Mary Ann Caws\parfillskip=0pt\relax
+ }
+\sbox \fff {University of Nebraska Press: Lincoln \& London}
+
+\setvcoffin \ggg {100mm}{\noindent\fbox{\parbox{97mm}{\leavevmode\vspace*{228mm}}}}
+
+
+\aligncoffins \ccc [H,r] \ddd [H,r](0pt,-12pt)
+\aligncoffins \ccc [t,l] \bbb (0pt,6pt)
+\aligncoffins \ccc [H,r] \aaa [H,r](0pt,138pt)
+\aligncoffins \eee [T,l] \ccc (0pt,22pc)
+\aligncoffins \fff \eee [B,l](0pt,4pc)
+\aligncoffins \ggg [b,l] \fff [B,l](54pt,11pc)
+
+
+\vspace*{-2cm}
+\noindent\cbox{\usebox\ggg}
+
+
+\newpage
+
+\section{Rotation}
+
+\sbox \aaa {\tabcolsep0pt\begin{tabular}[c]{|c|}\hline a\\b\\cccccccccccccc\\d
+ \\e\\e\\e\\e\\\hline\end{tabular}}
+\sbox \bbb {\fbox{A sample Text}}
+
+% just for the sake of it:
+\adjustcoffinpole \aaa {T}(24pt)
+\displaycoffinpoles \aaa {black}
+x\cbox{\usebox \aaa }x
+%
+\rotatecoffin \aaa {45}
+\displaycoffinhandle \aaa {b}{hc} {blue}
+\displaycoffinhandle \aaa {b}{l} {blue}
+\displaycoffinhandle \aaa {t}{r} {blue}
+\displaycoffinhandle \aaa {vc}{r} {blue}
+\displaycoffinhandle \aaa {vc}{l} {blue}
+\quad
+x\cbox{\usebox \aaa }x
+\rotatecoffin \aaa {45}
+\displaycoffinhandle \aaa {b}{r} {red}
+\displaycoffinhandle \aaa {vc}{l} {red}
+\quad
+x\cbox{\usebox \aaa }x
+
+\vspace{1cm}
+
+\rotatecoffin \aaa {45}
+\displaycoffinhandle \aaa {b}{l} {yellow}
+%
+x\cbox{\usebox \aaa }x
+%
+
+\vspace{1cm}
+
+x\cbox{\usebox \bbb }x
+%
+\rotatecoffin \bbb {45}
+\displaycoffinhandle \bbb {B}{hc} {yellow}
+\quad
+x\cbox{\usebox \bbb }x
+
+
+\section{Rotation + alignment}
+
+\aligncoffins \aaa [b,l] \bbb[B,hc](30pt,0pt)
+x\cbox{\usebox \aaa }x
+
+
+After we have aligned a roated box with some other box we need to decide about
+the bounding box of the new box. Right now this become the enclosing box and
+we do not maintain information about the inner boxes. So when we rotate that
+new box there seems to be unnecessary space in the enclosing bounding box,
+even though that is correct if you think of the aligned box being unrotated.
+
+There is at least the possibility to refer to the handles of the inner boxes
+as one can see by two of the green handles
+
+\medskip
+
+\rotatecoffin \aaa {45}
+\displaycoffinhandle \aaa {vc}{hc} {green}
+\displaycoffinhandle \aaa {H}{l} {green}
+\displaycoffinhandle \aaa {\aaa-T}{\aaa-r} {green}
+\displaycoffinhandle \aaa {\bbb-H}{\bbb-r} {green}
+%\quad
+x\cbox{\usebox \aaa }x
+
+We could do better, if we want to, by actually checking for max and
+min of all inner bounding box corners and construct the result BB box from
+that---but is it worth it?
+
+Perhaps it is! After all, the current implementation shows different results
+depending on when you align boxes and when you rotate, e.g., aligning first
+gives totally different bounding box results.
+
+\newpage
+
+Aligning first and then 135 + 45 rotation gives this:
+
+\sbox \aaa {\tabcolsep0pt\begin{tabular}[c]{|c|}\hline a\\b\\cccccccccccccc\\d
+ \\e\\e\\e\\e\\\hline\end{tabular}}
+\sbox \bbb {\fbox{A sample Text}}
+\rotatecoffin \bbb {90}
+
+\aligncoffins \aaa [b,l] \bbb[B,hc](-30pt,0pt)
+x\cbox{\usebox \aaa }x
+\qquad
+\rotatecoffin \aaa {135}
+x\cbox{\usebox \aaa }x
+\qquad
+\rotatecoffin \aaa {45}
+x\cbox{\usebox \aaa }x
+
+
+
+
+\newpage
+
+\section{Rotation by small amounts}
+
+\sbox \aaa {\tabcolsep0pt\begin{tabular}[c]{|c|}\hline a\\b\\ccccccccc\\d
+ \\e\\e\\e\\\hline\end{tabular}}
+
+\subsection{30 + 30 +30 }
+\rotatecoffin \aaa {30}
+x\cbox{\usebox \aaa }x
+\rotatecoffin \aaa {30}
+x\cbox{\usebox \aaa }x
+\rotatecoffin \aaa {30}
+x\cbox{\usebox \aaa }x
+
+\subsection{6 * 10 + 45 + 45 + 30}
+
+\rotatecoffin \aaa {10}
+x\cbox{\usebox \aaa }x
+\rotatecoffin \aaa {10}
+x\cbox{\usebox \aaa }x
+\rotatecoffin \aaa {10}
+x\cbox{\usebox \aaa }x
+
+\vspace{1cm}
+\rotatecoffin \aaa {10}
+x\cbox{\usebox \aaa }x
+\rotatecoffin \aaa {10}
+x\cbox{\usebox \aaa }x
+\rotatecoffin \aaa {10}
+x\cbox{\usebox \aaa }x
+
+\vspace{1cm}
+\rotatecoffin \aaa {45}
+x\cbox{\usebox \aaa }x
+\rotatecoffin \aaa {45}
+x\cbox{\usebox \aaa }x
+\rotatecoffin \aaa {30}
+x\cbox{\usebox \aaa }x
+
+
+\end{document}
+
+
diff --git a/Master/texmf-dist/source/latex/xpackages/xcoffins/xcoffins-tschichold-example.tex b/Master/texmf-dist/source/latex/xpackages/xcoffins/xcoffins-tschichold-example.tex
new file mode 100644
index 00000000000..1d76806feb2
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xpackages/xcoffins/xcoffins-tschichold-example.tex
@@ -0,0 +1,185 @@
+
+\documentclass{article}
+
+\usepackage[a4paper,margin=5pt]{geometry}
+
+\usepackage[T1]{fontenc}
+\usepackage{times,multicol,graphicx}
+\usepackage{l3coffins-new}
+
+\usepackage{times,color}
+\newcommand\cbox[2][.8]{{\setlength\fboxsep{0pt}\colorbox[gray]{#1}{#2}}}
+
+\ExplSyntaxOn
+
+\ExplSyntaxOff
+
+
+
+%\scrollmode
+
+\pagestyle{empty}
+
+\begin{document}
+
+ \NewCoffin \result
+ \NewCoffin \aaa
+ \NewCoffin \bbb
+ \NewCoffin \ccc
+ \NewCoffin \ddd
+ \NewCoffin \eee
+ \NewCoffin \fff
+ \NewCoffin \rulei
+ \NewCoffin \ruleii
+ \NewCoffin \ruleiii
+
+\SetHorizontalCoffin \result {}
+\SetHorizontalCoffin \aaa {\fontsize{52}{50}\sffamily\bfseries mitteilungen}
+\SetHorizontalCoffin \bbb {\fontsize{52}{50}\sffamily\bfseries typographische}
+\SetHorizontalCoffin \ccc {\fontsize{12}{10}\sffamily
+ \quad zeitschrift des bildungsverbandes der
+ deutschen buchdrucker leipzig
+ \textbullet{} oktoberheft 1925}
+\SetHorizontalCoffin \ddd {\fontsize{28}{20}\sffamily sonderheft}
+\SetVerticalCoffin \eee {180pt}
+ {\raggedleft\fontsize{31}{36}\sffamily\bfseries
+ elementare\\
+ typographie}
+\SetVerticalCoffin \fff {140pt}
+ {\raggedright \fontsize{13}{14}\sffamily\bfseries
+ natan altman \\
+ otto baumberger \\
+ herbert mayer \\
+ max burchartz \\
+ el lissitzky \\
+ ladislaus moholy-nagy \\
+ moln\'ar f.~farkas \\
+ johannes molzahn \\
+ kurt schwitters \\
+ mart stam \\
+ ivan tschichold}
+
+\RotateCoffin \bbb {90}
+\RotateCoffin \ccc {270}
+
+\SetHorizontalCoffin \rulei {\color{red}\rule{6.5in}{1pc}}
+\SetHorizontalCoffin \ruleii {\color{red}\rule{1pc}{23.5cm}}
+\SetHorizontalCoffin \ruleiii{\color{black}\rule{10pt}{152pt}}
+
+
+\JoinCoffins \result \aaa
+\JoinCoffins \result[\aaa-t,\aaa-r] \rulei [b,r](0pt,2mm)
+\JoinCoffins \result[\aaa-b,\aaa-l] \bbb [B,r](2pt,0pt)
+\JoinCoffins \result[\bbb-t,\bbb-r] \ruleii [t,r](-2mm,0pt)
+\JoinCoffins \result[\aaa-B,\aaa-r] \ccc [B,l](66pt,14pc)
+\JoinCoffins \result[\bbb-l,\ccc-B] \fff [t,r](-2mm,0pt)
+\JoinCoffins \result[\fff-b,\fff-r] \ruleiii [b,l](2mm,0pt)
+\JoinCoffins \result[\ccc-r,\fff-l] \eee [B,r]
+\JoinCoffins \result[\eee-T,\eee-r] \ddd [B,r](0pt,4pc)
+
+
+\vspace*{3cm}
+\begin{center}
+ {\Large Title page of ``elementare typographie'' by Ivan Tschichold\par}
+
+\large
+\vspace*{1cm}
+
+ 1. first the scanned original from 1925
+
+\vspace*{6mm}
+
+ 2. then the recreated \TeX{} version from 2010 using coffins---not
+ attempting\\ to match the fonts and size but the structure
+
+\vspace*{6mm}
+
+ 3. and finally the source code used.
+
+ This document uses the new
+ implementation by Joseph in \texttt{l3coffins-new}.
+
+\end{center}
+
+\newpage
+
+
+\begin{center}
+ \null
+ \fbox{\includegraphics[scale=.95]{elementare-typographie-title.jpg}}
+\end{center}
+
+\newpage
+xw
+\TypesetCoffin \result
+
+\newpage
+
+\vspace*{3cm}
+\begin{center}
+ {\Large Code used: \par}
+\vspace*{1cm}
+
+
+\begin{minipage}{14cm}
+\begin{verbatim}
+\SetHorizontalCoffin\result{}
+\SetHorizontalCoffin \aaa {\fontsize{52}{50}\sffamily\bfseries mitteilungen}
+\SetHorizontalCoffin \bbb {\fontsize{52}{50}\sffamily\bfseries typographische}
+\SetHorizontalCoffin \ccc {\fontsize{12}{10}\sffamily
+ \quad zeitschrift des bildungsverbandes der
+ deutschen buchdrucker leipzig
+ \textbullet{} oktoberheft 1925}
+\SetHorizontalCoffin \ddd {\fontsize{28}{20}\sffamily sonderheft}
+\SetVerticalCoffin \eee {180pt}
+ {\raggedleft\fontsize{31}{36}\sffamily\bfseries
+ elementare\\
+ typographie}
+\SetVerticalCoffin \fff {140pt}
+ {\raggedright \fontsize{13}{14}\sffamily\bfseries
+ natan altman \\
+ otto baumberger \\
+ herbert mayer \\
+ max burchartz \\
+ el lissitzky \\
+ ladislaus moholy-nagy \\
+ moln\'ar f.~farkas \\
+ jahannes molzahn \\
+ kurt schwitters \\
+ mart stam \\
+ ivan tschichold}
+
+\RotateCoffin \bbb {90}
+\RotateCoffin \ccc {270}
+
+\SetHorizontalCoffin \rulei {\color{red}\rule{6.5in}{1pc}}
+\SetHorizontalCoffin \ruleii {\color{red}\rule{1pc}{23.5cm}}
+\SetHorizontalCoffin \ruleiii{\color{black}\rule{10pt}{152pt}}
+
+\JoinCoffins \result \aaa
+\JoinCoffins \result[\aaa-t,\aaa-r] \rulei [b,r](0pt,2mm)
+\JoinCoffins \result[\aaa-b,\aaa-l] \bbb [B,r](2pt,0pt)
+\JoinCoffins \result[\bbb-t,\bbb-r] \ruleii [t,r](-2mm,0pt)
+\JoinCoffins \result[\aaa-B,\aaa-r] \ccc [B,l](66pt,14pc)
+\JoinCoffins \result[\bbb-l,\ccc-B] \fff [t,r](-2mm,0pt)
+\JoinCoffins \result[\fff-b,\fff-r] \ruleiii [b,l](2mm,0pt)
+\JoinCoffins \result[\ccc-r,\fff-l] \eee [B,r]
+\JoinCoffins \result[\eee-T,\eee-r] \ddd [B,r](0pt,4pc)
+\SetHorizontalCoffin\result{}
+\SetHorizontalCoffin \aaa {\fontsize{52}{50}\sffamily\bfseries
+ mitteilungen}
+\SetHorizontalCoffin \bbb {\fontsize{52}{50}\rotatebox{90}{\sffamily\bfseries
+ typographische}}
+
+\TypesetCoffin \result
+\end{verbatim}
+
+This is not necessarily the final syntax but for now it does its job. For
+example, flexible support for adding ornaments (lines, \ldots) is still
+missing, so above the rules got added as predefined individual coffins.
+
+\end{minipage}
+\end{center}
+
+\end{document}
+
diff --git a/Master/texmf-dist/source/latex/xpackages/xhead/xhead-test.tex b/Master/texmf-dist/source/latex/xpackages/xhead/xhead-test.tex
new file mode 100644
index 00000000000..f845a1f077a
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xpackages/xhead/xhead-test.tex
@@ -0,0 +1,245 @@
+\documentclass[twoside,check-declarations]{article}
+
+\pagestyle{headings}
+\usepackage{xparse,xtemplate}
+
+
+\usepackage{xgalley}
+
+\ExplSyntaxOn
+
+\DeclareTemplateInterface { parshape } { rectangle } { 0 } {
+ forbid-page-break : boolean = false ,
+}
+
+\DeclareTemplateCode { parshape } { rectangle } { 0 }
+ {
+ forbid-page-break = \l_xgalley_parshape_no_break_bool ,
+ }
+ {
+ \AssignTemplateKeys
+ \xgalley_measure_adjust_parshape:
+ }
+
+\DeclareInstance { parshape } { plain } { rectangle } {
+ forbid-page-break = false
+}
+
+\DeclareInstance {measure} {fullwidth} {absolute} {
+ left-margin = 0pt ,
+ right-margin = 0pt
+}
+
+\ExplSyntaxOff
+
+
+\usepackage{xhead}
+
+
+\DeclareDocumentCommand \sectionII {som}
+ { \UseInstance{heading}{sectionII} {#1}{#2}\BooleanFalse\NoValue\BooleanFalse{#3}{} }
+
+\DeclareDocumentCommand \subsectionII {som}
+ { \UseInstance{heading}{subsectionII} {#1}{#2}\BooleanFalse\NoValue\BooleanFalse{#3}{} }
+
+\DeclareDocumentCommand \subsubsectionII {som}
+ { \UseInstance{heading}{subsubsectionII} {#1}{#2}\BooleanFalse\NoValue\BooleanFalse{#3}{} }
+
+
+
+\DeclareInstance {heading} {sectionII} {2e-vertical}
+ {
+ name = section,
+ level = 1,
+ indent = 0pt,
+ above-skip = 3.5ex plus 1ex minus 0.2ex,
+ below-skip = 2.3ex plus 0.2ex,
+ title-decl = \normalfont\Large\bfseries,
+ indent-after = false,
+ }
+\DeclareInstance {heading} {subsectionII} {2e-vertical}
+ {
+ name = subsection,
+ level = 2,
+ indent = 0pt,
+ above-skip = 3.25ex plus 1ex minus 0.2ex,
+ below-skip = 1.5ex plus 0.2ex,
+ title-decl = \normalfont\large\bfseries,
+ indent-after = false,
+ }
+
+\DeclareInstance {heading} {subsubsectionII} {2e-vertical}
+ {
+ name = subsubsection,
+ level = 3,
+ indent = 0pt,
+ above-skip = 3.25ex plus 1ex minus 0.2ex,
+ below-skip = 1.5ex plus 0.2ex,
+ title-decl = \normalfont\normalsize\bfseries,
+ indent-after = false,
+ }
+
+
+\DeclareDocumentCommand \section {D<>{} sososm}
+ { \UseInstance{heading}{section} {#2}{#3}{#4}{#5}{#6}{#7}{#1} }
+
+\DeclareDocumentCommand \subsection {D<>{} sososm}
+ { \UseInstance{heading}{subsection} {#2}{#3}{#4}{#5}{#6}{#7}{#1} }
+
+\DeclareDocumentCommand \subsubsection {D<>{} sososm}
+ { \UseInstance{heading}{subsubsection} {#2}{#3}{#4}{#5}{#6}{#7}{#1} }
+
+
+\DeclareInstance {heading} {section} {3a-vertical}
+ {
+ name = section,
+ level = 1,
+ indent = 0pt,
+ above-skip = 3.5ex plus 1ex minus 0.2ex,
+ below-skip = 2.3ex plus 0.2ex,
+ font = \normalfont\Large\bfseries,
+ indent-after = false,
+ }
+\DeclareInstance {heading} {subsection} {3a-vertical}
+ {
+ name = subsection,
+ level = 2,
+ indent = 0pt,
+ above-skip = 3.25ex plus 1ex minus 0.2ex,
+ below-skip = 1.5ex plus 0.2ex,
+ font = \normalfont\large\bfseries,
+ indent-after = false,
+ }
+
+\DeclareInstance {heading} {subsubsection} {3a-vertical}
+ {
+ name = subsubsection,
+ level = 3,
+ indent = 0pt,
+ above-skip = 3.25ex plus 1ex minus 0.2ex,
+ below-skip = 1.5ex plus 0.2ex,
+ font = \normalfont\normalsize\bfseries,
+ indent-after = false,
+ }
+
+\DeclareInstance {heading} {section} {3b-vertical}
+ {
+ name = section,
+ level = 1,
+ indent = 0pt,
+ above-skip = 3.25ex plus 1ex minus 0.2ex,
+ below-skip = 1.5ex plus 0.2ex,
+ indent-after = false,
+ title-format = \UseTemplate{textblock-2}{hangfrom}
+ {
+ font-1 = \normalfont\Huge\sffamily ,
+ font-2 = \normalfont\Large\bfseries,
+ parshape = plain ,
+ justification = flush-left ,
+ }
+ }
+
+
+\setcounter{secnumdepth}{2}
+
+\begin{document}
+
+
+\tableofcontents
+
+
+\sectionII{2e section test}
+Some text
+
+\subsectionII*{2e subsection test - star}
+Some text
+
+\subsectionII{2e subsection test}
+Some text
+
+\subsectionII{2e subsection test - very long very long very long very long
+ very long very long very long very long very long very long very with some
+ variance in text long very long very long very long very long very long }
+Some text
+
+\subsubsectionII{2e subsubsection test}
+Some text
+
+\subsectionII[2e subsection short]{2e subsection test - optional arg}
+Some text
+
+\newpage
+
+\subsubsectionII*{2e subsubsection test - star}
+Some text
+
+\subsubsectionII[2e subsubsection short]{2e subsubsection test - optional arg}
+Some text
+
+
+\sectionII[2e section short]{2e section test - optional arg}
+Some text
+
+\sectionII*{2e section test - star}
+Some text
+
+\newpage
+
+
+\section{3a section test}
+Some text
+
+\subsection*{3a subsection test - star}
+Some text
+
+\subsection*[subsection star - forced]*{3a subsection test - star - forced}
+Some text
+
+\subsection{3a subsection test}
+Some text
+
+\subsection{3a subsection test - very long very long very long very long
+ very long very long very long very long very long very long very with some
+ variance in text long very long very long very long very long very long }
+Some text
+
+\subsubsection{3a subsubsection test}
+Some text
+
+\subsection[3a subsection short]{3a subsection test - optional arg}
+Some text
+
+\newpage
+
+\subsubsection*{3a subsubsection test - star}
+Some text
+
+\subsubsection*[subsubsection star - forced]*{3a subsubsection test - star - forced}
+Some text
+
+\subsubsection[3a subsubsection short]{3a subsubsection test - optional arg}
+Some text
+
+\section[3a section short]{3a section test - optional arg}
+Some text
+
+\section*{3a section test - star}
+Some text
+
+\section***{3a section test - 3 stars}
+Some text
+
+\section*[][]*{3a section test - 2 stars}
+Some text
+
+\section[3a section short2][3a section run]{3a section test - 2 optional args}
+Some text
+
+\newpage
+
+Some more text
+
+\section<test>{3a section test - angles}
+Some text
+
+\end{document}
diff --git a/Master/texmf-dist/source/latex/xpackages/xtras/l3keys2e-demo.tex b/Master/texmf-dist/source/latex/xpackages/xtras/l3keys2e-demo.tex
new file mode 100644
index 00000000000..a00531e0741
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xpackages/xtras/l3keys2e-demo.tex
@@ -0,0 +1,46 @@
+% !TEX encoding = ISO-8859-1
+% !TEX program = pdflatex
+%
+% This file demonstrates the use of the l3keys2e module to allow
+% LaTeX3 keyvals (created using l3keys) to be used as LaTeX2e
+% package or class options.
+%
+
+% First, create a class
+\begin{filecontents}{l3keys2e-class.cls}
+ \LoadClass{article}
+ \RequirePackage{l3keys2e}
+ \ProvidesExplClass{l3keys2e-class}{0000/00/00}{0.0}{test}
+ \keys_define:nn { test1 } {
+ option1 .code:n = {\wlog{You~gave~`#1'~for~option1}}
+ }
+ \ProcessKeysOptions { test1 }
+\end{filecontents}
+
+% Load the class with some options.
+% The class itself recognises `option1', leaving `option2' and
+% `option3' as global optons which are not yet used.
+\documentclass[option1=check,option2=more stuff,option3=unused]
+ {l3keys2e-class}
+
+%Now create a package
+\begin{filecontents}{l3keys2e-package.sty}
+ \RequirePackage{l3keys2e}
+ \ProvidesExplPackage{l3keys2e-package}{0000/00/00}{0.0}{test}
+ \keys_define:nn { test2 } {
+ option1 .code:n = {\wlog{You~gave~`#1'~for~option1~(again)}},
+ option2 .code:n = {\wlog{You~gave~`#1'~for~option2}},
+ option4 .code:n = {\wlog{You~gave~`#1'~for~option4}},
+ }
+ \ProcessKeysOptions { test2 }
+\end{filecontents}
+
+% Load the package.
+\usepackage[option4={extra stuff},option5=undefined!]
+ {l3keys2e-package}
+
+\begin{document}
+% The log should show that option3 is an unused global option, and that
+% option5 is not known by the l3keys2e-demo package. Everything else
+% should simply be listed in the log.
+\end{document}