XeLaTeX、無連字符、空格和 babel/polyglossia

XeLaTeX、無連字符、空格和 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:。只需透過以下圖片進行比較,這些圖片是具有不同選項(with/out \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} 在此輸入影像描述

相關內容