如何将书籍类的章节标题更改为排版居中的章节名称,如上图所示?
答案1
取决于您的专业水平,如果您更熟悉软件包,那么使用titlesec
Seamus 在评论中建议的软件包是一个不错的选择。如果您来这里是为了进一步了解 LaTeX 的内部结构,您可以使用下面的代码,它使用 LaTeX@makechapterhead
和@makeschapterhead
宏(请注意后者中的 make(s))。一个用于处理章节的普通版本,另一个用于处理带星号的版本。在开发或修改类时,最好同时更新它们。代码可以在 中找到book.cls
。
\documentclass[oneside]{book}
\usepackage[english]{babel}
\usepackage{lipsum}
\makeatletter
\def\thickhrule{\leavevmode \leaders \hrule height 1ex \hfill \kern \z@}
\def\position{\centering}
%% Note the difference between the commands the one is
%% make and the other one is makes
\renewcommand{\@makechapterhead}[1]{%
\vspace*{10\p@}%
{\parindent \z@ \position \reset@font
{\Huge \scshape \thechapter }
\par\nobreak
\vspace*{10\p@}%
\interlinepenalty\@M
\thickhrule
\par\nobreak
\vspace*{2\p@}%
{\Huge \bfseries #1\par\nobreak}
\par\nobreak
\vspace*{2\p@}%
\thickhrule
\vskip 40\p@
\vskip 100\p@
}}
%% This uses makes
\def\@makeschapterhead#1{%
\vspace*{10\p@}%
{\parindent \z@ \position \reset@font
{\Huge \scshape \vphantom{\thechapter}}
\par\nobreak
\vspace*{10\p@}%
\interlinepenalty\@M
\thickhrule
\par\nobreak
\vspace*{2\p@}%
{\Huge \bfseries #1\par\nobreak}
\par\nobreak
\vspace*{2\p@}%
\thickhrule
\vskip 100\p@
}}
\begin{document}
\chapter{The Real Numbers}
\lipsum[1-2]
\chapter*{The Imaginary Numbers}
\lipsum[1-2]
\end{document}
答案2
下面是一个使用的示例titlesec
。
\documentclass{book}
\usepackage{titlesec}
\titleformat{\chapter}[display]
{\normalfont\bfseries\filcenter}
{\LARGE\thechapter}
{1ex}
{\titlerule[2pt]
\vspace{2ex}%
\LARGE}
[\vspace{1ex}%
{\titlerule[2pt]}]
\begin{document}
\chapter{The real numbers}
\end{document}