在 siunitx 中使用 texttt 和非斜体字符

在 siunitx 中使用 texttt 和非斜体字符

在我的序言中:

\sisetup{detect-all}

\DeclareSIUnit\bin{b}
\DeclareSIUnit\hex{h}

与身体:

\begin{aligned}
  \text{input} &= \SI[parse-numbers = false]{\texttt{01010110111000100001100110110010010001001011001111011011010000111000000100011110100111010011101010011110100001011111001101001111}}{\bin} \\
  &= \SI[parse-numbers = false]{56E219B244B3DB43811E9D3A9E85F34F}{\hex}
\end{aligned}

我使用了parser-numbers = false这两种方法,但原因不同。对于二进制数,我想使用\texttt。对于十六进制数,我想包含字母字符。

我的问题是:

  1. 有没有更好的方法来实现\texttt二进制数?

我考虑过\texttt{01010110111000100001100110110010010001001011001111011011010000111000000100011110100111010011101010011110100001011111001101001111} \si{\bin},但还是喜欢用 包装\SI

  1. 十六进制数字可以显示,但字母字符是斜体。有没有简单的方法可以让\text每个字母字符都变成非斜体(或类似方法)?

答案1

使用 v3 你可以做类似的事情

\documentclass{article}
\usepackage{amsmath}
\usepackage{siunitx}
\DeclareSIUnit\bin{b}
\DeclareSIUnit\hex{h}
\begin{document}

\[
  \sisetup{propagate-math-font}
  \begin{aligned}
    \text{input} &=
    \mathtt{
    \qty{01010110111000100001100110110010010001001011001111011011010000111000000100011110100111010011101010011110100001011111001101001111}{\bin}
    }\\
    &=
    \mathrm{
      \qty[input-digits = 01234567890ABCDEF, input-exponent-markers = ]{56E219B244B3DB43811E9D3A9E85F34F}{\hex}
    }
\end{aligned}
\]

\end{document}

这里的想法是使用或在数值参数中propagate-math-font应用,这样您就可以获得想要的效果。数字解析器可以轻松调整以处理十六进制输入,如下所示。\mathrm\mathtt

相关内容