编辑:事实证明,我的实际文件问题是由另一个包引起的。
(这个问题和我之前的一个问题密切相关dcolumn 包显示不同的字体因为这仍然没有解决我原来的问题(见评论)。)
我正在使用该类beamer
。因此,无衬线字体是本文档中的默认字体。
我有/想要使用 OTF 字体,所以我的文件依赖于包fontspec
。
有一个表格,它包含D
来自dcolumn
包的 -colunm 以及常规r
或l
列。我很惊讶地发现,该D
列不使用无衬线字体!
我可以将这个问题归结为包fontspec
。
以下是产生正确输出的 MWE:
\documentclass{beamer}
\usepackage{dcolumn}
\newcolumntype{E}{D{,}{,}{-3}}
\begin{document}
\begin{frame}
\frametitle{Correct Math Font}
\begin{center}
With PDF\LaTeX{} or Lua\LaTeX{} \\
but without package \texttt{fontspec}\\
\begin{tabular}{rE}
1,23 & 1,23
\end{tabular}
\end{center}
\end{frame}
\end{document}
正如预期的那样,这是输出。
现在,只需将该行添加\usepackage{fontspec}
到 MWE 中,它就会变得很奇怪。
编辑:Ulrike Fischer 确实回答了这个问题,并解决了上面 MWE 中的问题。但在我的实际文件上使用该解决方案,却没有奏效。事实证明,另一个包需要该包,这又带来了同样的问题。我也unicode-math
通过插入编辑了下面的 MWE 。\usepackage{unicode-math}
\documentclass{beamer}
\usepackage{dcolumn}
\usepackage{fontspec}
\usepackage{unicode-math}
\newcolumntype{E}{D{,}{,}{-3}}
\begin{document}
\begin{frame}
\frametitle{Incorrect Math Font}
\begin{center}
With Lua\LaTeX{} and \\
with package \texttt{fontspec}\\
\begin{tabular}{rE}
1,23 & 1,23
\end{tabular}
\end{center}
\end{frame}
\end{document}
这次,你会得到这个输出:
您可以清楚地看到,右列采用的是正常的直立罗马字体。为什么会这样?更重要的是,如何修复这个问题?
编辑:Ulrike Fischers 的回答确实解决了我的第一个问题,在我不得不编辑它之前。所以,从技术上讲,她的回答也值得绿色勾号(至少部分如此)。在升级了我关于软件包的问题后unicode-math
,Davislor 的回答完全解决了我的问题!
答案1
在评论中,您跟进并说您需要一个适用于的版本unicode-math
。由于您的列包似乎切换到数学模式,因此实现此操作的一种方法是自己打开professionalfonts
并加载数学字母的无衬线字体。
\documentclass[professionalfonts]{beamer}
\usepackage{unicode-math}
\usepackage{dcolumn}
\newcolumntype{E}{D{,}{,}{-3}}
\setmainfont{NewComputerModernBook}
\setsansfont{NewComputerModernSansBook}
\setmonofont{NewComputerModernMonoBook}
\setmathfont{NewCMMath-Book.otf}
\setmathfont{NewCMSans10-Book}[range={up,"2C}]
\setmathfont{NewCMSans10-BookOblique}[range=it]
\setmathfont{NewCMSans10-Bold}[range=bfup]
\setmathfont{NewCMSans10-BoldOblique}[range=bfit]
\setmathrm{NewComputerModernSansBook}
\begin{document}
\begin{frame}
\frametitle{Incorrect Math Font}
\begin{center}
With Lua\LaTeX{} and \\
with package \texttt{fontspec}\\
\begin{tabular}{rE}
1,23 & 1,23
\end{tabular}
\end{center}
\end{frame}
\end{document}
该range={up}
选项处理字母和数字。您还需要设置所需的任何标点符号,例如,在本例中为逗号 (U+2C)。
一个更简单的替代方案是加载无衬线数学字体,例如\setmathfont{KpMath-Sans.otf}
。这样您就可以跳过覆盖其数学字母的过程。您仍然需要\setmathrm
或\setmainfont
无衬线字体。
答案2
如果你不想让 fontspec 影响数学设置,你可以使用no-math
选项
\documentclass{beamer}
\usepackage{dcolumn}
\usepackage[no-math]{fontspec}
\newcolumntype{E}{D{,}{,}{-3}}
\begin{document}
\begin{frame}
\frametitle{Correct Math Font}
\begin{center}
With Lua\LaTeX{} and \\
with package \texttt{fontspec}\\
\begin{tabular}{rE}
1,23 & 1,23
\end{tabular}
\end{center}
\end{frame}
\end{document}