在 tikz-cd 中操作单元格宽度

在 tikz-cd 中操作单元格宽度

这有点吹毛求疵,但我有点难以理解tikz-cd。我不确定 TikZ 术语,但我想我正在尝试找到一种方法来操纵单元格宽度。这是一个最简单的例子来说明我的问题:

\documentclass{minimal}
\usepackage{tikz, tikz-cd}

\begin{document}
\begin{tikzcd}
    A \rar \dar & B \rar \dar & C \dar \\
    D \rar      & E \rar      & F \oplus G
\end{tikzcd}
\end{document}

我的 MWE 输出

我想让从B到 的箭头的长度与从到 的C箭头的长度相同。我的第一个想法是我应该填充包含 的框(单元格?),使其宽度与包含 F + G 的框相同。我可以通过替换 来实现这一点,但肯定有更好的方法!有人知道怎么做吗?EF+GCC\quad C \quad

答案1

你必须欺骗tikz-cd自己认为右下角对象的宽度为零;然后你才能人为地将箭头缩短到它。

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

\begin{document}
\begin{tikzcd}
  A \arrow{r} \arrow{d} & B \arrow{r} \arrow{d} & C \arrow{d} \\
  D \arrow{r}           & E \arrow[end anchor={[xshift=-1.25em]}]{r}
  & \mathclap{F \oplus G}
\end{tikzcd}
\end{document}

该命令\mathclap由 提供mathtools

在此处输入图片描述

说实话,我更喜欢默认版本。

答案2

当然,您可以C在一个宽度恰好为的框内设置F \oplus G

在此处输入图片描述

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

\begin{document}
\begin{tikzcd}
    A \rar \dar & B \rar \dar & \makebox[\widthof{$F \oplus G$}]{$C$} \dar \\
    D \rar      & E \rar      & F \oplus G
\end{tikzcd}
\end{document}

calc的命令\widthof用于测量的宽度,并在精确宽度的中心框中F \oplus G设置。C

答案3

不是一个新问题:

代码

\documentclass{article}
\usepackage{tikz-cd}
\begin{document}\centering
\begin{tikzcd}
    A \rar \dar & B \rar \dar & C \dar \\
    D \rar      & E \rar      & F \oplus G
\end{tikzcd}\medskip\par
\begin{tikzcd}
    A \rar \dar & B \rar \dar & |[text width=width("$F\oplus G$"), align=center]|C \dar \\
    D \rar      & E \rar      & F \oplus G
\end{tikzcd}\bigskip

\begin{tikzcd}
    A \rar \dar & B \rar \dar & C \dar \\
    D \rar      & E \rar      & |[overlay]| F \oplus G
\end{tikzcd}\medskip\par
\begin{tikzcd}[nodes=overlay, row sep=large, column sep=large]
    A \rar \dar & B \rar \dar & C \dar \\
    D \rar      & E \rar      & F \oplus G
\end{tikzcd}\bigskip

\begin{tikzcd}[/tikz/column sep=
         {\pgfkeysvalueof{/tikz/commutative diagrams/column sep/large},between origins}]
    A \rar \dar & B \rar \dar & C \dar \\
    D \rar      & E \rar      & F \oplus G
\end{tikzcd}\bigskip
\end{document}

输出

在此处输入图片描述

相关内容