重音字符和输入设置

重音字符和输入设置

在我的参考书目数据库中,有几个参考文献的作者姓名中有重音字符,例如Chagn\'e。该inputenc包似乎对此有问题。我的设置是:

\usepackage[latin9]{inputenc}

这会产生与数据库中特定行号相关的错误.bib。在生成最终 PDF 之前,错误重复了数十次。有人可以推荐我应该使用什么设置吗inputenc

以下是 bib 文件中的一个例子:

@article{Chagne2003a,
 author = {Chagn\'e, David and Brown, Garth and Lalanne, C\'eline and Madur, Delphine and Pot, David and Neale, David and Plomion, Christophe},
 title = {Comparative genome and QTL mapping between maritime and loblolly pines},
 journal = {Molecular Breeding},
 pages = {185--195},
 volume = {12},
 issue = {3},
 url = {http://dx.doi.org/10.1023/A:1026318327911},
 year = {2003}
}

PDF 中的参考文献和引文均正确打印。然而,在编译过程中,至少发生了 6 次错误,需要用户干预。

编辑#2 - 我的参考书目包是“Biblatex”,它直接访问 .bib 文件。错误是在编译过程中生成的。我将它粘贴在这里。

   l.132 

? 

! Package inputenc Error: Keyboard character used is undefined
(inputenc)                in inputencoding `latin9'.

See the inputenc package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.132 

? 

行号 132 是 bib 数据库中所讨论的参考文献的位置。


编辑# 3

这里有一件奇怪的事情。我从 .bib 文件中删除了重音设置。因此,Chagn\'e 现在是 Chagne。然后我从编译文件夹中删除了所有 aux、.bbl 和 .blg 文件。我仍然收到完全相同的错误。现在我不太确定 1.132 是否指的是 .bib 中的第 132 行。

编辑# 4 —— 一个最小的例子:

\documentclass[12pt]{article}
\usepackage[bibstyle=authoryear,
citestyle=authoryear, 
natbib=true]{biblatex}
\usepackage{filecontents}
\usepackage[latin9]{inputenc}


\begin{filecontents}{genetics.bib}
@article{Chagne2003a,
 author = {Chagn\'{e}, David and Brown, Garth and Lalanne, C\'{e}line and Madur, Delphine and Pot, David and Neale, David and Plomion, Christophe},
 title = {Comparative genome and QTL mapping between maritime and loblolly pines},
 journal = {Molecular Breeding},
 pages = {185--195},
 volume = {12},
 number = {3},
 doi = {10.1023/A:1026318327911},
 year = {2003}
}
\end{filecontents}

\addbibresource{genetics.bib}


\begin{document}
\section{Introduction}
This was first reported by \citet{Chagne2003a}.

\printbibliography

\end{document}

答案1

免责声明:这个答案没有漂亮的图片,抱歉。

因此,总结一下问题评论中的对话,并提供一些额外的解释:

  • 该错误是由 引起的inputenc,它抱怨在 的第 132 行发现一些字符main.tex
  • 该行只有\printbibliography在包中实现的命令biblatex
  • 因此,有问题的字符一定在宏的扩展中\printbibliography,但很难找到该字符的来源。

一些诊断工具:

  • iconv程序可以从一种编码转换为另一种编码。如果在转换过程中发现某些无效字符,程序将停止并输出有关有问题的字符的错误,并显示发现该字符的行号和该行中的列号。
  • 因此,我们可以在文件上运行iconvmain.tex要求.bib它将 转换为latin9的超集latin9(例如utf8)的任何其他编码,并查看是否找到 中没有的某些字符latin9。命令可以是:

    iconv -f latin-9 -t utf-8 < main.tex > /dev/null
    

    请注意,iconv从标准输入(从 重定向main.tex)读取并将转换结果写入标准输出(我们重定向到标准输出,/dev/null因为我们对输出并不感兴趣,而是对可能的错误感兴趣)。如果发现错误,它将输出到标准错误,标准错误未重定向,因此它将显示在终端中。

  • 上述测试没有产生任何输出,因此没有发现错误。

此时有两种可能性:

  1. 我们仍然没有对包含无效字符的文件运行测试latin9。也许它位于由 读取的某个辅助文件中\printbibliography
  2. 也许的latin9定义文件inputenc不完整,而所谓的违规字符实际上是一个有效的字符,只是它inputenc不知道而已。

为了验证 1.,iconv应该在编译时输入的所有文件中运行测试main.tex。要分辨出哪些是全部可能有点困难。

无论如何,删除该行\usepackage[latin9]{inputenc}将使错误消息消失,因此这是一个有吸引力的“解决方案”,但请注意,抑制症状并不是治愈疾病的方法。如果最终有一个无效字符怎么办?

好吧,在没有inputenc软件包的情况下,TeX 被配置为忽略所有非 ASCII 字符,因此如果有任何latin9字符(有效或无效),它将在输出中被默默抑制。所以你能想到的最坏情况就是这里或那里缺少一些字符。这可能很难发现,所以为了安全起见,我将继续进行测试iconv

最后说明

  • 当您使用标准 TeX 重音宏输入重音字符时,例如\'e您在输入中仅使用 ASCII 字符,因此inputenc不需要任何包。仅当您想“直接”输入重音字符时才需要这样做(即é:)。
  • 如果您可以直接输入é,则需要确定编辑器使用哪种编码来保存文件。欧洲语言(法语、西班牙语、意大利语等)的最常见编码是 ISO-8859-1(也称为latin1)、ISO-8859-15(也称为latin9)和utf8。最后一种编码实际上是对整个 Unicode 字符集进行编码的一种方式,因此涵盖了所有字母表。
  • 对于重音元音,latin1和都latin9使用相同的代码,因此您可以将其中任何一个作为 的选项inputenc。这些编码之间的主要区别在于latin9有欧元符号 (€) 的代码,而latin1没有。

出于好奇,我会做额外的测试。带回inputenc包,但使用latin1而不是latin9。如果实施过程中存在某种错误latin9,那么错误可能不存在于latin1和 中(除非您需要欧元符号或其他罕见字符,例如 Š、š、Ž、ž、Œ、œ 或 Ÿ,否则根本没有区别。

答案2

建议这里是始终使用{\' e}等(即 、{\command<stuff> })来表示参考书目中的非 ASCII 字符。BIBTeX 将除字母(或 <stuff> )之外的所有内容视为重音符号,并在排序等时忽略它。

答案3

使用{\' e}等,这是最安全的路线。

===========

但为了调查这个问题,我测试了放入latin1而不是latin9放入包中inputenc,但出现了同样的错误

我已经测试过了utf8,结果弹出了更多信息:

package inputenc error: Unicode char \u8:Â not set up for use with latex

这告诉我Â我的 .bib 文件中有虚假字符,确实有(从 IEEE 网站复制粘贴的)!

但是也:

package inputenc error: Unicode char \u8:€ not set up for use with latex

package inputenc error: Unicode char \u8:嫫 not set up for use with latex

通过反复试验,我确定这是由以下行引起的

booktitle={Computer Vision ECCV 2012. Workshops and Demonstrations},

相关内容