From e6cb7eab17b3ef76d3f96c8e23782a91190102a8 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 5 Nov 2015 00:01:25 +0000 Subject: latex3 (4nov15) git-svn-id: svn://tug.org/texlive/trunk@38776 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/source/latex/l3kernel/expl3.dtx | 11 ++- .../source/latex/l3kernel/l3bootstrap.dtx | 17 +++-- .../source/latex/l3kernel/l3candidates.dtx | 47 +------------ .../texmf-dist/source/latex/l3kernel/l3drivers.dtx | 82 ++++++---------------- .../texmf-dist/source/latex/l3kernel/l3final.dtx | 39 +++++++++- .../texmf-dist/source/latex/l3kernel/l3names.dtx | 6 +- Master/texmf-dist/source/latex/l3kernel/l3prg.dtx | 44 +++++++++++- 7 files changed, 127 insertions(+), 119 deletions(-) (limited to 'Master/texmf-dist/source/latex/l3kernel') diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx index 42ff1e3e4f4..dc8c1a1a777 100644 --- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx @@ -36,8 +36,8 @@ %<*driver|generic|package> \def\ExplFileName{expl3} \def\ExplFileDescription{L3 programming layer} -\def\ExplFileDate{2015/10/14} -\def\ExplFileVersion{6210} +\def\ExplFileDate{2015/11/04} +\def\ExplFileVersion{6224} % %<*driver> \documentclass[full]{l3doc} @@ -997,17 +997,16 @@ % |\pdfstrcmp|. % \end{itemize} % Any engine which defines |\pdfoutput| (\emph{i.e.}~allows direct production -% of a PDF file without a DVI intermediate) must also provide |\pdfliteral|. +% of a PDF file without a DVI intermediate) must also provide |\pdfcolorstack|, +% |\pdfliteral|, |\pdfmatrix|, |\pdfrestore| and |\pdfsave|. % % Practically, these requirements are met by the engines % \begin{itemize} -% \item \pdfTeX{} v1.30 or later. +% \item \pdfTeX{} v1.40 or later. % \item \XeTeX{} v0.9994 or later. % \item \LuaTeX{} v0.40 or later. % \item e-(u)p\TeX{} mid-2012 or later. % \end{itemize} -% of which the first three engines are currently officially supported by -% the team. % % Additional modules beyond the core of \pkg{expl3} may require additional % primitives. In particular, third-party authors may significantly diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx index 69556596190..b510b1036ce 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx @@ -145,7 +145,7 @@ % \end{macro} % \end{macro} % \end{macro} -\GetIdInfo$Id: l3bootstrap.dtx 6139 2015-09-30 14:02:38Z bruno $ +\GetIdInfo$Id: l3bootstrap.dtx 6213 2015-10-18 09:48:17Z joseph $ {L3 Bootstrap code} % %<*driver> @@ -473,9 +473,11 @@ \def\LongText% {% LaTeX3 requires the e-TeX primitives and \string\pdfstrcmp.\LineBreak + Direct PDF production also requires additional primitives listed in the + README.\LineBreak \LineBreak These are available in the engines\LineBreak - - pdfTeX v1.30\LineBreak + - pdfTeX v1.40\LineBreak - XeTeX v0.9994\LineBreak - LuaTeX v0.40\LineBreak - e-(u)pTeX mid-2012\LineBreak @@ -483,10 +485,17 @@ \LineBreak }% \ifnum0% - \expandafter\ifx\csname pdfstrcmp\endcsname\relax\else 1\fi + \expandafter\ifx\csname pdfstrcmp\endcsname\relax + \else + \expandafter\ifx\csname pdftexversion\endcsname\relax + 1% + \else + \ifnum\pdftexversion<140 \else 1\fi + \fi + \fi \expandafter\ifx\csname directlua\endcsname\relax \else - \ifnum\luatexversion<36 \else 1\fi + \ifnum\luatexversion<40 \else 1\fi \fi =0 % \newlinechar`\^^J % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx index d9a3202c949..7e752aadf43 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx @@ -38,7 +38,7 @@ \documentclass[full]{l3doc} % %<*driver|package> -\GetIdInfo$Id: l3candidates.dtx 6208 2015-10-09 20:01:54Z joseph $ +\GetIdInfo$Id: l3candidates.dtx 6216 2015-11-01 23:32:43Z bruno $ {L3 Experimental additions to l3kernel} % %<*driver> @@ -637,14 +637,6 @@ % when there are only two \meta{boolean expressions}. % \end{function} % -% \begin{function}[EXP, updated = 2012-07-08]{\bool_not_p:n} -% \begin{syntax} -% \cs{bool_not_p:n} \Arg{boolean expression} -% \end{syntax} -% Function version of |!(|\meta{boolean expression}|)| within a boolean -% expression. -% \end{function} -% % \begin{function}[EXP, added = 2015-09-28]{\bool_or_p:nn} % \begin{syntax} % \cs{bool_or_p:nn} \Arg{boolexpr_1} \Arg{boolexpr_2} @@ -656,17 +648,6 @@ % \cs{bool_or_p:nn}. See also \cs{bool_any_p:n} when there are more % than two \meta{boolean expressions}. % \end{function} -% -% \begin{function}[EXP, updated = 2012-07-08]{\bool_xor_p:nn} -% \begin{syntax} -% \cs{bool_xor_p:nn} \Arg{boolexpr_1} \Arg{boolexpr_2} -% \end{syntax} -% Implements an \enquote{exclusive or} operation between two boolean -% expressions. There is no infix operation for this logical -% operator. -% \end{function} -% - % % \begin{function}[added = 2014-08-22, updated = 2015-08-03]{\bool_log:N, \bool_log:c} % \begin{syntax} @@ -2622,17 +2603,6 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\bool_not_p:n} -% \UnitTested -% The Not variant just reverses the outcome of \cs{bool_if_p:n}. Can -% be optimized but this is nice and simple and according to the -% implementation plan. Not even particularly useful to have it when -% the infix notation is easier to use. -% \begin{macrocode} -\cs_new:Npn \bool_not_p:n #1 { \bool_if_p:n { ! ( #1 ) } } -% \end{macrocode} -% \end{macro} -% % \begin{macro}{\bool_or_p:nn} % Only evaluate the second expression if the first is \texttt{false}. % \begin{macrocode} @@ -2641,21 +2611,6 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\bool_xor_p:nn} -% \UnitTested -% Exclusive or. If the boolean expressions have same truth value, -% return false, otherwise return true. -% \begin{macrocode} -\cs_new:Npn \bool_xor_p:nn #1#2 - { - \int_compare:nNnTF { \bool_if_p:n {#1} } = { \bool_if_p:n {#2} } - \c_false_bool - \c_true_bool - } -% \end{macrocode} -% \end{macro} -% -% % \begin{macro}{\bool_log:N, \bool_log:c, \bool_log:n} % Redirect output of \cs{bool_show:N} to the log. % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx index 747d2c33cb4..2d508e31a05 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3drivers.dtx Copyright(C) 2011-2014 The LaTeX3 Project +%% File: l3drivers.dtx Copyright(C) 2011-2015 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 @@ -38,7 +38,7 @@ \documentclass[full]{l3doc} % %<*driver|package> -\GetIdInfo$Id: l3drivers.dtx 5435 2014-10-16 21:27:50Z joseph $ +\GetIdInfo$Id: l3drivers.dtx 6213 2015-10-18 09:48:17Z joseph $ {L3 Experimental drivers} % %<*driver> @@ -225,9 +225,9 @@ % \texttt{(x)dvipdfmx} this is done using an appropriate special. Note % that here and later, the \texttt{dvipdfmx} documentation does not cover % the |literal| key word but that this appears to behave in the same way as -% \pdfTeX{}'s \tn{pdfliteral} (making life easier all-round). +% \pdfTeX{}'s \tn{pdfliteral} (making life easier all-round). For \pdfTeX{} +% and \LuaTeX{} giving direct PDF output there is a dedicated primitive. % \begin{macrocode} -%<*!pdfmode> \cs_new_protected_nopar:Npn \@@_state_save: %<*dvips> { \tex_special:D { ps:gsave } } @@ -235,6 +235,9 @@ %<*dvipdfmx|xdvipdfmx> { \tex_special:D { pdf:literal~q } } % +%<*pdfmode> + { \pdftex_pdfsave:D } +% \cs_new_protected_nopar:Npn \@@_state_restore: %<*dvips> { \tex_special:D { ps:grestore } } @@ -242,24 +245,8 @@ %<*dvipdfmx|xdvipdfmx> { \tex_special:D { pdf:literal~Q } } % -% -% \end{macrocode} -% For direct PDF output there is also a need to worry about the version -% of \pdfTeX{} in use: the \tn{pdfsave} primitive was only introduced -% in version~1.40.0. -% \begin{macrocode} %<*pdfmode> -\cs_if_exist:NTF \pdftex_pdfsave:D - { - \cs_new_eq:NN \@@_state_save: \pdftex_pdfsave:D - \cs_new_eq:NN \@@_state_restore: \pdftex_pdfrestore:D - } - { - \cs_new_protected_nopar:Npn \@@_state_save: - { \pdftex_pdfliteral:D { q } } - \cs_new_protected_nopar:Npn \@@_state_restore: - { \pdftex_pdfliteral:D { Q } } - } + { \pdftex_pdfrestore:D } % % \end{macrocode} % \end{macro} @@ -341,27 +328,20 @@ % % \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. +% into the PDF. With \pdfTeX{} and \LuaTeX{} in direct PDF output mode there +% is a primitive for this, which only needs the rotation/scaling/skew part. +% 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 \@@_matrix:n #1 %<*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 } } - } + { \pdftex_pdfsetmatrix:D {#1} } % %<*dvipdfmx|xdvipdfmx> -\cs_new_protected:Npn \@@_matrix:n #1 { \@@_literal:n { #1 \c_space_tl 0~0~cm } } % +% % \end{macrocode} % \end{macro} % @@ -521,7 +501,7 @@ % \end{variable} % % \begin{variable}{\l_@@_color_stack_int} -% \pdfTeX{} (version~1.40.0 or later) and \LuaTeX{} have multiple stacks +% \pdfTeX{} and \LuaTeX{} have multiple stacks % available, and the color stack therefore needs a number when in PDF mode. % \begin{macrocode} %<*pdfmode> @@ -545,31 +525,15 @@ \cs_new_protected_nopar:Npn \@@_color_reset: { \tex_special:D { color~pop } } % -% \end{macrocode} -% Once again there is a version switch for \pdfTeX{}, as the -% \tn{pdfcolorstack} primitive was introduced in version~1.40.0. -% \begin{macrocode} %<*pdfmode> -\cs_if_exist:NTF \pdftex_pdfcolorstack:D - { - \cs_new_protected_nopar:Npn \@@_color_ensure_current: - { - \pdftex_pdfcolorstack:D \l_@@_color_stack_int push - { \l_@@_current_color_tl } - \group_insert_after:N \@@_color_reset: - } - \cs_new_protected_nopar:Npn \@@_color_reset: - { \pdftex_pdfcolorstack:D \l_@@_color_stack_int pop \scan_stop: } - } +\cs_new_protected_nopar:Npn \@@_color_ensure_current: { - \cs_new_protected_nopar:Npn \@@_color_ensure_current: - { - \@@_literal:n { \l_@@_current_color_tl } - \group_insert_after:N \@@_color_reset: - } - \cs_new_protected_nopar:Npn \@@_color_reset: - { \@@_literal:n { \l_@@_current_color_tl } } + \pdftex_pdfcolorstack:D \l_@@_color_stack_int push + { \l_@@_current_color_tl } + \group_insert_after:N \@@_color_reset: } +\cs_new_protected_nopar:Npn \@@_color_reset: + { \pdftex_pdfcolorstack:D \l_@@_color_stack_int pop \scan_stop: } % % \end{macrocode} % \end{macro} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx index 93bf9a5f987..e080da8a5bd 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3final.dtx Copyright (C) 1990-2014 The LaTeX3 Project +%% File: l3final.dtx Copyright (C) 1990-2015 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 @@ % %<*driver> \documentclass[full]{l3doc} -\GetIdInfo$Id: l3final.dtx 4712 2014-04-30 08:17:49Z joseph $ +\GetIdInfo$Id: l3final.dtx 6223 2015-11-03 14:50:28Z joseph $ {L3 Experimental format finalisation} \begin{document} \DocInput{\jobname.dtx} @@ -77,6 +77,41 @@ %<*initex> % \end{macrocode} % +% \subsection{Temporary hacks} +% +% \begin{macro}{\T1/lmr/m/n/10} +% For \emph{testing only} provide some kind of output: for that we +% need a font. At present, select Latin Modern Roman at 10\,pt: +% entirely arbitrary but at least usable. +% \begin{macrocode} +\tex_everypar:D \exp_after:wN + { + \exp_after:wN \tex_font:D \cs:w T1/lmr/m/n/10 \cs_end: + = ec-lmr10 \scan_stop: + \use:c { T1/lmr/m/n/10 } + } +% \end{macrocode} +% \end{macro} +% +% Produce PDF output if possible (easier testing) and set some kind of +% horizontal width: the one here is the \LaTeXe{} default. A parfill is +% also useful so we get some kind of sensible paragraphs. +% \begin{macrocode} +\dim_set:Nn \tex_hsize:D { 345pt } +\skip_set:Nn \tex_parfillskip:D { 0pt plus 1fil } +\cs_if_exist:NT \pdftex_pdfoutput:D + { \int_set:Nn \pdftex_pdfoutput:D { 1 } } +% \end{macrocode} +% +% \begin{macro}{\stop} +% A way out of the run without needing to switch to the code environment. +% \begin{macrocode} +\cs_set_eq:NN \stop \tex_end:D +% \end{macrocode} +% \end{macro} +% +% \subsection{Final tasks} +% % \begin{macro}{\par} % \TeX{} has a nasty habit of inserting a command with the name \cs{par} % so we had better make sure that \cs{par} has a definition. diff --git a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx index f7d7ed4e2ee..44b019828bb 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx @@ -37,7 +37,7 @@ \documentclass[full]{l3doc} % %<*driver|package> -\GetIdInfo$Id: l3names.dtx 6209 2015-10-10 19:51:42Z joseph $ +\GetIdInfo$Id: l3names.dtx 6220 2015-11-03 11:53:30Z joseph $ {L3 Namespace for primitives} % %<*driver> @@ -1095,11 +1095,13 @@ \tex_let:D \luatex_rightghost:D \luatexrightghost \tex_let:D \luatex_textdir:D \luatextextdir \tex_fi:D +% % \end{macrocode} % Tidy up some \XeTeX{} renames and the fact that some % format-building processes leave a couple of questionable decisions about. % (There may at some stage be \LuaTeX{} renames of the same sort to address.) % \begin{macrocode} +%<*initex|package> \etex_unless:D \etex_ifdefined:D \pdftex_ifprimitive:D \tex_expandafter:D \tex_let:D \tex_csname:D pdftex_ifprimitive:D \tex_expandafter:D \tex_endcsname:D @@ -1158,6 +1160,7 @@ \tex_let:D \pdftex_savepos:D \savepos \tex_let:D \pdftex_uniformdeviate:D \uniformdeviate \tex_fi:D +% % \end{macrocode} % % For Con\TeX{}t, two tests are needed. Both Mark~II and Mark~IV move several @@ -1165,6 +1168,7 @@ % as a marker. For Mark~IV, a few more primitives are moved: they are % implemented using some Lua code in the current Con\TeX{}t. % \begin{macrocode} +%<*package> \etex_ifdefined:D \normalend \tex_let:D \tex_end:D \normalend \tex_let:D \tex_everyjob:D \normaleveryjob diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx index 1fc47d225b9..08cd5acc89d 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx @@ -37,7 +37,7 @@ \documentclass[full]{l3doc} % %<*driver|package> -\GetIdInfo$Id: l3prg.dtx 6208 2015-10-09 20:01:54Z joseph $ +\GetIdInfo$Id: l3prg.dtx 6216 2015-11-01 23:32:43Z bruno $ {L3 Control structures} % %<*driver> @@ -391,6 +391,23 @@ % the next predicate or group. % \end{function} % +% \begin{function}[EXP, updated = 2012-07-08]{\bool_not_p:n} +% \begin{syntax} +% \cs{bool_not_p:n} \Arg{boolean expression} +% \end{syntax} +% Function version of |!(|\meta{boolean expression}|)| within a boolean +% expression. +% \end{function} +% +% \begin{function}[EXP, updated = 2012-07-08]{\bool_xor_p:nn} +% \begin{syntax} +% \cs{bool_xor_p:nn} \Arg{boolexpr_1} \Arg{boolexpr_2} +% \end{syntax} +% Implements an \enquote{exclusive or} operation between two boolean +% expressions. There is no infix operation for this logical +% operator. +% \end{function} +% % \section{Logical loops} % % Loops using either boolean expressions or stored boolean values. @@ -1205,6 +1222,31 @@ % \end{macro} % \end{macro} % +% \begin{macro}{\bool_not_p:n} +% \UnitTested +% The Not variant just reverses the outcome of \cs{bool_if_p:n}. Can +% be optimized but this is nice and simple and according to the +% implementation plan. Not even particularly useful to have it when +% the infix notation is easier to use. +% \begin{macrocode} +\cs_new:Npn \bool_not_p:n #1 { \bool_if_p:n { ! ( #1 ) } } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bool_xor_p:nn} +% \UnitTested +% Exclusive or. If the boolean expressions have same truth value, +% return false, otherwise return true. +% \begin{macrocode} +\cs_new:Npn \bool_xor_p:nn #1#2 + { + \int_compare:nNnTF { \bool_if_p:n {#1} } = { \bool_if_p:n {#2} } + \c_false_bool + \c_true_bool + } +% \end{macrocode} +% \end{macro} +% % \subsection{Logical loops} % % \begin{macro}{\bool_while_do:Nn, \bool_while_do:cn} -- cgit v1.2.3