我正在使用 KOMA-script 和 fontspec 包(以及其他包)撰写论文。我想为我的表格选择默认的无衬线字体(并添加一些字体功能)。我知道如何通过手动选择每个表格的字体(我添加\sffamily\addfontfeature{Numbers=Uppercase,Monospaced}
)来做到这一点,但我更愿意在序言中为整个文档执行此操作。KOMA-script 允许我使用为标题选择特定字体\addtokomafont{…}{…}
,但我找不到为表格中的实际表格数据执行此操作的方法。有办法吗?
下面是一个最小的工作示例。
\documentclass{scrartcl}
\usepackage{fontspec}
\usepackage{tabularx}
\usepackage{tgpagella, tgadventor}
\setmainfont[Ligatures=TeX, Numbers=Lowercase]{texgyrepagella-regular.otf}
\setsansfont[Ligatures=TeX, Numbers=Uppercase]{texgyreadventor-regular.otf}
\begin{document}
test, 1, 2, 3, 5, 7, 9, $1, 2, 3, 5, 7, 9$.
\begin{table}
\begin{tabularx}{.25\linewidth}{lc}
& Test \\
a & 1, 5 \\
b & 2, 7 \\
c & 3, 9 \\
\end{tabularx}
\end{table}
\end{document}
答案1
感谢 Johannes_B 的评论和之前的帖子这里,我的问题已经解决;见下文。etoolbox
效果很好。我也尝试过 LaRiFaRi 的解决方案,但无法让它起作用。
\documentclass{scrartcl}
\usepackage{fontspec}
\usepackage{tabularx}
%\usepackage{float}
\setmainfont[Ligatures=TeX, Numbers=Lowercase]{texgyrepagella-regular.otf}
\setsansfont[Ligatures=TeX, Numbers=Uppercase]{texgyreadventor-regular.otf}
\usepackage{etoolbox}
\AtBeginEnvironment{tabularx}{%
\sffamily\addfontfeature{Numbers={Monospaced, Uppercase}}%
}
\begin{document}
%\floatevery{table}{\sffamily\addfontfeature{Numbers={Uppercase,Monospaced}}}
test, 1, 2, 3, 5, 7, 9, $1, 2, 3, 5, 7, 9$.
\begin{table}
\begin{tabularx}{.25\linewidth}{lc}
& Test \\
a & 1, 5 \\
b & 2, 7 \\
c & 3, 9 \\
\end{tabularx}
\end{table}
\end{document}