在我的序言中:
\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
。对于十六进制数,我想包含字母字符。
我的问题是:
- 有没有更好的方法来实现
\texttt
二进制数?
我考虑过\texttt{01010110111000100001100110110010010001001011001111011011010000111000000100011110100111010011101010011110100001011111001101001111} \si{\bin}
,但还是喜欢用 包装\SI
。
- 十六进制数字可以显示,但字母字符是斜体。有没有简单的方法可以让
\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