Кодировка шрифта в LaTeX

Кодировка шрифта в LaTeX

Я уже некоторое время использую LaTeX и прочитал много обсуждений о кодировках шрифтов.

Некоторые предлагают использовать шрифты T1, добавляя \usepackage[T1]{fontenc}, другие предлагают ничего не добавлять, третьи предлагают использовать T1в дополнение к пакету ae, а третьи говорят, что это устарело и вместо этого следует использовать другой шрифт...

Я совсем запутался. Есть ли какой-нибудь обновленный ресурс, который хорошо объясняет проблему и решает ее?

По моему опыту, добавление ничего работает нормально, но иногда мне нужны дополнительные наборы символов, такие как жирные маленькие заглавные буквы, в этом случае я могу использовать кодировку T1, но качество плохое. Кажется, все исправляется, если я использую aeили lmodernпакеты. Что на самом деле происходит и что мне на самом деле делать?

PS: Извините, если этот вопрос уже задавался, я нашел много обсуждений по этому поводу, но я пишу в надежде получить окончательный ответ.

PPS: В настоящее время я использую latex++ . Я предпочитаю использовать, если могу, но, поскольку я работаю с другими, это не всегда возможно dvips.ps2pdfpdflatex

решение1

Основное правило: попробуйте получить лучшие результаты, используя \usepackage[T1]{fontenc}в своем документе.

Объяснение: когда вы пишете текст на английском языке, вы, вероятно, сможете обойтись без этой строки и не испытаете никаких различий/трудностей в большинстве ситуаций.

Когда Кнут представил TeX, он поставлял его со шрифтом под названием «Computer Modern». Этот шрифт имеет только очень ограниченный набор символов (по сравнению с сегодняшними шрифтами OpenType). Например, символы типа «ö» и «ü» отсутствовали. Это не повредит, если вы не набираете текст на языках, использующих эти символы. Но как только вам нужно будет их отобразить, вы можете помочь, объединив две точки «¨» над «o» или «u». Для этого есть примитив TeX: \accent. Это имеет побочный эффект в виде отключения переносов, что неприемлемо.

Таким образом, однажды пользователи TeX пришли к соглашению о том, как кодировать шрифты, которые могут отображать большинство европейских языков (кодировка T1). Эта кодировка сообщает, какой код следует поместить в файл DVI или PDF, когда пользователи запрашивают «ö» или «ü». Теперь, когда эти символы больше не должны состоять из двух глифов, они не нарушают перенос.

Зачем теперь возиться с T1, если у вас нет этих забавных символов? Когда вы готовите шрифт для LaTeX, вам нужно создать файлы метрик шрифта ( tfm). Поскольку T1 является наиболее используемой кодировкой в ​​наши дни (в Европе, конечно), некоторые люди больше не заморачиваются с кодировками, отличными от T1, и, таким образом, шрифт может быть недоступен в старой и стандартной OT1кодировке.

НО: если вы придерживаетесь Computer Modern, вы можете захотеть сохранить старую кодировку (и не использовать T1), так как вариант PostScript (который приводит к лучшим результатам рендеринга) доступен только с кодировкой OT1. Для Computer Modern в кодировке T1 (которую вы должны использовать, когда вам нужны переносы в словах с этими специальными символами), вы можете использовать пакет aeили изменить свой шрифт на cm-super (с помощьюнетзагрузка aeи изменение кодировки на T1 - но я бы не хотел этого делать). Я настоятельно рекомендую использовать замену Computer Modern под названием «Latin Modern», которая поставляется в нескольких вариантах (шрифты PostScript Type 1, OpenType). Активируйте ее с помощью \usepackage{lmodern}.

решение2

АльтернативаXeLaTeX

Автор OP явно указывает LaTeXв заголовке вопроса. Существует связанный компилятор, который называется , XeLaTeXкоторый предназначен для более плавной обработки иностранных символов, чем LaTeX. Я подумал, что будет полезно упомянуть его здесь. Я уже некоторое время использую его для набора французского текста с большим успехом. Следующий фрагмент кода в преамбуле проверит, XeLaTeXвызывается ли , и загрузит программы соответствующим образом.

В коде ниже, который должен быть вставлен в преамбулу, я загружаю общедоступный шрифт Libertine. Это всего лишь иллюстрация: в этом случае установка шрифта с помощью setmainfontпараметров команды довольно утомительна, поэтому libertineбыл создан специальный пакет с именем , чтобы упростить установку шрифта.

\usepackage[oldstyle]{libertine}% public domain font % alternative to \setmainfont line commented out below
\usepackage{ifxetex}% load different packages with/without XeLaTex
\ifxetex
    \usepackage{fontspec}% provides \setmainfont
    %\setmainfont[Numbers=OldStyle,Ligatures=Common,Mapping=tex-text]{Linux Libertine O}% public domain font % or use the libertine package instead
\else  % packages below are not needed with utf8 based engines
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{lmodern} 
\fi%

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

Связанный контент