乳胶和bibtex文件的不同编码

时间:2009-10-28 08:12:25

标签: latex bibtex

当.bib文件的编码与.tex文件的编码不同时,LaTeX会处理这种情况吗?例如,.tex在ISO-8859-2中,而.bib在UTF-8中。编码可以由LaTeX动态转换吗?或者唯一的方法是手动吗?

4 个答案:

答案 0 :(得分:15)

首先,根据LyX wiki BibTeX不能使用UTF-8:

  

BibTeX不支持以UTF-8编码的文件(即Unicode),这是目前大多数操作系统的默认文件编码。原因是目前的BibTeX(版本0.99c)于1988年发布,因此早于unicode的出现。除非长期宣布的BibTeX v.1.0或许多计划中的潜在成功应用程序中的一个已经准备就绪,否则latin1(ISO-8859-1)或其他8位编码必须用于bib文件(这不会影响LaTeX编码,仍然可以是utf8)。

通常,BibTeX文件中的任何内容都会逐字复制到LaTeX源代码(可能有一些格式和案例变化,等等),例如书名,作者和< c。

因此,您的BibTeX文件编码必须匹配您的LaTeX文件使用的文件,否则事情会变得有趣。您也不能在BibTeX中使用babel提供的命令(例如"a用于ä,由n?german提供),除非您的文档包含正确的包。

规范的方法是使总是使用适当的命令指定特殊字符,使BibTeX文件不受任何编码或包问题的影响。

这基本上意味着,如果您想要绝对确定它是有效的,那么您必须使用ä而不是写{\" a}。似乎是相当标准的做法。

Oren Patashnik的BibTeX手册BibTeXing也详细说明了这一点:

  

BibTeX现在处理重音   字符。例如,如果你有   输入两个字段

author = "Kurt G{\"o}del",
year = 1931,
     

如果你正在使用alpha   书目风格,然后BibTeX会   为此构建标签[Göd31]   进入,这是你想要的。至   得到这个功能你必须工作   将整个重音字符放入   括号;在这种情况下,{\"o}或   {\"{o}}会这样做。而且这些   支架本身不得封闭   在括号中(除了那些   可能划定整个字段或   整个条目);必须有一个   反斜杠作为第一个字符   在牙箍内。因此也不是   {G{\"{o}}del}也将{G\"{o}del}   为这个例子工作。此功能   处理所有重音字符   除了非背后的外国人   表3.1和3.2中的符号   LaTeX书。此功能表现   同样对于“口音”你可能   限定;我们很快就会看到一个例子。   用于计算字母   在标签中,BibTeX会考虑一切   作为一个包含在牙箍内   单个字母。

答案 1 :(得分:7)

您可以动态更改输入编码:

\inputencoding{latin2}
\bibliography{mybib}
\inputencoding{utf8}

\inputencoding命令由inputenc包提供。

答案 2 :(得分:3)

即使在最新版本中,BibTeX也存在非ASCII字符的巨大问题。如果您更喜欢现代系统,我建议您推荐biblatexbiber的组合。两者仍处于测试阶段,但即使在生产环境中也能很好地工作。通过这种组合,与LaTeX书目相关的大多数问题都将消失。另外,biblatex documentation还包含有关传统BibTeX(第2.4.3节)编码问题的部分。

答案 3 :(得分:0)

Bibtex对任何非标准字符编码都有随机支持 - 基本上有时它可以工作,大部分时间它都没有,正式它不受支持(More details)。

就个人而言,在.bib中,我坚持使用基本的ASCII和LaTeX魔术,如“o。对于.tex,如果我不用英文写作,我将.tex保存在UTF-8中,使用\ usepackage [utf8] {inputenc}。