使用 scrlayer-scrpage 在页面范围内添加多行水印

使用 scrlayer-scrpage 在页面范围内添加多行水印

我对以下解决方案有疑问使用 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}

相关内容