\patchcmd \thispagestyle{empty} 之后,在 scrbook 中的零件页面左上角设置单词“plain”

\patchcmd \thispagestyle{empty} 之后,在 scrbook 中的零件页面左上角设置单词“plain”

我想在 scrbook 的每个部分页面上都添加背景图像。找到了此解决方案:如何在 scrbook 中为每个章节页面赋予自己的背景图像?来自 @crf

链接的解决方案会设置页码,所以我尝试将页面样式设置为“空”。它几乎起作用了:背景图像出现,页码消失。不幸的是,现在它在部分页面的左上角写着“纯文本”。

我在这里做错了什么?

代码:

\documentclass{scrbook}
\usepackage[%
%automark,headsepline=.5pt
]{scrlayer-scrpage}
\usepackage[ngerman]{babel}
\usepackage{blindtext,graphicx,etoolbox}
\usepackage{eso-pic}
\usepackage{calc}
    
\makeatletter
\providecommand{\parthook}{}
\patchcmd{\scr@startpart}{\thispagestyle}{\parthook\thispagestyle{empty}}{}{}
\newcommand{\partimage}[2][]{% \parthook[<options>]{<image>}
  \renewcommand{\parthook}{% Update \parthook
    \AddToShipoutPictureBG*{% Add picture to background of THIS page only
      \AtTextCenter{\put(-5cm,-150){\includegraphics[width=10cm,#1]{#2}}}
      }% Insert image
      \renewcommand{\parthook}{}}
  }% Restore \parthook
\makeatother



\begin{document}

\partimage{example-image-a}
\part{The First Part}
\blindtext[1]

\end{document}

答案1

您正在\thispagestyle用替换\parthook\thispagestyle{empty},但这样做无法工作,因为 `\thispagestyle 的原始参数仍然存在。您可以使用

\parthook\@firstoftwo{\thispagestyle{empty}}

从而吞噬这一论点。

另一方面,有一种更简单的方法来设置部分页面样式,即scrbook

\renewcommand{\partpagestyle}{empty}

完整代码。

\documentclass{scrbook}
\usepackage[%
%automark,headsepline=.5pt
]{scrlayer-scrpage}
\usepackage[ngerman]{babel}
\usepackage{blindtext,graphicx,etoolbox}
\usepackage{eso-pic}
\usepackage{calc}
    
\renewcommand{\partpagestyle}{empty}

\makeatletter
\providecommand{\parthook}{}
\patchcmd{\scr@startpart}{\thispagestyle}{\parthook\thispagestyle}{}{}
\newcommand{\partimage}[2][]{% \parthook[<options>]{<image>}
  \renewcommand{\parthook}{% Update \parthook
    \AddToShipoutPictureBG*{% Add picture to background of THIS page only
      \AtTextCenter{\put(-5cm,-150){\includegraphics[width=10cm,#1]{#2}}}%
    }% Insert image
    \renewcommand{\parthook}{}%
  }%
}% Restore \parthook
\makeatother



\begin{document}

\partimage{example-image-a}
\part{The First Part}
\blindtext[1]

\end{document}

不过,您可以通过使用 提供的适当钩子来避免修补scrbook

\documentclass{scrbook}
\usepackage[%
%automark,headsepline=.5pt
]{scrlayer-scrpage}
\usepackage[ngerman]{babel}
\usepackage{blindtext,graphicx,etoolbox}
\usepackage{eso-pic}
\usepackage{calc}

\renewcommand{\partpagestyle}{empty}
\providecommand{\parthook}{}
\AddtoDoHook{heading/postinit/part}{\parthook}

\newcommand{\partimage}[2][]{% \parthook[<options>]{<image>}
  \renewcommand{\parthook}{% Update \parthook
    \AddToShipoutPictureBG*{% Add picture to background of THIS page only
      \AtTextCenter{\put(-5cm,-150){\includegraphics[width=10cm,#1]{#2}}}%
    }% Insert image
    \renewcommand{\parthook}{}
  }%
}% Restore \parthook



\begin{document}

\partimage{example-image-a}
\part{The First Part}

\end{document}

相关内容