包含元素及其图像的功能映射

包含元素及其图像的功能映射

我正在尝试制作一个命令,它将接受函数名称、域、陪域、任意元素以及该元素映射到的内容,并输出一个图表。图表的第一行将是标准的 f:X-> Y。第二行将是域和陪域的旋转成员符号。第三行将类似于 x \mapsto f(x)。

到目前为止,我已经尝试过以下方法:

\usepackage{graphicx}
 \newcommand{\rotin}{\rotatebox[origin=c]{90}{$\in$}}
 \begin{tikzpicture}
        \node (functionName) at (0, 0) {f:};
        \node[right = of functionName] (domain) {A};
        \node[below = 1mm of domain] (rotinleft) {$\rotin$};
        \node[below = 1mm of rotinleft] (element) {x};
        \node[right = 1cm of domain] (codomain) {B};
        \node[below = 0.5mm of codomain] (rotinright) {$\rotin$};
        \node[below = 0.5mm of rotinright] (image) {f(x)};
        \draw[->] (domain) -- (codomain);
        \draw[|->] (element) -- (image);
    \end{tikzpicture}

我对相对定位还不熟悉,这个看起来不太好。我希望能够做类似上面的操作,但间距和箭头长度会自动调整。我从来不想要超短的箭头。

答案1

您可以使用以下代码https://tex.stackexchange.com/a/216042/4427但我认为旋转\in没有任何用处。

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz-cd}

% from https://tex.stackexchange.com/a/216042/
\tikzset{
  symbol/.style={
    draw=none,
    every to/.append style={
      edge node={node [sloped, allow upside down, auto=false]{$#1$}}}
  }
}

\newcommand{\function}[5]{%
  \begin{tikzcd}[
    column sep=2em,
    row sep=1ex,
    ampersand replacement=\&
  ]
  #1\colon \&[-3em]
  #2\vphantom{#3} \arrow[r] \&
  #3\vphantom{#2} \\
  \&
  #4\vphantom{#5} \arrow[u,symbol=\in] \arrow[r,mapsto] \&
  #5\vphantom{#4} \arrow[u,symbol=\in]
  \end{tikzcd}%
}

\begin{document}

\begin{gather*}
\function{f}{X}{Y}{x}{y} \\
\function{\Phi}{S_n}{S_n}{\sigma}{\tau\sigma\tau^{-1}}
\end{gather*}

\end{document}

在此处输入图片描述

答案2

尽管我同意 @egreg 的观点,即有多种排版方式,但我猜你的问题是为什么节点之间的距离如此之大。这是因为预定义的距离比你想要的要大,但你可以将其设置为你喜欢的任何值。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
 \begin{tikzpicture}[node distance=1mm]
        \node (functionName) at (0, 0) {$f$:};
        \node[right = of functionName] (domain) {$A$};
        \node[below = 2mm of domain] (element) {$x$};
        \path (element)--(domain)node[midway,sloped] {$\in$};
        \node[right = 1cm of domain] (codomain) {$B$};
        \node at (element-|codomain) (image) {$f(x)$};
        \path (image)--(codomain)node[midway,sloped] {$\in$};
        \draw[->] (domain) -- (codomain);
        \draw[|->] (element) -- (image);
    \end{tikzpicture}
\end{document}

在此处输入图片描述

使用 Ti 时Z,实在没有必要用\rotatebox

相关内容