Skip to content

会话与脚本:交互式计算环境完全指南 ​

本文是 文本模式完全指南 第 7.3 节「会话」的拓展,详细介绍 Liii STEM 中 Python、AI 及多语言计算环境的完整用法。

前提条件:本文介绍的 Maxima、Gnuplot、Scheme、Elvish 等计算环境需要自行安装。Python 和 Gnuplot 的安装请参阅 Python 会话插件 和 Gnuplot 绘图 教程。TikZ 绘图插件的安装请参阅 TikZ 绘图插件教程。

Liii STEM 不仅是一个科技写作平台,更是一个统一的多语言计算接口。通过内置的会话系统和插件机制,Liii STEM 可以无缝集成 Python,Scheme,Elvish 以及各类计算机代数系统和 AI 工具,让用户在编辑文档的同时直接执行计算,绘图和数据分析,实现"写作即计算"的工作流。

1 会话系统 ​

会话(Session)是 Liii STEM 中与外部计算环境交互的核心机制。通过插件系统,Liii STEM 可以启动不同类型的计算会话,在文档中直接执行代码并嵌入结果。

1.1 多语言计算环境概览 ​

根据系统上安装的插件不同,用户可以启动不同类型的计算会话:

计算环境启动方式适用场景
Python插入 → 会话 → Python数值计算,数据分析,机器学习
Scheme插入 → 会话 → Scheme符号计算,宏扩展
Elvish插入 → 会话 → Elvish系统命令,文件操作
计算机代数系统插入 → 会话 子菜单符号微分,积分,方程求解
AI 工具模式工具栏 🦞识别图片,自动排版,解题,扩写文章

当前支持的 AI 工具:Kimi-VLM,DeepSeek-V4-Pro,DeepSeek-V4-Pro-Thinking。

Python Conda 环境:选择 插入 → 会话 → Python 后,子菜单会列出所有可用的 Conda 环境(如 default、conda_base、conda_stem 等),方便你在不同环境中切换。

启动新会话时,Liii STEM 会在后台自动启动对应的外部应用程序。同一类型的所有会话共享同一个物理进程,这意味着你可以在一个会话中定义变量,然后在另一个同类型会话中继续使用。

1.2 启动和管理会话 ​

会话由一系列输入和输出字段以及它们之间的可选文本组成。在会话的输入字段内部按 Enter 时,输入文本会被求值,结果会显示在输出字段中。

操作快捷键/菜单说明
启动会话插入 → 会话 → [语言]根据已安装插件选择
中断计算焦点 → 中断执行软中断当前会话(部分插件支持)
关闭会话焦点 → 关闭会话强制退出外部进程,环境丢失
重新启动在已关闭会话中按 Enter自动重新启动外部进程
全部求值焦点 → 求值 → 全部求值重新执行会话中所有字段
求上面各值焦点 → 求值 → 求上面各值执行当前字段上方的所有字段
求下面各值焦点 → 求值 → 求下面各值执行当前字段下方的所有字段

需要注意的是,不同插件的会话可以并行运行。如果需要同时运行同一插件的多个实例,可以使用 插入 → 会话 → 其他 指定不同的"会话名称",只有相同名称和类型的会话才会共享同一个物理进程。

1.3 编辑会话 ​

操作快捷键效果
在前面添加区域Alt + ↑在当前字段上方插入新输入/输出对
在后面添加区域Alt + ↓在当前字段下方插入新输入/输出对
删除前一个区域Alt + Backspace移除前一个匹配字段
删除最后面区域Alt + Delete(macOS:Option + Fn + Backspace)移除光标所在字段
创建子会话Alt + →将当前输入输出按主题分组

会话中的所有输入/输出字段都是可折叠的。单击输入提示符即可折叠或展开该条目。也可以使用 焦点 → 会话 → 折叠所有字段 和 展开所有字段 来批量操作。

Alt + 方向键 是 Liii STEM 中通用的结构化插入快捷键,不仅适用于会话,也适用于矩阵、表格、列表等环境。更多细节请参阅 高效编辑指南。

1.4 输入与输出选项 ​

选项设置方式说明
多行输入Shift + Enter 或 焦点 → 输入选项 → 多行输入允许输入多行代码
数学输入焦点 → 输入选项 → 数学输入以二维数学公式形式输入(部分插件支持)
显示时间焦点 → 输出选项 → 显示时间报告求值耗时
不拆分大型公式焦点 → 首选项 → 不拆分大型公式关闭输出换行重写机制

默认情况下,计算机代数系统生成的大型表达式会被重写以支持换行(如将分数 ab\frac{a}{b} 转换为 a/ba/b 形式)。如果对打印计算不感兴趣,可以关闭此机制以获得更自然的输出显示。

1.5 会话样式 ​

Liii STEM 提供多种会话渲染样式,适用于不同的使用场景。

样式设置方式特点
默认样式无标准输入输出布局
带框输入字段焦点 → 首选项 → 带框输入字段输入字段带边框高亮
活页夹笔记本样式焦点 → 首选项 → 活页夹笔记本样式模仿笔记本外观

1.6 其他功能 ​

功能操作说明
Tab 补全键入前几个字符后按 Tab自动补全长指令,多次按 Tab 循环浏览候选
语法高亮自动启用对关键字,注释,函数,常量使用特殊颜色
可执行切换插入 → 折叠 → 可执行 → [语言]在文档任意位置插入可执行代码块

2 脚本语言与可执行切换 ​

2.1 可执行切换 ​

可执行切换(Executable Switch)是 Liii STEM 中嵌入计算的基本单元。与会话不同,可执行切换可以直接插入到文档正文中的任意位置,不需要单独启动一个会话环境。

在执行后源码会被隐藏,用户可以反复在源码和渲染效果之间切换修改直到满意为止。

插入方式:

点击菜单 插入 → 折叠 → 可运行 → [语言],即可在光标位置插入一个可执行代码块。支持的插件语言包括 Python、Maxima、Scheme、Elvish、Gnuplot、Goldfish Scheme 等(取决于已安装的插件)。

使用方法:

插入后会出现一个黄色的输入区域,你可以在其中输入该插件语言的表达式。例如,选择 Maxima 后输入 diff(x^x, x) 或者 选择 Gnuplot 后输入 plot y = 2 x。

操作快捷键说明
求值/切换Ctrl + * 或 焦点工具栏点击在未求值的输入和求值后的输出之间来回切换
多行输入Shift + Enter启用多行输入模式,方便编写多行代码

可执行切换非常适合在正文中插入小型计算、图形生成或动态内容。例如,在讲解数学概念时,可以直接在段落中嵌入一个 Maxima 微分运算,读者可以交互式地修改参数并重新求值。

下图展示了 Gnuplot 可执行切换的效果。左侧是未求值的输入 plot y = 2 x,右侧是点击焦点工具栏的求值按钮(^*)后渲染出的二维图形。

可执行切换示例:左侧为 Gnuplot 输入,右侧为求值后的图形输出

图 1. 可执行切换。左: 输入状态 右: 求值后状态(源码会被隐藏)

2.2 用作脚本语言 ​

某些插件(如 Python)可以设置为文档的脚本语言,有以下两种方式:

  • 全局设置:编辑 → 首选项... → 其它 → 脚本语言(影响所有新文档)
  • 文档设置:文档 → 脚本 → [语言](仅影响当前文档)

设置为脚本语言后,该插件将在后台作为编辑器的助手运行。

功能操作效果
直接求值公式光标在公式内,按 Ctrl + Enter使用脚本语言求值并替换结果
菜单运算脚本语言菜单 中的子项简化,展开,微分等
保留求值表达式保留求值表达式显示求值前后的对比

可执行输入字段与字段引用 ​

当文档中选择了脚本语言后,可以使用以下高级功能:

元素插入方式功能
可执行输入字段\! 或 插入 → 链接 → 可执行输入字段输入被求值并替换为输出,支持标识符和引用
纯输入字段\\ 或 插入 → 链接 → 输入字段仅用于输入,按 Enter 重新计算依赖(于此字段的)字段
字段引用\? 或 插入 → 链接 → 字段引用在其他字段中引用某个可执行输入字段的值

可执行输入字段可以通过焦点栏上的 Ref 字段附加标识符。其他字段通过字段引用 \? 来引用该标识符的值。当被引用的字段修改并重新求值后,所有依赖它的字段会自动重新求值。

示例. 可执行输入字段可用于教育目的,允许文档的某些部分被读者修改和重新计算。例如,(当脚本语言是 Maxima 的时候)求值

xxx^x 的一阶导数为 diff(function,x)。

二阶导数为 diff(derivative,x)。

产生

xxx^x 的一阶导数为 xx(log⁡(x)+1)x^x (\log(x)+1)。

二阶导数为 xx(log⁡(x)+1)2+xx−1x^x (\log(x)+1)^2 + x^x-1。

3 选读:安装自定义插件 ​

Liii STEM 的功能通过插件进行扩展。你可以从社区或官方渠道获取插件,然后将其安装到指定目录即可使用。

3.1 查看插件目录 ​

首先启动一个 Goldfish Scheme 会话(插入 → 会话 → Goldfish Scheme),然后输入以下命令查看 TEXMACS_HOME_PATH:

scheme
(begin (import (liii os)) (getenv "TEXMACS_HOME_PATH"))

输出示例(macOS):

~/Library/Application Support/liiilabs

3.2 安装插件 ​

将下载的插件文件夹放入以下路径即可:

$TEXMACS_HOME_PATH/plugins/

例如,将 python 插件文件夹复制到 ~/Library/Application Support/liiilabs/plugins/python。

安装完成后,重启 Liii STEM,新插件即可在 插入 → 会话 菜单中使用。