我正在尝试使用 TikZ 和 LaTeX 的钩子向文档添加水印。
我尝试通过改编@Skillmon 的代码来实现:https://tex.stackexchange.com/a/615832/181010。
通过这样做,我得出了以下结论:
\documentclass{article}
\usepackage{tikz}
\AddToHook{shipout/foreground}{%
\put(0.5\paperwidth,-0.5\paperheight){\mywatermark}%
}
\newcommand*\mywatermark{\usebox\mywatermarkbox}
\newsavebox\mywatermarkbox
\tikzset{mywatermark/.style={color=gray,
opacity=0.65,
rotate=#1,
font=\fontsize{60}{66}\selectfont\sffamily}}
\AtBeginDocument{%
\sbox\mywatermarkbox{%
\makebox[0pt]{\tikz\node[mywatermark=45]{GLOBAL MEGACORP};}%
}%
}
\usepackage{duckuments}
\begin{document}
\duckument
\end{document}
但是,增加字体大小后,文本不再位于页面中央(见下图)。
我该如何调整此代码以确保水印在页面上视觉居中?
我怀疑这个问题与旋转的点有关。我尝试使用rotate around
键修改这个点,但无济于事。
答案1
tikz 创建的图片默认基线位于底部。因此,如果您旋转节点,基线将始终位于左下角。
您可以使用基线键更改基线:
\RequirePackage{fix-cm}
\documentclass{article}
\usepackage{tikz}
\AddToHook{shipout/foreground}{%
\put(0.5\paperwidth,-0.5\paperheight){\mywatermark}%
}
\newcommand*\mywatermark{\usebox\mywatermarkbox}
\newsavebox\mywatermarkbox
\tikzset{mywatermark/.style={color=gray,
opacity=0.65,
rotate=#1,
font=\fontsize{60}{66}\selectfont\sffamily}}
\AtBeginDocument{%
\sbox\mywatermarkbox{%
\makebox[0pt]{\tikz[baseline=(wm.center)]\node[mywatermark=45](wm){GLOBAL MEGACORP};}%
}%
}
\usepackage{duckuments}
\begin{document}
\duckument
\end{document}