在 tex 文件中使用 \it, \bf 需要转换为和在 TeX4HT 中

在 tex 文件中使用 \it, \bf 需要转换为和在 TeX4HT 中

当我使用\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 文件。

make4httex4ebooks支持简单的构建文件,您可以使用各种过滤器处理文件。您可以运行外部命令,或者使用一些简单的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>

相关内容