我想在两行之间放置章节标题。这两行应位于居中标题的左侧和右侧,如以下屏幕截图所示:
注意线条略有悬垂下面的文本。如果我能做同样的事情就好了。显然,章节标题的长度是变化的,因此解决方案需要自动适应长度。
到目前为止,我有以下内容:
\documentclass{memoir}
\usepackage{graphics}
\usepackage{fontspec}
\makeatletter
\def\thickhrulefill{\leavevmode \leaders \hrule height 1pt \hfill \kern \z@}
\def\@makechapterhead#1{%
\vspace*{60\p@}%
{\parindent \z@ \centering \reset@font
{\color{headings}
\scshape \large \@chapapp{} \thechapter
}
\par\nobreak
\interlinepenalty\@M
\Huge \itshape #1\par\nobreak
\thickhrulefill
\par\nobreak
\vskip 40\p@
}}
\usepackage{lipsum}
\setcounter{chapter}{12}
\begin{document}
\chapter{Implementation}
\lipsum
\end{document}
这给了我这个:
答案1
以下是一个想法:
\documentclass{memoir}% http://ctan.org/pkg/memoir
\makeatletter
\def\thickhrulefill{\leavevmode \leaders \hrule height 1pt \hfill \kern \z@}
\def\@makechapterhead#1{%
\vspace*{60\p@}%
{\parindent \z@ \centering \reset@font
{
\scshape \large \@chapapp{} \thechapter
}
\par\bigskip\nobreak
\interlinepenalty\@M
\makebox[\linewidth]{%
\makebox[\dimexpr\linewidth+4em]{\Huge \itshape \thickhrulefill~\raisebox{-.5ex}{#1}~\thickhrulefill}}\par\nobreak
\par\nobreak
\vskip 40\p@
}}
\usepackage{lipsum}
\setcounter{chapter}{12}
\begin{document}
\chapter{Implementation}
\lipsum
\end{document}
我将标题(仅章节标题)放在宽度为 的框内\linewidth
,以确保不会溢出\hbox
。然后,在该框内,我\thickhrulefill
在实际标题旁边放置两个 ,位于另一个宽度为 的框内\linewidth+4em
。由于这些框默认将内容居中,因此允许两侧有 2em 的悬垂。
稍微提高 -1ex(或下降)会使航向根据规则居中。
答案2
这是使用提供的界面memoir
设计新章节样式的另一种方法;我还做了一些额外的调整:标题始终放在最大宽度为 0.7\textwidth 的居中框内。
这种方法允许定义编号和未编号章节的行为,而无需重新定义内部命令:
\documentclass{memoir}
\usepackage{lipsum}
\usepackage{varwidth}
\makeatletter
\makechapterstyle{mystyle}{%
\chapterstyle{default}
\renewcommand*{\chapnamefont}{\normalfont\scshape}
\renewcommand*{\chapnumfont}{\normalfont\scshape}
\renewcommand*{\printchaptername}{%
\chapnamefont\centering\@chapapp}
\renewcommand*{\printchapternum}{\chapnumfont\thechapter}
\renewcommand*{\chaptitlefont}{\normalfont\Huge\itshape}
\renewcommand*{\printchaptertitle}[1]{%
\makebox[\linewidth][c]{\makebox[\dimexpr\textwidth+4em\relax][c]{%
\hrulefill\hspace{1em}\raisebox{-.65ex}{\begin{varwidth}{\dimexpr0.7\textwidth-2em\relax}\centering\chaptitlefont##1\end{varwidth}}\hspace*{1em}\hrulefill}}}
\renewcommand*{\afterchaptertitle}{\vskip\afterchapskip}
\renewcommand*{\printchapternonum}{%
\vphantom{\chapnumfont \textit{9}}\afterchapternum}
}
\makeatother
\chapterstyle{mystyle}
\begin{document}
\chapter{Implementation}
\lipsum[4]
\chapter{A long title spanning more than one line}
\lipsum[4]
\chapter*{A title for an unnumbered chapter}
\lipsum[4]
\end{document}
带有简短标题的编号章节的图像:
标题较长的编号章节的图片:
未编号章节的图片: