如何使用 titlesec 实现半层次分段,不同层级使用不同的数字格式

如何使用 titlesec 实现半层次分段,不同层级使用不同的数字格式

当我尝试做一些我认为不是那么复杂的事情时,我对这个包感到有点困惑。

我正在重写一篇 70 年代写的论文,并想保留当时使用的奇特的分段做法。每个级别都有不同的格式。以下是对原始目录的重现。请注意,在论文正文中,章节标题中的编号前没有缩进。

I. INTRODUCTION ............................................ 1
    A. Prairie Raspberry ................................... 1
    B. Research Objectives ................................. 4
II. LITERATURE REVIEW ...................................... 6
    A. Fruit Structure and Composition ..................... 6
        1. Raspberry fruit structure ....................... 6
        2. Raspberry fruit composition ..................... 6
...
III. MATERIALS AND METHODS ................................ 29
    A. Investigation of Juice Extraction .................. 29
        1. Materials ...................................... 29
            a. Raspberry fruit ............................ 29
            b. Enzymes .................................... 30
        2. Experimental Objectives......................... 31
            a. Enzyme, temperature and time ............... 31
            b. Maceration, water dilution enzymes ......... 32
etc.

因此,我需要 4 个级别的章节,使用章节到子章节是可行的,尽管我必须使用报告样式才能使章节和摘要按我想要的方式格式化。问题在于编号。最初,我很难以正确的格式输入“I”和“B”,\section{B. Fruit Processing Technology}并使用序言中的以下代码完全禁用自动编号:

\setcounter{secnumdepth}{-2}

不过,我想使用自动编号,这样就不会意外犯任何错误。当我这样做时,由于报告样式和使用章节,我将在正文和目录中获得以下标题结构(缩进仅存在于目录中,这是正确的)。

3 MATERIALS AND METHODS ................................... 29
    3.1 Investigation of Juice Extraction ................. 29
        3.1.1 Materials ................................... 29
            3.1.1.1 Raspberry fruit ....................... 29
            3.1.1.2 Enzymes ............................... 30
        3.1.2 Experimental Objectives...................... 31
            3.1.2.1 Enzyme, temperature and time .......... 31
            3.1.2.2 Maceration, water dilution enzymes .... 32

我不希望“父”编号出现在“子”编号之前。我还需要将编号系统切换为罗马字母(用于章节)、大写字母(用于部分)和小写字母(用于子部分)。我已安装 titlesec 并尝试实现所需效果。到目前为止,我只能使用以下命令来控制标题的大小和间距,这些命令位于单独的文件中\input{sectioning.tex}

\titleformat{\chapter} % command
[hang] % shape
{\bfseries\huge} % format
{\thechapter.} % label
{0.5em} % sep
{} % before-code
[] % after-code

\titleformat{\section} % command
[hang] % shape
{\bfseries\LARGE} % format
{\roman{\thesection}.} % label
{0.5em} % sep
{} % before-code
[] % after-code

\titleformat{\subsection} % command
[hang] % shape
{\bfseries\Large} % format
{\thesubsection.} % label
{0.5em} % sep
{} % before-code
[] % after-code

\titleformat{\subsubsection} % command
[hang] % shape
{\bfseries\large} % format
{\thesubsubsection.} % label
{0.5em} % sep
{} % before-code
[] % after-code

\titlespacing*{\chapter}{0pt}{10pt}{5pt}
\titlespacing*{\section}{0pt}{10pt}{5pt}
\titlespacing*{\subsection}{0pt}{10pt}{5pt}
\titlespacing*{\subsubsection}{0pt}{10pt}{5pt}

尝试\roman{\thesection}.在节标签中使用完全没有按预期工作。有人有我可以实施的解决方案吗?我希望所有节格式都在这个单独的文件中定义。

总而言之,我想要一种使用 titlesec (或另一个更好的包,如果存在)的方法来:

  1. 在文本主体和目录中显示子章节编号时,消除打印的父章节编号。
  2. 根据部分深度将编号格式更改为罗马字母和字母。

有人能帮忙吗?

答案1

这应该可以解决问题:

\titleformat{\chapter} % command
[hang] % shape
{\bfseries\huge} % format
{\Roman{chapter}.} % label
{0.5em} % sep
{} % before-code
[] % after-code

\titleformat{\section} % command
[hang] % shape
{\bfseries\LARGE} % format
{\Alph{section}.} % label
{0.5em} % sep
{} % before-code
[] % after-code

\titleformat{\subsection} % command
[hang] % shape
{\bfseries\Large} % format
{\arabic{subsection.} % label
{0.5em} % sep
{} % before-code
[] % after-code

\titleformat{\subsubsection} % command
[hang] % shape
{\bfseries\large} % format
{\alph{subsubsection}.} % label
{0.5em} % sep
{} % before-code
[] % after-code

相关内容