我添加了以下软件包:
\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}
虽然你可以在某个地方找到xunicode
并xltxtra
推荐使用 XeLaTeX,但这些信息已经过时了,他们应该不是加载。只有xltxtra
在您真正需要它提供的功能的特殊情况下才可以加载。