我正在尝试使用 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]