Различное кодирование файлов латекса и бибтекса

Поддерживает ли LaTeX ситуацию, когда файл .bib имеет другую кодировку, чем .tex файл? Например,.tex находится в ISO-8859-2 и .bib в UTF-8. Может ли кодирование быть преобразовано "на лету" LaTeX? Или единственный способ сделать это вручную?

Ответы

Ответ 1

Прежде всего, согласно LyX wiki BibTeX не может использовать UTF-8:

BibTeX не поддерживает файлы, закодированные в UTF-8 (т.е. Unicode), который в настоящее время является кодировкой файлов по умолчанию для большинства ОС. Причина в том, что текущий BibTeX (v. 0.99c) был выпущен в 1988 году и, таким образом, предшествовал появлению юникода. Если не будет объявлен давно объявленный BibTeX v. 1.0 или один из многих запланированных потенциальных успешных приложений, latin1 (ISO-8859-1) или другое 8-битное кодирование должно использоваться для файла BIB (это не влияет на LaTeX кодирование, которое все еще может быть utf8).

Как правило, все, что находится внутри файла BibTeX, копируется до исходного кода LaTeX (с некоторым форматированием, возможно, и смены регистров, например), такими как названия книг, авторы и т.д.

Итак, ваша кодировка файла BibTeX должна соответствовать той, которая используется вашим файлом LaTeX, в противном случае все становится забавным. Вы также не можете использовать команды babel в BibTeX (например, "a для ä, предоставленные n? German), если ваш документ не содержит правильные пакеты.

Канонический способ состоит в том, чтобы сделать файлы BibTeX агностиками любых проблем с кодировкой или пакетом, всегда указывая специальные символы с их соответствующими командами.

Это в основном означает, что вместо написания ä вам нужно будет использовать {\" a}, если вы хотите быть абсолютно уверены, что он работает. Кажется, это довольно стандартная практика.

Руководство BibTeX BibTeXing от Oren Patashnik также описывает это:

Теперь BibTeX обрабатывает акцентированные персонажи. Например, если у вас есть запись с двумя полями

author = "Kurt G{\"o}del",
year = 1931,

и если вы используете альфа Библиографический стиль, тогда BibTeX будет постройте метку [Göd31] для этого вход, который вы хотите. к чтобы эта функция работала, вы должны поместите весь акцентированный символ в брекеты; в этом случае либо {\"o}, либо {\"{o}} будет делать. Кроме того, эти скобки не должны быть закрыты в фигурных скобках (кроме тех, которые может разграничить все поле или целая запись); и должно быть обратная косая черта как самый первый символ внутри брекетов. Таким образом, ни {G{\"{o}}del} и {G\"{o}del} будет работа для этого примера. Эта особенность обрабатывает все символы с акцентом и все, кроме небезопасных иностранных символы, приведенные в таблицах 3.1 и 3.2 книга LaTeX. Эта функция ведет себя аналогично для "акцентов" вы можете определить; мы вскоре увидим пример. Для подсчета писем в ярлыках, BibTeX рассматривает все содержащихся внутри фигурных скобок, как единственная буква.

Ответ 2

Вы можете изменить кодировку ввода "на лету":

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

Команда \inputencoding предоставляется пакетом inputenc.

Ответ 3

BibTeX имеет огромные проблемы с символами, отличными от ASCII, даже в самой новой версии. Если вы предпочитаете современную систему, я бы рекомендовал сочетание biblatex и biber. Оба они все еще находятся в стадии бета-тестирования, но они работают достаточно хорошо даже в производственных средах. С этой комбинацией большинство проблем, связанных с библиографией LaTeX, исчезнут. В качестве дополнительной заметки документация biblatex также содержит раздел о проблемах с кодировкой с традиционным BibTeX (§ 2.4.3).

Ответ 4

Bibtex имеет случайную поддержку любых нестандартных кодировок символов - по существу, иногда он работает, большую часть времени он не делает и официально не поддерживается (Подробнее).

Лично, в .bib, я придерживаюсь основных ASCII и LaTeX-магии, подобных \o. Для .tex, если я не пишу по-английски, я сохраняю .tex в UTF-8 с \usepackage [utf8] {inputenc}.