พฤติกรรมที่แตกต่างกัน lualatex และ xelatex โดยใช้การครอบตัดและ tikzpagenodes pckages
การใช้tikzpagenodes
แพคเกจเพื่อจัดตำแหน่งองค์ประกอบในหน้าฉันสังเกตเห็นว่าเมื่อโหลดcrop
แพ็กเกจXeLaTeX
และLuaLaTeX
มีพฤติกรรมที่แตกต่างกัน
XeLaTeX
คำนวณcurrent page node
พิกัดไม่ถูกต้อง เพื่อให้ได้พิกัดที่ถูกต้องcurrent page node
ควรจะเปลี่ยนการใช้และhoffset
voffset
MWE ด้านล่างแสดงรูปสี่เหลี่ยมสองรูปที่ครอบคลุมไฟล์current page node
. สีน้ำเงินคือโหนดที่คำนวณโดยtikzpagenodes
; 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}
แก้ไขผลลัพธ์ด้วยLuaLaTeX
:

ผลลัพธ์ไม่ถูกต้องด้วยXeLaTeX
:

คำตอบ
ผมคิดว่านี้เกิดจากการพิมพ์ผิดในpgf
ไฟล์ไดรเวอร์ 's สำหรับ xetex และปัญหาได้รับการรายงานไปpgf
ให้ดูhttps://github.com/pgf-tikz/pgf/issues/909. แพ็กเกจcrop
ตั้งค่าที่ไม่เป็นศูนย์\hoffset
และ\voffset
เปิดเผยปัญหา
สามารถใช้ข้อมูลโค้ดต่อไปนี้เป็นวิธีแก้ปัญหาระยะสั้นได้
% after tikz is loaded
\usepackage{iftex}
\makeatletter
\ifXeTeX
\def\pgf@sys@pdf@mark@pos@pgfpageorigin{\pgfqpoint{\hoffset}{\voffset}}
\fi
\makeatother
ตัวอย่างเต็ม:
\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}

ปล: โหนดcurrent page
มีให้โดยตรงtikz
ดังนั้นจึงไม่จำเป็นต้องโหลดtikzpagenodes
แพ็คเกจ