Ich habe Joseph Wright diese Frage gestellt. Seine Antwort war:
> Ah, that's a bit tricky!
In der Tat ist `siunitx` hier konsistent mit NFSS, aber mit Opentype-Fonts kann man sich leider nicht völlig auf NFSS verlassen:
% arara: lualatex
\documentclass{article}
\usepackage{fontspec,siunitx}
\defaultfontfeatures{Numbers = {Proportional}}
\setmainfont{Linux Libertine O}
\sisetup{
detect-all = true ,
mode = text,
group-digits = false,
}
\begin{document}
11111 \num{11111} {\rmfamily 11111}
\end{document}
Während die Schrift vor Aufruf von `\addfontfeatures{Numbers={Monospaced}}` (mit LuaLaTeX) `\EU1/LinuxLibertineO(0)/m/n/10` ist und hinterher `\EU1/LinuxLibertineO(1)/m/n/10`, bleibt `\rmdefault` gleich, nämlich in beiden Fällen `LinuxLibertineO(0)`. Eigentlich auch logisch: man ändert die Default-Schrift ja nicht.
Eine mögliche Lösung wäre, `\rmdefault` lokal umzudefinieren:
% arara: lualatex
\documentclass{article}
\usepackage{fontspec,siunitx}
\defaultfontfeatures{Numbers = {Proportional}}
\setmainfont{Linux Libertine O}
\newcommand*\tabularfont{%
\def\rmdefault{LinuxLibertineO(1)}%
\addfontfeatures{Numbers={Monospaced}}%
}
\sisetup{
detect-all = true ,
mode = text,
group-digits = false,
}
\begin{document}
11111 \num{11111} {\rmfamily 11111}
{\addfontfeatures{Numbers={Monospaced}}%
11111 \num{11111} {\rmfamily 11111}}
{\def\rmdefault{LinuxLibertineO(1)}%
11111 \num{11111} {\rmfamily 11111}}
{\tabularfont
11111 \num{11111} {\rmfamily 11111}}
\end{document}
![alt text][1]
[1]: http://texwelt.de/wissen/upfiles/monospaced.png