在 tikzcd 中標準化條目大小的最簡單方法

在 tikzcd 中標準化條目大小的最簡單方法

我一直在使用 tikzcd 繪製交換圖,其中一個條目比其他條目大得多。我希望條目大小能夠以某種方式“標準化”,這樣顯示就不會太不均勻,並且我希望能夠針對每個圖表分別在本地調整它們。這是一個典型的例子:

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

\usetikzlibrary{matrix}
\usetikzlibrary{arrows}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{decorations.pathmorphing}
\usetikzlibrary{decorations.markings}
\usetikzlibrary{trees}
\usetikzlibrary{backgrounds}
\usetikzlibrary{graphs}
\usetikzlibrary{graphdrawing}
\usegdlibrary{force}

\tikzset{
  commutative diagrams/.cd, 
  arrow style=tikz, 
  diagrams={>={Straight Barb[scale=0.9]}, semithick}
}

\begin{document}

\[
\begin{tikzcd}
A \arrow[rr, bend right, dashed, "i"'] \arrow[dr, equals] \arrow[rr, phantom, "\bot"] & & \hom_B(B,f) \arrow[dl, two heads, "p_1"] \arrow[ll, bend right, two heads, "p_1"'] \\ & A
\end{tikzcd}
\]
\end{document}

間隔不佳的附屬物

答案1

您可以使用以下命令微調標籤的位置pos=<fraction>

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

\usetikzlibrary{arrows}
\usetikzlibrary{arrows.meta}

\tikzset{
  commutative diagrams/.cd, 
  arrow style=tikz, 
  diagrams={>={Straight Barb[scale=0.9]}, semithick}
}

\begin{document}

\[
\begin{tikzcd}[column sep={4em,between origins}]
A
  \arrow[rr, bend right, dashed, "i"' pos=0.57]
  \arrow[dr, equals]
& \bot &
\hom_B(B,f)
  \arrow[dl, two heads, "p_1"]
  \arrow[ll, bend right, two heads, "p_1"' pos=0.43]
\\
& A
\end{tikzcd}
\]

\end{document}

在此輸入影像描述

答案2

像這樣?我使用\makebox*小包中的命令makebox,透過簡單的語法使最右側節點的寬度等於最左側節點的寬度。

tikz無關:如果載入則無需載入tikz-cd

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

\usetikzlibrary{matrix}
\usetikzlibrary{arrows}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{decorations.pathmorphing}
\usetikzlibrary{decorations.markings}
\usetikzlibrary{trees}
\usetikzlibrary{backgrounds}
\usetikzlibrary{graphs}
\usetikzlibrary{graphdrawing}
\usegdlibrary{force}

\tikzset{
  commutative diagrams/.cd,
  arrow style=tikz,
  diagrams={>={Straight Barb[scale=0.9]}, semithick}
}

\usepackage{makebox} 
\begin{document}

\[
\begin{tikzcd}
A \arrow[rr, bend right, dashed, "i"'] \arrow[dr, equals] \arrow[rr, phantom, "\bot"] & &\makebox*{$A$}{$ \hom_B(B,f) $} \arrow[dl, two heads, "p_1"] \arrow[ll, bend right, two heads, "p_1"'] \\ & A
\end{tikzcd}
\]
\end{document} 

在此輸入影像描述

相關內容