背景
在数学理论和其他技术领域,文章通常采用 LaTeX 格式编写,并最终渲染为 PDF 格式以便于阅读。然而,当作者希望将这些文章发布为在线版本(例如发布到个人博客)时,遇到的问题是:在线版本要求最终格式为 HTML。这需要对原始 LaTeX 文档进行格式转换。
LaTeX 到 HTML 转换工具介绍
目前,可用于 LaTeX 到 HTML 转换的工具主要有以下几种:
Pandoc
Pandoc[1]是一个强大的文档转换工具,支持多种格式之间的相互转换。它的优点是操作简单,支持多种输入和输出格式。但在转换过程中,可能会丢失一些 LaTeX 文档中的样式和细节。
LaTeXML
LaTeXML[2] 是一个专门用于将 LaTeX 转换为 XML 和 HTML 的工具。它保留了较多的 LaTeX 特性,但配置较为复杂,转换结果需要进一步调整以确保样式的一致性。
lwarp
lwarp[3] 是一个 LaTeX 宏包,专门用于将 LaTeX 文档转换为高质量的 HTML 文件。lwarp 的特点是能够保留 LaTeX 文档的大部分样式和结构,生成的 HTML 文件与原始 LaTeX 文档非常接近。然而,lwarp 的配置和使用较为繁琐,需要用户具备一定的 LaTeX 和 HTML 知识。
如果对样式丢失不敏感,前两种工具可以满足基本需求。然而,如果希望 HTML 格式与原 LaTeX 文档的样式一致,lwarp 是唯一能够满足该要求的工具。尽管其配置较为复杂,但通过适当设置可以获得高质量的 HTML 输出。网络上相关经验贴不多,我只收集了一些文章:Fran Burstall[4]使用 lwarp 将其线性代数讲义放到了网上;João Faria Martins[5]结合 lwarp 和 XyJax-v3 完美画出了在线交换图;Matthew Towers[6]则比较了常用的转换工具,他的经验很有借鉴意义;本文将详细介绍如何使用 lwarp 进行 LaTeX 文档的转换,这是最终效果[7]。
lwarp 工具的配置及使用
配置步骤
-
打开你的工程目录。
-
在主文件中增加如下配置:
\usepackage{fontspec} % lwarp要求fontspec必须先加载 \usepackage{inputenc} % --- 加载LWARP --- \usepackage[ HomeHTMLFilename=Category_Theory-index, % 主页文件名 HTMLFilename={Category_Theory-section-}, % 其他页面的文件名前缀 mathjax, % 使用MathJax显示数学公式 ]{lwarp} \MathJaxFilename{lwarp-with-Xy-jax_v3.txt} % 若使用原版lwarp,请注释掉上述命令并使用以下命令: %\MathJaxFilename{lwarp_mathjax.txt} % 如果要自动修改CSS文件,请使用以下选项之一(或全部注释以使用默认选项): %\CSSFilename{lwarp.css} % 由lwarpmk自动创建 %\CSSFilename{lwarp_formal.css} % 由lwarpmk自动创建 %\CSSFilename{lwarp_sagebrush.css} % 由lwarpmk自动创建 \CSSFilename{my_file_split.css} % 无衬线选项 %\CSSFilename{my_file_stand-alone.css} % 调整边距
编译和转换
-
编译 tex 文件以生成中间文件:
xelatex Category_Theory.tex -
使用 lwarp 命令生成最终 HTML 文件:
lwarpmk html1 lwarpmk limages -
将生成的所有文件放置于博客站点的 static 目录下:
mv FunMathArticles static/
Hugo 博客发布
完成上述步骤后,将所有更改提交到远程仓库并执行自动构建,即可将 LaTeX 文档发布到 Hugo 博客上。
总结
为了将范畴论笔记成功发布到博客上,说实话本人耗费了挺多精力。国内外相关资料较少,因此遇到了许多问题,比如 LaTeX 中的一些宏定义块 icon 元素在最终渲染的 HTML 文档中无法显示。虽说最终结果不是 100%完美,但读者体验也不是很差,勉强过得去。
参考资料
[1] Pandoc: pandoc.org/
[2] LaTeXML: math.nist.gov/~BMiller/La…
[3] lwarp: ctan.org/pkg/lwarp
[4] LATEX to HTML with lwarp: people.bath.ac.uk/feb/lwarp/l…
[5] compiling xymatrix diagrams into HTML using Lwarp: joaofariamartins.github.io/Lwarp-JFM/S…
[6] Compiling LaTeX to HTML with lwarp: www.homepages.ucl.ac.uk/~ucahmto/el…
[7] 最终效果: arrowtuner.pages.dev/FunMathArti…