我正在尝试找到一种将 avm.sty 中的两个对象链接在一起的方法。我想要的结果正是此处指定的结果:http://www.essex.ac.uk/linguistics/external/clmt/latex4ling/avms/#4
我使用的是 pdftex,所以 tree-dvips 不起作用。如何在 pdftex 中实现相同的效果?我假设可以使用 tikz 来实现,但我无论如何也想不出如何实现。
示例代码如下:
\begin{avm}
\[{} PRED `avoid <SUBJ, OBJ>'; TNS $\neq$ PAST \\
TOPIC \[ PRED `kind<COMP>' \\
DEF +; LOC FAR; NUM SG \\
COMP \[ PRED `of <OBJ>' \\
OBJ \[ PRED `cake'\] \] \] \\
SUBJ \[ PRED `pro'; NUM SG; PERS 1; CASE NOM\] \\
OBJ \[ $\qquad$ \] \\
ADJ \[ PRED `usually'\] \]
\end{avm}
tree-dvips 的实现如下:
\begin{avm}
\[{} PRED `avoid <SUBJ, OBJ>'; TNS $\neq$ PAST \\
\node{topic}{TOPIC \[ PRED `kind<COMP>' \\
DEF +; LOC FAR; NUM SG \\
COMP \[ PRED `of <OBJ>' \\
OBJ \[ PRED `cake'\] \] \]} \\
SUBJ \[ PRED `pro'; NUM SG; PERS 1; CASE NOM\] \\
\node{object}{OBJ \[ $\qquad$ \]} \\
ADJ \[ PRED `usually'\] \]
\end{avm}
\nodecurve[r]{topic}[r]{object}{2in}
我能想到的最好的使用 tikz 的方法是:
\begin{avm}
\[{} PRED `avoid <SUBJ, OBJ>'; TNS $\neq$ PAST \\
\tikz \node (topic) {TOPIC \[ PRED `kind<COMP>' \\
DEF +; LOC FAR; NUM SG \\
COMP \[ PRED `of <OBJ>' \\
OBJ \[ PRED `cake'\] \] \]}; \\
SUBJ \[ PRED `pro'; NUM SG; PERS 1; CASE NOM\] \\
\tikz \node (object) {OBJ \[ $\qquad$ \]}; \\
ADJ \[ PRED `usually'\] \] \tikz \node (viapoint) {};
\end{avm}
\tikz[overlay] \draw[-] (topic) to[out=0,in=90 ] (viapoint)
(viapoint) to[out=270,in=0] (object);
然而,这会导致两条不连续的线,其中一条穿过其他文本。
任何有关改进的帮助都将不胜感激。
答案1
这是使用该库的解决方案tikzmark
。(单独记录:texdoc tikzmark
将显示其文档。)
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{avm}
\usepackage{tikz}
\usetikzlibrary{tikzmark,positioning}
\begin{document}
\begin{avm}
\[{} PRED `avoid <SUBJ, OBJ>'; TNS $\neq$ PAST \\
TOPIC \[ PRED `kind<COMP>' \\
DEF +; LOC FAR; NUM SG \\
COMP \[ PRED `of <OBJ>' \\
OBJ \[ PRED `cake'\] \] \]\tikzmark{topic} \\
SUBJ \[ PRED `pro'; NUM SG; PERS 1; CASE NOM\] \\
OBJ \[ $\qquad$ \]\tikzmark{object} \\
ADJ \[ PRED `usually'\] \]
\end{avm}
\tikz[remember picture,overlay]
\draw[-] (pic cs:topic) to[out=0,in=0,looseness=2] (pic cs:object);
\end{document}