输入框UTF8错误信息

输入框UTF8错误信息

我的问题与以下问题类似但又不同:如何修复包 inputenc 错误:“Unicode 字符 \u8:� 未设置为用于 LaTeX。”?

我正在使用 TexLive 和 Texmaker 以及 elsarticle.cls 文档类。文档类需要使用 Bibtex 来引用参考文献。由于一些参考文献是俄语,因此序言中的内容如下:

\usepackage[T1,T2A]{fontenc}% Russian language support
\usepackage[utf8]{inputenc}
%% `Elsevier LaTeX' style
\bibliographystyle{elsarticle-num}

.tex 文件和 .bib 文件均采用 UTF8 编码(在 Mac 的终端中使用命令 file -I (filename))。出于某种原因,在编译文档时,.bbl 文件采用未知编码。尝试声明 unicode 字符

\DeclareUnicodeCharacter{2013}{\textendash}

对抛出的错误消息没有影响:

! 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.... �.

错误的行号与生成的.bbl 文件的行号相匹配。

其他线索是,只有在使用 pdflatex、bibtex 和 pdflatex 编译文档时,才会发生错误。此外,如果注释掉包含俄罗斯西里尔字母的 .bib 文件,则不会发生错误。我的 Mac 上的终端的最后一个线索 file -I (filename) 表明,在使用报告文档类中的另一个文档时,.bbl 文件采用 utf8 格式,并使用:

\bibliographystyle{unsrt}

有人对解决这个问题或潜在的修复有什么建议吗?

为了给自己举个例子,只需从这里下载 elsarticle 模板:

并将其添加到 bib 文件中:

@book{aizenshtata_features_1952,
    address = {Ленинград},
    series = {Главное управление гидрометеорологической службы при Совете Министров СССР. Труды Ташкентской геофизической обсерватории Вып. 6 (7)},
    title = {Some features of the heat balance of the sandy desert (in {Russian}: Некоторые черты теплового баланса песчаной пустыни)},
    abstract = {На обл. только загл. серии, Библиогр.: с. 54-55 (36 назв.)},
    language = {rus},
    publisher = {Гидрометеоиздат},
    author = {Айзенштат, Борис Абрамович},
    collaborator = {Зуев, М. В.},
    year = {1952},
    note = {pgs 3-55},
    keywords = {Пустыни песчаные -- Тепловой баланс},
    file = {3122870.pdf:/Users/nkampy/Library/Application Support/Zotero/Profiles/f12p038d.default/zotero/storage/PRG79WIE/3122870.pdf:application/pdf}
}

@book{kondratyev_transfer_1950,
    address = {Москва; Ленинград},
    title = {Transfer of long-wave radiation in the atmosphere (in Russian: Перенос длинноволнового излучения в атмосфере)},
    abstract = {Библиогр.: с. 285-287 (71 назв.)},
    language = {rus},
    publisher = {Госизд-во техн-теоретлит},
    author = {Кондратьев, Кирилл Яковлевич},
    year = {1950},
    keywords = {Атмосфера -- Лучистый теплообмен -- Определение, Тепловое излучение, длинноволновое -- Перенос и поглощение в атмосфере}
}

@inproceedings{gordov__calculation_1938,
    address = {Ленинград},
    title = {Calculation of direct solar radiation on inclined surfaces differently oriented on the latitude 42{\degree} (in {R}ussian: Расчет прямой солнечной радиации на различно ориентированные наклонные поверхности для широты 42{\degree})},
    booktitle = {Материалы по агроклиматическому районированию субтропиков СССР},
    publisher = {Гидрометеорологическое изд-во},
    author = {{Гордов А.Н.}},
    year = {1938},
    file = {ER16-04761.pdf:/Users/nkampy/Library/Application Support/Zotero/Profiles/f12p038d.default/zotero/storage/TUTQK3QF/ER16-04761.pdf:application/pdf}
}

并将其添加到 .tex 文件中:

%%%%%% Packages Added By Author %%%%%%
\usepackage[T1,T2A]{fontenc}% Russian language support
\usepackage[utf8]{inputenc}
%\DeclareUnicodeCharacter{2013}{\textendash}
%\DeclareUnicodeCharacter{00A0}{ }
%\DeclareUnicodeCharacter{00A0}{~}
\usepackage[russian,USenglish]{babel}

\usepackage{gensymb}% \degree command

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

并在正文中模板引用之后:

Test references: \cite{aizenshtata_features_1952, kondratyev_transfer_1950, gordov__calculation_1938}

您可以亲眼看到,问题在于 elsarticle 文章类如何处理名称中的西里尔字母转换为参考书目的首字母。您还可以看到,否则 unicode 字符会得到正确处理。

在此处输入图片描述

答案1

错误消息的形式表明您使用的是旧版本的 latex,较新的版本会给出数字。正如这里发布的,问号是 U+fffd(替换字符),但通常在文件中出现编码错误时会替换它(可能由本网站替换)。您可以使用

\DeclareUnicodeCharacter{FFFD}{????}

如果您的文件中是 U+FFFD,则会导致错误,而在输出中查找 ???? 将显示问题所在。

答案2

Misha 对这个问题的回答对我也很有用……我所要做的就是将 bibtex 编译命令从 bibtex 更改为 bibtexu。编译确实导致了一些错误,尽管它们对输出没有影响。

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

相关内容