当我使用\it
并且\bf
在 tex 文件中需要配置为<italic>
并且<bold>
在 tex4ht 中,我已经配置好了\textbf
并且\textit
在我的cfg
文件中,我得到了预期的输出,但我还需要\it
配置\bf
。
我的 MWE:
\documentclass{book}
\begin{document}
{\it Chapter}
{\bf Text Chapter}
\textbf{Text Chapter} \textit{Text Chapter} Chapter TextChapter Text
\end{document}
我的cfg
:
\Preamble{xml,ext=xml}
\Configure{textit}{\HCode{<italic>}\NoFonts}{\EndNoFonts\HCode{</italic>}}
\Configure{textbf}{\HCode{<bold>}\NoFonts}{\EndNoFonts\HCode{</bold>}}
\begin{document}
\EndPreamble
我得到以下输出
<p class="noindent"><span class="cmti-10">Chapter</span></p>
<p class="indent"><span class="cmbx-10">Text Chapter</span></p>
<p class="indent"> <bold>Text Chapter</bold> <italic>Text Chapter</italic> Chapter TextChapter Text</p>
如何配置\it
和\bf
来获取<italic>
和<bold>
?
注意:当我使用NoFonts
选项时,\Preamble{}
输出<span class="cmti-10">
中会消失
答案1
当命令对 DVI 文件进行后处理时,会插入字体切换的标签tex4ht
。使用NoFonts
选项时,此后处理将被禁用,您将不会获得任何格式。将其更改为<span>
其他内容的唯一方法是处理生成的 HTML 或 XML 文件。
make4ht
并tex4ebooks
支持简单的构建文件,您可以使用各种过滤器处理文件。您可以运行外部命令,或者使用一些简单的Lua函数。
在这个简单的例子中,您只需使用简单的正则表达式即可根据您的意愿替换类。
保存以下文件 mybuild.mk4:
local filter = require "make4ht-filter"
local replaces = {
["cmti-10"] = "italic",
["cmbx-10"] = "bold"
}
local function patch_span(s)
return s:gsub('<span%s+class="([^"]+%-[0-9]+)">([^<]+)</span>', function(class, content)
local element = replaces[class]
if element then
return string.format("<%s>%s</%s>", element, content, element)
end
end)
end
local process = filter {patch_span}
Make:match("ml$", process)
并使用编译你的文件
make4ht -uc configfile.cfg -e mybuild.mk4 filename.tex
您可以使用以下代码配置将用于已配置类的元素
local replaces = {
["cmti-10"] = "italic",
["cmbx-10"] = "bold"
}
根据您的需要进行修改。
这是您的代码的结果:
<!--l. 4--><p class="noindent" ><italic>Chapter</italic>
</p><!--l. 6--><p class="indent" > <bold>Text Chapter</bold>
</p><!--l. 8--><p class="indent" > <bold>Text Chapter</bold> <italic>Text Chapter</italic> Chapter TextChapter Text </p>