我想制作一个 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}