元素序列如下
$\{x_n\}_{n\in\mathbb{N}}$
太难输入了。它们很常见,不仅是元素序列,还有集合族和一些其他类型的数学结构。
我想创建一个命令,在其中我可以输入一个字母,比如 x,以及一个集合,$\mathbb{N}$
比如输出如下序列
$\{x_n\}_{n\in\mathbb{N}}$
答案1
尽管最好先看看你之前尝试过的方法,但下面是一个可以如何操作的示例:
\documentclass{article}
\usepackage{amssymb}
\newcommand{\xinN}[2][N]{%
\{#2_n\}_{n\in\mathbb{#1}}%
}
\begin{document}
\begin{equation}
\xinN{x}
\end{equation}
\begin{equation}
\xinN{y}
\end{equation}
\begin{equation}
\xinN[C]{z}
\end{equation}
At inline text $\xinN{k}$.
\end{document}
该命令有一个强制参数,即您所说的 x,以及一个可选参数,默认为N
。
答案2
我需要学习打字更快。:)
为了多样化,我将添加另一个答案。我的方法与 Tobi 的方法类似,但它使用的是xparse
:
\documentclass{article}
\usepackage{amssymb}
\usepackage{xparse}
\DeclareDocumentCommand{\elementinset}{O{N}m}{\{#2_n\}_{n\in\mathbb{#1}}}
\begin{document}
$\elementinset{x}$
$\elementinset[Z]{x}$
\end{document}
就我个人而言,我喜欢它处理强制参数和可选参数的方式。:)
编辑: \ensuremath
也消失了。:)
答案3
如果下标中的集合始终是黑板粗体,则可以定义如下命令:
\newcommand{\mycmd}[2]{\ensuremath
\{x_#1\}_{#1\in\mathbb{#2}}}
并像使用它一样
\mycmd{n}{N}
意味着当它在运行文本中独立存在时\ensuremath
您不必使用它$...$
。第一个参数将填充两个位置(由 表示#1
),第二个参数将提供命名集合的字母。
当然,您可以使用任何您想要替换的名称\mycmd
;最好给它一个真正有意义的名字。
答案4
这是使用 xstring 包的另一种解决方案,以便可以非常轻松地编写序列。
\documentclass{article}
\usepackage{amssymb}
\usepackage{xstring}
\makeatletter
\newcommand{\sequ}[1]{%
% No argument is one short cut for \sequ{u,n}.
\ifx\relax#1\relax
\def\@setFound{0}
\def\@name{u}
\def\@index{n}
\else
% Looking for one set.
\IfSubStr{#1}{;}{
\def\@setFound{1}
\StrBehind{#1}{;}[\@set]
\StrBefore{#1}{;}[\@withoutSet]
}{
\def\@setFound{0}
\def\@withoutSet{#1}
}
% Looking for one name and one possible index.
\expandafter\IfSubStr\expandafter{\@withoutSet}{,}{
% We have to use a trick so as to use \@withoutSet like one string variable.
% This trick was given to me by the author of the package xstring.
\expandafter\StrBefore\expandafter{\@withoutSet}{,}[\@name]
\expandafter\StrBehind\expandafter{\@withoutSet}{,}[\@index]
}{
\def\@name{\@withoutSet}
\def\@index{n}
}
\fi
% Display it !
\ensuremath{%
\ifnum\@setFound=1
\left( {\@name}_{\@index} \right)_{\@index \in \mathbb{\@set}} %
\else
\left( {\@name}_{\@index} \right)%
\fi
}%
}
\makeatother
\begin{document}
\verb+$\sequ{x,k;Z}$+ : $\sequ{x,k;Z}$
\medskip
\verb+$\sequ{u;N}$+ : $\sequ{u;N}$
\medskip
\verb+$\sequ{x}$+ : $\sequ{x}$
\medskip
\verb+$\sequ{}$+ : $\sequ{}$
\end{document}