在 TikZ 中圈出一个箭头

在 TikZ 中圈出一个箭头

我正在准备一些讲义,在创建像图中这样的环形箭头时遇到了一些困难。

我想要做的是在 TikZ 中定义的箭头周围创建一个椭圆形(类似于代码示例中的形状)。

\draw[->] (0,0) -- (1,1);

在此处输入图片描述

以下是该图片的完整代码:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{mhchem}
\usepackage{textgreek}

\usetikzlibrary{decorations,decorations.pathreplacing,decorations.pathmorphing}

\begin{document}

\begin{tikzpicture}
    \draw (-0.5,-1) node{+}
    (-0.5,5) node{-}
    (-0.5,5.5) node{Redoxpotential}
    (2,-3.7) node{Fotosystem II}
    (6,-2) node{Fotosystem I};
    \path (0.7,-0.7) node(1) {ljus}
    (2,-2) node[rectangle,draw](2) {P680}
    (2,3) node(3) {\ce{e-}}
    (3,2) node(4) {\ce{QH2}}
    (4,1) node(5) {Cyt b$_6$f}
    (3,0) node(6) {\ce{H+} lumen}
    (5,0) node(7) {Plastocyanin}
    (6,-1) node[rectangle,draw](8) {P700}
    (7.2,0.2) node(9) {ljus}
    (6,4) node(10) {\ce{e-}}
    (7.5,2.5) node(11) {\ce{e-}-redoxin (Fd)};
    \draw[decorate, decoration={snake},draw=red,->] (1) -- (2);
    \draw[->] (1.5,-2.74) to[out=60,in=180] (2,-2.24) to[out=0,in=120] (2.5,-2.74);
    \draw (1.3,-2.94) node[]{\ce{2H2O}} (2.98,-2.907)node[]{\ce{O2 + 4H+}};
    \draw[->] (2) -- (3);
    \draw[->] (3) -- node[midway,right]{\ce{e-}-transportkedja} (4);
    \draw[->] (4) -- (5);
    \draw[->] (5) -- (6);
    \draw[->] (5) -- (7);
    \draw[->] (7) -- (8);
    \draw[decorate, decoration={snake},draw=red,->] (9) -- (8);
    \draw[->] (8) -- (10);
    \draw[->] (10) -- node[midway,right]{\ce{e-}-transportkedja} (11);
    \draw[->] (11) -- (8.5,1.5);
    \draw[->] (8.15,0.95) node[below]{NADP} to[out=75,in=215] (8.5,1.5) to[out=35,in=190] (9.1,1.7) node[right]{NADPH};
    \draw (7.6,0) node[right]{\ce{2Fd + NADP -> 2Fd + NADPH}};
    \draw[dotted,->] (11) -- (5);
\end{tikzpicture}

\end{document}

答案1

您可以通过以下方式实现此绘图排队椭圆形状的计算。

也就是说,你需要计算:

  1. 椭圆形的半径
  2. 它所处的角度。
  3. 椭圆形的中心

所有这些都可以使用calcTikZ 库来完成。

以下是一个例子:

\begin{tikzpicture}
  \coordinate (a) at (0,0); % Save the end-coordinates of the arrow
  \coordinate (b) at (4,7);
  \draw[->] (a) -- (b);
                  % Calculate the vector from a to b:
  \draw let \p1 = ($(b)-(a)$),
                  % radius of the elliptic shape, along the arrow:
            \n1 = {veclen(\x1,\y1)/2},
                  % angle of rotation:
            \n2 = {atan(\y1/\x1)}
             % START DRAWING
            in ($(a)!.5!(b)$) circle[x radius=\n1,
                                     y radius=20pt,
                                     rotate=\n2];
\end{tikzpicture}

请注意,\n1 = ...您还可以添加值,以便获得箭头周围椭圆形的范围。

还要注意,通过重复使用坐标,您几乎可以在这个环境中做任何您想做的事情。

在此处输入图片描述

相关内容