突然,粗体希腊符号出现问题;bm 包不起作用

突然,粗体希腊符号出现问题;bm 包不起作用

我添加了以下软件包:

\usepackage{fontspec}
\usepackage{xunicode,xltxtra,url,parskip} 
\usepackage[usenames,dvipsnames]{xcolor} 
\usepackage{hyperref} 
\definecolor{linkcolour}{rgb}{0,0.2,0.6} 
\hypersetup{colorlinks,breaklinks,urlcolor=linkcolour,linkcolor=linkcolour} 

此外,我开始使用 XeLaTeX 而不是 pdfLaTeX 进行编译(?)。

因此,在数学环境中,粗体(即\mathbf)与希腊字母的组合不起作用(而拉丁字母起作用)。只是澄清一下:我仍然可以编译我的代码,但希腊字母在输出中已经不可见了。

我尝试使用该\bm包来尝试规避这个问题,但它会出现以下错误:

! Undefined control sequence.
\Call@AtVeryEndDocument ...cumentHook \@undefined 
                                              \global \let \Call@AtVeryE...

有人知道如何解决这个问题吗?

答案1

当您加载时,fontspec数学直立字母的字体也会更改为使用默认文本字体。此字体中的希腊字母不在 LaTeX 期望的位置:使用标准定义,\Phi指向 slot 0x08,而 Unicode 中的大写字母 Phi 位于U+03A6

在标准 LaTeX 中,命令\mathbf仅适用于拉丁字母和大写希腊字母。您可以通过加载

\usepackage[no-math]{fontspec}

这将使用标准的 Computer Modern 字体来显示直立的数学字符。但是没有必要不执行这一大步并加载

\usepackage{unicode-math}

你需要\symbf而不是\mathbf(也适用于拉丁字母)。

请参阅以下示例:

\documentclass{article}
\usepackage{unicode-math}
\begin{document}

$\symbf{\Phi}+\symbf{\alpha}$

$\Phi+\alpha$
\end{document}

产生

在此处输入图片描述

如果您不想迈出这一大步,您仍然可以\mathbf使用大写希腊文;只需教 XeLaTeX 去哪里并找到大写希腊字母即可。

\documentclass{article}
\usepackage{fontspec}

\AtBeginDocument{
  \Umathchardef\Gamma   = 7 0 "0393
  \Umathchardef\Delta   = 7 0 "0394
  \Umathchardef\Theta   = 7 0 "0398
  \Umathchardef\Lambda  = 7 0 "039B
  \Umathchardef\Xi      = 7 0 "039E
  \Umathchardef\Pi      = 7 0 "03A0
  \Umathchardef\Sigma   = 7 0 "03A3
  \Umathchardef\Upsilon = 7 0 "03A5
  \Umathchardef\Phi     = 7 0 "03A6
  \Umathchardef\Psi     = 7 0 "03A8
  \Umathchardef\Omega   = 7 0 "03A9
}

\begin{document}
$\Gamma+\Delta+\Theta+\Lambda+\Xi+\Pi+\Sigma+
 \Upsilon+\Phi+\Psi+\Omega$

$\mathbf{\Gamma}+\mathbf{\Delta}+\mathbf{\Theta}+\mathbf{\Lambda}+
 \mathbf{\Xi}+\mathbf{\Pi}+\mathbf{\Sigma}+\mathbf{\Upsilon}+
 \mathbf{\Phi}+\mathbf{\Psi}+\mathbf{\Omega}$

\end{document}

在此处输入图片描述


虽然你可以在某个地方找到xunicodexltxtra推荐使用 XeLaTeX,但这些信息已经过时了,他们应该不是加载。只有xltxtra在您真正需要它提供的功能的特殊情况下才可以加载。

相关内容