TikZ 中交换图中的箭头是倾斜的

TikZ 中交换图中的箭头是倾斜的

我在 TikZ 中有以下交换图:

        \begin{tikzpicture}
            \matrix (b) [matrix of math nodes, row sep=2em, column sep=2em]
            {
                D(0) & D(1) & \cdots & C \\
                C & C & \cdots & C \\
            };
            \path[->, font=\scriptsize]
            (b-1-1) edge node[auto]{\(\scriptstyle{g_0}\)} (b-1-2) edge node[auto]{\(\scriptstyle{\phi_0}\)} (b-2-1)
            (b-1-2) edge node[auto]{\(\scriptstyle{\phi_1}\)} (b-2-2) edge node[auto]{\(\scriptstyle{g_1}\)} (b-1-3)
            (b-1-3) edge node[auto]{\(\scriptstyle{\phi_i}\)} (b-2-3) edge (b-1-4)
            (b-2-1) edge[-,double] (b-2-2)
            (b-2-2) edge[-,double] (b-2-3)
            (b-2-3) edge[-,double] (b-2-4)
            (b-1-4) edge[-,double] (b-2-4);
        \end{tikzpicture}.
    \end{center}

当我渲染它时,我最终得到了进入点的奇怪的斜线。

斜箭

如果我只使用 \dots,问题会更加严重。我该如何解决这个问题,让线条变直?我知道 tikz-cd 可能可以解决这个问题,但我现在没有时间学习语法和转换所有内容,所以我现在仍然按照老方法做事。

答案1

用于tikz-cd此项工作。

语法更加简单,并且箭头标签以脚本样式正确排版。

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

\begin{document}

\begin{tikzcd}
D(0) \arrow[r,"g_0"] \arrow[d,"\phi_0"] &
D(1) \arrow[r,"g_1"] \arrow[d,"\phi_1"] &
\cdots \arrow[r] \arrow[d,"\phi_i"] &
C \arrow[d,equal]
\\
C \arrow[r,equal] & C \arrow[r,equal] & \cdots \arrow[r,equal] & C
\end{tikzcd}

\end{document}

在此处输入图片描述

您可以使用幻影使箭头变直。请注意,我删除了错误的font=\scriptsize声明。

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{matrix}

\begin{document}

\begin{tikzpicture}
\matrix (b) [matrix of math nodes, row sep=2em, column sep=2em]
  {
   D(0) & D(1) & \cdots\vphantom{()} & C\vphantom{()} \\
   C & C & \cdots\vphantom{C} & C \\
  };
  \path[->]
  (b-1-1) edge node[auto]{\(\scriptstyle{g_0}\)} (b-1-2) edge node[auto]{\(\scriptstyle{\phi_0}\)} (b-2-1)
  (b-1-2) edge node[auto]{\(\scriptstyle{\phi_1}\)} (b-2-2) edge node[auto]{\(\scriptstyle{g_1}\)} (b-1-3)
  (b-1-3) edge node[auto]{\(\scriptstyle{\phi_i}\)} (b-2-3) edge (b-1-4)
  (b-2-1) edge[-,double] (b-2-2)
  (b-2-2) edge[-,double] (b-2-3)
  (b-2-3) edge[-,double] (b-2-4)
  (b-1-4) edge[-,double] (b-2-4);
\end{tikzpicture}

\end{document}

老式

答案2

解决您的问题的一个简单方法是在 \begin{tikzpicture} 下方添加以下行:

\tikzset{每个节点/.style={anchor=center,文本居中}}

这给了我(我使用 TeXstudio + XeLaTeX,但这不应该有什么区别):

节点正确对齐的图表

相关内容