scrletter 中带有字母页面样式的页码样式存在问题

scrletter 中带有字母页面样式的页码样式存在问题

此处的所有页面引用均对应于英文版 KOMA-Script 手册,版本号为 2.28。

考虑以下 TeX 文件。

\documentclass[12pt,headheight=30pt,headinclude,firsthead=false,firstfoot=false,foldmarks=false,foldmarks=blmtP,fromalign=center,fromphone,fromemail,version=last, backaddress=false, subject=titled, twoside=semi, cleardoublepage=current]{scrletter}
\usepackage{scrlayer-scrpage}
\usepackage{lipsum}
\usepackage{lastpage}
\ohead{\jobname.tex\hspace{0.5cm}\today}
\renewcommand\pagemark{{\usekomafont{pagenumber}\thepage\ of \pageref{LastPage}}}
\ofoot*{}
\cfoot{\pagemark}
\RequirePackage[T1]{fontenc}
\begin{document}
\def\today{19th February, 2022}
\begin{letter}{Name}
  \opening{Dear Name,}
  \thispagestyle{scrheadings}
  \lipsum
\end{letter}
\lipsum
\end{document}

使用 PDFLaTeX 生成的文档有 4 页。我的问题是关于页码的。如您所见,页码为Page 1Page 23 of 44 of 4。这是意外行为。

如果用 替换scrletterscrlttr2则会得到预期的行为,即1 of 42 of 43 of 44 of 4

scrletter这可能与定义了自己的页面样式(即plain.letter和 )有关letter。似乎该页面样式是为嵌入其他类文档的字母创建的,这是scrletter用例。而且似乎该页面样式会默默覆盖我设置的样式,至少对于页码而言是如此。但这都是半猜测。我一直在阅读手册,试图理解它。

例如,在第 4.13 节:“具有默认页面样式的页眉和页脚”第 231 页中写道:

scrletter letter 由于标题页面样式通常已被类使用,因此 scrletter 包改为定义 letter 页面样式。这是在第 5 章第 254 页的 scrlayer-scrpage 的帮助下完成的。启用 automark=true 设置后, letter 将承担 scrlttr2 中标题所扮演的角色。设置 automark=false 后, letter 将承担 myheadings 的角色。

我读过好几遍了,但读起来还是像胡言乱语。但也许我读得不够多。我也读了第 5 章的相关部分,它们本身很有道理,但我看不出它们与这里的问题有什么关系。

第 229 页写道:

有关 scrletter 包的页面样式的特征的更多信息,请参阅第 22.2 节。

第 22.2 节规定

目前,只能在德语 KOMA-Script 书 [Koh20a] 的同一位置找到有关该主题的更多信息。

如果有人有德语书,并且愿意总结该部分的内容,请这样做。

第 229 页还写道

示例:您正在使用 scrletter 包,并希望字母使用与 \pagestyle 为文档其余部分设置的相同页面样式。为此,请在文档前言中输入命令 \renewcommand{\letterpagestyle}{}。请注意 \renewcommand* 中的星号。

这似乎可以满足我的要求,但对我来说却不起作用。

答案1

该类scrletter是未记录的包装类。它scrartcl使用字体大小12pt和包加载类scrletter

\pagemark已由 KOMA-Script 定义scrartcl。因此,包针对文档中的信件scrletter进行定义\letterpagemark。如果信件中的页码格式应与文档其他部分中的页码格式相同,请使用

\let\letterpagemark\pagemark

之前的环境letter

\documentclass[
  %12pt,% default
  headheight=30pt,headinclude,
  firsthead=false,firstfoot=false,
  foldmarks=false,
  %foldmarks=blmtP,% disabled by foldmarks=false
  %fromalign=center,% disabled by firsthead=false
  %fromphone,fromemail,% disabled by firsthead=false
  %version=last,
  backaddress=false,
  subject=titled,
  twoside=semi,
  cleardoublepage=current
]{scrletter}
%\usepackage{scrlayer-scrpage}% load by package scrletter 
\usepackage{lipsum}% only for dummy text
\usepackage[T1]{fontenc}

\clearpairofpagestyles
\ohead{\jobname.tex\hspace{0.5cm}\usekomavar{date}}
\cfoot{\pagemark}
\renewcommand*{\pagemark}{{\usekomafont{pagenumber}{\thepage\ of \pageref{LastPage}}}}
\let\letterpagemark\pagemark
\AddToHook{shipout/lastpage}{\label{LastPage}}% replaces package lastpage

\renewcommand*{\letterpagestyle}{scrheadings}% page style for the next pages of the letter
\AddToHook{cmd/opening/after}{\thispagestyle{\letterpagestyle}}% use the same page style on first letter page

\setkomavar{date}{19th February, 2022}% do not change \today

\begin{document}
\begin{letter}{Name}
  \opening{Dear Name,}
  \thispagestyle{scrheadings}
  \lipsum
\end{letter}
\lipsum
\end{document}

在此处输入图片描述

笔记:

\renewcommand*{\letterpagestyle}{scrheadings}% page style for the next pages of the letter
\AddToHook{cmd/opening/after}{\thispagestyle{\letterpagestyle}}% use the same page style on first letter page

可以替换为

\renewcommand*\letterpagestyle{}% do not change the page style for the letter
\AddToHook{cmd/opening/after}{\thispagestyle{scrheadings}}% use scrheadings on first letter page

结果是一样的。

相关内容