Skip to content

Visual Editor

zhangxh-math edited this page Sep 9, 2026 · 4 revisions

可视化编辑器

TeXLeaf 1.2.2 为 *.tex 注册正式的 VS Code CustomTextEditorProvider。它不是 PDF 编辑器,也不是把 HTML 注入 Monaco 的插件:编辑区由 CodeMirror 6 承载,但所有操作最终仍提交给同一个 VS Code TextDocument。

这意味着可视化编辑器、同标签页源码模式和 VS Code 原生文本编辑器共享:

  • 同一个磁盘文件;
  • 同一个未保存标记;
  • 同一份 Undo/Redo 历史;
  • 外部文件变化和 Git 状态;
  • VS Code 文档版本和 WorkspaceEdit 安全边界。

本页是可视化编辑器的完整使用手册。Math Preview 的独立配置见 Math Preview;片段语法见 片段与模板;多文件静态扫描的安全边界也会在本页说明。

打开方式与三种编辑形态

默认打开

texleaf.visualEditor.defaultMode 的默认值是 visual。安装后重新打开一个 .tex,VS Code 会优先使用 TeXLeaf 可视化编辑器。

如果文件已经在原生编辑器中打开,可以:

  1. 运行 TeXLeaf: 使用可视化编辑器打开;或
  2. 在标签页右键选择 Reopen Editor With...;或
  3. 点击编辑器标题栏中的 TeXLeaf 可视化编辑器入口。

将 texleaf.visualEditor.defaultMode 设为 source 后,普通 .tex 默认回到 VS Code Text Editor。该设置只管理 TeXLeaf 自己写入的 *.tex editor association,不删除用户为其他编辑器建立的关联。

工具栏“源码”

“源码”在同一个标签页内切换为完整 LaTeX 源码:

  • 使用 CodeMirror LaTeX 高亮;
  • 从当前 VS Code 主题解析文字、命令、注释、字符串等颜色;
  • 仍可使用 TeXLeaf 片段、Math Preview、保存和工具栏;
  • 再点一次返回可视化模式;
  • 不会创建另一个文档或改变 editor association。

工具栏“原生”

“原生”在当前编辑组打开 VS Code 原生 Text Editor,并保留当前可视化选择位置。以下功能依赖原生 Monaco/扩展 API,只能在这里完整使用:

  • 第三方 Hover 和 Code Action;
  • Inline Suggest 自动灰字;
  • 带 command 或 additionalTextEdits 的复杂 Completion;
  • 带复杂 transform 的 SnippetString;
  • 第三方扩展私有键位和 UI。

返回可视化编辑器时,内容、dirty 状态和保存结果不会分叉。

工具栏

可视化编辑器顶部工具栏按当前窗口宽度横向滚动,提供:

区域 操作
编译 使用 LaTeX Workshop 的配方与执行器构建完整文档;增强模式本地 TeX 只用于编辑器图形预览。
PDF 调用 LaTeX Workshop PDF viewer。
源码 / 原生 在同标签页源码和 VS Code 原生编辑器之间选择。
保存、撤销、重做 通过 VS Code 文档 API 执行,不维护第二份历史。
章节 插入 part/chapter/section/subsection 等结构。
B / I / U / S / 颜色 包裹选区或插入 \textbf、\emph、\underline、\sout、\textcolor。
公式 插入行内/行间公式、equation、align、cases、matrix 等常用结构。
环境 插入 theorem、lemma、proof、itemize、enumerate 等。
图片 / 表格 插入 includegraphics、figure、tabular/table 模板。
引用 插入 \ref、\eqref、\cite,或打开文献选择器。
片段 / 模板 搜索当前 Profile 的完整 Snippet 与整篇模板库。
AI 检查、改写、续写、应用建议或打开原生 Problems。

右键菜单提供常用格式、公式、环境、引用和片段入口。所有插入都先验证当前文档版本、选择范围和上下文;过期操作不会写入新版本。

标准与增强可视化

工具栏可在标准模式(basic,默认)和增强模式(maximum)之间切换。标准模式用本地 MathJax 显示常规公式,不启动 TeX;需要本地排版的特殊内容提供黄色模式切换提示。增强模式使用本机 TeX 排版复杂公式、公式内 TikZ、TeX 盒子、Young 图和包含 PDF/位图子图的完整组合 figure,先显示可编辑正文,再逐项补齐图形,并提供进度、取消、失败说明及重试。

增强模式需要可信工作区、本机 TeX 和相应宏包。通常使用 latex 与 dvisvgm;中文图形需要 xelatex、ctex 和字体。含外部图片的预览优先用支持 PDF 的 dvisvgm 转换,失败后尝试 pdftocairo。依赖缺失时保留源码和提示,不自动下载工具。可通过 texleaf.visualEditor.texBinPath 指定本机工具目录;完整论文编译仍由 LaTeX Workshop 负责。

图形任务共享并缓存完成结果,切换模式、滚动或普通正文编辑可以复用;图形源码、有效宏、绘图颜色或相关图片内容变化时失效。texleaf.visualEditor.graphCacheLimitMB 控制磁盘缓存,默认 128 MiB、范围 16–2048,超限优先清理较久未使用项;可视化菜单可清理缓存,源码与 PDF 不受影响。

增强图形预览默认 150%。设置 texleaf.visualEditor.previewZoomPercent 可在 50–400% 间调整默认值,修改后立即应用;“缩小 / 重置 / 放大”只改变显示,重置返回设置值,新建预览也使用该值,不重新运行 TeX、不改变源码或 PDF。图形卡片、图注、操作按钮和图形引用悬浮使用不透明浅色纸面;保留原图颜色、透明度、位图像素及空实心节点,主题切换无需重新编译。

标题、摘要、编号与源码入口

1.2.1 保留 1.2.0 的完整改进:标题、作者、单位居中呈现,摘要独立带框并有源码入口;增强模式可整合可确定的分散文首信息。标题编辑按钮独占上方一行,窄窗不遮挡标题;标题、摘要、空样式命令、计数和布局命令均保留准确的源码入口。连续退格遇到折叠命令、表格或图形时先展开,再逐字删除;显式选中的完整命令仍可删除。

支持安全局部宏、脚注及其悬浮、定理样式、图题、目录、附录,以及章节计数器的字面整数赋值、加法和步进。标题与文献悬浮保留 LaTeX 公式,不解释标题中的 HTML;公式失败时保留红色原始公式,长标题和手写文献保留文字回退。可验证的 LaTeX Workshop 成功编译结果仅在相关源码仍一致时补充编号,过期或来源不明的结果不覆盖当前推断。

可视化属于静态近似。动态宏、精确编号、分页、浮动位置和模板最终排版以 LaTeX Workshop 编译的 PDF 为准。

Beamer 与输入交互

Beamer 保留帧外框、标题与正文,columns / column 按正文顺序纵向展开,便于连续编辑。支持局部分组的字号、粗体、斜体、命名颜色,以及可确定的单参数来源说明宏;样式与分栏包装仍可展开源码。普通文本 \alert 显示为加粗与可确定的高亮色,独立公式中的 \alert 用加粗数学兼容显示。局部作用域与重定义会更新样式,显式换行不再与源码换行叠加成额外空行;真实幻灯片布局仍以 PDF 为准。

Beamer 双向定位复用 LaTeX Workshop 的 SyncTeX 索引与 PDF viewer。普通帧先核验原行的双向记录;无法确认精确位置时,使用本帧结束记录的首个命中,避免跳到上一帧或同帧后续 overlay。显式 fragile/direct 帧,以及可核验的全局 direct 帧,保留准确原行;反向命中普通帧的 \end{frame} 时返回帧头,精确正文命中仍保留原位置。可视化位置通过统一 LF 坐标与原 TextDocument 的 LF/CRLF 坐标转换,避免 Windows 换行导致偏移累积,不改写文件换行格式。缺少可用 Workshop 运行时组件时沿用原同步路径,不猜测更细的位置。

公式内中文 IME 候选替换、删除与取消后恢复正常输入和退格,即使缺少 composition 结束通知也能由普通按键恢复。展开表格源码及混合文字单元格均支持 Math Preview,位置对齐公式起始处;单元格空格不会误触源码展开。工具栏、右键插入及多行片段自动缩进结果同步写入同一 TextDocument,沿用原有保存和撤销历史。

公式的显示与编辑生命周期

哪些公式会渲染

安全扫描器支持:

  • $...$ 与 $$...$$;
  • \(...\) 与 \[...\];
  • equation、align、gather、multline、flalign;
  • matrix、pmatrix、bmatrix、cases、aligned、split 等嵌套数学环境;
  • starred 变体和当前配置认可的数学环境。

注释、\verb、verbatim 类环境、未闭合范围、超出长度限制或无法安全确定边界的公式保持源码。渲染失败也保留作者源码,不用错误占位覆盖。

点击公式

点击静态 SVG 后:

  1. 只恢复这一条公式的准确 LaTeX 范围;
  2. 光标放入公式正文,而不是落在不可见占位区域;
  3. 浮动 Math Preview 在精确源码光标附近显示;
  4. 输入时使用高优先级预览通道更新;
  5. 光标完全离开公式后,先校验最新源码,再生成新的静态 SVG。

行间多行公式按一个完整公式范围展开。普通块公式使用 MathJax 返回的固有几何直接撑开正文,不为了适配一屏而预先缩小,也不在正常公式内部建立纵向滚动框。超宽公式只在本地横向视口中滚动。

快速滚动与长文档

公式资产按当前可视区和附近有限范围请求。可视区上报按浏览器动画帧对齐并做 32ms 节流;宿主端只有一个“最新请求优先”的渲染泵:

  • 快速滚动的新视口替换旧视口;
  • 远距离跳转建立新序列并重置有界预算;
  • 每批最多处理 8 个公式;
  • 离最终视口中心最近的结果优先发布;
  • 已离开的旧区域不会把最终停靠位置长期堵在队尾。

隔离回归文档包含 800 组压力公式,并会在 18 个连续动画帧内跨越四个远距离位置;每次停止后都要求可视区存在公式组件且原始公式残留为零。

中文输入法与退格保护

可视化公式对 IME composition 单独记录稳定范围:

  • 临时拼音只替换 composition 开始时的候选范围;
  • 微软拼音的 compositionupdate、beforeinput、候选退格和最终 commit 会合并为一次安全编辑;
  • 一个临时 s 不能吞掉左侧 +y^2、括号或花括号;
  • 退格删除最后一个候选字母时不会跨过公式原始边界;
  • 全角分号等中文标点不会因浏览器重复事件插入两次;
  • 光标离开 cite 或公式后,已展开源码与详情卡使用同一生命周期一起消失。

输入法事件在浏览器/系统之间存在实现差异,因此任何无法证明安全的宽选区 replacement 都会收敛成局部光标编辑,而不是接受可能删除既有 LaTeX 的 DOM diff。

逻辑行、鼠标点击与结构边界

可视化部件会隐藏一些源码行,但行号仍对应真实 LaTeX 逻辑行。

上下键

↑ / ↓ 按逻辑行导航:

  • 普通文本软换行成多条屏幕行时,仍只算一个 LaTeX 行;
  • 到达普通逻辑行,只展开这一行;
  • 到达公式任一逻辑行,展开整条公式;
  • 到达 \begin{...} 或 \end{...},显示当前最内层环境的成对边界;
  • 环境结束后的下一行保持独立,不会被吸回前一个 \begin;
  • 空白行保持可编辑空白行,不伪装成环境边界。

鼠标直接点击行号或空白区域

鼠标命中使用“点击到的 CodeMirror 逻辑行 + 相邻隐藏边界”判断,而不是只依赖 DOM 字符偏移。因此直接点击被 theorem/lemma/proof/list 或 align 替换后的 \begin / \end 行,也会显示正确的环境名和配对边界。

特别保证:

  • 点击 \begin{lemma} 的原逻辑行显示 \begin{lemma},不会只出现空光标行;
  • 点击 align* 的 begin/end 行显示完整数学环境源码;
  • 光标在 \end{example} 下一行开头时,不会跳回 \begin{example};
  • 光标在某个新环境 begin 行开头时,不会自动落到上一个环境的 begin。

编辑环境名

显示成对边界后,修改任一侧的环境名会在 composition 结束后同步另一侧,并作为一次原子 Undo/Redo。嵌套环境、注释、verbatim 和不匹配结构会保守处理;无法证明配对时只编辑当前文字,不猜测外层目标。

文档结构预览

导言区与标题

导言区默认折叠成“显示文档导言区”。展开后显示完整高亮源码并可直接编辑;再次折叠不会删除、复制或格式化源码。

\title、\author、\date、常见 \institute / \email 与 \maketitle 会生成标题预览。点击具体文字或编辑按钮可恢复命令源码。

章节与标签

part/chapter/section/subsection/subsubsection/paragraph/subparagraph 显示层级和可证明的编号。标题正文可直接编辑,完整命令按钮可用于可选参数或宏。紧邻 label 显示为小型 chip。

正文 fragment 没有可靠 counter seed 时不显示从 1 开始的伪精确编号;最终章节号和页码以真实编译为准。

定理、定义与证明

支持内置和可安全识别的 \newtheorem 环境,包括 theorem、lemma、proposition、corollary、definition、remark、example、conjecture、proof 等。

  • 标题显示环境名、编号和可选标题;
  • label 以紧凑 chip 显示;
  • 正文中的行内/行间公式继续排版;
  • 嵌套列表和公式不会切断外层边框;
  • proof 可以显示 QED,但不会修改源码;
  • 点击“编辑环境”显示成对边界,点击正文只编辑正文所在逻辑行。

列表

itemize、enumerate 和 description 显示可编辑 marker。枚举可识别常见可选 label 形式;复杂宏保持源码。

列表中 Enter 的规则:

  1. 在非空 item 中按 Enter,插入换行、当前缩进和新的 \item ;
  2. 对刚生成的空 item 再按 Enter,只移除 item 标记;
  3. 保留一个位于列表环境内的真实空白行;
  4. 不跳出列表;
  5. 只有 Shift+Enter 才跳出最近环境。

嵌套列表只由最内层环境处理 Enter,整次插入或清空是一个 Undo 步骤。

表格

独立 table / tabular / tabularx / longtable 会生成带 caption、label 和横向滚动的语义预览。点击 可视化编辑表格 会打开结构化编辑器,可以修改:

  • 数据环境和外层浮动体;
  • 浮动位置参数、表格宽度和整体对齐;
  • 普通横线或 booktabs 三线表样式;
  • caption、label、列对齐和竖线选项;
  • 行、列和每个单元格的 LaTeX 内容。

单元格支持 TeXLeaf 片段和 Ctrl+Space 补全。增删行列或编辑单元格时,预览模型先在本地更新;点击 应用表格修改 后,TeXLeaf 才把完整模型安全序列化为 tabular / tabularx / tabular* / longtable。应用是一个可撤销的文档操作,caption 和 label 仍属于原 .tex,不会生成第二份数据。

结构化编辑器不猜测无法证明安全的高级列类型、任意宏、复杂 \multicolumn / \multirow 语义或自定义环境;遇到这些内容时使用 编辑环境源码。预览用于写作辅助,不模拟 TeX 的最终列宽、分页、宏展开或字体度量。

tikzcd 交换图

点击 可视化编辑交换图 打开内置 quiver 1.7.0 中文编辑器。可选择、拖动节点与箭头,编辑标签、弯曲、颜色、端点和箭头样式,也可放大编辑画布。标准与增强模式均使用浅色交换图卡片,外围文档继续跟随 VS Code 主题。

编辑器直接加载当前 tikzcd,不设独立导入、宏定义或导出栏。点击 应用修改 将结果写回原位置,可一次撤销;未修改就应用或取消均保持原文。源码中的 texleaf-quiver-v1 注释保存 quiver 原生状态,仅在对应图形源码未被外部修改时使用;手动改图后重新解析 TikZ。

quiver 无法无损导入所有手写 TikZ 选项。未识别的选项会列出提示;修改后应用需要勾选转换确认。需要保留原样时使用 编辑 tikzcd 源码。TikZ 无法准确表达的箭头组合会提示调整,不会静默替换样式。

修改主文档图形时按需补充 \usepackage{quiver},与图形修改共用一次撤销;编辑 \input 子文件时需自行在主文档加载宏包。完整文档编译需要本机 quiver 1.7 及 TikZ 依赖;增强预览使用随扩展提供的 quiver.sty。界面、KaTeX、字体和图标全部本地加载,宏由 TeX 文档管理,不加载远程宏。

这里实际嵌入了 q.uiver.app / varkor/quiver 1.7.0 的代码,上游提交为 2f289ecbae9b7e5a473e04b924750c538ed5c4cf,原作者版权为 Copyright (c) 2018 varkor,使用 MIT License。TeXLeaf 维护本地汉化与集成补丁,并保留 quiver 和 KaTeX 0.18.1 的原许可证;这是实际代码集成,不只是交互参考。

图片

工作区或当前文档目录内的安全本地栅格图片及 PDF/SVG 可以预览;动态路径、远程 URL、越界路径和无法证明位于允许根目录内的文件保持源码。TikZ、ytableau 等其他复杂环境是否可预览取决于本地安全预览能力,真实编译仍由 TeX 发行版决定。

Bibliography

BibTeX/BibLaTeX 文件和 thebibliography 结构可以显示条目摘要;点击来源按钮编辑准确条目。bibliography 预览离开源码范围后恢复,不会把折叠状态写入文档。

键盘行为

键 可视化编辑器中的优先顺序
Tab 活动 Snippet tabstop → 当前 cell/范围内严格 Tabout → matrix/align 插入 & →普通缩进/补全。不会跳出块环境。
Enter 接受安全补全;否则执行列表 item 或数学环境智能换行;普通位置换行并使用 LaTeX 缩进。不会跳出环境。
Shift+Enter 跳出最近的受支持环境或 display math,到安全空白行并保留外层缩进。
↑ / ↓ 按 LaTeX 逻辑行移动;公式作为完整范围处理。
Ctrl+Space 查询 CodeMirror 内建候选与 VS Code 官方 Completion Provider 桥。
Ctrl+Alt+L / Cmd+Alt+L 搜索当前上下文可插入的完整 TeXLeaf 片段库。
Ctrl+[ / Cmd+[ 返回上一次跨文件引用跳转前的位置。
Esc 关闭当前补全、菜单或 Math Preview。

Shift+Enter 的缩进

Shift+Enter 会寻找最近的内层环境结束位置:

  • 若 \end{...} 后已有安全空白行,复用该行;
  • 否则在结束命令后插入换行;
  • 新行使用 closing line 的外层缩进;
  • 嵌套环境只跳出最近一层;
  • document 不作为普通写作环境跳出;
  • 整个换行/光标移动作为一次可撤销操作。

例如:

  \begin{enumerate}
    \item text
  \end{enumerate}
  |

光标位于 item 中按 Shift+Enter 后,落点保持两个空格的外层缩进,而不是回到第 1 列,也不会把 \end{enumerate} 移到错误层级。

Tab、Enter 与环境跳出

TeXLeaf 有意只把 Shift+Enter 定义为块环境跳出:

  • Tab 不跳出 theorem、proof、enumerate、align、equation 或 display math;
  • Enter 不跳出环境;
  • 行内 $...$ / \(...\) 是唯一例外:内部 tabstop 全部完成、剩余内容只有空白时,Tab 可以越过结束定界符;
  • matrix/align 中没有局部 Tabout 目标时,Tab 插入下一列,而不是离开环境。

片段、自动分式与补全

可视化模式使用与原生源码模式相同的 Profile 片段库:自动/手动/Visual/regex 规则、v2 tabstop、嵌套 snippet、自动括号放大和 Tabout 都可用。

自动分式关系边界

输入自动分式 trigger 时,左操作数扫描把以下关系符视为与 = 相同的硬边界:

  • <、>、<=、>=;
  • \le、\leq、\ge、\geq;
  • 配置在 texleaf.autoFractionBreakingCharacters 中的其他字符。

因此 <1/2 得到 <\frac{1}{2},而不是 \frac{<1}{2}。关系命令与其后空白都不会成为分子的一部分。

Provider 补全桥

texleaf.visualEditor.providerCompletions=true 时,Webview 通过 VS Code 官方 vscode.executeCompletionItemProvider 查询 TeXLeaf、LaTeX Workshop 等 Provider。

可以安全重建:

  • 普通插入文本;
  • 单行替换范围;
  • 常见 SnippetString tabstop;
  • citation、label、environment 等标准候选。

以下候选 fail closed 并留给“原生”编辑器:

  • command 回调;
  • additionalTextEdits;
  • 多行或越过当前上下文的替换;
  • 复杂 Snippet transform;
  • 依赖 Monaco 私有状态的操作。

候选应用前后都会校验 document version、client revision、原文和替换范围,不能让旧补全覆盖新输入。

多文件项目与交叉引用

根文件判定

根证据按确定性使用:

  1. texleaf.project.rootFile;
  2. % !TEX root = ...;
  3. subfiles 文档类中的字面主文件;
  4. 当前文件自己的 \documentclass;
  5. 工作区内唯一、完整、可证明的反向包含关系。

扫描优先读取已打开且未保存的 TextDocument,然后读取磁盘。缓存 token 会随相关文档、配置和项目图变化失效。

支持的依赖

静态模型跟随工作区内字面:

  • \input;
  • \include;
  • \subfile;
  • \import;
  • \subimport。

它跳过命令/环境定义体、verbatim/comment/filecontents、无法证明的条件分支、\endinput 和 \end{document} 后内容。动态路径、TEXINPUTS/kpathsea、\input@path、\includeonly、宏生成路径和 symlink/junction realpath 不在静态承诺内。

遇到循环、缺失、重复执行、重名 label、未知条件或不完整图时,跨文件补全/跳转 fail closed,不挑选“看起来最像”的目标。

\ref / \eqref 的显示与预览

可视化引用 chip 显示目标结构编号或 label:

  • 所有跳转箭头位于引用文字右侧;
  • 普通点击展开当前引用源码;
  • Ctrl/Cmd+单击跳到目标;
  • Ctrl+[ / Cmd+[ 返回引用处;
  • 跨文件目标会打开正确物理 .tex;
  • 结构目标悬停显示标题/定理摘要;
  • 公式目标悬停显示完整公式。

当一个 align 的多行分别带 label 时,预览仍显示整条 align,但只用背景和描边高亮当前引用 label 对应行。多 label 引用根据当前鼠标指向的 key 决定高亮行。

Citation

已有 bibliography 项显示作者—年份或可用标题;多篇 cite 可显示多个条目。点击 cite 展开准确命令,Ctrl/Cmd+单击跳到 bibliography 条目。详情卡显示标题、作者、期刊/出版物、年份、Citation key、来源与收录状态。

光标移出 cite 源码范围时:

  • cite 源码恢复为可视化 chip;
  • completion/文献详情卡同时关闭;
  • 不保留悬空详情;
  • 下次悬停重新按当前文档版本取数据。

Zotero 搜索、导入和去重规则见 文献与 Zotero。

AI 语言问题与 VS Code Problems

TeXLeaf 不再维护“文档问题”侧栏。AI 语言问题通过独立 DiagnosticCollection 发布到 VS Code 原生 Problems:

  • source 显示为 TeXLeaf AI;
  • category 和可视化定位信息保留在诊断及建议卡中;
  • 点击 Problems 条目会打开/聚焦对应物理文档;
  • 可视化编辑器收到定位消息后滚动到准确逻辑行和 UTF-16 范围;
  • 点击不会停在一片空白 Webview;
  • Hover/建议卡提供“应用建议”和“忽略建议”;
  • Quick Fix 与“应用全部”在写入前重新验证 exact original、范围和正文作用域。

LaTeX 编译问题仍由 LaTeX Workshop 的 DiagnosticCollection 输出到同一个 Problems 面板。TeXLeaf 不复制编译诊断、不建立第二队列,也不为编译错误调用 AI 解释。

AI 队列、局部复检、持久化、费用与隐私见 AI 写作助手。

编译、PDF 与 SyncTeX

texleaf.visualEditor.latexWorkshopCompatibility=true 时,TeXLeaf 的兼容桥复用 LaTeX Workshop 已加载的运行时模块、编译配方和执行器;运行时结构不兼容时回退到公开命令及必要的临时原生编辑器上下文。PDF 查看、SyncTeX 和编译诊断继续由 LaTeX Workshop 提供。

操作 桥接路径
编译 优先复用已加载的配方与执行器;必要时回退 latex-workshop.build。
查看 PDF 使用 LaTeX Workshop PDF viewer;兼容路径保留 latex-workshop.view。
从光标定位 PDF 复用 Workshop SyncTeX 索引和 viewer;保留 latex-workshop.synctex 回退。

LaTeX Workshop 10.18 的这些命令依赖 window.activeTextEditor。TeXLeaf 的兼容桥复用 LaTeX Workshop 已加载的运行时模块、编译配方和执行器;运行时结构不兼容时回退到公开命令及必要的临时原生编辑器上下文。PDF 查看、SyncTeX 和编译诊断继续由 LaTeX Workshop 提供。关闭兼容设置后,请进入“原生”源码编辑器再运行 LaTeX Workshop。

完整文档的构建配方、编译执行、PDF viewer 与 SyncTeX 索引由 LaTeX Workshop 提供。TeXLeaf 的兼容桥把正反向定位连接到可视化编辑器,并处理普通 Beamer 帧的定位回退与 LF/CRLF 坐标;具体规则见上文“Beamer 与输入交互”。关闭兼容设置后可从原生源码编辑器使用 Workshop。

九个设置

设置 默认值 说明
texleaf.project.rootFile 空 显式工作区相对主文件;只接受安全、可解析的 .tex 路径。
texleaf.visualEditor.defaultMode visual 普通打开 .tex 时使用 TeXLeaf 可视化编辑器或原生 source。
texleaf.visualEditor.providerCompletions true 桥接安全的 VS Code Completion Provider 候选。
texleaf.visualEditor.latexWorkshopCompatibility true 复用 Workshop 运行时模块,必要时回退到公开命令和临时原生上下文。
texleaf.visualEditor.syntaxTheme followVsCode 跟随 VS Code TextMate 与安全的 LaTeX grammar;fixedPrimer 使用内置浅/深配色。
texleaf.visualEditor.compatibilityMode basic 标准模式;maximum 启用本机 TeX 增强图形预览。
texleaf.visualEditor.texBinPath 空 本机 TeX 可执行文件目录;留空自动查找。
texleaf.visualEditor.graphCacheLimitMB 128,16–2048 图形磁盘缓存容量(MiB),菜单可清理。
texleaf.visualEditor.previewZoomPercent 150,50–400 增强图形默认缩放(%),立即应用,重置返回该值。

旧测试配置中可能残留 texleaf.visualEditor.renderFormulas。该设置已经退役并被忽略;1.2.2 可视化模式始终显示可安全渲染的公式。需要完整源码时使用工具栏“源码”或将默认模式设为 source。

性能与安全模型

  • Webview CSP 禁止任意脚本、远程资源和内联未授权执行。
  • MathJax 公式、经安全校验的本地 SVG/PDF 图片和本机 TeX 图形走各自的受限加载路径;公式内容不作为 HTML 执行。增强图形与 quiver 使用浅色纸面,保留原始配色。
  • 主线程只保留有界公式 ID、视口预算、候选数量、消息大小和缓存。
  • Cursor Preview、viewport render、completion、navigation 和 project context 均携带版本/代次;旧结果不能覆盖新文档。
  • 结构扫描、项目图、LaTeX 状态与语法 token 采用增量缓存;遇到不完整状态重新从安全前驱构建,而不是猜测。
  • Webview 透明背景会让用户已有编辑器背景透出;结构边框和卡片使用主题变量,不固定为某个深色主题。
  • 可视化预览不是 TeX 排版引擎,最终版式、宏语义、counter、分页和字体只能由真实编译证明。

常见问题速查

快速滚动后还有原始公式

先确认安装的是包含快速滚动修复的 1.2.2 构建并 Reload Window。正常行为是停止后最终视口自动补齐;无需再滚一下。若仍复现,请记录文档规模、公式数量、停止位置、是否正在输入,并在 Output → TeXLeaf 查找 Worker 超时或公式长度限制。

点击 begin 行仍只出现空白行

点击真实行号附近或该结构卡的“编辑环境”。当前实现按逻辑行命中 theorem/lemma/proof/list 与 align;环境后的下一行不属于该环境。若只有某个自定义环境失败,请附最小 begin/body/end 源码。

Enter 或 Tab 跳出了环境

块环境只允许 Shift+Enter 跳出。若 Enter/Tab 仍跳出,使用 Developer: Toggle Keyboard Shortcuts Troubleshooting 检查是否被其他扩展先接管。行内公式完成后 Tab 跳出结束定界符属于唯一预期例外。

Problems 中点击 AI 项没有跳转

确认诊断 source 是 TeXLeaf AI,文件仍存在且问题 original 尚未失效。点击后可视化标签会重新聚焦并等待 Webview ready,再定位范围。若正文已经改变,旧问题会 fail closed 清除而不是跳到相似短语。

Citation 源码或详情不消失

把光标完整移出 \cite{...} 的 source range;只移动鼠标但光标仍在 cite 内不会收起。若光标已在其他逻辑行,源码 chip 与详情卡应一起恢复/关闭。

更多问题见 故障排查。

建议验收步骤

  1. 点击一条行内公式,输入 +z^2,确认浮动预览更新并在离开后静态公式包含新项。
  2. 在 theorem/lemma 的 begin 逻辑行直接单击,确认同时显示 begin/end;点击结束后的下一行,不能跳回该环境。
  3. 在 enumerate 非空 item 按 Enter,再在新空 item 按 Enter:应留在环境内;Shift+Enter 才离开并保持缩进。
  4. 在 align 中让当前 cell 后文含其他命令参数,按 Tab 不得跳到未来 };没有局部目标时插入 &。
  5. 输入 <1/2、\leq 1/2,确认关系符留在分式外。
  6. 用中文拼音在 \(x^2+y^2\) 末尾输入并删除临时 s,既有 +y^2 不得改变。
  7. 悬停多行公式的 \eqref,确认整条公式显示且当前 label 行单独高亮。
  8. 点击 cite 后移到其他逻辑行,确认源码和文献详情一起消失。
  9. 打开 Problems 并点击 TeXLeaf AI 项,确认跳到准确行列;LaTeX Workshop 编译问题仍由其自己的 source 提供。
  10. 在长文档快速滚动到多个远位置,停止后可视区公式应自动渲染。

相关页面

交换图导入的布局保留

  • quiver 导入保留支持的行列间距与 cramped,不能准确保留的值显示转换提示,避免静默丢失。

Clone this wiki locally