将章节标题放在两行之间

将章节标题放在两行之间

我想在两行之间放置章节标题。这两行应位于居中标题的左侧和右侧,如以下屏幕截图所示:

期望结果

注意线条略有悬垂下面的文本。如果我能做同样的事情就好了。显然,章节标题的长度是变化的,因此解决方案需要自动适应长度。

到目前为止,我有以下内容:

\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}

带有简短标题的编号章节的图像:

在此处输入图片描述

标题较长的编号章节的图片:

在此处输入图片描述

未编号章节的图片:

在此处输入图片描述

相关内容