Appearance
自定义宏命令的创建
0 术语理解
恭喜!阅读到这里说明您已经是Liii STEM的高级用户了,为了使用更高级的功能,我们需要对以下的术语进行区分(注意到此处的术语定义与 《Liii STEM快速入门》里的术语有些区别):
环境 (Environment)
结构的具象化,在指定的区域内,输入的内容的结构具有特定的结构。这个区域就是环境。也就是说在不同的环境下,输入相同的内容,呈现的效果有所不同。
标记 (Markup)
标记就是环境的名称。例如:section
焦点 (Focus)
焦点就是光标所在的环境(蓝色框所展示的)。
排版原语(Primitive)
是Liii STEM能够直接理解和执行的最基本、不可再分的命令。例如:<with|> 、<if|>、<equal|>
宏(Macro)
宏是原语的组合,可以被定制的。例如:<assign|test-equal|<macro|arg1|arg2|msg|<if|<equal|arg1|arg2>|Same quantity:arg1|Not equal:msg>>>
结构 (Structure)
输入的内容在原语/宏的作用下呈现出来的效果。
结构化输入/移动
它要求Liii STEM能够理解文档的内在逻辑结构(如数学公式、代码块、表格或章节等),并允许用户直接对这些逻辑单元进行操作。例如,在表格环境中,结构化插入命令Alt + ← 和 Alt + → 可能用于插入列, Alt + ↑ 和 Alt + ↓ 用于插入行。删除的操作也相同,Alt+Backspace 和 Alt+Delete可用于结构化后向或前向删除,也就是向前删除光标前的一列,光标后的一列。
Liii STEM 支持自定义宏,以及从 中直接导入宏。以下指南将带您了解宏并掌握使用宏的方法。
1 什么是宏?
在数学公式编辑中,我们已经掌握了如何标注公式等。为什么要在已有的公式上再加一层标注呢?其中一个的原因是我们希望引入缩写来简化冗长的名称或复杂的符号,从而节省输入的时间。通过定义宏,我们也可以实现这一点。
- 宏(Macro)是一段我们根据自己的需求,预先录制的命令或代码片段,用来自动执行重复性任务。
再举个简单的例子。假设您在文章中需要多次提到 Southern University of Science and Technology ,那么您可以在 Liii STEM 中引入一个新的宏 sustech 作为以上五个单词的缩写,定义完成的宏可以重复使用,这大大减轻了您输入的压力。

2 宏使用的基本方法
创建一个宏
在菜单栏依次点击 工具 → 宏命令→ 新建宏 。

点击 enter-name ,输入您想定义的宏的 名称 。
在 enter-body 部分,输入宏的 内容 。
最后点击 使用→ 确认。

按 \ 进入命令模式,输入您定义的宏名称,敲击 回车 ,完成宏的创建与使用。
添加参数
打开 Macro editor 将面板左下角调至 数学 ,您可以定义数学类型的宏。

您还可以添加额外的 宏参数 ,从而在每次使用宏时,在参数位置能够输入不同的内容。例如,每次都可以更改上述图片中矩阵的符号 x 和 n 。具体方法如下。

定义现有的宏
Liii STEM 中有许多已定义的宏,您可以通过点击焦点(当前环境)工具栏的 Preference for tag → 编辑宏 打开 宏编辑器,进行个性化的定义。
如果您操作熟练或是需要编辑较为复杂的宏,推荐您使用以下两种方法,详见本指南第 4 章 。
- 将 Macro editor 面板左下角调至
源码来编辑宏。 - 在 导言区 内编辑宏,详见本指南第 3 章。
3 在导言区编辑宏
进入导言区
菜单栏点击 文档 → 部分 → 显示序言 。
或在 MacBook 中使用快捷键 Alt + Cmd + P,在 Windows 系统中可使用快捷键 Alt + Windows + P。

在导言区编辑宏
进入导言区后,您可以看到您此前创建的宏。
此时,您可以直接在导言区对其进行修改参数、名称以及内容等编辑操作。

在导言区创建宏
您在导言区也可以直接创建宏,具体如下。
进行上述操作后,会出现 <assign||> 字样,在第一个 | 后输入宏的名称,在第二个 | 后添加宏的内容。

一些常见的 tips:
- 定义参数时需要使用
macro命令(输入\+macro)将宏内容套起来,之后您可以使用Alt+→添加宏参数。 - 定义宏时,中间可以嵌套您已经定义好的宏。对于一些复杂的宏,如矩阵,您可以在输入
\+matrix后点击模式工具栏中的激活,此时可以展开宏等结构方便您快速编辑。

- 通过 math 命令(
\+math)可以进入数学模式编辑,进入数学模式后您可以调用一些在数学模式下可调用的宏。 - 通过导言区创建宏可以方便您使用
if等条件判断指令。
如下是一个通过导言区创建宏的示例,该宏实现了判断两个参数是否相等的功能:
bash
<assign|test-equal|<macro|arg1|arg2|msg|<if|<equal|arg1|arg2>|Same quantity:arg1|Not equal:msg>>>
4 从 中导入宏
我们支持从 直接导入宏,具体方法如下。

想要了解更多底层语言,可参考:快速入门 Scheme。