调整 tikz-cd 中单个单元格的大小

调整 tikz-cd 中单个单元格的大小

我想排版这样的图表

在此处输入图片描述

可以用

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

\begin{document}
    \begin{tikzcd}
        A\otimes B\arrow[d,"f", xshift=-3mm]\arrow[d,"g", xshift=3mm] \rar & C\arrow[d,"h"] \\
        X\otimes Y \rar & Z\\
    \end{tikzcd}
\end{document}

但是该值3mm非常主观,当您用更宽或更窄的术语(如 A_i 等)替换 A、B 等时,该值会发生变化。

似乎更自然的解决方案是将 A 和 B 放在不同的单元格中,并将连接器 \otimes 视为箭头,让 tikz-cd 整理间距。但以下在 \otimes 周围留出了太多空间

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

\begin{document}
    \begin{tikzcd}
        A\arrow[d,"f"] & \otimes & B\arrow[d,"g"] \rar & C\arrow[d,"h"] \\
        X & \otimes & Y \rar & Z\\
    \end{tikzcd}
\end{document}

在此处输入图片描述

有没有一种方法可以实现具有自适应间距的第一个图表,同时还可以利用第二种方法的人体工程学特性?

答案1

看起来在默认的列空间上增加0.6em就可以得到很好的效果。

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

\begin{document}

\begin{tikzcd}
  A\arrow[d,"f"] &[-\dimexpr\pgfmatrixcolumnsep+0.6em\relax]
  \otimes &[-\dimexpr\pgfmatrixcolumnsep+0.6em\relax]
  B\arrow[d,"g"] \arrow[r] &
  C\arrow[d,"h"]
\\
  X &
  \otimes &
  Y \arrow[r] &
  Z
\end{tikzcd}

\hspace*{0.4em}$X\otimes Y$ % for comparison

\end{document}

在此处输入图片描述

相关内容