参照下图,我尝试将标题上的数字“1”更改\leftmark
为\oldstylenums
数字格式。有人能帮忙吗?
这是我的 MWE:
\documentclass[12pt,twoside,openright]{memoir}
\usepackage{lipsum}
\pagestyle{headings}
\makeevenhead{headings}{}{\textsc{\MakeLowercase\leftmark}}{\oldstylenums{\thepage}}
\begin{document}
\mainmatter
\nouppercaseheads
\pagestyle{headings}
\chapter{Introduction}
\lipsum[1-6]
\end{document}
我试图复制并粘贴提供的默认代码memoir
(参考下面的代码)希望我可以从那里更改它,但最终出现了多个我无法理解的错误。
\makepagestyle{headings}
\makeevenhead{headings}{\thepage}{}{\slshape\leftmark}
\makeoddhead{headings}{\slshape\rightmark}{}{\thepage}
\makepsmarks{headings}{%
\def\chaptermark##1{%
\markboth{\MakeUppercase{%
\ifnum\c@secnumdepth > \m@ne
\if@mainmatter
\@chapapp\ \thechapter. \ %
\fi
\fi
##1}}{}}%
\def\sectionmark##1{%
\markright{\MakeUppercase{%
\ifnum\c@secnumdepth > \z@
\thesection. \ %
\fi
##1}}}
}
答案1
如果您粘贴包或类中的部分代码来直接修补它们,则需要将这些部分括在里面,\makeatletter...\makeatother
因为@
用户手稿中的 catcode 与类和样式文件中的 catcode 不同。
无论如何,您都可以通过取消从 开始的部分来缩短解决问题的时间,\def\sectionmark...
因为无论如何您都不需要更改它。然后您只需替换\@chapapp\ \thechapter
为\@chapapp\ \oldstylenums\thechapter
即可实际应用您的补丁。
甚至可以更短:你可以将补丁简化为
\renewcommand\chaptermark[1]{%
\markboth{\MakeUppercase{%
\ifmainmatter\chaptername~\oldstylenums\thechapter.~\fi#1}}{}}%
将其放在\pagestyle{headings}
.之后\ifmainmatter
是 的别名\if@mainmatter
:
\newif\ifmainmatter
\appto\mainmatter{\mainmattertrue}
\appto\backmatter{\mainmatterfalse}
\appto\appendix{\mainmatterfalse}
完整示例
\documentclass{memoir}
\usepackage{lipsum}
\usepackage{etoolbox}
\newif\ifmainmatter
\appto\mainmatter{\mainmattertrue}
\appto\backmatter{\mainmatterfalse}
\appto\appendix{\mainmatterfalse}
\makeevenhead{headings}{}{\textsc{\MakeLowercase\leftmark}}{\oldstylenums{\thepage}}
\nouppercaseheads
\pagestyle{headings}
\renewcommand\chaptermark[1]{%
\markboth{\MakeUppercase{%
\ifmainmatter\chaptername~\oldstylenums\thechapter.~\fi#1}}{}}%
\begin{document}
\mainmatter
\chapter{Introduction}
\lipsum[1-6]
\end{document}