场论的 TikZ 图片

场论的 TikZ 图片

我目前还在学习使用 TikZ 为我的场论论文添加图表,但目前看来我缺乏灵活使用这个工具的能力。我想要创建的图表如下: 在此处输入图片描述 但是,基于我对 TikZ 语法的理解,我只能创建以下内容:

\documentclass{standalone}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}

\node (Q1) at (0,0) {F};
\node (Q2) at (2,2) {D};
\node (Q3) at (0,4) {K};
\node (Q4) at (-2,2) {E};

\draw (Q1)->(Q2);
\draw (Q1)->(Q4);
\draw (Q3)->(Q4);
\draw (Q2)->(Q3);

\end{tikzpicture}
\end{document}

在此处输入图片描述

我想问一些初学者的问题:

  • 如何将线段变成箭头?
  • 我如何才能精确设置箭头的角度?
  • 如何将两个 TikZ 图像并排放置?

答案1

您可以将两个图表合并为一个,tikzcd以确保正确对齐。使用设置column sepbetween origins确保两个图表具有相同的间距。您可以使用&[<length>]增加(或减少负值)列间距,如下面的代码所示,其中两个图表之间提供了额外的间距。

在此处输入图片描述

\documentclass{article}

\usepackage{tikz-cd, amsmath}
\DeclareMathOperator{\Gal}{Gal}

\begin{document}

\begin{tikzcd}[column sep={1.5cm, between origins}]
& K &&[10mm]& \Gal(K/K)\arrow[dr]\arrow[dl]&\\
E\arrow[ur] && D\arrow[ul] & \Gal(K/E)\arrow[dr] && \Gal(K/D)\arrow[dl]\\
& F\arrow[ur]\arrow[ul] &&& \Gal(K/F)
\end{tikzcd}

\end{document}

答案2

这演示了使用纯 PGF/Ti 的三种简单方法Z 即无tikz-cd

第一个方法对现有代码做了最小程度的修改。它只是修正了语法并添加了箭头。

第二种用途matrix of math nodesTi 的Z 的matrix库来创建第二个图表。这有点复杂,但仍然不需要贡献的cd库。

第三个用途tikzcd

使用两种不同的策略创建了两个具有相似位置的图表:对 MWE 的最小更改与数学节点矩阵

最小变化

对于第一种情况,我们只需->在图片选项中添加,使所有绘制的线条都变成箭头即可。然后我们->\draw命令中更改为--,并切换一对节点名称,以使箭头指向所需的方向。

  \draw (Q1)--(Q2);
  \draw (Q1)--(Q4);
  \draw (Q4)--(Q3);
  \draw (Q2)--(Q3);

我们还将节点的内容置于数学模式,并添加baseline=Q2.center使图表在当前基线上居中。通过向第二个添加类似的选项tikzpicture,两个图像在其中心水平对齐。

matrix of math nodes

第二张图的代码是

\begin{tikzpicture}[baseline=(gal-2-1.center)]
  \matrix (gal) [matrix of math nodes,row sep=15mm]
  {
    & \gal{K/K} & \\
    \gal(K/E) & & \gal(K/D) \\
    & \gal(K/F) & \\
  };
  \begin{scope}[->]
    \draw (gal-1-2.220) -- (gal-2-1.north);
    \draw (gal-1-2.320) -- (gal-2-3.north);
    \draw (gal-2-1.south) -- (gal-3-2.140);
    \draw (gal-2-3.south) -- (gal-3-2.40);
  \end{scope}
\end{tikzpicture}

这次,我们使用\begin{scope}[->] ... \end{scope}添加箭头。这在当前情况下没有区别,但如果您想要将箭头添加到线块中,而同一图表中的其他线不应获得箭头,则很有用。我们也可以写

\draw [->] (<coordinate/node>) -- (<coordinate/node 2>);

在单线上添加箭头。

  \matrix (gal) [matrix of math nodes,row sep=15mm]
  {
    & \gal{K/K} & \\
    \gal(K/E) & & \gal(K/D) \\
    & \gal(K/F) & \\
  };

matrix of math nodesmatrix of nodes为具有数学内容的节点设置一个。row sep在行之间添加分隔,我们最终会\\像在tabulararray外面一样使用它tikzpicture

\matrix (<name>) [<options>] { <content> };创建一个matrix名为<name><options><content>由按行排列的节点\\和按列排列的节点组成&。同样,语法与tabular/类似array

通过命名我们的matrix,我们可以轻松地引用矩阵每个单元中的各个节点。(<name>-<row number>-<column number>)引用适当的节点。 例如,(gal-1-2)引用最顶部的节点,因为它位于第一行(1)和中间列(2)。 然后,我们可以使用此语法引用节点以添加箭头。

    \draw (gal-1-2.220) -- (gal-2-1.north);
    \draw (gal-1-2.320) -- (gal-2-3.north);
    \draw (gal-2-1.south) -- (gal-3-2.140);
    \draw (gal-2-3.south) -- (gal-3-2.40);

点后面的部分指定特定的锚点。例如,(gal-2-3.south)指的是south矩阵的第二行第三列节点的锚点gal

tikzcd

\begin{tikzcd}[row sep=15mm]
  & \gal(K/K) \ar[dr] \ar[dl] & \\
  \gal(K/E) \ar[dr] & & \gal(K/D) \ar[dl] \\
  & \gal(K/F) & \\  
\end{tikzcd}

这里\ar画了一个指向矩阵中另一个节点的箭头。dr表示向下和向右;dl向下和向左。数学在这里是默认的,所以我们不需要做任何事情。tikzcd图表本质上是一个matrix of math nodes具有适合交换图的默认值和方便的简写语法的图表。

但是,我无法立即弄清楚如何正确对齐图表。

三个图表采用不同的构造/语法方法

完整代码

\documentclass{standalone}
\usepackage{tikz}
\usepackage{mathtools}
\usetikzlibrary{matrix}
\usetikzlibrary{cd}
\DeclareMathOperator{\gal}{\mathrm{Gal}}
\begin{document}

\begin{tikzpicture}[->,baseline=(Q2.center)]
  \node (Q1) at (0,0) {$F$};
  \node (Q2) at (2,2) {$D$};
  \node (Q3) at (0,4) {$K$};
  \node (Q4) at (-2,2) {$E$};
  
  \draw (Q1)--(Q2);
  \draw (Q1)--(Q4);
  \draw (Q4)--(Q3);
  \draw (Q2)--(Q3);
\end{tikzpicture}
\begin{tikzpicture}[baseline=(gal-2-1.center)]
  \matrix (gal) [matrix of math nodes,row sep=15mm]
  {
    & \gal{K/K} & \\
    \gal(K/E) & & \gal(K/D) \\
    & \gal(K/F) & \\
  };
  \begin{scope}[->]
    \draw (gal-1-2.220) -- (gal-2-1.north);
    \draw (gal-1-2.320) -- (gal-2-3.north);
    \draw (gal-2-1.south) -- (gal-3-2.140);
    \draw (gal-2-3.south) -- (gal-3-2.40);
  \end{scope}
\end{tikzpicture}
\begin{tikzcd}[row sep=15mm]
  & \gal(K/K) \ar[dr] \ar[dl] & \\
  \gal(K/E) \ar[dr] & & \gal(K/D) \ar[dl] \\
  & \gal(K/F) & \\  
\end{tikzcd}

\end{document}

相关内容