回忆录类的部分风格

回忆录类的部分风格

\chapterstyle{thatcher}我在课堂上使用memoir。我希望部分样式与章节样式相似 - 但标题位于页面中央。由于我是 LaTeX 世界的新手,我想知道我应该如何使用手册memoir(第 6.4 节)中描述的命令?

我已经尝试了序言中的以下步骤,但是...不起作用...

\renewcommand*{\partnamefont}{\large\centering}
\renewcommand*{\partnumfont}{\large}
\renewcommand*{\printpartnonum}{%
\vphantom{\printpartname}%
\vphantom{\partnumfont 1}%
\afterpartnum
\vskip -\onelineskip}
\renewcommand*{\parttitlefont}{\Large\scshape}
\renewcommand*{\printparttitle}[1]{%
\hrule\vskip\onelineskip \centering\parttitlefont ##1}

答案1

使用memoir类,通常有比重写整个宏更简单的解决方案。如何修改部分的格式在手动的

在下面的例子中,我只是重新定义了设置部分外观的宏以模仿撒切尔章节样式所使用的宏。

\documentclass{memoir}

\usepackage[frenchb]{babel}

% Pour "première partie"
\usepackage{fmtcount}


\chapterstyle{thatcher}

\renewcommand*{\thepart}{\arabic{part}}
\renewcommand*{\parttitlefont}{\normalfont\large\MakeUppercase}
\renewcommand*{\partnamefont}{\normalfont\scshape\MakeLowercase}
\renewcommand*{\partnumfont}{\normalfont\scshape\MakeLowercase}

% Pour "première partie"
\renewcommand*{\printpartname}{\partnamefont{\ordinalstring{part}[f] partie}}
\renewcommand*{\printpartnum}{}

% Pour "partie 1"
%\renewcommand*{\printpartname}{\partnamefont Partie}
%\renewcommand*{\printpartnum}{\partnumfont\thepart}

\renewcommand{\midpartskip}{\par\parbox{0.5in}{\hrulefill}\par}
\renewcommand{\beforepartskip}{\vspace*{\fill}}
\renewcommand{\afterpartskip}{\vspace*{\fill}}

% Pour la table des matières
\renewcommand*{\cftpartname}{Partie}
\renewcommand*{\cftpartpresnum}{\space}
\renewcommand*{\cftpartaftersnum}{.}
\renewcommand*{\cftpartaftersnumb}{\space}

\begin{document}

\tableofcontents

\part{Une partie}

\part*{Une partie sans numéro}

\part[Une autre partie (nom pour la table des matières)]{Une autre partie}

\chapter{Un chapitre}

\end{document}

宏的名称非常直观,但这里有一些关于它们作用的补充说明:用于\thepart重新定义part计数器的格式;分别设置标题、“部分”单词和数字使用的字体。为了在“部分”之间插入一行\parttitlefont\partnamefont\partnumfont“行和标题行,我修改了\midpartskip。然后,我还重新定义了\beforepartskip\afterpartskip,它们(这里)定义了在文本上方和下方添加的空白。

由于此技术不会重写整个代码,因此您仍然可以\part正常使用该命令而不受任何限制。遇到的唯一问题是,使用时\part*,部分的标题不会完全位于同一位置(而thatcher在这种情况下,章节样式会添加必要的空白)。但没有简单的方法可以做到这一点,因为该类memoir没有针对带星号部分的特殊宏(无论如何,我从未在任何地方遇到过这种情况)。

下面是结果图片(我只放了一页):

在此处输入图片描述

编辑:我已更新我的答案,以便部分名称可以与法语正确配合使用babel。有两个选项:如果您想写“première partie”,请保留所有内容;如果您想要“partie 1”,请取消注释我为此标记的行(2 行),并注释为其他样式标记的行(即 3 行)。

哦,还有额外的好处,代码的最后几行重写了目录中的“部分”。如果您只想要数字,可以将其删除,但我想您可能也想要这种东西。

答案2

在以下最小示例中,我已定义\thatcherpart{<part title>}在章节样式中生成垂直居中部分thatcher。假设您不想使用文本中显示的部分标题的替代目录条目(即,格式为\thatcherpart[<ToC title>]{<part title>}):

在此处输入图片描述

\documentclass{memoir}% http://ctan.org/pkg/memoir
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\chapterstyle{thatcher}

\makeatletter
\long\def\thatcherpart#1{%
  \M@gettitle{#1}%
  \phantomsection
  \ifnum \c@secnumdepth >-2\relax
    \refstepcounter{part}%
    \addcontentsline{toc}{part}%
      {\protect\partnumberline{\thepart}#1}%
    \mempartinfo{\thepart}{#1}{#1}%
  \else
    \addcontentsline{toc}{part}{#1}%
    \mempartinfo{}{#1}{#1}%
  \fi
  \partmark{#1}%
  \pagestyle{empty}%
  {\centering
   \interlinepenalty \@M
   \parskip\z@
   \null\vfill%
   \normalfont\scshape%
   \ifnum \c@secnumdepth >-2\relax
     \MakeLowercase{Part~\thepart}
     \par\centerline{\parbox{0.5in}{\hrulefill}}\par
   \fi%
   {\normalfont\large\MakeUppercase{#1}\par}%
   }%
   \vfill}
\makeatother
\begin{document}

\thatcherpart{A part}

\chapter{A chapter}
\lipsum[1]
\end{document}

\thatcherpart\@part实际上是从中的原始内容中截取的memoir,并进行了必要的更改。在上面的输出中,我省略了第 2 页(空白的反面页面)。部分页面样式设置为empty,尽管这(和其他修改)很容易合并。

答案3

如果有人感兴趣,以下方法对我有用:

% ---------------- Styling parts 
\renewcommand{\partnamefont}{\Large\scshape\centering\MakeLowercase}
\renewcommand{\partnumfont}{\Large\scshape\centering\MakeLowercase}
\renewcommand{\midpartskip}{\par\rule{1in}{0.5pt}\par}
\renewcommand{\printparttitle}{\HUGE\scshape\centering\MakeLowercase}

相关内容