括号中特殊元素的新命令

括号中特殊元素的新命令

元素序列如下

$\{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}

相关内容