我正在尝试自定义论文的各个部分。每个主要部分必须以 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 文件。