使用decorations.markings時將標籤插入標記

使用decorations.markings時將標籤插入標記

使用以下程式碼,如何向每個標記插入標籤(或節點或座標)!

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc, decorations.markings}
\begin{document}
\begin{tikzpicture}
\def\gap{0.2}
\def\bigradius{3}
\def\littleradius{0.5}
%
\draw[cyan](0,0)coordinate(h) (-1*\bigradius,0) -- (1*\bigradius,0) (0,-1*\bigradius) -- (0,1*\bigradius);
%
\draw[color=blue, line width=2pt, decoration={markings,
mark=at position 0.2455 with {\arrow[color=red]{stealth}},
mark=at position 0.765 with {\arrow[color=green]{stealth}},
mark=at position 0.87 with {\arrow[color=brown]{stealth}},
mark=at position 0.97 with {\arrow[color=orange]{stealth}}},
postaction={decorate}, preaction={fill=yellow!60, fill opacity=.4}]
let
 \n1={asin(\gap/2/\bigradius)},
 \n2={asin(\gap/2/\littleradius)}
in (\n1:\bigradius) arc (\n1:360-\n1:\bigradius) -- (-\n2:\littleradius) arc (-\n2:-360+\n2:\littleradius) -- cycle;
%
\node[red] at (h) {H};
\end{tikzpicture}
\end{document}

在此輸入影像描述

答案1

您可以在繪製箭頭時簡單地新增節點。請注意,這裡的座標(-.3,.3)是相對於標記座標的局部座標。

在此輸入影像描述

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc, decorations.markings}
\begin{document}
\begin{tikzpicture}
\def\gap{0.2}
\def\bigradius{3}
\def\littleradius{0.5}
%
\draw[cyan](0,0)coordinate(h) (-1*\bigradius,0) -- (1*\bigradius,0) (0,-1*\bigradius) -- (0,1*\bigradius);
%
\draw[color=blue, line width=2pt, decoration={markings,
mark=at position 0.2455 with {\arrow[color=red]{stealth} \node[color=red] at (-.3,.3) {$a$};},
mark=at position 0.765 with {\arrow[color=green]{stealth} \node[color=green] at (-.3,.3) {$b$};},
mark=at position 0.87 with {\arrow[color=brown]{stealth} \node[color=brown] at (-.3,.3) {$c$};},
mark=at position 0.97 with {\arrow[color=orange]{stealth} \node[color=orange] at (-.3,.3) {$d$};},
},
postaction={decorate}, preaction={fill=yellow!60, fill opacity=.4}]
let
 \n1={asin(\gap/2/\bigradius)},
 \n2={asin(\gap/2/\littleradius)}
in (\n1:\bigradius) arc (\n1:360-\n1:\bigradius) -- (-\n2:\littleradius) arc (-\n2:-360+\n2:\littleradius) -- cycle;
%
\node[red] at (h) {H};
\end{tikzpicture}
\end{document}

答案2

您只需將節點新增至標記即可。這段程式碼使用了來自的彎曲箭頭https://tex.stackexchange.com/a/676562/292811,這可能看起來更漂亮。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,bending,calc, decorations.markings,hobby}
\begin{document}
\begin{tikzpicture}[>={Stealth[length=0.3cm,bend]},
    % stolen from https://tex.stackexchange.com/a/676562/292811
    colored bent arrow at/.style args={#1/#2/#3}{decoration={markings,
        mark=at position {#1*\pgfdecoratedpathlength-0.15cm} with {\coordinate (bent arrow 1);},
        mark=at position {#1*\pgfdecoratedpathlength-0.05cm} with {\coordinate (bent arrow 2);},
        mark=at position {#1*\pgfdecoratedpathlength} with {#3},
        mark=at position {#1*\pgfdecoratedpathlength+0.05cm} with {\coordinate (bent arrow 3);},
        mark=at position {#1*\pgfdecoratedpathlength+0.15cm} with {\coordinate (bent arrow 4);
        \draw[style/.expand once=#2,-{Stealth[length=0.3cm,bend]}] (bent arrow 1) to[curve through={(bent arrow 2) .. (bent arrow 3)}]  (bent arrow 4) ;}
    }}]
\def\gap{0.2}
\def\bigradius{3}
\def\littleradius{0.5}
%
\draw[cyan](0,0)coordinate(h) (-1*\bigradius,0) -- (1*\bigradius,0) (0,-1*\bigradius) -- (0,1*\bigradius);
%
\draw[color=blue, line width=2pt,
    colored bent arrow at/.list={0.2455/red/{\node[above left,red]{$a$};},
        0.765/green/{\node[below,green]{$b$};},
        0.87/brown/{\node[above,brown]{$c$};},
        0.97/orange/{\node[above,orange]{$a$};}},
    %decoration={markings,
        % mark=at position 0.2455 with {\arrow[color=red]{stealth}},
        % mark=at position 0.765 with {\arrow[color=green]{stealth}},
        % mark=at position 0.87 with {\arrow[color=brown]{stealth}},
        % mark=at position 0.97 with {\arrow[color=orange]{stealth}}},
    postaction={decorate}, preaction={fill=yellow!60, fill opacity=.4}]
let
 \n1={asin(\gap/2/\bigradius)},
 \n2={asin(\gap/2/\littleradius)}
in (\n1:\bigradius) arc (\n1:360-\n1:\bigradius) -- (-\n2:\littleradius) arc (-\n2:-360+\n2:\littleradius) -- cycle;
%
\node[red] at (h) {H};
\end{tikzpicture}
\end{document}

在此輸入影像描述

相關內容