자르기와 tikzpagenodes pckages를 사용하는 다른 행동 lualatex 및 xelatex

Aug 18 2020

은 Using tikzpagenodes페이지의 위치 요소 패키지를, 나는로드 할 때 눈치 crop패키지를, XeLaTeX그리고 LuaLaTeX다른 동작을합니다.

XeLaTeXcurrent page node좌표를 잘못 계산합니다 . 이 올바른 좌표를 얻으려면 current page node사용하여 이동해야한다 hoffsetvoffset.

아래의 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

나는이가의 오타로 인해 발생 추측 pgfxetex에 대한의 드라이버 파일 및 문제가보고되었습니다 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패키지 를로드 할 필요가 없습니다 .