这个自定义部分命令有什么作用?

这个自定义部分命令有什么作用?

我正在尝试自定义论文的各个部分。每个主要部分必须以 10 号 Times New Romana 字体的标题开头,该标题位于列的中央,并使用罗马数字编号,后跟句号、两个空格和标题,每个单词的首字母均大写。其余字母必须为小写大写字母(8 号)。

到目前为止,我已经完成了以下配置:

\def\thesubsection{\mbox{\Alph{subsection}.}}
\def\thesection{\Roman{section}.}  

寻找示例,我发现了以下自定义命令:

\def\section{\@startsection{section}{1}{\z@}{3.0ex plus 1.5ex minus 1.5ex}
{0.7ex plus 1ex minus 0ex}{\normalfont\normalsize\centering\scshape}}

但我不知道这个命令是做什么的。我的想法是让它适应我的需求。但首先,我必须理解它。有人能帮我理解这个命令到底是做什么的吗?

答案1

请注意,您发布的第一组宏 --\thesection\thesubsection-- 以 开头\the。第二组只出现\section在您的查询中,但可能也会显示\subsection,它决定了分段标题的显示方式。\@startsection宏出现在 的定义中\section(和\subsection也出现在 中),是一种用途非常广泛的低级 LaTeX 宏。

相比之下,第一组宏仅决定章节和子章节“编号”的显示方式。章节编号将显示为大写罗马数字后跟一个.(点),即I.II.III.等。子章节编号将显示为大写字母字符后跟一个.,即A.B.C.等。

我认为和的定义都\thesection包含\thesubsection一个微妙但重要的错误:存在.。这将使生成对章节和小节的交叉引用成为一件痛苦而难看的事情。另外一条评论:包装器根本无法得到合理的解释\mbox


您还写道:

每个主要部分必须以 10 号 Times New Romana 字体的标题开头,该标题位于列的中央,并使用罗马数字编号,后跟句号、两个空格,标题的每个单词的首字母均大写。其余字母必须为小写大写字母(8 号)。

尝试通过修改低级 LaTeX 宏来实现格式化目标效率极低。相反,请加载诸如 之类的包sectsty。然后,假设主文档字体为 Times Roman,主字体大小为10pt,发出指令

\sectionfont{\centering\mdseries\scshape\normalsize\}

在序言中。

为了满足规定,即章节和小节级别的“数字” - 实际上是大写罗马数字和大写字母 - 必须以.章节标题内的 结尾,后跟两个空格,我建议您提供以下代码(也在序言中):

\makeatletter
\def\@seccntformat#1{\@ifundefined{#1@cntformat}%
    {\csname the#1\endcsname\quad}%    default
    {\csname #1@cntformat\endcsname}}% enable indiv. control
\def\section@cntformat{\thesection.\space\space}
\def\subsection@cntformat{\thesubsection.\space\space}
\makeatother

答案2

的详细文档\@startsection可以在文件中找到classes.pdf,可以通过 访问texdoc classes,在第 7.2 节中。

所有“基本”乳胶类以及其他一些遵循基本结构的文档类都使用了这种公式。(ams 类遵循这种结构,但我不确定 koma 类,也不确定该类IEEEtran。)

实际的定义在文件中ltsect.dtx(在 tex live 发行版的目录中TEXMF/source/latex/base),但我还没有找到可以让人类轻松阅读的 pdf 文件。

相关内容