LyX

LyX 是 Matthias Ettrich 于 1995 年作为大学课题开始写的文档处理器。它最初叫 Lyrix,因与 Santa Cruz Operation 的一款字处理软件重名而改名为 LyX。更有意思的是后来的事:他的主要平台是 Linux,为了让 LyX 的界面像样一点而四处寻找工具,最终在 1996 年创立了 KDE——Linux 的一大旗舰桌面环境,起因竟是有人想让一个 LaTeX 前端好看些。本页要讲的是:LyX 不是 LaTeX 编辑器,而是在底层驱动 LaTeX 的文档处理器,这句话意味着什么;.lyx 这个自有格式里究竟装了什么;原始 LaTeX 如何通过 TeX 代码(ERT)进来;以及它对谁才真正值得学。

LyX 是什么——不是 LaTeX 编辑器,而是文档处理器

LyX 自己完全不排版。你在屏幕上把文档搭起来,到了要出成品的时候,它去调用 你另行安装的 TeX 发行版 来生成 PDF。因此它和 TeXstudio、VS Code 那类「用来写 LaTeX 的编辑器」不是同一个门类;LyX 是从字处理软件那一侧伸手够向 LaTeX 的工具。它也不属于 TeX Live——本机 TeX Live 2024 的 bin 目录里既没有 lyx 也没有 tex2lyx。所以安装顺序是 先装 TeX 发行版(TeX Live、MiKTeX、MacTeX),后装 LyX。顺序反了,安装程序就会告诉你:找不到 LaTeX,无法生成输出。

它以 GPL 授权,可在 Windows、macOS、Linux 上运行;2.5 系列于 2026 年 2 月发布,此后陆续有维护版本。它支持的语言很多,除日语外还能处理阿拉伯语、希伯来语这类从右往左书写的文字。口碑最好的功能是 公式编辑器:用面板和键盘把分数、矩阵、求和这些结构一层层叠起来,做出来的公式质量就是 LaTeX 本身的质量。换句话说,LyX 卖的只有一件事——不学 LaTeX 的记法也能得到 LaTeX 的输出——而你对这个程序的评价,几乎完全取决于这一件事对你值多少钱。

WYSIWYM——「所见即所指」的设计

WYSIWYM 是 What You See Is What You Mean 的首字母缩写,是对字处理软件口号 WYSIWYG(What You See Is What You Get)的一次改写,而 LyX 是第一个打出这面旗帜的文档处理器。区别全在最后一个词上。在 WYSIWYG 里你直接摆弄 外观——12 磅、加粗、居中;在原始 LaTeX 里你 手写命令——\section{...}。LyX 两者都不是:你在一个段落上 以可视方式贴一个角色——这是节标题、这是脚注、这是定理——字号和前后间距则交给类文件。所以空格键敲多少下字距都不会变宽:间距由含义决定,而不是由你按了几次键决定。

流派你亲手动的东西屏幕上看到的
WYSIWYG外观本身(字体、字距、缩进)接近最终形态,但不留下结构
LyX角色(标题、定理、公式结构)最终页面的近似;角色以样式呈现
LaTeX命令本身(手写标记)只有文本;不编译就看不到结果

.lyx 文件里面装了什么,以及 lyx2lyx 这道关卡

LyX 保存的不是 .tex,而是它自有的 .lyx 格式。它不是二进制:内容是人可读的、面向行的纯文本,开头一行写明是哪个版本的 LyX 生成的,接着是一个整数 \lyxformat、诸如 \textclass article 的类声明,然后是嵌套在 \begin_header\begin_body\begin_layout 里的正文。它并不是一串 LaTeX 命令,所以你没法把 .lyx 直接交给 TeX 引擎去排。

这个 \lyxformat 整数在实际使用中的影响不容小觑。每当格式变化,LyX 就把这个号码往上加;打开旧文档时,它会通过一个叫 lyx2lyx 的 Python 转换器把文档提升到当前格式(也可以反向降到旧格式)。所以 0.10 时代的文档至今仍打得开。反过来说,新版 LyX 保存的文件会被旧版拒绝:「file is from a newer version of LyX and the lyx2lyx script failed to convert it」这条错误,正是合作者版本不一致时冒出来的。既然是文本,.lyx 当然可以放进 Git,但行会因为图形界面上的操作而移动,差异读起来吃力,作为协作接口不如 .tex 坦白。

菜单里没有的,就用 TeX 代码(ERT)绕过去

凡是 LyX 没有对应界面的东西,都通过 Insert ▸ TeX Code 以原始 LaTeX 的形式塞进去。这块区域被称作 ERT,是 Evil Red Text(邪恶的红色文字)的缩写——这个绰号来自早年 LyX 把原始 LaTeX 显示成红色。LyX 官网至今还留着一篇 2000 年 3 月的短文「A Brief History of ERT」,记下了这个名字的由来,以及把原始 LaTeX 藏进可折叠 inset 的想法从何而来。一个玩笑绰号被扶正为官方术语,这是少见的例子。

latex
% Typical ERT: things LyX has no dialog for.
\setlength{\parindent}{0pt}
\renewcommand{\thefootnote}{\fnsymbol{footnote}}
\textcolor{red}{\rule{\linewidth}{0.4pt}}

除了 ERT,还有第二道门:Document ▸ Settings ▸ LaTeX Preamble,可以把整段原始导言区粘进去。岔路正在这里。如果你必须使用会议或出版社给的 .cls,那么只有当存在与之对应的 布局文件.layout)时,LyX 才能把该类的环境作为「角色」放进菜单。有的话用起来舒服;没有的话,类里的自定义环境统统要写成 ERT,屏幕会越来越红,WYSIWYM 的好处随之蒸发。LyX 适不适合某个项目,很多时候就取决于你必须使用的那个类有没有布局文件。

导出为 .tex,以及用 tex2lyx 反向导入

到了出成品的时候,LyX 会在幕后把 .lyx 转成 LaTeX 再排版。引擎可在 LaTeX(经 DVI)、pdfLaTeX、XeTeX、LuaTeX 中选择;File ▸ Export ▸ PDF 给你 PDF,File ▸ Export ▸ LaTeX 给你 .tex。同一个菜单里还有 XHTML、DocBook、EPUB 和纯文本。LyX 把「LaTeX 透明性」当作卖点:它不隐藏自己生成的 LaTeX,把导出的 .tex 拿到别的编辑器里收尾,是官方认可的路线,而不是取巧。

不过,最好把这条路当成 单行道。反方向——把已有的 .tex 拉进 LyX——要用 tex2lyx,但复杂的宏和 LyX 不认识的宏包不会被解释:它们要么整块作为 ERT 进来,要么需要手工修补。实际后果是:如果你先导出、手工改了 .tex、再导回去,改动会以红色块的形式回来,LyX 从未在结构上理解它们。往返(round-trip)是行不通的。若用 LyX,就在 LyX 里收尾;一旦导出了 .tex,此后就在 .tex 的世界里生活。 一开始就把方向定下来,截稿前才不会手忙脚乱。

用于日语时需要的设置

日语是能用的,但默认设置不够,需要做几处配置。基本做法是:在 Document ▸ Settings 里选一个面向日语的 文档类(比如 jsarticle),并把输出引擎调成与该类相配的。字符编码方面有一族 面向 pLaTeX 的日语编码,例如 utf8-platex;走 CJK 宏包的路线和走 japanese 宏包的路线,在与 inputenc 的相处上并不相同,所以关键是让组合保持一致。拿不准时,可靠的来源是日本社区 TeX Wiki 上的 LyX 配置页面,那里按操作系统整理了步骤。

说到底,要出日语 PDF,底层跑的仍然是 pLaTeX 系或 LuaLaTeX 系,所以手写 LaTeX 时的种种情况会原封不动地带过来。多出一层界面的代价是:一旦出问题,更难看清是哪一层坏了。若打算用它写日语,建议先试着做一章,并且 把 PDF 和 .tex 都导出来 检查一遍。

学 LyX 的用法,对谁才真正划算

老实说,学 LyX 用法真正划算的,是 要写有结构的长文档、又不打算学 LaTeX 记法的人。博士论文、技术文档、章节格式固定的报告——凡是标题、定理、图表、交叉引用反复出现的地方,「贴上角色,版式随之而定」这套机制就用得干净利落。数学公式极多、宁愿用面板而不是记法来搭建的人,也适合。反过来说:想自己决定排版每一处细节的人、想原样编辑已有原始 LaTeX 资产的人、大量依赖新宏包细微功能的人,迟早会掉进一片 ERT 的海里。

  • 适合: 想要有结构的文档又不写标记;想用点击和打字来搭公式;想架一座从字处理到 LaTeX 品质的桥;你必须使用的那个类已有布局文件。
  • 不适合: 想完全掌控排版;想原样编辑和复用已有的原始 LaTeX 资产;大量依赖新宏包的细微功能;合作者直接编辑 .tex
  • 协作之前先定下来: 是让 LyX 把文档带到底,还是中途导出 .tex 转入普通的 LaTeX 项目?若是后者,先把导出的 .tex 手工编译一次,确认类、宏包和日文引擎在投稿方那边都可用。

初次上手的话,稳妥的路子是先做出 一章的形状,而不是一份完成稿。选定文档类,放一个标题、一节、一些正文、一个公式、一个图或表,导出 PDF,最后再导出 LaTeX 读一读。在这个练习的某一刻,「LyX 能以角色表达的」与「必须逃进 ERT 的」之间的界线就会显形。在动笔之前先知道界线在哪里,才不至于在后期真正要敲定排版细节时手忙脚乱。