在文档中我需要使用 Cambria Math,但同时又能用于\checkmark
环境itemize
。但是一旦我加载,unicode-math
复选标记就会消失。有办法解决这个问题吗?
lualatex
我正在使用(TeX Live 2013/dev)编译以下 MWE :
\documentclass{article}
\usepackage{amsfonts} % for the \checkmark command
\usepackage{unicode-math} % hides \checkmark?
\usepackage{fontspec}
\setmainfont{Cambria}
\setsansfont{Calibri}
%\setmathfont{Cambria Math}
\begin{document}
$a + b$
\begin{itemize}
\item[\checkmark] a
\item[\checkmark] b
\item[\checkmark] c
\end{itemize}
\end{document}
答案1
如果您希望 AMS 重新运行,您可以直接加载字体,最简单的方法是将其作为文本字体加载。此外,unicode-math
还会延迟其部分定义,begin{document}
因此您需要延迟(重新)定义直到之后。
\documentclass{article}
\usepackage{unicode-math}
\usepackage{fontspec}
\setmainfont{Cambria}
\setsansfont{Calibri}
\setmathfont{Cambria Math}
%%\DeclareFixedFont\amsa{U}{msa}{m}{n}{10}
%%\AtBeginDocument{\renewcommand\checkmark{{\amsa \char"58}}}
\AtBeginDocument{\renewcommand\checkmark{\usefont{U}{msa}{m}{n}X}}
\begin{document}
$a + b$
\begin{itemize}
\item[\checkmark] a
\item[\checkmark] b
\item[\checkmark] c
\end{itemize}
\end{document}
答案2
我没有 Cambria,但症状表明缺少字形。amsfonts
不建议使用:其符号应该已经在良好的 Unicode 数学字体中可用。
你可以为符号选择不同的字体,例如,
\setmathfont[range=\checkmark]{Asana Math}
但这只会在数学中提供符号,因为\checkmark
只打印字符✓(Unicode U+2713)。
因此你也可以添加
\AtBeginDocument{%
\renewcommand\checkmark{\ensuremath{\char\string"2713}}%
}
然后重新定义就会起作用。
以下是一个例子:
\documentclass{article}
\usepackage{unicode-math}
\setmainfont{XITS}
\setmathfont{XITS Math}
\setmathfont[range=\checkmark]{Asana Math}
\AtBeginDocument{%
\renewcommand\checkmark{\ensuremath{\char\string"2713}}%
}
\begin{document}
A checkmark in the main font, just to show the difference: \char"2713
\begin{itemize}
\item[\checkmark] a
\item[\checkmark] b
\item[\checkmark] c
\end{itemize}
\end{document}
如您所见,\checkmark
使用了不同的字体(在本例中为 Asana Math)。
答案3
除了其他答案之外,我还发现了以下三种解决方法:
1)简单的解决方法(使用包和不同的命令)
作为一种解决方法,我正在使用\Checkmark
来自bbding
此答案的包https://tex.stackexchange.com/a/10194/1871。不幸的是,它不是确切地等于checkmark
来自amsfonts
。
\documentclass{article}
\usepackage{bbding} % for the \Checkmark command
\usepackage{unicode-math}
\usepackage{fontspec}
\setmainfont{Cambria}
\setsansfont{Calibri}
\setmathfont{Cambria Math}
\begin{document}
$a + b$
\begin{itemize}
\item[\Checkmark] a
\item[\Checkmark] b
\item[\Checkmark] c
\end{itemize}
\end{document}
2) 与“MSWord”一致的答案(使用Wingdings字体)
MSWord 中的 Itemize 使用 Wingdings 字体作为复选标记,因此这给出了一致的外观(查找 David 的答案以了解其余代码)。
\newfontfamily\wingdingsfont{Wingdings}
\newcommand\wingdings[1]{{\wingdingsfont\symbol{#1}}}
\AtBeginDocument{\renewcommand\checkmark{\wingdings{252}}}
3) 穷人 (使用 Cambria 中现有的 unicode 字形)
另一个纯 Cambria(但很糟糕)的解决方法是使用不同的复选标记符号(自然看起来更像平方根):
\begin{itemize}
\item[$⎷$] a
\item[√] b
\item[\checkmark] c (for comparison) %using solution #2
\end{itemize}