summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/generic/multiexpand/multiexpand002.lvt
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2015-09-20 22:31:12 +0000
committerKarl Berry <karl@freefriends.org>2015-09-20 22:31:12 +0000
commit9280f63533af6460c33dbfcf486a5e5368afed53 (patch)
tree4d9646df783056a13bfdfe201d510c6fe07c5858 /Master/texmf-dist/doc/generic/multiexpand/multiexpand002.lvt
parentbf941dd6fd9a67534bf00d114908c151b5fd1606 (diff)
multiexpand (20sep15)
git-svn-id: svn://tug.org/texlive/trunk@38416 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/generic/multiexpand/multiexpand002.lvt')
-rw-r--r--Master/texmf-dist/doc/generic/multiexpand/multiexpand002.lvt117
1 files changed, 117 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/multiexpand/multiexpand002.lvt b/Master/texmf-dist/doc/generic/multiexpand/multiexpand002.lvt
new file mode 100644
index 00000000000..8271c1347c2
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/multiexpand/multiexpand002.lvt
@@ -0,0 +1,117 @@
+%%
+%% This is file `multiexpand002.lvt',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% multiexpand.dtx (with options: `lvt,lvt002')
+%% ----------------------------------------------------------------
+%% multiexpand --- trigger multiple expansions in one expansion step.
+%% E-mail: blflatex@gmail.com
+%% Released under the LaTeX Project Public License v1.3c or later
+%% See http://www.latex-project.org/lppl.txt
+%% ----------------------------------------------------------------
+%%
+ \input regression-test.tex\relax
+ \START
+ \AUTHOR{Bruno Le Floch}
+ \let\numexpr\relax
+ \input multiexpand.sty\relax
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % Introduce commands that expand to each other, to count how many times
+ % things were expanded.
+ \OMIT
+ \def\i{}
+ \def\v{\i\i\i\i}
+ \def\x{\i\i\i\i\v}
+ \def\l{\i\i\i\i\v\x\x\x\x}
+ \def\c{\i\i\i\i\v\x\x\x\x\l}
+ \def\d{\i\i\i\i\v\x\x\x\x\l\c\c\c\c}
+ \def\m{\i\i\i\i\v\x\x\x\x\l\c\c\c\c\d}
+ \TIMO
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % We test |\MultiExpand|, which needs two expansions. In particular, we see
+ % that the implementation is reasonably quick, and we get the $2345$-th
+ % expansion of |\m\m\m\m|.
+ % 4000-2345 = 1655 = mdclv
+ \TEST{MultiExpand many times (vlcdm)}{%
+ \toks0\expandafter\expandafter\expandafter{\MultiExpand{2345}\m\m\m\m}%
+ \TYPE{\the\toks0.}%
+ }
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % Test |\MultiExpandAfter|, two expansions to get the specified expansion.
+ % The results indirectly show that expansions happen in the expected order.
+ % 100 = c
+ % 100-(27-2) = 75 = lxxv
+ % 100-(14-2) = 88 = lxxxviii
+ % 100-38 = 62 = lxii
+ \TEST{MultiExpandAfter chain (c vxxl iiivxxxl iixl)}{%
+ \toks0\expandafter\expandafter\expandafter{%
+ \MultiExpandAfter{27}\c
+ \MultiExpandAfter{14}\c
+ \MultiExpandAfter{38}\c\c}%
+ \TYPE{\the\toks0.}%
+ }
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % Test the order of expansion. The example was given in the original
+ % question that led to writing this package. For the record, this
+ % package (at some point) used 32 |\expandafter| to do the expansion
+ % in the right order, which was better than other approaches; however
+ % this counting ignores the large overheads due to other primitives.
+ \OMIT
+ \def\a#1.{#1}
+ \def\b#1:{#1.}
+ \def\c#1,{#1:}
+ \def\d{Hello world!,}
+ \TIMO
+ %
+ \TEST{MultiExpandAfter order}{%
+ \toks0\MultiExpandAfter{3}{%
+ \MultiExpandAfter{3}\a
+ \MultiExpandAfter{3}\b
+ \MultiExpandAfter{1}\c
+ \d}%
+ \TYPE{\the\toks0}%
+ }
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % The other example from the same question (expanding seven tokens once
+ % each in the reverse order) takes 74 \expandafter.
+ \OMIT
+ \def\b.{.b} \def\c.{.c} \def\d.{.d}
+ \def\e.{.e} \def\f.{.f} \def\g.{.g}
+ \TIMO
+ %
+ \TEST{MultiExpandAfter order (2)}{%
+ \toks0\MultiExpandAfter{2}{%
+ \MultiExpandAfter3\a \MultiExpandAfter3\b
+ \MultiExpandAfter3\c \MultiExpandAfter3\d
+ \MultiExpandAfter3\e \MultiExpandAfter1\f\g.}%
+ \TYPE{\the\toks0}%
+ }
+
+ \END
+%%
+%% Copyright (C) 2011-2015 by Bruno Le Floch <blflatex@gmail.com>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License (LPPL), either
+%% version 1.3c 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 work is "maintained" (as per LPPL maintenance status) by
+%% Bruno Le Floch.
+%%
+%% This work consists of the file multiexpand.dtx
+%% and the derived files multiexpand.ins,
+%% multiexpand.pdf and
+%% multiexpand.sty.
+%%
+%%
+%% End of file `multiexpand002.lvt'.