17

In a beamer presentation I can use \usefonttheme[onlymath]{serif} to typeset the math in a serif font while the rest of the presentation is in a sans-serif font. But the \SI command from siunitx appears to typeset its argument as text, which means it follows the text font style, not the math one. Is there a way I can change this so that quantities with units appear with a serif font just like other math, whereas the text is still sans-serif?

\documentclass{beamer}
\usefonttheme[onlymath]{serif}
\usepackage{siunitx}

\begin{document}
 \begin{frame}
  Text appears in sans-serif font

  $x,2y,3z$ appears in serif font

  $\SI{1}{m}$ appears in sans-serif font, would like it to be serif
 \end{frame}
\end{document}

I've tried things like \sisetup{math-rm=\mathrm, text-rm=\rmfamily} or passing the detect-family option to siunitx, but no luck.

Of course I could just change the font family of the entire document to be serif, but I'd like to know whether I have another option.

  • 6
    Where are you doing the \sisetup? siunitx deliberately tests for 'all sanserif' using the \AtBeginDocument hook, so to reverse that you need to either do \sisetup after \begin{document} or use \AtBeginDocument from the preamble. – Joseph Wright Aug 10 '12 at 21:44
  • Ah, that's the issue, I had \sisetup before \begin{document}. I could accept that if you'd like to post it as an answer. – David Z Aug 10 '12 at 22:36
17

siunitx checks if the document font is sanserif using the \AtBeginDocument hook, and adjusts the default if it is. That reflects the fact that in most cases if people set their document all sanserif the desired outcome is that siunitx also uses sanserif.

To reverse this, yo need to alter the settings after siunitx has done its test. That's easiest to do using \AtBeginDocument

\usepackage{siunitx}
\AtBeginDocument{\sisetup{math-rm=\mathrm, text-rm=\rmfamily}}
1

In the preamble of the document add this two lines:

\usepackage{siunitx}
\sisetup{detect-all = true, detect-family = true}

Afterwards, in the document body, siunitx will follow your global settings, but if you change the font in a block, then siunitx will follow those changes too. For example:

\SI{0.8393}{\metre} %global settings
\begingroup
\sffamily

\SI{0.8393}{\metre}
\endgroup

Also check you are using the siunitx commands. As you typed \SI{1}{m}, but instead, it should be written as \SI{1}{\metre}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.