XeLaTeX、nohyphen、space 和 babel/polyglossia

XeLaTeX、nohyphen、space 和 babel/polyglossia

考虑一下这个 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} 在此处输入图片描述

相关内容