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

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

4 ответа

Решение

Прежде всего, согласно вики LyX, 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 (с некоторым форматированием, может быть, и с изменением регистра и т. Д.), Например названия книг, авторов и т. Д.

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

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

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

Руководство BibTeX BibTeXing от Орен Паташник также подробно это:

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 рассматривает все, что находится внутри фигурных скобок, как одну букву.

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

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

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

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

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

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

Другие вопросы по тегам