1

I know that I can use

\begin{tikzpicture}
\draw (0,0) to node[midway, above=..., left=..., rotate=45] {A} (1,1) ;
\end{tikzpicture}

to set the position of the label, but it is very tedious to calculate the correct position, and when the rotate angle changed, I may need to recalculate the position. Is there an easier way to set the distance between label and arrow?

1
  • You can use [sloped] May 1, 2019 at 14:15

2 Answers 2

1

Like this?

BTW, I apologize for some gratuitous changes, but I find it easier to draw the line first, then add the labels.

demo

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (0,0) -- (1,1) node[midway, above, sloped] {A};
\end{tikzpicture}
\end{document}
4
  • IMHO your suggestion to put the label after the path is not necessarily a good one. True, in this case it works, but in general it won't. Compare \draw (0,-2) to[bend left] (2,-2) node[midway, above, sloped] {A} ; to \draw (0,-2) to[bend left] node[midway, above, sloped] {A} (2,-2);. What you are doing here is certainly not wrong but I personally would refrain from calling your prescription "easier" because it cannot be used in path constructions that are not just --.
    – user121799
    May 1, 2019 at 14:39
  • @marmot - More precisely, I find it easier to read if I don't have to wade thorough all the node(s) before locating the endpoint. (BTW, is sloped even defined for curved lines?) May 2, 2019 at 3:18
  • Yes, sloped is defined, try e.g. \draw (0,0) to[out=90,in=180] node[midway, above, sloped] {A} ++ (2,2); and compare this to \draw (0,0) to[out=90,in=180] ++ (2,2) node[midway, above, sloped] {A} ;.
    – user121799
    May 2, 2019 at 3:24
  • @marmot - Ah, the problem isn't with sloped or bend, it is with to and midway (or any pos). May 2, 2019 at 3:53
2

With the library positioning, you can choose any distance you like after above left=, please note the and between the two distances.

Of course, you could use also above or left alone, and also below, right or a combination of them.

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{document}
\begin{tikzpicture} 
\draw (0,0) to node[midway, above left=3ex and 1em, rotate=45] {A} (1,1) ; \end{tikzpicture}
\end{document}

enter image description here

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .