我尝试在用 Markdown 编写并使用 Pandoc 渲染的 Beamer 幻灯片中使用 Verdana 作为数学字体,使用 XeLaTeX 作为 PDF 引擎。由于直接使用 Pandoc 的 mathfont 选项指定 Verdana 似乎没有任何效果,我尝试求助于 mathastext LaTeX 包。虽然后者处理字母,但数字不使用 Verdana 渲染。根据这个帖子,需要在 fontspec 之前加载 mathastext 才能正确使用所需字体呈现数字;但是,我不确定如何使用 pandoc 做到这一点。以下示例引发错误Option clash for package fontspec
,这表明 fontspec 是在 header-includes 选项中的行之前加载的:
---
mainfont: Verdana
header-includes: |
\usepackage{mathastext}
\usepackage[no-math]{fontspec}
---
## Test
This is an equation: $E = m c^2$
对于如何解决上述情况以便正确地用 Verdana 呈现所有内容,您有什么想法吗?
答案1
没有平均能量损失,我不确定您到底在寻找什么,但这里有一个beamer
幻灯片示例,其中数学字体设置为 Verdana。您想要unicode-math
这个。
\documentclass[professionalfonts]{beamer}
\usepackage{mathtools}
\usepackage{unicode-math}
\defaultfontfeatures{Scale=MatchLowercase}
\setmainfont{Verdana}[Scale=1.0]
\setmathrm{Verdana}[Ligatures={Common,TeX}] % Needed to fix the font scaling.
\setsansfont{Verdana}
\setmathfont{Fira Math} % The most-consonant math font as of 2021
\setmathfont{Verdana}[range=up]
\setmathfont{Verdana Bold}[range=bfup]
\setmathfont{Verdana Italic}[range=it]
\setmathfont{Verdana Bold Italic}[range=bfit]
\newcommand\upi{\symup{i}}
\newcommand\upe{\symup{e}}
\begin{document}
\begin{frame}
\frametitle{The Euler Identities}
\begin{align*}
\upe^{\upi x} &= \cos{x} + \upi \sin{x} \\
\upe^{\upi \uppi} + 1 &= 0
\end{align*}
\end{frame}
\end{document}
答案2
使用方法如下戴维斯洛使用 pandoc 的解决方案(已在 MacOS 10.15.7 上使用 pandoc 2.13 和 TeXLive 2021 进行验证)。显然,需要利用 pandoc 的 raw_attribute 扩展来防止 LaTeX 的部分内容被错误解析:
---
header-includes: |
```{=latex}
\usepackage{mathtools}
\usepackage{unicode-math}
\defaultfontfeatures{Scale=MatchLowercase}
\setmainfont{Verdana}[Scale=1.0]
\setmathrm{Verdana}[Ligatures={Common,TeX}]
\setsansfont{Verdana}
\setmathfont{Fira Math}
\setmathfont{Verdana}[range=up]
\setmathfont{Verdana Bold}[range=bfup]
\setmathfont{Verdana Italic}[range=it]
\setmathfont{Verdana Bold Italic}[range=bfit]
```
classoption: professionalfonts
---
## Test
This is an equation: $E = m c^2$