
В документе мне нужно использовать Cambria Math, но в то же время иметь возможность использовать \checkmark
для itemize
среды. Но как только я загружаю, unicode-math
галочка исчезает. Есть ли способ обойти это?
Я компилирую следующий MWE с помощью lualatex
(TeX Live 2013/dev):
\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 для отметок флажками используется шрифт Wingdings, что обеспечивает единообразный вид (обратитесь к ответу Дэвида по поводу остальной части кода).
\newfontfamily\wingdingsfont{Wingdings}
\newcommand\wingdings[1]{{\wingdingsfont\symbol{#1}}}
\AtBeginDocument{\renewcommand\checkmark{\wingdings{252}}}
3) Бедняк (используйте существующие глифы Unicode в Cambria)
Еще один чисто Cambria (но ужасный) способ обхода проблемы — использовать другой символ для галочки (который, естественно, больше похож на квадратный корень):
\begin{itemize}
\item[$⎷$] a
\item[√] b
\item[\checkmark] c (for comparison) %using solution #2
\end{itemize}