如何在 tikz-cd 图中包含包含/子组关系

如何在 tikz-cd 图中包含包含/子组关系

我想制作一个 tikz-cd 图(为了简单起见,我们只制作一个垂直箭头,尽管我实际上使用的是正方形),它还表示某些对象是其他集合的子集或其他组的子组。但是,对于我想出的所有解决方案,我最终得到的要么是奇怪的间距,要么是奇怪的箭头位置(可以在 MWE 中找到两个)。有没有正确的(最好是非黑客的)方法来做到这一点?

梅威瑟:

\documentclass{article}

\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}
A&\supseteq&B\ar[d]\\
&&G&\leq&H
\end{tikzcd}

\begin{tikzcd}
A\supseteq B\ar[d]&\\
G\leq H
\end{tikzcd}
\end{document

编辑:不幸的是,建议的解决方案并没有真正解决我的问题。我还想包含更大的图表(我的实际用例是方形图,但理想情况下,对于更奇特的图表也应该能够做到这一点)。更重要的是,如果图表中的某个项目的标签明显更长(就像我的用例一样),所有解决方案似乎都无法正常工作。

以下是修改后的 MWE:

\documentclass{article}

    \usepackage{tikz-cd}
    \begin{document}
    \begin{tikzcd}
    A&\supseteq&C\ar[d]\ar[dr]\ar[r]&\textrm{SomewhatLongLabel}\ar[d]&\leq&\textrm{AlsoQuiteLong}\\
    &&F&G&\leq&H
    \end{tikzcd}

\end{document}

(如果您能以某种方式将箭头从 A 到 F 很好地衔接起来,则可以获得加分,但目前我不需要它。)

答案1

您可以使用以下代码LaRiFaRi 的回答

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

\tikzset{
  symbol/.style={
    draw=none,
    every to/.append style={
      edge node={node [sloped, allow upside down, auto=false]{$#1$}}}
  }
}

\begin{document}

\begin{tikzcd}[column sep=.7em]
A \arrow[r,symbol=\supseteq] &B \arrow[d] \\
& G \arrow[r,symbol=\leq] & H
\end{tikzcd}

\end{document}

在此处输入图片描述

答案2

您可以使用以下方式控制行/列之间的间距:

  • [row sep=..., column sep=...]作为环境选项tikzcd,适用于所有行/列
  • [...]之后带有\\&,分别表示单行或单列。

您可以在这里看到这两种情况:

\documentclass{article} 
\usepackage{tikz-cd} 
\begin{document}
Try this way:\vspace{3ex}

\begin{tikzcd}[column sep=-4pt,row sep=10pt]
A&\supseteq&B\ar[d]\\ 
G&\leq&H 
\end{tikzcd} 

\vspace{3ex}Or this way:\vspace{3ex}

\begin{tikzcd}
A&[-28pt]\supseteq&[-28pt]B\ar[d]\\[-7pt] 
G&\leq&H 
\end{tikzcd} 
\end{document}

在此处输入图片描述

答案3

这是一个解决方案。我pstricks在普通align*环境中添加了另一个带有代码的简单解决方案:

\documentclass{article}
\usepackage{amsmath}
\usepackage{pst-node}
\usepackage{auto-pst-pdf}% for compilation with pdflatex
\usepackage{tikz-cd}

\begin{document}

\begin{tikzcd}[column sep=-0.5em, row sep=0.8em]
A&\supseteq&B\ar[d]\\
G&\leq&H
\end{tikzcd}
\bigskip

\begin{postscript}
\begin{align*}
A & \supseteq \Rnode{B}{B}&\\[2ex]
G & \leq \Rnode{H}{H}
\ncline[linewidth=0.4pt, arrows =->, arrowinset=0.12, nodesep=0.6ex]{B}{H}
\end{align*}
\end{postscript}

\end{document} 

在此处输入图片描述

编辑:

您更新的 mwe 的可能性如下:

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz-cd}
\usepackage[usestackEOL]{stackengine}

\begin{document}

\begin{tikzcd}
A\drar\rar[phantom,"\supseteq" ]&C\dar\ar[dr]\rar&\Centerstack[l]{Somewhat \\LongLabel}\ar[d]\ar[r, phantom, "\leq"]&\textrm{AlsoQuiteLong}\\
&F&G&H
\end{tikzcd}

\end{document} 

在此处输入图片描述

相关内容