나무와 비슷하지만 화살표가 더 많습니다.

나무와 비슷하지만 화살표가 더 많습니다.

그래프와 같은 다음 트리를 얻는 가장 간단한 방법은 무엇입니까?

여기에 이미지 설명을 입력하세요

답변1

그래프가 를 사용하면 매우 간단하기 때문에 또 다른 대안이 됩니다 tikz-cd.

여기에 이미지 설명을 입력하세요

\documentclass{article}
\usepackage{tikz-cd}
\usepackage{amsmath}
\begin{document}
\begin{tikzcd}
 &  & a &  &  \\
 & b \arrow[ru] &  & c \arrow[lu] &  \\
d \arrow[ru] &  & e \arrow[lu] \arrow[ru] &  & f \arrow[lu]
\end{tikzcd}
\end{document}

귀하의 질문에 대해 다음 링크를 참조하여 화살표 유형을 수정하십시오. TikZ/PGF에서 화살촉의 크기를 변경할 수 있습니까?

아래에 새로운 예가 있습니다. 화살표 하나의 두께를 수정했습니다. 여기에 이미지 설명을 입력하세요

\documentclass{article}
\usepackage{tikz-cd}
\usetikzlibrary{arrows}
\usepackage{amsmath}
\begin{document}
\begin{tikzcd}
 &  & a &  &  \\
 & b \arrow[-triangle 90,
        line width=.8mm,ru] &  & c \arrow[lu] &  \\
d \arrow[ru] &  & e \arrow[lu] \arrow[ru] &  & f \arrow[lu]
\end{tikzcd}
\end{document}

답변2

TikZ 그래프 라이브러리는 이 작업을 매우 간단하게 수행할 수 있습니다.

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{graphs}
\begin{document}
\begin{tikzpicture}
\graph[branch right, grow down] 
{a[x=1] <- {{b <- {d[x=-1],e}}, {c <- {e,f[x=1]}}}};
\end{tikzpicture}
\end{document}

코드 출력

이미지처럼 그래프를 더 간결하게 만들고 싶다면 분기 너비를 줄일 수 있습니다. 노드 조정도 해당 너비에 따라 달라지므로 다음과 같은 매크로를 사용하는 것이 가장 좋습니다.

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{graphs}
\newcommand*{\bw}{.5}
\begin{document}
\begin{tikzpicture}
\graph[branch right=\bw, grow down] 
{a[x=\bw] <- {{b <- {d[x=-\bw],e}}, {c <- {e,f[x=\bw]}}}};
\end{tikzpicture}
\end{document}

두 번째 코드 출력

답변3

환경 에서도 쉽고 간단합니다 psmatrix.

\documentclass{article}
\usepackage{pst-node}
\usepackage{auto-pst-pdf} %% to compile with pdflatex --enable-write18 (MiKTeX) or pdflatex --shell-escape (TeX Live, MacTeX))

\begin{document}%

\begin{psmatrix}[rowsep=1cm, colsep=0.9cm]
& &[name=a] a \\
& [name=b] b & & [name=c] c \\
[name=d] d & & [name=e] e & & [name=f] f
\foreach \beg/\targ in {b/a, c/a, d/b, e/b, e/c, f/c}{\ncline[arrows=->, arrowinset=0.12, nodesep=3pt]{\beg}{\targ}}
\end{psmatrix}

\end{document} 

여기에 이미지 설명을 입력하세요

답변4

MetaPost를 사용한 급한 시도와 그boxesLuaLaTeX 프로그램에 포함된 패키지입니다.

\RequirePackage{luatex85}
\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
    \mplibtextextlabel{enable}
\begin{document}
\begin{mplibcode}
input boxes;
def junction(suffix a, b) =
    drawarrow a.c -- b.c cutbefore bpath.a cutafter bpath.b;
enddef;
h := 1.25cm; v := 1cm;
beginfig(1);
    forsuffixes z = a, b, c, d, e, f: circleit.z(str z); endfor;
    e.c = origin; f.c = (h, 0) = - d.c;  
    b.c = (-.5h, v); c.c = (.5h, v);
    a.c = (0, 2v);
    drawunboxed(a, b, c, d, e, f);
    junction (b, a); junction(c, a);
    junction(d, b); junction(e, b);
    junction(e, c); junction(f, c);
endfig;
\end{mplibcode}
\end{document}

여기에 이미지 설명을 입력하세요

예를 들어 다음을 사용했다면 확실히 더 능숙하게 코딩되었을 수 있습니다.metaobj패키지인데 잘 모르겠어요.

관련 정보