如何memoir
修改madsen
样式,以便第一的索引页,“索引”标题会出现在通常的章节开头规则之上吗?
示例来源:
% file indexpageone.tex
\documentclass{memoir}
\usepackage{graphicx} % need for madsen chapter style
\begin{filecontents}{indexpageone.ist}
headings_flag 1
\end{filecontents}
\chapterstyle{madsen}
\renewcommand*{\printchapternum}{\chapnumfont \space\thechapter\space}
\copypagestyle{indexfirstpage}{madsen}
%% NOW WHAT??
\makeindex
\begin{document}
\chapter{One}
apple\index{apple}, bag\index{bag},
\newpage
color\index{color}, dog\index{dog}.
\backmatter
\printindex
\end{document}
章节第一页(的顶部)和索引第一页如下所示:
因此,在索引首页上,“索引”标题应移至规则上方,保持字体大小等不变,它已经这样做了;并且规则下方不应直接出现任何标题。
因为我想对单独的名称索引和单独的符号索引的第一页做同样的事情,所以我推测修改会以某种方式引用的当前值\indexname
。
我确实检查了页面样式的定义madsen
,memoir.sty
试图找出是什么决定了“章节”名称和章节编号位于规则之上,章节标题位于规则之下,但我对此了解不够深入。
我选择的风格
几个月来我都没有在这里看到答案,无论如何,我决定采用一种在带星号的“章节”第一页不使用任何规则的样式,即序言、索引、名称索引、符号索引。这是我设计的样式(我使用的是 LucidaBright 字体,因此使用其他字体的结果当然会有所不同:
\makeatletter
\makechapterstyle{my}{%
\renewcommand{\chapnamefont}{\sffamily\bfseries}
\renewcommand{\chapnumfont}{\fontsize{58}{64}\selectfont\sffamily\bfseries}
\renewcommand{\chaptitlefont}{\Huge\sffamily\bfseries}
%
\settoheight{\midchapskip}{\chapnumfont 1}
\setlength{\midchapskip}{0pt}
\setlength{\afterchapskip}{48pt}
%
\renewcommand{\printchaptername}{%
\chapnamefont\centering\MakeUppercase{\@chapapp}\par}
%
\renewcommand*{\printchapternum}{%
\vskip -8pt\centering \chapnumfont\thechapter} % or omit the vskip?
%
\renewcommand{\afterchapternum}{%
\par\nobreak\vskip \midchapskip%
\centering\rule{0.825\textwidth}{\normalrulethickness}%
\newline}
\renewcommand{\printchaptertitle}[1]{\centering\chaptitlefont ##1}
}% end makechapterstyle
\makeatother
\renewcommand*{\cftappendixname}{Appendix\space}
\chapterstyle{my}
答案1
以下是我执行请求的方法。我认为正确的方法是创建一个新的章节样式。正如 Johannes 所说,章节样式和页面样式没有关系。页面样式有复制功能,但章节样式没有。
最简单的方法通常是从中复制代码memoir.cls
(路径在日志中列出)。这里的主要问题是,使用无星号版本时标题的位置不同,所以我们必须发挥创造力。我的代码如下。由于这个答案可能与类似的问题相关,我将首先解释一下memoir
章节样式的工作原理
章节有两个伪代码,一个用于正常\chapter
,一个用于\chapter*
\chapter
:
\chapterheadstart
\printchaptername \chapternamenum \printchapternum
\afterchapternum
\printchaptertitle
\afterchaptertitle
\chapter*
\chapterheadstart
\printchapternonum
\printchaptertitle
\afterchaptertitle
其中\chapterheadstart
,\afterchapternum
并\afterchaptertitle
执行跳过值\beforechapskip
,\midchapskip
并且\aftechapskip
值得注意的是,默认情况下为空,因此除非您记得将其包括在内,否则\chapternonum
带星号的章节永远不会运行。\afterchapternum
在许多复杂的设计中,人们最终会将其变成\printchapternonum
一个开关并完成所有的标题设计\printchaptertitle
。
\chapter
原帖问题的代码。请注意,行并不总是在同一位置(\chapter*
因为在两种情况下,章节标题的字体大小相同
\documentclass{memoir}
\usepackage{graphicx} % need for madsen chapter style
\newif\ifNOSTARCHAP
\makeatletter
% alternative madsen chapter style with a different design for the
% unstarred version
\makechapterstyle{madsenX}{% requires graphicx package
\chapterstyle{default}
\renewcommand*{\chapnamefont}{%
\normalfont\Large\scshape\raggedleft}
\renewcommand*{\chaptitlefont}{%
\normalfont\Huge\bfseries\sffamily\raggedleft}
\renewcommand*{\chapternamenum}{}
\renewcommand*{\printchapternum}{}
\renewcommand*{\printchaptername}{}
\renewcommand*{\printchapternonum}{%
\NOSTARCHAPtrue%
}%
\renewcommand\printchaptertitle[1]{%
\ifNOSTARCHAP%
\chaptitlefont ##1%
\else%
\chapnamefont \@chapapp \chapnumfont \space\thechapter%
\fi%
\par%
\vskip\midchapskip%
\hrule\vskip\midchapskip%
\ifNOSTARCHAP\else%
\chaptitlefont ##1%
\fi%
\NOSTARCHAPfalse%
}
}
\makeatother
\chapterstyle{madsenX}
\makeindex
\begin{document}
\tableofcontents*
\chapter{One}
apple\index{apple}, bag\index{bag},
\newpage
color\index{color}, dog\index{dog}.
\printindex
\end{document}
答案2
这重新定义了未编号(带星号)章节的外观。前言中的普通章节(例如)仍将与现在的外观相同。列表(由 创建\newlistof
)也仍将与现在的外观相同。
\documentclass[oneside]{memoir}
\usepackage{blindtext}
\usepackage{graphicx} % need for madsen chapter style
\chapterstyle{madsen}
\renewcommand*{\printchapternum}{\chapnumfont \space\thechapter\space}
\makeatletter
\def\@makeschapterhead#1{%
\chapterheadstart
{%\parindent \z@ \raggedright \normalfont
\parskip \z@%
\parindent \z@ \memRTLraggedright \normalfont
\interlinepenalty\@M
\printchaptertitle{#1}%
\afterchapternum
\afterchaptertitle}%
}
\makeatother
\begin{document}
\backmatter
\chapter{Wombat}
\blindtext
\chapter*{Capybara}
\blindtext
\begin{theindex}
\end{theindex}
\end{document}