comportamento diverso lualatex e xelatex utilizzando pacchetti crop e tikzpagenodes
Utilizzando il tikzpagenodes
pacchetto per posizionare gli elementi nella pagina, ho notato che durante il caricamento del crop
pacchetto XeLaTeX
e LuaLaTeX
hanno un comportamento diverso.
XeLaTeX
calcola in modo errato le current page node
coordinate. Per ottenere le coordinate corrette, il current page node
dovrebbe essere spostato usando hoffset
e voffset
.
Lo spettacolo MWE sotto, due rettangoli che coprono il current page node
. Quello blu è il nodo calcolato da tikzpagenodes
; quello rosso è stato spostato per avere il rettangolo corretto 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}
Correggi output con LuaLaTeX
:

Output errato con XeLaTeX
:

Risposte
Immagino che questo sia causato da un errore di battitura nel pgf
file del driver di xetex, e il problema è stato segnalato a pgf
, vederehttps://github.com/pgf-tikz/pgf/issues/909. Il pacchetto crop
imposta un valore diverso da zero \hoffset
e \voffset
, che scoprono il problema.
Il frammento di codice seguente può essere utilizzato come soluzione alternativa a breve termine.
% after tikz is loaded
\usepackage{iftex}
\makeatletter
\ifXeTeX
\def\pgf@sys@pdf@mark@pos@pgfpageorigin{\pgfqpoint{\hoffset}{\voffset}}
\fi
\makeatother
Un esempio 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}

PS: Node current page
è fornito direttamente da tikz
, quindi non è necessario caricare il tikzpagenodes
pacchetto.