comportement différent lualatex et xelatex en utilisant les pckages crop et tikzpagenodes
En utilisant le tikzpagenodes
package pour positionner des éléments dans la page, j'ai remarqué que lors du chargement du crop
package, XeLaTeX
et LuaLaTeX
avoir un comportement différent.
XeLaTeX
calcule incorrectement les current page node
coordonnées. Pour obtenir les coordonnées correctes, le current page node
doit être décalé en utilisant hoffset
et voffset
.
Le MWE ci-dessous montre, deux rectangles couvrant le current page node
. Le bleu est le nœud calculé par tikzpagenodes
; le rouge a été décalé pour avoir le rectangle correct avec 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}
Corriger la sortie avec LuaLaTeX
:

Sortie incorrecte avec XeLaTeX
:

Réponses
Je suppose que cela est dû à une faute de frappe dans pgf
le fichier du pilote de xetex, et le problème a été signalé pgf
, voirhttps://github.com/pgf-tikz/pgf/issues/909. Les crop
ensembles de packages sont différents de zéro \hoffset
et \voffset
, qui découvrent le problème.
L'extrait de code suivant peut être utilisé comme solution de contournement à court terme.
% after tikz is loaded
\usepackage{iftex}
\makeatletter
\ifXeTeX
\def\pgf@sys@pdf@mark@pos@pgfpageorigin{\pgfqpoint{\hoffset}{\voffset}}
\fi
\makeatother
Un exemple complet:
\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}

PS: Node current page
est directement fourni par tikz
, il n'est donc pas nécessaire de charger le tikzpagenodes
package.