[latex3-commits] [git/LaTeX3-latex3-pdfresources] backendtest: sorted pageattr (40ccd97)
Ulrike Fischer
fischer at troubleshooting-tex.de
Sat Jun 22 00:26:40 CEST 2019
Repository : https://github.com/latex3/pdfresources
On branch : backendtest
Link : https://github.com/latex3/pdfresources/commit/40ccd974eb24cd7dc6e782a6b5742f816885a8ad
>---------------------------------------------------------------
commit 40ccd974eb24cd7dc6e782a6b5742f816885a8ad
Author: Ulrike Fischer <fischer at troubleshooting-tex.de>
Date: Sat Jun 22 00:26:40 2019 +0200
sorted pageattr
>---------------------------------------------------------------
40ccd974eb24cd7dc6e782a6b5742f816885a8ad
pdfresources.dtx | 412 ++++++++++++++++++++++++++++---------------------------
1 file changed, 212 insertions(+), 200 deletions(-)
diff --git a/pdfresources.dtx b/pdfresources.dtx
index b6a2698..7d8f06d 100644
--- a/pdfresources.dtx
+++ b/pdfresources.dtx
@@ -94,6 +94,7 @@
% \begin{macrocode}
%<*package>
\prop_new:N\l_@@_tmpa_prop
+\tl_new:N\l_@@_tmpa_tl
%</package>
% \end{macrocode}
% \subsection{some zref code, needs to be replaced later}
@@ -330,92 +331,33 @@
%</package>
% \end{macrocode}
-%
-%\subsubsection{pdfxform}
-% \begin{NOTE}{UF}
-% As in dvi mode the xform is immediate, this is done for pdftex/luatex too. If needed
-% a delayed version can be added later. dvips, dvipdfmx implementation is missing
-% \end{NOTE}
-% \begin{macrocode}
-%<*package>
-
-\prop_new:N \g_@@_backend_xform_prop
-
-\bool_if:nT {\sys_if_engine_pdftex_p: && \sys_if_output_pdf_p: }
-{
- \cs_new_protected:Npn \@@_backend_xform_new:nnnN #1 #2 #3 #4 %name, attr, resources, box
- {
- \tex_immediate:D \tex_pdfxform:D~attr { #2 }~resources {#3} #4
- \int_const:cn
- { c_@@_backend_xform_ \tl_to_str:n {#1} _int }
- { \tex_pdflastxform:D }
- \prop_gput:Nnx \g_@@_backend_xform_prop {#1}
- {
- \tex_pdfxformname:D \int_use:c {c_@@_backend_xform_ \tl_to_str:n {#1} _int}
- }
- }
-
-\cs_new:Npn \@@_backend_xform_use:n #1
- {
- \tex_pdfrefxform:D \int_use:c { c_@@_backend_xform_ \tl_to_str:n {#1} _int } \scan_stop:
- }
-
-% should there be a test if the name exists???
-\cs_new:Npn \@@_backend_xform_ref:n #1
- { \int_use:c { c_@@_backend_xform_ \tl_to_str:n {#1} _int } ~ 0 ~ R }
-
-\cs_new:Npn \@@_backend_xform_name_ref:n #1
- { /Fm\prop_item:Nn \g_@@_backend_xform_prop {#1} }
-}
-
-%nearly identical but not completly ...
-\sys_if_engine_luatex:T
-{
- \cs_new_protected:Npn \@@_backend_xform_new:nnnN #1 #2 #3 #4 %name, attr, resources, box
- {
- \tex_immediate:D \tex_pdfxform:D~attr { #2 }~resources {#3} #4
- \int_const:cn
- { c_@@_backend_xform_ \tl_to_str:n {#1} _int }
- { \tex_pdflastxform:D }
- \prop_gput:Nnx \g_@@_backend_xform_prop {#1}
- {
- \tex_pdffeedback:D~xformname \int_use:c {c_@@_backend_xform_ \tl_to_str:n {#1} _int}
- }
- }
-
-\cs_new:Npn \@@_backend_xform_use:n #1
- {
- \tex_pdfrefxform:D \int_use:c { c_@@_backend_xform_ \tl_to_str:n {#1} _int } \scan_stop:
- }
-\cs_new:Npn \@@_backend_xform_ref:n #1
- { \int_use:c { c_@@_backend_xform_ \tl_to_str:n {#1} _int } ~ 0 ~ R }
-
-\cs_new:Npn \@@_backend_xform_name_ref:n #1
- { /Fm\prop_item:Nn \g_@@_backend_xform_prop {#1} }
-}
-
-%</package>
-% \end{macrocode}
-
-% \subsubsection{backend / pdfpageattr}
+% \subsection{pdfpageattr}
+% \subsubsection{pdfpageattr/backend}
% \begin{NOTE}{UF}
% path: Page
% The engines differ a lot here: pdflatex and lualatex uses a register while with
-% dvips a one-shot-special ist used. So for pdflatex and lualatex code to clear the register
-% is needed. Specials are used at shipout, registers set directly. With lualatex one can use
-% \cs{latelua} to delay the setting, with pdflatex one has to use a shipout hook. To get
-% the code on the correct page one has to use the aux with pdflatex. In sum this means that
-% quite a lot backend commands are needed to handle this differences. Simply variants of \cs{pdfpageattr}
-% are not enough ...%
+% dvips/dvipdfmx a one-shot-special ist used. So for pdflatex and lualatex code
+% to assemble the content of the register is needed. Specials are used at shipout,
+% the registers is set directly. With lualatex one can use
+% \cs{latelua} to delay the setting, with pdflatex one has to use a shipout hook.
+% To get the code on the correct page one has to use the aux with pdflatex.
+% In sum this means that quite a lot backend commands are needed to handle
+% this differences. Simply variants of \cs{pdfpageattr} are not enough ...%
+% dvips syntax: \special{ps: [{ThisPage}<</Rotate 90>> /PUT pdfmark}%
+% There seem to be an in-built management code: multiple uses don't lead to
+% multiple entries (/Rotate is special: there is always a /Rotate 0 in the dict, but seems
+% not to do harm).
+% dvipdfmx syntax: \special{pdf: put @thispage << /Rotate 90 >>}, like dvips has an in-built
+% management code.
+% Both change only the current page, so to get the pdftex behaviour (which sets
+% also the following pages) one need to repeat it on every shipout.
% \end{NOTE}
% \begin{macrocode}
%<*package>
%% backend commands
-%% stores values by pages. Only used and needed by pdflatex
-%%
+% a prop for global/default settings which are used for more than
+% one page
\@@_tree_new:n {backend_Page}
-
-\tl_new:N\l_@@_tmp_page_tl
%pdflatex
\bool_if:nT {\sys_if_engine_pdftex_p: && \sys_if_output_pdf_p: }
{
@@ -424,39 +366,42 @@
{
\tex_global:D \tex_pdfpageattr:D {#1}
}
- % the command to store default values. Prop with
- % pdflatex + dvi, lua table with lualatex
+ % the command to store default values.
+ % Uses a prop with pdflatex + dvi,
+ % sets a lua table with lualatex
\cs_new_protected:Npn \@@_backend_Page_gput:nn #1 #2
{
\@@_tree_gput:nnn {backend_Page}{ #1 }{ #2 }
}
- % the command to remove a default value. Prop with
- % pdflatex + dvi, lua table with lualatex
+ % the command to remove a default value.
+ % Uses a prop with pdflatex + dvi,
+ % changes a lua table with lualatex
\cs_new_protected:Npn \@@_backend_Page_gremove:n #1
{
\@@_tree_gremove:nn {backend_Page}{ #1 }
}
- % the command used in the document.
- % direct call of the primitive special with dvips/dvipdfmx
- % \latelua to fill a page related table with lualatex
- % write to aux and store in prop with pdflatex
+ % the command used in the document.
+ % direct call of the primitive special with dvips/dvipdfmx
+ % \latelua: fill a page related table with lualatex, merge it with the page
+ % table and push it directly
+ % write to aux and store in prop with pdflatex
\cs_new_protected:Npn \@@_backend_PageN_gput:nn #1 #2
{
\int_gincr:N\g_@@_resourceid_int
\zref at labelbylist {l3pdf\int_use:N\g_@@_resourceid_int} {l3pdf}
- \tl_set:Nx \l_@@_tmp_page_tl
+ \tl_set:Nx \l_@@_tmpa_tl
{
\zref at extractdefault{l3pdf\int_use:N\g_@@_resourceid_int}
{pdf at abspage}
{0}
}
- \@@_tree_new:n {backend_Page\l_@@_tmp_page_tl}
- \@@_tree_gput:nnn {backend_Page\l_@@_tmp_page_tl}{#1}{#2}
+ \@@_tree_new:n {backend_Page\l_@@_tmpa_tl}
+ \@@_tree_gput:nnn {backend_Page\l_@@_tmpa_tl}{#1}{#2}
}
%the code to push the values, used in shipout
- %merges the two props and then fill the register in pdflatex
- %merges the two tables and then fill (in lua) in luatex
- %issues the values store in the global prop with dvi
+ %merges the two props and then fills the register in pdflatex
+ %merges the two tables and then fills (in lua) in luatex
+ %issues the values stored in the global prop with dvi
\cs_new_protected:Npn \@@_backend_PageN_gpush:n #1
{
\@@_tree_merge:nnN {backend_Page}{backend_Page#1}\l_@@_tmpa_prop
@@ -468,20 +413,22 @@
}
\sys_if_engine_luatex:T
-{
- %needed ??????????????
+{% do we need to use some escaping for the values?????
+ %not used, only there for consistency
\cs_new_protected:Npn \@@_backend_Page_primitive:n #1
{
\tex_latelua:D {pdf.setpageattributes("#1")}
}
- % the command to store default values. Prop with
- % pdflatex + dvi, lua table with lualatex
+ % the command to store default values.
+ % Uses a prop with pdflatex + dvi,
+ % sets a lua table with lualatex
\cs_new_protected:Npn \@@_backend_Page_gput:nn #1 #2
{
\tex_directlua:D { l3kernel.__pdf._backend_Page_gput ("#1","#2") }
}
- % the command to remove a default value. Prop with
- % pdflatex + dvi, lua table with lualatex
+ % the command to remove a default value.
+ % Uses a prop with pdflatex + dvi,
+ % changes a lua table with lualatex
\cs_new_protected:Npn \@@_backend_Page_gremove:n #1
{
\tex_directlua:D { l3kernel.__pdf._backend_Page_gremove ("#1") }
@@ -500,9 +447,9 @@
}
}
%the code to push the values, used in shipout
- %merges the two props and then fill the register in pdflatex
- %merges the two tables (the one is probably still empty) and then fill (in lua) in luatex
- %issues the values store in the global prop with dvi
+ %merges the two props and then fills the register in pdflatex
+ %merges the two tables (the one is probably still empty) and then fills (in lua) in luatex
+ %issues the values stored in the global prop with dvi
\cs_new_protected:Npn \@@_backend_PageN_gpush:n #1
{
\tex_latelua:D
@@ -519,14 +466,16 @@
{
\tex_special:D{pdf:~put~@thispage~<<#1>>}
}
- % the command to store default values. Prop with
- % pdflatex + dvi, lua table with lualatex
+ % the command to store default values.
+ % Uses a prop with pdflatex + dvi,
+ % sets a lua table with lualatex
\cs_new_protected:Npn \@@_backend_Page_gput:nn #1 #2
{
\@@_tree_gput:nnn {backend_Page}{ #1 }{ #2 }
}
- % the command to remove a default value. Prop with
- % pdflatex + dvi, lua table with lualatex
+ % the command to remove a default value.
+ % Uses a prop with pdflatex + dvi,
+ % changes a lua table with lualatex
\cs_new_protected:Npn \@@_backend_Page_gremove:n #1
{
\@@_tree_gremove:nn {backend_Page}{ #1 }
@@ -541,29 +490,31 @@
\@@_backend_Page_primitive:n { /#1~#2 }
}
%the code to push the values, used in shipout
- %merges the two props and then fill the register in pdflatex
- %merges the two tables (the one is probably still empty) and then fill (in lua) in luatex
- %issues the values store in the global prop with dvi
+ %merges the two props and then fills the register in pdflatex
+ %merges the two tables (the one is probably still empty) and then fills (in lua) in luatex
+ %issues the values stored in the global prop with dvi
\cs_new_protected:Npn \@@_backend_PageN_gpush:n #1
{
\exp_args:Nx \@@_backend_Page_primitive:n { \@@_tree_map_dict_item:n {backend_Page} }
}
}
-
+%dvips
\bool_if:nT {\sys_if_engine_pdftex_p: && !\sys_if_output_pdf_p: }
{
\cs_new_protected:Npn \@@_backend_Page_primitive:n #1
{
\tex_special:D{ps:~[{ThisPage}<<#1>>~/PUT~pdfmark} %]
}
- % the command to store default values. Prop with
- % pdflatex + dvi, lua table with lualatex
+ % the command to store default values.
+ % Uses a prop with pdflatex + dvi,
+ % sets a lua table with lualatex
\cs_new_protected:Npn \@@_backend_Page_gput:nn #1 #2
{
\@@_tree_gput:nnn {backend_Page}{ #1 }{ #2 }
}
- % the command to remove a default value. Prop with
- % pdflatex + dvi, lua table with lualatex
+ % the command to remove a default value.
+ % Uses a prop with pdflatex + dvi,
+ % changes a lua table with lualatex
\cs_new_protected:Npn \@@_backend_Page_gremove:n #1
{
\@@_tree_gremove:nn {backend_Page}{ #1 }
@@ -578,9 +529,9 @@
\@@_backend_Page_primitive:n { /#1~#2 }
}
%the code to push the values, used in shipout
- %merges the two props and then fill the register in pdflatex
- %merges the two tables (the one is probably still empty) and then fill (in lua) in luatex
- %issues the values store in the global prop with dvi
+ %merges the two props and then fills the register in pdflatex
+ %merges the two tables (the one is probably still empty) and then fills (in lua) in luatex
+ %issues the values stored in the global prop with dvi
\cs_new_protected:Npn \@@_backend_PageN_gpush:n #1
{
\exp_args:Nx \@@_backend_Page_primitive:n { \@@_tree_map_dict_item:n {backend_Page} }
@@ -588,6 +539,150 @@
}
%</package>
% \end{macrocode}
+% \subsubsection{pdfpageattr/management}
+% \begin{NOTE}{UF}
+% Open is the question if one need a command to set attribute on a page by page number.
+% Open is the setter for /AF (and perhaps /OutputIntents).
+% See also https://tex.stackexchange.com/questions/479812/extension-of-rotating-package-to-set-pdf-rotation
+% (should work now)
+% \end{NOTE}
+% \begin{function}[added = 2019-06-04]
+% {\pdf_pageattr_gput:nn}
+% \begin{syntax}
+% \cs{pdf_pageattr_gput:nn} \Arg{name} \Arg{value}
+% \end{syntax}
+% Adds |/|\meta{name} \meta{value} to the page dictionary of the
+% current page and the following pages. The values are assigned directly,
+% so one should take into account the asynchronous page breaking and use the
+% command only e.g. after a \cs{clearpage} and not inside
+% floats. It is always stored globally.
+% \meta{name} should be a valid pdf name without the leading slash,
+% \meta{value} should be a valid pdf value. Any escaping or (re)encoding must be
+% done explictly. If a \meta{name} is used twice, only the last \meta{value}
+% set will be used. Names set with \cs{pdf_thispageattr_gput:nn} will overwrite
+% names set with \cs{pdf_pageattr_gput:nn} if there is a clash.
+% \end{function}
+% \begin{function}[added = 2019-06-04]
+% {
+% \pdf_pageattr_gremove:n
+% }
+% \begin{syntax}
+% \pdf_pageattr_gremove:n \Arg{name}
+% \end{syntax}
+% Removes |/|\meta{name} and its associated \meta{value} added by \cs{pdf_pageattr_gput:nn}
+% from the page dictionaries of the current and the following pages.
+% If \meta{name} is not found no change occurs,
+% \emph{i.e}~there is no need to test for the existence of a name before
+% trying to remove it. It doesn't affect values set with \cs{pdf_thispageattr_gput:nn}.
+% \end{function}
+% \begin{function}[added = 2019-06-19]
+% {\pdf_thispageattr_gput:nn}
+% \begin{syntax}
+% \cs{pdf_thispageattr_gput:nn} \Arg{name} \Arg{value}
+% \end{syntax}
+% Adds |/|\meta{name} \meta{value} at shipout to the page dictionary of the
+% current page.
+% It is always stored globally. If \Arg{name} has already a value set with
+% \cs{pdf_pageattr_gput:nn} it will overwrite it for this page.
+% \meta{name} should be a valid pdf name without the leading slash,
+% \meta{value} should be a valid pdf value. Any escaping or (re)encoding must be
+% done explictly. If a \meta{name} is used twice, only the last \meta{value}
+% set will be used. With the engine pdflatex (at least) a second compilation is needed.
+% \end{function}
+% \begin{macrocode}
+%<*package>
+\@@_tree_new:n {Page}
+% setter.
+%^^A documentated
+\cs_new_protected:Npn \pdf_pageattr_gput:nn #1 #2
+ {
+ \@@_backend_Page_gput:nn {#1}{#2}
+ }
+
+% remove:
+%^^A documentated
+\cs_new_protected:Npn \pdf_pageattr_gremove:n #1
+ {
+ \@@_backend_Page_gremove:n { #1 }
+ }
+
+% add to this page:
+%^^A documentated
+\cs_new_protected:Npn \pdf_thispageattr_gput:nn #1 #2
+ {
+ \@@_backend_PageN_gput:nn { #1 }{ #2 }
+ }
+
+%</package>
+% \end{macrocode}
+% ================
+%\subsubsection{pdfxform}
+% \begin{NOTE}{UF}
+% As in dvi mode the xform is immediate, this is done for pdftex/luatex too. If needed
+% a delayed version can be added later. dvips, dvipdfmx implementation is missing
+% \end{NOTE}
+% \begin{macrocode}
+%<*package>
+
+\prop_new:N \g_@@_backend_xform_prop
+
+\bool_if:nT {\sys_if_engine_pdftex_p: && \sys_if_output_pdf_p: }
+{
+ \cs_new_protected:Npn \@@_backend_xform_new:nnnN #1 #2 #3 #4 %name, attr, resources, box
+ {
+ \tex_immediate:D \tex_pdfxform:D~attr { #2 }~resources {#3} #4
+ \int_const:cn
+ { c_@@_backend_xform_ \tl_to_str:n {#1} _int }
+ { \tex_pdflastxform:D }
+ \prop_gput:Nnx \g_@@_backend_xform_prop {#1}
+ {
+ \tex_pdfxformname:D \int_use:c {c_@@_backend_xform_ \tl_to_str:n {#1} _int}
+ }
+ }
+
+\cs_new:Npn \@@_backend_xform_use:n #1
+ {
+ \tex_pdfrefxform:D \int_use:c { c_@@_backend_xform_ \tl_to_str:n {#1} _int } \scan_stop:
+ }
+
+% should there be a test if the name exists???
+\cs_new:Npn \@@_backend_xform_ref:n #1
+ { \int_use:c { c_@@_backend_xform_ \tl_to_str:n {#1} _int } ~ 0 ~ R }
+
+\cs_new:Npn \@@_backend_xform_name_ref:n #1
+ { /Fm\prop_item:Nn \g_@@_backend_xform_prop {#1} }
+}
+
+%nearly identical but not completly ...
+\sys_if_engine_luatex:T
+{
+ \cs_new_protected:Npn \@@_backend_xform_new:nnnN #1 #2 #3 #4 %name, attr, resources, box
+ {
+ \tex_immediate:D \tex_pdfxform:D~attr { #2 }~resources {#3} #4
+ \int_const:cn
+ { c_@@_backend_xform_ \tl_to_str:n {#1} _int }
+ { \tex_pdflastxform:D }
+ \prop_gput:Nnx \g_@@_backend_xform_prop {#1}
+ {
+ \tex_pdffeedback:D~xformname \int_use:c {c_@@_backend_xform_ \tl_to_str:n {#1} _int}
+ }
+ }
+
+\cs_new:Npn \@@_backend_xform_use:n #1
+ {
+ \tex_pdfrefxform:D \int_use:c { c_@@_backend_xform_ \tl_to_str:n {#1} _int } \scan_stop:
+ }
+\cs_new:Npn \@@_backend_xform_ref:n #1
+ { \int_use:c { c_@@_backend_xform_ \tl_to_str:n {#1} _int } ~ 0 ~ R }
+
+\cs_new:Npn \@@_backend_xform_name_ref:n #1
+ { /Fm\prop_item:Nn \g_@@_backend_xform_prop {#1} }
+}
+
+%</package>
+% \end{macrocode}
+
+
% \subsection{backend / pageresources}
% \begin{NOTE}{UF} Implementation for dvips missing (perhaps impossible ...), for xetex untested.
% \enquote{Correct} content needed at every shipout
@@ -657,90 +752,7 @@
% \end{macrocode}
%
-% \subsection{pageattr / management commands}
-% \begin{NOTE}{UF}
-% dvips syntax: \special{ps: [{ThisPage}<</Rotate 90>> /PUT pdfmark}%
-% There seem to be an in-built management code: multiple uses don't lead to
-% multiple entries (/Rotate is special: there is always a /Rotate 0 in the dict, but seems
-% not to do harm).
-% dvipdfmx syntax: \special{pdf: put @thispage << /Rotate 90 >>}, like dvips has an in-built
-% management code.
-% Both change only the current page, so to get the pdftex behaviour (which sets
-% also the following pages) one need to repeat it on every shipout.
-% Open is the question if one need more shipout hooks to set e.g. Rotate on specific
-% pages. Open is the setter for /AF (and perhaps /OutputIntents).
-% See also https://tex.stackexchange.com/questions/479812/extension-of-rotating-package-to-set-pdf-rotation
-% \end{NOTE}
-% \begin{function}[added = 2019-06-04]
-% {\pdf_pageattr_gput:nn}
-% \begin{syntax}
-% \cs{pdf_pageattr_gput:nn} \Arg{name} \Arg{value}
-% \end{syntax}
-% Adds |/|\meta{name} \meta{value} to the page dictionary of the
-% current page and the following pages. The values are assigned directly,
-% so one should take into account the asynchronous page breaking and use the
-% command only in sensible places like after a \cs{clearpage} and not inside
-% floats. It is always stored globally.
-% \meta{name} should be a valid pdf name without the leading slash,
-% \meta{value} should be a valid pdf value. Any escaping or (re)encoding must be
-% done explictly. If a \meta{name} is used twice, only the last \meta{value}
-% set will be used. Names set with \cs{pdf_thispageattr_gput:nn} will overwrite
-% names set with \cs{pdf_pageattr_gput:nn} if there is a clash.
-% \end{function}
-% \begin{function}[added = 2019-06-04]
-% {
-% \pdf_pageattr_gremove:n
-% }
-% \begin{syntax}
-% \pdf_pageattr_gremove:n \Arg{name}
-% \end{syntax}
-% Removes |/|\meta{name} and its associated \meta{value} added by \cs{pdf_pageattr_gput:nn}
-% from the page dictionaries of the current and the following pages.
-% If \meta{name} is not found no change occurs,
-% \emph{i.e}~there is no need to test for the existence of a name before
-% trying to remove it. It doesn't affect values set with \cs{pdf_thispageattr_gput:nn}.
-% \end{function}
-% \begin{function}[added = 2019-06-19]
-% {\pdf_thispageattr_gput:nn}
-% \begin{syntax}
-% \cs{pdf_thispageattr_gput:nn} \Arg{name} \Arg{value}
-% \end{syntax}
-% Adds |/|\meta{name} \meta{value} at shipout to the page dictionary of the
-% current page.
-% It is always stored globally. If \Arg{name} has already a value set with
-% \cs{pdf_pageattr_gput:nn} it will overwrite it for this page.
-% \meta{name} should be a valid pdf name without the leading slash,
-% \meta{value} should be a valid pdf value. Any escaping or (re)encoding must be
-% done explictly. If a \meta{name} is used twice, only the last \meta{value}
-% set will be used. With the engine pdflatex at least a second compilation is needed.
-% \end{function}
-% \begin{macrocode}
-%<*package>
-\@@_tree_new:n {Page}
-% setter.
-% The register is normally used only a few times in a document, but to get similar
-% behaviour between dvips/dvipdfmx and pdfmode it should be better be updated
-% only at shipout.
-%^^A documentated
-\cs_new_protected:Npn \pdf_pageattr_gput:nn #1 #2
- {
- \@@_backend_Page_gput:nn {#1}{#2}
- }
-
-% remove:
-%^^A documentated
-\cs_new_protected:Npn \pdf_pageattr_gremove:n #1
- {
- \@@_backend_Page_gremove:n { #1 }
- }
-
-\cs_new_protected:Npn \pdf_thispageattr_gput:nn #1 #2
- {
- \@@_backend_PageN_gput:nn { #1 }{ #2 }
- }
-
-%</package>
-% \end{macrocode}
+%
%
% \subsection{pdfpageresources /management}
% We need code for ExtGState, ColorSpace, Pattern, Shading and Properties.
More information about the latex3-commits
mailing list