有没有一种简单的方法可以使用 来获得内衬数字(而不是旧式数字)\mathnormal{}
?我想要$\mathnormal{abc123}$
看起来像$abc123$
。
我的问题是我有一个运算符\Declaremathop[1]{Op^{#1}}
,其参数可以是数字或字母,并且在两种情况下我都希望参数看起来就像默认数学字体(使用$...$
),但是:
- 我
\Declaremathoperator[1]{Op^{#1}}
得到罗马字母; - 我
\Declaremathop[1]{Op^\mathnormal{#1}}
得到了旧式数字。
编辑:运算符实际上分为两部分,例如\Declaremathoperator{Op^{#1}Bla}
这就是为什么我无法将参数从运算符声明中隔离出来。
答案1
我不知道\Declaremathop
。
间接地做:
\usepackage{amsmath} % for \operatorname
\newcommand{\Op}[1]{\operatorname{Op}^{#1}}
然后\Op{a}
就会\Op{1}
做正确的事。
\documentclass{article}
\usepackage{amsmath} % for \operatorname
\newcommand{\Op}[1]{\operatorname{Op}^{#1}}
\begin{document}
$\Op{a}\ne\Op{1}$
\end{document}
对于“两部分”运算符,只需利用 TeX 在连续运算符之间插入一个窄空格的事实,这样我们就可以使用以下命令删除该空格\!
:
\documentclass{article}
\usepackage{amsmath} % for \operatorname
\newcommand{\OpBla}[1]{%
\operatorname{Op}^{#1}\!\operatorname{Bla}%
}
\begin{document}
$\OpBla{a}\ne\OpBla{1}$
\end{document}
答案2
更新以解释带有egreg
减号的测试,该减号(也许)不应转换为连字符:
\documentclass[12pt]{article}
\usepackage{amsmath}
\newcommand{\DeclareMathOp}[2]
{\DeclareRobustCommand{#1}{\qopname\relax o{Op^{\fam-1 #2}bla}}}
%\newcommand{\DeclareMathOp}[2]{\DeclareMathOperator{#1}{Op^{\fam-1 #2}bla}}
\DeclareMathOp \testletter {abc}
\DeclareMathOp \testdigits {123}
\DeclareMathOp \testmixed {a1b2c3}
\DeclareMathOp{\testminus}{a-b}
\begin{document}
\Huge
$\testletter\neq \testdigits\neq \testmixed $
$\testminus$
\end{document}