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

a thin space before colon :これは単なるコメントです。私はフランス語の TeX ユーザーではないので、と のどちらが記述に適しているかはわかりません。 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} ここに画像の説明を入力してください

関連情報