hepparticles/hepnames パッケージを XeLaTeX で動作するようにしようとしています。serif フォントとして Libertine を使用し、sans フォントとして Biolinum を使用しています。粒子名が何らかの理由で間違ったフォントでレンダリングされます。
HEP パッケージは、高エネルギー物理学で使用される粒子名のグリフを挿入します。現在のフォントとスタイルを使用する必要がある (と私は思います) のですが、実際に使用するフォントは一貫していません。以下の MWE では、文字 B の通常のレンダリングと \PB マクロで挿入された粒子名を比較するために、単純な粒子名 (B) を使用しました。これらは同一であるはずです。
パッケージのロードにはさまざまな順序を試しました。
フォントスペックがロードされました前にHEP パッケージ
\documentclass{minimal}
\usepackage{fontspec}
\setmainfont{Linux Libertine}
\setsansfont{Linux Biolinum}
\usepackage{hepparticles}
\usepackage{hepnames}
\begin{document}
\begin{tabular}{p{1.5cm}p{1.5cm}p{1.5cm}p{1.5cm}p{1.5cm}}
~ & Normal & textsf & textit & textsf+textit \\
B & B & \textsf{B} & \textit{B} & \textit{\textsf{B}} \\
PB & \PB & \textsf{\PB} & \textit{\PB} & \textit{\textsf{\PB}} \\
\end{tabular}
\end{document}
通常のグリフは間違ったフォントを使用し、SFグリフは間違ったフォントを使用しますそしてセリフ体ですが、イタリック体のバージョンはどちらも正しいです。
フォントスペックがロードされました後HEP パッケージ
\documentclass{minimal}
\usepackage{hepparticles}
\usepackage{hepnames}
\usepackage{fontspec}
\setmainfont{Linux Libertine}
\setsansfont{Linux Biolinum}
\begin{document}
\begin{tabular}{p{1.5cm}p{1.5cm}p{1.5cm}p{1.5cm}p{1.5cm}}
~ & Normal & textsf & textit & textsf+textit \\
B & B & \textsf{B} & \textit{B} & \textit{\textsf{B}} \\
PB & \PB & \textsf{\PB} & \textit{\PB} & \textit{\textsf{\PB}} \\
\end{tabular}
\end{document}
すべてのグリフは正しいスタイルを使用していますが、フォントがすべて間違っていますを除外するセリフイタリック体のグリフ。
次に、fontspec の代わりに libertine/biolinum パッケージを使用し、比較のために pdflatex でもファイルをコンパイルしました。
フォントパッケージが読み込まれました後HEP パッケージ
\documentclass{minimal}
\usepackage{hepparticles}
\usepackage{hepnames}
\usepackage{libertineRoman}
\usepackage{biolinum}
\begin{document}
\begin{tabular}{p{1.5cm}p{1.5cm}p{1.5cm}p{1.5cm}p{1.5cm}}
~ & Normal & textsf & textif & textsf+textit \\
B & B & \textsf{B} & \textit{B} & \textit{\textsf{B}} \\
PB & \PB & \textsf{\PB} & \textit{\PB} & \textit{\textsf{\PB}} \\
\end{tabular}
\end{document}
pdfラテックス
すべてのグリフのスタイルは正しいがフォントが間違っている:
ゼラテックス
すべてのグリフは正しいスタイルを使用していますが、フォントがすべて間違っていますを除外するセリフイタリック体のグリフ。
フォントパッケージが読み込まれました前にHEP パッケージ
\documentclass{minimal}
\usepackage{libertineRoman}
\usepackage{biolinum}
\usepackage{hepparticles}
\usepackage{hepnames}
\begin{document}
\begin{tabular}{p{1.5cm}p{1.5cm}p{1.5cm}p{1.5cm}p{1.5cm}}
~ & Normal & textsf & textit & textsf+textit \\
B & B & \textsf{B} & \textit{B} & \textit{\textsf{B}} \\
PB & \PB & \textsf{\PB} & \textit{\PB} & \textit{\textsf{\PB}} \\
\end{tabular}
\end{document}
pdfラテックス
すべてのグリフは正しいスタイルを使用し、すべて正しいフォントを使用していますを除外するセリフイタリックグリフ。(xelatex を使いたいのでなければ、これで十分です。)
ゼラテックス
通常のグリフは間違ったフォントを使用し、SFグリフは間違ったフォントを使用しますそしてセリフ体ですが、イタリック体のバージョンはどちらも正しいです。
答え1
わかりました。egreg のコメントが正しい方向を示してくれました。 を使用してmathspec
数式フォントを変更しようとしましたが、うまくいきませんでした。 のマクロを詳しく調べたところhepparticles
、粒子名をレンダリングするために や同様のマクロが使用されていることがわかりました\mathup
。 でこれらを変更する方法がわからなかったmathspec
ので、 に切り替えてunicode-math
、満足のいく結果が得られる有効な構成を見つけました。
\documentclass{minimal}
\usepackage{hepparticles}
\usepackage{hepnames}
\usepackage{fontspec}
\setmainfont{Linux Libertine}
\setsansfont[BoldItalicFont=Linux Biolinum O Bold Oblique]{Linux Biolinum}
\usepackage[math-style=ISO]{unicode-math}
\setmathfont{Linux Libertine}
\setmathfont[range=\mathrm]{Linux Libertine}
\setmathfont[range=\mathup]{Linux Libertine}
\setmathfont[range=\mathit]{Linux Libertine Italic}
\setmathfont[range=\mathbf]{Linux Libertine Bold}
\setmathfont[range=\mathbfit]{Linux Libertine Bold Italic}
\setmathfont[range=\mathsf]{Linux Biolinum}
\setmathfont[range=\mathsfup]{Linux Biolinum}
\setmathfont[range=\mathsfit]{Linux Biolinum Italic}
\setmathfont[range=\mathbfsf]{Linux Biolinum Bold}
\setmathfont[range=\mathbfsfit]{Linux Biolinum O Bold Oblique}
\begin{document}
\begin{tabular}{p{1.5cm}p{1.5cm}p{1.5cm}p{1.5cm}p{1.5cm}}
~ & Normal & textsf & textit & textsf+textit \\
B & B & \textsf{B} & \textit{B} & \textit{\textsf{B}} \\
PB & \PB & \textsf{\PB} & \textit{\PB} & \textit{\textsf{\PB}} \\
\end{tabular}
\end{document}
編集:私はその後に問題に遭遇したが、これについては別のスレッド。