我开始在这里起草一个问题,但后来通过进一步的工作,找到了解决方案。我认为可能值得将我在这里找到的内容发布出来供其他人参考。
问题与使用biber
后端有关。这至少在一定程度上也是使用某些出版商提供的未经修改的引文biblatex
的结果。运行 时,我会收到一系列如下所示的错误:BibTeX
biber
"\x{fffd}" does not map to ascii at Biber/Output/BBL.pm line 422.
我使用的参考文件已经包含约 100 个参考,因此整理这些参考并不容易(第 422 行,没有引用我的参考文件中的行)。此问题的一个明显解决方案是-U
在运行 biber(biber -U Thesis_1
对于名为的项目Thesis_1
)时使用开关。这将启用扩展的 unicode 字符集。但是,结果发现使用诸如 之类的命令创建的特殊字符(\"{u}
为了生成带有变音符号的“u”)不会出现在 pdf 中。在 pdflatex 的日志文件中,以下消息的实例:
Missing character: There is no à in font ptmr7t!
会出现(使用-U
中的开关biber
,但没有开关则不会出现)。似乎打开对 unicode 字符的接受也会关闭它们在 latex 中用 ascii 表示的方式。
我从阅读其他论坛消息中得知,类似错误消息可能还有其他原因,但我将把此实例的解决方案作为答案。如果有人认为可以修改问题以使其更有帮助,请告诉我。
由于我被要求,这里有一个最小的工作示例:
\documentclass{article}
\usepackage[sorting=none,
%style=chem-rsc,
backend=biber,
]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{theRefs.bib}
@ARTICLE{Bhalla2000,
author = {Bhalla, A. S. and Guo, R. and Roy, R.},
title = {The perovskite structure – a review of its role in ceramic science
and technology},
journal = {Materials Research Innovations},
year = {2000},
volume = {4},
pages = {3-26},
}
\end{filecontents}
\addbibresource{theRefs.bib}
\begin{document}
Here is a reference\cite{Bhalla2000}
\printbibliography{}
\end{document}
答案1
使用 biber 选项可能对您更有用--output_safechars
。这会在编写时将所有 UTF-8 转换为 LaTeX 宏。biber PDF 手册解释了使用 PDFLaTeX 和 inputenc 时可能遇到的编码/解码问题。如果您遇到更多问题,查看biblatex 调用以及文件中的和值.bbl
会很有用。usepackage
bblencoding
bibencoding
.bcf
实际上,你的问题可能通过添加来解决
\usepackage[utf8]{inputenc}
到您的 MWE。否则,您的 PDFLaTeX 未设置为处理任何 UTF-8 字符。有了这个,您只需要运行而biber
无需额外选项。但是,inputenc
不支持所有字符,例如{\u{\i}}
不支持(截至 TeXlive 2012)。
答案2
因此,我发现,尽管我的参考文件不是 Unicode,但文件中有许多字符属于 ANSI 字符集,而不是 ASCII 集。换句话说,它们包含编号在 128 到 255 之间的字符。这些包括以下符号:
- “-”(字符 150 或 0x96),是连字符的变体
- “°”(字符 176 或 0xb0),表示度数符号
- “ ”(字符 160 或 0xa0),称为无分隔符
在 LaTeX 中,使用 ASCII 字符集,您可以用 来表示连字符-
,--
或者---
根据您想要的标记类型,$^\circ$
用 来表示程度和~
非换行空格。
我的解决方案是首先找到文件中所有值在 128 到 255 之间的字符。使用可以搜索正则表达式的文本编辑器,以下搜索词就足够了:[€-ÿ]
。您应该能够通过按住Alt并键入0128
数字键盘(Alt和0255
最后一个字符)来使用键盘手动生成特殊字符。然后手动浏览并将所有 ANSI 字符更改为 ASCII 中的 LaTeX 表示。
希望这是明智的并且有意义的。
我会暂时将这个问题保留为未接受状态,以防其他人希望提出更好的解决方案。