例如,如果我有以下代码:
\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 是如何工作的。shift 与什么相比较?
答案1
除了使用\fill
圆圈,您还可以指定Circle
箭头尖端(需要arrows.meta
库)。然后,您可以在一条线上绘制线条、两个尖端和两个标签。
放置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
。现有的答案之一涉及您的第二个问题,但并没有真正解释它。
要理解做什么xshift
和yshift
做什么,你需要首先考虑联合国移位的节点将会出现。下图用红色显示了这个位置。如果你只是把节点放在那里,它就会出现在这里。
默认锚点是节点的,与圆形节点的center
对齐。center
xshift=-0.5cm
只是说将节点向左移动 0.5 厘米。我们用蓝色来显示。
这意味着红色版本的中心和蓝色版本的中心之间将有 5 毫米。
yshift=-0.7cm
只是说将节点向下移动 0.7 厘米。我们用绿色显示它。
xshift=-0.5cm,yshift=-0.7cm
结合这两个指令,使节点向左移动 0.5 厘米,向下移动 0.7 厘米。
那是,
\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
这里有两种方法可以做到,红色和绿色。
xshift
按照他们说的做:yshift
按给定的量移动- 如果你知道所涉及的长度,那就没问题
- 当你不使用
midway
或pos
更好 - 简单来说
midway
就是pos=.5
顺便说一句,绿色文本以及左/右关键字似乎出现在错误的一侧,正如您所说<-
,即开头有箭头,然后是一条线,结尾没有箭头。
\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}