Output berbeda xelatex dan lualatex (tikzpagenodes, tcolorbox dan paket latar belakang terlibat)

Aug 17 2020

Saya memposisikan gambar di bagian atas halaman bukaan bab. Gambar harus memenuhi semua lebar halaman. Kode di bawah berfungsi dengan baik LuaLaTeX, tetapi ketika saya menjalankannya dengan XeLaTeX(harus dijalankan 3 kali untuk mendapatkan posisi yang tepat) gambar dipindahkan ke tengah horizontal halaman. Untuk alasan lain, saya harus menjalankan dokumen dengan XeLaTeX. Apa yang harus saya ubah dalam kode untuk menjalankan XeLaTeXdan mendapatkan output yang ditampilkan LuaLaTeX?

EDIT Diubah untuk menggunakan gambar contoh. Header akan berubah untuk mengikuti gambar yang ditampilkan; tetapi efek XeLaTeXpenggunaannya sama.

\documentclass{book}

%%% Include image in chapter opening
\RequirePackage{tikzpagenodes}
%%% fill rectangle with image uisng tcolorbox
%%% https://tex.stackexchange.com/a/219424/2483
\RequirePackage{tcolorbox}
\tcbuselibrary{skins}
\usetikzlibrary{calc}
\usetikzlibrary{fadings}
%%% For the background
%%% https://tex.stackexchange.com/a/86702/2483
\usepackage[pages=some]{background}
\newlength{\bleendlength}
\setlength{\bleendlength}{5mm}
\newcommand{\chapimage}[1]{%
  \backgroundsetup{scale=1,placement=top,contents={
      \tikz[remember picture,overlay] {%
      \path[fill overzoom image=example-image-a, fill image opacity=1, path fading=east, fading angle=-30]
      ($(current page.north west)+(-\bleendlength, \bleendlength)$)
      rectangle
      ($(current page.north east)+(\bleendlength, -6cm)$);
    }
  }
}
}



\begin{document}
\chapter{My first chapter}
\label{cha:my-first-chapter}
\chapimage{}\BgThispage




\end{document}

Output yang benar dengan LuaLaTeX:

Keluaran salah dengan XeLaTeX:

Jawaban

1 muzimuzhiZ Aug 17 2020 at 22:17

Nilai yang diteruskan ke backgroundopsi contents(disimpan di \Background@Contents) sudah diketik di dalam a tikzpicture. Dan bersarang tikzpictureadalah perilaku yang tidak terdefinisi. Lihat implementasi \bg@materialdi backgroundv2.1, 2014/03/04:

\newcommand\bg@material{%
  \begin{tikzpicture}[remember picture,overlay,scale=\Background@Scale]
  \node[
    rotate=\Background@Angle,
    scale=\Background@Scale,
    opacity=\Background@Opacity,
    anchor=\Background@NodeAnchor,
    xshift=\Background@HShift,
    yshift=\Background@VShift,
    color=\Background@Color,
    inner sep=0pt
    ]
    at (\Background@Position) [\Background@Anchor]
      {\Background@Contents};
  \end{tikzpicture}}%

Upaya kasar adalah untuk mendefinisikan kembali \bg@material.

% this example produces the same output with pdftex, xetex, and luatex
\documentclass{book}
\usepackage{tcolorbox}
\tcbuselibrary{skins}
\usetikzlibrary{calc, fadings}
\usepackage[pages=some]{background}

\newlength{\bleendlength}
\setlength{\bleendlength}{5mm}

\makeatletter
\renewcommand\bg@material{%
  \tikz[remember picture,overlay] {%
    \path[fill overzoom image=example-image-a, fill image opacity=1, path fading=east, fading angle=-30]
    ($(current page.north west)+(-\bleendlength, \bleendlength)$)
    rectangle
    ($(current page.north east)+(\bleendlength, -6cm)$);
  }%
}%
\makeatother

\begin{document}
\chapter{My first chapter}\label{cha:my-first-chapter}

\BgThispage
\end{document}

Solusi yang lebih baik berkisar dari redefinisi yang lebih baik, menggunakan pacakge latar belakang lain, hingga menyediakan gaya halaman khusus yang ditetapkan oleh \chapter(misalkan Anda ingin memiliki efek latar belakang yang serupa per halaman judul bab).