\@chapapp 在回忆录标题中无法正确扩展

\@chapapp 在回忆录标题中无法正确扩展

我正在使用 XeLaTeX 将一本书从 FrameMaker 转换为回忆录类,并且必须设计自己的章节和页面样式以满足出版商的要求。大部分情况下,它工作正常,但我尝试通过放入\@chapapp左侧标记来提取“章节”或“附录”,但似乎不起作用:我没有得到正确的文字,而是只得到了“chapapp”。

MWE 如下:

% !TEX TS-program = xelatexmk
 \documentclass[%
    a4paper,            % minus margins = A5
    11pt,               % reduce to 10 if required
    twoside,            % two-sided printing
    one column,         % single column of text on a page
    openright,          % chapters/lessons begin on odd pages only; review later
%   draft               % mark overfull lines and provide change bars; change later
    ]{memoir}

% CHAPTER STYLE
\makechapterstyle{olms}{%
    \setlength{\beforechapskip}{50pt}
    \setlength{\midchapskip}{20pt}% unused
    \setlength{\afterchapskip}{40pt}
    \renewcommand{\chapnamefont}{\sffamily\LARGE\bfseries}
    \renewcommand{\chapnumfont}{\sffamily\LARGE\bfseries}
    \renewcommand{\afterchapternum}{:\space}
    \renewcommand{\chaptitlefont}{\sffamily\LARGE\bfseries}
}
\chapterstyle{olms}

% PAGE STYLE
\makepagestyle{olms}
\makeevenhead{olms}{\thepage}{\leftmark}{}
\makeoddhead{olms}{}{\rightmark}{\thepage}
\makepsmarks{olms}{%
    \createmark{chapter}{both}{shownumber}{\@chapapp\space}{:\space}
    \createmark{section}{right}{shownumber}{}{\space}
\createplainmark{toc}{both}{\contentsname}
\createplainmark{lof}{both}{\listfigurename}
\createplainmark{lot}{both}{\listtablename}
\createplainmark{bib}{both}{\bibname}
\createplainmark{index}{both}{\indexname}
\createplainmark{glossary}{both}{\glossaryname}
}

\pagestyle{olms}
\nouppercaseheads

\usepackage{lipsum}

\begin{document}
\frontmatter
\setcounter{page}{5}
\tableofcontents

\mainmatter
\chapter{First Chapter}
\lipsum[1]
\section{First section}\lipsum[3-5]

\appendix
\chapter{First Appendix}
\lipsum[1]
\section{First section}\lipsum[3-5]

\end{document}

第 2 页的页眉如下所示:

在此处输入图片描述

我很困惑,因此如果能提供任何帮助我都会很感激。

答案1

你需要

\makeatletter
\makepsmarks{olms}{%
  \createmark{chapter}{both}{shownumber}{\@chapapp\space}{:\space}
  \createmark{section}{right}{shownumber}{}{\space}
\makeatother

因为您正在使用\@chapapp- 一个带有 的宏@(在文件/类之外.sty)。请参阅做什么\makeatletter\makeatother做什么?这解释了这对组合中发生的情况。

在此处输入图片描述

\chaptername如果您不使用附录,则可以使用\@chapapp

\makepsmarks{olms}{%
  \createmark{chapter}{both}{shownumber}{\chaptername\space}{:\space}
  \createmark{section}{right}{shownumber}{}{\space}

相关内容