不一样的 LaTeX 教程(第二话):LaTeX 多级标题设置必知必会

简介

LaTeX 中有七级标题,每一集标题有相应的默认样式,但往往有时默认样式不满足我们的要求。通过修改 \ctexset命令提供的参数,我们可以修改标题样式

LaTeX 标题结构

七级结构

  • part、chapter、section、subsection、subsubsection、paragraph、subparagraph。
  • ctexart 类没有 chapter 结构。
  • 每级结构都有一个带星号的版本。如:\section*{}
  • 使用\tebleofcontents命令自动生成目录。

标题的作用

  • 输出标题内容。
  • 对标题进行编号。
  • 把标题列入目录。
  • 写入页眉页脚。

注意:对于带星号的标题命令,仅仅起输出标题内容的作用。而对于其他三点不起作用。

修改标题样式

  • 本文以修改一份实验报告的标题样式进行说明。
\documentclass{ctexart}
\begin{document}
\tableofcontents  % 自动生成目录
\section{实验目的}
实验目的实验目的实验目的实验目的实验目的实验目的实验目的,
实验目的实验目的实验目的实验目的实验目的实验目的实验目的。

\section{实验原理}
实验原理实验原理实验原理实验原理实验原理实验原理
实验原理实验原理实验原理实验原理。

\section{实验仪器和药品}
\subsection{实验仪器}
实验仪器、实验仪器、实验仪器、实验仪器。
\subsection{实验药品}
实验药品、实验药品、实验药品、实验药品。

\section{实验步骤}
\subsection{实验条件}
\subsection{实验过程}

\section{实验数据记录及分析}
\subsection{数据}
\subsection{图表}
\subsection{结果分析}

\section{讨论}
\end{document}

编译结果
不一样的 LaTeX 教程(第二话):LaTeX 多级标题设置必知必会
不一样的 LaTeX 教程(第二话):LaTeX 多级标题设置必知必会

可见,对于一份实验报告来说,这样的标题样式太奇怪了!

  • 修改所有的标题样式都在导言区用\ctexset命令进行设置。

设置标题编号前后的词语

  • 使用name={<前部分>,<后部分>}参数进行设置。
  • 其中的,是编号的占位符。
\ctexset{
  % 修改 section。
  section={   
    name={,、}
  },
  % 修改 subsection。
  subsection={   
    name={,、}
  }
}

编译结果
不一样的 LaTeX 教程(第二话):LaTeX 多级标题设置必知必会

可见 section 与 subsection 的编号后面换成了

设置标题编号

  • 使用number参数设置标题编号。
  • \arabic设置为阿拉伯数字,\chinese设置为中文,\roman设置为小写罗马字母,\Roman设置为大写罗马字母,\alph设置为小写英文,\Alph设置为大写英文。
\ctexset{
    % 修改 section。
    section={   
        name={,、},
        number={\chinese{section}}
    },
    % 修改 subsection。
    subsection={   
        name={,、},
        number={\arabic{subsection}}
    }
}

编译结果
不一样的 LaTeX 教程(第二话):LaTeX 多级标题设置必知必会

设置标题整体样式

  • 参数format设置标题整体的样式。包括标题主题、编号以及编号前后的词语。
  • 参数format还可以设置标题的对齐方式。
    • 居中对齐\centering
    • 左对齐\raggedright
    • 右对齐\hfill
\ctexset{
    % 修改 section。
    section={   
        name={,、},
        number={\chinese{section}},
        format=\heiti\raggedright\zihao{-4} % 设置 section 标题为黑体、右对齐、小4号字
    },
    % 修改 subsection。
    subsection={   
        name={,、},
        number={\arabic{subsection}},
        format=\heiti\zihao{5} % 设置 subsection 标题为黑体、5号字
    }
}

编译结果
不一样的 LaTeX 教程(第二话):LaTeX 多级标题设置必知必会

注意:如果使用+=,则会在原有的默认样式上添加新样式。

取消编号后的空白

  • 编号后有一段空白。
  • 参数aftername可以用来控制编号与标题之间的距离。
  • aftername=hspace(0pt)设置距离为 0 磅。
\ctexset{
    % 修改 section。
    section={   
        name={,、},
        number={\chinese{section}},
        format=\heiti\raggedright\zihao{-4}, % 设置 section 标题为黑体、右对齐、小4号字
        aftername=hspace{0pt}
    },
    % 修改 subsection。
    subsection={   
        name={,、},
        number={\arabic{subsection}},
        format=\heiti\zihao{5}, % 设置 subsection 标题为黑体、5号字
        aftername=hspace{0pt}
    }
}

编译结果
不一样的 LaTeX 教程(第二话):LaTeX 多级标题设置必知必会

还有一个问题感觉标题和正文的距离太宽了。

设置标题与正文的距离

  • 参数beforeskip控制标题与上面正文的距离。
  • 参数afterskip控制标题与下面正文的距离。
\ctexset{
    % 修改 section。
    section={   
        name={,、},
        number={\chinese{section}},
        format=\heiti\raggedright\zihao{-4}, % 设置 section 标题为黑体、右对齐、小4号字
        aftername=\hspace{0pt},
        beforeskip=1ex,
        afterskip=1ex
    },
    % 修改 subsection。
    subsection={   
        name={,、},
        number={\arabic{subsection}},
        format=\heiti\zihao{5}, % 设置 subsection 标题为黑体、5号字
        aftername=\hspace{0pt},
        beforeskip=1ex,
        afterskip=1ex
    }
}

编译结果
不一样的 LaTeX 教程(第二话):LaTeX 多级标题设置必知必会

对于实验报告这个例子,我们就暂且该一段落吧。接下来还有一些其他的重要的设置参数。

其他重要标题设置参数

接下来介绍的三个参数nameformatnumberformattitleformat都是在format参数基础上进一步修正。

  • ctex 官方文档中有一个图清楚地说明了各种 format 的关系。
    不一样的 LaTeX 教程(第二话):LaTeX 多级标题设置必知必会

设置标题名字样式

  • format对标题整体进行样式设置,包括编号和标题主体。
  • 单独对编号设置,可以使用nameformat参数。

设置编号数字样式

  • format对标题整体进行样式设置,包括编号和标题主体。
  • 单独对编号中的数字设置,可以使用numberformat参数。

设置标题主体样式

  • format对标题整体进行样式设置,包括编号和标题主体。
  • 单独对标题主体进行设置,可以使用titleformat参数。
上一篇:python的ConfigParser模块-配置解析器


下一篇:《驱动学习 — Kconfig语法学习》