natbib 和 bibtex 的西里尔字母名字问题

natbib 和 bibtex 的西里尔字母名字问题

我正在使用natbibbibtex,在 中排版一份俄文文档(带有pdflatexchicago。对于这样的条目:

@book{belyj1913,
Address = {Москва},
Author = {Андрей Белый},
Publisher = {Наука},
Title = {Петербург},
Year = {1981}}

运行时我得到:

! Package inputenc Error: Unicode char \u8:�. not set up for use with LaTeX.

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

l.47 Белый, �.
                (1981).

并且名字的首字母没有出现在 pdf 中。

如果我使用 ,问题就会消失plainnat,它会输入全名。不过,我喜欢 的某些方面chicago我想知道这个首字母提取问题是否可以克服

我使用babel西里尔字母,以下是序言的摘录:

\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english,russian]{babel}
...
\usepackage{natbib}
\bibpunct[:]{(}{)}{;}{a}{}{,}

拉丁文参考资料很好用。其他本地功能(如连字)也很好用。

讨论使用 Biblatex 和 Polyglossia 的西里尔文书目条目(首字母损坏)代表biblatexpolyglossia,我都没用过。

答案1

BibTeX 并不真正适合 UTF-8 编码。在很多情况下它可以工作,但在提取首字母时肯定会有问题,因为例如西里尔字母“А”是两个字节(0xD090),而只选择了第一个字节。

您可以使用西里尔字母的内部表示来解决此问题:

@book{belyj1913,
  Address = {Москва},
  Author = {{\CYRA}ндрей Белый},
  Publisher = {Наука},
  Title = {Петербург},
  Year = {1981},
}

无论使用首字母还是全名,它都能独立工作。

但是,按作者姓名排序并不能真正保证正确。您应该尝试biblatexbiber,它们符合 UTF-8 标准。

答案2

对我来说,BibTeX 通过使用与 UTF-8 兼容的 bibtex 版本,可以与 natbib 和俄语兼容。只需运行bibtexu而不是bibtex,它就可以工作。

答案3

对于 BibTeX,@egreg 的回答对我没有帮助,所以我想在这里留下我的解决方案:

  1. 将 .bib 文件的编码(假设它被称为 references.bib)更改为CP-1251

  2. 在 .tex 文件中,更改\bibliography{references}

    \inputencoding{cp1251}
    \bibliography{references}
    \inputencoding{utf8}
    
  3. 使用以下方法编译 .bbl 文件

    bibtex8 project.aux --csfile "cp1251.csf"
    

对我来说,这比@egreg 的解决方案更方便,因为您不必将西里尔字母更改为{\cyrA}类似表示形式。

相关内容