现在我知道如何制作tex4ht 中的 \textminus但这似乎还不足以\num
使用宏显示适当的减号siunitx
。Joseph Wright 提供了一种解决方法,但我想知道如何在更通用的层面上实现这一目标。
\documentclass{scrartcl}
\usepackage{textcomp}
\pagestyle{empty}
\DeclareTextSymbolDefault\homegrowntextminus{TS1}
\DeclareTextSymbol\homegrowntextminus{TS1}{61}
\begin{document}
+5 \homegrowntextminus 5
\end{document}
有没有办法配置,以便在转换为 HTML 时tex4ht
打印正确的减号(如下面的输出所示)pdflatex
没有了解或修改\homegrowntextminus
?
GitHub MWE:https://github.com/krlmlr/lm-template/tree/tex4ht-own-textminus。
答案1
展示的内容tex4ht 中的 textminus可能适合进行小改动,但正确的过程有所不同。因为textcomp
基本上是字体选择包,所以现有的tex4ht
支持不是通过在textcomp.4ht
文件中重新定义宏来完成的,而是存在一个用于 使用的字体的特殊映射文件textcomp
。tcrm.htf
它位于texmf-dist/tex4ht/ht-fonts/unicode/jknappen/tc
目录中。您可以将此文件复制到您的工作目录并根据需要进行编辑。
.htf
处理器使用这些文件tex4ht
将文件中的字形转换dvi
为内部表示,然后使用.4hf
文件将其转换为实际字符。
文件结构.htf
描述如下tex4ht 帮助。我们需要\textminus
在此文件中找到的位置并更正提供的定义。它对应于字体编码中的位置。textcomp
包使用TS1
字体编码,它定义在ts1enc.def。如果我们搜索\textminus
,我们会找到以下行:
\DeclareTextSymbol{\textminus}{TS1}{61}
这意味着\textminus
在文件的第 61 位上定义tcrm.htf
:
'-' '' 61
如您所见,-
此处是硬编码的。我们可以将其修改为使用 unicode minus:
'−' '' 61
最好使用这种十六进制形式,因为.4hf
文件会使用它来转换为实际的字符。
如果您使用 now 编译文件htlatex textput
并观察tex4ht
命令的输出,您将看到以下行:
(/home/mint/texlive/2012/texmf-dist/tex4ht/ht-fonts/iso8859/1/charset/unicode.4hf
如果你在此文件中搜索x2212
,你将找到以下行:
'−' '' '-' ''
这意味着 unicode 减法被转换回-
。这就是为什么这只适用于 unicode 输出
htlatex texput "xhtml, charset=utf-8" " -cunihtf -utf8"
.4hf
现在使用不同的文件:
(/home/mint/texlive/2012/texmf-dist/tex4ht/ht-fonts/unicode/charset/unicode.4hf)
那里使用了不同的定义:
'−' '' '\226\\136\\146\' ''
这会将实体转换为unicode值。
现在回到这个问题,情况更简单,因为你已经在位置 61 添加了你自己的符号,原始符号\textminus
放在那里,我们已经重新定义了它。所以这也适用于\homegrowntextminus
。