フォントスペックがロードされました前にHEP パッケージ

フォントスペックがロードされました前にHEP パッケージ

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}

ここに画像の説明を入力してください

編集:私はその後に問題に遭遇したが、これについては別のスレッド

関連情報