Am besten ich beginne mal mit einem kleinen Beispiel:

Open in writeLaTeX
\documentclass[parskip=half]{scrartcl}
\usepackage{fontspec, etoolbox, amsmath, siunitx}

\defaultfontfeatures{Numbers = {Proportional}}  % Standardmäßig 
\setmainfont{Linux Libertine O}

\AtBeginEnvironment{tabular}{\addfontfeatures{Numbers={Monospaced}}}

\sisetup{detect-all         = true, 
    mode                    = text,
    group-digits            = false,}

\begin{document}
    \section*{Text-Mode:}
    11111\\
    22222

    \section*{Table:}
    \begin{tabular} {@{}l}
        11111\\
        22222\\
    \end{tabular}

    \section*{Table + siunitx}
    \begin{tabular} {@{}l}
        \num{11111}\\
        \num{22222}\\
    \end{tabular}

    \section*{siunitx}
    \num{11111}\\
    \num{22222}

    \section{Math-Mode:}
    \(
    \begin{matrix}
        11111\\
        22222\\
    \end{matrix}
    \)

\end{document}

Ich möchte, im Fließtext proportionale Nummern setzen. In Tabellen hingegen prinzipiell nur Monospace-Ziffern. In Verbindung mit Siunitx klappt das leider nicht da ich es nicht hinbekomme das SIUnitx die jeweils aktuellen Font-Features verwendet. Heißt: Außerhalb von Tabellen setzt Siunitx korrekt proportionale Nummern - innerhalb von Tabellen jedoch leider auch, obwohl dort die Font-Features umdefiniert wurden.

gefragt 12 Mär '14, 15:57

Sylvan's gravatar image

Sylvan
38951117
Akzeptiert-Rate: 0%

bearbeitet 14 Mär '14, 16:23

cgnieder's gravatar image

cgnieder
22.1k253463


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:

Open in writeLaTeX
% 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:

Open in writeLaTeX
% 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

Permanenter link

beantwortet 14 Mär '14, 16:22

cgnieder's gravatar image

cgnieder
22.1k253463
Akzeptiert-Rate: 60%

bearbeitet 14 Mär '14, 16:25

Müsste Joseph jetzt eigentlich die Upvotes bekommen? ;-D

(14 Mär '14, 23:39) Speravir

@Speravir Steht alles im Chat-Transkript :)

(14 Mär '14, 23:40) cgnieder

Danke für die Antwort. habe es nun so gelöst, dass ich AtBeginEnvironment{tabular} noch die Zeile defrmdefault{LinuxLibertineO(1)} hinzugefügt habe. Kennt vielleicht jemand noch eine Möglichkeit wie ich dort nicht explizit die Schrift kennen muss, sondern den Schriftnamen dynamisch von der MainFont ableiten kann? Also konkret: Wenn die MainFont nicht die Libertine ist - gibt es eine Lösung wo ich in AtBeginEnvironment nichts mehr ändern muss?

(17 Mär '14, 10:34) Sylvan

@Sylvan Joseph hat die Arbeit an v3 aufgenommen und meinte, das diese Art Problem in v3 gelöst sein sollte. Vielleicht reicht es also, einfach ein halbes Jahr zu warten.

(17 Mär '14, 11:19) cgnieder

Na das klingt doch auch ganz gut. Bis dahin kann ich mir sicher so behelfen. Danke Dir und Joseph.

(17 Mär '14, 14:40) Sylvan
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×78
×34
×10

gestellte Frage: 12 Mär '14, 15:57

Frage wurde gesehen: 11,094 Mal

zuletzt geändert: 17 Mär '14, 14:40