![bib 文件中的特殊字符 inputenc 错误](https://linux22.com/image/392575/bib%20%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E7%89%B9%E6%AE%8A%E5%AD%97%E7%AC%A6%20inputenc%20%E9%94%99%E8%AF%AF.png)
参考文献.bib:
@Book{ref,
author = {{\u c}},
title = {Title}
}
主要.tex:
\documentclass{article}
\usepackage[backend=biber, style=alphabetic]{biblatex}
\usepackage[utf8]{inputenc}
\bibliography{references}
\begin{document}
\cite{ref}
\printbibliography
\end{document}
结果是(如果重要的话,使用 ShareLaTeX)
! Package inputenc Error: Unicode char ̆ (U+306)
(inputenc) not set up for use with LaTeX.
这似乎与我配置 biblatex 的方式有关,因为它与 natbib 配合使用。我希望能够使用\u{c}
或{\u c}
语法,而不是直接插入 UTF8 字符。
更新:@moewe 指出我可能指的是{\v c}
,这让 Biblaex 很高兴。但我认为这个问题还是不错的:如果我确实需要 ,我该怎么办{\u c}
?为什么 natbib 愉快地打印{\u c}
,而 biblatex 却抛出错误?
答案1
Biber 将所有 ASCII 宏转换为各自的 Unicode 代码点,以便能够正确对字符串进行排序。在这种情况下,由于没有组合字符表示,因此\u c
转换为c̆
( U+0063 LATIN SMALL LETTER C
+ U+0306 COMBINING BREVE
)。请注意,此转换独立于输入进行。无论您在文件中写入\u{c}
或 都没有关系。Biber 始终会在内部拥有组合。c̆
.bib
c̆
使用\usepackage[utf8]{inputenc}
Biber 将会将 UTF-8 输出到.bbl
文件,因此该文件将包含c̆
.pdfLaTeX(无论inputenc
有没有它)无法处理组合重音符号(问题之一是重音符号位于它所附加的字符之后...),所以您会收到此错误。
有几种方法可以解决这个问题。一种方法是告诉 Biber 输出宏而不是 UTF-8 字符。这可以通过使用命令行选项调用 Biber 来实现--output-safechars
。另一种方法是告诉 Biber 从文档中输出纯 ASCII 。这可以通过添加到加载选项来.tex
实现。texencoding=ascii
biblatex
为了满的Unicode 支持您应该考虑使用 Unicode 引擎 (XeLaTeX 或 LuaLaTeX)。pdfLaTeX 始终只支持它可以轻松处理的 Unicode 部分,组合重音符号不属于该类别(参见有没有办法让 pdflatex 接受 Unicode 组合重音符号?)。
\documentclass{article}
\usepackage[backend=biber, style=alphabetic, texencoding=ascii]{biblatex}
\usepackage[utf8]{inputenc}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{ref,
author = {{\u{c}}, breve},
title = {Title}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\cite{ref}
\printbibliography
\end{document}
BibTeX不会出现此问题,natbib
或者通常不会出现此问题,因为 BibTeX 不会尝试将{\u c}
其转换为 Unicode 对应项进行排序(它只会将字符排序为c
)。字符将保持不变,而不会被传递{\u c}
给 LaTeX。
正如评论中所说,您实际上想要的是带有抑扬顿号/哈切克号 ( \v{c}
/ č
) 的 ac,而不是带有短音符 ( \u{c}
/ c̆
) 的 c。由于č
具有预制的 Unicode 字符,而 LaTeX 已设置为正确处理该字符,因此\v{c}
可以正常工作。我仍然觉得将其输入为č
而不是更好\v{c}
,但如上所述,输入实际上并不相关,因为 Biber 无论如何都会对输入进行规范化。