comportamiento diferente lualatex y xelatex usando paquetes de cultivo y tikzpagenodes
Usando el tikzpagenodes
paquete para posicionar elementos en la página, noté que al cargar el crop
paquete, XeLaTeX
ya LuaLaTeX
tienen un comportamiento diferente.
XeLaTeX
calcula incorrectamente las current page node
coordenadas. Para obtener las coordenadas correctas, se current page node
debe cambiar con hoffset
y voffset
.
El MWE a continuación muestra dos rectángulos que cubren el current page node
. El azul es el nodo calculado por tikzpagenodes
; el rojo se ha cambiado para tener el rectángulo correcto con XeLaTeX
.
\documentclass{article}
\usepackage{calc}
\usepackage[
%
paperwidth = 210mm,
paperheight = 270mm,
includefoot,
includemp,
nomarginpar,
% textwidth
% textheight
% marginparwidth
% marginparsep
inner = 19.2mm+10mm,
outer = 19.2mm+10mm,
top = 14.6mm,
bottom = 10.8mm,
bindingoffset = 5.4mm,
% showcrop
]%
{geometry}
\usepackage%
[
cam,
width = 230mm,
height = 290mm,
center]%
{crop}
\usepackage{tikzpagenodes}
\usetikzlibrary{calc}
\begin{document}
\tikz[remember picture,overlay] {%
\draw [blue,line width=2mm]
(current page.south west)
rectangle
(current page.north east)
;
\draw [red,line width=2mm]
($(current page.south west)+ (-\hoffset, \voffset)$)
rectangle
($(current page.north east)+ (-\hoffset, \voffset)$)
;
}%
\end{document}
Salida correcta con LuaLaTeX
:

Salida incorrecta con XeLaTeX
:

Respuestas
Supongo que esto se debe a un error tipográfico en pgf
el archivo del controlador de xetex, y se ha informado del problema a pgf
, consultehttps://github.com/pgf-tikz/pgf/issues/909. El paquete crop
establece distintos de cero \hoffset
y \voffset
, que descubren el problema.
El siguiente fragmento de código se puede utilizar como solución temporal a corto plazo.
% after tikz is loaded
\usepackage{iftex}
\makeatletter
\ifXeTeX
\def\pgf@sys@pdf@mark@pos@pgfpageorigin{\pgfqpoint{\hoffset}{\voffset}}
\fi
\makeatother
Un ejemplo completo:
\documentclass{article}
\usepackage{calc}
\usepackage[
paperwidth = 210mm,
paperheight = 270mm,
includefoot,
includemp,
nomarginpar,
% textwidth
% textheight
% marginparwidth
% marginparsep
inner = 19.2mm+10mm,
outer = 19.2mm+10mm,
top = 14.6mm,
bottom = 10.8mm,
bindingoffset = 5.4mm,
% showcrop
]%
{geometry}
\usepackage[
cam,
width = 230mm,
height = 290mm,
center
]%
{crop}
\usepackage{tikz}
\usepackage{iftex}
\makeatletter
\ifXeTeX
\def\pgf@sys@pdf@mark@pos@pgfpageorigin{\pgfqpoint{\hoffset}{\voffset}}
\fi
\makeatother
\begin{document}
\tikz[remember picture,overlay]
\draw [blue,line width=2mm]
(current page.south west) rectangle (current page.north east);
\end{document}

PD: El nodo current page
lo proporciona directamente tikz
, por lo que no es necesario cargar el tikzpagenodes
paquete.