![定义一个新命令,其参数不需要括号](https://linux22.com/image/285006/%E5%AE%9A%E4%B9%89%E4%B8%80%E4%B8%AA%E6%96%B0%E5%91%BD%E4%BB%A4%EF%BC%8C%E5%85%B6%E5%8F%82%E6%95%B0%E4%B8%8D%E9%9C%80%E8%A6%81%E6%8B%AC%E5%8F%B7.png)
我创建了一个\newcommand
以便能够快速创建单项列表。
\newcommand{\itemm}[1]{\begin{itemize}\item #1 \end{itemize}}
当我使用 时\item
,我不必在文本周围添加括号。有没有办法让我的新宏在\itemm
没有括号的情况下工作?
例如
\begin{itemize}
\item Pennsylvania % no braces works fine
\end{itemize}
\itemm {Philadelphia} % \itemm currently requires braces
% or only the first character is itemized
\itemm Pittsburg % I would like \itemm to not require braces
% and to itemize the entire string
答案1
正如评论中所述,这可能是一个坏主意,因为它与 LaTeX 语法不一致。不使用括号的原因itemize
是它已经处于环境中。文本不是的参数,\item
因为它\item
指示了文本应该在哪里划分。然而,在你的用法中,文本应该被看作是的参数\itemm
,所以括号是合适的。
也就是说,可以使用纯 tex 来实现\def
。
\def\itemm #1 {\begin{itemize}\item #1\end{itemize}}
定义的命令将下一个空格(空格、制表符或换行符,但不是固定空格~
)之前的所有内容作为参数。