我想通过其作用来定义一个数学函数。比如
\documentclass{article}
\begin{document}
\[
\begin{array}{cccc}
f\colon & R\times R & \rightarrow & R\times R\\
& v & \mapsto & f(v)
\end{array}
\]
\end{document}
这样,间距就太糟糕了。产生间距的最佳方法是什么?
我希望第二行的元素相对于第一行的元素居中。
答案1
我会选择一些简单的,至少对我来说,非常经典的东西:
\documentclass{article}
\usepackage{mathtools}
\begin{document}
\[
f\colon R\times R \to R\times R,\quad v \mapsto f(v)
\]
or
\[
f\colon \biggl\{\begin{array}{@{}r@{\;}l@{}}
R\times R &\to R\times R
,\\
v &\mapsto f(v)
\end{array}
\]
\end{document}
答案2
可以array
通过删除列间空格来实现。但结果无论如何都不太好。
这里还有其他三种方法可以满足您的需求,按优先顺序排列。
\documentclass{article}
\usepackage[tiny]{titlesec} % just to get small section titles
\usepackage{amsmath}
\usepackage[all,cmtip]{xy}
\usepackage{tikz-cd}
\begin{document}
\section{First way}
With only \texttt{amsmath}
\begin{align*}
f\colon R\times R &\to R\times R\\
v & \mapsto f(v)
\end{align*}
\section{Second way}
With \texttt{amsmath} and \texttt{xy}
\[
\xymatrix@R=0pt@C=1pc{
f\colon R\times R \ar[r] & R\times R \\
{\hphantom{f\colon{}}} v \ar@{|->}[r] & f(v)
}
\]
\section{Third way}
With \texttt{amsmath} and \texttt{tikz-cd}
\[
\begin{tikzcd}[row sep=0pt,column sep=1pc]
f\colon R\times R \arrow{r} & R\times R \\
{\hphantom{f\colon{}}} v \arrow[mapsto]{r} & f(v)
\end{tikzcd}
\]
\end{document}
答案3
你为什么要使用 an array
?假设你正在使用这个amsmath
包(推荐),我只需写
\begin{gather*}
f\colon R\times R \to R\times R
\\
v \mapsto f(v)
\end{gather}
答案4
我发现的另一个解决方案是
\begin{align*}
f\colon R\times R &\to R\times R\\
\setbox0\hbox{$R\times R$}%
\makebox[\wd0][c]{$v$}&
\setbox1\hbox{$R\times R$}%
\mapsto\makebox[\wd1][c]{$f(v)$}
\end{align*}
这很接近我的意图:我希望元素相对于集合位于中心,但的\mapsto
长度必须相同\to
。
我不喜欢这个解决方案的地方在于我必须自己决定两者中哪个更大(集合或元素),并且我必须手动修改代码;例如:
\begin{align*}
\setbox0\hbox{$(v_1,v_2)$}%
f\colon\makebox[\wd0][c]{$R^2$}&
\setbox1\hbox{$f((v_1,v_2))$}%
\to\makebox[\wd1][c]{$R^2$}\\
(v_1,v_2)&\mapsto f((v_1,v_2))%
\end{align*}