为表格数据选择字体功能

为表格数据选择字体功能

我正在使用 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}

相关内容