Различная кодировка латексных и бибтекс-файлов
Обрабатывает ли 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},