我正在尝试格式化一份法律文件以使其遵循这种格式。
Article 1.
1.01 First section
bla bla bla
1.02 Second section
bla bla bla
etcetera.
我尝试使用它来让事情按我想要的方式运作:
\usepackage{etoolbox} %needed to make chapters continuous on page
%% Need with {etoolbox} package
\makeatletter
\patchcmd{\chapter}{\if@openright\cleardoublepage\else\clearpage\fi}{}{}{}
\makeatother
% change % chapter to article and center it
\renewcommand{\chaptername}{Article}
\renewcommand{\thechapter}{\Alph{chapter}}
\titleformat{\chapter}[hang]{\LARGE\bfseries\centering}{\chaptertitlename\ \thechapter}{0.125in}{\LARGE}
%Format section numbering
\def\thesection{\arabic{section}.}
\def\thesubsection{\arabic{section}.0\arabic{subsection}}
\def\thesubsubsection{\arabic{section}.\arabic{subsection}.\arabic{subsubsection}}
% Set section number depth to level 3
\setcounter{secnumdepth}{3}
现在,问题是如何在该部分中获取前导零,然后使其正确递增。一旦我达到 10 级,该部分就会显示为:“1.010”,这是错误的。它应该显示为“1.10”。我可以在 MS Word 中完成此操作;但是,我找不到在 LaTeX 中执行此操作的方法。有人有解决方案吗?
答案1
内核宏\two@digits
就是您要找的东西。它会生成作为其参数给出的数字,并在需要时填充零。
\makeatletter
\renewcommand\thesubsection{\thesection.\two@digits{\value{subsection}}}
\renewcommand\thesubsubsection{\thesubsection.\two@digits{\value{subsubsection}}}
\makeatother
当使用名称中带有 的内核宏时,需要用\makeatletter
和括住代码。\makeatother
@
的重新定义\thesubsubsection
似乎与 的定义一致\thesubsection
。
感谢 Qrrbrbirlbel 建议用\value
代替\arabic
,这确实更好,因为它停止了对数字的扩展搜索,因为\two@digits
使用了\number
。