在下面的 MWE 中。将标题居中放置最方便的方法是什么前言和抽象的,而不是将它们设置得与左对齐?
\documentclass{book}
\begin{document}
\chapter*{Preface}
\chapter*{Abstract}
\chapter{Introduction}
\chapter{Body}
\chapter{Conclusion}
\end{document}
答案1
由于这只涉及\chapter*
两个标题(摘要和前言)的命令,因此\chapter*{\centering Abstract}
将等称为命令就足够了。这被分组在内部命令中\@makeschapterhead
——它不会对其他隐式使用的命令产生副作用\chapter*
,例如\tableofcontents
。
(\blindtext
以及Some text
不居中,因此只要不需要进入 ToC,参数\centering
内部就是安全的(事实并非如此,正如我们正在谈论的)\chapter*
\chapter*
如果所有\chapter*
或\chapter
标题都应水平居中,\xpatchcmd
则方法更有用。(请参阅此答案底部的编辑)
\documentclass{book}
\usepackage{blindtext}
\begin{document}
\chapter*{\centering Preface}
\blindtext
Some text
\chapter*{\centering Abstract}
\chapter{Introduction}
\chapter{Body}
\chapter{Conclusion}
\end{document}
编辑
此代码将所有章节标题居中(无论\chapter*
是否\chapter
)水平
\documentclass{book}
\usepackage{xpatch}
\usepackage{blindtext}
\makeatletter
\xpatchcmd{\@makeschapterhead}{%
\Huge \bfseries #1\par\nobreak%
}{%
\Huge \bfseries\centering #1\par\nobreak%
}{\typeout{Patched makeschapterhead}}{\typeout{patching of @makeschapterhead failed}}
\xpatchcmd{\@makechapterhead}{%
\huge\bfseries \@chapapp\space \thechapter
}{%
\huge\bfseries\centering \@chapapp\space \thechapter
}{\typeout{Patched @makechapterhead}}{\typeout{Patching of @makechapterhead failed}}
\makeatother
\begin{document}
\tableofcontents
\chapter*{Preface}
\blindtext
Some text
\chapter*{Abstract}
\blindtext
\chapter{Introduction}
\blindtext
Another text
\chapter{Body}
\blindtext
\chapter{Conclusion}
\blindtext
\end{document}
答案2
我使用了\hfill
before 和 after 来完成这个技巧,但是,titlesec 包也需要
\phantomsection
\chapter*{\hfill{\centering Certificate}\hfill}
完整工作示例
\documentclass{book}
\usepackage[showframe]{geometry}%optional
%titlesec is also required with these commands
\usepackage{titlesec}
\titleformat{\chapter}[display]
{\normalfont\huge\bfseries}{\chaptertitlename\ \thechapter}{20pt}{\Huge}
\titlespacing*{\chapter} {0pt}{50pt}{40pt}
%
\begin{document}
\chapter*{\hfill{\centering Certificate}\hfill}
\end{document}
答案3
这是一个对我有用的解决方案
\titleformat{\chapter}[display]
{\normalfont\huge\bfseries\centering}{\centering\chaptertitlename\ \thechapter}{20pt}{\Huge}
\titlespacing*{\chapter}
{0pt}{50pt}{40pt}
来自以下链接