超链接在编译后的 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>