bib 文件中的特殊字符 inputenc 错误

bib 文件中的特殊字符 inputenc 错误

参考文献.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转换为( U+0063 LATIN SMALL LETTER C+ U+0306 COMBINING BREVE)。请注意,此转换独立于输入进行。无论您在文件中写入\u{c}或 都没有关系。Biber 始终会在内部拥有组合。.bib

使用\usepackage[utf8]{inputenc}Biber 将会将 UTF-8 输出到.bbl文件,因此该文件将包含.pdfLaTeX(无论inputenc有没有它)无法处理组合重音符号(问题之一是重音符号位于它所附加的字符之后...),所以您会收到此错误。

有几种方法可以解决这个问题。一种方法是告诉 Biber 输出宏而不是 UTF-8 字符。这可以通过使用命令行选项调用 Biber 来实现--output-safechars。另一种方法是告诉 Biber 从文档中输出纯 ASCII 。这可以通过添加到加载选项来.tex实现。texencoding=asciibiblatex

为了满的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}

C

BibTeX不会出现此问题,natbib或者通常不会出现此问题,因为 BibTeX 不会尝试将{\u c}其转换为 Unicode 对应项进行排序(它只会将字符排序为c)。字符将保持不变,而不会被传递{\u c}给 LaTeX。


正如评论中所说,您实际上想要的是带有抑扬顿号/哈切克号 ( \v{c}/ č) 的 ac,而不是带有短音符 ( \u{c}/ ) 的 c。由于č具有预制的 Unicode 字符,而 LaTeX 已设置为正确处理该字符,因此\v{c}可以正常工作。我仍然觉得将其输入为č而不是更好\v{c},但如上所述,输入实际上并不相关,因为 Biber 无论如何都会对输入进行规范化。

相关内容