【latex星号】理解LaTeX中星号的多重用途

在LaTeX排版系统中,星号(*)是一个看起来简单但功能多样的符号。它并非仅仅用于文本中的标记或数学运算(尽管它也可以),而是常常作为特定命令或环境的“修饰符”,显著改变它们的默认行为。理解这些带星号的版本与不带星号的版本之间的区别,对于高效、精确地使用LaTeX至关重要。本文将围绕LaTeX中星号的这些特殊用法,详细探讨它“是什么”、“为什么用”、“在哪里用”、“如何使用”以及一些具体的“例子”。

LaTeX中的星号“是什么”?

在许多LaTeX命令和环境的语境下,星号(*)不是一个独立的符号,而是命令或环境名称本身的一部分。例如,\section 是一个命令,而 \section* 是一个*不同的*命令,尽管它们共享同一个基础名称。类似地,equation 是一个数学环境,而 equation* 是另一个相关的环境。带星号的版本通常被称为“星号版本”(starred version)。

这些星号版本的设计目的在于提供基础命令或环境的替代或变体行为。这种变体行为往往是对默认行为的一种修改或增强。

“为什么”LaTeX命令和环境会有星号版本?

使用星号版本的主要原因是为了满足排版中的特定需求,这些需求与命令或环境的默认行为不同。最常见、也是最核心的“为什么”是:

  • 抑制自动编号: 这是星号版本最普遍的用途。许多LaTeX元素(如章节、公式、图表)默认是自动编号的,以便交叉引用。但有时,你可能需要一个不带编号的元素(例如,介绍性章节、附录、或者只出现一次的公式)。星号版本提供了一种简单的方式来禁用这个自动编号功能。
  • 改变格式或布局: 在某些情况下,星号版本会改变内容的呈现方式或在页面上的布局。例如,在双栏文档中,figure* 环境可能用于创建一个跨越两栏的图形,而默认的 figure 环境只占据一栏。
  • 启用特定功能或行为: 少数情况下,星号版本可能会激活或修改命令或环境的特定功能。例如,\verb* 命令会特殊处理空格,使其可视化。

实质上,星号提供了一种在不引入全新命令名称的情况下,实现现有命令或环境的常用变体行为的简洁机制。

“在哪里”可以使用带星号的命令或环境?

带星号的命令或环境出现在LaTeX文档的多个地方,它们的应用范围取决于所使用的命令、环境以及加载的宏包。一些常见的应用“位置”包括:

  • 文档结构命令: 用于创建章节、节等的命令,如 \chapter*, \section*, \subsection*, \paragraph* 等。
  • 数学环境: 用于排版公式的环境,如 equation*, align*, gather*, multline*, flalign* 等(这些通常需要 amsmath 宏包)。
  • 浮动体环境: 用于处理图表的环境,如 figure*table*。它们的行为可能受文档类或特定宏包(如 multicol)影响,尤其在多栏布局中。
  • 文本处理命令: 一些特定的文本或代码排版命令,如 \verb* 用于逐字排版。
  • 特定宏包提供的命令/环境: 许多宏包会引入自己的带星号的命令或环境,其具体功能由宏包定义。例如,排版参考文献的 natbib 宏包提供了 \cite* 命令。

需要注意的是,并非所有LaTeX命令或环境都有对应的星号版本。 是否存在星号版本以及它的具体功能,完全取决于该命令或环境的定义。

“如何”使用带星号的命令或环境?

使用带星号的命令或环境非常直接,就像使用它们的非星号版本一样。你只需在命令名称后面或者环境名称后面紧跟一个星号即可。

使用星号版本的命令

格式:\command*{argument}

例如,要创建一个不带编号的“引言”章节,并且不将其添加到目录中(这是默认行为):

\section*{引言}

要创建一个不带编号的脚注:

一段文本\footnote*{这是不带编号的脚注。}

要逐字排版包含空格的文本(显示空格):

\verb*|一些 文本 带 空格| (注意分隔符可以是除了*之外的任何字符)

使用星号版本的环境

格式:

\begin{environment*}
... 环境内容 ...
\end{environment*}

例如,使用 amsmath 宏包排版一个不带编号的多行公式:

\begin{align*}
a & = b + c \\
d & = e - f
\end{align*}

在双栏文档中使用 figure* 环境插入一个跨页图形:

\begin{figure*}
\centering
\includegraphics[width=\textwidth]{my_figure.pdf}
\caption{这是一个跨页图形}
\label{fig:cross_page}
\end{figure*}

星号版本“多少”种用法?或有多少常用例子?

虽然无法精确统计所有LaTeX宏包中带星号的命令和环境的数量,但我们可以列举一些最常见和最有代表性的例子来展示星号的不同用法和效果:

抑制编号类

  • \chapter*{}, \section*{}, \subsection*{}, etc.:
    作用:创建不带章节或节编号的标题。
    默认行为:通常不会出现在自动生成的目录(ToC)中。
    手动添加到目录:如果需要手动将其添加到目录,可以使用 \addcontentsline{toc}{chapter}{不带编号的章节标题} 等命令,放置在 \chapter*{} 命令之后。
  • equation*, align*, gather*, etc. (需 amsmath 宏包):
    作用:创建不带公式编号的数学环境。
    默认行为:排版的公式或公式组不会显示自动生成的编号。
    对比:非星号版本(equation, align)会为每个公式或行自动分配编号。
  • \footnote*{}:
    作用:创建不带脚注编号的脚注。这在某些特殊排版场合(如标题脚注)可能有用,但使用频率相对较低。

改变布局/格式类

  • figure*, table*:
    作用:在多栏文档中,通常用于创建跨越所有栏(例如,跨越双栏)的图形或表格。
    默认行为:非星号版本 figuretable 在多栏文档中默认只占据一栏的宽度。
    限制:这些环境的跨页功能需要文档类支持(如标准的article, book类在双栏模式下支持)或特定的宏包配合。它们通常只能放置在页面的顶部或底部,而不能“浮动”到中间位置。
  • verbatim* 环境 / \verb*|...| 命令:
    作用:逐字排版其内容,但与非星号版本 verbatim / \verb 不同的是,它会将空格显示为特殊符号(通常是一个可见的小空格或点,具体取决于字体设置),并会高亮显示制表符。
    用途:用于精确展示包含空格和制表符的代码或文本结构。

特殊功能/行为类

  • 某些宏包命令:natbib 宏包的 \cite*{} 命令,用于生成不带括号的引用标记,例如只显示作者姓名或年份。具体功能由宏包文档定义。

总结

LaTeX中的星号在命令或环境名称之后,是一种强大的机制,用于修改它们的默认行为。最常见的用途是抑制自动编号,但也包括改变布局(如多栏中的跨页浮动体)和修改特定命令的格式或行为(如 \verb*)。掌握这些带星号的命令和环境,能让你更灵活地控制文档的排版和结构,满足各种复杂的格式要求。当你遇到需要某个元素不带编号,或者在多栏布局中需要跨页浮动体时,首先就应该想到其对应的星号版本。当然,遇到不熟悉的命令时,查阅其具体文档以了解其星号版本的功能是最佳实践。

latex星号

By admin

发表回复