定义带有数学模式参数的宏时出现奇怪的错误

定义带有数学模式参数的宏时出现奇怪的错误

当我删除第二个 时\item,编译正常。但是,对于第二个\item,我得到了ERROR: Missing $ inserted并且数学呈现不正确:

\documentclass[12pt]{article}

\newcommand \frob[2] {\langle #1,#2 \rangle_F}

\begin{document}
\begin{itemize}

\item What I want: $ 
\langle A,B \rangle_F 
\geq 
\langle C,D \rangle_F
$. 

\item What I get: $ 
\frob{A,B} 
\geq 
\frob{A,B} 
$.

\end{itemize}
\end{document}

问题

将不胜感激任何关于此问题的帮助!

答案1

你定义了\frob采取参数

\newcommand{\frob}[2]

然而你只是路过而已当你像这样使用它时的论点

\frob{A,B}

这是因为参数指定为代币或使用大括号 {... },不是以逗号分隔的元素列表。

由于您在传递时打印的是相同的内容,因此以下内容可能会更简单:

在此处输入图片描述

\documentclass{article}

\newcommand{\frob}[1]{\langle #1 \rangle_F}

\begin{document}

\begin{itemize}
  \item
    What I want: $ 
    \langle A,B \rangle_F 
    \geq 
    \langle C,D \rangle_F
    $. 

  \item 
    What I get: $ 
    \frob{A,B} 
    \geq 
    \frob{A,B} 
    $.
\end{itemize}

\end{document}

如果你真的想传递两个参数,那么你的定义应该是

\newcommand{\frob}[2]{\langle #1, #2 \rangle_F}

您可以通过 使用它\frob{A}{B}

相关内容