diff options
author | Karl Berry <karl@freefriends.org> | 2011-01-26 23:20:47 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2011-01-26 23:20:47 +0000 |
commit | b47db3c140fe93b5deb16f3a7ad16be2134e81e7 (patch) | |
tree | af12a714ae6c3d680fea8c145084073e6ed062e5 /Master/texmf-dist/source/latex | |
parent | 66c848bc93dc9fa2b85a8ad329ea12e2e0d0524b (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')
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} |