0%

【LaTeX Tips】利用 TikZ 在 LaTeX 文档中制作水印效果

本文最早发布于知乎专栏,略有修改.

在未获得本人书面许可的情况下,禁止任何形式的「合理使用」、转载、分享以及将链接发至知乎主站外任何网站或 App (包括知乎日报),外泄斩立决。智商欠奉,中文阅读障碍或微博控患者, 请在监护人及医师协助下学习本段落,谢谢合作。

制作水印基本上需要解决下面几个问题:

  • 水印应该叠放在正文的下面,不得覆盖文字
  • 水印应该放置在合适的位置
  • 水印的颜色应该足够淡,因此不会影响(太多)文章正文的阅读

在 LaTeX 中,可以用 eso-pic 宏包提供的 \AddToShipoutPictureBG 命令,来将内容叠放在正文的下面;使用 TikZ 宏包(这是绘图工具 PGF 的前端)来为水印文字定位;使用 xcolor 宏包设置水印的颜色。

同时,我们会希望:

  • 设定水印文字内容
  • 设定水印文字大小
  • 设定水印文字偏转角度
  • 能够在合适的位置开启水印效果

于是我们有了下面这样的实现:

1
2
3
4
5
6
7
8
9
\newcommand{\watermark}[3]{\AddToShipoutPictureBG{
\parbox[b][\paperheight]{\paperwidth}{
\vfill%
\centering%
\tikz[remember picture, overlay]%
\node [rotate = #1, scale = #2] at (current page.center)%
{\textcolor{gray!80!cyan!30}{#3}};
\vfill}}}
\newcommand{\watermarkoff}{\ClearShipoutPictureBG}

一个可供测试的完整例子是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
\documentclass{article}
\usepackage{tikz}
\usepackage{xcolor}
\usepackage{eso-pic}

\newcommand{\watermark}[3]{\AddToShipoutPictureBG{
\parbox[b][\paperheight]{\paperwidth}{
\vfill%
\centering%
\tikz[remember picture, overlay]%
\node [rotate = #1, scale = #2] at (current page.center)%
{\textcolor{gray!80!cyan!30}{#3}};
\vfill}}}

\usepackage{blindtext}

\begin{document}
\watermark{60}{10}{DRAFT}
\blinddocument
\clearpage
\end{document}

以上。

俗话说,投资效率是最好的投资。 如果您感觉我的文章质量不错,读后收获很大,预计能为您提高 10% 的工作效率,不妨小额捐助我一下,让我有动力继续写出更多好文章。