如何在 tikz-cd 中“设计”和编码 3x3x3 三维图表

如何在 tikz-cd 中“设计”和编码 3x3x3 三维图表

我需要在 tikz-cd 中制作一个 3x3x3 图表,我想知道对其进行编码的最佳方式是什么,以使 ti 尽可能清晰。

我对 tikz-cd 中使用交叉的 2x2x2 图有一点经验,但是当涉及到 3x3x3 时,交叉命令会失败:

\documentclass[11pt,a4paper]{article}
\usepackage[left=2cm,right=2cm,top=2.5cm,bottom=2.5cm]{geometry}
\usepackage{tikz-cd}
\newlength{\perspective}
\begin{document}
 \begin{tikzcd}[row sep=1.5em, column sep =.1]
 (k-1,j-1,i-1) \arrow{ddd} \arrow{dr}& &  & (k,j-1,i-1) \arrow{lll} \arrow{ddd}\arrow{dr}& &  & \\
{} & (k-1,j-1,i)\arrow[ddd, crossing over]\arrow{dr}&  & & (k,j-1,i)  \arrow[lll, crossing over]\arrow{ddd}\arrow{dr} &  & \\
{} & & (k-1,j-1,i+1)\arrow{ddd} & & & (k,j-1,i+1) \arrow{ddd}\arrow[lll, crossing over]&{}\\ 
(k-1,j,i-1)\arrow[ddd, crossing over]\arrow{dr} & &  & (k,j,i-1)  \arrow{lll}\arrow{ddd}\arrow{dr} & &  & \\
{} & (k-1,j,i)\arrow{ddd}\arrow{dr}&  & & (k,j,i) \arrow[lll, crossing over]\arrow{ddd}\arrow{dr}&  & \\
{} & & (k-1,j,i+1)\arrow{ddd} & & & (k,j,i+1) \arrow{lll}\arrow{ddd} &{}\\ 
(k-1,j+1,i-1)\arrow{dr} & &  & (k,j+1,i-1) \arrow{lll}\arrow{dr} & &  & \\
{} & (k-1,j+1,i)\arrow{dr}&  & & (k,j+1,i)\arrow{dr} \arrow{lll} &  & \\
{} & & (k-1,j+1,i+1) & & & (k,j+1,i+1) \arrow{lll} &{}
\end{tikzcd}

\end{document}

如您所见,从 (k,j,i) 到 (k-1,j,i) 的箭头应该位于从 (k-1,j-1,i+1) 开始的垂直箭头下方,但我不知道如何控制它。是否有一些现成的 3x3x3 图或一些资源,让我可以学习如何使用正确的重叠和下重叠来编写这种大图?

我找到了一种在 tikz-cd 中绘制图表的“等距”方式,这可能会大大提高可读性(https://tex.stackexchange.com/a/234151/47869) 但我不确定这个 \isofactor 和 \perspective 命令如何工作。是否有任何资源可以帮助您了解如何在 tikz-cd 中设计等距 3x3x3 图?

答案1

必要时,从“后”到“前”构建图表。使此图表更易于编写和编辑的一种方法是使用语法(行号和列号)crossing over在末尾绘制所有箭头。\arrow[from=r1-c1,to=r2-c2]

在此处输入图片描述

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

\begin{document}
\begin{tikzcd}[row sep=1.5em, column sep =.1]
 (k-1,j-1,i-1) & &  & (k,j-1,i-1) & & \\
 & (k-1,j-1,i) &  &  & (k,j-1,i) &  & \\
 & & (k-1,j-1,i+1) & & & (k,j-1,i+1) & \\ 
 (k-1,j,i-1) & & & (k,j,i-1) & & \\
 & (k-1,j,i) & & & (k,j,i) &  \\
 & & (k-1,j,i+1) & & & (k,j,i+1) \\ 
 (k-1,j+1,i-1) & &  & (k,j+1,i-1) & &   \\
 & (k-1,j+1,i) &  & & (k,j+1,i) &  \\
 & & (k-1,j+1,i+1) & & & (k,j+1,i+1)
 \arrow[from=1-1,to=4-1]\arrow[from=4-1,to=7-1]
 \arrow[from=1-4,to=4-4]\arrow[from=4-4,to=7-4]
 \arrow[from=1-4,to=1-1]\arrow[from=7-4,to=7-1]
 \arrow[from=4-4,to=4-1]
 \arrow[from=2-2,to=5-2, crossing over]\arrow[from=5-2,to=8-2, crossing over]
 \arrow[from=2-5,to=5-5]\arrow[from=5-5,to=8-5]
 \arrow[from=2-5,to=2-2, crossing over]\arrow[from=8-5,to=8-2] 
 \arrow[from=5-5,to=5-2, crossing over] 
 \arrow[from=3-3,to=6-3, crossing over]\arrow[from=6-3,to=9-3, crossing over]
 \arrow[from=3-6,to=6-6]\arrow[from=6-6,to=9-6]
 \arrow[from=3-6,to=3-3, crossing over]\arrow[from=9-6,to=9-3] 
 \arrow[from=6-6,to=6-3, crossing over] 
 \arrow[from=1-1,to=2-2]\arrow[from=2-2,to=3-3]
 \arrow[from=4-1,to=5-2]\arrow[from=5-2,to=6-3]
 \arrow[from=7-1,to=8-2]\arrow[from=8-2,to=9-3]
 \arrow[from=1-4,to=2-5]\arrow[from=2-5,to=3-6]
 \arrow[from=4-4,to=5-5]\arrow[from=5-5,to=6-6]
 \arrow[from=7-4,to=8-5]\arrow[from=8-5,to=9-6]
\end{tikzcd}

\end{document}

答案2

这应该是一条评论,但它太长了。Sandy G 给出的答案很棒,很充分,包含了主要思想,交叉箭头应该写在后面的箭头后面 (+1)。无论如何,也许 OP 有比坐标更好的方法来记住图中的对象。在这种情况下,为alias对象添加一个键可能是一个好方法。这远非答案,但想法如下:

\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}
|[alias=x]|A & B\arrow{ld}\\
C & |[alias=y]|D
\arrow[from=1-1, to=2-2]%using coordinates
\arrow[blue, from=x, to=y, crossing over]%using a good name to the objects in the diagram 
\end{tikzcd}
\end{document}

在此处输入图片描述

相关内容