
Я уже некоторое время использую LaTeX и прочитал много обсуждений о кодировках шрифтов.
Некоторые предлагают использовать шрифты T1, добавляя \usepackage[T1]{fontenc}
, другие предлагают ничего не добавлять, третьи предлагают использовать T1
в дополнение к пакету ae
, а третьи говорят, что это устарело и вместо этого следует использовать другой шрифт...
Я совсем запутался. Есть ли какой-нибудь обновленный ресурс, который хорошо объясняет проблему и решает ее?
По моему опыту, добавление ничего работает нормально, но иногда мне нужны дополнительные наборы символов, такие как жирные маленькие заглавные буквы, в этом случае я могу использовать кодировку T1, но качество плохое. Кажется, все исправляется, если я использую ae
или lmodern
пакеты. Что на самом деле происходит и что мне на самом деле делать?
PS: Извините, если этот вопрос уже задавался, я нашел много обсуждений по этому поводу, но я пишу в надежде получить окончательный ответ.
PPS: В настоящее время я использую latex
++ . Я предпочитаю использовать, если могу, но, поскольку я работаю с другими, это не всегда возможно dvips
.ps2pdf
pdflatex
решение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
или что-то в этом роде, я просто обнаружил, что это очень помогло мне с моими французскими текстами, и я взял это на вооружение сравнительно недавно.