diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/xbase/xparse-test.tex')
-rw-r--r-- | Master/texmf-dist/doc/latex/xbase/xparse-test.tex | 310 |
1 files changed, 310 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/xbase/xparse-test.tex b/Master/texmf-dist/doc/latex/xbase/xparse-test.tex new file mode 100644 index 00000000000..1edbc5b1172 --- /dev/null +++ b/Master/texmf-dist/doc/latex/xbase/xparse-test.tex @@ -0,0 +1,310 @@ +% \iffalse +%% (C) Copyright 2000-2005 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: xparse-test.tex 546 2006-07-06 14:54:38Z morten $ +%% +% \fi +% + +\documentclass{minimal} + +\usepackage{xparse,l3box} + + +\typeout{Testing the complicated makebox setup} +\typeout{*****************************} +\typeout{* look at dvi output for this part} +\typeout{*****************************} + +\CodeStart +% We use \ReDeclareDocumentCommand as these are already defined. +% Let's just take the error messages for a ride: +\def:Npn \makebox{} +% Here should be an error because it is defined +\DeclareDocumentCommand \makebox {m}{Gobbledygook} +\cs_gundefine:N \makebox +% And now one for being undefined +\ReDeclareDocumentCommand \makebox {m}{More~gobbledygook} +\let:NN \makebox \scan_stop: +% Another one for being undefined +\ReDeclareDocumentCommand \makebox {m}{Even~more~gobbledygook} +% Now it should work +\DeclareDocumentCommand \makebox { C{\NoValue} o O{c} m} + { + \IfNoValueTF{#1} + { \ltx@maketextbox{#2}{#3}{#4}\mbox } + { \ltx@makepicbox #1 {#2}{#4}\@firstofone } + } + +\ReDeclareDocumentCommand \framebox { C{\NoValue} o O{c} m} + { + \IfNoValueTF{#1} + { \ltx@maketextbox{#2}{#3}{#4}\fbox } + { \ltx@makepicbox #1 {#2}{#4}\frame } + } + +\def\ltx@maketextbox#1#2#3#4{ + \IfNoValueTF{#1} + {#4{#3}} + { + \leavevmode + \@begin@tempboxa\hbox{#3} + \setlength\@tempdima{#1} + \if_meaning:NN #4\fbox + \setbox\@tempboxa\hb@xt@\@tempdima{ + \kern\fboxsep + \use:c{bm@#2} + \kern\fboxsep + } + \@frameb@x{\kern-\fboxrule} + \else: + \hb@xt@\@tempdima{\use:c{bm@#2}} + \fi: + \@end@tempboxa + } +} + +\def\ltx@makepicbox#1#2#3#4#5{ + #5 + { + \vbox to#2\unitlength { + \let:NN \mb@b\vss \let:NN \mb@l\hss + \let:NN \mb@r\hss \let:NN \mb@t\vss + \IfNoValueF{#3}{ + \tlist_map_variable:nNn {#3}\l_tmpa_tlp { + \if:w s\l_tmpa_tlp + \let:NN \mb@l \scan_stop: + \let:NN \mb@r \scan_stop: + \else: + \let:cN {mb@\l_tmpa_tlp}\scan_stop: + \fi: + } + } + \mb@t + \hb@xt@ #1\unitlength{\mb@l #4\mb@r} + \mb@b + \kern\z@ + } + } +} + +\DeclarePseudoArgument{boxtest}{1} +{Before:~`#1',\hbox_set_inline_begin:N \l_tmpa_box } +{\hbox_set_inline_end: \space the~ box:~ + \hbox_unpack_clear:N\l_tmpa_box ,~ + After:~`#1'} +\DeclareDocumentCommand\sillyboxtest{m}{ + Testing~#1:~\UsePseudoArgument{boxtest}{#1} +} + + +\def:Npn \showgrabbedargs{\showthe\l_xparse_grabbed_args_toks} +\CodeStop + +\begin{document} + + +\thicklines + +\makebox{A} +\makebox(1,2){B} +\makebox(0,0)[lt]{C} +\makebox[20pt]{D} +\makebox[30pt][r]{E} + +\vspace{1cm} + + +\framebox{A} +\framebox(1,2){B} +\framebox(0,0)[lt]{C} +\framebox[20pt]{D} +\framebox[30pt][r]{E} + + +\typeout{Testing optional coordinates} + +\DeclareDocumentCommand \foo { mmo } +{ \typeout{1:#1} + \typeout{2:#2} +} + +\show\foo + +\ReDeclareDocumentCommand \foo { m C{{0}{0}} m } +{ \typeout{1:#1} + \typeout{2:#2} + \typeout{3:#3} +} + +\show\foo + +\foo A (1,2) B + +\foo A B + +\typeout{Testing mandatory coordinates (gives error on second examples)} + +\ReDeclareDocumentCommand \foo { m c m } +{ \typeout{1:#1} + \typeout{2:#2} + \typeout{3:#3} +} + +\show\foo + +\foo A (1,2) B + +\foo A B + +\typeout{Testing normal optional arguments} + + +\ReDeclareDocumentCommand \foo { mmmm o mm o } +{ \typeout{1:#1} + \typeout{2:#2} + \typeout{3:#3} + \typeout{4:#4} + \typeout{5:#5} + \typeout{6:#6} + \typeout{7:#7} + \typeout{8:#8} +} + +\foo 1234[5]67[8] +\foo 123467 + +\show\foo +\expandafter\show\csname\string\foo\endcsname + + +\typeout{Testing optional arguments with default} + +\DeclareDocumentCommand \baz { O{?}mmm o mm m } +{ \typeout{1:#1} + \typeout{2:#2} + \typeout{3:#3} + \typeout{4:#4} + \typeout{5:#5} + \typeout{6:#6} + \typeout{7:#7} + \typeout{8:#8} +} + +\show\baz +\expandafter\show\csname\string\baz\endcsname + +\baz [1]234[5]678 +\showgrabbedargs +\baz 234678 +\showgrabbedargs + +%\tracingall\tracingassigns=1 +\ReDeclareDocumentCommand \bar { mmmm mmmm m} +{ \typeout{1:#1} + \typeout{2:#2} + \typeout{3:#3} + \typeout{4:#4} + \typeout{5:#5} + \typeout{6:#6} + \typeout{7:#7} + \typeout{8:#8} + \typeout{9:#9} +} + +\show\bar +\expandafter\show\csname\string\bar\endcsname + +\bar 123456789 +\showgrabbedargs + +\DeclareDocumentCommand\chapter{soom} +{\typeout{a{#1}^^Jb{#2}^^Jc{#3}^^Jd{#4}^^Je}} + +\show\chapter +\expandafter\show\csname\string\chapter\endcsname + +\typeout{1:} +\chapter*[xxx][yyy]{zzz} + +\typeout{2:} +\chapter[xxx][yyy]{zzz} + +\typeout{3:} +\chapter*[xxx]{zzz} + +\typeout{4:} +\typeout{\chapter*[xxx][yyy]{zzz}} + + + +\typeout{Using pseudo arguments:} + +\sillyboxtest{AB}{a\verb*+% $%&\+b} + +\typeout{Testing environments with args passed to end env} +\typeout{****************} +\typeout{* This works only if xparse is compiled with `perhaps' + docstrip guard} +\typeout{* This part of the code is not activated by default!} +\typeout{****************} + + + +\ReDeclareDocumentCommand\chapter{soom} +{\typeout{a{#1}^^Jb{#2}^^Jc{#3}^^Jd{#4}^^Je}} + +\DeclareDocumentEnvironment{hello}{ooo} + {\typeout{B1(#1)^^JB2(#2)^^JB3(#3)^^J}} + {\typeout{E1(#1)^^JE2(#2)^^JE3(#3)^^J}} + + +\show\hello +\expandafter\show\csname\string\hello\endcsname + +\show\endhello +\expandafter\show\csname end\string\\hello\endcsname + +\begin{hello}[abc][aabbcc] +\typeout{body} +\typeout{5:} +\chapter[xxx][yyy]{zzz} +\end{hello} + +\begin{hello}[1] +\typeout{outer body} +\hello [2] \typeout{inner body} \endhello +\end{hello} + +\stop |