可換図の中に正方形を配置するにはどうすればよいでしょうか?

可換図の中に正方形を配置するにはどうすればよいでしょうか?

次の図のように、交換図の中に正方形を配置する方法:

ここに画像の説明を入力してください

次の図のような正方形を作成します。

\documentclass[a4paper,12pt]{article}
\usepackage{tikz-cd}
\begin{document}

\begin{tikzcd}
X\times_S Y \arrow{r}{p_2} \arrow{d}[swap]{p_1} &Y \arrow{d}{g} \\   
X \arrow[swap]{r}{f} & Z
\end{tikzcd}
        
\end{document}

答え1

2 つの解決策: 1 つはpstrickspsmatrix環境を使用するもので、もう 1 つは を使用するものでtikz-cd、矢印の短い構文を使用します。

\documentclass{article}
\usepackage{mathtools, amssymb}
 \usepackage{pst-node, auto-pst-pdf}
\usepackage{tikz-cd}

\begin{document}

\texttt{psmatrix solution: }
 \[ \psset{arrows=->, arrowinset=0.15, linewidth=0.6pt, nodesep=3pt, rowsep=0.6cm, colsep = 1cm}
 \everypsbox{\scriptstyle}
 \begin{psmatrix}
%%% nodes
  X'' & X' & X \\%
S'' & S' & S
 %%% horizontal arrows
\ncline{1,1}{1,2}\naput{g'} \ncline{1,2}{1,3}\naput{g}
 \ncline{2,1}{2,2}\nbput{f'} \ncline{2,2}{2,3}\nbput{f}
 %%% vertical arrows
\ncline{1,1}{2,1} \ncline{1,2}{2,2}\ncline{1,3}{2,3}
\ncline[linestyle =none, arrows=-]{1,2}{2,3}\ncput{\textstyle\square}
 \end{psmatrix}
 \]
\vskip 1cm

\texttt{tikz-cd solution: }
\[ \begin{tikzcd}[arrows={-Stealth}]
  X''\rar["g'"]\dar & X'\rar["g"]\dar\drar[phantom, "\square"] & X\dar \\%
S''\rar[swap, "f'"] & S'\rar[swap, "f"] & S
\end{tikzcd}
\]

\end{document} 

ここに画像の説明を入力してください

答え2

正しい方法は、tikz-cd次のように「ファントム」矢印を使用することです。

\arrow[dr, phantom, "\square"]

MWE (画像を再現するために、あなたのコードではなく、いくつかのコードを使用しました):

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

\begin{document}

\begin{tikzcd}
X'' \arrow[r, "g'"] \arrow[d] & X' \arrow[r, "g"] \arrow[d] \arrow[dr, phantom, "\square"] & X \arrow[d] \\
S'' \arrow[r, "f'"']          & S' \arrow[r, "f"']                                         & S
\end{tikzcd}

\end{document} 

ここに画像の説明を入力してください

答え3

別の解決策としては、 を使用することですexecute at end picture。karlkoeller
の回答ほどエレガントではありませんが、座標を変更するだけで、ノードを好きな場所に配置できます。

\documentclass[a4paper,12pt]{article}
\usepackage{amssymb}
\usepackage{tikz-cd}
\usetikzlibrary{calc}

\begin{document}

\begin{tikzcd}[
    every matrix/.append style={name=mycd},
    execute at end picture={
    \node at ($(mycd-1-1)!0.5!(mycd-2-2)$) {$\square$};
    }
]
X\times_S Y \arrow{r}{p_2} \arrow{d}[swap]{p_1} &Y \arrow{d}{g} \\   
X \arrow[swap]{r}{f} & Z
\end{tikzcd}

\end{document}

ここに画像の説明を入力してください

関連情報