TeX Gyre Schola 可以在 tex4ht lua 模式下用作文本字体吗?

TeX Gyre Schola 可以在 tex4ht lua 模式下用作文本字体吗?

我在这里尝试了第二和第三种解决方案错误使用 fourierenc 与 koma 脚本类 nobreakspace 在编码中不可用@egreg 提供,允许TeX Gyre Schola作为文本字体。最后两个仅在使用 tex4ht 时出现错误。

-- error --- Can't find/open file `TeXGyreSchola:mode=base;script=latn;language=DFLT;.tfm'

我的问题是:可以TeX Gyre Schola与 tex4ht 一起用作正文吗?

这是 MWE 和用于编译它的命令。它在 lualatex 中编译成功,但在 lua 模式下使用 tex4ht 编译失败。

\documentclass[chapterprefix=false]{scrbook}
\IfFileExists{luatex85.sty}{\usepackage{luatex85}}{}

%commenting this block makes no difference, but was told to use this
%with tex4ht always, in luamode
\ifdefined\HCode
    \usepackage[utf8]{luainputenc}
\fi 

%see https://tex.stackexchange.com/questions/329855/error-using-fourierenc-with-koma-script-class-nobreakspace-unavailable-in-encod
\usepackage{unicode-math}
\setmainfont{TeX Gyre Schola}[Scale=0.95]
\setmathfont{TeX Gyre Schola Math}[Scale=0.95]

\begin{document}    
\chapter{test}

test Münchener-Straße $a+b=\sum_{i=1}^n x_i\sin y$

\end{document}

现在 make4ht --lua -u foo.tex给出

.....
This is LuaTeX, Version 0.95.0 (TeX Live 2016) 
......
tex4ht.c (2012-07-25-19:36 kpathsea)
tex4ht -cmozhtf 
  -utf8 
  foo 
(/usr/local/texlive/2016/texmf-dist/tex4ht/base/unix/tex4ht.env)
(/usr/local/texlive/2016/texmf-dist/tex4ht/ht-fonts/mozilla/charset/unicode.4hf)
sh: 1: .tfm: not found
.....
----------------------------------------------------
--- error --- Can't find/open file `TeXGyreSchola:mode=base;script=latn;language=DFLT;.tfm'
Make4ht: Fatal error. Command tex4ht returned exit code 256

与链接答案中给出的第二种解决方案类似:

\documentclass[chapterprefix=false]{scrbook}
\IfFileExists{luatex85.sty}{\usepackage{luatex85}}{}

%commenting this block makes no difference
\ifdefined\HCode
    \usepackage[utf8]{luainputenc}
\fi 

%see https://tex.stackexchange.com/questions/329855/error-using-fourierenc-with-koma-script-class-nobreakspace-unavailable-in-encod
\usepackage{fouriernc}  % for math
\usepackage[no-math]{fontspec}
\setmainfont{TeX Gyre Schola}[Scale=0.95]

\begin{document}    
\chapter{test}

test Münchener-Straße $a+b=\sum_{i=1}^n x_i\sin y$

\end{document}

make4ht --lua -u foo.tex给出

ex4ht.c (2012-07-25-19:36 kpathsea)
tex4ht -cmozhtf 
  -utf8 
  foo1 
(/usr/local/texlive/2016/texmf-dist/tex4ht/base/unix/tex4ht.env)
(/usr/local/texlive/2016/texmf-dist/tex4ht/ht-fonts/mozilla/charset/unicode.4hf)
(/usr/local/texlive/2016/texmf-dist/fonts/tfm/public/fourier/fourier-mex.tfm)
--- warning --- Couldn't find font `fourier-mex.htf' (char codes: 33--232)

因此,现在我使用下面这个解决方案,在使用 tex4ht 编译时,它不用于Tex Gyretex,现在在lualatextex4ht

\documentclass[chapterprefix=false]{scrbook}
\IfFileExists{luatex85.sty}{\usepackage{luatex85}}{}

\usepackage{fouriernc}

\ifdefined\HCode 
  \usepackage[utf8]{luainputenc}
\else
  \usepackage[no-math]{fontspec}
  \setmainfont{TeX Gyre Schola}[Scale=0.95]
\fi

\begin{document}

\chapter{test}

test Münchener-Straße $a+b=\sum_{i=1}^n x_i\sin y$

\end{document}

答案1

michal.h21 对您之前两个问题的回答更改为 \usepackage{fontspec} 后,make4ht 不会在 lualatex 模式下编译我的 Latex 文件tex4ht 使用 mcode 包时会对一些 Matlab 代码进行打乱明确指出了问题:从 DVI 转换为 HTML 时,TeX4ht 无法处理 opentype 字体。

转换器 [原文如此] 从 DVI 到 HTML 不支持 OpenType 字体,该字体在加载 Fontspec 包时会自动选择。这是众所周知的 tex4ht 错误,也是最难修复的错误(这里)。

正如本文所述,这意味着您不能使用fontspec或,因此unicode-math。相反,您需要坚持使用传统的 TeX 字体和传统编码。

要做到这一点,你需要告诉 LuaTeX 如何管理它们。这就是

\usepackage{luainputenc}

做。

所有这些都不是说你不能使用 TeX Gyre Schola。但你不能使用 opentype 版本。由于它也支持作为传统 TeX 字体与 TFM 文件一起支持 PFB 文件,因此你可以在创建 DVI 时加载它。我不知道这是否会转化为 HTML 中有意义的东西。

luainputenc允许您使用这些字体。例如,

\usepackage[T1]{fontenc}
\usepackage{tgschola}

或其他。tgschola加载具有传统 TeX 支持的 TeX Gyre Schola。也就是说,它使用相关的 TFM 文件来创建 DVI。这些设计用于支持字体的 type1 PFB postscript 版本。

但是,正如我所说,我不知道这是否会对 HTML 文档的显示产生影响。这取决于从 DVI 到 HTML 的转换中对字体的处理。据我所知,加载tgschola对生成的 HTML 字体配置没有影响。但是,我对 HTML 了解不多,所以我可能弄错了。

相关内容