在使用 XeLaTeX 重新编译旧文档时,unicode-math
我遇到了两个问题:
\varGamma...\varOmega
未定义用于倾斜大写希腊字母数学字符的amsmath宏。简单\let
替换至少可以提供字符,但它不会通过选项提供所需的斜体字符math-style=TeX
。一些字体包有选项可以将默认的大写希腊字母更改为斜体(math-style=ISO
等效),然后\varGamma...
定义为提供直立字符。我希望定义这些宏以与amsmath
/LaTeX 定义一致地运行。\bm
软件包中的宏是bm
获得 LaTeX 中粗体数学的“最佳”方法。无需替换\bm
文档中的所有宏,\let\bm=\mathbf
似乎可以使用unicode-math
,但我不知道潜在的陷阱。
问题是所有这些宏都是以 Latex3 编程风格编写的,这远远超出了我的知识水平。
\documentclass{article}
\usepackage{ifxetex}
\usepackage{amsmath}% for uppercase greek slanted variants
\ifxetex
\usepackage{xltxtra}
\def\mathstyle{TeX} % or ISO
\usepackage[math-style=\mathstyle,
bold-style=\mathstyle,
vargreek-shape=TeX
]{unicode-math}
\defaultfontfeatures{Ligatures=TeX}
\setmainfont{TeX Gyre Pagella}
\setmathfont{Asana Math}
\let\bm\mathbf
\AtBeginDocument{
\let\varGamma \mitGamma
\let\varDelta \Delta
\let\varTheta \Theta
\let\varLambda \Lambda
\let\varXi \Xi
\let\varPi \Pi
\let\varSigma \Sigma
\let\varUpsilon\Upsilon
\let\varPhi \Phi
\let\varPsi \Psi
\let\varOmega \Omega}
\else
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{mathpazo}
\usepackage{bm}
\fi
\begin{document}
\ifxetex
\XeLaTeX{} (\texttt{math-style=\mathstyle})
\else
\LaTeX
\fi
\medskip
\verb+\Gamma...\Omega+\par
$\Gamma\Delta\Theta\Lambda\Xi\Pi\Sigma\Upsilon\Phi\Psi\Omega$\quad
$\bm{\Gamma\Delta\Theta\Lambda\Xi\Pi\Sigma\Upsilon\Phi\Psi\Omega}$
\medskip
\verb+\varGamma...\varOmega+\par
$\varGamma\varDelta\varTheta\varLambda\varXi\varPi\varSigma\varUpsilon\varPhi\varPsi\varOmega$\quad
$\bm{\varGamma\varDelta\varTheta\varLambda\varXi\varPi\varSigma\varUpsilon\varPhi\varPsi\varOmega}$
\end{document}
答案1
bm
Unicode 数学感知版本的开始
http://code.google.com/p/dpctex/source/browse/#svn%2Ftrunk%2Fbm
但是我很忙而且它还没有完全完成(所以不在 ctan 上)正如你所说你可以使用\mathbf
(我不确定我是否同意 unicode-math 改变的含义\mathbf
但无论如何这就是它的作用:-)
当然,您也可以选择直接通过 Unicode 编号输入这些字符。相关范围在表格中,从