如何使用 \checkmark 和 Cambria Math?

如何使用 \checkmark 和 Cambria Math?

在文档中我需要使用 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}

悲惨的人

相关内容