有办法解决这个问题吗?
多谢!
答案1
是的,这是可能的;章节编号是由宏排版的\@seccntformat
,只需给它一个合适的重新定义:在固定宽度的框中排版数字。
\documentclass{article}
\usepackage{indentfirst}
\usepackage{lipsum}
\makeatletter
\renewcommand{\@seccntformat}[1]{%
\protect\makebox[\parindent][l]{\csname the#1\endcsname}%
}
\makeatother
\setlength\parindent{2.5pc}
\begin{document}
\section{Lorem ipsum}
\subsection{Aliquam vestibulum}
\lipsum[2]
\subsubsection{Aliquam vestibulum}
\lipsum[2]
\end{document}
当minitoc
加载 时(我不推荐,我觉得这会分散注意力并且没什么用),会发生一件奇怪的事情:不幸的是,该包重新定义了一个键宏而没有使用\@seccntformat
,这是完全错误的。不过,您可以修补它,恢复正确的行为。
\documentclass{article}
\usepackage{indentfirst}
\usepackage{minitoc}
\usepackage{etoolbox} % for \patchcmd
\usepackage{lipsum}
\makeatletter
\renewcommand{\@seccntformat}[1]{%
\protect\makebox[2.5pc][l]{\csname the#1\endcsname}%
}
% patch the wrong definition of `\stc@sect`
\patchcmd{\stc@sect}
{\edef\@svsec{\csname the#1\endcsname\hskip1em}}
{\protected@edef\@svsec{\@seccntformat{#1}\relax}}
{}{}
\makeatother
\setlength\parindent{2.5pc}
\begin{document}
\section{Lorem ipsum}
\subsection{Aliquam vestibulum}
\lipsum[2]
\subsubsection{Aliquam vestibulum}
\lipsum[2]
\end{document}