「L」を線の真ん中に正確に配置するにはどうすればよいですか?

「L」を線の真ん中に正確に配置するにはどうすればよいですか?

たとえば、次のコードがあるとします。

\documentclass{article}
\usepackage{graphicx} % Required for inserting images
\usepackage{tikz}
\usetikzlibrary{positioning}
\usepackage[margin=2.625cm]{geometry}
\usepackage{subcaption}



 \begin{document}


 \begin{tikzpicture}

 \fill (1.5,1.5) circle [radius=0.05] node[above, yshift=-0.03cm, 
  font=\small]{1};
 \draw[<-, line width=0.3pt, >=stealth] (0.7,0.0) -- (1.5,1.5) 
  node[xshift=-0.5cm, yshift=-0.7cm, font=\tiny]{L};

 \end{tikzpicture}
 \end{document}

「L」を線の真ん中に正確に配置するにはどうすればよいですか? xshift と yshift がどのように機能するかがよくわかりません。シフトは何と比較するのですか?

答え1

\fill円の代わりに、Circle矢印の先端として指定できます (arrows.metaライブラリが必要です)。その後、線、両方の先端、両方のラベルを 1 行に描画できます。

nodeの後に--(または の後に)を配置すると、toデフォルトでセグメントの中央に配置されます。

ここに画像の説明を入力してください

\documentclass{article}
\usepackage{tikz}
\usepackage[margin=2.625cm]{geometry}
\usetikzlibrary{arrows.meta}

 \begin{document}

 \begin{tikzpicture}
 \draw[stealth-Circle, line width=0.3pt] (0.7,0.0) --node[above left=-2pt, font=\tiny]{L} (1.5,1.5) node[above, font=\small]{1};
 \end{tikzpicture}
 
 \end{document}

答え2

以前の回答では、L を行の中央に配置する方法に焦点を当てており、最初の質問には対応していますが、何をshiftしているかについてはあまり触れられていません。既存の回答の 1 つは、2 番目の質問に触れていますが、実際には説明されていません。

何をすべきかを理解するためにはxshiftyshiftまず、国連シフトされたノードが表示されます。次の図では、この位置が赤で示されています。ノードをここに配置した場合、ここに表示されます。

ノードのデフォルト位置を示す図

デフォルトのアンカーはcenterノードの で、center円形ノードの と位置合わせされます。

xshift=-0.5cmノードを 0.5cm 左にシフトするだけです。これを青で表示しましょう。

0.5cm左にシフトした場合の効果

つまり、赤いバージョンの中心と青いバージョンの中心の間には 5 mm の隙間があることになります。

yshift=-0.7cmノードを 0.7cm 下に移動するように指示されています。これを緑色で表示しましょう。

0.7cm下に移動した場合の効果

xshift=-0.5cm,yshift=-0.7cmこれら 2 つの命令を組み合わせて、ノードを 0.5cm 左に、0.7cm 下に移動します。

シフトを組み合わせる効果

あれは、

xshift と yshift の説明に付随する図

\documentclass[tikz,border=5pt]{standalone}
\usetikzlibrary{positioning,arrows.meta,backgrounds}
\begin{document}
  \begin{tikzpicture}[every pin/.append style={font=\tiny,help lines,inner sep=1pt},every pin edge/.append style={help lines,densely dashed,{Circle[length=1pt]}-,shorten <=-.5pt},explan/.style={font=\tiny,densely dashed,draw}]
  \fill (1.5,1.5) coordinate (c1) circle [radius=0.05] node[above, yshift=-0.03cm, font=\small]{1};
  \draw[<-, line width=0.3pt, >=stealth,red] (0.7,0) coordinate (c2) -- (c1) node[explan,pin=45:default]{L};
  \begin{scope}[on background layer]
    \draw [help lines,densely dashed] (c1) edge +(1,0) edge +(-1,0) edge +(0,1) -- +(0,-1);
    \draw [help lines,densely dashed] (c1) ++(-0.5,-0.7) edge +(1.5,0) edge +(-0.5,0) edge +(0,1.7) -- +(0,-0.3);
    \draw[<-, line width=0.3pt, >=stealth,blue] (c2) -- (c1) node[xshift=-0.5cm, explan,pin=135:5mm left]{L};
    \draw[<-, line width=0.3pt, >=stealth,green] (c2) -- (c1) node[yshift=-0.7cm, explan,pin=-45:7mm down]{L};
    \draw [densely dashed,blue] (c1) -- ++(-0.5cm,0) coordinate [midway,pin=above:5mm] (c3) ;
    \draw [densely dashed,green] (c1) -- ++(0,-0.7cm) coordinate [midway,pin=right:7mm] (c4) ;
  \end{scope}
  \draw[<-, line width=0.3pt, >=stealth] (c2) -- (c1) node[xshift=-0.5cm, yshift=-0.7cm, font=\tiny,pin=-135:5mm left 7mm down]{L};
\end{tikzpicture}
\end{document}

答え3

ここでは、赤と緑の 2 つの方法を紹介します。

  • xshift彼らが言うとおりにしてください:yshift指定された量だけシフトします
  • 長さがわかっていれば大丈夫です
  • 使用しないときmidwayや使用しないpos方が良いとき
  • midway単純にpos=.5

ところで、緑色のテキストと left/right キーワードは、あなたが指定したとおり間違った側に表示されているようです。つまり、<-先頭に矢印があり、次に線があり、最後に矢印がありません。

結果

\documentclass{article}
%\usepackage{graphicx} % Required for inserting images
\usepackage{tikz}
\usetikzlibrary{positioning}
\usepackage[margin=2.625cm]{geometry}
\usepackage{subcaption}

\begin{document}
 \begin{tikzpicture}

 \fill (1.5,1.5) circle [radius=0.05] 
                 node[above, yshift=-0.03cm, font=\small] {1};
 \draw[<-, line width=0.3pt, >=stealth] (0.7,0.0) -- (1.5,1.5) 
                node[xshift=-0.5cm, yshift=-0.7cm, font=\tiny]{L}
                node[red,midway,right]{+}
                node[green,pos=0.2,right]{+};
 \end{tikzpicture}
\end{document}

答え4

このような:

ここに画像の説明を入力してください

コード:

\documentclass{article}
%\usepackage{graphicx} % Required for inserting images
\usepackage{tikz}
\usetikzlibrary{positioning}
\usepackage[margin=2.625cm]{geometry}

\begin{document}
    \begin{tikzpicture}
        \fill (1.5,1.5) circle [radius=0.05] node[above, yshift=-0.03cm, 
        font=\small]{1};
        \draw[<-, line width=0.3pt, >=stealth] (0.7,0.0) -- (1.5,1.5) 
        node[pos=.5, font=\tiny,fill=white]{L};
    \end{tikzpicture}
\end{document}

関連情報