使用命令(在units.sty中定义)\unit[value]{dimensions}
,使用设置尺寸\mathrm
。我正在制作一个使用标准Beamer无衬线字体(不记得名字了)的演示文稿,这意味着每当我使用该\unit
命令时,尺寸都会因为字体不同而显得突出。有没有办法重新定义用于尺寸的字体?
顺便说一句,我使用的是 LyX,因此命令\unit
是通过调用\unittwo
然后在第一个框中插入值并在第二个框中插入尺寸来调用的。我似乎找不到更改字体的方法,除非\unit
完全避免使用这些命令。
我正在寻找类似的东西(在序言中),\newcommand{\unit}{\sffamily\unit}
但它不起作用。(我对使用非常不熟练newcommand
)
答案1
这units
包裹评论(在units.dtx
,第 328-329 行):
% The use of upright fonts for the dimension is forced in math
% mode. Units in text mode are typeset with the currently active font.
这是一个平均能量损失突出显示此输出:
\documentclass{beamer}% http://ctan.org/pkg/beamer
\usepackage{units}% http://ctan.org/pkg/units
\begin{document}
some text \unit[17]{mm} some more text
some text $\unit[17]{mm}$ some more text
\end{document}
为了避免这种情况,您有多种选择:
\unit
重新定义插入方式\mathsf
,而不是\mathrm
。您可以从源中复制定义并进行相应更新。以下更新仅修复了 的使用\mathrm
:\makeatletter \DeclareRobustCommand*{\unit}[2][]{% \begingroup \def\0{#1}% \expandafter \endgroup \ifx\0\@empty \else #1% \ifthenelse{\boolean{B@UnitsLoose}}{~}{\,}% \fi \ifthenelse{\boolean{mmode}}{\mathsf{#2}}{#2}% <---- Fixed } \makeatletter
将上述内容放在文档序言中(文档 > 设置... > LaTeX 序言)。有关宏为何包含在
\makeatletter
...\makeatother
对中的解释,请参阅做什么\makeatletter
和\makeatother
做什么?使用
etoolbox
的表弟xpatch
\unit
按照与上述建议类似的方式进行修补:\usepackage{xpatch}% http://ctan.org/pkg/xpatch % \xpatchcmd{<cmd>}{<search>}{<replace>}{<success>}{<failure>} \xpatchcmd{\unit}{\mathrm}{\mathsf}{}{}
在文档中进行全局更改,让全部
\mathrm
相当于\mathsf
:\let\mathrm\mathsf% \mathrm is equivalent to \mathsf
在所有上述情况下,MWE 现在输出:
现在建议使用siunitx
包裹相反,因为它允许更好地控制单位格式(全局和本地)。