答案1
两个解决方案:一个使用pstricks
和psmatrix
环境,另一个使用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}