将LaTeX文档发布到Hugo博客的方法

409 阅读3分钟

背景

在数学理论和其他技术领域,文章通常采用 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 工具的配置及使用

配置步骤

  1. 打开你的工程目录。

  2. 在主文件中增加如下配置:

    \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} % 调整边距
    

编译和转换

  1. 编译 tex 文件以生成中间文件:

    xelatex Category_Theory.tex
    
  2. 使用 lwarp 命令生成最终 HTML 文件:

    lwarpmk html1
    lwarpmk limages
    
  3. 将生成的所有文件放置于博客站点的 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…