ConTeXt:如何同时使用多个单元

ConTeXt:如何同时使用多个单元

目标是打印一些类似1 h 20 m 56 s使用units模块的内容,更具体地说是\unit{ }命令。

我知道可以使用这样的单位宏:

1 \Hour 20 \Minute 50 \Second

但我发现更易读的是

\unit{1 hour 20 minute 56 second}

然而后者不起作用,并产生

在此处输入图片描述

可以做到吗?

当然,这不仅仅与小时有关,我希望它能够与其他单位一起工作2 m 47 cm

答案1

我和汉斯讨论过这个问题。你将无法输入

\unit{1 hour 20 minute 56 second}

只是因为兼容性问题。该位置的数字 2 会自动(如您所见)转换为上标 2。

下次上传后,您可以这样做(我把单位放在数学中,然后空间由类驱动)

\startTEXpage[offset=1dk]
\im {1 \unit{hour} 20 \unit{minute} 56 \unit{second} }\par
\im{ 2 \unit{m} 47 \unit{cm} }\par
\im{ \unit{2 m} \unit{47 cm} }
\stopTEXpage

结果是

部分单位

如果你需要紧急临时修复,你可以(至少对于第一个带有 之外的数字的变体\unit)尝试

\unprotect
\inherited\setmathspacing \mathdimensioncode \mathdigitcode \allmathstyles \thickmuskip

\def\phys_units_start
   {\ifmmode
      \dostarttagged\t!maction\t!unit
      \mathatom
         \s!leftclass  \mathdimensioncode
         \s!rightclass \mathdimensioncode % \mathordinarycode
      \bgroup
    \else
      \dostarttagged\t!unit\empty
    \fi
    \let\phys_units_finish\phys_units_stop
    \let\phys_units_start\relax}
\protect

相关内容