# Hyperlinks for blank section titles in html file compiled with make4ht

The hyperlinks work in compiled pdf file for the following tex document. The section names are blank. However when it is compiled to html using make4ht, the hyperlinks won't work. So there is problem with hyperref and make4ht when section titles are blank.

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


How can this be solved?

• What is the use case for this? The link to sections is realized through their title, so you need to provide something, at least non-breakable space (~). – michal.h21 Sep 16 '18 at 11:56
• I just want that link gets opened when one clicks on section number. In other words, section numbers are titles of sections. This works in pdf but not in html. Is there any way around? Is it possible to hyperlink section to its section number? – user61681 Sep 16 '18 at 12:03

It seems that the configuration for TOC links is quite hard-wired, so it will be easiest to post-process the HTML using make4ht build file. The following code uses the luaxml-domobject library to process the HTML using DOM functions:

local domfilter = require "make4ht-domfilter"

local process = domfilter {function(dom)
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 = {}
end
end
end
end
return dom
end}

Make:match("html\$", process)


This is the result:

<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>

• Would you please help for how to use this? – user61681 Sep 16 '18 at 13:29
• @user61681 Save the build file as mybuild.mk4 and call make4ht -e mybuild.mk4 filename.tex – michal.h21 Sep 16 '18 at 15:14
• Thanks for the help. Is it possible to use two mk4 files? Something like this make4ht -e mybuild.mk4 mybuild2.mk4 filename.tex – user61681 Sep 17 '18 at 2:21
• @user61681two build files are not possible. but you can use the .make4ht config file, where you can define custom commands or filters, for example. see page 15 of the documentation – michal.h21 Sep 17 '18 at 6:04