当.bib文件的编码与.tex文件的编码不同时,LaTeX会处理这种情况吗?例如,.tex在ISO-8859-2中,而.bib在UTF-8中.编码是否可以由LaTeX即时转换?或者唯一的办法是手动吗?
Joe*_*oey 15
首先,根据LyX维基 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文件使用的编码相匹配,否则事情会变得有趣.你也不能使用中文提供巴贝尔提供的命令(如"a为ä,用n提供?德国),除非您的文档包含正确的包.
规范的方法是通过始终使用适当的命令指定特殊字符,使BibTeX文件与任何编码或包问题无关.
这基本上意味着如果您想要绝对确定它是否有效,那么ä您将不得不使用{\" a}它.似乎是相当标准的做法.
Oren Patashnik 的BibTeX手册BibTeXing也详细说明了这一点:
BibTeX现在可以处理重音字符.例如,如果您有一个包含两个字段的条目
Run Code Online (Sandbox Code Playgroud)author = "Kurt G{\"o}del", year = 1931,如果您正在使用alpha参考书目样式,那么BibTeX将
[Göd31]为此条目构建标签,这是您想要的.要使此功能起作用,您必须将整个重音字符放在大括号中; 在这种情况下要么{\"o}或{\"{o}}将要做.此外,这些支架本身不能用括号括起来(除了可能划定整个场地或整个入口的那些); 并且必须有一个反斜杠作为大括号内的第一个字符.因此,这个例子既不适用{G{\"{o}}del}也不{G\"{o}del}适用.此功能处理所有重音字符以及除LaTeX书籍表3.1和3.2中的非背面外部符号外的所有字符.对于您可能定义的"重音",此功能的行为类似; 我们很快就会看到一个例子.为了计算标签中的字母,BibTeX将括号内的所有内容视为单个字母.
您可以动态更改输入编码:
\inputencoding{latin2}
\bibliography{mybib}
\inputencoding{utf8}
Run Code Online (Sandbox Code Playgroud)
该\inputencoding命令由inputenc包提供.