我想在内联样式数学模式 ( $...$
) 和显示的方程式(例如\begin{equation} ... \end{equation}
)中使用不同的字体。目前,我使用
\setmainfont{Frutiger 45 Light}
\setmathrm{Cambria Math}
\setmathfont(Digits,Latin){Cambria Math}
但我也想在数学模式下使用 Frutiger,这样内联数学的字体样式就不会中断。我尝试定义一个新命令
\newcommandx{\textvar}[1]{
{
\setmathrm{Frutiger 45 Light}
\setmathfont(Digits){Frutiger 45 Light}
#1
}
\setmathrm{Cambria Math}
\setmathfont(Digits,Latin){Cambria Math}
}
但\setmath*
似乎只在序言中起作用,而不在文档本身中起作用。
有什么办法可以做到这一点?
答案1
由于我们是优秀排版的粉丝,因此关于最佳实践的讨论始终是强制性的且重要的。
我赞同克里斯上述的说法:
请不要在家尝试!
% arara: lualatex
\documentclass{article}
\usepackage{unicode-math}
\setmathfont[version=lm]{Latin Modern Math}
\setmathfont[version=asana]{Asana Math}
\begingroup
\catcode`\$=\active
\protected\gdef$#1${\mathversion{asana}\(#1\)\mathversion{lm}}
\endgroup
\AtBeginDocument{\catcode`\$=\active}
\begin{document}
\mathversion{lm}
\begin{equation}E=mc^2\end{equation} where $E$ stands for energy \begin{equation}E=mc^2\end{equation}
\end{document}
编辑:
在评论中,您提到您想保留旧的行为。在这种情况下,您应该(强烈建议)为此类事情定义一个新命令:
\newcommand*{\myinlinemath}[1]{{\mathversion{asana}\ensuremath{#1}}}
编辑2:
对于您的示例,我仅建议使用以下siuntix
包:
% arara: xelatex
\documentclass{article}
\usepackage{fontspec}
\setmainfont{linux libertine o}
\usepackage{siunitx}
\begin{document}
\begin{equation}E=mc^2\end{equation}
something like \SI{2.8 \pm 0.5}{\mu\metre} in the middle of a line
\sisetup{detect-all}
something like \SI{2.8 \pm 0.5}{\mu\metre} in the middle of a line
\end{document}
答案2
这里有一个解决方案,它使用\everymath
和\everydisplay
原语在两个预定义数学版本之间切换——“Asana Math”用于内联数学,“XITS Math”用于显示方程式。
该代码需要在 LuaLaTeX 下运行;出于某种原因,如果我尝试在 XeLaTeX 下编译它,我会收到“TeX 容量超出,抱歉”的错误消息。
警告:该代码已通过多种显示样式的数学环境进行了测试,但绝对没有通过所有可以想到的数学环境进行测试。
% !TEX TS-program = lualatex
\documentclass{article}
\usepackage{amsmath}
\usepackage[no-math]{fontspec}
\setmainfont{Myriad Pro}
\usepackage{unicode-math}
\setmathfont[version=XITS]{XITS Math}
\setmathfont[version=Asana]{Asana Math}
\mathversion{Asana}
\everymath{\mathversion{Asana}}
\everydisplay{\mathversion{XITS}}
\setlength\textwidth{7cm} % just for this example
\begin{document}
$E=mc^2$, where $E$ stands for energy \dots
\begin{equation} E=mc^2 \end{equation}
$E=mc^2$, where $E$ stands for energy \dots
\begin{gather} E=mc^2 \end{gather}
\end{document}