本页讲的是页面背景:铺在正文下方的整页颜色或图片、斜向的 “DRAFT” 水印、角落里的日期印章。基础是 eso-pic 包,它提供在每一页固定位置放置图形的底层机制。在它之上,还有用声明式方式制作水印的 background 包、专门做文字水印的 draftwatermark,以及用于整页纯色背景的 \pagecolor。
eso-pic:背景的基础
eso-pic 的思路很简单。LaTeX 在输出(ship out)一页之前,会叠加一个与整页同大的透明 picture 环境,然后你用 \put 把任意图形放进去;这一过程会在每一页重复。用于背景的核心命令是 \AddToShipoutPictureBG{...}:参数里的内容会画在 从这里开始的所有页面 的正文下方。只想作用于当前页时,使用带星号的 \AddToShipoutPictureBG*{...}。
如果要叠在正文 上方(前景),使用 \AddToShipoutPictureFG{...}(以及只作用于当前页的 \AddToShipoutPictureFG*)。这适合把印章压在正文上、刻意遮住部分内容的场景。为了兼容,还存在 \AddToShipoutPicture 和 \AddToShipoutPicture* 这两个别名,它们与背景版(BG)作用相同。要在中途清除先前设置的背景,调用 \ClearShipoutPictureBG;前景侧则调用 \ClearShipoutPictureFG。
定位的关键是 坐标原点默认在页面左下角。\put(x,y){...} 中的坐标从那里量起,长度单位由 \unitlength 决定(默认 1 pt)。每次从角落数坐标很麻烦,所以 eso-pic 提供了辅助命令:\AtPageCenter{...}(页面中心)、\AtPageLowerLeft{...}(左下)、\AtPageUpperLeft(左上),以及以正文区域为基准的 \AtTextCenter / \AtTextLowerLeft / \AtTextUpperLeft 等。加上 texcoord 选项时,原点会改到左上角。
实际的背景通常是在 \put 里面放入 \includegraphics 或 tikzpicture 来制作。下面是把照片铺满整页(全幅、出血)的最小示例。
\documentclass{article}
\usepackage{eso-pic}
\usepackage{graphicx}
% 全ページの背景に画像を全面表示
\AddToShipoutPictureBG{%
\AtPageLowerLeft{%
\includegraphics[width=\paperwidth,height=\paperheight]{background.jpg}}%
}
\begin{document}
Text sits on top of the full-page background.
\end{document}与 TikZ 结合时,即使没有图片也能画出底纹或图形背景。把 tikzpicture 放进 \AtPageCenter,就可以用页面中心作为原点自由绘图。为了辅助定位,可以用 grid 选项加载 eso-pic(\usepackage[grid]{eso-pic});它会在整页上画出坐标网格(单位由 gridunit 决定,默认 mm)。
\documentclass{article}
\usepackage{eso-pic}
\usepackage{tikz}
% TikZ でページ中央に淡い円の背景を描く
\AddToShipoutPictureBG{%
\AtPageCenter{%
\begin{tikzpicture}
\fill[blue!8] (0,0) circle (6cm);
\end{tikzpicture}}%
}
\begin{document}
A soft tinted disc sits behind the text on every page.
\end{document}background:声明式水印
如果不想计算 \put 坐标,只想轻松放一个斜向水印,background 包很方便。它用 TikZ 处理背景素材,所有设置都集中到 \backgroundsetup{key=value, ...}。只写 \usepackage{background} 而不指定任何选项时,默认会在每一页中央以 60° 斜向放置一个大型红色系(red!45)“Draft”。
主要键包括:contents=(显示内容,可以是文字、\includegraphics 或绘图)、scale=(缩放)、opacity=(不透明度,0–1)、angle=(角度,逆时针,−360 到 360)、color=(颜色,xcolor 的全部范围)、position=(TikZ 节点定位语法,例如 current page.center;传裸坐标时不要加括号)、placement=(center/top/bottom)、pages=(all/some)和 firstpage=(只在第一页)。\backgroundsetup 可以在导言区或正文中调用任意多次,因此可以在文档中途切换设计。
下面是典型示例:在每一页铺上半透明的斜向 “DRAFT”。
\documentclass{article}
\usepackage{background}
\backgroundsetup{
contents={DRAFT},
scale=8,
opacity=0.3,
angle=45,
color=red,
position=current page.center,
}
\begin{document}
Every page carries a diagonal DRAFT watermark.
\end{document}只想在部分页面显示时,设置 pages=some,并在需要显示的页面调用 \BgThispage;反过来,\NoBgThispage 可以只在某一页关闭背景。注意两点。要让位置正确稳定,需要编译两次。另外,如果 contents= 的素材包含 LaTeX 命令,应通过 \backgroundsetup 指定,而不要作为包选项写入(这是选项解析方式造成的)。还要注意,background 与双栏模式配合不好,\BgThispage 一类命令会失效。
更简单的水印:draftwatermark 等
如果只需要文字水印,专用的 draftwatermark 更简单。只要 \usepackage{draftwatermark},每一页中央就会出现一个大的灰色 “DRAFT”。它完全不使用 PostScript special,因此在 pdfLaTeX、XeLaTeX、LuaLaTeX 下都以同样方式工作。设置集中在 \DraftwatermarkOptions{key=value},可用键包括 text=(文字)、color=(颜色)、scale=(倍率)、angle=(角度,默认 45°)、fontsize= 和 firstpageonly(只在第一页)。
\documentclass{article}
\usepackage{draftwatermark}
\DraftwatermarkOptions{text=CONFIDENTIAL, color={[gray]{0.85}}, angle=45}
\begin{document}
A light gray CONFIDENTIAL watermark appears behind the text.
\end{document}为兼容起见,旧命令 \SetWatermarkText{...}、\SetWatermarkScale{...}、\SetWatermarkColor{...}、\SetWatermarkAngle{...}、\SetWatermarkLightness{...}(0–1,从黑到白)仍然可用,但新文档建议使用 \DraftwatermarkOptions 的键值形式。一个设计上的注意点是:draftwatermark 只能把文字铺在正文 下面(背景),不能像前景印章那样压在正文上。若要叠在前景,或精细控制层叠顺序,请使用 eso-pic 的 \AddToShipoutPictureFG,或依靠 scrlayer / LaTeX 的 shipout hooks。
当背景只是普通的颜色或图片时,朴素工具有时比专用包更合适。\pagecolor{color} 会从当前位置开始把整页背景填成指定颜色(颜色写法见颜色页面);\nopagecolor 可恢复。对于图片,基于 eso-pic 的 wallpaper 包提供 \CenterWallPaper{scale}{file} 居中放图、\TileWallPaper{width}{height}{file} 平铺图片,以及 \ULCornerWallPaper 等四角放置命令。下面的表整理了选择方式。
| 工具 | 适合用途 | 可放前景? |
|---|---|---|
eso-pic | 把任意图形放在固定位置;最灵活的基础工具 | BG 和 FG 都支持 |
background | 声明式斜向水印;角度和不透明度易设 | 可用 placement 调整 |
draftwatermark | 最快制作文字水印(DRAFT 等);所有引擎可用 | 仅背景(不可) |
\pagecolor | 整页纯色背景 | 不适用 |
wallpaper | 居中或平铺的图片背景 | 仅背景 |
如何选择,以及常见卡点
- 只是斜向文字水印 →
draftwatermark(最省事)或background(可细调角度/不透明度)。 - 整页图片、底纹或复杂绘图 →
eso-pic(需要时在\put中放tikzpicture或\includegraphics)。 - 要叠在正文上方(印章) →
eso-pic的\AddToShipoutPictureFG;draftwatermark只做背景,不能做到。 - 普通背景色 →
\pagecolor;不需要额外包。 - 位置偏移或不显示 →
background编译两次;水印太淡或太重时调opacity和scale。 - 日文环境(pLaTeX/upLaTeX + dvipdfmx) → 这些都能用,但颜色、不透明度和图片载入依赖驱动;
eso-pic也有dvips选项。
拿不准时,从最朴素的工具开始最快:背景色用 \pagecolor,文字水印用 draftwatermark,想用声明式方式整理就用 background;只有这些都达不到要求时,再下探到 eso-pic,用 \put 直接放置。这个顺序几乎能覆盖所有场景。