자르기와 tikzpagenodes pckages를 사용하는 다른 행동 lualatex 및 xelatex
Aug 18 2020
은 Using 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
:

답변
muzimuzhiZ Aug 18 2020 at 22:47
나는이가의 오타로 인해 발생 추측 pgf
xetex에 대한의 드라이버 파일 및 문제가보고되었습니다 pgf
참조https://github.com/pgf-tikz/pgf/issues/909. 패키지 crop
는 0이 아닌 \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}

PS : 노드 current page
는에서 직접 제공 tikz
하므로 tikzpagenodes
패키지 를로드 할 필요가 없습니다 .