如果我使用 tex4ht 编译 latex 文档(在 Tex Live 2016 / Windows 10 下)
htlatex "my_doc.tex" "xhtml,charset=utf-8,fn-in" " -cunihtf -utf8"
LaTeX 源代码中的撇号字符(U+2019 (') 或 U+0027 ('))在 HTML 源代码中呈现为 ,而’
不仅仅是’
。
是否有可能修复此问题,也许通过自定义配置?
提前致谢。
答案1
tex4ht
使用特殊文件unicode.4hf
,将转换后的文档中的某些字符转换为其他字符或实体。否则,当您使用选项时,XML
它们将写为字符。utf8
-utf8
tex4ht
-c
此文件由命令选项请求tex4ht
,在您的情况下是unihtf
。发行版中有多个版本unicode.4hf
,它们的位置在文件中配置tex4ht.env
:
<unihtf>
i~/tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/!
i~/tex4ht.dir/texmf/tex4ht/ht-fonts/ascii/!
i~/tex4ht.dir/texmf/tex4ht/ht-fonts/alias/!
</unihtf>
第一个找到的文件会被使用。你可以在命令行输出中找到哪一个:
tex4ht.c (2012-07-25-19:36 kpathsea)
tex4ht -utf8
-cunihtf
sample.dvi
(/usr/local/texlive/2016/texmf-dist/tex4ht/base/unix/tex4ht.env)
(/usr/local/texlive/2016/texmf-dist/tex4ht/ht-fonts/unicode/html/charset/unicode.4hf)
当你打开此文件时,你可以在开头看到:
'<' '' '<' ''
'>' '' '>' ''
'"' '' '"' ''
'’' '' '’' ''
'&' '' '&' ''
要查找的字符位于第一个字段中,并且必须是数字实体的形式xml
。输出字符位于第三个字段中,它可以是任何字符串,在这种情况下,它与源中的实体相同。
因此,要在文档中输出撇号,请将 复制unicode.4hf
到文档的目录中,然后删除该行
'’' '' '’' ''
示例输出:
<!--l. 7--><p class="noindent" >hello’ world’
</p>