1

My code follow:

\documentclass{book}
\usepackage{tikz}%
\usetikzlibrary{decorations.text,calc,arrows.meta}%
\usepackage{tikz-qtree}%

\usepackage{adjustbox}
%\usepackage{showframe}
\begin{document}

\begin{adjustbox}{max width=\textwidth}
\begin{tikzpicture}%\scriptsize
\Tree [.{CP} [.{C} ] [.{} [.{C} ] [. \node[label={right:{\bf
\hspace*{2in} Properties of assertions}}]{}; [.{C} ] [.
\node[label={right:{$\Leftarrow$ {\scshape Anchoring} to d
($\pm${\scshape Index})}] }]{TP}; [.{T} ] [.{} [.{Asp} ]
[.\node[label={right:{\bf \hspace*{1.5in} Spatiotemporal
properties}}]{}; [.{Asp} ] [. \node[label={right:{$\Leftarrow$
{\scshape Champollion Closure }($\exists$e) } }]{AspP}; [.{Asp} ]
[. \node[label={right:{$\Leftarrow$ {\scshape Introduction of
quotation operator} } }]{EvtP}; [.{Evt} ] [ [.{Evt} ]
[.\node[label={right:{\bf \hspace*{1in} Symbolic event
concepts}}]{}; [.{Evt} ] [.{$\ldots$} ] ] ] ] ] ] ] ] ] ] ]

\draw (3,-10) to [bend left = 40] (10,-7) ;

\draw (-1, -7) to [bend left = 40] (6, -4) ;

\end{tikzpicture}
\end{adjustbox}
\end{document}

It works well and the output shown below:

enter image description here

But in this, please see the roundshape marked portion, that bend should come before the text EvtP, I've tried, but couldn't, any one suggest the way how to do it...

Please see the image after apply your code:

enter image description here

Below suggestion is working fine for my requirement, but if the branch doesn't have contents then there should not be gap, refer the attached image for clearence:

enter image description here

Please suggest how to achieve this?

2

I have written a command \drawArc which takes the name of a node as argument and draws an arc perpendicular to a line from the root node to the last node near the given node. You can move that arc around by redefining the \shift command. And rotate it by redefining the \rotate command.

In order for that to work you must name the root node S and the last node E.

\documentclass{book}
\usepackage{tikz}%
\usetikzlibrary{decorations.text,calc,arrows.meta}%
\usepackage{tikz-qtree}%

\usepackage{adjustbox}
%\usepackage{showframe}
\begin{document}

\begin{adjustbox}{max width=\textwidth}
\begin{tikzpicture}
\Tree[. \node (S) {CP};
[.{C} ]   [. {} 
[.{C} ]   [. \node[label={[label distance=2in, font=\bfseries]right:Properties of assertions}]{}; 
[.{C} ]   [. \node[label={right:{$\Leftarrow$ {\scshape Anchoring} to d ($\pm${\scshape Index})}] }]{TP}; 
[.{T} ]   [. \node (arc1) {};
[.{Asp} ] [. \node[label={[label distance=1.5in, font=\bfseries]right:Spatiotemporal properties}]{}; 
[.{Asp} ] [. \node[label=right:$\Leftarrow$ \textsc{Champollion Closure} ($\exists$e)]{AspP}; 
[.{Asp} ] [. \node[label=right:$\Leftarrow$ \textsc{Introduction of quotation operator}] (arc2) {EvtP}; 
[.{Evt} ] [
[.{Evt} ] [. \node[label={[label distance=1in, font=\bfseries]right:Symbolic event concepts}]{}; 
[.{Evt} ] [. \node (E) {$\ldots$}; 
] ] ] ] ] ] ] ] ] ] ]

\begin{scope}[bend angle=40]
    \newcommand{\radius}{3}
    \newcommand{\shift}{-.6}
    \newcommand{\rotate}{-10}
    \newcommand{\drawArc}[1]{%
        \path (E) -- ($(E)!(#1)!(S)$) -- ([turn] 0:\shift) -- ([turn] -90+\rotate:\radius) coordinate (tmp1);
        \path (E) -- ($(E)!(#1)!(S)$) -- ([turn] 0:\shift) -- ([turn] +90+\rotate:\radius) coordinate (tmp2);
        \draw (tmp1) to [bend left] (tmp2);
    }

%   \renewcommand{\shift}{-.9}
    \drawArc{arc1}

%   \renewcommand{\shift}{-1.4}
    \drawArc{arc2}

\end{scope}

\end{tikzpicture}
\end{adjustbox}

\end{document}

enter image description here

This is how \drawArc works:

  • the first two path commands do not draw something, they define the coordinates from where to where to draw the arc
  • (E) -- the path starts at coordinate E (to specify a direction so that I can use turn later on)
  • ($(E)!(#1)!(S)$) moves to the projection of (#1) on the line from (E) to (S) (see this answer)
  • -- ([turn] 0:\shift) moves the location on the line (E) -- (S)
  • -- ([turn] -90+\rotate:\radius) coordinate (tmp1) defines a coordinate called tmp1 on a line perpendicular (if \rotate is 0) to (E) -- (S) with a distance of \radius
  • the next path command does basically the same thing again, except that it defines a coordinate called tmp2 on the other side of (E) -- (S)
  • the draw command draws the arc from tmp1 to tmp2 with the angle defined in the scope
  • @MadyYuvi I have noticed that my answer was wrong, the (E) -- (S) in the beginning did not specify the angle, therefore the two arcs were drawn in a slightly different angle. Please see my edited answer. – jakun Nov 22 '17 at 10:29
  • yes, this is correct, but now both "arc" top touched the text, but it should not be, I'll edit my question and see the image,,, – MadyYuvi Nov 22 '17 at 10:35
  • @MadyYuvi I have added the possibility to rotate the arcs so that they do not touch the text – jakun Nov 22 '17 at 10:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.