首次运行中后台工作方式不同

首次运行中后台工作方式不同

几个月后回到文档时,通过软件包配置的背景background消失了。我检查了一下,删除文件后背景已经恢复aux,但是仅限首次运行经过几次测试后,背景图像有时会恢复,但仅限于文档的最后几页,而其他图像似乎(我现在无法重现)在将vshifthshift设置为零时每次运行时都一致运行。它只是在第一次运行时消失吗?第一次运行时的位置是否不同,导致背景超出页面范围?

如何才能从第一次运行开始就保证位置一致?

\documentclass{book}

\usepackage[pages=all]{background}%
\backgroundsetup{
scale=1,
color=black,
opacity=0.65,
angle=0,
vshift=0cm,
hshift=0cm,
contents={%
  BACKGROUND CONTENT
  }%
}


\begin{document}

Lipsum.

\end{document}

Overleaf 没有显示此问题,我发现 Miktex、Texmaker 运行 PDFLaTeX 时存在此问题。

答案1

overlay模式(否remember picture)下,tikz 将把原点放在当前位置(\put)。

\documentclass{book}
\usepackage{tikz}
\usepackage{lipsum}

\AddToHook{shipout/background}{\put(0.5\paperwidth,-0.5\paperheight)% center of paper
  {\tikz[overlay]{\node[opacity=0.65] at (0,0) {BACKGROUND CONTENT};}}}

\begin{document}

\lipsum[1]

\end{document}

此版本将与 XeLaTeX 兼容。

\documentclass{book}
\usepackage{tikz}
\usepackage{lipsum}

\newsavebox{\background}
\savebox{\background}{\begin{minipage}[t][\paperheight][s]{\paperwidth}
  \hrule height0pt\vfill
  \centering
  \tikz{\node[opacity=0.5]{BACKGROUND CONTENT};}
  \vfill\hrule height0pt
\end{minipage}}% Note, \hrule is used to put baselines at the top and bottom of the page.

\AddToHook{shipout/background}{\put(0pt, 0pt){\usebox\background}}

\begin{document}

\lipsum[1-4]

\end{document}

相关内容