如何使用回忆录来将章节、节和小节置于中心?

如何使用回忆录来将章节、节和小节置于中心?

我正在尝试使用memoir以下代码将章节、章节和小节置于中心:

\renewcommand{\chapnamefont}{\centering\normalfont} 
\renewcommand{\chapnumfont}{\centering\normalfont} 
\renewcommand\chaptitlefont{\centering\LARGE\normalfont}
\renewcommand\secheadstyle{\centering\Large\normalfont\noindent}

这种方法可行,但是当章节标题超过一行时,第二行标题不再居中在页面中间,而是仅居中在第一行的中间减去章节编号所占的空间。如何将所有章节标题行居中在页面中间?

这是一个有效的例子:

\documentclass[a4paper,10pt,twoside]{memoir}

\usepackage{polyglossia} 
\setmainlanguage[spelling=old,babelshorthands=true,script=latin]{german}
\usepackage{blindtext}
\usepackage{fontspec}

\renewcommand{\chapnamefont}{\centering\normalfont} 
\renewcommand{\chapnumfont}{\centering\normalfont} 
\renewcommand\chaptitlefont{\centering\LARGE\normalfont}
\renewcommand\secheadstyle{\centering\Large\normalfont\noindent}

\begin{document}
\tableofcontents*
\chapter{Test, nothing else – Don't waste your time reading this! It has to have two lines}
\section{Don't waste your time reading this! It has to have two lines. It has to have two lines}
\Blindtext
\footnote{\blindtext}
\blindtext
\section{Test124}
\Blindtext
\chapter{Test2}
\Blindtext \Blindtext \Blindtext
\end{document}

在此处输入图片描述

答案1

\@hangfrom使用以下补丁删除该部分的样式:

\usepackage{etoolbox}
\makeatletter
% \patchcmd{<cmd>}{<search>}{<replace>}{<success>}{<failure>}
\patchcmd{\M@sect}{\@hangfrom}{}{}{}
\makeatother

\@hangfrom考虑节号的宽度并相应地调整布局。这样,它允许以悬挂方式显示节标题。但是,对于居中视图,这当然不是最理想的。

在此处输入图片描述

\documentclass{memoir}

\usepackage{blindtext,etoolbox}
\makeatletter
% \patchcmd{<cmd>}{<search>}{<replace>}{<success>}{<failure>}
\patchcmd{\M@sect}{\@hangfrom}{}{}{}
\makeatother

\renewcommand{\chapnamefont}{\centering\normalfont} 
\renewcommand{\chapnumfont}{\centering\normalfont} 
\renewcommand\chaptitlefont{\centering\LARGE\normalfont}
\renewcommand\secheadstyle{\centering\Large\normalfont\noindent}

\begin{document}
\chapter{Test, nothing else – Don't wast you time reading this! It has to have two lines}
\section{Don't wast you time reading this! It has to have two lines. It has to have two lines}
\Blindtext
\end{document}

如果你正在加载hyperref,补丁改为针对宏\H@old@sectm@m

\usepackage{hyperref,etoolbox}
\makeatletter
\patchcmd{\H@old@sectm@m}{\@hangfrom}{}{}{}
\makeatother

答案2

我找到了一种更简单的方法来解决 memoir 问题。只需将此命令添加到您的 tex 文件中:

\sethangfrom{\noindent #1}

有关详细信息,请参阅回忆录文献,第 95 页。

如果您必须在标题中使用手动换行符,请注意 \\ 将被 \centering 重新定义,而 \newline 则不会。因此,将 \newline 与 \centering 一起使用会产生不理想的结果(请参阅\newline 和 \\ 之间有什么区别?)。

相关内容