diff options
author | Karl Berry <karl@freefriends.org> | 2016-05-18 21:59:39 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2016-05-18 21:59:39 +0000 |
commit | 97ec70e7454d8877757fc67cfb6409943171d219 (patch) | |
tree | be7cca80672f2e585ba3e612f3bf7fb7647a7968 | |
parent | 05a3ef202ad67cea59168d591f76ec3219e56aae (diff) |
l3 (18may16)
git-svn-id: svn://tug.org/texlive/trunk@41246 c570f23f-e606-0410-a88d-b1316a301751
31 files changed, 960 insertions, 74 deletions
diff --git a/Master/texmf-dist/doc/latex/l3kernel/README.md b/Master/texmf-dist/doc/latex/l3kernel/README.md index 25e6a44ac9c..d336060a8dd 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/README.md +++ b/Master/texmf-dist/doc/latex/l3kernel/README.md @@ -1,7 +1,7 @@ LaTeX3 Programming Conventions ============================== -Release 2016/05/14 (r6495) +Release 2016/05/18 (r6512) Overview -------- diff --git a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf Binary files differindex c0e1d335d8f..5ae07c3c9f4 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf Binary files differindex 3dcd7c27547..e4caf34fb3c 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf Binary files differindex 10491b0522b..5b21e8ee241 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf Binary files differindex f2c59837d83..ec441e38464 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf Binary files differindex 41c74f92ecc..4ec9382d0de 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf Binary files differindex 09b7db7d07d..c89a61b50e1 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf diff --git a/Master/texmf-dist/doc/latex/l3packages/README.md b/Master/texmf-dist/doc/latex/l3packages/README.md index 0dec406f979..e5923b94e58 100644 --- a/Master/texmf-dist/doc/latex/l3packages/README.md +++ b/Master/texmf-dist/doc/latex/l3packages/README.md @@ -1,7 +1,7 @@ LaTeX3 High-Level Concepts ========================== -Release 2016/05/14 (r6495) +Release 2016/05/18 (r6512) Overview -------- diff --git a/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf b/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf Binary files differindex 45f20095b4d..83d7d01ebbc 100644 --- a/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf +++ b/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf diff --git a/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf b/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf Binary files differindex 1687578333a..667f5a1607a 100644 --- a/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf +++ b/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf diff --git a/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf b/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf Binary files differindex 22ab446a8b8..3a9c5afa8cb 100644 --- a/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf +++ b/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf diff --git a/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf b/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf Binary files differindex 13f007b15c6..7b19c9a3bac 100644 --- a/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf +++ b/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx index 165d2dc1762..5a97f7632e7 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{2016/05/14}% -\def\ExplFileVersion{6495}% +\def\ExplFileDate{2016/05/18}% +\def\ExplFileVersion{6512}% %</driver|generic|package> %<*driver> \documentclass[full]{l3doc} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx index 22f322f2498..7923f0f1695 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx @@ -38,7 +38,7 @@ \documentclass[full]{l3doc} %</driver> %<*driver|package> -\GetIdInfo$Id: l3coffins.dtx 6440 2016-03-24 09:59:29Z joseph $ +\GetIdInfo$Id: l3coffins.dtx 6508 2016-05-17 17:00:42Z joseph $ {L3 Coffin code layer} %</driver|package> %<*driver> @@ -646,7 +646,7 @@ \dim_set_eq:NN \linewidth \tex_hsize:D \dim_set_eq:NN \columnwidth \tex_hsize:D %</package> - \color_group_begin: \color_ensure_current: + \color_group_begin: \cs_set_protected:Npn \vcoffin_set_end: { \color_group_end: diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx index 24252e7ae45..cfbcb9bdce3 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx @@ -38,7 +38,7 @@ \documentclass[full]{l3doc} %</driver> %<*driver|package> -\GetIdInfo$Id: l3drivers.dtx 6494 2016-05-14 21:10:56Z joseph $ +\GetIdInfo$Id: l3drivers.dtx 6511 2016-05-17 20:20:23Z joseph $ {L3 Experimental drivers} %</driver|package> %<*driver> @@ -153,6 +153,214 @@ % while preserving the color used in the box. % \end{function} % +% \section{Drawing} +% +% The drawing functions provided here are \emph{highly} experimental. They +% are inspired heavily by the system layer of \pkg{pgf} (most have the +% same interface as the same functions in the latter's \cs{pgfsys@\ldots} +% namespace). They are intended to form the basis for higher level drawing +% interfaces, which themselves are likely to be further abstracted for user +% access. Again, this model is heavily inspired by \pkg{pgf} and +% Ti\textit{k}z. +% +% These low level drawing interfaces abstract from the driver raw requirements +% but still require an appreciation of the concepts of PostScript/PDF/SVG +% graphic creation. +% +% At present \emph{not all drivers are covered} by the following. +% +% \begin{function} +% { \__driver_draw_begin:, \__driver_draw_end:} +% \begin{syntax} +% \cs{__driver_draw_begin:} +% \meta{content} +% \cs{__driver_draw_end:} +% \end{syntax} +% Defines a drawing environment. This will be a scope for the purposes of +% the graphics state. Depending on the driver, other set up may or may not +% take place here. The natural size of the \meta{content} should be zero +% from the \TeX{} perspective: allowance for the size of the content must +% be made at a higher level (or indeed this can be skipped if the content is +% to overlap other material). +% \end{function} +% +% \begin{function} +% {\__driver_draw_scope_begin:, \__driver_draw_scope_end:} +% \begin{syntax} +% \cs{__driver_draw_scope_begin:} +% \meta{content} +% \cs{__driver_draw_scope_end:} +% \end{syntax} +% Defines a scope for drawing settings and so on. Changes to the graphic +% state and concepts such as color or linewidth are localised to a scope. +% This function pair must never be used if an partial path is under +% construction: such paths must be entirely contained at one unbroken +% scope level. +% \end{function} +% +% \subsection{Path construction} +% +% \begin{function}{\__driver_draw_moveto:nn} +% \begin{syntax} +% \cs{__driver_draw_move:nn} \Arg{x} \Arg{y} +% \end{syntax} +% Moves the current drawing reference point to (\meta{x}, \meta{y}); +% any active transformation matrix will apply. +% \end{function} +% +% \begin{function}{\__driver_draw_lineto:nn} +% \begin{syntax} +% \cs{__driver_draw_lineto:nn} \Arg{x} \Arg{y} +% \end{syntax} +% Adds a path from the current drawing reference point to +% (\meta{x}, \meta{y}); any active transformation matrix will apply. Note +% that nothing is drawn until a fill or stroke operation is applied, and that +% the path may be discarded or used as a clip without appearing itself. +% \end{function} +% +% \begin{function}{\__driver_draw_curveto:nnnnnn} +% \begin{syntax} +% \cs{__driver_draw_curveto:nnnnnn} \Arg{x_1} \Arg{y_1} +% \Arg{x_2} \Arg{y_2} \Arg{x_3} \Arg{y_3} +% \end{syntax} +% Adds a Bezier curve path from the current drawing reference point to +% (\meta{x_3}, \meta{y_3}), using (\meta{x_1}, \meta{y_1}) and +% (\meta{x_2}, \meta{y_2}) as control points; any active transformation +% matrix will apply. Note that nothing is drawn until a fill or stroke +% operation is applied, and that the path may be discarded or used as a clip +% without appearing itself. +% \end{function} +% +% \begin{function}{\__driver_draw_closepath:} +% \begin{syntax} +% \cs{__driver_draw_closepath:} +% \end{syntax} +% Closes an existing path, adding a line from the current point to the +% start of path. Note that nothing is drawn until a fill or stroke +% operation is applied, and that the path may be discarded or used as a clip +% without appearing itself. +% \end{function} +% +% \subsection{Stroking and filling} +% +% \begin{function}{\__driver_draw_stroke:, \__driver_draw_closestroke:} +% \begin{syntax} +% \meta{path construction} +% \cs{__driver_draw_stroke:} +% \end{syntax} +% Draws a line alone the current path, which will also be closed when +% \cs{__driver_draw_closestroke:} is used. The nature of the line drawn +% is influenced by settings for +% \begin{itemize} +% \item Line thickness +% \item Stroke color (or the current color if no specific stroke color +% is set) +% \item Line capping (how non-closed line ends should look) +% \item Join style (how a bend in the path should be rendered) +% \item Dash pattern +% \end{itemize} +% The path may also be used for clipping. +% \end{function} +% +% \begin{function}{\__driver_draw_fill:, \__driver_draw_fillstroke:} +% \begin{syntax} +% \meta{path construction} +% \cs{__driver_draw_fill:} +% \end{syntax} +% Fills the area surrounded by the current path: this will be closed prior +% to filling if it is not already. The \texttt{fillstroke} version will also +% stroke the path as described for \cs{__driver_draw_stroke:}. The fill is +% influenced by the setting for fill color (or the current color if no +% specific stroke color is set). The path may also be used for clipping. +% For paths which are self-intersecting or comprising multiple parts, the +% determination of which areas are inside the path is made using the nonzero +% winding rule number unless \cs{__driver_draw_eor_bool} is \texttt{true}, +% in which case the even-odd rule is used. +% \end{function} +% +% \begin{function}{\__driver_draw_clip:} +% \begin{syntax} +% \meta{path construction} +% \cs{__driver_draw_clip:} +% \end{syntax} +% Indicates that the current path should be used for clipping, such that +% any subsequent material outside of the path (but within the current +% scope) will not be shown. This command should be given once a path is +% complete but before it is stroked or filled (if appropriate). +% \end{function} +% +% \begin{function}{\__driver_draw_discardpath:} +% \begin{syntax} +% \meta{path construction} +% \cs{__driver_draw_discardpath:} +% \end{syntax} +% Discards the current path without stroking or filling. This is primarily +% useful for paths constructed purely for clipping, as this alone does not +% end the paths existence. +% \end{function} +% +% \subsection{Stroke options} +% +% \begin{function}{\__driver_draw_linewidth:n} +% \begin{syntax} +% \cs{__driver_draw_linewidth:n} \Arg{dimexpr} +% \end{syntax} +% Sets the width to be used for stroking to \meta{dimexpr}. +% \end{function} +% +% \begin{function}{\__driver_draw_dash:nn} +% \begin{syntax} +% \cs{__driver_draw_dash:nn} \Arg{dash pattern} \Arg{phase} +% \end{syntax} +% Sets the pattern of dashing to be used when stroking a line. The +% \meta{dash pattern} should be a comma-separated list of dimension +% expressions. This is then interpreted as a series of pairs of line-on +% and line-off lengths. For example \texttt{3pt, 4pt} means that $3$\,pt on, +% $4$\,pt off, $3$\,pt on, and so on. A more complex pattern will also +% repeat: \texttt{3pt, 4pt, 1pt, 2pt} results in $3$\,pt on, $4$\,pt off, +% $1$\,pt on, $2$\,pt off, $3$\,pt on, and so on. An odd number of entries +% means that the last is repeated, for example \texttt{3pt} is equal to +% \texttt{3pt, 3pt}. An empty pattern yields a solid line. +% +% The \meta{phase} specifies an offset at the start of the cycle. For +% example, with a pattern \texttt{3pt} a phase of \texttt{1pt} will mean +% that the output is $2$\,pt on, $3$\,pt off, $3$\,pt on, $3$\,pt on, +% \emph{etc.} +% \end{function} +% +% \begin{function} +% { +% \__driver_draw_cap_butt: , +% \__driver_draw_cap_rectangle: , +% \__driver_draw_cap_round: +% } +% \begin{syntax} +% \cs{__driver_draw_cap_butt:} +% \end{syntax} +% Sets the style of terminal stroke position to one of butt, rectangle or +% round. +% \end{function} +% +% \begin{function} +% { +% \__driver_draw_join_bevel: , +% \__driver_draw_join_miter: , +% \__driver_draw_join_round: +% } +% \begin{syntax} +% \cs{__driver_draw_cap_butt:} +% \end{syntax} +% Sets the style of stroke joins to one of bevel, miter or round. +% \end{function} +% +% \begin{function}{\__driver_draw_miterlimit:n} +% \begin{syntax} +% \cs{__driver_draw_miterlimit:n} \Arg{dimexpr} +% \end{syntax} +% Sets the miter limit of lines joined as a miter, as described in the +% PDF and PostScript manuals. +% \end{function} +% % \end{documentation} % % \begin{implementation} @@ -383,12 +591,12 @@ % \begin{macro}[aux]{\@@_color_reset:} % Directly set the color using the specials with optimisation support. % \begin{macrocode} -\cs_new_protected_nopar:Npx \@@_color_ensure_current: +\cs_new_protected_nopar:Npn \@@_color_ensure_current: { \tex_special:D { pdf:bcolor~\l_@@_current_color_tl } - \group_insert_after:N \exp_not:N \@@_color_reset: + \group_insert_after:N \@@_color_reset: } -\cs_new_protected_nopar:Npx \@@_color_reset: +\cs_new_protected_nopar:Npn \@@_color_reset: { \tex_special:D { pdf:ecolor } } % \end{macrocode} % \end{macro} @@ -419,9 +627,8 @@ \cs_set_protected_nopar:Npn \@@_color_ensure_current: { \tex_special:D { color~push~\l_@@_current_color_tl } - \group_insert_after:N \exp_not:N \@@_color_reset: + \group_insert_after:N \@@_color_reset: } - \cs_set_protected_nopar:Npn \@@_color_reset: { \tex_special:D { color~pop } } } @@ -533,6 +740,258 @@ % \end{macrocode} % \end{macro} % +% \subsection{Drawing} +% +% \begin{macro}[aux]{\@@_draw_literal:n, \@@_draw_literal:x} +% Pass data through using a dedicated interface. +% \begin{macrocode} +\cs_new_eq:NN \@@_draw_literal:n \@@_literal:n +\cs_generate_variant:Nn \@@_draw_literal:n { x } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@@_draw_begin:, \@@_draw_end:} +% No special requirements here, so simply set up a drawing scope. +% \begin{macrocode} +\cs_new_protected_nopar:Npn \@@_draw_begin: + { \@@_draw_scope_begin: } +\cs_new_protected_nopar:Npn \@@_draw_end: + { \@@_draw_scope_end: } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@@_draw_scope_begin:, \@@_draw_scope_end:} +% In contrast to a general scope, a drawing scope is always done using +% the PDF operators so is the same for all relevant drivers. +% \begin{macrocode} +\cs_new_protected_nopar:Npn \@@_draw_scope_begin: + { \@@_draw_literal:n { q } } +\cs_new_protected_nopar:Npn \@@_draw_scope_end: + { \@@_draw_literal:n { Q } } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@@_draw_moveto:nn, \@@_draw_lineto:nn} +% \begin{macro}[int]{\@@_draw_curveto:nnnnnn} +% Path creation operations all resolve directly to PDF primitive steps, with +% only the need to convert to \texttt{bp}. Notice that \texttt{x}-type +% expansion is included here to ensure that any variable values are +% forced to literals before any possible caching. +% \begin{macrocode} +\cs_new_protected:Npn \@@_draw_moveto:nn #1#2 + { + \@@_draw_literal:x + { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ m } + } +\cs_new_protected:Npn \@@_draw_lineto:nn #1#2 + { + \@@_draw_literal:x + { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ l } + } +\cs_new_protected:Npn \@@_draw_curveto:nnnnnn #1#2#3#4#5#6 + { + \@@_draw_literal:x + { + \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ + \dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#4} ~ + \dim_to_decimal_in_bp:n {#5} ~ \dim_to_decimal_in_bp:n {#6} ~ + c + } + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{variable}[int]{\@@_draw_eor_bool} +% The even-odd rule here can be implemented as a simply switch. +% \begin{macrocode} +\bool_new:N \@@_draw_eor_bool +% \end{macrocode} +% \end{variable} +% +% \begin{macro}[int] +% { +% \@@_draw_closepath: , +% \@@_draw_stroke: , +% \@@_draw_closestroke: , +% \@@_draw_fill: , +% \@@_draw_fillstroke: , +% \@@_draw_clip: , +% \@@_draw_discardpath: +% } +% Converting paths to output is again a case of mapping directly to +% PDF operations. +% \begin{macrocode} +\cs_new_protected_nopar:Npn \@@_draw_closepath: + { \@@_draw_literal:n { h } } +\cs_new_protected_nopar:Npn \@@_draw_stroke: + { \@@_draw_literal:n { S } } +\cs_new_protected_nopar:Npn \@@_draw_closestroke: + { \@@_draw_literal:n { s } } +\cs_new_protected_nopar:Npn \@@_draw_fill: + { + \@@_draw_literal:x + { f \bool_if:NT \@@_draw_eor_bool * } + } +\cs_new_protected_nopar:Npn \@@_draw_fillstroke: + { + \@@_draw_literal:x + { B \bool_if:NT \@@_draw_eor_bool * } + } +\cs_new_protected_nopar:Npn \@@_draw_clip: + { + \@@_draw_literal:x + { W \bool_if:NT \@@_draw_eor_bool * } + } +\cs_new_protected_nopar:Npn \@@_draw_discardpath: + { \@@_draw_literal:n { n } } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@@_draw_dash:nn} +% \begin{macro}[aux]{\@@_draw_dash:n} +% \begin{macro}[int]{\@@_draw_linewidth:n} +% \begin{macro}[int]{\@@_draw_miterlimit:n} +% \begin{macro}[int]^^A +% { +% \@@_draw_cap_butt:, \@@_draw_cap_round:, \@@_draw_cap_rectangle:, +% \@@_draw_join_miter:, \@@_draw_join_round:, \@@_draw_join_bevel: +% } +% Converting paths to output is again a case of mapping directly to +% PDF operations. +% \begin{macrocode} +\cs_new_protected:Npn \@@_draw_dash:nn #1#2 + { + \@@_draw_literal:x + { + [ ~ + \clist_map_function:nN {#1} \@@_draw_dash:n + ] ~ + \dim_to_decimal_in_bp:n {#2} ~ d + } + } +\cs_new:Npn \@@_draw_dash:n #1 + { \dim_to_decimal_in_bp:n {#1} ~ } +\cs_new_protected:Npn \@@_draw_linewidth:n #1 + { + \@@_draw_literal:x + { \dim_to_decimal_in_bp:n {#1} ~ w } + } +\cs_new_protected:Npn \@@_draw_miterlimit:n #1 + { \@@_draw_literal:x { \fp_eval:n {#1} ~ M } } +\cs_new_protected_nopar:Npn \@@_draw_cap_butt: + { \@@_draw_literal:n { 0 ~ J } } +\cs_new_protected_nopar:Npn \@@_draw_cap_round: + { \@@_draw_literal:n { 1 ~ J } } +\cs_new_protected_nopar:Npn \@@_draw_cap_rectangle: + { \@@_draw_literal:n { 2 ~ J } } +\cs_new_protected_nopar:Npn \@@_draw_join_miter: + { \@@_draw_literal:n { 0 ~ j } } +\cs_new_protected_nopar:Npn \@@_draw_join_round: + { \@@_draw_literal:n { 1 ~ j } } +\cs_new_protected_nopar:Npn \@@_draw_join_bevel: + { \@@_draw_literal:n { 2 ~ j } } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}[int] +% {\@@_draw_color_cmyk_fill:nnnn, \@@_draw_color_cmyk_stroke:nnnn} +% \begin{macro}[int] +% {\@@_draw_color_gray_fill:n, \@@_draw_color_gray_stroke:n} +% \begin{macro}[int] +% {\@@_draw_color_rgb_fill:nnn, \@@_draw_color_rgb_stroke:nnn} +% Yet more fast conversion, all using the FPU to allow for expressions +% in numerical input. +% \begin{macrocode} +\cs_new_protected:Npn \@@_draw_color_cmyk_fill:nnnn #1#2#3#4 + { + \@@_draw_literal:x + { + \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ + \fp_eval:n {#3} ~ \fp_eval:n {#4} ~ + k + } + } +\cs_new_protected:Npn \@@_draw_color_cmyk_stroke:nnnn #1#2#3#4 + { + \@@_draw_literal:x + { + \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ + \fp_eval:n {#3} ~ \fp_eval:n {#4} ~ + K + } + } +\cs_new_protected:Npn \@@_draw_color_gray_fill:n #1 + { \@@_draw_literal:x { \fp_eval:n {#1} ~ g } } +\cs_new_protected:Npn \@@_draw_color_gray_stroke:n #1 + { \@@_draw_literal:x { \fp_eval:n {#1} ~ G } } +\cs_new_protected:Npn \@@_draw_color_rgb_fill:nnn #1#2#3 + { + \@@_draw_literal:x + { \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} ~ rg } + } +\cs_new_protected:Npn \@@_draw_color_rgb_stroke:nnn #1#2#3 + { + \@@_draw_literal:x + { \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} ~ RG } + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}[int]{\@@_draw_transformcm:nnnnnn} +% The first four arguments here are floats (the affine matrix), the last +% two are a displacement vector. Once again, force evaluation to allow for +% caching. +% \begin{macrocode} +\cs_new_protected:Npn \@@_draw_transformcm:nnnnnn #1#2#3#4#5#6 + { + \@@_draw_literal:x + { + \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ + \fp_eval:n {#3} ~ \fp_eval:n {#4} ~ + \dim_to_decimal_in_bp:n {#5} ~ \dim_to_decimal_in_bp:n {#6} ~ + cm + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@@_draw_hbox:Nnnnnnn} +% \begin{variable}[aux]{\l_@@_tmp_box} +% Inserting a \TeX{} box transformed to the requested position and using +% the current matrix is done using a mixture of \TeX{} and low-level +% manipulation. The offset can be handled by \TeX{}, so only any rotation/^^A +% skew/scaling component needs to be done using the matrix operation. As this +% operation can never be cached, the scope is set directly not using the +% \texttt{draw} version. +% \begin{macrocode} +\cs_new_protected:Npn \@@_draw_hbox:Nnnnnnn #1#2#3#4#5#6#7 + { + \hbox_set:Nn \l_@@_tmp_box + { + \tex_kern:D \__dim_eval:w #6 \__dim_eval_end: + \@@_scope_begin: + \@@_draw_transformcm:nnnnnn {#2} {#3} {#4} {#5} + { 0pt } { 0pt } + \box_move_up:nn {#7} { \box_use:N #1 } + \@@_scope_end: + } + \box_set_wd:Nn \l_@@_tmp_box { 0pt } + \box_set_ht:Nn \l_@@_tmp_box { 0pt } + \box_set_dp:Nn \l_@@_tmp_box { 0pt } + \box_use:N \l_@@_tmp_box + } +\box_new:N \l_@@_tmp_box +% \end{macrocode} +% \end{variable} +% \end{macro} +% % \begin{macrocode} %</dvipdfmx|pdfmode|xdvipdfmx> % \end{macrocode} @@ -552,7 +1011,7 @@ % of the stack to save the current position \enquote{up front} and to % move back to it at the end of the process. % \begin{macrocode} -\cs_new_protected:Npx \@@_literal:n #1 +\cs_new_protected:Npn \@@_literal:n #1 { \tex_special:D { @@ -691,7 +1150,6 @@ \tex_special:D { color~push~\l_@@_current_color_tl } \group_insert_after:N \@@_color_reset: } - \cs_new_protected_nopar:Npn \@@_color_reset: { \tex_special:D { color~pop } } % \end{macrocode} @@ -897,9 +1355,8 @@ \cs_new_protected_nopar:Npn \@@_color_ensure_current: { \tex_special:D { color~push~\l_@@_current_color_tl } - \group_insert_after:N \exp_not:N \@@_color_reset: + \group_insert_after:N \@@_color_reset: } - \cs_new_protected_nopar:Npn \@@_color_reset: { \tex_special:D { color~pop } } % \end{macrocode} @@ -916,4 +1373,4 @@ % % \end{implementation} % -% \PrintIndex
\ No newline at end of file +% \PrintIndex diff --git a/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx b/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx index 550ef6a942f..05c4a29b55b 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}[2016/05/14] -%<package>\@ifpackagelater{expl3}{2016/05/14} +\RequirePackage{expl3}[2016/05/18] +%<package>\@ifpackagelater{expl3}{2016/05/18} %<package> {} %<package> {% %<package> \PackageError{l3keys2e}{Support package l3kernel too old} @@ -52,8 +52,8 @@ %<package> } \def\ExplFileName{l3keys2e} \def\ExplFileDescription{LaTeX2e option processing using LaTeX3 keys} -\def\ExplFileDate{2016/05/14} -\def\ExplFileVersion{6495} +\def\ExplFileDate{2016/05/18} +\def\ExplFileVersion{6512} %</driver|package> %<*driver> \documentclass[full]{l3doc} diff --git a/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx b/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx index 3bd3682dff6..6204cdcca48 100644 --- a/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx +++ b/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx @@ -38,8 +38,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}[2016/05/14] -%<package>\@ifpackagelater{expl3}{2016/05/14} +\RequirePackage{expl3}[2016/05/18] +%<package>\@ifpackagelater{expl3}{2016/05/18} %<package> {} %<package> {% %<package> \PackageError{xfrac}{Support package l3kernel too old} @@ -54,8 +54,8 @@ \RequirePackage{amstext,graphicx,l3keys2e,textcomp,xparse,xtemplate} \def\ExplFileName{xfrac} \def\ExplFileDescription{L3 Experimental split-level fractions} -\def\ExplFileDate{2016/05/14} -\def\ExplFileVersion{6495} +\def\ExplFileDate{2016/05/18} +\def\ExplFileVersion{6512} %</driver|package> %<*driver> \documentclass[full]{l3doc} diff --git a/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx b/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx index 1a2e9767429..f19e9301113 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}[2016/05/14] -%<package>\@ifpackagelater{expl3}{2016/05/14} +\RequirePackage{expl3}[2016/05/18] +%<package>\@ifpackagelater{expl3}{2016/05/18} %<package> {} %<package> {% %<package> \PackageError{xparse}{Support package l3kernel too old} @@ -56,8 +56,8 @@ %<package> } \def\ExplFileName{xparse} \def\ExplFileDescription{L3 Experimental document command parser} -\def\ExplFileDate{2016/05/14} -\def\ExplFileVersion{6495} +\def\ExplFileDate{2016/05/18} +\def\ExplFileVersion{6512} %</driver|package> %<*driver> \documentclass[full]{l3doc} diff --git a/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx b/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx index 0514e96486e..f3ad7e8f289 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}[2016/05/14] -%<package>\@ifpackagelater{expl3}{2016/05/14} +\RequirePackage{expl3}[2016/05/18] +%<package>\@ifpackagelater{expl3}{2016/05/18} %<package> {} %<package> {% %<package> \PackageError{xtemplate}{Support package l3kernel too old} @@ -56,8 +56,8 @@ %<package> } \def\ExplFileName{xtemplate} \def\ExplFileDescription{L3 Experimental prototype document functions} -\def\ExplFileDate{2016/05/14} -\def\ExplFileVersion{6495} +\def\ExplFileDate{2016/05/18} +\def\ExplFileVersion{6512} %</driver|package> %<*driver> \documentclass[full]{l3doc} diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex index 2d36561733f..2676787a1c3 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex @@ -82,8 +82,8 @@ %% ----------------------------------------------------------------------- \def\ExplFileName{expl3}% \def\ExplFileDescription{L3 programming layer}% -\def\ExplFileDate{2016/05/14}% -\def\ExplFileVersion{6495}% +\def\ExplFileDate{2016/05/18}% +\def\ExplFileVersion{6512}% \begingroup \def\next{\endgroup}% \expandafter\ifx\csname PackageError\endcsname\relax @@ -16295,7 +16295,7 @@ %% %% ----------------------------------------------------------------------- %% -\GetIdInfo$Id: l3coffins.dtx 6440 2016-03-24 09:59:29Z joseph $ +\GetIdInfo$Id: l3coffins.dtx 6508 2016-05-17 17:00:42Z joseph $ {L3 Coffin code layer} \box_new:N \l__coffin_internal_box \dim_new:N \l__coffin_internal_dim @@ -16446,7 +16446,7 @@ \dim_set:Nn \tex_hsize:D {#2} \dim_set_eq:NN \linewidth \tex_hsize:D \dim_set_eq:NN \columnwidth \tex_hsize:D - \color_group_begin: \color_ensure_current: + \color_group_begin: \cs_set_protected:Npn \vcoffin_set_end: { \color_group_end: diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex index 615774d6de2..42126c988c8 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex @@ -47,8 +47,8 @@ %% ----------------------------------------------------------------------- \def\ExplFileName{expl3}% \def\ExplFileDescription{L3 programming layer}% -\def\ExplFileDate{2016/05/14}% -\def\ExplFileVersion{6495}% +\def\ExplFileDate{2016/05/18}% +\def\ExplFileVersion{6512}% \let\ExplLoaderFileVersion\ExplFileVersion \begingroup \def\tempa{LaTeX2e}% diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty index 6d06ca11f3d..97c34cfc936 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty @@ -47,8 +47,8 @@ %% ----------------------------------------------------------------------- \def\ExplFileName{expl3}% \def\ExplFileDescription{L3 programming layer}% -\def\ExplFileDate{2016/05/14}% -\def\ExplFileVersion{6495}% +\def\ExplFileDate{2016/05/18}% +\def\ExplFileVersion{6512}% \let\ExplLoaderFileVersion\ExplFileVersion \ProvidesPackage{\ExplFileName} [% diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def index 59dc81cc5ce..f2447ac4f51 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- %% -\GetIdInfo$Id: l3drivers.dtx 6494 2016-05-14 21:10:56Z joseph $ +\GetIdInfo$Id: l3drivers.dtx 6511 2016-05-17 20:20:23Z joseph $ {L3 Experimental drivers} \ProvidesExplFile {l3dvidpfmx.def}{\ExplFileDate}{\ExplFileVersion} @@ -67,12 +67,12 @@ { \tl_set:Nn \l__driver_current_color_tl { \current@color } } { } } -\cs_new_protected_nopar:Npx \__driver_color_ensure_current: +\cs_new_protected_nopar:Npn \__driver_color_ensure_current: { \tex_special:D { pdf:bcolor~\l__driver_current_color_tl } - \group_insert_after:N \exp_not:N \__driver_color_reset: + \group_insert_after:N \__driver_color_reset: } -\cs_new_protected_nopar:Npx \__driver_color_reset: +\cs_new_protected_nopar:Npn \__driver_color_reset: { \tex_special:D { pdf:ecolor } } \cs_new_protected:Npn \__driver_box_use_clip:N #1 { @@ -127,6 +127,150 @@ \hbox_overlap_right:n { \box_use:N #1 } \__driver_scope_end: } +\cs_new_eq:NN \__driver_draw_literal:n \__driver_literal:n +\cs_generate_variant:Nn \__driver_draw_literal:n { x } +\cs_new_protected_nopar:Npn \__driver_draw_begin: + { \__driver_draw_scope_begin: } +\cs_new_protected_nopar:Npn \__driver_draw_end: + { \__driver_draw_scope_end: } +\cs_new_protected_nopar:Npn \__driver_draw_scope_begin: + { \__driver_draw_literal:n { q } } +\cs_new_protected_nopar:Npn \__driver_draw_scope_end: + { \__driver_draw_literal:n { Q } } +\cs_new_protected:Npn \__driver_draw_moveto:nn #1#2 + { + \__driver_draw_literal:x + { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ m } + } +\cs_new_protected:Npn \__driver_draw_lineto:nn #1#2 + { + \__driver_draw_literal:x + { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ l } + } +\cs_new_protected:Npn \__driver_draw_curveto:nnnnnn #1#2#3#4#5#6 + { + \__driver_draw_literal:x + { + \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ + \dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#4} ~ + \dim_to_decimal_in_bp:n {#5} ~ \dim_to_decimal_in_bp:n {#6} ~ + c + } + } +\bool_new:N \__driver_draw_eor_bool +\cs_new_protected_nopar:Npn \__driver_draw_closepath: + { \__driver_draw_literal:n { h } } +\cs_new_protected_nopar:Npn \__driver_draw_stroke: + { \__driver_draw_literal:n { S } } +\cs_new_protected_nopar:Npn \__driver_draw_closestroke: + { \__driver_draw_literal:n { s } } +\cs_new_protected_nopar:Npn \__driver_draw_fill: + { + \__driver_draw_literal:x + { f \bool_if:NT \__driver_draw_eor_bool * } + } +\cs_new_protected_nopar:Npn \__driver_draw_fillstroke: + { + \__driver_draw_literal:x + { B \bool_if:NT \__driver_draw_eor_bool * } + } +\cs_new_protected_nopar:Npn \__driver_draw_clip: + { + \__driver_draw_literal:x + { W \bool_if:NT \__driver_draw_eor_bool * } + } +\cs_new_protected_nopar:Npn \__driver_draw_discardpath: + { \__driver_draw_literal:n { n } } +\cs_new_protected:Npn \__driver_draw_dash:nn #1#2 + { + \__driver_draw_literal:x + { + [ ~ + \clist_map_function:nN {#1} \__driver_draw_dash:n + ] ~ + \dim_to_decimal_in_bp:n {#2} ~ d + } + } +\cs_new:Npn \__driver_draw_dash:n #1 + { \dim_to_decimal_in_bp:n {#1} ~ } +\cs_new_protected:Npn \__driver_draw_linewidth:n #1 + { + \__driver_draw_literal:x + { \dim_to_decimal_in_bp:n {#1} ~ w } + } +\cs_new_protected:Npn \__driver_draw_miterlimit:n #1 + { \__driver_draw_literal:x { \fp_eval:n {#1} ~ M } } +\cs_new_protected_nopar:Npn \__driver_draw_cap_butt: + { \__driver_draw_literal:n { 0 ~ J } } +\cs_new_protected_nopar:Npn \__driver_draw_cap_round: + { \__driver_draw_literal:n { 1 ~ J } } +\cs_new_protected_nopar:Npn \__driver_draw_cap_rectangle: + { \__driver_draw_literal:n { 2 ~ J } } +\cs_new_protected_nopar:Npn \__driver_draw_join_miter: + { \__driver_draw_literal:n { 0 ~ j } } +\cs_new_protected_nopar:Npn \__driver_draw_join_round: + { \__driver_draw_literal:n { 1 ~ j } } +\cs_new_protected_nopar:Npn \__driver_draw_join_bevel: + { \__driver_draw_literal:n { 2 ~ j } } +\cs_new_protected:Npn \__driver_draw_color_cmyk_fill:nnnn #1#2#3#4 + { + \__driver_draw_literal:x + { + \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ + \fp_eval:n {#3} ~ \fp_eval:n {#4} ~ + k + } + } +\cs_new_protected:Npn \__driver_draw_color_cmyk_stroke:nnnn #1#2#3#4 + { + \__driver_draw_literal:x + { + \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ + \fp_eval:n {#3} ~ \fp_eval:n {#4} ~ + K + } + } +\cs_new_protected:Npn \__driver_draw_color_gray_fill:n #1 + { \__driver_draw_literal:x { \fp_eval:n {#1} ~ g } } +\cs_new_protected:Npn \__driver_draw_color_gray_stroke:n #1 + { \__driver_draw_literal:x { \fp_eval:n {#1} ~ G } } +\cs_new_protected:Npn \__driver_draw_color_rgb_fill:nnn #1#2#3 + { + \__driver_draw_literal:x + { \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} ~ rg } + } +\cs_new_protected:Npn \__driver_draw_color_rgb_stroke:nnn #1#2#3 + { + \__driver_draw_literal:x + { \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} ~ RG } + } +\cs_new_protected:Npn \__driver_draw_transformcm:nnnnnn #1#2#3#4#5#6 + { + \__driver_draw_literal:x + { + \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ + \fp_eval:n {#3} ~ \fp_eval:n {#4} ~ + \dim_to_decimal_in_bp:n {#5} ~ \dim_to_decimal_in_bp:n {#6} ~ + cm + } + } +\cs_new_protected:Npn \__driver_draw_hbox:Nnnnnnn #1#2#3#4#5#6#7 + { + \hbox_set:Nn \l__driver_tmp_box + { + \tex_kern:D \__dim_eval:w #6 \__dim_eval_end: + \__driver_scope_begin: + \__driver_draw_transformcm:nnnnnn {#2} {#3} {#4} {#5} + { 0pt } { 0pt } + \box_move_up:nn {#7} { \box_use:N #1 } + \__driver_scope_end: + } + \box_set_wd:Nn \l__driver_tmp_box { 0pt } + \box_set_ht:Nn \l__driver_tmp_box { 0pt } + \box_set_dp:Nn \l__driver_tmp_box { 0pt } + \box_use:N \l__driver_tmp_box + } +\box_new:N \l__driver_tmp_box %% %% %% End of file `l3dvipdfmx.def'. diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def index 30c8a6dc4f3..ffd9060b2cc 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def @@ -46,12 +46,12 @@ %% %% ----------------------------------------------------------------------- %% -\GetIdInfo$Id: l3drivers.dtx 6494 2016-05-14 21:10:56Z joseph $ +\GetIdInfo$Id: l3drivers.dtx 6511 2016-05-17 20:20:23Z joseph $ {L3 Experimental drivers} \ProvidesExplFile {l3dvips.def}{\ExplFileDate}{\ExplFileVersion} {L3 Experimental driver: dvips} -\cs_new_protected:Npx \__driver_literal:n #1 +\cs_new_protected:Npn \__driver_literal:n #1 { \tex_special:D { @@ -130,7 +130,6 @@ \tex_special:D { color~push~\l__driver_current_color_tl } \group_insert_after:N \__driver_color_reset: } - \cs_new_protected_nopar:Npn \__driver_color_reset: { \tex_special:D { color~pop } } %% diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def index 5b04f5d7297..c873e1df65b 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- %% -\GetIdInfo$Id: l3drivers.dtx 6494 2016-05-14 21:10:56Z joseph $ +\GetIdInfo$Id: l3drivers.dtx 6511 2016-05-17 20:20:23Z joseph $ {L3 Experimental drivers} \ProvidesExplFile {l3dvisvgm.def}{\ExplFileDate}{\ExplFileVersion} @@ -153,9 +153,8 @@ \cs_new_protected_nopar:Npn \__driver_color_ensure_current: { \tex_special:D { color~push~\l__driver_current_color_tl } - \group_insert_after:N \exp_not:N \__driver_color_reset: + \group_insert_after:N \__driver_color_reset: } - \cs_new_protected_nopar:Npn \__driver_color_reset: { \tex_special:D { color~pop } } %% diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def b/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def index 05f466d3051..d90c9c2bdc5 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- %% -\GetIdInfo$Id: l3drivers.dtx 6494 2016-05-14 21:10:56Z joseph $ +\GetIdInfo$Id: l3drivers.dtx 6511 2016-05-17 20:20:23Z joseph $ {L3 Experimental drivers} \ProvidesExplFile {l3pdfmode.def}{\ExplFileDate}{\ExplFileVersion} @@ -155,6 +155,150 @@ \hbox_overlap_right:n { \box_use:N #1 } \__driver_scope_end: } +\cs_new_eq:NN \__driver_draw_literal:n \__driver_literal:n +\cs_generate_variant:Nn \__driver_draw_literal:n { x } +\cs_new_protected_nopar:Npn \__driver_draw_begin: + { \__driver_draw_scope_begin: } +\cs_new_protected_nopar:Npn \__driver_draw_end: + { \__driver_draw_scope_end: } +\cs_new_protected_nopar:Npn \__driver_draw_scope_begin: + { \__driver_draw_literal:n { q } } +\cs_new_protected_nopar:Npn \__driver_draw_scope_end: + { \__driver_draw_literal:n { Q } } +\cs_new_protected:Npn \__driver_draw_moveto:nn #1#2 + { + \__driver_draw_literal:x + { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ m } + } +\cs_new_protected:Npn \__driver_draw_lineto:nn #1#2 + { + \__driver_draw_literal:x + { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ l } + } +\cs_new_protected:Npn \__driver_draw_curveto:nnnnnn #1#2#3#4#5#6 + { + \__driver_draw_literal:x + { + \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ + \dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#4} ~ + \dim_to_decimal_in_bp:n {#5} ~ \dim_to_decimal_in_bp:n {#6} ~ + c + } + } +\bool_new:N \__driver_draw_eor_bool +\cs_new_protected_nopar:Npn \__driver_draw_closepath: + { \__driver_draw_literal:n { h } } +\cs_new_protected_nopar:Npn \__driver_draw_stroke: + { \__driver_draw_literal:n { S } } +\cs_new_protected_nopar:Npn \__driver_draw_closestroke: + { \__driver_draw_literal:n { s } } +\cs_new_protected_nopar:Npn \__driver_draw_fill: + { + \__driver_draw_literal:x + { f \bool_if:NT \__driver_draw_eor_bool * } + } +\cs_new_protected_nopar:Npn \__driver_draw_fillstroke: + { + \__driver_draw_literal:x + { B \bool_if:NT \__driver_draw_eor_bool * } + } +\cs_new_protected_nopar:Npn \__driver_draw_clip: + { + \__driver_draw_literal:x + { W \bool_if:NT \__driver_draw_eor_bool * } + } +\cs_new_protected_nopar:Npn \__driver_draw_discardpath: + { \__driver_draw_literal:n { n } } +\cs_new_protected:Npn \__driver_draw_dash:nn #1#2 + { + \__driver_draw_literal:x + { + [ ~ + \clist_map_function:nN {#1} \__driver_draw_dash:n + ] ~ + \dim_to_decimal_in_bp:n {#2} ~ d + } + } +\cs_new:Npn \__driver_draw_dash:n #1 + { \dim_to_decimal_in_bp:n {#1} ~ } +\cs_new_protected:Npn \__driver_draw_linewidth:n #1 + { + \__driver_draw_literal:x + { \dim_to_decimal_in_bp:n {#1} ~ w } + } +\cs_new_protected:Npn \__driver_draw_miterlimit:n #1 + { \__driver_draw_literal:x { \fp_eval:n {#1} ~ M } } +\cs_new_protected_nopar:Npn \__driver_draw_cap_butt: + { \__driver_draw_literal:n { 0 ~ J } } +\cs_new_protected_nopar:Npn \__driver_draw_cap_round: + { \__driver_draw_literal:n { 1 ~ J } } +\cs_new_protected_nopar:Npn \__driver_draw_cap_rectangle: + { \__driver_draw_literal:n { 2 ~ J } } +\cs_new_protected_nopar:Npn \__driver_draw_join_miter: + { \__driver_draw_literal:n { 0 ~ j } } +\cs_new_protected_nopar:Npn \__driver_draw_join_round: + { \__driver_draw_literal:n { 1 ~ j } } +\cs_new_protected_nopar:Npn \__driver_draw_join_bevel: + { \__driver_draw_literal:n { 2 ~ j } } +\cs_new_protected:Npn \__driver_draw_color_cmyk_fill:nnnn #1#2#3#4 + { + \__driver_draw_literal:x + { + \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ + \fp_eval:n {#3} ~ \fp_eval:n {#4} ~ + k + } + } +\cs_new_protected:Npn \__driver_draw_color_cmyk_stroke:nnnn #1#2#3#4 + { + \__driver_draw_literal:x + { + \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ + \fp_eval:n {#3} ~ \fp_eval:n {#4} ~ + K + } + } +\cs_new_protected:Npn \__driver_draw_color_gray_fill:n #1 + { \__driver_draw_literal:x { \fp_eval:n {#1} ~ g } } +\cs_new_protected:Npn \__driver_draw_color_gray_stroke:n #1 + { \__driver_draw_literal:x { \fp_eval:n {#1} ~ G } } +\cs_new_protected:Npn \__driver_draw_color_rgb_fill:nnn #1#2#3 + { + \__driver_draw_literal:x + { \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} ~ rg } + } +\cs_new_protected:Npn \__driver_draw_color_rgb_stroke:nnn #1#2#3 + { + \__driver_draw_literal:x + { \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} ~ RG } + } +\cs_new_protected:Npn \__driver_draw_transformcm:nnnnnn #1#2#3#4#5#6 + { + \__driver_draw_literal:x + { + \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ + \fp_eval:n {#3} ~ \fp_eval:n {#4} ~ + \dim_to_decimal_in_bp:n {#5} ~ \dim_to_decimal_in_bp:n {#6} ~ + cm + } + } +\cs_new_protected:Npn \__driver_draw_hbox:Nnnnnnn #1#2#3#4#5#6#7 + { + \hbox_set:Nn \l__driver_tmp_box + { + \tex_kern:D \__dim_eval:w #6 \__dim_eval_end: + \__driver_scope_begin: + \__driver_draw_transformcm:nnnnnn {#2} {#3} {#4} {#5} + { 0pt } { 0pt } + \box_move_up:nn {#7} { \box_use:N #1 } + \__driver_scope_end: + } + \box_set_wd:Nn \l__driver_tmp_box { 0pt } + \box_set_ht:Nn \l__driver_tmp_box { 0pt } + \box_set_dp:Nn \l__driver_tmp_box { 0pt } + \box_use:N \l__driver_tmp_box + } +\box_new:N \l__driver_tmp_box %% %% %% End of file `l3pdfmode.def'. diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def b/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def index 6778d6255a4..f21566f34b6 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- %% -\GetIdInfo$Id: l3drivers.dtx 6494 2016-05-14 21:10:56Z joseph $ +\GetIdInfo$Id: l3drivers.dtx 6511 2016-05-17 20:20:23Z joseph $ {L3 Experimental drivers} \ProvidesExplFile {l3xdvidpfmx.def}{\ExplFileDate}{\ExplFileVersion} @@ -67,12 +67,12 @@ { \tl_set:Nn \l__driver_current_color_tl { \current@color } } { } } -\cs_new_protected_nopar:Npx \__driver_color_ensure_current: +\cs_new_protected_nopar:Npn \__driver_color_ensure_current: { \tex_special:D { pdf:bcolor~\l__driver_current_color_tl } - \group_insert_after:N \exp_not:N \__driver_color_reset: + \group_insert_after:N \__driver_color_reset: } -\cs_new_protected_nopar:Npx \__driver_color_reset: +\cs_new_protected_nopar:Npn \__driver_color_reset: { \tex_special:D { pdf:ecolor } } \AtBeginDocument { @@ -81,9 +81,8 @@ \cs_set_protected_nopar:Npn \__driver_color_ensure_current: { \tex_special:D { color~push~\l__driver_current_color_tl } - \group_insert_after:N \exp_not:N \__driver_color_reset: + \group_insert_after:N \__driver_color_reset: } - \cs_set_protected_nopar:Npn \__driver_color_reset: { \tex_special:D { color~pop } } } @@ -142,6 +141,150 @@ \hbox_overlap_right:n { \box_use:N #1 } \__driver_scope_end: } +\cs_new_eq:NN \__driver_draw_literal:n \__driver_literal:n +\cs_generate_variant:Nn \__driver_draw_literal:n { x } +\cs_new_protected_nopar:Npn \__driver_draw_begin: + { \__driver_draw_scope_begin: } +\cs_new_protected_nopar:Npn \__driver_draw_end: + { \__driver_draw_scope_end: } +\cs_new_protected_nopar:Npn \__driver_draw_scope_begin: + { \__driver_draw_literal:n { q } } +\cs_new_protected_nopar:Npn \__driver_draw_scope_end: + { \__driver_draw_literal:n { Q } } +\cs_new_protected:Npn \__driver_draw_moveto:nn #1#2 + { + \__driver_draw_literal:x + { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ m } + } +\cs_new_protected:Npn \__driver_draw_lineto:nn #1#2 + { + \__driver_draw_literal:x + { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ l } + } +\cs_new_protected:Npn \__driver_draw_curveto:nnnnnn #1#2#3#4#5#6 + { + \__driver_draw_literal:x + { + \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ + \dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#4} ~ + \dim_to_decimal_in_bp:n {#5} ~ \dim_to_decimal_in_bp:n {#6} ~ + c + } + } +\bool_new:N \__driver_draw_eor_bool +\cs_new_protected_nopar:Npn \__driver_draw_closepath: + { \__driver_draw_literal:n { h } } +\cs_new_protected_nopar:Npn \__driver_draw_stroke: + { \__driver_draw_literal:n { S } } +\cs_new_protected_nopar:Npn \__driver_draw_closestroke: + { \__driver_draw_literal:n { s } } +\cs_new_protected_nopar:Npn \__driver_draw_fill: + { + \__driver_draw_literal:x + { f \bool_if:NT \__driver_draw_eor_bool * } + } +\cs_new_protected_nopar:Npn \__driver_draw_fillstroke: + { + \__driver_draw_literal:x + { B \bool_if:NT \__driver_draw_eor_bool * } + } +\cs_new_protected_nopar:Npn \__driver_draw_clip: + { + \__driver_draw_literal:x + { W \bool_if:NT \__driver_draw_eor_bool * } + } +\cs_new_protected_nopar:Npn \__driver_draw_discardpath: + { \__driver_draw_literal:n { n } } +\cs_new_protected:Npn \__driver_draw_dash:nn #1#2 + { + \__driver_draw_literal:x + { + [ ~ + \clist_map_function:nN {#1} \__driver_draw_dash:n + ] ~ + \dim_to_decimal_in_bp:n {#2} ~ d + } + } +\cs_new:Npn \__driver_draw_dash:n #1 + { \dim_to_decimal_in_bp:n {#1} ~ } +\cs_new_protected:Npn \__driver_draw_linewidth:n #1 + { + \__driver_draw_literal:x + { \dim_to_decimal_in_bp:n {#1} ~ w } + } +\cs_new_protected:Npn \__driver_draw_miterlimit:n #1 + { \__driver_draw_literal:x { \fp_eval:n {#1} ~ M } } +\cs_new_protected_nopar:Npn \__driver_draw_cap_butt: + { \__driver_draw_literal:n { 0 ~ J } } +\cs_new_protected_nopar:Npn \__driver_draw_cap_round: + { \__driver_draw_literal:n { 1 ~ J } } +\cs_new_protected_nopar:Npn \__driver_draw_cap_rectangle: + { \__driver_draw_literal:n { 2 ~ J } } +\cs_new_protected_nopar:Npn \__driver_draw_join_miter: + { \__driver_draw_literal:n { 0 ~ j } } +\cs_new_protected_nopar:Npn \__driver_draw_join_round: + { \__driver_draw_literal:n { 1 ~ j } } +\cs_new_protected_nopar:Npn \__driver_draw_join_bevel: + { \__driver_draw_literal:n { 2 ~ j } } +\cs_new_protected:Npn \__driver_draw_color_cmyk_fill:nnnn #1#2#3#4 + { + \__driver_draw_literal:x + { + \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ + \fp_eval:n {#3} ~ \fp_eval:n {#4} ~ + k + } + } +\cs_new_protected:Npn \__driver_draw_color_cmyk_stroke:nnnn #1#2#3#4 + { + \__driver_draw_literal:x + { + \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ + \fp_eval:n {#3} ~ \fp_eval:n {#4} ~ + K + } + } +\cs_new_protected:Npn \__driver_draw_color_gray_fill:n #1 + { \__driver_draw_literal:x { \fp_eval:n {#1} ~ g } } +\cs_new_protected:Npn \__driver_draw_color_gray_stroke:n #1 + { \__driver_draw_literal:x { \fp_eval:n {#1} ~ G } } +\cs_new_protected:Npn \__driver_draw_color_rgb_fill:nnn #1#2#3 + { + \__driver_draw_literal:x + { \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} ~ rg } + } +\cs_new_protected:Npn \__driver_draw_color_rgb_stroke:nnn #1#2#3 + { + \__driver_draw_literal:x + { \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} ~ RG } + } +\cs_new_protected:Npn \__driver_draw_transformcm:nnnnnn #1#2#3#4#5#6 + { + \__driver_draw_literal:x + { + \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ + \fp_eval:n {#3} ~ \fp_eval:n {#4} ~ + \dim_to_decimal_in_bp:n {#5} ~ \dim_to_decimal_in_bp:n {#6} ~ + cm + } + } +\cs_new_protected:Npn \__driver_draw_hbox:Nnnnnnn #1#2#3#4#5#6#7 + { + \hbox_set:Nn \l__driver_tmp_box + { + \tex_kern:D \__dim_eval:w #6 \__dim_eval_end: + \__driver_scope_begin: + \__driver_draw_transformcm:nnnnnn {#2} {#3} {#4} {#5} + { 0pt } { 0pt } + \box_move_up:nn {#7} { \box_use:N #1 } + \__driver_scope_end: + } + \box_set_wd:Nn \l__driver_tmp_box { 0pt } + \box_set_ht:Nn \l__driver_tmp_box { 0pt } + \box_set_dp:Nn \l__driver_tmp_box { 0pt } + \box_use:N \l__driver_tmp_box + } +\box_new:N \l__driver_tmp_box %% %% %% End of file `l3xdvipdfmx.def'. diff --git a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty index 8826b78dd32..782004ad183 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}[2016/05/14] -\@ifpackagelater{expl3}{2016/05/14} +\RequirePackage{expl3}[2016/05/18] +\@ifpackagelater{expl3}{2016/05/18} {} {% \PackageError{l3keys2e}{Support package l3kernel too old} @@ -61,8 +61,8 @@ } \def\ExplFileName{l3keys2e} \def\ExplFileDescription{LaTeX2e option processing using LaTeX3 keys} -\def\ExplFileDate{2016/05/14} -\def\ExplFileVersion{6495} +\def\ExplFileDate{2016/05/18} +\def\ExplFileVersion{6512} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} \cs_generate_variant:Nn \clist_put_right:Nn { Nv } diff --git a/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty b/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty index 1a02643a795..9f41789cb3c 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty @@ -47,8 +47,8 @@ %% %% ----------------------------------------------------------------------- %% -\RequirePackage{expl3}[2016/05/14] -\@ifpackagelater{expl3}{2016/05/14} +\RequirePackage{expl3}[2016/05/18] +\@ifpackagelater{expl3}{2016/05/18} {} {% \PackageError{xfrac}{Support package l3kernel too old} @@ -63,8 +63,8 @@ \RequirePackage{amstext,graphicx,l3keys2e,textcomp,xparse,xtemplate} \def\ExplFileName{xfrac} \def\ExplFileDescription{L3 Experimental split-level fractions} -\def\ExplFileDate{2016/05/14} -\def\ExplFileVersion{6495} +\def\ExplFileDate{2016/05/18} +\def\ExplFileVersion{6512} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} \keys_define:nn { xfrac } diff --git a/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty b/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty index 8eed3998b70..8a4664f615a 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}[2016/05/14] -\@ifpackagelater{expl3}{2016/05/14} +\RequirePackage{expl3}[2016/05/18] +\@ifpackagelater{expl3}{2016/05/18} {} {% \PackageError{xparse}{Support package l3kernel too old} @@ -65,8 +65,8 @@ } \def\ExplFileName{xparse} \def\ExplFileDescription{L3 Experimental document command parser} -\def\ExplFileDate{2016/05/14} -\def\ExplFileVersion{6495} +\def\ExplFileDate{2016/05/18} +\def\ExplFileVersion{6512} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} \tl_const:Nx \c__xparse_no_value_tl diff --git a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty index 79b1fc19cd1..04efdce2561 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}[2016/05/14] -\@ifpackagelater{expl3}{2016/05/14} +\RequirePackage{expl3}[2016/05/18] +\@ifpackagelater{expl3}{2016/05/18} {} {% \PackageError{xtemplate}{Support package l3kernel too old} @@ -65,8 +65,8 @@ } \def\ExplFileName{xtemplate} \def\ExplFileDescription{L3 Experimental prototype document functions} -\def\ExplFileDate{2016/05/14} -\def\ExplFileVersion{6495} +\def\ExplFileDate{2016/05/18} +\def\ExplFileVersion{6512} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} \tl_const:Nn \c__xtemplate_code_root_tl { template~code~>~ } |