我正在修改 Hansen 回忆录课程的章节风格,如文本博客。遗憾的是,回忆录类文献中没有讨论汉森风格。
我将其改为左对齐并使用\sfstyle
章节标题字体。我现在想控制章节标题的颜色。
我目前的尝试:
\documentclass[12pt,english,american]{memoir}
\makeatletter
\usepackage{color}
\usepackage{kpfonts}
\usepackage{calc}
\definecolor{ChapNumColor}{gray}{0.90}
\definecolor{ChapTitleColor}{gray}{0.65}
% helper macros
\newcommand\numlifter[1]{\raisebox{-18mm}[0pt][0pt]{\smash{#1}}}
\newcommand\numindent{\kern08mm}
\newlength\chaptertitleboxheight
\makechapterstyle{hansen}{
\renewcommand\printchaptername{%
\color{ChapTitleColor}%
%\raggedleft
}
\renewcommand\printchapternum{%
\begingroup%
\leavevmode%
\chapnumfont%
\strut%
\numindent%
\numlifter{\thechapter}%
\endgroup%
}
\renewcommand*{\printchapternonum}{%
\vphantom{\begingroup%
\leavevmode%
\chapnumfont%
\numlifter{\vphantom{9}}%
\numindent%
\endgroup}
\afterchapternum}
\setlength\midchapskip{0pt}
\setlength\beforechapskip{0.5\baselineskip}
\setlength{\afterchapskip}{3\baselineskip}
\renewcommand\chapnumfont{%
\fontsize{40mm}{0mm}%
\bfseries%
\fontfamily{\sfdefault}\selectfont%
\color{ChapNumColor}%
}
\renewcommand\chaptitlefont{%
\huge%
\sffamily%
%\color{ChapTitleColor}%
%\raggedleft%
}%
\settototalheight\chaptertitleboxheight{%
\parbox{\textwidth}{\chaptitlefont \strut bg\\bg\strut}}
\renewcommand\printchaptertitle[1]{%
\parbox[t][\chaptertitleboxheight][t]{\textwidth}{%
%\microtypesetup{protrusion=false}% add this if you use microtype
\chaptitlefont\strut ##1\strut}%
}
}
\chapterstyle{hansen}
\makeatother
\usepackage{babel}
\begin{document}
\chapter*{Preface}
content
\chapter{Introduction}
content
\chapter{Conclusion}
content
\end{document}
这会正确地为编号的\chapter
s 着色,但不能正确地为未编号的\chapter*
s 着色,包括目录标题。
\color{ChapTitleColor}
如果我注释掉宏中的语句\printchaptername
并取消注释下面宏中的颜色语句\chaptitlefont
,我确实会得到正确的颜色,但现在章节标题已经被向下推了一行左右。
也许我错过了某个地方的行尾百分比标记,因为我对 TeX 的语法还不太熟悉。
\chapter*
(注意:虽然我在图片中指出了这一点,但我不确定这是否适用于。我可以在乳胶页面上覆盖标尺网格来检查这些内容吗?)
如何在不影响格式的情况下修复选项 1 或选项 2?
按照开发人员的意图,为这种风格着色的“正确”方法是什么?
答案1
您走在正确的道路上。您可以\chaptertitlefont
只使用修改,只需\leavevmode
在颜色命令前添加一个。
\renewcommand\chaptitlefont{%
\huge%
\sffamily%
\leavevmode\color{ChapTitleColor}%
%\raggedleft%
}%
因为您可能想问\leavevmode
实际上做了什么,这里有一个解释的链接:
顺便说一句,最好使用xcolor
而不是color
。