Hacker News 中文摘要

RSS订阅

Show HN: TeXbrain —— 一款通过WASM在浏览器中运行pdfTeX的LaTeX编辑器 -- Show HN: TeXbrain, a LaTeX editor that runs pdfTeX in the browser via WASM

TeXbrain是一个免费开源的浏览器端LaTeX编辑器,无需账户、安装或服务器,支持本地编译PDF、Git同步和GitHub推送,解决了付费墙和跨设备配置问题。

正文

好的,这是根据您的要求,对原文进行中文重述和精简后的版本:

TeXbrain:一款完全在浏览器中运行的免费、开源 LaTeX 编辑器。

核心理念: 无需注册、无需安装、无需服务器。打开浏览器标签页即可开始写作。

开发动机: 作者因厌倦为本该免费的功能付费而创建了它。在撰写论文时,他发现在线解决方案将Git同步功能设为付费,而本地环境在不同机器间又容易出问题。他想要一个“开箱即用”的工具:打开浏览器,写LaTeX,就能得到PDF。

核心功能:

  • 浏览器内编译: 使用WebAssembly版本的pdfTeX引擎,直接在浏览器中将.tex文件编译为PDF,无需后端服务器。所有文件处理都在本地完成。
  • 按需加载宏包: 常用宏包随应用内置,其他宏包(如memoir、abntex2、KOMA-Script等)在首次使用时自动从TeX Live镜像下载并缓存,后续可离线使用。首次编译后,重新编译仅需1-5秒。
  • 实时PDF预览: 使用pdf.js渲染,支持多页面、缩放和文本选择。
  • 完整Git集成: 支持克隆仓库、创建分支、暂存文件、提交、推送、拉取和合并。所有操作通过浏览器内的isomorphic-git库实现,无需命令行。
  • 本地文件系统访问: 在Chrome/Edge浏览器中,可使用文件系统访问API直接读写磁盘上的项目文件夹。
  • 多文件项目管理: 支持文件树、标签页、拖放操作,兼容.tex、.bib、.sty、.cls等文件类型。
  • 强大的编辑器: 基于CodeMirror 6,提供语法高亮、70多个LaTeX命令的自动补全、括号匹配、代码折叠、代码片段、暗/亮主题等功能。
  • 离线可用: 应用加载后,无需网络连接即可进行编辑和编译。已使用的宏包会被缓存,仅首次使用新宏包时需要网络。
  • 项目模板: 提供文章、论文、演示文稿、报告、简历、信件等多种模板。

技术原理:

  • 编辑器: 基于CodeMirror 6,使用自定义的LaTeX语法解析器、自动补全和主题系统。通过标签页管理多个文件,并与本地文件系统和内存中的Git工作树同步内容。
  • 编译器: 使用编译为WebAssembly的pdfTeX引擎。编译在内存文件系统中进行,当引擎请求文件时,服务工作者会按顺序从缓存、应用内置宏包子集或TeX Live镜像中获取,并将结果存入浏览器缓存。
  • Git: 所有操作由纯JavaScript实现的isomorphic-git库完成。仓库位于由IndexedDB支持的内存文件系统中。远程操作通过CORS代理进行。
  • PDF查看器: 使用Mozilla的pdf.js库进行渲染,支持文本选择和搜索。
  • 文件系统: 优先使用文件系统访问API(需要Chromium内核浏览器),其他浏览器则回退到源私有文件系统。
  • 前端: 使用SvelteKit(静态适配器)构建,部署为静态HTML/CSS/JS,无服务器端渲染或API路由。

已知限制:

  • 仅支持pdfTeX,不支持XeTeX或LuaTeX,因此fontspec、polyglossia等宏包无法使用。
  • 不支持bibtex或biber。使用biblatex的文档会从.bib文件生成简单的thebibliography环境,但会忽略引文样式。经典bibtex工作流需要在项目中包含.bbl文件。
  • 宏包版本锁定在TeX Live 2020时代。
  • Git远程操作需要CORS代理。
  • 直接访问文件夹功能仅限Chromium内核浏览器。

安全与隐私:

  • 所有操作均在浏览器内完成,文件不会离开您的机器,除非您主动推送到远程仓库。
  • 无遥测、无分析、无追踪、无账户、无Cookie、无数据收集。
  • Git认证令牌存储在浏览器的localStorage中,不会发送到作者控制的服务器。
  • LaTeX编译在WebAssembly沙箱中运行,不执行任何shell命令。
  • Git操作使用JavaScript库,不存在命令注入风险。
  • 未内置的宏包从公共TeX Live镜像按需获取,仅发送文件名,不发送文档内容。

技术栈: Svelte 5 + SvelteKit、CodeMirror 6、pdfTeX (WebAssembly)、isomorphic-git + LightningFS、pdf.js、Tailwind CSS 4、TypeScript。部署于GitHub Pages。

浏览器支持: 完整功能(本地文件系统访问)需要Chromium内核浏览器(Chrome, Edge, Arc, Brave, Opera)。Firefox和Safari可使用虚拟文件系统回退方案,但无法直接读写本地文件夹。

许可: MIT

作者: Braian Plaku

评论

根据评论内容,总结如下:

主要观点与论据:

  1. 积极评价(高认可度)

    • 用户赞赏项目使用WASM技术,认为“super cool”(评论2),并称赞“Well done!”(评论1)。
    • 评论9指出项目“非常有趣”,能直接上传.tex文件生成PDF预览,且按需加载依赖的设计优于本地安装(“下载一堆不需要的依赖”)。
  2. 兼容性问题(中等认可度)

    • 评论3反映Firefox/Safari无法正常使用,点击“New Project”后提示需使用Chrome/Edge,质疑“fallback”机制未生效。
    • 评论4报告编译错误:旧文档出现“Bad metric (TFM) file”和“TeX capacity exceeded”错误,且错误定位不清晰(“line 13017”来自包文件)。
  3. 功能询问与建议(低认可度)

    • 评论5询问是否支持TikZ。
    • 评论6对比Typst,表示“从未真正掌握LaTeX但喜欢Typst”。
    • 评论7指出类似项目“latexy.web.app”。
    • 评论8(TeX Live团队成员)询问为何基于2020版,并邀请贡献者将WASM加入官方支持平台。

平衡性总结:
项目获得技术认可(WASM应用、按需加载),但存在浏览器兼容性缺陷(Firefox/Safari)和编译错误(旧文档、包依赖问题)。部分用户提出功能扩展需求(TikZ)和替代方案(Typst、latexy)。