当.bib文件的编码与.tex文件的编码不同时,LaTeX会处理这种情况吗?例如,.tex在ISO-8859-2中,而.bib在UTF-8中。编码可以由LaTeX动态转换吗?或者唯一的方法是手动吗?
答案 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字符的巨大问题。如果您更喜欢现代系统,我建议您推荐biblatex和biber的组合。两者仍处于测试阶段,但即使在生产环境中也能很好地工作。通过这种组合,与LaTeX书目相关的大多数问题都将消失。另外,biblatex documentation还包含有关传统BibTeX(第2.4.3节)编码问题的部分。
答案 3 :(得分:0)
Bibtex对任何非标准字符编码都有随机支持 - 基本上有时它可以工作,大部分时间它都没有,正式它不受支持(More details)。
就个人而言,在.bib中,我坚持使用基本的ASCII和LaTeX魔术,如“o。对于.tex,如果我不用英文写作,我将.tex保存在UTF-8中,使用\ usepackage [utf8] {inputenc}。