निरंजन
I liked the way watermark is set for the [documentation of package background](http://texdoc.net/texmf-dist/doc/latex/background/background.pdf). I saw how it is done in its source and made this code -
```#
\documentclass[border=2cm]{standalone}
\usepackage[placement=top]{background}
\SetBgContents{abcd}
\SetBgAngle{0}
\SetBgScale{3}
\SetBgHshift{65}
\SetBgVshift{-5}
\begin{document}
Hello world
\end{document}
```
This doesn't give me the watermark, but in `\documentclass{article}` it actually works. I want to set a watermark which will automatically be adjusted to the given page-size. Is there any alternative to this package?
Top Answer
user 3.14159
In case this is in any way related to your previous question on frames around `standalalone` documents, and also if it is not, then there is good news: you can enhance the boxes from the previous `tcolorbox` answer to allow for watermarks. Ironically, you really basically need to add the `enhanced` key to get access to these features (and load the `skins` library). In fact, `tcolorbox` comes with an extended support for watermarks, which are described in section 10.3 of manual v4.31. Since there is no mention of a frame, for the time being I switched it off with `colframe=white` (there are other ways, of course).
```
\documentclass[border=3mm]{standalone}
\usepackage[skins]{tcolorbox}
\newtcolorbox{mybox}[1][]{hbox,colback=white,colframe=white,
watermark color=blue,watermark opacity=0.3,
enhanced,boxsep=3cm,#1}
\standaloneenv{mybox}
\begin{document}
\begin{mybox}[watermark text=pft]
Hello world!
\end{mybox}
\begin{mybox}[watermark text=quack]
Hello ducks!
\end{mybox}
\end{document}
```

You can then create whatever watermark you like. Just to give an (admittedly not overly nice) example, you can typeset the watermark text along a circle.
```
\documentclass[border=3mm]{standalone}
\usepackage[skins]{tcolorbox}
\usepackage{tikz}
\usetikzlibrary{decorations.text}
\newtcolorbox{mybox}[1][]{hbox,colback=white,colframe=white,
watermark color=blue,watermark opacity=0.3,
enhanced,boxsep=3cm,#1}
\tcbset{circular watermark/.style={watermark tikz={%
\pgfmathsetmacro{\myr}{0.2cm+1*width("#1")/2/pi}%
\pgfmathsetmacro{\myR}{\myr+height("#1")-2pt}%
\path[decorate,decoration={text along path,text align={align=center},
raise=-0.15ex,text={|\sffamily|#1}}]
(0,-\myr pt) arc[start angle=270,end angle=-90,radius=\myr pt];
% necessary to get the bounding box right
\path (0,-\myR pt) arc[start angle=270,end angle=-90,radius=\myR pt];
}}}
\standaloneenv{mybox}
\begin{document}
\begin{mybox}[circular watermark=pft]
Hello world!
\end{mybox}
\begin{mybox}[circular watermark=meow]
Hello cats!
\end{mybox}
\begin{mybox}[circular watermark=quack]
Hello ducks!
\end{mybox}
\end{document}
```

Answer #2
Skillmon
There are 3 code versions in this answer:
1. using the development version of LaTeX
1. using `eso-pic` instead of the development version of the kernel
1. an example with an auto-scaling watermark
## Development kernel version
The following uses the new hook-mechanism provided in the development version of the LaTeX kernel (so you need to compile this with `pdflatex-dev`, `lualatex-dev` or `xelatev-dev`).
It also requires `xfp` for the placement, both `xcolor` and `graphics` are only needed for the used contents of `\mywatermark`.
```
\documentclass{standalone}
\usepackage{xcolor}
\usepackage{graphics}
\usepackage{xfp}
\newcommand*\mywatermark{\rotatebox{30}{\sffamily\color{gray}\huge watermark}}
\AddToHook{shipout/background}
{%
\setlength\unitlength{1pt}%
\put(\fpeval{1in+0.5*\paperwidth},\fpeval{-1in-0.5*\paperheight})
{%
\sbox0{\makebox[0pt][c]{\mywatermark}}%
\raise.5\dimexpr\dp0-\ht0\relax\box0
}%
}
\begin{document}
\parbox[t][5cm]{10cm}{Hello world}
\end{document}
```

----
## `eso-pic` version
Without the development versions, you can use `eso-pic` with the option `texcoords` (just so I don't have to change the rest of the code). So the following works in current versions of LaTeX:
```
\documentclass{standalone}
\usepackage{xcolor}
\usepackage{graphics}
\usepackage{xfp}
\usepackage[texcoord]{eso-pic}
\newcommand*\mywatermark{\rotatebox{30}{\sffamily\color{gray}\huge watermark}}
\AddToShipoutPictureBG
{%
\setlength\unitlength{1pt}%
\put(\fpeval{1in+0.5*\paperwidth},\fpeval{-1in-0.5*\paperheight})
{%
\sbox0{\makebox[0pt][c]{\mywatermark}}%
\raise.5\dimexpr\dp0-\ht0\relax\box0
}%
}
\begin{document}
\parbox[t][2cm]{5cm}{Hello world}
\end{document}
```
(results are the same as above, so no new picture)
-----------
## Auto-scaling example
Just to show, that auto-scaling is possible, the following uses `adjustbox` and its `max totalsize` key for the that.
```
\documentclass{standalone}
\usepackage{xcolor}
\usepackage{graphics}
\usepackage{xfp}
\usepackage[texcoord]{eso-pic}
\usepackage{adjustbox}
\newcommand*\mywatermark
{%
\adjustbox
{max totalsize={\paperwidth}{\paperheight}}%
{\rotatebox{30}{\sffamily\color{gray}\huge watermark}}%
}
\AddToShipoutPictureBG
{%
\setlength\unitlength{1pt}%
\put(\fpeval{1in+0.5*\paperwidth},\fpeval{-1in-0.5*\paperheight})
{%
\sbox0{\makebox[0pt][c]{\mywatermark}}%
\raise.5\dimexpr\dp0-\ht0\relax\box0
}%
}
\begin{document}
Hello World!
\end{document}
```
