我对 tikz 环境还不太熟悉,但根据本网站优秀专家的建议,我尝试用 tikzcd 包构建的交换图替换所有用 amscd 包构建的交换图。
不幸的是,我注意到 tickcd IMHO 中默认选择的箭头长度在某些情况下看起来不如 amscd 中的箭头长度好看。
这是 MWE
\documentclass[11pt]{amsart}
\usepackage{amscd}
\usepackage{tikz-cd}
\begin{document}
\[\begin{CD}
\kappa(q)=B_{q}/qB_{q}@<<< B_{q}\\
@AAA @AAA\\
B\otimes \kappa(p)=B_{p}/pB_{p}@<<< B\otimes A_{p}\\
@AAA @AAA \\
\kappa(p)=A_{p}/pA_{p}@<<< A_{p}
\end{CD}\]
\[\begin{tikzcd}
\kappa(q)=B_{q}/qB_{q}& B_{q}\ar[l]\\
B\otimes \kappa(p)=B_{p}/pB_{p}\ar[u]& B\otimes A_{p}\ar[u]\ar[l]\\
\kappa(p)=A_{p}/pA_{p}\ar[u]&A_{p}\ar[u]\ar[l]
\end{tikzcd}\]
\end{document}
这是我的问题:我知道我可以摆弄 tikzcd 图表中每个水平箭头的长度,以便使它们整齐对齐并大致相同,就像它们出现在 amscd 包中一样(似乎选择了列中水平箭头的最小长度)。我希望在整个图表或/和文档级别默认使用此行为。我该怎么办?
编辑:按照 egreg 的建议,现在我只想知道 tikzcd 中是否有一个图表和/或整个文档的默认参数,允许箭头尾部和尖端和节点之间留出更多空间(与狭窄选项相反?)?我在文档中没有看到这一点。
答案1
作为埃格尔提及his comment
,tikz-cd
使箭头延伸以填充可用空间并且(我同意他的观点)这是一个理想的功能。
关于问题的第二部分,您可以使用\tikzcdset
将选项传递给路径/tikz/commutative diagrams
,以便它们影响所有tikzcd
图表;对于您的问题,您可以使用shorten
:
\tikzcdset{
shorten >= 5pt,
shorten <= 5pt,
}
完整示例:
\documentclass[11pt]{amsart}
\usepackage{amscd}
\usepackage{tikz-cd}
\tikzcdset{
shorten >= 5pt,
shorten <= 5pt,
}
\begin{document}
\[\begin{CD}
\kappa(q)=B_{q}/qB_{q}@<<< B_{q}\\
@AAA @AAA\\
B\otimes \kappa(p)=B_{p}/pB_{p}@<<< B\otimes A_{p}\\
@AAA @AAA \\
\kappa(p)=A_{p}/pA_{p}@<<< A_{p}
\end{CD}\]
\[\begin{tikzcd}
\kappa(q)=B_{q}/qB_{q}& B_{q}\ar[l]\\
B\otimes \kappa(p)=B_{p}/pB_{p}\ar[u]& B\otimes A_{p}\ar[u]\ar[l]\\
\kappa(p)=A_{p}/pA_{p}\ar[u]&A_{p}\ar[u]\ar[l]
\end{tikzcd}\]
\end{document}
如果您想在本地使用此选项,请在可选参数中使用它们tikzcd
:
\documentclass[11pt]{amsart}
\usepackage{amscd}
\usepackage{tikz-cd}
\begin{document}
\[\begin{CD}
\kappa(q)=B_{q}/qB_{q}@<<< B_{q}\\
@AAA @AAA\\
B\otimes \kappa(p)=B_{p}/pB_{p}@<<< B\otimes A_{p}\\
@AAA @AAA \\
\kappa(p)=A_{p}/pA_{p}@<<< A_{p}
\end{CD}\]
\[\begin{tikzcd}[ shorten >= 5pt,shorten <= 5pt]
\kappa(q)=B_{q}/qB_{q}& B_{q}\ar[l]\\
B\otimes \kappa(p)=B_{p}/pB_{p}\ar[u]& B\otimes A_{p}\ar[u]\ar[l]\\
\kappa(p)=A_{p}/pA_{p}\ar[u]&A_{p}\ar[u]\ar[l]
\end{tikzcd}\]
\end{document}
答案2
还有psmatrix
解决方案,来自pst-node
。这里有两种写这个图的方法。与 tikz-cd 相反,代码的结构首先描述节点,然后描述箭头;
\documentclass[11pt]{amsart}
\usepackage{mathtools}
\usepackage{pst-node}
\usepackage{auto-pst-pdf}
\begin{document}
\psset{linewidth=0.6pt, arrowinset=0.2, arrowsize=2.5pt 2, arrows=->,nodesep=4pt}
\[
\begin{psmatrix}
%%% Nodes
\kappa(q)=B_{q}/qB_{q}& B_{q}\\
B\otimes \kappa(p)=B_{p}/pB_{p} & B\otimes A_{\mathrlap{p}}\\
\kappa(p)=A_{p}/pA_{p}&A_{p}
%%% Vertical arrows
\ncline{2,1}{1,1}\ncline{2,2}{1,2}
\ncline{3,1}{2,1}\ncline{3,2}{2,2}
%%% Horizontal arrows
\ncline{2,2}{2,1}
\psset{nodesep=8pt}\ncline{1,2}{1,1}\ncline{3,2}{3,1}
\end{psmatrix}\]
\vskip1cm
\[
\begin{psmatrix}
%%% Nodes
\mathllap{\kappa(q)=}B_{q}/qB_{q}& B_{q}\\
\mathllap{B\otimes \kappa(p)=}B_{p}/pB_{p} & B\otimes A_{p}\\
\mathllap{\kappa(p)=}A_{p}/pA_{p}&A_{p}
%%% Vertical arrows
\ncline{2,1}{1,1}\ncline{2,2}{1,2}
\ncline{3,1}{2,1}\ncline{3,2}{2,2}
%%% Horizontal arrows
\ncline{2,2}{2,1}
\psset{nodesep=8pt}\ncline{1,2}{1,1}\ncline{3,2}{3,1}
\end{psmatrix}\]
\end{document}