Для следующего случая:
% !TeX program = xelatex
\documentclass[12pt]{article}
\usepackage{fontspec}
\begin{document}
\hsize =2in
shelf{}ful shelf{}ful shelf\-ful di\discretionary{f-}{fi}{f\kern0ptfi}cult
\end{document}
Я получил,
kern
На самом деле, если в третьем аргументе есть что-то, за чем следует \discretionary
, буквы после него исчезают, но когда я не использую пакет fontspec
, ничего не происходит. Это ошибка?
решение1
Кажется, это ошибка в XeTeX. Если в аргументе «nobreak» есть что-то, что не является буквой, \discretionary
и делается разрыв, часть слова, следующая за дискреционным, исчезает.
Минимальный пример:
\input ifxetex.sty
\ifxetex
\font\test="Latin Modern Roman:mapping=tex-text" at 12pt
\else
\font\test=ec-lmr12
\fi
\test
\hsize =2in \advance\hsize by 11pt
shelf{}ful shelf{}ful shelf\-ful di\discretionary{f-}{fi}{f\kern0ptfi}cult task
shelf{}ful shelf{}ful shelf\-ful di\discretionary{f-}{fi}{f\/fi}cult task
shelf{}ful shelf{}ful shelf\-ful di\discretionary{f-}{fi}{f{}fi}cult task
shelf{}ful shelf{}ful shelf\-ful di\discretionary{f-}{fi}{ffi}cult task
di\discretionary{f-}{fi}{ffi}cult task
\bye
Скомпилируйте с помощью xetex
и результат будет таким:
При компиляции pdftex
получаем ожидаемый результат: