Разница между {} и \/ для разрыва лигатур

Разница между {} и \/ для разрыва лигатур

В руководстве по LaTeX (4-е изд.) говорится, что \/используется для разрыва лигатур (стр. 30 и стр. 469), что, как я думал, стандартно делается с помощью {}. Как \/обычно известно, для вставки курсивного исправления (см. "Как работает исправление курсива?"), и{}и \/дают явно разный результат, какой из двух вариантов считается наилучшей практикой? Есть ли тонкости, которые следует учитывать при выборе одного варианта вместо другого?

В следующем коде

\documentclass{article}

\begin{document}

shelfful   % (1) ligature

shelf{}ful % (2) no ligature

shelf\/ful % (3) no ligature, wider than in the line above

\end{document}

интервал между двумя буквами «f» в строке 3 шире, чем в строке 2, что неудивительно, но если подразумевается небольшой интервал, то вопрос в том, оправдан ли он, а также имеет ли смысл исправление курсивом для этой цели (поскольку на самом деле это не относится к курсиву).


Дополнительные опции:Вопрос, на который ссылается Дэвид Карлайл, перечисляет другие (креативные, но хакерские) варианты: {shelf}ful(идентичные shelf{}ful, согласно этому источнику), shelf{\kern0pt}ful, shelf\-ful, и shelf\discretionary{-}{}{\kern.033333em}ful( babelрешение "|по сути сочетает этот подход с некоторой тонкой настройкой). Этот вопрос был призван просто различить две рекомендации, с которыми можно столкнуться (а именно {}и \/), чтобы помочь учащемуся не запутаться. В любом случае, похоже, что ни один из них не является оптимальным, а лучшим решением является babel's "|. Этот набор вопросов и ответов служит документацией для всей этой ситуации.

решение1

Как вы отметили, \/это не команда для разрыва лигатур, это команда для исправления курсива и причина, по которой вы получаете дополнительный пробел.Для разрыва лигатуры наилучшим вариантом является стенография babel"|, который определяется как

 \declare@shorthand{...}{"|}{%
  \textormath{\penalty\@M\discretionary{-}{}{\kern.03em}%
              \allowhyphens}{}}

а также позволяет расставлять переносы, чего \/не происходит:

введите описание изображения здесь

(Каждая из двух приведенных выше групп из трех экземпляров «shelfful» была сгенерирована с помощью ff, f{}f, и f\/f(именно в таком порядке) — то есть, не с помощью "|.)

решение2

Смотрите также

Подавление лигатуры с правильной расстановкой переносов и полным списком слов?

который задает более комплексный вопрос и содержит различную релевантную информацию.

Использование {}имеет недостаток (как указано в изданиях TeX3 TeXBook), что оно не работает в общем случае. Если слово переносится, то TeX повторно вставит лигатуру, если она f{}fпопадает в одну из составных частей. Это не влияет, shelffulтак как единственная точка переноса находится между двумя f.

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