XeLaTeX で Unicode の en-dash をレンダリングする

XeLaTeX で Unicode の en-dash をレンダリングする

私が正しく理解していれば、XeLaTeX を使用すると、これらの行はすべてそれぞれ適切な em ダッシュと en ダッシュで出力されるはずです。

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Gentium Plus}

\begin{document}

Hello---world!

Hello—world!

Hello--world!

Hello–world!

\end{document}

ただし、どのフォントを選択しても、Unicode の en-dash でエラーが発生します (em-dash は--en-dash を生成するシーケンスと同様に正常に機能します)。

 ./dash-testing.te.tex:13: Undefined control sequence. 
 l.13 Hello\UTF
               {2013}world! \\

しかし、InDesign グリフ ビューアなどを使用すると、文字 2013 が確かに存在することがわかります。また、 などの他の文字の直接入力も機能します。

ユニコードのエンダッシュを機能させるにはどうすればよいですか?

更新: これは、コンパイルを続行すると得られる出力です (適切なフォントが実際に使用されていることを示すため)。

悪いダッシュ、悪い

答え1

ブラウザからあなたの完全な内容を新しいテキスト ファイルにコピーし、xelatex でコンパイルしたところ、問題なく動作しました。あなたのコードが動作しない理由は全く見当たりません

  • コンソール ウィンドウを閉じるか、コンピューターを再起動した後、新しいディレクトリに完全に新しいファイルを作成してみてください。

    同様の問題がある場合、これが時々役立ちます...

  • それでも解決しない場合は、TeXディストリビューションを更新してみてください。

職場でのem-dash

答え2

Gentium は Type 1 フォントとしても利用できます。たとえば、TEXMF/fonts/type1/public/gentium-tug/このフォントもインストールされていて、XeLaTeX は最初に見つかったフォントを使用するものとします。ただし、次のようにして、XeLaTeX で TrueType バージョンを使用するように強制できます。

\setmainfont[
  Extension=.ttf,
  UprightFont=*-R,
  ItalicFont=*-I]{GentiumPlus}

これは XeTeX、バージョン 3.14159265-2.6-0.99992 (TeX Live 2015) (プリロードされた形式 = xelatex 2016.2.13) です 2016 年 2 月 14 日 20:43

 fontspec-xetex.sty    2016/02/01 v2.5a Font selection for XeLaTeX and LuaLaTeX

答え3

あなたの時間を無駄にしてしまい、申し訳ありません。これは TexShop の「問題」であることが判明しました。Vim でテスト ファイルを編集するまで、TexShop が正確なソースを表示していないことに気付きませんでした。Vim を使用するまで、実際のソースが文字通りUTF{2013}.であったことがわかりませんでした。

これは pTeX をサポートするための設定であり、この StackExchange の回答のようにその設定をオフにすることで修正されます。TexShop の発音区別符号エンコーディング

関連情報