- 我正在使用 Linux Libertine 字体(来自系统)
XeTeX.
- 在正文中,我使用
OldStyle
数字,而我想Lining
在表格中使用数字。 - 我正在排版包含一些带
\bfseries
文本的单元格的表格。
不过该\addfontfeature
设置只适用于常规文本,不适用于 中设置的文本\bfseries
。
平均能量损失
\documentclass{scrartcl}
\usepackage{array,booktabs,fontspec}
\setmainfont[Ligatures={Common},Numbers={OldStyle}]{Linux Libertine O}
\begin{document}
\begin{table}
\addfontfeature{Numbers={Lining}}
\begin{tabular}{>{\bfseries}ll} \toprule
3 & 3 \\ \bottomrule
\end{tabular}
\end{table}
\end{document}
得出:
如何设置\addfontfeatures{Numbers={Lining}}
应用于组中的所有文本?
答案1
无需表格即可重现此问题:
\documentclass{scrartcl}
\usepackage{array,booktabs,fontspec}
\setmainfont[Ligatures={Common},Numbers={OldStyle}]{Linux Libertine O}
\begin{document}
1234567890
{\addfontfeatures{Numbers=Lining}
1234567890
\normalfont 1234567890
\bfseries 1234567890}
1234567890
\end{document}
如您所见,调用将\normalfont
功能重置为开头所述的状态。该\bfseries
命令会使\fontseries{\bfdefault}\selectfont
所选功能无效。
\addfontfeatures
我的建议是尽可能避免,即使是以一些代码重复为代价。
\documentclass{scrartcl}
\usepackage{array,booktabs,fontspec}
\setmainfont[Ligatures={Common},Numbers={OldStyle}]{Linux Libertine O}
\newfontfamily{\mainlining}[Ligatures=Common,Numbers=Lining]{Linux Libertine O}
\begin{document}
\begin{table}
\mainlining
\begin{tabular}{>{\bfseries}ll}
\toprule
3 & 3 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}