如果我使用这个简单的新命令......
\newcommand{\Lem}[3]{
\begin{lemma}
{#1}
\begin{itemize}
\item{#2}
\item{#3}
\end{itemize}
\end{lemma}
}
例如,如果列表部分只有一个项目,我该如何使用它。谢谢
答案1
你需要一些语法来分隔项目,您可以使用{..}{...}
或(如果项目中没有逗号,{... , ... , ...}
但我会使用标准乳胶语法 \item ... \item ...
,那么您只需要
\newcommand{\Lem}[2]{%<<<
\begin{lemma}%<--
{#1}%
\begin{itemize}
#2
\end{itemize}%<
\end{lemma}%<
}
\Lem{foo}{\item this \item that}
虽然一般我会避免在命令中隐藏环境,但环境是乳胶语法的核心部分,您可以获得更好的上下文语法帮助和更多功能,例如使用\verb
或minted
如果您使用环境。
\newenvironment{\Lem}[]{%<<<
\begin{lemma}%<--
{#1}%
\begin{itemize}%
}
{%
\end{itemize}%<
\end{lemma}%<
}
\begin{Lem}{foo}
\item this
\item that
\end{Lem}
答案2
该命令\Lem
用 定义\NewDocumentCommand
。第一个参数是必需的。第二到第九个参数是可选的。它用于\IfValueT
测试参数是否为空。
\documentclass[border=6pt,varwidth]{standalone}
\usepackage{amsthm}
\newtheorem{lemma}{Lemma}
\NewDocumentCommand{\Lem}{moooooooo}{\begin{lemma}
#1
\IfValueT{#2}{\begin{itemize}
\IfValueT{#2}{\item #2}
\IfValueT{#3}{\item #3}
\IfValueT{#4}{\item #4}
\IfValueT{#5}{\item #5}
\IfValueT{#6}{\item #6}
\IfValueT{#7}{\item #7}
\IfValueT{#8}{\item #8}
\IfValueT{#9}{\item #9}
\end{itemize}}\end{lemma}}
\begin{document}
\Lem{Example 1} end
\Lem{Example 2}[item 1] end
\Lem{Example 3}[item 1][item 2][item 3][item 4] end
\end{document}
答案3
您可以将项目放在循环中,例如使用包\foreach
中的pgffor
项目(tikz
如果您正在使用,则包含在内)。请注意,如果项目包含逗号,则必须将其括在括号中。
\documentclass{article}
\usepackage{pgffor}
\newtheorem{lemma}{Lemma}
\newcommand{\Lem}[2]{
\begin{lemma}{#1}
\begin{itemize}
\foreach \i in {#2}
{\item \i}
\end{itemize}
\end{lemma}
}
\begin{document}
\Lem{Here is a lemma.}{Item.}
\Lem{Here is another lemma.}{Item 1., Item 2., {Items 3, 4, 5.}}
\end{document}
答案4
更接近原始代码的版本,用于检查是否#3
为空。如果为空,则不执行任何操作,如果为参数添加了\else
一个\item
。这要求始终提供参数(\Lem{Here is a lemma.}{Item.}{}
例如),与matexmatics 的答案它使用实际的可选参数。
\documentclass{article}
\newtheorem{lemma}{Lemma}
\newcommand{\Lem}[3]{
\begin{lemma}{#1}
\begin{itemize}
\item #2
\if\relax\detokenize{#3}\else
\item #3
\fi
\end{itemize}
\end{lemma}
}
\begin{document}
\Lem{Here is a lemma.}{Item.}{}
\Lem{Here is another lemma.}{Item 1.}{Item 2.}
\end{document}