---
title: Liii STEM 宏编辑器指南 - 自定义快捷键与宏命令
description: Liii STEM 宏编辑器完整教程，学习如何创建和自定义宏命令，掌握环境定义、标记创建、焦点控制等高级自动化排版技巧。
keywords: Liii STEM, 宏命令, 宏编辑器, 快捷键, 自定义
---

> ## Documentation Index
> Fetch the complete documentation index at: https://liiistem.cn/docs/llms.txt
> Use this file to discover all available pages before exploring further.


# 自定义快捷键和宏（宏编辑器）

宏和快捷键是 Liii STEM 中提升编辑效率的两大法宝。快捷键让你一键触发常用操作，而宏则允许你将重复的内容封装成简短命令。本文先以自定义快捷键为例带你入门，随后深入介绍宏的创建与编辑。

> **本文范围**：本文只介绍通过**宏编辑器**和**快捷键编辑器**进行图形化编辑的方法。如果你希望直接编写源码或在导言区中定义宏，请参阅 [快速入门 Scheme](https://h02wf0jq8yp.feishu.cn/wiki/TO4gwEPIni2gQZkSROfcnDL1nWg)。

## 1 自定义快捷键

Liii STEM 支持为任何环境，标记或宏命令创建自定义快捷键，让你摆脱频繁敲击长命令或在菜单栏中逐层查找的烦恼。

### 1.1 为环境创建快捷键（以定理环境为例）

在科技写作中，定理环境是使用频率极高的语义块。根据 [文本模式完全指南](base-editing/guide-text-mode.md#41-常见语义块的插入)，插入定理环境现有两种方式： 输入 `\theorem` 后回车 或者 通过菜单栏 `插入` → `语义块` → `定理` 插入。当你需要频繁插入定理时，这两种方式都略显繁琐。更高效的做法是为定理环境绑定一个专属快捷键。

> **提示**：虽然我们以定理环境为例，但**任意 Liii STEM 环境**（章节，语义块，高亮，数学公式等）都可以用同样的方法为其定义快捷键。

将光标置于任意定理环境内，点击焦点工具栏的**扳手图标**（样式选项），在弹出的菜单中选择 **`编辑快捷键...`**，即可进入快捷键编辑器：

<table style="border: none; margin: 0 auto;">
  <tr style="border: none;">
    <td style="border: none; text-align: center; padding: 0 8px;">
      <img src="../images/shortcut-menu.png" alt="焦点工具栏样式选项菜单" width="380">
      <div style="font-size: 0.9em; color: #666; margin-top: 8px;">图 1：焦点工具栏的「编辑快捷键...」入口</div>
    </td>
    <td style="border: none; text-align: center; padding: 0 8px;">
      <img src="../images/shortcut-editor.png" alt="快捷键编辑器界面" width="400">
      <div style="font-size: 0.9em; color: #666; margin-top: 8px;">图 2：快捷键编辑器</div>
    </td>
  </tr>
</table>

如**图 1** 所示，焦点工具栏的扳手图标提供了针对当前环境的多种自定义选项，其中 **`编辑快捷键...`** 即是我们为定理环境添加快捷键的入口。

进入快捷键编辑器（**图 2**）后，左侧列表**可以查看已定义的快捷键**，右侧可以为当前环境设置新的快捷键组合。例如，我们可以为定理环境自定义 **`T` + `Tab`** （图中为macOS的快捷键显示， Windows会有不同） 作为快捷键。你会发现，在填写快捷键时，**宏命令会自动填写** —— 这是因为每个快捷键背后本质上都是调用一个宏命令（而不是环境）来完成操作的。

> **试一试**：为定理环境设置一个你喜欢的快捷键（例如 `T` + `Tab`），然后在文档中测试它。

除了为特定环境设置快捷键，你也可以通过菜单栏 **`工具` → `键盘` → `编辑键盘快捷键`**，打开快捷键编辑器页面进行更系统的管理。

> 除了环境外，您也可以框选任意内容，并为此内容定义一个宏，然后为这个宏定义一个快捷键。

到这里，你已经了解了快捷键的基本用法。接下来我们将深入介绍宏的创建与编辑。

## 2 宏：定义，创建与编辑

宏是 Liii STEM 中非常强大的功能，它允许你将重复的内容封装成一个简短命令。例如，如果你经常需要输入 "南方科技大学"，可以定义一个名为 `sustech` 的宏，之后只需输入 `\sustech` 回车即可自动展开。宏的优势在于：当你需要修改内容时，只需修改宏定义，所有使用该宏的地方会自动更新。而第1节提到的快捷键，本质上就是通过按键组合来快速调用某个宏命令。

Liii STEM 提供了图形化的宏编辑器，无需编写代码即可创建宏。

### 2.1 宏与环境：以 Theorem 为例

在 Liii STEM 中，**宏**（Macro）和**环境**（Environment）是两个密切相关但层次不同的概念。以 Theorem（定理）为例：

- **宏**是一段可展开的文本或命令替换。当你输入 `\theorem` 回车时，Liii STEM 实际上是在调用名为 `theorem` 的宏，宏展开后生成创建 Theorem 环境的指令。
- **环境**是宏展开后创建的带结构的排版容器。Theorem 环境会自动处理编号（如"定理 1."）、字体样式、间距等排版规则。也就是说，**环境是宏展开的结果**，而不是宏本身。

以我们前面定义的 `sustech` 宏为例：它的宏体是 "南方科技大学"，展开后就是一段纯文本，不带任何结构或样式。而 `theorem` 宏的宏体则是一段 **Scheme 代码** `(make 'theorem)`，它的作用是调用 Liii STEM 的内部函数 `make` 来创建一个 Theorem **环境**。

> **选读：Scheme 代码解读**：`(make 'theorem)` 是 Liii STEM 底层使用的 Scheme 语言表达式。其中 `make` 是一个函数，`'theorem`（注意前面的单引号）表示符号（symbol）`theorem`。整句的含义是："调用 `make` 函数，创建一个 Theorem 环境"。这与你在文档中输入 `\theorem` 回车的效果完全一致，只不过前者是底层实现，后者是用户界面。
>
> **举一反三**：同样的道理，如果你为前面定义的 `sustech` 宏分配了快捷键，那么快捷键编辑器中自动填写的 Scheme 代码也是 `(make 'sustech)`。`\sustech` 在文档中展开为 "南方科技大学"，而 `(make 'sustech)` 就是这个展开操作的底层实现。
>
> 想了解更多 Scheme 代码的写法？请参阅 [快速入门 Scheme](https://h02wf0jq8yp.feishu.cn/wiki/TO4gwEPIni2gQZkSROfcnDL1nWg)。

也就是说：**快捷键 → 调用宏 → 宏展开为 Scheme 代码 → 创建环境或插入纯文本**。

> **小结**：宏是可展开的命令；环境是宏展开后生成的结构化排版容器（带编号、样式等）。`\theorem` 和 `\sustech` 本质上都是宏，只是前者展开后创建环境，后者展开后仅输出纯文本。快捷键通过调用宏来间接创建环境。

### 2.2 创建简单宏

点击菜单栏 `工具` → `宏命令` → `新建宏`，打开宏定义小部件。在 `enter-name` 的位置 （鼠标点击即可，无需删除 `enter-name`）输入宏的名称，如 `sustech`，在 ≔ 符号下方输入宏的内容，如 `南方科技大学`。完成后点击 `使用` → `确认`。现在你的宏已经定义好了，你可以通过键入 `\sustech` 回车多次使用它。

<div style="text-align: center;">
  <div style="display: inline-block; width: 45%; vertical-align: top; margin: 0 8px;">
    <img src="../images/macro_2.png" alt="工具栏宏命令菜单" style="width: 100%; max-width: 420px;">
    <div style="font-size: 0.9em; color: #666; margin-top: 8px;">图 3：菜单栏「工具」→「宏命令」→「新建宏」</div>
  </div>
  <div style="display: inline-block; width: 45%; vertical-align: top; margin: 0 8px;">
    <img src="../images/macro_3.png" alt="宏编辑器界面" style="width: 100%; max-width: 420px;">
    <div style="font-size: 0.9em; color: #666; margin-top: 8px;">图 4：宏编辑器中输入名称和内容</div>
  </div>
</div>

> **试一试**：创建一个名为 `pku` 的宏，内容为 "北京大学"，然后在文档中调用它。

### 2.3 创建带参数的宏

宏还可以接受参数，让每次调用时填入不同的内容。假设你希望定义一个生成对角矩阵的宏 `diag`，并附加约束：符号 x 和 n 可以在每次使用宏时更改。

与前面的示例一样输入宏的名称后，你可以使用 `Alt` + `→` 快捷键插入额外的宏参数，例如 x 和 n。在输入宏的内容时，可以通过键入 `\x` 回车和 `\n` 回车在内容内部使用这些参数。使用 `\diag` 回车应用宏时，将为每个参数提供一个空的且可编辑的插槽。

> 这里需要区分两个概念：**参数的定义和参数的引用**。在宏编辑器中，你首先使用 `Alt` + `→` 定义了参数 `x` 和 `n`，这些是在宏头部声明的形式参数。而在编写宏内容时，你输入 `\x` 回车，这表示引用前面定义好的参数 `x`，将其值插入到当前位置。如果不加反斜杠直接输入 `x`，那只是一个普通字母；加上反斜杠后，Liii STEM 会将其识别为宏参数引用，并以棕色显示以作区分。

<div style="text-align: center;">
  <img src="../images/macro_5.gif" alt="带参数宏示例" style="width: 80%; max-width: 800px;">
</div>

> **小技巧**：在普通文档中先设计好原型（如输入一个对角矩阵），然后将其复制粘贴到宏编辑器的内容区域，再把变量替换为参数引用，这是创建复杂宏的高效方法。

> **提示**：在宏编辑器中创建宏时，也可以同时为其分配快捷键。这样，你不仅可以输入 `\宏名` 来调用，还可以直接通过快捷键触发。此外，你也可以先选中任意内容（通过鼠标或者键盘 `Shift` + `←` / `↑` / `↓` / `→` / `Home` / `End`，macOS 上为 `Command` + `←` / `→`），再为其创建宏并绑定快捷键。详见 [《高效编辑指南》 3.1 节 文档的结构化遍历](guide-tab.md#31-文档的结构化遍历)。

## 3 修改/重定义现有宏

除了创建新宏，你还可以自定义 Liii STEM 内置的现有宏，或者修改文档中已有的宏定义。

### 3.1 通过焦点工具栏修改

要修改已创建的宏，最快捷的方式是将光标放在宏标签内部或紧随其后，然后使用以下任一方式打开宏编辑器：

- 点击 `焦点` → `首选项` → `编辑宏`
- 点击焦点工具栏中的**扳手图标** → `编辑宏`

例如，假设你之前定义了一个 `sustech` 宏，内容为 "南方科技大学"。现在你希望把内容改为 "SUSTC"，你只需要把光标放在 `sustech` 标记内部或紧随其后，按上述方式打开宏编辑器，把内容改为 "SUSTC"，确认后文档中所有使用 `\sustech` 的地方都会自动更新为 "SUSTC"。

### 3.2 通过宏编辑器列表修改

你也可以通过菜单栏 **`工具` → `宏命令` → `编辑宏`** 打开宏编辑器，在左侧列表中搜索并选择要编辑的宏。只要可用，宏的简短描述就会显示在文档区域中。这种方式特别适合当你不确定宏名称，或者需要浏览所有可用宏时。

### 3.3 选读：理解宏的结构

在编辑宏时，了解宏的结构非常重要。Liii STEM 的宏往往是分层的，一个宏可能依赖于其他子宏。

例如，`proof` 环境的内部结构如下：

```
<assign|proof|
  <macro|body|
    <render-proof|<proof-text>|body>>>
```

这里 `proof` 宏调用了 `render-proof` 子宏，而 `render-proof` 又进一步调用了 `qed` 宏来生成证明结束符号 $\square$。

如果你希望将证明结束符号从 $\square$ 改为 $\blacksquare$，直接修改 `qed` 宏的定义即可，而不需要修改 `proof` 或 `render-proof`。要深入修改此类底层子宏（如 `qed`），通常需要进入文档的**导言区**（Preamble）进行编辑。你可以通过菜单栏 `文档` → `源` → `显示导言`（或快捷键 `Command` + `Option` + `p`）打开导言区视图。

> **建议**：在自定义现有宏之前，先调查其依赖树，识别控制你希望更改行为的那些子宏，这样可以避免不必要的修改。如果你想系统性地管理所有宏定义和子宏依赖，请参阅 [在导言区编辑宏](#)（即将推出）。

## 4 进一步学习

宏编辑器适合快速定义简单宏和进行基本定制。如果你需要编写更复杂的宏，或者希望一次性管理所有宏定义，请参阅 [在导言区编辑宏](#)（即将推出）。

如果你想深入了解 Liii STEM 的样式语言底层，可以参考 [快速入门 Scheme](https://h02wf0jq8yp.feishu.cn/wiki/TO4gwEPIni2gQZkSROfcnDL1nWg)。

> 需要一份完整的快捷键速查表？请参阅 [Liii STEM 的键盘快捷键](../keyboard-shortcuts.md)。
