XeLaTeX, без дефиса, пробел и babel/полиглоссия

XeLaTeX, без дефиса, пробел и babel/полиглоссия

Рассмотрим это MWE

\documentclass[french]{article}
\usepackage{babel}
\usepackage{hyphenat}


\begin{document}
\section{without relax}
Cambridge : University (A)

\nohyphens{Cambridge} : University (B)

\texttt{Cambridge} : University (C)

\verb|Cambridge| : University (D)


\section{with relax}

Cambridge\relax : University (E)

\nohyphens{Cambridge}\relax : University (F)

\texttt{Cambridge}\relax : University (G)

\verb|Cambridge|\relax : University (H)
\end{document}

Если запустить его с помощью pdfLaTeX или LuaLaTeX, все двоеточия будут хорошо выровнены.

Но если мы запустим его с XeLaTeX, то, похоже, есть некоторые ложные пробелы (раздел 1), которые можно отменить с помощью relax. Почему мы получили такое поведение? Если мы не загружаем babel или polyglossia, вывод также в порядке.

Есть идеи?

решение1

Похоже, что эту проблему можно обойти, \nohyphensвставив пробел нулевой ширины (но я не тестировал это со многими шрифтами):

\documentclass[french]{article}
\usepackage{babel}
\usepackage{hyphenat}

\begin{document}

Cambridge : University (A)

\nohyphens{Cambridge} : University (B)

\nohyphens{Cambridge}: University (C)

\renewcommand{\nohyphens}[1]{{{\language\langwohyphens #1}^^^^200b}}

Cambridge : University (A)

\nohyphens{Cambridge} : University (B)

\nohyphens{Cambridge}: University (C)
\end{document}

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

Похожий трюк работает для \verb:

\documentclass[french]{article}
\usepackage{babel}

\begin{document}
Cambridge : University (A)

\verb|Cambridge| : University (C)

\makeatletter
\def\verb@egroup{\global\let\verb@balance@group\@empty\egroup^^^^200d}
\makeatother

Cambridge : University (A)

\verb|Cambridge| : University (C)

\end{document}

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

решение2

Это просто комментарий. Я не являюсь пользователем французского TeX и не знаю, что предпочтительнее в написании: a thin space before colon :или without thin space before colon:. Просто сравните следующие изображения, которые являются выводами следующих вариантов с различными опциями (с/без \FBsetspaces{colon}{0.5}{0}{0}):

\documentclass[french]{article}
\usepackage{babel}
\usepackage{hyphenat}

\FBsetspaces{colon}{0.5}{0}{0}


\begin{document}
\section{all without relax}
Cambridge : University (A)

\nohyphens{Cambridge} : University (B)

\texttt{Cambridge} : University (C)

\verb|Cambridge| : University (D)


\section{all with relax}

Cambridge\relax : University (E)

\nohyphens{Cambridge}\relax : University (F)

\texttt{Cambridge}\relax : University (G)

\verb|Cambridge|\relax : University (H)

\section{with relax just for typewriter and verbatim}

Cambridge : University (E)

\nohyphens{Cambridge} : University (F)

\texttt{Cambridge}\relax : University (G)

\verb|Cambridge|\relax : University (H)

\section{all without manual space}

Cambridge: University (E)

\nohyphens{Cambridge}: University (F)

\texttt{Cambridge}: University (G)

\verb|Cambridge|: University (H)
\end{document}

  • PDFLaTeXс\FBsetspaces{colon}{0.5}{0}{0} введите описание изображения здесь

  • XeLaTeXс\FBsetspaces{colon}{0.5}{0}{0} введите описание изображения здесь

  • PDFLaTeXбез\FBsetspaces{colon}{0.5}{0}{0} введите описание изображения здесь

  • XeLaTeXбез\FBsetspaces{colon}{0.5}{0}{0} введите описание изображения здесь

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