我正在嘗試讓 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}
編輯:我遇到了一個後續問題,該問題在另一個線程。