我想用 tikzcd 绘制一个交换三角形,其中的条目大小不同。
\[
\begin{tikzcd}[column sep=15pt]
\mathcal{C} \ar{rr} \ar{dr} & & S(\tau) \ar{dl} \\
& \mathsf{Set} &
\end{tikzcd}
\]
这会产生轻微的不对称(右侧的箭头更倾斜,中间的条目不在中间):
一种解决方案是使用以下 tikzcd 选项:
cells={nodes={align=center,text width=\widthof{$S(\tau)$}}}
输出如下:
但是现在箭头不是从左侧入口开始的。该如何解决?
答案1
更新
Ti 中提到了此功能钾Z手册,即III.20.3.2。
\begin{tikzcd}[column sep={1cm,between origins}]
\mathcal{C}\ar{rr}\ar{dr} && S(\tau,..............)\ar{dl} \\
& \mathsf{Set}
\end{tikzcd}
旧答案
列分隔符&
接受可选参数。就像\\[6pt]
does 一样,&[6]
添加当前的 col sep
按6
...pt
默认。
\documentclass[tikz,border=9]{standalone}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}[column sep=15pt]
\mathcal{C}\ar{rr}\ar{dr} &[6]& S(\tau)\ar{dl} \\
& \mathsf{Set}
\end{tikzcd}
\end{document}
答案2
您可以添加[start anchor={[xshift=-5pt]}]
来移动箭头的起点。
平均能量损失
\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\[
\begin{tikzcd}[column sep=15pt,cells={nodes={align=center,text width=\widthof{$S(\tau)$}}}]
\mathcal{C} \ar[start anchor={[xshift=-5pt]}]{rr} \ar{dr} & & S(\tau) \ar{dl} \\
& \mathsf{Set} &
\end{tikzcd}
\]
\end{document}
答案3
为了实现箭头的真正对称,您必须增加左上节点的宽度和高度。
% arara: pdflatex
\documentclass{article}
\usepackage{mathtools}
\usepackage{tikz-cd}
\begin{document}
\[
\begin{tikzcd}[column sep=15pt]
\phantom{S(\tau)}\mathllap{\mathcal{C}}\ar{rr}\ar{dr} & & S(\tau)\ar{dl} \\
& \textsf{Set}
\end{tikzcd}
\]
\end{document}
如您所见,对角箭头的起点和终点完全相同(但却是镜像的)。
答案4
我提出一个针对psmatrix
环境的解决方案:
\documentclass[pdf]{article}
\usepackage{pst-node}
\begin{document}
\[ \psset{arrows=->, arrowinset=0.25, linewidth=0.6pt, nodesep=2pt, rowsep=0.9cm, colsep=0.7cm}
\begin{psmatrix}
\ \mathcal C & & S(\tau) \\%
& \mathsf {Set}
%%%
\ncline[nodesepB=1.5pt]{1,1}{1,3} \ncline{1,1}{2,2}
\ncline[nodesepA=1pt]{1,3}{2,2}
\end{psmatrix}
\]
\end{document}