如何用 Tikz 制作这个 3D 图表?

如何用 Tikz 制作这个 3D 图表?

我想把这个图表纳入我的工作中

在此处输入图片描述

但是,我不知道如何开始,因为我从未使用过 tikz,而是使用更普通的 tikzcd 来制作交换图。我应该指出三件事,我绝对不知道如何将它们引入任何类型的图表中:

  • 在图中,出现了一个圆圈,里面有一个 1。它应该出现在它所在的位置,并且按照它原来的位置出现。
  • 箭头
  • 如果您注意到,与两个立方体相接的面的元素会有一些倾斜,因此它们与相应的线平行。模仿这种效果会很酷。

我知道公开提出问题的人尝试过的一些代码是习惯性的,但就我而言,我对 tikz 完全没有经验......

很抱歉造成您的不便,谢谢。

答案1

第一次尝试。代码不太好,但可以使用3d库。

\documentclass{standalone}
\newcommand{\Tcall}{\mathcal{T}}
\newcommand{\Scall}{\mathcal{S}}
\usepackage{tikz}
\usetikzlibrary{3d,positioning}
\begin{document}
\begin{tikzpicture}[z={(10:10mm)},x={(-45:5mm)}]
\def\step{2cm}
\begin{scope}[canvas is zy plane at x=-2]
\node(fGs){$\Gamma(\overline{\Scall})$};
\node[right=\step of fGs,transform shape](H1MS) {$H^1(M,\Scall)$};
\node[right=\step of H1MS,transform shape] (f0) {$0$};
\node[right=\step of f0,transform shape] (v1) {};

\node[below=\step of fGs](fG) {$\Gamma(\Scall)$};
\node[right=\step of fG,transform shape](H1MSs) {$\tilde{H}^1(M,\Scall)$};
\node[right=\step of H1MSs,transform shape] (s0) {$0$};
\node[right=\step of s0,transform shape] (v2) {};

\draw[->,transform shape] (fGs) -- (H1MS);
\draw[->,transform shape] (H1MS) -- (f0);
\draw (f0) -- (v1);
\draw[->,transform shape] (fGs) -- (fG);

\draw[->,transform shape] (fG) -- (H1MSs);
\draw[->,transform shape] (H1MSs) -- (s0);
\draw (s0) -- (v2);
\draw[->,transform shape] (H1MS) -- (H1MSs);
\draw[->,transform shape] (f0) -- (s0);
\end{scope}

\begin{scope}[canvas is zy plane at x=2]
\node(fIs){$\Gamma(\overline{\Tcall})$};
\node[right=\step of fIs,transform shape](H1MI) {$H^1(M,\Tcall)$};
\node[right=\step of H1MI,transform shape] (t0) {$0$};
\node[right=\step of t0,transform shape] (v3) {};

\node[below=\step of fIs](fI) {$\Gamma(\Tcall)$};
\node[right=\step of fI,transform shape](H1MIs) {$\tilde{H}^1(M,\Tcall)$};
\node[right=\step of H1MIs,transform shape] (fo0) {$0$};
\node[right=\step of fo0,transform shape] (v4) {};

\draw[->,transform shape] (fIs) -- (H1MI);
\draw[->,transform shape] (H1MI) -- (t0);
\draw (t0) -- (v3);
\draw[->,transform shape] (fIs) -- (fI);

\draw[->,transform shape] (fI) -- (H1MIs);
\draw[->,transform shape] (H1MIs) -- (fo0);
\draw (fo0) -- (v4);
\draw[->,transform shape] (H1MI) -- (H1MIs);
\draw[->,transform shape] (t0) -- (fo0);
\end{scope}

\draw[->] (fGs) -- (fIs);
\draw[->] (fG) -- (fI);
\draw[->] (H1MS) -- (H1MI);
\draw[->] (H1MSs) -- (H1MIs);
\draw[->] (f0) -- (t0);
\draw[->] (s0) -- (fo0);


\path (H1MS) -- (H1MIs) node[midway, circle, inner sep=0pt,draw] {1}; 
\end{tikzpicture}
\end{document}

在此处输入图片描述

有一些小进步

\documentclass{standalone}
\newcommand{\Tcall}{\mathcal{T}}
\newcommand{\Scall}{\mathcal{S}}
\usepackage{tikz}
\usetikzlibrary{3d,positioning,decorations.markings}
\begin{document}
\begin{tikzpicture}[z={(10:10mm)},x={(-45:5mm)},
decoration={markings,
mark=at position .65 with {\arrow[transform shape]{latex}}},
conn/.style={thick,postaction={decorate}}]
\def\step{2cm}
\begin{scope}[canvas is zy plane at x=-2]
\node(fGs){$\Gamma(\overline{\Scall})$};
\node[right=\step of fGs,transform shape](H1MS) {$H^1(M,\Scall)$};
\node[right=\step of H1MS,transform shape] (f0) {$0$};
\node[right=\step of f0,transform shape] (v1) {};

\node[below=\step of fGs](fG) {$\Gamma(\Scall)$};
\node[right=\step of fG,transform shape](H1MSs) {$\tilde{H}^1(M,\Scall)$};
\node[right=\step of H1MSs,transform shape] (s0) {$0$};
\node[right=\step of s0,transform shape] (v2) {};

\draw[conn] (fGs) -- (H1MS);
\draw[conn] (H1MS) -- (f0);
\draw[thick] (f0) -- (v1);
\draw[conn] (fGs) -- (fG);

\draw[conn] (fG) -- (H1MSs);
\draw[conn] (H1MSs) -- (s0);
\draw[thick] (s0) -- (v2);
\draw[conn] (H1MS) -- (H1MSs);
\draw[thick] (f0) -- (s0);
\end{scope}

\begin{scope}[canvas is zy plane at x=2]
\node(fIs){$\Gamma(\overline{\Tcall})$};
\node[right=\step of fIs,transform shape](H1MI) {$H^1(M,\Tcall)$};
\node[right=\step of H1MI,transform shape] (t0) {$0$};
\node[right=\step of t0,transform shape] (v3) {};

\node[below=\step of fIs](fI) {$\Gamma(\Tcall)$};
\node[right=\step of fI,transform shape](H1MIs) {$\tilde{H}^1(M,\Tcall)$};
\node[right=\step of H1MIs,transform shape] (fo0) {$0$};
\node[right=\step of fo0,transform shape] (v4) {};

\draw[conn] (fIs) -- (H1MI);
\draw[conn] (H1MI) -- (t0);
\draw[thick] (t0) -- (v3);
\draw[conn] (fIs) -- (fI);

\draw[conn] (fI) -- (H1MIs);
\draw[conn] (H1MIs) -- (fo0);
\draw[thick] (fo0) -- (v4);
\draw[conn] (H1MI) -- (H1MIs);
\draw[thick] (t0) -- (fo0);
\end{scope}

\draw[conn] (fGs) -- (fIs);
\draw[conn] (fG) -- (fI);
\draw[conn] (H1MS) -- (H1MI);
\draw[conn] (H1MSs) -- (H1MIs);
\draw[thick] (f0) -- (t0);
\draw[thick] (s0) -- (fo0);


\path (H1MS) -- (H1MIs) node[midway, circle, inner sep=0pt,draw] {1}; 
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

pst-node和的可能性pst-arrow

\documentclass{article}
\usepackage{fourier} 
\usepackage{pst-node, pst-arrow}
\usepackage{auto-pst-pdf}

\begin{document}

\[ \begin{psmatrix}[rowsep=0.6cm, colsep=1.7cm]
& & & [name=0E] 0 & \pnode[0,2.7ex]{IE}\\
    [name=GE]\Gamma(\bar{\mathcal{E}}) & & & & [name=0T] 0 &  \pnode[0,2.7ex]{IT}\\
    & [name=GT]\Gamma(\,\overline{\!\mathcal{T}\!}\,) \\
     & & & [name=0Eb] 0 &  \pnode[0,2.7ex]{IEb} \\
  [name=GEb] \Gamma(\bar{\mathcal{E}}) & & & & [name=0Tb]0 &  \pnode[0,2.7ex]{ITb} \\
    & [name=GTb] \Gamma(\,\overline{\!\mathcal{T}\!}\,)
    \end{psmatrix}
    {\psset{linestyle=none, nrot=:U}%
    \ncline{GE}{0E}\ncput*{\rnode{HE}{H^1(M, \mathcal{E})}}
    \ncline{GT}{0T}\ncput*{\rnode{HT}{H^1(M, \mathcal{T})}}
    \ncline{GEb}{0Eb}\ncput*{\rnode{HEb}{\tilde{H}^1(M, \mathcal{E})}}
    \ncline{GTb}{0Tb}\ncput*{\rnode{HTb}{\tilde{H}^1(M, \mathcal{T})}}
    }%
    \ncline{0E}{0T}\ncline{0T}{0Tb}\ncline{0Tb}{0Eb}\ncline{0E}{0Eb}
    {\psset{nodesepA=1pt} %
    \ncline{0E}{IE}\ncline{0T}{IT} \ncline{0Eb}{IEb}\ncline{0Tb}{ITb}}%
    {\psset{arrowinset=0.12, ArrowInside=->, nodesepB=3pt}%
    \ncline{HE}{0E}
    \ncline{HT}{0T}
    \ncline{HEb}{0Eb}
    \ncline{HTb}{0Tb}
    \psset{ArrowInsidePos=0.66, }
    \ncline{GE}{GEb}\ncline{GEb}{GTb}
    \ncline{GE}{GT}\ncline{GT}{GTb}
    \ncline{HE}{HT}\ncline{HT}{HTb}
    \ncline{HE}{HEb}\ncline{HEb}{HTb}
    }
    \psset{arrows=->}
    \ncline{GE}{HE}\ncline{GT}{HT}
    \ncline{GEb}{HEb}\ncline{GTb}{HTb}
    %
    \]

    \end{document} 

在此处输入图片描述

相关内容