![定义带有数学模式参数的宏时出现奇怪的错误](https://linux22.com/image/389897/%E5%AE%9A%E4%B9%89%E5%B8%A6%E6%9C%89%E6%95%B0%E5%AD%A6%E6%A8%A1%E5%BC%8F%E5%8F%82%E6%95%B0%E7%9A%84%E5%AE%8F%E6%97%B6%E5%87%BA%E7%8E%B0%E5%A5%87%E6%80%AA%E7%9A%84%E9%94%99%E8%AF%AF.png)
当我删除第二个 时\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}
。