更改为 \usepackage{fontspec} 后,make4ht 不会在 lualatex 模式下编译我的 Latex 文件

更改为 \usepackage{fontspec} 后,make4ht 不会在 lualatex 模式下编译我的 Latex 文件

Latex 专家建议我使用\usepackage{fontspec}Lualatex。它与 lualatex 配合使用没问题,但现在我改用 后,我的文件无法再使用 make4ht 进行编译 \usepackage{fontspec}。以前我使用

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc} 

但是现在我只\usepackage{fontspec}按照建议的方式去做。所以我不知道为什么 make4ht 在 lualatex 模式下编译时会报错:

\documentclass[11pt]{article}% 

\IfFileExists{luatex85.sty}{\usepackage{luatex85}}{}
\usepackage{fontspec}

\begin{document}
test
\end{document}

错误

>make4ht --lua  foo7_1.tex
Output dir:     
Compiler:   dvilualatex
Latex options:   -jobname=foo7_1 
tex4ht.sty :    xhtml,
tex4ht  
build_file  foo7_1.mk4
Cannot open config file foo7_1.mk4
setting param correct_exit
setting param correct_exit
setting param correct_exit
setting param ext
Adding:     ext dvi
LaTeX call: dvilualatex  -jobname=foo7_1  '\makeatletter\def\HCode{\futurelet\HCode\HChar}\def\HChar{\ifx"\HCode\def\HCode"##1"{\Link##1}\expandafter\HCode\else\expandafter\Link\fi}\def\Link#1.a.b.c.{\g@addto@macro\@documentclasshook{\RequirePackage[#1,html]{tex4ht}}\let\HCode\documentstyle\def\documentstyle{\let\documentstyle\HCode\expandafter\def\csname tex4ht\endcsname{#1,html}\def\HCode####1{\documentstyle[tex4ht,}\@ifnextchar[{\HCode}{\documentstyle[tex4ht]}}}\makeatother\HCode xhtml,.a.b.c.\input foo7_1'
This is LuaTeX, Version 0.95.0 (TeX Live 2016) 
 restricted system commands enabled.
LaTeX2e <2016/03/31> patch level 1
Babel <3.9r> and hyphenation patterns for 1 language(s) loaded.
(./foo7_1.tex (/usr/local/texlive/2016/texmf-dist/tex/latex/base/article.cls
Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
(/usr/local/texlive/2016/texmf-dist/tex/latex/base/size11.clo))
(/usr/local/texlive/2016/texmf-dist/tex/generic/tex4ht/tex4ht.sty)
(/usr/local/texlive/2016/texmf-dist/tex/generic/tex4ht/usepackage.4ht)
(/usr/local/texlive/2016/texmf-dist/tex/generic/luatex85/luatex85.sty)
(/usr/local/texlive/2016/texmf-dist/tex/latex/fontspec/fontspec.sty
 .
 .
(/usr/local/texlive/2016/texmf-dist/tex/generic/tex4ht/html4-math.4ht))
(./foo7_1.aux) (/usr/local/texlive/2016/texmf-dist/tex/latex/tipa/t3cmr.fd)

! LaTeX Error: Command `\acute' already defined in `'.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.6 \begin{document}

? 

当我尝试建议时fontspec-package-accents-bezos-latex-error-command-acute-already

\documentclass[11pt]{article}% 

\IfFileExists{luatex85.sty}{\usepackage{luatex85}}{}
\usepackage[no-math]{fontspec}
\usepackage{accents}    

\begin{document}
test
\end{document}

我收到新的错误

---------------------------------------------------
--- error --- Can't find/open file `file:lmroman10-regular:script=latn;+trep;+tlig;.tfm'
Make4ht: Fatal error. Command tex4ht returned exit code 256

但 lualatex 仍可编译成功。

只有当我回到

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc} 

现在 lualatex 和 make4ht 都很高兴。

我真的对所有这些包、字体和所有这些东西一无所知,我只是想知道什么是正确的使用方法,仅此而已,这样我就不会收到错误。

Linux 上的 TL 2016。我现在只使用 lualatex。不是 pdflatex。

答案1

编辑:

Fontspec 支持刚刚添加到 tex4ht,您可以在 TL 更新后获得它。XeLaTeX 和 LuaLaTeX 均受支持,尽管两个引擎的实现不同。

如果您使用非拉丁文字,则需要Script在字体声明中使用正确的选项,因为必须先声明文档中使用的所有 Unicode 字符。使用该Script选项时会自动完成此操作。

\documentclass{article}
\usepackage{fontspec}
% \setmainfont{TeX Gyre Termes}
\usepackage{polyglossia}
\setmainlanguage{czech}
\setotherlanguages{greek,russian,hindi}
\newfontfamily\greekfont{Linux Libertine O}[Script=Greek]
\newfontfamily\russianfont{Linux Libertine O}[Script=Cyrillic]
\newfontfamily\hindifont{Siddhanta}[Script=Devanagari]
\begin{document}
Příliš \textit{žluťoučký} kůň \textbf{úpěl} \textsc{ďábelské} ódy.

\begin{greek} 
  Η Πράγα (τσέχικα: Praha), είναι η πρωτεύουσα και μεγαλύτερη πόλη
  της Τσεχίας. Χτισμένη στον ποταμό Μολδάβα (Vltava), στην κεντρική Βοημία,
  έχει 1,2 εκατομμύριο κατοίκους. Αποκαλείται επίσης «η χρυσή πόλη» και «μητέρα
  των πόλεων». Από το 1992, το ιστορικό κέντρο της Πράγας ανήκει στον κατάλογο
  μνημείων παγκόσμιας κληρονομιάς της UNESCO.
\end{greek}

\begin{russian}
  Пра́га (чеш. Praha [ˈpraɦa]) — город и столица Чехии; административный центр
  Среднечешского края и двух его районов — Прага-Восток и Прага-Запад. Образует
  самостоятельную административную единицу страны.
\end{russian}

\begin{hindi}
प्राग युरोप के चेकोस्लोवाकिया देश की राजधानी है।
\end{hindi}


\end{document}

生成的 HTML 文档:

在此处输入图片描述


DVI[旧答案] 从到 的转换器HTML不支持 OpenType 字体,该字体在Fontspec加载包时会自动选择。这是一个众所周知的tex4ht错误,也是最难修复的错误。

有两种可能的解决方法,但不幸的是,它们都需要修改文档。

首先是使用条件luainputenc包:

\documentclass[11pt]{article}% 

\IfFileExists{luatex85.sty}{\usepackage{luatex85}}{}
\ifdefined\HCode
\usepackage[utf8]{luainputenc}
\usepackage[T1]{fontenc}
\else
\usepackage{fontspec}
\fi

\begin{document}
test

příliš žluťoučký kůň úpěl \textit{ďábelské ódy}

\end{document}

另一个选择是使用alternative4ht来自的包helpers4htbundle,包含fontspec以下特殊配置tex4ht

\documentclass[11pt]{article}% 

\IfFileExists{luatex85.sty}{\usepackage{luatex85}}{}
\usepackage{alternative4ht}
\altusepackage{fontspec}

\begin{document}
test

příliš žluťoučký kůň úpěl \textit{ďábelské ódy}

\end{document}

您可以在以下位置查看更多功能这个文件

相关内容