texlive[56244] Master/texmf-dist: l3backend (2sep20)
commits+karl at tug.org
commits+karl at tug.org
Wed Sep 2 23:36:32 CEST 2020
Revision: 56244
http://tug.org/svn/texlive?view=revision&revision=56244
Author: karl
Date: 2020-09-02 23:36:32 +0200 (Wed, 02 Sep 2020)
Log Message:
-----------
l3backend (2sep20)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md
trunk/Master/texmf-dist/doc/latex/l3backend/README.md
trunk/Master/texmf-dist/dvips/l3backend/l3backend-dvips.pro
trunk/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx
trunk/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx
trunk/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx
trunk/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx
trunk/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx
trunk/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx
trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx
trunk/Master/texmf-dist/source/latex/l3backend/l3backend.ins
trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def
trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def
trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def
Added Paths:
-----------
trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def
trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def
Removed Paths:
-------------
trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def
trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xdvipdfmx.def
Modified: trunk/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md 2020-09-02 21:34:30 UTC (rev 56243)
+++ trunk/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md 2020-09-02 21:36:32 UTC (rev 56244)
@@ -6,6 +6,14 @@
## [Unreleased]
+## [2020-09-01]
+
+### Changed
+- Improved support for Separation colors
+- Updated approach to `dvipdfmx`/XeTeX color support
+- Split `pdfmode` driver into pdfTeX- and LuaTeX-specific files
+- Renamed `xdvipdfmx` backend files to `xetex`
+
## [2020-08-07]
### Changed
@@ -102,7 +110,8 @@
- Include `l3backend` in file names
- Moved backend code to internal for each 'parent' module
-[Unreleased]: https://github.com/latex3/latex3/compare/2020-08-07...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2020-09-01...HEAD
+[2020-09-01]: https://github.com/latex3/latex3/compare/2020-08-07...2020-09-01
[2020-08-07]: https://github.com/latex3/latex3/compare/2020-06-29...2020-08-07
[2020-06-29]: https://github.com/latex3/latex3/compare/2020-06-23...2020-06-29
[2020-06-23]: https://github.com/latex3/latex3/compare/2020-06-18...2020-06-23
Modified: trunk/Master/texmf-dist/doc/latex/l3backend/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3backend/README.md 2020-09-02 21:34:30 UTC (rev 56243)
+++ trunk/Master/texmf-dist/doc/latex/l3backend/README.md 2020-09-02 21:36:32 UTC (rev 56244)
@@ -1,7 +1,7 @@
LaTeX3 Backend Drivers
======================
-Release 2020-08-07
+Release 2020-09-01
This package forms parts of `expl3`, and contains the code used to interface
with backends (drivers) across the `expl3` codebase. The functions here are
Modified: trunk/Master/texmf-dist/dvips/l3backend/l3backend-dvips.pro
===================================================================
--- trunk/Master/texmf-dist/dvips/l3backend/l3backend-dvips.pro 2020-09-02 21:34:30 UTC (rev 56243)
+++ trunk/Master/texmf-dist/dvips/l3backend/l3backend-dvips.pro 2020-09-02 21:36:32 UTC (rev 56244)
@@ -21,6 +21,9 @@
%% File: l3backend-header.dtx
/color.sc { } def
/color.fc { } def
+TeXDict begin
+/TeXcolorsetspotcolor { setcustomcolor } def
+end
true setglobal
/pdf.globaldict 4 dict def
false setglobal
Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx 2020-09-02 21:34:30 UTC (rev 56243)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx 2020-09-02 21:36:32 UTC (rev 56244)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
%
% \maketitle
%
@@ -68,40 +68,70 @@
% All the file identifiers are up-front so that they come out in the right
% place in the files.
% \begin{macrocode}
-%<*package>
\ProvidesExplFile
%<*dvipdfmx>
- {l3backend-dvipdfmx.def}{2020-08-07}{}
+ {l3backend-dvipdfmx.def}{2020-09-01}{}
{L3 backend support: dvipdfmx}
%</dvipdfmx>
%<*dvips>
- {l3backend-dvips.def}{2020-08-07}{}
+ {l3backend-dvips.def}{2020-09-01}{}
{L3 backend support: dvips}
%</dvips>
%<*dvisvgm>
- {l3backend-dvisvgm.def}{2020-08-07}{}
+ {l3backend-dvisvgm.def}{2020-09-01}{}
{L3 backend support: dvisvgm}
%</dvisvgm>
-%<*pdfmode>
- {l3backend-pdfmode.def}{2020-08-07}{}
- {L3 backend support: PDF mode}
-%</pdfmode>
-%<*xdvipdfmx>
- {l3backend-xdvipdfmx.def}{2020-08-07}{}
- {L3 backend support: xdvipdfmx}
-%</xdvipdfmx>
-%</package>
+%<*luatex>
+ {l3backend-luatex.def}{2020-09-01}{}
+ {L3 backend support: PDF output (LuaTeX)}
+%</luatex>
+%<*pdftex>
+ {l3backend-pdftex.def}{2020-09-01}{}
+ {L3 backend support: PDF output (pdfTeX)}
+%</pdftex>
+%<*xetex>
+ {l3backend-xetex.def}{2020-09-01}{}
+ {L3 backend support: XeTeX}
+%</xetex>
% \end{macrocode}
%
+% Check if the loaded kernel is at least enough to load this file.
+% The kernel date has to be at least equal to \cs{ExplBackendFileDate}
+% or later. If \cs{__kernel_dependency_version_check:Nn} doesn't
+% exist we're loading in an older kernel, so it's an error anyway.
+% With time, this test should vanish and only the dependency check
+% should remain.
+% \begin{macrocode}
+\cs_if_exist:NTF \__kernel_dependency_version_check:nn
+ {
+ \__kernel_dependency_version_check:nn {2020-09-01}
+%<dvipdfmx> {l3backend-dvipdfmx.def}
+%<dvips> {l3backend-dvips.def}
+%<dvisvgm> {l3backend-dvisvgm.def}
+%<luatex> {l3backend-luatex.def}
+%<pdftex> {l3backend-pdftex.def}
+%<xetex> {l3backend-xetex.def}
+ }
+ {
+ \cs_if_exist_use:cF { @latex at error } { \errmessage }
+ {
+ Mismatched~LaTeX~support~files~detected. \MessageBreak
+ Loading~aborted!
+ }
+ { \use:c { @ehd } }
+ \tex_endinput:D
+ }
+% \end{macrocode}
+%
% The order of the backend code here is such that we get somewhat logical
% outcomes in terms of code sharing whilst keeping things readable. (Trying to
% mix all of the code by concept is almost unmanageable.) The key parts which
% are shared are
% \begin{itemize}
-% \item Color support is either \texttt{dvips}-like or \texttt{pdfmode}-like.
-% \item \texttt{pdfmode} and \texttt{(x)dvipdfmx} share drawing routines.
-% \item \texttt{xdvipdfmx} is largely the same as \texttt{dvipdfmx} so
-% takes most of the same code.
+% \item Color support is either \texttt{dvips}-like or \LuaTeX{}/pdfTeX{}-like.
+% \item \LuaTeX{}/pdfTeX{} and \texttt{dvipdfmx}/\XeTeX{} share drawing routines.
+% \item \XeTeX{} is the same as \texttt{dvipdfmx} other than image size
+% extraction so takes most of the same code.
% \end{itemize}
%
% \begin{macro}
@@ -155,15 +185,13 @@
% This is held until the start of shipout such that a document with no
% actual output does not write anything.
% \begin{macrocode}
-\cs_if_exist:NTF \AtBeginDvi
- { \AtBeginDvi }
- { \use:n }
- {
- \bool_lazy_and:nnT
- { \cs_if_exist_p:N \g__kernel_backend_header_bool }
- { \g__kernel_backend_header_bool }
+\bool_if:NT \g__kernel_backend_header_bool
+ {
+ \cs_if_exist:NTF \AtBeginDvi
+ { \AtBeginDvi }
+ { \use:n }
{ \__kernel_backend_literal:n { header = l3backend-dvips.pro } }
- }
+ }
% \end{macrocode}
%
% \begin{macro}
@@ -211,17 +239,16 @@
%</dvips>
% \end{macrocode}
%
-% \subsection{\texttt{pdfmode} backend}
+% \subsection{\LuaTeX{} and \pdfTeX{} backends}
%
% \begin{macrocode}
-%<*pdfmode>
+%<*luatex|pdftex>
% \end{macrocode}
%
-% The direct PDF backend covers both \pdfTeX{} and \LuaTeX{}. The latter
-% renames and restructures the backend primitives but this can be handled
-% at one level of abstraction. As such, we avoid using two separate backends
-% for this material at the cost of some \texttt{x}-type definitions to get
-% everything expanded up-front.
+% Both \LuaTeX{} and \pdfTeX{} write PDFs directly rather than via an
+% intermediate file. Although there are similarities, the move of \LuaTeX{}
+% to have more code in Lua means we create two independent files using
+% shared DocStrip code.
%
% \begin{macro}{\__kernel_backend_literal_pdf:n, \__kernel_backend_literal_pdf:x}
% This is equivalent to \verb|\special{pdf:}| but the engine can
@@ -230,12 +257,15 @@
% Note that this is still inside the text (\texttt{BT} \dots \texttt{ET}
% block).
% \begin{macrocode}
-\cs_new_protected:Npx \__kernel_backend_literal_pdf:n #1
+\cs_new_protected:Npn \__kernel_backend_literal_pdf:n #1
{
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D literal }
- { \tex_pdfliteral:D }
- { \exp_not:N \exp_not:n {#1} }
+%<*luatex>
+ \tex_pdfextension:D literal
+%</luatex>
+%<*pdftex>
+ \tex_pdfliteral:D
+%</pdftex>
+ { \exp_not:n {#1} }
}
\cs_generate_variant:Nn \__kernel_backend_literal_pdf:n { x }
% \end{macrocode}
@@ -245,13 +275,15 @@
% Page literals are pretty simple. To avoid an expansion, we write out
% by hand.
% \begin{macrocode}
-\cs_new_protected:Npx \__kernel_backend_literal_page:n #1
+\cs_new_protected:Npn \__kernel_backend_literal_page:n #1
{
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D literal ~ }
- { \tex_pdfliteral:D }
- page
- { \exp_not:N \exp_not:n {#1} }
+%<*luatex>
+ \tex_pdfextension:D literal ~
+%</luatex>
+%<*pdftex>
+ \tex_pdfliteral:D
+%</pdftex>
+ page { \exp_not:n {#1} }
}
% \end{macrocode}
% \end{macro}
@@ -259,17 +291,23 @@
% \begin{macro}{\__kernel_backend_scope_begin:, \__kernel_backend_scope_end:}
% Higher-level interfaces for saving and restoring the graphic state.
% \begin{macrocode}
-\cs_new_protected:Npx \__kernel_backend_scope_begin:
+\cs_new_protected:Npn \__kernel_backend_scope_begin:
{
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D save \scan_stop: }
- { \tex_pdfsave:D }
+%<*luatex>
+ \tex_pdfextension:D save \scan_stop:
+%</luatex>
+%<*pdftex>
+ \tex_pdfsave:D
+%</pdftex>
}
-\cs_new_protected:Npx \__kernel_backend_scope_end:
+\cs_new_protected:Npn \__kernel_backend_scope_end:
{
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D restore \scan_stop: }
- { \tex_pdfrestore:D }
+%<*luatex>
+ \tex_pdfextension:D restore \scan_stop:
+%</luatex>
+%<*pdftex>
+ \tex_pdfrestore:D
+%</pdftex>
}
% \end{macrocode}
% \end{macro}
@@ -279,12 +317,15 @@
% 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.
% \begin{macrocode}
-\cs_new_protected:Npx \__kernel_backend_matrix:n #1
+\cs_new_protected:Npn \__kernel_backend_matrix:n #1
{
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D setmatrix }
- { \tex_pdfsetmatrix:D }
- { \exp_not:N \exp_not:n {#1} }
+%<*luatex>
+ \tex_pdfextension:D setmatrix
+%</luatex>
+%<*pdftex>
+ \tex_pdfsetmatrix:D
+%</pdftex>
+ { \exp_not:n {#1} }
}
\cs_generate_variant:Nn \__kernel_backend_matrix:n { x }
% \end{macrocode}
@@ -291,19 +332,19 @@
% \end{macro}
%
% \begin{macrocode}
-%</pdfmode>
+%</luatex|pdftex>
% \end{macrocode}
%
% \subsection{\texttt{dvipdfmx} backend}
%
% \begin{macrocode}
-%<*dvipdfmx|xdvipdfmx>
+%<*dvipdfmx|xetex>
% \end{macrocode}
%
% The \texttt{dvipdfmx} shares code with the PDF mode one (using the common
-% section to this file) but also with \texttt{xdvipdfmx}. The latter is close
+% section to this file) but also with \XeTeX{}. The latter is close
% to identical to \texttt{dvipdfmx} and so all of the code here is extracted
-% for both backends, with some \texttt{clean up} for \texttt{xdvipdfmx} as
+% for both backends, with some \texttt{clean up} for \XeTeX{} as
% required.
%
% \begin{macro}{\__kernel_backend_literal_pdf:n, \__kernel_backend_literal_pdf:x}
@@ -336,7 +377,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</dvipdfmx|xdvipdfmx>
+%</dvipdfmx|xetex>
% \end{macrocode}
%
% \subsection{\texttt{dvisvgm} backend}
Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx 2020-09-02 21:34:30 UTC (rev 56243)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx 2020-09-02 21:36:32 UTC (rev 56244)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
%
% \maketitle
%
@@ -151,10 +151,10 @@
%</dvips>
% \end{macrocode}
%
-% \subsection{\texttt{pdfmode} backend}
+% \subsection{\LuaTeX{} and \pdfTeX{} backends}
%
% \begin{macrocode}
-%<*pdfmode>
+%<*luatex|pdftex>
% \end{macrocode}
%
% \begin{macro}{\@@_backend_clip:N}
@@ -247,17 +247,17 @@
% \end{macro}
%
% \begin{macrocode}
-%</pdfmode>
+%</luatex|pdftex>
% \end{macrocode}
%
% \subsection{\texttt{dvipdfmx} backend}
%
% \begin{macrocode}
-%<*dvipdfmx|xdvipdfmx>
+%<*dvipdfmx|xetex>
% \end{macrocode}
%
% \begin{macro}{\@@_backend_clip:N}
-% The code here is identical to that for \texttt{pdfmode}: unlike rotation and
+% The code here is identical to that for \LuaTeX{}/\pdfTeX{}: unlike rotation and
% scaling, there is no higher-level support in the backend for clipping.
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_clip:N #1
@@ -327,7 +327,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</dvipdfmx|xdvipdfmx>
+%</dvipdfmx|xetex>
% \end{macrocode}
%
% \subsection{\texttt{dvisvgm} backend}
Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx 2020-09-02 21:34:30 UTC (rev 56243)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx 2020-09-02 21:36:32 UTC (rev 56244)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
%
% \maketitle
%
@@ -60,18 +60,62 @@
%<@@=color>
% \end{macrocode}
%
-% Color support is split into two parts: a \enquote{general} concept and
-% one directly linked to drawings (or rather the split between filling
-% and stroking). General color is relatively easy to handle: we have a color
-% stack available with all modern drivers, and can use that.
-% Whilst \texttt{(x)dvipdfmx} does have its own approach to color specials,
-% it is easier to use \texttt{dvips}-like ones for all cases except direct
-% PDF output.
+% Color support is split into parts: general color, separations, and color for
+% drawings. We have different approaches in each backend, and have some choices
+% to make about \texttt{dvipdfmx}/\XeTeX{} in particular. Whilst it is in some ways
+% convenient to use the same approach in multiple backends, the fact that
+% \texttt{dvipdfmx}/\XeTeX{} is PDF-based means it (largely) sticks closer to
+% direct PDF output.
%
+% \subsection{\texttt{dvipmdfx}/\XeTeX{}}
+%
+% \begin{macrocode}
+%<*dvipdfmx|xetex>
+% \end{macrocode}
+%
+% These backends have the most possible approaches: it recognises both
+% \texttt{dvips}-based color specials and it's own format, plus one can
+% include PDF statements directly. The latter are not subject to the stack,
+% so are not suitable for general use. Of the two stack methods, the dedicated
+% one has been extended to cover color spaces, so it is used in preference to
+% the \texttt{dvips} one.
+%
+% The \LaTeXe{} backend code uses \texttt{dvips}-based code with
+% \texttt{dvipmdfx}/\XeTeX{}, and so we leave getting color from \LaTeXe{} to
+% a shared code path below.
+%
+% \begin{macro}
+% {
+% \@@_backend_select_cmyk:n ,
+% \@@_backend_select_gray:n ,
+% \@@_backend_select_rgb:n
+% }
+% \begin{macro}{\@@_backend_reset:}
+% \begin{macro}{color.sc, color.fc}
+% Push the data to the stack.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_backend_select_cmyk:n #1
+ {
+ \__kernel_backend_literal:n { pdf: bc ~ [#1] }
+ \group_insert_after:N \@@_backend_reset:
+ }
+\cs_new_eq:NN \@@_backend_select_gray:n \@@_backend_select_cmyk:n
+\cs_new_eq:NN \@@_backend_select_rgb:n \@@_backend_select_cmyk:n
+\cs_new_protected:Npn \@@_backend_reset:
+ { \__kernel_backend_literal:n { pdf: ec } }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macrocode}
+%</dvipdfmx|xetex>
+% \end{macrocode}
+%
% \subsection{\texttt{dvips}-style}
%
% \begin{macrocode}
-%<*dvisvgm|dvipdfmx|dvips|xdvipdfmx>
+%<*dvisvgm|dvipdfmx|dvips|xetex>
% \end{macrocode}
%
% \begin{macro}{\@@_backend_pickup:N}
@@ -106,6 +150,14 @@
% \end{macro}
% \end{macro}
%
+% \begin{macrocode}
+%</dvisvgm|dvipdfmx|dvips|xetex>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*dvisvgm|dvips>
+% \end{macrocode}
+%
% \begin{macro}
% {
% \@@_backend_select_cmyk:n ,
@@ -140,21 +192,14 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\@@_backend_select_separation:nn}
% \begin{macrocode}
-\cs_new_protected:Npn \@@_backend_select_separation:nn #1#2
- { \@@_backend_select:n {#1} }
+%</dvisvgm|dvips>
% \end{macrocode}
-% \end{macro}
%
-% \begin{macrocode}
-%</dvisvgm|dvipdfmx|dvips|xdvipdfmx>
-% \end{macrocode}
+% \subsection{\LuaTeX{} and \pdfTeX{}}
%
-% \subsection{\texttt{pdfmode}}
-%
% \begin{macrocode}
-%<*pdfmode>
+%<*luatex|pdftex>
% \end{macrocode}
%
% \begin{macro}{\@@_backend_pickup:N}
@@ -225,44 +270,252 @@
{ \@@_backend_select:n { #1 ~ g ~ #1 ~ G } }
\cs_new_protected:Npn \@@_backend_select_rgb:n #1
{ \@@_backend_select:n { #1 ~ rg ~ #1 ~ RG } }
-\cs_new_protected:Npx \@@_backend_select:n #1
+\cs_new_protected:Npn \@@_backend_select:n #1
{
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D colorstack }
- { \tex_pdfcolorstack:D }
- \exp_not:N \l__kernel_color_stack_int push {#1}
- \group_insert_after:N \exp_not:N \@@_backend_reset:
+%<*luatex>
+ \tex_pdfextension:D colorstack
+%</luatex>
+%<*pdftex>
+ \tex_pdfcolorstack:D
+%</pdftex>
+ \l__kernel_color_stack_int push {#1}
+ \group_insert_after:N \@@_backend_reset:
}
-\cs_new_protected:Npx \@@_backend_reset:
+\cs_new_protected:Npn \@@_backend_reset:
{
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D colorstack }
- { \tex_pdfcolorstack:D }
- \exp_not:N \l__kernel_color_stack_int pop \scan_stop:
+%<*luatex>
+ \tex_pdfextension:D colorstack
+%</luatex>
+%<*pdftex>
+ \tex_pdfcolorstack:D
+%</pdftex>
+ \l__kernel_color_stack_int pop \scan_stop:
}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
+% \begin{macrocode}
+%</luatex|pdftex>
+% \end{macrocode}
+%
+% \subsection{Separations}
+%
+% Here, life gets interesting and we need essentially one approach per
+% backend.
+%
+% \begin{macrocode}
+%<*dvips>
+% \end{macrocode}
+%
% \begin{macro}{\@@_backend_select_separation:nn}
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_select_separation:nn #1#2
+ { \@@_backend_select:n { setspotcolor ~ #1 ~ #2 } }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_backend_separation_init:nnnnn}
+% \begin{macro}{\@@_backend_separation_init:nnn}
+% \begin{macro}[EXP]{\@@_backend_separation_init:n}
+% \begin{macro}[EXP]{\@@_backend_separation_init:w}
+% \begin{macro}{\@@_backend_separation_init_cielab:nnnnn}
+% \begin{macro}{\@@_backend_separation_init_cielab:n}
+% Initialising here means creating a small header set up plus massaging
+% some data. This comes about as we have to deal with PDF-focussed data,
+% which makes most sense \enquote{higher-up}. The approach is based on
+% ideas from \url{https://tex.stackexchange.com/q/560093}.
+% \begin{macrocode}
+\cs_new_protected:Npx \@@_backend_separation_init:nnnnn #1#2#3#4#5
+ {
+ \bool_if:NT \g__kernel_backend_header_bool
+ {
+ \cs_if_exist:NTF \AtBeginDvi
+ { \AtBeginDvi }
+ { \use:n }
+ {
+ \exp_not:N \@@_backend_separation_init:nnn
+ {#1} {#2} {#5}
+ }
+ }
+ }
+\cs_new_protected:Npn \@@_backend_separation_init:nnn #1#2#3
+ {
+ \__kernel_backend_literal:e
+ {
+ !
+ TeXDict ~ begin ~
+ /color \int_use:N \g_@@_separation_int \c_space_tl
+ [#3] ~ aload ~ pop ~ ( \str_convert_pdfname:n {#1} ) ~
+ find \@@_backend_separation_init:n {#2} customcolor ~ def ~
+ end
+ }
+ }
+\cs_new:Npn \@@_backend_separation_init:n #1
+ {
+ \@@_backend_separation_init:w #1 /Device #1 /Device \s_@@_stop
+ }
+\cs_new:Npn \@@_backend_separation_init:w #1 /Device #2 /Device #3 \s_@@_stop
+ { \str_lowercase:n {#2} }
+% \end{macrocode}
+% Currently no CIELAB support.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_backend_separation_init_cielab:nnnnn #1#2#3#4#5 { }
+\cs_new_protected:Npn \@@_backend_separation_init_cielab:n #1 { }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macrocode}
+%</dvips>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*dvisvgm>
+% \end{macrocode}
+%
+% \begin{macro}{\@@_backend_select_separation:nn}
+% No support at present.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_backend_select_separation:nn #1#2 { }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}
+% {\@@_backend_separation_init:nnnnn, \@@_backend_separation_init_cielab:nnnnn}
+% \begin{macro}{\@@_backend_separation_init_cielab:n}
+% No support at present.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_backend_separation_init:nnnnn #1#2#3#4#5 { }
+\cs_new_protected:Npn \@@_backend_separation_init_cielab:nnnnn #1#2#3#4#5 { }
+\cs_new_protected:Npn \@@_backend_separation_init_cielab:n #1 { }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macrocode}
+%</dvisvgm>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*dvipdfmx|luatex|pdftex|xetex>
+% \end{macrocode}
+%
+% \begin{macro}{\@@_backend_select_separation:nn}
+% Different syntaxes here as the stacks are accessed very differently.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_backend_select_separation:nn #1#2
+%<*dvipdfmx|xetex>
+ { \@@_backend_select:n { @#1 ~ [#2] } }
+%</dvipdfmx|xetex>
+%<*luatex|pdftex>
{ \@@_backend_select:n { /#1 ~ cs ~ /#1 ~ CS ~ #2 ~ scn ~ #2 ~ SCN } }
+%</luatex|pdftex>
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\@@_backend_separation_init:nnnnn}
+% \begin{macro}{\@@_backend_separation_init:n}
+% \begin{macro}{\@@_backend_separation_init_cielab:nnnnn}
+% \begin{macro}{\@@_backend_separation_init_cielab:n}
+% Initialising the PDF structures needs two parts: creating an object
+% containing the \enquote{real} name of the Separation, then adding a reference
+% to that to each page. The latter uses the internal name of the \texttt{cs}.
+% For \texttt{dvipdfmx}/\XeTeX{}, the backend does most of the work so we need a
+% simplified version.
% \begin{macrocode}
-%</pdfmode>
+\cs_new_protected:Npn \@@_backend_separation_init:nnnnn #1#2#3#4#5
+ {
+ \@@_backend_separation_init:n
+ {
+ /Separation
+ / \str_convert_pdfname:n {#1} ~ #2 ~
+ <<
+ /FunctionType ~ 2
+ /Domain ~ [0 ~ 1]
+ \tl_if_blank:nF {#3} { /Range ~ [#3] }
+ /C0 ~ [#4] ~
+ /C1 ~ [#5] /N ~ 1
+ >>
+ }
+%<*luatex|pdftex>
+ \use:x
+ {
+ \pdfcoredict_gput:nnn
+ { Page / Resources / ColorSpace }
+ { color \int_use:N \g_@@_separation_int }
+ { \pdf_object_last: }
+ }
+%</luatex|pdftex>
+ }
+\cs_if_exist:NF \pdf_object_now:nn
+ { \cs_gset_protected:Npn \@@_backend_separation_init:nnnnn #1#2#3#4#5 { } }
+\cs_new_protected:Npn \@@_backend_separation_init:n #1
+ {
+%<*dvipdfmx|xetex>
+ \__kernel_backend_literal:x
+ {
+ pdf:obj ~ @ color \int_use:N \g_@@_separation_int \c_space_tl
+ [#1]
+ }
+%</dvipdfmx|xetex>
+%<*luatex|pdftex>
+ \pdf_object_now:nx { array } {#1}
+%</luatex|pdftex>
+ }
% \end{macrocode}
+% For CIELAB colors, we need one object per document for the illuminant,
+% plus initialisation of the color space referencing that object.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_backend_separation_init_cielab:nnnnn #1#2#3#4#5
+ {
+ \@@_backend_separation_init:nnnnn
+ {#2}
+ { \pdf_object_ref:n { @@_illuminant_cielab_ #1 } }
+ { \c_@@_model_range_lab_tl }
+ { 100 ~ 0 ~ 0 }
+ { #3 ~ #4 ~ #5 }
+ }
+\cs_if_exist:NF \pdf_object_now:nn
+ { \cs_gset_protected:Npn \@@_backend_separation_init_cielab:nnnnn #1#2#3#4#5 { } }
+\cs_new_protected:Npn \@@_backend_separation_init_cielab:n #1
+ {
+ \pdf_object_new:nn { @@_illuminant_cielab_ #1 } { array }
+ \pdf_object_write:nx { @@_illuminant_cielab_ #1 }
+ {
+ /Lab ~
+ <<
+ /WhitePoint ~
+ [ \tl_use:c { c_@@_model_whitepoint_cielab_ #1 _tl } ]
+ /Range ~ [ \c_@@_model_range_lab_tl ]
+ >>
+ }
+ }
+\cs_if_exist:NF \pdf_object_new:nn
+ { \cs_gset_protected:Npn \@@_backend_separation_init_cielab:n #1 { } }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
+% \begin{macrocode}
+%</dvipdfmx|luatex|pdftex|xetex>
+% \end{macrocode}
+%
% \subsection{Fill and stroke color}
%
-% Here, \texttt{(x)dvipdfmx} follows \texttt{pdfmode}, while for \texttt{dvips}
+% Here, \texttt{dvipdfmx}/\XeTeX{} follows \LuaTeX{} and \pdfTeX{},
+% while for \texttt{dvips}
% we have to manage fill and stroke color ourselves. We also handle
% \texttt{dvisvgm} independently, as there we can create SVG directly.
%
% \begin{macrocode}
-%<*dvipdfmx|pdfmode|xdvipdfmx>
+%<*dvipdfmx|luatex|pdftex|xetex>
% \end{macrocode}
%
% \begin{macro}
@@ -274,8 +527,8 @@
% \@@_backend_stroke_gray:n ,
% \@@_backend_stroke_rgb:n
% }
-% Drawing (fill/stroke) color is handled in \texttt{(x)dvipdfmx} in the
-% same way as \texttt{pdfmode}. We use the same approach as earlier, except the
+% Drawing (fill/stroke) color is handled in \texttt{dvipdfmx}/\XeTeX{} in the
+% same way as \LuaTeX{}/\pdfTeX{}. We use the same approach as earlier, except the
% color stack is not involved so the generic direct PDF operation is used.
% There is no worry about the nature of strokes: everything is handled
% automatically.
@@ -309,7 +562,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</dvipdfmx|pdfmode|xdvipdfmx>
+%</dvipdfmx|luatex|pdftex|xetex>
% \end{macrocode}
%
% \begin{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx 2020-09-02 21:34:30 UTC (rev 56243)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx 2020-09-02 21:36:32 UTC (rev 56244)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
%
% \maketitle
%
@@ -339,7 +339,7 @@
% In \texttt{dvips}, keeping the transformations in line with the engine
% is unfortunately not possible for scaling and rotations: even if we
% decompose the matrix into those operations, there is still no backend
-% tracking (\emph{cf.}~\texttt{(x)dvipdfmx}). Thus we take the shortest
+% tracking (\emph{cf.}~\texttt{dvipdfmx}/\XeTeX{}). Thus we take the shortest
% path available and simply dump the matrix as given.
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_cm:nnnn #1#2#3#4
@@ -393,13 +393,13 @@
%</dvips>
% \end{macrocode}
%
-% \subsection{\texttt{pdfmode} and \texttt{(x)dvipdfmx}}
+% \subsection{\LuaTeX{}, \pdfTeX{}, \texttt{dvipdfmx} and \XeTeX{}}
%
-% Both \texttt{pdfmode} and \texttt{(x)dvipdfmx} directly produce PDF output
+% \LuaTeX{}, \pdfTeX{}, \texttt{dvipdfmx} and \XeTeX{} directly produce PDF output
% and understand a shared set of specials for drawing commands.
%
% \begin{macrocode}
-%<*dvipdfmx|pdfmode|xdvipdfmx>
+%<*dvipdfmx|luatex|pdftex|xetex>
% \end{macrocode}
%
% \subsubsection{Drawing}
@@ -575,25 +575,25 @@
%
% \begin{macro}{\@@_backend_cm:nnnn}
% \begin{macro}{\@@_backend_cm_aux:nnnn}
-% Another split here between \texttt{pdfmode} and \texttt{(x)dvipdfmx}.
+% Another split here between \LuaTeX{}/pdfTeX{} and \texttt{dvipdfmx}/\XeTeX{}.
% In the former, we have a direct method to maintain alignment: the backend
-% can use a matrix itself. For \texttt{(x)dvipdfmx}, we can to decompose the
+% can use a matrix itself. For \texttt{dvipdfmx}/\XeTeX{}, we can to decompose the
% matrix into rotations and a scaling, then use those operations as they
% are handled by the backend. (There is backend support for matrix operations in
-% \texttt{(x)dvipdfmx}, but as a matched pair so not suitable for the
+% \texttt{dvipdfmx}/\XeTeX{}, but as a matched pair so not suitable for the
% \enquote{stand alone} transformation set up here.)
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_cm:nnnn #1#2#3#4
{
-%<*pdfmode>
+%<*luatex|pdftex>
\__kernel_backend_matrix:n { #1 ~ #2 ~ #3 ~ #4 }
-%</pdfmode>
-%<*dvipdfmx|xdvipdfmx>
+%</luatex|pdftex>
+%<*dvipdfmx|xetex>
\@@_backend_cm_decompose:nnnnN {#1} {#2} {#3} {#4}
\@@_backend_cm_aux:nnnn
-%</dvipdfmx|xdvipdfmx>
+%</dvipdfmx|xetex>
}
-%<*dvipdfmx|xdvipdfmx>
+%<*dvipdfmx|xetex>
\cs_new_protected:Npn \@@_backend_cm_aux:nnnn #1#2#3#4
{
\__kernel_backend_literal:x
@@ -617,7 +617,7 @@
{ \fp_eval:n { round ( -#4 , 5 ) } }
}
}
-%</dvipdfmx|xdvipdfmx>
+%</dvipdfmx|xetex>
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -677,7 +677,7 @@
% way of specifying a transformation matrix exchanges where one would
% normally expect $B$ and $C$ to be.
% \begin{macrocode}
-%<*dvipdfmx|xdvipdfmx>
+%<*dvipdfmx|xetex>
\cs_new_protected:Npn \@@_backend_cm_decompose:nnnnN #1#2#3#4#5
{
\use:x
@@ -720,7 +720,7 @@
{ #5 {#1} {#2} {#3} {#4} }
{ #5 {#1} {#3} {#2} {#4} }
}
-%</dvipdfmx|xdvipdfmx>
+%</dvipdfmx|xetex>
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -736,17 +736,17 @@
\cs_new_protected:Npn \@@_backend_box_use:Nnnnn #1#2#3#4#5
{
\__kernel_backend_scope_begin:
-%<*pdfmode>
+%<*luatex|pdftex>
\@@_backend_cm:nnnn {#2} {#3} {#4} {#5}
-%</pdfmode>
-%<*dvipdfmx|xdvipdfmx>
+%</luatex|pdftex>
+%<*dvipdfmx|xetex>
\__kernel_backend_literal:n
{ pdf:btrans~matrix~ #2 ~ #3 ~ #4 ~ #5 ~ 0 ~ 0 }
-%</dvipdfmx|xdvipdfmx>
+%</dvipdfmx|xetex>
\hbox_overlap_right:n { \box_use:N #1 }
-%<*dvipdfmx|xdvipdfmx>
+%<*dvipdfmx|xetex>
\__kernel_backend_literal:n { pdf:etrans }
-%</dvipdfmx|xdvipdfmx>
+%</dvipdfmx|xetex>
\__kernel_backend_scope_end:
}
% \end{macrocode}
@@ -753,7 +753,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</dvipdfmx|pdfmode|xdvipdfmx>
+%</dvipdfmx|luatex|pdftex|xetex>
% \end{macrocode}
%
% \subsection{\texttt{dvisvgm} backend}
Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx 2020-09-02 21:34:30 UTC (rev 56243)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx 2020-09-02 21:36:32 UTC (rev 56244)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
%
% \maketitle
%
@@ -95,10 +95,10 @@
%</dvips>
% \end{macrocode}
%
-% \subsection{\texttt{pdfmode} backend}
+% \subsection{\LuaTeX{} and \pdfTeX{} backends}
%
% \begin{macrocode}
-%<*pdfmode>
+%<*luatex|pdftex>
% \end{macrocode}
%
% \begin{variable}{\l_@@_graphics_attr_tl}
@@ -223,7 +223,7 @@
% \begin{macro}{\@@_backend_include_eps:n}
% \begin{variable}
% {\l_@@_backend_dir_str, \l_@@_backend_name_str, \l_@@_backend_ext_str}
-% EPS graphics may be included in \texttt{pdfmode} by conversion to
+% EPS graphics may be included in \LuaTeX{}/pdfTeX{} by conversion to
% PDF: this requires restricted shell escape. Modelled on the \pkg{epstopdf}
% \LaTeXe{} package, but simplified, conversion takes place here if we have
% shell access.
@@ -274,13 +274,13 @@
% \end{macro}
%
% \begin{macrocode}
-%</pdfmode>
+%</luatex|pdftex>
% \end{macrocode}
%
% \subsection{\texttt{dvipdfmx} backend}
%
% \begin{macrocode}
-%<*dvipdfmx|xdvipdfmx>
+%<*dvipdfmx|xetex>
% \end{macrocode}
%
% \begin{macro}
@@ -326,7 +326,7 @@
% \begin{macro}{\@@_backend_include_auxii:nnn, \@@_backend_include_auxii:xnn}
% \begin{macro}{\@@_backend_include_auxiii:nnn}
% The special syntax depends on the file type. There is a difference in
-% how PDF graphics are best handled between |dvipdfmx| and |xdvipdfmx|: for
+% how PDF graphics are best handled between |dvipdfmx| and \XeTeX{}: for
% the latter it is better to use the primitive route. The relevant code for
% that is included later in this file.
% \begin{macrocode}
@@ -425,13 +425,13 @@
% \end{macro}
%
% \begin{macrocode}
-%</dvipdfmx|xdvipdfmx>
+%</dvipdfmx|xetex>
% \end{macrocode}
%
-% \subsection{\texttt{xdvipdfmx} backend}
+% \subsection{\XeTeX{} backend}
%
% \begin{macrocode}
-%<*xdvipdfmx>
+%<*xetex>
% \end{macrocode}
%
% \subsubsection{Images}
@@ -448,7 +448,7 @@
% \begin{macro}{\@@_backend_getbb_auxiv:nnNnn, \@@_backend_getbb_auxiv:VnNnn}
% \begin{macro}{\@@_backend_getbb_auxv:nNnn, \@@_backend_getbb_auxv:nNnn}
% \begin{macro}[EXP]{\@@_backend_getbb_pagebox:w}
-% For \texttt{xdvipdfmx}, there are two primitives that allow us to obtain
+% For \XeTeX{}, there are two primitives that allow us to obtain
% the bounding box without needing \texttt{extractbb}. The only complexity
% is passing the various minor variations to a common core process. The
% \XeTeX{} primitive omits the text |box| from the page box specification,
@@ -536,7 +536,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</xdvipdfmx>
+%</xetex>
% \end{macrocode}
%
% \subsection{\texttt{dvisvgm} backend}
Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx 2020-09-02 21:34:30 UTC (rev 56243)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx 2020-09-02 21:36:32 UTC (rev 56244)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
%
% \maketitle
%
@@ -67,6 +67,16 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{TeXcolorsetspotcolor, setspotcolor}
+% Support for separation/spot colors: this strange naming is so
+% things work with the color stack.
+% \begin{macrocode}
+TeXDict begin
+/TeXcolorsetspotcolor { setcustomcolor } def
+end
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{pdf.globaldict}
% A small global dictionary for backend use.
% \begin{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx 2020-09-02 21:34:30 UTC (rev 56243)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx 2020-09-02 21:36:32 UTC (rev 56244)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
%
% \maketitle
%
@@ -744,10 +744,10 @@
%</dvips>
% \end{macrocode}
%
-% \subsection{\texttt{pdfmode} backend}
+% \subsection{\LuaTeX{} and \pdfTeX{} backend}
%
% \begin{macrocode}
-%<*pdfmode>
+%<*luatex|pdftex>
% \end{macrocode}
%
% \subsubsection{Annotations}
@@ -755,14 +755,17 @@
% \begin{macro}{\@@_backend_annotation:nnnn}
% Simply pass the raw data through, just dealing with evaluation of dimensions.
% \begin{macrocode}
-\cs_new_protected:Npx \@@_backend_annotation:nnnn #1#2#3#4
+\cs_new_protected:Npn \@@_backend_annotation:nnnn #1#2#3#4
{
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D annot ~ }
- { \tex_pdfannot:D }
- width ~ \exp_not:N \dim_eval:n {#1} ~
- height ~ \exp_not:N \dim_eval:n {#2} ~
- depth ~ \exp_not:N \dim_eval:n {#3} ~
+%<*luatex>
+ \tex_pdfextension:D annot ~
+%</luatex>
+%<*pdftex>
+ \tex_pdfannot:D
+%</pdftex>
+ width ~ \dim_eval:n {#1} ~
+ height ~ \dim_eval:n {#2} ~
+ depth ~ \dim_eval:n {#3} ~
{#4}
}
% \end{macrocode}
@@ -769,14 +772,18 @@
% \end{macro}
%
% \begin{macro}[EXP]{\@@_backend_annotation_last:}
-% A tiny amount of extra data gets added here.
+% A tiny amount of extra data gets added here; we use \texttt{x}-type
+% expansion to get the space in the right place and form.
% \begin{macrocode}
\cs_new:Npx \@@_backend_annotation_last:
{
\exp_not:N \int_value:w
- \cs_if_exist:NTF \tex_pdffeedback:D
- { \exp_not:N \tex_pdffeedback:D lastannot ~ }
- { \exp_not:N \tex_pdflastannot:D }
+%<*luatex>
+ \exp_not:N \tex_pdffeedback:D lastannot
+%</luatex>
+%<*pdftex>
+ \exp_not:N \tex_pdfannot:D
+%</pdftex>
\c_space_tl 0 ~ R
}
% \end{macrocode}
@@ -792,19 +799,25 @@
{ \@@_backend_link_begin:nnnw {#1} { goto~name } {#2} }
\cs_new_protected:Npn \@@_backend_link_begin_user:nnw #1#2
{ \@@_backend_link_begin:nnnw {#1} { user } {#2} }
-\cs_new_protected:Npx \@@_backend_link_begin:nnnw #1#2#3
+\cs_new_protected:Npn \@@_backend_link_begin:nnnw #1#2#3
{
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D startlink ~ }
- { \tex_pdfstartlink:D }
- attr {#1}
- #2 {#3}
+%<*luatex>
+ \tex_pdfextension:D startlink ~
+%</luatex>
+%<*pdftex>
+ \tex_pdfstartlink:D
+%</pdftex>
+ attr {#1}
+ #2 {#3}
}
-\cs_new_protected:Npx \@@_backend_link_end:
+\cs_new_protected:Npn \@@_backend_link_end:
{
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D endlink \scan_stop: }
- { \tex_pdfendlink:D }
+%<*luatex>
+ \tex_pdfextension:D endlink \scan_stop:
+%</luatex>
+%<*pdftex>
+ \tex_pdfendlink:D
+%</pdftex>
}
% \end{macrocode}
% \end{macro}
@@ -817,9 +830,12 @@
\cs_new:Npx \@@_backend_link_last:
{
\exp_not:N \int_value:w
- \cs_if_exist:NTF \tex_pdffeedback:D
- { \exp_not:N \tex_pdffeedback:D lastlink ~ }
- { \exp_not:N \tex_pdflastlink:D }
+%<*luatex>
+ \exp_not:N \tex_pdffeedback:D lastlink
+%</luatex>
+%<*pdftex>
+ \exp_not:N \tex_pdflastlink:D
+%</pdftex>
\c_space_tl 0 ~ R
}
% \end{macrocode}
@@ -828,12 +844,15 @@
% \begin{macro}{\@@_backend_link_margin:n}
% A simple task: pass the data to the primitive.
% \begin{macrocode}
-\cs_new_protected:Npx \@@_backend_link_margin:n #1
+\cs_new_protected:Npn \@@_backend_link_margin:n #1
{
- \cs_if_exist:NTF \tex_pdfvariable:D
- { \exp_not:N \tex_pdfvariable:D linkmargin }
- { \exp_not:N \tex_pdflinkmargin:D }
- \exp_not:N \dim_eval:n {#1} \scan_stop:
+%<*luatex>
+ \tex_pdfvariable:D linkmargin
+%</luatex>
+%<*pdftex>
+ \tex_pdflinkmargin:D
+%</pdftex>
+ \dim_eval:n {#1} \scan_stop:
}
% \end{macrocode}
% \end{macro}
@@ -844,13 +863,16 @@
% percentage, but we need to pass it as \emph{per mille}. The rectangle
% version is also easy as everything is build in.
% \begin{macrocode}
-\cs_new_protected:Npx \@@_backend_destination:nn #1#2
+\cs_new_protected:Npn \@@_backend_destination:nn #1#2
{
- \cs_if_exist:NTF \tex_pdfextension:D
- { \exp_not:N \tex_pdfextension:D dest ~ }
- { \exp_not:N \tex_pdfdest:D }
+%<*luatex>
+ \tex_pdfextension:D dest ~
+%</luatex>
+%<*pdftex>
+ \tex_pdfdest:D
+%</pdftex>
name {#1}
- \exp_not:N \str_case:nnF {#2}
+ \str_case:nnF {#2}
{
{ xyz } { xyz }
{ fit } { fit }
@@ -860,21 +882,24 @@
{ fith } { fith }
{ fitv } { fitv }
}
- { xyz ~ zoom \exp_not:N \fp_eval:n { #2 * 10 } }
+ { xyz ~ zoom \fp_eval:n { #2 * 10 } }
\scan_stop:
}
-\cs_new_protected:Npx \@@_backend_destination_box:nn #1#2
+\cs_new_protected:Npn \@@_backend_destination_box:nn #1#2
{
\group_begin:
\hbox_set:Nn \l_@@_internal_box {#2}
- \cs_if_exist:NTF \tex_pdfextension:D
- { \exp_not:N \tex_pdfextension:D dest ~ }
- { \exp_not:N \tex_pdfdest:D }
+%<*luatex>
+ \tex_pdfextension:D dest ~
+%</luatex>
+%<*pdftex>
+ \tex_pdfdest:D
+%</pdftex>
name {#1}
fitr ~
- width \exp_not:N \box_wd:N \l_@@_internal_box
- height \exp_not:N \box_ht:N \l_@@_internal_box
- depth \exp_not:N \box_dp:N \l_@@_internal_box
+ width \box_wd:N \l_@@_internal_box
+ height \box_ht:N \l_@@_internal_box
+ depth \box_dp:N \l_@@_internal_box
\box_use:N \l_@@_internal_box
\group_end:
}
@@ -885,19 +910,25 @@
%
% \begin{macro}{\@@_backend_catalog_gput:nn, \@@_backend_info_gput:nn}
% \begin{macrocode}
-\cs_new_protected:Npx \@@_backend_catalog_gput:nn #1#2
+\cs_new_protected:Npn \@@_backend_catalog_gput:nn #1#2
{
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D catalog }
- { \tex_pdfcatalog:D }
- { / #1 ~ #2 }
+%<*luatex>
+ \tex_pdfextension:D catalog
+%</luatex>
+%<*pdftex>
+ \tex_pdfcatalog:D
+%</pdftex>
+ { / #1 ~ #2 }
}
-\cs_new_protected:Npx \@@_backend_info_gput:nn #1#2
+\cs_new_protected:Npn \@@_backend_info_gput:nn #1#2
{
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D info }
- { \tex_pdfinfo:D }
- { / #1 ~ #2 }
+%<*luatex>
+ \tex_pdfextension:D info
+%</luatex>
+%<*pdftex>
+ \tex_pdfinfo:D
+%</pdftex>
+ { / #1 ~ #2 }
}
% \end{macrocode}
% \end{macro}
@@ -916,26 +947,25 @@
% Declaring objects means reserving at the PDF level plus starting
% tracking.
% \begin{macrocode}
-\group_begin:
- \cs_set_protected:Npn \@@_tmp:w #1#2
- {
- \cs_new_protected:Npx \@@_backend_object_new:nn ##1##2
- {
- #1 reserveobjnum ~
- \int_const:cn
- { c_@@_backend_object_ \exp_not:N \tl_to_str:n {##1} _int }
- {#2}
- \prop_gput:Nnn \exp_not:N \g_@@_backend_object_prop {##1} {##2}
- }
- }
- \cs_if_exist:NTF \tex_pdfextension:D
- {
- \@@_tmp:w
- { \tex_pdfextension:D obj ~ }
- { \exp_not:N \tex_pdffeedback:D lastobj }
- }
- { \@@_tmp:w { \tex_pdfobj:D } { \tex_pdflastobj:D } }
-\group_end:
+\cs_new_protected:Npn \@@_backend_object_new:nn #1#2
+ {
+%<*luatex>
+ \tex_pdfextension:D obj ~
+%</luatex>
+%<*pdftex>
+ \tex_pdfobj:D
+%</pdftex>
+ reserveobjnum ~
+ \int_const:cn
+ { c_@@_backend_object_ \tl_to_str:n {#1} _int }
+%<*luatex>
+ { \tex_pdffeedback:D lastobj }
+%</luatex>
+%<*pdftex>
+ { \tex_pdflastobj:D }
+%</pdftex>
+ \prop_gput:Nnn \exp_not:N \g_@@_backend_object_prop {#1} {#2}
+ }
\cs_new:Npn \@@_backend_object_ref:n #1
{ \int_use:c { c_@@_backend_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R }
% \end{macrocode}
@@ -947,36 +977,34 @@
% Writing the data needs a little information about the structure of the
% object.
% \begin{macrocode}
-\group_begin:
- \cs_set_protected:Npn \@@_tmp:w #1
- {
- \cs_new_protected:Npn \@@_backend_object_write:nn ##1##2
+\cs_new_protected:Npn \@@_backend_object_write:nn #1#2
+ {
+%<*luatex>
+ \tex_immediate:D \tex_pdfextension:D obj ~
+%</luatex>
+%<*pdftex>
+ \tex_immediate:D \tex_pdfobj:D
+%</pdftex>
+ useobjnum ~
+ \int_use:c
+ { c_@@_backend_object_ \tl_to_str:n {#1} _int }
+ \str_case_e:nn
+ { \prop_item:Nn \g_@@_backend_object_prop {#1} }
{
- \tex_immediate:D #1 useobjnum ~
- \int_use:c
- { c_@@_backend_object_ \tl_to_str:n {##1} _int }
- \str_case_e:nn
- { \prop_item:Nn \g_@@_backend_object_prop {##1} }
- {
- { array } { { [ ~ \exp_not:n {##2} ~ ] } }
- { dict } { { << ~ \exp_not:n {##2} ~ >> } }
- { fstream }
- {
- stream ~ attr ~ { \@@_exp_not_i:nn ##2 } ~
- file ~ { \@@_exp_not_ii:nn ##2 }
- }
- { stream }
- {
- stream ~ attr ~ { \@@_exp_not_i:nn ##2 } ~
- { \@@_exp_not_ii:nn ##2 }
- }
- }
+ { array } { { [ ~ \exp_not:n {#2} ~ ] } }
+ { dict } { { << ~ \exp_not:n {#2} ~ >> } }
+ { fstream }
+ {
+ stream ~ attr ~ { \@@_exp_not_i:nn #2 } ~
+ file ~ { \@@_exp_not_ii:nn #2 }
+ }
+ { stream }
+ {
+ stream ~ attr ~ { \@@_exp_not_i:nn #2 } ~
+ { \@@_exp_not_ii:nn #2 }
+ }
}
- }
- \cs_if_exist:NTF \tex_pdfextension:D
- { \@@_tmp:w { \tex_pdfextension:D obj ~ } }
- { \@@_tmp:w { \tex_pdfobj:D } }
-\group_end:
+ }
\cs_generate_variant:Nn \@@_backend_object_write:nn { nx }
\cs_new:Npn \@@_exp_not_i:nn #1#2 { \exp_not:n {#1} }
\cs_new:Npn \@@_exp_not_ii:nn #1#2 { \exp_not:n {#2} }
@@ -987,34 +1015,31 @@
% \begin{macro}{\@@_backend_object_now:nn, \@@_backend_object_now:nx}
% Much like writing, but direct creation.
% \begin{macrocode}
-\group_begin:
- \cs_set_protected:Npn \@@_tmp:w #1
- {
- \cs_new_protected:Npn \@@_backend_object_now:nn ##1##2
+\cs_new_protected:Npn \@@_backend_object_now:nn #1#2
+ {
+%<*luatex>
+ \tex_immediate:D \tex_pdfextension:D obj ~
+%</luatex>
+%<*pdftex>
+ \tex_immediate:D \tex_pdfobj:D
+%</pdftex>
+ \str_case:nn
+ {#1}
{
- \tex_immediate:D #1
- \str_case:nn
- {##1}
- {
- { array } { { [ ~ \exp_not:n {##2} ~ ] } }
- { dict } { { << ~ \exp_not:n {##2} ~ >> } }
- { fstream }
- {
- stream ~ attr ~ { \@@_exp_not_i:nn ##2 } ~
- file ~ { \@@_exp_not_ii:nn ##2 }
- }
- { stream }
- {
- stream ~ attr ~ { \@@_exp_not_i:nn ##2 } ~
- { \@@_exp_not_ii:nn ##2 }
- }
- }
+ { array } { { [ ~ \exp_not:n {#2} ~ ] } }
+ { dict } { { << ~ \exp_not:n {#2} ~ >> } }
+ { fstream }
+ {
+ stream ~ attr ~ { \@@_exp_not_i:nn #2 } ~
+ file ~ { \@@_exp_not_ii:nn #2 }
+ }
+ { stream }
+ {
+ stream ~ attr ~ { \@@_exp_not_i:nn #2 } ~
+ { \@@_exp_not_ii:nn #2 }
+ }
}
- }
- \cs_if_exist:NTF \tex_pdfextension:D
- { \@@_tmp:w { \tex_pdfextension:D obj ~ } }
- { \@@_tmp:w { \tex_pdfobj:D } }
-\group_end:
+ }
\cs_generate_variant:Nn \@@_backend_object_now:nn { nx }
% \end{macrocode}
% \end{macro}
@@ -1025,9 +1050,12 @@
\cs_new:Npx \@@_backend_object_last:
{
\exp_not:N \int_value:w
- \cs_if_exist:NTF \tex_pdffeedback:D
- { \exp_not:N \tex_pdffeedback:D lastobj ~ }
- { \exp_not:N \tex_pdflastobj:D }
+%<*luatex>
+ \exp_not:N \tex_pdffeedback:D lastobj ~
+%</luatex>
+%<*pdftex>
+ \exp_not:N \tex_pdflastobj:D
+%</pdftex>
\c_space_tl 0 ~ R
}
% \end{macrocode}
@@ -1034,14 +1062,17 @@
% \end{macro}
%
% \begin{macro}[EXP]{\@@_backend_pageobject_ref:n}
-% The usual wrapper situation.
+% The usual wrapper situation; the three spaces here are essential.
% \begin{macrocode}
\cs_new:Npx \@@_backend_pageobject_ref:n #1
{
\exp_not:N \int_value:w
- \cs_if_exist:NTF \tex_pdffeedback:D
- { \exp_not:N \tex_pdffeedback:D pageref }
- { \exp_not:N \tex_pdfpageref:D }
+%<*luatex>
+ \exp_not:N \tex_pdffeedback:D pageref
+%</luatex>
+%<*pdftex>
+ \exp_not:N \tex_pdfpageref:D
+%</pdftex>
\c_space_tl #1 \c_space_tl \c_space_tl \c_space_tl 0 ~ R
}
% \end{macrocode}
@@ -1054,13 +1085,16 @@
% \begin{macro}{\@@_backend_objcompresslevel:n}
% Simply pass data to the engine.
% \begin{macrocode}
-\cs_new_protected:Npx \@@_backend_compresslevel:n #1
+\cs_new_protected:Npn \@@_backend_compresslevel:n #1
{
- \exp_not:N \tex_global:D
- \cs_if_exist:NTF \tex_pdfcompresslevel:D
- { \tex_pdfcompresslevel:D }
- { \tex_pdfvariable:D compresslevel }
- \exp_not:N \int_value:w \exp_not:N \int_eval:n {#1} \scan_stop:
+ \tex_global:D
+%<*luatex>
+ \tex_pdfvariable:D compresslevel
+%</luatex>
+%<*pdftex>
+ \tex_pdfcompresslevel:D
+%</pdftex>
+ \int_value:w \int_eval:n {#1} \scan_stop:
}
\cs_new_protected:Npn \@@_backend_compress_objects:n #1
{
@@ -1068,13 +1102,16 @@
{ \@@_backend_objcompresslevel:n { 2 } }
{ \@@_backend_objcompresslevel:n { 0 } }
}
-\cs_new_protected:Npx \@@_backend_objcompresslevel:n #1
+\cs_new_protected:Npn \@@_backend_objcompresslevel:n #1
{
- \exp_not:N \tex_global:D
- \cs_if_exist:NTF \tex_pdfobjcompresslevel:D
- { \tex_pdfobjcompresslevel:D }
- { \tex_pdfvariable:D objcompresslevel }
- #1 \scan_stop:
+ \tex_global:D
+%<*luatex>
+ \tex_pdfvariable:D objcompresslevel
+%</luatex>
+%<*pdftex>
+ \tex_pdfobjcompresslevel:D
+%</pdftex>
+ #1 \scan_stop:
}
% \end{macrocode}
% \end{macro}
@@ -1083,61 +1120,65 @@
%
% \begin{macro}
% {\@@_backend_version_major_gset:n, \@@_backend_version_minor_gset:n}
-% At present, we don't have a primitive for the major version in \pdfTeX{},
-% but we anticipate one \ldots
+% The availability of the primitive is not universal, so we have to test
+% at load time.
% \begin{macrocode}
\cs_new_protected:Npx \@@_backend_version_major_gset:n #1
{
- \cs_if_exist:NTF \tex_pdfvariable:D
+%<*luatex>
+ \int_compare:nNnT \tex_luatexversion:D > { 106 }
{
- \int_compare:nNnT \tex_luatexversion:D > { 106 }
- {
- \exp_not:N \tex_global:D \tex_pdfvariable:D majorversion
- \exp_not:N \int_eval:n {#1} \scan_stop:
- }
+ \exp_not:N \tex_global:D \tex_pdfvariable:D majorversion
+ \exp_not:N \int_eval:n {#1} \scan_stop:
}
+%</luatex>
+%<*pdftex>
+ \cs_if_exist:NT \tex_pdfmajorversion:D
{
- \cs_if_exist:NT \tex_pdfmajorversion:D
- {
- \exp_not:N \tex_global:D \tex_pdfmajorversion:D
- \exp_not:N \int_eval:n {#1} \scan_stop:
- }
+ \exp_not:N \tex_global:D \tex_pdfmajorversion:D
+ \exp_not:N \int_eval:n {#1} \scan_stop:
}
+%</pdftex>
}
-\cs_new_protected:Npx \@@_backend_version_minor_gset:n #1
+\cs_new_protected:Npn \@@_backend_version_minor_gset:n #1
{
- \exp_not:N \tex_global:D
- \cs_if_exist:NTF \tex_pdfminorversion:D
- { \exp_not:N \tex_pdfminorversion:D }
- { \tex_pdfvariable:D minorversion }
- \exp_not:N \int_eval:n {#1} \scan_stop:
+ \tex_global:D
+%<*luatex>
+ \tex_pdfvariable:D minorversion
+%</luatex>
+%<*pdftex>
+ \tex_pdfminorversion:D
+%</pdftex>
+ \int_eval:n {#1} \scan_stop:
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}[EXP]{\@@_backend_version_major:, \@@_backend_version_minor:}
-% At present, we don't have a primitive for the major version!
+% As above.
% \begin{macrocode}
\cs_new:Npx \@@_backend_version_major:
{
- \cs_if_exist:NTF \tex_pdfvariable:D
- {
- \int_compare:nNnTF \tex_luatexversion:D > { 106 }
- { \exp_not:N \tex_the:D \tex_pdfvariable:D majorversion }
- { 1 }
- }
- {
- \cs_if_exist:NTF \tex_pdfmajorversion:D
- { \exp_not:N \tex_the:D \tex_pdfmajorversion:D }
- { 1 }
- }
+%<*luatex>
+ \int_compare:nNnTF \tex_luatexversion:D > { 106 }
+ { \exp_not:N \tex_the:D \tex_pdfvariable:D majorversion }
+ { 1 }
+%</luatex>
+%<*pdftex>
+ \cs_if_exist:NTF \tex_pdfmajorversion:D
+ { \exp_not:N \tex_the:D \tex_pdfmajorversion:D }
+ { 1 }
+%</pdftex>
}
-\cs_new:Npx \@@_backend_version_minor:
+\cs_new:Npn \@@_backend_version_minor:
{
- \exp_not:N \tex_the:D
- \cs_if_exist:NTF \tex_pdfminorversion:D
- { \exp_not:N \tex_pdfminorversion:D }
- { \tex_pdfvariable:D minorversion }
+ \tex_the:D
+%<*luatex>
+ \tex_pdfvariable:D minorversion
+%</luatex>
+%<*pdftex>
+ \tex_pdfminorversion:D
+%</pdftex>
}
% \end{macrocode}
% \end{macro}
@@ -1158,13 +1199,13 @@
% \end{macro}
%
% \begin{macrocode}
-%</pdfmode>
+%</luatex|pdftex>
% \end{macrocode}
%
% \subsection{\texttt{dvipdfmx} backend}
%
% \begin{macrocode}
-%<*dvipdfmx|xdvipdfmx>
+%<*dvipdfmx|xetex>
% \end{macrocode}
%
% \begin{macro}{\@@_backend:n, \@@_backend:x}
@@ -1290,7 +1331,7 @@
% \end{macro}
%
% \begin{macro}[EXP]{\@@_backend_pageobject_ref:n}
-% Page references are easy in \texttt{(x)dvipdfmx}.
+% Page references are easy in \texttt{dvipdfmx}/\XeTeX{}.
% \begin{macrocode}
\cs_new:Npn \@@_backend_pageobject_ref:n #1
{ @page #1 }
@@ -1300,7 +1341,7 @@
% \subsubsection{Annotations}
%
% \begin{variable}{\g_@@_landscape_bool}
-% There is a bug in \texttt{(x)dvipdfmx} which means annotations do
+% There is a bug in \texttt{dvipdfmx}/\XeTeX{} which means annotations do
% not rotate. As such, we need to know if landscape is active.
% \begin{macrocode}
\bool_new:N \g_@@_landscape_bool
@@ -1524,7 +1565,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</dvipdfmx|xdvipdfmx>
+%</dvipdfmx|xetex>
% \end{macrocode}
%
% \subsection{\texttt{dvisvgm} backend}
Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend.ins 2020-09-02 21:34:30 UTC (rev 56243)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend.ins 2020-09-02 21:36:32 UTC (rev 56244)
@@ -96,27 +96,39 @@
}
\generate
{
- \file{l3backend-pdfmode.def}
+ \file{l3backend-luatex.def}
{
- \from{l3backend-basics.dtx} {package,pdfmode}
- \from{l3backend-color.dtx} {package,pdfmode}
- \from{l3backend-box.dtx} {package,pdfmode}
- \from{l3backend-draw.dtx} {package,pdfmode}
- \from{l3backend-graphics.dtx}{package,pdfmode}
- \from{l3backend-pdf.dtx} {package,pdfmode}
+ \from{l3backend-basics.dtx} {package,luatex}
+ \from{l3backend-color.dtx} {package,luatex}
+ \from{l3backend-box.dtx} {package,luatex}
+ \from{l3backend-draw.dtx} {package,luatex}
+ \from{l3backend-graphics.dtx}{package,luatex}
+ \from{l3backend-pdf.dtx} {package,luatex}
}
}
\generate
{
- \file{l3backend-xdvipdfmx.def}
+ \file{l3backend-pdftex.def}
{
- \from{l3backend-basics.dtx} {package,xdvipdfmx}
- \from{l3backend-color.dtx} {package,xdvipdfmx}
- \from{l3backend-box.dtx} {package,xdvipdfmx}
- \from{l3backend-draw.dtx} {package,xdvipdfmx}
- \from{l3backend-graphics.dtx}{package,xdvipdfmx}
- \from{l3backend-pdf.dtx} {package,xdvipdfmx}
+ \from{l3backend-basics.dtx} {package,pdftex}
+ \from{l3backend-color.dtx} {package,pdftex}
+ \from{l3backend-box.dtx} {package,pdftex}
+ \from{l3backend-draw.dtx} {package,pdftex}
+ \from{l3backend-graphics.dtx}{package,pdftex}
+ \from{l3backend-pdf.dtx} {package,pdftex}
}
}
+\generate
+ {
+ \file{l3backend-xetex.def}
+ {
+ \from{l3backend-basics.dtx} {package,xetex}
+ \from{l3backend-color.dtx} {package,xetex}
+ \from{l3backend-box.dtx} {package,xetex}
+ \from{l3backend-draw.dtx} {package,xetex}
+ \from{l3backend-graphics.dtx}{package,xetex}
+ \from{l3backend-pdf.dtx} {package,xetex}
+ }
+ }
\endbatchfile
Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def 2020-09-02 21:34:30 UTC (rev 56243)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def 2020-09-02 21:36:32 UTC (rev 56244)
@@ -25,8 +25,22 @@
%%
%% File: l3backend-basics.dtx
\ProvidesExplFile
- {l3backend-dvipdfmx.def}{2020-08-07}{}
+ {l3backend-dvipdfmx.def}{2020-09-01}{}
{L3 backend support: dvipdfmx}
+\cs_if_exist:NTF \__kernel_dependency_version_check:nn
+ {
+ \__kernel_dependency_version_check:nn {2020-09-01}
+ {l3backend-dvipdfmx.def}
+ }
+ {
+ \cs_if_exist_use:cF { @latex at error } { \errmessage }
+ {
+ Mismatched~LaTeX~support~files~detected. \MessageBreak
+ Loading~aborted!
+ }
+ { \use:c { @ehd } }
+ \tex_endinput:D
+ }
\cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D
\cs_new_protected:Npn \__kernel_backend_literal:n #1
{ \__kernel_backend_literal:e { \exp_not:n {#1} } }
@@ -41,6 +55,15 @@
\cs_new_protected:Npn \__kernel_backend_scope_end:
{ \__kernel_backend_literal:n { x:grestore } }
%% File: l3backend-color.dtx
+\cs_new_protected:Npn \__color_backend_select_cmyk:n #1
+ {
+ \__kernel_backend_literal:n { pdf: bc ~ [#1] }
+ \group_insert_after:N \__color_backend_reset:
+ }
+\cs_new_eq:NN \__color_backend_select_gray:n \__color_backend_select_cmyk:n
+\cs_new_eq:NN \__color_backend_select_rgb:n \__color_backend_select_cmyk:n
+\cs_new_protected:Npn \__color_backend_reset:
+ { \__kernel_backend_literal:n { pdf: ec } }
\cs_new_protected:Npn \__color_backend_pickup:N #1 { }
\cs_if_exist:cT { ver at color.sty }
{
@@ -62,21 +85,59 @@
\cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3
{ \tl_set:Nn #3 { {#1} {#2} } }
}
-\cs_new_protected:Npn \__color_backend_select_cmyk:n #1
- { \__color_backend_select:n { cmyk ~ #1 } }
-\cs_new_protected:Npn \__color_backend_select_gray:n #1
- { \__color_backend_select:n { gray ~ #1 } }
-\cs_new_protected:Npn \__color_backend_select_rgb:n #1
- { \__color_backend_select:n { rgb ~ #1 } }
-\cs_new_protected:Npn \__color_backend_select:n #1
+\cs_new_protected:Npn \__color_backend_select_separation:nn #1#2
+ { \__color_backend_select:n { @#1 ~ [#2] } }
+\cs_new_protected:Npn \__color_backend_separation_init:nnnnn #1#2#3#4#5
{
- \__kernel_backend_literal:n { color~push~ #1 }
- \group_insert_after:N \__color_backend_reset:
+ \__color_backend_separation_init:n
+ {
+ /Separation
+ / \str_convert_pdfname:n {#1} ~ #2 ~
+ <<
+ /FunctionType ~ 2
+ /Domain ~ [0 ~ 1]
+ \tl_if_blank:nF {#3} { /Range ~ [#3] }
+ /C0 ~ [#4] ~
+ /C1 ~ [#5] /N ~ 1
+ >>
+ }
}
-\cs_new_protected:Npn \__color_backend_reset:
- { \__kernel_backend_literal:n { color~pop } }
-\cs_new_protected:Npn \__color_backend_select_separation:nn #1#2
- { \__color_backend_select:n {#1} }
+\cs_if_exist:NF \pdf_object_now:nn
+ { \cs_gset_protected:Npn \__color_backend_separation_init:nnnnn #1#2#3#4#5 { } }
+\cs_new_protected:Npn \__color_backend_separation_init:n #1
+ {
+ \__kernel_backend_literal:x
+ {
+ pdf:obj ~ @ color \int_use:N \g__color_separation_int \c_space_tl
+ [#1]
+ }
+ }
+\cs_new_protected:Npn \__color_backend_separation_init_cielab:nnnnn #1#2#3#4#5
+ {
+ \__color_backend_separation_init:nnnnn
+ {#2}
+ { \pdf_object_ref:n { __color_illuminant_cielab_ #1 } }
+ { \c__color_model_range_lab_tl }
+ { 100 ~ 0 ~ 0 }
+ { #3 ~ #4 ~ #5 }
+ }
+\cs_if_exist:NF \pdf_object_now:nn
+ { \cs_gset_protected:Npn \__color_backend_separation_init_cielab:nnnnn #1#2#3#4#5 { } }
+\cs_new_protected:Npn \__color_backend_separation_init_cielab:n #1
+ {
+ \pdf_object_new:nn { __color_illuminant_cielab_ #1 } { array }
+ \pdf_object_write:nx { __color_illuminant_cielab_ #1 }
+ {
+ /Lab ~
+ <<
+ /WhitePoint ~
+ [ \tl_use:c { c__color_model_whitepoint_cielab_ #1 _tl } ]
+ /Range ~ [ \c__color_model_range_lab_tl ]
+ >>
+ }
+ }
+\cs_if_exist:NF \pdf_object_new:nn
+ { \cs_gset_protected:Npn \__color_backend_separation_init_cielab:n #1 { } }
\cs_new_protected:Npn \__color_backend_fill_cmyk:n #1
{ \__kernel_backend_literal_pdf:n { #1 ~ k } }
\cs_new_protected:Npn \__color_backend_fill_gray:n #1
Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def 2020-09-02 21:34:30 UTC (rev 56243)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def 2020-09-02 21:36:32 UTC (rev 56244)
@@ -25,8 +25,22 @@
%%
%% File: l3backend-basics.dtx
\ProvidesExplFile
- {l3backend-dvips.def}{2020-08-07}{}
+ {l3backend-dvips.def}{2020-09-01}{}
{L3 backend support: dvips}
+\cs_if_exist:NTF \__kernel_dependency_version_check:nn
+ {
+ \__kernel_dependency_version_check:nn {2020-09-01}
+ {l3backend-dvips.def}
+ }
+ {
+ \cs_if_exist_use:cF { @latex at error } { \errmessage }
+ {
+ Mismatched~LaTeX~support~files~detected. \MessageBreak
+ Loading~aborted!
+ }
+ { \use:c { @ehd } }
+ \tex_endinput:D
+ }
\cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D
\cs_new_protected:Npn \__kernel_backend_literal:n #1
{ \__kernel_backend_literal:e { \exp_not:n {#1} } }
@@ -37,15 +51,13 @@
\cs_new_protected:Npn \__kernel_backend_postscript:n #1
{ \__kernel_backend_literal:n { ps: SDict ~ begin ~ #1 ~ end } }
\cs_generate_variant:Nn \__kernel_backend_postscript:n { x }
-\cs_if_exist:NTF \AtBeginDvi
- { \AtBeginDvi }
- { \use:n }
- {
- \bool_lazy_and:nnT
- { \cs_if_exist_p:N \g__kernel_backend_header_bool }
- { \g__kernel_backend_header_bool }
+\bool_if:NT \g__kernel_backend_header_bool
+ {
+ \cs_if_exist:NTF \AtBeginDvi
+ { \AtBeginDvi }
+ { \use:n }
{ \__kernel_backend_literal:n { header = l3backend-dvips.pro } }
- }
+ }
\cs_new_protected:Npn \__kernel_backend_align_begin:
{
\__kernel_backend_literal:n { ps::[begin] }
@@ -99,7 +111,40 @@
\cs_new_protected:Npn \__color_backend_reset:
{ \__kernel_backend_literal:n { color~pop } }
\cs_new_protected:Npn \__color_backend_select_separation:nn #1#2
- { \__color_backend_select:n {#1} }
+ { \__color_backend_select:n { setspotcolor ~ #1 ~ #2 } }
+\cs_new_protected:Npx \__color_backend_separation_init:nnnnn #1#2#3#4#5
+ {
+ \bool_if:NT \g__kernel_backend_header_bool
+ {
+ \cs_if_exist:NTF \AtBeginDvi
+ { \AtBeginDvi }
+ { \use:n }
+ {
+ \exp_not:N \__color_backend_separation_init:nnn
+ {#1} {#2} {#5}
+ }
+ }
+ }
+\cs_new_protected:Npn \__color_backend_separation_init:nnn #1#2#3
+ {
+ \__kernel_backend_literal:e
+ {
+ !
+ TeXDict ~ begin ~
+ /color \int_use:N \g__color_separation_int \c_space_tl
+ [#3] ~ aload ~ pop ~ ( \str_convert_pdfname:n {#1} ) ~
+ find \__color_backend_separation_init:n {#2} customcolor ~ def ~
+ end
+ }
+ }
+\cs_new:Npn \__color_backend_separation_init:n #1
+ {
+ \__color_backend_separation_init:w #1 /Device #1 /Device \s__color_stop
+ }
+\cs_new:Npn \__color_backend_separation_init:w #1 /Device #2 /Device #3 \s__color_stop
+ { \str_lowercase:n {#2} }
+\cs_new_protected:Npn \__color_backend_separation_init_cielab:nnnnn #1#2#3#4#5 { }
+\cs_new_protected:Npn \__color_backend_separation_init_cielab:n #1 { }
\cs_new_protected:Npn \__color_backend_fill_cmyk:n #1
{ \__kernel_backend_postscript:n { /color.fc { #1 ~ setcmykcolor } def } }
\cs_new_protected:Npn \__color_backend_fill_gray:n #1
Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def 2020-09-02 21:34:30 UTC (rev 56243)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def 2020-09-02 21:36:32 UTC (rev 56244)
@@ -25,8 +25,22 @@
%%
%% File: l3backend-basics.dtx
\ProvidesExplFile
- {l3backend-dvisvgm.def}{2020-08-07}{}
+ {l3backend-dvisvgm.def}{2020-09-01}{}
{L3 backend support: dvisvgm}
+\cs_if_exist:NTF \__kernel_dependency_version_check:nn
+ {
+ \__kernel_dependency_version_check:nn {2020-09-01}
+ {l3backend-dvisvgm.def}
+ }
+ {
+ \cs_if_exist_use:cF { @latex at error } { \errmessage }
+ {
+ Mismatched~LaTeX~support~files~detected. \MessageBreak
+ Loading~aborted!
+ }
+ { \use:c { @ehd } }
+ \tex_endinput:D
+ }
\cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D
\cs_new_protected:Npn \__kernel_backend_literal:n #1
{ \__kernel_backend_literal:e { \exp_not:n {#1} } }
@@ -106,8 +120,10 @@
}
\cs_new_protected:Npn \__color_backend_reset:
{ \__kernel_backend_literal:n { color~pop } }
-\cs_new_protected:Npn \__color_backend_select_separation:nn #1#2
- { \__color_backend_select:n {#1} }
+\cs_new_protected:Npn \__color_backend_select_separation:nn #1#2 { }
+\cs_new_protected:Npn \__color_backend_separation_init:nnnnn #1#2#3#4#5 { }
+\cs_new_protected:Npn \__color_backend_separation_init_cielab:nnnnn #1#2#3#4#5 { }
+\cs_new_protected:Npn \__color_backend_separation_init_cielab:n #1 { }
\cs_new_protected:Npn \__color_backend_fill_cmyk:n #1
{ \__color_backend_cmyk:nw { fill } #1 \s__color_stop }
\cs_new_protected:Npn \__color_backend_stroke_cmyk:n #1
Added: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def 2020-09-02 21:36:32 UTC (rev 56244)
@@ -0,0 +1,670 @@
+%%
+%% This is file `l3backend-luatex.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3backend-basics.dtx (with options: `package,luatex')
+%% l3backend-color.dtx (with options: `package,luatex')
+%% l3backend-box.dtx (with options: `package,luatex')
+%% l3backend-draw.dtx (with options: `package,luatex')
+%% l3backend-graphics.dtx (with options: `package,luatex')
+%% l3backend-pdf.dtx (with options: `package,luatex')
+%%
+%% Copyright (C) 1990-2020 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:
+%%
+%% https://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the "l3backend bundle" (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+%% File: l3backend-basics.dtx
+\ProvidesExplFile
+ {l3backend-luatex.def}{2020-09-01}{}
+ {L3 backend support: PDF output (LuaTeX)}
+\cs_if_exist:NTF \__kernel_dependency_version_check:nn
+ {
+ \__kernel_dependency_version_check:nn {2020-09-01}
+ {l3backend-luatex.def}
+ }
+ {
+ \cs_if_exist_use:cF { @latex at error } { \errmessage }
+ {
+ Mismatched~LaTeX~support~files~detected. \MessageBreak
+ Loading~aborted!
+ }
+ { \use:c { @ehd } }
+ \tex_endinput:D
+ }
+\cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D
+\cs_new_protected:Npn \__kernel_backend_literal:n #1
+ { \__kernel_backend_literal:e { \exp_not:n {#1} } }
+\cs_generate_variant:Nn \__kernel_backend_literal:n { x }
+\cs_new_protected:Npn \__kernel_backend_literal_pdf:n #1
+ {
+ \tex_pdfextension:D literal
+ { \exp_not:n {#1} }
+ }
+\cs_generate_variant:Nn \__kernel_backend_literal_pdf:n { x }
+\cs_new_protected:Npn \__kernel_backend_literal_page:n #1
+ {
+ \tex_pdfextension:D literal ~
+ page { \exp_not:n {#1} }
+ }
+\cs_new_protected:Npn \__kernel_backend_scope_begin:
+ {
+ \tex_pdfextension:D save \scan_stop:
+ }
+\cs_new_protected:Npn \__kernel_backend_scope_end:
+ {
+ \tex_pdfextension:D restore \scan_stop:
+ }
+\cs_new_protected:Npn \__kernel_backend_matrix:n #1
+ {
+ \tex_pdfextension:D setmatrix
+ { \exp_not:n {#1} }
+ }
+\cs_generate_variant:Nn \__kernel_backend_matrix:n { x }
+%% File: l3backend-color.dtx
+\cs_new_protected:Npn \__color_backend_pickup:N #1 { }
+\cs_if_exist:cT { ver at color.sty }
+ {
+ \cs_set_protected:Npn \__color_backend_pickup:N #1
+ {
+ \exp_last_unbraced:Nx \__color_backend_pickup:w
+ { \current at color } ~ 0 ~ 0 ~ 0 \s__color_stop #1
+ }
+ \cs_new_protected:Npn \__color_backend_pickup:w
+ #1 ~ #2 ~ #3 ~ #4 ~ #5 ~ #6 \s__color_stop #7
+ {
+ \str_if_eq:nnTF {#2} { g }
+ { \tl_set:Nn #7 { { gray } {#1} } }
+ {
+ \str_if_eq:nnTF {#4} { rg }
+ { \tl_set:Nn #7 { { rgb } { #1 ~ #2 ~ #3 } } }
+ {
+ \str_if_eq:nnTF {#5} { k }
+ { \tl_set:Nn #7 { { cmyk } { #1 ~ #2 ~ #3 ~ #4 } } }
+ {
+ \str_if_eq:nnTF {#2} { cs }
+ {
+ \tl_set:Nx #7 { { \use:n #1 } { #5 } }
+ }
+ {
+ \tl_set:Nn #7 { { gray } { 0 } }
+ }
+ }
+ }
+ }
+ }
+ }
+\int_new:N \l__kernel_color_stack_int
+\cs_new_protected:Npn \__color_backend_select_cmyk:n #1
+ { \__color_backend_select:n { #1 ~ k ~ #1 ~ K } }
+\cs_new_protected:Npn \__color_backend_select_gray:n #1
+ { \__color_backend_select:n { #1 ~ g ~ #1 ~ G } }
+\cs_new_protected:Npn \__color_backend_select_rgb:n #1
+ { \__color_backend_select:n { #1 ~ rg ~ #1 ~ RG } }
+\cs_new_protected:Npn \__color_backend_select:n #1
+ {
+ \tex_pdfextension:D colorstack
+ \l__kernel_color_stack_int push {#1}
+ \group_insert_after:N \__color_backend_reset:
+ }
+\cs_new_protected:Npn \__color_backend_reset:
+ {
+ \tex_pdfextension:D colorstack
+ \l__kernel_color_stack_int pop \scan_stop:
+ }
+\cs_new_protected:Npn \__color_backend_select_separation:nn #1#2
+ { \__color_backend_select:n { /#1 ~ cs ~ /#1 ~ CS ~ #2 ~ scn ~ #2 ~ SCN } }
+\cs_new_protected:Npn \__color_backend_separation_init:nnnnn #1#2#3#4#5
+ {
+ \__color_backend_separation_init:n
+ {
+ /Separation
+ / \str_convert_pdfname:n {#1} ~ #2 ~
+ <<
+ /FunctionType ~ 2
+ /Domain ~ [0 ~ 1]
+ \tl_if_blank:nF {#3} { /Range ~ [#3] }
+ /C0 ~ [#4] ~
+ /C1 ~ [#5] /N ~ 1
+ >>
+ }
+ \use:x
+ {
+ \pdfcoredict_gput:nnn
+ { Page / Resources / ColorSpace }
+ { color \int_use:N \g__color_separation_int }
+ { \pdf_object_last: }
+ }
+ }
+\cs_if_exist:NF \pdf_object_now:nn
+ { \cs_gset_protected:Npn \__color_backend_separation_init:nnnnn #1#2#3#4#5 { } }
+\cs_new_protected:Npn \__color_backend_separation_init:n #1
+ {
+ \pdf_object_now:nx { array } {#1}
+ }
+\cs_new_protected:Npn \__color_backend_separation_init_cielab:nnnnn #1#2#3#4#5
+ {
+ \__color_backend_separation_init:nnnnn
+ {#2}
+ { \pdf_object_ref:n { __color_illuminant_cielab_ #1 } }
+ { \c__color_model_range_lab_tl }
+ { 100 ~ 0 ~ 0 }
+ { #3 ~ #4 ~ #5 }
+ }
+\cs_if_exist:NF \pdf_object_now:nn
+ { \cs_gset_protected:Npn \__color_backend_separation_init_cielab:nnnnn #1#2#3#4#5 { } }
+\cs_new_protected:Npn \__color_backend_separation_init_cielab:n #1
+ {
+ \pdf_object_new:nn { __color_illuminant_cielab_ #1 } { array }
+ \pdf_object_write:nx { __color_illuminant_cielab_ #1 }
+ {
+ /Lab ~
+ <<
+ /WhitePoint ~
+ [ \tl_use:c { c__color_model_whitepoint_cielab_ #1 _tl } ]
+ /Range ~ [ \c__color_model_range_lab_tl ]
+ >>
+ }
+ }
+\cs_if_exist:NF \pdf_object_new:nn
+ { \cs_gset_protected:Npn \__color_backend_separation_init_cielab:n #1 { } }
+\cs_new_protected:Npn \__color_backend_fill_cmyk:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ k } }
+\cs_new_protected:Npn \__color_backend_fill_gray:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ g } }
+\cs_new_protected:Npn \__color_backend_fill_rgb:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ rg } }
+ \cs_new_protected:Npn \__color_backend_stroke_cmyk:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ K } }
+\cs_new_protected:Npn \__color_backend_stroke_gray:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ G } }
+\cs_new_protected:Npn \__color_backend_stroke_rgb:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ RG } }
+\cs_new_protected:Npn \__color_backend_fill_separation:nn #1#2
+ { \__kernel_backend_literal_pdf:n { /#1 ~ cs ~ #2 ~ scn } }
+\cs_new_protected:Npn \__color_backend_stroke_separation:nn #1#2
+ { \__kernel_backend_literal_pdf:n { /#1 ~ CS ~ #2 ~ SCN } }
+%% File: l3backend-box.dtx
+\cs_new_protected:Npn \__box_backend_clip:N #1
+ {
+ \__kernel_backend_scope_begin:
+ \__kernel_backend_literal_pdf:x
+ {
+ 0~
+ \dim_to_decimal_in_bp:n { -\box_dp:N #1 } ~
+ \dim_to_decimal_in_bp:n { \box_wd:N #1 } ~
+ \dim_to_decimal_in_bp:n { \box_ht:N #1 + \box_dp:N #1 } ~
+ re~W~n
+ }
+ \hbox_overlap_right:n { \box_use:N #1 }
+ \__kernel_backend_scope_end:
+ \skip_horizontal:n { \box_wd:N #1 }
+ }
+\cs_new_protected:Npn \__box_backend_rotate:Nn #1#2
+ { \exp_args:NNf \__box_backend_rotate_aux:Nn #1 { \fp_eval:n {#2} } }
+\cs_new_protected:Npn \__box_backend_rotate_aux:Nn #1#2
+ {
+ \__kernel_backend_scope_begin:
+ \box_set_wd:Nn #1 { 0pt }
+ \fp_set:Nn \l__box_backend_cos_fp { round ( cosd ( #2 ) , 5 ) }
+ \fp_compare:nNnT \l__box_backend_cos_fp = \c_zero_fp
+ { \fp_zero:N \l__box_backend_cos_fp }
+ \fp_set:Nn \l__box_backend_sin_fp { round ( sind ( #2 ) , 5 ) }
+ \__kernel_backend_matrix:x
+ {
+ \fp_use:N \l__box_backend_cos_fp \c_space_tl
+ \fp_compare:nNnTF \l__box_backend_sin_fp = \c_zero_fp
+ { 0~0 }
+ {
+ \fp_use:N \l__box_backend_sin_fp
+ \c_space_tl
+ \fp_eval:n { -\l__box_backend_sin_fp }
+ }
+ \c_space_tl
+ \fp_use:N \l__box_backend_cos_fp
+ }
+ \box_use:N #1
+ \__kernel_backend_scope_end:
+ }
+\fp_new:N \l__box_backend_cos_fp
+\fp_new:N \l__box_backend_sin_fp
+\cs_new_protected:Npn \__box_backend_scale:Nnn #1#2#3
+ {
+ \__kernel_backend_scope_begin:
+ \__kernel_backend_matrix:x
+ {
+ \fp_eval:n { round ( #2 , 5 ) } ~
+ 0~0~
+ \fp_eval:n { round ( #3 , 5 ) }
+ }
+ \hbox_overlap_right:n { \box_use:N #1 }
+ \__kernel_backend_scope_end:
+ }
+%% File: l3backend-draw.dtx
+\cs_new_eq:NN \__draw_backend_literal:n \__kernel_backend_literal_pdf:n
+\cs_generate_variant:Nn \__draw_backend_literal:n { x }
+\cs_new_protected:Npn \__draw_backend_begin:
+ { \__draw_backend_scope_begin: }
+\cs_new_protected:Npn \__draw_backend_end:
+ { \__draw_backend_scope_end: }
+\cs_new_eq:NN \__draw_backend_scope_begin: \__kernel_backend_scope_begin:
+\cs_new_eq:NN \__draw_backend_scope_end: \__kernel_backend_scope_end:
+\cs_new_protected:Npn \__draw_backend_moveto:nn #1#2
+ {
+ \__draw_backend_literal:x
+ { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ m }
+ }
+\cs_new_protected:Npn \__draw_backend_lineto:nn #1#2
+ {
+ \__draw_backend_literal:x
+ { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ l }
+ }
+\cs_new_protected:Npn \__draw_backend_curveto:nnnnnn #1#2#3#4#5#6
+ {
+ \__draw_backend_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
+ }
+ }
+\cs_new_protected:Npn \__draw_backend_rectangle:nnnn #1#2#3#4
+ {
+ \__draw_backend_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} ~
+ re
+ }
+ }
+\cs_new_protected:Npn \__draw_backend_evenodd_rule:
+ { \bool_gset_true:N \g__draw_draw_eor_bool }
+\cs_new_protected:Npn \__draw_backend_nonzero_rule:
+ { \bool_gset_false:N \g__draw_draw_eor_bool }
+\bool_new:N \g__draw_draw_eor_bool
+\cs_new_protected:Npn \__draw_backend_closepath:
+ { \__draw_backend_literal:n { h } }
+\cs_new_protected:Npn \__draw_backend_stroke:
+ { \__draw_backend_literal:n { S } }
+\cs_new_protected:Npn \__draw_backend_closestroke:
+ { \__draw_backend_literal:n { s } }
+\cs_new_protected:Npn \__draw_backend_fill:
+ {
+ \__draw_backend_literal:x
+ { f \bool_if:NT \g__draw_draw_eor_bool * }
+ }
+\cs_new_protected:Npn \__draw_backend_fillstroke:
+ {
+ \__draw_backend_literal:x
+ { B \bool_if:NT \g__draw_draw_eor_bool * }
+ }
+\cs_new_protected:Npn \__draw_backend_clip:
+ {
+ \__draw_backend_literal:x
+ { W \bool_if:NT \g__draw_draw_eor_bool * }
+ }
+\cs_new_protected:Npn \__draw_backend_discardpath:
+ { \__draw_backend_literal:n { n } }
+\cs_new_protected:Npn \__draw_backend_dash_pattern:nn #1#2
+ {
+ \__draw_backend_literal:x
+ {
+ [
+ \exp_args:Nf \use:n
+ { \clist_map_function:nN {#1} \__draw_backend_dash:n }
+ ] ~
+ \dim_to_decimal_in_bp:n {#2} ~ d
+ }
+ }
+\cs_new:Npn \__draw_backend_dash:n #1
+ { ~ \dim_to_decimal_in_bp:n {#1} }
+\cs_new_protected:Npn \__draw_backend_linewidth:n #1
+ {
+ \__draw_backend_literal:x
+ { \dim_to_decimal_in_bp:n {#1} ~ w }
+ }
+\cs_new_protected:Npn \__draw_backend_miterlimit:n #1
+ { \__draw_backend_literal:x { #1 ~ M } }
+\cs_new_protected:Npn \__draw_backend_cap_butt:
+ { \__draw_backend_literal:n { 0 ~ J } }
+\cs_new_protected:Npn \__draw_backend_cap_round:
+ { \__draw_backend_literal:n { 1 ~ J } }
+\cs_new_protected:Npn \__draw_backend_cap_rectangle:
+ { \__draw_backend_literal:n { 2 ~ J } }
+\cs_new_protected:Npn \__draw_backend_join_miter:
+ { \__draw_backend_literal:n { 0 ~ j } }
+\cs_new_protected:Npn \__draw_backend_join_round:
+ { \__draw_backend_literal:n { 1 ~ j } }
+\cs_new_protected:Npn \__draw_backend_join_bevel:
+ { \__draw_backend_literal:n { 2 ~ j } }
+\cs_new_protected:Npn \__draw_backend_cm:nnnn #1#2#3#4
+ {
+ \__kernel_backend_matrix:n { #1 ~ #2 ~ #3 ~ #4 }
+ }
+\cs_new_protected:Npn \__draw_backend_box_use:Nnnnn #1#2#3#4#5
+ {
+ \__kernel_backend_scope_begin:
+ \__draw_backend_cm:nnnn {#2} {#3} {#4} {#5}
+ \hbox_overlap_right:n { \box_use:N #1 }
+ \__kernel_backend_scope_end:
+ }
+%% File: l3backend-graphics.dtx
+\tl_new:N \l__graphics_graphics_attr_tl
+\cs_new_protected:Npn \__graphics_backend_getbb_jpg:n #1
+ {
+ \int_zero:N \l_graphics_page_int
+ \tl_clear:N \l_graphics_pagebox_tl
+ \tl_set:Nx \l__graphics_graphics_attr_tl
+ {
+ \tl_if_empty:NF \l_graphics_decodearray_tl
+ { :D \l_graphics_decodearray_tl }
+ \bool_if:NT \l_graphics_interpolate_bool
+ { :I }
+ }
+ \tl_clear:N \l__graphics_graphics_attr_tl
+ \__graphics_backend_getbb_auxi:n {#1}
+ }
+\cs_new_eq:NN \__graphics_backend_getbb_png:n \__graphics_backend_getbb_jpg:n
+\cs_new_protected:Npn \__graphics_backend_getbb_pdf:n #1
+ {
+ \tl_clear:N \l_graphics_decodearray_tl
+ \bool_set_false:N \l_graphics_interpolate_bool
+ \tl_set:Nx \l__graphics_graphics_attr_tl
+ {
+ : \l_graphics_pagebox_tl
+ \int_compare:nNnT \l_graphics_page_int > 1
+ { :P \int_use:N \l_graphics_page_int }
+ }
+ \__graphics_backend_getbb_auxi:n {#1}
+ }
+\cs_new_protected:Npn \__graphics_backend_getbb_auxi:n #1
+ {
+ \graphics_bb_restore:xF { #1 \l__graphics_graphics_attr_tl }
+ { \__graphics_backend_getbb_auxii:n {#1} }
+ }
+\cs_new_protected:Npn \__graphics_backend_getbb_auxii:n #1
+ {
+ \tex_immediate:D \tex_pdfximage:D
+ \bool_lazy_or:nnT
+ { \l_graphics_interpolate_bool }
+ { ! \tl_if_empty_p:N \l_graphics_decodearray_tl }
+ {
+ attr ~
+ {
+ \tl_if_empty:NF \l_graphics_decodearray_tl
+ { /Decode~[ \l_graphics_decodearray_tl ] }
+ \bool_if:NT \l_graphics_interpolate_bool
+ { /Interpolate~true }
+ }
+ }
+ \int_compare:nNnT \l_graphics_page_int > 0
+ { page ~ \int_use:N \l_graphics_page_int }
+ \tl_if_empty:NF \l_graphics_pagebox_tl
+ { \l_graphics_pagebox_tl }
+ {#1}
+ \hbox_set:Nn \l__graphics_internal_box
+ { \tex_pdfrefximage:D \tex_pdflastximage:D }
+ \dim_set:Nn \l_graphics_urx_dim { \box_wd:N \l__graphics_internal_box }
+ \dim_set:Nn \l_graphics_ury_dim { \box_ht:N \l__graphics_internal_box }
+ \int_const:cn { c__graphics_graphics_ #1 \l__graphics_graphics_attr_tl _int }
+ { \tex_the:D \tex_pdflastximage:D }
+ \graphics_bb_save:x { #1 \l__graphics_graphics_attr_tl }
+ }
+\cs_new_protected:Npn \__graphics_backend_include_jpg:n #1
+ {
+ \tex_pdfrefximage:D
+ \int_use:c { c__graphics_graphics_ #1 \l__graphics_graphics_attr_tl _int }
+ }
+\cs_new_eq:NN \__graphics_backend_include_pdf:n \__graphics_backend_include_jpg:n
+\cs_new_eq:NN \__graphics_backend_include_png:n \__graphics_backend_include_jpg:n
+\sys_if_shell:T
+ {
+ \str_new:N \l__graphics_backend_dir_str
+ \str_new:N \l__graphics_backend_name_str
+ \str_new:N \l__graphics_backend_ext_str
+ \cs_new_protected:Npn \__graphics_backend_getbb_eps:n #1
+ {
+ \file_parse_full_name:nNNN {#1}
+ \l__graphics_backend_dir_str
+ \l__graphics_backend_name_str
+ \l__graphics_backend_ext_str
+ \exp_args:Nx \__graphics_backend_getbb_eps:nn
+ {
+ \l__graphics_backend_name_str - \str_tail:N \l__graphics_backend_ext_str
+ -converted-to.pdf
+ }
+ {#1}
+ }
+ \cs_new_protected:Npn \__graphics_backend_getbb_eps:nn #1#2
+ {
+ \file_compare_timestamp:nNnT {#2} > {#1}
+ {
+ \sys_shell_now:n
+ { repstopdf ~ #2 ~ #1 }
+ }
+ \tl_set:Nn \l_graphics_name_tl {#1}
+ \__graphics_backend_getbb_pdf:n {#1}
+ }
+ \cs_new_protected:Npn \__graphics_backend_include_eps:n #1
+ {
+ \file_parse_full_name:nNNN {#1}
+ \l__graphics_backend_dir_str \l__graphics_backend_name_str \l__graphics_backend_ext_str
+ \exp_args:Nx \__graphics_backend_include_pdf:n
+ {
+ \l__graphics_backend_name_str - \str_tail:N \l__graphics_backend_ext_str
+ -converted-to.pdf
+ }
+ }
+ }
+%% File: l3backend-pdf.dtx
+\box_new:N \l__pdf_internal_box
+\cs_new_protected:Npn \__pdf_backend_annotation:nnnn #1#2#3#4
+ {
+ \tex_pdfextension:D annot ~
+ width ~ \dim_eval:n {#1} ~
+ height ~ \dim_eval:n {#2} ~
+ depth ~ \dim_eval:n {#3} ~
+ {#4}
+ }
+\cs_new:Npx \__pdf_backend_annotation_last:
+ {
+ \exp_not:N \int_value:w
+ \exp_not:N \tex_pdffeedback:D lastannot
+ \c_space_tl 0 ~ R
+ }
+\cs_new_protected:Npn \__pdf_backend_link_begin_goto:nnw #1#2
+ { \__pdf_backend_link_begin:nnnw {#1} { goto~name } {#2} }
+\cs_new_protected:Npn \__pdf_backend_link_begin_user:nnw #1#2
+ { \__pdf_backend_link_begin:nnnw {#1} { user } {#2} }
+\cs_new_protected:Npn \__pdf_backend_link_begin:nnnw #1#2#3
+ {
+ \tex_pdfextension:D startlink ~
+ attr {#1}
+ #2 {#3}
+ }
+\cs_new_protected:Npn \__pdf_backend_link_end:
+ {
+ \tex_pdfextension:D endlink \scan_stop:
+ }
+\cs_new:Npx \__pdf_backend_link_last:
+ {
+ \exp_not:N \int_value:w
+ \exp_not:N \tex_pdffeedback:D lastlink
+ \c_space_tl 0 ~ R
+ }
+\cs_new_protected:Npn \__pdf_backend_link_margin:n #1
+ {
+ \tex_pdfvariable:D linkmargin
+ \dim_eval:n {#1} \scan_stop:
+ }
+\cs_new_protected:Npn \__pdf_backend_destination:nn #1#2
+ {
+ \tex_pdfextension:D dest ~
+ name {#1}
+ \str_case:nnF {#2}
+ {
+ { xyz } { xyz }
+ { fit } { fit }
+ { fitb } { fitb }
+ { fitbh } { fitbh }
+ { fitbv } { fitbv }
+ { fith } { fith }
+ { fitv } { fitv }
+ }
+ { xyz ~ zoom \fp_eval:n { #2 * 10 } }
+ \scan_stop:
+ }
+\cs_new_protected:Npn \__pdf_backend_destination_box:nn #1#2
+ {
+ \group_begin:
+ \hbox_set:Nn \l__pdf_internal_box {#2}
+ \tex_pdfextension:D dest ~
+ name {#1}
+ fitr ~
+ width \box_wd:N \l__pdf_internal_box
+ height \box_ht:N \l__pdf_internal_box
+ depth \box_dp:N \l__pdf_internal_box
+ \box_use:N \l__pdf_internal_box
+ \group_end:
+ }
+\cs_new_protected:Npn \__pdf_backend_catalog_gput:nn #1#2
+ {
+ \tex_pdfextension:D catalog
+ { / #1 ~ #2 }
+ }
+\cs_new_protected:Npn \__pdf_backend_info_gput:nn #1#2
+ {
+ \tex_pdfextension:D info
+ { / #1 ~ #2 }
+ }
+\prop_new:N \g__pdf_backend_object_prop
+\cs_new_protected:Npn \__pdf_backend_object_new:nn #1#2
+ {
+ \tex_pdfextension:D obj ~
+ reserveobjnum ~
+ \int_const:cn
+ { c__pdf_backend_object_ \tl_to_str:n {#1} _int }
+ { \tex_pdffeedback:D lastobj }
+ \prop_gput:Nnn \exp_not:N \g__pdf_backend_object_prop {#1} {#2}
+ }
+\cs_new:Npn \__pdf_backend_object_ref:n #1
+ { \int_use:c { c__pdf_backend_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R }
+\cs_new_protected:Npn \__pdf_backend_object_write:nn #1#2
+ {
+ \tex_immediate:D \tex_pdfextension:D obj ~
+ useobjnum ~
+ \int_use:c
+ { c__pdf_backend_object_ \tl_to_str:n {#1} _int }
+ \str_case_e:nn
+ { \prop_item:Nn \g__pdf_backend_object_prop {#1} }
+ {
+ { array } { { [ ~ \exp_not:n {#2} ~ ] } }
+ { dict } { { << ~ \exp_not:n {#2} ~ >> } }
+ { fstream }
+ {
+ stream ~ attr ~ { \__pdf_exp_not_i:nn #2 } ~
+ file ~ { \__pdf_exp_not_ii:nn #2 }
+ }
+ { stream }
+ {
+ stream ~ attr ~ { \__pdf_exp_not_i:nn #2 } ~
+ { \__pdf_exp_not_ii:nn #2 }
+ }
+ }
+ }
+\cs_generate_variant:Nn \__pdf_backend_object_write:nn { nx }
+\cs_new:Npn \__pdf_exp_not_i:nn #1#2 { \exp_not:n {#1} }
+\cs_new:Npn \__pdf_exp_not_ii:nn #1#2 { \exp_not:n {#2} }
+\cs_new_protected:Npn \__pdf_backend_object_now:nn #1#2
+ {
+ \tex_immediate:D \tex_pdfextension:D obj ~
+ \str_case:nn
+ {#1}
+ {
+ { array } { { [ ~ \exp_not:n {#2} ~ ] } }
+ { dict } { { << ~ \exp_not:n {#2} ~ >> } }
+ { fstream }
+ {
+ stream ~ attr ~ { \__pdf_exp_not_i:nn #2 } ~
+ file ~ { \__pdf_exp_not_ii:nn #2 }
+ }
+ { stream }
+ {
+ stream ~ attr ~ { \__pdf_exp_not_i:nn #2 } ~
+ { \__pdf_exp_not_ii:nn #2 }
+ }
+ }
+ }
+\cs_generate_variant:Nn \__pdf_backend_object_now:nn { nx }
+\cs_new:Npx \__pdf_backend_object_last:
+ {
+ \exp_not:N \int_value:w
+ \exp_not:N \tex_pdffeedback:D lastobj ~
+ \c_space_tl 0 ~ R
+ }
+\cs_new:Npx \__pdf_backend_pageobject_ref:n #1
+ {
+ \exp_not:N \int_value:w
+ \exp_not:N \tex_pdffeedback:D pageref
+ \c_space_tl #1 \c_space_tl \c_space_tl \c_space_tl 0 ~ R
+ }
+\cs_new_protected:Npn \__pdf_backend_compresslevel:n #1
+ {
+ \tex_global:D
+ \tex_pdfvariable:D compresslevel
+ \int_value:w \int_eval:n {#1} \scan_stop:
+ }
+\cs_new_protected:Npn \__pdf_backend_compress_objects:n #1
+ {
+ \bool_if:nTF {#1}
+ { \__pdf_backend_objcompresslevel:n { 2 } }
+ { \__pdf_backend_objcompresslevel:n { 0 } }
+ }
+\cs_new_protected:Npn \__pdf_backend_objcompresslevel:n #1
+ {
+ \tex_global:D
+ \tex_pdfvariable:D objcompresslevel
+ #1 \scan_stop:
+ }
+\cs_new_protected:Npx \__pdf_backend_version_major_gset:n #1
+ {
+ \int_compare:nNnT \tex_luatexversion:D > { 106 }
+ {
+ \exp_not:N \tex_global:D \tex_pdfvariable:D majorversion
+ \exp_not:N \int_eval:n {#1} \scan_stop:
+ }
+ }
+\cs_new_protected:Npn \__pdf_backend_version_minor_gset:n #1
+ {
+ \tex_global:D
+ \tex_pdfvariable:D minorversion
+ \int_eval:n {#1} \scan_stop:
+ }
+\cs_new:Npx \__pdf_backend_version_major:
+ {
+ \int_compare:nNnTF \tex_luatexversion:D > { 106 }
+ { \exp_not:N \tex_the:D \tex_pdfvariable:D majorversion }
+ { 1 }
+ }
+\cs_new:Npn \__pdf_backend_version_minor:
+ {
+ \tex_the:D
+ \tex_pdfvariable:D minorversion
+ }
+\cs_new_protected:Npn \__pdf_backend_bdc:nn #1#2
+ { \__kernel_backend_literal_page:n { /#1 ~ #2 ~ BDC } }
+\cs_new_protected:Npn \__pdf_backend_emc:
+ { \__kernel_backend_literal_page:n { EMC } }
+%%
+%%
+%% End of file `l3backend-luatex.def'.
Property changes on: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Deleted: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def 2020-09-02 21:34:30 UTC (rev 56243)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def 2020-09-02 21:36:32 UTC (rev 56244)
@@ -1,693 +0,0 @@
-%%
-%% This is file `l3backend-pdfmode.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% l3backend-basics.dtx (with options: `package,pdfmode')
-%% l3backend-color.dtx (with options: `package,pdfmode')
-%% l3backend-box.dtx (with options: `package,pdfmode')
-%% l3backend-draw.dtx (with options: `package,pdfmode')
-%% l3backend-graphics.dtx (with options: `package,pdfmode')
-%% l3backend-pdf.dtx (with options: `package,pdfmode')
-%%
-%% Copyright (C) 1990-2020 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:
-%%
-%% https://www.latex-project.org/lppl.txt
-%%
-%% This file is part of the "l3backend bundle" (The Work in LPPL)
-%% and all files in that bundle must be distributed together.
-%%
-%% File: l3backend-basics.dtx
-\ProvidesExplFile
- {l3backend-pdfmode.def}{2020-08-07}{}
- {L3 backend support: PDF mode}
-\cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D
-\cs_new_protected:Npn \__kernel_backend_literal:n #1
- { \__kernel_backend_literal:e { \exp_not:n {#1} } }
-\cs_generate_variant:Nn \__kernel_backend_literal:n { x }
-\cs_new_protected:Npx \__kernel_backend_literal_pdf:n #1
- {
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D literal }
- { \tex_pdfliteral:D }
- { \exp_not:N \exp_not:n {#1} }
- }
-\cs_generate_variant:Nn \__kernel_backend_literal_pdf:n { x }
-\cs_new_protected:Npx \__kernel_backend_literal_page:n #1
- {
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D literal ~ }
- { \tex_pdfliteral:D }
- page
- { \exp_not:N \exp_not:n {#1} }
- }
-\cs_new_protected:Npx \__kernel_backend_scope_begin:
- {
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D save \scan_stop: }
- { \tex_pdfsave:D }
- }
-\cs_new_protected:Npx \__kernel_backend_scope_end:
- {
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D restore \scan_stop: }
- { \tex_pdfrestore:D }
- }
-\cs_new_protected:Npx \__kernel_backend_matrix:n #1
- {
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D setmatrix }
- { \tex_pdfsetmatrix:D }
- { \exp_not:N \exp_not:n {#1} }
- }
-\cs_generate_variant:Nn \__kernel_backend_matrix:n { x }
-%% File: l3backend-color.dtx
-\cs_new_protected:Npn \__color_backend_pickup:N #1 { }
-\cs_if_exist:cT { ver at color.sty }
- {
- \cs_set_protected:Npn \__color_backend_pickup:N #1
- {
- \exp_last_unbraced:Nx \__color_backend_pickup:w
- { \current at color } ~ 0 ~ 0 ~ 0 \s__color_stop #1
- }
- \cs_new_protected:Npn \__color_backend_pickup:w
- #1 ~ #2 ~ #3 ~ #4 ~ #5 ~ #6 \s__color_stop #7
- {
- \str_if_eq:nnTF {#2} { g }
- { \tl_set:Nn #7 { { gray } {#1} } }
- {
- \str_if_eq:nnTF {#4} { rg }
- { \tl_set:Nn #7 { { rgb } { #1 ~ #2 ~ #3 } } }
- {
- \str_if_eq:nnTF {#5} { k }
- { \tl_set:Nn #7 { { cmyk } { #1 ~ #2 ~ #3 ~ #4 } } }
- {
- \str_if_eq:nnTF {#2} { cs }
- {
- \tl_set:Nx #7 { { \use:n #1 } { #5 } }
- }
- {
- \tl_set:Nn #7 { { gray } { 0 } }
- }
- }
- }
- }
- }
- }
-\int_new:N \l__kernel_color_stack_int
-\cs_new_protected:Npn \__color_backend_select_cmyk:n #1
- { \__color_backend_select:n { #1 ~ k ~ #1 ~ K } }
-\cs_new_protected:Npn \__color_backend_select_gray:n #1
- { \__color_backend_select:n { #1 ~ g ~ #1 ~ G } }
-\cs_new_protected:Npn \__color_backend_select_rgb:n #1
- { \__color_backend_select:n { #1 ~ rg ~ #1 ~ RG } }
-\cs_new_protected:Npx \__color_backend_select:n #1
- {
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D colorstack }
- { \tex_pdfcolorstack:D }
- \exp_not:N \l__kernel_color_stack_int push {#1}
- \group_insert_after:N \exp_not:N \__color_backend_reset:
- }
-\cs_new_protected:Npx \__color_backend_reset:
- {
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D colorstack }
- { \tex_pdfcolorstack:D }
- \exp_not:N \l__kernel_color_stack_int pop \scan_stop:
- }
-\cs_new_protected:Npn \__color_backend_select_separation:nn #1#2
- { \__color_backend_select:n { /#1 ~ cs ~ /#1 ~ CS ~ #2 ~ scn ~ #2 ~ SCN } }
-\cs_new_protected:Npn \__color_backend_fill_cmyk:n #1
- { \__kernel_backend_literal_pdf:n { #1 ~ k } }
-\cs_new_protected:Npn \__color_backend_fill_gray:n #1
- { \__kernel_backend_literal_pdf:n { #1 ~ g } }
-\cs_new_protected:Npn \__color_backend_fill_rgb:n #1
- { \__kernel_backend_literal_pdf:n { #1 ~ rg } }
- \cs_new_protected:Npn \__color_backend_stroke_cmyk:n #1
- { \__kernel_backend_literal_pdf:n { #1 ~ K } }
-\cs_new_protected:Npn \__color_backend_stroke_gray:n #1
- { \__kernel_backend_literal_pdf:n { #1 ~ G } }
-\cs_new_protected:Npn \__color_backend_stroke_rgb:n #1
- { \__kernel_backend_literal_pdf:n { #1 ~ RG } }
-\cs_new_protected:Npn \__color_backend_fill_separation:nn #1#2
- { \__kernel_backend_literal_pdf:n { /#1 ~ cs ~ #2 ~ scn } }
-\cs_new_protected:Npn \__color_backend_stroke_separation:nn #1#2
- { \__kernel_backend_literal_pdf:n { /#1 ~ CS ~ #2 ~ SCN } }
-%% File: l3backend-box.dtx
-\cs_new_protected:Npn \__box_backend_clip:N #1
- {
- \__kernel_backend_scope_begin:
- \__kernel_backend_literal_pdf:x
- {
- 0~
- \dim_to_decimal_in_bp:n { -\box_dp:N #1 } ~
- \dim_to_decimal_in_bp:n { \box_wd:N #1 } ~
- \dim_to_decimal_in_bp:n { \box_ht:N #1 + \box_dp:N #1 } ~
- re~W~n
- }
- \hbox_overlap_right:n { \box_use:N #1 }
- \__kernel_backend_scope_end:
- \skip_horizontal:n { \box_wd:N #1 }
- }
-\cs_new_protected:Npn \__box_backend_rotate:Nn #1#2
- { \exp_args:NNf \__box_backend_rotate_aux:Nn #1 { \fp_eval:n {#2} } }
-\cs_new_protected:Npn \__box_backend_rotate_aux:Nn #1#2
- {
- \__kernel_backend_scope_begin:
- \box_set_wd:Nn #1 { 0pt }
- \fp_set:Nn \l__box_backend_cos_fp { round ( cosd ( #2 ) , 5 ) }
- \fp_compare:nNnT \l__box_backend_cos_fp = \c_zero_fp
- { \fp_zero:N \l__box_backend_cos_fp }
- \fp_set:Nn \l__box_backend_sin_fp { round ( sind ( #2 ) , 5 ) }
- \__kernel_backend_matrix:x
- {
- \fp_use:N \l__box_backend_cos_fp \c_space_tl
- \fp_compare:nNnTF \l__box_backend_sin_fp = \c_zero_fp
- { 0~0 }
- {
- \fp_use:N \l__box_backend_sin_fp
- \c_space_tl
- \fp_eval:n { -\l__box_backend_sin_fp }
- }
- \c_space_tl
- \fp_use:N \l__box_backend_cos_fp
- }
- \box_use:N #1
- \__kernel_backend_scope_end:
- }
-\fp_new:N \l__box_backend_cos_fp
-\fp_new:N \l__box_backend_sin_fp
-\cs_new_protected:Npn \__box_backend_scale:Nnn #1#2#3
- {
- \__kernel_backend_scope_begin:
- \__kernel_backend_matrix:x
- {
- \fp_eval:n { round ( #2 , 5 ) } ~
- 0~0~
- \fp_eval:n { round ( #3 , 5 ) }
- }
- \hbox_overlap_right:n { \box_use:N #1 }
- \__kernel_backend_scope_end:
- }
-%% File: l3backend-draw.dtx
-\cs_new_eq:NN \__draw_backend_literal:n \__kernel_backend_literal_pdf:n
-\cs_generate_variant:Nn \__draw_backend_literal:n { x }
-\cs_new_protected:Npn \__draw_backend_begin:
- { \__draw_backend_scope_begin: }
-\cs_new_protected:Npn \__draw_backend_end:
- { \__draw_backend_scope_end: }
-\cs_new_eq:NN \__draw_backend_scope_begin: \__kernel_backend_scope_begin:
-\cs_new_eq:NN \__draw_backend_scope_end: \__kernel_backend_scope_end:
-\cs_new_protected:Npn \__draw_backend_moveto:nn #1#2
- {
- \__draw_backend_literal:x
- { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ m }
- }
-\cs_new_protected:Npn \__draw_backend_lineto:nn #1#2
- {
- \__draw_backend_literal:x
- { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ l }
- }
-\cs_new_protected:Npn \__draw_backend_curveto:nnnnnn #1#2#3#4#5#6
- {
- \__draw_backend_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
- }
- }
-\cs_new_protected:Npn \__draw_backend_rectangle:nnnn #1#2#3#4
- {
- \__draw_backend_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} ~
- re
- }
- }
-\cs_new_protected:Npn \__draw_backend_evenodd_rule:
- { \bool_gset_true:N \g__draw_draw_eor_bool }
-\cs_new_protected:Npn \__draw_backend_nonzero_rule:
- { \bool_gset_false:N \g__draw_draw_eor_bool }
-\bool_new:N \g__draw_draw_eor_bool
-\cs_new_protected:Npn \__draw_backend_closepath:
- { \__draw_backend_literal:n { h } }
-\cs_new_protected:Npn \__draw_backend_stroke:
- { \__draw_backend_literal:n { S } }
-\cs_new_protected:Npn \__draw_backend_closestroke:
- { \__draw_backend_literal:n { s } }
-\cs_new_protected:Npn \__draw_backend_fill:
- {
- \__draw_backend_literal:x
- { f \bool_if:NT \g__draw_draw_eor_bool * }
- }
-\cs_new_protected:Npn \__draw_backend_fillstroke:
- {
- \__draw_backend_literal:x
- { B \bool_if:NT \g__draw_draw_eor_bool * }
- }
-\cs_new_protected:Npn \__draw_backend_clip:
- {
- \__draw_backend_literal:x
- { W \bool_if:NT \g__draw_draw_eor_bool * }
- }
-\cs_new_protected:Npn \__draw_backend_discardpath:
- { \__draw_backend_literal:n { n } }
-\cs_new_protected:Npn \__draw_backend_dash_pattern:nn #1#2
- {
- \__draw_backend_literal:x
- {
- [
- \exp_args:Nf \use:n
- { \clist_map_function:nN {#1} \__draw_backend_dash:n }
- ] ~
- \dim_to_decimal_in_bp:n {#2} ~ d
- }
- }
-\cs_new:Npn \__draw_backend_dash:n #1
- { ~ \dim_to_decimal_in_bp:n {#1} }
-\cs_new_protected:Npn \__draw_backend_linewidth:n #1
- {
- \__draw_backend_literal:x
- { \dim_to_decimal_in_bp:n {#1} ~ w }
- }
-\cs_new_protected:Npn \__draw_backend_miterlimit:n #1
- { \__draw_backend_literal:x { #1 ~ M } }
-\cs_new_protected:Npn \__draw_backend_cap_butt:
- { \__draw_backend_literal:n { 0 ~ J } }
-\cs_new_protected:Npn \__draw_backend_cap_round:
- { \__draw_backend_literal:n { 1 ~ J } }
-\cs_new_protected:Npn \__draw_backend_cap_rectangle:
- { \__draw_backend_literal:n { 2 ~ J } }
-\cs_new_protected:Npn \__draw_backend_join_miter:
- { \__draw_backend_literal:n { 0 ~ j } }
-\cs_new_protected:Npn \__draw_backend_join_round:
- { \__draw_backend_literal:n { 1 ~ j } }
-\cs_new_protected:Npn \__draw_backend_join_bevel:
- { \__draw_backend_literal:n { 2 ~ j } }
-\cs_new_protected:Npn \__draw_backend_cm:nnnn #1#2#3#4
- {
- \__kernel_backend_matrix:n { #1 ~ #2 ~ #3 ~ #4 }
- }
-\cs_new_protected:Npn \__draw_backend_box_use:Nnnnn #1#2#3#4#5
- {
- \__kernel_backend_scope_begin:
- \__draw_backend_cm:nnnn {#2} {#3} {#4} {#5}
- \hbox_overlap_right:n { \box_use:N #1 }
- \__kernel_backend_scope_end:
- }
-%% File: l3backend-graphics.dtx
-\tl_new:N \l__graphics_graphics_attr_tl
-\cs_new_protected:Npn \__graphics_backend_getbb_jpg:n #1
- {
- \int_zero:N \l_graphics_page_int
- \tl_clear:N \l_graphics_pagebox_tl
- \tl_set:Nx \l__graphics_graphics_attr_tl
- {
- \tl_if_empty:NF \l_graphics_decodearray_tl
- { :D \l_graphics_decodearray_tl }
- \bool_if:NT \l_graphics_interpolate_bool
- { :I }
- }
- \tl_clear:N \l__graphics_graphics_attr_tl
- \__graphics_backend_getbb_auxi:n {#1}
- }
-\cs_new_eq:NN \__graphics_backend_getbb_png:n \__graphics_backend_getbb_jpg:n
-\cs_new_protected:Npn \__graphics_backend_getbb_pdf:n #1
- {
- \tl_clear:N \l_graphics_decodearray_tl
- \bool_set_false:N \l_graphics_interpolate_bool
- \tl_set:Nx \l__graphics_graphics_attr_tl
- {
- : \l_graphics_pagebox_tl
- \int_compare:nNnT \l_graphics_page_int > 1
- { :P \int_use:N \l_graphics_page_int }
- }
- \__graphics_backend_getbb_auxi:n {#1}
- }
-\cs_new_protected:Npn \__graphics_backend_getbb_auxi:n #1
- {
- \graphics_bb_restore:xF { #1 \l__graphics_graphics_attr_tl }
- { \__graphics_backend_getbb_auxii:n {#1} }
- }
-\cs_new_protected:Npn \__graphics_backend_getbb_auxii:n #1
- {
- \tex_immediate:D \tex_pdfximage:D
- \bool_lazy_or:nnT
- { \l_graphics_interpolate_bool }
- { ! \tl_if_empty_p:N \l_graphics_decodearray_tl }
- {
- attr ~
- {
- \tl_if_empty:NF \l_graphics_decodearray_tl
- { /Decode~[ \l_graphics_decodearray_tl ] }
- \bool_if:NT \l_graphics_interpolate_bool
- { /Interpolate~true }
- }
- }
- \int_compare:nNnT \l_graphics_page_int > 0
- { page ~ \int_use:N \l_graphics_page_int }
- \tl_if_empty:NF \l_graphics_pagebox_tl
- { \l_graphics_pagebox_tl }
- {#1}
- \hbox_set:Nn \l__graphics_internal_box
- { \tex_pdfrefximage:D \tex_pdflastximage:D }
- \dim_set:Nn \l_graphics_urx_dim { \box_wd:N \l__graphics_internal_box }
- \dim_set:Nn \l_graphics_ury_dim { \box_ht:N \l__graphics_internal_box }
- \int_const:cn { c__graphics_graphics_ #1 \l__graphics_graphics_attr_tl _int }
- { \tex_the:D \tex_pdflastximage:D }
- \graphics_bb_save:x { #1 \l__graphics_graphics_attr_tl }
- }
-\cs_new_protected:Npn \__graphics_backend_include_jpg:n #1
- {
- \tex_pdfrefximage:D
- \int_use:c { c__graphics_graphics_ #1 \l__graphics_graphics_attr_tl _int }
- }
-\cs_new_eq:NN \__graphics_backend_include_pdf:n \__graphics_backend_include_jpg:n
-\cs_new_eq:NN \__graphics_backend_include_png:n \__graphics_backend_include_jpg:n
-\sys_if_shell:T
- {
- \str_new:N \l__graphics_backend_dir_str
- \str_new:N \l__graphics_backend_name_str
- \str_new:N \l__graphics_backend_ext_str
- \cs_new_protected:Npn \__graphics_backend_getbb_eps:n #1
- {
- \file_parse_full_name:nNNN {#1}
- \l__graphics_backend_dir_str
- \l__graphics_backend_name_str
- \l__graphics_backend_ext_str
- \exp_args:Nx \__graphics_backend_getbb_eps:nn
- {
- \l__graphics_backend_name_str - \str_tail:N \l__graphics_backend_ext_str
- -converted-to.pdf
- }
- {#1}
- }
- \cs_new_protected:Npn \__graphics_backend_getbb_eps:nn #1#2
- {
- \file_compare_timestamp:nNnT {#2} > {#1}
- {
- \sys_shell_now:n
- { repstopdf ~ #2 ~ #1 }
- }
- \tl_set:Nn \l_graphics_name_tl {#1}
- \__graphics_backend_getbb_pdf:n {#1}
- }
- \cs_new_protected:Npn \__graphics_backend_include_eps:n #1
- {
- \file_parse_full_name:nNNN {#1}
- \l__graphics_backend_dir_str \l__graphics_backend_name_str \l__graphics_backend_ext_str
- \exp_args:Nx \__graphics_backend_include_pdf:n
- {
- \l__graphics_backend_name_str - \str_tail:N \l__graphics_backend_ext_str
- -converted-to.pdf
- }
- }
- }
-%% File: l3backend-pdf.dtx
-\box_new:N \l__pdf_internal_box
-\cs_new_protected:Npx \__pdf_backend_annotation:nnnn #1#2#3#4
- {
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D annot ~ }
- { \tex_pdfannot:D }
- width ~ \exp_not:N \dim_eval:n {#1} ~
- height ~ \exp_not:N \dim_eval:n {#2} ~
- depth ~ \exp_not:N \dim_eval:n {#3} ~
- {#4}
- }
-\cs_new:Npx \__pdf_backend_annotation_last:
- {
- \exp_not:N \int_value:w
- \cs_if_exist:NTF \tex_pdffeedback:D
- { \exp_not:N \tex_pdffeedback:D lastannot ~ }
- { \exp_not:N \tex_pdflastannot:D }
- \c_space_tl 0 ~ R
- }
-\cs_new_protected:Npn \__pdf_backend_link_begin_goto:nnw #1#2
- { \__pdf_backend_link_begin:nnnw {#1} { goto~name } {#2} }
-\cs_new_protected:Npn \__pdf_backend_link_begin_user:nnw #1#2
- { \__pdf_backend_link_begin:nnnw {#1} { user } {#2} }
-\cs_new_protected:Npx \__pdf_backend_link_begin:nnnw #1#2#3
- {
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D startlink ~ }
- { \tex_pdfstartlink:D }
- attr {#1}
- #2 {#3}
- }
-\cs_new_protected:Npx \__pdf_backend_link_end:
- {
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D endlink \scan_stop: }
- { \tex_pdfendlink:D }
- }
-\cs_new:Npx \__pdf_backend_link_last:
- {
- \exp_not:N \int_value:w
- \cs_if_exist:NTF \tex_pdffeedback:D
- { \exp_not:N \tex_pdffeedback:D lastlink ~ }
- { \exp_not:N \tex_pdflastlink:D }
- \c_space_tl 0 ~ R
- }
-\cs_new_protected:Npx \__pdf_backend_link_margin:n #1
- {
- \cs_if_exist:NTF \tex_pdfvariable:D
- { \exp_not:N \tex_pdfvariable:D linkmargin }
- { \exp_not:N \tex_pdflinkmargin:D }
- \exp_not:N \dim_eval:n {#1} \scan_stop:
- }
-\cs_new_protected:Npx \__pdf_backend_destination:nn #1#2
- {
- \cs_if_exist:NTF \tex_pdfextension:D
- { \exp_not:N \tex_pdfextension:D dest ~ }
- { \exp_not:N \tex_pdfdest:D }
- name {#1}
- \exp_not:N \str_case:nnF {#2}
- {
- { xyz } { xyz }
- { fit } { fit }
- { fitb } { fitb }
- { fitbh } { fitbh }
- { fitbv } { fitbv }
- { fith } { fith }
- { fitv } { fitv }
- }
- { xyz ~ zoom \exp_not:N \fp_eval:n { #2 * 10 } }
- \scan_stop:
- }
-\cs_new_protected:Npx \__pdf_backend_destination_box:nn #1#2
- {
- \group_begin:
- \hbox_set:Nn \l__pdf_internal_box {#2}
- \cs_if_exist:NTF \tex_pdfextension:D
- { \exp_not:N \tex_pdfextension:D dest ~ }
- { \exp_not:N \tex_pdfdest:D }
- name {#1}
- fitr ~
- width \exp_not:N \box_wd:N \l__pdf_internal_box
- height \exp_not:N \box_ht:N \l__pdf_internal_box
- depth \exp_not:N \box_dp:N \l__pdf_internal_box
- \box_use:N \l__pdf_internal_box
- \group_end:
- }
-\cs_new_protected:Npx \__pdf_backend_catalog_gput:nn #1#2
- {
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D catalog }
- { \tex_pdfcatalog:D }
- { / #1 ~ #2 }
- }
-\cs_new_protected:Npx \__pdf_backend_info_gput:nn #1#2
- {
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D info }
- { \tex_pdfinfo:D }
- { / #1 ~ #2 }
- }
-\prop_new:N \g__pdf_backend_object_prop
-\group_begin:
- \cs_set_protected:Npn \__pdf_tmp:w #1#2
- {
- \cs_new_protected:Npx \__pdf_backend_object_new:nn ##1##2
- {
- #1 reserveobjnum ~
- \int_const:cn
- { c__pdf_backend_object_ \exp_not:N \tl_to_str:n {##1} _int }
- {#2}
- \prop_gput:Nnn \exp_not:N \g__pdf_backend_object_prop {##1} {##2}
- }
- }
- \cs_if_exist:NTF \tex_pdfextension:D
- {
- \__pdf_tmp:w
- { \tex_pdfextension:D obj ~ }
- { \exp_not:N \tex_pdffeedback:D lastobj }
- }
- { \__pdf_tmp:w { \tex_pdfobj:D } { \tex_pdflastobj:D } }
-\group_end:
-\cs_new:Npn \__pdf_backend_object_ref:n #1
- { \int_use:c { c__pdf_backend_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R }
-\group_begin:
- \cs_set_protected:Npn \__pdf_tmp:w #1
- {
- \cs_new_protected:Npn \__pdf_backend_object_write:nn ##1##2
- {
- \tex_immediate:D #1 useobjnum ~
- \int_use:c
- { c__pdf_backend_object_ \tl_to_str:n {##1} _int }
- \str_case_e:nn
- { \prop_item:Nn \g__pdf_backend_object_prop {##1} }
- {
- { array } { { [ ~ \exp_not:n {##2} ~ ] } }
- { dict } { { << ~ \exp_not:n {##2} ~ >> } }
- { fstream }
- {
- stream ~ attr ~ { \__pdf_exp_not_i:nn ##2 } ~
- file ~ { \__pdf_exp_not_ii:nn ##2 }
- }
- { stream }
- {
- stream ~ attr ~ { \__pdf_exp_not_i:nn ##2 } ~
- { \__pdf_exp_not_ii:nn ##2 }
- }
- }
- }
- }
- \cs_if_exist:NTF \tex_pdfextension:D
- { \__pdf_tmp:w { \tex_pdfextension:D obj ~ } }
- { \__pdf_tmp:w { \tex_pdfobj:D } }
-\group_end:
-\cs_generate_variant:Nn \__pdf_backend_object_write:nn { nx }
-\cs_new:Npn \__pdf_exp_not_i:nn #1#2 { \exp_not:n {#1} }
-\cs_new:Npn \__pdf_exp_not_ii:nn #1#2 { \exp_not:n {#2} }
-\group_begin:
- \cs_set_protected:Npn \__pdf_tmp:w #1
- {
- \cs_new_protected:Npn \__pdf_backend_object_now:nn ##1##2
- {
- \tex_immediate:D #1
- \str_case:nn
- {##1}
- {
- { array } { { [ ~ \exp_not:n {##2} ~ ] } }
- { dict } { { << ~ \exp_not:n {##2} ~ >> } }
- { fstream }
- {
- stream ~ attr ~ { \__pdf_exp_not_i:nn ##2 } ~
- file ~ { \__pdf_exp_not_ii:nn ##2 }
- }
- { stream }
- {
- stream ~ attr ~ { \__pdf_exp_not_i:nn ##2 } ~
- { \__pdf_exp_not_ii:nn ##2 }
- }
- }
- }
- }
- \cs_if_exist:NTF \tex_pdfextension:D
- { \__pdf_tmp:w { \tex_pdfextension:D obj ~ } }
- { \__pdf_tmp:w { \tex_pdfobj:D } }
-\group_end:
-\cs_generate_variant:Nn \__pdf_backend_object_now:nn { nx }
-\cs_new:Npx \__pdf_backend_object_last:
- {
- \exp_not:N \int_value:w
- \cs_if_exist:NTF \tex_pdffeedback:D
- { \exp_not:N \tex_pdffeedback:D lastobj ~ }
- { \exp_not:N \tex_pdflastobj:D }
- \c_space_tl 0 ~ R
- }
-\cs_new:Npx \__pdf_backend_pageobject_ref:n #1
- {
- \exp_not:N \int_value:w
- \cs_if_exist:NTF \tex_pdffeedback:D
- { \exp_not:N \tex_pdffeedback:D pageref }
- { \exp_not:N \tex_pdfpageref:D }
- \c_space_tl #1 \c_space_tl \c_space_tl \c_space_tl 0 ~ R
- }
-\cs_new_protected:Npx \__pdf_backend_compresslevel:n #1
- {
- \exp_not:N \tex_global:D
- \cs_if_exist:NTF \tex_pdfcompresslevel:D
- { \tex_pdfcompresslevel:D }
- { \tex_pdfvariable:D compresslevel }
- \exp_not:N \int_value:w \exp_not:N \int_eval:n {#1} \scan_stop:
- }
-\cs_new_protected:Npn \__pdf_backend_compress_objects:n #1
- {
- \bool_if:nTF {#1}
- { \__pdf_backend_objcompresslevel:n { 2 } }
- { \__pdf_backend_objcompresslevel:n { 0 } }
- }
-\cs_new_protected:Npx \__pdf_backend_objcompresslevel:n #1
- {
- \exp_not:N \tex_global:D
- \cs_if_exist:NTF \tex_pdfobjcompresslevel:D
- { \tex_pdfobjcompresslevel:D }
- { \tex_pdfvariable:D objcompresslevel }
- #1 \scan_stop:
- }
-\cs_new_protected:Npx \__pdf_backend_version_major_gset:n #1
- {
- \cs_if_exist:NTF \tex_pdfvariable:D
- {
- \int_compare:nNnT \tex_luatexversion:D > { 106 }
- {
- \exp_not:N \tex_global:D \tex_pdfvariable:D majorversion
- \exp_not:N \int_eval:n {#1} \scan_stop:
- }
- }
- {
- \cs_if_exist:NT \tex_pdfmajorversion:D
- {
- \exp_not:N \tex_global:D \tex_pdfmajorversion:D
- \exp_not:N \int_eval:n {#1} \scan_stop:
- }
- }
- }
-\cs_new_protected:Npx \__pdf_backend_version_minor_gset:n #1
- {
- \exp_not:N \tex_global:D
- \cs_if_exist:NTF \tex_pdfminorversion:D
- { \exp_not:N \tex_pdfminorversion:D }
- { \tex_pdfvariable:D minorversion }
- \exp_not:N \int_eval:n {#1} \scan_stop:
- }
-\cs_new:Npx \__pdf_backend_version_major:
- {
- \cs_if_exist:NTF \tex_pdfvariable:D
- {
- \int_compare:nNnTF \tex_luatexversion:D > { 106 }
- { \exp_not:N \tex_the:D \tex_pdfvariable:D majorversion }
- { 1 }
- }
- {
- \cs_if_exist:NTF \tex_pdfmajorversion:D
- { \exp_not:N \tex_the:D \tex_pdfmajorversion:D }
- { 1 }
- }
- }
-\cs_new:Npx \__pdf_backend_version_minor:
- {
- \exp_not:N \tex_the:D
- \cs_if_exist:NTF \tex_pdfminorversion:D
- { \exp_not:N \tex_pdfminorversion:D }
- { \tex_pdfvariable:D minorversion }
- }
-\cs_new_protected:Npn \__pdf_backend_bdc:nn #1#2
- { \__kernel_backend_literal_page:n { /#1 ~ #2 ~ BDC } }
-\cs_new_protected:Npn \__pdf_backend_emc:
- { \__kernel_backend_literal_page:n { EMC } }
-%%
-%%
-%% End of file `l3backend-pdfmode.def'.
Added: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def 2020-09-02 21:36:32 UTC (rev 56244)
@@ -0,0 +1,670 @@
+%%
+%% This is file `l3backend-pdftex.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3backend-basics.dtx (with options: `package,pdftex')
+%% l3backend-color.dtx (with options: `package,pdftex')
+%% l3backend-box.dtx (with options: `package,pdftex')
+%% l3backend-draw.dtx (with options: `package,pdftex')
+%% l3backend-graphics.dtx (with options: `package,pdftex')
+%% l3backend-pdf.dtx (with options: `package,pdftex')
+%%
+%% Copyright (C) 1990-2020 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:
+%%
+%% https://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the "l3backend bundle" (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+%% File: l3backend-basics.dtx
+\ProvidesExplFile
+ {l3backend-pdftex.def}{2020-09-01}{}
+ {L3 backend support: PDF output (pdfTeX)}
+\cs_if_exist:NTF \__kernel_dependency_version_check:nn
+ {
+ \__kernel_dependency_version_check:nn {2020-09-01}
+ {l3backend-pdftex.def}
+ }
+ {
+ \cs_if_exist_use:cF { @latex at error } { \errmessage }
+ {
+ Mismatched~LaTeX~support~files~detected. \MessageBreak
+ Loading~aborted!
+ }
+ { \use:c { @ehd } }
+ \tex_endinput:D
+ }
+\cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D
+\cs_new_protected:Npn \__kernel_backend_literal:n #1
+ { \__kernel_backend_literal:e { \exp_not:n {#1} } }
+\cs_generate_variant:Nn \__kernel_backend_literal:n { x }
+\cs_new_protected:Npn \__kernel_backend_literal_pdf:n #1
+ {
+ \tex_pdfliteral:D
+ { \exp_not:n {#1} }
+ }
+\cs_generate_variant:Nn \__kernel_backend_literal_pdf:n { x }
+\cs_new_protected:Npn \__kernel_backend_literal_page:n #1
+ {
+ \tex_pdfliteral:D
+ page { \exp_not:n {#1} }
+ }
+\cs_new_protected:Npn \__kernel_backend_scope_begin:
+ {
+ \tex_pdfsave:D
+ }
+\cs_new_protected:Npn \__kernel_backend_scope_end:
+ {
+ \tex_pdfrestore:D
+ }
+\cs_new_protected:Npn \__kernel_backend_matrix:n #1
+ {
+ \tex_pdfsetmatrix:D
+ { \exp_not:n {#1} }
+ }
+\cs_generate_variant:Nn \__kernel_backend_matrix:n { x }
+%% File: l3backend-color.dtx
+\cs_new_protected:Npn \__color_backend_pickup:N #1 { }
+\cs_if_exist:cT { ver at color.sty }
+ {
+ \cs_set_protected:Npn \__color_backend_pickup:N #1
+ {
+ \exp_last_unbraced:Nx \__color_backend_pickup:w
+ { \current at color } ~ 0 ~ 0 ~ 0 \s__color_stop #1
+ }
+ \cs_new_protected:Npn \__color_backend_pickup:w
+ #1 ~ #2 ~ #3 ~ #4 ~ #5 ~ #6 \s__color_stop #7
+ {
+ \str_if_eq:nnTF {#2} { g }
+ { \tl_set:Nn #7 { { gray } {#1} } }
+ {
+ \str_if_eq:nnTF {#4} { rg }
+ { \tl_set:Nn #7 { { rgb } { #1 ~ #2 ~ #3 } } }
+ {
+ \str_if_eq:nnTF {#5} { k }
+ { \tl_set:Nn #7 { { cmyk } { #1 ~ #2 ~ #3 ~ #4 } } }
+ {
+ \str_if_eq:nnTF {#2} { cs }
+ {
+ \tl_set:Nx #7 { { \use:n #1 } { #5 } }
+ }
+ {
+ \tl_set:Nn #7 { { gray } { 0 } }
+ }
+ }
+ }
+ }
+ }
+ }
+\int_new:N \l__kernel_color_stack_int
+\cs_new_protected:Npn \__color_backend_select_cmyk:n #1
+ { \__color_backend_select:n { #1 ~ k ~ #1 ~ K } }
+\cs_new_protected:Npn \__color_backend_select_gray:n #1
+ { \__color_backend_select:n { #1 ~ g ~ #1 ~ G } }
+\cs_new_protected:Npn \__color_backend_select_rgb:n #1
+ { \__color_backend_select:n { #1 ~ rg ~ #1 ~ RG } }
+\cs_new_protected:Npn \__color_backend_select:n #1
+ {
+ \tex_pdfcolorstack:D
+ \l__kernel_color_stack_int push {#1}
+ \group_insert_after:N \__color_backend_reset:
+ }
+\cs_new_protected:Npn \__color_backend_reset:
+ {
+ \tex_pdfcolorstack:D
+ \l__kernel_color_stack_int pop \scan_stop:
+ }
+\cs_new_protected:Npn \__color_backend_select_separation:nn #1#2
+ { \__color_backend_select:n { /#1 ~ cs ~ /#1 ~ CS ~ #2 ~ scn ~ #2 ~ SCN } }
+\cs_new_protected:Npn \__color_backend_separation_init:nnnnn #1#2#3#4#5
+ {
+ \__color_backend_separation_init:n
+ {
+ /Separation
+ / \str_convert_pdfname:n {#1} ~ #2 ~
+ <<
+ /FunctionType ~ 2
+ /Domain ~ [0 ~ 1]
+ \tl_if_blank:nF {#3} { /Range ~ [#3] }
+ /C0 ~ [#4] ~
+ /C1 ~ [#5] /N ~ 1
+ >>
+ }
+ \use:x
+ {
+ \pdfcoredict_gput:nnn
+ { Page / Resources / ColorSpace }
+ { color \int_use:N \g__color_separation_int }
+ { \pdf_object_last: }
+ }
+ }
+\cs_if_exist:NF \pdf_object_now:nn
+ { \cs_gset_protected:Npn \__color_backend_separation_init:nnnnn #1#2#3#4#5 { } }
+\cs_new_protected:Npn \__color_backend_separation_init:n #1
+ {
+ \pdf_object_now:nx { array } {#1}
+ }
+\cs_new_protected:Npn \__color_backend_separation_init_cielab:nnnnn #1#2#3#4#5
+ {
+ \__color_backend_separation_init:nnnnn
+ {#2}
+ { \pdf_object_ref:n { __color_illuminant_cielab_ #1 } }
+ { \c__color_model_range_lab_tl }
+ { 100 ~ 0 ~ 0 }
+ { #3 ~ #4 ~ #5 }
+ }
+\cs_if_exist:NF \pdf_object_now:nn
+ { \cs_gset_protected:Npn \__color_backend_separation_init_cielab:nnnnn #1#2#3#4#5 { } }
+\cs_new_protected:Npn \__color_backend_separation_init_cielab:n #1
+ {
+ \pdf_object_new:nn { __color_illuminant_cielab_ #1 } { array }
+ \pdf_object_write:nx { __color_illuminant_cielab_ #1 }
+ {
+ /Lab ~
+ <<
+ /WhitePoint ~
+ [ \tl_use:c { c__color_model_whitepoint_cielab_ #1 _tl } ]
+ /Range ~ [ \c__color_model_range_lab_tl ]
+ >>
+ }
+ }
+\cs_if_exist:NF \pdf_object_new:nn
+ { \cs_gset_protected:Npn \__color_backend_separation_init_cielab:n #1 { } }
+\cs_new_protected:Npn \__color_backend_fill_cmyk:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ k } }
+\cs_new_protected:Npn \__color_backend_fill_gray:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ g } }
+\cs_new_protected:Npn \__color_backend_fill_rgb:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ rg } }
+ \cs_new_protected:Npn \__color_backend_stroke_cmyk:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ K } }
+\cs_new_protected:Npn \__color_backend_stroke_gray:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ G } }
+\cs_new_protected:Npn \__color_backend_stroke_rgb:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ RG } }
+\cs_new_protected:Npn \__color_backend_fill_separation:nn #1#2
+ { \__kernel_backend_literal_pdf:n { /#1 ~ cs ~ #2 ~ scn } }
+\cs_new_protected:Npn \__color_backend_stroke_separation:nn #1#2
+ { \__kernel_backend_literal_pdf:n { /#1 ~ CS ~ #2 ~ SCN } }
+%% File: l3backend-box.dtx
+\cs_new_protected:Npn \__box_backend_clip:N #1
+ {
+ \__kernel_backend_scope_begin:
+ \__kernel_backend_literal_pdf:x
+ {
+ 0~
+ \dim_to_decimal_in_bp:n { -\box_dp:N #1 } ~
+ \dim_to_decimal_in_bp:n { \box_wd:N #1 } ~
+ \dim_to_decimal_in_bp:n { \box_ht:N #1 + \box_dp:N #1 } ~
+ re~W~n
+ }
+ \hbox_overlap_right:n { \box_use:N #1 }
+ \__kernel_backend_scope_end:
+ \skip_horizontal:n { \box_wd:N #1 }
+ }
+\cs_new_protected:Npn \__box_backend_rotate:Nn #1#2
+ { \exp_args:NNf \__box_backend_rotate_aux:Nn #1 { \fp_eval:n {#2} } }
+\cs_new_protected:Npn \__box_backend_rotate_aux:Nn #1#2
+ {
+ \__kernel_backend_scope_begin:
+ \box_set_wd:Nn #1 { 0pt }
+ \fp_set:Nn \l__box_backend_cos_fp { round ( cosd ( #2 ) , 5 ) }
+ \fp_compare:nNnT \l__box_backend_cos_fp = \c_zero_fp
+ { \fp_zero:N \l__box_backend_cos_fp }
+ \fp_set:Nn \l__box_backend_sin_fp { round ( sind ( #2 ) , 5 ) }
+ \__kernel_backend_matrix:x
+ {
+ \fp_use:N \l__box_backend_cos_fp \c_space_tl
+ \fp_compare:nNnTF \l__box_backend_sin_fp = \c_zero_fp
+ { 0~0 }
+ {
+ \fp_use:N \l__box_backend_sin_fp
+ \c_space_tl
+ \fp_eval:n { -\l__box_backend_sin_fp }
+ }
+ \c_space_tl
+ \fp_use:N \l__box_backend_cos_fp
+ }
+ \box_use:N #1
+ \__kernel_backend_scope_end:
+ }
+\fp_new:N \l__box_backend_cos_fp
+\fp_new:N \l__box_backend_sin_fp
+\cs_new_protected:Npn \__box_backend_scale:Nnn #1#2#3
+ {
+ \__kernel_backend_scope_begin:
+ \__kernel_backend_matrix:x
+ {
+ \fp_eval:n { round ( #2 , 5 ) } ~
+ 0~0~
+ \fp_eval:n { round ( #3 , 5 ) }
+ }
+ \hbox_overlap_right:n { \box_use:N #1 }
+ \__kernel_backend_scope_end:
+ }
+%% File: l3backend-draw.dtx
+\cs_new_eq:NN \__draw_backend_literal:n \__kernel_backend_literal_pdf:n
+\cs_generate_variant:Nn \__draw_backend_literal:n { x }
+\cs_new_protected:Npn \__draw_backend_begin:
+ { \__draw_backend_scope_begin: }
+\cs_new_protected:Npn \__draw_backend_end:
+ { \__draw_backend_scope_end: }
+\cs_new_eq:NN \__draw_backend_scope_begin: \__kernel_backend_scope_begin:
+\cs_new_eq:NN \__draw_backend_scope_end: \__kernel_backend_scope_end:
+\cs_new_protected:Npn \__draw_backend_moveto:nn #1#2
+ {
+ \__draw_backend_literal:x
+ { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ m }
+ }
+\cs_new_protected:Npn \__draw_backend_lineto:nn #1#2
+ {
+ \__draw_backend_literal:x
+ { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ l }
+ }
+\cs_new_protected:Npn \__draw_backend_curveto:nnnnnn #1#2#3#4#5#6
+ {
+ \__draw_backend_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
+ }
+ }
+\cs_new_protected:Npn \__draw_backend_rectangle:nnnn #1#2#3#4
+ {
+ \__draw_backend_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} ~
+ re
+ }
+ }
+\cs_new_protected:Npn \__draw_backend_evenodd_rule:
+ { \bool_gset_true:N \g__draw_draw_eor_bool }
+\cs_new_protected:Npn \__draw_backend_nonzero_rule:
+ { \bool_gset_false:N \g__draw_draw_eor_bool }
+\bool_new:N \g__draw_draw_eor_bool
+\cs_new_protected:Npn \__draw_backend_closepath:
+ { \__draw_backend_literal:n { h } }
+\cs_new_protected:Npn \__draw_backend_stroke:
+ { \__draw_backend_literal:n { S } }
+\cs_new_protected:Npn \__draw_backend_closestroke:
+ { \__draw_backend_literal:n { s } }
+\cs_new_protected:Npn \__draw_backend_fill:
+ {
+ \__draw_backend_literal:x
+ { f \bool_if:NT \g__draw_draw_eor_bool * }
+ }
+\cs_new_protected:Npn \__draw_backend_fillstroke:
+ {
+ \__draw_backend_literal:x
+ { B \bool_if:NT \g__draw_draw_eor_bool * }
+ }
+\cs_new_protected:Npn \__draw_backend_clip:
+ {
+ \__draw_backend_literal:x
+ { W \bool_if:NT \g__draw_draw_eor_bool * }
+ }
+\cs_new_protected:Npn \__draw_backend_discardpath:
+ { \__draw_backend_literal:n { n } }
+\cs_new_protected:Npn \__draw_backend_dash_pattern:nn #1#2
+ {
+ \__draw_backend_literal:x
+ {
+ [
+ \exp_args:Nf \use:n
+ { \clist_map_function:nN {#1} \__draw_backend_dash:n }
+ ] ~
+ \dim_to_decimal_in_bp:n {#2} ~ d
+ }
+ }
+\cs_new:Npn \__draw_backend_dash:n #1
+ { ~ \dim_to_decimal_in_bp:n {#1} }
+\cs_new_protected:Npn \__draw_backend_linewidth:n #1
+ {
+ \__draw_backend_literal:x
+ { \dim_to_decimal_in_bp:n {#1} ~ w }
+ }
+\cs_new_protected:Npn \__draw_backend_miterlimit:n #1
+ { \__draw_backend_literal:x { #1 ~ M } }
+\cs_new_protected:Npn \__draw_backend_cap_butt:
+ { \__draw_backend_literal:n { 0 ~ J } }
+\cs_new_protected:Npn \__draw_backend_cap_round:
+ { \__draw_backend_literal:n { 1 ~ J } }
+\cs_new_protected:Npn \__draw_backend_cap_rectangle:
+ { \__draw_backend_literal:n { 2 ~ J } }
+\cs_new_protected:Npn \__draw_backend_join_miter:
+ { \__draw_backend_literal:n { 0 ~ j } }
+\cs_new_protected:Npn \__draw_backend_join_round:
+ { \__draw_backend_literal:n { 1 ~ j } }
+\cs_new_protected:Npn \__draw_backend_join_bevel:
+ { \__draw_backend_literal:n { 2 ~ j } }
+\cs_new_protected:Npn \__draw_backend_cm:nnnn #1#2#3#4
+ {
+ \__kernel_backend_matrix:n { #1 ~ #2 ~ #3 ~ #4 }
+ }
+\cs_new_protected:Npn \__draw_backend_box_use:Nnnnn #1#2#3#4#5
+ {
+ \__kernel_backend_scope_begin:
+ \__draw_backend_cm:nnnn {#2} {#3} {#4} {#5}
+ \hbox_overlap_right:n { \box_use:N #1 }
+ \__kernel_backend_scope_end:
+ }
+%% File: l3backend-graphics.dtx
+\tl_new:N \l__graphics_graphics_attr_tl
+\cs_new_protected:Npn \__graphics_backend_getbb_jpg:n #1
+ {
+ \int_zero:N \l_graphics_page_int
+ \tl_clear:N \l_graphics_pagebox_tl
+ \tl_set:Nx \l__graphics_graphics_attr_tl
+ {
+ \tl_if_empty:NF \l_graphics_decodearray_tl
+ { :D \l_graphics_decodearray_tl }
+ \bool_if:NT \l_graphics_interpolate_bool
+ { :I }
+ }
+ \tl_clear:N \l__graphics_graphics_attr_tl
+ \__graphics_backend_getbb_auxi:n {#1}
+ }
+\cs_new_eq:NN \__graphics_backend_getbb_png:n \__graphics_backend_getbb_jpg:n
+\cs_new_protected:Npn \__graphics_backend_getbb_pdf:n #1
+ {
+ \tl_clear:N \l_graphics_decodearray_tl
+ \bool_set_false:N \l_graphics_interpolate_bool
+ \tl_set:Nx \l__graphics_graphics_attr_tl
+ {
+ : \l_graphics_pagebox_tl
+ \int_compare:nNnT \l_graphics_page_int > 1
+ { :P \int_use:N \l_graphics_page_int }
+ }
+ \__graphics_backend_getbb_auxi:n {#1}
+ }
+\cs_new_protected:Npn \__graphics_backend_getbb_auxi:n #1
+ {
+ \graphics_bb_restore:xF { #1 \l__graphics_graphics_attr_tl }
+ { \__graphics_backend_getbb_auxii:n {#1} }
+ }
+\cs_new_protected:Npn \__graphics_backend_getbb_auxii:n #1
+ {
+ \tex_immediate:D \tex_pdfximage:D
+ \bool_lazy_or:nnT
+ { \l_graphics_interpolate_bool }
+ { ! \tl_if_empty_p:N \l_graphics_decodearray_tl }
+ {
+ attr ~
+ {
+ \tl_if_empty:NF \l_graphics_decodearray_tl
+ { /Decode~[ \l_graphics_decodearray_tl ] }
+ \bool_if:NT \l_graphics_interpolate_bool
+ { /Interpolate~true }
+ }
+ }
+ \int_compare:nNnT \l_graphics_page_int > 0
+ { page ~ \int_use:N \l_graphics_page_int }
+ \tl_if_empty:NF \l_graphics_pagebox_tl
+ { \l_graphics_pagebox_tl }
+ {#1}
+ \hbox_set:Nn \l__graphics_internal_box
+ { \tex_pdfrefximage:D \tex_pdflastximage:D }
+ \dim_set:Nn \l_graphics_urx_dim { \box_wd:N \l__graphics_internal_box }
+ \dim_set:Nn \l_graphics_ury_dim { \box_ht:N \l__graphics_internal_box }
+ \int_const:cn { c__graphics_graphics_ #1 \l__graphics_graphics_attr_tl _int }
+ { \tex_the:D \tex_pdflastximage:D }
+ \graphics_bb_save:x { #1 \l__graphics_graphics_attr_tl }
+ }
+\cs_new_protected:Npn \__graphics_backend_include_jpg:n #1
+ {
+ \tex_pdfrefximage:D
+ \int_use:c { c__graphics_graphics_ #1 \l__graphics_graphics_attr_tl _int }
+ }
+\cs_new_eq:NN \__graphics_backend_include_pdf:n \__graphics_backend_include_jpg:n
+\cs_new_eq:NN \__graphics_backend_include_png:n \__graphics_backend_include_jpg:n
+\sys_if_shell:T
+ {
+ \str_new:N \l__graphics_backend_dir_str
+ \str_new:N \l__graphics_backend_name_str
+ \str_new:N \l__graphics_backend_ext_str
+ \cs_new_protected:Npn \__graphics_backend_getbb_eps:n #1
+ {
+ \file_parse_full_name:nNNN {#1}
+ \l__graphics_backend_dir_str
+ \l__graphics_backend_name_str
+ \l__graphics_backend_ext_str
+ \exp_args:Nx \__graphics_backend_getbb_eps:nn
+ {
+ \l__graphics_backend_name_str - \str_tail:N \l__graphics_backend_ext_str
+ -converted-to.pdf
+ }
+ {#1}
+ }
+ \cs_new_protected:Npn \__graphics_backend_getbb_eps:nn #1#2
+ {
+ \file_compare_timestamp:nNnT {#2} > {#1}
+ {
+ \sys_shell_now:n
+ { repstopdf ~ #2 ~ #1 }
+ }
+ \tl_set:Nn \l_graphics_name_tl {#1}
+ \__graphics_backend_getbb_pdf:n {#1}
+ }
+ \cs_new_protected:Npn \__graphics_backend_include_eps:n #1
+ {
+ \file_parse_full_name:nNNN {#1}
+ \l__graphics_backend_dir_str \l__graphics_backend_name_str \l__graphics_backend_ext_str
+ \exp_args:Nx \__graphics_backend_include_pdf:n
+ {
+ \l__graphics_backend_name_str - \str_tail:N \l__graphics_backend_ext_str
+ -converted-to.pdf
+ }
+ }
+ }
+%% File: l3backend-pdf.dtx
+\box_new:N \l__pdf_internal_box
+\cs_new_protected:Npn \__pdf_backend_annotation:nnnn #1#2#3#4
+ {
+ \tex_pdfannot:D
+ width ~ \dim_eval:n {#1} ~
+ height ~ \dim_eval:n {#2} ~
+ depth ~ \dim_eval:n {#3} ~
+ {#4}
+ }
+\cs_new:Npx \__pdf_backend_annotation_last:
+ {
+ \exp_not:N \int_value:w
+ \exp_not:N \tex_pdfannot:D
+ \c_space_tl 0 ~ R
+ }
+\cs_new_protected:Npn \__pdf_backend_link_begin_goto:nnw #1#2
+ { \__pdf_backend_link_begin:nnnw {#1} { goto~name } {#2} }
+\cs_new_protected:Npn \__pdf_backend_link_begin_user:nnw #1#2
+ { \__pdf_backend_link_begin:nnnw {#1} { user } {#2} }
+\cs_new_protected:Npn \__pdf_backend_link_begin:nnnw #1#2#3
+ {
+ \tex_pdfstartlink:D
+ attr {#1}
+ #2 {#3}
+ }
+\cs_new_protected:Npn \__pdf_backend_link_end:
+ {
+ \tex_pdfendlink:D
+ }
+\cs_new:Npx \__pdf_backend_link_last:
+ {
+ \exp_not:N \int_value:w
+ \exp_not:N \tex_pdflastlink:D
+ \c_space_tl 0 ~ R
+ }
+\cs_new_protected:Npn \__pdf_backend_link_margin:n #1
+ {
+ \tex_pdflinkmargin:D
+ \dim_eval:n {#1} \scan_stop:
+ }
+\cs_new_protected:Npn \__pdf_backend_destination:nn #1#2
+ {
+ \tex_pdfdest:D
+ name {#1}
+ \str_case:nnF {#2}
+ {
+ { xyz } { xyz }
+ { fit } { fit }
+ { fitb } { fitb }
+ { fitbh } { fitbh }
+ { fitbv } { fitbv }
+ { fith } { fith }
+ { fitv } { fitv }
+ }
+ { xyz ~ zoom \fp_eval:n { #2 * 10 } }
+ \scan_stop:
+ }
+\cs_new_protected:Npn \__pdf_backend_destination_box:nn #1#2
+ {
+ \group_begin:
+ \hbox_set:Nn \l__pdf_internal_box {#2}
+ \tex_pdfdest:D
+ name {#1}
+ fitr ~
+ width \box_wd:N \l__pdf_internal_box
+ height \box_ht:N \l__pdf_internal_box
+ depth \box_dp:N \l__pdf_internal_box
+ \box_use:N \l__pdf_internal_box
+ \group_end:
+ }
+\cs_new_protected:Npn \__pdf_backend_catalog_gput:nn #1#2
+ {
+ \tex_pdfcatalog:D
+ { / #1 ~ #2 }
+ }
+\cs_new_protected:Npn \__pdf_backend_info_gput:nn #1#2
+ {
+ \tex_pdfinfo:D
+ { / #1 ~ #2 }
+ }
+\prop_new:N \g__pdf_backend_object_prop
+\cs_new_protected:Npn \__pdf_backend_object_new:nn #1#2
+ {
+ \tex_pdfobj:D
+ reserveobjnum ~
+ \int_const:cn
+ { c__pdf_backend_object_ \tl_to_str:n {#1} _int }
+ { \tex_pdflastobj:D }
+ \prop_gput:Nnn \exp_not:N \g__pdf_backend_object_prop {#1} {#2}
+ }
+\cs_new:Npn \__pdf_backend_object_ref:n #1
+ { \int_use:c { c__pdf_backend_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R }
+\cs_new_protected:Npn \__pdf_backend_object_write:nn #1#2
+ {
+ \tex_immediate:D \tex_pdfobj:D
+ useobjnum ~
+ \int_use:c
+ { c__pdf_backend_object_ \tl_to_str:n {#1} _int }
+ \str_case_e:nn
+ { \prop_item:Nn \g__pdf_backend_object_prop {#1} }
+ {
+ { array } { { [ ~ \exp_not:n {#2} ~ ] } }
+ { dict } { { << ~ \exp_not:n {#2} ~ >> } }
+ { fstream }
+ {
+ stream ~ attr ~ { \__pdf_exp_not_i:nn #2 } ~
+ file ~ { \__pdf_exp_not_ii:nn #2 }
+ }
+ { stream }
+ {
+ stream ~ attr ~ { \__pdf_exp_not_i:nn #2 } ~
+ { \__pdf_exp_not_ii:nn #2 }
+ }
+ }
+ }
+\cs_generate_variant:Nn \__pdf_backend_object_write:nn { nx }
+\cs_new:Npn \__pdf_exp_not_i:nn #1#2 { \exp_not:n {#1} }
+\cs_new:Npn \__pdf_exp_not_ii:nn #1#2 { \exp_not:n {#2} }
+\cs_new_protected:Npn \__pdf_backend_object_now:nn #1#2
+ {
+ \tex_immediate:D \tex_pdfobj:D
+ \str_case:nn
+ {#1}
+ {
+ { array } { { [ ~ \exp_not:n {#2} ~ ] } }
+ { dict } { { << ~ \exp_not:n {#2} ~ >> } }
+ { fstream }
+ {
+ stream ~ attr ~ { \__pdf_exp_not_i:nn #2 } ~
+ file ~ { \__pdf_exp_not_ii:nn #2 }
+ }
+ { stream }
+ {
+ stream ~ attr ~ { \__pdf_exp_not_i:nn #2 } ~
+ { \__pdf_exp_not_ii:nn #2 }
+ }
+ }
+ }
+\cs_generate_variant:Nn \__pdf_backend_object_now:nn { nx }
+\cs_new:Npx \__pdf_backend_object_last:
+ {
+ \exp_not:N \int_value:w
+ \exp_not:N \tex_pdflastobj:D
+ \c_space_tl 0 ~ R
+ }
+\cs_new:Npx \__pdf_backend_pageobject_ref:n #1
+ {
+ \exp_not:N \int_value:w
+ \exp_not:N \tex_pdfpageref:D
+ \c_space_tl #1 \c_space_tl \c_space_tl \c_space_tl 0 ~ R
+ }
+\cs_new_protected:Npn \__pdf_backend_compresslevel:n #1
+ {
+ \tex_global:D
+ \tex_pdfcompresslevel:D
+ \int_value:w \int_eval:n {#1} \scan_stop:
+ }
+\cs_new_protected:Npn \__pdf_backend_compress_objects:n #1
+ {
+ \bool_if:nTF {#1}
+ { \__pdf_backend_objcompresslevel:n { 2 } }
+ { \__pdf_backend_objcompresslevel:n { 0 } }
+ }
+\cs_new_protected:Npn \__pdf_backend_objcompresslevel:n #1
+ {
+ \tex_global:D
+ \tex_pdfobjcompresslevel:D
+ #1 \scan_stop:
+ }
+\cs_new_protected:Npx \__pdf_backend_version_major_gset:n #1
+ {
+ \cs_if_exist:NT \tex_pdfmajorversion:D
+ {
+ \exp_not:N \tex_global:D \tex_pdfmajorversion:D
+ \exp_not:N \int_eval:n {#1} \scan_stop:
+ }
+ }
+\cs_new_protected:Npn \__pdf_backend_version_minor_gset:n #1
+ {
+ \tex_global:D
+ \tex_pdfminorversion:D
+ \int_eval:n {#1} \scan_stop:
+ }
+\cs_new:Npx \__pdf_backend_version_major:
+ {
+ \cs_if_exist:NTF \tex_pdfmajorversion:D
+ { \exp_not:N \tex_the:D \tex_pdfmajorversion:D }
+ { 1 }
+ }
+\cs_new:Npn \__pdf_backend_version_minor:
+ {
+ \tex_the:D
+ \tex_pdfminorversion:D
+ }
+\cs_new_protected:Npn \__pdf_backend_bdc:nn #1#2
+ { \__kernel_backend_literal_page:n { /#1 ~ #2 ~ BDC } }
+\cs_new_protected:Npn \__pdf_backend_emc:
+ { \__kernel_backend_literal_page:n { EMC } }
+%%
+%%
+%% End of file `l3backend-pdftex.def'.
Property changes on: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Deleted: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xdvipdfmx.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xdvipdfmx.def 2020-09-02 21:34:30 UTC (rev 56243)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xdvipdfmx.def 2020-09-02 21:36:32 UTC (rev 56244)
@@ -1,654 +0,0 @@
-%%
-%% This is file `l3backend-xdvipdfmx.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% l3backend-basics.dtx (with options: `package,xdvipdfmx')
-%% l3backend-color.dtx (with options: `package,xdvipdfmx')
-%% l3backend-box.dtx (with options: `package,xdvipdfmx')
-%% l3backend-draw.dtx (with options: `package,xdvipdfmx')
-%% l3backend-graphics.dtx (with options: `package,xdvipdfmx')
-%% l3backend-pdf.dtx (with options: `package,xdvipdfmx')
-%%
-%% Copyright (C) 1990-2020 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:
-%%
-%% https://www.latex-project.org/lppl.txt
-%%
-%% This file is part of the "l3backend bundle" (The Work in LPPL)
-%% and all files in that bundle must be distributed together.
-%%
-%% File: l3backend-basics.dtx
-\ProvidesExplFile
- {l3backend-xdvipdfmx.def}{2020-08-07}{}
- {L3 backend support: xdvipdfmx}
-\cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D
-\cs_new_protected:Npn \__kernel_backend_literal:n #1
- { \__kernel_backend_literal:e { \exp_not:n {#1} } }
-\cs_generate_variant:Nn \__kernel_backend_literal:n { x }
-\cs_new_protected:Npn \__kernel_backend_literal_pdf:n #1
- { \__kernel_backend_literal:n { pdf:literal~ #1 } }
-\cs_generate_variant:Nn \__kernel_backend_literal_pdf:n { x }
-\cs_new_protected:Npn \__kernel_backend_literal_page:n #1
- { \__kernel_backend_literal:n { pdf:literal~direct~ #1 } }
-\cs_new_protected:Npn \__kernel_backend_scope_begin:
- { \__kernel_backend_literal:n { x:gsave } }
-\cs_new_protected:Npn \__kernel_backend_scope_end:
- { \__kernel_backend_literal:n { x:grestore } }
-%% File: l3backend-color.dtx
-\cs_new_protected:Npn \__color_backend_pickup:N #1 { }
-\cs_if_exist:cT { ver at color.sty }
- {
- \cs_set_protected:Npn \__color_backend_pickup:N #1
- {
- \exp_args:NV \tl_if_head_is_space:nTF \current at color
- {
- \tl_set:Nx #1
- {
- { \exp_after:wN \use:n \current at color }
- { 1 }
- }
- }
- {
- \exp_last_unbraced:Nx \__color_backend_pickup:w
- { \current at color } \s__color_stop #1
- }
- }
- \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3
- { \tl_set:Nn #3 { {#1} {#2} } }
- }
-\cs_new_protected:Npn \__color_backend_select_cmyk:n #1
- { \__color_backend_select:n { cmyk ~ #1 } }
-\cs_new_protected:Npn \__color_backend_select_gray:n #1
- { \__color_backend_select:n { gray ~ #1 } }
-\cs_new_protected:Npn \__color_backend_select_rgb:n #1
- { \__color_backend_select:n { rgb ~ #1 } }
-\cs_new_protected:Npn \__color_backend_select:n #1
- {
- \__kernel_backend_literal:n { color~push~ #1 }
- \group_insert_after:N \__color_backend_reset:
- }
-\cs_new_protected:Npn \__color_backend_reset:
- { \__kernel_backend_literal:n { color~pop } }
-\cs_new_protected:Npn \__color_backend_select_separation:nn #1#2
- { \__color_backend_select:n {#1} }
-\cs_new_protected:Npn \__color_backend_fill_cmyk:n #1
- { \__kernel_backend_literal_pdf:n { #1 ~ k } }
-\cs_new_protected:Npn \__color_backend_fill_gray:n #1
- { \__kernel_backend_literal_pdf:n { #1 ~ g } }
-\cs_new_protected:Npn \__color_backend_fill_rgb:n #1
- { \__kernel_backend_literal_pdf:n { #1 ~ rg } }
- \cs_new_protected:Npn \__color_backend_stroke_cmyk:n #1
- { \__kernel_backend_literal_pdf:n { #1 ~ K } }
-\cs_new_protected:Npn \__color_backend_stroke_gray:n #1
- { \__kernel_backend_literal_pdf:n { #1 ~ G } }
-\cs_new_protected:Npn \__color_backend_stroke_rgb:n #1
- { \__kernel_backend_literal_pdf:n { #1 ~ RG } }
-\cs_new_protected:Npn \__color_backend_fill_separation:nn #1#2
- { \__kernel_backend_literal_pdf:n { /#1 ~ cs ~ #2 ~ scn } }
-\cs_new_protected:Npn \__color_backend_stroke_separation:nn #1#2
- { \__kernel_backend_literal_pdf:n { /#1 ~ CS ~ #2 ~ SCN } }
-%% File: l3backend-box.dtx
-\cs_new_protected:Npn \__box_backend_clip:N #1
- {
- \__kernel_backend_scope_begin:
- \__kernel_backend_literal_pdf:x
- {
- 0~
- \dim_to_decimal_in_bp:n { -\box_dp:N #1 } ~
- \dim_to_decimal_in_bp:n { \box_wd:N #1 } ~
- \dim_to_decimal_in_bp:n { \box_ht:N #1 + \box_dp:N #1 } ~
- re~W~n
- }
- \hbox_overlap_right:n { \box_use:N #1 }
- \__kernel_backend_scope_end:
- \skip_horizontal:n { \box_wd:N #1 }
- }
-\cs_new_protected:Npn \__box_backend_rotate:Nn #1#2
- { \exp_args:NNf \__box_backend_rotate_aux:Nn #1 { \fp_eval:n {#2} } }
-\cs_new_protected:Npn \__box_backend_rotate_aux:Nn #1#2
- {
- \__kernel_backend_scope_begin:
- \__kernel_backend_literal:x
- {
- x:rotate~
- \fp_compare:nNnTF {#2} = \c_zero_fp
- { 0 }
- { \fp_eval:n { round ( #2 , 5 ) } }
- }
- \box_use:N #1
- \__kernel_backend_scope_end:
- }
-\cs_new_protected:Npn \__box_backend_scale:Nnn #1#2#3
- {
- \__kernel_backend_scope_begin:
- \__kernel_backend_literal:x
- {
- x:scale~
- \fp_eval:n { round ( #2 , 5 ) } ~
- \fp_eval:n { round ( #3 , 5 ) }
- }
- \hbox_overlap_right:n { \box_use:N #1 }
- \__kernel_backend_scope_end:
- }
-%% File: l3backend-draw.dtx
-\cs_new_eq:NN \__draw_backend_literal:n \__kernel_backend_literal_pdf:n
-\cs_generate_variant:Nn \__draw_backend_literal:n { x }
-\cs_new_protected:Npn \__draw_backend_begin:
- { \__draw_backend_scope_begin: }
-\cs_new_protected:Npn \__draw_backend_end:
- { \__draw_backend_scope_end: }
-\cs_new_eq:NN \__draw_backend_scope_begin: \__kernel_backend_scope_begin:
-\cs_new_eq:NN \__draw_backend_scope_end: \__kernel_backend_scope_end:
-\cs_new_protected:Npn \__draw_backend_moveto:nn #1#2
- {
- \__draw_backend_literal:x
- { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ m }
- }
-\cs_new_protected:Npn \__draw_backend_lineto:nn #1#2
- {
- \__draw_backend_literal:x
- { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ l }
- }
-\cs_new_protected:Npn \__draw_backend_curveto:nnnnnn #1#2#3#4#5#6
- {
- \__draw_backend_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
- }
- }
-\cs_new_protected:Npn \__draw_backend_rectangle:nnnn #1#2#3#4
- {
- \__draw_backend_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} ~
- re
- }
- }
-\cs_new_protected:Npn \__draw_backend_evenodd_rule:
- { \bool_gset_true:N \g__draw_draw_eor_bool }
-\cs_new_protected:Npn \__draw_backend_nonzero_rule:
- { \bool_gset_false:N \g__draw_draw_eor_bool }
-\bool_new:N \g__draw_draw_eor_bool
-\cs_new_protected:Npn \__draw_backend_closepath:
- { \__draw_backend_literal:n { h } }
-\cs_new_protected:Npn \__draw_backend_stroke:
- { \__draw_backend_literal:n { S } }
-\cs_new_protected:Npn \__draw_backend_closestroke:
- { \__draw_backend_literal:n { s } }
-\cs_new_protected:Npn \__draw_backend_fill:
- {
- \__draw_backend_literal:x
- { f \bool_if:NT \g__draw_draw_eor_bool * }
- }
-\cs_new_protected:Npn \__draw_backend_fillstroke:
- {
- \__draw_backend_literal:x
- { B \bool_if:NT \g__draw_draw_eor_bool * }
- }
-\cs_new_protected:Npn \__draw_backend_clip:
- {
- \__draw_backend_literal:x
- { W \bool_if:NT \g__draw_draw_eor_bool * }
- }
-\cs_new_protected:Npn \__draw_backend_discardpath:
- { \__draw_backend_literal:n { n } }
-\cs_new_protected:Npn \__draw_backend_dash_pattern:nn #1#2
- {
- \__draw_backend_literal:x
- {
- [
- \exp_args:Nf \use:n
- { \clist_map_function:nN {#1} \__draw_backend_dash:n }
- ] ~
- \dim_to_decimal_in_bp:n {#2} ~ d
- }
- }
-\cs_new:Npn \__draw_backend_dash:n #1
- { ~ \dim_to_decimal_in_bp:n {#1} }
-\cs_new_protected:Npn \__draw_backend_linewidth:n #1
- {
- \__draw_backend_literal:x
- { \dim_to_decimal_in_bp:n {#1} ~ w }
- }
-\cs_new_protected:Npn \__draw_backend_miterlimit:n #1
- { \__draw_backend_literal:x { #1 ~ M } }
-\cs_new_protected:Npn \__draw_backend_cap_butt:
- { \__draw_backend_literal:n { 0 ~ J } }
-\cs_new_protected:Npn \__draw_backend_cap_round:
- { \__draw_backend_literal:n { 1 ~ J } }
-\cs_new_protected:Npn \__draw_backend_cap_rectangle:
- { \__draw_backend_literal:n { 2 ~ J } }
-\cs_new_protected:Npn \__draw_backend_join_miter:
- { \__draw_backend_literal:n { 0 ~ j } }
-\cs_new_protected:Npn \__draw_backend_join_round:
- { \__draw_backend_literal:n { 1 ~ j } }
-\cs_new_protected:Npn \__draw_backend_join_bevel:
- { \__draw_backend_literal:n { 2 ~ j } }
-\cs_new_protected:Npn \__draw_backend_cm:nnnn #1#2#3#4
- {
- \__draw_backend_cm_decompose:nnnnN {#1} {#2} {#3} {#4}
- \__draw_backend_cm_aux:nnnn
- }
-\cs_new_protected:Npn \__draw_backend_cm_aux:nnnn #1#2#3#4
- {
- \__kernel_backend_literal:x
- {
- x:rotate~
- \fp_compare:nNnTF {#1} = \c_zero_fp
- { 0 }
- { \fp_eval:n { round ( -#1 , 5 ) } }
- }
- \__kernel_backend_literal:x
- {
- x:scale~
- \fp_eval:n { round ( #2 , 5 ) } ~
- \fp_eval:n { round ( #3 , 5 ) }
- }
- \__kernel_backend_literal:x
- {
- x:rotate~
- \fp_compare:nNnTF {#4} = \c_zero_fp
- { 0 }
- { \fp_eval:n { round ( -#4 , 5 ) } }
- }
- }
-\cs_new_protected:Npn \__draw_backend_cm_decompose:nnnnN #1#2#3#4#5
- {
- \use:x
- {
- \__draw_backend_cm_decompose_auxi:nnnnN
- { \fp_eval:n { (#1 + #4) / 2 } }
- { \fp_eval:n { (#1 - #4) / 2 } }
- { \fp_eval:n { (#3 + #2) / 2 } }
- { \fp_eval:n { (#3 - #2) / 2 } }
- }
- #5
- }
-\cs_new_protected:Npn \__draw_backend_cm_decompose_auxi:nnnnN #1#2#3#4#5
- {
- \use:x
- {
- \__draw_backend_cm_decompose_auxii:nnnnN
- { \fp_eval:n { 2 * sqrt ( #1 * #1 + #4 * #4 ) } }
- { \fp_eval:n { 2 * sqrt ( #2 * #2 + #3 * #3 ) } }
- { \fp_eval:n { atand ( #3 , #2 ) } }
- { \fp_eval:n { atand ( #4 , #1 ) } }
- }
- #5
- }
-\cs_new_protected:Npn \__draw_backend_cm_decompose_auxii:nnnnN #1#2#3#4#5
- {
- \use:x
- {
- \__draw_backend_cm_decompose_auxiii:nnnnN
- { \fp_eval:n { ( #4 - #3 ) / 2 } }
- { \fp_eval:n { ( #1 + #2 ) / 2 } }
- { \fp_eval:n { ( #1 - #2 ) / 2 } }
- { \fp_eval:n { ( #4 + #3 ) / 2 } }
- }
- #5
- }
-\cs_new_protected:Npn \__draw_backend_cm_decompose_auxiii:nnnnN #1#2#3#4#5
- {
- \fp_compare:nNnTF { abs( #2 ) } > { abs ( #3 ) }
- { #5 {#1} {#2} {#3} {#4} }
- { #5 {#1} {#3} {#2} {#4} }
- }
-\cs_new_protected:Npn \__draw_backend_box_use:Nnnnn #1#2#3#4#5
- {
- \__kernel_backend_scope_begin:
- \__kernel_backend_literal:n
- { pdf:btrans~matrix~ #2 ~ #3 ~ #4 ~ #5 ~ 0 ~ 0 }
- \hbox_overlap_right:n { \box_use:N #1 }
- \__kernel_backend_literal:n { pdf:etrans }
- \__kernel_backend_scope_end:
- }
-%% File: l3backend-graphics.dtx
-\cs_new_eq:NN \__graphics_backend_getbb_eps:n \graphics_read_bb:n
-\int_new:N \g__graphics_track_int
-\cs_new_protected:Npn \__graphics_backend_include_eps:n #1
- {
- \__kernel_backend_literal:x
- {
- PSfile = #1 \c_space_tl
- llx = \dim_to_decimal_in_bp:n \l_graphics_llx_dim \c_space_tl
- lly = \dim_to_decimal_in_bp:n \l_graphics_lly_dim \c_space_tl
- urx = \dim_to_decimal_in_bp:n \l_graphics_urx_dim \c_space_tl
- ury = \dim_to_decimal_in_bp:n \l_graphics_ury_dim
- }
- }
-\cs_new_protected:Npn \__graphics_backend_include_jpg:n #1
- { \__graphics_backend_include_auxi:nn {#1} { image } }
-\cs_new_eq:NN \__graphics_backend_include_png:n \__graphics_backend_include_jpg:n
-\cs_new_protected:Npn \__graphics_backend_include_auxi:nn #1#2
- {
- \__graphics_backend_include_auxii:xnn
- {
- \tl_if_empty:NF \l_graphics_pagebox_tl
- { : \l_graphics_pagebox_tl }
- \int_compare:nNnT \l_graphics_page_int > 1
- { :P \int_use:N \l_graphics_page_int }
- \tl_if_empty:NF \l_graphics_decodearray_tl
- { :D \l_graphics_decodearray_tl }
- \bool_if:NT \l_graphics_interpolate_bool
- { :I }
- }
- {#1} {#2}
- }
-\cs_new_protected:Npn \__graphics_backend_include_auxii:nnn #1#2#3
- {
- \int_if_exist:cTF { c__graphics_graphics_ #2#1 _int }
- {
- \__kernel_backend_literal:x
- { pdf:usexobj~@graphic \int_use:c { c__graphics_graphics_ #2#1 _int } }
- }
- { \__graphics_backend_include_auxiii:nnn {#2} {#1} {#3} }
- }
-\cs_generate_variant:Nn \__graphics_backend_include_auxii:nnn { x }
-\cs_new_protected:Npn \__graphics_backend_include_auxiii:nnn #1#2#3
- {
- \int_gincr:N \g__graphics_track_int
- \int_const:cn { c__graphics_graphics_ #1#2 _int } { \g__graphics_track_int }
- \__kernel_backend_literal:x
- {
- pdf:#3~
- @graphic \int_use:c { c__graphics_graphics_ #1#2 _int } ~
- \int_compare:nNnT \l_graphics_page_int > 1
- { page ~ \int_use:N \l_graphics_page_int \c_space_tl }
- \tl_if_empty:NF \l_graphics_pagebox_tl
- {
- pagebox ~ \l_graphics_pagebox_tl \c_space_tl
- bbox ~
- \dim_to_decimal_in_bp:n \l_graphics_llx_dim \c_space_tl
- \dim_to_decimal_in_bp:n \l_graphics_lly_dim \c_space_tl
- \dim_to_decimal_in_bp:n \l_graphics_urx_dim \c_space_tl
- \dim_to_decimal_in_bp:n \l_graphics_ury_dim \c_space_tl
- }
- (#1)
- \bool_lazy_or:nnT
- { \l_graphics_interpolate_bool }
- { ! \tl_if_empty_p:N \l_graphics_decodearray_tl }
- {
- <<
- \tl_if_empty:NF \l_graphics_decodearray_tl
- { /Decode~[ \l_graphics_decodearray_tl ] }
- \bool_if:NT \l_graphics_interpolate_bool
- { /Interpolate~true> }
- >>
- }
- }
- }
-\cs_new_protected:Npn \__graphics_backend_getbb_jpg:n #1
- {
- \int_zero:N \l_graphics_page_int
- \tl_clear:N \l_graphics_pagebox_tl
- \__graphics_backend_getbb_auxi:nN {#1} \tex_XeTeXpicfile:D
- }
-\cs_new_eq:NN \__graphics_backend_getbb_png:n \__graphics_backend_getbb_jpg:n
-\cs_new_protected:Npn \__graphics_backend_getbb_pdf:n #1
- {
- \tl_clear:N \l_graphics_decodearray_tl
- \bool_set_false:N \l_graphics_interpolate_bool
- \__graphics_backend_getbb_auxi:nN {#1} \tex_XeTeXpdffile:D
- }
-\cs_new_protected:Npn \__graphics_backend_getbb_auxi:nN #1#2
- {
- \int_compare:nNnTF \l_graphics_page_int > 1
- { \__graphics_backend_getbb_auxii:VnN \l_graphics_page_int {#1} #2 }
- { \__graphics_backend_getbb_auxiii:nNnn {#1} #2 { :P 1 } { page 1 } }
- }
-\cs_new_protected:Npn \__graphics_backend_getbb_auxii:nnN #1#2#3
- { \__graphics_backend_getbb_auxiii:nNnn {#2} #3 { :P #1 } { page #1 } }
-\cs_generate_variant:Nn \__graphics_backend_getbb_auxii:nnN { V }
-\cs_new_protected:Npn \__graphics_backend_getbb_auxiii:nNnn #1#2#3#4
- {
- \tl_if_empty:NTF \l_graphics_pagebox_tl
- { \__graphics_backend_getbb_auxiv:VnNnn \l_graphics_pagebox_tl }
- { \__graphics_backend_getbb_auxv:nNnn }
- {#1} #2 {#3} {#4}
- }
-\cs_new_protected:Npn \__graphics_backend_getbb_auxiv:nnNnn #1#2#3#4#5
- {
- \use:x
- {
- \__graphics_backend_getbb_auxv:nNnn {#2} #3 { : #1 #4 }
- { #5 ~ \__graphics_backend_getbb_pagebox:w #1 }
- }
- }
-\cs_generate_variant:Nn \__graphics_backend_getbb_auxiv:nnNnn { V }
-\cs_new_protected:Npn \__graphics_backend_getbb_auxv:nNnn #1#2#3#4
- {
- \graphics_bb_restore:nF {#1#3}
- { \__graphics_backend_getbb_auxvi:nNnn {#1} #2 {#3} {#4} }
- }
-\cs_new_protected:Npn \__graphics_backend_getbb_auxvi:nNnn #1#2#3#4
- {
- \hbox_set:Nn \l__graphics_internal_box { #2 #1 ~ #4 }
- \dim_set:Nn \l_graphics_urx_dim { \box_wd:N \l__graphics_internal_box }
- \dim_set:Nn \l_graphics_ury_dim { \box_ht:N \l__graphics_internal_box }
- \graphics_bb_save:n {#1#3}
- }
-\cs_new:Npn \__graphics_backend_getbb_pagebox:w #1 box {#1}
-\cs_new_protected:Npn \__graphics_backend_include_pdf:n #1
- {
- \tex_XeTeXpdffile:D
- \__graphics_backend_include_pdf_quote:w #1 "#1" \s__graphics_stop \c_space_tl
- \int_compare:nNnT \l_graphics_page_int > 0
- { page ~ \int_use:N \l_graphics_page_int \c_space_tl }
- \exp_after:wN \__graphics_backend_getbb_pagebox:w \l_graphics_pagebox_tl
- }
-\cs_new:Npn \__graphics_backend_include_pdf_quote:w #1 " #2 " #3 \s__graphics_stop
- { " #2 " }
-%% File: l3backend-pdf.dtx
-\box_new:N \l__pdf_internal_box
-\cs_new_protected:Npx \__pdf_backend:n #1
- { \__kernel_backend_literal:n { pdf: #1 } }
-\cs_generate_variant:Nn \__pdf_backend:n { x }
-\cs_new_protected:Npn \__pdf_backend_catalog_gput:nn #1#2
- { \__pdf_backend:n { put ~ @catalog << /#1 ~ #2 >> } }
-\cs_new_protected:Npn \__pdf_backend_info_gput:nn #1#2
- { \__pdf_backend:n { docinfo << /#1 ~ #2 >> } }
-\int_new:N \g__pdf_backend_object_int
-\prop_new:N \g__pdf_backend_object_prop
-\cs_new_protected:Npn \__pdf_backend_object_new:nn #1#2
- {
- \int_gincr:N \g__pdf_backend_object_int
- \int_const:cn
- { c__pdf_backend_object_ \tl_to_str:n {#1} _int }
- { \g__pdf_backend_object_int }
- \prop_gput:Nnn \g__pdf_backend_object_prop {#1} {#2}
- }
-\cs_new:Npn \__pdf_backend_object_ref:n #1
- { @pdf.obj \int_use:c { c__pdf_backend_object_ \tl_to_str:n {#1} _int } }
-\cs_new_protected:Npn \__pdf_backend_object_write:nn #1#2
- {
- \exp_args:Nx \__pdf_backend_object_write:nnn
- { \prop_item:Nn \g__pdf_backend_object_prop {#1} } {#1} {#2}
- }
-\cs_generate_variant:Nn \__pdf_backend_object_write:nn { nx }
-\cs_new_protected:Npn \__pdf_backend_object_write:nnn #1#2#3
- {
- \use:c { __pdf_backend_object_write_ #1 :nn }
- { \__pdf_backend_object_ref:n {#2} } {#3}
- }
-\cs_new_protected:Npn \__pdf_backend_object_write_array:nn #1#2
- {
- \__pdf_backend:x
- { obj ~ #1 ~ [ ~ \exp_not:n {#2} ~ ] }
- }
-\cs_new_protected:Npn \__pdf_backend_object_write_dict:nn #1#2
- {
- \__pdf_backend:x
- { obj ~ #1 ~ << ~ \exp_not:n {#2} ~ >> }
- }
-\cs_new_protected:Npn \__pdf_backend_object_write_fstream:nn #1#2
- { \__pdf_backend_object_write_stream:nnnn { f } {#1} #2 }
-\cs_new_protected:Npn \__pdf_backend_object_write_stream:nn #1#2
- { \__pdf_backend_object_write_stream:nnnn { } {#1} #2 }
-\cs_new_protected:Npn \__pdf_backend_object_write_stream:nnnn #1#2#3#4
- {
- \__pdf_backend:x
- {
- #1 stream ~ #2 ~
- ( \exp_not:n {#4} ) ~ << \exp_not:n {#3} >>
- }
- }
-\cs_new_protected:Npn \__pdf_backend_object_now:nn #1#2
- {
- \int_gincr:N \g__pdf_backend_object_int
- \exp_args:Nnx \use:c { __pdf_backend_object_write_ #1 :nn }
- { @pdf.obj \int_use:N \g__pdf_backend_object_int }
- {#2}
- }
-\cs_generate_variant:Nn \__pdf_backend_object_now:nn { nx }
-\cs_new:Npn \__pdf_backend_object_last:
- { @pdf.obj \int_use:N \g__pdf_backend_object_int }
-\cs_new:Npn \__pdf_backend_pageobject_ref:n #1
- { @page #1 }
-\bool_new:N \g__pdf_landscape_bool
-\cs_if_exist:NT \landscape
- {
- \tl_put_right:Nn \landscape
- { \bool_gset_true:N \g__pdf_landscape_bool }
- \tl_put_left:Nn \endlandscape
- { \bool_gset_false:N \g__pdf_landscape_bool }
- }
-\int_new:N \g__pdf_backend_annotation_int
-\cs_new_protected:Npn \__pdf_backend_annotation:nnnn #1#2#3#4
- {
- \bool_if:NTF \g__pdf_landscape_bool
- {
- \box_move_up:nn {#2}
- {
- \vbox:n
- {
- \__pdf_backend_annotation_aux:nnnn
- { #2 + #3 } {#1} { 0pt } {#4}
- }
- }
- }
- { \__pdf_backend_annotation_aux:nnnn {#1} {#2} {#3} {#4} }
- }
-\cs_new_protected:Npn \__pdf_backend_annotation_aux:nnnn #1#2#3#4
- {
- \int_gincr:N \g__pdf_backend_object_int
- \int_gset_eq:NN \g__pdf_backend_annotation_int \g__pdf_backend_object_int
- \__pdf_backend:x
- {
- ann ~ @pdf.obj \int_use:N \g__pdf_backend_object_int \c_space_tl
- width ~ \dim_eval:n {#1} ~
- height ~ \dim_eval:n {#2} ~
- depth ~ \dim_eval:n {#3} ~
- <</Type/Annot #4 >>
- }
- }
-\cs_new:Npn \__pdf_backend_annotation_last:
- { @pdf.obj \int_use:N \g__pdf_backend_annotation_int }
-\cs_new_protected:Npn \__pdf_backend_link_begin_goto:nnw #1#2
- { \__pdf_backend_link_begin:n { #1 /Subtype /Link /A << /S /GoTo /D ( #2 ) >> } }
-\cs_new_protected:Npn \__pdf_backend_link_begin_user:nnw #1#2
- { \__pdf_backend_link_begin:n {#1#2} }
-\cs_new_protected:Npn \__pdf_backend_link_begin:n #1
- {
- \__pdf_backend:n
- {
- bann
- <<
- /Type /Annot
- #1
- >>
- }
- }
-\cs_new_protected:Npn \__pdf_backend_link_end:
- { \__pdf_backend:n { eann } }
-\cs_new:Npn \__pdf_backend_link_last: { }
-\cs_new_protected:Npn \__pdf_backend_link_margin:n #1
- { \__kernel_backend_literal:x { dvipdfmx:config~g~ \dim_eval:n {#1} } }
-\cs_new_protected:Npn \__pdf_backend_destination:nn #1#2
- {
- \__pdf_backend:x
- {
- dest ~ ( \exp_not:n {#1} )
- [
- @thispage
- \str_case:nnF {#2}
- {
- { xyz } { /XYZ ~ @xpos ~ @ypos ~ null }
- { fit } { /Fit }
- { fitb } { /FitB }
- { fitbh } { /FitBH }
- { fitbv } { /FitBV ~ @xpos }
- { fith } { /FitH ~ @ypos }
- { fitv } { /FitV ~ @xpos }
- }
- { /XYZ ~ @xpos ~ @ypos ~ \fp_eval:n { (#2) / 100 } }
- ]
- }
- }
-\cs_new_protected:Npn \__pdf_backend_destination_box:nn #1#2
- {
- \group_begin:
- \hbox_set:Nn \l__pdf_internal_box {#2}
- \box_move_down:nn { \box_dp:N \l__pdf_internal_box }
- {
- \hbox:n
- {
- \__pdf_backend:n { obj ~ @pdf_ #1 _llx ~ @xpos }
- \__pdf_backend:n { obj ~ @pdf_ #1 _lly ~ @ypos }
- }
- }
- \box_use:N \l__pdf_internal_box
- \box_move_up:nn { \box_ht:N \l__pdf_internal_box }
- {
- \hbox:n
- {
- \__pdf_backend:n
- {
- dest ~ (#1)
- [
- @thispage
- /FitR ~
- @pdf_ #1 _llx ~ @pdf_ #1 _lly ~
- @xpos ~ @ypos
- ]
- }
- }
- }
- \group_end:
- }
-\cs_new_protected:Npn \__pdf_backend_compresslevel:n #1
- { \__kernel_backend_literal:x { dvipdfmx:config~z~ \int_eval:n {#1} } }
-\cs_new_protected:Npn \__pdf_backend_compress_objects:n #1
- {
- \bool_if:nF {#1}
- { \__kernel_backend_literal:n { dvipdfmx:config~C~0x40 } }
- }
-\cs_new_protected:Npn \__pdf_backend_version_major_gset:n #1
- {
- \cs_gset:Npx \__pdf_backend_version_major: { \int_eval:n {#1} }
- \__kernel_backend_literal:x { pdf:majorversion~ \__pdf_backend_version_major: }
- }
-\cs_new_protected:Npn \__pdf_backend_version_minor_gset:n #1
- {
- \cs_gset:Npx \__pdf_backend_version_minor: { \int_eval:n {#1} }
- \__kernel_backend_literal:x { pdf:minorversion~ \__pdf_backend_version_minor: }
- }
-\cs_new:Npn \__pdf_backend_version_major: { 1 }
-\cs_new:Npn \__pdf_backend_version_minor: { 5 }
-\cs_new_protected:Npn \__pdf_backend_bdc:nn #1#2
- { \__kernel_backend_literal_page:n { /#1 ~ #2 ~ BDC } }
-\cs_new_protected:Npn \__pdf_backend_emc:
- { \__kernel_backend_literal_page:n { EMC } }
-%%
-%%
-%% End of file `l3backend-xdvipdfmx.def'.
Added: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def 2020-09-02 21:36:32 UTC (rev 56244)
@@ -0,0 +1,715 @@
+%%
+%% This is file `l3backend-xetex.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3backend-basics.dtx (with options: `package,xetex')
+%% l3backend-color.dtx (with options: `package,xetex')
+%% l3backend-box.dtx (with options: `package,xetex')
+%% l3backend-draw.dtx (with options: `package,xetex')
+%% l3backend-graphics.dtx (with options: `package,xetex')
+%% l3backend-pdf.dtx (with options: `package,xetex')
+%%
+%% Copyright (C) 1990-2020 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:
+%%
+%% https://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the "l3backend bundle" (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+%% File: l3backend-basics.dtx
+\ProvidesExplFile
+ {l3backend-xetex.def}{2020-09-01}{}
+ {L3 backend support: XeTeX}
+\cs_if_exist:NTF \__kernel_dependency_version_check:nn
+ {
+ \__kernel_dependency_version_check:nn {2020-09-01}
+ {l3backend-xetex.def}
+ }
+ {
+ \cs_if_exist_use:cF { @latex at error } { \errmessage }
+ {
+ Mismatched~LaTeX~support~files~detected. \MessageBreak
+ Loading~aborted!
+ }
+ { \use:c { @ehd } }
+ \tex_endinput:D
+ }
+\cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D
+\cs_new_protected:Npn \__kernel_backend_literal:n #1
+ { \__kernel_backend_literal:e { \exp_not:n {#1} } }
+\cs_generate_variant:Nn \__kernel_backend_literal:n { x }
+\cs_new_protected:Npn \__kernel_backend_literal_pdf:n #1
+ { \__kernel_backend_literal:n { pdf:literal~ #1 } }
+\cs_generate_variant:Nn \__kernel_backend_literal_pdf:n { x }
+\cs_new_protected:Npn \__kernel_backend_literal_page:n #1
+ { \__kernel_backend_literal:n { pdf:literal~direct~ #1 } }
+\cs_new_protected:Npn \__kernel_backend_scope_begin:
+ { \__kernel_backend_literal:n { x:gsave } }
+\cs_new_protected:Npn \__kernel_backend_scope_end:
+ { \__kernel_backend_literal:n { x:grestore } }
+%% File: l3backend-color.dtx
+\cs_new_protected:Npn \__color_backend_select_cmyk:n #1
+ {
+ \__kernel_backend_literal:n { pdf: bc ~ [#1] }
+ \group_insert_after:N \__color_backend_reset:
+ }
+\cs_new_eq:NN \__color_backend_select_gray:n \__color_backend_select_cmyk:n
+\cs_new_eq:NN \__color_backend_select_rgb:n \__color_backend_select_cmyk:n
+\cs_new_protected:Npn \__color_backend_reset:
+ { \__kernel_backend_literal:n { pdf: ec } }
+\cs_new_protected:Npn \__color_backend_pickup:N #1 { }
+\cs_if_exist:cT { ver at color.sty }
+ {
+ \cs_set_protected:Npn \__color_backend_pickup:N #1
+ {
+ \exp_args:NV \tl_if_head_is_space:nTF \current at color
+ {
+ \tl_set:Nx #1
+ {
+ { \exp_after:wN \use:n \current at color }
+ { 1 }
+ }
+ }
+ {
+ \exp_last_unbraced:Nx \__color_backend_pickup:w
+ { \current at color } \s__color_stop #1
+ }
+ }
+ \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3
+ { \tl_set:Nn #3 { {#1} {#2} } }
+ }
+\cs_new_protected:Npn \__color_backend_select_separation:nn #1#2
+ { \__color_backend_select:n { @#1 ~ [#2] } }
+\cs_new_protected:Npn \__color_backend_separation_init:nnnnn #1#2#3#4#5
+ {
+ \__color_backend_separation_init:n
+ {
+ /Separation
+ / \str_convert_pdfname:n {#1} ~ #2 ~
+ <<
+ /FunctionType ~ 2
+ /Domain ~ [0 ~ 1]
+ \tl_if_blank:nF {#3} { /Range ~ [#3] }
+ /C0 ~ [#4] ~
+ /C1 ~ [#5] /N ~ 1
+ >>
+ }
+ }
+\cs_if_exist:NF \pdf_object_now:nn
+ { \cs_gset_protected:Npn \__color_backend_separation_init:nnnnn #1#2#3#4#5 { } }
+\cs_new_protected:Npn \__color_backend_separation_init:n #1
+ {
+ \__kernel_backend_literal:x
+ {
+ pdf:obj ~ @ color \int_use:N \g__color_separation_int \c_space_tl
+ [#1]
+ }
+ }
+\cs_new_protected:Npn \__color_backend_separation_init_cielab:nnnnn #1#2#3#4#5
+ {
+ \__color_backend_separation_init:nnnnn
+ {#2}
+ { \pdf_object_ref:n { __color_illuminant_cielab_ #1 } }
+ { \c__color_model_range_lab_tl }
+ { 100 ~ 0 ~ 0 }
+ { #3 ~ #4 ~ #5 }
+ }
+\cs_if_exist:NF \pdf_object_now:nn
+ { \cs_gset_protected:Npn \__color_backend_separation_init_cielab:nnnnn #1#2#3#4#5 { } }
+\cs_new_protected:Npn \__color_backend_separation_init_cielab:n #1
+ {
+ \pdf_object_new:nn { __color_illuminant_cielab_ #1 } { array }
+ \pdf_object_write:nx { __color_illuminant_cielab_ #1 }
+ {
+ /Lab ~
+ <<
+ /WhitePoint ~
+ [ \tl_use:c { c__color_model_whitepoint_cielab_ #1 _tl } ]
+ /Range ~ [ \c__color_model_range_lab_tl ]
+ >>
+ }
+ }
+\cs_if_exist:NF \pdf_object_new:nn
+ { \cs_gset_protected:Npn \__color_backend_separation_init_cielab:n #1 { } }
+\cs_new_protected:Npn \__color_backend_fill_cmyk:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ k } }
+\cs_new_protected:Npn \__color_backend_fill_gray:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ g } }
+\cs_new_protected:Npn \__color_backend_fill_rgb:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ rg } }
+ \cs_new_protected:Npn \__color_backend_stroke_cmyk:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ K } }
+\cs_new_protected:Npn \__color_backend_stroke_gray:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ G } }
+\cs_new_protected:Npn \__color_backend_stroke_rgb:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ RG } }
+\cs_new_protected:Npn \__color_backend_fill_separation:nn #1#2
+ { \__kernel_backend_literal_pdf:n { /#1 ~ cs ~ #2 ~ scn } }
+\cs_new_protected:Npn \__color_backend_stroke_separation:nn #1#2
+ { \__kernel_backend_literal_pdf:n { /#1 ~ CS ~ #2 ~ SCN } }
+%% File: l3backend-box.dtx
+\cs_new_protected:Npn \__box_backend_clip:N #1
+ {
+ \__kernel_backend_scope_begin:
+ \__kernel_backend_literal_pdf:x
+ {
+ 0~
+ \dim_to_decimal_in_bp:n { -\box_dp:N #1 } ~
+ \dim_to_decimal_in_bp:n { \box_wd:N #1 } ~
+ \dim_to_decimal_in_bp:n { \box_ht:N #1 + \box_dp:N #1 } ~
+ re~W~n
+ }
+ \hbox_overlap_right:n { \box_use:N #1 }
+ \__kernel_backend_scope_end:
+ \skip_horizontal:n { \box_wd:N #1 }
+ }
+\cs_new_protected:Npn \__box_backend_rotate:Nn #1#2
+ { \exp_args:NNf \__box_backend_rotate_aux:Nn #1 { \fp_eval:n {#2} } }
+\cs_new_protected:Npn \__box_backend_rotate_aux:Nn #1#2
+ {
+ \__kernel_backend_scope_begin:
+ \__kernel_backend_literal:x
+ {
+ x:rotate~
+ \fp_compare:nNnTF {#2} = \c_zero_fp
+ { 0 }
+ { \fp_eval:n { round ( #2 , 5 ) } }
+ }
+ \box_use:N #1
+ \__kernel_backend_scope_end:
+ }
+\cs_new_protected:Npn \__box_backend_scale:Nnn #1#2#3
+ {
+ \__kernel_backend_scope_begin:
+ \__kernel_backend_literal:x
+ {
+ x:scale~
+ \fp_eval:n { round ( #2 , 5 ) } ~
+ \fp_eval:n { round ( #3 , 5 ) }
+ }
+ \hbox_overlap_right:n { \box_use:N #1 }
+ \__kernel_backend_scope_end:
+ }
+%% File: l3backend-draw.dtx
+\cs_new_eq:NN \__draw_backend_literal:n \__kernel_backend_literal_pdf:n
+\cs_generate_variant:Nn \__draw_backend_literal:n { x }
+\cs_new_protected:Npn \__draw_backend_begin:
+ { \__draw_backend_scope_begin: }
+\cs_new_protected:Npn \__draw_backend_end:
+ { \__draw_backend_scope_end: }
+\cs_new_eq:NN \__draw_backend_scope_begin: \__kernel_backend_scope_begin:
+\cs_new_eq:NN \__draw_backend_scope_end: \__kernel_backend_scope_end:
+\cs_new_protected:Npn \__draw_backend_moveto:nn #1#2
+ {
+ \__draw_backend_literal:x
+ { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ m }
+ }
+\cs_new_protected:Npn \__draw_backend_lineto:nn #1#2
+ {
+ \__draw_backend_literal:x
+ { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ l }
+ }
+\cs_new_protected:Npn \__draw_backend_curveto:nnnnnn #1#2#3#4#5#6
+ {
+ \__draw_backend_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
+ }
+ }
+\cs_new_protected:Npn \__draw_backend_rectangle:nnnn #1#2#3#4
+ {
+ \__draw_backend_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} ~
+ re
+ }
+ }
+\cs_new_protected:Npn \__draw_backend_evenodd_rule:
+ { \bool_gset_true:N \g__draw_draw_eor_bool }
+\cs_new_protected:Npn \__draw_backend_nonzero_rule:
+ { \bool_gset_false:N \g__draw_draw_eor_bool }
+\bool_new:N \g__draw_draw_eor_bool
+\cs_new_protected:Npn \__draw_backend_closepath:
+ { \__draw_backend_literal:n { h } }
+\cs_new_protected:Npn \__draw_backend_stroke:
+ { \__draw_backend_literal:n { S } }
+\cs_new_protected:Npn \__draw_backend_closestroke:
+ { \__draw_backend_literal:n { s } }
+\cs_new_protected:Npn \__draw_backend_fill:
+ {
+ \__draw_backend_literal:x
+ { f \bool_if:NT \g__draw_draw_eor_bool * }
+ }
+\cs_new_protected:Npn \__draw_backend_fillstroke:
+ {
+ \__draw_backend_literal:x
+ { B \bool_if:NT \g__draw_draw_eor_bool * }
+ }
+\cs_new_protected:Npn \__draw_backend_clip:
+ {
+ \__draw_backend_literal:x
+ { W \bool_if:NT \g__draw_draw_eor_bool * }
+ }
+\cs_new_protected:Npn \__draw_backend_discardpath:
+ { \__draw_backend_literal:n { n } }
+\cs_new_protected:Npn \__draw_backend_dash_pattern:nn #1#2
+ {
+ \__draw_backend_literal:x
+ {
+ [
+ \exp_args:Nf \use:n
+ { \clist_map_function:nN {#1} \__draw_backend_dash:n }
+ ] ~
+ \dim_to_decimal_in_bp:n {#2} ~ d
+ }
+ }
+\cs_new:Npn \__draw_backend_dash:n #1
+ { ~ \dim_to_decimal_in_bp:n {#1} }
+\cs_new_protected:Npn \__draw_backend_linewidth:n #1
+ {
+ \__draw_backend_literal:x
+ { \dim_to_decimal_in_bp:n {#1} ~ w }
+ }
+\cs_new_protected:Npn \__draw_backend_miterlimit:n #1
+ { \__draw_backend_literal:x { #1 ~ M } }
+\cs_new_protected:Npn \__draw_backend_cap_butt:
+ { \__draw_backend_literal:n { 0 ~ J } }
+\cs_new_protected:Npn \__draw_backend_cap_round:
+ { \__draw_backend_literal:n { 1 ~ J } }
+\cs_new_protected:Npn \__draw_backend_cap_rectangle:
+ { \__draw_backend_literal:n { 2 ~ J } }
+\cs_new_protected:Npn \__draw_backend_join_miter:
+ { \__draw_backend_literal:n { 0 ~ j } }
+\cs_new_protected:Npn \__draw_backend_join_round:
+ { \__draw_backend_literal:n { 1 ~ j } }
+\cs_new_protected:Npn \__draw_backend_join_bevel:
+ { \__draw_backend_literal:n { 2 ~ j } }
+\cs_new_protected:Npn \__draw_backend_cm:nnnn #1#2#3#4
+ {
+ \__draw_backend_cm_decompose:nnnnN {#1} {#2} {#3} {#4}
+ \__draw_backend_cm_aux:nnnn
+ }
+\cs_new_protected:Npn \__draw_backend_cm_aux:nnnn #1#2#3#4
+ {
+ \__kernel_backend_literal:x
+ {
+ x:rotate~
+ \fp_compare:nNnTF {#1} = \c_zero_fp
+ { 0 }
+ { \fp_eval:n { round ( -#1 , 5 ) } }
+ }
+ \__kernel_backend_literal:x
+ {
+ x:scale~
+ \fp_eval:n { round ( #2 , 5 ) } ~
+ \fp_eval:n { round ( #3 , 5 ) }
+ }
+ \__kernel_backend_literal:x
+ {
+ x:rotate~
+ \fp_compare:nNnTF {#4} = \c_zero_fp
+ { 0 }
+ { \fp_eval:n { round ( -#4 , 5 ) } }
+ }
+ }
+\cs_new_protected:Npn \__draw_backend_cm_decompose:nnnnN #1#2#3#4#5
+ {
+ \use:x
+ {
+ \__draw_backend_cm_decompose_auxi:nnnnN
+ { \fp_eval:n { (#1 + #4) / 2 } }
+ { \fp_eval:n { (#1 - #4) / 2 } }
+ { \fp_eval:n { (#3 + #2) / 2 } }
+ { \fp_eval:n { (#3 - #2) / 2 } }
+ }
+ #5
+ }
+\cs_new_protected:Npn \__draw_backend_cm_decompose_auxi:nnnnN #1#2#3#4#5
+ {
+ \use:x
+ {
+ \__draw_backend_cm_decompose_auxii:nnnnN
+ { \fp_eval:n { 2 * sqrt ( #1 * #1 + #4 * #4 ) } }
+ { \fp_eval:n { 2 * sqrt ( #2 * #2 + #3 * #3 ) } }
+ { \fp_eval:n { atand ( #3 , #2 ) } }
+ { \fp_eval:n { atand ( #4 , #1 ) } }
+ }
+ #5
+ }
+\cs_new_protected:Npn \__draw_backend_cm_decompose_auxii:nnnnN #1#2#3#4#5
+ {
+ \use:x
+ {
+ \__draw_backend_cm_decompose_auxiii:nnnnN
+ { \fp_eval:n { ( #4 - #3 ) / 2 } }
+ { \fp_eval:n { ( #1 + #2 ) / 2 } }
+ { \fp_eval:n { ( #1 - #2 ) / 2 } }
+ { \fp_eval:n { ( #4 + #3 ) / 2 } }
+ }
+ #5
+ }
+\cs_new_protected:Npn \__draw_backend_cm_decompose_auxiii:nnnnN #1#2#3#4#5
+ {
+ \fp_compare:nNnTF { abs( #2 ) } > { abs ( #3 ) }
+ { #5 {#1} {#2} {#3} {#4} }
+ { #5 {#1} {#3} {#2} {#4} }
+ }
+\cs_new_protected:Npn \__draw_backend_box_use:Nnnnn #1#2#3#4#5
+ {
+ \__kernel_backend_scope_begin:
+ \__kernel_backend_literal:n
+ { pdf:btrans~matrix~ #2 ~ #3 ~ #4 ~ #5 ~ 0 ~ 0 }
+ \hbox_overlap_right:n { \box_use:N #1 }
+ \__kernel_backend_literal:n { pdf:etrans }
+ \__kernel_backend_scope_end:
+ }
+%% File: l3backend-graphics.dtx
+\cs_new_eq:NN \__graphics_backend_getbb_eps:n \graphics_read_bb:n
+\int_new:N \g__graphics_track_int
+\cs_new_protected:Npn \__graphics_backend_include_eps:n #1
+ {
+ \__kernel_backend_literal:x
+ {
+ PSfile = #1 \c_space_tl
+ llx = \dim_to_decimal_in_bp:n \l_graphics_llx_dim \c_space_tl
+ lly = \dim_to_decimal_in_bp:n \l_graphics_lly_dim \c_space_tl
+ urx = \dim_to_decimal_in_bp:n \l_graphics_urx_dim \c_space_tl
+ ury = \dim_to_decimal_in_bp:n \l_graphics_ury_dim
+ }
+ }
+\cs_new_protected:Npn \__graphics_backend_include_jpg:n #1
+ { \__graphics_backend_include_auxi:nn {#1} { image } }
+\cs_new_eq:NN \__graphics_backend_include_png:n \__graphics_backend_include_jpg:n
+\cs_new_protected:Npn \__graphics_backend_include_auxi:nn #1#2
+ {
+ \__graphics_backend_include_auxii:xnn
+ {
+ \tl_if_empty:NF \l_graphics_pagebox_tl
+ { : \l_graphics_pagebox_tl }
+ \int_compare:nNnT \l_graphics_page_int > 1
+ { :P \int_use:N \l_graphics_page_int }
+ \tl_if_empty:NF \l_graphics_decodearray_tl
+ { :D \l_graphics_decodearray_tl }
+ \bool_if:NT \l_graphics_interpolate_bool
+ { :I }
+ }
+ {#1} {#2}
+ }
+\cs_new_protected:Npn \__graphics_backend_include_auxii:nnn #1#2#3
+ {
+ \int_if_exist:cTF { c__graphics_graphics_ #2#1 _int }
+ {
+ \__kernel_backend_literal:x
+ { pdf:usexobj~@graphic \int_use:c { c__graphics_graphics_ #2#1 _int } }
+ }
+ { \__graphics_backend_include_auxiii:nnn {#2} {#1} {#3} }
+ }
+\cs_generate_variant:Nn \__graphics_backend_include_auxii:nnn { x }
+\cs_new_protected:Npn \__graphics_backend_include_auxiii:nnn #1#2#3
+ {
+ \int_gincr:N \g__graphics_track_int
+ \int_const:cn { c__graphics_graphics_ #1#2 _int } { \g__graphics_track_int }
+ \__kernel_backend_literal:x
+ {
+ pdf:#3~
+ @graphic \int_use:c { c__graphics_graphics_ #1#2 _int } ~
+ \int_compare:nNnT \l_graphics_page_int > 1
+ { page ~ \int_use:N \l_graphics_page_int \c_space_tl }
+ \tl_if_empty:NF \l_graphics_pagebox_tl
+ {
+ pagebox ~ \l_graphics_pagebox_tl \c_space_tl
+ bbox ~
+ \dim_to_decimal_in_bp:n \l_graphics_llx_dim \c_space_tl
+ \dim_to_decimal_in_bp:n \l_graphics_lly_dim \c_space_tl
+ \dim_to_decimal_in_bp:n \l_graphics_urx_dim \c_space_tl
+ \dim_to_decimal_in_bp:n \l_graphics_ury_dim \c_space_tl
+ }
+ (#1)
+ \bool_lazy_or:nnT
+ { \l_graphics_interpolate_bool }
+ { ! \tl_if_empty_p:N \l_graphics_decodearray_tl }
+ {
+ <<
+ \tl_if_empty:NF \l_graphics_decodearray_tl
+ { /Decode~[ \l_graphics_decodearray_tl ] }
+ \bool_if:NT \l_graphics_interpolate_bool
+ { /Interpolate~true> }
+ >>
+ }
+ }
+ }
+\cs_new_protected:Npn \__graphics_backend_getbb_jpg:n #1
+ {
+ \int_zero:N \l_graphics_page_int
+ \tl_clear:N \l_graphics_pagebox_tl
+ \__graphics_backend_getbb_auxi:nN {#1} \tex_XeTeXpicfile:D
+ }
+\cs_new_eq:NN \__graphics_backend_getbb_png:n \__graphics_backend_getbb_jpg:n
+\cs_new_protected:Npn \__graphics_backend_getbb_pdf:n #1
+ {
+ \tl_clear:N \l_graphics_decodearray_tl
+ \bool_set_false:N \l_graphics_interpolate_bool
+ \__graphics_backend_getbb_auxi:nN {#1} \tex_XeTeXpdffile:D
+ }
+\cs_new_protected:Npn \__graphics_backend_getbb_auxi:nN #1#2
+ {
+ \int_compare:nNnTF \l_graphics_page_int > 1
+ { \__graphics_backend_getbb_auxii:VnN \l_graphics_page_int {#1} #2 }
+ { \__graphics_backend_getbb_auxiii:nNnn {#1} #2 { :P 1 } { page 1 } }
+ }
+\cs_new_protected:Npn \__graphics_backend_getbb_auxii:nnN #1#2#3
+ { \__graphics_backend_getbb_auxiii:nNnn {#2} #3 { :P #1 } { page #1 } }
+\cs_generate_variant:Nn \__graphics_backend_getbb_auxii:nnN { V }
+\cs_new_protected:Npn \__graphics_backend_getbb_auxiii:nNnn #1#2#3#4
+ {
+ \tl_if_empty:NTF \l_graphics_pagebox_tl
+ { \__graphics_backend_getbb_auxiv:VnNnn \l_graphics_pagebox_tl }
+ { \__graphics_backend_getbb_auxv:nNnn }
+ {#1} #2 {#3} {#4}
+ }
+\cs_new_protected:Npn \__graphics_backend_getbb_auxiv:nnNnn #1#2#3#4#5
+ {
+ \use:x
+ {
+ \__graphics_backend_getbb_auxv:nNnn {#2} #3 { : #1 #4 }
+ { #5 ~ \__graphics_backend_getbb_pagebox:w #1 }
+ }
+ }
+\cs_generate_variant:Nn \__graphics_backend_getbb_auxiv:nnNnn { V }
+\cs_new_protected:Npn \__graphics_backend_getbb_auxv:nNnn #1#2#3#4
+ {
+ \graphics_bb_restore:nF {#1#3}
+ { \__graphics_backend_getbb_auxvi:nNnn {#1} #2 {#3} {#4} }
+ }
+\cs_new_protected:Npn \__graphics_backend_getbb_auxvi:nNnn #1#2#3#4
+ {
+ \hbox_set:Nn \l__graphics_internal_box { #2 #1 ~ #4 }
+ \dim_set:Nn \l_graphics_urx_dim { \box_wd:N \l__graphics_internal_box }
+ \dim_set:Nn \l_graphics_ury_dim { \box_ht:N \l__graphics_internal_box }
+ \graphics_bb_save:n {#1#3}
+ }
+\cs_new:Npn \__graphics_backend_getbb_pagebox:w #1 box {#1}
+\cs_new_protected:Npn \__graphics_backend_include_pdf:n #1
+ {
+ \tex_XeTeXpdffile:D
+ \__graphics_backend_include_pdf_quote:w #1 "#1" \s__graphics_stop \c_space_tl
+ \int_compare:nNnT \l_graphics_page_int > 0
+ { page ~ \int_use:N \l_graphics_page_int \c_space_tl }
+ \exp_after:wN \__graphics_backend_getbb_pagebox:w \l_graphics_pagebox_tl
+ }
+\cs_new:Npn \__graphics_backend_include_pdf_quote:w #1 " #2 " #3 \s__graphics_stop
+ { " #2 " }
+%% File: l3backend-pdf.dtx
+\box_new:N \l__pdf_internal_box
+\cs_new_protected:Npx \__pdf_backend:n #1
+ { \__kernel_backend_literal:n { pdf: #1 } }
+\cs_generate_variant:Nn \__pdf_backend:n { x }
+\cs_new_protected:Npn \__pdf_backend_catalog_gput:nn #1#2
+ { \__pdf_backend:n { put ~ @catalog << /#1 ~ #2 >> } }
+\cs_new_protected:Npn \__pdf_backend_info_gput:nn #1#2
+ { \__pdf_backend:n { docinfo << /#1 ~ #2 >> } }
+\int_new:N \g__pdf_backend_object_int
+\prop_new:N \g__pdf_backend_object_prop
+\cs_new_protected:Npn \__pdf_backend_object_new:nn #1#2
+ {
+ \int_gincr:N \g__pdf_backend_object_int
+ \int_const:cn
+ { c__pdf_backend_object_ \tl_to_str:n {#1} _int }
+ { \g__pdf_backend_object_int }
+ \prop_gput:Nnn \g__pdf_backend_object_prop {#1} {#2}
+ }
+\cs_new:Npn \__pdf_backend_object_ref:n #1
+ { @pdf.obj \int_use:c { c__pdf_backend_object_ \tl_to_str:n {#1} _int } }
+\cs_new_protected:Npn \__pdf_backend_object_write:nn #1#2
+ {
+ \exp_args:Nx \__pdf_backend_object_write:nnn
+ { \prop_item:Nn \g__pdf_backend_object_prop {#1} } {#1} {#2}
+ }
+\cs_generate_variant:Nn \__pdf_backend_object_write:nn { nx }
+\cs_new_protected:Npn \__pdf_backend_object_write:nnn #1#2#3
+ {
+ \use:c { __pdf_backend_object_write_ #1 :nn }
+ { \__pdf_backend_object_ref:n {#2} } {#3}
+ }
+\cs_new_protected:Npn \__pdf_backend_object_write_array:nn #1#2
+ {
+ \__pdf_backend:x
+ { obj ~ #1 ~ [ ~ \exp_not:n {#2} ~ ] }
+ }
+\cs_new_protected:Npn \__pdf_backend_object_write_dict:nn #1#2
+ {
+ \__pdf_backend:x
+ { obj ~ #1 ~ << ~ \exp_not:n {#2} ~ >> }
+ }
+\cs_new_protected:Npn \__pdf_backend_object_write_fstream:nn #1#2
+ { \__pdf_backend_object_write_stream:nnnn { f } {#1} #2 }
+\cs_new_protected:Npn \__pdf_backend_object_write_stream:nn #1#2
+ { \__pdf_backend_object_write_stream:nnnn { } {#1} #2 }
+\cs_new_protected:Npn \__pdf_backend_object_write_stream:nnnn #1#2#3#4
+ {
+ \__pdf_backend:x
+ {
+ #1 stream ~ #2 ~
+ ( \exp_not:n {#4} ) ~ << \exp_not:n {#3} >>
+ }
+ }
+\cs_new_protected:Npn \__pdf_backend_object_now:nn #1#2
+ {
+ \int_gincr:N \g__pdf_backend_object_int
+ \exp_args:Nnx \use:c { __pdf_backend_object_write_ #1 :nn }
+ { @pdf.obj \int_use:N \g__pdf_backend_object_int }
+ {#2}
+ }
+\cs_generate_variant:Nn \__pdf_backend_object_now:nn { nx }
+\cs_new:Npn \__pdf_backend_object_last:
+ { @pdf.obj \int_use:N \g__pdf_backend_object_int }
+\cs_new:Npn \__pdf_backend_pageobject_ref:n #1
+ { @page #1 }
+\bool_new:N \g__pdf_landscape_bool
+\cs_if_exist:NT \landscape
+ {
+ \tl_put_right:Nn \landscape
+ { \bool_gset_true:N \g__pdf_landscape_bool }
+ \tl_put_left:Nn \endlandscape
+ { \bool_gset_false:N \g__pdf_landscape_bool }
+ }
+\int_new:N \g__pdf_backend_annotation_int
+\cs_new_protected:Npn \__pdf_backend_annotation:nnnn #1#2#3#4
+ {
+ \bool_if:NTF \g__pdf_landscape_bool
+ {
+ \box_move_up:nn {#2}
+ {
+ \vbox:n
+ {
+ \__pdf_backend_annotation_aux:nnnn
+ { #2 + #3 } {#1} { 0pt } {#4}
+ }
+ }
+ }
+ { \__pdf_backend_annotation_aux:nnnn {#1} {#2} {#3} {#4} }
+ }
+\cs_new_protected:Npn \__pdf_backend_annotation_aux:nnnn #1#2#3#4
+ {
+ \int_gincr:N \g__pdf_backend_object_int
+ \int_gset_eq:NN \g__pdf_backend_annotation_int \g__pdf_backend_object_int
+ \__pdf_backend:x
+ {
+ ann ~ @pdf.obj \int_use:N \g__pdf_backend_object_int \c_space_tl
+ width ~ \dim_eval:n {#1} ~
+ height ~ \dim_eval:n {#2} ~
+ depth ~ \dim_eval:n {#3} ~
+ <</Type/Annot #4 >>
+ }
+ }
+\cs_new:Npn \__pdf_backend_annotation_last:
+ { @pdf.obj \int_use:N \g__pdf_backend_annotation_int }
+\cs_new_protected:Npn \__pdf_backend_link_begin_goto:nnw #1#2
+ { \__pdf_backend_link_begin:n { #1 /Subtype /Link /A << /S /GoTo /D ( #2 ) >> } }
+\cs_new_protected:Npn \__pdf_backend_link_begin_user:nnw #1#2
+ { \__pdf_backend_link_begin:n {#1#2} }
+\cs_new_protected:Npn \__pdf_backend_link_begin:n #1
+ {
+ \__pdf_backend:n
+ {
+ bann
+ <<
+ /Type /Annot
+ #1
+ >>
+ }
+ }
+\cs_new_protected:Npn \__pdf_backend_link_end:
+ { \__pdf_backend:n { eann } }
+\cs_new:Npn \__pdf_backend_link_last: { }
+\cs_new_protected:Npn \__pdf_backend_link_margin:n #1
+ { \__kernel_backend_literal:x { dvipdfmx:config~g~ \dim_eval:n {#1} } }
+\cs_new_protected:Npn \__pdf_backend_destination:nn #1#2
+ {
+ \__pdf_backend:x
+ {
+ dest ~ ( \exp_not:n {#1} )
+ [
+ @thispage
+ \str_case:nnF {#2}
+ {
+ { xyz } { /XYZ ~ @xpos ~ @ypos ~ null }
+ { fit } { /Fit }
+ { fitb } { /FitB }
+ { fitbh } { /FitBH }
+ { fitbv } { /FitBV ~ @xpos }
+ { fith } { /FitH ~ @ypos }
+ { fitv } { /FitV ~ @xpos }
+ }
+ { /XYZ ~ @xpos ~ @ypos ~ \fp_eval:n { (#2) / 100 } }
+ ]
+ }
+ }
+\cs_new_protected:Npn \__pdf_backend_destination_box:nn #1#2
+ {
+ \group_begin:
+ \hbox_set:Nn \l__pdf_internal_box {#2}
+ \box_move_down:nn { \box_dp:N \l__pdf_internal_box }
+ {
+ \hbox:n
+ {
+ \__pdf_backend:n { obj ~ @pdf_ #1 _llx ~ @xpos }
+ \__pdf_backend:n { obj ~ @pdf_ #1 _lly ~ @ypos }
+ }
+ }
+ \box_use:N \l__pdf_internal_box
+ \box_move_up:nn { \box_ht:N \l__pdf_internal_box }
+ {
+ \hbox:n
+ {
+ \__pdf_backend:n
+ {
+ dest ~ (#1)
+ [
+ @thispage
+ /FitR ~
+ @pdf_ #1 _llx ~ @pdf_ #1 _lly ~
+ @xpos ~ @ypos
+ ]
+ }
+ }
+ }
+ \group_end:
+ }
+\cs_new_protected:Npn \__pdf_backend_compresslevel:n #1
+ { \__kernel_backend_literal:x { dvipdfmx:config~z~ \int_eval:n {#1} } }
+\cs_new_protected:Npn \__pdf_backend_compress_objects:n #1
+ {
+ \bool_if:nF {#1}
+ { \__kernel_backend_literal:n { dvipdfmx:config~C~0x40 } }
+ }
+\cs_new_protected:Npn \__pdf_backend_version_major_gset:n #1
+ {
+ \cs_gset:Npx \__pdf_backend_version_major: { \int_eval:n {#1} }
+ \__kernel_backend_literal:x { pdf:majorversion~ \__pdf_backend_version_major: }
+ }
+\cs_new_protected:Npn \__pdf_backend_version_minor_gset:n #1
+ {
+ \cs_gset:Npx \__pdf_backend_version_minor: { \int_eval:n {#1} }
+ \__kernel_backend_literal:x { pdf:minorversion~ \__pdf_backend_version_minor: }
+ }
+\cs_new:Npn \__pdf_backend_version_major: { 1 }
+\cs_new:Npn \__pdf_backend_version_minor: { 5 }
+\cs_new_protected:Npn \__pdf_backend_bdc:nn #1#2
+ { \__kernel_backend_literal_page:n { /#1 ~ #2 ~ BDC } }
+\cs_new_protected:Npn \__pdf_backend_emc:
+ { \__kernel_backend_literal_page:n { EMC } }
+%%
+%%
+%% End of file `l3backend-xetex.def'.
Property changes on: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
More information about the tex-live-commits
mailing list.