我正在使用 amsbook 文档类。我希望它在每页顶部打印章节编号。如何实现?我有哪些选项可以显示它?
编辑:这是我的序言。我打了大约六个部分,但它们并没有什么不寻常之处。
\documentclass[12pt]{amsbook}
\usepackage{etex}
\usepackage[usenames,dvipsnames]{pstricks}
\usepackage{epsfig}
\usepackage{pst-grad} % For gradients
\usepackage{pst-plot}
\usepackage{tikz}
\usepackage{amsmath,amsthm,amsfonts,amssymb,bm,tikz,pgfplots,subfig,float,sidecap,enumitem,varioref,thmtools}
\usepackage[margin=1in]{geometry}
\usepackage{setspace}
\usepackage{multicol}
\usepackage[nice]{nicefrac}
\usepackage{imakeidx}
\usepackage[hypertexnames=true]{hyperref}
\hypersetup{colorlinks,linkcolor=blue}
\pagestyle{plain}
\makeindex[name=index, title=Index of Terms, columns=2]
\makeindex[name=notation, title=Index of Notations, columns=2]
\onehalfspacing %also singlespacing and doublespacing
\setlength{\parindent}{18pt}
\setlength{\intextsep}{1cm}% plus 1pt minus 2pt}
\setlength{\textfloatsep}{1cm}% plus 1pt minus 2pt}
\setlength{\floatsep}{1cm}% plus 1pt minus 2pt}
\usepackage{enumitem}
\setcounter{secnumdepth}{2}
\numberwithin{section}{chapter}
\title{Book Title}
\author{Me}
\begin{document}
\maketitle
\pagebreak
\setcounter{secnumdepth}{-1}
\setcounter{page}{1}
\pagenumbering{roman}
\setcounter{tocdepth}{4}
\makeatletter
\def\l@subsection{\@tocline{2}{0pt}{2.5pc}{5pc}{}}
\makeatother
\tableofcontents
\pagebreak
\setcounter{secnumdepth}{2}
\pagenumbering{arabic}
\setcounter{page}{1}
\section{Book Begins}
A
\newpage
B
\newpage
C
\end{document}
答案1
这是您的文件的改编版,它将在所有页面上将运行头设置为节名称第一部分出现后。我把页眉保留为章节标题,以处理章节中没有章节的情况,或者第一章节直到第二页之后才出现的情况。
\documentclass[12pt]{amsbook}
\usepackage{xpatch}
\usepackage{etex}
\usepackage{amssymb,bm}
\usepackage[hypertexnames=true]{hyperref}
\hypersetup{colorlinks,linkcolor=blue}
\numberwithin{section}{chapter}
\setcounter{secnumdepth}{2}
\makeatletter
\patchcmd\ps@headings
{\def\sectionmark{\@secmark\markright\sectionrunhead\sectionname}}%
{\def\sectionmark{\@secmark\markboth\sectionrunhead\sectionname}}%
{}{}
\pagestyle{headings}%
\makeatother
\title{Book Title}
\author{Me}
\begin{document}
\maketitle
\pagebreak
\setcounter{secnumdepth}{-1}
\setcounter{page}{1}
\pagenumbering{roman}
\setcounter{tocdepth}{4}
\makeatletter
\def\l@subsection{\@tocline{2}{0pt}{2.5pc}{5pc}{}}
\makeatother
\tableofcontents
\pagebreak
\setcounter{secnumdepth}{2}
\pagenumbering{arabic}
\setcounter{page}{1}
\chapter{Chapter title}
xx
\newpage
xx
\newpage
\section{Book Begins}
A
\newpage
B
\newpage
C
\end{document}
在运行标题中出现的定义在 的定义范围内\ps@headings
。
唯一需要的更改是针对部分,因此应用补丁(使用xpatch
包机制)而不是复制和替换整个(长!)定义。完成后,有必要重置\pagestyle
以使用新的标题定义。这通常在首先检查文件是否存在的代码中完成.cfg
,但由于您希望更改是强制性的,并且该代码块还有其他副作用,因此只\pagestyle
调用更改。