我正在使用回忆录类 hangnum 功能来记录章节和部分,这是一个最简单的例子:
\documentclass{memoir}
\makechapterstyle{hangnum}{
\setlength{\chapindent}{0.8 cm} % <-- What should this be?
\renewcommand*{\printchaptername}{}
\renewcommand*{\chapternamenum}{}
\renewcommand*{\printchapternum}{\noindent\llap{\makebox[\chapindent][l]{\chapnumfont \thechapter}}}
\renewcommand*{\afterchapternum}{}}
\chapterstyle{hangnum}
\hangsecnum
\begin{document}
\chapter{Chapter}
\section{Section Uno}
\subsection{Subsection Eins}
\section{Section Duo}
\end{document}
有没有办法正确对齐章节和部分的数字,而不用猜测长度?
答案1
这是您可以做的(只需将\T
其删除即可显示事物所在的位置)。
正如评论中提到的,部分使用\quad
作为间隔符。但\quad
取决于当前字体大小,因此由于\chapnumfont
和 sec 字体大小不同,我们不能只使用\quad
。相反,我们使用固定宽度的间隔符。
\documentclass{memoir}
\newlength\secspacer
% we do not want em here as it changes with the font size
\setlength\secspacer{12pt}
\makeatletter
\newcommand{\myhangsecnum}{%
\def\@seccntformat##1{\llap{\csname the##1\endcsname\kern\secspacer}}}
\makeatother
\newcommand\T{%
\llap{\smash{\rule[-15cm]{0.1pt}{20cm}}}%
}
\makechapterstyle{hangnum}{
% \setlength{\chapindent}{1em} % <-- What should this be?
\renewcommand*{\printchaptername}{}
\renewcommand*{\chapternamenum}{}
\renewcommand*{\printchapternum}{\noindent\llap{\chapnumfont \thechapter\T\kern\secspacer}}
\renewcommand*{\afterchapternum}{}
}
\chapterstyle{hangnum}
\myhangsecnum
\begin{document}
\chapter{Chapter}
\section{Section Uno}
\subsection{Subsection Eins}
\section{Section Duo}
\end{document}