如何有效地定义 \newcommand 进行映射

如何有效地定义 \newcommand 进行映射

我在为 latex 定义新命令时遇到了麻烦。我想做什么?定义一个 \newcommand 来定义映射,如下所示:

\documentclass[english]{scrreprt}
\usepackage{amsmath}
\usepackage{amssymb}
\begin{document}
f : \begin{align*}
   & \mathbb{N} \to \mathbb{R} \\
   & x \mapsto f(x) 
\end{align*}}
\end{document}

我的问题是,我尝试使用对齐环境(因为它不需要数学模式),如下所示:

\newcommand{\appli}[5]{%
{#1}\colon \begin{align*}%
  & {#2} \longrightarrow {#3}\\%
  & {#4} \longmapsto {#5}% 
\end{align*}}

然后尝试编译写入:\appli{f,\mathb{R},\mathbb{R},x,f(x)},但它不起作用。

接下来我尝试使用数组环境,如下所示:

\newcommand{\appli}[5]{%
{#1}\colon \begin{array}{rcl}%
    & {#2} \longrightarrow {#3}\\%
    & {#4} \longmapsto {#5}%
\end{array}}

并编译写入:$\appli{f,\mathbb{R},\mathbb{R},x,f(x)}$。仍然不起作用。我也尝试过不写 \mathbb{} 只写 R 来看看它是否有效,但仍然不起作用。

我得到的是一堆错误,说我漏掉了 } 或 $,或者我在编译时没有处于数学模式。坦率地说,我不是专家,我不明白很多错误,但我想轻松地定义映射。

非常感谢您的帮助。

答案1

使用\NewDocumentCommandfrom xparse,它可以工作:

    \documentclass{article}
    \usepackage{xparse}
    \usepackage{amsmath, amsfonts}
    \NewDocumentCommand{\appli}{mmmmm}{%
    \[ {#1}\colon \begin{aligned}[t]%
      {#2} & \longrightarrow {#3}\\%
     {#4} & \longmapsto {#5}%
    \end{aligned} \]}

        \begin{document}

    \appli{f}{\mathbb{N}}{\mathbb{R}}{x}{f(x)}

        \end{document} 

在此处输入图片描述

答案2

非常感谢 Ulrike Fischer 和 Bernard 的回答!

我所写内容的主要问题是,正如 Ulrike 指出的那样,“TeX 中的参数用括号括起来,而不是逗号列表”,这意味着当我编写时,\appli{f,\mathb{R},\mathbb{R},x,f(x)}编译无法工作。解决方案是改为编写\appli{f}{\mathb{R}}{\mathbb{R}}{x}{f(x)}

尽管如此,我仍然对对齐环境感到兴奋,因为我想定义一个仍然可以写在句子中间的命令,并且定义一个在行高处带有地图名称的地图,所以我尝试保留数组环境,我得到的是:

\newcommand{\appli}[5]{%
${#1}$:$\begin{array}{rcl}%
{#2} & \longrightarrow & {#3}\\%
{#4} & \longmapsto & {#5}%
\end{array}$%
}

\appli{u}{\mathbb{N}}{\mathbb{R}}{n}{u(n)}\newline

通过这种方式写作\newcommand我得到了我想要的:)

相关内容