summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/l3backend/l3backend-pdf.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/l3backend/l3backend-pdf.dtx')
-rw-r--r--macros/latex/contrib/l3backend/l3backend-pdf.dtx81
1 files changed, 80 insertions, 1 deletions
diff --git a/macros/latex/contrib/l3backend/l3backend-pdf.dtx b/macros/latex/contrib/l3backend/l3backend-pdf.dtx
index b31805b0fd..ed2339cb00 100644
--- a/macros/latex/contrib/l3backend/l3backend-pdf.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-pdf.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-08-30}
+% \date{Released 2022-09-28}
%
% \maketitle
%
@@ -1699,6 +1699,85 @@
%</dvisvgm>
% \end{macrocode}
%
+% \subsection{PDF Page size (media box)}
+%
+% For setting the media box, the split between backends is somewhat different
+% to other areas, thus we approach this separately. The code here assumes a
+% recent \LaTeXe{}: that is ensured at the level above.
+%
+% \begin{macrocode}
+%<*dvipdfmx|dvips>
+% \end{macrocode}
+%
+% \begin{macro}{\@@_backend_pagesize_set:nn}
+% \begin{macro}[EXP]{\@@_backend_pagesize_set:n}
+% This is done as a backend literal, so we deal with it using the shipout
+% hook. The inclusion of \cs{tex_mag:D} here is essentially to work with
+% (u)p\LaTeX{}, where this is used to adjust apparent font size.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_backend_pagesize_set:nn #1#2
+ {
+ \__kernel_backend_first_shipout:n
+ {
+ \__kernel_backend_literal:e
+ {
+%<*dvipdfmx>
+ pdf:pagesize ~
+ width ~ \@@_backend_pagesize_set:n {#1} ~
+ height ~ \@@_backend_pagesize_set:n {#2}
+%</dvipdfmx>
+%<*dvips>
+ papersize =
+ \@@_backend_pagesize_set:n {#1} ,
+ \@@_backend_pagesize_set:n {#2}
+%</dvips>
+ }
+ }
+ }
+\cs_new:Npn \@@_backend_pagesize_set:n #1
+ { \fp_to_dim:n { \tex_mag:D / 1000 * (#1) } }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macrocode}
+%</dvipdfmx|dvips>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*luatex|pdftex|xetex>
+% \end{macrocode}
+%
+% \begin{macro}{\@@_backend_pagesize_set:nn}
+% Pass to the primitives.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_backend_pagesize_set:nn #1#2
+ {
+ \dim_set:Nn \tex_pagewidth:D {#1}
+ \dim_set:Nn \tex_pageheight:D {#2}
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</luatex|pdftex|xetex>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*dvisvgm>
+% \end{macrocode}
+%
+% \begin{macro}{\@@_backend_pagesize_set:nn}
+% A no-op.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_backend_pagesize_set:nn #1#2 { }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</dvisvgm>
+% \end{macrocode}
+%
% \begin{macrocode}
%</package>
% \end{macrocode}