如何在LaTeXML中指定字体?保留PDFLaTeX所用字体的方法
用LaTeXML保留PDFLaTeX字体(如Latin Modern)的实现方案
完全可以实现,而且不需要手动修改输出的HTML文件。以下是两种高效的解决方案:
一、自定义全局CSS(最简便)
LaTeXML会给不同样式的文本自动添加语义化类(比如斜体文本加.ltx_italic、粗体加.ltx_bold),你可以利用这些类批量绑定Latin Modern字体变体:
- 准备字体文件:把下载好的Latin Modern网页字体(woff/woff2格式)放到HTML输出目录的
fonts子文件夹中。 - 编写CSS文件(比如命名为
latmodern.css):
/* 定义所有Latin Modern Roman变体 */ @font-face { font-family: 'Latin Modern Roman'; src: url('fonts/lmroman10-regular.woff2') format('woff2'); font-weight: normal; font-style: normal; } @font-face { font-family: 'Latin Modern Roman'; src: url('fonts/lmroman10-italic.woff2') format('woff2'); font-weight: normal; font-style: italic; } @font-face { font-family: 'Latin Modern Roman'; src: url('fonts/lmroman10-bold.woff2') format('woff2'); font-weight: bold; font-style: normal; } @font-face { font-family: 'Latin Modern Roman'; src: url('fonts/lmroman10-bolditalic.woff2') format('woff2'); font-weight: bold; font-style: italic; } /* 全局应用基础字体 */ body { font-family: 'Latin Modern Roman', serif; } /* 匹配LaTeXML自动生成的样式类 */ .ltx_italic { font-style: italic; } .ltx_bold { font-weight: bold; } .ltx_bolditalic { font-weight: bold; font-style: italic; }
- 让LaTeXML自动加载CSS:
- 命令行直接指定:
latexml input.tex --css latmodern.css latexmlpost --dest output.html input.xml - 或者修改LaTeXML本地配置(比如
~/.latexml/local.cfg),添加AddCSS("latmodern.css");,以后每次转换都会自动加载该样式。
- 命令行直接指定:
二、进阶:LaTeXML绑定文件(精准控制)
如果需要对特定TeX命令或环境的字体做更精细的控制,可以编写LaTeXML绑定文件(.pm格式),定义TeX元素到HTML样式的映射。比如:
package LaTeXML::Package::Pool; use strict; use warnings; use LaTeXML::Package; # 给\textit命令绑定斜体样式 DefMacro('\textit{}', sub { my ($gullet, $content) = @_; return Invoke('Element', 'span', {class=>'ltx_italic'}, $content); }); # 全局设置字体族 SetFontFamily('serif', 'Latin Modern Roman'); 1;
将这个文件命名为latmodern.pm,转换时用--package latmodern.pm参数加载即可。
这样处理后,LaTeXML生成的HTML会自动应用Latin Modern字体的所有变体,无需手动修改元素样式。
内容的提问来源于stack exchange,提问作者LTolDe
相关产品推荐
相关产品推荐

