我想建立一个包含希腊字母(例如 Δ)的参考书目,但在打印参考书目时收到错误。
尽管已经阅读了与该主题相关的几个问题(例如1,2和3) 我找不到我的错误。我知道它与我的参考书目的编码有关,因为只有当我打印参考书目时才会出现错误。我是否遗漏了 biblatex 的任何其他选项?
我通过 Zotero 使用 UTF8 编码将我的参考书目导出为 BibLateX 文件。我使用的 Texmaker 编辑器也使用 UTF8 编码。
平均能量损失
\begin{filecontents*}{references.bib}
% this article is fine
@article{stuiver_modeling_1993,
title = {Modeling Atmospheric 14C Influences and 14C Ages of Marine Samples to 10,000 {BC}},
author = {Stuiver, Minze and Braziunas, Thomas F.},
date = {1993},
% this article creates headache due to the greek capital delta in the title
@article{dutta_r_2001,
title = {ΔR Correction Values for the Northern Indian Ocean},
author = {Dutta, Koushik and Bhushan, Ravi and Somayajulu, B. L. K.},
date = {2001}
\end{filecontents*}
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[backend=biber]{biblatex}
\addbibresource{references.bib}
\begin{document}
Test first \textcite{bard_radiocarbon_2013} and second \textcite{dutta_r_2001}
% Error shows up only if I add the bibliography
\printbibliography
\end{document}
从.log文件复制的错误信息:
Package biblatex Info: Input encoding 'utf8' detected.
Package biblatex Info: Automatic encoding selection.
(biblatex) Assuming data encoding 'utf8'.
\openout3 = `test.bcf'.
Package biblatex Info: Trying to load bibliographic data...
Package biblatex Info: ... file 'test.bbl' found.
(./test.bbl)
Package biblatex Info: Reference section=0 on input line 40.
Package biblatex Info: Reference segment=0 on input line 40.
LaTeX Font Info: Try loading font information for T1+cmtt on input line 43.
(/usr/share/texlive/texmf-dist/tex/latex/base/t1cmtt.fd
File: t1cmtt.fd 2014/09/29 v2.5h Standard LaTeX font definitions
)
LaTeX Font Info: External font `cmex10' loaded for size
(Font) <7> on input line 43.
LaTeX Font Info: External font `cmex10' loaded for size
(Font) <5> on input line 43.
! Package inputenc Error: Unicode char Δ (U+394)
(inputenc) not set up for use with LaTeX.
See the inputenc package documentation for explanation.
Type H <return> for immediate help.
解决方法:
正如评论中指出的那样,有两种快速的解决方法:
- 编辑您的
.bib
文件。在我的特定情况下,在文件中替换ΔR
为。$\Delta R$
.bib
\DeclareUnicodeCharacter{394}{$\Delta$}
在文档的序言中使用.tex
。
然而,解决方案 1如果您定期更新文件则没用,.bib
因为您必须每次手动替换字符。
解决方案 2节省了很多时间,但我仍然想知道我的错误根源。显然,UFT-8 完整角色列表也包括Δ GREEK CAPITAL LETTER DELTA (U+0394)
。那么为什么尽管设置了所有编码,我仍收到错误消息uft8
?
答案1
类似的问题也发生在
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\begin{document}
Δ
\end{document}
使用 pdfLaTeX 编译时。事实上(对某些人来说有点烦人),inputenc
UTF-8 配置文件没有设置所有 Unicode 字符以供 LaTeX 使用。原因之一是 LaTeX 中的字体包含的代码点比 Unicode 少得多,并且并不总是能够预测字形所在的位置(如果它存在的话)。
正如评论中指出的那样,
\DeclareUnicodeCharacter{0394}{$\Delta$}
或者
\DeclareUnicodeCharacter{0394}{\ensuremath{\Delta}}
可以解决您的问题。后者的优点是它可以在文本和数学模式下工作,而$\Delta$
如果 TeX 已经处于数学模式,即输入如下内容,则会失败\(ΔR\)
(感谢 @egreg 在评论中指出这一点)。
替代解决方案是写作
title = {$\Delta\mathrm{R}$ Correction Values for the {Northern} {Indian} {Ocean}},
是我在这里更喜欢的,但我不知道你所在领域的惯例,也许 R 应该是直立的,...你用来导出.bib
文件的软件应该让你使用 TeX 的数学模式,这样你就不必一直手动编辑你的.bib
文件。
或者,您可以使用原生支持 Unicode 的引擎,XeLaTeX 或 LuaLaTeX。使用这些引擎,您将不需要这些,\DeclareUnicodeCharacter
因为它们可以直接访问系统字体,而 LaTeX 的字符限制不会发挥作用。
答案2
自 2010 年以来,我一直在 Ubuntu 中使用 MiKTeX + PdfTeX + TeXstudio 用希腊语书写。对于新笔记本电脑,我使用了与 Windows 10 相同的配置,每当写入希腊字符时就会出现上述错误。经过大量阅读,问题仍未解决,我只是尝试用 更改\usepackage[utf8]{inputenc}
。utf8x
就这样,问题解决了。同时我utf
在 Ubuntu 系统中使用,一切正常!