Если у меня, например, есть такой код:
\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
after --
(или after 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
Кстати, зеленый текст, а также ключевое слово 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}