我正在使用 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}