我也想知道如何使用siunitx写入100 MBps?,所以\sisetup{per-mode=symbol,per-symbol = p}
解决了我的问题,我决定将其用作选项\DeclareSIUnit[per-mode=symbol,per-symbol=p]{\Bps}{\byte\per\second}
。
这样,我就可以修复\per
每个单位的格式,并在同一个文本中获取 Km/s 和 MBps,而无需在每个命令中写入格式\SI
。也许这种混合不正确,但这不是我的问题。
但有些东西缺失了,因为当我写入时,\SI{10}{\Bps}
我得到了 10 Bps,但
\SI{10}{\mega\Bps}
结果却是 10 MB/s。那么,问题出在哪里?
这里有 MWE 和它的结果:
\documentclass[a4paper,12pt]{article}
\usepackage[load-configurations={abbreviations,binary}]{siunitx}
\sisetup{per-mode=symbol}
\DeclareSIUnit[per-mode=symbol,per-symbol=p]{\Bps}{\byte\per\second}
\begin{document}
\SI[per-mode=symbol,per-symbol=p]{1}{\mega\byte\per\second}
\SI{2}{\Bps}
\SI{3}{\mega\Bps}
\SI[per-mode=symbol,per-symbol=p]{4}{\mega\Bps}
\end{document}
答案1
这是设计行为。如手册中所述,为某个单元设置的选项适用于该单元仅有的siunitx
\mega\Bps
,这意味着它们不适用于组合。从和的角度来看,\Bps
对于选项的应用是不同的。
曾经有一个强有力的实现原因:在 v1 中,siunitx
不同的解析方法用于不同的输出形式,因此无法中途更改。此限制不适用于当前代码。
这种限制的另一个原因是概念上的。问题中要求的方法并非不合理,但其他组合可能不合理。例如,如果您开始将不同的单元与不同的选项组合在一起,那么很难确定“正确”的结果。因此,仅检查“顶级”输入的选项\SI
,并且仅当只有一个单元宏而没有其他输入时才检查。
与此同时,对于单位的“捷径”方法只打算在“一个层面”使用,例如
\DeclareSIUnit[per-mode=symbol,per-symbol=p]{\Bps}{\byte\per\second}
\DeclareSIUnit[per-mode=symbol,per-symbol=p]{\MBps}{\mega\byte\per\second}
它确实以更复杂的方式工作,但选项只能在“顶层”读取。