Я пытаюсь заставить пакеты hepparticles/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}
pdflatex
Все глифы имеют правильный стиль и неправильный шрифт:
кселатекс
Все глифы имеют правильный стиль, но все они имеют неправильный шрифт.кромеглиф с засечками и курсивом.
загружены пакеты шрифтовдоПакеты 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}
pdflatex
Все глифы имеют правильный стиль и правильный шрифт.кромеглиф с засечками и курсивом. (Это меня вполне устроит, за исключением того, что я хочу использовать 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}
Редактировать:Я столкнулся с дополнительной проблемой, которая обсуждается вдругая тема.