summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3dt/l3dt.pdfbin550355 -> 550355 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3sort/l3sort.pdfbin557250 -> 556062 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3str/l3flag.pdfbin390079 -> 390079 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3str/l3regex.pdfbin982419 -> 981361 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdfbin781920 -> 782007 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdfbin569053 -> 569159 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3str/l3str.pdfbin622976 -> 622976 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3str/l3tl-analysis.pdfbin521010 -> 521010 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3str/l3tl-build.pdfbin468371 -> 468371 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdfbin490241 -> 490241 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdfbin681124 -> 681124 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdfbin575666 -> 575666 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/expl3.pdfbin675005 -> 674633 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/interface3.pdfbin1288070 -> 1296101 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdfbin449457 -> 449457 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdfbin273207 -> 273207 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdfbin220205 -> 220205 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/source3.pdfbin3954716 -> 0 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdfbin473902 -> 473227 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdfbin633938 -> 633938 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdfbin450406 -> 449917 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdfbin401376 -> 400626 bytes
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3sort/l3sort.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3regex.dtx3
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx9
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx11
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/expl3.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx126
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx246
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx56
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx499
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx22
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx97
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx271
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx40
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx12
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp.dtx229
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3keys.dtx22
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3names.dtx856
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3prop.dtx43
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3quark.dtx11
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3seq.dtx182
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3tl.dtx5
-rw-r--r--Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx6
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3sort/l3sort.sty6
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex-trace.sty3
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex.sty3
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88591.def55
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885910.def101
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885911.def146
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885913.def111
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885914.def86
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885915.def63
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885916.def95
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88592.def112
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88593.def90
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88594.def105
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88595.def149
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88596.def135
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88597.def134
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88598.def122
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88599.def61
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf16.def228
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf32.def179
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf8.def215
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-hex.def100
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-name.def121
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-string.def169
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-url.def119
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty4
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3.sty4
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3bootstrap.sty4
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3candidates.sty35
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3coffins.sty4
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def50
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3dvips.def31
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3fp.sty573
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3keys.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3names.sty852
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def57
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3prop.sty21
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3quark.sty3
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3seq.sty90
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3tl.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def50
-rw-r--r--Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty6
-rw-r--r--Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty6
-rw-r--r--Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty6
94 files changed, 5465 insertions, 1833 deletions
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3dt/l3dt.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3dt/l3dt.pdf
index 782bdba1bbf..90b6a503ec0 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3dt/l3dt.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3dt/l3dt.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3sort/l3sort.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3sort/l3sort.pdf
index 10922c7f0ac..9ac7b680884 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3sort/l3sort.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3sort/l3sort.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3flag.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3flag.pdf
index 3f9d7598f43..18780cfd8d4 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3flag.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3flag.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3regex.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3regex.pdf
index 94248639218..5aa998fe53d 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3regex.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3regex.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf
index 91d31870f09..671cf576e8a 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf
index fdd21b84082..e224c424d9b 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str.pdf
index 9a11edbd578..d9f74bf7b0e 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3tl-analysis.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3tl-analysis.pdf
index 7d0ac5032da..cf99341aef8 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3tl-analysis.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3tl-analysis.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3tl-build.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3tl-build.pdf
index 264b93f1d66..f3ca6ec4b47 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3tl-build.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3tl-build.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf b/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
index 638104e473b..f46a36da39f 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf b/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
index a1a273834b5..e76e244036e 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf b/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
index 6ebaabc14c3..2265e6d54c6 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
index c4bb6e4dce7..88ccf37c9bf 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
index 23e3b3384f0..5bf46acc36f 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
index 04db83af2c9..bce0e14456b 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
index 735c3e5bab1..974ee88e369 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
index af68866492e..e57aa484d3a 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
deleted file mode 100644
index aabf972adaa..00000000000
--- a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
+++ /dev/null
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf b/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf
index da9c5a642e8..11690398396 100644
--- a/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf
+++ b/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf b/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf
index c5cb8b68361..4928d6a76bb 100644
--- a/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf
+++ b/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf b/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf
index 42666aede14..85ccf7a6bb3 100644
--- a/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf
+++ b/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf b/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf
index 3be8a01e21f..da45ba33d10 100644
--- a/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf
+++ b/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3sort/l3sort.dtx b/Master/texmf-dist/source/latex/l3experimental/l3sort/l3sort.dtx
index 0733e3a1cba..b4a8b10be1a 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3sort/l3sort.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3sort/l3sort.dtx
@@ -36,7 +36,7 @@
%
%<*driver|package>
\RequirePackage{expl3}
-\GetIdInfo$Id: l3sort.dtx 4566 2013-07-24 19:34:45Z bruno $
+\GetIdInfo$Id: l3sort.dtx 4623 2013-12-14 13:53:40Z bruno $
{L3 Experimental sorting functions}
%</driver|package>
%<*driver>
@@ -284,7 +284,7 @@
% items to \tn{toks} registers, and the third breaks away from the
% loop. The fourth is used to build back the correct kind of list
% from the contents of the \tn{toks} registers, including the leading
-% \cs{s__seq} and trailing \cs{s_obj_end}. Fifth and sixth
+% \cs{s__seq}. Fifth and sixth
% arguments are the variable to sort, and the sorting method
% as inline code.
% \begin{macrocode}
@@ -292,13 +292,13 @@
{
\@@_main:NNNnNn \tl_set:Nn
\seq_map_inline:Nn \seq_map_break:
- { \s__seq \@@_toks:NNw \exp_not:N \__seq_item:n 0 ; \s_obj_end }
+ { \s__seq \@@_toks:NNw \exp_not:N \__seq_item:n 0 ; }
}
\cs_new_protected_nopar:Npn \seq_gsort:Nn
{
\@@_main:NNNnNn \tl_gset:Nn
\seq_map_inline:Nn \seq_map_break:
- { \s__seq \@@_toks:NNw \exp_not:N \__seq_item:n 0 ; \s_obj_end }
+ { \s__seq \@@_toks:NNw \exp_not:N \__seq_item:n 0 ; }
}
% \end{macrocode}
% \end{macro}
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3regex.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3regex.dtx
index 82a8e0ae577..8e61c59d187 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3regex.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3regex.dtx
@@ -35,7 +35,7 @@
%
%<*driver|package>
\RequirePackage{expl3}
-\GetIdInfo$Id: l3regex.dtx 4576 2013-07-24 21:40:24Z joseph $
+\GetIdInfo$Id: l3regex.dtx 4623 2013-12-14 13:53:40Z bruno $
{L3 Experimental regular expressions}
%</driver|package>
%<*driver>
@@ -5444,7 +5444,6 @@
\c_one
{ \l_@@_submatch_int - \c_one }
\@@_extract_seq_aux:n
- \s_obj_end
}
\int_compare:nNnF
{ \flag_height:n { @@_begin } + \flag_height:n { @@_end } }
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx
index 19bad05b982..02b7a6cfc0e 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx
@@ -253,6 +253,8 @@
%
% Encoding/escaping-related tasks.
% \begin{itemize}
+% \item Change \cs{str_set_convert:Nnnn} to expand its last two
+% arguments.
% \item Describe the internal format in the code comments. Refuse code
% points in $[\hexnum{D800}, \hexnum{DFFF}]$ in the internal
% representation?
@@ -268,7 +270,8 @@
% 8-bit to Unicode, use $256$ integer registers; for encoding, use a
% tree-box.
% \item More encodings (see Heiko's \pkg{stringenc}). CESU?
-% \item More escapings: shell escapes, lua escapes, etc?
+% \item More escapings: \textsc{ascii85}, shell escapes, lua escapes,
+% \emph{etc.}?
% \end{itemize}
%
% \end{documentation}
@@ -732,14 +735,14 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}[int]{\@@_if_flag_times:nT}
+% \begin{macro}[int, rEXP]{\@@_if_flag_times:nT}
% At the end of each conversion step, we raise all relevant errors as
% one error message, built on the fly. The height of each flag
% indicates how many times a given error was encountered. This
% function prints |#2| followed by the number of occurrences of an
% error if it occurred, nothing otherwise.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_if_flag_times:nT #1#2
+\cs_new:Npn \@@_if_flag_times:nT #1#2
{ \flag_if_raised:nT {#1} { #2~(x \flag_height:n {#1} ) } }
% \end{macrocode}
% \end{macro}
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
index 92b3e1eebef..22a78320431 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
@@ -548,7 +548,8 @@
{
\tl_to_str:f
{
- \@@_seq:ff { \exp_after:wN \@@_seq_extract:w #1 }
+ \@@_seq:ff
+ { \exp_after:wN \use_i:nn \exp_after:wN \exp_stop_f: #1 }
{ \@@_parse:n {#2} }
}
}
@@ -556,14 +557,6 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[aux, rEXP]{\@@_seq_extract:w}
-% Extract the contents of a sequence as items of the form
-% |\__seq_item:n| \Arg{item}.
-% \begin{macrocode}
-\cs_new:Npn \@@_seq_extract:w \s__seq #1 \s_obj_end { \exp_stop_f: #1 }
-% \end{macrocode}
-% \end{macro}
-%
% \begin{macro}[aux, EXP]{\@@_seq:nn, \@@_seq:ff}
% The first argument is the contents of a \texttt{seq} variable. The
% second is a parsed \meta{format specification}. Set up the loop.
diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
index 96631cf3ed0..56709098421 100644
--- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
@@ -49,8 +49,8 @@
%<*driver|package>
\def\ExplFileName{expl3}
\def\ExplFileDescription{L3 Experimental code bundle wrapper}
-\def\ExplFileDate{2013/11/19}
-\def\ExplFileVersion{4610}
+\def\ExplFileDate{2013/12/31}
+\def\ExplFileVersion{4634}
%</driver|package>
%<*driver>
\documentclass[full]{l3doc}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
index 22b8f3ccd5c..b0bb71b97f3 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
@@ -119,7 +119,7 @@
% \end{macrocode}
% \end{macro}
% \end{macro}
-\GetIdInfo$Id: l3bootstrap.dtx 4581 2013-07-28 08:38:50Z joseph $
+\GetIdInfo$Id: l3bootstrap.dtx 4629 2013-12-29 20:59:49Z joseph $
{L3 Bootstrap code}
%</driver|package>
%<*driver>
@@ -167,11 +167,11 @@
% \cs{ExplSyntaxOn} \meta{code} \cs{ExplSyntaxOff}
% \end{syntax}
% The \cs{ExplSyntaxOn} function switches to a category code
-% r{\'e}gime in which spaces are ignored and in which the colon (|:|)
+% r\'{e}gime in which spaces are ignored and in which the colon (|:|)
% and underscore (|_|) are treated as \enquote{letters}, thus allowing
% access to the names of code functions and variables. Within this
% environment, |~| is used to input a space. The \cs{ExplSyntaxOff}
-% reverts to the document category code r{\'e}gime.
+% reverts to the document category code r\'{e}gime.
% \end{function}
%
% \begin{function}{\ProvidesExplPackage, \ProvidesExplClass, \ProvidesExplFile}
@@ -424,7 +424,7 @@
\chardef\csname\detokenize{l__kernel_expl_bool}\endcsname = 0 \relax
}
\protected\edef\ExplSyntaxOn
- {
+ {%
\catcode 9 = 9 \relax
\catcode 32 = 9 \relax
\catcode 34 = 12 \relax
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
index c31a0e478de..27baad8b08d 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
@@ -36,7 +36,7 @@
%
%<*driver|package>
\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3candidates.dtx 4602 2013-11-18 23:19:01Z bruno $
+\GetIdInfo$Id: l3candidates.dtx 4633 2013-12-31 17:28:46Z joseph $
{L3 Experimental additions to l3kernel}
%</driver|package>
%<*driver>
@@ -456,6 +456,76 @@
% before being assigned to the \meta{floating point variable}.
% \end{function}
%
+% \begin{function}[EXP]{\fp_function:Nw}
+% \begin{syntax}
+% \cs{fp_eval:n}
+% ~~|{|
+% ~~~~\cs{fp_function:Nw} \meta{function}
+% ~~~~~~|(| \meta{fpexpr_1} |,| \ldots{} |,| \meta{fpexpr_n} |)|
+% ~~|}|
+% \end{syntax}
+% Finds one or more arguments \meta{fpexpr_1} \ldots{} \meta{fpexpr_n}
+% following the \meta{function}, and evaluate them. Then calls the
+% \meta{function} followed by a single brace group containing
+% \Arg{result_1} \ldots{} \Arg{result_n}. For instance,
+% \begin{verbatim}
+% \cs_new_nopar:Npn \mypkg_log:w
+% { \fp_function:Nw \__mypkg_log:n }
+% \cs_new:Npn \__mypkg_log:n #1
+% {
+% \int_case:nnF { \tl_count:n {#1} }
+% {
+% { 1 } { \__mypkg_log_aux:nn #1 { 10 } }
+% { 2 } { \__mypkg_log_aux:nn #1 }
+% }
+% { \ERROR \c_nan_fp }
+% }
+% \cs_new:Npn \__mypkg_log_aux:nn #1#2 { ln(#1) / ln(#2) }
+% \fp_show:n { \mypkg_log:w (8, 2) + \mypkg_log:w (1e17) }
+% \end{verbatim}
+% shows $20 = \log_2(8) + \log(10^{17})$. The function |\mypkg_log:w|
+% behaves like other built-in functions such as |ln|, but allows $1$
+% or~$2$ arguments, and computes either the base~$10$ logarithm or the
+% logarithm of the first argument in a base given by the second
+% argument. Checking the number of arguments is acheived by
+% |\__mypkg_log:n|, which provides the default base~$10$ when there is
+% only one argument. The computation itself is done by
+% |\__mypkg_log_aux:nn|.
+% \end{function}
+%
+% \begin{function}{\fp_new_function:Npn}
+% \begin{syntax}
+% \cs{fp_new_function:Npn} \meta{function} \meta{parameters} \Arg{code}
+% \cs{fp_eval:n} |{| \meta{function} |(| \meta{fpexpr_1} |,| \ldots{} |,| \meta{fpexpr_n} |)| |}|
+% \end{syntax}
+% Defines the \meta{function} for use within floating point
+% expressions, expecting some \meta{parameters}, and evaluating the
+% \meta{code}, which must be expandable. When the \meta{function}
+% appears in a floating point expression, arguments \meta{fpexpr_1},
+% \ldots{}, \meta{fpexpr_n} are found and evaluated in the same way as
+% for built-in functions such as~|max|. If the number of arguments
+% matches the number of \meta{parameters}, the arguments replace |#1|,
+% \ldots{}, |#|$n$ in the \meta{code}, which is then evaluated to
+% produce a floating point result. Otherwise, the result is
+% \texttt{nan} after an error. The \meta{parameter text} must not
+% contain delimited arguments, that is, it must be empty or one of
+% |#1|, |#1#2|, |#1#2#3|, \ldots{} |#1#2#3#4#5#6#7#8#9|. The
+% arguments replacing parameters in the \meta{code} are internal
+% floating point numbers; operations such as |#1^2| thus correctly
+% take into account the sign of~|#1|. For instance,
+% \begin{verbatim}
+% \fp_new_function:Npn \mypkg_sqrt:w #1 { #1^.5 }
+% \fp_new_function:Npn \mypkg_veclen:w #1#2
+% { \mypkg_sqrt:w ( #1^2 + #2^2 ) }
+% \fp_show:n { \mypkg_veclen:w ( 42 / 7 , 2 * 4 - 0 ) }
+% \end{verbatim}
+% shows~$10$. In the example, |\mypkg_veclen:w| receives the
+% arguments $6=42/7$ and~$8=2\times 4-0$, thus expands to
+% |\mypkg_sqrt:w ( 6^2 + 8^2 )|, then |\mypkg_sqrt:w| receives
+% $100=6^2+8^2$ as an argument, and evaluates the square root $10 =
+% 100^{0.5}$.
+% \end{function}
+%
% \section{Additions to \pkg{l3prop}}
%
% \begin{function}[rEXP]
@@ -2160,9 +2230,8 @@
% key \cs{q_recursion_tail}, which cannot appear in normal keys since
% those are strings. The odd construction |\use:n {#1}| allows |#1|
% to contain any token without interfering with \cs{prop_map_break:}.
-% Argument |#2| of \cs{@@_map_tokens:nwwn} is empty, with two
-% exceptions: it is \cs{s_@@} the first time and \cs{s_obj_end} the
-% last.
+% Argument |#2| of \cs{@@_map_tokens:nwwn} is \cs{s_@@} the first
+% time, and is otherwise empty.
% \begin{macrocode}
\cs_new:Npn \prop_map_tokens:Nn #1#2
{
@@ -2226,8 +2295,9 @@
% then the stop code |{ ? \__prg_break: } { }| will be used by the auxiliary,
% terminating the loop and returning nothing at all.
% \begin{macrocode}
-\cs_new:Npn \seq_item:Nn #1 { \exp_after:wN \@@_item:wNn #1 #1 }
-\cs_new:Npn \@@_item:wNn \s_@@ #1 \s_obj_end #2#3
+\cs_new:Npn \seq_item:Nn #1
+ { \exp_after:wN \@@_item:wNn #1 \q_stop #1 }
+\cs_new:Npn \@@_item:wNn \s_@@ #1 \q_stop #2#3
{
\exp_args:Nf \@@_item:nnn
{
@@ -2260,31 +2330,31 @@
% \seq_mapthread_function:cNN, \seq_mapthread_function:ccN
% }
% \begin{macro}[aux]
-% {\@@_mapthread_function:wNN, \@@_mapthread_function:wNw}
-% \begin{macro}[aux]{\@@_mapthread_function:Nnnwnn}
-% The idea here is to first expand both of the sequences, adding the
+% {\@@_mapthread_function:NNw, \@@_mapthread_function:Nnnwnn}
+% The idea here is to first expand both sequences, adding the
% usual |{ ? \__prg_break: } { }| to the end of each one. This is
% most conveniently done in two steps using an auxiliary function.
% The mapping then throws away the first tokens of |#2| and |#5|,
-% which for items in the sequences will both be \cs{s_@@}
+% which for items in the sequences will both be
% \cs{@@_item:n}. The function to be mapped will then be applied to
% the two entries. When the code hits the end of one of the
-% sequences, the break material will stop the entire loop and tidy up.
-% This avoids needing to find the count of the two sequences, or
+% sequences, \cs{__prg_break:} stops the entire loop and tidy up.
+% This avoids needing to count items in the sequences, or
% worrying about which is longer.
% \begin{macrocode}
\cs_new:Npn \seq_mapthread_function:NNN #1#2#3
- { \exp_after:wN \@@_mapthread_function:wNN #2 #1 #3 }
-\cs_new:Npn \@@_mapthread_function:wNN \s_@@ #1 \s_obj_end #2#3
{
- \exp_after:wN \@@_mapthread_function:wNw #2 #3
- #1 { ? \__prg_break: } { }
+ \exp_after:wN \@@_mapthread_function:NNw
+ \exp_after:wN #3
+ \exp_after:wN #1
+ #2 { ? \__prg_break: } { }
\__prg_break_point:
}
-\cs_new:Npn \@@_mapthread_function:wNw \s_@@ #1 \s_obj_end #2
+\cs_new:Npn \@@_mapthread_function:NNw #1#2
{
- \@@_mapthread_function:Nnnwnn #2
- #1 { ? \__prg_break: } { }
+ \exp_after:wN \@@_mapthread_function:Nnnwnn
+ \exp_after:wN #1
+ #2 { ? \__prg_break: } { }
\q_stop
}
\cs_new:Npn \@@_mapthread_function:Nnnwnn #1#2#3#4 \q_stop #5#6
@@ -2299,7 +2369,6 @@
% \end{macrocode}
% \end{macro}
% \end{macro}
-% \end{macro}
%
% \begin{macro}
% {
@@ -2319,22 +2388,22 @@
\cs_new_protected:Npn \seq_set_from_clist:NN #1#2
{
\tl_set:Nx #1
- { \s_@@ \clist_map_function:NN #2 \@@_wrap_item:n \s_obj_end }
+ { \s_@@ \clist_map_function:NN #2 \@@_wrap_item:n }
}
\cs_new_protected:Npn \seq_set_from_clist:Nn #1#2
{
\tl_set:Nx #1
- { \s_@@ \clist_map_function:nN {#2} \@@_wrap_item:n \s_obj_end }
+ { \s_@@ \clist_map_function:nN {#2} \@@_wrap_item:n }
}
\cs_new_protected:Npn \seq_gset_from_clist:NN #1#2
{
\tl_gset:Nx #1
- { \s_@@ \clist_map_function:NN #2 \@@_wrap_item:n \s_obj_end }
+ { \s_@@ \clist_map_function:NN #2 \@@_wrap_item:n }
}
\cs_new_protected:Npn \seq_gset_from_clist:Nn #1#2
{
\tl_gset:Nx #1
- { \s_@@ \clist_map_function:nN {#2} \@@_wrap_item:n \s_obj_end }
+ { \s_@@ \clist_map_function:nN {#2} \@@_wrap_item:n }
}
\cs_generate_variant:Nn \seq_set_from_clist:NN { Nc }
\cs_generate_variant:Nn \seq_set_from_clist:NN { c , cc }
@@ -2348,9 +2417,8 @@
%
% \begin{macro}
% {\seq_reverse:N, \seq_reverse:c, \seq_greverse:N, \seq_greverse:c}
-% \begin{macro}[aux]{\@@_tmp:w}
% \begin{macro}[aux]{\@@_reverse:NN}
-% \begin{macro}[aux]{\@@_reverse_setup:w, \@@_reverse_item:nwn}
+% \begin{macro}[aux, EXP]{\@@_reverse_item:nwn}
% Previously, \cs{seq_reverse:N} was coded by collecting the items
% in reverse order after an \cs{exp_stop_f:} marker.
% \begin{verbatim}
@@ -2383,7 +2451,6 @@
% of \cs{exp_not:n}. The previous calls are cleanly removed
% from the stack, and the memory consumption becomes linear.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_tmp:w { }
\cs_new_protected_nopar:Npn \seq_reverse:N
{ \@@_reverse:NN \tl_set:Nx }
\cs_new_protected_nopar:Npn \seq_greverse:N
@@ -2392,11 +2459,9 @@
{
\cs_set_eq:NN \@@_tmp:w \@@_item:n
\cs_set_eq:NN \@@_item:n \@@_reverse_item:nwn
- #1 #2 { \exp_after:wN \@@_reverse_setup:w #2 }
+ #1 #2 { #2 \exp_not:n { } }
\cs_set_eq:NN \@@_item:n \@@_tmp:w
}
-\cs_new:Npn \@@_reverse_setup:w #1 \s_obj_end
- { #1 \exp_not:n { } \s_obj_end }
\cs_new:Npn \@@_reverse_item:nwn #1 #2 \exp_not:n #3
{
#2
@@ -2408,7 +2473,6 @@
% \end{macro}
% \end{macro}
% \end{macro}
-% \end{macro}
%
% \begin{macro}{\seq_set_filter:NNn, \seq_gset_filter:NNn}
% \begin{macro}[aux]{\@@_set_filter:NNNn}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
index e6369d38bb5..7197d72e18f 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
@@ -36,7 +36,7 @@
%
%<*driver|package>
\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3coffins.dtx 4212 2012-09-09 12:24:04Z bruno $
+\GetIdInfo$Id: l3coffins.dtx 4624 2013-12-14 13:58:48Z bruno $
{L3 Coffin code layer}
%</driver|package>
%<*driver>
@@ -1007,7 +1007,7 @@
{
\dim_compare:nNnTF {#8} = \c_zero_dim
{
- \dim_set:Nn \l_@@_x_dim {#6}
+ \dim_set:Nn \l_@@_y_dim {#6}
\@@_calculate_intersection_aux:nnnnnN
{#6} {#2} {#1} {#4} {#3} \l_@@_x_dim
}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
index 46426e18186..5eb91ddc2cb 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
@@ -36,7 +36,7 @@
%
%<*driver|package>
\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3drivers.dtx 4602 2013-11-18 23:19:01Z bruno $
+\GetIdInfo$Id: l3drivers.dtx 4632 2013-12-31 17:09:37Z joseph $
{L3 Experimental drivers}
%</driver|package>
%<*driver>
@@ -103,7 +103,7 @@
%
% \section{Box rotation and scaling}
%
-% \begin{function}[added = 2011-09-01, updated = 2012-05-18]
+% \begin{function}[added = 2011-09-01, updated = 2013-12-27]
% {\__driver_box_rotate_begin:, \__driver_box_rotate_end:}
% \begin{syntax}
% \cs{__driver_box_rotate_begin:}
@@ -119,7 +119,7 @@
% required by some drivers to obtain the correct output.
% \end{function}
%
-% \begin{function}[added = 2011-09-02, updated = 2012-05-18]
+% \begin{function}[added = 2011-09-02, updated = 2013-12-27]
% {\__driver_box_scale_begin:, \__driver_box_scale_end:}
% \begin{syntax}
% \cs{__driver_box_scale_begin:}
@@ -135,7 +135,7 @@
% to scale factors.
% \end{function}
%
-% \section{Colour support}
+% \section{Color support}
%
% \begin{function}[added = 2011-09-03, updated = 2012-05-18]
% {\__driver_color_ensure_current:}
@@ -187,7 +187,7 @@
%
% If the driver loaded is \texttt{pdfmode} then direct PDF output is required.
% (This may of course alter: it might be that the driver is picked based on the
-% value of \cs{pdfmode_pdfoutput:D}.)
+% value of \cs{pdftex_pdfoutput:D}.)
% \begin{macrocode}
%<*initex>
%<*pdfmode>
@@ -215,26 +215,26 @@
% \end{macrocode}
%
% \subsection{Driver utility functions}
-%
-% \begin{macro}{\@@_graphic_state_save:, \@@_graphic_state_restore:}
+%
+% \begin{macro}{\@@_state_save:, \@@_state_restore:}
% All of the drivers have a stack for saving the graphic state. These
% have slightly different interfaces. For both \texttt{dvips} and
% \texttt{(x)dvipdfmx} this is done using an appropriate special.
% \begin{macrocode}
%<*!pdfmode>
-\cs_new_protected_nopar:Npn \@@_graphic_state_save:
+\cs_new_protected_nopar:Npn \@@_state_save:
%<*dvips>
{ \tex_special:D { ps:gsave } }
%</dvips>
%<*dvipdfmx|xdvipdfmx>
- { \tex_special:D { pdf:content~q } }
+ { \tex_special:D { pdf:bcontent } }
%</dvipdfmx|xdvipdfmx>
-\cs_new_protected_nopar:Npn \@@_graphic_state_restore:
+\cs_new_protected_nopar:Npn \@@_state_restore:
%<*dvips>
{ \tex_special:D { ps:grestore } }
%</dvips>
%<*dvipdfmx|xdvipdfmx>
- { \tex_special:D { pdf:content~Q } }
+ { \tex_special:D { pdf:econtent } }
%</dvipdfmx|xdvipdfmx>
%</!pdfmode>
% \end{macrocode}
@@ -245,56 +245,67 @@
%<*pdfmode>
\cs_if_exist:NTF \pdftex_pdfsave:D
{
- \cs_new_eq:NN \@@_graphic_state_save: \pdftex_pdfsave:D
- \cs_new_eq:NN \@@_graphic_state_restore: \pdftex_pdfrestore:D
+ \cs_new_eq:NN \@@_state_save: \pdftex_pdfsave:D
+ \cs_new_eq:NN \@@_state_restore: \pdftex_pdfrestore:D
}
{
- \cs_new_protected_nopar:Npn \@@_graphic_state_save:
+ \cs_new_protected_nopar:Npn \@@_state_save:
{ \pdftex_pdfliteral:D { q } }
- \cs_new_protected_nopar:Npn \@@_graphic_state_restore:
+ \cs_new_protected_nopar:Npn \@@_state_restore:
{ \pdftex_pdfliteral:D { Q } }
}
%</pdfmode>
% \end{macrocode}
% \end{macro}
-%
-% \begin{macro}{\@@_pdf_literal:n, \@@_pdf_literal_direct:n}
-% Both direct PDF mode and \texttt{xdvipdfmx} make use of direct PDF
-% special insertion. These are slightly different in the two cases.
-% The |direct| versions do not save the current matrix.
+%
+% \begin{macro}[int]{\@@_literal:n}
+% The driver code needs to pass on a lot of \enquote{raw} information to
+% the underlying binary. The exact command is driver-dependent but the
+% concept is general enough to use a single function. However, it is
+% important to remember this is a convenient shortcut: the arguments will
+% be driver-specific.
% \begin{macrocode}
-%<*!dvips>
-\cs_new_protected:Npn \@@_pdf_literal:n #1
-%<*pdfmode>
- { \pdftex_pdfliteral:D {#1} }
-%</pdfmode>
+\cs_new_protected:Npn \@@_literal:n #1
%<*dvipdfmx|xdvipdfmx>
- { \tex_special:D { pdf:content~ #1 } }
+ { \tex_special:D { pdf:literal~ #1 } }
%</dvipdfmx|xdvipdfmx>
-\cs_new_protected:Npn \@@_pdf_literal_direct:n #1
+%<*dvips>
+ { \tex_special:D { ps: #1 } }
+%</dvips>
%<*pdfmode>
- { \pdftex_pdfliteral:D direct~{#1} }
+ { \pdftex_pdfliteral:D {#1} }
%</pdfmode>
-%<*dvipdfmx|xdvipdfmx>
- { \tex_special:D { pdf:literal~direct~ #1 } }
-%</dvipdfmx|xdvipdfmx>
-%</!dvips>
% \end{macrocode}
% \end{macro}
-%
-% \begin{macro}{\@@_ps_literal:n}
-% The same concept for PostScript: these are \enquote{direct} by default,
-% but by keeping the same name life should be a little clearer.
+%
+% \begin{macro}[int]{\@@_matrix:n}
+% Here the appropriate function is set up to insert an affine matrix
+% into the PDF. With a new enough \pdfTeX{} (version~1.40.0 or later)
+% there is a primitive for this, which only needs the rotation/scaling/skew
+% part. With an older \pdfTeX{} or with \texttt{(x)dvipdfmx} the matrix
+% also has to include a translation part: that is always zero and so is
+% built in here.
% \begin{macrocode}
-%<*dvips>
-\cs_new_protected:Npn \@@_ps_literal:n #1
- { \tex_special:D { ps: #1 } }
-%</dvips>
+%<*pdfmode>
+\cs_if_exist:NTF \pdftex_pdfsetmatrix:D
+ {
+ \cs_new_protected:Npn \@@_matrix:n #1
+ { \pdftex_pdfsetmatrix:D {#1} }
+ }
+ {
+ \cs_new_protected:Npn \@@_matrix:n #1
+ { \@@_literal:n { #1 \c_space_tl 0~0~cm } }
+ }
+%</pdfmode>
+%<*dvipdfmx|xdvipdfmx>
+\cs_new_protected:Npn \@@_matrix:n #1
+ { \@@_literal:n { direct~ #1 \c_space_tl 0~0~cm } }
+%</dvipdfmx|xdvipdfmx>
% \end{macrocode}
% \end{macro}
%
% \subsection{Box clipping}
-%
+%
% \begin{macro}{\@@_box_use_clip:N}
% The overall logic to clipping a box is the same in all cases. The general
% method is to save the current location, define a clipping path equivalent
@@ -307,27 +318,15 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_box_use_clip:N #1
{
- \@@_graphic_state_save:
-% \end{macrocode}
-% The business end of the code sets up the clip box, using the higher-level
-% rectangle operators rather than the lower level direct line drawing. This
-% makes sense for a simple rectangular clip. There are a couple of approaches
-% for \texttt{dvips}. The approach here is to save the current matrix,
-% then translate to the current \TeX{} position and switch to big point
-% measurement. The clip box can then be set up using the same conversion
-% as for direct PDF output: notice that here the $y$-axis is upside down.
-% The original matrix is then restored, so that \TeX{} inserts material
-% in the correct place (there is an offset between the PostScript and
-% \TeX{} current positions).
-% \begin{macrocode}
%<*dvips>
- \@@_ps_literal:n
+ \@@_state_save:
+ \@@_literal:n
{
/savedmatrix~matrix~currentmatrix~def~
currentpoint~translate~
Resolution~72~div~VResolution~72~div~scale
}
- \@@_ps_literal:n
+ \@@_literal:n
{
0~
\__dim_strip_bp:n { \box_dp:N #1 } ~
@@ -335,23 +334,34 @@
\__dim_strip_bp:n { - \box_ht:N #1 - \box_dp:N #1 } ~
rectclip
}
- \@@_ps_literal:n { savedmatrix~setmatrix }
+ \@@_literal:n { savedmatrix~setmatrix }
%</dvips>
% \end{macrocode}
% The PDF box is easier to define as it is automatically in big points and
% as the driver deals with the relationship between the \TeX{} and graphics
-% locations automatically.
+% locations automatically. The only slight issue is the need to handle
+% \texttt{(x)dvipdfmx}'s requirements for mixing PostScript and PDF code:
+% using the standard save/restore stack here fails.
% \begin{macrocode}
-%<*!dvips>
- \@@_pdf_literal_direct:n
+%<*dvipdfmx|xdvipdfmx>
+ \@@_literal:n { q }
+%</dvipdfmx|xdvipdfmx>
+%<*pdfmode>
+ \@@_state_save:
+%</pdfmode>
+%<*dvipdfmx|pdfmode|xdvipdfmx>
+ \@@_literal:n
{
- 0 ~
+%<*dvipdfmx|xdvipdfmx>
+ direct~
+%</dvipdfmx|xdvipdfmx>
+ 0~
\__dim_strip_bp:n { - \box_dp:N #1 } ~
\__dim_strip_bp:n { \box_wd:N #1 } ~
\__dim_strip_bp:n { \box_ht:N #1 + \box_dp:N #1 } ~
re~W~n
}
-%</!dvips>
+%</dvipdfmx|pdfmode|xdvipdfmx>
% \end{macrocode}
% For \texttt{(x)dvipdfmx} the is a bit more to do yet. Using
% \texttt{pdf:bcontent}/\texttt{pdf:econtent} for scoping seems the easiest
@@ -367,9 +377,9 @@
% then the extra scope is closed (below).
% \begin{macrocode}
%<*dvipdfmx|xdvipdfmx>
- \@@_pdf_matrix:n { -1~0~0~-1 }
- \@@_graphic_state_save:
- \@@_pdf_matrix:n { -1~0~0~-1 }
+ \@@_matrix:n { -1~0~0~-1 }
+ \@@_literal:n { q }
+ \@@_matrix:n { -1~0~0~-1 }
%</dvipdfmx|xdvipdfmx>
% \end{macrocode}
% Insert the material in a box of no width, restore the graphic state
@@ -377,9 +387,12 @@
% \begin{macrocode}
\hbox_overlap_right:n { \box_use:N #1 }
%<*dvipdfmx|xdvipdfmx>
- \@@_graphic_state_restore:
+ \@@_literal:n { Q }
+ \@@_literal:n { Q }
%</dvipdfmx|xdvipdfmx>
- \@@_graphic_state_restore:
+%<*dvips|pdfmode>
+ \@@_state_restore:
+%</dvips|pdfmode>
\skip_horizontal:n { \box_wd:N #1 }
}
% \end{macrocode}
@@ -390,7 +403,7 @@
% \begin{macro}{\@@_box_rotate_begin:, \@@_box_rotate_end:}
% The driver for \texttt{dvips} works with a simple rotation angle.
% In PDF mode, an affine matrix is used instead. The transformation for
-% \texttt{xdvipdfmx} can be done either way: to have some code sharing,
+% \texttt{(x)dvipdfmx} can be done either way: to have some code sharing,
% the choice here is to use an affine approach (at least some code is
% shared in this way). For the \texttt{dvips}, that odd-looking
% |currentpoint| at the beginning is used to put this data onto the
@@ -408,27 +421,14 @@
% \begin{macrocode}
\cs_new_protected_nopar:Npn \@@_box_rotate_begin:
{
- \@@_graphic_state_save:
-%<*dvips>
- \fp_set:Nn \l__box_angle_fp { round ( \l__box_angle_fp , 5 ) }
- \@@_ps_literal:n
- {
- currentpoint~
- currentpoint~translate~
- \fp_compare:nNnTF \l__box_angle_fp = \c_zero_fp
- { 0 }
- { \fp_eval:n { - \l__box_angle_fp } }
- \c_space_tl rotate~
- neg~exch~neg~exch~translate
- }
-%</dvips>
-%<*!dvips>
+ \@@_state_save:
+%<*dvipdfmx|pdfmode|xdvipdfmx>
\box_set_wd:Nn \l__box_internal_box \c_zero_dim
\fp_set:Nn \l__box_cos_fp { round ( \l__box_cos_fp , 5 ) }
\fp_compare:nNnT \l__box_cos_fp = \c_zero_fp
{ \fp_zero:N \l__box_cos_fp }
\fp_set:Nn \l__box_sin_fp { round ( \l__box_sin_fp , 5 ) }
- \@@_pdf_matrix:n
+ \@@_matrix:n
{
\fp_use:N \l__box_cos_fp \c_space_tl
\fp_compare:nNnTF \l__box_sin_fp = \c_zero_fp
@@ -441,26 +441,40 @@
\c_space_tl
\fp_use:N \l__box_cos_fp
}
-%</!dvips>
+%</dvipdfmx|pdfmode|xdvipdfmx>
+%<*dvips>
+ \fp_set:Nn \l__box_angle_fp { round ( \l__box_angle_fp , 5 ) }
+ \@@_literal:n
+ {
+ currentpoint~
+ currentpoint~translate~
+ \fp_compare:nNnTF \l__box_angle_fp = \c_zero_fp
+ { 0 }
+ { \fp_eval:n { - \l__box_angle_fp } }
+ \c_space_tl rotate~
+ neg~exch~neg~exch~translate
+ }
+%</dvips>
}
% \end{macrocode}
+% \end{macro}
% The end of a rotation means tidying up the output grouping.
% \begin{macrocode}
-\cs_new_eq:NN \@@_box_rotate_end: \@@_graphic_state_restore:
+\cs_new_eq:NN \@@_box_rotate_end: \@@_state_restore:
% \end{macrocode}
% \end{macro}
-%
+%
% \begin{macro}{\@@_box_scale_begin:, \@@_box_scale_end:}
% Scaling is not dissimilar to rotation, but the calculations are somewhat
% less complex.
% \begin{macrocode}
\cs_new_protected_nopar:Npn \@@_box_scale_begin:
{
+ \@@_state_save:
\fp_set:Nn \l__box_scale_x_fp { round ( \l__box_scale_x_fp , 5 ) }
\fp_set:Nn \l__box_scale_y_fp { round ( \l__box_scale_y_fp , 5 ) }
- \@@_graphic_state_save:
%<*dvips>
- \@@_ps_literal:n
+ \@@_literal:n
{
currentpoint~
currentpoint~translate~
@@ -469,67 +483,41 @@
neg~exch~neg~exch~translate
}
%</dvips>
-%<*!dvips>
- \@@_pdf_matrix:n
+%<*dvipdfmx|pdfmode|xdvipdfmx>
+ \@@_matrix:n
{
\fp_use:N \l__box_scale_x_fp \c_space_tl
0~0~
\fp_use:N \l__box_scale_y_fp
}
-%</!dvips>
+%</dvipdfmx|pdfmode|xdvipdfmx>
}
-\cs_new_eq:NN \@@_box_scale_end: \@@_graphic_state_restore:
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_pdf_matrix:n}
-% Here the appropriate function is set up to insert an affine matrix
-% into the PDF. With a new enough \pdfTeX{} (version~1.40.0 or later)
-% there is a primitive for this, which only needs the rotation/scaling/skew
-% part. With an older \pdfTeX{} or with \texttt{xdvipdfmx} the matrix
-% also has to include a translation part: that is always zero and so is
-% built in here.
-% \begin{macrocode}
-%<*pdfmode>
-\cs_if_exist:NTF \pdftex_pdfsetmatrix:D
- {
- \cs_new_protected:Npn \@@_pdf_matrix:n #1
- { \pdftex_pdfsetmatrix:D {#1} }
- }
- {
- \cs_new_protected:Npn \@@_pdf_matrix:n #1
- { \@@_pdf_literal:n { #1 \c_space_tl 0~0~cm } }
- }
-%</pdfmode>
-%<*dvipdfmx|xdvipdfmx>
-\cs_new_protected:Npn \@@_pdf_matrix:n #1
- { \@@_pdf_literal_direct:n { #1 \c_space_tl 0~0~cm } }
-%</dvipdfmx|xdvipdfmx>
+\cs_new_eq:NN \@@_box_scale_end: \@@_state_restore:
% \end{macrocode}
% \end{macro}
%
-% \subsection{Colour support}
+% \subsection{Color support}
%
% \begin{variable}{\l_@@_current_color_tl}
% The current color is needed by all of the engines, but the way this
% is stored varies.
% \begin{macrocode}
\tl_new:N \l_@@_current_color_tl
+%<*dvipdfmx|xdvipdfmx>
+\tl_set:Nn \l_@@_current_color_tl { gray~0 }
+%</dvipdfmx|xdvipdfmx>
%<*dvips>
\tl_set:Nn \l_@@_current_color_tl { Black }
%</dvips>
%<*pdfmode>
\tl_set:Nn \l_@@_current_color_tl { 0~g~0~G }
%</pdfmode>
-%<*dvipdfmx|xdvipdfmx>
-\tl_set:Nn \l_@@_current_color_tl { gray~0 }
-%</dvipdfmx|xdvipdfmx>
-% \end{macrocode}
+%% \end{macrocode}
% \end{variable}
%
% \begin{variable}{\l_@@_color_stack_int}
% \pdfTeX{} (version~1.40.0 or later) and \LuaTeX{} have multiple stacks
-% available, and the color stack therefore needs a number.
+% available, and the color stack therefore needs a number when in PDF mode.
% \begin{macrocode}
%<*pdfmode>
\int_new:N \l_@@_color_stack_int
@@ -543,7 +531,7 @@
% available. In all cases there is a need to reset the color after
% the current group.
% \begin{macrocode}
-%<*!pdfmode>
+%<*dvipdfmx|dvips|xdvipdfmx>
\cs_new_protected_nopar:Npn \@@_color_ensure_current:
{
\tex_special:D { color~push~\l_@@_current_color_tl }
@@ -551,7 +539,7 @@
}
\cs_new_protected_nopar:Npn \@@_color_reset:
{ \tex_special:D { color~pop } }
-%</!pdfmode>
+%</dvipdfmx|dvips|xdvipdfmx>
% \end{macrocode}
% Once again there is a version switch for \pdfTeX{}, as the
% \tn{pdfcolorstack} primitive was introduced in version~1.40.0.
@@ -571,11 +559,11 @@
{
\cs_new_protected_nopar:Npn \@@_color_ensure_current:
{
- \@@_pdf_literal:n { \l_@@_current_color_tl }
+ \@@_literal:n { \l_@@_current_color_tl }
\group_insert_after:N \@@_color_reset:
}
\cs_new_protected_nopar:Npn \@@_color_reset:
- { \@@_pdf_literal:n { \l_@@_current_color_tl } }
+ { \@@_literal:n { \l_@@_current_color_tl } }
}
%</pdfmode>
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
index ee40577fbe8..03708beff6f 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
@@ -36,7 +36,7 @@
%
%<*driver>
\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3fp-aux.dtx 4601 2013-11-18 23:13:28Z bruno $
+\GetIdInfo$Id: l3fp-aux.dtx 4622 2013-12-14 13:05:45Z bruno $
{L3 Floating-point support functions}
\documentclass[full]{l3doc}
\begin{document}
@@ -211,7 +211,6 @@
% (typically digits).
% \begin{macrocode}
\cs_new:Npn \@@_use_s:n #1 { #1; }
-\cs_new:Npn \@@_use_braced_s:n #1 { {#1} ; }
\cs_new:Npn \@@_use_s:nn #1#2 { #1#2; }
% \end{macrocode}
% \end{macro}
@@ -244,11 +243,12 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[int, EXP]{\@@_use_i:ww}
+% \begin{macro}[int, EXP]{\@@_use_i:ww, \@@_use_i:www}
% Many internal functions take arguments delimited by semicolons, and
-% it is occasionally useful to remove one such argument.
+% it is occasionally useful to remove one or two such arguments.
% \begin{macrocode}
\cs_new:Npn \@@_use_i:ww #1; #2; { #1; }
+\cs_new:Npn \@@_use_i:www #1; #2; #3; { #1; }
% \end{macrocode}
% \end{macro}
%
@@ -591,7 +591,7 @@
% provide different sets of packing functions and shifts, depending on
% ranges of input.
%
-% \begin{macro}[int, EXP]{\@@_pack:NNNNNw, \@@_pack:NNNNNwn}
+% \begin{macro}[int, EXP]{\@@_pack:NNNNNw}
% \begin{variable}[int]
% {
% \c_@@_trailing_shift_int ,
@@ -600,20 +600,17 @@
% }
% This set of shifts allows for computations involving results in the
% range $[-4\cdot 10^{8}, 5\cdot 10^{8}-1]$. Shifted values all have
-% exactly $9$ digits. The \cs{@@_pack:NNNNNwn} function brings a
-% braced \meta{continuation} up through the levels of expansion.
+% exactly $9$ digits.
% \begin{macrocode}
\int_const:Nn \c_@@_leading_shift_int { - 5 0000 }
\int_const:Nn \c_@@_middle_shift_int { 5 0000 * 9999 }
\int_const:Nn \c_@@_trailing_shift_int { 5 0000 * 10000 }
\cs_new:Npn \@@_pack:NNNNNw #1 #2#3#4#5 #6; { + #1#2#3#4#5 ; {#6} }
-\cs_new:Npn \@@_pack:NNNNNwn #1 #2#3#4#5 #6; #7
- { + #1#2#3#4#5 ; {#7} {#6} }
% \end{macrocode}
% \end{variable}
% \end{macro}
%
-% \begin{macro}[int, EXP]{\@@_pack_big:NNNNNNw, \@@_pack_big:NNNNNNwn}
+% \begin{macro}[int, EXP]{\@@_pack_big:NNNNNNw}
% \begin{variable}[int]
% {
% \c_@@_big_trailing_shift_int ,
@@ -632,8 +629,6 @@
\int_const:Nn \c_@@_big_trailing_shift_int { 15 2374 * 10000 }
\cs_new:Npn \@@_pack_big:NNNNNNw #1#2 #3#4#5#6 #7;
{ + #1#2#3#4#5#6 ; {#7} }
-\cs_new:Npn \@@_pack_big:NNNNNNwn #1#2 #3#4#5#6 #7; #8
- { + #1#2#3#4#5#6 ; {#8} {#7} }
% \end{macrocode}
% \end{variable}
% \end{macro}
@@ -949,9 +944,9 @@
% \@@_small_int_normal:NnwTF,
% \@@_small_int_test:NnnwNTF
% }
-% This function tests if its floating point argument is an integer in
-% the range $[-99999999,99999999]$. If it is, the result of the
-% conversion is fed as a braced argument to the \meta{true code}.
+% Tests if the floating point argument is an integer or $\pm\infty$.
+% If so, it is converted to an integer in the range $[-10^{8},10^{8}]$
+% and fed as a braced argument to the \meta{true code}.
% Otherwise, the \meta{false code} is performed. First filter special
% cases: neither \texttt{nan} nor infinities are integers. Normal
% numbers with a non-positive exponent are never integers. When the
@@ -967,38 +962,45 @@
% coming from \cs{@@_small_int_normal:NnwTF}, hence will call the
% \cs{use_iii:nnn} which follows, taking the false branch.
% \begin{macrocode}
-\cs_new:Npn \@@_small_int:wTF \s_@@ \@@_chk:w #1
+\cs_new:Npn \@@_small_int:wTF \s_@@ \@@_chk:w #1#2
{
\if_case:w #1 \exp_stop_f:
\@@_case_return:nw { \@@_small_int_true:wTF 0 ; }
\or: \exp_after:wN \@@_small_int_normal:NnwTF
+ \or:
+ \@@_case_return:nw
+ {
+ \exp_after:wN \@@_small_int_true:wTF \__int_value:w
+ \if_meaning:w 2 #2 - \fi: 1 0000 0000 ;
+ }
\else: \@@_case_return:nw \use_ii:nn
\fi:
+ #2
}
\cs_new:Npn \@@_small_int_true:wTF #1; #2#3 { #2 {#1} }
\cs_new:Npn \@@_small_int_normal:NnwTF #1#2#3;
{
\if_int_compare:w #2 > \c_zero
- \if_int_compare:w #2 > \c_eight
- \exp_after:wN \exp_after:wN
- \exp_after:wN \use_iii:nnn
- \else:
- \@@_decimate:nNnnnn { \c_sixteen - #2 }
- \@@_small_int_test:NnnwNTF
- #3 #1
- \fi:
+ \@@_decimate:nNnnnn { \c_sixteen - #2 }
+ \@@_small_int_test:NnnwNnw
+ #3 #1 {#2}
\else:
\exp_after:wN \use_iii:nnn
\fi:
;
}
-\cs_new:Npn \@@_small_int_test:NnnwNTF #1#2#3#4; #5
+\cs_new:Npn \@@_small_int_test:NnnwNnw #1#2#3#4; #5#6
{
\if_meaning:w 0 #1
\exp_after:wN \@@_small_int_true:wTF
- \__int_value:w \if_meaning:w 2 #5 - \fi: #3
+ \__int_value:w \if_meaning:w 2 #5 - \fi:
+ \if_int_compare:w #6 > \c_eight
+ 1 0000 0000
+ \else:
+ #3
+ \fi:
\else:
- \exp_after:wN \use_i:nn
+ \use_i:nn
\fi:
}
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
index 104a118ca3b..d5ddae31ab0 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
@@ -36,7 +36,7 @@
%
%<*driver>
\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3fp-basics.dtx 4601 2013-11-18 23:13:28Z bruno $
+\GetIdInfo$Id: l3fp-basics.dtx 4619 2013-12-14 12:53:54Z bruno $
{L3 Floating-point arithmetic}
\documentclass[full]{l3doc}
\begin{document}
@@ -107,12 +107,7 @@
% |{0000}|.
% \begin{macrocode}
\cs_new:Npn \@@_basics_pack_low:NNNNNw #1 #2#3#4#5 #6;
- {
- \if_meaning:w 2 #1
- + \c_one
- \fi:
- ; {#2#3#4#5} {#6} ;
- }
+ { + #1 - \c_one ; {#2#3#4#5} {#6} ; }
\cs_new:Npn \@@_basics_pack_high:NNNNNw #1 #2#3#4#5 #6;
{
\if_meaning:w 2 #1
@@ -1599,7 +1594,495 @@
% \end{macrocode}
% \end{macro}
%
-% \subsection{Unary operations}
+% \subsection{Square root}
+%
+% \begin{macro}[int, EXP]{\@@_sqrt_o:w}
+% Zeros are unchanged: $\sqrt{-0} = -0$ and $\sqrt{+0} = +0$.
+% Negative numbers (other than $-0$) have no real square root.
+% Positive infinity, and \texttt{nan}, are unchanged. Finally, for
+% normal positive numbers, there is some work to do.
+% \begin{macrocode}
+\cs_new:Npn \@@_sqrt_o:w #1 \s_@@ \@@_chk:w #2#3#4; @
+ {
+ \if_meaning:w 0 #2 \@@_case_return_same_o:w \fi:
+ \if_meaning:w 2 #3
+ \@@_case_use:nw { \@@_invalid_operation_o:nw { sqrt } }
+ \fi:
+ \if_meaning:w 1 #2 \else: \@@_case_return_same_o:w \fi:
+ \@@_sqrt_npos_o:w
+ \s_@@ \@@_chk:w #2 #3 #4;
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[aux, EXP]{\@@_sqrt_npos_o:w}
+% \begin{macro}[aux, rEXP]
+% {\@@_sqrt_npos_auxi_o:wwnnN, \@@_sqrt_npos_auxii_o:wNNNNNNNN}
+% Prepare \cs{@@_sanitize:Nw} to receive the final sign~|0| (the
+% result is always positive) and the exponent, equal to half of the
+% exponent~|#1| of the argument. If the exponent~|#1| is even, find a
+% first approximation of the square root of the significand $10^{8}
+% a_1 + a_2 = 10^{8} |#2#3| + |#4#5|$ through Newton's method,
+% starting at $x = 57234133 \simeq 10^{7.75}$. Otherwise, first shift
+% the significand of of the argument by one digit, getting
+% $a_1'\in[10^{6}, 10^{7})$ instead of $[10^{7}, 10^{8})$, then use
+% Newton's method starting at $17782794 \simeq 10^{7.25}$.
+% \begin{macrocode}
+\cs_new:Npn \@@_sqrt_npos_o:w \s_@@ \@@_chk:w 1 0 #1#2#3#4#5;
+ {
+ \exp_after:wN \@@_sanitize:Nw
+ \exp_after:wN 0
+ \int_use:N \__int_eval:w
+ \if_int_odd:w #1 \exp_stop_f:
+ \exp_after:wN \@@_sqrt_npos_auxi_o:wwnnN
+ \fi:
+ #1 / \c_two
+ \@@_sqrt_Newton_o:wwn 56234133; 0; {#2#3} {#4#5} 0
+ }
+\cs_new:Npn \@@_sqrt_npos_auxi_o:wwnnN #1 / \c_two #2; 0; #3#4#5
+ {
+ ( #1 + \c_one ) / \c_two
+ \@@_pack_eight:wNNNNNNNN
+ \@@_sqrt_npos_auxii_o:wNNNNNNNN
+ ;
+ 0 #3 #4
+ }
+\cs_new:Npn \@@_sqrt_npos_auxii_o:wNNNNNNNN #1; #2#3#4#5#6#7#8#9
+ { \@@_sqrt_Newton_o:wwn 17782794; 0; {#1} {#2#3#4#5#6#7#8#9} }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[aux, rEXP]{\@@_sqrt_Newton_o:wwn}
+% Newton's method maps $x\mapsto\bigl[(x + [10^{8} a_1 / x])/2\bigr]$
+% in each iteration, where $[b/c]$ denotes \eTeX{}'s division. This
+% division rounds the real number $b/c$ to the closest integer,
+% rounding ties away from zero, hence when $c$~is even,
+% $b/c - 1/2 + 1/c \leq [b/c] \leq b/c + 1/2$
+% and when $c$~is odd,
+% $b/c - 1/2 + 1/(2c) \leq [b/c] \leq b/c + 1/2 - 1/(2c)$.
+% For all~$c$, $b/c - 1/2 + 1/(2c) \leq [b/c] \leq b/c + 1/2$.
+%
+% Let us prove that the method converges when implemented with \eTeX{}
+% integer division, for any $10^{6} \leq a_1 < 10^{8}$ and starting
+% value $10^{6} \leq x < 10^{8}$. Using the inequalities above and
+% the arithmetic--geometric inequality $(x+t)/2 \geq \sqrt{xt}$ for $t
+% = 10^{8} a_1 / x$, we find
+% \[
+% x'
+% = \left[\frac{x + [10^{8} a_1 / x]}{2}\right]
+% \geq \frac{x + 10^{8} a_1 / x - 1/2 + 1/(2x)}{2}
+% \geq \sqrt{10^{8} a_1} - \frac{1}{4} + \frac{1}{4x} \,.
+% \]
+% After any step of iteration, we thus have $\delta = x - \sqrt{10^{8}
+% a_1} \geq -0.25 + 0.25 \cdot 10^{-8}$. The new difference
+% $\delta' = x' - \sqrt{10^{8} a_1}$ after one step is bounded above
+% as
+% \[
+% x' - \sqrt{10^{8} a_1}
+% \leq \frac{x + 10^{8} a_1 / x + 1/2}{2} + \frac{1}{2}
+% - \sqrt{10^{8} a_1}
+% \leq \frac{\delta}{2} \frac{\delta}{\sqrt{10^{8} a_1} + \delta}
+% + \frac{3}{4} \,.
+% \]
+% For $\delta > 3/2$, this last expression is
+% $\leq\delta/2+3/4<\delta$, hence $\delta$~decreases at each step:
+% since all~$x$ are integers, $\delta$~must reach a value
+% $-1/4<\delta\leq 3/2$. In this range of values, we get $\delta'
+% \leq \frac{3}{4} \frac{3}{2\sqrt{10^{8} a_1}} + \frac{3}{4} \leq
+% 0.75 + 1.125 \cdot 10^{-7}$. We deduce that the difference $\delta
+% = x - \sqrt{10^{8} a_1}$ eventually reaches a value in the interval
+% $[-0.25 + 0.25\cdot 10^{-8}, 0.75 + 11.25 \cdot 10^{-8}]$, whose
+% width is $1 + 11 \cdot 10^{-8}$. The corresponding interval for~$x$
+% may contain two integers, hence $x$~might oscillate between those
+% two values.
+%
+% However, the fact that $x\mapsto x-1$ and $x-1 \mapsto x$ puts
+% stronger constraints, which are not compatible: the first implies
+% \[
+% x + [10^{8} a_1 / x] \leq 2x - 2
+% \]
+% hence $10^{8} a_1 / x \leq x - 3/2$, while the second implies
+% \[
+% x - 1 + [10^{8} a_1 / (x - 1)] \geq 2x - 1
+% \]
+% hence $10^{8} a_1 / (x - 1) \geq x - 1/2$. Combining the two
+% inequalities yields $x^2 - 3x/2 \geq 10^{8} a_1 \geq x - 3x/2 +
+% 1/2$, which cannot hold. Therefore, the iteration always converges
+% to a single integer~$x$. To stop the iteration when two consecutive
+% results are equal, the function \cs{@@_sqrt_Newton_o:wwn} receives
+% the newly computed result as~|#1|, the previous result as~|#2|, and
+% $a_1$ as~|#3|. Note that \eTeX{} combines the computation of a
+% multiplication and a following division, thus avoiding overflow in
+% |#3 * 100000000 / #1|. In any case, the result is within $[10^{7},
+% 10^{8}]$.
+% \begin{macrocode}
+\cs_new:Npn \@@_sqrt_Newton_o:wwn #1; #2; #3
+ {
+ \if_int_compare:w #1 = #2 \exp_stop_f:
+ \exp_after:wN \@@_sqrt_auxi_o:NNNNwnnN
+ \int_use:N \__int_eval:w 9999 9999 +
+ \exp_after:wN \@@_use_none_until_s:w
+ \fi:
+ \exp_after:wN \@@_sqrt_Newton_o:wwn
+ \int_use:N \__int_eval:w (#1 + #3 * 1 0000 0000 / #1) / \c_two ;
+ #1; {#3}
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[aux, rEXP]{\@@_sqrt_auxi_o:NNNNwnnN}
+% This function is followed by $10^{8}+x-1$, which has~$9$ digits
+% starting with~$1$, then |;| \Arg{a_1} \Arg{a_2} \meta{a'}. Here, $x
+% \simeq \sqrt{10^{8} a_1}$ and we want to estimate the square root of
+% $a = 10^{-8} a_1 + 10^{-16} a_2 + 10^{-17} a'$. We set up an
+% initial underestimate
+% \[
+% y = (x - 1) 10^{-8} + 0.2499998875 \cdot 10^{-8} \lesssim \sqrt{a}\,.
+% \]
+% From the inequalities shown earlier, we know that $y \leq
+% \sqrt{10^{-8} a_1} \leq \sqrt{a}$ and that $\sqrt{10^{-8} a_1} \leq
+% y + 10^{-8} + 11\cdot 10^{-16}$ hence (using $0.1\leq y\leq
+% \sqrt{a}\leq 1$)
+% \[
+% a - y^2 \leq 10^{-8} a_1 + 10^{-8} - y^2
+% \leq (y + 10^{-8} + 11\cdot 10^{-16})^2 - y^2 + 10^{-8}
+% < 3.2 \cdot 10^{-8} \,,
+% \]
+% and $\sqrt{a} - y = (a - y^2)/(\sqrt{a} + y) \leq 16 \cdot 10^{-8}$.
+% Next, \cs{@@_sqrt_auxii_o:NnnnnnnnN} will be called several times to
+% get closer and closer underestimates of~$\sqrt{a}$. By
+% construction, the underestimates~$y$ are always increasing, $a - y^2
+% < 3.2 \cdot 10^{-8}$ for all. Also, $y<1$.
+% \begin{macrocode}
+\cs_new:Npn \@@_sqrt_auxi_o:NNNNwnnN 1 #1#2#3#4#5;
+ {
+ \@@_sqrt_auxii_o:NnnnnnnnN
+ \@@_sqrt_auxiii_o:wnnnnnnnn
+ {#1#2#3#4} {#5} {2499} {9988} {7500}
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[aux, rEXP]{\@@_sqrt_auxii_o:NnnnnnnnN}
+% This receives a continuation function~|#1|, then five blocks of~$4$
+% digits for~$y$, then two $8$-digit blocks and a single digit
+% for~$a$. A common estimate of $\sqrt{a} - y = (a - y^2) / (\sqrt{a}
+% + y)$ is $(a - y^2)/(2y)$, which leads to alternating overestimates
+% and underestimates. We tweak this, to only work with underestimates
+% (no need then to worry about signs in the computation). Each step
+% finds the largest integer $j\leq 6$ such that $10^{4j}(a-y^2) <
+% 2\cdot 10^{8}$, then computes the integer (with \eTeX{}'s rounding
+% division)
+% \[
+% 10^{4j} z =
+% \Bigl[\bigl(\lfloor 10^{4j}(a-y^2)\rfloor - 257\bigr)
+% \cdot (0.5\cdot 10^{8})
+% \Bigm/ \lfloor 10^{8} y + 1\rfloor\Bigr] \,.
+% \]
+% The choice of~$j$ ensures that $10^{4j} z < 2\cdot 10^{8} \cdot
+% 0.5\cdot 10^{8} / 10^{7} = 10^{9}$, thus $10^{9} + 10^{4j} z$ has
+% exactly $10$~digits, does not overflow \TeX{}'s integer range, and
+% starts with~$1$. Incidentally, since all $a - y^2 \leq 3.2\cdot
+% 10^{-8}$, we know that $j\geq 3$.
+%
+% Let us show that $z$ is an underestimate of $\sqrt{a} - y$. On the
+% one hand, $\sqrt{a} - y \leq 16\cdot 10^{-8}$ because this holds for
+% the initial~$y$ and values of~$y$ can only increase. On the other
+% hand, the choice of~$j$ implies that $\sqrt{a} - y \leq
+% 5(\sqrt{a}+y)(\sqrt{a}-y) = 5(a - y^2) < 10^{9-4j}$. For $j=3$, the
+% first bound is better, while for larger~$j$, the second bound is
+% better. For all $j\in[3,6]$, we find $\sqrt{a}-y < 16\cdot
+% 10^{-2j}$. From this, we deduce that
+% \[
+% 10^{4j} (\sqrt{a}-y)
+% = \frac{10^{4j}\bigl(a-y^2-(\sqrt{a}-y)^2\bigr)}{2y}
+% \geq \frac{\bigl\lfloor 10^{4j}(a-y^2)\bigr\rfloor-257}
+% {2\cdot 10^{-8} \lfloor 10^{8}y+1\rfloor}
+% + \frac{1}{2}
+% \]
+% where we have replaced the bound $10^{4j}(16\cdot 10^{-2j}) = 256$
+% by~$257$ and extracted the corresponding term $1/\bigl(2\cdot
+% 10^{-8} \lfloor 10^{8}y+1\rfloor\bigr) \geq 1/2$. Given that
+% \eTeX{}'s integer division obeys $[b/c] \leq b/c + 1/2$, we deduce
+% that $10^{4j} z \leq 10^{4j} (\sqrt{a}-y)$, hence $y+z\leq\sqrt{a}$
+% is an underestimate of~$\sqrt{a}$, as claimed. One implementation
+% detail: because the computation involves |-#4*#4| |-| |2*#3*#5| |-|
+% |2*#2*#6| which may be as low as $-5\cdot 10^{8}$, we need to use
+% the \texttt{pack_big} functions, and the \texttt{big} shifts.
+% \begin{macrocode}
+\cs_new:Npn \@@_sqrt_auxii_o:NnnnnnnnN #1 #2#3#4#5#6 #7#8#9
+ {
+ \exp_after:wN #1
+ \int_use:N \__int_eval:w \c_@@_big_leading_shift_int
+ + #7 - #2 * #2
+ \exp_after:wN \@@_pack_big:NNNNNNw
+ \int_use:N \__int_eval:w \c_@@_big_middle_shift_int
+ - 2 * #2 * #3
+ \exp_after:wN \@@_pack_big:NNNNNNw
+ \int_use:N \__int_eval:w \c_@@_big_middle_shift_int
+ + #8 - #3 * #3 - 2 * #2 * #4
+ \exp_after:wN \@@_pack_big:NNNNNNw
+ \int_use:N \__int_eval:w \c_@@_big_middle_shift_int
+ - 2 * #3 * #4 - 2 * #2 * #5
+ \exp_after:wN \@@_pack_big:NNNNNNw
+ \int_use:N \__int_eval:w \c_@@_big_middle_shift_int
+ + #9 000 0000 - #4 * #4 - 2 * #3 * #5 - 2 * #2 * #6
+ \exp_after:wN \@@_pack_big:NNNNNNw
+ \int_use:N \__int_eval:w \c_@@_big_middle_shift_int
+ - 2 * #4 * #5 - 2 * #3 * #6
+ \exp_after:wN \@@_pack_big:NNNNNNw
+ \int_use:N \__int_eval:w \c_@@_big_middle_shift_int
+ - #5 * #5 - 2 * #4 * #6
+ \exp_after:wN \@@_pack_big:NNNNNNw
+ \int_use:N \__int_eval:w
+ \c_@@_big_middle_shift_int
+ - 2 * #5 * #6
+ \exp_after:wN \@@_pack_big:NNNNNNw
+ \int_use:N \__int_eval:w
+ \c_@@_big_trailing_shift_int
+ - #6 * #6 ;
+ % (
+ - 257 ) * 5000 0000 / (#2#3 + 1) + 10 0000 0000 ;
+ {#2}{#3}{#4}{#5}{#6} {#7}{#8}#9
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[aux, rEXP]
+% {
+% \@@_sqrt_auxiii_o:wnnnnnnnn,
+% \@@_sqrt_auxiv_o:NNNNNw,
+% \@@_sqrt_auxv_o:NNNNNw,
+% \@@_sqrt_auxvi_o:NNNNNw,
+% \@@_sqrt_auxvii_o:NNNNNw
+% }
+% We receive here the difference $a-y^2=d=\sum_i d_i \cdot 10^{-4i}$,
+% as \meta{d_2} |;| \Arg{d_3} \ldots{} \Arg{d_{10}}, where each block
+% has~$4$ digits, except \meta{d_2}. This function finds the largest
+% $j\leq 6$ such that $10^{4j}(a-y^2) < 2\cdot 10^{8}$, then leaves an
+% open parenthesis and the integer
+% $\bigl\lfloor 10^{4j}(a-y^2)\bigr\rfloor$ in an integer
+% expression. The closing parenthesis is provided by the caller
+% \cs{@@_sqrt_auxii_o:NnnnnnnnN}, which completes the expression
+% \[
+% 10^{4j} z =
+% \Bigl[\bigl(\lfloor 10^{4j}(a-y^2)\rfloor - 257\bigr)
+% \cdot (0.5\cdot 10^{8})
+% \Bigm/ \lfloor 10^{8} y + 1\rfloor\Bigr]
+% \]
+% for an estimate of $10^{4j} (\sqrt{a} - y)$. If $d_2\geq 2$, $j=3$
+% and the \texttt{auxiv} auxiliary receives $10^{12} z$. If $d_2\leq
+% 1$ but $10^{4} d_2 + d_3 \geq 2$, $j=4$ and the \texttt{auxv}
+% auxiliary is called, and receives $10^{16} z$, and so on. In all
+% those cases, the \texttt{auxviii} auxiliary is set up to add~$z$
+% to~$y$, then go back to the \texttt{auxii} step with continuation
+% \texttt{auxiii} (the function we are currently describing). The
+% maximum value of $j$ is~$6$, regardless of whether $10^{12} d_2 +
+% 10^{8} d_3 + 10^{4} d_4 + d_5 \geq 1$. In this last case, we detect
+% when $10^{24} z < 10^{7}$, which essentially means $\sqrt{a} - y
+% \lesssim 10^{-17}$: once this threshold is reached, there is enough
+% information to find the correctly rounded~$\sqrt{a}$ with only one
+% more call to \cs{@@_sqrt_auxii_o:NnnnnnnnN}. Note that the
+% iteration cannot be stuck before reaching $j=6$, because for $j<6$,
+% one has $2\cdot 10^{8}\leq 10^{4(j+1)}(a-y^2)$, hence
+% \[
+% 10^{4j} z
+% \geq \frac{(20000-257)(0.5\cdot 10^{8})}{\lfloor 10^{8} y + 1\rfloor}
+% \geq (20000-257)\cdot 0.5 > 0 \,.
+% \]
+% \begin{macrocode}
+\cs_new:Npn \@@_sqrt_auxiii_o:wnnnnnnnn
+ #1; #2#3#4#5#6#7#8#9
+ {
+ \if_int_compare:w #1 > \c_one
+ \exp_after:wN \@@_sqrt_auxiv_o:NNNNNw
+ \int_use:N \__int_eval:w (#1#2 %)
+ \else:
+ \if_int_compare:w #1#2 > \c_one
+ \exp_after:wN \@@_sqrt_auxv_o:NNNNNw
+ \int_use:N \__int_eval:w (#1#2#3 %)
+ \else:
+ \if_int_compare:w #1#2#3 > \c_one
+ \exp_after:wN \@@_sqrt_auxvi_o:NNNNNw
+ \int_use:N \__int_eval:w (#1#2#3#4 %)
+ \else:
+ \exp_after:wN \@@_sqrt_auxvii_o:NNNNNw
+ \int_use:N \__int_eval:w (#1#2#3#4#5 %)
+ \fi:
+ \fi:
+ \fi:
+ }
+\cs_new:Npn \@@_sqrt_auxiv_o:NNNNNw 1#1#2#3#4#5#6;
+ { \@@_sqrt_auxviii_o:nnnnnnn {#1#2#3#4#5#6} {00000000} }
+\cs_new:Npn \@@_sqrt_auxv_o:NNNNNw 1#1#2#3#4#5#6;
+ { \@@_sqrt_auxviii_o:nnnnnnn {000#1#2#3#4#5} {#60000} }
+\cs_new:Npn \@@_sqrt_auxvi_o:NNNNNw 1#1#2#3#4#5#6;
+ { \@@_sqrt_auxviii_o:nnnnnnn {0000000#1} {#2#3#4#5#6} }
+\cs_new:Npn \@@_sqrt_auxvii_o:NNNNNw 1#1#2#3#4#5#6;
+ {
+ \if_int_compare:w #1#2 = \c_zero
+ \exp_after:wN \@@_sqrt_auxx_o:Nnnnnnnn
+ \fi:
+ \@@_sqrt_auxviii_o:nnnnnnn {00000000} {000#1#2#3#4#5}
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[aux, rEXP]
+% {\@@_sqrt_auxviii_o:nnnnnnn, \@@_sqrt_auxix_o:wnwnw}
+% Simply add the two $8$-digit blocks of~$z$, aligned to the last four
+% of the five $4$-digit blocks of~$y$, then call the \texttt{auxii}
+% auxiliary to evaluate $y'^{2} = (y+z)^{2}$.
+% \begin{macrocode}
+\cs_new:Npn \@@_sqrt_auxviii_o:nnnnnnn #1#2 #3#4#5#6#7
+ {
+ \exp_after:wN \@@_sqrt_auxix_o:wnwnw
+ \int_use:N \__int_eval:w #3
+ \exp_after:wN \@@_basics_pack_low:NNNNNw
+ \int_use:N \__int_eval:w #1 + 1#4#5
+ \exp_after:wN \@@_basics_pack_low:NNNNNw
+ \int_use:N \__int_eval:w #2 + 1#6#7 ;
+ }
+\cs_new:Npn \@@_sqrt_auxix_o:wnwnw #1; #2#3; #4#5;
+ {
+ \@@_sqrt_auxii_o:NnnnnnnnN
+ \@@_sqrt_auxiii_o:wnnnnnnnn {#1}{#2}{#3}{#4}{#5}
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[aux, rEXP]
+% {\@@_sqrt_auxx_o:Nnnnnnnn, \@@_sqrt_auxxi_o:wwnnN}
+% At this stage, $j=6$ and $10^{24} z < 10^{7}$, hence
+% \[
+% 10^{7} + 1/2 > 10^{24} z + 1/2 \geq
+% \bigl(10^{24}(a-y^2) - 258\bigr) \cdot (0.5\cdot 10^{8})
+% \Bigm/ (10^{8} y + 1) \,,
+% \]
+% then $10^{24}(a-y^2) - 258 < 2 (10^{7} + 1/2) (y + 10^{-8})$, and
+% \[
+% 10^{24}(a-y^2)
+% < (10^{7} + 1290.5) (1 + 10^{-8}/y) (2y)
+% < (10^{7} + 1290.5) (1 + 10^{-7}) (y + \sqrt{a}) \,,
+% \]
+% which finally implies $0\leq\sqrt{a}-y < 0.2\cdot 10^{-16}$. In
+% particular, $y$~is an underestimate of~$\sqrt{a}$ and $y+0.5\cdot
+% 10^{-16}$ is a (strict) overestimate. There is at exactly one
+% multiple $m$~of $0.5\cdot 10^{-16}$ in the interval $[y, y+0.5\cdot
+% 10^{-16})$. If $m^2>a$, then the square root is inexact and is
+% obtained by rounding $m-\epsilon$ to a multiple of $10^{-16}$ (the
+% precise shift $0<\epsilon<0.5\cdot 10^{-16}$ is irrelevant for
+% rounding). If $m^2=a$ then the square root is exactly~$m$, and
+% there is no rounding. If $m^2<a$ then we round $m+\epsilon$. For
+% now, discard a few irrelevant arguments |#1|, |#2|, |#3|, and find
+% the multiple of $0.5\cdot 10^{-16}$ within $[y, y+0.5\cdot
+% 10^{-16})$; rather, only the last $4$~digits |#8| of~$y$ are
+% considered, and we do not perform any carry yet. The \texttt{auxxi}
+% auxiliary sets up \texttt{auxii} with a continuation function
+% \texttt{auxxii} instead of \texttt{auxiii} as before. To prevent
+% \texttt{auxii} from giving a negative results $a-m^2$, we compute
+% $a+10^{-16}-m^2$ instead, always positive since $m<\sqrt{a}+0.5\cdot
+% 10^{-16}$ and $a\leq 1-10^{-16}$.
+% \begin{macrocode}
+\cs_new:Npn \@@_sqrt_auxx_o:Nnnnnnnn #1#2#3 #4#5#6#7#8
+ {
+ \exp_after:wN \@@_sqrt_auxxi_o:wwnnN
+ \int_use:N \__int_eval:w
+ (#8 + 2499) / 5000 * 5000 ;
+ {#4} {#5} {#6} {#7} ;
+ }
+\cs_new:Npn \@@_sqrt_auxxi_o:wwnnN #1; #2; #3#4#5
+ {
+ \@@_sqrt_auxii_o:NnnnnnnnN
+ \@@_sqrt_auxxii_o:nnnnnnnnw
+ #2 {#1}
+ {#3} { #4 + \c_one } #5
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[aux, rEXP]
+% {\@@_sqrt_auxxii_o:nnnnnnnnw, \@@_sqrt_auxxiii_o:w}
+% The difference $0\leq a+10^{-16}-m^2\leq
+% 10^{-16}+(\sqrt{a}-m)(\sqrt{a}+m)\leq 2\cdot 10^{-16}$ was just
+% computed: its first $8$~digits vanish, as do the next four,~|#1|,
+% and most of the following four,~|#2|. The guess~$m$ is an
+% overestimate if $a+10^{-16}-m^2 < 10^{-16}$, that is, |#1#2|
+% vanishes. Otherwise it is an underestimate, unless
+% $a+10^{-16}-m^2=10^{-16}$ exactly. For an underestimate, call the
+% \texttt{auxxiv} function with argument~$9998$. For an exact result
+% call it with~$9999$, and for an overestimate call it with~$10000$.
+% \begin{macrocode}
+\cs_new:Npn \@@_sqrt_auxxii_o:nnnnnnnnw 0; #1#2#3#4#5#6#7#8 #9;
+ {
+ \if_int_compare:w #1#2 > \c_zero
+ \if_int_compare:w #1#2 = \c_one
+ \if_int_compare:w #3#4 = \c_zero
+ \if_int_compare:w #5#6 = \c_zero
+ \if_int_compare:w #7#8 = \c_zero
+ \@@_sqrt_auxxiii_o:w
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \exp_after:wN \@@_sqrt_auxxiv_o:wnnnnnnnN
+ \__int_value:w 9998
+ \else:
+ \exp_after:wN \@@_sqrt_auxxiv_o:wnnnnnnnN
+ \__int_value:w 10000
+ \fi:
+ ;
+ }
+\cs_new:Npn \@@_sqrt_auxxiii_o:w \fi: \fi: \fi: \fi: #1 \fi: ;
+ {
+ \fi: \fi: \fi: \fi: \fi:
+ \@@_sqrt_auxxiv_o:wnnnnnnnN 9999 ;
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[aux, rEXP]{\@@_sqrt_auxxiv_o:wnnnnnnnN}
+% This receives $9998$, $9999$ or $10000$ as~|#1| when $m$~is an
+% underestimate, exact, or an overestimate, respectively. Then
+% comes~$m$ as five blocks of~$4$ digits, but where the last
+% block~|#6| may be $0$, $5000$, or~$10000$. In the latter case, we
+% need to add a carry, unless $m$~is an overestimate (|#1|~is then
+% $10000$). Then comes~$a$ as three arguments. Rounding is done by
+% \cs{@@_round:NNN}, whose first argument is the final sign~$0$
+% (square roots are positive). We fake its second argument. It
+% should be the last digit kept, but this is only used when ties are
+% \enquote{rounded to even}, and only when the result is exactly
+% half-way between two representable numbers rational square roots of
+% numbers with $16$~significant digits have: this situation never
+% arises for the square root, as any exact square root of a $16$~digit
+% number has at most $8$~significant digits. Finally, the last
+% argument is the next digit, possibly shifted by~$1$ when there are
+% further nonzero digits. This is achieved by \cs{@@_round_digit:Nw},
+% which receives (after removal of the $10000$'s digit) one of $0000$,
+% $0001$, $4999$, $5000$, $5001$, or~$9999$, which it converts to $0$,
+% $1$, $4$, $5$, $6$, and~$9$, respectively.
+% \begin{macrocode}
+\cs_new:Npn \@@_sqrt_auxxiv_o:wnnnnnnnN #1; #2#3#4#5#6 #7#8#9
+ {
+ \exp_after:wN \@@_basics_pack_high:NNNNNw
+ \int_use:N \__int_eval:w 1 0000 0000 + #2#3
+ \exp_after:wN \@@_basics_pack_low:NNNNNw
+ \int_use:N \__int_eval:w 1 0000 0000
+ + #4#5
+ \if_int_compare:w #6 > #1 \exp_stop_f: + \c_one \fi:
+ + \exp_after:wN \@@_round:NNN
+ \exp_after:wN 0
+ \exp_after:wN 0
+ \__int_value:w
+ \exp_after:wN \use_i:nn
+ \exp_after:wN \@@_round_digit:Nw
+ \int_use:N \__int_eval:w #6 + 19999 - #1 ;
+ \exp_after:wN ;
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Setting the sign}
%
% \begin{macro}[int, EXP]{\@@_set_sign_o:w}
% This function is used for the unary minus and for \texttt{abs}. It
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
index 47dfff937ad..75a68d95846 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
@@ -36,7 +36,7 @@
%
%<*driver>
\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3fp-expo.dtx 4601 2013-11-18 23:13:28Z bruno $
+\GetIdInfo$Id: l3fp-expo.dtx 4617 2013-12-14 12:37:59Z bruno $
{L3 Floating-point exponential-related functions}
\documentclass[full]{l3doc}
\begin{document}
@@ -1070,34 +1070,34 @@
\cs_new:Npn \@@_pow_exponent:wnN #1; #2
{
\if_int_compare:w #2 > \c_zero
- \exp_after:wN \@@_pow_exponent:Nwnnnnnwn % n\ln(10) - (-\ln(x))
+ \exp_after:wN \@@_pow_exponent:Nwnnnnnw % n\ln(10) - (-\ln(x))
\exp_after:wN +
\else:
- \exp_after:wN \@@_pow_exponent:Nwnnnnnwn % -( |n|\ln(10) + (-\ln(x)) )
+ \exp_after:wN \@@_pow_exponent:Nwnnnnnw % -( |n|\ln(10) + (-\ln(x)) )
\exp_after:wN -
\fi:
#2; #1;
}
-\cs_new:Npn \@@_pow_exponent:Nwnnnnnwn #1#2; #3#4#5#6#7#8; #9
+\cs_new:Npn \@@_pow_exponent:Nwnnnnnw #1#2; #3#4#5#6#7#8;
{ %^^A todo: use that in ln.
- \exp_after:wN \@@_fixed_mul_after:wn
+ \exp_after:wN \@@_fixed_mul_after:wwn
\int_use:N \__int_eval:w \c_@@_leading_shift_int
- \exp_after:wN \@@_pack:NNNNNwn
+ \exp_after:wN \@@_pack:NNNNNw
\int_use:N \__int_eval:w \c_@@_middle_shift_int
#1#2*23025 - #1 #3
- \exp_after:wN \@@_pack:NNNNNwn
+ \exp_after:wN \@@_pack:NNNNNw
\int_use:N \__int_eval:w \c_@@_middle_shift_int
#1 #2*8509 - #1 #4
- \exp_after:wN \@@_pack:NNNNNwn
+ \exp_after:wN \@@_pack:NNNNNw
\int_use:N \__int_eval:w \c_@@_middle_shift_int
#1 #2*2994 - #1 #5
- \exp_after:wN \@@_pack:NNNNNwn
+ \exp_after:wN \@@_pack:NNNNNw
\int_use:N \__int_eval:w \c_@@_middle_shift_int
#1 #2*0456 - #1 #6
- \exp_after:wN \@@_pack:NNNNNwn
+ \exp_after:wN \@@_pack:NNNNNw
\int_use:N \__int_eval:w \c_@@_trailing_shift_int
#1 #2*8401 - #1 #7
- #1 ( #2*7991 - #8 ) / 1 0000 ; {#9} ;
+ #1 ( #2*7991 - #8 ) / 1 0000 ; ;
}
\cs_new:Npn \@@_pow_B:wwN #1#2#3#4#5#6; #7;
{
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
index 9bb7145d635..fabc72e0392 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
@@ -36,7 +36,7 @@
%
%<*driver>
\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3fp-extended.dtx 4601 2013-11-18 23:13:28Z bruno $
+\GetIdInfo$Id: l3fp-extended.dtx 4617 2013-12-14 12:37:59Z bruno $
{L3 Floating-points with extended precision}
\documentclass[full]{l3doc}
\begin{document}
@@ -168,28 +168,25 @@
% exactly $4$~digits. The choice of shifts allows~|#1| to be in the
% range $[0, 5\cdot 10^{8}-1]$.
% \begin{macrocode}
-\cs_new:Npn \@@_fixed_div_myriad:wn #1#2#3#4#5#6; #7
+\cs_new:Npn \@@_fixed_div_myriad:wn #1#2#3#4#5#6;
{
- \exp_after:wN \@@_fixed_mul_after:wn
+ \exp_after:wN \@@_fixed_mul_after:wwn
\int_use:N \__int_eval:w \c_@@_leading_shift_int
- \exp_after:wN \@@_pack:NNNNNwn
+ \exp_after:wN \@@_pack:NNNNNw
\int_use:N \__int_eval:w \c_@@_trailing_shift_int
- + #1 ; {#7} {#2}{#3}{#4}{#5};
+ + #1 ; {#2}{#3}{#4}{#5};
}
% \end{macrocode}
% \end{macro}
%
-% ^^A todo:\cs_new:Npn \@@_fixed_mul_after:wn #1; #2; #3 { #3 {#1} #2; }
-% ^^A and do not bring the continuation up while packing.
-% ^^A possibly delete use_braced_s function afterwards.
-% \begin{macro}[aux, EXP]{\@@_fixed_mul_after:wn}
+% \begin{macro}[aux, EXP]{\@@_fixed_mul_after:wwn}
% The fixed point operations which involve multiplication end by
% calling this auxiliary. It braces the last block of digits, and
% places the \meta{continuation} |#2| in front. The
% \meta{continuation} was brought up through the expansions by
% the packing functions.
% \begin{macrocode}
-\cs_new:Npn \@@_fixed_mul_after:wn #1; #2 { #2 {#1} }
+\cs_new:Npn \@@_fixed_mul_after:wwn #1; #2; #3 { #3 {#1} #2; }
% \end{macrocode}
% \end{macro}
%
@@ -213,27 +210,26 @@
% \begin{macrocode}
\cs_new:Npn \@@_fixed_mul_short:wwn #1#2#3#4#5#6; #7#8#9;
{
- \exp_after:wN \@@_fixed_mul_after:wn
+ \exp_after:wN \@@_fixed_mul_after:wwn
\int_use:N \__int_eval:w \c_@@_leading_shift_int
+ #1*#7
- \exp_after:wN \@@_pack:NNNNNwn
+ \exp_after:wN \@@_pack:NNNNNw
\int_use:N \__int_eval:w \c_@@_middle_shift_int
+ #1*#8 + #2*#7
- \exp_after:wN \@@_pack:NNNNNwn
+ \exp_after:wN \@@_pack:NNNNNw
\int_use:N \__int_eval:w \c_@@_middle_shift_int
+ #1*#9 + #2*#8 + #3*#7
- \exp_after:wN \@@_pack:NNNNNwn
+ \exp_after:wN \@@_pack:NNNNNw
\int_use:N \__int_eval:w \c_@@_middle_shift_int
+ #2*#9 + #3*#8 + #4*#7
- \exp_after:wN \@@_pack:NNNNNwn
+ \exp_after:wN \@@_pack:NNNNNw
\int_use:N \__int_eval:w \c_@@_middle_shift_int
+ #3*#9 + #4*#8 + #5*#7
- \exp_after:wN \@@_pack:NNNNNwn
+ \exp_after:wN \@@_pack:NNNNNw
\int_use:N \__int_eval:w \c_@@_trailing_shift_int
+ #4*#9 + #5*#8 + #6*#7
+ ( #5*#9 + #6*#8 + #6*#9 / \c_ten_thousand )
- / \c_ten_thousand
- \exp_after:wN ; \@@_use_braced_s:n
+ / \c_ten_thousand ; ;
}
% \end{macrocode}
% \end{macro}
@@ -382,7 +378,7 @@
%
% ^^A todo: may a_1 or b_1 be = 10000? Used in ediv_epsi later.
% \begin{macro}[int, EXP]{\@@_fixed_mul:wwn}
-% \begin{macro}[aux, EXP]{\@@_fixed_mul:nnnnnnnwn}
+% \begin{macro}[aux, EXP]{\@@_fixed_mul:nnnnnnnw}
% \begin{syntax}
% \cs{@@_fixed_mul:wwn} \meta{a} |;| \meta{b} |;| \Arg{continuation}
% \end{syntax}
@@ -419,38 +415,36 @@
% $a_{5}$, $a_{6}$, $b_{1}$, $b_{2}$, $a_{1}$, $a_{2}$, $b_{5}$,
% $b_{6}$ and finally the \meta{continuation} as arguments. It writes
% the end of the expression, including the right parenthesis and the
-% denominator of the fraction. The packing auxiliaries bring the
-% \meta{continuation} up through the expansion chain, as |#7|, and it
+% denominator of the fraction. The \meta{continuation}
% is finally placed in front of the $6$ brace groups by
-% \cs{@@_fixed_mul_after:wn}.
+% \cs{@@_fixed_mul_after:wwn}.
% \begin{macrocode}
\cs_new:Npn \@@_fixed_mul:wwn #1#2#3#4 #5; #6#7#8#9
{
- \exp_after:wN \@@_fixed_mul_after:wn
+ \exp_after:wN \@@_fixed_mul_after:wwn
\int_use:N \__int_eval:w \c_@@_leading_shift_int
- \exp_after:wN \@@_pack:NNNNNwn
+ \exp_after:wN \@@_pack:NNNNNw
\int_use:N \__int_eval:w \c_@@_middle_shift_int
+ #1*#6
- \exp_after:wN \@@_pack:NNNNNwn
+ \exp_after:wN \@@_pack:NNNNNw
\int_use:N \__int_eval:w \c_@@_middle_shift_int
+ #1*#7 + #2*#6
- \exp_after:wN \@@_pack:NNNNNwn
+ \exp_after:wN \@@_pack:NNNNNw
\int_use:N \__int_eval:w \c_@@_middle_shift_int
+ #1*#8 + #2*#7 + #3*#6
- \exp_after:wN \@@_pack:NNNNNwn
+ \exp_after:wN \@@_pack:NNNNNw
\int_use:N \__int_eval:w \c_@@_middle_shift_int
+ #1*#9 + #2*#8 + #3*#7 + #4*#6
- \exp_after:wN \@@_pack:NNNNNwn
+ \exp_after:wN \@@_pack:NNNNNw
\int_use:N \__int_eval:w \c_@@_trailing_shift_int
+ #2*#9 + #3*#8 + #4*#7
+ ( #3*#9 + #4*#8
- + \@@_fixed_mul:nnnnnnnwn #5 {#6}{#7} {#1}{#2}
+ + \@@_fixed_mul:nnnnnnnw #5 {#6}{#7} {#1}{#2}
}
-\cs_new:Npn \@@_fixed_mul:nnnnnnnwn #1#2 #3#4 #5#6 #7#8 ; #9
+\cs_new:Npn \@@_fixed_mul:nnnnnnnw #1#2 #3#4 #5#6 #7#8 ;
{
#1*#4 + #2*#3 + #5*#8 + #6*#7 ) / \c_ten_thousand
- + #1*#3 + #5*#7 ;
- {#9} ;
+ + #1*#3 + #5*#7 ; ;
}
% \end{macrocode}
% \end{macro}
@@ -505,39 +499,37 @@
% later, and adds a trailing ${} + c_{5}c_{6}$ |;|
% \Arg{continuation}~|;|. The ${} + c_{5}c_{6}$ piece, which is
% omitted for \cs{@@_fixed_one_minus_mul:wwn}, will be taken in the
-% integer expression for the $10^{-24}$ level. The
-% \meta{continuation} is placed correctly to be taken upstream by
-% packing auxiliaries.
+% integer expression for the $10^{-24}$ level.
% \begin{macrocode}
-\cs_new:Npn \@@_fixed_mul_add:wwwn #1; #2; #3#4#5#6#7#8; #9
+\cs_new:Npn \@@_fixed_mul_add:wwwn #1; #2; #3#4#5#6#7#8;
{
- \exp_after:wN \@@_fixed_mul_after:wn
+ \exp_after:wN \@@_fixed_mul_after:wwn
\int_use:N \__int_eval:w \c_@@_big_leading_shift_int
- \exp_after:wN \@@_pack_big:NNNNNNwn
+ \exp_after:wN \@@_pack_big:NNNNNNw
\int_use:N \__int_eval:w \c_@@_big_middle_shift_int + #3 #4
\@@_fixed_mul_add:Nwnnnwnnn +
+ #5 #6 ; #2 ; #1 ; #2 ; +
- + #7 #8 ; {#9} ;
+ + #7 #8 ; ;
}
-\cs_new:Npn \@@_fixed_mul_sub_back:wwwn #1; #2; #3#4#5#6#7#8; #9
+\cs_new:Npn \@@_fixed_mul_sub_back:wwwn #1; #2; #3#4#5#6#7#8;
{
- \exp_after:wN \@@_fixed_mul_after:wn
+ \exp_after:wN \@@_fixed_mul_after:wwn
\int_use:N \__int_eval:w \c_@@_big_leading_shift_int
- \exp_after:wN \@@_pack_big:NNNNNNwn
+ \exp_after:wN \@@_pack_big:NNNNNNw
\int_use:N \__int_eval:w \c_@@_big_middle_shift_int + #3 #4
\@@_fixed_mul_add:Nwnnnwnnn -
+ #5 #6 ; #2 ; #1 ; #2 ; -
- + #7 #8 ; {#9} ;
+ + #7 #8 ; ;
}
-\cs_new:Npn \@@_fixed_one_minus_mul:wwn #1; #2; #3
+\cs_new:Npn \@@_fixed_one_minus_mul:wwn #1; #2;
{
- \exp_after:wN \@@_fixed_mul_after:wn
+ \exp_after:wN \@@_fixed_mul_after:wwn
\int_use:N \__int_eval:w \c_@@_big_leading_shift_int
- \exp_after:wN \@@_pack_big:NNNNNNwn
+ \exp_after:wN \@@_pack_big:NNNNNNw
\int_use:N \__int_eval:w \c_@@_big_middle_shift_int + 1 0000 0000
\@@_fixed_mul_add:Nwnnnwnnn -
; #2 ; #1 ; #2 ; -
- ; {#3} ;
+ ; ;
}
% \end{macrocode}
% \end{macro}
@@ -563,13 +555,13 @@
\cs_new:Npn \@@_fixed_mul_add:Nwnnnwnnn #1 #2; #3#4#5#6; #7#8#9
{
#1 #7*#3
- \exp_after:wN \@@_pack_big:NNNNNNwn
+ \exp_after:wN \@@_pack_big:NNNNNNw
\int_use:N \__int_eval:w \c_@@_big_middle_shift_int
#1 #7*#4 #1 #8*#3
- \exp_after:wN \@@_pack_big:NNNNNNwn
+ \exp_after:wN \@@_pack_big:NNNNNNw
\int_use:N \__int_eval:w \c_@@_big_middle_shift_int
#1 #7*#5 #1 #8*#4 #1 #9*#3 #2
- \exp_after:wN \@@_pack_big:NNNNNNwn
+ \exp_after:wN \@@_pack_big:NNNNNNw
\int_use:N \__int_eval:w \c_@@_big_middle_shift_int
#1 \@@_fixed_mul_add:nnnnwnnnn {#7}{#8}{#9}
}
@@ -601,7 +593,7 @@
\cs_new:Npn \@@_fixed_mul_add:nnnnwnnnn #1#2#3#4#5; #6#7#8#9
{
( #1*#9 + #2*#8 + #3*#7 + #4*#6 )
- \exp_after:wN \@@_pack_big:NNNNNNwn
+ \exp_after:wN \@@_pack_big:NNNNNNw
\int_use:N \__int_eval:w \c_@@_big_trailing_shift_int
\@@_fixed_mul_add:nnnnwnnwN
{ #6 + #4*#7 + #3*#8 + #2*#9 + #1 }
@@ -676,7 +668,6 @@
% \end{macro}
%
% ^^A todo: make it work when the arg is zero.
-% ^^A todo: remove the unused(?) 'n' arg.
% \begin{macro}[aux, EXP]{\@@_ep_to_ep:wwN}
% \begin{macro}[aux, rEXP]{\@@_ep_to_ep_loop:N, \@@_ep_to_ep_end:www}
% \begin{macro}[aux, EXP]{\@@_ep_to_ep_zero:ww}
@@ -1221,7 +1212,7 @@
% before), and we assume that it is less than $10^8$.\footnote{Bruno:
% I must double check this assumption.}
%
-%^^A todo: round properly when rounding to infinity: I need to know the sign.
+%^^A todo: round properly when rounding to infinity: I need the sign.
% \begin{macrocode}
\cs_new:Npn \@@_fixed_to_float:Nw #1#2; { \@@_fixed_to_float:wN #2; #1 }
\cs_new:Npn \@@_fixed_to_float:wN #1#2#3#4#5#6; #7
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
index 3923238e387..7f8d4c4a194 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
@@ -36,7 +36,7 @@
%
%<*driver>
\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3fp-parse.dtx 4604 2013-11-19 03:03:47Z bruno $
+\GetIdInfo$Id: l3fp-parse.dtx 4622 2013-12-14 13:05:45Z bruno $
{L3 Floating-point expression parsing}
\documentclass[full]{l3doc}
\begin{document}
@@ -1721,7 +1721,7 @@
\exp_after:wN \@@_parse_apply_unary:NNNwN
\exp_after:wN ##1
\exp_after:wN #4
- \cs:w @@_#3_o:w \exp_after:wN \cs_end:
+ \exp_after:wN #3
\tex_romannumeral:D
\if_int_compare:w #2 < ##1
\@@_parse_operand:Nw ##1
@@ -1731,8 +1731,8 @@
\@@_parse_expand:w
}
}
-\@@_tmp:w - \c_twelve { set_sign } 2
-\@@_tmp:w ! \c_twelve { not } ?
+\@@_tmp:w - \c_twelve \@@_set_sign_o:w 2
+\@@_tmp:w ! \c_twelve \@@_not_o:w ?
% \end{macrocode}
% \end{macro}
%
@@ -1939,6 +1939,7 @@
% \@@_parse_word_abs:N ,
% \@@_parse_word_exp:N ,
% \@@_parse_word_ln:N ,
+% \@@_parse_word_sqrt:N ,
% }
% Unary functions.
% \begin{macrocode}
@@ -1948,6 +1949,8 @@
{ \@@_parse_unary_function:nNN {exp} ? }
\cs_new_nopar:Npn \@@_parse_word_ln:N
{ \@@_parse_unary_function:nNN {ln} ? }
+\cs_new_nopar:Npn \@@_parse_word_sqrt:N
+ { \@@_parse_unary_function:nNN {sqrt} ? }
% \end{macrocode}
% \end{macro}
%
@@ -1990,8 +1993,23 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[aux, EXP]{\@@_parse_word_round:N}
-% This function expects one or two arguments.
+% \begin{macro}[aux, EXP]
+% {
+% \@@_parse_word_trunc:N,
+% \@@_parse_word_floor:N,
+% \@@_parse_word_ceil:N
+% }
+% \begin{macrocode}
+\cs_new_nopar:Npn \@@_parse_word_trunc:N
+ { \@@_parse_function:NNN \@@_round_o:Nw \@@_round_to_zero:NNN }
+\cs_new_nopar:Npn \@@_parse_word_floor:N
+ { \@@_parse_function:NNN \@@_round_o:Nw \@@_round_to_ninf:NNN }
+\cs_new_nopar:Npn \@@_parse_word_ceil:N
+ { \@@_parse_function:NNN \@@_round_o:Nw \@@_round_to_pinf:NNN }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[aux, EXP]{\@@_parse_word_round:N, \@@_parse_round:Nw}
% \begin{macrocode}
\cs_new:Npn \@@_parse_word_round:N #1#2
{
@@ -2006,27 +2024,12 @@
\fi:
\fi:
\fi:
- \exp_after:wN \@@_parse_apply_round:NNwN
- \exp_after:wN #1
- \exp_after:wN \@@_round_to_nearest:NNN
- \tex_romannumeral:D
- \@@_parse_operand:Nw \c_sixteen \@@_parse_expand:w #2
+ \@@_parse_function:NNN
+ \@@_round_o:Nw \@@_round_to_nearest:NNN #1
+ #2
}
\cs_new:Npn \@@_parse_round:Nw
- #1 #2 \@@_round_to_nearest:NNN #3 \@@_parse_expand:w #4
- { #2 #1 #3 \@@_parse_expand:w }
-\cs_new:Npn \@@_parse_apply_round:NNwN #1#2#3@#4
- {
- \if_case:w \__int_eval:w \@@_array_count:n {#3} - \c_one \__int_eval_end:
- \@@_round:Nwn #2 #3 {0} \tex_romannumeral:D
- \or: \@@_round:Nww #2 #3 \tex_romannumeral:D
- \else:
- \__msg_kernel_expandable_error:nnnnn
- { kernel } { fp-num-args } { round() } { 1 } { 2 }
- \exp_after:wN \c_nan_fp \tex_romannumeral:D
- \fi:
- -`0 #4 #1
- }
+ #1 #2 \@@_round_to_nearest:NNN #3#4 { #2 #1 #3 }
% \end{macrocode}
% \end{macro}
%
@@ -2428,74 +2431,73 @@
% }
% \begin{macro}[aux, EXP]
% {
-% \@@_parse_infix_excl_aux:NN,
-% \@@_parse_infix_excl_error:,
-% \@@_infix_compare:N,
-% \@@_parse_compare:NNNNNNw,
-% \@@_parse_compare_expand:NNNNNw,
-% \@@_parse_compare_end:NNNN,
+% \@@_parse_excl_error:,
+% \@@_parse_compare:NNNNNNN,
+% \@@_parse_compare_auxi:NNNNNNN,
+% \@@_parse_compare_auxii:NNNNN,
+% \@@_parse_compare_end:NNNNw,
% \@@_compare:wNNNNw,
% }
% \begin{macrocode}
\cs_new:cpn { @@_parse_infix_<:N } #1
{
- \@@_infix_compare:N #1 \c_one_fp
- \c_zero_fp \c_zero_fp \c_zero_fp \c_zero_fp <
+ \@@_parse_compare:NNNNNNN #1 \c_one
+ \c_zero \c_zero \c_zero \c_zero <
}
\cs_new:cpn { @@_parse_infix_=:N } #1
{
- \@@_infix_compare:N #1 \c_one_fp
- \c_zero_fp \c_zero_fp \c_zero_fp \c_zero_fp =
+ \@@_parse_compare:NNNNNNN #1 \c_one
+ \c_zero \c_zero \c_zero \c_zero =
}
\cs_new:cpn { @@_parse_infix_>:N } #1
{
- \@@_infix_compare:N #1 \c_one_fp
- \c_zero_fp \c_zero_fp \c_zero_fp \c_zero_fp >
+ \@@_parse_compare:NNNNNNN #1 \c_one
+ \c_zero \c_zero \c_zero \c_zero >
}
\cs_new:cpn { @@_parse_infix_!:N } #1
{
- \exp_after:wN \@@_parse_infix_excl_aux:NN
- \exp_after:wN #1 \tex_romannumeral:D \@@_parse_expand:w
- }
-\cs_new:Npn \@@_parse_infix_excl_aux:NN #1#2
- {
- \@@_infix_compare:N #1 \c_zero_fp
- \c_one_fp \c_one_fp \c_one_fp \c_one_fp #2
+ \exp_after:wN \@@_parse_compare:NNNNNNN
+ \exp_after:wN #1
+ \exp_after:wN \c_zero
+ \exp_after:wN \c_one
+ \exp_after:wN \c_one
+ \exp_after:wN \c_one
+ \exp_after:wN \c_one
}
-\cs_new:Npn \@@_parse_infix_excl_error:
+\cs_new:Npn \@@_parse_excl_error:
{
\__msg_kernel_expandable_error:nnnn
{ kernel } { fp-missing } { = } { ~after~!. }
}
-\cs_new:Npn \@@_infix_compare:N #1
+\cs_new:Npn \@@_parse_compare:NNNNNNN #1
{
\if_int_compare:w #1 < \c_seven
- \exp_after:wN \@@_parse_compare:NNNNNNw
- \exp_after:wN \@@_parse_infix_excl_error:
+ \exp_after:wN \@@_parse_compare_auxi:NNNNNNN
+ \exp_after:wN \@@_parse_excl_error:
\else:
\exp_after:wN @
\exp_after:wN \use_none:n
- \exp_after:wN \@@_infix_compare:N
+ \exp_after:wN \@@_parse_compare:NNNNNNN
\fi:
}
-\cs_new:Npn \@@_parse_compare:NNNNNNw #1#2#3#4#5#6#7
+\cs_new:Npn \@@_parse_compare_auxi:NNNNNNN #1#2#3#4#5#6#7
{
\if_case:w
- \if_catcode:w \scan_stop: #7
+ \if_catcode:w \scan_stop: \exp_not:N #7
\c_minus_one
\else:
\__int_eval:w `#7 - `< \__int_eval_end:
\fi:
- \@@_parse_compare_expand:NNNNNw #2#2#4#5#6
- \or: \@@_parse_compare_expand:NNNNNw #2#3#2#5#6
- \or: \@@_parse_compare_expand:NNNNNw #2#3#4#2#6
- \or: \@@_parse_compare_expand:NNNNNw #2#3#4#5#2
- \else: #1 \@@_parse_compare_end:NNNN #3#4#5#6#7
+ \@@_parse_compare_auxii:NNNNN #2#2#4#5#6
+ \or: \@@_parse_compare_auxii:NNNNN #2#3#2#5#6
+ \or: \@@_parse_compare_auxii:NNNNN #2#3#4#2#6
+ \or: \@@_parse_compare_auxii:NNNNN #2#3#4#5#2
+ \else: #1 \@@_parse_compare_end:NNNNw #3#4#5#6#7
\fi:
}
-\cs_new:Npn \@@_parse_compare_expand:NNNNNw #1#2#3#4#5
+\cs_new:Npn \@@_parse_compare_auxii:NNNNN #1#2#3#4#5
{
- \exp_after:wN \@@_parse_compare:NNNNNNw
+ \exp_after:wN \@@_parse_compare_auxi:NNNNNNN
\exp_after:wN \prg_do_nothing:
\exp_after:wN #1
\exp_after:wN #2
@@ -2504,11 +2506,12 @@
\exp_after:wN #5
\tex_romannumeral:D \exp_after:wN \@@_parse_expand:w
}
-\cs_new:Npn \@@_parse_compare_end:NNNN #1#2#3#4#5 \fi:
+\cs_new:Npn \@@_parse_compare_end:NNNNw #1#2#3#4#5 \fi:
{
\fi:
\exp_after:wN @
- \exp_after:wN \@@_parse_apply_compare:NwNNNNwN
+ \exp_after:wN \@@_parse_apply_compare:NwNNNNNwN
+ \exp_after:wN \c_one_fp
\exp_after:wN #1
\exp_after:wN #2
\exp_after:wN #3
@@ -2516,26 +2519,146 @@
\tex_romannumeral:D
\@@_parse_operand:Nw \c_seven \@@_parse_expand:w #5
}
-\cs_new:Npn \@@_parse_apply_compare:NwNNNNwN #1 #2@ #3#4#5#6 #7@ #8
+\cs_new:Npn \@@_parse_apply_compare:NwNNNNNwN
+ #1 #2@ #3 #4#5#6#7 #8@ #9
{
- \exp_after:wN \@@_parse_continue:NwN
- \exp_after:wN #1
- \tex_romannumeral:D -`0
- \exp_after:wN \exp_after:wN
- \exp_after:wN \exp_after:wN
- \exp_after:wN \exp_after:wN
- \if_case:w \@@_compare_back:ww #7 #2 \exp_stop_f:
- #4
- \or: #5
- \or: #6
- \else: #3
- \fi:
- \tex_romannumeral:D -`0 #8 #1
+ \if_int_odd:w
+ \if_meaning:w \c_zero_fp #3
+ \c_zero
+ \else:
+ \if_case:w \@@_compare_back:ww #8 #2 \exp_stop_f:
+ #5 \or: #6 \or: #7 \else: #4
+ \fi:
+ \fi:
+ \exp_after:wN \@@_parse_apply_compare_aux:NNwN
+ \exp_after:wN \c_one_fp
+ \else:
+ \exp_after:wN \@@_parse_apply_compare_aux:NNwN
+ \exp_after:wN \c_zero_fp
+ \fi:
+ #1 #8 #9
+ }
+\cs_new:Npn \@@_parse_apply_compare_aux:NNwN #1 #2 #3; #4
+ {
+ \if_meaning:w \@@_parse_compare:NNNNNNN #4
+ \exp_after:wN \@@_parse_continue_compare:NNwNN
+ \exp_after:wN #1
+ \exp_after:wN #2
+ \tex_romannumeral:D -`0
+ \@@_exp_after_o:w #3;
+ \tex_romannumeral:D -`0
+ \else:
+ \exp_after:wN \@@_parse_continue:NwN
+ \exp_after:wN #2
+ \tex_romannumeral:D -`0
+ \exp_after:wN #1
+ \tex_romannumeral:D -`0
+ \fi:
+ #4 #2
+ }
+\cs_new:Npn \@@_parse_continue_compare:NNwNN #1#2 #3@ #4#5
+ { #4 #2 #3@ #1 }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Candidate: defining new \pkg{l3fp} functions}
+%
+% \begin{macro}[EXP]{\fp_function:Nw}
+% This relies on the definition of the null character as a prefix
+% operator with very specific semantics.
+% \begin{macrocode}
+\group_begin:
+ \char_set_catcode_other:N \^^@
+ \cs_new:Npn \fp_function:Nw #1 { ^^@ ; { \exp_after:wN #1 } }
+\group_end:
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\fp_new_function:Npn}
+% \begin{macro}[aux]{\@@_function_args:Nwn}
+% This relies on the definition of the null character as a prefix
+% operator with very specific semantics.
+% \begin{macrocode}
+\group_begin:
+ \char_set_catcode_other:N \^^@
+ \cs_new_protected:Npn \fp_new_function:Npn #1#2#
+ {
+ \cs_new:Npx #1
+ {
+ ^^@ ;
+ {
+ \exp_not:N \exp_after:wN
+ \exp_not:N \@@_function_args:Nwn
+ \exp_not:N \exp_after:wN
+ \exp_not:c { @@_user_ \cs_to_str:N #1 }
+ \exp_not:N \__int_value:w
+ \int_eval:n { \tl_count:n {#2} / \c_two }
+ \exp_not:N \exp_after:wN ;
+ }
+ }
+ \cs_new:cpn { @@_user_ \cs_to_str:N #1 } #2
+ }
+\group_end:
+\cs_new:Npn \@@_function_args:Nwn #1#2; #3
+ {
+ \int_compare:nNnTF { \tl_count:n {#3} } = {#2}
+ { #1 #3 }
+ {
+ \__msg_kernel_expandable_error:nnnnn
+ { kernel } { fp-num-args } { #1() } {#2} {#2}
+ \c_nan_fp
+ }
}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
+% \begingroup\catcode`^^@=12\relax % ^^A hack
+% \begin{macro}[EXP, aux]{\@@_parse_prefix_^^@:Nw}
+% \begin{macrocode}
+\group_begin:
+ \char_set_catcode_other:N \^^@
+ \cs_new:cpn { @@_parse_prefix_ ^^@ :Nw } #1 ; #2
+ {
+ \exp_after:wN \@@_function_apply:NnwN
+ \exp_after:wN #1
+ \exp_after:wN { #2 \exp_after:wN }
+ \tex_romannumeral:D
+ \@@_parse_operand:Nw \c_sixteen \@@_parse_expand:w
+ }
+\group_end:
+% \end{macrocode}
+% \end{macro}
+% \endgroup
+%
+% \begin{macro}[aux, EXP]
+% {
+% \@@_function_apply:NnwN,
+% \@@_function_store:wwNwnn,
+% \@@_function_store_end:wnnn
+% }
+% \begin{macrocode}
+\cs_new:Npn \@@_function_apply:NnwN #1#2#3@#4
+ {
+ \exp_after:wN \@@_exp_after_array_f:w
+ \tex_romannumeral:D -`0
+ \@@_function_store:wwNwnn #3
+ \s_@@_mark \@@_function_store:wwNwnn ;
+ \s_@@_mark \@@_function_store_end:wnnn
+ \s_@@_stop { } { } {#2}
+ \s_@@_stop
+ #4 #1
+ }
+\cs_new:Npn \@@_function_store:wwNwnn
+ #1; #2 \s_@@_mark #3#4 \s_@@_stop #5#6
+ { #3 #2 \s_@@_mark #3#4 \s_@@_stop { #5 #6 } { { #1; } } }
+\cs_new:Npn \@@_function_store_end:wnnn
+ #1 \s_@@_stop #2#3#4
+ { \@@_parse:n { #4 {#2} } }
+% \end{macrocode}
+% \end{macro}
+%
% ^^A end[todo]
%
% \subsection{Messages}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
index 72a176191ad..556b1960fdd 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
@@ -314,6 +314,41 @@
%
% ^^A todo: This macro is intermingled with l3fp-parse.
% ^^A todo: Add explanations.
+% \begin{macro}[aux,EXP]{\@@_round_o:Nw}
+% This function expects one or two arguments.
+% \begin{macrocode}
+\cs_new:Npn \@@_round_o:Nw #1#2 @
+ {
+ \if_case:w
+ \__int_eval:w \@@_array_count:n {#2} - \c_one \__int_eval_end:
+ \@@_round:Nwn #1 #2 {0} \tex_romannumeral:D
+ \or: \@@_round:Nww #1 #2 \tex_romannumeral:D
+ \else:
+ \@@_error:nffn { num-args }
+ { \@@_round_name_from_cs:N #1 () } { 1 } { 2 }
+ \exp_after:wN \c_nan_fp \tex_romannumeral:D
+ \fi:
+ -`0
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[aux, EXP]{\@@_round_name_from_cs:N}
+% \begin{macrocode}
+\cs_new:Npn \@@_round_name_from_cs:N #1
+ {
+ \cs_if_eq:NNTF #1 \@@_round_to_zero:NNN { trunc }
+ {
+ \cs_if_eq:NNTF #1 \@@_round_to_ninf:NNN { floor }
+ {
+ \cs_if_eq:NNTF #1 \@@_round_to_pinf:NNN { ceil }
+ { round }
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}[int, EXP]{\@@_round:Nww, \@@_round:Nwn}
% \begin{macro}[aux, EXP]
% {
@@ -330,8 +365,9 @@
{
\@@_small_int:wTF #3; { \@@_round:Nwn #1#2; }
{
- \@@_invalid_operation_tl_o:nf
- { round } { \@@_array_to_clist:n { #2; #3; } }
+ \@@_invalid_operation_tl_o:ff
+ { \@@_round_name_from_cs:N #1 }
+ { \@@_array_to_clist:n { #2; #3; } }
}
}
\cs_new:Npn \@@_round:Nwn #1 \s_@@ \@@_chk:w #2#3#4; #5
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
index 2a989ffcdf8..3394561ccdf 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
@@ -36,7 +36,7 @@
%
%<*driver>
\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3fp-traps.dtx 4598 2013-11-02 14:26:32Z bruno $
+\GetIdInfo$Id: l3fp-traps.dtx 4622 2013-12-14 13:05:45Z bruno $
{L3 Floating-point exception trapping}
\documentclass[full]{l3doc}
\begin{document}
@@ -152,7 +152,7 @@
% \begin{itemize}
% \item \cs{@@_invalid_operation:nnw},
% \item \cs{@@_invalid_operation_o:Nww},
-% \item \cs{@@_invalid_operation_tl_o:nf},
+% \item \cs{@@_invalid_operation_tl_o:ff},
% \item \cs{@@_division_by_zero_o:Nnw},
% \item \cs{@@_division_by_zero_o:NNww},
% \item \cs{@@_overflow:w},
@@ -224,10 +224,10 @@
\exp_after:wN \c_nan_fp
}
\exp_args:Nno \use:n
- { \cs_set:Npn \@@_invalid_operation_tl_o:nf ##1##2 }
+ { \cs_set:Npn \@@_invalid_operation_tl_o:ff ##1##2 }
{
#1
- \@@_error:nnfn { invalid } {##1} {##2} { }
+ \@@_error:nffn { invalid } {##1} {##2} { }
\fp_flag_on:n { invalid_operation }
\exp_after:wN \c_nan_fp
}
@@ -345,7 +345,7 @@
% \begin{macro}[int, EXP]
% {
% \@@_invalid_operation:nnw, \@@_invalid_operation_o:Nww,
-% \@@_invalid_operation_tl_o:nf,
+% \@@_invalid_operation_tl_o:ff,
% \@@_division_by_zero_o:Nnw, \@@_division_by_zero_o:NNww,
% \@@_overflow:w , \@@_underflow:w
% }
@@ -356,7 +356,7 @@
% \begin{macrocode}
\cs_new:Npn \@@_invalid_operation:nnw #1#2#3; { }
\cs_new:Npn \@@_invalid_operation_o:Nww #1#2; #3; { }
-\cs_new:Npn \@@_invalid_operation_tl_o:nf #1 #2 { }
+\cs_new:Npn \@@_invalid_operation_tl_o:ff #1 #2 { }
\cs_new:Npn \@@_division_by_zero_o:Nnw #1#2#3; { }
\cs_new:Npn \@@_division_by_zero_o:NNww #1#2#3; #4; { }
\cs_new:Npn \@@_overflow:w { }
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
index 0fea2b00541..11a058130d1 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
@@ -36,7 +36,7 @@
%
%<*driver>
\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3fp-trig.dtx 4607 2013-11-19 08:35:08Z joseph $
+\GetIdInfo$Id: l3fp-trig.dtx 4617 2013-12-14 12:37:59Z bruno $
{L3 Floating-point trigonometric functions}
\documentclass[full]{l3doc}
\begin{document}
@@ -642,7 +642,7 @@
\cs_end:
}
% \end{macrocode}
-% \end{macro}
+% \end{variable}
%
% \begin{macro}[aux, rEXP]
% {
@@ -978,8 +978,6 @@
%
% \subsection{Inverse trigonometric functions}
%
-% \providecommand*{\atan}{\operatorname{atan}}
-%
% All inverse trigonometric functions (arcsine, arccosine, arctangent,
% arccotangent, arccosecant, and arcsecant) are based on a function
% often denoted \texttt{atan2}. This function is accessed directly by
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
index dc000923765..fea05abbb12 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
@@ -36,7 +36,7 @@
%
%<*driver|package>
\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3fp.dtx 4601 2013-11-18 23:13:28Z bruno $
+\GetIdInfo$Id: l3fp.dtx 4633 2013-12-31 17:28:46Z joseph $
{L3 Floating points}
%</driver|package>
%<*driver>
@@ -82,7 +82,8 @@
% precedence.
% \begin{itemize}
% \item Basic arithmetic: addition $x+y$, subtraction $x-y$,
-% multiplication $x*y$, division $x/y$, and parentheses.
+% multiplication $x*y$, division $x/y$, square root~$\sqrt{x}$,
+% and parentheses.
% \item Comparison operators: $x\mathop{\mathtt{<}}y$,
% $x\mathop{\mathtt{<=}}y$, $x\mathop{\mathtt{>?}}y$,
% $x\mathop{\mathtt{!=}}y$ \emph{etc.}
@@ -112,13 +113,14 @@
% $\operatorname{asech} x$, $\operatorname{acsch} x$.
% \item Extrema: $\max(x,y,\ldots)$, $\min(x,y,\ldots)$,
% $\operatorname{abs}(x)$.
-% \item Rounding functions: $\operatorname{round}(x,n)$ round to
-% closest, $\operatorname{round0}(x,n)$ round towards zero,
-% $\operatorname{round\pm}(x,n)$ round towards $\pm\infty$. And
+% \item Rounding functions: $\operatorname{round}(x,n)$ rounds to
+% closest, $\operatorname{trunc}(x,n)$ rounds towards zero,
+% $\operatorname{floor}(x,n)$ rounds towards~$-\infty$,
+% $\operatorname{ceil}(x,n)$ rounds towards~$+\infty$. And
% \emph{(not yet)} modulo, and \enquote{quantize}.
% \item Constants: \texttt{pi}, \texttt{deg} (one degree in radians).
% \item Dimensions, automatically expressed in points, \emph{e.g.},
-% \texttt{pc} is $12$.
+% \texttt{pc} is~$12$.
% \item Automatic conversion (no need for \cs{\meta{type}_use:N}) of
% integer, dimension, and skip variables to floating points,
% expressing dimensions in points and ignoring the stretch and
@@ -159,7 +161,7 @@
% \end{syntax}
% Creates a new \meta{fp~var} or raises an error if the name is
% already taken. The declaration is global. The \meta{fp~var} will
-% initially be $+0$.
+% initially be~$+0$.
% \end{function}
%
% \begin{function}[updated = 2012-05-08, tested = m3fp001]
@@ -187,7 +189,7 @@
% \end{syntax}
% Ensures that the \meta{fp~var} exists globally
% by applying \cs{fp_new:N} if necessary, then applies
-% \cs{fp_(g)zero:N} to leave the \meta{fp~var} set to zero.
+% \cs{fp_(g)zero:N} to leave the \meta{fp~var} set to~$+0$.
% \end{function}
%
% \section{Setting floating point variables}
@@ -239,7 +241,7 @@
% \cs{fp_eval:n} \Arg{floating point expression}
% \end{syntax}
% Evaluates the \meta{floating point expression} and expresses the
-% result as a decimal number with~$16$ significant figures and no
+% result as a decimal number with no
% exponent. Leading or trailing zeros may be inserted to compensate
% for the exponent. Non-significant trailing zeros are trimmed, and
% integers are expressed without a decimal separator. The values
@@ -255,11 +257,11 @@
% \cs{fp_to_decimal:n} \Arg{floating point expression}
% \end{syntax}
% Evaluates the \meta{floating point expression} and expresses the
-% result as a decimal number with $16$ significant figures and no
+% result as a decimal number with no
% exponent. Leading or trailing zeros may be inserted to compensate
% for the exponent. Non-significant trailing zeros are trimmed, and
% integers are expressed without a decimal separator. The values
-% $\pm\infty$ and \nan{} trigger an \enquote{invalid operation}
+% $\pm\infty$ and~\nan{} trigger an \enquote{invalid operation}
% exception.
% \end{function}
%
@@ -270,12 +272,12 @@
% \cs{fp_to_dim:n} \Arg{floating point expression}
% \end{syntax}
% Evaluates the \meta{floating point expression} and expresses the
-% result as a dimension (in \texttt{pt}) suitable for use in dimension
+% result as a dimension (in~\texttt{pt}) suitable for use in dimension
% expressions. The output is identical to \cs{fp_to_decimal:n}, with
-% an additional trailing \texttt{pt}. In particular, the result may
+% an additional trailing~\texttt{pt}. In particular, the result may
% be outside the range $[- 2^{14} + 2^{-17}, 2^{14} - 2^{-17}]$ of
% valid \TeX{} dimensions, leading to overflow errors if used as a
-% dimension. The values $\pm\infty$ and \nan{} trigger an
+% dimension. The values $\pm\infty$ and~\nan{} trigger an
% \enquote{invalid operation} exception.
% \end{function}
%
@@ -286,10 +288,11 @@
% \cs{fp_to_int:n} \Arg{floating point expression}
% \end{syntax}
% Evaluates the \meta{floating point expression}, and rounds the
-% result to the closest integer, with ties rounded to an even integer.
+% result to the closest integer, rounding exact ties to an even
+% integer.
% The result may be outside the range $[- 2^{31} + 1, 2^{31} - 1]$ of
-% valid \TeX{} integers, triggering \TeX{} errors if used in an
-% integer expression. The values $\pm\infty$ and \nan{} trigger
+% valid \TeX{}~integers, leading to overflow errors if used in an
+% integer expression. The values $\pm\infty$ and~\nan{} trigger
% an \enquote{invalid operation} exception.
% \end{function}
%
@@ -301,12 +304,12 @@
% \cs{fp_to_scientific:n} \Arg{floating point expression}
% \end{syntax}
% Evaluates the \meta{floating point expression} and expresses the
-% result in scientific notation with $16$ significant figures:
+% result in scientific notation:
% \begin{quote}
% \meta{optional \texttt{-}}\meta{digit}\texttt{.}\meta{15 digits}\texttt{e}\meta{optional sign}\meta{exponent}
% \end{quote}
% The leading \meta{digit} is non-zero except in the case of $\pm 0$.
-% The values $\pm\infty$ and \nan{} trigger an \enquote{invalid
+% The values $\pm\infty$ and~\nan{} trigger an \enquote{invalid
% operation} exception.
% \end{function}
%
@@ -319,13 +322,14 @@
% Evaluates the \meta{floating point expression} and expresses the
% result in (almost) the shortest possible form. Numbers in the
% ranges $(0,10^{-3})$ and $[10^{16},\infty)$ are expressed in
-% scientific notation with trailing zeros trimmed (see
+% scientific notation with trailing zeros trimmed and no decimal
+% separator when there is a single significant digit (see
% \cs{fp_to_scientific:n}). Numbers in the range $[10^{-3},10^{16})$
% are expressed in a decimal notation without exponent, with trailing
% zeros trimmed, and no decimal separator for integer values (see
-% \cs{fp_to_decimal:n}. Negative numbers start with |-|. The
-% special values $\pm 0$, $\pm \inf$ and \nan{} are rendered as
-% |0|, |-0|, \texttt{inf}, \texttt{-inf}, and \texttt{nan}
+% \cs{fp_to_decimal:n}. Negative numbers start with~|-|. The
+% special values $\pm 0$, $\pm\infty$ and~\nan{} are rendered as
+% |0|, |-0|, \texttt{inf}, \texttt{-inf}, and~\texttt{nan}
% respectively.
% \end{function}
%
@@ -335,11 +339,11 @@
% \cs{fp_use:N} \meta{fp~var}
% \end{syntax}
% Inserts the value of the \meta{fp~var} into the input stream as a
-% decimal number with $16$ significant figures and no exponent.
+% decimal number with no exponent.
% Leading or trailing zeros may be inserted to compensate for the
% exponent. Non-significant trailing zeros are trimmed. Integers are
-% expressed without a decimal separator. The values $\pm\infty$ and
-% \nan{} trigger an \enquote{invalid operation} exception. This
+% expressed without a decimal separator. The values $\pm\infty$
+% and~\nan{} trigger an \enquote{invalid operation} exception. This
% function is identical to \cs{fp_to_decimal:N}.
% \end{function}
%
@@ -356,30 +360,20 @@
% \end{function}
%
% \begin{function}[EXP, pTF, updated = 2012-05-08,
-% tested = m3fp-logic001]{\fp_compare:nNn, \fp_compare:n}
+% tested = m3fp-logic001]{\fp_compare:nNn}
% \begin{syntax}
% \cs{fp_compare_p:nNn} \Arg{fpexpr_1} \meta{relation} \Arg{fpexpr_2}
% \cs{fp_compare:nNnTF} \Arg{fpexpr_1} \meta{relation} \Arg{fpexpr_2} \Arg{true code} \Arg{false code}
-% \cs{fp_compare_p:n} \{ \meta{fpexpr_1} \meta{relation} \meta{fpexpr_2} \}
-% \cs{fp_compare:nTF} \{ \meta{fpexpr_1} \meta{relation} \meta{fpexpr_2} \} \Arg{true code} \Arg{false code}
% \end{syntax}
% Compares the \meta{fpexpr_1} and the \meta{fpexpr_2}, and returns
% \texttt{true} if the \meta{relation} is obeyed. Two floating point
-% numbers $x$ and $y$ may obey four mutually exclusive relations:
-% $x<y$, $x=y$, $x>y$, or $x$ and $y$ are not ordered. The latter
-% case occurs exactly when one of the operands is \nan{}, and
-% this relations is denoted by the symbol |?|. The \texttt{nNn}
-% functions support the \meta{relations} |<|, |=|, |>|, and |?|. The
-% \texttt{n} functions support as a \meta{relation} any non-empty string of
-% those four symbols, plus optional leading |!| (which negate the
-% \meta{relation}), with the restriction that the \meta{relation} may
-% not start with |?|. Common choices of \meta{relation} include |>=|
-% (greater or equal), |!=| (not equal), |!?| (comparable). Note that
-% a \nan{} is distinct from any value, even another
-% \nan{}, hence $x=x$ is not true for a \nan{}.
-% Since a \nan{} is not comparable to any floating point, to test if a
-% value is \nan{}, one can use the following, where~$0$ is an
-% arbitrary floating point.
+% numbers $x$ and~$y$ may obey four mutually exclusive relations:
+% $x<y$, $x=y$, $x>y$, or $x$ and~$y$ are not ordered. The latter
+% case occurs exactly when either operand is~\nan{}, and this relation
+% is denoted by the symbol~|?|. Note that a~\nan{} is distinct from
+% any value, even another~\nan{}, hence $x=x$ is not true for
+% a~\nan{}. To test if a value is~\nan{}, compare it to an arbitrary
+% number with the \enquote{not ordered} relation.
% \begin{verbatim}
% \fp_compare:nNnTF { <value> } ? { 0 }
% { } % <value> is nan
@@ -387,6 +381,54 @@
% \end{verbatim}
% \end{function}
%
+% \begin{function}[EXP, pTF, updated = 2012-12-14,
+% tested = m3fp-logic001]{\fp_compare:n}
+% \begin{syntax}
+% \cs{fp_compare_p:n} \\
+% ~~\{ \\
+% ~~~~\meta{fpexpr_1} \meta{relation_1} \\
+% ~~~~\ldots{} \\
+% ~~~~\meta{fpexpr_N} \meta{relation_N} \\
+% ~~~~\meta{fpexpr_{N+1}} \\
+% ~~\} \\
+% \cs{fp_compare:nTF}
+% ~~\{ \\
+% ~~~~\meta{fpexpr_1} \meta{relation_1} \\
+% ~~~~\ldots{} \\
+% ~~~~\meta{fpexpr_N} \meta{relation_N} \\
+% ~~~~\meta{fpexpr_{N+1}} \\
+% ~~\} \\
+% ~~\Arg{true code} \Arg{false code}
+% \end{syntax}
+% Evaluates the \meta{floating point expressions} as described for
+% \cs{fp_eval:n} and compares consecutive result using the
+% corresponding \meta{relation}, namely it compares \meta{intexpr_1}
+% and \meta{intexpr_2} using the \meta{relation_1}, then
+% \meta{intexpr_2} and \meta{intexpr_3} using the \meta{relation_2},
+% until finally comparing \meta{intexpr_N} and \meta{intexpr_{N+1}}
+% using the \meta{relation_N}. The test yields \texttt{true} if all
+% comparisons are \texttt{true}. Each \meta{floating point
+% expression} is evaluated only once. Contrarily to
+% \cs{int_compare:nTF}, all \meta{floating point expressions} are
+% computed, even if one comparison is \texttt{false}. Two floating
+% point numbers $x$ and~$y$ may obey four mutually exclusive
+% relations: $x<y$, $x=y$, $x>y$, or $x$ and~$y$ are not ordered. The
+% latter case occurs exactly when one of the operands is~\nan{}, and
+% this relation is denoted by the symbol~|?|. Each \meta{relation}
+% can be any (non-empty) combination of |<|, |=|, |>|, and~|?|, plus
+% an optional leading~|!| (which negates the \meta{relation}), with
+% the restriction that the \meta{relation} may not start with~|?|, as
+% this symbol has a different meaning (in combination with~|:|) within
+% floatin point expressions. The comparison $x$~\meta{relation}~$y$
+% is then \texttt{true} if the \meta{relation} does not start with~|!|
+% and the actual relation (|<|, |=|, |>|, or~|?|) between $x$ and~$y$
+% appears within the \meta{relation}, or on the contrary if the
+% \meta{relation} starts with~|!| and the relation between $x$ and~$y$
+% does not appear within the \meta{relation}. Common choices of
+% \meta{relation} include |>=|~(greater or equal), |!=|~(not equal),
+% |!?|~or~|<=>| (comparable).
+% \end{function}
+%
% \section{Floating point expression loops}
%
% \begin{function}[rEXP, added = 2012-08-16, tested = m3fp-logic003]
@@ -513,8 +555,8 @@
% \end{variable}
%
% \begin{variable}[updated = 2012-05-08, updated = 2013-11-17]{\c_pi_fp}
-% The value of $\pi$. This can be input directly in a floating point
-% expression as \texttt{pi}.
+% The value of~$\pi$. This can be input directly in a floating point
+% expression as~\texttt{pi}.
% \end{variable}
%
% \begin{variable}[added = 2012-05-08, updated = 2013-11-17]
@@ -787,20 +829,29 @@
% \begin{syntax}
% \cs{fp_eval:n} \{ \meta{operand_1} \texttt{&&} \meta{operand_2} \}
% \end{syntax}
-% If \meta{operand_1} is false (equal to $\pm 0$), use that value,
+% If \meta{operand_1} is false (equal to~$\pm 0$), use that value,
% otherwise the value of \meta{operand_2}. Both \meta{operands} are
% evaluated in all cases.
% \end{function}
% \endgroup
%
-% \begin{function}[tested = m3fp-logic001]{\<, =, >, ?}
+% \begin{function}[tested = m3fp-logic001, updated = 2013-12-14]
+% {\<, =, >, ?}
% \begin{syntax}
-% \cs{fp_eval:n} \{ \meta{operand_1} \meta{comparison} \meta{operand_2} \}
+% \cs{fp_eval:n} \\
+% ~~\{ \\
+% ~~~~\meta{operand_1} \meta{relation_1} \\
+% ~~~~\ldots{} \\
+% ~~~~\meta{operand_N} \meta{relation_N} \\
+% ~~~~\meta{operand_{N+1}} \\
+% ~~\}
% \end{syntax}
-% The \meta{comparison} consists of a non-empty string of |<|, |=|,
-% |>|, and |?|, optionally preceded by |!|. It may not start with
-% |?|. This evaluates to $+1$ if the \meta{comparison} between the
-% \meta{operand_1} and \meta{operand_2} is true, and $+0$ otherwise.
+% Each \meta{relation} consists of a non-empty string of |<|, |=|,
+% |>|, and~|?|, optionally preceded by~|!|, and may not start
+% with~|?|. This evaluates to $+1$ if all comparisons
+% \meta{operand_i} \meta{relation_j} \meta{operand_{i+1}} are true, and
+% $+0$ otherwise. All \meta{operands} are evaluated in all cases.
+% See \cs{fp_compare:nTF} for details.
% \end{function}
%
% \begin{function}[tested = m3fp-basics001]{+, -}
@@ -893,27 +944,38 @@
% \nan{}. Those operations do not raise exceptions.
% \end{function}
%
-% \begin{function}[tested = {m3fp-round001, m3fp-round002}]
-% {round, round0, round+, round-}
+% \begin{function}
+% [tested = {m3fp-round001, m3fp-round002}, added = 2013-12-14]
+% {round, trunc, ceil, floor}
% \begin{syntax}
-% \cs{fp_eval:n} \{ |round| \meta{option} |(| \meta{fpexpr} |)| \}
-% \cs{fp_eval:n} \{ |round| \meta{option} |(| \meta{fpexpr_1} , \meta{fpexpr_2} |)| \}
+% \cs{fp_eval:n} \{ |round| |(| \meta{fpexpr} |)| \}
+% \cs{fp_eval:n} \{ |round| |(| \meta{fpexpr_1} , \meta{fpexpr_2} |)| \}
% \end{syntax}
-% Rounds \meta{fpexpr_1} to \meta{fpexpr_2} places. When
-% \meta{fpexpr_2} is omitted, it is assumed to be $0$, \emph{i.e.},
-% \meta{fpexpr_1} is rounded to an integer. The \meta{option}
-% controls the rounding direction:
+% Evaluates $\meta{fpexpr_1}=x$ and $\meta{fpexpr_2}=n$, then rounds
+% $x$~to $n$~places. If $n$~is an integer, this rounds~$x$ to a
+% multiple of~$10^{-n}$; if $n=+\infty$, this always yields~$x$; if
+% $n=-\infty$, this yields one of $\pm 0$, $\pm\infty$, or~\nan{}; if
+% $n$~is neither $\pm\infty$ nor an integer, then an \enquote{invalid
+% operation} exception is raised. When \meta{fpexpr_2} is omitted,
+% $n=0$, \emph{i.e.}, \meta{fpexpr_1} is rounded to an integer. The
+% rounding direction depends on the function:
% \begin{itemize}
-% \item by default, the operation rounds to the closest allowed number
-% (rounding ties to even);
-% \item with |0|, the operation rounds towards $0$, \emph{i.e.}, truncates;
-% \item with |+|, the operation rounds towards $+\infty$;
-% \item with |-|, the operation rounds towards $-\infty$.
+% \item |round| yields the multiple of~$10^{-n}$ closest to~$x$, and
+% if $x$~is half-way between two such multiples, the even multiple
+% is chosen (\enquote{ties to even});
+% \item |floor|, or the deprecated |round-|, yields the largest
+% multiple of~$10^{-n}$ smaller or equal to~$x$ (\enquote{round
+% towards negative infinity});
+% \item |ceil|, or the deprecated |round+|, yields the smallest
+% multiple of~$10^{-n}$ greater or equal to~$x$ (\enquote{round
+% towards positive infinity});
+% \item |trunc|, or the deprecated |round0|, yields a multiple
+% of~$10^{-n}$ with the same sign as~$x$ and with the largest
+% absolute value less that that of~$x$ (\enquote{round towards
+% zero}).
% \end{itemize}
-% If \meta{fpexpr_2} does not yield an integer less than $10^{8}$ in
-% absolute value, then an \enquote{invalid operation} exception is
-% raised. \enquote{Overflow} may occur if the result is infinite
-% (this cannot happen unless $\meta{fpexpr_2}\string<-9984$).
+% \enquote{Overflow} occurs if $x$~is finite and the result is
+% infinite (this can only happen if $\meta{fpexpr_2}\string<-9984$).
% \end{function}
%
% \begin{function}[updated = 2013-11-17, tested = m3fp-trig001]
@@ -1058,6 +1120,17 @@
% exception can occur.
% \end{function}
%
+% \begin{function}[added = 2013-12-14, tested = m3fp-basics005]{sqrt}
+% \begin{syntax}
+% \cs{fp_eval:n} \{ |sqrt(| \meta{fpexpr} |)| \}
+% \end{syntax}
+% Computes the square root of the \meta{fpexpr}. The \enquote{invalid
+% operation} is raised when the \meta{fpexpr} is negative; no other
+% exception can occur. Special values yield $\sqrt{-0} = -0$,
+% $\sqrt{+0} = +0$, $\sqrt{+\infty} = +\infty$ and
+% $\sqrt{\text{\nan{}}}=\text{\nan{}}$.
+% \end{function}
+%
% \begin{variable}[tested = m3fp-parse001]{inf, nan}
% The special values $+\infty$, $-\infty$, and \nan{} are represented
% as \texttt{inf}, \texttt{-inf} and \texttt{nan} (see \cs{c_inf_fp},
@@ -1143,10 +1216,8 @@
%
% The following need to be done. I'll try to time-order the items.
% \begin{itemize}
-% \item Rename |round0| to |trunc|, |round+| to |ceil|, and |round-|
-% to |floor|.
% \item Decide what exponent range to consider.
-% \item Improve the treatment of signalling versus quiet \texttt{nan}.
+% \item Support signalling \texttt{nan}.
% \item Modulo and remainder, and rounding functions |quantize|,
% |quantize0|, |quantize+|, |quantize-|, |quantize=|, |round=|.
% Should the modulo also be provided as (catcode 12) |%|?
@@ -1178,15 +1249,13 @@
%
% Bugs. (Exclamation points mark important bugs.)
% \begin{itemize}
-% \item[!] $-3<-2<-1$ is wrongly parsed as $(-3<-2)<-1$.
% \item Check that functions are monotonic when they should.
% \item Add exceptions to |?:|, |!<=>?|, |&&|, \verb"||", and |!|.
-% \item |round| should accept any integer as its second argument.
% \item Logarithms of numbers very close to $1$ are inaccurate.
% \item When rounding towards $-\infty$, |\dim_to_fp:n {0pt}| should
% return $-0$, not $+0$.
-% \item The result of $(\pm0)+(\pm0)$ should depend on the rounding
-% mode.
+% \item The result of $(\pm0)+(\pm0)$, of $x+(-x)$, and of $(-x)+x$
+% should depend on the rounding mode.
% \item \texttt{0e9999999999} gives a \TeX{} \enquote{number too
% large} error.
% \item Subnormals are not implemented.
@@ -1226,12 +1295,6 @@
% \item Add bibliography. Some of Kahan's articles, some previous
% \TeX{} fp packages, the international standards,\ldots{}
% \item Also take into account the \enquote{inexact} exception?
-% \item (Likely not.)
-% Change the internal representation of fp, by replacing braced
-% groups of $4$ digits by delimited arguments. Also consider
-% changing the fp structure a bit to allow using
-% \cs{pdftex_strcmp:D} to compare (not in \LuaTeX{}: it is too
-% slow)?
% \item Support multi-character prefix operators (\emph{e.g.}, |@/| or
% whatever)? Perhaps for including comments inside the computation
% itself??
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
index e5c80030f7e..a825c0cad3b 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
@@ -35,7 +35,7 @@
%
%<*driver|package>
\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3keys.dtx 4581 2013-07-28 08:38:50Z joseph $
+\GetIdInfo$Id: l3keys.dtx 4614 2013-12-08 17:07:31Z joseph $
{L3 Experimental key-value interfaces}
%</driver|package>
%<*driver>
@@ -209,7 +209,7 @@
% \begin{function}[added = 2011-08-21, updated = 2013-07-10]
% {.choices:nn, .choices:Vn, .choices:on, .choices:xn}
% \begin{syntax}
-% \meta{key} .choices:nn \meta{choices} \meta{code}
+% \meta{key} .choices:nn = \Arg{choices} \Arg{code}
% \end{syntax}
% Sets \meta{key} to act as a choice key, and defines a series \meta{choices}
% which are implemented using the \meta{code}. Inside \meta{code},
@@ -232,7 +232,7 @@
%
% \begin{function}[updated = 2013-07-10]{.code:n}
% \begin{syntax}
-% \meta{key} .code:n = \meta{code}
+% \meta{key} .code:n = \Arg{code}
% \end{syntax}
% Stores the \meta{code} for execution when \meta{key} is used. The
% The \meta{code} can include one parameter (|#1|), which will be the
@@ -244,7 +244,7 @@
% \begin{function}[updated = 2013-07-09]
% {.default:n, .default:V, .default:o, .default:x}
% \begin{syntax}
-% \meta{key} .default:n = \meta{default}
+% \meta{key} .default:n = \Arg{default}
% \end{syntax}
% Creates a \meta{default} value for \meta{key}, which is used if no
% value is given. This will be used if only the key name is given,
@@ -285,7 +285,7 @@
% \begin{function}[added = 2013-07-14]
% {.groups:n}
% \begin{syntax}
-% \meta{key} .groups:n = \meta{groups}
+% \meta{key} .groups:n = \Arg{groups}
% \end{syntax}
% Defines \meta{key} as belonging to the \meta{groups} declared. Groups
% provide a \enquote{secondary axis} for selectively setting keys, and are
@@ -295,7 +295,7 @@
% \begin{function}[updated = 2013-07-09]
% {.initial:n, .initial:V, .initial:o, .initial:x}
% \begin{syntax}
-% \meta{key} .initial:n = \meta{value}
+% \meta{key} .initial:n = \Arg{value}
% \end{syntax}
% Initialises the \meta{key} with the \meta{value}, equivalent to
% \begin{quote}
@@ -345,7 +345,7 @@
% \begin{function}[added = 2011-08-21, updated = 2013-07-10]
% {.multichoices:nn, .multichoices:Vn, .multichoices:on, .multichoices:xn}
% \begin{syntax}
-% \meta{key} .multichoices:nn \meta{choices} \meta{code}
+% \meta{key} .multichoices:nn \Arg{choices} \Arg{code}
% \end{syntax}
% Sets \meta{key} to act as a multiple choice key, and defines a series
% \meta{choices}
@@ -717,8 +717,8 @@
%
% \begin{function}[EXP,pTF]{\keys_if_exist:nn}
% \begin{syntax}
-% \cs{keys_if_exist_p:nn} \meta{module} \meta{key} \\
-% \cs{keys_if_exist:nnTF} \meta{module} \meta{key} \Arg{true code} \Arg{false code}
+% \cs{keys_if_exist_p:nn} \Arg{module} \Arg{key} \\
+% \cs{keys_if_exist:nnTF} \Arg{module} \Arg{key} \Arg{true code} \Arg{false code}
% \end{syntax}
% Tests if the \meta{key} exists for \meta{module}, \emph{i.e.}~if any code
% has been defined for \meta{key}.
@@ -726,8 +726,8 @@
%
% \begin{function}[added = 2011-08-21,EXP,pTF]{\keys_if_choice_exist:nnn}
% \begin{syntax}
-% \cs{keys_if_choice_exist_p:nnn} \meta{module} \meta{key} \meta{choice} \\
-% \cs{keys_if_choice_exist:nnnTF} \meta{module} \meta{key} \meta{choice} \Arg{true code} \Arg{false code}
+% \cs{keys_if_choice_exist_p:nnn} \Arg{module} \Arg{key} \Arg{choice} \\
+% \cs{keys_if_choice_exist:nnnTF} \Arg{module} \Arg{key} \Arg{choice} \Arg{true code} \Arg{false code}
% \end{syntax}
% Tests if the \meta{choice} is defined for the \meta{key} within the
% \meta{module}, \emph{i.e.}~if any code has been defined for
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
index 1a405873659..edabde36f6a 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: l3names.dtx Copyright (C) 1990-2012 The LaTeX3 project
+%% File: l3names.dtx Copyright (C) 1990-2013 The LaTeX3 project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -35,7 +35,7 @@
%
%<*package>
\RequirePackage{l3bootstrap}[2012/07/15]
-\GetIdInfo$Id: l3names.dtx 4346 2012-12-07 13:46:13Z joseph $
+\GetIdInfo$Id: l3names.dtx 4630 2013-12-29 21:04:05Z joseph $
{L3 Namespace for primitives}
%</package>
%<*driver>
@@ -128,16 +128,16 @@
% \end{macrocode}
%
% Everything is inside a (rather long) group, which keeps
-% \cs{__expl_primitive:NN} trapped.
+% \cs{__kernel_primitive:NN} trapped.
% \begin{macrocode}
\begingroup
% \end{macrocode}
%
-% \begin{macro}[aux]{\__expl_primitive:NN}
+% \begin{macro}[aux]{\__kernel_primitive:NN}
% A temporary function to actually do the renaming. This also allows the
% original names to be removed in format mode.
% \begin{macrocode}
- \long \def \__expl_primitive:NN #1#2
+ \long \def \__kernel_primitive:NN #1#2
{
\tex_global:D \tex_let:D #2 #1
%<*initex>
@@ -153,406 +153,406 @@
% These are given modified new names, so that they may be entered
% without catcode tricks.
% \begin{macrocode}
- \__expl_primitive:NN \ \tex_space:D
- \__expl_primitive:NN \/ \tex_italiccorrection:D
- \__expl_primitive:NN \- \tex_hyphen:D
+ \__kernel_primitive:NN \ \tex_space:D
+ \__kernel_primitive:NN \/ \tex_italiccorrection:D
+ \__kernel_primitive:NN \- \tex_hyphen:D
% \end{macrocode}
%
% Now all the other primitives.
% \begin{macrocode}
- \__expl_primitive:NN \let \tex_let:D
- \__expl_primitive:NN \def \tex_def:D
- \__expl_primitive:NN \edef \tex_edef:D
- \__expl_primitive:NN \gdef \tex_gdef:D
- \__expl_primitive:NN \xdef \tex_xdef:D
- \__expl_primitive:NN \chardef \tex_chardef:D
- \__expl_primitive:NN \countdef \tex_countdef:D
- \__expl_primitive:NN \dimendef \tex_dimendef:D
- \__expl_primitive:NN \skipdef \tex_skipdef:D
- \__expl_primitive:NN \muskipdef \tex_muskipdef:D
- \__expl_primitive:NN \mathchardef \tex_mathchardef:D
- \__expl_primitive:NN \toksdef \tex_toksdef:D
- \__expl_primitive:NN \futurelet \tex_futurelet:D
- \__expl_primitive:NN \advance \tex_advance:D
- \__expl_primitive:NN \divide \tex_divide:D
- \__expl_primitive:NN \multiply \tex_multiply:D
- \__expl_primitive:NN \font \tex_font:D
- \__expl_primitive:NN \fam \tex_fam:D
- \__expl_primitive:NN \global \tex_global:D
- \__expl_primitive:NN \long \tex_long:D
- \__expl_primitive:NN \outer \tex_outer:D
- \__expl_primitive:NN \setlanguage \tex_setlanguage:D
- \__expl_primitive:NN \globaldefs \tex_globaldefs:D
- \__expl_primitive:NN \afterassignment \tex_afterassignment:D
- \__expl_primitive:NN \aftergroup \tex_aftergroup:D
- \__expl_primitive:NN \expandafter \tex_expandafter:D
- \__expl_primitive:NN \noexpand \tex_noexpand:D
- \__expl_primitive:NN \begingroup \tex_begingroup:D
- \__expl_primitive:NN \endgroup \tex_endgroup:D
- \__expl_primitive:NN \halign \tex_halign:D
- \__expl_primitive:NN \valign \tex_valign:D
- \__expl_primitive:NN \cr \tex_cr:D
- \__expl_primitive:NN \crcr \tex_crcr:D
- \__expl_primitive:NN \noalign \tex_noalign:D
- \__expl_primitive:NN \omit \tex_omit:D
- \__expl_primitive:NN \span \tex_span:D
- \__expl_primitive:NN \tabskip \tex_tabskip:D
- \__expl_primitive:NN \everycr \tex_everycr:D
- \__expl_primitive:NN \if \tex_if:D
- \__expl_primitive:NN \ifcase \tex_ifcase:D
- \__expl_primitive:NN \ifcat \tex_ifcat:D
- \__expl_primitive:NN \ifnum \tex_ifnum:D
- \__expl_primitive:NN \ifodd \tex_ifodd:D
- \__expl_primitive:NN \ifdim \tex_ifdim:D
- \__expl_primitive:NN \ifeof \tex_ifeof:D
- \__expl_primitive:NN \ifhbox \tex_ifhbox:D
- \__expl_primitive:NN \ifvbox \tex_ifvbox:D
- \__expl_primitive:NN \ifvoid \tex_ifvoid:D
- \__expl_primitive:NN \ifx \tex_ifx:D
- \__expl_primitive:NN \iffalse \tex_iffalse:D
- \__expl_primitive:NN \iftrue \tex_iftrue:D
- \__expl_primitive:NN \ifhmode \tex_ifhmode:D
- \__expl_primitive:NN \ifmmode \tex_ifmmode:D
- \__expl_primitive:NN \ifvmode \tex_ifvmode:D
- \__expl_primitive:NN \ifinner \tex_ifinner:D
- \__expl_primitive:NN \else \tex_else:D
- \__expl_primitive:NN \fi \tex_fi:D
- \__expl_primitive:NN \or \tex_or:D
- \__expl_primitive:NN \immediate \tex_immediate:D
- \__expl_primitive:NN \closeout \tex_closeout:D
- \__expl_primitive:NN \openin \tex_openin:D
- \__expl_primitive:NN \openout \tex_openout:D
- \__expl_primitive:NN \read \tex_read:D
- \__expl_primitive:NN \write \tex_write:D
- \__expl_primitive:NN \closein \tex_closein:D
- \__expl_primitive:NN \newlinechar \tex_newlinechar:D
- \__expl_primitive:NN \input \tex_input:D
- \__expl_primitive:NN \endinput \tex_endinput:D
- \__expl_primitive:NN \inputlineno \tex_inputlineno:D
- \__expl_primitive:NN \errmessage \tex_errmessage:D
- \__expl_primitive:NN \message \tex_message:D
- \__expl_primitive:NN \show \tex_show:D
- \__expl_primitive:NN \showthe \tex_showthe:D
- \__expl_primitive:NN \showbox \tex_showbox:D
- \__expl_primitive:NN \showlists \tex_showlists:D
- \__expl_primitive:NN \errhelp \tex_errhelp:D
- \__expl_primitive:NN \errorcontextlines \tex_errorcontextlines:D
- \__expl_primitive:NN \tracingcommands \tex_tracingcommands:D
- \__expl_primitive:NN \tracinglostchars \tex_tracinglostchars:D
- \__expl_primitive:NN \tracingmacros \tex_tracingmacros:D
- \__expl_primitive:NN \tracingonline \tex_tracingonline:D
- \__expl_primitive:NN \tracingoutput \tex_tracingoutput:D
- \__expl_primitive:NN \tracingpages \tex_tracingpages:D
- \__expl_primitive:NN \tracingparagraphs \tex_tracingparagraphs:D
- \__expl_primitive:NN \tracingrestores \tex_tracingrestores:D
- \__expl_primitive:NN \tracingstats \tex_tracingstats:D
- \__expl_primitive:NN \pausing \tex_pausing:D
- \__expl_primitive:NN \showboxbreadth \tex_showboxbreadth:D
- \__expl_primitive:NN \showboxdepth \tex_showboxdepth:D
- \__expl_primitive:NN \batchmode \tex_batchmode:D
- \__expl_primitive:NN \errorstopmode \tex_errorstopmode:D
- \__expl_primitive:NN \nonstopmode \tex_nonstopmode:D
- \__expl_primitive:NN \scrollmode \tex_scrollmode:D
- \__expl_primitive:NN \end \tex_end:D
- \__expl_primitive:NN \csname \tex_csname:D
- \__expl_primitive:NN \endcsname \tex_endcsname:D
- \__expl_primitive:NN \ignorespaces \tex_ignorespaces:D
- \__expl_primitive:NN \relax \tex_relax:D
- \__expl_primitive:NN \the \tex_the:D
- \__expl_primitive:NN \mag \tex_mag:D
- \__expl_primitive:NN \language \tex_language:D
- \__expl_primitive:NN \mark \tex_mark:D
- \__expl_primitive:NN \topmark \tex_topmark:D
- \__expl_primitive:NN \firstmark \tex_firstmark:D
- \__expl_primitive:NN \botmark \tex_botmark:D
- \__expl_primitive:NN \splitfirstmark \tex_splitfirstmark:D
- \__expl_primitive:NN \splitbotmark \tex_splitbotmark:D
- \__expl_primitive:NN \fontname \tex_fontname:D
- \__expl_primitive:NN \escapechar \tex_escapechar:D
- \__expl_primitive:NN \endlinechar \tex_endlinechar:D
- \__expl_primitive:NN \mathchoice \tex_mathchoice:D
- \__expl_primitive:NN \delimiter \tex_delimiter:D
- \__expl_primitive:NN \mathaccent \tex_mathaccent:D
- \__expl_primitive:NN \mathchar \tex_mathchar:D
- \__expl_primitive:NN \mskip \tex_mskip:D
- \__expl_primitive:NN \radical \tex_radical:D
- \__expl_primitive:NN \vcenter \tex_vcenter:D
- \__expl_primitive:NN \mkern \tex_mkern:D
- \__expl_primitive:NN \above \tex_above:D
- \__expl_primitive:NN \abovewithdelims \tex_abovewithdelims:D
- \__expl_primitive:NN \atop \tex_atop:D
- \__expl_primitive:NN \atopwithdelims \tex_atopwithdelims:D
- \__expl_primitive:NN \over \tex_over:D
- \__expl_primitive:NN \overwithdelims \tex_overwithdelims:D
- \__expl_primitive:NN \displaystyle \tex_displaystyle:D
- \__expl_primitive:NN \textstyle \tex_textstyle:D
- \__expl_primitive:NN \scriptstyle \tex_scriptstyle:D
- \__expl_primitive:NN \scriptscriptstyle \tex_scriptscriptstyle:D
- \__expl_primitive:NN \nonscript \tex_nonscript:D
- \__expl_primitive:NN \eqno \tex_eqno:D
- \__expl_primitive:NN \leqno \tex_leqno:D
- \__expl_primitive:NN \abovedisplayshortskip \tex_abovedisplayshortskip:D
- \__expl_primitive:NN \abovedisplayskip \tex_abovedisplayskip:D
- \__expl_primitive:NN \belowdisplayshortskip \tex_belowdisplayshortskip:D
- \__expl_primitive:NN \belowdisplayskip \tex_belowdisplayskip:D
- \__expl_primitive:NN \displaywidowpenalty \tex_displaywidowpenalty:D
- \__expl_primitive:NN \displayindent \tex_displayindent:D
- \__expl_primitive:NN \displaywidth \tex_displaywidth:D
- \__expl_primitive:NN \everydisplay \tex_everydisplay:D
- \__expl_primitive:NN \predisplaysize \tex_predisplaysize:D
- \__expl_primitive:NN \predisplaypenalty \tex_predisplaypenalty:D
- \__expl_primitive:NN \postdisplaypenalty \tex_postdisplaypenalty:D
- \__expl_primitive:NN \mathbin \tex_mathbin:D
- \__expl_primitive:NN \mathclose \tex_mathclose:D
- \__expl_primitive:NN \mathinner \tex_mathinner:D
- \__expl_primitive:NN \mathop \tex_mathop:D
- \__expl_primitive:NN \displaylimits \tex_displaylimits:D
- \__expl_primitive:NN \limits \tex_limits:D
- \__expl_primitive:NN \nolimits \tex_nolimits:D
- \__expl_primitive:NN \mathopen \tex_mathopen:D
- \__expl_primitive:NN \mathord \tex_mathord:D
- \__expl_primitive:NN \mathpunct \tex_mathpunct:D
- \__expl_primitive:NN \mathrel \tex_mathrel:D
- \__expl_primitive:NN \overline \tex_overline:D
- \__expl_primitive:NN \underline \tex_underline:D
- \__expl_primitive:NN \left \tex_left:D
- \__expl_primitive:NN \right \tex_right:D
- \__expl_primitive:NN \binoppenalty \tex_binoppenalty:D
- \__expl_primitive:NN \relpenalty \tex_relpenalty:D
- \__expl_primitive:NN \delimitershortfall \tex_delimitershortfall:D
- \__expl_primitive:NN \delimiterfactor \tex_delimiterfactor:D
- \__expl_primitive:NN \nulldelimiterspace \tex_nulldelimiterspace:D
- \__expl_primitive:NN \everymath \tex_everymath:D
- \__expl_primitive:NN \mathsurround \tex_mathsurround:D
- \__expl_primitive:NN \medmuskip \tex_medmuskip:D
- \__expl_primitive:NN \thinmuskip \tex_thinmuskip:D
- \__expl_primitive:NN \thickmuskip \tex_thickmuskip:D
- \__expl_primitive:NN \scriptspace \tex_scriptspace:D
- \__expl_primitive:NN \noboundary \tex_noboundary:D
- \__expl_primitive:NN \accent \tex_accent:D
- \__expl_primitive:NN \char \tex_char:D
- \__expl_primitive:NN \discretionary \tex_discretionary:D
- \__expl_primitive:NN \hfil \tex_hfil:D
- \__expl_primitive:NN \hfilneg \tex_hfilneg:D
- \__expl_primitive:NN \hfill \tex_hfill:D
- \__expl_primitive:NN \hskip \tex_hskip:D
- \__expl_primitive:NN \hss \tex_hss:D
- \__expl_primitive:NN \vfil \tex_vfil:D
- \__expl_primitive:NN \vfilneg \tex_vfilneg:D
- \__expl_primitive:NN \vfill \tex_vfill:D
- \__expl_primitive:NN \vskip \tex_vskip:D
- \__expl_primitive:NN \vss \tex_vss:D
- \__expl_primitive:NN \unskip \tex_unskip:D
- \__expl_primitive:NN \kern \tex_kern:D
- \__expl_primitive:NN \unkern \tex_unkern:D
- \__expl_primitive:NN \hrule \tex_hrule:D
- \__expl_primitive:NN \vrule \tex_vrule:D
- \__expl_primitive:NN \leaders \tex_leaders:D
- \__expl_primitive:NN \cleaders \tex_cleaders:D
- \__expl_primitive:NN \xleaders \tex_xleaders:D
- \__expl_primitive:NN \lastkern \tex_lastkern:D
- \__expl_primitive:NN \lastskip \tex_lastskip:D
- \__expl_primitive:NN \indent \tex_indent:D
- \__expl_primitive:NN \par \tex_par:D
- \__expl_primitive:NN \noindent \tex_noindent:D
- \__expl_primitive:NN \vadjust \tex_vadjust:D
- \__expl_primitive:NN \baselineskip \tex_baselineskip:D
- \__expl_primitive:NN \lineskip \tex_lineskip:D
- \__expl_primitive:NN \lineskiplimit \tex_lineskiplimit:D
- \__expl_primitive:NN \clubpenalty \tex_clubpenalty:D
- \__expl_primitive:NN \widowpenalty \tex_widowpenalty:D
- \__expl_primitive:NN \exhyphenpenalty \tex_exhyphenpenalty:D
- \__expl_primitive:NN \hyphenpenalty \tex_hyphenpenalty:D
- \__expl_primitive:NN \linepenalty \tex_linepenalty:D
- \__expl_primitive:NN \doublehyphendemerits \tex_doublehyphendemerits:D
- \__expl_primitive:NN \finalhyphendemerits \tex_finalhyphendemerits:D
- \__expl_primitive:NN \adjdemerits \tex_adjdemerits:D
- \__expl_primitive:NN \hangafter \tex_hangafter:D
- \__expl_primitive:NN \hangindent \tex_hangindent:D
- \__expl_primitive:NN \parshape \tex_parshape:D
- \__expl_primitive:NN \hsize \tex_hsize:D
- \__expl_primitive:NN \lefthyphenmin \tex_lefthyphenmin:D
- \__expl_primitive:NN \righthyphenmin \tex_righthyphenmin:D
- \__expl_primitive:NN \leftskip \tex_leftskip:D
- \__expl_primitive:NN \rightskip \tex_rightskip:D
- \__expl_primitive:NN \looseness \tex_looseness:D
- \__expl_primitive:NN \parskip \tex_parskip:D
- \__expl_primitive:NN \parindent \tex_parindent:D
- \__expl_primitive:NN \uchyph \tex_uchyph:D
- \__expl_primitive:NN \emergencystretch \tex_emergencystretch:D
- \__expl_primitive:NN \pretolerance \tex_pretolerance:D
- \__expl_primitive:NN \tolerance \tex_tolerance:D
- \__expl_primitive:NN \spaceskip \tex_spaceskip:D
- \__expl_primitive:NN \xspaceskip \tex_xspaceskip:D
- \__expl_primitive:NN \parfillskip \tex_parfillskip:D
- \__expl_primitive:NN \everypar \tex_everypar:D
- \__expl_primitive:NN \prevgraf \tex_prevgraf:D
- \__expl_primitive:NN \spacefactor \tex_spacefactor:D
- \__expl_primitive:NN \shipout \tex_shipout:D
- \__expl_primitive:NN \vsize \tex_vsize:D
- \__expl_primitive:NN \interlinepenalty \tex_interlinepenalty:D
- \__expl_primitive:NN \brokenpenalty \tex_brokenpenalty:D
- \__expl_primitive:NN \topskip \tex_topskip:D
- \__expl_primitive:NN \maxdeadcycles \tex_maxdeadcycles:D
- \__expl_primitive:NN \maxdepth \tex_maxdepth:D
- \__expl_primitive:NN \output \tex_output:D
- \__expl_primitive:NN \deadcycles \tex_deadcycles:D
- \__expl_primitive:NN \pagedepth \tex_pagedepth:D
- \__expl_primitive:NN \pagestretch \tex_pagestretch:D
- \__expl_primitive:NN \pagefilstretch \tex_pagefilstretch:D
- \__expl_primitive:NN \pagefillstretch \tex_pagefillstretch:D
- \__expl_primitive:NN \pagefilllstretch \tex_pagefilllstretch:D
- \__expl_primitive:NN \pageshrink \tex_pageshrink:D
- \__expl_primitive:NN \pagegoal \tex_pagegoal:D
- \__expl_primitive:NN \pagetotal \tex_pagetotal:D
- \__expl_primitive:NN \outputpenalty \tex_outputpenalty:D
- \__expl_primitive:NN \hoffset \tex_hoffset:D
- \__expl_primitive:NN \voffset \tex_voffset:D
- \__expl_primitive:NN \insert \tex_insert:D
- \__expl_primitive:NN \holdinginserts \tex_holdinginserts:D
- \__expl_primitive:NN \floatingpenalty \tex_floatingpenalty:D
- \__expl_primitive:NN \insertpenalties \tex_insertpenalties:D
- \__expl_primitive:NN \lower \tex_lower:D
- \__expl_primitive:NN \moveleft \tex_moveleft:D
- \__expl_primitive:NN \moveright \tex_moveright:D
- \__expl_primitive:NN \raise \tex_raise:D
- \__expl_primitive:NN \copy \tex_copy:D
- \__expl_primitive:NN \lastbox \tex_lastbox:D
- \__expl_primitive:NN \vsplit \tex_vsplit:D
- \__expl_primitive:NN \unhbox \tex_unhbox:D
- \__expl_primitive:NN \unhcopy \tex_unhcopy:D
- \__expl_primitive:NN \unvbox \tex_unvbox:D
- \__expl_primitive:NN \unvcopy \tex_unvcopy:D
- \__expl_primitive:NN \setbox \tex_setbox:D
- \__expl_primitive:NN \hbox \tex_hbox:D
- \__expl_primitive:NN \vbox \tex_vbox:D
- \__expl_primitive:NN \vtop \tex_vtop:D
- \__expl_primitive:NN \prevdepth \tex_prevdepth:D
- \__expl_primitive:NN \badness \tex_badness:D
- \__expl_primitive:NN \hbadness \tex_hbadness:D
- \__expl_primitive:NN \vbadness \tex_vbadness:D
- \__expl_primitive:NN \hfuzz \tex_hfuzz:D
- \__expl_primitive:NN \vfuzz \tex_vfuzz:D
- \__expl_primitive:NN \overfullrule \tex_overfullrule:D
- \__expl_primitive:NN \boxmaxdepth \tex_boxmaxdepth:D
- \__expl_primitive:NN \splitmaxdepth \tex_splitmaxdepth:D
- \__expl_primitive:NN \splittopskip \tex_splittopskip:D
- \__expl_primitive:NN \everyhbox \tex_everyhbox:D
- \__expl_primitive:NN \everyvbox \tex_everyvbox:D
- \__expl_primitive:NN \nullfont \tex_nullfont:D
- \__expl_primitive:NN \textfont \tex_textfont:D
- \__expl_primitive:NN \scriptfont \tex_scriptfont:D
- \__expl_primitive:NN \scriptscriptfont \tex_scriptscriptfont:D
- \__expl_primitive:NN \fontdimen \tex_fontdimen:D
- \__expl_primitive:NN \hyphenchar \tex_hyphenchar:D
- \__expl_primitive:NN \skewchar \tex_skewchar:D
- \__expl_primitive:NN \defaulthyphenchar \tex_defaulthyphenchar:D
- \__expl_primitive:NN \defaultskewchar \tex_defaultskewchar:D
- \__expl_primitive:NN \number \tex_number:D
- \__expl_primitive:NN \romannumeral \tex_romannumeral:D
- \__expl_primitive:NN \string \tex_string:D
- \__expl_primitive:NN \lowercase \tex_lowercase:D
- \__expl_primitive:NN \uppercase \tex_uppercase:D
- \__expl_primitive:NN \meaning \tex_meaning:D
- \__expl_primitive:NN \penalty \tex_penalty:D
- \__expl_primitive:NN \unpenalty \tex_unpenalty:D
- \__expl_primitive:NN \lastpenalty \tex_lastpenalty:D
- \__expl_primitive:NN \special \tex_special:D
- \__expl_primitive:NN \dump \tex_dump:D
- \__expl_primitive:NN \patterns \tex_patterns:D
- \__expl_primitive:NN \hyphenation \tex_hyphenation:D
- \__expl_primitive:NN \time \tex_time:D
- \__expl_primitive:NN \day \tex_day:D
- \__expl_primitive:NN \month \tex_month:D
- \__expl_primitive:NN \year \tex_year:D
- \__expl_primitive:NN \jobname \tex_jobname:D
- \__expl_primitive:NN \everyjob \tex_everyjob:D
- \__expl_primitive:NN \count \tex_count:D
- \__expl_primitive:NN \dimen \tex_dimen:D
- \__expl_primitive:NN \skip \tex_skip:D
- \__expl_primitive:NN \toks \tex_toks:D
- \__expl_primitive:NN \muskip \tex_muskip:D
- \__expl_primitive:NN \box \tex_box:D
- \__expl_primitive:NN \wd \tex_wd:D
- \__expl_primitive:NN \ht \tex_ht:D
- \__expl_primitive:NN \dp \tex_dp:D
- \__expl_primitive:NN \catcode \tex_catcode:D
- \__expl_primitive:NN \delcode \tex_delcode:D
- \__expl_primitive:NN \sfcode \tex_sfcode:D
- \__expl_primitive:NN \lccode \tex_lccode:D
- \__expl_primitive:NN \uccode \tex_uccode:D
- \__expl_primitive:NN \mathcode \tex_mathcode:D
+ \__kernel_primitive:NN \let \tex_let:D
+ \__kernel_primitive:NN \def \tex_def:D
+ \__kernel_primitive:NN \edef \tex_edef:D
+ \__kernel_primitive:NN \gdef \tex_gdef:D
+ \__kernel_primitive:NN \xdef \tex_xdef:D
+ \__kernel_primitive:NN \chardef \tex_chardef:D
+ \__kernel_primitive:NN \countdef \tex_countdef:D
+ \__kernel_primitive:NN \dimendef \tex_dimendef:D
+ \__kernel_primitive:NN \skipdef \tex_skipdef:D
+ \__kernel_primitive:NN \muskipdef \tex_muskipdef:D
+ \__kernel_primitive:NN \mathchardef \tex_mathchardef:D
+ \__kernel_primitive:NN \toksdef \tex_toksdef:D
+ \__kernel_primitive:NN \futurelet \tex_futurelet:D
+ \__kernel_primitive:NN \advance \tex_advance:D
+ \__kernel_primitive:NN \divide \tex_divide:D
+ \__kernel_primitive:NN \multiply \tex_multiply:D
+ \__kernel_primitive:NN \font \tex_font:D
+ \__kernel_primitive:NN \fam \tex_fam:D
+ \__kernel_primitive:NN \global \tex_global:D
+ \__kernel_primitive:NN \long \tex_long:D
+ \__kernel_primitive:NN \outer \tex_outer:D
+ \__kernel_primitive:NN \setlanguage \tex_setlanguage:D
+ \__kernel_primitive:NN \globaldefs \tex_globaldefs:D
+ \__kernel_primitive:NN \afterassignment \tex_afterassignment:D
+ \__kernel_primitive:NN \aftergroup \tex_aftergroup:D
+ \__kernel_primitive:NN \expandafter \tex_expandafter:D
+ \__kernel_primitive:NN \noexpand \tex_noexpand:D
+ \__kernel_primitive:NN \begingroup \tex_begingroup:D
+ \__kernel_primitive:NN \endgroup \tex_endgroup:D
+ \__kernel_primitive:NN \halign \tex_halign:D
+ \__kernel_primitive:NN \valign \tex_valign:D
+ \__kernel_primitive:NN \cr \tex_cr:D
+ \__kernel_primitive:NN \crcr \tex_crcr:D
+ \__kernel_primitive:NN \noalign \tex_noalign:D
+ \__kernel_primitive:NN \omit \tex_omit:D
+ \__kernel_primitive:NN \span \tex_span:D
+ \__kernel_primitive:NN \tabskip \tex_tabskip:D
+ \__kernel_primitive:NN \everycr \tex_everycr:D
+ \__kernel_primitive:NN \if \tex_if:D
+ \__kernel_primitive:NN \ifcase \tex_ifcase:D
+ \__kernel_primitive:NN \ifcat \tex_ifcat:D
+ \__kernel_primitive:NN \ifnum \tex_ifnum:D
+ \__kernel_primitive:NN \ifodd \tex_ifodd:D
+ \__kernel_primitive:NN \ifdim \tex_ifdim:D
+ \__kernel_primitive:NN \ifeof \tex_ifeof:D
+ \__kernel_primitive:NN \ifhbox \tex_ifhbox:D
+ \__kernel_primitive:NN \ifvbox \tex_ifvbox:D
+ \__kernel_primitive:NN \ifvoid \tex_ifvoid:D
+ \__kernel_primitive:NN \ifx \tex_ifx:D
+ \__kernel_primitive:NN \iffalse \tex_iffalse:D
+ \__kernel_primitive:NN \iftrue \tex_iftrue:D
+ \__kernel_primitive:NN \ifhmode \tex_ifhmode:D
+ \__kernel_primitive:NN \ifmmode \tex_ifmmode:D
+ \__kernel_primitive:NN \ifvmode \tex_ifvmode:D
+ \__kernel_primitive:NN \ifinner \tex_ifinner:D
+ \__kernel_primitive:NN \else \tex_else:D
+ \__kernel_primitive:NN \fi \tex_fi:D
+ \__kernel_primitive:NN \or \tex_or:D
+ \__kernel_primitive:NN \immediate \tex_immediate:D
+ \__kernel_primitive:NN \closeout \tex_closeout:D
+ \__kernel_primitive:NN \openin \tex_openin:D
+ \__kernel_primitive:NN \openout \tex_openout:D
+ \__kernel_primitive:NN \read \tex_read:D
+ \__kernel_primitive:NN \write \tex_write:D
+ \__kernel_primitive:NN \closein \tex_closein:D
+ \__kernel_primitive:NN \newlinechar \tex_newlinechar:D
+ \__kernel_primitive:NN \input \tex_input:D
+ \__kernel_primitive:NN \endinput \tex_endinput:D
+ \__kernel_primitive:NN \inputlineno \tex_inputlineno:D
+ \__kernel_primitive:NN \errmessage \tex_errmessage:D
+ \__kernel_primitive:NN \message \tex_message:D
+ \__kernel_primitive:NN \show \tex_show:D
+ \__kernel_primitive:NN \showthe \tex_showthe:D
+ \__kernel_primitive:NN \showbox \tex_showbox:D
+ \__kernel_primitive:NN \showlists \tex_showlists:D
+ \__kernel_primitive:NN \errhelp \tex_errhelp:D
+ \__kernel_primitive:NN \errorcontextlines \tex_errorcontextlines:D
+ \__kernel_primitive:NN \tracingcommands \tex_tracingcommands:D
+ \__kernel_primitive:NN \tracinglostchars \tex_tracinglostchars:D
+ \__kernel_primitive:NN \tracingmacros \tex_tracingmacros:D
+ \__kernel_primitive:NN \tracingonline \tex_tracingonline:D
+ \__kernel_primitive:NN \tracingoutput \tex_tracingoutput:D
+ \__kernel_primitive:NN \tracingpages \tex_tracingpages:D
+ \__kernel_primitive:NN \tracingparagraphs \tex_tracingparagraphs:D
+ \__kernel_primitive:NN \tracingrestores \tex_tracingrestores:D
+ \__kernel_primitive:NN \tracingstats \tex_tracingstats:D
+ \__kernel_primitive:NN \pausing \tex_pausing:D
+ \__kernel_primitive:NN \showboxbreadth \tex_showboxbreadth:D
+ \__kernel_primitive:NN \showboxdepth \tex_showboxdepth:D
+ \__kernel_primitive:NN \batchmode \tex_batchmode:D
+ \__kernel_primitive:NN \errorstopmode \tex_errorstopmode:D
+ \__kernel_primitive:NN \nonstopmode \tex_nonstopmode:D
+ \__kernel_primitive:NN \scrollmode \tex_scrollmode:D
+ \__kernel_primitive:NN \end \tex_end:D
+ \__kernel_primitive:NN \csname \tex_csname:D
+ \__kernel_primitive:NN \endcsname \tex_endcsname:D
+ \__kernel_primitive:NN \ignorespaces \tex_ignorespaces:D
+ \__kernel_primitive:NN \relax \tex_relax:D
+ \__kernel_primitive:NN \the \tex_the:D
+ \__kernel_primitive:NN \mag \tex_mag:D
+ \__kernel_primitive:NN \language \tex_language:D
+ \__kernel_primitive:NN \mark \tex_mark:D
+ \__kernel_primitive:NN \topmark \tex_topmark:D
+ \__kernel_primitive:NN \firstmark \tex_firstmark:D
+ \__kernel_primitive:NN \botmark \tex_botmark:D
+ \__kernel_primitive:NN \splitfirstmark \tex_splitfirstmark:D
+ \__kernel_primitive:NN \splitbotmark \tex_splitbotmark:D
+ \__kernel_primitive:NN \fontname \tex_fontname:D
+ \__kernel_primitive:NN \escapechar \tex_escapechar:D
+ \__kernel_primitive:NN \endlinechar \tex_endlinechar:D
+ \__kernel_primitive:NN \mathchoice \tex_mathchoice:D
+ \__kernel_primitive:NN \delimiter \tex_delimiter:D
+ \__kernel_primitive:NN \mathaccent \tex_mathaccent:D
+ \__kernel_primitive:NN \mathchar \tex_mathchar:D
+ \__kernel_primitive:NN \mskip \tex_mskip:D
+ \__kernel_primitive:NN \radical \tex_radical:D
+ \__kernel_primitive:NN \vcenter \tex_vcenter:D
+ \__kernel_primitive:NN \mkern \tex_mkern:D
+ \__kernel_primitive:NN \above \tex_above:D
+ \__kernel_primitive:NN \abovewithdelims \tex_abovewithdelims:D
+ \__kernel_primitive:NN \atop \tex_atop:D
+ \__kernel_primitive:NN \atopwithdelims \tex_atopwithdelims:D
+ \__kernel_primitive:NN \over \tex_over:D
+ \__kernel_primitive:NN \overwithdelims \tex_overwithdelims:D
+ \__kernel_primitive:NN \displaystyle \tex_displaystyle:D
+ \__kernel_primitive:NN \textstyle \tex_textstyle:D
+ \__kernel_primitive:NN \scriptstyle \tex_scriptstyle:D
+ \__kernel_primitive:NN \scriptscriptstyle \tex_scriptscriptstyle:D
+ \__kernel_primitive:NN \nonscript \tex_nonscript:D
+ \__kernel_primitive:NN \eqno \tex_eqno:D
+ \__kernel_primitive:NN \leqno \tex_leqno:D
+ \__kernel_primitive:NN \abovedisplayshortskip \tex_abovedisplayshortskip:D
+ \__kernel_primitive:NN \abovedisplayskip \tex_abovedisplayskip:D
+ \__kernel_primitive:NN \belowdisplayshortskip \tex_belowdisplayshortskip:D
+ \__kernel_primitive:NN \belowdisplayskip \tex_belowdisplayskip:D
+ \__kernel_primitive:NN \displaywidowpenalty \tex_displaywidowpenalty:D
+ \__kernel_primitive:NN \displayindent \tex_displayindent:D
+ \__kernel_primitive:NN \displaywidth \tex_displaywidth:D
+ \__kernel_primitive:NN \everydisplay \tex_everydisplay:D
+ \__kernel_primitive:NN \predisplaysize \tex_predisplaysize:D
+ \__kernel_primitive:NN \predisplaypenalty \tex_predisplaypenalty:D
+ \__kernel_primitive:NN \postdisplaypenalty \tex_postdisplaypenalty:D
+ \__kernel_primitive:NN \mathbin \tex_mathbin:D
+ \__kernel_primitive:NN \mathclose \tex_mathclose:D
+ \__kernel_primitive:NN \mathinner \tex_mathinner:D
+ \__kernel_primitive:NN \mathop \tex_mathop:D
+ \__kernel_primitive:NN \displaylimits \tex_displaylimits:D
+ \__kernel_primitive:NN \limits \tex_limits:D
+ \__kernel_primitive:NN \nolimits \tex_nolimits:D
+ \__kernel_primitive:NN \mathopen \tex_mathopen:D
+ \__kernel_primitive:NN \mathord \tex_mathord:D
+ \__kernel_primitive:NN \mathpunct \tex_mathpunct:D
+ \__kernel_primitive:NN \mathrel \tex_mathrel:D
+ \__kernel_primitive:NN \overline \tex_overline:D
+ \__kernel_primitive:NN \underline \tex_underline:D
+ \__kernel_primitive:NN \left \tex_left:D
+ \__kernel_primitive:NN \right \tex_right:D
+ \__kernel_primitive:NN \binoppenalty \tex_binoppenalty:D
+ \__kernel_primitive:NN \relpenalty \tex_relpenalty:D
+ \__kernel_primitive:NN \delimitershortfall \tex_delimitershortfall:D
+ \__kernel_primitive:NN \delimiterfactor \tex_delimiterfactor:D
+ \__kernel_primitive:NN \nulldelimiterspace \tex_nulldelimiterspace:D
+ \__kernel_primitive:NN \everymath \tex_everymath:D
+ \__kernel_primitive:NN \mathsurround \tex_mathsurround:D
+ \__kernel_primitive:NN \medmuskip \tex_medmuskip:D
+ \__kernel_primitive:NN \thinmuskip \tex_thinmuskip:D
+ \__kernel_primitive:NN \thickmuskip \tex_thickmuskip:D
+ \__kernel_primitive:NN \scriptspace \tex_scriptspace:D
+ \__kernel_primitive:NN \noboundary \tex_noboundary:D
+ \__kernel_primitive:NN \accent \tex_accent:D
+ \__kernel_primitive:NN \char \tex_char:D
+ \__kernel_primitive:NN \discretionary \tex_discretionary:D
+ \__kernel_primitive:NN \hfil \tex_hfil:D
+ \__kernel_primitive:NN \hfilneg \tex_hfilneg:D
+ \__kernel_primitive:NN \hfill \tex_hfill:D
+ \__kernel_primitive:NN \hskip \tex_hskip:D
+ \__kernel_primitive:NN \hss \tex_hss:D
+ \__kernel_primitive:NN \vfil \tex_vfil:D
+ \__kernel_primitive:NN \vfilneg \tex_vfilneg:D
+ \__kernel_primitive:NN \vfill \tex_vfill:D
+ \__kernel_primitive:NN \vskip \tex_vskip:D
+ \__kernel_primitive:NN \vss \tex_vss:D
+ \__kernel_primitive:NN \unskip \tex_unskip:D
+ \__kernel_primitive:NN \kern \tex_kern:D
+ \__kernel_primitive:NN \unkern \tex_unkern:D
+ \__kernel_primitive:NN \hrule \tex_hrule:D
+ \__kernel_primitive:NN \vrule \tex_vrule:D
+ \__kernel_primitive:NN \leaders \tex_leaders:D
+ \__kernel_primitive:NN \cleaders \tex_cleaders:D
+ \__kernel_primitive:NN \xleaders \tex_xleaders:D
+ \__kernel_primitive:NN \lastkern \tex_lastkern:D
+ \__kernel_primitive:NN \lastskip \tex_lastskip:D
+ \__kernel_primitive:NN \indent \tex_indent:D
+ \__kernel_primitive:NN \par \tex_par:D
+ \__kernel_primitive:NN \noindent \tex_noindent:D
+ \__kernel_primitive:NN \vadjust \tex_vadjust:D
+ \__kernel_primitive:NN \baselineskip \tex_baselineskip:D
+ \__kernel_primitive:NN \lineskip \tex_lineskip:D
+ \__kernel_primitive:NN \lineskiplimit \tex_lineskiplimit:D
+ \__kernel_primitive:NN \clubpenalty \tex_clubpenalty:D
+ \__kernel_primitive:NN \widowpenalty \tex_widowpenalty:D
+ \__kernel_primitive:NN \exhyphenpenalty \tex_exhyphenpenalty:D
+ \__kernel_primitive:NN \hyphenpenalty \tex_hyphenpenalty:D
+ \__kernel_primitive:NN \linepenalty \tex_linepenalty:D
+ \__kernel_primitive:NN \doublehyphendemerits \tex_doublehyphendemerits:D
+ \__kernel_primitive:NN \finalhyphendemerits \tex_finalhyphendemerits:D
+ \__kernel_primitive:NN \adjdemerits \tex_adjdemerits:D
+ \__kernel_primitive:NN \hangafter \tex_hangafter:D
+ \__kernel_primitive:NN \hangindent \tex_hangindent:D
+ \__kernel_primitive:NN \parshape \tex_parshape:D
+ \__kernel_primitive:NN \hsize \tex_hsize:D
+ \__kernel_primitive:NN \lefthyphenmin \tex_lefthyphenmin:D
+ \__kernel_primitive:NN \righthyphenmin \tex_righthyphenmin:D
+ \__kernel_primitive:NN \leftskip \tex_leftskip:D
+ \__kernel_primitive:NN \rightskip \tex_rightskip:D
+ \__kernel_primitive:NN \looseness \tex_looseness:D
+ \__kernel_primitive:NN \parskip \tex_parskip:D
+ \__kernel_primitive:NN \parindent \tex_parindent:D
+ \__kernel_primitive:NN \uchyph \tex_uchyph:D
+ \__kernel_primitive:NN \emergencystretch \tex_emergencystretch:D
+ \__kernel_primitive:NN \pretolerance \tex_pretolerance:D
+ \__kernel_primitive:NN \tolerance \tex_tolerance:D
+ \__kernel_primitive:NN \spaceskip \tex_spaceskip:D
+ \__kernel_primitive:NN \xspaceskip \tex_xspaceskip:D
+ \__kernel_primitive:NN \parfillskip \tex_parfillskip:D
+ \__kernel_primitive:NN \everypar \tex_everypar:D
+ \__kernel_primitive:NN \prevgraf \tex_prevgraf:D
+ \__kernel_primitive:NN \spacefactor \tex_spacefactor:D
+ \__kernel_primitive:NN \shipout \tex_shipout:D
+ \__kernel_primitive:NN \vsize \tex_vsize:D
+ \__kernel_primitive:NN \interlinepenalty \tex_interlinepenalty:D
+ \__kernel_primitive:NN \brokenpenalty \tex_brokenpenalty:D
+ \__kernel_primitive:NN \topskip \tex_topskip:D
+ \__kernel_primitive:NN \maxdeadcycles \tex_maxdeadcycles:D
+ \__kernel_primitive:NN \maxdepth \tex_maxdepth:D
+ \__kernel_primitive:NN \output \tex_output:D
+ \__kernel_primitive:NN \deadcycles \tex_deadcycles:D
+ \__kernel_primitive:NN \pagedepth \tex_pagedepth:D
+ \__kernel_primitive:NN \pagestretch \tex_pagestretch:D
+ \__kernel_primitive:NN \pagefilstretch \tex_pagefilstretch:D
+ \__kernel_primitive:NN \pagefillstretch \tex_pagefillstretch:D
+ \__kernel_primitive:NN \pagefilllstretch \tex_pagefilllstretch:D
+ \__kernel_primitive:NN \pageshrink \tex_pageshrink:D
+ \__kernel_primitive:NN \pagegoal \tex_pagegoal:D
+ \__kernel_primitive:NN \pagetotal \tex_pagetotal:D
+ \__kernel_primitive:NN \outputpenalty \tex_outputpenalty:D
+ \__kernel_primitive:NN \hoffset \tex_hoffset:D
+ \__kernel_primitive:NN \voffset \tex_voffset:D
+ \__kernel_primitive:NN \insert \tex_insert:D
+ \__kernel_primitive:NN \holdinginserts \tex_holdinginserts:D
+ \__kernel_primitive:NN \floatingpenalty \tex_floatingpenalty:D
+ \__kernel_primitive:NN \insertpenalties \tex_insertpenalties:D
+ \__kernel_primitive:NN \lower \tex_lower:D
+ \__kernel_primitive:NN \moveleft \tex_moveleft:D
+ \__kernel_primitive:NN \moveright \tex_moveright:D
+ \__kernel_primitive:NN \raise \tex_raise:D
+ \__kernel_primitive:NN \copy \tex_copy:D
+ \__kernel_primitive:NN \lastbox \tex_lastbox:D
+ \__kernel_primitive:NN \vsplit \tex_vsplit:D
+ \__kernel_primitive:NN \unhbox \tex_unhbox:D
+ \__kernel_primitive:NN \unhcopy \tex_unhcopy:D
+ \__kernel_primitive:NN \unvbox \tex_unvbox:D
+ \__kernel_primitive:NN \unvcopy \tex_unvcopy:D
+ \__kernel_primitive:NN \setbox \tex_setbox:D
+ \__kernel_primitive:NN \hbox \tex_hbox:D
+ \__kernel_primitive:NN \vbox \tex_vbox:D
+ \__kernel_primitive:NN \vtop \tex_vtop:D
+ \__kernel_primitive:NN \prevdepth \tex_prevdepth:D
+ \__kernel_primitive:NN \badness \tex_badness:D
+ \__kernel_primitive:NN \hbadness \tex_hbadness:D
+ \__kernel_primitive:NN \vbadness \tex_vbadness:D
+ \__kernel_primitive:NN \hfuzz \tex_hfuzz:D
+ \__kernel_primitive:NN \vfuzz \tex_vfuzz:D
+ \__kernel_primitive:NN \overfullrule \tex_overfullrule:D
+ \__kernel_primitive:NN \boxmaxdepth \tex_boxmaxdepth:D
+ \__kernel_primitive:NN \splitmaxdepth \tex_splitmaxdepth:D
+ \__kernel_primitive:NN \splittopskip \tex_splittopskip:D
+ \__kernel_primitive:NN \everyhbox \tex_everyhbox:D
+ \__kernel_primitive:NN \everyvbox \tex_everyvbox:D
+ \__kernel_primitive:NN \nullfont \tex_nullfont:D
+ \__kernel_primitive:NN \textfont \tex_textfont:D
+ \__kernel_primitive:NN \scriptfont \tex_scriptfont:D
+ \__kernel_primitive:NN \scriptscriptfont \tex_scriptscriptfont:D
+ \__kernel_primitive:NN \fontdimen \tex_fontdimen:D
+ \__kernel_primitive:NN \hyphenchar \tex_hyphenchar:D
+ \__kernel_primitive:NN \skewchar \tex_skewchar:D
+ \__kernel_primitive:NN \defaulthyphenchar \tex_defaulthyphenchar:D
+ \__kernel_primitive:NN \defaultskewchar \tex_defaultskewchar:D
+ \__kernel_primitive:NN \number \tex_number:D
+ \__kernel_primitive:NN \romannumeral \tex_romannumeral:D
+ \__kernel_primitive:NN \string \tex_string:D
+ \__kernel_primitive:NN \lowercase \tex_lowercase:D
+ \__kernel_primitive:NN \uppercase \tex_uppercase:D
+ \__kernel_primitive:NN \meaning \tex_meaning:D
+ \__kernel_primitive:NN \penalty \tex_penalty:D
+ \__kernel_primitive:NN \unpenalty \tex_unpenalty:D
+ \__kernel_primitive:NN \lastpenalty \tex_lastpenalty:D
+ \__kernel_primitive:NN \special \tex_special:D
+ \__kernel_primitive:NN \dump \tex_dump:D
+ \__kernel_primitive:NN \patterns \tex_patterns:D
+ \__kernel_primitive:NN \hyphenation \tex_hyphenation:D
+ \__kernel_primitive:NN \time \tex_time:D
+ \__kernel_primitive:NN \day \tex_day:D
+ \__kernel_primitive:NN \month \tex_month:D
+ \__kernel_primitive:NN \year \tex_year:D
+ \__kernel_primitive:NN \jobname \tex_jobname:D
+ \__kernel_primitive:NN \everyjob \tex_everyjob:D
+ \__kernel_primitive:NN \count \tex_count:D
+ \__kernel_primitive:NN \dimen \tex_dimen:D
+ \__kernel_primitive:NN \skip \tex_skip:D
+ \__kernel_primitive:NN \toks \tex_toks:D
+ \__kernel_primitive:NN \muskip \tex_muskip:D
+ \__kernel_primitive:NN \box \tex_box:D
+ \__kernel_primitive:NN \wd \tex_wd:D
+ \__kernel_primitive:NN \ht \tex_ht:D
+ \__kernel_primitive:NN \dp \tex_dp:D
+ \__kernel_primitive:NN \catcode \tex_catcode:D
+ \__kernel_primitive:NN \delcode \tex_delcode:D
+ \__kernel_primitive:NN \sfcode \tex_sfcode:D
+ \__kernel_primitive:NN \lccode \tex_lccode:D
+ \__kernel_primitive:NN \uccode \tex_uccode:D
+ \__kernel_primitive:NN \mathcode \tex_mathcode:D
% \end{macrocode}
% Since \LaTeX3 requires at least the \eTeX{} extensions,
% we also rename the additional primitives. These are all
% given the prefix |\etex_|.
% \begin{macrocode}
- \__expl_primitive:NN \ifdefined \etex_ifdefined:D
- \__expl_primitive:NN \ifcsname \etex_ifcsname:D
- \__expl_primitive:NN \unless \etex_unless:D
- \__expl_primitive:NN \eTeXversion \etex_eTeXversion:D
- \__expl_primitive:NN \eTeXrevision \etex_eTeXrevision:D
- \__expl_primitive:NN \marks \etex_marks:D
- \__expl_primitive:NN \topmarks \etex_topmarks:D
- \__expl_primitive:NN \firstmarks \etex_firstmarks:D
- \__expl_primitive:NN \botmarks \etex_botmarks:D
- \__expl_primitive:NN \splitfirstmarks \etex_splitfirstmarks:D
- \__expl_primitive:NN \splitbotmarks \etex_splitbotmarks:D
- \__expl_primitive:NN \unexpanded \etex_unexpanded:D
- \__expl_primitive:NN \detokenize \etex_detokenize:D
- \__expl_primitive:NN \scantokens \etex_scantokens:D
- \__expl_primitive:NN \showtokens \etex_showtokens:D
- \__expl_primitive:NN \readline \etex_readline:D
- \__expl_primitive:NN \tracingassigns \etex_tracingassigns:D
- \__expl_primitive:NN \tracingscantokens \etex_tracingscantokens:D
- \__expl_primitive:NN \tracingnesting \etex_tracingnesting:D
- \__expl_primitive:NN \tracingifs \etex_tracingifs:D
- \__expl_primitive:NN \currentiflevel \etex_currentiflevel:D
- \__expl_primitive:NN \currentifbranch \etex_currentifbranch:D
- \__expl_primitive:NN \currentiftype \etex_currentiftype:D
- \__expl_primitive:NN \tracinggroups \etex_tracinggroups:D
- \__expl_primitive:NN \currentgrouplevel \etex_currentgrouplevel:D
- \__expl_primitive:NN \currentgrouptype \etex_currentgrouptype:D
- \__expl_primitive:NN \showgroups \etex_showgroups:D
- \__expl_primitive:NN \showifs \etex_showifs:D
- \__expl_primitive:NN \interactionmode \etex_interactionmode:D
- \__expl_primitive:NN \lastnodetype \etex_lastnodetype:D
- \__expl_primitive:NN \iffontchar \etex_iffontchar:D
- \__expl_primitive:NN \fontcharht \etex_fontcharht:D
- \__expl_primitive:NN \fontchardp \etex_fontchardp:D
- \__expl_primitive:NN \fontcharwd \etex_fontcharwd:D
- \__expl_primitive:NN \fontcharic \etex_fontcharic:D
- \__expl_primitive:NN \parshapeindent \etex_parshapeindent:D
- \__expl_primitive:NN \parshapelength \etex_parshapelength:D
- \__expl_primitive:NN \parshapedimen \etex_parshapedimen:D
- \__expl_primitive:NN \numexpr \etex_numexpr:D
- \__expl_primitive:NN \dimexpr \etex_dimexpr:D
- \__expl_primitive:NN \glueexpr \etex_glueexpr:D
- \__expl_primitive:NN \muexpr \etex_muexpr:D
- \__expl_primitive:NN \gluestretch \etex_gluestretch:D
- \__expl_primitive:NN \glueshrink \etex_glueshrink:D
- \__expl_primitive:NN \gluestretchorder \etex_gluestretchorder:D
- \__expl_primitive:NN \glueshrinkorder \etex_glueshrinkorder:D
- \__expl_primitive:NN \gluetomu \etex_gluetomu:D
- \__expl_primitive:NN \mutoglue \etex_mutoglue:D
- \__expl_primitive:NN \lastlinefit \etex_lastlinefit:D
- \__expl_primitive:NN \interlinepenalties \etex_interlinepenalties:D
- \__expl_primitive:NN \clubpenalties \etex_clubpenalties:D
- \__expl_primitive:NN \widowpenalties \etex_widowpenalties:D
- \__expl_primitive:NN \displaywidowpenalties \etex_displaywidowpenalties:D
- \__expl_primitive:NN \middle \etex_middle:D
- \__expl_primitive:NN \savinghyphcodes \etex_savinghyphcodes:D
- \__expl_primitive:NN \savingvdiscards \etex_savingvdiscards:D
- \__expl_primitive:NN \pagediscards \etex_pagediscards:D
- \__expl_primitive:NN \splitdiscards \etex_splitdiscards:D
- \__expl_primitive:NN \TeXXeTstate \etex_TeXXeTstate:D
- \__expl_primitive:NN \beginL \etex_beginL:D
- \__expl_primitive:NN \endL \etex_endL:D
- \__expl_primitive:NN \beginR \etex_beginR:D
- \__expl_primitive:NN \endR \etex_endR:D
- \__expl_primitive:NN \predisplaydirection \etex_predisplaydirection:D
- \__expl_primitive:NN \everyeof \etex_everyeof:D
- \__expl_primitive:NN \protected \etex_protected:D
+ \__kernel_primitive:NN \ifdefined \etex_ifdefined:D
+ \__kernel_primitive:NN \ifcsname \etex_ifcsname:D
+ \__kernel_primitive:NN \unless \etex_unless:D
+ \__kernel_primitive:NN \eTeXversion \etex_eTeXversion:D
+ \__kernel_primitive:NN \eTeXrevision \etex_eTeXrevision:D
+ \__kernel_primitive:NN \marks \etex_marks:D
+ \__kernel_primitive:NN \topmarks \etex_topmarks:D
+ \__kernel_primitive:NN \firstmarks \etex_firstmarks:D
+ \__kernel_primitive:NN \botmarks \etex_botmarks:D
+ \__kernel_primitive:NN \splitfirstmarks \etex_splitfirstmarks:D
+ \__kernel_primitive:NN \splitbotmarks \etex_splitbotmarks:D
+ \__kernel_primitive:NN \unexpanded \etex_unexpanded:D
+ \__kernel_primitive:NN \detokenize \etex_detokenize:D
+ \__kernel_primitive:NN \scantokens \etex_scantokens:D
+ \__kernel_primitive:NN \showtokens \etex_showtokens:D
+ \__kernel_primitive:NN \readline \etex_readline:D
+ \__kernel_primitive:NN \tracingassigns \etex_tracingassigns:D
+ \__kernel_primitive:NN \tracingscantokens \etex_tracingscantokens:D
+ \__kernel_primitive:NN \tracingnesting \etex_tracingnesting:D
+ \__kernel_primitive:NN \tracingifs \etex_tracingifs:D
+ \__kernel_primitive:NN \currentiflevel \etex_currentiflevel:D
+ \__kernel_primitive:NN \currentifbranch \etex_currentifbranch:D
+ \__kernel_primitive:NN \currentiftype \etex_currentiftype:D
+ \__kernel_primitive:NN \tracinggroups \etex_tracinggroups:D
+ \__kernel_primitive:NN \currentgrouplevel \etex_currentgrouplevel:D
+ \__kernel_primitive:NN \currentgrouptype \etex_currentgrouptype:D
+ \__kernel_primitive:NN \showgroups \etex_showgroups:D
+ \__kernel_primitive:NN \showifs \etex_showifs:D
+ \__kernel_primitive:NN \interactionmode \etex_interactionmode:D
+ \__kernel_primitive:NN \lastnodetype \etex_lastnodetype:D
+ \__kernel_primitive:NN \iffontchar \etex_iffontchar:D
+ \__kernel_primitive:NN \fontcharht \etex_fontcharht:D
+ \__kernel_primitive:NN \fontchardp \etex_fontchardp:D
+ \__kernel_primitive:NN \fontcharwd \etex_fontcharwd:D
+ \__kernel_primitive:NN \fontcharic \etex_fontcharic:D
+ \__kernel_primitive:NN \parshapeindent \etex_parshapeindent:D
+ \__kernel_primitive:NN \parshapelength \etex_parshapelength:D
+ \__kernel_primitive:NN \parshapedimen \etex_parshapedimen:D
+ \__kernel_primitive:NN \numexpr \etex_numexpr:D
+ \__kernel_primitive:NN \dimexpr \etex_dimexpr:D
+ \__kernel_primitive:NN \glueexpr \etex_glueexpr:D
+ \__kernel_primitive:NN \muexpr \etex_muexpr:D
+ \__kernel_primitive:NN \gluestretch \etex_gluestretch:D
+ \__kernel_primitive:NN \glueshrink \etex_glueshrink:D
+ \__kernel_primitive:NN \gluestretchorder \etex_gluestretchorder:D
+ \__kernel_primitive:NN \glueshrinkorder \etex_glueshrinkorder:D
+ \__kernel_primitive:NN \gluetomu \etex_gluetomu:D
+ \__kernel_primitive:NN \mutoglue \etex_mutoglue:D
+ \__kernel_primitive:NN \lastlinefit \etex_lastlinefit:D
+ \__kernel_primitive:NN \interlinepenalties \etex_interlinepenalties:D
+ \__kernel_primitive:NN \clubpenalties \etex_clubpenalties:D
+ \__kernel_primitive:NN \widowpenalties \etex_widowpenalties:D
+ \__kernel_primitive:NN \displaywidowpenalties \etex_displaywidowpenalties:D
+ \__kernel_primitive:NN \middle \etex_middle:D
+ \__kernel_primitive:NN \savinghyphcodes \etex_savinghyphcodes:D
+ \__kernel_primitive:NN \savingvdiscards \etex_savingvdiscards:D
+ \__kernel_primitive:NN \pagediscards \etex_pagediscards:D
+ \__kernel_primitive:NN \splitdiscards \etex_splitdiscards:D
+ \__kernel_primitive:NN \TeXXeTstate \etex_TeXXeTstate:D
+ \__kernel_primitive:NN \beginL \etex_beginL:D
+ \__kernel_primitive:NN \endL \etex_endL:D
+ \__kernel_primitive:NN \beginR \etex_beginR:D
+ \__kernel_primitive:NN \endR \etex_endR:D
+ \__kernel_primitive:NN \predisplaydirection \etex_predisplaydirection:D
+ \__kernel_primitive:NN \everyeof \etex_everyeof:D
+ \__kernel_primitive:NN \protected \etex_protected:D
% \end{macrocode}
% The newer primitives are more complex: there are an awful lot of them,
% and we don't use them all at the moment. So the following is selective.
@@ -561,54 +561,54 @@
% there are a lot of \pdfTeX{} primitives that start \cs{pdf\ldots} but
% are not related to PDF output. These ones related to PDF output.
% \begin{macrocode}
- \__expl_primitive:NN \pdfcreationdate \pdftex_pdfcreationdate:D
- \__expl_primitive:NN \pdfcolorstack \pdftex_pdfcolorstack:D
- \__expl_primitive:NN \pdfcompresslevel \pdftex_pdfcompresslevel:D
- \__expl_primitive:NN \pdfdecimaldigits \pdftex_pdfdecimaldigits:D
- \__expl_primitive:NN \pdfhorigin \pdftex_pdfhorigin:D
- \__expl_primitive:NN \pdfinfo \pdftex_pdfinfo:D
- \__expl_primitive:NN \pdflastxform \pdftex_pdflastxform:D
- \__expl_primitive:NN \pdfliteral \pdftex_pdfliteral:D
- \__expl_primitive:NN \pdfminorversion \pdftex_pdfminorversion:D
- \__expl_primitive:NN \pdfobjcompresslevel \pdftex_pdfobjcompresslevel:D
- \__expl_primitive:NN \pdfoutput \pdftex_pdfoutput:D
- \__expl_primitive:NN \pdfrefxform \pdftex_pdfrefxform:D
- \__expl_primitive:NN \pdfrestore \pdftex_pdfrestore:D
- \__expl_primitive:NN \pdfsave \pdftex_pdfsave:D
- \__expl_primitive:NN \pdfsetmatrix \pdftex_pdfsetmatrix:D
- \__expl_primitive:NN \pdfpkresolution \pdftex_pdfpkresolution:D
- \__expl_primitive:NN \pdftexrevision \pdftex_pdftextrevision:D
- \__expl_primitive:NN \pdfvorigin \pdftex_pdfvorigin:D
- \__expl_primitive:NN \pdfxform \pdftex_pdfxform:D
+ \__kernel_primitive:NN \pdfcreationdate \pdftex_pdfcreationdate:D
+ \__kernel_primitive:NN \pdfcolorstack \pdftex_pdfcolorstack:D
+ \__kernel_primitive:NN \pdfcompresslevel \pdftex_pdfcompresslevel:D
+ \__kernel_primitive:NN \pdfdecimaldigits \pdftex_pdfdecimaldigits:D
+ \__kernel_primitive:NN \pdfhorigin \pdftex_pdfhorigin:D
+ \__kernel_primitive:NN \pdfinfo \pdftex_pdfinfo:D
+ \__kernel_primitive:NN \pdflastxform \pdftex_pdflastxform:D
+ \__kernel_primitive:NN \pdfliteral \pdftex_pdfliteral:D
+ \__kernel_primitive:NN \pdfminorversion \pdftex_pdfminorversion:D
+ \__kernel_primitive:NN \pdfobjcompresslevel \pdftex_pdfobjcompresslevel:D
+ \__kernel_primitive:NN \pdfoutput \pdftex_pdfoutput:D
+ \__kernel_primitive:NN \pdfrefxform \pdftex_pdfrefxform:D
+ \__kernel_primitive:NN \pdfrestore \pdftex_pdfrestore:D
+ \__kernel_primitive:NN \pdfsave \pdftex_pdfsave:D
+ \__kernel_primitive:NN \pdfsetmatrix \pdftex_pdfsetmatrix:D
+ \__kernel_primitive:NN \pdfpkresolution \pdftex_pdfpkresolution:D
+ \__kernel_primitive:NN \pdftexrevision \pdftex_pdftextrevision:D
+ \__kernel_primitive:NN \pdfvorigin \pdftex_pdfvorigin:D
+ \__kernel_primitive:NN \pdfxform \pdftex_pdfxform:D
% \end{macrocode}
% While these are not.
% \begin{macrocode}
- \__expl_primitive:NN \pdfstrcmp \pdftex_strcmp:D
+ \__kernel_primitive:NN \pdfstrcmp \pdftex_strcmp:D
% \end{macrocode}
% \XeTeX{}-specific primitives. Note that \XeTeX{}'s \tn{strcmp} is
% handled earlier and is \enquote{rolled up} into \tn{pdfstrcmp}.
% \begin{macrocode}
- \__expl_primitive:NN \XeTeXversion \xetex_XeTeXversion:D
+ \__kernel_primitive:NN \XeTeXversion \xetex_XeTeXversion:D
% \end{macrocode}
% Primitives from \LuaTeX{}.
% \begin{macrocode}
- \__expl_primitive:NN \catcodetable \luatex_catcodetable:D
- \__expl_primitive:NN \directlua \luatex_directlua:D
- \__expl_primitive:NN \initcatcodetable \luatex_initcatcodetable:D
- \__expl_primitive:NN \latelua \luatex_latelua:D
- \__expl_primitive:NN \luatexversion \luatex_luatexversion:D
- \__expl_primitive:NN \savecatcodetable \luatex_savecatcodetable:D
+ \__kernel_primitive:NN \catcodetable \luatex_catcodetable:D
+ \__kernel_primitive:NN \directlua \luatex_directlua:D
+ \__kernel_primitive:NN \initcatcodetable \luatex_initcatcodetable:D
+ \__kernel_primitive:NN \latelua \luatex_latelua:D
+ \__kernel_primitive:NN \luatexversion \luatex_luatexversion:D
+ \__kernel_primitive:NN \savecatcodetable \luatex_savecatcodetable:D
% \end{macrocode}
% Slightly more awkward are the directional primitives in \LuaTeX{}. These
% come from Omega \emph{via} Aleph, but we do not support those engines and
% so it seems most sensible to treat them as \LuaTeX{} primitives for prefix
% purposes.
% \begin{macrocode}
- \__expl_primitive:NN \bodydir \luatex_bodydir:D
- \__expl_primitive:NN \mathdir \luatex_mathdir:D
- \__expl_primitive:NN \pagedir \luatex_pagedir:D
- \__expl_primitive:NN \pardir \luatex_pardir:D
- \__expl_primitive:NN \textdir \luatex_textdir:D
+ \__kernel_primitive:NN \bodydir \luatex_bodydir:D
+ \__kernel_primitive:NN \mathdir \luatex_mathdir:D
+ \__kernel_primitive:NN \pagedir \luatex_pagedir:D
+ \__kernel_primitive:NN \pardir \luatex_pardir:D
+ \__kernel_primitive:NN \textdir \luatex_textdir:D
% \end{macrocode}
% The job is done: close the group (using the primitive renamed!).
% \begin{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
index 50472ab8754..bce67a2fb30 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
@@ -35,7 +35,7 @@
%
%<*driver|package>
\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3prop.dtx 4581 2013-07-28 08:38:50Z joseph $
+\GetIdInfo$Id: l3prop.dtx 4623 2013-12-14 13:53:40Z bruno $
{L3 Property lists}
%</driver|package>
%<*driver>
@@ -508,9 +508,8 @@
% \cs{@@_pair:wn} \meta{key_1} \cs{s_@@} \Arg{value_1} \\
% \ldots{} \\
% \cs{@@_pair:wn} \meta{key_n} \cs{s_@@} \Arg{value_n} \\
-% \cs{s_obj_end}
% \end{quote}
-% where the separators \cs{s_@@} and \cs{s_obj_end} are scan marks
+% where \cs{s_@@} is a scan mark
% (equal to \cs{scan_stop:}), and \cs{@@_pair:wn} can be used to map
% through the property list.
%
@@ -542,7 +541,7 @@
% \begin{variable}[tested = m3prop004]{\c_empty_prop}
% An empty prop.
% \begin{macrocode}
-\tl_const:Nn \c_empty_prop { \s_@@ \s_obj_end }
+\tl_const:Nn \c_empty_prop { \s_@@ }
% \end{macrocode}
% \end{variable}
%
@@ -620,14 +619,6 @@
%
% \subsection{Accessing data in property lists}
%
-% \begin{macro}[EXP]{\@@_strip_end:w}
-% Strip the \cs{s_obj_end} marker from an expanded property list
-% variable.
-% \begin{macrocode}
-\cs_new:Npn \@@_strip_end:w #1 \s_obj_end { \exp_not:n {#1} }
-% \end{macrocode}
-% \end{macro}
-%
% \begin{macro}[int]{\@@_split:NnTF}
% \begin{macro}[aux]{\@@_split_aux:NnTF}
% \begin{macro}[aux, EXP]{\@@_split_aux:w}
@@ -816,8 +807,8 @@
% storing in \cs{l_@@_internal_tl} tokens which (after
% \texttt{x}-expansion) encode the key--value pair. This variable can
% safely be used in \cs{@@_split:NnTF}. If the \meta{key} was absent,
-% append the new key--value to the list (\cs{@@_strip_end:w} moves the
-% \cs{s_obj_end} marker). Otherwise concatenate the extracts |##1|
+% append the new key--value to the list.
+% Otherwise concatenate the extracts |##1|
% and |##3| with the new key--value pair \cs{l_@@_internal_tl}. The
% updated entry is placed at the same spot as the original \meta{key}
% in the property list, preserving the order of entries.
@@ -833,13 +824,7 @@
}
\@@_split:NnTF #2 {#3}
{ #1 #2 { \exp_not:n {##1} \l_@@_internal_tl \exp_not:n {##3} } }
- {
- #1 #2
- {
- \exp_after:wN \@@_strip_end:w #2
- \l_@@_internal_tl \s_obj_end
- }
- }
+ { #1 #2 { \exp_not:o {#2} \l_@@_internal_tl } }
}
\cs_generate_variant:Nn \prop_put:Nnn
{ NnV , Nno , Nnx , NV , NVV , No , Noo }
@@ -877,13 +862,7 @@
}
\@@_split:NnTF #2 {#3}
{ }
- {
- #1 #2
- {
- \exp_after:wN \@@_strip_end:w #2
- \l_@@_internal_tl \s_obj_end
- }
- }
+ { #1 #2 { \exp_not:o {#2} \l_@@_internal_tl } }
}
\cs_generate_variant:Nn \prop_put_if_new:Nnn { c }
\cs_generate_variant:Nn \prop_gput_if_new:Nnn { c }
@@ -944,7 +923,7 @@
% mechanism choke, because the arbitrary token list material is
% enclosed in braces. The second argument of \cs{@@_if_in:nwwn} is
% most often empty. When the \meta{key} is found in the list,
-% \cs{@@_if_in:N} receives \cs{s_@@} or \cs{s_obj_end}, and if it is
+% \cs{@@_if_in:N} receives \cs{@@_pair:wn}, and if it is
% found as the extra item, the function receives
% \cs{q_recursion_tail}, easily recognizable.
%
@@ -1026,9 +1005,9 @@
% The fastest way to do a recursion here is to use an
% \cs{if_meaning:w} test: the keys are strings, and thus cannot match
% the marker \cs{q_recursion_tail}. A special case to note is when
-% the key |#3| is empty: then \cs{q_recursion_tail} is compared to
-% \cs{exp_after:wN}, also different. Note that |#2| can only consist
-% of \cs{s_@@} and/or \cs{s_obj_end}.
+% the key~|#3| is empty: then \cs{q_recursion_tail} is compared to
+% \cs{exp_after:wN}, also different. Note that |#2|~is empty, except
+% at the first iteration, where it is \cs{s_@@}.
% \begin{macrocode}
\cs_new:Npn \prop_map_function:NN #1#2
{
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
index 26d3c4d78f7..d38da212ecb 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
@@ -35,7 +35,7 @@
%
%<*driver|package>
\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3quark.dtx 4564 2013-07-21 02:12:33Z bruno $
+\GetIdInfo$Id: l3quark.dtx 4623 2013-12-14 13:53:40Z bruno $
{L3 Quarks}
%</driver|package>
%<*driver>
@@ -671,15 +671,6 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\s_obj_end}
-% This scan mark is used both in \pkg{l3seq} and \pkg{l3prop}. This
-% token ought to be defined in a \pkg{l3obj} module if we decide to go
-% in that direction. In the mean-time, we need it to be set.
-% \begin{macrocode}
-\__scan_new:N \s_obj_end
-% \end{macrocode}
-% \end{variable}
-%
% \subsection{Deprecated quark functions}
%
% \begin{macro}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
index a697739d8da..ef713afaa31 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
@@ -35,7 +35,7 @@
%
%<*driver|package>
\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3seq.dtx 4581 2013-07-28 08:38:50Z joseph $
+\GetIdInfo$Id: l3seq.dtx 4623 2013-12-14 13:53:40Z bruno $
{L3 Sequences and stacks}
%</driver|package>
%<*driver>
@@ -777,8 +777,8 @@
%
% A sequence is a control sequence whose top-level expansion is of the
% form \enquote{\cs{s_@@} \cs{@@_item:n} \marg{item_1} \ldots
-% \cs{@@_item:n} \marg{item_n} \cs{s_obj_end}}, with a leading scan
-% mark, $n$~items of the same form, and a trailing scan mark. An
+% \cs{@@_item:n} \marg{item_n}}, with a leading scan
+% mark followed by $n$~items of the same form. An
% earlier implementation used the structure \enquote{\cs{seq_elt:w}
% \meta{item_1} \cs{seq_elt_end:} \ldots \cs{seq_elt:w} \meta{item_n}
% \cs{seq_elt_end:}}. This allowed rapid searching using a delimited
@@ -810,10 +810,17 @@
% \end{macrocode}
% \end{variable}
%
+% \begin{macro}[aux]{\@@_tmp:w}
+% Scratch function for internal use.
+% \begin{macrocode}
+\cs_new_eq:NN \@@_tmp:w ?
+% \end{macrocode}
+% \end{macro}
+%
% \begin{variable}{\c_empty_seq}
% A sequence with no item, following the structure mentioned above.
% \begin{macrocode}
-\tl_const:Nn \c_empty_seq { \s_@@ \s_obj_end }
+\tl_const:Nn \c_empty_seq { \s_@@ }
% \end{macrocode}
% \end{variable}
%
@@ -940,7 +947,7 @@
}
\tl_set:Nx \l_@@_internal_a_tl { \l_@@_internal_a_tl }
}
- #1 #2 { \s_@@ \l_@@_internal_a_tl \s_obj_end }
+ #1 #2 { \s_@@ \l_@@_internal_a_tl }
}
\cs_new:Npn \@@_set_split_auxi:w #1 \@@_set_split_end:
{
@@ -961,25 +968,19 @@
% \UnitTested
% \begin{macro}{\seq_gconcat:NNN, \seq_gconcat:ccc}
% \UnitTested
-% \begin{macro}[aux,EXP]{\@@_concat:NN, \@@_concat:w}
-% When concatenating sequences, one must take care of the trailing
-% \cs{s_obj_end} and leading \cs{s_@@}. The second argument of
-% \cs{@@_concat:NN} is \cs{s_@@}, and \cs{@@_concat:w} removes
-% \cs{s_obj_end} by a delimited approach. The result starts with
-% \cs{s_@@} (of the first sequence), which stops \texttt{f}-expansion.
+% When concatenating sequences, one must remove the leading \cs{s_@@}
+% of the second sequence. The result starts with \cs{s_@@} (of the
+% first sequence), which stops \texttt{f}-expansion.
% \begin{macrocode}
\cs_new_protected:Npn \seq_concat:NNN #1#2#3
- { \tl_set:Nf #1 { \exp_last_unbraced:NNo \@@_concat:NN #2 #3 } }
+ { \tl_set:Nf #1 { \exp_after:wN \use_i:nn \exp_after:wN #2 #3 } }
\cs_new_protected:Npn \seq_gconcat:NNN #1#2#3
- { \tl_gset:Nf #1 { \exp_last_unbraced:NNo \@@_concat:NN #2 #3 } }
-\cs_new:Npn \@@_concat:NN #1#2 { \exp_after:wN \@@_concat:w #1 }
-\cs_new:Npn \@@_concat:w #1 \s_obj_end {#1}
+ { \tl_gset:Nf #1 { \exp_after:wN \use_i:nn \exp_after:wN #2 #3 } }
\cs_generate_variant:Nn \seq_concat:NNN { ccc }
\cs_generate_variant:Nn \seq_gconcat:NNN { ccc }
% \end{macrocode}
% \end{macro}
% \end{macro}
-% \end{macro}
%
% \begin{macro}[pTF]{\seq_if_exist:N, \seq_if_exist:c}
% Copies of the \texttt{cs} functions defined in \pkg{l3basics}.
@@ -1035,41 +1036,28 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{
-% \seq_put_right:Nn, \seq_put_right:NV, \seq_put_right:Nv,
-% \seq_put_right:No, \seq_put_right:Nx,
-% \seq_put_right:cn, \seq_put_right:cV, \seq_put_right:cv,
-% \seq_put_right:co, \seq_put_right:cx
-% }
+% \begin{macro}
+% {
+% \seq_put_right:Nn, \seq_put_right:NV, \seq_put_right:Nv,
+% \seq_put_right:No, \seq_put_right:Nx,
+% \seq_put_right:cn, \seq_put_right:cV, \seq_put_right:cv,
+% \seq_put_right:co, \seq_put_right:cx
+% }
% \UnitTested
-% \begin{macro}{
-% \seq_gput_right:Nn, \seq_gput_right:NV, \seq_gput_right:Nv,
-% \seq_gput_right:No, \seq_gput_right:Nx,
-% \seq_gput_right:cn, \seq_gput_right:cV,\seq_gput_right:cv,
-% \seq_gput_right:co, \seq_gput_right:cx
-% }
-% \begin{macro}[aux,EXP]{\@@_put_right_aux:w}
-% When adding to the right of a sequence, remove \cs{s_obj_end}. This
-% is done by \cs{@@_put_right_aux:w}, which takes its result through
-% \cs{exp_not:n}.
+% \begin{macro}
+% {
+% \seq_gput_right:Nn, \seq_gput_right:NV, \seq_gput_right:Nv,
+% \seq_gput_right:No, \seq_gput_right:Nx,
+% \seq_gput_right:cn, \seq_gput_right:cV, \seq_gput_right:cv,
+% \seq_gput_right:co, \seq_gput_right:cx
+% }
+% Since there is no trailing marker, adding an item to the right of a
+% sequence simply means wrapping it in \cs{@@_item:n}.
% \begin{macrocode}
\cs_new_protected:Npn \seq_put_right:Nn #1#2
- {
- \tl_set:Nx #1
- {
- \exp_after:wN \@@_put_right_aux:w #1
- \exp_not:n { \@@_item:n {#2} \s_obj_end }
- }
- }
+ { \tl_put_right:Nn #1 { \@@_item:n {#2} } }
\cs_new_protected:Npn \seq_gput_right:Nn #1#2
- {
- \tl_gset:Nx #1
- {
- \exp_after:wN \@@_put_right_aux:w #1
- \exp_not:n { \@@_item:n {#2} \s_obj_end }
- }
- }
-\cs_new:Npn \@@_put_right_aux:w #1 \s_obj_end { \exp_not:n {#1} }
+ { \tl_gput_right:Nn #1 { \@@_item:n {#2} } }
\cs_generate_variant:Nn \seq_gput_right:Nn { NV , Nv , No , Nx }
\cs_generate_variant:Nn \seq_gput_right:Nn { c , cV , cv , co , cx }
\cs_generate_variant:Nn \seq_put_right:Nn { NV , Nv , No , Nx }
@@ -1077,7 +1065,6 @@
% \end{macrocode}
% \end{macro}
% \end{macro}
-% \end{macro}
%
% \subsection{Modifying sequences}
%
@@ -1132,7 +1119,7 @@
% The idea of the code here is to avoid a relatively expensive addition of
% items one at a time to an intermediate sequence.
% The approach taken is therefore similar to
-% that in \cs{@@_pop_right_aux:NNN}, using a \enquote{flexible}
+% that in \cs{@@_pop_right:NNN}, using a \enquote{flexible}
% \texttt{x}-type expansion to do most of the work. As \cs{tl_if_eq:nnT}
% is not expandable, a two-part strategy is needed. First, the
% \texttt{x}-type expansion uses \cs{str_if_eq:nnT} to find potential
@@ -1322,27 +1309,24 @@
%
% \begin{macro}{\seq_get_right:NN, \seq_get_right:cN}
% \UnitTested
-% \begin{macro}[aux]{\@@_get_right_setup:wN, \@@_get_right_loop:nn}
-% First prepend \cs{q_no_value}, then take two arguments at a time.
-% Apart from the right-hand end of the sequence, this be a brace group
-% followed by \cs{@@_item:n}. The \cs{use_none:nn} removes both of
-% those. At the end of the sequence, the two question marks are taken
-% by \cs{use_none:nn}, and the assignment is placed before the
-% right-most item. The \tn{afterassignment} primitive places
-% \cs{use_none:n} to get rid of a trailing \cs{@@_get_right_loop:nn}.
+% \begin{macro}[aux]{\@@_get_right_loop:nn}
+% First remove \cs{s_@@} and prepend \cs{q_no_value}, then take two
+% arguments at a time. Before the right-hand end of the sequence,
+% this is a brace group followed by \cs{@@_item:n}, both removed by
+% \cs{use_none:nn}. At the end of the sequence, the two question
+% marks are taken by \cs{use_none:nn}, and the assignment is placed
+% before the right-most item. In the next iteration,
+% \cs{@@_get_right_loop:nn} receives two empty arguments, and
+% \cs{use_none:nn} stops the loop.
% \begin{macrocode}
\cs_new_protected:Npn \seq_get_right:NN #1#2
- { \exp_after:wN \@@_get_right_setup:wN #1 #2 }
-\cs_new_protected:Npn \@@_get_right_setup:wN \s_@@ #1 \s_obj_end #2
{
- \@@_get_right_loop:nn
- \q_no_value
+ \exp_after:wN \use_i_ii:nnn
+ \exp_after:wN \@@_get_right_loop:nn
+ \exp_after:wN \q_no_value
#1
- {
- ??
- \tex_afterassignment:D \use_none:n
- \tl_set:Nn #2
- }
+ { ?? \tl_set:Nn #2 }
+ { } { }
}
\cs_new_protected:Npn \@@_get_right_loop:nn #1#2
{
@@ -1358,8 +1342,7 @@
% \UnitTested
% \begin{macro}{\seq_gpop_right:NN, \seq_gpop_right:cN}
% \UnitTested
-% \begin{macro}[aux]{\@@_pop_right_aux:NNN, \@@_pop_right_loop:nn}
-% \begin{macro}[aux, EXP]{\@@_pop_right_setup:w}
+% \begin{macro}[aux]{\@@_pop_right:NNN, \@@_pop_right_loop:nn}
% The approach to popping from the right is a bit more involved, but does
% use some of the same ideas as getting from the right. What is needed is a
% \enquote{flexible length} way to set a token list variable. This is
@@ -1368,34 +1351,33 @@
% expansion and a \enquote{non-expanding} definition for \cs{@@_item:n},
% the left-most $n - 1$ entries in a sequence of $n$ items will be stored
% back in the sequence. That needs a loop of unknown length, hence using the
-% strange \cs{if_false:} way of including brackets. When the last item
-% of the sequence is reached, the closing bracket for the assignment is
+% strange \cs{if_false:} way of including braces. When the last item
+% of the sequence is reached, the closing brace for the assignment is
% inserted, and |\tl_set:Nn #3| is inserted in front of the final
-% entry. This therefore does the pop assignment. The trailing
-% looping macro is removed by placing a \cs{use_none:n} using the
-% \tn{afterassignment} primitive.
+% entry. This therefore does the pop assignment. One more iteration
+% is performed, with an empty argument and \cs{use_none:nn}, which
+% finally stops the loop.
% \begin{macrocode}
\cs_new_protected_nopar:Npn \seq_pop_right:NN
- { \@@_pop:NNNN \@@_pop_right_aux:NNN \tl_set:Nx }
+ { \@@_pop:NNNN \@@_pop_right:NNN \tl_set:Nx }
\cs_new_protected_nopar:Npn \seq_gpop_right:NN
- { \@@_pop:NNNN \@@_pop_right_aux:NNN \tl_gset:Nx }
-\cs_new_protected:Npn \@@_pop_right_aux:NNN #1#2#3
+ { \@@_pop:NNNN \@@_pop_right:NNN \tl_gset:Nx }
+\cs_new_protected:Npn \@@_pop_right:NNN #1#2#3
{
- \cs_set_eq:NN \seq_tmp:w \@@_item:n
+ \cs_set_eq:NN \@@_tmp:w \@@_item:n
\cs_set_eq:NN \@@_item:n \scan_stop:
#1 #2
{ \if_false: } \fi: \s_@@
- \exp_after:wN \@@_pop_right_setup:w
+ \exp_after:wN \use_i:nnn
+ \exp_after:wN \@@_pop_right_loop:nn
#2
{
- \s_obj_end \if_false: { \fi: }
- \tex_afterassignment:D \use_none:n
+ \if_false: { \fi: }
\tl_set:Nx #3
}
- \cs_set_eq:NN \@@_item:n \seq_tmp:w
+ { } \use_none:nn
+ \cs_set_eq:NN \@@_item:n \@@_tmp:w
}
-\cs_new:Npn \@@_pop_right_setup:w \s_@@ #1 \s_obj_end
- { \exp_after:wN \@@_pop_right_loop:nn \use_none:n #1 }
\cs_new:Npn \@@_pop_right_loop:nn #1#2
{
#2 { \exp_not:n {#1} }
@@ -1407,7 +1389,6 @@
% \end{macro}
% \end{macro}
% \end{macro}
-% \end{macro}
%
% \begin{macro}[TF]{\seq_get_left:NN, \seq_get_left:cN}
% \begin{macro}[TF]{\seq_get_right:NN, \seq_get_right:cN}
@@ -1439,9 +1420,9 @@
\prg_new_protected_conditional:Npnn \seq_gpop_left:NN #1#2 { T , F , TF }
{ \@@_pop_TF:NNNN \@@_pop_left:NNN \tl_gset:Nn #1 #2 }
\prg_new_protected_conditional:Npnn \seq_pop_right:NN #1#2 { T , F , TF }
- { \@@_pop_TF:NNNN \@@_pop_right_aux:NNN \tl_set:Nx #1 #2 }
+ { \@@_pop_TF:NNNN \@@_pop_right:NNN \tl_set:Nx #1 #2 }
\prg_new_protected_conditional:Npnn \seq_gpop_right:NN #1#2 { T , F , TF }
- { \@@_pop_TF:NNNN \@@_pop_right_aux:NNN \tl_gset:Nx #1 #2 }
+ { \@@_pop_TF:NNNN \@@_pop_right:NNN \tl_gset:Nx #1 #2 }
\cs_generate_variant:Nn \seq_pop_left:NNT { c }
\cs_generate_variant:Nn \seq_pop_left:NNF { c }
\cs_generate_variant:Nn \seq_pop_left:NNTF { c }
@@ -1480,7 +1461,7 @@
%
% \begin{macro}{\seq_map_function:NN, \seq_map_function:cN}
% \UnitTested
-% \begin{macro}[aux,rEXP]{\@@_map_function:wN,\@@_map_function:NNn}
+% \begin{macro}[aux,rEXP]{\@@_map_function:NNn}
% The idea here is to apply the code of |#2| to each item in the
% sequence without altering the definition of \cs{@@_item:n}. This
% is done as by noting that every odd token in the sequence must be
@@ -1489,10 +1470,12 @@
% loop without needing to do a (relatively-expensive) quark test.
% \begin{macrocode}
\cs_new:Npn \seq_map_function:NN #1#2
- { \exp_after:wN \@@_map_function:wN #1 #2 }
-\cs_new:Npn \@@_map_function:wN \s_@@ #1 \s_obj_end #2
{
- \@@_map_function:NNn #2 #1 { ? \seq_map_break: } { }
+ \exp_after:wN \use_i_ii:nnn
+ \exp_after:wN \@@_map_function:NNn
+ \exp_after:wN #2
+ #1
+ { ? \seq_map_break: } { }
\__prg_break_point:Nn \seq_map_break: { }
}
\cs_new:Npn \@@_map_function:NNn #1#2#3
@@ -1605,12 +1588,12 @@
%
% \begin{macro}[EXP]{\seq_use:Nnnn, \seq_use:cnnn}
% \begin{macro}[EXP, aux]
-% {\@@_use:wnwnn, \@@_use_setup:w, \@@_use:nwwwwnwn, \@@_use:nwwn}
+% {\@@_use:NNnNnn, \@@_use_setup:w, \@@_use:nwwwwnwn, \@@_use:nwwn}
% \begin{macro}[EXP]{\seq_use:Nn, \seq_use:cn}
% See \cs{clist_use:Nnnn} for a general explanation. The main
% difference is that we use \cs{@@_item:n} as a delimiter rather than
% commas. We also need to add \cs{@@_item:n} at various places, and
-% \cs{s_@@} and \cs{s_obj_end}.
+% \cs{s_@@}.
% \begin{macrocode}
\cs_new:Npn \seq_use:Nnnn #1#2#3#4
{
@@ -1619,12 +1602,8 @@
\int_case:nnF { \seq_count:N #1 }
{
{ 0 } { }
- { 1 }
- {
- \exp_after:wN \@@_use:wnwnn #1
- \@@_item:n { } \s_obj_end { }
- }
- { 2 } { \exp_after:wN \@@_use:wnwnn #1 {#2} }
+ { 1 } { \exp_after:wN \@@_use:NNnNnn #1 ? { } { } }
+ { 2 } { \exp_after:wN \@@_use:NNnNnn #1 {#2} }
}
{
\exp_after:wN \@@_use_setup:w #1 \@@_item:n
@@ -1636,11 +1615,8 @@
{ \__msg_kernel_expandable_error:nnn { kernel } { bad-variable } {#1} }
}
\cs_generate_variant:Nn \seq_use:Nnnn { c }
-\cs_new:Npn \@@_use:wnwnn
- #1 \@@_item:n #2#3 \@@_item:n #4#5 \s_obj_end #6
- { \exp_not:n { #2 #6 #4 } }
-\cs_new:Npn \@@_use_setup:w \s_@@ #1 \s_obj_end
- { \@@_use:nwwwwnwn { } #1 }
+\cs_new:Npn \@@_use:NNnNnn #1#2#3#4#5#6 { \exp_not:n { #3 #6 #5 } }
+\cs_new:Npn \@@_use_setup:w \s_@@ { \@@_use:nwwwwnwn { } }
\cs_new:Npn \@@_use:nwwwwnwn
#1 \@@_item:n #2 \@@_item:n #3 \@@_item:n #4#5
\q_mark #6#7 \q_stop #8
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
index d7bfa2428e7..f5164b6f093 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
@@ -35,7 +35,7 @@
%
%<*driver|package>
\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3tl.dtx 4592 2013-09-16 21:11:41Z joseph $
+\GetIdInfo$Id: l3tl.dtx 4625 2013-12-27 15:55:36Z joseph $
{L3 Token lists}
%</driver|package>
%<*driver>
@@ -776,7 +776,8 @@
% \end{syntax}
% Removes any leading and trailing explicit space characters
% (explicit tokens with character code~$32$ and category code~$10$)
-% from the content of the \meta{tl~var}.
+% from the content of the \meta{tl~var}. Note that this therefore
+% \emph{resets} the content of the variable.
% \end{function}
%
% \section{The first token from a token list}
diff --git a/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx b/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx
index fbc01946956..f66febfeaeb 100644
--- a/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx
+++ b/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx
@@ -37,8 +37,8 @@
%<*driver|package>
% The version of expl3 required is tested as early as possible, as
% some really old versions do not define \ProvidesExplPackage.
-\RequirePackage{expl3}[2013/11/19]
-%<package>\@ifpackagelater{expl3}{2013/11/19}
+\RequirePackage{expl3}[2013/12/31]
+%<package>\@ifpackagelater{expl3}{2013/12/31}
%<package> {}
%<package> {%
%<package> \PackageError{l3keys2e}{Support package l3kernel too old}
@@ -50,7 +50,7 @@
%<package> }%
%<package> \endinput
%<package> }
-\GetIdInfo$Id: l3keys2e.dtx 4608 2013-11-19 15:52:24Z joseph $
+\GetIdInfo$Id: l3keys2e.dtx 4634 2013-12-31 17:32:19Z joseph $
{LaTeX2e option processing using LaTeX3 keys}
%</driver|package>
%<*driver>
diff --git a/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx b/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx
index 8c088950b7e..5c8c0ddaa43 100644
--- a/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx
+++ b/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx
@@ -41,8 +41,8 @@
%<*driver|package>
% The version of expl3 required is tested as early as possible, as
% some really old versions do not define \ProvidesExplPackage.
-\RequirePackage{expl3}[2013/11/19]
-%<package>\@ifpackagelater{expl3}{2013/11/19}
+\RequirePackage{expl3}[2013/12/31]
+%<package>\@ifpackagelater{expl3}{2013/12/31}
%<package> {}
%<package> {%
%<package> \PackageError{xparse}{Support package l3kernel too old}
@@ -54,7 +54,7 @@
%<package> }%
%<package> \endinput
%<package> }
-\GetIdInfo$Id: xparse.dtx 4609 2013-11-19 16:01:54Z joseph $
+\GetIdInfo$Id: xparse.dtx 4634 2013-12-31 17:32:19Z joseph $
{L3 Experimental document command parser}
%</driver|package>
%<*driver>
diff --git a/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx b/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx
index 7a90562f543..534ebfa4c28 100644
--- a/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx
+++ b/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx
@@ -41,8 +41,8 @@
%<*driver|package>
% The version of expl3 required is tested as early as possible, as
% some really old versions do not define \ProvidesExplPackage.
-\RequirePackage{expl3}[2013/11/19]
-%<package>\@ifpackagelater{expl3}{2013/11/19}
+\RequirePackage{expl3}[2013/12/31]
+%<package>\@ifpackagelater{expl3}{2013/12/31}
%<package> {}
%<package> {%
%<package> \PackageError{xtemplate}{Support package l3kernel too old}
@@ -54,7 +54,7 @@
%<package> }%
%<package> \endinput
%<package> }
-\GetIdInfo$Id: xtemplate.dtx 4608 2013-11-19 15:52:24Z joseph $
+\GetIdInfo$Id: xtemplate.dtx 4634 2013-12-31 17:32:19Z joseph $
{L3 Experimental prototype document functions}
%</driver|package>
%<*driver>
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3sort/l3sort.sty b/Master/texmf-dist/tex/latex/l3experimental/l3sort/l3sort.sty
index e1129ef82da..cffbfc4bcc1 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3sort/l3sort.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3sort/l3sort.sty
@@ -47,7 +47,7 @@
%% -----------------------------------------------------------------------
%%
\RequirePackage{expl3}
-\GetIdInfo$Id: l3sort.dtx 4566 2013-07-24 19:34:45Z bruno $
+\GetIdInfo$Id: l3sort.dtx 4623 2013-12-14 13:53:40Z bruno $
{L3 Experimental sorting functions}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
@@ -85,13 +85,13 @@
{
\__sort_main:NNNnNn \tl_set:Nn
\seq_map_inline:Nn \seq_map_break:
- { \s__seq \__sort_toks:NNw \exp_not:N \__seq_item:n 0 ; \s_obj_end }
+ { \s__seq \__sort_toks:NNw \exp_not:N \__seq_item:n 0 ; }
}
\cs_new_protected_nopar:Npn \seq_gsort:Nn
{
\__sort_main:NNNnNn \tl_gset:Nn
\seq_map_inline:Nn \seq_map_break:
- { \s__seq \__sort_toks:NNw \exp_not:N \__seq_item:n 0 ; \s_obj_end }
+ { \s__seq \__sort_toks:NNw \exp_not:N \__seq_item:n 0 ; }
}
\cs_new_protected_nopar:Npn \tl_sort:Nn
{
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex-trace.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex-trace.sty
index 16337136351..3d1224dfd80 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex-trace.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex-trace.sty
@@ -46,7 +46,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{expl3}
-\GetIdInfo$Id: l3regex.dtx 4576 2013-07-24 21:40:24Z joseph $
+\GetIdInfo$Id: l3regex.dtx 4623 2013-12-14 13:53:40Z bruno $
{L3 Experimental regular expressions}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
@@ -2439,7 +2439,6 @@
\c_one
{ \l__regex_submatch_int - \c_one }
\__regex_extract_seq_aux:n
- \s_obj_end
}
\int_compare:nNnF
{ \flag_height:n { __regex_begin } + \flag_height:n { __regex_end } }
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex.sty
index a04fee919c5..12774db5615 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex.sty
@@ -46,7 +46,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{expl3}
-\GetIdInfo$Id: l3regex.dtx 4576 2013-07-24 21:40:24Z joseph $
+\GetIdInfo$Id: l3regex.dtx 4623 2013-12-14 13:53:40Z bruno $
{L3 Experimental regular expressions}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
@@ -2412,7 +2412,6 @@
\c_one
{ \l__regex_submatch_int - \c_one }
\__regex_extract_seq_aux:n
- \s_obj_end
}
\int_compare:nNnF
{ \flag_height:n { __regex_begin } + \flag_height:n { __regex_end } }
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty
index 122f0341a8e..aeb2ecc59fa 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty
@@ -257,7 +257,7 @@
}
\cs_new_protected:Npn \__str_if_flag_no_error:nnx #1#2#3
{ \flag_if_raised:nT {#1} { \bool_gset_true:N \g__str_error_bool } }
-\cs_new_protected:Npn \__str_if_flag_times:nT #1#2
+\cs_new:Npn \__str_if_flag_times:nT #1#2
{ \flag_if_raised:nT {#1} { #2~(x \flag_height:n {#1} ) } }
\cs_new_protected_nopar:Npn \str_set_convert:Nnnn
{ \__str_convert:nNNnnn { } \tl_set_eq:NN }
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88591.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88591.def
new file mode 100644
index 00000000000..151bd7ac53f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88591.def
@@ -0,0 +1,55 @@
+%%
+%% This is file `l3str-enc-iso88591.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `iso88591')
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%% File: l3str-convert.dtx Copyright (C) 2013 The LaTeX3 Project
+%%
+%% It 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 file is part of the "l3experimental 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 LaTeX3 Project.
+%%
+%% -----------------------------------------------------------------------
+\__str_declare_eight_bit_encoding:nnn { iso88591 }
+ {
+ }
+ {
+ }
+%%
+%%
+%% End of file `l3str-enc-iso88591.def'.
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885910.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885910.def
new file mode 100644
index 00000000000..a7fb0bb145a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885910.def
@@ -0,0 +1,101 @@
+%%
+%% This is file `l3str-enc-iso885910.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `iso885910')
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%% File: l3str-convert.dtx Copyright (C) 2013 The LaTeX3 Project
+%%
+%% It 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 file is part of the "l3experimental 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 LaTeX3 Project.
+%%
+%% -----------------------------------------------------------------------
+\__str_declare_eight_bit_encoding:nnn { iso885910 }
+ {
+ { A1 } { 0104 }
+ { A2 } { 0112 }
+ { A3 } { 0122 }
+ { A4 } { 012A }
+ { A5 } { 0128 }
+ { A6 } { 0136 }
+ { A8 } { 013B }
+ { A9 } { 0110 }
+ { AA } { 0160 }
+ { AB } { 0166 }
+ { AC } { 017D }
+ { AE } { 016A }
+ { AF } { 014A }
+ { B1 } { 0105 }
+ { B2 } { 0113 }
+ { B3 } { 0123 }
+ { B4 } { 012B }
+ { B5 } { 0129 }
+ { B6 } { 0137 }
+ { B8 } { 013C }
+ { B9 } { 0111 }
+ { BA } { 0161 }
+ { BB } { 0167 }
+ { BC } { 017E }
+ { BD } { 2015 }
+ { BE } { 016B }
+ { BF } { 014B }
+ { C0 } { 0100 }
+ { C7 } { 012E }
+ { C8 } { 010C }
+ { CA } { 0118 }
+ { CC } { 0116 }
+ { D1 } { 0145 }
+ { D2 } { 014C }
+ { D7 } { 0168 }
+ { D9 } { 0172 }
+ { E0 } { 0101 }
+ { E7 } { 012F }
+ { E8 } { 010D }
+ { EA } { 0119 }
+ { EC } { 0117 }
+ { F1 } { 0146 }
+ { F2 } { 014D }
+ { F7 } { 0169 }
+ { F9 } { 0173 }
+ { FF } { 0138 }
+ }
+ {
+ }
+%%
+%%
+%% End of file `l3str-enc-iso885910.def'.
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885911.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885911.def
new file mode 100644
index 00000000000..a1e616cd9c4
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885911.def
@@ -0,0 +1,146 @@
+%%
+%% This is file `l3str-enc-iso885911.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `iso885911')
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%% File: l3str-convert.dtx Copyright (C) 2013 The LaTeX3 Project
+%%
+%% It 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 file is part of the "l3experimental 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 LaTeX3 Project.
+%%
+%% -----------------------------------------------------------------------
+\__str_declare_eight_bit_encoding:nnn { iso885911 }
+ {
+ { A1 } { 0E01 }
+ { A2 } { 0E02 }
+ { A3 } { 0E03 }
+ { A4 } { 0E04 }
+ { A5 } { 0E05 }
+ { A6 } { 0E06 }
+ { A7 } { 0E07 }
+ { A8 } { 0E08 }
+ { A9 } { 0E09 }
+ { AA } { 0E0A }
+ { AB } { 0E0B }
+ { AC } { 0E0C }
+ { AD } { 0E0D }
+ { AE } { 0E0E }
+ { AF } { 0E0F }
+ { B0 } { 0E10 }
+ { B1 } { 0E11 }
+ { B2 } { 0E12 }
+ { B3 } { 0E13 }
+ { B4 } { 0E14 }
+ { B5 } { 0E15 }
+ { B6 } { 0E16 }
+ { B7 } { 0E17 }
+ { B8 } { 0E18 }
+ { B9 } { 0E19 }
+ { BA } { 0E1A }
+ { BB } { 0E1B }
+ { BC } { 0E1C }
+ { BD } { 0E1D }
+ { BE } { 0E1E }
+ { BF } { 0E1F }
+ { C0 } { 0E20 }
+ { C1 } { 0E21 }
+ { C2 } { 0E22 }
+ { C3 } { 0E23 }
+ { C4 } { 0E24 }
+ { C5 } { 0E25 }
+ { C6 } { 0E26 }
+ { C7 } { 0E27 }
+ { C8 } { 0E28 }
+ { C9 } { 0E29 }
+ { CA } { 0E2A }
+ { CB } { 0E2B }
+ { CC } { 0E2C }
+ { CD } { 0E2D }
+ { CE } { 0E2E }
+ { CF } { 0E2F }
+ { D0 } { 0E30 }
+ { D1 } { 0E31 }
+ { D2 } { 0E32 }
+ { D3 } { 0E33 }
+ { D4 } { 0E34 }
+ { D5 } { 0E35 }
+ { D6 } { 0E36 }
+ { D7 } { 0E37 }
+ { D8 } { 0E38 }
+ { D9 } { 0E39 }
+ { DA } { 0E3A }
+ { DF } { 0E3F }
+ { E0 } { 0E40 }
+ { E1 } { 0E41 }
+ { E2 } { 0E42 }
+ { E3 } { 0E43 }
+ { E4 } { 0E44 }
+ { E5 } { 0E45 }
+ { E6 } { 0E46 }
+ { E7 } { 0E47 }
+ { E8 } { 0E48 }
+ { E9 } { 0E49 }
+ { EA } { 0E4A }
+ { EB } { 0E4B }
+ { EC } { 0E4C }
+ { ED } { 0E4D }
+ { EE } { 0E4E }
+ { EF } { 0E4F }
+ { F0 } { 0E50 }
+ { F1 } { 0E51 }
+ { F2 } { 0E52 }
+ { F3 } { 0E53 }
+ { F4 } { 0E54 }
+ { F5 } { 0E55 }
+ { F6 } { 0E56 }
+ { F7 } { 0E57 }
+ { F8 } { 0E58 }
+ { F9 } { 0E59 }
+ { FA } { 0E5A }
+ { FB } { 0E5B }
+ }
+ {
+ { DB }
+ { DC }
+ { DD }
+ { DE }
+ }
+%%
+%%
+%% End of file `l3str-enc-iso885911.def'.
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885913.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885913.def
new file mode 100644
index 00000000000..96fb972d529
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885913.def
@@ -0,0 +1,111 @@
+%%
+%% This is file `l3str-enc-iso885913.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `iso885913')
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%% File: l3str-convert.dtx Copyright (C) 2013 The LaTeX3 Project
+%%
+%% It 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 file is part of the "l3experimental 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 LaTeX3 Project.
+%%
+%% -----------------------------------------------------------------------
+\__str_declare_eight_bit_encoding:nnn { iso885913 }
+ {
+ { A1 } { 201D }
+ { A5 } { 201E }
+ { A8 } { 00D8 }
+ { AA } { 0156 }
+ { AF } { 00C6 }
+ { B4 } { 201C }
+ { B8 } { 00F8 }
+ { BA } { 0157 }
+ { BF } { 00E6 }
+ { C0 } { 0104 }
+ { C1 } { 012E }
+ { C2 } { 0100 }
+ { C3 } { 0106 }
+ { C6 } { 0118 }
+ { C7 } { 0112 }
+ { C8 } { 010C }
+ { CA } { 0179 }
+ { CB } { 0116 }
+ { CC } { 0122 }
+ { CD } { 0136 }
+ { CE } { 012A }
+ { CF } { 013B }
+ { D0 } { 0160 }
+ { D1 } { 0143 }
+ { D2 } { 0145 }
+ { D4 } { 014C }
+ { D8 } { 0172 }
+ { D9 } { 0141 }
+ { DA } { 015A }
+ { DB } { 016A }
+ { DD } { 017B }
+ { DE } { 017D }
+ { E0 } { 0105 }
+ { E1 } { 012F }
+ { E2 } { 0101 }
+ { E3 } { 0107 }
+ { E6 } { 0119 }
+ { E7 } { 0113 }
+ { E8 } { 010D }
+ { EA } { 017A }
+ { EB } { 0117 }
+ { EC } { 0123 }
+ { ED } { 0137 }
+ { EE } { 012B }
+ { EF } { 013C }
+ { F0 } { 0161 }
+ { F1 } { 0144 }
+ { F2 } { 0146 }
+ { F4 } { 014D }
+ { F8 } { 0173 }
+ { F9 } { 0142 }
+ { FA } { 015B }
+ { FB } { 016B }
+ { FD } { 017C }
+ { FE } { 017E }
+ { FF } { 2019 }
+ }
+ {
+ }
+%%
+%%
+%% End of file `l3str-enc-iso885913.def'.
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885914.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885914.def
new file mode 100644
index 00000000000..0e77b57e633
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885914.def
@@ -0,0 +1,86 @@
+%%
+%% This is file `l3str-enc-iso885914.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `iso885914')
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%% File: l3str-convert.dtx Copyright (C) 2013 The LaTeX3 Project
+%%
+%% It 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 file is part of the "l3experimental 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 LaTeX3 Project.
+%%
+%% -----------------------------------------------------------------------
+\__str_declare_eight_bit_encoding:nnn { iso885914 }
+ {
+ { A1 } { 1E02 }
+ { A2 } { 1E03 }
+ { A4 } { 010A }
+ { A5 } { 010B }
+ { A6 } { 1E0A }
+ { A8 } { 1E80 }
+ { AA } { 1E82 }
+ { AB } { 1E0B }
+ { AC } { 1EF2 }
+ { AF } { 0178 }
+ { B0 } { 1E1E }
+ { B1 } { 1E1F }
+ { B2 } { 0120 }
+ { B3 } { 0121 }
+ { B4 } { 1E40 }
+ { B5 } { 1E41 }
+ { B7 } { 1E56 }
+ { B8 } { 1E81 }
+ { B9 } { 1E57 }
+ { BA } { 1E83 }
+ { BB } { 1E60 }
+ { BC } { 1EF3 }
+ { BD } { 1E84 }
+ { BE } { 1E85 }
+ { BF } { 1E61 }
+ { D0 } { 0174 }
+ { D7 } { 1E6A }
+ { DE } { 0176 }
+ { F0 } { 0175 }
+ { F7 } { 1E6B }
+ { FE } { 0177 }
+ }
+ {
+ }
+%%
+%%
+%% End of file `l3str-enc-iso885914.def'.
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885915.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885915.def
new file mode 100644
index 00000000000..7b3d1deed9f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885915.def
@@ -0,0 +1,63 @@
+%%
+%% This is file `l3str-enc-iso885915.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `iso885915')
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%% File: l3str-convert.dtx Copyright (C) 2013 The LaTeX3 Project
+%%
+%% It 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 file is part of the "l3experimental 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 LaTeX3 Project.
+%%
+%% -----------------------------------------------------------------------
+\__str_declare_eight_bit_encoding:nnn { iso885915 }
+ {
+ { A4 } { 20AC }
+ { A6 } { 0160 }
+ { A8 } { 0161 }
+ { B4 } { 017D }
+ { B8 } { 017E }
+ { BC } { 0152 }
+ { BD } { 0153 }
+ { BE } { 0178 }
+ }
+ {
+ }
+%%
+%%
+%% End of file `l3str-enc-iso885915.def'.
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885916.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885916.def
new file mode 100644
index 00000000000..8b8bd74ae8d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885916.def
@@ -0,0 +1,95 @@
+%%
+%% This is file `l3str-enc-iso885916.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `iso885916')
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%% File: l3str-convert.dtx Copyright (C) 2013 The LaTeX3 Project
+%%
+%% It 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 file is part of the "l3experimental 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 LaTeX3 Project.
+%%
+%% -----------------------------------------------------------------------
+\__str_declare_eight_bit_encoding:nnn { iso885916 }
+ {
+ { A1 } { 0104 }
+ { A2 } { 0105 }
+ { A3 } { 0141 }
+ { A4 } { 20AC }
+ { A5 } { 201E }
+ { A6 } { 0160 }
+ { A8 } { 0161 }
+ { AA } { 0218 }
+ { AC } { 0179 }
+ { AE } { 017A }
+ { AF } { 017B }
+ { B2 } { 010C }
+ { B3 } { 0142 }
+ { B4 } { 017D }
+ { B5 } { 201D }
+ { B8 } { 017E }
+ { B9 } { 010D }
+ { BA } { 0219 }
+ { BC } { 0152 }
+ { BD } { 0153 }
+ { BE } { 0178 }
+ { BF } { 017C }
+ { C3 } { 0102 }
+ { C5 } { 0106 }
+ { D0 } { 0110 }
+ { D1 } { 0143 }
+ { D5 } { 0150 }
+ { D7 } { 015A }
+ { D8 } { 0170 }
+ { DD } { 0118 }
+ { DE } { 021A }
+ { E3 } { 0103 }
+ { E5 } { 0107 }
+ { F0 } { 0111 }
+ { F1 } { 0144 }
+ { F5 } { 0151 }
+ { F7 } { 015B }
+ { F8 } { 0171 }
+ { FD } { 0119 }
+ { FE } { 021B }
+ }
+ {
+ }
+%%
+%%
+%% End of file `l3str-enc-iso885916.def'.
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88592.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88592.def
new file mode 100644
index 00000000000..8fffeac5146
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88592.def
@@ -0,0 +1,112 @@
+%%
+%% This is file `l3str-enc-iso88592.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `iso88592')
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%% File: l3str-convert.dtx Copyright (C) 2013 The LaTeX3 Project
+%%
+%% It 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 file is part of the "l3experimental 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 LaTeX3 Project.
+%%
+%% -----------------------------------------------------------------------
+\__str_declare_eight_bit_encoding:nnn { iso88592 }
+ {
+ { A1 } { 0104 }
+ { A2 } { 02D8 }
+ { A3 } { 0141 }
+ { A5 } { 013D }
+ { A6 } { 015A }
+ { A9 } { 0160 }
+ { AA } { 015E }
+ { AB } { 0164 }
+ { AC } { 0179 }
+ { AE } { 017D }
+ { AF } { 017B }
+ { B1 } { 0105 }
+ { B2 } { 02DB }
+ { B3 } { 0142 }
+ { B5 } { 013E }
+ { B6 } { 015B }
+ { B7 } { 02C7 }
+ { B9 } { 0161 }
+ { BA } { 015F }
+ { BB } { 0165 }
+ { BC } { 017A }
+ { BD } { 02DD }
+ { BE } { 017E }
+ { BF } { 017C }
+ { C0 } { 0154 }
+ { C3 } { 0102 }
+ { C5 } { 0139 }
+ { C6 } { 0106 }
+ { C8 } { 010C }
+ { CA } { 0118 }
+ { CC } { 011A }
+ { CF } { 010E }
+ { D0 } { 0110 }
+ { D1 } { 0143 }
+ { D2 } { 0147 }
+ { D5 } { 0150 }
+ { D8 } { 0158 }
+ { D9 } { 016E }
+ { DB } { 0170 }
+ { DE } { 0162 }
+ { E0 } { 0155 }
+ { E3 } { 0103 }
+ { E5 } { 013A }
+ { E6 } { 0107 }
+ { E8 } { 010D }
+ { EA } { 0119 }
+ { EC } { 011B }
+ { EF } { 010F }
+ { F0 } { 0111 }
+ { F1 } { 0144 }
+ { F2 } { 0148 }
+ { F5 } { 0151 }
+ { F8 } { 0159 }
+ { F9 } { 016F }
+ { FB } { 0171 }
+ { FE } { 0163 }
+ { FF } { 02D9 }
+ }
+ {
+ }
+%%
+%%
+%% End of file `l3str-enc-iso88592.def'.
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88593.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88593.def
new file mode 100644
index 00000000000..eede36a00cd
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88593.def
@@ -0,0 +1,90 @@
+%%
+%% This is file `l3str-enc-iso88593.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `iso88593')
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%% File: l3str-convert.dtx Copyright (C) 2013 The LaTeX3 Project
+%%
+%% It 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 file is part of the "l3experimental 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 LaTeX3 Project.
+%%
+%% -----------------------------------------------------------------------
+\__str_declare_eight_bit_encoding:nnn { iso88593 }
+ {
+ { A1 } { 0126 }
+ { A2 } { 02D8 }
+ { A6 } { 0124 }
+ { A9 } { 0130 }
+ { AA } { 015E }
+ { AB } { 011E }
+ { AC } { 0134 }
+ { AF } { 017B }
+ { B1 } { 0127 }
+ { B6 } { 0125 }
+ { B9 } { 0131 }
+ { BA } { 015F }
+ { BB } { 011F }
+ { BC } { 0135 }
+ { BF } { 017C }
+ { C5 } { 010A }
+ { C6 } { 0108 }
+ { D5 } { 0120 }
+ { D8 } { 011C }
+ { DD } { 016C }
+ { DE } { 015C }
+ { E5 } { 010B }
+ { E6 } { 0109 }
+ { F5 } { 0121 }
+ { F8 } { 011D }
+ { FD } { 016D }
+ { FE } { 015D }
+ { FF } { 02D9 }
+ }
+ {
+ { A5 }
+ { AE }
+ { BE }
+ { C3 }
+ { D0 }
+ { E3 }
+ { F0 }
+ }
+%%
+%%
+%% End of file `l3str-enc-iso88593.def'.
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88594.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88594.def
new file mode 100644
index 00000000000..d1c825dfa7c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88594.def
@@ -0,0 +1,105 @@
+%%
+%% This is file `l3str-enc-iso88594.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `iso88594')
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%% File: l3str-convert.dtx Copyright (C) 2013 The LaTeX3 Project
+%%
+%% It 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 file is part of the "l3experimental 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 LaTeX3 Project.
+%%
+%% -----------------------------------------------------------------------
+\__str_declare_eight_bit_encoding:nnn { iso88594 }
+ {
+ { A1 } { 0104 }
+ { A2 } { 0138 }
+ { A3 } { 0156 }
+ { A5 } { 0128 }
+ { A6 } { 013B }
+ { A9 } { 0160 }
+ { AA } { 0112 }
+ { AB } { 0122 }
+ { AC } { 0166 }
+ { AE } { 017D }
+ { B1 } { 0105 }
+ { B2 } { 02DB }
+ { B3 } { 0157 }
+ { B5 } { 0129 }
+ { B6 } { 013C }
+ { B7 } { 02C7 }
+ { B9 } { 0161 }
+ { BA } { 0113 }
+ { BB } { 0123 }
+ { BC } { 0167 }
+ { BD } { 014A }
+ { BE } { 017E }
+ { BF } { 014B }
+ { C0 } { 0100 }
+ { C7 } { 012E }
+ { C8 } { 010C }
+ { CA } { 0118 }
+ { CC } { 0116 }
+ { CF } { 012A }
+ { D0 } { 0110 }
+ { D1 } { 0145 }
+ { D2 } { 014C }
+ { D3 } { 0136 }
+ { D9 } { 0172 }
+ { DD } { 0168 }
+ { DE } { 016A }
+ { E0 } { 0101 }
+ { E7 } { 012F }
+ { E8 } { 010D }
+ { EA } { 0119 }
+ { EC } { 0117 }
+ { EF } { 012B }
+ { F0 } { 0111 }
+ { F1 } { 0146 }
+ { F2 } { 014D }
+ { F3 } { 0137 }
+ { F9 } { 0173 }
+ { FD } { 0169 }
+ { FE } { 016B }
+ { FF } { 02D9 }
+ }
+ {
+ }
+%%
+%%
+%% End of file `l3str-enc-iso88594.def'.
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88595.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88595.def
new file mode 100644
index 00000000000..6f82eaf2f03
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88595.def
@@ -0,0 +1,149 @@
+%%
+%% This is file `l3str-enc-iso88595.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `iso88595')
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%% File: l3str-convert.dtx Copyright (C) 2013 The LaTeX3 Project
+%%
+%% It 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 file is part of the "l3experimental 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 LaTeX3 Project.
+%%
+%% -----------------------------------------------------------------------
+\__str_declare_eight_bit_encoding:nnn { iso88595 }
+ {
+ { A1 } { 0401 }
+ { A2 } { 0402 }
+ { A3 } { 0403 }
+ { A4 } { 0404 }
+ { A5 } { 0405 }
+ { A6 } { 0406 }
+ { A7 } { 0407 }
+ { A8 } { 0408 }
+ { A9 } { 0409 }
+ { AA } { 040A }
+ { AB } { 040B }
+ { AC } { 040C }
+ { AE } { 040E }
+ { AF } { 040F }
+ { B0 } { 0410 }
+ { B1 } { 0411 }
+ { B2 } { 0412 }
+ { B3 } { 0413 }
+ { B4 } { 0414 }
+ { B5 } { 0415 }
+ { B6 } { 0416 }
+ { B7 } { 0417 }
+ { B8 } { 0418 }
+ { B9 } { 0419 }
+ { BA } { 041A }
+ { BB } { 041B }
+ { BC } { 041C }
+ { BD } { 041D }
+ { BE } { 041E }
+ { BF } { 041F }
+ { C0 } { 0420 }
+ { C1 } { 0421 }
+ { C2 } { 0422 }
+ { C3 } { 0423 }
+ { C4 } { 0424 }
+ { C5 } { 0425 }
+ { C6 } { 0426 }
+ { C7 } { 0427 }
+ { C8 } { 0428 }
+ { C9 } { 0429 }
+ { CA } { 042A }
+ { CB } { 042B }
+ { CC } { 042C }
+ { CD } { 042D }
+ { CE } { 042E }
+ { CF } { 042F }
+ { D0 } { 0430 }
+ { D1 } { 0431 }
+ { D2 } { 0432 }
+ { D3 } { 0433 }
+ { D4 } { 0434 }
+ { D5 } { 0435 }
+ { D6 } { 0436 }
+ { D7 } { 0437 }
+ { D8 } { 0438 }
+ { D9 } { 0439 }
+ { DA } { 043A }
+ { DB } { 043B }
+ { DC } { 043C }
+ { DD } { 043D }
+ { DE } { 043E }
+ { DF } { 043F }
+ { E0 } { 0440 }
+ { E1 } { 0441 }
+ { E2 } { 0442 }
+ { E3 } { 0443 }
+ { E4 } { 0444 }
+ { E5 } { 0445 }
+ { E6 } { 0446 }
+ { E7 } { 0447 }
+ { E8 } { 0448 }
+ { E9 } { 0449 }
+ { EA } { 044A }
+ { EB } { 044B }
+ { EC } { 044C }
+ { ED } { 044D }
+ { EE } { 044E }
+ { EF } { 044F }
+ { F0 } { 2116 }
+ { F1 } { 0451 }
+ { F2 } { 0452 }
+ { F3 } { 0453 }
+ { F4 } { 0454 }
+ { F5 } { 0455 }
+ { F6 } { 0456 }
+ { F7 } { 0457 }
+ { F8 } { 0458 }
+ { F9 } { 0459 }
+ { FA } { 045A }
+ { FB } { 045B }
+ { FC } { 045C }
+ { FD } { 00A7 }
+ { FE } { 045E }
+ { FF } { 045F }
+ }
+ {
+ }
+%%
+%%
+%% End of file `l3str-enc-iso88595.def'.
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88596.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88596.def
new file mode 100644
index 00000000000..5988e27f241
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88596.def
@@ -0,0 +1,135 @@
+%%
+%% This is file `l3str-enc-iso88596.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `iso88596')
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%% File: l3str-convert.dtx Copyright (C) 2013 The LaTeX3 Project
+%%
+%% It 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 file is part of the "l3experimental 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 LaTeX3 Project.
+%%
+%% -----------------------------------------------------------------------
+\__str_declare_eight_bit_encoding:nnn { iso88596 }
+ {
+ { AC } { 060C }
+ { BB } { 061B }
+ { BF } { 061F }
+ { C1 } { 0621 }
+ { C2 } { 0622 }
+ { C3 } { 0623 }
+ { C4 } { 0624 }
+ { C5 } { 0625 }
+ { C6 } { 0626 }
+ { C7 } { 0627 }
+ { C8 } { 0628 }
+ { C9 } { 0629 }
+ { CA } { 062A }
+ { CB } { 062B }
+ { CC } { 062C }
+ { CD } { 062D }
+ { CE } { 062E }
+ { CF } { 062F }
+ { D0 } { 0630 }
+ { D1 } { 0631 }
+ { D2 } { 0632 }
+ { D3 } { 0633 }
+ { D4 } { 0634 }
+ { D5 } { 0635 }
+ { D6 } { 0636 }
+ { D7 } { 0637 }
+ { D8 } { 0638 }
+ { D9 } { 0639 }
+ { DA } { 063A }
+ { E0 } { 0640 }
+ { E1 } { 0641 }
+ { E2 } { 0642 }
+ { E3 } { 0643 }
+ { E4 } { 0644 }
+ { E5 } { 0645 }
+ { E6 } { 0646 }
+ { E7 } { 0647 }
+ { E8 } { 0648 }
+ { E9 } { 0649 }
+ { EA } { 064A }
+ { EB } { 064B }
+ { EC } { 064C }
+ { ED } { 064D }
+ { EE } { 064E }
+ { EF } { 064F }
+ { F0 } { 0650 }
+ { F1 } { 0651 }
+ { F2 } { 0652 }
+ }
+ {
+ { A1 }
+ { A2 }
+ { A3 }
+ { A5 }
+ { A6 }
+ { A7 }
+ { A8 }
+ { A9 }
+ { AA }
+ { AB }
+ { AE }
+ { AF }
+ { B0 }
+ { B1 }
+ { B2 }
+ { B3 }
+ { B4 }
+ { B5 }
+ { B6 }
+ { B7 }
+ { B8 }
+ { B9 }
+ { BA }
+ { BC }
+ { BD }
+ { BE }
+ { C0 }
+ { DB }
+ { DC }
+ { DD }
+ { DE }
+ { DF }
+ }
+%%
+%%
+%% End of file `l3str-enc-iso88596.def'.
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88597.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88597.def
new file mode 100644
index 00000000000..bae593ca37b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88597.def
@@ -0,0 +1,134 @@
+%%
+%% This is file `l3str-enc-iso88597.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `iso88597')
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%% File: l3str-convert.dtx Copyright (C) 2013 The LaTeX3 Project
+%%
+%% It 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 file is part of the "l3experimental 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 LaTeX3 Project.
+%%
+%% -----------------------------------------------------------------------
+\__str_declare_eight_bit_encoding:nnn { iso88597 }
+ {
+ { A1 } { 2018 }
+ { A2 } { 2019 }
+ { A4 } { 20AC }
+ { A5 } { 20AF }
+ { AA } { 037A }
+ { AF } { 2015 }
+ { B4 } { 0384 }
+ { B5 } { 0385 }
+ { B6 } { 0386 }
+ { B8 } { 0388 }
+ { B9 } { 0389 }
+ { BA } { 038A }
+ { BC } { 038C }
+ { BE } { 038E }
+ { BF } { 038F }
+ { C0 } { 0390 }
+ { C1 } { 0391 }
+ { C2 } { 0392 }
+ { C3 } { 0393 }
+ { C4 } { 0394 }
+ { C5 } { 0395 }
+ { C6 } { 0396 }
+ { C7 } { 0397 }
+ { C8 } { 0398 }
+ { C9 } { 0399 }
+ { CA } { 039A }
+ { CB } { 039B }
+ { CC } { 039C }
+ { CD } { 039D }
+ { CE } { 039E }
+ { CF } { 039F }
+ { D0 } { 03A0 }
+ { D1 } { 03A1 }
+ { D3 } { 03A3 }
+ { D4 } { 03A4 }
+ { D5 } { 03A5 }
+ { D6 } { 03A6 }
+ { D7 } { 03A7 }
+ { D8 } { 03A8 }
+ { D9 } { 03A9 }
+ { DA } { 03AA }
+ { DB } { 03AB }
+ { DC } { 03AC }
+ { DD } { 03AD }
+ { DE } { 03AE }
+ { DF } { 03AF }
+ { E0 } { 03B0 }
+ { E1 } { 03B1 }
+ { E2 } { 03B2 }
+ { E3 } { 03B3 }
+ { E4 } { 03B4 }
+ { E5 } { 03B5 }
+ { E6 } { 03B6 }
+ { E7 } { 03B7 }
+ { E8 } { 03B8 }
+ { E9 } { 03B9 }
+ { EA } { 03BA }
+ { EB } { 03BB }
+ { EC } { 03BC }
+ { ED } { 03BD }
+ { EE } { 03BE }
+ { EF } { 03BF }
+ { F0 } { 03C0 }
+ { F1 } { 03C1 }
+ { F2 } { 03C2 }
+ { F3 } { 03C3 }
+ { F4 } { 03C4 }
+ { F5 } { 03C5 }
+ { F6 } { 03C6 }
+ { F7 } { 03C7 }
+ { F8 } { 03C8 }
+ { F9 } { 03C9 }
+ { FA } { 03CA }
+ { FB } { 03CB }
+ { FC } { 03CC }
+ { FD } { 03CD }
+ { FE } { 03CE }
+ }
+ {
+ { AE }
+ { D2 }
+ }
+%%
+%%
+%% End of file `l3str-enc-iso88597.def'.
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88598.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88598.def
new file mode 100644
index 00000000000..09f7aad125f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88598.def
@@ -0,0 +1,122 @@
+%%
+%% This is file `l3str-enc-iso88598.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `iso88598')
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%% File: l3str-convert.dtx Copyright (C) 2013 The LaTeX3 Project
+%%
+%% It 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 file is part of the "l3experimental 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 LaTeX3 Project.
+%%
+%% -----------------------------------------------------------------------
+\__str_declare_eight_bit_encoding:nnn { iso88598 }
+ {
+ { AA } { 00D7 }
+ { BA } { 00F7 }
+ { DF } { 2017 }
+ { E0 } { 05D0 }
+ { E1 } { 05D1 }
+ { E2 } { 05D2 }
+ { E3 } { 05D3 }
+ { E4 } { 05D4 }
+ { E5 } { 05D5 }
+ { E6 } { 05D6 }
+ { E7 } { 05D7 }
+ { E8 } { 05D8 }
+ { E9 } { 05D9 }
+ { EA } { 05DA }
+ { EB } { 05DB }
+ { EC } { 05DC }
+ { ED } { 05DD }
+ { EE } { 05DE }
+ { EF } { 05DF }
+ { F0 } { 05E0 }
+ { F1 } { 05E1 }
+ { F2 } { 05E2 }
+ { F3 } { 05E3 }
+ { F4 } { 05E4 }
+ { F5 } { 05E5 }
+ { F6 } { 05E6 }
+ { F7 } { 05E7 }
+ { F8 } { 05E8 }
+ { F9 } { 05E9 }
+ { FA } { 05EA }
+ { FD } { 200E }
+ { FE } { 200F }
+ }
+ {
+ { A1 }
+ { BF }
+ { C0 }
+ { C1 }
+ { C2 }
+ { C3 }
+ { C4 }
+ { C5 }
+ { C6 }
+ { C7 }
+ { C8 }
+ { C9 }
+ { CA }
+ { CB }
+ { CC }
+ { CD }
+ { CE }
+ { CF }
+ { D0 }
+ { D1 }
+ { D2 }
+ { D3 }
+ { D4 }
+ { D5 }
+ { D6 }
+ { D7 }
+ { D8 }
+ { D9 }
+ { DA }
+ { DB }
+ { DC }
+ { DD }
+ { DE }
+ { FB }
+ { FC }
+ }
+%%
+%%
+%% End of file `l3str-enc-iso88598.def'.
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88599.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88599.def
new file mode 100644
index 00000000000..f7aad4489f7
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88599.def
@@ -0,0 +1,61 @@
+%%
+%% This is file `l3str-enc-iso88599.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `iso88599')
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%% File: l3str-convert.dtx Copyright (C) 2013 The LaTeX3 Project
+%%
+%% It 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 file is part of the "l3experimental 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 LaTeX3 Project.
+%%
+%% -----------------------------------------------------------------------
+\__str_declare_eight_bit_encoding:nnn { iso88599 }
+ {
+ { D0 } { 011E }
+ { DD } { 0130 }
+ { DE } { 015E }
+ { F0 } { 011F }
+ { FD } { 0131 }
+ { FE } { 015F }
+ }
+ {
+ }
+%%
+%%
+%% End of file `l3str-enc-iso88599.def'.
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf16.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf16.def
new file mode 100644
index 00000000000..83d52ad734a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf16.def
@@ -0,0 +1,228 @@
+%%
+%% This is file `l3str-enc-utf16.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `utf16')
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%% File: l3str-convert.dtx Copyright (C) 2013 The LaTeX3 Project
+%%
+%% It 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 file is part of the "l3experimental 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 LaTeX3 Project.
+%%
+%% -----------------------------------------------------------------------
+\group_begin:
+ \char_set_catcode_other:N \^^fe
+ \char_set_catcode_other:N \^^ff
+ \cs_new_protected_nopar:cpn { __str_convert_encode_utf16: }
+ {
+ \__str_encode_utf_xvi_aux:N \__str_output_byte_pair_be:n
+ \tl_gput_left:Nx \g__str_result_tl { ^^fe ^^ff }
+ }
+ \cs_new_protected_nopar:cpn { __str_convert_encode_utf16be: }
+ { \__str_encode_utf_xvi_aux:N \__str_output_byte_pair_be:n }
+ \cs_new_protected_nopar:cpn { __str_convert_encode_utf16le: }
+ { \__str_encode_utf_xvi_aux:N \__str_output_byte_pair_le:n }
+ \cs_new_protected:Npn \__str_encode_utf_xvi_aux:N #1
+ {
+ \flag_clear:n { str_error }
+ \cs_set_eq:NN \__str_tmp:w #1
+ \__str_convert_gmap_internal:N \__str_encode_utf_xvi_char:n
+ \__str_if_flag_error:nnx { str_error } { utf16-encode } { }
+ }
+ \cs_new:Npn \__str_encode_utf_xvi_char:n #1
+ {
+ \if_int_compare:w #1 < "D800 \exp_stop_f:
+ \__str_tmp:w {#1}
+ \else:
+ \if_int_compare:w #1 < "10000 \exp_stop_f:
+ \if_int_compare:w #1 < "E000 \exp_stop_f:
+ \flag_raise:n { str_error }
+ \__str_tmp:w { \c__str_replacement_char_int }
+ \else:
+ \__str_tmp:w {#1}
+ \fi:
+ \else:
+ \exp_args:Nf \__str_tmp:w { \int_div_truncate:nn {#1} {"400} + "D7C0 }
+ \exp_args:Nf \__str_tmp:w { \int_mod:nn {#1} {"400} + "DC00 }
+ \fi:
+ \fi:
+ }
+ \flag_clear_new:n { str_missing }
+ \flag_clear_new:n { str_extra }
+ \flag_clear_new:n { str_end }
+ \__msg_kernel_new:nnnn { str } { utf16-encode }
+ { Unicode~string~cannot~be~expressed~in~UTF-16:~surrogate. }
+ {
+ Surrogate~code~points~(in~the~range~[U+D800,~U+DFFF])~
+ can~be~expressed~in~the~UTF-8~and~UTF-32~encodings,~
+ but~not~in~the~UTF-16~encoding.
+ }
+ \__msg_kernel_new:nnnn { str } { utf16-decode }
+ {
+ Invalid~UTF-16~string: \exp_last_unbraced:Nf \use_none:n
+ \__str_if_flag_times:nT { str_missing } { ,~missing~trail~surrogate }
+ \__str_if_flag_times:nT { str_extra } { ,~extra~trail~surrogate }
+ \__str_if_flag_times:nT { str_end } { ,~odd~number~of~bytes }
+ .
+ }
+ {
+ In~the~UTF-16~encoding,~each~Unicode~character~is~encoded~as~
+ 2~or~4~bytes: \\
+ \iow_indent:n
+ {
+ Code~point~in~[U+0000,~U+D7FF]:~two~bytes \\
+ Code~point~in~[U+D800,~U+DFFF]:~illegal \\
+ Code~point~in~[U+E000,~U+FFFF]:~two~bytes \\
+ Code~point~in~[U+10000,~U+10FFFF]:~
+ a~lead~surrogate~and~a~trail~surrogate \\
+ }
+ Lead~surrogates~are~pairs~of~bytes~in~the~range~[0xD800,~0xDBFF],~
+ and~trail~surrogates~are~in~the~range~[0xDC00,~0xDFFF].
+ \flag_if_raised:nT { str_missing }
+ {
+ \\\\
+ A~lead~surrogate~was~not~followed~by~a~trail~surrogate.
+ }
+ \flag_if_raised:nT { str_extra }
+ {
+ \\\\
+ LaTeX~came~across~a~trail~surrogate~when~it~was~not~expected.
+ }
+ \flag_if_raised:nT { str_end }
+ {
+ \\\\
+ The~string~contained~an~odd~number~of~bytes.~This~is~invalid:~
+ the~basic~code~unit~for~UTF-16~is~16~bits~(2~bytes).
+ }
+ }
+ \cs_new_protected_nopar:cpn { __str_convert_decode_utf16be: }
+ { \__str_decode_utf_xvi:Nw 1 \g__str_result_tl \s__stop }
+ \cs_new_protected_nopar:cpn { __str_convert_decode_utf16le: }
+ { \__str_decode_utf_xvi:Nw 2 \g__str_result_tl \s__stop }
+ \cs_new_protected_nopar:cpn { __str_convert_decode_utf16: }
+ {
+ \exp_after:wN \__str_decode_utf_xvi_bom:NN
+ \g__str_result_tl \s__stop \s__stop \s__stop
+ }
+ \cs_new_protected:Npn \__str_decode_utf_xvi_bom:NN #1#2
+ {
+ \str_if_eq_x:nnTF { #1#2 } { ^^ff ^^fe }
+ { \__str_decode_utf_xvi:Nw 2 }
+ {
+ \str_if_eq_x:nnTF { #1#2 } { ^^fe ^^ff }
+ { \__str_decode_utf_xvi:Nw 1 }
+ { \__str_decode_utf_xvi:Nw 1 #1#2 }
+ }
+ }
+ \cs_new_protected:Npn \__str_decode_utf_xvi:Nw #1#2 \s__stop
+ {
+ \flag_clear:n { str_error }
+ \flag_clear:n { str_missing }
+ \flag_clear:n { str_extra }
+ \flag_clear:n { str_end }
+ \cs_set:Npn \__str_tmp:w ##1 ##2 { ` ## #1 }
+ \tl_gset:Nx \g__str_result_tl
+ {
+ \exp_after:wN \__str_decode_utf_xvi_pair:NN
+ #2 \q_nil \q_nil
+ \__prg_break_point:
+ }
+ \__str_if_flag_error:nnx { str_error } { utf16-decode } { }
+ }
+ \cs_new:Npn \__str_decode_utf_xvi_pair:NN #1#2
+ {
+ \if_meaning:w \q_nil #2
+ \__str_decode_utf_xvi_pair_end:Nw #1
+ \fi:
+ \if_case:w
+ \__int_eval:w ( \__str_tmp:w #1#2 - "D6 ) / \c_four \__int_eval_end:
+ \or: \exp_after:wN \__str_decode_utf_xvi_quad:NNwNN
+ \or: \exp_after:wN \__str_decode_utf_xvi_extra:NNw
+ \fi:
+ #1#2 \s__tl
+ \int_eval:n { "100 * \__str_tmp:w #1#2 + \__str_tmp:w #2#1 } \s__tl
+ \__str_decode_utf_xvi_pair:NN
+ }
+ \cs_new:Npn \__str_decode_utf_xvi_quad:NNwNN
+ #1#2 #3 \__str_decode_utf_xvi_pair:NN #4#5
+ {
+ \if_meaning:w \q_nil #5
+ \__str_decode_utf_xvi_error:nNN { missing } #1#2
+ \__str_decode_utf_xvi_pair_end:Nw #4
+ \fi:
+ \if_int_compare:w
+ \if_int_compare:w \__str_tmp:w #4#5 < "DC \exp_stop_f:
+ \c_zero = \c_one
+ \else:
+ \__str_tmp:w #4#5 < "E0 \exp_stop_f:
+ \fi:
+ #1 #2 #4 #5 \s__tl
+ \int_eval:n
+ {
+ ( "100 * \__str_tmp:w #1#2 + \__str_tmp:w #2#1 - "D7F7 ) * "400
+ + "100 * \__str_tmp:w #4#5 + \__str_tmp:w #5#4
+ }
+ \s__tl
+ \exp_after:wN \use_i:nnn
+ \else:
+ \__str_decode_utf_xvi_error:nNN { missing } #1#2
+ \fi:
+ \__str_decode_utf_xvi_pair:NN #4#5
+ }
+ \cs_new:Npn \__str_decode_utf_xvi_pair_end:Nw #1 \fi:
+ {
+ \fi:
+ \if_meaning:w \q_nil #1
+ \else:
+ \__str_decode_utf_xvi_error:nNN { end } #1 \prg_do_nothing:
+ \fi:
+ \__prg_break:
+ }
+ \cs_new:Npn \__str_decode_utf_xvi_extra:NNw #1#2 \s__tl #3 \s__tl
+ { \__str_decode_utf_xvi_error:nNN { extra } #1#2 }
+ \cs_new:Npn \__str_decode_utf_xvi_error:nNN #1#2#3
+ {
+ \flag_raise:n { str_error }
+ \flag_raise:n { str_#1 }
+ #2 #3 \s__tl
+ \int_use:N \c__str_replacement_char_int \s__tl
+ }
+\group_end:
+%%
+%%
+%% End of file `l3str-enc-utf16.def'.
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf32.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf32.def
new file mode 100644
index 00000000000..a75b05875c6
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf32.def
@@ -0,0 +1,179 @@
+%%
+%% This is file `l3str-enc-utf32.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `utf32')
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%% File: l3str-convert.dtx Copyright (C) 2013 The LaTeX3 Project
+%%
+%% It 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 file is part of the "l3experimental 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 LaTeX3 Project.
+%%
+%% -----------------------------------------------------------------------
+\group_begin:
+ \char_set_catcode_other:N \^^00
+ \char_set_catcode_other:N \^^fe
+ \char_set_catcode_other:N \^^ff
+ \cs_new_protected_nopar:cpn { __str_convert_encode_utf32: }
+ {
+ \__str_convert_gmap_internal:N \__str_encode_utf_xxxii_be:n
+ \tl_gput_left:Nx \g__str_result_tl { ^^00 ^^00 ^^fe ^^ff }
+ }
+ \cs_new_protected_nopar:cpn { __str_convert_encode_utf32be: }
+ { \__str_convert_gmap_internal:N \__str_encode_utf_xxxii_be:n }
+ \cs_new_protected_nopar:cpn { __str_convert_encode_utf32le: }
+ { \__str_convert_gmap_internal:N \__str_encode_utf_xxxii_le:n }
+ \cs_new:Npn \__str_encode_utf_xxxii_be:n #1
+ {
+ \exp_args:Nf \__str_encode_utf_xxxii_be_aux:nn
+ { \int_div_truncate:nn {#1} { "100 } } {#1}
+ }
+ \cs_new:Npn \__str_encode_utf_xxxii_be_aux:nn #1#2
+ {
+ ^^00
+ \__str_output_byte_pair_be:n {#1}
+ \__str_output_byte:n { #2 - #1 * "100 }
+ }
+ \cs_new:Npn \__str_encode_utf_xxxii_le:n #1
+ {
+ \exp_args:Nf \__str_encode_utf_xxxii_le_aux:nn
+ { \int_div_truncate:nn {#1} { "100 } } {#1}
+ }
+ \cs_new:Npn \__str_encode_utf_xxxii_le_aux:nn #1#2
+ {
+ \__str_output_byte:n { #2 - #1 * "100 }
+ \__str_output_byte_pair_le:n {#1}
+ ^^00
+ }
+ \flag_clear_new:n { str_overflow }
+ \flag_clear_new:n { str_end }
+ \__msg_kernel_new:nnnn { str } { utf32-decode }
+ {
+ Invalid~UTF-32~string: \exp_last_unbraced:Nf \use_none:n
+ \__str_if_flag_times:nT { str_overflow } { ,~code~point~too~large }
+ \__str_if_flag_times:nT { str_end } { ,~truncated~string }
+ .
+ }
+ {
+ In~the~UTF-32~encoding,~every~Unicode~character~
+ (in~the~range~[U+0000,~U+10FFFF])~is~encoded~as~4~bytes.
+ \flag_if_raised:nT { str_overflow }
+ {
+ \\\\
+ LaTeX~came~across~a~code~point~larger~than~1114111,~
+ the~maximum~code~point~defined~by~Unicode.~
+ Perhaps~the~string~was~not~encoded~in~the~UTF-32~encoding?
+ }
+ \flag_if_raised:nT { str_end }
+ {
+ \\\\
+ The~length~of~the~string~is~not~a~multiple~of~4.~
+ Perhaps~the~string~was~truncated?
+ }
+ }
+ \cs_new_protected_nopar:cpn { __str_convert_decode_utf32be: }
+ { \__str_decode_utf_xxxii:Nw 1 \g__str_result_tl \s__stop }
+ \cs_new_protected_nopar:cpn { __str_convert_decode_utf32le: }
+ { \__str_decode_utf_xxxii:Nw 2 \g__str_result_tl \s__stop }
+ \cs_new_protected_nopar:cpn { __str_convert_decode_utf32: }
+ {
+ \exp_after:wN \__str_decode_utf_xxxii_bom:NNNN \g__str_result_tl
+ \s__stop \s__stop \s__stop \s__stop \s__stop
+ }
+ \cs_new_protected:Npn \__str_decode_utf_xxxii_bom:NNNN #1#2#3#4
+ {
+ \str_if_eq_x:nnTF { #1#2#3#4 } { ^^ff ^^fe ^^00 ^^00 }
+ { \__str_decode_utf_xxxii:Nw 2 }
+ {
+ \str_if_eq_x:nnTF { #1#2#3#4 } { ^^00 ^^00 ^^fe ^^ff }
+ { \__str_decode_utf_xxxii:Nw 1 }
+ { \__str_decode_utf_xxxii:Nw 1 #1#2#3#4 }
+ }
+ }
+ \cs_new_protected:Npn \__str_decode_utf_xxxii:Nw #1#2 \s__stop
+ {
+ \flag_clear:n { str_overflow }
+ \flag_clear:n { str_end }
+ \flag_clear:n { str_error }
+ \cs_set:Npn \__str_tmp:w ##1 ##2 { ` ## #1 }
+ \tl_gset:Nx \g__str_result_tl
+ {
+ \exp_after:wN \__str_decode_utf_xxxii_loop:NNNN
+ #2 \s__stop \s__stop \s__stop \s__stop
+ \__prg_break_point:
+ }
+ \__str_if_flag_error:nnx { str_error } { utf32-decode } { }
+ }
+ \cs_new:Npn \__str_decode_utf_xxxii_loop:NNNN #1#2#3#4
+ {
+ \if_meaning:w \s__stop #4
+ \exp_after:wN \__str_decode_utf_xxxii_end:w
+ \fi:
+ #1#2#3#4 \s__tl
+ \if_int_compare:w \__str_tmp:w #1#4 > \c_zero
+ \flag_raise:n { str_overflow }
+ \flag_raise:n { str_error }
+ \int_use:N \c__str_replacement_char_int
+ \else:
+ \if_int_compare:w \__str_tmp:w #2#3 > \c_sixteen
+ \flag_raise:n { str_overflow }
+ \flag_raise:n { str_error }
+ \int_use:N \c__str_replacement_char_int
+ \else:
+ \int_eval:n
+ { \__str_tmp:w #2#3*"10000 + \__str_tmp:w #3#2*"100 + \__str_tmp:w #4#1 }
+ \fi:
+ \fi:
+ \s__tl
+ \__str_decode_utf_xxxii_loop:NNNN
+ }
+ \cs_new:Npn \__str_decode_utf_xxxii_end:w #1 \s__stop
+ {
+ \tl_if_empty:nF {#1}
+ {
+ \flag_raise:n { str_end }
+ \flag_raise:n { str_error }
+ #1 \s__tl
+ \int_use:N \c__str_replacement_char_int \s__tl
+ }
+ \__prg_break:
+ }
+\group_end:
+%%
+%%
+%% End of file `l3str-enc-utf32.def'.
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf8.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf8.def
new file mode 100644
index 00000000000..ffe148d13e2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf8.def
@@ -0,0 +1,215 @@
+%%
+%% This is file `l3str-enc-utf8.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `utf8')
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%% File: l3str-convert.dtx Copyright (C) 2013 The LaTeX3 Project
+%%
+%% It 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 file is part of the "l3experimental 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 LaTeX3 Project.
+%%
+%% -----------------------------------------------------------------------
+\cs_new_protected_nopar:cpn { __str_convert_encode_utf8: }
+ { \__str_convert_gmap_internal:N \__str_encode_utf_viii_char:n }
+\cs_new:Npn \__str_encode_utf_viii_char:n #1
+ {
+ \__str_encode_utf_viii_loop:wwnnw #1 ; \c_minus_one + \c_zero * ;
+ { 128 } { \c_zero }
+ { 32 } { 192 }
+ { 16 } { 224 }
+ { 8 } { 240 }
+ \q_stop
+ }
+\cs_new:Npn \__str_encode_utf_viii_loop:wwnnw #1; #2; #3#4 #5 \q_stop
+ {
+ \if_int_compare:w #1 < #3 \exp_stop_f:
+ \__str_output_byte:n { #1 + #4 }
+ \exp_after:wN \use_none_delimit_by_q_stop:w
+ \fi:
+ \exp_after:wN \__str_encode_utf_viii_loop:wwnnw
+ \__int_value:w \int_div_truncate:nn {#1} {64} ; #1 ;
+ #5 \q_stop
+ \__str_output_byte:n { #2 - 64 * ( #1 - \c_two ) }
+ }
+\flag_clear_new:n { str_missing }
+\flag_clear_new:n { str_extra }
+\flag_clear_new:n { str_overlong }
+\flag_clear_new:n { str_overflow }
+\__msg_kernel_new:nnnn { str } { utf8-decode }
+ {
+ Invalid~UTF-8~string: \exp_last_unbraced:Nf \use_none:n
+ \__str_if_flag_times:nT { str_missing } { ,~missing~continuation~byte }
+ \__str_if_flag_times:nT { str_extra } { ,~extra~continuation~byte }
+ \__str_if_flag_times:nT { str_overlong } { ,~overlong~form }
+ \__str_if_flag_times:nT { str_overflow } { ,~code~point~too~large }
+ .
+ }
+ {
+ In~the~UTF-8~encoding,~each~Unicode~character~consists~in~
+ 1~to~4~bytes,~with~the~following~bit~pattern: \\
+ \iow_indent:n
+ {
+ Code~point~\ \ \ \ <~128:~0xxxxxxx \\
+ Code~point~\ \ \ <~2048:~110xxxxx~10xxxxxx \\
+ Code~point~\ \ <~65536:~1110xxxx~10xxxxxx~10xxxxxx \\
+ Code~point~ <~1114112:~11110xxx~10xxxxxx~10xxxxxx~10xxxxxx \\
+ }
+ Bytes~of~the~form~10xxxxxx~are~called~continuation~bytes.
+ \flag_if_raised:nT { str_missing }
+ {
+ \\\\
+ A~leading~byte~(in~the~range~[192,255])~was~not~followed~by~
+ the~appropriate~number~of~continuation~bytes.
+ }
+ \flag_if_raised:nT { str_extra }
+ {
+ \\\\
+ LaTeX~came~across~a~continuation~byte~when~it~was~not~expected.
+ }
+ \flag_if_raised:nT { str_overlong }
+ {
+ \\\\
+ Every~Unicode~code~point~must~be~expressed~in~the~shortest~
+ possible~form.~For~instance,~'0xC0'~'0x83'~is~not~a~valid~
+ representation~for~the~code~point~3.
+ }
+ \flag_if_raised:nT { str_overflow }
+ {
+ \\\\
+ Unicode~limits~code~points~to~the~range~[0,1114111].
+ }
+ }
+\cs_new_protected_nopar:cpn { __str_convert_decode_utf8: }
+ {
+ \flag_clear:n { str_error }
+ \flag_clear:n { str_missing }
+ \flag_clear:n { str_extra }
+ \flag_clear:n { str_overlong }
+ \flag_clear:n { str_overflow }
+ \tl_gset:Nx \g__str_result_tl
+ {
+ \exp_after:wN \__str_decode_utf_viii_start:N \g__str_result_tl
+ { \__prg_break: \__str_decode_utf_viii_end: }
+ \__prg_break_point:
+ }
+ \__str_if_flag_error:nnx { str_error } { utf8-decode } { }
+ }
+\cs_new:Npn \__str_decode_utf_viii_start:N #1
+ {
+ #1
+ \if_int_compare:w `#1 < "C0 \exp_stop_f:
+ \s__tl
+ \if_int_compare:w `#1 < "80 \exp_stop_f:
+ \__int_value:w `#1
+ \else:
+ \flag_raise:n { str_extra }
+ \flag_raise:n { str_error }
+ \int_use:N \c__str_replacement_char_int
+ \fi:
+ \else:
+ \exp_after:wN \__str_decode_utf_viii_continuation:wwN
+ \int_use:N \__int_eval:w `#1 - "C0 \exp_after:wN \__int_eval_end:
+ \fi:
+ \s__tl
+ \use_none_delimit_by_q_stop:w {"80} {"800} {"10000} {"110000} \q_stop
+ \__str_decode_utf_viii_start:N
+ }
+\cs_new:Npn \__str_decode_utf_viii_continuation:wwN
+ #1 \s__tl #2 \__str_decode_utf_viii_start:N #3
+ {
+ \use_none:n #3
+ \if_int_compare:w `#3 <
+ \if_int_compare:w `#3 < "80 \exp_stop_f: - \fi:
+ "C0 \exp_stop_f:
+ #3
+ \exp_after:wN \__str_decode_utf_viii_aux:wNnnwN
+ \int_use:N \__int_eval:w
+ #1 * "40 + `#3 - "80
+ \exp_after:wN \__int_eval_end:
+ \else:
+ \s__tl
+ \flag_raise:n { str_missing }
+ \flag_raise:n { str_error }
+ \int_use:N \c__str_replacement_char_int
+ \fi:
+ \s__tl
+ #2
+ \__str_decode_utf_viii_start:N #3
+ }
+\cs_new:Npn \__str_decode_utf_viii_aux:wNnnwN
+ #1 \s__tl #2#3#4 #5 \__str_decode_utf_viii_start:N #6
+ {
+ \if_int_compare:w #1 < #4 \exp_stop_f:
+ \s__tl
+ \if_int_compare:w #1 < #3 \exp_stop_f:
+ \flag_raise:n { str_overlong }
+ \flag_raise:n { str_error }
+ \int_use:N \c__str_replacement_char_int
+ \else:
+ #1
+ \fi:
+ \else:
+ \if_meaning:w \q_stop #5
+ \__str_decode_utf_viii_overflow:w #1
+ \fi:
+ \exp_after:wN \__str_decode_utf_viii_continuation:wwN
+ \int_use:N \__int_eval:w #1 - #4 \exp_after:wN \__int_eval_end:
+ \fi:
+ \s__tl
+ #2 {#4} #5
+ \__str_decode_utf_viii_start:N
+ }
+\cs_new:Npn \__str_decode_utf_viii_overflow:w #1 \fi: #2 \fi:
+ {
+ \fi: \fi:
+ \flag_raise:n { str_overflow }
+ \flag_raise:n { str_error }
+ \int_use:N \c__str_replacement_char_int
+ }
+\cs_new_nopar:Npn \__str_decode_utf_viii_end:
+ {
+ \s__tl
+ \flag_raise:n { str_missing }
+ \flag_raise:n { str_error }
+ \int_use:N \c__str_replacement_char_int \s__tl
+ \__prg_break:
+ }
+%%
+%%
+%% End of file `l3str-enc-utf8.def'.
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-hex.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-hex.def
new file mode 100644
index 00000000000..6059b76076c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-hex.def
@@ -0,0 +1,100 @@
+%%
+%% This is file `l3str-esc-hex.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `hex')
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%% File: l3str-convert.dtx Copyright (C) 2013 The LaTeX3 Project
+%%
+%% It 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 file is part of the "l3experimental 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 LaTeX3 Project.
+%%
+%% -----------------------------------------------------------------------
+\cs_new_protected_nopar:Npn \__str_convert_unescape_hex:
+ {
+ \group_begin:
+ \flag_clear:n { str_error }
+ \int_set:Nn \tex_escapechar:D { 92 }
+ \tl_gset:Nx \g__str_result_tl
+ {
+ \__str_output_byte:w "
+ \exp_last_unbraced:Nf \__str_unescape_hex_auxi:N
+ { \tl_to_str:N \g__str_result_tl }
+ 0 { ? 0 - \c_one \__prg_break: }
+ \__prg_break_point:
+ \__str_output_end:
+ }
+ \__str_if_flag_error:nnx { str_error } { unescape-hex } { }
+ \group_end:
+ }
+\cs_new:Npn \__str_unescape_hex_auxi:N #1
+ {
+ \use_none:n #1
+ \__str_hexadecimal_use:NTF #1
+ { \__str_unescape_hex_auxii:N }
+ {
+ \flag_raise:n { str_error }
+ \__str_unescape_hex_auxi:N
+ }
+ }
+\cs_new:Npn \__str_unescape_hex_auxii:N #1
+ {
+ \use_none:n #1
+ \__str_hexadecimal_use:NTF #1
+ {
+ \__str_output_end:
+ \__str_output_byte:w " \__str_unescape_hex_auxi:N
+ }
+ {
+ \flag_raise:n { str_error }
+ \__str_unescape_hex_auxii:N
+ }
+ }
+\__msg_kernel_new:nnnn { str } { unescape-hex }
+ { String~invalid~in~escaping~'hex':~only~hexadecimal~digits~allowed. }
+ {
+ Some~characters~in~the~string~you~asked~to~convert~are~not~
+ hexadecimal~digits~(0-9,~A-F,~a-f)~nor~spaces.
+ }
+\cs_new_protected_nopar:Npn \__str_convert_escape_hex:
+ { \__str_convert_gmap:N \__str_escape_hex_char:N }
+\cs_new:Npn \__str_escape_hex_char:N #1
+ { \__str_output_hexadecimal:n { `#1 } }
+%%
+%%
+%% End of file `l3str-esc-hex.def'.
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-name.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-name.def
new file mode 100644
index 00000000000..fb5b4d8263a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-name.def
@@ -0,0 +1,121 @@
+%%
+%% This is file `l3str-esc-name.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `name')
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%% File: l3str-convert.dtx Copyright (C) 2013 The LaTeX3 Project
+%%
+%% It 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 file is part of the "l3experimental 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 LaTeX3 Project.
+%%
+%% -----------------------------------------------------------------------
+\cs_set_protected:Npn \__str_tmp:w #1#2#3
+ {
+ \cs_new_protected:cpn { __str_convert_unescape_#2: }
+ {
+ \group_begin:
+ \flag_clear:n { str_byte }
+ \flag_clear:n { str_error }
+ \int_set:Nn \tex_escapechar:D { 92 }
+ \tl_gset:Nx \g__str_result_tl
+ {
+ \exp_after:wN #3 \g__str_result_tl
+ #1 ? { ? \__prg_break: }
+ \__prg_break_point:
+ }
+ \__str_if_flag_error:nnx { str_byte } { non-byte } { #2 }
+ \__str_if_flag_error:nnx { str_error } { unescape-#2 } { }
+ \group_end:
+ }
+ \cs_new:Npn #3 ##1#1##2##3
+ {
+ \__str_filter_bytes:n {##1}
+ \use_none:n ##3
+ \__str_output_byte:w "
+ \__str_hexadecimal_use:NTF ##2
+ {
+ \__str_hexadecimal_use:NTF ##3
+ { }
+ {
+ \flag_raise:n { str_error }
+ * \c_zero + `#1 \use_i:nn
+ }
+ }
+ {
+ \flag_raise:n { str_error }
+ 0 + `#1 \use_i:nn
+ }
+ \__str_output_end:
+ \use_i:nnn #3 ##2##3
+ }
+ \__msg_kernel_new:nnnn { str } { unescape-#2 }
+ { String~invalid~in~escaping~'#2'. }
+ {
+ LaTeX~came~across~the~escape~character~'#1'~not~followed~by~
+ two~hexadecimal~digits.~This~is~invalid~in~the~escaping~'#2'.
+ }
+ }
+\exp_after:wN \__str_tmp:w \c_hash_str { name }
+ \__str_unescape_name_loop:wNN
+\str_const:Nn \c__str_escape_name_not_str { ! " $ & ' } %$
+\str_const:Nn \c__str_escape_name_str { {}/<>[] }
+\cs_new_protected_nopar:Npn \__str_convert_escape_name:
+ { \__str_convert_gmap:N \__str_escape_name_char:N }
+\cs_new:Npn \__str_escape_name_char:N #1
+ {
+ \__str_if_escape_name:NTF #1 {#1}
+ { \c_hash_str \__str_output_hexadecimal:n {`#1} }
+ }
+\prg_new_conditional:Npnn \__str_if_escape_name:N #1 { TF }
+ {
+ \if_int_compare:w `#1 < "2A \exp_stop_f:
+ \__str_if_contains_char:NNTF \c__str_escape_name_not_str #1
+ \prg_return_true: \prg_return_false:
+ \else:
+ \if_int_compare:w `#1 > "7E \exp_stop_f:
+ \prg_return_false:
+ \else:
+ \__str_if_contains_char:NNTF \c__str_escape_name_str #1
+ \prg_return_false: \prg_return_true:
+ \fi:
+ \fi:
+ }
+%%
+%%
+%% End of file `l3str-esc-name.def'.
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-string.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-string.def
new file mode 100644
index 00000000000..b7e5411f1ae
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-string.def
@@ -0,0 +1,169 @@
+%%
+%% This is file `l3str-esc-string.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `string')
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%% File: l3str-convert.dtx Copyright (C) 2013 The LaTeX3 Project
+%%
+%% It 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 file is part of the "l3experimental 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 LaTeX3 Project.
+%%
+%% -----------------------------------------------------------------------
+\group_begin:
+ \char_set_lccode:nn {`\*} {`\\}
+ \char_set_catcode_other:N \^^J
+ \char_set_catcode_other:N \^^M
+ \tl_to_lowercase:n
+ {
+ \cs_new_protected_nopar:Npn \__str_convert_unescape_string:
+ {
+ \group_begin:
+ \flag_clear:n { str_byte }
+ \flag_clear:n { str_error }
+ \int_set:Nn \tex_escapechar:D { 92 }
+ \tl_gset:Nx \g__str_result_tl
+ {
+ \exp_after:wN \__str_unescape_string_newlines:wN
+ \g__str_result_tl \__prg_break: ^^M ?
+ \__prg_break_point:
+ }
+ \tl_gset:Nx \g__str_result_tl
+ {
+ \exp_after:wN \__str_unescape_string_loop:wNNN
+ \g__str_result_tl * ?? { ? \__prg_break: }
+ \__prg_break_point:
+ }
+ \__str_if_flag_error:nnx { str_byte } { non-byte } { string }
+ \__str_if_flag_error:nnx { str_error } { unescape-string } { }
+ \group_end:
+ }
+ \cs_new:Npn \__str_unescape_string_loop:wNNN #1 *#2#3#4
+ }
+ {
+ \__str_filter_bytes:n {#1}
+ \use_none:n #4
+ \__str_output_byte:w '
+ \__str_octal_use:NTF #2
+ {
+ \__str_octal_use:NTF #3
+ {
+ \__str_octal_use:NTF #4
+ {
+ \if_int_compare:w #2 > \c_three
+ - 256
+ \fi:
+ \__str_unescape_string_repeat:NNNNNN
+ }
+ { \__str_unescape_string_repeat:NNNNNN ? }
+ }
+ { \__str_unescape_string_repeat:NNNNNN ?? }
+ }
+ {
+ \str_case_x:nnn {#2}
+ {
+ { \c_backslash_str } { 134 }
+ { ( } { 50 }
+ { ) } { 51 }
+ { r } { 15 }
+ { f } { 14 }
+ { n } { 12 }
+ { t } { 11 }
+ { b } { 10 }
+ { ^^J } { 0 - \c_one }
+ }
+ {
+ \flag_raise:n { str_error }
+ 0 - \c_one \use_i:nn
+ }
+ }
+ \__str_output_end:
+ \use_i:nn \__str_unescape_string_loop:wNNN #2#3#4
+ }
+ \cs_new:Npn \__str_unescape_string_repeat:NNNNNN #1#2#3#4#5#6
+ { \__str_output_end: \__str_unescape_string_loop:wNNN }
+ \cs_new:Npn \__str_unescape_string_newlines:wN #1 ^^M #2
+ {
+ #1
+ \if_charcode:w ^^J #2 \else: ^^J \fi:
+ \__str_unescape_string_newlines:wN #2
+ }
+ \__msg_kernel_new:nnnn { str } { unescape-string }
+ { String~invalid~in~escaping~'string'. }
+ {
+ LaTeX~came~across~an~escape~character~'\c_backslash_str'~
+ not~followed~by~any~of:~'n',~'r',~'t',~'b',~'f',~'(',~')',~
+ '\c_backslash_str',~one~to~three~octal~digits,~or~the~end~
+ of~a~line.
+ }
+\group_end:
+\str_const:Nx \c__str_escape_string_str
+ { \c_backslash_str ( ) }
+\cs_new_protected_nopar:Npn \__str_convert_escape_string:
+ { \__str_convert_gmap:N \__str_escape_string_char:N }
+\cs_new:Npn \__str_escape_string_char:N #1
+ {
+ \__str_if_escape_string:NTF #1
+ {
+ \__str_if_contains_char:NNT
+ \c__str_escape_string_str #1
+ { \c_backslash_str }
+ #1
+ }
+ {
+ \c_backslash_str
+ \int_div_truncate:nn {`#1} {64}
+ \int_mod:nn { \int_div_truncate:nn {`#1} \c_eight } \c_eight
+ \int_mod:nn {`#1} \c_eight
+ }
+ }
+\prg_new_conditional:Npnn \__str_if_escape_string:N #1 { TF }
+ {
+ \if_int_compare:w `#1 < "21 \exp_stop_f:
+ \prg_return_false:
+ \else:
+ \if_int_compare:w `#1 > "7E \exp_stop_f:
+ \prg_return_false:
+ \else:
+ \prg_return_true:
+ \fi:
+ \fi:
+ }
+%%
+%%
+%% End of file `l3str-esc-string.def'.
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-url.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-url.def
new file mode 100644
index 00000000000..5324f7a0124
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-url.def
@@ -0,0 +1,119 @@
+%%
+%% This is file `l3str-esc-url.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `url')
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%% File: l3str-convert.dtx Copyright (C) 2013 The LaTeX3 Project
+%%
+%% It 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 file is part of the "l3experimental 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 LaTeX3 Project.
+%%
+%% -----------------------------------------------------------------------
+\cs_set_protected:Npn \__str_tmp:w #1#2#3
+ {
+ \cs_new_protected:cpn { __str_convert_unescape_#2: }
+ {
+ \group_begin:
+ \flag_clear:n { str_byte }
+ \flag_clear:n { str_error }
+ \int_set:Nn \tex_escapechar:D { 92 }
+ \tl_gset:Nx \g__str_result_tl
+ {
+ \exp_after:wN #3 \g__str_result_tl
+ #1 ? { ? \__prg_break: }
+ \__prg_break_point:
+ }
+ \__str_if_flag_error:nnx { str_byte } { non-byte } { #2 }
+ \__str_if_flag_error:nnx { str_error } { unescape-#2 } { }
+ \group_end:
+ }
+ \cs_new:Npn #3 ##1#1##2##3
+ {
+ \__str_filter_bytes:n {##1}
+ \use_none:n ##3
+ \__str_output_byte:w "
+ \__str_hexadecimal_use:NTF ##2
+ {
+ \__str_hexadecimal_use:NTF ##3
+ { }
+ {
+ \flag_raise:n { str_error }
+ * \c_zero + `#1 \use_i:nn
+ }
+ }
+ {
+ \flag_raise:n { str_error }
+ 0 + `#1 \use_i:nn
+ }
+ \__str_output_end:
+ \use_i:nnn #3 ##2##3
+ }
+ \__msg_kernel_new:nnnn { str } { unescape-#2 }
+ { String~invalid~in~escaping~'#2'. }
+ {
+ LaTeX~came~across~the~escape~character~'#1'~not~followed~by~
+ two~hexadecimal~digits.~This~is~invalid~in~the~escaping~'#2'.
+ }
+ }
+\exp_after:wN \__str_tmp:w \c_percent_str { url }
+ \__str_unescape_url_loop:wNN
+\cs_new_protected_nopar:Npn \__str_convert_escape_url:
+ { \__str_convert_gmap:N \__str_escape_url_char:N }
+\cs_new:Npn \__str_escape_url_char:N #1
+ {
+ \__str_if_escape_url:NTF #1 {#1}
+ { \c_percent_str \__str_output_hexadecimal:n { `#1 } }
+ }
+\prg_new_conditional:Npnn \__str_if_escape_url:N #1 { TF }
+ {
+ \if_int_compare:w `#1 < "41 \exp_stop_f:
+ \__str_if_contains_char:nNTF { "-.<> } #1
+ \prg_return_true: \prg_return_false:
+ \else:
+ \if_int_compare:w `#1 > "7E \exp_stop_f:
+ \prg_return_false:
+ \else:
+ \__str_if_contains_char:nNTF { [ ] } #1
+ \prg_return_false: \prg_return_true:
+ \fi:
+ \fi:
+ }
+%%
+%%
+%% End of file `l3str-esc-url.def'.
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
index 868fef6ab5f..87eed61c5e8 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
@@ -238,12 +238,12 @@
{
\tl_to_str:f
{
- \__str_format_seq:ff { \exp_after:wN \__str_format_seq_extract:w #1 }
+ \__str_format_seq:ff
+ { \exp_after:wN \use_i:nn \exp_after:wN \exp_stop_f: #1 }
{ \__str_format_parse:n {#2} }
}
}
\cs_generate_variant:Nn \seq_format:Nn { c }
-\cs_new:Npn \__str_format_seq_extract:w \s__seq #1 \s_obj_end { \exp_stop_f: #1 }
\cs_new:Npn \__str_format_seq:nn #1#2
{
\__str_format_seq_loop:nnNn { } {#2}
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
index 3ac782837f7..37b1f86053f 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
@@ -60,8 +60,8 @@
}
\def\ExplFileName{expl3}
\def\ExplFileDescription{L3 Experimental code bundle wrapper}
-\def\ExplFileDate{2013/11/19}
-\def\ExplFileVersion{4610}
+\def\ExplFileDate{2013/12/31}
+\def\ExplFileVersion{4634}
\RequirePackage{etex}
\relax
\reserveinserts{32}
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3bootstrap.sty b/Master/texmf-dist/tex/latex/l3kernel/l3bootstrap.sty
index 9cd140d7174..e8217993546 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3bootstrap.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3bootstrap.sty
@@ -102,7 +102,7 @@
{%
\def\ExplFileDate{#1/#2/#3}%
}
-\GetIdInfo$Id: l3bootstrap.dtx 4581 2013-07-28 08:38:50Z joseph $
+\GetIdInfo$Id: l3bootstrap.dtx 4629 2013-12-29 20:59:49Z joseph $
{L3 Bootstrap code}
\ProvidesPackage{l3bootstrap}
[%
@@ -156,7 +156,7 @@
\chardef\csname\detokenize{l__kernel_expl_bool}\endcsname = 0 \relax
}
\protected\edef\ExplSyntaxOn
- {
+ {%
\catcode 9 = 9 \relax
\catcode 32 = 9 \relax
\catcode 34 = 12 \relax
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3candidates.sty b/Master/texmf-dist/tex/latex/l3kernel/l3candidates.sty
index fce554e38d6..868dfd992ee 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3candidates.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3candidates.sty
@@ -47,7 +47,7 @@
%% -----------------------------------------------------------------------
%%
\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3candidates.dtx 4602 2013-11-18 23:19:01Z bruno $
+\GetIdInfo$Id: l3candidates.dtx 4633 2013-12-31 17:28:46Z joseph $
{L3 Experimental additions to l3kernel}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
@@ -784,8 +784,9 @@
{ \__prop_get_Nn:nwwn {#1} }
}
\cs_generate_variant:Nn \prop_get:Nn { c }
-\cs_new:Npn \seq_item:Nn #1 { \exp_after:wN \__seq_item:wNn #1 #1 }
-\cs_new:Npn \__seq_item:wNn \s__seq #1 \s_obj_end #2#3
+\cs_new:Npn \seq_item:Nn #1
+ { \exp_after:wN \__seq_item:wNn #1 \q_stop #1 }
+\cs_new:Npn \__seq_item:wNn \s__seq #1 \q_stop #2#3
{
\exp_args:Nf \__seq_item:nnn
{
@@ -809,17 +810,18 @@
}
\cs_generate_variant:Nn \seq_item:Nn { c }
\cs_new:Npn \seq_mapthread_function:NNN #1#2#3
- { \exp_after:wN \__seq_mapthread_function:wNN #2 #1 #3 }
-\cs_new:Npn \__seq_mapthread_function:wNN \s__seq #1 \s_obj_end #2#3
{
- \exp_after:wN \__seq_mapthread_function:wNw #2 #3
- #1 { ? \__prg_break: } { }
+ \exp_after:wN \__seq_mapthread_function:NNw
+ \exp_after:wN #3
+ \exp_after:wN #1
+ #2 { ? \__prg_break: } { }
\__prg_break_point:
}
-\cs_new:Npn \__seq_mapthread_function:wNw \s__seq #1 \s_obj_end #2
+\cs_new:Npn \__seq_mapthread_function:NNw #1#2
{
- \__seq_mapthread_function:Nnnwnn #2
- #1 { ? \__prg_break: } { }
+ \exp_after:wN \__seq_mapthread_function:Nnnwnn
+ \exp_after:wN #1
+ #2 { ? \__prg_break: } { }
\q_stop
}
\cs_new:Npn \__seq_mapthread_function:Nnnwnn #1#2#3#4 \q_stop #5#6
@@ -834,22 +836,22 @@
\cs_new_protected:Npn \seq_set_from_clist:NN #1#2
{
\tl_set:Nx #1
- { \s__seq \clist_map_function:NN #2 \__seq_wrap_item:n \s_obj_end }
+ { \s__seq \clist_map_function:NN #2 \__seq_wrap_item:n }
}
\cs_new_protected:Npn \seq_set_from_clist:Nn #1#2
{
\tl_set:Nx #1
- { \s__seq \clist_map_function:nN {#2} \__seq_wrap_item:n \s_obj_end }
+ { \s__seq \clist_map_function:nN {#2} \__seq_wrap_item:n }
}
\cs_new_protected:Npn \seq_gset_from_clist:NN #1#2
{
\tl_gset:Nx #1
- { \s__seq \clist_map_function:NN #2 \__seq_wrap_item:n \s_obj_end }
+ { \s__seq \clist_map_function:NN #2 \__seq_wrap_item:n }
}
\cs_new_protected:Npn \seq_gset_from_clist:Nn #1#2
{
\tl_gset:Nx #1
- { \s__seq \clist_map_function:nN {#2} \__seq_wrap_item:n \s_obj_end }
+ { \s__seq \clist_map_function:nN {#2} \__seq_wrap_item:n }
}
\cs_generate_variant:Nn \seq_set_from_clist:NN { Nc }
\cs_generate_variant:Nn \seq_set_from_clist:NN { c , cc }
@@ -857,7 +859,6 @@
\cs_generate_variant:Nn \seq_gset_from_clist:NN { Nc }
\cs_generate_variant:Nn \seq_gset_from_clist:NN { c , cc }
\cs_generate_variant:Nn \seq_gset_from_clist:Nn { c }
-\cs_new_protected_nopar:Npn \__seq_tmp:w { }
\cs_new_protected_nopar:Npn \seq_reverse:N
{ \__seq_reverse:NN \tl_set:Nx }
\cs_new_protected_nopar:Npn \seq_greverse:N
@@ -866,11 +867,9 @@
{
\cs_set_eq:NN \__seq_tmp:w \__seq_item:n
\cs_set_eq:NN \__seq_item:n \__seq_reverse_item:nwn
- #1 #2 { \exp_after:wN \__seq_reverse_setup:w #2 }
+ #1 #2 { #2 \exp_not:n { } }
\cs_set_eq:NN \__seq_item:n \__seq_tmp:w
}
-\cs_new:Npn \__seq_reverse_setup:w #1 \s_obj_end
- { #1 \exp_not:n { } \s_obj_end }
\cs_new:Npn \__seq_reverse_item:nwn #1 #2 \exp_not:n #3
{
#2
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3coffins.sty b/Master/texmf-dist/tex/latex/l3kernel/l3coffins.sty
index a3743a477ad..e19b0b20e62 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3coffins.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3coffins.sty
@@ -47,7 +47,7 @@
%% -----------------------------------------------------------------------
%%
\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3coffins.dtx 4212 2012-09-09 12:24:04Z bruno $
+\GetIdInfo$Id: l3coffins.dtx 4624 2013-12-14 13:58:48Z bruno $
{L3 Coffin code layer}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
@@ -401,7 +401,7 @@
{
\dim_compare:nNnTF {#8} = \c_zero_dim
{
- \dim_set:Nn \l__coffin_x_dim {#6}
+ \dim_set:Nn \l__coffin_y_dim {#6}
\__coffin_calculate_intersection_aux:nnnnnN
{#6} {#2} {#1} {#4} {#3} \l__coffin_x_dim
}
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def
index 7fae4b147c9..154d3c8d659 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def
@@ -47,48 +47,49 @@
%% -----------------------------------------------------------------------
%%
\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3drivers.dtx 4602 2013-11-18 23:19:01Z bruno $
+\GetIdInfo$Id: l3drivers.dtx 4632 2013-12-31 17:09:37Z joseph $
{L3 Experimental drivers}
\ProvidesExplFile
{l3dvidpfmx.def}{\ExplFileDate}{\ExplFileVersion}
{L3 Experimental driver: dvipdfmx}
\__expl_package_check:
-\cs_new_protected_nopar:Npn \__driver_graphic_state_save:
- { \tex_special:D { pdf:content~q } }
-\cs_new_protected_nopar:Npn \__driver_graphic_state_restore:
- { \tex_special:D { pdf:content~Q } }
-\cs_new_protected:Npn \__driver_pdf_literal:n #1
- { \tex_special:D { pdf:content~ #1 } }
-\cs_new_protected:Npn \__driver_pdf_literal_direct:n #1
- { \tex_special:D { pdf:literal~direct~ #1 } }
+\cs_new_protected_nopar:Npn \__driver_state_save:
+ { \tex_special:D { pdf:bcontent } }
+\cs_new_protected_nopar:Npn \__driver_state_restore:
+ { \tex_special:D { pdf:econtent } }
+\cs_new_protected:Npn \__driver_literal:n #1
+ { \tex_special:D { pdf:literal~ #1 } }
+\cs_new_protected:Npn \__driver_matrix:n #1
+ { \__driver_literal:n { direct~ #1 \c_space_tl 0~0~cm } }
\cs_new_protected:Npn \__driver_box_use_clip:N #1
{
- \__driver_graphic_state_save:
- \__driver_pdf_literal_direct:n
+ \__driver_literal:n { q }
+ \__driver_literal:n
{
- 0 ~
+ direct~
+ 0~
\__dim_strip_bp:n { - \box_dp:N #1 } ~
\__dim_strip_bp:n { \box_wd:N #1 } ~
\__dim_strip_bp:n { \box_ht:N #1 + \box_dp:N #1 } ~
re~W~n
}
- \__driver_pdf_matrix:n { -1~0~0~-1 }
- \__driver_graphic_state_save:
- \__driver_pdf_matrix:n { -1~0~0~-1 }
+ \__driver_matrix:n { -1~0~0~-1 }
+ \__driver_literal:n { q }
+ \__driver_matrix:n { -1~0~0~-1 }
\hbox_overlap_right:n { \box_use:N #1 }
- \__driver_graphic_state_restore:
- \__driver_graphic_state_restore:
+ \__driver_literal:n { Q }
+ \__driver_literal:n { Q }
\skip_horizontal:n { \box_wd:N #1 }
}
\cs_new_protected_nopar:Npn \__driver_box_rotate_begin:
{
- \__driver_graphic_state_save:
+ \__driver_state_save:
\box_set_wd:Nn \l__box_internal_box \c_zero_dim
\fp_set:Nn \l__box_cos_fp { round ( \l__box_cos_fp , 5 ) }
\fp_compare:nNnT \l__box_cos_fp = \c_zero_fp
{ \fp_zero:N \l__box_cos_fp }
\fp_set:Nn \l__box_sin_fp { round ( \l__box_sin_fp , 5 ) }
- \__driver_pdf_matrix:n
+ \__driver_matrix:n
{
\fp_use:N \l__box_cos_fp \c_space_tl
\fp_compare:nNnTF \l__box_sin_fp = \c_zero_fp
@@ -102,24 +103,23 @@
\fp_use:N \l__box_cos_fp
}
}
-\cs_new_eq:NN \__driver_box_rotate_end: \__driver_graphic_state_restore:
+\cs_new_eq:NN \__driver_box_rotate_end: \__driver_state_restore:
\cs_new_protected_nopar:Npn \__driver_box_scale_begin:
{
+ \__driver_state_save:
\fp_set:Nn \l__box_scale_x_fp { round ( \l__box_scale_x_fp , 5 ) }
\fp_set:Nn \l__box_scale_y_fp { round ( \l__box_scale_y_fp , 5 ) }
- \__driver_graphic_state_save:
- \__driver_pdf_matrix:n
+ \__driver_matrix:n
{
\fp_use:N \l__box_scale_x_fp \c_space_tl
0~0~
\fp_use:N \l__box_scale_y_fp
}
}
-\cs_new_eq:NN \__driver_box_scale_end: \__driver_graphic_state_restore:
-\cs_new_protected:Npn \__driver_pdf_matrix:n #1
- { \__driver_pdf_literal_direct:n { #1 \c_space_tl 0~0~cm } }
+\cs_new_eq:NN \__driver_box_scale_end: \__driver_state_restore:
\tl_new:N \l__driver_current_color_tl
\tl_set:Nn \l__driver_current_color_tl { gray~0 }
+%% \end{macrocode}
\cs_new_protected_nopar:Npn \__driver_color_ensure_current:
{
\tex_special:D { color~push~\l__driver_current_color_tl }
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def
index 991fe9b59c4..5c22f8648e9 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def
@@ -47,28 +47,28 @@
%% -----------------------------------------------------------------------
%%
\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3drivers.dtx 4602 2013-11-18 23:19:01Z bruno $
+\GetIdInfo$Id: l3drivers.dtx 4632 2013-12-31 17:09:37Z joseph $
{L3 Experimental drivers}
\ProvidesExplFile
{l3dvips.def}{\ExplFileDate}{\ExplFileVersion}
{L3 Experimental driver: dvips}
\__expl_package_check:
-\cs_new_protected_nopar:Npn \__driver_graphic_state_save:
+\cs_new_protected_nopar:Npn \__driver_state_save:
{ \tex_special:D { ps:gsave } }
-\cs_new_protected_nopar:Npn \__driver_graphic_state_restore:
+\cs_new_protected_nopar:Npn \__driver_state_restore:
{ \tex_special:D { ps:grestore } }
-\cs_new_protected:Npn \__driver_ps_literal:n #1
+\cs_new_protected:Npn \__driver_literal:n #1
{ \tex_special:D { ps: #1 } }
\cs_new_protected:Npn \__driver_box_use_clip:N #1
{
- \__driver_graphic_state_save:
- \__driver_ps_literal:n
+ \__driver_state_save:
+ \__driver_literal:n
{
/savedmatrix~matrix~currentmatrix~def~
currentpoint~translate~
Resolution~72~div~VResolution~72~div~scale
}
- \__driver_ps_literal:n
+ \__driver_literal:n
{
0~
\__dim_strip_bp:n { \box_dp:N #1 } ~
@@ -76,16 +76,16 @@
\__dim_strip_bp:n { - \box_ht:N #1 - \box_dp:N #1 } ~
rectclip
}
- \__driver_ps_literal:n { savedmatrix~setmatrix }
+ \__driver_literal:n { savedmatrix~setmatrix }
\hbox_overlap_right:n { \box_use:N #1 }
- \__driver_graphic_state_restore:
+ \__driver_state_restore:
\skip_horizontal:n { \box_wd:N #1 }
}
\cs_new_protected_nopar:Npn \__driver_box_rotate_begin:
{
- \__driver_graphic_state_save:
+ \__driver_state_save:
\fp_set:Nn \l__box_angle_fp { round ( \l__box_angle_fp , 5 ) }
- \__driver_ps_literal:n
+ \__driver_literal:n
{
currentpoint~
currentpoint~translate~
@@ -96,13 +96,13 @@
neg~exch~neg~exch~translate
}
}
-\cs_new_eq:NN \__driver_box_rotate_end: \__driver_graphic_state_restore:
+\cs_new_eq:NN \__driver_box_rotate_end: \__driver_state_restore:
\cs_new_protected_nopar:Npn \__driver_box_scale_begin:
{
+ \__driver_state_save:
\fp_set:Nn \l__box_scale_x_fp { round ( \l__box_scale_x_fp , 5 ) }
\fp_set:Nn \l__box_scale_y_fp { round ( \l__box_scale_y_fp , 5 ) }
- \__driver_graphic_state_save:
- \__driver_ps_literal:n
+ \__driver_literal:n
{
currentpoint~
currentpoint~translate~
@@ -111,9 +111,10 @@
neg~exch~neg~exch~translate
}
}
-\cs_new_eq:NN \__driver_box_scale_end: \__driver_graphic_state_restore:
+\cs_new_eq:NN \__driver_box_scale_end: \__driver_state_restore:
\tl_new:N \l__driver_current_color_tl
\tl_set:Nn \l__driver_current_color_tl { Black }
+%% \end{macrocode}
\cs_new_protected_nopar:Npn \__driver_color_ensure_current:
{
\tex_special:D { color~push~\l__driver_current_color_tl }
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3fp.sty b/Master/texmf-dist/tex/latex/l3kernel/l3fp.sty
index 679f97c2519..b304cbda2d0 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3fp.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3fp.sty
@@ -59,7 +59,7 @@
%% -----------------------------------------------------------------------
%%
\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3fp.dtx 4601 2013-11-18 23:13:28Z bruno $
+\GetIdInfo$Id: l3fp.dtx 4633 2013-12-31 17:28:46Z joseph $
{L3 Floating points}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
@@ -99,7 +99,6 @@
%%
\cs_new:Npn \__fp_use_none_stop_f:n #1 { \exp_stop_f: }
\cs_new:Npn \__fp_use_s:n #1 { #1; }
-\cs_new:Npn \__fp_use_braced_s:n #1 { {#1} ; }
\cs_new:Npn \__fp_use_s:nn #1#2 { #1#2; }
\cs_new:Npn \__fp_use_none_until_s:w #1; { }
\cs_new:Npn \__fp_use_i_until_s:nw #1#2; {#1}
@@ -107,6 +106,7 @@
\cs_new:Npn \__fp_reverse_args:Nww #1 #2; #3; { #1 #3; #2; }
\cs_new:Npn \__fp_rrot:www #1; #2; #3; { #2; #3; #1; }
\cs_new:Npn \__fp_use_i:ww #1; #2; { #1; }
+\cs_new:Npn \__fp_use_i:www #1; #2; #3; { #1; }
\__scan_new:N \s__fp
\cs_new_protected:Npn \__fp_chk:w #1 ;
{
@@ -228,15 +228,11 @@
\int_const:Nn \c__fp_middle_shift_int { 5 0000 * 9999 }
\int_const:Nn \c__fp_trailing_shift_int { 5 0000 * 10000 }
\cs_new:Npn \__fp_pack:NNNNNw #1 #2#3#4#5 #6; { + #1#2#3#4#5 ; {#6} }
-\cs_new:Npn \__fp_pack:NNNNNwn #1 #2#3#4#5 #6; #7
- { + #1#2#3#4#5 ; {#7} {#6} }
\int_const:Nn \c__fp_big_leading_shift_int { - 15 2374 }
\int_const:Nn \c__fp_big_middle_shift_int { 15 2374 * 9999 }
\int_const:Nn \c__fp_big_trailing_shift_int { 15 2374 * 10000 }
\cs_new:Npn \__fp_pack_big:NNNNNNw #1#2 #3#4#5#6 #7;
{ + #1#2#3#4#5#6 ; {#7} }
-\cs_new:Npn \__fp_pack_big:NNNNNNwn #1#2 #3#4#5#6 #7; #8
- { + #1#2#3#4#5#6 ; {#8} {#7} }
\int_const:Nn \c__fp_Bigg_leading_shift_int { - 20 0000 }
\int_const:Nn \c__fp_Bigg_middle_shift_int { 20 0000 * 9999 }
\int_const:Nn \c__fp_Bigg_trailing_shift_int { 20 0000 * 10000 }
@@ -304,38 +300,45 @@
{ \fi: \__fp_exp_after_o:w \s__fp #3 ; }
\cs_new:Npn \__fp_case_return_ii_o:ww #1 \fi: #2 \s__fp #3 ;
{ \fi: \__fp_exp_after_o:w }
-\cs_new:Npn \__fp_small_int:wTF \s__fp \__fp_chk:w #1
+\cs_new:Npn \__fp_small_int:wTF \s__fp \__fp_chk:w #1#2
{
\if_case:w #1 \exp_stop_f:
\__fp_case_return:nw { \__fp_small_int_true:wTF 0 ; }
\or: \exp_after:wN \__fp_small_int_normal:NnwTF
+ \or:
+ \__fp_case_return:nw
+ {
+ \exp_after:wN \__fp_small_int_true:wTF \__int_value:w
+ \if_meaning:w 2 #2 - \fi: 1 0000 0000 ;
+ }
\else: \__fp_case_return:nw \use_ii:nn
\fi:
+ #2
}
\cs_new:Npn \__fp_small_int_true:wTF #1; #2#3 { #2 {#1} }
\cs_new:Npn \__fp_small_int_normal:NnwTF #1#2#3;
{
\if_int_compare:w #2 > \c_zero
- \if_int_compare:w #2 > \c_eight
- \exp_after:wN \exp_after:wN
- \exp_after:wN \use_iii:nnn
- \else:
- \__fp_decimate:nNnnnn { \c_sixteen - #2 }
- \__fp_small_int_test:NnnwNTF
- #3 #1
- \fi:
+ \__fp_decimate:nNnnnn { \c_sixteen - #2 }
+ \__fp_small_int_test:NnnwNnw
+ #3 #1 {#2}
\else:
\exp_after:wN \use_iii:nnn
\fi:
;
}
-\cs_new:Npn \__fp_small_int_test:NnnwNTF #1#2#3#4; #5
+\cs_new:Npn \__fp_small_int_test:NnnwNnw #1#2#3#4; #5#6
{
\if_meaning:w 0 #1
\exp_after:wN \__fp_small_int_true:wTF
- \__int_value:w \if_meaning:w 2 #5 - \fi: #3
+ \__int_value:w \if_meaning:w 2 #5 - \fi:
+ \if_int_compare:w #6 > \c_eight
+ 1 0000 0000
+ \else:
+ #3
+ \fi:
\else:
- \exp_after:wN \use_i:nn
+ \use_i:nn
\fi:
}
\cs_new:Npn \__fp_array_count:n #1
@@ -458,10 +461,10 @@
\exp_after:wN \c_nan_fp
}
\exp_args:Nno \use:n
- { \cs_set:Npn \__fp_invalid_operation_tl_o:nf ##1##2 }
+ { \cs_set:Npn \__fp_invalid_operation_tl_o:ff ##1##2 }
{
#1
- \__fp_error:nnfn { invalid } {##1} {##2} { }
+ \__fp_error:nffn { invalid } {##1} {##2} { }
\fp_flag_on:n { invalid_operation }
\exp_after:wN \c_nan_fp
}
@@ -525,7 +528,7 @@
}
\cs_new:Npn \__fp_invalid_operation:nnw #1#2#3; { }
\cs_new:Npn \__fp_invalid_operation_o:Nww #1#2; #3; { }
-\cs_new:Npn \__fp_invalid_operation_tl_o:nf #1 #2 { }
+\cs_new:Npn \__fp_invalid_operation_tl_o:ff #1 #2 { }
\cs_new:Npn \__fp_division_by_zero_o:Nnw #1#2#3; { }
\cs_new:Npn \__fp_division_by_zero_o:NNww #1#2#3; #4; { }
\cs_new:Npn \__fp_overflow:w { }
@@ -697,12 +700,37 @@
}
\cs_new_eq:NN \__fp_round_to_nearest_neg:NNN \__fp_round_to_nearest:NNN
\cs_new_eq:NN \__fp_round_neg:NNN \__fp_round_to_nearest_neg:NNN
+\cs_new:Npn \__fp_round_o:Nw #1#2 @
+ {
+ \if_case:w
+ \__int_eval:w \__fp_array_count:n {#2} - \c_one \__int_eval_end:
+ \__fp_round:Nwn #1 #2 {0} \tex_romannumeral:D
+ \or: \__fp_round:Nww #1 #2 \tex_romannumeral:D
+ \else:
+ \__fp_error:nffn { num-args }
+ { \__fp_round_name_from_cs:N #1 () } { 1 } { 2 }
+ \exp_after:wN \c_nan_fp \tex_romannumeral:D
+ \fi:
+ -`0
+ }
+\cs_new:Npn \__fp_round_name_from_cs:N #1
+ {
+ \cs_if_eq:NNTF #1 \__fp_round_to_zero:NNN { trunc }
+ {
+ \cs_if_eq:NNTF #1 \__fp_round_to_ninf:NNN { floor }
+ {
+ \cs_if_eq:NNTF #1 \__fp_round_to_pinf:NNN { ceil }
+ { round }
+ }
+ }
+ }
\cs_new:Npn \__fp_round:Nww #1#2 ; #3 ;
{
\__fp_small_int:wTF #3; { \__fp_round:Nwn #1#2; }
{
- \__fp_invalid_operation_tl_o:nf
- { round } { \__fp_array_to_clist:n { #2; #3; } }
+ \__fp_invalid_operation_tl_o:ff
+ { \__fp_round_name_from_cs:N #1 }
+ { \__fp_array_to_clist:n { #2; #3; } }
}
}
\cs_new:Npn \__fp_round:Nwn #1 \s__fp \__fp_chk:w #2#3#4; #5
@@ -1384,7 +1412,7 @@
\exp_after:wN \__fp_parse_apply_unary:NNNwN
\exp_after:wN ##1
\exp_after:wN #4
- \cs:w __fp_#3_o:w \exp_after:wN \cs_end:
+ \exp_after:wN #3
\tex_romannumeral:D
\if_int_compare:w #2 < ##1
\__fp_parse_operand:Nw ##1
@@ -1394,8 +1422,8 @@
\__fp_parse_expand:w
}
}
-\__fp_tmp:w - \c_twelve { set_sign } 2
-\__fp_tmp:w ! \c_twelve { not } ?
+\__fp_tmp:w - \c_twelve \__fp_set_sign_o:w 2
+\__fp_tmp:w ! \c_twelve \__fp_not_o:w ?
\cs_new:cpn { __fp_parse_prefix_.:Nw } #1
{
\exp_after:wN \__fp_parse_infix_after_operand:NwN
@@ -1511,6 +1539,8 @@
{ \__fp_parse_unary_function:nNN {exp} ? }
\cs_new_nopar:Npn \__fp_parse_word_ln:N
{ \__fp_parse_unary_function:nNN {ln} ? }
+\cs_new_nopar:Npn \__fp_parse_word_sqrt:N
+ { \__fp_parse_unary_function:nNN {sqrt} ? }
\tl_map_inline:nn
{
{acos} {acsc} {asec} {asin}
@@ -1522,6 +1552,12 @@
\cs_new_nopar:cpn { __fp_parse_word_#1d:N }
{ \__fp_parse_unary_function:nNN {#1} \use_ii:nn }
}
+\cs_new_nopar:Npn \__fp_parse_word_trunc:N
+ { \__fp_parse_function:NNN \__fp_round_o:Nw \__fp_round_to_zero:NNN }
+\cs_new_nopar:Npn \__fp_parse_word_floor:N
+ { \__fp_parse_function:NNN \__fp_round_o:Nw \__fp_round_to_ninf:NNN }
+\cs_new_nopar:Npn \__fp_parse_word_ceil:N
+ { \__fp_parse_function:NNN \__fp_round_o:Nw \__fp_round_to_pinf:NNN }
\cs_new:Npn \__fp_parse_word_round:N #1#2
{
\if_meaning:w + #2
@@ -1535,27 +1571,12 @@
\fi:
\fi:
\fi:
- \exp_after:wN \__fp_parse_apply_round:NNwN
- \exp_after:wN #1
- \exp_after:wN \__fp_round_to_nearest:NNN
- \tex_romannumeral:D
- \__fp_parse_operand:Nw \c_sixteen \__fp_parse_expand:w #2
+ \__fp_parse_function:NNN
+ \__fp_round_o:Nw \__fp_round_to_nearest:NNN #1
+ #2
}
\cs_new:Npn \__fp_parse_round:Nw
- #1 #2 \__fp_round_to_nearest:NNN #3 \__fp_parse_expand:w #4
- { #2 #1 #3 \__fp_parse_expand:w }
-\cs_new:Npn \__fp_parse_apply_round:NNwN #1#2#3@#4
- {
- \if_case:w \__int_eval:w \__fp_array_count:n {#3} - \c_one \__int_eval_end:
- \__fp_round:Nwn #2 #3 {0} \tex_romannumeral:D
- \or: \__fp_round:Nww #2 #3 \tex_romannumeral:D
- \else:
- \__msg_kernel_expandable_error:nnnnn
- { kernel } { fp-num-args } { round() } { 1 } { 2 }
- \exp_after:wN \c_nan_fp \tex_romannumeral:D
- \fi:
- -`0 #4 #1
- }
+ #1 #2 \__fp_round_to_nearest:NNN #3#4 { #2 #1 #3 }
\cs_new:Npn \__fp_parse:n #1
{
\tex_romannumeral:D
@@ -1821,63 +1842,63 @@
\group_end:
\cs_new:cpn { __fp_parse_infix_<:N } #1
{
- \__fp_infix_compare:N #1 \c_one_fp
- \c_zero_fp \c_zero_fp \c_zero_fp \c_zero_fp <
+ \__fp_parse_compare:NNNNNNN #1 \c_one
+ \c_zero \c_zero \c_zero \c_zero <
}
\cs_new:cpn { __fp_parse_infix_=:N } #1
{
- \__fp_infix_compare:N #1 \c_one_fp
- \c_zero_fp \c_zero_fp \c_zero_fp \c_zero_fp =
+ \__fp_parse_compare:NNNNNNN #1 \c_one
+ \c_zero \c_zero \c_zero \c_zero =
}
\cs_new:cpn { __fp_parse_infix_>:N } #1
{
- \__fp_infix_compare:N #1 \c_one_fp
- \c_zero_fp \c_zero_fp \c_zero_fp \c_zero_fp >
+ \__fp_parse_compare:NNNNNNN #1 \c_one
+ \c_zero \c_zero \c_zero \c_zero >
}
\cs_new:cpn { __fp_parse_infix_!:N } #1
{
- \exp_after:wN \__fp_parse_infix_excl_aux:NN
- \exp_after:wN #1 \tex_romannumeral:D \__fp_parse_expand:w
- }
-\cs_new:Npn \__fp_parse_infix_excl_aux:NN #1#2
- {
- \__fp_infix_compare:N #1 \c_zero_fp
- \c_one_fp \c_one_fp \c_one_fp \c_one_fp #2
+ \exp_after:wN \__fp_parse_compare:NNNNNNN
+ \exp_after:wN #1
+ \exp_after:wN \c_zero
+ \exp_after:wN \c_one
+ \exp_after:wN \c_one
+ \exp_after:wN \c_one
+ \exp_after:wN \c_one
}
-\cs_new:Npn \__fp_parse_infix_excl_error:
+\cs_new:Npn \__fp_parse_excl_error:
{
\__msg_kernel_expandable_error:nnnn
{ kernel } { fp-missing } { = } { ~after~!. }
}
-\cs_new:Npn \__fp_infix_compare:N #1
+\cs_new:Npn \__fp_parse_compare:NNNNNNN #1
{
\if_int_compare:w #1 < \c_seven
- \exp_after:wN \__fp_parse_compare:NNNNNNw
- \exp_after:wN \__fp_parse_infix_excl_error:
+ \exp_after:wN \__fp_parse_compare_auxi:NNNNNNN
+ \exp_after:wN \__fp_parse_excl_error:
\else:
\exp_after:wN @
\exp_after:wN \use_none:n
- \exp_after:wN \__fp_infix_compare:N
+ \exp_after:wN \__fp_parse_compare:NNNNNNN
\fi:
}
-\cs_new:Npn \__fp_parse_compare:NNNNNNw #1#2#3#4#5#6#7
+\cs_new:Npn \__fp_parse_compare_auxi:NNNNNNN #1#2#3#4#5#6#7
{
\if_case:w
- \if_catcode:w \scan_stop: #7
+ \if_catcode:w \scan_stop: \exp_not:N #7
\c_minus_one
\else:
\__int_eval:w `#7 - `< \__int_eval_end:
\fi:
- \__fp_parse_compare_expand:NNNNNw #2#2#4#5#6
- \or: \__fp_parse_compare_expand:NNNNNw #2#3#2#5#6
- \or: \__fp_parse_compare_expand:NNNNNw #2#3#4#2#6
- \or: \__fp_parse_compare_expand:NNNNNw #2#3#4#5#2
- \else: #1 \__fp_parse_compare_end:NNNN #3#4#5#6#7
+ \__fp_parse_compare_auxii:NNNNN #2#2#4#5#6
+ \or: \__fp_parse_compare_auxii:NNNNN #2#3#2#5#6
+ \or: \__fp_parse_compare_auxii:NNNNN #2#3#4#2#6
+ \or: \__fp_parse_compare_auxii:NNNNN #2#3#4#5#2
+ \else: #1 \__fp_parse_compare_end:NNNNw #3#4#5#6#7
\fi:
}
-\cs_new:Npn \__fp_parse_compare_expand:NNNNNw #1#2#3#4#5
+\cs_new:Npn \__fp_parse_compare_auxii:NNNNN #1#2#3#4#5
{
- \exp_after:wN \__fp_parse_compare:NNNNNNw
+ \exp_after:wN \__fp_parse_compare_auxi:NNNNNNN
\exp_after:wN \prg_do_nothing:
\exp_after:wN #1
\exp_after:wN #2
@@ -1886,11 +1907,12 @@
\exp_after:wN #5
\tex_romannumeral:D \exp_after:wN \__fp_parse_expand:w
}
-\cs_new:Npn \__fp_parse_compare_end:NNNN #1#2#3#4#5 \fi:
+\cs_new:Npn \__fp_parse_compare_end:NNNNw #1#2#3#4#5 \fi:
{
\fi:
\exp_after:wN @
- \exp_after:wN \__fp_parse_apply_compare:NwNNNNwN
+ \exp_after:wN \__fp_parse_apply_compare:NwNNNNNwN
+ \exp_after:wN \c_one_fp
\exp_after:wN #1
\exp_after:wN #2
\exp_after:wN #3
@@ -1898,22 +1920,107 @@
\tex_romannumeral:D
\__fp_parse_operand:Nw \c_seven \__fp_parse_expand:w #5
}
-\cs_new:Npn \__fp_parse_apply_compare:NwNNNNwN #1 #2@ #3#4#5#6 #7@ #8
+\cs_new:Npn \__fp_parse_apply_compare:NwNNNNNwN
+ #1 #2@ #3 #4#5#6#7 #8@ #9
{
- \exp_after:wN \__fp_parse_continue:NwN
- \exp_after:wN #1
- \tex_romannumeral:D -`0
- \exp_after:wN \exp_after:wN
- \exp_after:wN \exp_after:wN
- \exp_after:wN \exp_after:wN
- \if_case:w \__fp_compare_back:ww #7 #2 \exp_stop_f:
- #4
- \or: #5
- \or: #6
- \else: #3
- \fi:
- \tex_romannumeral:D -`0 #8 #1
+ \if_int_odd:w
+ \if_meaning:w \c_zero_fp #3
+ \c_zero
+ \else:
+ \if_case:w \__fp_compare_back:ww #8 #2 \exp_stop_f:
+ #5 \or: #6 \or: #7 \else: #4
+ \fi:
+ \fi:
+ \exp_after:wN \__fp_parse_apply_compare_aux:NNwN
+ \exp_after:wN \c_one_fp
+ \else:
+ \exp_after:wN \__fp_parse_apply_compare_aux:NNwN
+ \exp_after:wN \c_zero_fp
+ \fi:
+ #1 #8 #9
+ }
+\cs_new:Npn \__fp_parse_apply_compare_aux:NNwN #1 #2 #3; #4
+ {
+ \if_meaning:w \__fp_parse_compare:NNNNNNN #4
+ \exp_after:wN \__fp_parse_continue_compare:NNwNN
+ \exp_after:wN #1
+ \exp_after:wN #2
+ \tex_romannumeral:D -`0
+ \__fp_exp_after_o:w #3;
+ \tex_romannumeral:D -`0
+ \else:
+ \exp_after:wN \__fp_parse_continue:NwN
+ \exp_after:wN #2
+ \tex_romannumeral:D -`0
+ \exp_after:wN #1
+ \tex_romannumeral:D -`0
+ \fi:
+ #4 #2
+ }
+\cs_new:Npn \__fp_parse_continue_compare:NNwNN #1#2 #3@ #4#5
+ { #4 #2 #3@ #1 }
+\group_begin:
+ \char_set_catcode_other:N \^^@
+ \cs_new:Npn \fp_function:Nw #1 { ^^@ ; { \exp_after:wN #1 } }
+\group_end:
+\group_begin:
+ \char_set_catcode_other:N \^^@
+ \cs_new_protected:Npn \fp_new_function:Npn #1#2#
+ {
+ \cs_new:Npx #1
+ {
+ ^^@ ;
+ {
+ \exp_not:N \exp_after:wN
+ \exp_not:N \__fp_function_args:Nwn
+ \exp_not:N \exp_after:wN
+ \exp_not:c { __fp_user_ \cs_to_str:N #1 }
+ \exp_not:N \__int_value:w
+ \int_eval:n { \tl_count:n {#2} / \c_two }
+ \exp_not:N \exp_after:wN ;
+ }
+ }
+ \cs_new:cpn { __fp_user_ \cs_to_str:N #1 } #2
+ }
+\group_end:
+\cs_new:Npn \__fp_function_args:Nwn #1#2; #3
+ {
+ \int_compare:nNnTF { \tl_count:n {#3} } = {#2}
+ { #1 #3 }
+ {
+ \__msg_kernel_expandable_error:nnnnn
+ { kernel } { fp-num-args } { #1() } {#2} {#2}
+ \c_nan_fp
+ }
+ }
+\group_begin:
+ \char_set_catcode_other:N \^^@
+ \cs_new:cpn { __fp_parse_prefix_ ^^@ :Nw } #1 ; #2
+ {
+ \exp_after:wN \__fp_function_apply:NnwN
+ \exp_after:wN #1
+ \exp_after:wN { #2 \exp_after:wN }
+ \tex_romannumeral:D
+ \__fp_parse_operand:Nw \c_sixteen \__fp_parse_expand:w
+ }
+\group_end:
+\cs_new:Npn \__fp_function_apply:NnwN #1#2#3@#4
+ {
+ \exp_after:wN \__fp_exp_after_array_f:w
+ \tex_romannumeral:D -`0
+ \__fp_function_store:wwNwnn #3
+ \s__fp_mark \__fp_function_store:wwNwnn ;
+ \s__fp_mark \__fp_function_store_end:wnnn
+ \s__fp_stop { } { } {#2}
+ \s__fp_stop
+ #4 #1
}
+\cs_new:Npn \__fp_function_store:wwNwnn
+ #1; #2 \s__fp_mark #3#4 \s__fp_stop #5#6
+ { #3 #2 \s__fp_mark #3#4 \s__fp_stop { #5 #6 } { { #1; } } }
+\cs_new:Npn \__fp_function_store_end:wnnn
+ #1 \s__fp_stop #2#3#4
+ { \__fp_parse:n { #4 {#2} } }
\__msg_kernel_new:nnn { kernel } { unknown-fp-word }
{ Unknown~fp~word~#1. }
\__msg_kernel_new:nnn { kernel } { fp-missing }
@@ -2250,12 +2357,7 @@
%% -----------------------------------------------------------------------
%%
\cs_new:Npn \__fp_basics_pack_low:NNNNNw #1 #2#3#4#5 #6;
- {
- \if_meaning:w 2 #1
- + \c_one
- \fi:
- ; {#2#3#4#5} {#6} ;
- }
+ { + #1 - \c_one ; {#2#3#4#5} {#6} ; }
\cs_new:Npn \__fp_basics_pack_high:NNNNNw #1 #2#3#4#5 #6;
{
\if_meaning:w 2 #1
@@ -2824,6 +2926,193 @@
\__int_value:w \__fp_round_digit:Nw #7 #8 ;
\exp_after:wN ;
}
+\cs_new:Npn \__fp_sqrt_o:w #1 \s__fp \__fp_chk:w #2#3#4; @
+ {
+ \if_meaning:w 0 #2 \__fp_case_return_same_o:w \fi:
+ \if_meaning:w 2 #3
+ \__fp_case_use:nw { \__fp_invalid_operation_o:nw { sqrt } }
+ \fi:
+ \if_meaning:w 1 #2 \else: \__fp_case_return_same_o:w \fi:
+ \__fp_sqrt_npos_o:w
+ \s__fp \__fp_chk:w #2 #3 #4;
+ }
+\cs_new:Npn \__fp_sqrt_npos_o:w \s__fp \__fp_chk:w 1 0 #1#2#3#4#5;
+ {
+ \exp_after:wN \__fp_sanitize:Nw
+ \exp_after:wN 0
+ \int_use:N \__int_eval:w
+ \if_int_odd:w #1 \exp_stop_f:
+ \exp_after:wN \__fp_sqrt_npos_auxi_o:wwnnN
+ \fi:
+ #1 / \c_two
+ \__fp_sqrt_Newton_o:wwn 56234133; 0; {#2#3} {#4#5} 0
+ }
+\cs_new:Npn \__fp_sqrt_npos_auxi_o:wwnnN #1 / \c_two #2; 0; #3#4#5
+ {
+ ( #1 + \c_one ) / \c_two
+ \__fp_pack_eight:wNNNNNNNN
+ \__fp_sqrt_npos_auxii_o:wNNNNNNNN
+ ;
+ 0 #3 #4
+ }
+\cs_new:Npn \__fp_sqrt_npos_auxii_o:wNNNNNNNN #1; #2#3#4#5#6#7#8#9
+ { \__fp_sqrt_Newton_o:wwn 17782794; 0; {#1} {#2#3#4#5#6#7#8#9} }
+\cs_new:Npn \__fp_sqrt_Newton_o:wwn #1; #2; #3
+ {
+ \if_int_compare:w #1 = #2 \exp_stop_f:
+ \exp_after:wN \__fp_sqrt_auxi_o:NNNNwnnN
+ \int_use:N \__int_eval:w 9999 9999 +
+ \exp_after:wN \__fp_use_none_until_s:w
+ \fi:
+ \exp_after:wN \__fp_sqrt_Newton_o:wwn
+ \int_use:N \__int_eval:w (#1 + #3 * 1 0000 0000 / #1) / \c_two ;
+ #1; {#3}
+ }
+\cs_new:Npn \__fp_sqrt_auxi_o:NNNNwnnN 1 #1#2#3#4#5;
+ {
+ \__fp_sqrt_auxii_o:NnnnnnnnN
+ \__fp_sqrt_auxiii_o:wnnnnnnnn
+ {#1#2#3#4} {#5} {2499} {9988} {7500}
+ }
+\cs_new:Npn \__fp_sqrt_auxii_o:NnnnnnnnN #1 #2#3#4#5#6 #7#8#9
+ {
+ \exp_after:wN #1
+ \int_use:N \__int_eval:w \c__fp_big_leading_shift_int
+ + #7 - #2 * #2
+ \exp_after:wN \__fp_pack_big:NNNNNNw
+ \int_use:N \__int_eval:w \c__fp_big_middle_shift_int
+ - 2 * #2 * #3
+ \exp_after:wN \__fp_pack_big:NNNNNNw
+ \int_use:N \__int_eval:w \c__fp_big_middle_shift_int
+ + #8 - #3 * #3 - 2 * #2 * #4
+ \exp_after:wN \__fp_pack_big:NNNNNNw
+ \int_use:N \__int_eval:w \c__fp_big_middle_shift_int
+ - 2 * #3 * #4 - 2 * #2 * #5
+ \exp_after:wN \__fp_pack_big:NNNNNNw
+ \int_use:N \__int_eval:w \c__fp_big_middle_shift_int
+ + #9 000 0000 - #4 * #4 - 2 * #3 * #5 - 2 * #2 * #6
+ \exp_after:wN \__fp_pack_big:NNNNNNw
+ \int_use:N \__int_eval:w \c__fp_big_middle_shift_int
+ - 2 * #4 * #5 - 2 * #3 * #6
+ \exp_after:wN \__fp_pack_big:NNNNNNw
+ \int_use:N \__int_eval:w \c__fp_big_middle_shift_int
+ - #5 * #5 - 2 * #4 * #6
+ \exp_after:wN \__fp_pack_big:NNNNNNw
+ \int_use:N \__int_eval:w
+ \c__fp_big_middle_shift_int
+ - 2 * #5 * #6
+ \exp_after:wN \__fp_pack_big:NNNNNNw
+ \int_use:N \__int_eval:w
+ \c__fp_big_trailing_shift_int
+ - #6 * #6 ;
+ % (
+ - 257 ) * 5000 0000 / (#2#3 + 1) + 10 0000 0000 ;
+ {#2}{#3}{#4}{#5}{#6} {#7}{#8}#9
+ }
+\cs_new:Npn \__fp_sqrt_auxiii_o:wnnnnnnnn
+ #1; #2#3#4#5#6#7#8#9
+ {
+ \if_int_compare:w #1 > \c_one
+ \exp_after:wN \__fp_sqrt_auxiv_o:NNNNNw
+ \int_use:N \__int_eval:w (#1#2 %)
+ \else:
+ \if_int_compare:w #1#2 > \c_one
+ \exp_after:wN \__fp_sqrt_auxv_o:NNNNNw
+ \int_use:N \__int_eval:w (#1#2#3 %)
+ \else:
+ \if_int_compare:w #1#2#3 > \c_one
+ \exp_after:wN \__fp_sqrt_auxvi_o:NNNNNw
+ \int_use:N \__int_eval:w (#1#2#3#4 %)
+ \else:
+ \exp_after:wN \__fp_sqrt_auxvii_o:NNNNNw
+ \int_use:N \__int_eval:w (#1#2#3#4#5 %)
+ \fi:
+ \fi:
+ \fi:
+ }
+\cs_new:Npn \__fp_sqrt_auxiv_o:NNNNNw 1#1#2#3#4#5#6;
+ { \__fp_sqrt_auxviii_o:nnnnnnn {#1#2#3#4#5#6} {00000000} }
+\cs_new:Npn \__fp_sqrt_auxv_o:NNNNNw 1#1#2#3#4#5#6;
+ { \__fp_sqrt_auxviii_o:nnnnnnn {000#1#2#3#4#5} {#60000} }
+\cs_new:Npn \__fp_sqrt_auxvi_o:NNNNNw 1#1#2#3#4#5#6;
+ { \__fp_sqrt_auxviii_o:nnnnnnn {0000000#1} {#2#3#4#5#6} }
+\cs_new:Npn \__fp_sqrt_auxvii_o:NNNNNw 1#1#2#3#4#5#6;
+ {
+ \if_int_compare:w #1#2 = \c_zero
+ \exp_after:wN \__fp_sqrt_auxx_o:Nnnnnnnn
+ \fi:
+ \__fp_sqrt_auxviii_o:nnnnnnn {00000000} {000#1#2#3#4#5}
+ }
+\cs_new:Npn \__fp_sqrt_auxviii_o:nnnnnnn #1#2 #3#4#5#6#7
+ {
+ \exp_after:wN \__fp_sqrt_auxix_o:wnwnw
+ \int_use:N \__int_eval:w #3
+ \exp_after:wN \__fp_basics_pack_low:NNNNNw
+ \int_use:N \__int_eval:w #1 + 1#4#5
+ \exp_after:wN \__fp_basics_pack_low:NNNNNw
+ \int_use:N \__int_eval:w #2 + 1#6#7 ;
+ }
+\cs_new:Npn \__fp_sqrt_auxix_o:wnwnw #1; #2#3; #4#5;
+ {
+ \__fp_sqrt_auxii_o:NnnnnnnnN
+ \__fp_sqrt_auxiii_o:wnnnnnnnn {#1}{#2}{#3}{#4}{#5}
+ }
+\cs_new:Npn \__fp_sqrt_auxx_o:Nnnnnnnn #1#2#3 #4#5#6#7#8
+ {
+ \exp_after:wN \__fp_sqrt_auxxi_o:wwnnN
+ \int_use:N \__int_eval:w
+ (#8 + 2499) / 5000 * 5000 ;
+ {#4} {#5} {#6} {#7} ;
+ }
+\cs_new:Npn \__fp_sqrt_auxxi_o:wwnnN #1; #2; #3#4#5
+ {
+ \__fp_sqrt_auxii_o:NnnnnnnnN
+ \__fp_sqrt_auxxii_o:nnnnnnnnw
+ #2 {#1}
+ {#3} { #4 + \c_one } #5
+ }
+\cs_new:Npn \__fp_sqrt_auxxii_o:nnnnnnnnw 0; #1#2#3#4#5#6#7#8 #9;
+ {
+ \if_int_compare:w #1#2 > \c_zero
+ \if_int_compare:w #1#2 = \c_one
+ \if_int_compare:w #3#4 = \c_zero
+ \if_int_compare:w #5#6 = \c_zero
+ \if_int_compare:w #7#8 = \c_zero
+ \__fp_sqrt_auxxiii_o:w
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \exp_after:wN \__fp_sqrt_auxxiv_o:wnnnnnnnN
+ \__int_value:w 9998
+ \else:
+ \exp_after:wN \__fp_sqrt_auxxiv_o:wnnnnnnnN
+ \__int_value:w 10000
+ \fi:
+ ;
+ }
+\cs_new:Npn \__fp_sqrt_auxxiii_o:w \fi: \fi: \fi: \fi: #1 \fi: ;
+ {
+ \fi: \fi: \fi: \fi: \fi:
+ \__fp_sqrt_auxxiv_o:wnnnnnnnN 9999 ;
+ }
+\cs_new:Npn \__fp_sqrt_auxxiv_o:wnnnnnnnN #1; #2#3#4#5#6 #7#8#9
+ {
+ \exp_after:wN \__fp_basics_pack_high:NNNNNw
+ \int_use:N \__int_eval:w 1 0000 0000 + #2#3
+ \exp_after:wN \__fp_basics_pack_low:NNNNNw
+ \int_use:N \__int_eval:w 1 0000 0000
+ + #4#5
+ \if_int_compare:w #6 > #1 \exp_stop_f: + \c_one \fi:
+ + \exp_after:wN \__fp_round:NNN
+ \exp_after:wN 0
+ \exp_after:wN 0
+ \__int_value:w
+ \exp_after:wN \use_i:nn
+ \exp_after:wN \__fp_round_digit:Nw
+ \int_use:N \__int_eval:w #6 + 19999 - #1 ;
+ \exp_after:wN ;
+ }
\cs_new:Npn \__fp_set_sign_o:w #1 \s__fp \__fp_chk:w #2#3#4; @
{
\exp_after:wN \__fp_exp_after_o:w
@@ -2875,38 +3164,37 @@
\exp_after:wN #3 \exp_after:wN
{ \int_use:N \__int_eval:w \c_ten_thousand + #1 } #2 ;
}
-\cs_new:Npn \__fp_fixed_div_myriad:wn #1#2#3#4#5#6; #7
+\cs_new:Npn \__fp_fixed_div_myriad:wn #1#2#3#4#5#6;
{
- \exp_after:wN \__fp_fixed_mul_after:wn
+ \exp_after:wN \__fp_fixed_mul_after:wwn
\int_use:N \__int_eval:w \c__fp_leading_shift_int
- \exp_after:wN \__fp_pack:NNNNNwn
+ \exp_after:wN \__fp_pack:NNNNNw
\int_use:N \__int_eval:w \c__fp_trailing_shift_int
- + #1 ; {#7} {#2}{#3}{#4}{#5};
+ + #1 ; {#2}{#3}{#4}{#5};
}
-\cs_new:Npn \__fp_fixed_mul_after:wn #1; #2 { #2 {#1} }
+\cs_new:Npn \__fp_fixed_mul_after:wwn #1; #2; #3 { #3 {#1} #2; }
\cs_new:Npn \__fp_fixed_mul_short:wwn #1#2#3#4#5#6; #7#8#9;
{
- \exp_after:wN \__fp_fixed_mul_after:wn
+ \exp_after:wN \__fp_fixed_mul_after:wwn
\int_use:N \__int_eval:w \c__fp_leading_shift_int
+ #1*#7
- \exp_after:wN \__fp_pack:NNNNNwn
+ \exp_after:wN \__fp_pack:NNNNNw
\int_use:N \__int_eval:w \c__fp_middle_shift_int
+ #1*#8 + #2*#7
- \exp_after:wN \__fp_pack:NNNNNwn
+ \exp_after:wN \__fp_pack:NNNNNw
\int_use:N \__int_eval:w \c__fp_middle_shift_int
+ #1*#9 + #2*#8 + #3*#7
- \exp_after:wN \__fp_pack:NNNNNwn
+ \exp_after:wN \__fp_pack:NNNNNw
\int_use:N \__int_eval:w \c__fp_middle_shift_int
+ #2*#9 + #3*#8 + #4*#7
- \exp_after:wN \__fp_pack:NNNNNwn
+ \exp_after:wN \__fp_pack:NNNNNw
\int_use:N \__int_eval:w \c__fp_middle_shift_int
+ #3*#9 + #4*#8 + #5*#7
- \exp_after:wN \__fp_pack:NNNNNwn
+ \exp_after:wN \__fp_pack:NNNNNw
\int_use:N \__int_eval:w \c__fp_trailing_shift_int
+ #4*#9 + #5*#8 + #6*#7
+ ( #5*#9 + #6*#8 + #6*#9 / \c_ten_thousand )
- / \c_ten_thousand
- \exp_after:wN ; \__fp_use_braced_s:n
+ / \c_ten_thousand ; ;
}
\cs_new:Npn \__fp_fixed_div_int:wwN #1#2#3#4#5#6 ; #7 ; #8
{
@@ -2961,79 +3249,78 @@
{ #7 {#1#2#3#4#5} {#6} }
\cs_new:Npn \__fp_fixed_mul:wwn #1#2#3#4 #5; #6#7#8#9
{
- \exp_after:wN \__fp_fixed_mul_after:wn
+ \exp_after:wN \__fp_fixed_mul_after:wwn
\int_use:N \__int_eval:w \c__fp_leading_shift_int
- \exp_after:wN \__fp_pack:NNNNNwn
+ \exp_after:wN \__fp_pack:NNNNNw
\int_use:N \__int_eval:w \c__fp_middle_shift_int
+ #1*#6
- \exp_after:wN \__fp_pack:NNNNNwn
+ \exp_after:wN \__fp_pack:NNNNNw
\int_use:N \__int_eval:w \c__fp_middle_shift_int
+ #1*#7 + #2*#6
- \exp_after:wN \__fp_pack:NNNNNwn
+ \exp_after:wN \__fp_pack:NNNNNw
\int_use:N \__int_eval:w \c__fp_middle_shift_int
+ #1*#8 + #2*#7 + #3*#6
- \exp_after:wN \__fp_pack:NNNNNwn
+ \exp_after:wN \__fp_pack:NNNNNw
\int_use:N \__int_eval:w \c__fp_middle_shift_int
+ #1*#9 + #2*#8 + #3*#7 + #4*#6
- \exp_after:wN \__fp_pack:NNNNNwn
+ \exp_after:wN \__fp_pack:NNNNNw
\int_use:N \__int_eval:w \c__fp_trailing_shift_int
+ #2*#9 + #3*#8 + #4*#7
+ ( #3*#9 + #4*#8
- + \__fp_fixed_mul:nnnnnnnwn #5 {#6}{#7} {#1}{#2}
+ + \__fp_fixed_mul:nnnnnnnw #5 {#6}{#7} {#1}{#2}
}
-\cs_new:Npn \__fp_fixed_mul:nnnnnnnwn #1#2 #3#4 #5#6 #7#8 ; #9
+\cs_new:Npn \__fp_fixed_mul:nnnnnnnw #1#2 #3#4 #5#6 #7#8 ;
{
#1*#4 + #2*#3 + #5*#8 + #6*#7 ) / \c_ten_thousand
- + #1*#3 + #5*#7 ;
- {#9} ;
+ + #1*#3 + #5*#7 ; ;
}
-\cs_new:Npn \__fp_fixed_mul_add:wwwn #1; #2; #3#4#5#6#7#8; #9
+\cs_new:Npn \__fp_fixed_mul_add:wwwn #1; #2; #3#4#5#6#7#8;
{
- \exp_after:wN \__fp_fixed_mul_after:wn
+ \exp_after:wN \__fp_fixed_mul_after:wwn
\int_use:N \__int_eval:w \c__fp_big_leading_shift_int
- \exp_after:wN \__fp_pack_big:NNNNNNwn
+ \exp_after:wN \__fp_pack_big:NNNNNNw
\int_use:N \__int_eval:w \c__fp_big_middle_shift_int + #3 #4
\__fp_fixed_mul_add:Nwnnnwnnn +
+ #5 #6 ; #2 ; #1 ; #2 ; +
- + #7 #8 ; {#9} ;
+ + #7 #8 ; ;
}
-\cs_new:Npn \__fp_fixed_mul_sub_back:wwwn #1; #2; #3#4#5#6#7#8; #9
+\cs_new:Npn \__fp_fixed_mul_sub_back:wwwn #1; #2; #3#4#5#6#7#8;
{
- \exp_after:wN \__fp_fixed_mul_after:wn
+ \exp_after:wN \__fp_fixed_mul_after:wwn
\int_use:N \__int_eval:w \c__fp_big_leading_shift_int
- \exp_after:wN \__fp_pack_big:NNNNNNwn
+ \exp_after:wN \__fp_pack_big:NNNNNNw
\int_use:N \__int_eval:w \c__fp_big_middle_shift_int + #3 #4
\__fp_fixed_mul_add:Nwnnnwnnn -
+ #5 #6 ; #2 ; #1 ; #2 ; -
- + #7 #8 ; {#9} ;
+ + #7 #8 ; ;
}
-\cs_new:Npn \__fp_fixed_one_minus_mul:wwn #1; #2; #3
+\cs_new:Npn \__fp_fixed_one_minus_mul:wwn #1; #2;
{
- \exp_after:wN \__fp_fixed_mul_after:wn
+ \exp_after:wN \__fp_fixed_mul_after:wwn
\int_use:N \__int_eval:w \c__fp_big_leading_shift_int
- \exp_after:wN \__fp_pack_big:NNNNNNwn
+ \exp_after:wN \__fp_pack_big:NNNNNNw
\int_use:N \__int_eval:w \c__fp_big_middle_shift_int + 1 0000 0000
\__fp_fixed_mul_add:Nwnnnwnnn -
; #2 ; #1 ; #2 ; -
- ; {#3} ;
+ ; ;
}
\cs_new:Npn \__fp_fixed_mul_add:Nwnnnwnnn #1 #2; #3#4#5#6; #7#8#9
{
#1 #7*#3
- \exp_after:wN \__fp_pack_big:NNNNNNwn
+ \exp_after:wN \__fp_pack_big:NNNNNNw
\int_use:N \__int_eval:w \c__fp_big_middle_shift_int
#1 #7*#4 #1 #8*#3
- \exp_after:wN \__fp_pack_big:NNNNNNwn
+ \exp_after:wN \__fp_pack_big:NNNNNNw
\int_use:N \__int_eval:w \c__fp_big_middle_shift_int
#1 #7*#5 #1 #8*#4 #1 #9*#3 #2
- \exp_after:wN \__fp_pack_big:NNNNNNwn
+ \exp_after:wN \__fp_pack_big:NNNNNNw
\int_use:N \__int_eval:w \c__fp_big_middle_shift_int
#1 \__fp_fixed_mul_add:nnnnwnnnn {#7}{#8}{#9}
}
\cs_new:Npn \__fp_fixed_mul_add:nnnnwnnnn #1#2#3#4#5; #6#7#8#9
{
( #1*#9 + #2*#8 + #3*#7 + #4*#6 )
- \exp_after:wN \__fp_pack_big:NNNNNNwn
+ \exp_after:wN \__fp_pack_big:NNNNNNw
\int_use:N \__int_eval:w \c__fp_big_trailing_shift_int
\__fp_fixed_mul_add:nnnnwnnwN
{ #6 + #4*#7 + #3*#8 + #2*#9 + #1 }
@@ -3876,34 +4163,34 @@
\cs_new:Npn \__fp_pow_exponent:wnN #1; #2
{
\if_int_compare:w #2 > \c_zero
- \exp_after:wN \__fp_pow_exponent:Nwnnnnnwn % n\ln(10) - (-\ln(x))
+ \exp_after:wN \__fp_pow_exponent:Nwnnnnnw % n\ln(10) - (-\ln(x))
\exp_after:wN +
\else:
- \exp_after:wN \__fp_pow_exponent:Nwnnnnnwn % -( |n|\ln(10) + (-\ln(x)) )
+ \exp_after:wN \__fp_pow_exponent:Nwnnnnnw % -( |n|\ln(10) + (-\ln(x)) )
\exp_after:wN -
\fi:
#2; #1;
}
-\cs_new:Npn \__fp_pow_exponent:Nwnnnnnwn #1#2; #3#4#5#6#7#8; #9
+\cs_new:Npn \__fp_pow_exponent:Nwnnnnnw #1#2; #3#4#5#6#7#8;
{ %^^A todo: use that in ln.
- \exp_after:wN \__fp_fixed_mul_after:wn
+ \exp_after:wN \__fp_fixed_mul_after:wwn
\int_use:N \__int_eval:w \c__fp_leading_shift_int
- \exp_after:wN \__fp_pack:NNNNNwn
+ \exp_after:wN \__fp_pack:NNNNNw
\int_use:N \__int_eval:w \c__fp_middle_shift_int
#1#2*23025 - #1 #3
- \exp_after:wN \__fp_pack:NNNNNwn
+ \exp_after:wN \__fp_pack:NNNNNw
\int_use:N \__int_eval:w \c__fp_middle_shift_int
#1 #2*8509 - #1 #4
- \exp_after:wN \__fp_pack:NNNNNwn
+ \exp_after:wN \__fp_pack:NNNNNw
\int_use:N \__int_eval:w \c__fp_middle_shift_int
#1 #2*2994 - #1 #5
- \exp_after:wN \__fp_pack:NNNNNwn
+ \exp_after:wN \__fp_pack:NNNNNw
\int_use:N \__int_eval:w \c__fp_middle_shift_int
#1 #2*0456 - #1 #6
- \exp_after:wN \__fp_pack:NNNNNwn
+ \exp_after:wN \__fp_pack:NNNNNw
\int_use:N \__int_eval:w \c__fp_trailing_shift_int
#1 #2*8401 - #1 #7
- #1 ( #2*7991 - #8 ) / 1 0000 ; {#9} ;
+ #1 ( #2*7991 - #8 ) / 1 0000 ; ;
}
\cs_new:Npn \__fp_pow_B:wwN #1#2#3#4#5#6; #7;
{
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3keys.sty b/Master/texmf-dist/tex/latex/l3kernel/l3keys.sty
index a7a262f3020..62baa8a027e 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3keys.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3keys.sty
@@ -46,7 +46,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3keys.dtx 4581 2013-07-28 08:38:50Z joseph $
+\GetIdInfo$Id: l3keys.dtx 4614 2013-12-08 17:07:31Z joseph $
{L3 Experimental key-value interfaces}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3names.sty b/Master/texmf-dist/tex/latex/l3kernel/l3names.sty
index a1cc3246ef6..ff822e0f362 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3names.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3names.sty
@@ -13,7 +13,7 @@
%%
%% Do not distribute a modified version of this file.
%%
-%% File: l3names.dtx Copyright (C) 1990-2012 The LaTeX3 project
+%% File: l3names.dtx Copyright (C) 1990-2013 The LaTeX3 project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -46,440 +46,440 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3bootstrap}[2012/07/15]
-\GetIdInfo$Id: l3names.dtx 4346 2012-12-07 13:46:13Z joseph $
+\GetIdInfo$Id: l3names.dtx 4630 2013-12-29 21:04:05Z joseph $
{L3 Namespace for primitives}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
\let \tex_global:D \global
\let \tex_let:D \let
\begingroup
- \long \def \__expl_primitive:NN #1#2
+ \long \def \__kernel_primitive:NN #1#2
{
\tex_global:D \tex_let:D #2 #1
}
- \__expl_primitive:NN \ \tex_space:D
- \__expl_primitive:NN \/ \tex_italiccorrection:D
- \__expl_primitive:NN \- \tex_hyphen:D
- \__expl_primitive:NN \let \tex_let:D
- \__expl_primitive:NN \def \tex_def:D
- \__expl_primitive:NN \edef \tex_edef:D
- \__expl_primitive:NN \gdef \tex_gdef:D
- \__expl_primitive:NN \xdef \tex_xdef:D
- \__expl_primitive:NN \chardef \tex_chardef:D
- \__expl_primitive:NN \countdef \tex_countdef:D
- \__expl_primitive:NN \dimendef \tex_dimendef:D
- \__expl_primitive:NN \skipdef \tex_skipdef:D
- \__expl_primitive:NN \muskipdef \tex_muskipdef:D
- \__expl_primitive:NN \mathchardef \tex_mathchardef:D
- \__expl_primitive:NN \toksdef \tex_toksdef:D
- \__expl_primitive:NN \futurelet \tex_futurelet:D
- \__expl_primitive:NN \advance \tex_advance:D
- \__expl_primitive:NN \divide \tex_divide:D
- \__expl_primitive:NN \multiply \tex_multiply:D
- \__expl_primitive:NN \font \tex_font:D
- \__expl_primitive:NN \fam \tex_fam:D
- \__expl_primitive:NN \global \tex_global:D
- \__expl_primitive:NN \long \tex_long:D
- \__expl_primitive:NN \outer \tex_outer:D
- \__expl_primitive:NN \setlanguage \tex_setlanguage:D
- \__expl_primitive:NN \globaldefs \tex_globaldefs:D
- \__expl_primitive:NN \afterassignment \tex_afterassignment:D
- \__expl_primitive:NN \aftergroup \tex_aftergroup:D
- \__expl_primitive:NN \expandafter \tex_expandafter:D
- \__expl_primitive:NN \noexpand \tex_noexpand:D
- \__expl_primitive:NN \begingroup \tex_begingroup:D
- \__expl_primitive:NN \endgroup \tex_endgroup:D
- \__expl_primitive:NN \halign \tex_halign:D
- \__expl_primitive:NN \valign \tex_valign:D
- \__expl_primitive:NN \cr \tex_cr:D
- \__expl_primitive:NN \crcr \tex_crcr:D
- \__expl_primitive:NN \noalign \tex_noalign:D
- \__expl_primitive:NN \omit \tex_omit:D
- \__expl_primitive:NN \span \tex_span:D
- \__expl_primitive:NN \tabskip \tex_tabskip:D
- \__expl_primitive:NN \everycr \tex_everycr:D
- \__expl_primitive:NN \if \tex_if:D
- \__expl_primitive:NN \ifcase \tex_ifcase:D
- \__expl_primitive:NN \ifcat \tex_ifcat:D
- \__expl_primitive:NN \ifnum \tex_ifnum:D
- \__expl_primitive:NN \ifodd \tex_ifodd:D
- \__expl_primitive:NN \ifdim \tex_ifdim:D
- \__expl_primitive:NN \ifeof \tex_ifeof:D
- \__expl_primitive:NN \ifhbox \tex_ifhbox:D
- \__expl_primitive:NN \ifvbox \tex_ifvbox:D
- \__expl_primitive:NN \ifvoid \tex_ifvoid:D
- \__expl_primitive:NN \ifx \tex_ifx:D
- \__expl_primitive:NN \iffalse \tex_iffalse:D
- \__expl_primitive:NN \iftrue \tex_iftrue:D
- \__expl_primitive:NN \ifhmode \tex_ifhmode:D
- \__expl_primitive:NN \ifmmode \tex_ifmmode:D
- \__expl_primitive:NN \ifvmode \tex_ifvmode:D
- \__expl_primitive:NN \ifinner \tex_ifinner:D
- \__expl_primitive:NN \else \tex_else:D
- \__expl_primitive:NN \fi \tex_fi:D
- \__expl_primitive:NN \or \tex_or:D
- \__expl_primitive:NN \immediate \tex_immediate:D
- \__expl_primitive:NN \closeout \tex_closeout:D
- \__expl_primitive:NN \openin \tex_openin:D
- \__expl_primitive:NN \openout \tex_openout:D
- \__expl_primitive:NN \read \tex_read:D
- \__expl_primitive:NN \write \tex_write:D
- \__expl_primitive:NN \closein \tex_closein:D
- \__expl_primitive:NN \newlinechar \tex_newlinechar:D
- \__expl_primitive:NN \input \tex_input:D
- \__expl_primitive:NN \endinput \tex_endinput:D
- \__expl_primitive:NN \inputlineno \tex_inputlineno:D
- \__expl_primitive:NN \errmessage \tex_errmessage:D
- \__expl_primitive:NN \message \tex_message:D
- \__expl_primitive:NN \show \tex_show:D
- \__expl_primitive:NN \showthe \tex_showthe:D
- \__expl_primitive:NN \showbox \tex_showbox:D
- \__expl_primitive:NN \showlists \tex_showlists:D
- \__expl_primitive:NN \errhelp \tex_errhelp:D
- \__expl_primitive:NN \errorcontextlines \tex_errorcontextlines:D
- \__expl_primitive:NN \tracingcommands \tex_tracingcommands:D
- \__expl_primitive:NN \tracinglostchars \tex_tracinglostchars:D
- \__expl_primitive:NN \tracingmacros \tex_tracingmacros:D
- \__expl_primitive:NN \tracingonline \tex_tracingonline:D
- \__expl_primitive:NN \tracingoutput \tex_tracingoutput:D
- \__expl_primitive:NN \tracingpages \tex_tracingpages:D
- \__expl_primitive:NN \tracingparagraphs \tex_tracingparagraphs:D
- \__expl_primitive:NN \tracingrestores \tex_tracingrestores:D
- \__expl_primitive:NN \tracingstats \tex_tracingstats:D
- \__expl_primitive:NN \pausing \tex_pausing:D
- \__expl_primitive:NN \showboxbreadth \tex_showboxbreadth:D
- \__expl_primitive:NN \showboxdepth \tex_showboxdepth:D
- \__expl_primitive:NN \batchmode \tex_batchmode:D
- \__expl_primitive:NN \errorstopmode \tex_errorstopmode:D
- \__expl_primitive:NN \nonstopmode \tex_nonstopmode:D
- \__expl_primitive:NN \scrollmode \tex_scrollmode:D
- \__expl_primitive:NN \end \tex_end:D
- \__expl_primitive:NN \csname \tex_csname:D
- \__expl_primitive:NN \endcsname \tex_endcsname:D
- \__expl_primitive:NN \ignorespaces \tex_ignorespaces:D
- \__expl_primitive:NN \relax \tex_relax:D
- \__expl_primitive:NN \the \tex_the:D
- \__expl_primitive:NN \mag \tex_mag:D
- \__expl_primitive:NN \language \tex_language:D
- \__expl_primitive:NN \mark \tex_mark:D
- \__expl_primitive:NN \topmark \tex_topmark:D
- \__expl_primitive:NN \firstmark \tex_firstmark:D
- \__expl_primitive:NN \botmark \tex_botmark:D
- \__expl_primitive:NN \splitfirstmark \tex_splitfirstmark:D
- \__expl_primitive:NN \splitbotmark \tex_splitbotmark:D
- \__expl_primitive:NN \fontname \tex_fontname:D
- \__expl_primitive:NN \escapechar \tex_escapechar:D
- \__expl_primitive:NN \endlinechar \tex_endlinechar:D
- \__expl_primitive:NN \mathchoice \tex_mathchoice:D
- \__expl_primitive:NN \delimiter \tex_delimiter:D
- \__expl_primitive:NN \mathaccent \tex_mathaccent:D
- \__expl_primitive:NN \mathchar \tex_mathchar:D
- \__expl_primitive:NN \mskip \tex_mskip:D
- \__expl_primitive:NN \radical \tex_radical:D
- \__expl_primitive:NN \vcenter \tex_vcenter:D
- \__expl_primitive:NN \mkern \tex_mkern:D
- \__expl_primitive:NN \above \tex_above:D
- \__expl_primitive:NN \abovewithdelims \tex_abovewithdelims:D
- \__expl_primitive:NN \atop \tex_atop:D
- \__expl_primitive:NN \atopwithdelims \tex_atopwithdelims:D
- \__expl_primitive:NN \over \tex_over:D
- \__expl_primitive:NN \overwithdelims \tex_overwithdelims:D
- \__expl_primitive:NN \displaystyle \tex_displaystyle:D
- \__expl_primitive:NN \textstyle \tex_textstyle:D
- \__expl_primitive:NN \scriptstyle \tex_scriptstyle:D
- \__expl_primitive:NN \scriptscriptstyle \tex_scriptscriptstyle:D
- \__expl_primitive:NN \nonscript \tex_nonscript:D
- \__expl_primitive:NN \eqno \tex_eqno:D
- \__expl_primitive:NN \leqno \tex_leqno:D
- \__expl_primitive:NN \abovedisplayshortskip \tex_abovedisplayshortskip:D
- \__expl_primitive:NN \abovedisplayskip \tex_abovedisplayskip:D
- \__expl_primitive:NN \belowdisplayshortskip \tex_belowdisplayshortskip:D
- \__expl_primitive:NN \belowdisplayskip \tex_belowdisplayskip:D
- \__expl_primitive:NN \displaywidowpenalty \tex_displaywidowpenalty:D
- \__expl_primitive:NN \displayindent \tex_displayindent:D
- \__expl_primitive:NN \displaywidth \tex_displaywidth:D
- \__expl_primitive:NN \everydisplay \tex_everydisplay:D
- \__expl_primitive:NN \predisplaysize \tex_predisplaysize:D
- \__expl_primitive:NN \predisplaypenalty \tex_predisplaypenalty:D
- \__expl_primitive:NN \postdisplaypenalty \tex_postdisplaypenalty:D
- \__expl_primitive:NN \mathbin \tex_mathbin:D
- \__expl_primitive:NN \mathclose \tex_mathclose:D
- \__expl_primitive:NN \mathinner \tex_mathinner:D
- \__expl_primitive:NN \mathop \tex_mathop:D
- \__expl_primitive:NN \displaylimits \tex_displaylimits:D
- \__expl_primitive:NN \limits \tex_limits:D
- \__expl_primitive:NN \nolimits \tex_nolimits:D
- \__expl_primitive:NN \mathopen \tex_mathopen:D
- \__expl_primitive:NN \mathord \tex_mathord:D
- \__expl_primitive:NN \mathpunct \tex_mathpunct:D
- \__expl_primitive:NN \mathrel \tex_mathrel:D
- \__expl_primitive:NN \overline \tex_overline:D
- \__expl_primitive:NN \underline \tex_underline:D
- \__expl_primitive:NN \left \tex_left:D
- \__expl_primitive:NN \right \tex_right:D
- \__expl_primitive:NN \binoppenalty \tex_binoppenalty:D
- \__expl_primitive:NN \relpenalty \tex_relpenalty:D
- \__expl_primitive:NN \delimitershortfall \tex_delimitershortfall:D
- \__expl_primitive:NN \delimiterfactor \tex_delimiterfactor:D
- \__expl_primitive:NN \nulldelimiterspace \tex_nulldelimiterspace:D
- \__expl_primitive:NN \everymath \tex_everymath:D
- \__expl_primitive:NN \mathsurround \tex_mathsurround:D
- \__expl_primitive:NN \medmuskip \tex_medmuskip:D
- \__expl_primitive:NN \thinmuskip \tex_thinmuskip:D
- \__expl_primitive:NN \thickmuskip \tex_thickmuskip:D
- \__expl_primitive:NN \scriptspace \tex_scriptspace:D
- \__expl_primitive:NN \noboundary \tex_noboundary:D
- \__expl_primitive:NN \accent \tex_accent:D
- \__expl_primitive:NN \char \tex_char:D
- \__expl_primitive:NN \discretionary \tex_discretionary:D
- \__expl_primitive:NN \hfil \tex_hfil:D
- \__expl_primitive:NN \hfilneg \tex_hfilneg:D
- \__expl_primitive:NN \hfill \tex_hfill:D
- \__expl_primitive:NN \hskip \tex_hskip:D
- \__expl_primitive:NN \hss \tex_hss:D
- \__expl_primitive:NN \vfil \tex_vfil:D
- \__expl_primitive:NN \vfilneg \tex_vfilneg:D
- \__expl_primitive:NN \vfill \tex_vfill:D
- \__expl_primitive:NN \vskip \tex_vskip:D
- \__expl_primitive:NN \vss \tex_vss:D
- \__expl_primitive:NN \unskip \tex_unskip:D
- \__expl_primitive:NN \kern \tex_kern:D
- \__expl_primitive:NN \unkern \tex_unkern:D
- \__expl_primitive:NN \hrule \tex_hrule:D
- \__expl_primitive:NN \vrule \tex_vrule:D
- \__expl_primitive:NN \leaders \tex_leaders:D
- \__expl_primitive:NN \cleaders \tex_cleaders:D
- \__expl_primitive:NN \xleaders \tex_xleaders:D
- \__expl_primitive:NN \lastkern \tex_lastkern:D
- \__expl_primitive:NN \lastskip \tex_lastskip:D
- \__expl_primitive:NN \indent \tex_indent:D
- \__expl_primitive:NN \par \tex_par:D
- \__expl_primitive:NN \noindent \tex_noindent:D
- \__expl_primitive:NN \vadjust \tex_vadjust:D
- \__expl_primitive:NN \baselineskip \tex_baselineskip:D
- \__expl_primitive:NN \lineskip \tex_lineskip:D
- \__expl_primitive:NN \lineskiplimit \tex_lineskiplimit:D
- \__expl_primitive:NN \clubpenalty \tex_clubpenalty:D
- \__expl_primitive:NN \widowpenalty \tex_widowpenalty:D
- \__expl_primitive:NN \exhyphenpenalty \tex_exhyphenpenalty:D
- \__expl_primitive:NN \hyphenpenalty \tex_hyphenpenalty:D
- \__expl_primitive:NN \linepenalty \tex_linepenalty:D
- \__expl_primitive:NN \doublehyphendemerits \tex_doublehyphendemerits:D
- \__expl_primitive:NN \finalhyphendemerits \tex_finalhyphendemerits:D
- \__expl_primitive:NN \adjdemerits \tex_adjdemerits:D
- \__expl_primitive:NN \hangafter \tex_hangafter:D
- \__expl_primitive:NN \hangindent \tex_hangindent:D
- \__expl_primitive:NN \parshape \tex_parshape:D
- \__expl_primitive:NN \hsize \tex_hsize:D
- \__expl_primitive:NN \lefthyphenmin \tex_lefthyphenmin:D
- \__expl_primitive:NN \righthyphenmin \tex_righthyphenmin:D
- \__expl_primitive:NN \leftskip \tex_leftskip:D
- \__expl_primitive:NN \rightskip \tex_rightskip:D
- \__expl_primitive:NN \looseness \tex_looseness:D
- \__expl_primitive:NN \parskip \tex_parskip:D
- \__expl_primitive:NN \parindent \tex_parindent:D
- \__expl_primitive:NN \uchyph \tex_uchyph:D
- \__expl_primitive:NN \emergencystretch \tex_emergencystretch:D
- \__expl_primitive:NN \pretolerance \tex_pretolerance:D
- \__expl_primitive:NN \tolerance \tex_tolerance:D
- \__expl_primitive:NN \spaceskip \tex_spaceskip:D
- \__expl_primitive:NN \xspaceskip \tex_xspaceskip:D
- \__expl_primitive:NN \parfillskip \tex_parfillskip:D
- \__expl_primitive:NN \everypar \tex_everypar:D
- \__expl_primitive:NN \prevgraf \tex_prevgraf:D
- \__expl_primitive:NN \spacefactor \tex_spacefactor:D
- \__expl_primitive:NN \shipout \tex_shipout:D
- \__expl_primitive:NN \vsize \tex_vsize:D
- \__expl_primitive:NN \interlinepenalty \tex_interlinepenalty:D
- \__expl_primitive:NN \brokenpenalty \tex_brokenpenalty:D
- \__expl_primitive:NN \topskip \tex_topskip:D
- \__expl_primitive:NN \maxdeadcycles \tex_maxdeadcycles:D
- \__expl_primitive:NN \maxdepth \tex_maxdepth:D
- \__expl_primitive:NN \output \tex_output:D
- \__expl_primitive:NN \deadcycles \tex_deadcycles:D
- \__expl_primitive:NN \pagedepth \tex_pagedepth:D
- \__expl_primitive:NN \pagestretch \tex_pagestretch:D
- \__expl_primitive:NN \pagefilstretch \tex_pagefilstretch:D
- \__expl_primitive:NN \pagefillstretch \tex_pagefillstretch:D
- \__expl_primitive:NN \pagefilllstretch \tex_pagefilllstretch:D
- \__expl_primitive:NN \pageshrink \tex_pageshrink:D
- \__expl_primitive:NN \pagegoal \tex_pagegoal:D
- \__expl_primitive:NN \pagetotal \tex_pagetotal:D
- \__expl_primitive:NN \outputpenalty \tex_outputpenalty:D
- \__expl_primitive:NN \hoffset \tex_hoffset:D
- \__expl_primitive:NN \voffset \tex_voffset:D
- \__expl_primitive:NN \insert \tex_insert:D
- \__expl_primitive:NN \holdinginserts \tex_holdinginserts:D
- \__expl_primitive:NN \floatingpenalty \tex_floatingpenalty:D
- \__expl_primitive:NN \insertpenalties \tex_insertpenalties:D
- \__expl_primitive:NN \lower \tex_lower:D
- \__expl_primitive:NN \moveleft \tex_moveleft:D
- \__expl_primitive:NN \moveright \tex_moveright:D
- \__expl_primitive:NN \raise \tex_raise:D
- \__expl_primitive:NN \copy \tex_copy:D
- \__expl_primitive:NN \lastbox \tex_lastbox:D
- \__expl_primitive:NN \vsplit \tex_vsplit:D
- \__expl_primitive:NN \unhbox \tex_unhbox:D
- \__expl_primitive:NN \unhcopy \tex_unhcopy:D
- \__expl_primitive:NN \unvbox \tex_unvbox:D
- \__expl_primitive:NN \unvcopy \tex_unvcopy:D
- \__expl_primitive:NN \setbox \tex_setbox:D
- \__expl_primitive:NN \hbox \tex_hbox:D
- \__expl_primitive:NN \vbox \tex_vbox:D
- \__expl_primitive:NN \vtop \tex_vtop:D
- \__expl_primitive:NN \prevdepth \tex_prevdepth:D
- \__expl_primitive:NN \badness \tex_badness:D
- \__expl_primitive:NN \hbadness \tex_hbadness:D
- \__expl_primitive:NN \vbadness \tex_vbadness:D
- \__expl_primitive:NN \hfuzz \tex_hfuzz:D
- \__expl_primitive:NN \vfuzz \tex_vfuzz:D
- \__expl_primitive:NN \overfullrule \tex_overfullrule:D
- \__expl_primitive:NN \boxmaxdepth \tex_boxmaxdepth:D
- \__expl_primitive:NN \splitmaxdepth \tex_splitmaxdepth:D
- \__expl_primitive:NN \splittopskip \tex_splittopskip:D
- \__expl_primitive:NN \everyhbox \tex_everyhbox:D
- \__expl_primitive:NN \everyvbox \tex_everyvbox:D
- \__expl_primitive:NN \nullfont \tex_nullfont:D
- \__expl_primitive:NN \textfont \tex_textfont:D
- \__expl_primitive:NN \scriptfont \tex_scriptfont:D
- \__expl_primitive:NN \scriptscriptfont \tex_scriptscriptfont:D
- \__expl_primitive:NN \fontdimen \tex_fontdimen:D
- \__expl_primitive:NN \hyphenchar \tex_hyphenchar:D
- \__expl_primitive:NN \skewchar \tex_skewchar:D
- \__expl_primitive:NN \defaulthyphenchar \tex_defaulthyphenchar:D
- \__expl_primitive:NN \defaultskewchar \tex_defaultskewchar:D
- \__expl_primitive:NN \number \tex_number:D
- \__expl_primitive:NN \romannumeral \tex_romannumeral:D
- \__expl_primitive:NN \string \tex_string:D
- \__expl_primitive:NN \lowercase \tex_lowercase:D
- \__expl_primitive:NN \uppercase \tex_uppercase:D
- \__expl_primitive:NN \meaning \tex_meaning:D
- \__expl_primitive:NN \penalty \tex_penalty:D
- \__expl_primitive:NN \unpenalty \tex_unpenalty:D
- \__expl_primitive:NN \lastpenalty \tex_lastpenalty:D
- \__expl_primitive:NN \special \tex_special:D
- \__expl_primitive:NN \dump \tex_dump:D
- \__expl_primitive:NN \patterns \tex_patterns:D
- \__expl_primitive:NN \hyphenation \tex_hyphenation:D
- \__expl_primitive:NN \time \tex_time:D
- \__expl_primitive:NN \day \tex_day:D
- \__expl_primitive:NN \month \tex_month:D
- \__expl_primitive:NN \year \tex_year:D
- \__expl_primitive:NN \jobname \tex_jobname:D
- \__expl_primitive:NN \everyjob \tex_everyjob:D
- \__expl_primitive:NN \count \tex_count:D
- \__expl_primitive:NN \dimen \tex_dimen:D
- \__expl_primitive:NN \skip \tex_skip:D
- \__expl_primitive:NN \toks \tex_toks:D
- \__expl_primitive:NN \muskip \tex_muskip:D
- \__expl_primitive:NN \box \tex_box:D
- \__expl_primitive:NN \wd \tex_wd:D
- \__expl_primitive:NN \ht \tex_ht:D
- \__expl_primitive:NN \dp \tex_dp:D
- \__expl_primitive:NN \catcode \tex_catcode:D
- \__expl_primitive:NN \delcode \tex_delcode:D
- \__expl_primitive:NN \sfcode \tex_sfcode:D
- \__expl_primitive:NN \lccode \tex_lccode:D
- \__expl_primitive:NN \uccode \tex_uccode:D
- \__expl_primitive:NN \mathcode \tex_mathcode:D
- \__expl_primitive:NN \ifdefined \etex_ifdefined:D
- \__expl_primitive:NN \ifcsname \etex_ifcsname:D
- \__expl_primitive:NN \unless \etex_unless:D
- \__expl_primitive:NN \eTeXversion \etex_eTeXversion:D
- \__expl_primitive:NN \eTeXrevision \etex_eTeXrevision:D
- \__expl_primitive:NN \marks \etex_marks:D
- \__expl_primitive:NN \topmarks \etex_topmarks:D
- \__expl_primitive:NN \firstmarks \etex_firstmarks:D
- \__expl_primitive:NN \botmarks \etex_botmarks:D
- \__expl_primitive:NN \splitfirstmarks \etex_splitfirstmarks:D
- \__expl_primitive:NN \splitbotmarks \etex_splitbotmarks:D
- \__expl_primitive:NN \unexpanded \etex_unexpanded:D
- \__expl_primitive:NN \detokenize \etex_detokenize:D
- \__expl_primitive:NN \scantokens \etex_scantokens:D
- \__expl_primitive:NN \showtokens \etex_showtokens:D
- \__expl_primitive:NN \readline \etex_readline:D
- \__expl_primitive:NN \tracingassigns \etex_tracingassigns:D
- \__expl_primitive:NN \tracingscantokens \etex_tracingscantokens:D
- \__expl_primitive:NN \tracingnesting \etex_tracingnesting:D
- \__expl_primitive:NN \tracingifs \etex_tracingifs:D
- \__expl_primitive:NN \currentiflevel \etex_currentiflevel:D
- \__expl_primitive:NN \currentifbranch \etex_currentifbranch:D
- \__expl_primitive:NN \currentiftype \etex_currentiftype:D
- \__expl_primitive:NN \tracinggroups \etex_tracinggroups:D
- \__expl_primitive:NN \currentgrouplevel \etex_currentgrouplevel:D
- \__expl_primitive:NN \currentgrouptype \etex_currentgrouptype:D
- \__expl_primitive:NN \showgroups \etex_showgroups:D
- \__expl_primitive:NN \showifs \etex_showifs:D
- \__expl_primitive:NN \interactionmode \etex_interactionmode:D
- \__expl_primitive:NN \lastnodetype \etex_lastnodetype:D
- \__expl_primitive:NN \iffontchar \etex_iffontchar:D
- \__expl_primitive:NN \fontcharht \etex_fontcharht:D
- \__expl_primitive:NN \fontchardp \etex_fontchardp:D
- \__expl_primitive:NN \fontcharwd \etex_fontcharwd:D
- \__expl_primitive:NN \fontcharic \etex_fontcharic:D
- \__expl_primitive:NN \parshapeindent \etex_parshapeindent:D
- \__expl_primitive:NN \parshapelength \etex_parshapelength:D
- \__expl_primitive:NN \parshapedimen \etex_parshapedimen:D
- \__expl_primitive:NN \numexpr \etex_numexpr:D
- \__expl_primitive:NN \dimexpr \etex_dimexpr:D
- \__expl_primitive:NN \glueexpr \etex_glueexpr:D
- \__expl_primitive:NN \muexpr \etex_muexpr:D
- \__expl_primitive:NN \gluestretch \etex_gluestretch:D
- \__expl_primitive:NN \glueshrink \etex_glueshrink:D
- \__expl_primitive:NN \gluestretchorder \etex_gluestretchorder:D
- \__expl_primitive:NN \glueshrinkorder \etex_glueshrinkorder:D
- \__expl_primitive:NN \gluetomu \etex_gluetomu:D
- \__expl_primitive:NN \mutoglue \etex_mutoglue:D
- \__expl_primitive:NN \lastlinefit \etex_lastlinefit:D
- \__expl_primitive:NN \interlinepenalties \etex_interlinepenalties:D
- \__expl_primitive:NN \clubpenalties \etex_clubpenalties:D
- \__expl_primitive:NN \widowpenalties \etex_widowpenalties:D
- \__expl_primitive:NN \displaywidowpenalties \etex_displaywidowpenalties:D
- \__expl_primitive:NN \middle \etex_middle:D
- \__expl_primitive:NN \savinghyphcodes \etex_savinghyphcodes:D
- \__expl_primitive:NN \savingvdiscards \etex_savingvdiscards:D
- \__expl_primitive:NN \pagediscards \etex_pagediscards:D
- \__expl_primitive:NN \splitdiscards \etex_splitdiscards:D
- \__expl_primitive:NN \TeXXeTstate \etex_TeXXeTstate:D
- \__expl_primitive:NN \beginL \etex_beginL:D
- \__expl_primitive:NN \endL \etex_endL:D
- \__expl_primitive:NN \beginR \etex_beginR:D
- \__expl_primitive:NN \endR \etex_endR:D
- \__expl_primitive:NN \predisplaydirection \etex_predisplaydirection:D
- \__expl_primitive:NN \everyeof \etex_everyeof:D
- \__expl_primitive:NN \protected \etex_protected:D
- \__expl_primitive:NN \pdfcreationdate \pdftex_pdfcreationdate:D
- \__expl_primitive:NN \pdfcolorstack \pdftex_pdfcolorstack:D
- \__expl_primitive:NN \pdfcompresslevel \pdftex_pdfcompresslevel:D
- \__expl_primitive:NN \pdfdecimaldigits \pdftex_pdfdecimaldigits:D
- \__expl_primitive:NN \pdfhorigin \pdftex_pdfhorigin:D
- \__expl_primitive:NN \pdfinfo \pdftex_pdfinfo:D
- \__expl_primitive:NN \pdflastxform \pdftex_pdflastxform:D
- \__expl_primitive:NN \pdfliteral \pdftex_pdfliteral:D
- \__expl_primitive:NN \pdfminorversion \pdftex_pdfminorversion:D
- \__expl_primitive:NN \pdfobjcompresslevel \pdftex_pdfobjcompresslevel:D
- \__expl_primitive:NN \pdfoutput \pdftex_pdfoutput:D
- \__expl_primitive:NN \pdfrefxform \pdftex_pdfrefxform:D
- \__expl_primitive:NN \pdfrestore \pdftex_pdfrestore:D
- \__expl_primitive:NN \pdfsave \pdftex_pdfsave:D
- \__expl_primitive:NN \pdfsetmatrix \pdftex_pdfsetmatrix:D
- \__expl_primitive:NN \pdfpkresolution \pdftex_pdfpkresolution:D
- \__expl_primitive:NN \pdftexrevision \pdftex_pdftextrevision:D
- \__expl_primitive:NN \pdfvorigin \pdftex_pdfvorigin:D
- \__expl_primitive:NN \pdfxform \pdftex_pdfxform:D
- \__expl_primitive:NN \pdfstrcmp \pdftex_strcmp:D
- \__expl_primitive:NN \XeTeXversion \xetex_XeTeXversion:D
- \__expl_primitive:NN \catcodetable \luatex_catcodetable:D
- \__expl_primitive:NN \directlua \luatex_directlua:D
- \__expl_primitive:NN \initcatcodetable \luatex_initcatcodetable:D
- \__expl_primitive:NN \latelua \luatex_latelua:D
- \__expl_primitive:NN \luatexversion \luatex_luatexversion:D
- \__expl_primitive:NN \savecatcodetable \luatex_savecatcodetable:D
- \__expl_primitive:NN \bodydir \luatex_bodydir:D
- \__expl_primitive:NN \mathdir \luatex_mathdir:D
- \__expl_primitive:NN \pagedir \luatex_pagedir:D
- \__expl_primitive:NN \pardir \luatex_pardir:D
- \__expl_primitive:NN \textdir \luatex_textdir:D
+ \__kernel_primitive:NN \ \tex_space:D
+ \__kernel_primitive:NN \/ \tex_italiccorrection:D
+ \__kernel_primitive:NN \- \tex_hyphen:D
+ \__kernel_primitive:NN \let \tex_let:D
+ \__kernel_primitive:NN \def \tex_def:D
+ \__kernel_primitive:NN \edef \tex_edef:D
+ \__kernel_primitive:NN \gdef \tex_gdef:D
+ \__kernel_primitive:NN \xdef \tex_xdef:D
+ \__kernel_primitive:NN \chardef \tex_chardef:D
+ \__kernel_primitive:NN \countdef \tex_countdef:D
+ \__kernel_primitive:NN \dimendef \tex_dimendef:D
+ \__kernel_primitive:NN \skipdef \tex_skipdef:D
+ \__kernel_primitive:NN \muskipdef \tex_muskipdef:D
+ \__kernel_primitive:NN \mathchardef \tex_mathchardef:D
+ \__kernel_primitive:NN \toksdef \tex_toksdef:D
+ \__kernel_primitive:NN \futurelet \tex_futurelet:D
+ \__kernel_primitive:NN \advance \tex_advance:D
+ \__kernel_primitive:NN \divide \tex_divide:D
+ \__kernel_primitive:NN \multiply \tex_multiply:D
+ \__kernel_primitive:NN \font \tex_font:D
+ \__kernel_primitive:NN \fam \tex_fam:D
+ \__kernel_primitive:NN \global \tex_global:D
+ \__kernel_primitive:NN \long \tex_long:D
+ \__kernel_primitive:NN \outer \tex_outer:D
+ \__kernel_primitive:NN \setlanguage \tex_setlanguage:D
+ \__kernel_primitive:NN \globaldefs \tex_globaldefs:D
+ \__kernel_primitive:NN \afterassignment \tex_afterassignment:D
+ \__kernel_primitive:NN \aftergroup \tex_aftergroup:D
+ \__kernel_primitive:NN \expandafter \tex_expandafter:D
+ \__kernel_primitive:NN \noexpand \tex_noexpand:D
+ \__kernel_primitive:NN \begingroup \tex_begingroup:D
+ \__kernel_primitive:NN \endgroup \tex_endgroup:D
+ \__kernel_primitive:NN \halign \tex_halign:D
+ \__kernel_primitive:NN \valign \tex_valign:D
+ \__kernel_primitive:NN \cr \tex_cr:D
+ \__kernel_primitive:NN \crcr \tex_crcr:D
+ \__kernel_primitive:NN \noalign \tex_noalign:D
+ \__kernel_primitive:NN \omit \tex_omit:D
+ \__kernel_primitive:NN \span \tex_span:D
+ \__kernel_primitive:NN \tabskip \tex_tabskip:D
+ \__kernel_primitive:NN \everycr \tex_everycr:D
+ \__kernel_primitive:NN \if \tex_if:D
+ \__kernel_primitive:NN \ifcase \tex_ifcase:D
+ \__kernel_primitive:NN \ifcat \tex_ifcat:D
+ \__kernel_primitive:NN \ifnum \tex_ifnum:D
+ \__kernel_primitive:NN \ifodd \tex_ifodd:D
+ \__kernel_primitive:NN \ifdim \tex_ifdim:D
+ \__kernel_primitive:NN \ifeof \tex_ifeof:D
+ \__kernel_primitive:NN \ifhbox \tex_ifhbox:D
+ \__kernel_primitive:NN \ifvbox \tex_ifvbox:D
+ \__kernel_primitive:NN \ifvoid \tex_ifvoid:D
+ \__kernel_primitive:NN \ifx \tex_ifx:D
+ \__kernel_primitive:NN \iffalse \tex_iffalse:D
+ \__kernel_primitive:NN \iftrue \tex_iftrue:D
+ \__kernel_primitive:NN \ifhmode \tex_ifhmode:D
+ \__kernel_primitive:NN \ifmmode \tex_ifmmode:D
+ \__kernel_primitive:NN \ifvmode \tex_ifvmode:D
+ \__kernel_primitive:NN \ifinner \tex_ifinner:D
+ \__kernel_primitive:NN \else \tex_else:D
+ \__kernel_primitive:NN \fi \tex_fi:D
+ \__kernel_primitive:NN \or \tex_or:D
+ \__kernel_primitive:NN \immediate \tex_immediate:D
+ \__kernel_primitive:NN \closeout \tex_closeout:D
+ \__kernel_primitive:NN \openin \tex_openin:D
+ \__kernel_primitive:NN \openout \tex_openout:D
+ \__kernel_primitive:NN \read \tex_read:D
+ \__kernel_primitive:NN \write \tex_write:D
+ \__kernel_primitive:NN \closein \tex_closein:D
+ \__kernel_primitive:NN \newlinechar \tex_newlinechar:D
+ \__kernel_primitive:NN \input \tex_input:D
+ \__kernel_primitive:NN \endinput \tex_endinput:D
+ \__kernel_primitive:NN \inputlineno \tex_inputlineno:D
+ \__kernel_primitive:NN \errmessage \tex_errmessage:D
+ \__kernel_primitive:NN \message \tex_message:D
+ \__kernel_primitive:NN \show \tex_show:D
+ \__kernel_primitive:NN \showthe \tex_showthe:D
+ \__kernel_primitive:NN \showbox \tex_showbox:D
+ \__kernel_primitive:NN \showlists \tex_showlists:D
+ \__kernel_primitive:NN \errhelp \tex_errhelp:D
+ \__kernel_primitive:NN \errorcontextlines \tex_errorcontextlines:D
+ \__kernel_primitive:NN \tracingcommands \tex_tracingcommands:D
+ \__kernel_primitive:NN \tracinglostchars \tex_tracinglostchars:D
+ \__kernel_primitive:NN \tracingmacros \tex_tracingmacros:D
+ \__kernel_primitive:NN \tracingonline \tex_tracingonline:D
+ \__kernel_primitive:NN \tracingoutput \tex_tracingoutput:D
+ \__kernel_primitive:NN \tracingpages \tex_tracingpages:D
+ \__kernel_primitive:NN \tracingparagraphs \tex_tracingparagraphs:D
+ \__kernel_primitive:NN \tracingrestores \tex_tracingrestores:D
+ \__kernel_primitive:NN \tracingstats \tex_tracingstats:D
+ \__kernel_primitive:NN \pausing \tex_pausing:D
+ \__kernel_primitive:NN \showboxbreadth \tex_showboxbreadth:D
+ \__kernel_primitive:NN \showboxdepth \tex_showboxdepth:D
+ \__kernel_primitive:NN \batchmode \tex_batchmode:D
+ \__kernel_primitive:NN \errorstopmode \tex_errorstopmode:D
+ \__kernel_primitive:NN \nonstopmode \tex_nonstopmode:D
+ \__kernel_primitive:NN \scrollmode \tex_scrollmode:D
+ \__kernel_primitive:NN \end \tex_end:D
+ \__kernel_primitive:NN \csname \tex_csname:D
+ \__kernel_primitive:NN \endcsname \tex_endcsname:D
+ \__kernel_primitive:NN \ignorespaces \tex_ignorespaces:D
+ \__kernel_primitive:NN \relax \tex_relax:D
+ \__kernel_primitive:NN \the \tex_the:D
+ \__kernel_primitive:NN \mag \tex_mag:D
+ \__kernel_primitive:NN \language \tex_language:D
+ \__kernel_primitive:NN \mark \tex_mark:D
+ \__kernel_primitive:NN \topmark \tex_topmark:D
+ \__kernel_primitive:NN \firstmark \tex_firstmark:D
+ \__kernel_primitive:NN \botmark \tex_botmark:D
+ \__kernel_primitive:NN \splitfirstmark \tex_splitfirstmark:D
+ \__kernel_primitive:NN \splitbotmark \tex_splitbotmark:D
+ \__kernel_primitive:NN \fontname \tex_fontname:D
+ \__kernel_primitive:NN \escapechar \tex_escapechar:D
+ \__kernel_primitive:NN \endlinechar \tex_endlinechar:D
+ \__kernel_primitive:NN \mathchoice \tex_mathchoice:D
+ \__kernel_primitive:NN \delimiter \tex_delimiter:D
+ \__kernel_primitive:NN \mathaccent \tex_mathaccent:D
+ \__kernel_primitive:NN \mathchar \tex_mathchar:D
+ \__kernel_primitive:NN \mskip \tex_mskip:D
+ \__kernel_primitive:NN \radical \tex_radical:D
+ \__kernel_primitive:NN \vcenter \tex_vcenter:D
+ \__kernel_primitive:NN \mkern \tex_mkern:D
+ \__kernel_primitive:NN \above \tex_above:D
+ \__kernel_primitive:NN \abovewithdelims \tex_abovewithdelims:D
+ \__kernel_primitive:NN \atop \tex_atop:D
+ \__kernel_primitive:NN \atopwithdelims \tex_atopwithdelims:D
+ \__kernel_primitive:NN \over \tex_over:D
+ \__kernel_primitive:NN \overwithdelims \tex_overwithdelims:D
+ \__kernel_primitive:NN \displaystyle \tex_displaystyle:D
+ \__kernel_primitive:NN \textstyle \tex_textstyle:D
+ \__kernel_primitive:NN \scriptstyle \tex_scriptstyle:D
+ \__kernel_primitive:NN \scriptscriptstyle \tex_scriptscriptstyle:D
+ \__kernel_primitive:NN \nonscript \tex_nonscript:D
+ \__kernel_primitive:NN \eqno \tex_eqno:D
+ \__kernel_primitive:NN \leqno \tex_leqno:D
+ \__kernel_primitive:NN \abovedisplayshortskip \tex_abovedisplayshortskip:D
+ \__kernel_primitive:NN \abovedisplayskip \tex_abovedisplayskip:D
+ \__kernel_primitive:NN \belowdisplayshortskip \tex_belowdisplayshortskip:D
+ \__kernel_primitive:NN \belowdisplayskip \tex_belowdisplayskip:D
+ \__kernel_primitive:NN \displaywidowpenalty \tex_displaywidowpenalty:D
+ \__kernel_primitive:NN \displayindent \tex_displayindent:D
+ \__kernel_primitive:NN \displaywidth \tex_displaywidth:D
+ \__kernel_primitive:NN \everydisplay \tex_everydisplay:D
+ \__kernel_primitive:NN \predisplaysize \tex_predisplaysize:D
+ \__kernel_primitive:NN \predisplaypenalty \tex_predisplaypenalty:D
+ \__kernel_primitive:NN \postdisplaypenalty \tex_postdisplaypenalty:D
+ \__kernel_primitive:NN \mathbin \tex_mathbin:D
+ \__kernel_primitive:NN \mathclose \tex_mathclose:D
+ \__kernel_primitive:NN \mathinner \tex_mathinner:D
+ \__kernel_primitive:NN \mathop \tex_mathop:D
+ \__kernel_primitive:NN \displaylimits \tex_displaylimits:D
+ \__kernel_primitive:NN \limits \tex_limits:D
+ \__kernel_primitive:NN \nolimits \tex_nolimits:D
+ \__kernel_primitive:NN \mathopen \tex_mathopen:D
+ \__kernel_primitive:NN \mathord \tex_mathord:D
+ \__kernel_primitive:NN \mathpunct \tex_mathpunct:D
+ \__kernel_primitive:NN \mathrel \tex_mathrel:D
+ \__kernel_primitive:NN \overline \tex_overline:D
+ \__kernel_primitive:NN \underline \tex_underline:D
+ \__kernel_primitive:NN \left \tex_left:D
+ \__kernel_primitive:NN \right \tex_right:D
+ \__kernel_primitive:NN \binoppenalty \tex_binoppenalty:D
+ \__kernel_primitive:NN \relpenalty \tex_relpenalty:D
+ \__kernel_primitive:NN \delimitershortfall \tex_delimitershortfall:D
+ \__kernel_primitive:NN \delimiterfactor \tex_delimiterfactor:D
+ \__kernel_primitive:NN \nulldelimiterspace \tex_nulldelimiterspace:D
+ \__kernel_primitive:NN \everymath \tex_everymath:D
+ \__kernel_primitive:NN \mathsurround \tex_mathsurround:D
+ \__kernel_primitive:NN \medmuskip \tex_medmuskip:D
+ \__kernel_primitive:NN \thinmuskip \tex_thinmuskip:D
+ \__kernel_primitive:NN \thickmuskip \tex_thickmuskip:D
+ \__kernel_primitive:NN \scriptspace \tex_scriptspace:D
+ \__kernel_primitive:NN \noboundary \tex_noboundary:D
+ \__kernel_primitive:NN \accent \tex_accent:D
+ \__kernel_primitive:NN \char \tex_char:D
+ \__kernel_primitive:NN \discretionary \tex_discretionary:D
+ \__kernel_primitive:NN \hfil \tex_hfil:D
+ \__kernel_primitive:NN \hfilneg \tex_hfilneg:D
+ \__kernel_primitive:NN \hfill \tex_hfill:D
+ \__kernel_primitive:NN \hskip \tex_hskip:D
+ \__kernel_primitive:NN \hss \tex_hss:D
+ \__kernel_primitive:NN \vfil \tex_vfil:D
+ \__kernel_primitive:NN \vfilneg \tex_vfilneg:D
+ \__kernel_primitive:NN \vfill \tex_vfill:D
+ \__kernel_primitive:NN \vskip \tex_vskip:D
+ \__kernel_primitive:NN \vss \tex_vss:D
+ \__kernel_primitive:NN \unskip \tex_unskip:D
+ \__kernel_primitive:NN \kern \tex_kern:D
+ \__kernel_primitive:NN \unkern \tex_unkern:D
+ \__kernel_primitive:NN \hrule \tex_hrule:D
+ \__kernel_primitive:NN \vrule \tex_vrule:D
+ \__kernel_primitive:NN \leaders \tex_leaders:D
+ \__kernel_primitive:NN \cleaders \tex_cleaders:D
+ \__kernel_primitive:NN \xleaders \tex_xleaders:D
+ \__kernel_primitive:NN \lastkern \tex_lastkern:D
+ \__kernel_primitive:NN \lastskip \tex_lastskip:D
+ \__kernel_primitive:NN \indent \tex_indent:D
+ \__kernel_primitive:NN \par \tex_par:D
+ \__kernel_primitive:NN \noindent \tex_noindent:D
+ \__kernel_primitive:NN \vadjust \tex_vadjust:D
+ \__kernel_primitive:NN \baselineskip \tex_baselineskip:D
+ \__kernel_primitive:NN \lineskip \tex_lineskip:D
+ \__kernel_primitive:NN \lineskiplimit \tex_lineskiplimit:D
+ \__kernel_primitive:NN \clubpenalty \tex_clubpenalty:D
+ \__kernel_primitive:NN \widowpenalty \tex_widowpenalty:D
+ \__kernel_primitive:NN \exhyphenpenalty \tex_exhyphenpenalty:D
+ \__kernel_primitive:NN \hyphenpenalty \tex_hyphenpenalty:D
+ \__kernel_primitive:NN \linepenalty \tex_linepenalty:D
+ \__kernel_primitive:NN \doublehyphendemerits \tex_doublehyphendemerits:D
+ \__kernel_primitive:NN \finalhyphendemerits \tex_finalhyphendemerits:D
+ \__kernel_primitive:NN \adjdemerits \tex_adjdemerits:D
+ \__kernel_primitive:NN \hangafter \tex_hangafter:D
+ \__kernel_primitive:NN \hangindent \tex_hangindent:D
+ \__kernel_primitive:NN \parshape \tex_parshape:D
+ \__kernel_primitive:NN \hsize \tex_hsize:D
+ \__kernel_primitive:NN \lefthyphenmin \tex_lefthyphenmin:D
+ \__kernel_primitive:NN \righthyphenmin \tex_righthyphenmin:D
+ \__kernel_primitive:NN \leftskip \tex_leftskip:D
+ \__kernel_primitive:NN \rightskip \tex_rightskip:D
+ \__kernel_primitive:NN \looseness \tex_looseness:D
+ \__kernel_primitive:NN \parskip \tex_parskip:D
+ \__kernel_primitive:NN \parindent \tex_parindent:D
+ \__kernel_primitive:NN \uchyph \tex_uchyph:D
+ \__kernel_primitive:NN \emergencystretch \tex_emergencystretch:D
+ \__kernel_primitive:NN \pretolerance \tex_pretolerance:D
+ \__kernel_primitive:NN \tolerance \tex_tolerance:D
+ \__kernel_primitive:NN \spaceskip \tex_spaceskip:D
+ \__kernel_primitive:NN \xspaceskip \tex_xspaceskip:D
+ \__kernel_primitive:NN \parfillskip \tex_parfillskip:D
+ \__kernel_primitive:NN \everypar \tex_everypar:D
+ \__kernel_primitive:NN \prevgraf \tex_prevgraf:D
+ \__kernel_primitive:NN \spacefactor \tex_spacefactor:D
+ \__kernel_primitive:NN \shipout \tex_shipout:D
+ \__kernel_primitive:NN \vsize \tex_vsize:D
+ \__kernel_primitive:NN \interlinepenalty \tex_interlinepenalty:D
+ \__kernel_primitive:NN \brokenpenalty \tex_brokenpenalty:D
+ \__kernel_primitive:NN \topskip \tex_topskip:D
+ \__kernel_primitive:NN \maxdeadcycles \tex_maxdeadcycles:D
+ \__kernel_primitive:NN \maxdepth \tex_maxdepth:D
+ \__kernel_primitive:NN \output \tex_output:D
+ \__kernel_primitive:NN \deadcycles \tex_deadcycles:D
+ \__kernel_primitive:NN \pagedepth \tex_pagedepth:D
+ \__kernel_primitive:NN \pagestretch \tex_pagestretch:D
+ \__kernel_primitive:NN \pagefilstretch \tex_pagefilstretch:D
+ \__kernel_primitive:NN \pagefillstretch \tex_pagefillstretch:D
+ \__kernel_primitive:NN \pagefilllstretch \tex_pagefilllstretch:D
+ \__kernel_primitive:NN \pageshrink \tex_pageshrink:D
+ \__kernel_primitive:NN \pagegoal \tex_pagegoal:D
+ \__kernel_primitive:NN \pagetotal \tex_pagetotal:D
+ \__kernel_primitive:NN \outputpenalty \tex_outputpenalty:D
+ \__kernel_primitive:NN \hoffset \tex_hoffset:D
+ \__kernel_primitive:NN \voffset \tex_voffset:D
+ \__kernel_primitive:NN \insert \tex_insert:D
+ \__kernel_primitive:NN \holdinginserts \tex_holdinginserts:D
+ \__kernel_primitive:NN \floatingpenalty \tex_floatingpenalty:D
+ \__kernel_primitive:NN \insertpenalties \tex_insertpenalties:D
+ \__kernel_primitive:NN \lower \tex_lower:D
+ \__kernel_primitive:NN \moveleft \tex_moveleft:D
+ \__kernel_primitive:NN \moveright \tex_moveright:D
+ \__kernel_primitive:NN \raise \tex_raise:D
+ \__kernel_primitive:NN \copy \tex_copy:D
+ \__kernel_primitive:NN \lastbox \tex_lastbox:D
+ \__kernel_primitive:NN \vsplit \tex_vsplit:D
+ \__kernel_primitive:NN \unhbox \tex_unhbox:D
+ \__kernel_primitive:NN \unhcopy \tex_unhcopy:D
+ \__kernel_primitive:NN \unvbox \tex_unvbox:D
+ \__kernel_primitive:NN \unvcopy \tex_unvcopy:D
+ \__kernel_primitive:NN \setbox \tex_setbox:D
+ \__kernel_primitive:NN \hbox \tex_hbox:D
+ \__kernel_primitive:NN \vbox \tex_vbox:D
+ \__kernel_primitive:NN \vtop \tex_vtop:D
+ \__kernel_primitive:NN \prevdepth \tex_prevdepth:D
+ \__kernel_primitive:NN \badness \tex_badness:D
+ \__kernel_primitive:NN \hbadness \tex_hbadness:D
+ \__kernel_primitive:NN \vbadness \tex_vbadness:D
+ \__kernel_primitive:NN \hfuzz \tex_hfuzz:D
+ \__kernel_primitive:NN \vfuzz \tex_vfuzz:D
+ \__kernel_primitive:NN \overfullrule \tex_overfullrule:D
+ \__kernel_primitive:NN \boxmaxdepth \tex_boxmaxdepth:D
+ \__kernel_primitive:NN \splitmaxdepth \tex_splitmaxdepth:D
+ \__kernel_primitive:NN \splittopskip \tex_splittopskip:D
+ \__kernel_primitive:NN \everyhbox \tex_everyhbox:D
+ \__kernel_primitive:NN \everyvbox \tex_everyvbox:D
+ \__kernel_primitive:NN \nullfont \tex_nullfont:D
+ \__kernel_primitive:NN \textfont \tex_textfont:D
+ \__kernel_primitive:NN \scriptfont \tex_scriptfont:D
+ \__kernel_primitive:NN \scriptscriptfont \tex_scriptscriptfont:D
+ \__kernel_primitive:NN \fontdimen \tex_fontdimen:D
+ \__kernel_primitive:NN \hyphenchar \tex_hyphenchar:D
+ \__kernel_primitive:NN \skewchar \tex_skewchar:D
+ \__kernel_primitive:NN \defaulthyphenchar \tex_defaulthyphenchar:D
+ \__kernel_primitive:NN \defaultskewchar \tex_defaultskewchar:D
+ \__kernel_primitive:NN \number \tex_number:D
+ \__kernel_primitive:NN \romannumeral \tex_romannumeral:D
+ \__kernel_primitive:NN \string \tex_string:D
+ \__kernel_primitive:NN \lowercase \tex_lowercase:D
+ \__kernel_primitive:NN \uppercase \tex_uppercase:D
+ \__kernel_primitive:NN \meaning \tex_meaning:D
+ \__kernel_primitive:NN \penalty \tex_penalty:D
+ \__kernel_primitive:NN \unpenalty \tex_unpenalty:D
+ \__kernel_primitive:NN \lastpenalty \tex_lastpenalty:D
+ \__kernel_primitive:NN \special \tex_special:D
+ \__kernel_primitive:NN \dump \tex_dump:D
+ \__kernel_primitive:NN \patterns \tex_patterns:D
+ \__kernel_primitive:NN \hyphenation \tex_hyphenation:D
+ \__kernel_primitive:NN \time \tex_time:D
+ \__kernel_primitive:NN \day \tex_day:D
+ \__kernel_primitive:NN \month \tex_month:D
+ \__kernel_primitive:NN \year \tex_year:D
+ \__kernel_primitive:NN \jobname \tex_jobname:D
+ \__kernel_primitive:NN \everyjob \tex_everyjob:D
+ \__kernel_primitive:NN \count \tex_count:D
+ \__kernel_primitive:NN \dimen \tex_dimen:D
+ \__kernel_primitive:NN \skip \tex_skip:D
+ \__kernel_primitive:NN \toks \tex_toks:D
+ \__kernel_primitive:NN \muskip \tex_muskip:D
+ \__kernel_primitive:NN \box \tex_box:D
+ \__kernel_primitive:NN \wd \tex_wd:D
+ \__kernel_primitive:NN \ht \tex_ht:D
+ \__kernel_primitive:NN \dp \tex_dp:D
+ \__kernel_primitive:NN \catcode \tex_catcode:D
+ \__kernel_primitive:NN \delcode \tex_delcode:D
+ \__kernel_primitive:NN \sfcode \tex_sfcode:D
+ \__kernel_primitive:NN \lccode \tex_lccode:D
+ \__kernel_primitive:NN \uccode \tex_uccode:D
+ \__kernel_primitive:NN \mathcode \tex_mathcode:D
+ \__kernel_primitive:NN \ifdefined \etex_ifdefined:D
+ \__kernel_primitive:NN \ifcsname \etex_ifcsname:D
+ \__kernel_primitive:NN \unless \etex_unless:D
+ \__kernel_primitive:NN \eTeXversion \etex_eTeXversion:D
+ \__kernel_primitive:NN \eTeXrevision \etex_eTeXrevision:D
+ \__kernel_primitive:NN \marks \etex_marks:D
+ \__kernel_primitive:NN \topmarks \etex_topmarks:D
+ \__kernel_primitive:NN \firstmarks \etex_firstmarks:D
+ \__kernel_primitive:NN \botmarks \etex_botmarks:D
+ \__kernel_primitive:NN \splitfirstmarks \etex_splitfirstmarks:D
+ \__kernel_primitive:NN \splitbotmarks \etex_splitbotmarks:D
+ \__kernel_primitive:NN \unexpanded \etex_unexpanded:D
+ \__kernel_primitive:NN \detokenize \etex_detokenize:D
+ \__kernel_primitive:NN \scantokens \etex_scantokens:D
+ \__kernel_primitive:NN \showtokens \etex_showtokens:D
+ \__kernel_primitive:NN \readline \etex_readline:D
+ \__kernel_primitive:NN \tracingassigns \etex_tracingassigns:D
+ \__kernel_primitive:NN \tracingscantokens \etex_tracingscantokens:D
+ \__kernel_primitive:NN \tracingnesting \etex_tracingnesting:D
+ \__kernel_primitive:NN \tracingifs \etex_tracingifs:D
+ \__kernel_primitive:NN \currentiflevel \etex_currentiflevel:D
+ \__kernel_primitive:NN \currentifbranch \etex_currentifbranch:D
+ \__kernel_primitive:NN \currentiftype \etex_currentiftype:D
+ \__kernel_primitive:NN \tracinggroups \etex_tracinggroups:D
+ \__kernel_primitive:NN \currentgrouplevel \etex_currentgrouplevel:D
+ \__kernel_primitive:NN \currentgrouptype \etex_currentgrouptype:D
+ \__kernel_primitive:NN \showgroups \etex_showgroups:D
+ \__kernel_primitive:NN \showifs \etex_showifs:D
+ \__kernel_primitive:NN \interactionmode \etex_interactionmode:D
+ \__kernel_primitive:NN \lastnodetype \etex_lastnodetype:D
+ \__kernel_primitive:NN \iffontchar \etex_iffontchar:D
+ \__kernel_primitive:NN \fontcharht \etex_fontcharht:D
+ \__kernel_primitive:NN \fontchardp \etex_fontchardp:D
+ \__kernel_primitive:NN \fontcharwd \etex_fontcharwd:D
+ \__kernel_primitive:NN \fontcharic \etex_fontcharic:D
+ \__kernel_primitive:NN \parshapeindent \etex_parshapeindent:D
+ \__kernel_primitive:NN \parshapelength \etex_parshapelength:D
+ \__kernel_primitive:NN \parshapedimen \etex_parshapedimen:D
+ \__kernel_primitive:NN \numexpr \etex_numexpr:D
+ \__kernel_primitive:NN \dimexpr \etex_dimexpr:D
+ \__kernel_primitive:NN \glueexpr \etex_glueexpr:D
+ \__kernel_primitive:NN \muexpr \etex_muexpr:D
+ \__kernel_primitive:NN \gluestretch \etex_gluestretch:D
+ \__kernel_primitive:NN \glueshrink \etex_glueshrink:D
+ \__kernel_primitive:NN \gluestretchorder \etex_gluestretchorder:D
+ \__kernel_primitive:NN \glueshrinkorder \etex_glueshrinkorder:D
+ \__kernel_primitive:NN \gluetomu \etex_gluetomu:D
+ \__kernel_primitive:NN \mutoglue \etex_mutoglue:D
+ \__kernel_primitive:NN \lastlinefit \etex_lastlinefit:D
+ \__kernel_primitive:NN \interlinepenalties \etex_interlinepenalties:D
+ \__kernel_primitive:NN \clubpenalties \etex_clubpenalties:D
+ \__kernel_primitive:NN \widowpenalties \etex_widowpenalties:D
+ \__kernel_primitive:NN \displaywidowpenalties \etex_displaywidowpenalties:D
+ \__kernel_primitive:NN \middle \etex_middle:D
+ \__kernel_primitive:NN \savinghyphcodes \etex_savinghyphcodes:D
+ \__kernel_primitive:NN \savingvdiscards \etex_savingvdiscards:D
+ \__kernel_primitive:NN \pagediscards \etex_pagediscards:D
+ \__kernel_primitive:NN \splitdiscards \etex_splitdiscards:D
+ \__kernel_primitive:NN \TeXXeTstate \etex_TeXXeTstate:D
+ \__kernel_primitive:NN \beginL \etex_beginL:D
+ \__kernel_primitive:NN \endL \etex_endL:D
+ \__kernel_primitive:NN \beginR \etex_beginR:D
+ \__kernel_primitive:NN \endR \etex_endR:D
+ \__kernel_primitive:NN \predisplaydirection \etex_predisplaydirection:D
+ \__kernel_primitive:NN \everyeof \etex_everyeof:D
+ \__kernel_primitive:NN \protected \etex_protected:D
+ \__kernel_primitive:NN \pdfcreationdate \pdftex_pdfcreationdate:D
+ \__kernel_primitive:NN \pdfcolorstack \pdftex_pdfcolorstack:D
+ \__kernel_primitive:NN \pdfcompresslevel \pdftex_pdfcompresslevel:D
+ \__kernel_primitive:NN \pdfdecimaldigits \pdftex_pdfdecimaldigits:D
+ \__kernel_primitive:NN \pdfhorigin \pdftex_pdfhorigin:D
+ \__kernel_primitive:NN \pdfinfo \pdftex_pdfinfo:D
+ \__kernel_primitive:NN \pdflastxform \pdftex_pdflastxform:D
+ \__kernel_primitive:NN \pdfliteral \pdftex_pdfliteral:D
+ \__kernel_primitive:NN \pdfminorversion \pdftex_pdfminorversion:D
+ \__kernel_primitive:NN \pdfobjcompresslevel \pdftex_pdfobjcompresslevel:D
+ \__kernel_primitive:NN \pdfoutput \pdftex_pdfoutput:D
+ \__kernel_primitive:NN \pdfrefxform \pdftex_pdfrefxform:D
+ \__kernel_primitive:NN \pdfrestore \pdftex_pdfrestore:D
+ \__kernel_primitive:NN \pdfsave \pdftex_pdfsave:D
+ \__kernel_primitive:NN \pdfsetmatrix \pdftex_pdfsetmatrix:D
+ \__kernel_primitive:NN \pdfpkresolution \pdftex_pdfpkresolution:D
+ \__kernel_primitive:NN \pdftexrevision \pdftex_pdftextrevision:D
+ \__kernel_primitive:NN \pdfvorigin \pdftex_pdfvorigin:D
+ \__kernel_primitive:NN \pdfxform \pdftex_pdfxform:D
+ \__kernel_primitive:NN \pdfstrcmp \pdftex_strcmp:D
+ \__kernel_primitive:NN \XeTeXversion \xetex_XeTeXversion:D
+ \__kernel_primitive:NN \catcodetable \luatex_catcodetable:D
+ \__kernel_primitive:NN \directlua \luatex_directlua:D
+ \__kernel_primitive:NN \initcatcodetable \luatex_initcatcodetable:D
+ \__kernel_primitive:NN \latelua \luatex_latelua:D
+ \__kernel_primitive:NN \luatexversion \luatex_luatexversion:D
+ \__kernel_primitive:NN \savecatcodetable \luatex_savecatcodetable:D
+ \__kernel_primitive:NN \bodydir \luatex_bodydir:D
+ \__kernel_primitive:NN \mathdir \luatex_mathdir:D
+ \__kernel_primitive:NN \pagedir \luatex_pagedir:D
+ \__kernel_primitive:NN \pardir \luatex_pardir:D
+ \__kernel_primitive:NN \textdir \luatex_textdir:D
\tex_endgroup:D
\tex_let:D \tex_end:D \@@end
\tex_let:D \tex_everydisplay:D \frozen@everydisplay
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def b/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def
index 84511dd3405..ef13e1888a2 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def
@@ -47,7 +47,7 @@
%% -----------------------------------------------------------------------
%%
\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3drivers.dtx 4602 2013-11-18 23:19:01Z bruno $
+\GetIdInfo$Id: l3drivers.dtx 4632 2013-12-31 17:09:37Z joseph $
{L3 Experimental drivers}
\ProvidesExplFile
{l3pdfmode.def}{\ExplFileDate}{\ExplFileVersion}
@@ -55,43 +55,50 @@
\__expl_package_check:
\cs_if_exist:NTF \pdftex_pdfsave:D
{
- \cs_new_eq:NN \__driver_graphic_state_save: \pdftex_pdfsave:D
- \cs_new_eq:NN \__driver_graphic_state_restore: \pdftex_pdfrestore:D
+ \cs_new_eq:NN \__driver_state_save: \pdftex_pdfsave:D
+ \cs_new_eq:NN \__driver_state_restore: \pdftex_pdfrestore:D
}
{
- \cs_new_protected_nopar:Npn \__driver_graphic_state_save:
+ \cs_new_protected_nopar:Npn \__driver_state_save:
{ \pdftex_pdfliteral:D { q } }
- \cs_new_protected_nopar:Npn \__driver_graphic_state_restore:
+ \cs_new_protected_nopar:Npn \__driver_state_restore:
{ \pdftex_pdfliteral:D { Q } }
}
-\cs_new_protected:Npn \__driver_pdf_literal:n #1
+\cs_new_protected:Npn \__driver_literal:n #1
{ \pdftex_pdfliteral:D {#1} }
-\cs_new_protected:Npn \__driver_pdf_literal_direct:n #1
- { \pdftex_pdfliteral:D direct~{#1} }
+\cs_if_exist:NTF \pdftex_pdfsetmatrix:D
+ {
+ \cs_new_protected:Npn \__driver_matrix:n #1
+ { \pdftex_pdfsetmatrix:D {#1} }
+ }
+ {
+ \cs_new_protected:Npn \__driver_matrix:n #1
+ { \__driver_literal:n { #1 \c_space_tl 0~0~cm } }
+ }
\cs_new_protected:Npn \__driver_box_use_clip:N #1
{
- \__driver_graphic_state_save:
- \__driver_pdf_literal_direct:n
+ \__driver_state_save:
+ \__driver_literal:n
{
- 0 ~
+ 0~
\__dim_strip_bp:n { - \box_dp:N #1 } ~
\__dim_strip_bp:n { \box_wd:N #1 } ~
\__dim_strip_bp:n { \box_ht:N #1 + \box_dp:N #1 } ~
re~W~n
}
\hbox_overlap_right:n { \box_use:N #1 }
- \__driver_graphic_state_restore:
+ \__driver_state_restore:
\skip_horizontal:n { \box_wd:N #1 }
}
\cs_new_protected_nopar:Npn \__driver_box_rotate_begin:
{
- \__driver_graphic_state_save:
+ \__driver_state_save:
\box_set_wd:Nn \l__box_internal_box \c_zero_dim
\fp_set:Nn \l__box_cos_fp { round ( \l__box_cos_fp , 5 ) }
\fp_compare:nNnT \l__box_cos_fp = \c_zero_fp
{ \fp_zero:N \l__box_cos_fp }
\fp_set:Nn \l__box_sin_fp { round ( \l__box_sin_fp , 5 ) }
- \__driver_pdf_matrix:n
+ \__driver_matrix:n
{
\fp_use:N \l__box_cos_fp \c_space_tl
\fp_compare:nNnTF \l__box_sin_fp = \c_zero_fp
@@ -105,31 +112,23 @@
\fp_use:N \l__box_cos_fp
}
}
-\cs_new_eq:NN \__driver_box_rotate_end: \__driver_graphic_state_restore:
+\cs_new_eq:NN \__driver_box_rotate_end: \__driver_state_restore:
\cs_new_protected_nopar:Npn \__driver_box_scale_begin:
{
+ \__driver_state_save:
\fp_set:Nn \l__box_scale_x_fp { round ( \l__box_scale_x_fp , 5 ) }
\fp_set:Nn \l__box_scale_y_fp { round ( \l__box_scale_y_fp , 5 ) }
- \__driver_graphic_state_save:
- \__driver_pdf_matrix:n
+ \__driver_matrix:n
{
\fp_use:N \l__box_scale_x_fp \c_space_tl
0~0~
\fp_use:N \l__box_scale_y_fp
}
}
-\cs_new_eq:NN \__driver_box_scale_end: \__driver_graphic_state_restore:
-\cs_if_exist:NTF \pdftex_pdfsetmatrix:D
- {
- \cs_new_protected:Npn \__driver_pdf_matrix:n #1
- { \pdftex_pdfsetmatrix:D {#1} }
- }
- {
- \cs_new_protected:Npn \__driver_pdf_matrix:n #1
- { \__driver_pdf_literal:n { #1 \c_space_tl 0~0~cm } }
- }
+\cs_new_eq:NN \__driver_box_scale_end: \__driver_state_restore:
\tl_new:N \l__driver_current_color_tl
\tl_set:Nn \l__driver_current_color_tl { 0~g~0~G }
+%% \end{macrocode}
\int_new:N \l__driver_color_stack_int
\cs_if_exist:NTF \pdftex_pdfcolorstack:D
{
@@ -145,11 +144,11 @@
{
\cs_new_protected_nopar:Npn \__driver_color_ensure_current:
{
- \__driver_pdf_literal:n { \l__driver_current_color_tl }
+ \__driver_literal:n { \l__driver_current_color_tl }
\group_insert_after:N \__driver_color_reset:
}
\cs_new_protected_nopar:Npn \__driver_color_reset:
- { \__driver_pdf_literal:n { \l__driver_current_color_tl } }
+ { \__driver_literal:n { \l__driver_current_color_tl } }
}
%%
%%
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3prop.sty b/Master/texmf-dist/tex/latex/l3kernel/l3prop.sty
index c08682a0b57..8f1aa4f4044 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3prop.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3prop.sty
@@ -46,7 +46,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3prop.dtx 4581 2013-07-28 08:38:50Z joseph $
+\GetIdInfo$Id: l3prop.dtx 4623 2013-12-14 13:53:40Z bruno $
{L3 Property lists}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
@@ -55,7 +55,7 @@
\cs_new:Npn \__prop_pair:wn #1 \s__prop #2
{ \__msg_kernel_expandable_error:nn { kernel } { misused-prop } }
\tl_new:N \l__prop_internal_tl
-\tl_const:Nn \c_empty_prop { \s__prop \s_obj_end }
+\tl_const:Nn \c_empty_prop { \s__prop }
\cs_new_protected:Npn \prop_new:N #1
{
\__chk_if_free_cs:N #1
@@ -86,7 +86,6 @@
\prop_new:N \l_tmpb_prop
\prop_new:N \g_tmpa_prop
\prop_new:N \g_tmpb_prop
-\cs_new:Npn \__prop_strip_end:w #1 \s_obj_end { \exp_not:n {#1} }
\cs_new_protected:Npn \__prop_split:NnTF #1#2
{ \exp_args:NNo \__prop_split_aux:NnTF #1 { \tl_to_str:n {#2} } }
\cs_new_protected:Npn \__prop_split_aux:NnTF #1#2#3#4
@@ -181,13 +180,7 @@
}
\__prop_split:NnTF #2 {#3}
{ #1 #2 { \exp_not:n {##1} \l__prop_internal_tl \exp_not:n {##3} } }
- {
- #1 #2
- {
- \exp_after:wN \__prop_strip_end:w #2
- \l__prop_internal_tl \s_obj_end
- }
- }
+ { #1 #2 { \exp_not:o {#2} \l__prop_internal_tl } }
}
\cs_generate_variant:Nn \prop_put:Nnn
{ NnV , Nno , Nnx , NV , NVV , No , Noo }
@@ -210,13 +203,7 @@
}
\__prop_split:NnTF #2 {#3}
{ }
- {
- #1 #2
- {
- \exp_after:wN \__prop_strip_end:w #2
- \l__prop_internal_tl \s_obj_end
- }
- }
+ { #1 #2 { \exp_not:o {#2} \l__prop_internal_tl } }
}
\cs_generate_variant:Nn \prop_put_if_new:Nnn { c }
\cs_generate_variant:Nn \prop_gput_if_new:Nnn { c }
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3quark.sty b/Master/texmf-dist/tex/latex/l3kernel/l3quark.sty
index 6f13a54607b..8fef7cdef20 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3quark.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3quark.sty
@@ -46,7 +46,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3quark.dtx 4564 2013-07-21 02:12:33Z bruno $
+\GetIdInfo$Id: l3quark.dtx 4623 2013-12-14 13:53:40Z bruno $
{L3 Quarks}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
@@ -163,7 +163,6 @@
\__scan_new:N \s__stop
\cs_new:Npn \__use_none_delimit_by_s__stop:w #1 \s__stop { }
\__scan_new:N \s__seq
-\__scan_new:N \s_obj_end
\cs_new:Npn \quark_if_recursion_tail_break:N #1
{ \__quark_if_recursion_tail_break:NN #1 \prg_break: }
\cs_new:Npn \quark_if_recursion_tail_break:n #1
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3seq.sty b/Master/texmf-dist/tex/latex/l3kernel/l3seq.sty
index 2df60faf409..758407cb40f 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3seq.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3seq.sty
@@ -46,7 +46,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3seq.dtx 4581 2013-07-28 08:38:50Z joseph $
+\GetIdInfo$Id: l3seq.dtx 4623 2013-12-14 13:53:40Z bruno $
{L3 Sequences and stacks}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
@@ -58,7 +58,8 @@
}
\tl_new:N \l__seq_internal_a_tl
\tl_new:N \l__seq_internal_b_tl
-\tl_const:Nn \c_empty_seq { \s__seq \s_obj_end }
+\cs_new_eq:NN \__seq_tmp:w ?
+\tl_const:Nn \c_empty_seq { \s__seq }
\cs_new_protected:Npn \seq_new:N #1
{
\__chk_if_free_cs:N #1
@@ -110,7 +111,7 @@
}
\tl_set:Nx \l__seq_internal_a_tl { \l__seq_internal_a_tl }
}
- #1 #2 { \s__seq \l__seq_internal_a_tl \s_obj_end }
+ #1 #2 { \s__seq \l__seq_internal_a_tl }
}
\cs_new:Npn \__seq_set_split_auxi:w #1 \__seq_set_split_end:
{
@@ -123,11 +124,9 @@
\cs_generate_variant:Nn \seq_set_split:Nnn { NnV }
\cs_generate_variant:Nn \seq_gset_split:Nnn { NnV }
\cs_new_protected:Npn \seq_concat:NNN #1#2#3
- { \tl_set:Nf #1 { \exp_last_unbraced:NNo \__seq_concat:NN #2 #3 } }
+ { \tl_set:Nf #1 { \exp_after:wN \use_i:nn \exp_after:wN #2 #3 } }
\cs_new_protected:Npn \seq_gconcat:NNN #1#2#3
- { \tl_gset:Nf #1 { \exp_last_unbraced:NNo \__seq_concat:NN #2 #3 } }
-\cs_new:Npn \__seq_concat:NN #1#2 { \exp_after:wN \__seq_concat:w #1 }
-\cs_new:Npn \__seq_concat:w #1 \s_obj_end {#1}
+ { \tl_gset:Nf #1 { \exp_after:wN \use_i:nn \exp_after:wN #2 #3 } }
\cs_generate_variant:Nn \seq_concat:NNN { ccc }
\cs_generate_variant:Nn \seq_gconcat:NNN { ccc }
\prg_new_eq_conditional:NNn \seq_if_exist:N \cs_if_exist:N { TF , T , F , p }
@@ -154,22 +153,9 @@
\cs_generate_variant:Nn \seq_gput_left:Nn { NV , Nv , No , Nx }
\cs_generate_variant:Nn \seq_gput_left:Nn { c , cV , cv , co , cx }
\cs_new_protected:Npn \seq_put_right:Nn #1#2
- {
- \tl_set:Nx #1
- {
- \exp_after:wN \__seq_put_right_aux:w #1
- \exp_not:n { \__seq_item:n {#2} \s_obj_end }
- }
- }
+ { \tl_put_right:Nn #1 { \__seq_item:n {#2} } }
\cs_new_protected:Npn \seq_gput_right:Nn #1#2
- {
- \tl_gset:Nx #1
- {
- \exp_after:wN \__seq_put_right_aux:w #1
- \exp_not:n { \__seq_item:n {#2} \s_obj_end }
- }
- }
-\cs_new:Npn \__seq_put_right_aux:w #1 \s_obj_end { \exp_not:n {#1} }
+ { \tl_gput_right:Nn #1 { \__seq_item:n {#2} } }
\cs_generate_variant:Nn \seq_gput_right:Nn { NV , Nv , No , Nx }
\cs_generate_variant:Nn \seq_gput_right:Nn { c , cV , cv , co , cx }
\cs_generate_variant:Nn \seq_put_right:Nn { NV , Nv , No , Nx }
@@ -299,17 +285,13 @@
\cs_generate_variant:Nn \seq_pop_left:NN { c }
\cs_generate_variant:Nn \seq_gpop_left:NN { c }
\cs_new_protected:Npn \seq_get_right:NN #1#2
- { \exp_after:wN \__seq_get_right_setup:wN #1 #2 }
-\cs_new_protected:Npn \__seq_get_right_setup:wN \s__seq #1 \s_obj_end #2
{
- \__seq_get_right_loop:nn
- \q_no_value
+ \exp_after:wN \use_i_ii:nnn
+ \exp_after:wN \__seq_get_right_loop:nn
+ \exp_after:wN \q_no_value
#1
- {
- ??
- \tex_afterassignment:D \use_none:n
- \tl_set:Nn #2
- }
+ { ?? \tl_set:Nn #2 }
+ { } { }
}
\cs_new_protected:Npn \__seq_get_right_loop:nn #1#2
{
@@ -318,26 +300,25 @@
}
\cs_generate_variant:Nn \seq_get_right:NN { c }
\cs_new_protected_nopar:Npn \seq_pop_right:NN
- { \__seq_pop:NNNN \__seq_pop_right_aux:NNN \tl_set:Nx }
+ { \__seq_pop:NNNN \__seq_pop_right:NNN \tl_set:Nx }
\cs_new_protected_nopar:Npn \seq_gpop_right:NN
- { \__seq_pop:NNNN \__seq_pop_right_aux:NNN \tl_gset:Nx }
-\cs_new_protected:Npn \__seq_pop_right_aux:NNN #1#2#3
+ { \__seq_pop:NNNN \__seq_pop_right:NNN \tl_gset:Nx }
+\cs_new_protected:Npn \__seq_pop_right:NNN #1#2#3
{
- \cs_set_eq:NN \seq_tmp:w \__seq_item:n
+ \cs_set_eq:NN \__seq_tmp:w \__seq_item:n
\cs_set_eq:NN \__seq_item:n \scan_stop:
#1 #2
{ \if_false: } \fi: \s__seq
- \exp_after:wN \__seq_pop_right_setup:w
+ \exp_after:wN \use_i:nnn
+ \exp_after:wN \__seq_pop_right_loop:nn
#2
{
- \s_obj_end \if_false: { \fi: }
- \tex_afterassignment:D \use_none:n
+ \if_false: { \fi: }
\tl_set:Nx #3
}
- \cs_set_eq:NN \__seq_item:n \seq_tmp:w
+ { } \use_none:nn
+ \cs_set_eq:NN \__seq_item:n \__seq_tmp:w
}
-\cs_new:Npn \__seq_pop_right_setup:w \s__seq #1 \s_obj_end
- { \exp_after:wN \__seq_pop_right_loop:nn \use_none:n #1 }
\cs_new:Npn \__seq_pop_right_loop:nn #1#2
{
#2 { \exp_not:n {#1} }
@@ -360,9 +341,9 @@
\prg_new_protected_conditional:Npnn \seq_gpop_left:NN #1#2 { T , F , TF }
{ \__seq_pop_TF:NNNN \__seq_pop_left:NNN \tl_gset:Nn #1 #2 }
\prg_new_protected_conditional:Npnn \seq_pop_right:NN #1#2 { T , F , TF }
- { \__seq_pop_TF:NNNN \__seq_pop_right_aux:NNN \tl_set:Nx #1 #2 }
+ { \__seq_pop_TF:NNNN \__seq_pop_right:NNN \tl_set:Nx #1 #2 }
\prg_new_protected_conditional:Npnn \seq_gpop_right:NN #1#2 { T , F , TF }
- { \__seq_pop_TF:NNNN \__seq_pop_right_aux:NNN \tl_gset:Nx #1 #2 }
+ { \__seq_pop_TF:NNNN \__seq_pop_right:NNN \tl_gset:Nx #1 #2 }
\cs_generate_variant:Nn \seq_pop_left:NNT { c }
\cs_generate_variant:Nn \seq_pop_left:NNF { c }
\cs_generate_variant:Nn \seq_pop_left:NNTF { c }
@@ -380,10 +361,12 @@
\cs_new_nopar:Npn \seq_map_break:n
{ \__prg_map_break:Nn \seq_map_break: }
\cs_new:Npn \seq_map_function:NN #1#2
- { \exp_after:wN \__seq_map_function:wN #1 #2 }
-\cs_new:Npn \__seq_map_function:wN \s__seq #1 \s_obj_end #2
{
- \__seq_map_function:NNn #2 #1 { ? \seq_map_break: } { }
+ \exp_after:wN \use_i_ii:nnn
+ \exp_after:wN \__seq_map_function:NNn
+ \exp_after:wN #2
+ #1
+ { ? \seq_map_break: } { }
\__prg_break_point:Nn \seq_map_break: { }
}
\cs_new:Npn \__seq_map_function:NNn #1#2#3
@@ -451,12 +434,8 @@
\int_case:nnF { \seq_count:N #1 }
{
{ 0 } { }
- { 1 }
- {
- \exp_after:wN \__seq_use:wnwnn #1
- \__seq_item:n { } \s_obj_end { }
- }
- { 2 } { \exp_after:wN \__seq_use:wnwnn #1 {#2} }
+ { 1 } { \exp_after:wN \__seq_use:NNnNnn #1 ? { } { } }
+ { 2 } { \exp_after:wN \__seq_use:NNnNnn #1 {#2} }
}
{
\exp_after:wN \__seq_use_setup:w #1 \__seq_item:n
@@ -468,11 +447,8 @@
{ \__msg_kernel_expandable_error:nnn { kernel } { bad-variable } {#1} }
}
\cs_generate_variant:Nn \seq_use:Nnnn { c }
-\cs_new:Npn \__seq_use:wnwnn
- #1 \__seq_item:n #2#3 \__seq_item:n #4#5 \s_obj_end #6
- { \exp_not:n { #2 #6 #4 } }
-\cs_new:Npn \__seq_use_setup:w \s__seq #1 \s_obj_end
- { \__seq_use:nwwwwnwn { } #1 }
+\cs_new:Npn \__seq_use:NNnNnn #1#2#3#4#5#6 { \exp_not:n { #3 #6 #5 } }
+\cs_new:Npn \__seq_use_setup:w \s__seq { \__seq_use:nwwwwnwn { } }
\cs_new:Npn \__seq_use:nwwwwnwn
#1 \__seq_item:n #2 \__seq_item:n #3 \__seq_item:n #4#5
\q_mark #6#7 \q_stop #8
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3tl.sty b/Master/texmf-dist/tex/latex/l3kernel/l3tl.sty
index 8a46f029c45..9e1afe4039e 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3tl.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3tl.sty
@@ -46,7 +46,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3tl.dtx 4592 2013-09-16 21:11:41Z joseph $
+\GetIdInfo$Id: l3tl.dtx 4625 2013-12-27 15:55:36Z joseph $
{L3 Token lists}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def b/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def
index b1d14e8264a..cc5c9beb713 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def
@@ -47,48 +47,49 @@
%% -----------------------------------------------------------------------
%%
\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3drivers.dtx 4602 2013-11-18 23:19:01Z bruno $
+\GetIdInfo$Id: l3drivers.dtx 4632 2013-12-31 17:09:37Z joseph $
{L3 Experimental drivers}
\ProvidesExplFile
{l3xdvidpfmx.def}{\ExplFileDate}{\ExplFileVersion}
{L3 Experimental driver: xdvipdfmx}
\__expl_package_check:
-\cs_new_protected_nopar:Npn \__driver_graphic_state_save:
- { \tex_special:D { pdf:content~q } }
-\cs_new_protected_nopar:Npn \__driver_graphic_state_restore:
- { \tex_special:D { pdf:content~Q } }
-\cs_new_protected:Npn \__driver_pdf_literal:n #1
- { \tex_special:D { pdf:content~ #1 } }
-\cs_new_protected:Npn \__driver_pdf_literal_direct:n #1
- { \tex_special:D { pdf:literal~direct~ #1 } }
+\cs_new_protected_nopar:Npn \__driver_state_save:
+ { \tex_special:D { pdf:bcontent } }
+\cs_new_protected_nopar:Npn \__driver_state_restore:
+ { \tex_special:D { pdf:econtent } }
+\cs_new_protected:Npn \__driver_literal:n #1
+ { \tex_special:D { pdf:literal~ #1 } }
+\cs_new_protected:Npn \__driver_matrix:n #1
+ { \__driver_literal:n { direct~ #1 \c_space_tl 0~0~cm } }
\cs_new_protected:Npn \__driver_box_use_clip:N #1
{
- \__driver_graphic_state_save:
- \__driver_pdf_literal_direct:n
+ \__driver_literal:n { q }
+ \__driver_literal:n
{
- 0 ~
+ direct~
+ 0~
\__dim_strip_bp:n { - \box_dp:N #1 } ~
\__dim_strip_bp:n { \box_wd:N #1 } ~
\__dim_strip_bp:n { \box_ht:N #1 + \box_dp:N #1 } ~
re~W~n
}
- \__driver_pdf_matrix:n { -1~0~0~-1 }
- \__driver_graphic_state_save:
- \__driver_pdf_matrix:n { -1~0~0~-1 }
+ \__driver_matrix:n { -1~0~0~-1 }
+ \__driver_literal:n { q }
+ \__driver_matrix:n { -1~0~0~-1 }
\hbox_overlap_right:n { \box_use:N #1 }
- \__driver_graphic_state_restore:
- \__driver_graphic_state_restore:
+ \__driver_literal:n { Q }
+ \__driver_literal:n { Q }
\skip_horizontal:n { \box_wd:N #1 }
}
\cs_new_protected_nopar:Npn \__driver_box_rotate_begin:
{
- \__driver_graphic_state_save:
+ \__driver_state_save:
\box_set_wd:Nn \l__box_internal_box \c_zero_dim
\fp_set:Nn \l__box_cos_fp { round ( \l__box_cos_fp , 5 ) }
\fp_compare:nNnT \l__box_cos_fp = \c_zero_fp
{ \fp_zero:N \l__box_cos_fp }
\fp_set:Nn \l__box_sin_fp { round ( \l__box_sin_fp , 5 ) }
- \__driver_pdf_matrix:n
+ \__driver_matrix:n
{
\fp_use:N \l__box_cos_fp \c_space_tl
\fp_compare:nNnTF \l__box_sin_fp = \c_zero_fp
@@ -102,24 +103,23 @@
\fp_use:N \l__box_cos_fp
}
}
-\cs_new_eq:NN \__driver_box_rotate_end: \__driver_graphic_state_restore:
+\cs_new_eq:NN \__driver_box_rotate_end: \__driver_state_restore:
\cs_new_protected_nopar:Npn \__driver_box_scale_begin:
{
+ \__driver_state_save:
\fp_set:Nn \l__box_scale_x_fp { round ( \l__box_scale_x_fp , 5 ) }
\fp_set:Nn \l__box_scale_y_fp { round ( \l__box_scale_y_fp , 5 ) }
- \__driver_graphic_state_save:
- \__driver_pdf_matrix:n
+ \__driver_matrix:n
{
\fp_use:N \l__box_scale_x_fp \c_space_tl
0~0~
\fp_use:N \l__box_scale_y_fp
}
}
-\cs_new_eq:NN \__driver_box_scale_end: \__driver_graphic_state_restore:
-\cs_new_protected:Npn \__driver_pdf_matrix:n #1
- { \__driver_pdf_literal_direct:n { #1 \c_space_tl 0~0~cm } }
+\cs_new_eq:NN \__driver_box_scale_end: \__driver_state_restore:
\tl_new:N \l__driver_current_color_tl
\tl_set:Nn \l__driver_current_color_tl { gray~0 }
+%% \end{macrocode}
\cs_new_protected_nopar:Npn \__driver_color_ensure_current:
{
\tex_special:D { color~push~\l__driver_current_color_tl }
diff --git a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
index 2835a4a7407..eefd87478f3 100644
--- a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
+++ b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
@@ -46,8 +46,8 @@
%%
%% -----------------------------------------------------------------------
%%
-\RequirePackage{expl3}[2013/11/19]
-\@ifpackagelater{expl3}{2013/11/19}
+\RequirePackage{expl3}[2013/12/31]
+\@ifpackagelater{expl3}{2013/12/31}
{}
{%
\PackageError{l3keys2e}{Support package l3kernel too old}
@@ -59,7 +59,7 @@
}%
\endinput
}
-\GetIdInfo$Id: l3keys2e.dtx 4608 2013-11-19 15:52:24Z joseph $
+\GetIdInfo$Id: l3keys2e.dtx 4634 2013-12-31 17:32:19Z joseph $
{LaTeX2e option processing using LaTeX3 keys}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
diff --git a/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty b/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
index d686b7b96b4..aa5177281ed 100644
--- a/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
+++ b/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
@@ -50,8 +50,8 @@
%%
%% -----------------------------------------------------------------------
%%
-\RequirePackage{expl3}[2013/11/19]
-\@ifpackagelater{expl3}{2013/11/19}
+\RequirePackage{expl3}[2013/12/31]
+\@ifpackagelater{expl3}{2013/12/31}
{}
{%
\PackageError{xparse}{Support package l3kernel too old}
@@ -63,7 +63,7 @@
}%
\endinput
}
-\GetIdInfo$Id: xparse.dtx 4609 2013-11-19 16:01:54Z joseph $
+\GetIdInfo$Id: xparse.dtx 4634 2013-12-31 17:32:19Z joseph $
{L3 Experimental document command parser}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
diff --git a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty
index ad415a959f2..e054d0013c5 100644
--- a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty
+++ b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty
@@ -50,8 +50,8 @@
%%
%% -----------------------------------------------------------------------
%%
-\RequirePackage{expl3}[2013/11/19]
-\@ifpackagelater{expl3}{2013/11/19}
+\RequirePackage{expl3}[2013/12/31]
+\@ifpackagelater{expl3}{2013/12/31}
{}
{%
\PackageError{xtemplate}{Support package l3kernel too old}
@@ -63,7 +63,7 @@
}%
\endinput
}
-\GetIdInfo$Id: xtemplate.dtx 4608 2013-11-19 15:52:24Z joseph $
+\GetIdInfo$Id: xtemplate.dtx 4634 2013-12-31 17:32:19Z joseph $
{L3 Experimental prototype document functions}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}