XeLaTeX, nohífen, espaço e babel/poliglossia

XeLaTeX, nohífen, espaço e babel/poliglossia

Considere este 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}

Se executarmos com pdfLaTeX ou LuaLaTeX, todos os dois pontos estarão bem alinhados.

Mas se rodarmos com XeLaTeX, parece que existem alguns espaços espúrios (seção 1), que podem ser cancelados com relax. Por que obtivemos esse comportamento? Se não carregarmos babel ou polyglossia, a saída também estará ok.

Qualquer ideia?

Responder1

Parece que é possível contornar o problema \nohyphensinserindo um espaço de largura zero (mas não testei com muitas fontes):

\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}

insira a descrição da imagem aqui

Um truque semelhante funciona para \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}

insira a descrição da imagem aqui

Responder2

Este é apenas um comentário. Não sou usuário francês do TeX e não sei o que é preferido por escrito: a thin space before colon :ou without thin space before colon:. Basta comparar pelas imagens a seguir que são resultados do seguinte com opções diferentes (com/sem \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}

  • PDFLaTeXcom\FBsetspaces{colon}{0.5}{0}{0} insira a descrição da imagem aqui

  • XeLaTeXcom\FBsetspaces{colon}{0.5}{0}{0} insira a descrição da imagem aqui

  • PDFLaTeXsem\FBsetspaces{colon}{0.5}{0}{0} insira a descrição da imagem aqui

  • XeLaTeXsem\FBsetspaces{colon}{0.5}{0}{0} insira a descrição da imagem aqui

informação relacionada