kırpma ve tikzpagenodes paketlerini kullanarak farklı davranış lualatex ve xelatex

Aug 18 2020

Kullanılması tikzpagenodessayfasında pozisyon elemanlarına paketi, ben yüklerken fark croppaketi XeLaTeXve LuaLaTeXfarklı davranışa sahip.

XeLaTeXcurrent page nodekoordinatları yanlış hesaplar . Doğru koordinatları almak için current page nodekullanılarak kaydırılması gereken hoffsetve voffset.

Aşağıdaki MWE current page node,. Mavi olan, şu şekilde hesaplanan düğümdür tikzpagenodes; kırmızı olan doğru dikdörtgene sahip olacak şekilde kaydırılmıştır 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}

Çıktıyı düzeltin LuaLaTeX:

Yanlış çıktı XeLaTeX:

Yanıtlar

muzimuzhiZ Aug 18 2020 at 22:47

Sanırım buna pgfxetex için sürücü dosyasındaki bir yazım hatası neden oluyor ve sorun bildirildi pgf, bkz.https://github.com/pgf-tikz/pgf/issues/909. Paket cropsıfırdan setleri \hoffsetve \voffsetsorunu ortaya çıkarmak.

Aşağıdaki kod parçacığı, kısa vadeli bir geçici çözüm olarak kullanılabilir.

% after tikz is loaded
\usepackage{iftex}

\makeatletter
\ifXeTeX
  \def\pgf@sys@pdf@mark@pos@pgfpageorigin{\pgfqpoint{\hoffset}{\voffset}}
\fi
\makeatother

Tam bir örnek:

\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}

Not: Düğüm current pagedoğrudan tarafından sağlanır tikz, dolayısıyla tikzpagenodespaket yüklemeye gerek yoktur .