---
title: '会话与脚本：交互式计算环境完全指南'
description: 会话与脚本：交互式计算环境完全指南，涵盖会话系统，脚本语言与可执行切换。
keywords: Liii STEM, Python, AI, 多语言, 计算环境, 会话, 脚本, 可执行切换
---

> ## 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.


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

> 本文是 [文本模式完全指南](base-editing/guide-text-mode.md#73-会话) 第 7.3 节「会话」的拓展，详细介绍 Liii STEM 中 Python、AI 及多语言计算环境的完整用法。
>
> **前提条件**：本文介绍的 Maxima、Gnuplot、Scheme、Elvish 等计算环境需要自行安装。Python 和 Gnuplot 的安装请参阅 [Python 会话插件](guide-python.md) 和 [Gnuplot 绘图](guide-gnuplot.md) 教程。TikZ 绘图插件的安装请参阅 [TikZ 绘图插件教程](guide-tikz.md)。

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 中通用的**结构化插入**快捷键，不仅适用于会话，也适用于矩阵、表格、列表等环境。更多细节请参阅 [高效编辑指南](guide-tab.md#3-结构化导航与编辑)。

### 1.4 输入与输出选项

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

默认情况下，计算机代数系统生成的大型表达式会被重写以支持换行（如将分数 $\frac{a}{b}$ 转换为 $a/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`，右侧是点击焦点工具栏的求值按钮（`^*`）后渲染出的二维图形。

<p align="center">
  <img src="../images/computing-env/executable-switch.png" alt="可执行切换示例：左侧为 Gnuplot 输入，右侧为求值后的图形输出" style="max-width: 80%;">
</p>

<p align="center"><em>图 1. 可执行切换。左: 输入状态 右: 求值后状态（源码会被隐藏）</em></p>

### 2.2 用作脚本语言

某些插件（如 Python）可以设置为文档的脚本语言，有以下两种方式：

- **全局设置**：`编辑` → `首选项...` → `其它` → `脚本语言`（影响所有新文档）
- **文档设置**：`文档` → `脚本` → `[语言]`（仅影响当前文档）

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

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

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

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

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

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

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

> $x^x$ 的一阶导数为 `diff(function,x)`。
>
> 二阶导数为 `diff(derivative,x)`。

产生

> $x^x$ 的一阶导数为 $x^x (\log(x)+1)$。
>
> 二阶导数为 $x^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**，新插件即可在 `插入` → `会话` 菜单中使用。
