![参考书目键中的冒号与 babel、biblatex 和 tex4ht 不兼容](https://linux22.com/image/260736/%E5%8F%82%E8%80%83%E4%B9%A6%E7%9B%AE%E9%94%AE%E4%B8%AD%E7%9A%84%E5%86%92%E5%8F%B7%E4%B8%8E%20babel%E3%80%81biblatex%20%E5%92%8C%20tex4ht%20%E4%B8%8D%E5%85%BC%E5%AE%B9.png)
键的标签与author:year
我的 BibTeX 文件中的一样。例如, 。此方案与、和@article{John:2000, author={John}, year={2000}, ...}
配合良好。pdftex
biblatex
mk4ht 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.
我的问题是:这是谁的错误:tex4ht
或babel
?有什么想法可以在不更改我的 BibTeX 密钥的情况下避免它吗?
答案1
这是因为法语babel
使冒号处于活动状态,它会在冒号前插入空格。您可以使用\shorthandoff{:}
放置在文档开头的命令来切换此行为。当然,它会抑制在整个文档中自动在冒号前插入空格。
答案2
鉴于此事实,它可以编译我可以使用的所有 latex 命令,但不能编译 mk4ht,我假设它是 tex4ht。不过 Babel 并不是最好的软件包,我特别不喜欢这种激活标点符号的方式,参见https://github.com/fc7/polyglossia/issues/21最近也出现了类似的问题。问题通常出在编译器上,因为原则上它应该可以工作,但在我看来,它引发的错误比必要的要多得多。