
在文件中,我需要使用 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) Poor's man(使用 Cambria 內現有的 unicode 字形)
另一個純 Cambria(但可怕)的解決方法是使用不同的符號作為複選標記(它自然看起來更像平方根):
\begin{itemize}
\item[$⎷$] a
\item[√] b
\item[\checkmark] c (for comparison) %using solution #2
\end{itemize}