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

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

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

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

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

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

同时,我们会希望:

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

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

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

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

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

以上。

热评文章