
Предположим, я хочу написать слово с диакритическими знаками, скажемфибей,и я не могу использовать Unicode или что-то подобное, но вместо этого мне нужно сохранить максимальную совместимость для всех видов ситуаций. Если я не сильно ошибаюсь, мне приходится прибегать к одному из следующих:
f\"ib\k{e}j
f\"{i}b\k{e}j
f{\"i}b{\k{e}}j
f{\"{i}}b{\k{e}}j
Я смутно помню, что читал однажды, что одна из этих альтернатив предпочтительнее, потому что она позволяет получить лучший кернинг или что-то подобное. Однако, проверяя это, я получаю тот же плохой кернинг во всех случаях: выносной элемент фи левая точка ясталкиваются, и то же самое происходит с огонек и нисходящим элементом дж.
Итак, это был намеренно патологический пример, и соответствующие столкновения могут не иметь отношения к какому-либо существующему языку, и, таким образом, могут быть другие случаи, в которых один из вышеперечисленных способов кодирования диакритических знаков действительно дает лучший кернинг. Кроме того, я не тестировал все возможные среды и мог что-то упустить.
Наконец, могут быть и другие причины (кроме эстетики исходного кода), по которым один из вышеперечисленных вариантов предпочтительнее с точки зрения расстановки переносов и других аспектов.
Итак, мой вопрос:Есть ли какие-либо технические причины предпочесть некоторые из вышеперечисленных вариантов другим?
решение1
Используйте 1 или 2. Не добавляйте группы вокруг буквы, если только вы не можете этого избежать (это серьезная проблема с использованием групп в bibtex для управления верхним и нижним регистром). fine
обычно использует fi
лигатуру в большинстве шрифтов, но f{i}ne
ломает лигатуру (обычно). То же самое касается букв с диакритическими знаками.
Если \"{i}
это приводит к использованию примитива \accent
для размещения , \"
то не будет никаких кернов или лигатур, указанных в шрифте, поэтому все ваши возможности эквивалентны. (Это происходит с кодировкой OT1 по умолчанию).
Если \"{i}
в шрифте используется один глиф с составным символом, то при наличии кернов или лигатур, указанных в шрифте, они будут предотвращены, если {}
вокруг конструкции есть группа.
решение2
Максимальная совместимость невозможна, так как \k
не предусмотрена в классическом TeX в Computer Modern. Таким образом, \k
неопределенная последовательность управления в простом TeX. Она \k
определяется в зависимости от используемого пакета макросов и используемой кодировки шрифта. LaTeX с кодировкой шрифта по умолчанию не знает \k
.
Вторая проблема: \"i
дает точечный i и следующую пару точек выше (т.е. три точечных i) в классическом TeX. Использование \"\i
необходимо. Но синтаксис \"i
может дать желаемый результат в зависимости от используемого пакета макросов и используемой внутренней кодировки шрифта.