我一直在尝试让 XITS 字体、hepnames 和 unicode-math 一起正确运行,但一直无法找到解决问题的方法。
也许,我一直在寻找错误...我能找到的最接近我问题的是这个问题,因此我将非常感激任何能帮助我解决问题的人,即使只是给我提供一个包含相关信息的链接。
问题本身很容易描述,hepnames 包提供了一系列宏来排版粒子符号,从我所收集到的信息来看,它使用 mathmode 来实现这一点,这需要我使用 unicode-math 来更改字体。设置完成后,似乎有些宏有效,有些无效,当宏不起作用时,生成的 pdf 文件中没有输出(对于该宏)。我尝试用 XeLaTeX 运行同一个文件,只是为了确认它不是 LuaLaTeX 的错误或其他什么,输出几乎相同,唯一的区别是 XeLaTeX 会在失败的宏所在的位置输出空框。此外,移动序言中命令的顺序会改变有效和无效的宏。
以下是 MWE:
\RequirePackage[l2tabu, orthodox]{nag}
\documentclass[12pt,a4paper,twoside]{report}
\usepackage{hepnames}
\usepackage{fontspec}
% With setmainfont here, the \Pgm and \Pgt macros work
\setmainfont
[ Extension = .otf,
UprightFont = *-regular,
BoldFont = *-bold,
ItalicFont = *-italic,
BoldItalicFont = *-bolditalic,
]{xits}
\usepackage[math-style=ISO]{unicode-math}
% With setmainfont here, the \Pl macro works
\setmathfont
[ Extension = .otf,
BoldFont = *bold,
Ligatures=TeX,
]{xits-math}
\begin{document}
Macros being tested:
\begin{itemize}
\item $\Pgm$ should print $\mu$-like
\item $\Pgt$ should print $\tau$-like
\item $\Pgn$ should print $\nu$-like % I was unable to get this macro, \Pgn, to work under any circumstance
\item $\Pl$ should print an ell
\end{itemize}
\end{document}
我尝试查看日志文件。当 setmainfont 命令位于 MWE 中的第二个位置(只有注释的位置)时,日志中有以下 3 行:
Missing character: There is no
答案1
该软件包不适用于 unicode-math。例如,它使用 \mathit,而使用 unicode-math 时应使用 \symit。在您的示例中,您可以使用此补丁解决问题,但还有更多地方需要更正。您应该联系作者。
\documentclass[12pt,a4paper,twoside]{report}
\usepackage{hepnames}
\usepackage{fontspec}
% With setmainfont here, the \Pgm and \Pgt macros work
\setmainfont
[ Extension = .otf,
UprightFont = *-regular,
BoldFont = *-bold,
ItalicFont = *-italic,
BoldItalicFont = *-bolditalic,
]{xits}
\usepackage[math-style=ISO]{unicode-math}
% With setmainfont here, the \Pl macro works
\setmathfont
[ Extension = .otf,
BoldFont = *bold,
Ligatures=TeX,
]{xits-math}
\usepackage{xpatch}
\makeatletter
\xpatchcmd\@HepGenStyle{\mathit}{\symit}{}{\show\fail}
\makeatother
\begin{document}
Macros being tested:
\begin{itemize}
\item $\Pgm$ should print $\mu$-like
\item $\Pgt$ should print $\tau$-like
\item $\Pgn$ should print $\nu$-like % I was unable to get this macro, \Pgn, to work under any circumstance
\item $\Pl$ should print an ell
\end{itemize}
\end{document}
编辑
正确的位置\setmainfont
是在 unicode-math 后面,因为它将设置\mathit
为 xits 的斜体版本而不是计算机现代。
在这种情况下,必须修补另一个命令并替换\mathup
。符号现在是直立的。如果不希望这样,请使用\usepackage[italic]{hepnames}
。
\documentclass[12pt,a4paper,twoside]{report}
\usepackage{hepnames}
\usepackage[math-style=ISO]{unicode-math}
\setmainfont
[ Extension = .otf,
UprightFont = *-regular,
BoldFont = *-bold,
ItalicFont = *-italic,
BoldItalicFont = *-bolditalic,
]{xits}
% With setmainfont here, the \Pl macro works
\setmathfont
[ Extension = .otf,
BoldFont = *bold,
Ligatures=TeX,
]{xits-math}
\usepackage{xpatch}
\makeatletter
\xpatchcmd\@HepGenStyle{\mathit}{\symit}{}{\show\fail}
\xpatchcmd\@HepConStyle{\mathup}{\symup}{}{\show\fail}
\makeatother
\begin{document}
Macros being tested:
\begin{itemize}
\item $\Pgm$ should print $\mu$-like
\item $\Pgt$ should print $\tau$-like
\item $\Pgn$ should print $\nu$-like % I was unable to get this macro, \Pgn, to work under any circumstance
\item $\Pl$ should print an ell
\end{itemize}
\end{document}
答案2
unicode-math
(大多数)假设所有符号都将采用单一的大数学字体,并且(特别是)斜体将通过向上移动到 Unicode U+1Dxxx 的普通 1 区域数学字母来获得。
一些地方的 hep* 包采用更经典的 TeX 字体布局并\mathit
选择单独的斜体字体。
最简单的更改不需要对任何一个包进行更深层次的更改,只需通过移动字符号来选择同一字体内的字符的\mathit
别名即可。\symit
前两行已经与当前的 unicode-math 包一起使用,但是后两行需要\mathit
别名\symit
(或者如果全局重新定义不合适,可以使用本地定义或包更改)
\documentclass[12pt,a4paper,twoside]{report}
\usepackage{hepnames}
\usepackage{fontspec}
% With setmainfont here, the \Pgm and \Pgt macros work
\setmainfont
[ Extension = .otf,
UprightFont = *-regular,
BoldFont = *-bold,
ItalicFont = *-italic,
BoldItalicFont = *-bolditalic,
]{xits}
\usepackage[math-style=ISO]{unicode-math}
% With setmainfont here, the \Pl macro works
\setmathfont
[ Extension = .otf,
BoldFont = *bold,
Ligatures=TeX,
]{xits-math}
\begin{document}
\let\mathit\symit %<< only change
Macros being tested:
\begin{itemize}
\item $\Pgm$ should print $\mu$-like
\item $\Pgt$ should print $\tau$-like
\item $\tracingall\Pgn$ should print $\nu$-like % I was unable to get this macro, \Pgn, to work under any circumstance
\item $\Pl$ should print an ell
\end{itemize}
\end{document}