TeXpresso:LaTeX的实时渲染和错误报告
注意:TeXpresso仍处于早期开发阶段。变更和错误修复频繁发生,请查看CHANGELOG.md。
重要:此仓库使用子模块。请使用 git clone --recurse-submodules
克隆。
关于
TeXpresso在支持的编辑器中编辑LaTeX文档时提供"实时渲染"体验:在.tex文件中进行更改,渲染窗口几乎立即更新您的更改。如果输入无效内容,您会立即收到错误消息。
与常规的重新构建并等待查看器更新的体验相比,这可以显著改善LaTeX编辑体验,尤其是对于大型文档。
请查看本文件末尾的屏幕录像,直观了解TeXpresso的功能。
安装
TeXpresso已在Linux和macOS上测试,应该适用于AMD64和Apple Silicon架构。有关依赖项和构建说明,请参阅INSTALL.md。
设计
TeXpresso系统由以下部分组成:
-
将LaTeX文档渲染为PDF的TeX引擎; 我们使用经过修改的Tectonic引擎,修改后可与TeXpresso驱动程序交互。
这位于tectonic/ git子模块中,它生成
texpresso-tonic
辅助二进制文件 -
将PDF文档渲染为图像的PDF渲染器。 我们使用MuPDF。
-
驱动程序与编辑器通信以获取LaTeX文档的更改通知,维护文档和渲染过程的增量视图(支持增量性、回滚、错误恢复等),与LaTeX引擎通信以重新渲染文档的修改部分,并与查看器同步。
驱动程序是"实时"魔法所在。它是
texpresso
二进制文件,其源代码位于此仓库中。
驱动程序在编辑器和渲染器之间双向发送信息。特别是,可以通过点击查看器窗口要求编辑器跳转到LaTeX文档中的特定位置,反之亦然,可以刷新查看器窗口以显示编辑器位置的文档。
查看器控制
键盘控制:
←
,→
:翻页↑
,↓
:在页面内移动p
("page"):在"适合页面"和"适合宽度"缩放模式之间切换c
("crop"):裁剪边框q
("quit"):退出i
("invert"):暗模式I
:切换主题t
("top"):切换置顶(保持TeXpresso在编辑器窗口之上)b
("border"):切换窗口边框F5
:开始全屏演示(按ESC
退出)
鼠标控制:
- 点击:在窗口中选择文本(待实现:使用SyncTeX移动Emacs缓冲区)
- Control+点击:平移页面
- 滚轮:滚动页面
- Control+滚轮:缩放
支持的编辑器
Emacs
TeXpresso附带Emacs模式。源代码可在emacs/texpresso.el中找到。在Emacs中加载此文件(使用M-X load-file
;它也兼容require
)。
使用M-x texpresso
启动TeXpresso。提示将让您选择主/根TeX文件。
它将尝试启动texpresso
命令。如果无法启动,它将打开
(customize-variable 'texpresso-binary)
让您设置texpresso
二进制文件的路径(<您克隆仓库的位置>/build/texpresso
)。
为了正确工作,texpresso
需要texpresso-tonic
辅助程序;复制时,请确保它们都在同一目录中。
M-x texpresso-display-output
将打开一个小窗口,列出当前页面的TeX警告和错误。
使用M-x texpresso-next-page
和M-x texpresso-previous-page
在不离开Emacs的情况下在页面之间移动。
Neovim
Neovim模式在单独的仓库texpresso.vim中提供。它尚不兼容原版Vim,欢迎贡献补丁 :bow:。
Visual Studio Code
vscode模式正在texpresso-vscode中开发,感谢@DominikPeters。 在市场中查找TeXpresso。
屏幕录像
Neovim集成。 在vim中启动TeXpresso:
https://github.com/let-def/texpresso.vim/assets/1048096/b6a1966a-52ca-4e2e-bf33-e83b6af851d8
编辑时实时更新:
https://github.com/let-def/texpresso.vim/assets/1048096/cfdff380-992f-4732-a1fa-f05584930610
使用Quickfix窗口交互式修复错误和警告:
https://github.com/let-def/texpresso.vim/assets/1048096/e07221a9-85b1-44f3-a904-b4f7d6bcdb9b
从文档到编辑器的同步(SyncTeX向后):
https://github.com/let-def/texpresso.vim/assets/1048096/f69b1508-a069-4003-9578-662d9e790ff9
从编辑器到文档的同步(SyncTeX向前):
https://github.com/let-def/texpresso.vim/assets/1048096/78560d20-391e-490e-ad76-c8cce1004ce5
主题,明/暗模式:😎
https://github.com/let-def/texpresso.vim/assets/1048096/a072181b-82d3-42df-9683-7285ed1b32fc
Emacs集成。 这是我在TeXpresso中编辑和浏览@fabiensanglard的Game Engine Black Book: Doom的示例录像(使用我的emacs主题):
https://user-images.githubusercontent.com/1048096/235424858-a5a2900b-fb48-40b7-a167-d0b71af39034.mp4