我想排版这样的图表
可以用
\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}