我对以下解决方案有疑问使用 scrlayer-scrpage 在页面上添加水印。我的情况是,我想在一系列页面上添加多行水印。
所提出的解决方案需要页码列表,但我的文档超过 500 页。因此列出每一页并不可行。
第二个挑战是添加多行水印而不是单行文本。我在水印文本中放置了\newline
和\\
,例如:\watermarktext{Only \\ selected \newline Pages}
,但命令没有被识别。
答案1
我调整了您链接的答案中的想法,也接受页面范围。使用\watermarktext
和\watermarkpages
指定在哪里显示什么,如下例所示。
\documentclass{scrartcl}
\usepackage{xparse}
\usepackage{xcolor}
\usepackage{graphicx}
\usepackage[automark]{scrlayer-scrpage}
\ExplSyntaxOn
\tl_new:N \g_tomtom_watermark_text
\clist_new:N \g_tomtom_watermark_page_selection
\prg_new_protected_conditional:Nnn \tomtom_if_watermark_page:n { T, F, TF }
{
\tomtom_if_page_in_selection:NnTF \g_tomtom_watermark_page_selection { #1 }
{ \prg_return_true: } { \prg_return_false: }
}
\prg_new_protected_conditional:Nnn \tomtom_if_page_in_selection:Nn { T, F, TF }
{
\clist_map_inline:Nn #1
{
\__tomtom_if_page_in_selection_aux:nnT { #2 } { ##1 }
{ \clist_map_break:n { \use_i:nn \prg_return_true: } }
}
\prg_return_false:
}
\prg_new_protected_conditional:Nnn \__tomtom_if_page_in_selection_aux:nn { T }
{
\seq_set_split:Nnn \l_tmpa_seq { - } { #2 }
\seq_get_left:NN \l_tmpa_seq \l_tmpa_tl
\seq_get_right:NN \l_tmpa_seq \l_tmpb_tl
\int_compare:nTF
{ \l_tmpa_tl <= #1 <= \l_tmpb_tl }
{ \prg_return_true: } { \prg_return_false: }
}
\NewDocumentCommand \thewatermark { m }
{
\tomtom_if_watermark_page:nT { \the\value{page} }
{
\makebox[0pt][c]
{
\scalebox { 2 }
{
\rotatebox [ origin=bc ] { 45 }
{
\Huge \bfseries
\textcolor { lightgray } { \g_tomtom_watermark_text }
}
}
}
}
}
\NewDocumentCommand \watermarkpages { m }
{ \clist_gset:Nn \g_tomtom_watermark_page_selection { #1 } }
\NewDocumentCommand \watermarktext { m }
{ \tl_gset:Nn \g_tomtom_watermark_text { #1 } }
\ExplSyntaxOff
\DeclareNewLayer[
background,
textarea,
mode=picture,
contents={\putC{\thewatermark}},
]{watermark}
\AddLayersToPageStyle{@everystyle@}{watermark}
\watermarkpages{1, 4-8, 11}
\watermarktext{%
\begin{tabular}{c}
Only selected Pages \\
and another line
\end{tabular}%
}
\usepackage{blindtext} % only for dummy text
\begin{document}
\Blinddocument
\end{document}