这是这个问题。
样本.tex:
\documentclass[ebook,12pt,oneside,openany]{memoir}
\begin{filecontents}{test.bib}
@book{Hiemenz,
author={Hiemenz},
title={Polymer Chemistry}
}
\end{filecontents}
\usepackage{biblatex}
\bibliography{test}
\title{Book}
\author{Author}
\date{}
\begin{document}
\maketitle
\tableofcontents \newpage
\chapter{C1}
Here comes a quotation \cite{Hiemenz}.
\printbibliography
\end{document}
mybuild.mk4:复制代码
Make:add("biber","biber ${input}")
Make:htlatex {}
Make:biber {}
Make:htlatex {}
Make:htlatex {}
Make:htlatex {}
命令:
tex4ebook -e mybuild.mk4 sample.tex
这为目录中的参考书目提供了两个条目(见图)。
它曾经在 Texlive 2019 等早期版本中运行。
如何解决这个问题,谢谢。
更新:
使用@michal.h21 建议的配置文件仍然存在内容问题,因为内容中没有显示参考书目:
在 texlive 2019 上运行良好(没有配置文件):
更新 2:
以下是我使用新构建文件所获得的内容。
参考书目不见了。还有一个小错误 - 1 C1 在目录中显示为 1C1。
另外,据我所知,修复是否必须在构建文件中而不是 tex4ebook 源中。我认为如果用户不必向构建文件添加内容,那么对他来说会更容易。
再次感谢。
答案1
编辑:看来我原来的解决方案也从目录中删除了参考书目,这是不希望的
以下是使用make4ht
构建文件的替代方法:
local domfilter = require "make4ht-domfilter"
local filter = require "make4ht-filter"
-- process the NCX file, it contains bookmarks
local ncxprocess = domfilter {
function(dom)
for _, navpoint in ipairs(dom:query_selector("navPoint")) do
-- get section text, trim spaces and make it lowercase
local text = navpoint:query_selector("text")[1]:get_text():gsub("^%s*", ""):gsub("%s*$", ""):lower()
-- match bibliography
if text == "bibliography" then
-- remove first bibliography node
navpoint:remove_node()
-- and break processing. the second bibliography booksmark will be preserved
break
end
end
for _, el in ipairs(dom:query_selector("text")) do
local text = el:get_text()
-- replace element text with a new text node containing original text
el._children = {el:create_text_node(text)}
end
return dom
end
}
local ncxclean = filter {
function(s)
-- remove unvanted spaces at the start of the NCX file
local s=s:gsub("^%s*", ""):gsub("%s*$", "")
return s
end
}
Make:add("biber","biber ${input}")
-- use tex4ebook -m draft to speed up compilation, it is not necessary to execute biber and multiple LaTeX calls
-- every time you compile the document
if mode=="draft" then
Make:htlatex {}
else
Make:htlatex {}
Make:biber {}
Make:htlatex {}
Make:htlatex {}
Make:htlatex {}
end
-- the NCX file at this point is not valid XML, we need to clean it using Tidy first
-- Make:match("ncx$", "tidy -m -xml -utf8 -q -i ${filename}")
Make:match("ncx$", ncxclean)
-- remove bibliography
Make:match("ncx$", ncxprocess)
它使用 LuaXML DOM 处理方法找到第一个参考书目部分并将其从书签中删除。
TeX4ebook 将所有分段命令(包括带星号的版本)添加到书签中。Memoir 使用带星号的命令,但除此之外,它还会将参考书目添加到目录中。您可以使用此配置文件禁用附加目录条目:
\Preamble{xhtml}
\begin{document}
\nobibintoctrue
\EndPreamble
生成的书签: