मैं एक पेड़ आरेख कैसे बना सकता हूं जहां लीफ्स को धर्मान्तरित शाखाओं से जोड़ा जाता है?

Aug 16 2020
\documentclass{article}
\usepackage{fullpage}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{arrows,shapes,positioning,shadows,trees}
\usetikzlibrary{arrows.meta}
\usepackage{mdframed}
\usepackage{boxedminipage}
\usepackage{forest}

\begin{document}

\begin{forest}
% Styling
for tree={
align=center,
parent anchor=south,
child anchor=north,
edge={thick, -{Stealth[]}},
l sep+=10pt,
edge path={
\noexpand\path [draw, \forestoption{edge}] (!u.parent anchor) -- +(0,-10pt) -| (.child anchor)\forestoption{edge label};
},
if level=0{
inner xsep=-15pt,
tikz={\draw [thick] (.south east) -- (.south west);}
}{}
}
%
[Alphabet
[a
[b]
[c] ]
[b
[d]
[e] ]
]
\end{forest}

\end{document}

मैं स्केच में नीचे दिखाए गए तरीके से सभी शाखाओं को कैसे जोड़ सकता हूं

जवाब

3 AndréC Aug 16 2020 at 16:29

अद्यतन 2: नोड्स के बीच नोड्स नोड्यूल विनिर्देश के साथ

सभी अतिरिक्त तीर (वन द्वारा मूल रूप से निर्मित नहीं) जो दो नोड्स को जोड़ते हैं, उन्हें पेड़ में शॉर्ट नोड वॉक सिंटैक्स के साथ रखा जाता है । यह पहले (एक वास्तविक शैली व्यायाम) के रूप में नोड्स का नाम लिए बिना । इन तीरों के दृश्य की अनुमति देने के लिए, मैंने उन्हें लाल रंग में रंगा ।

मैं मैनुअल को उद्धृत करता हूं:

नोड नोडल नोड संबंधों को व्यक्त करने का एक संक्षिप्त तरीका है। यह बस चरणों की एक स्ट्रिंग है, जो एकल वर्णों द्वारा दर्शाए जाते हैं, जहां: u मूल नोड (ऊपर) के लिए खड़ा है; पिछले भाई-बहन के लिए पी ; n अगले भाई के लिए; एस के लिए भाई (केवल बाइनरी पेड़ में उपयोगी); 1 , 2 ,। । । 9 पहले, दूसरे, के लिए। । । नौवां बच्चा; एल, अंतिम बच्चे के लिए, आदि पूर्ण विनिर्देश के लिए, खंड 3.8.7 देखें ।

\documentclass[border=5mm]{standalone}
\usepackage{forest}
\usetikzlibrary{arrows.meta}
\useforestlibrary{linguistics}

\begin{document}
\begin{forest}
% Styling
for tree={
    align=center,
    parent anchor=south,
    child anchor=north,
    edge={thick, -{Stealth[]}},
    l sep+=10pt,
    edge path={\noexpand\path [draw, \forestoption{edge}] (!u.parent anchor) -- +(0,-10pt) -| (.child anchor)\forestoption{edge label};
},
if level=0{inner xsep=-15pt,tikz={\draw [thick] (.south east) -- (.south west);}
}{}
}
%
[Alphabet
    [a
        [b]
        [c,s sep=10,
        [f,s sep=30,
            [,phantom]
            [z,edge={white}]
                {\draw[thick,red,-{Stealth[]}] (!rllN.south east) -- +(0,-10pt) -| (!c); %<-- arrow from g to z
                \draw[thick,red] (!uss.south west) -- +(0,-10pt) -| (!c) ;%<-- arrow from f to z
           }
        ]{\draw[thick,red,shorten >=3pt] (!us.south) -- +(0,-10pt) -| (!c) ;}%<-- arrow from b to f
        [,phantom]          
        ] 
    ]
    [b
        [d]
        [e,s sep=9
            [g]{\draw[thick,red,shorten >=3pt] (!us.south) -- +(0,-10pt) -| (!c) ;}%<-- arrow from d to g
            [,phantom]         
        ] 
    ]
]
\end{forest}

\end{document}

एक अद्यतन के जवाब में

मैंने इस परिणाम को प्राप्त करने के लिए बहुत सारी छेड़छाड़ की है और इसलिए मुझे यकीन नहीं है कि मैं सुरुचिपूर्ण ढंग से कोडित हूं। यदि कोई वन विशेषज्ञ आता है, तो मैं सुन रहा हूं कि क्या सुधार किया जा सकता है।

\documentclass[border=5mm]{standalone}
\usepackage{forest}
\usetikzlibrary{arrows.meta}
\useforestlibrary{linguistics}

\begin{document}
\begin{forest}
% Styling
for tree={
    align=center,
    parent anchor=south,
    child anchor=north,
    edge={thick, -{Stealth[]}},
    l sep+=10pt,
    edge path={\noexpand\path [draw, \forestoption{edge}] (!u.parent anchor) -- +(0,-10pt) -| (.child anchor)\forestoption{edge label};
},
if level=0{inner xsep=-15pt,tikz={\draw [thick] (.south east) -- (.south west);}
}{}
}
%
[Alphabet
    [a
        [b,name=b]
        [c,s sep=10,
        [f,name=f,s sep=30,
            [,phantom]
            [z,name=z,edge={white}]
        ]
        [,phantom]          
        ] 
    ]
    [b
        [d,name=d]
        [e,s sep=9
            [g,name=g]
            [,phantom]         
        ] 
    ]
]
\draw[thick,shorten >=2pt] (b.south) -- +(0,-10pt) -| (f.north);
\draw[thick,shorten >=2pt] (d.south) -- +(0,-10pt) -| (g.north);
\draw[thick,shorten >=2pt] (g.south east) -- +(0,-10pt) -| (z.north);
\draw[thick,-{Stealth[]}] (f.south west) -- +(0,-10pt) -| (z.north);
\end{forest}

\end{document}

पुराना उत्तर

अधिक सुरुचिपूर्ण समाधान हो सकता है, लेकिन यहां मेरा प्रस्ताव है।

\documentclass[border=5mm]{standalone}
\usepackage{forest}
\usetikzlibrary{arrows.meta}
\useforestlibrary{linguistics}
%\usepackage{fullpage}
%\usepackage[utf8]{inputenc}
%\usepackage{tikz}
%\usetikzlibrary{arrows,shapes,positioning,shadows,trees}
%\usepackage{mdframed}
%\usepackage{boxedminipage}


\begin{document}
\begin{forest}
% Styling
for tree={
    align=center,
    parent anchor=south,
    child anchor=north,
    edge={thick, -{Stealth[]}},
    l sep+=10pt,
    edge path={\noexpand\path [draw, \forestoption{edge}] (!u.parent anchor) -- +(0,-10pt) -| (.child anchor)\forestoption{edge label};
},
if level=0{inner xsep=-15pt,tikz={\draw [thick] (.south east) -- (.south west);}
}{}
}
%
[Alphabet
    [a
        [b,name=b]
        [c,name=c
            [,phantom]
            [z,name=z]
        ] 
    ]
    [b
        [d,name=d]
        [e,name=e] 
    ]
]
\draw[thick,shorten >=2pt] (b.south) -- +(0,-10pt) -| (z.north);
\draw[thick,shorten >=2pt] (d.south) -- +(0,-10pt) -| (z.north);
\draw[thick,shorten >=2pt] (e.south) -- +(0,-10pt) -| (z.north);
\end{forest}

\end{document}