买者自负 ...

买者自负 ...

在参照这个帖子,我有一个后续问题。我需要做的基本上是类似以下的事情:

在此处输入图片描述

这是我的尝试:

\documentclass[12pt]{article}

\usepackage[linguistics]{forest}
\usetikzlibrary{decorations.pathmorphing}
\forestset{%
/tikz/squiggly/.style={decorate, decoration={snake, amplitude=.5mm, segment length=2mm}},
wiggly/.style={edge=squiggly},
move me/.style n args=2{%
before drawing tree={%
  x+=#1,
  y+=#2,
     },
  },
 }

\begin{document}

\begin{forest}
[P\textsubscript{\scshape [rel]}, move me={-150pt}{0pt}
    [{\itshape bla}, wiggly, move me={200pt}{0pt}]           
    [D\textsubscript{\scshape [+def]}, move me={-150pt}{0pt}
        [{\itshape bla}, wiggly, move me={200pt}{0pt}]
        [{\itshape bla, no edge, move me={80pt}{-20pt}]
        [{\itshape \textfishhookr a} <P\textsubscript{\scshape [rel]}, D\textsubscript{\scshape [+def, +fem]}>, no edge, move me={-30pt}{-40pt}]
        [, phantom, calign with current]
        [NP, move me={-150pt}{-15pt}
                [{\hspace{2cm}}, roof, move me={-150pt}{-15pt}]
            ]
        ]
    ]

 \end{forest}

 \end{document}

但它遇到了一个我无法弄清楚的错误。有什么想法吗?

谢谢!

答案1

在这种情况下,我也不会使用move me,但也会创建一个节点。但是,我可能会以常规方式将其创建为树的一部分。但是,Sašo 是这方面的专家,所以可能有充分的理由不按我的方式做!

买者自负 ...

wigglysquiggly的定义与之前相同,节点内容来自 Sašo 的答案。parent to=<node>从当前节点parent anchor到目标节点绘制一条波浪线child anchorphantom节点和calign=fixed edge angles间距帮助。我们覆盖“bla node usingplain content , aligning things at the centre and using atier”的数学模式,以确保终端节点的水平对齐。

\documentclass[border=10pt,multi,tikz]{standalone}
\usepackage[linguistics]{forest}
\usetikzlibrary{decorations.pathmorphing}
\forestset{%
  /tikz/squiggly/.style={
    decorate,
    decoration={snake, amplitude=.5mm, segment length=2mm}},
  wiggly/.style={edge=squiggly},
  parent to/.style={
    tikz+={\draw [squiggly] (.parent anchor) -- (#1.child anchor);}
  },
}

\begin{document}
\begin{forest}
  where n children=0{tier=terminus}{},
  [P\textsubscript{\scshape [rel]}
    [bla\\bla\\bla, plain content, align=c, font=\itshape, wiggly]
      [D\textsubscript{\scshape [+def]}, parent anchor=south east, child anchor=120, calign=fixed edge angles, parent to=!r1
      [, phantom]
      [NP
        [{\hspace*{1cm}}, roof]
      ]
    ]
  ]
\end{forest}
\end{document}

另一个摇摆不定的

答案2

该示例无法编译,因为{\itshape \textfishhookr a} <P\textsubscript{\scshape [rel]}, D\textsubscript{\scshape [+def, +fem]}>}包含逗号。因此,Forest 和 TikZ 假设这D\textsubscript{\scshape [+def, +fem]}>}是键名。解决方案:用括号将该内容括起来。

但是为了从问题中绘制树,我不会创建三个 bla 节点并手动移动所有内容,而是创建一个 tikz(即非森林)节点 bla,半手动定位它,然后手动将节点连接到它(使用森林\draw内部的tikz键)。

\documentclass[12pt]{article}
\usepackage{tipa}

\usepackage[linguistics]{forest}
\usetikzlibrary{decorations.pathmorphing}
\forestset{%
  /tikz/squiggly/.style={
    decorate,
    decoration={snake, amplitude=.5mm, segment length=2mm}},
  to bla/.style={
    phantom,
    tikz+={\draw[squiggly] (!u)--(bla);},
  }
}

\begin{document}
\begin{forest}
  [P\textsubscript{\scshape [rel]}
    [,to bla]
    [D\textsubscript{\scshape [+def]}
      [,to bla]
      [NP
        [{\hspace*{1cm}}, roof]
      ]
    ]
  ]
  \path
    (!r) |-
    node(bla)[align=left,anchor=north east,
      shift={(-1em,2ex)},font=\itshape]
      {bla\\bla\\bla}
    (!lll);
\end{forest}
\end{document}

结果

相关内容