参考书目键中的冒号与 babel、biblatex 和 tex4ht 不兼容

参考书目键中的冒号与 babel、biblatex 和 tex4ht 不兼容

键的标签与author:year我的 BibTeX 文件中的一样。例如, 。此方案与、和@article{John:2000, author={John}, year={2000}, ...}配合良好。pdftexbiblatexmk4ht oolatex

但如果另外babel加载了french选项,则mk4ht oolatex找不到任何 BibTeX 键。

在下面的例子中,它寻找John:{}2000而不是John:2000

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french, american]{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=verbose]{biblatex}
\bibliography{sample.bib}

\usepackage{filecontents}
\begin{filecontents}{sample.bib}
@article{John:2000,
author={John},
title={Title},
journal={Journal},
year={2000}}
\end{filecontents}

\begin{document}
La première phrase \autocite [100] {John:2000}.
\end{document}

通过运行:

$ latex foo
$ biber foo
$ mk4ht oolatex foo

我收到此警告:

LaTeX Warning: Citation 'John:{}2000' on page 1 undefined on input line 19.

我的问题是:这是谁的错误:tex4htbabel?有什么想法可以在不更改我的 BibTeX 密钥的情况下避免它吗?

答案1

这是因为法语babel使冒号处于活动状态,它会在冒号前插入空格。您可以使用\shorthandoff{:}放置在文档开头的命令来切换此行为。当然,它会抑制在整个文档中自动在冒号前插入空格。

答案2

鉴于此事实,它可以编译我可以使用的所有 latex 命令,但不能编译 mk4ht,我假设它是 tex4ht。不过 Babel 并不是最好的软件包,我特别不喜欢这种激活标点符号的方式,参见https://github.com/fc7/polyglossia/issues/21最近也出现了类似的问题。问题通常出在编译器上,因为原则上它应该可以工作,但在我看来,它引发的错误比必要的要多得多。

相关内容