编辑

编辑

我一直在尝试让 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}

相关内容