使用 Tikz 以鸟轨符号书写对称子和反对称子

使用 Tikz 以鸟轨符号书写对称子和反对称子

我正在尝试使用 tikz 来书写 Cvitanovic 的 birdtrack 符号,但我对 tikz 还不太熟悉,需要帮助。

基本上,我需要绘制矩形,无论是纯黑色还是白色,带有黑色轮廓,并有线条穿过它们。然后,我需要能够将这些图片与方程式中的其他符号对齐。我使用的代码如下:

$$A_{1\,2\,3} = \frac{1}{3!}
\begin{tikzpicture}[thick]
        \begin{pgfonlayer}{nodelayer}
                \node (l3) at (0, 0) {};
                \node (l2) at (0, 1em) {};
                \node (l1) at (0, 2em) {};
                \node (c3) at (2em, 0) {};
                \node (c2) at (2em, 1em) {};
                \node (c1) at (2em, 2em) {};
                \node (r3) at (4em, 0) {};
                \node (r2) at (4em, 1em) {};
                \node (r1) at (4em, 2em) {};
        \end{pgfonlayer}
        \begin{pgfonlayer}{edgelayer}
                \draw [line,out=0,in=0] (r1.center) to (l1.center);
                \draw [line,out=0,in=0] (r2.center) to (l2.center);
                \draw [line,out=0,in=0] (r3.center) to (l3.center);
                \draw[line width=8pt,opacity=1,black,line cap=square,square corners] (c1.center-10pt) -- (c1.center) -- (c3.center) -- (c3.center+10pt);
        \end{pgfonlayer}
\end{tikzpicture}$$```

产生 反对称化子

我的问题是,这三条线没有与其他等式符号垂直居中,而且右边的线比左边的线略长。最重要的是,如果我将粗线的颜色更改为白色,它看起来就像是线条的断点,而不是有线条穿过的矩形。我不知道如何为白色框添加黑色轮廓,所以它看起来像这样: 对称化者

我原本想在这里画一个矩形而不是一条线,但我不知道该怎么做。如果能得到任何帮助,我将不胜感激。谢谢!

答案1

我认为这里有帮助的命令是rectangle

\draw (x, y) rectangle (z, w);

绘制一个矩形,其左下角位于(x, y),右下角位于(z, w)。然后,您有两个着色选项,第一个选项[color=black]是将线条设为黑色(目前您只是使用非常粗的黑线来绘制矩形),第二个[fill=black]选项是将矩形填充为黑色。如果您不设置填充,则默认为无填充,您将获得所需的线条与空矩形相交的外观。以下是这样做的:

\[
    S_{1\,2\,3} = \frac{1}{3!}
    \begin{tikzpicture}[thick]
        \begin{pgfonlayer}{nodelayer}
            \node (l3) at (0, 0) {};
            \node (l2) at (0, 1em) {};
            \node (l1) at (0, 2em) {};
            \node (c3) at (2em, 0) {};
            \node (c2) at (2em, 1em) {};
            \node (c1) at (2em, 2em) {};
            \node (r3) at (4em, 0) {};
            \node (r2) at (4em, 1em) {};
            \node (r1) at (4em, 2em) {};
        \end{pgfonlayer}
        \begin{pgfonlayer}{edgelayer}
            \draw [line,out=0,in=0] (r1.center) to (l1.center);
            \draw [line,out=0,in=0] (r2.center) to (l2.center);
            \draw [line,out=0,in=0] (r3.center) to (l3.center);
            % The next line is the key line that I changed from the MWE
            \draw ($(c3.center)-(0, 0.1)$) rectangle ($(c1.center-10pt)+(0, 0.1)$);
        \end{pgfonlayer}
    \end{tikzpicture}
\]

我的答案使用了calc库,tikz因此您需要\usetikzlibrary{calc}在序言中使用它。如果您不想使用它,那么您可以摆弄坐标来找到矩形的正确位置。如果您希望矩形更高(或更短),那么只需增加(或减少)0.1我指示为关键行的行中的值。同样,如果您想要更宽(或更薄)的矩形,请更改值0

恐怕我不知道如何使中心tikzpicture位于线上,必须有更纯正的 LaTeX 知识的人来告诉你如何做到这一点。

按照问题要求,用鸟迹符号绘制对称器

答案2

也许你正在寻找类似的东西:

\documentclass[border=5pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}


\begin{document}
    
    $S_{1\,2\,3} = \frac{1}{3!}$
    \begin{tikzpicture}[thick,baseline=(current  bounding  box)]
    
            \coordinate (l3) at (0, 0);
            \coordinate (l2) at (0, 1em);
            \coordinate (l1) at (0, 2em);
            \def\l{4em}
    
            \draw   (l1) --++ (\l,0) coordinate [midway] (c1)
                    (l2) --++ (\l,0) coordinate [midway] (c2)
                    (l3) --++ (\l,0) coordinate [midway] (c3);

            \draw ($(c3)-(0, 0.1)$) rectangle ($(c1)+(0.2, 0.1)$);
            
    \end{tikzpicture}

\end{document}

文本对齐

编辑:如果您将其更改为,
您可以管理根据基线居中图像的方式。\begin{tikzpicture}[thick,baseline=(current bounding box)]\begin{tikzpicture}[thick,baseline=7pt]

改进

相关内容