Eine LaTeX-Seite entsteht als vertikale Liste und wird dann als fertige Box in einem Stück ausgegeben (shipout). Damit bleibt keine Lücke, in die sich nachträglich ein Hintergrund darunter schieben ließe. Seitenhintergründe – eine flächige Tönung, ein randabfallendes Foto, ein diagonales DRAFT-Wasserzeichen – gibt es trotzdem, weil alle zuständigen Pakete denselben Trick anwenden: Sie klinken sich unmittelbar vor der Ausgabe ein und setzen ihre Farbe vor dem eigentlichen Text. Der Text wird danach darübergedruckt, und das Ergebnis wirkt wie ein Hintergrund. Diese Seite verfolgt diesen einen Gedanken durch \pagecolor, eso-pic, das Paket background und draftwatermark – bis zu der Stelle, an der die meisten scheitern: Druck und Dateigröße.
Unterschied zwischen \pagecolor und einer echten Hintergrundebene
Genügt eine flächige Einzelfarbe hinter der ganzen Seite, lautet die Antwort schlicht \pagecolor{Farbe}; ein Hintergrundpaket kommt dabei gar nicht vor. Der Befehl stammt aus color/xcolor und nicht aus dem LaTeX-Kern, weshalb \pagecolor{yellow} ohne \usepackage{xcolor} zu ! Undefined control sequence. führt. Rückgängig macht das \nopagecolor. Zwei Eigenschaften überraschen regelmäßig. Erstens wirkt der Befehl global und ignoriert Gruppen: Auch innerhalb einer Umgebung oder in geschweiften Klammern gesetzt, bleibt die Tönung von dieser Seite bis zum Dokumentende bestehen (wie Farben selbst notiert werden, behandelt die Farbseite). Zweitens lässt sich damit nur ein flaches Rechteck füllen – kein Foto, kein Logo, kein gedrehter Text. Fast alles Weitere auf dieser Seite entspringt dieser zweiten Grenze.
\documentclass{article}
\usepackage{xcolor} % \pagecolor lives here, not in the kernel
\begin{document}
\pagecolor{yellow!10} % tints this page and every page after it
Text on tinted paper.
\clearpage
\nopagecolor % back to plain paper
Text on plain paper.
\end{document}Was passiert also, wenn hinter dem Text mehr als nur Farbe stehen soll? In dem Moment, in dem LaTeX den Inhalt einer Seite kennt, ist die Seite bereits fertig: Die Ausgaberoutine hat eine große vertikale Box zusammengesetzt, und es bleibt nur noch, sie herauszuschreiben. Eine Ebene zum Unterschieben existiert nicht. Der Kern bietet stattdessen zwei Hooks an, shipout/background und shipout/foreground, und der Mechanismus ist fast komisch direkt. shipout/background schiebt eine Box der Größe null als allererstes Element in die Ausgabebox; ihr Inhalt wird also zuerst gedruckt, und der restliche Seiteninhalt überdruckt ihn schlicht. shipout/foreground hängt eine solche Box als allerletztes Element an und hebt sie in die Ecke zurück, sodass sie zuletzt gedruckt wird und den Text verdeckt. PDF kennt keine z-Koordinate – die Reihenfolge des Farbauftrags ist die einzige vorhandene Tiefe. Beide Hooks öffnen eine picture-Umgebung, deren Ursprung (0,0) in der linken oberen Seitenecke liegt und deren \unitlength 1 pt beträgt; deshalb sind die vertikalen Koordinaten in einem \put dort normalerweise negativ.
Bemerkenswert ist, dass diese beiden Hooks deutlich jünger sind als die Pakete, die sie verwenden. Sie kamen mit dem LaTeX-Release vom 2020-10-01; davor flickte jedes Hintergrundpaket die Ausgaberoutine selbst, weshalb sich atbegshi, everyshi und everypage angesammelt haben. Diese Pakete funktionieren weiter, sind aber nur noch dünne Kompatibilitätsschichten – \AddEverypageHook{...} aus everypage lautet heute buchstäblich \AddToHook{shipout/background}{\put(1in,-1in){...}}, wobei 1in,-1in den Ursprung um einen Zoll nach innen und einen Zoll nach unten verschiebt, also auf den traditionellen Bezugspunkt von TeX. Die praktische Folge ist schlicht: eso-pic, background und draftwatermark legen ihr Material alle in denselben Kern-Hook. Deshalb lassen sie sich kombinieren – und deshalb können sie sich auch darum streiten, wer zuerst gedruckt wird.
Grafik auf jeder Seite mit eso-pic – \AddToShipoutPictureBG
eso-pic ist das Allzweckwerkzeug. \AddToShipoutPictureBG{...} zeichnet sein Argument ab dieser Stelle auf jeder Seite hinter den Text, \AddToShipoutPictureFG{...} davor. Das Paket von Rolf Niepraschk ist älter als die Kern-Hooks und ist in Version 3 auf sie umgezogen; es hält sich, weil es keinerlei Annahme darüber trifft, was gezeichnet werden soll. Die Sternformen \AddToShipoutPictureBG* und \AddToShipoutPictureFG* wirken nur auf der aktuellen Seite – intern wird das Sternmaterial in dem Moment geleert, in dem diese Seite ausgegeben wird. Um einen Hintergrund später zu beenden, dient \ClearShipoutPictureBG (für den Vordergrund \ClearShipoutPictureFG). \AddToShipoutPicture und \AddToShipoutPicture* sind alte Aliase der BG-Formen und verhalten sich identisch.
Innerhalb des Hooks befindet man sich in einer picture-Umgebung, platziert wird also mit \put(x,y){...}. Standardmäßig verlegt eso-pic den Ursprung in die linke untere Ecke des Blattes (Option pscoord, standardmäßig aktiv). Beim Laden als \usepackage[texcoord]{eso-pic} wandert der Ursprung nach links oben, und y wächst nach unten. Weil das Abzählen von der Ecke jedes Mal mühsam ist, liefert das Paket Hilfsbefehle: \AtPageLowerLeft, \AtPageUpperLeft und \AtPageCenter bezogen auf das Blatt, \AtTextUpperLeft, \AtTextLowerLeft und \AtTextCenter bezogen auf den Satzspiegel sowie \AtStockLowerLeft und Verwandte, wenn die Klasse memoir im Spiel ist. Aktuelles LaTeX erlaubt echte Maße in \put, sodass \put(0,-\paperheight) zulässig ist; der alte Wrapper \LenToUnit, der genau dafür da war, ist heute praktisch eine Durchreiche und existiert nur noch aus Kompatibilitätsgründen. Wer Koordinaten raten muss, lädt \usepackage[grid]{eso-pic}: Damit liegt ein beschriftetes Gitter über jeder Seite – gridunit=mm als Vorgabe, daneben bp, in und pt.
\documentclass{article}
\usepackage{eso-pic}
\usepackage{graphicx}
% one image stretched over the whole sheet, on every page
\AddToShipoutPictureBG{%
\AtPageLowerLeft{%
\includegraphics[width=\paperwidth,height=\paperheight]{background.jpg}}%
}
\begin{document}
The text sits on top of the full-bleed image.
\end{document}Soll statt eines Fotos ein gezeichnetes Muster erscheinen, gehört ein tikzpicture in den Hook. Der bequeme Ankerpunkt ist hier \AtPageCenter, denn dann strahlen die TikZ-eigenen Koordinaten von der Blattmitte aus und alles lässt sich relativ zu (0,0) denken. Der praktische Ablauf lautet: die Option grid eingeschaltet lassen, solange positioniert wird, und danach entfernen.
\documentclass{article}
\usepackage[grid,gridunit=mm]{eso-pic} % drop "grid" once the position is right
\usepackage{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}Hintergrund nur auf einer Seite oder nur auf der Titelseite
Die Antwort lautet: die Sternform verwenden und sie dort notieren, wo die betreffende Seite beginnt. \AddToShipoutPictureBG*{...} wirkt nur auf die Seite, die in dem Moment gerade zusammengesetzt wird, in dem LaTeX die Zeile liest. Ein Titelhintergrund gehört daher in die Präambel oder unmittelbar vor \maketitle; steht er später, landet er auf derjenigen Seite, die zufällig offen war. Dieselbe Überlegung deckt eine Falle in \ClearShipoutPictureBG auf: Der Befehl wirkt global und sofort, ein Aufruf mitten auf einer Seite entfernt den Hintergrund also schon von genau dieser Seite und nicht erst von der nächsten. Soll die aktuelle Seite ihren Hintergrund behalten, wird sie zuerst mit \clearpage ausgegeben und erst danach gelöscht. Für einen Hintergrund über mehrere Seiten lautet die übliche Form entsprechend: ohne Stern beginnen, dann \clearpage gefolgt von \ClearShipoutPictureBG.
\documentclass{article}
\usepackage{eso-pic}
\usepackage{graphicx}
\title{Annual Report}
\author{A. Author}
\begin{document}
% starred form: the cover art lands on this page only
\AddToShipoutPictureBG*{%
\AtPageLowerLeft{%
\includegraphics[width=\paperwidth,height=\paperheight]{cover.pdf}}%
}
\maketitle
\clearpage
No background from here on.
\end{document}Die Spezialpakete bieten dieselbe Abkürzung in ihrer eigenen Sprache. background kennt firstpage=true für ausschließlich die erste Seite sowie die Kombination aus pages=some und \BgThispage für beliebig gewählte Seiten. draftwatermark beschränkt sich mit \usepackage[firstpageonly]{draftwatermark} auf Seite eins und lässt sich mitten im Dokument über \DraftwatermarkOptions{stamp=false} und {stamp=true} abschalten und wieder einschalten. Wenn ohnehin nur ein Bild eingelegt wird, ist das Paket wallpaper – eine dünne Schicht über eso-pic – bequem: \CenterWallPaper{Faktor}{Datei} zentriert ein Bild, \TileWallPaper{Breite}{Höhe}{Datei} kachelt es, und \ULCornerWallPaper und Verwandte verankern es in einer Ecke. Für diesen Abschnitt noch nützlicher: Zu jedem dieser Befehle gibt es einen Zwilling nur für die aktuelle Seite, dessen Name ein This trägt, etwa \ThisCenterWallPaper.
Das Paket background: Wasserzeichen deklarativ mit \backgroundsetup
Wer Koordinaten nicht selbst ausrechnen möchte, greift zum Paket background von Gonzalo Medina. Die gesamte Konfiguration sammelt sich in \backgroundsetup{Schlüssel=Wert, ...}, gezeichnet wird mit TikZ. Bereits ein blankes \usepackage{background} liefert die Voreinstellungen: ein großes rötliches Draft (color=red!45, contents=Draft), das mit opacity=0.5 und 60 Grad diagonal durch die Mitte jeder Seite läuft. Die wichtigsten Schlüssel sind contents= (das Material: Text, ein \includegraphics oder eine Zeichnung), color= (der gesamte xcolor-Bereich), opacity= (0 vollständig transparent, 1 vollständig deckend), angle= (gegen den Uhrzeigersinn, −360 bis 360), scale=, position= (TikZ-Knotenplatzierung wie current page.center; bloße Koordinaten dürfen nicht in Klammern stehen), placement= (die drei Vorgaben center, top und bottom), nodeanchor= und anchor= sowie hshift= und vshift= zum Feinjustieren. \backgroundsetup lässt sich in der Präambel wie im Text beliebig oft aufrufen, das Design kann also unterwegs wechseln.
\documentclass{article}
\usepackage{background}
\backgroundsetup{
contents={DRAFT},
color=red,
opacity=0.25,
angle=45,
scale=8,
position=current page.center,
}
\begin{document}
Every page carries a diagonal DRAFT watermark. Compile twice.
\end{document}Drei Fallen. Erstens: immer zweimal kompilieren. Das Material ist ein tikzpicture mit remember picture, overlay, verankert am Knoten current page; seine absolute Lage auf dem Blatt hängt also davon ab, was der vorige Lauf in die .aux-Datei geschrieben hat. Beim ersten Lauf erscheint LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right., und das Wasserzeichen sitzt falsch oder fehlt. Zweitens: Enthält das Material in contents= LaTeX-Befehle, gehört es in \backgroundsetup und nicht in die Optionen von \usepackage – der Optionsstring wird so ausgewertet, dass Befehle daran zerbrechen. Drittens funktioniert pages=some zusammen mit \BgThispage problemlos, der Gegenbefehl \NoBgThispage darf jedoch nicht in zweispaltigen Dokumenten verwendet werden: Seine Umsetzung stützt sich auf afterpage, und afterpage verträgt sich nicht mit dem Zweispaltensatz. Im Zweispaltensatz ist es zuverlässiger, die Logik umzudrehen: auf pages=some wechseln und \BgThispage auf den Seiten aufrufen, die den Hintergrund tragen sollen.
draftwatermark: ein DRAFT-Wasserzeichen in einer Zeile
Genügt ein reines Textwasserzeichen, ist draftwatermark von Sergio Callegari der kürzeste Weg. Ein \usepackage{draftwatermark} setzt ein großes graues DRAFT in die Mitte jeder Seite – voreingestellt sind text=DRAFT, angle=45, scale=1, fontsize=0.25\paperwidth sowie die Farbe colorspec=0.8 im Modell colormodel=gray. Die Konfiguration steckt in \DraftwatermarkOptions{Schlüssel=Wert}: text=, angle=, scale=, fontsize=, color= (darf ein Modell tragen, etwa {[gray]{0.85}}), hpos=/vpos= (oder beides zugleich mit pos={x,y}), hanchor=/vanchor= (oder als Buchstabenfolge wie anchor=lt) und alignment= für mehrzeiligen Text. Genau eine Ausnahme besteht: firstpageonly ist ausschließlich Paketoption; \DraftwatermarkOptions{firstpageonly} erzeugt ! Package keyval Error: firstpageonly undefined. Soll nur die erste Seite markiert werden, lautet der Aufruf \usepackage[firstpageonly]{draftwatermark}.
\documentclass{article}
% firstpageonly works only here, as a package option
\usepackage[firstpageonly]{draftwatermark}
\DraftwatermarkOptions{
text=CONFIDENTIAL,
color={[gray]{0.85}},
angle=45,
fontsize=1.5cm,
}
\begin{document}
Only the first page is marked CONFIDENTIAL.
\end{document}Schon der Grund für die Existenz dieses Pakets ist ein Stück Geschichte. Der Vorgänger draftcopy von Jürgen Vollmer zeichnete sein Wasserzeichen mit PostScript-\specials, die pdfLaTeX nicht deuten kann; laut Handbuch war genau diese Unverträglichkeit mit PDF-erzeugenden Engines der erste Anlass, draftwatermark zu schreiben. Das heutige Paket verzichtet deshalb vollständig auf treiberabhängige Kniffe und verhält sich unter pdfLaTeX, XeLaTeX und LuaLaTeX gleich. Die alten Befehle \SetWatermarkText{...}, \SetWatermarkScale{...}, \SetWatermarkColor{...}, \SetWatermarkAngle{...} und \SetWatermarkLightness{...} (0 ist schwarz, 1 ist weiß) bleiben aus Kompatibilitätsgründen erhalten, sind aber nur Weiterleitungen an \DraftwatermarkOptions; neue Dokumente verwenden besser die Schlüssel-Wert-Form. Wirklich praktisch zum Projektende ist die stamp-Familie: \usepackage[final]{draftwatermark} – nostamp ist gleichbedeutend – entfernt das Wasserzeichen, ohne an der Einrichtung etwas zu ändern, und da final eine verbreitete klassenweite Option ist, greift auch ein \documentclass[final]{article}. Ebenso klar ist die Grenze: draftwatermark legt Material ausschließlich in shipout/background und kann daher nicht über den Text stempeln. Für eine Überlagerung oder strenge Kontrolle der Stapelreihenfolge dienen \AddToShipoutPictureFG aus eso-pic, scrlayer aus KOMA-Script oder der Hook shipout/foreground direkt. draftwatermark erklärt sogar seine Reihenfolge innerhalb des Hooks: Es möchte vor eso-pic gezeichnet werden, sodass bei kombiniertem Einsatz die Grafik von eso-pic über dem Wasserzeichen liegt.
Welches Hintergrundpaket passt – und typische Stolperstellen
In der Praxis arbeitet man sich vom schlichtesten Werkzeug nach oben: \pagecolor für Farbe, draftwatermark für ein Textwasserzeichen, background für eine aufgeräumte deklarative Einrichtung – und erst wenn sich damit nichts wie gewünscht formen lässt, hinunter zu eso-pic und direkt mit \put platzieren. Sobald etwas vor dem Text liegen soll, bleiben nur noch eso-pic (oder scrlayer beziehungsweise der Hook selbst).
| Werkzeug | Geeignet für | Vor dem Text möglich? | Zu beachten |
|---|---|---|---|
\pagecolor | Flächige Hintergrundfarbe | Nein – es ist die Papierfarbe | Benötigt xcolor; global, ignoriert Gruppen |
eso-pic | Beliebige Grafik an absoluten Positionen | Ja – \AddToShipoutPictureFG | Platzierung erfolgt selbst mit \put; Sternformen nur für die aktuelle Seite |
background | Deklarative diagonale Wasserzeichen; Winkel und Deckkraft bequem | Nein – nur Hintergrund | Zwei Durchläufe nötig; \NoBgThispage scheitert im Zweispaltensatz |
draftwatermark | DRAFT- oder CONFIDENTIAL-Marke in einer Zeile | Nein – nur Hintergrund | firstpageonly ist ausschließlich Paketoption |
wallpaper | Zentrierte, gekachelte oder in Ecken verankerte Bildhintergründe | Nein – nur Hintergrund | Dünne Schicht über eso-pic; die \This...-Varianten gelten nur für die aktuelle Seite |
shipout/background | Volle Kontrolle ganz ohne Paket | Ja – über shipout/foreground | Ursprung ist die linke obere Ecke, y ist negativ; Eintrag über \AddToHook |
- Nichts erscheint, oder es sitzt falsch →
backgroundzweimal kompilieren. Beieso-picliegt der Verdacht auf dem Vorzeichen der y-Koordinate (Ursprung standardmäßig links unten) und auf überflüssigem Leerraum außerhalb von\put. - Es sollte nur auf den Umschlag, erscheint aber auf jeder Seite → die Form ohne Stern wurde verwendet. Auf
\AddToShipoutPictureBG*wechseln und unmittelbar vor\maketitlesetzen. - Das Löschen hat auch die aktuelle Seite erwischt →
\ClearShipoutPictureBGwirkt sofort; zuvor ein\clearpageeinfügen. - Das Wasserzeichen soll über dem Text liegen →
\AddToShipoutPictureFG. Wederdraftwatermarknochbackgroundkönnen das, beide arbeiten nur im Hintergrund. - In der Abgabefassung soll das Wasserzeichen weg →
\usepackage[final]{draftwatermark}oder\DraftwatermarkOptions{stamp=false}; die Einrichtung bleibt, die Marke verschwindet. - Übersetzung über DVI (dvipdfmx / dvips) → alles funktioniert, aber Farbe, Deckkraft und Bildeinbindung hängen vom Treiber ab;
eso-picbesitzt zusätzlich einedvips-Option.
Druck und Dateigröße: was ein ganzseitiger Hintergrund wirklich kostet
Ein Hintergrund, der am Bildschirm schön wirkt, ist auf Papier oft ein anderes Tier. Zuerst die physikalische Schranke: Büro-Laser- und Tintendrucker können keinen Toner bis an den Blattrand bringen. Ein auf \paperwidth gedehntes Bild, das randabfallend wirken soll, kommt mit einem wenige Millimeter breiten weißen Rahmen an allen vier Seiten zurück. Wird echter Randabfall gebraucht, muss das Blatt größer als die fertige Seite sein und anschließend beschnitten werden – richtig ist also, von der Klasse oder von geometry Papier mit Anschnitt zu verlangen, statt das Bild weiter zu dehnen. Der zweite Preis ist noch schlichter: Eine Tönung, die auf einem hinterleuchteten Bildschirm zart wirkt, ist auf Papier ein seitenfüllender Tonerblock. Das ist langsam, teuer und fällt meist dunkler aus als erwartet. Auch die Lesbarkeit zahlt mit, denn jeder Hintergrund senkt den Kontrast zum Text; als sichere Zielgröße für die opacity eines Wasserzeichens gilt daher „gerade eben wahrnehmbar“.
Die Dateigröße verhält sich je nach Machart des Hintergrunds sehr unterschiedlich. Ein mit \includegraphics geladenes Bild wird einmal in das PDF eingebettet und von jeder Seite nur referenziert; ein hundertseitiger Bericht mit fotografischem Hintergrund ist deshalb kaum größer als der Bericht plus eine Kopie des Fotos. Ein mit TikZ gezeichneter Hintergrund verhält sich anders: Die Zeichenbefehle werden für jede Seite erneut ausgeführt, und die Formen landen im Inhaltsstrom jeder Seite – die Datei wächst also näherungsweise proportional zur Seitenzahl. Ist das PDF durch einen aufwendigen Vektorhintergrund in den Megabytebereich geraten, ist die Abhilfe einfach: die Zeichnung einmal separat zu einem eigenständigen PDF übersetzen und dieses mit \includegraphics einbinden. Die Vektorqualität bleibt erhalten, und eingebettet wird genau einmal.