如何在 Latex 中部分重新实现现有命令?
我有一个\documentclass
:
\ProvidesClass{myclass}[My sample class]
\LoadClass{article}
当有人使用 时\subsection{}
,我真的希望将其视为他们写的\subsection*{}
(没有章节编号)。在我的 中,*.cls
我尝试过:
\renewcommand{\subsection}[1]{\subsection*}
但这只会导致 Latex 中出现无限循环,我需要终止该进程。我也尝试过:
\let\subsection\subsection*
但这只是让它\subsection
等于自己,然后打印一个*
答案1
LaTeX 有一个内置机制。每个分段命令都分配有一个级别
第 1 部分
第 0 章第
1
节 第 2
款 第 3
款 第 4
段 第 5 项
一个班级可能没有章节,但为了统一,级别总是相同的。
您可以通过设置计数器来决定部分标题的编号级别secnumdepth
:
\setcounter{secnumdepth}{1}
只会对部分、章节(如果课程提供)和节进行编号。
有一个配套计数器tocdepth
,用于控制在目录中列出的节级别。
当然,如果用户知道,他们可以覆盖您的设置secnumdepth
。您对此无能为力。
即使你决定采用“重新定义”的方式
\let\latex@subsection\subsection
\renewcommand{\subsection}{\latex@subsection*}
用户仍然可以执行
\makeatletter
\let\subsection\latex@subsection
\makeatother
并推翻你的决定。