使用 make4ht 编译的 html 文件中空白部分标题的超链接

使用 make4ht 编译的 html 文件中空白部分标题的超链接

超链接在编译后的 pdf 文件中对以下 tex 文档有效。节名称为空白。但是,当使用 make4ht 将其编译为 html 时,超链接将不起作用。因此,当节标题为空白时,hyperref 和 make4ht 存在问题。

\documentclass{article}
\usepackage{hyperref}
\begin{document}
\tableofcontents
\section{}
\section{}
\section{}
\end{document}

如何解决?

答案1

看起来目录链接的配置相当固定,因此使用 make4ht 构建文件对 HTML 进行后处理是最简单的方法。以下代码使用该luaxml-domobject库通过 DOM 函数处理 HTML:

local domfilter = require "make4ht-domfilter"

local process = domfilter {function(dom)
  -- find the table of contents
  local toc = dom:query_selector("div.tableofcontents")[1]
  if toc then
    -- process all TOC lines
    for _, span in ipairs(toc:query_selector("span")) do
      -- get a full title
      local text = span:get_text()
      for  i, curr in ipairs(span._children) do
        -- remove the section numbers
        if curr:is_text() then 
          curr:remove_node()
        -- set a full title to the link
        elseif curr:is_element() then
          curr._children = {}
          curr:add_child_node(curr:create_text_node(text))
        end
      end
    end
  end
  return dom
end}

Make:match("html$", process)

结果如下:

在此处输入图片描述

<h3 class='likesectionHead'><a id='x1-1000'></a>Contents</h3>
   <div class='tableofcontents'>
   <span class='sectionToc'><a id='QQ2-1-2' href='#x1-20001'>1 </a></span>
<br />   <span class='sectionToc'><a id='QQ2-1-3' href='#x1-30002'>2 </a></span>
<br />   <span class='sectionToc'><a id='QQ2-1-4' href='#x1-40003'>3 </a></span>
   </div>

相关内容