答案1
以下示例提供了一个长度\secnumwidth
,用于固定\chapter
打印节号(包括 的节号)的宽度。所有其他显示样式均已保留(包括 的垂直间距\chapter
):
\documentclass{memoir}
\newlength{\secnumwidth}
\setlength{\secnumwidth}{3em}
\renewcommand{\printchaptername}{}% Don't print 'Chapter'
\renewcommand{\chapnumfont}{\chaptitlefont}
\renewcommand{\chapternamenum}[1]{\makebox[\secnumwidth][l]{#1}}
\renewcommand{\afterchapternum}{}% Remove (vertical) skip between chapter number and title
\makeatletter
\renewcommand{\@seccntformat}[1]{\makebox[\secnumwidth][l]{\csname the#1\endcsname}}
\makeatother
\setcounter{secnumdepth}{2}% Number up to \subsection
\begin{document}
\chapter{A chapter}
\section{A section}
\subsection{A subsection}
\end{document}
以下是在默认文档类中实现它的类似方法report
。它涉及更新\@makechapterhead
和\@seccntformat
:
\documentclass{report}
\newlength{\secnumwidth}
\setlength{\secnumwidth}{5em}
\makeatletter
\def\@makechapterhead#1{%
\vspace*{50\p@}%
{\interlinepenalty\@M
\parindent \z@ \raggedright \normalfont
\huge\bfseries
\ifnum \c@secnumdepth >\m@ne
\makebox[\secnumwidth][l]{\thechapter}%
\fi
#1\par\nobreak
\vskip 40\p@
}}
\renewcommand{\@seccntformat}[1]{\makebox[\secnumwidth][l]{\csname the#1\endcsname}}
\makeatother
\begin{document}
\chapter{A chapter}
\section{A section}
\subsection{A subsection}
\end{document}
和以前一样,常规垂直间距\chapter
被保留(但可以更改)。