让我们假设以下例子:
\documentclass{article}
\usepackage{amsmath}
\newcommand{\pt}{$p_{T}$}
\begin{document}
We analyse all cases of the transverse momentum \pt. First, let us
assume that $p_{T} \leq 50 \text{GeV}$.
\end{document}
结果是
邀请\pt
在第二个数学表达式中使用命令并像这样写
$\pt \leq 50 \text{GeV}$
如果我这样做,我会得到错误
! Missing $ inserted.
<inserted text>
$
l.6 ...omentum \pt. First, let us assume that $\pt
\leq 50 \text{GeV}$.
有什么建议吗?
答案1
答案2
问题在于\pt
宏包含$...$
。解决方案是使用\ensuremath
,以便$...$
在需要时添加 ,
\documentclass{article}
\usepackage{amsmath}
\newcommand{\pt}{\ensuremath{p_{T}}}
\begin{document}
We analyse all cases of the transverse momentum \pt. First, let us
assume that $p_{T} \leq 50 \text{GeV}$.
\end{document}
或者使用:
\documentclass{article}
\usepackage{amsmath}
\newcommand{\pt}{p_{T}}
\begin{document}
We analyse all cases of the transverse momentum $\pt$. First, let us
assume that $p_{T} \leq 50 \text{GeV}$.
\end{document}
就我个人而言,我更喜欢后者,因为显式比隐式更好,而且这可能更适合编辑器中的语法高亮显示。另请参阅何时不应使用 \ensuremath 作为数学宏?。
答案3
错误是因为您嵌套了两个数学环境。请将命令定义更改为:
\newcommand{\pt}{\ensuremath{p_{T}}}