latex和bibtex文件的不同编码

latex和bibtex文件的不同编码,latex,bibtex,Latex,Bibtex,LaTeX是否处理.bib文件与.tex文件编码不同的情况?例如,.tex在ISO-8859-2中,而.bib在UTF-8中。LaTeX可以动态转换编码吗?或者唯一的方法就是手动?首先,根据BibTeX不能使用UTF-8: BibTeX不支持以UTF-8(即Unicode)编码的文件。,这是目前大多数操作系统上的默认文件编码。原因是当前的BibTeX(v.0.99c)是在1988年发布的,因此早于unicode的出现。除非早就宣布的BibTeX v。1.0或许多计划的潜在成功应用程序中的一个已准

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

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

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

通常,BibTeX文件中的任何内容都会被逐字复制到LaTeX源代码中(可能会有一些格式和大小写更改,&c),例如书名、作者和c

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

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

这基本上意味着,如果你想绝对确保它能工作,就必须使用
{\“a}
来代替编写
ä
。似乎是相当标准的做法

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

BibTeX现在可以处理重音 人物。例如,如果您有 输入两个字段

author = "Kurt G{\"o}del",
year = 1931,
如果你用的是阿尔法 参考书目风格,然后BibTeX将 为此构建标签
[Göd31]
入口,这是你想要的。到 要使此功能正常工作,您必须 将整个重音字符放入 支撑;在这种情况下,
{\“o}
{\“{o}}
就可以了。此外,这些 支架本身不得封闭 在大括号中(除了 可能会划界整个字段或 完整条目);而且一定有一个 反斜杠作为第一个字符 在支架里面。因此两者都不是

为这个例子工作。此功能
处理所有重音字符
除了那些没有反斜杠的外国人
表3.1和3.2中的符号
胶乳书。此功能的行为
类似地,对于“口音”,您可能会
定义我们稍后将看到一个示例。
为了计算信件的数量
在标签中,BibTeX考虑了一切
包含在支架内,作为
一个字母


Bibtex对任何非标准字符编码都有随机支持——本质上,有时它可以工作,但大多数情况下不工作,而且官方不支持()


就个人而言,在.bib中,我坚持使用基本的ASCII和LaTeX魔术,比如“o.For.tex,如果我不使用英语编写,我会使用\usepack[utf8]{inputenc}将.tex保存在UTF-8中.

即使在最新版本中,BibTeX在非ASCII字符方面也存在巨大问题。如果您更喜欢现代系统,我想推荐和的组合。两者仍处于测试阶段,但即使在生产环境中也能很好地工作。通过这种组合,与LaTeX书目相关的大多数问题都将消失。作为一个侧面,n注意,还包含关于传统BibTeX编码问题的章节(§2.4.3)。

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

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

\inpunecoding
命令由
inpunec
软件包提供。

它看起来不像Win 1251是
inpunec
的一部分。而Win 1251是MikTex编辑器(TeXworks)中的默认值。我如何声明一切都在Win 1251中编码。由于这些编码问题,我丢失了俄语文本。