已載入字體規範前HEP 包

已載入字體規範前HEP 包

我正在嘗試讓 heparticles/hepnames 套件與 XeLaTeX 一起使用。我使用 Libertine 作為襯線字體,並使用 Biolinum 作為無襯線字體。粒子名稱以某種方式以錯誤的字體呈現。

HEP 套件插入了高能物理中使用的粒子名稱的字形。他們(我認為)應該使用當前的字體和樣式,但他們實際使用的字體不一致。在下面的 MWE 中,我使用了一個簡單的粒子名稱 (B) 來比較字母 B 的正常渲染和使用 \PB 巨集插入的粒子名稱,它們應該是相同的。

我嘗試了不同的順序來加載包裹:

已載入字體規範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}

所有字形都使用正確的樣式,但字體都錯誤除了襯線斜體字形。

在此輸入影像描述

接下來我使用 libertine/biolinum 套件而不是 fontspec,並使用 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}

在此輸入影像描述

編輯:我遇到了一個後續問題,該問題在另一個線程

相關內容