
В руководстве по 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.