似乎有一个已知不兼容性使用 时,在biblatex
和之间。我有一个大文件。我想在文档中将参考资料分组到不同的类别中。当使用数字标签时,这需要获得连续的编号。tex4ht
defernumbers=true
.bib
defernumbers=true
一切工作正常,除了htlatex
此选项因以下错误而阻塞:
! LaTeX Error: Missing \begin{document} in `'.
强制继续运行以下示例,我获得了一个可用的 .html,但span
在开头有一个错误的标签:
<span
class="cmr-10">01 12</span>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
此示例说明了该问题:
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{sample.bib}
@article{Smith42,
AUTHOR = {Smith},
TITLE = {Some Title},
JOURNAL = {Some Journal},
YEAR = {1942},
}
@article{Aronson12,
AUTHOR = {Aronson},
TITLE = {Some Title},
JOURNAL = {Some Journal},
YEAR = {1912},
}
\end{filecontents}
\usepackage[style=numeric,defernumbers=true]{biblatex}
% The following instead of the previous line works with tex4ht, but the numbering is not as desired.
%\usepackage[style=numeric]{biblatex}
\bibliography{sample.bib}
\DeclareBibliographyCategory{group1}
\DeclareBibliographyCategory{group2}
\addtocategory{group1}{Smith42}
\addtocategory{group2}{Aronson12,Smith42}
\begin{document}
\nocite{*}
\printbibliography[category=group1]
\printbibliography[category=group2]
\end{document}
请注意,如果没有选项,则不会发生此问题defernumbers=true
。我使用的是最新版 TL 2011 发行版,即biblatex.sty
2011/11/13 19:09:07 和biblatex.4ht
2011-09-18-16:07 的 1.7 版。
有没有一种不需要编辑文件的解决方法.bib
?
答案1
我不确定这是否能帮助解决上述问题 - 但我会尝试记下我的调试步骤。我使用自定义书目排序biblatex
,然后需要biber
- 并且,PDF 中一切正常 - 当我想使用htlatex
、biber
、构建它时htlatex
- 我得到了上述错误(仅当.aux
文件存在时)。
因此我首先得到的是类似这样的信息:
! LaTeX Error: Missing \begin{document} in `'.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.29 ...backref{1}{myfirstcite}{0}{4}{4}
我grep
通过文件搜索找到了这个...... backref{1}{myfirstcite}
- 结果发现它在.aux
文件中;该行周围的内容如下:
...
\select@language{american}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\select@language{american}}
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\select@language{american}}
\@writefile{lot}{\defcounter {refsection}{0}\relax }\@writefile{lot}{\select@language{american}}
\abx@aux@backref{1}{myfirstcite}{0}{4}{4}
\abx@aux@page{1}{4}
...
所以我回去,htlatex
再次运行 - 现在当它因错误而停止时,我I
在 shell 中按下“ ”进行插入,然后只需输入\show
(ENTER可能ENTER两次) - 这会吐出一条额外的错误消息:
?
! Extra }, or forgotten \endgroup.
\abx@aux@backref ...{#2}}{#4}}\blx@addpagesum {#1}
{#5}
l.29 ...backref{1}{myfirstcite}{0}{4}{4}
好的,现在我很确定tex4ht
不喜欢\abx@aux@backref
。
因此,我首先搜索宏\abx@aux@page
- 结果发现它存在于biblatex.4ht
文件中(来自tex4ht
);片段如下:
%biblatex.4ht
%
% ...
\def\abx@aux@page#1#2{\blx@addpagesum{#1}{#2}}%
\def\abx@aux@fnpage#1#2{\blx@addpagesum{#1}{#2}}}
% ...
...但它也出现在biblatex.sty
(来自biblatex
)中。
然后我搜索\abx@aux@backref
- 并且,正如怀疑的那样 - 这个是在中定义的biblatex.sty
,但是不是;biblatex.4ht
这可能是它崩溃的原因。
现在,\abx@aux@backref
包含一个@
,这意味着我必须在\makeatletter
/之间定义它 - 在和都加载\makeatother
之后的前言部分。然而,在类似情况下,我经常这样做- 但是,这在这里不起作用,因为原始命令总是有五个参数。biblatex
tex4ht
\let\abx@aux@backref\relax
因此,经过另一次搜索后biblatex.sty
,我发现:“ \protected\def\blx@aux@backref#1#2#3#4#5{...
”——尽管这不是同一个命令,但肯定与某些东西相关@aux@backref
……所以,最后我把它放在了我的序言中:
\makeatletter
\def\abx@aux@backref#1#2#3#4#5{}
\makeatother
...现在htlatex
,,biber
组合htlatex
对我来说似乎可以通过了?!
好吧,我不确定我对这一切的看法有多正确 - 但肯定希望它能有所帮助,
干杯!
答案2
您使用的 biblatex.4ht 与 biblatex 1.7 不兼容。您可以使用http://von-wachter.de/dateien/for-biblatex-1-6/biblatex.4ht和http://sourceforge.net/projects/biblatex/files/biblatex-1.6/。