たとえば、次のコードがあるとします。
\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 番目の質問に触れていますが、実際には説明されていません。
何をすべきかを理解するためにはxshift
、yshift
まず、国連シフトされたノードが表示されます。次の図では、この位置が赤で示されています。ノードをここに配置した場合、ここに表示されます。
デフォルトのアンカーはcenter
ノードの で、center
円形ノードの と位置合わせされます。
xshift=-0.5cm
ノードを 0.5cm 左にシフトするだけです。これを青で表示しましょう。
つまり、赤いバージョンの中心と青いバージョンの中心の間には 5 mm の隙間があることになります。
yshift=-0.7cm
ノードを 0.7cm 下に移動するように指示されています。これを緑色で表示しましょう。
xshift=-0.5cm,yshift=-0.7cm
これら 2 つの命令を組み合わせて、ノードを 0.5cm 左に、0.7cm 下に移動します。
あれは、
\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}