光泽的运动箭头

光泽的运动箭头

这个问题导致了一个新的方案的出现:
movement-arrows

是否有可能对gb4e一个示例进行注释并且在示例中有一个移动箭头。

我目前正在使用gb4e,我想要一个从“t”到“een auto”的箭头。我已经查看了其他软件包(xytreetikz),但我找不到办法做到这一点

\documentclass[11pt]{article}
\usepackage{gb4e}

\begin{document}

\begin{xlist}
        \ex \label{scramble-det}
        \gll 
        ... dat Jan een auto gisteren t gekregen heeft.\\
        ... that John a car  yesterday t gotten has \\
        ... that John a car yesterday.
\end{xlist}
\end{document}

以下示例取自gb4e文档,但我不理解它,因此无法修改它以满足我的需要:

在此处输入图片描述

答案1

更新:

请使用所示的答案的打包版本我的其他答案

原始答案

这是使用我版本的流行宏来实现此目的的方法tikzmark,因为gb4e箭头版本使用起来非常麻烦。如果您需要将 real\tikzmark用于其他目的,则需要更改我的代码中的宏名称。

这主要将来自不同来源的代码片段组合在一起。有两个问题需要解决:第一,用箭头连接注释中的单词;第二,在注释后添加一些空间以容纳箭头。

我创建了一个新的\ex\arrowex,作为带有箭头的示例。每个要用箭头连接的单词都会通过命令引入\tikzmark。节点名称将与单词本身相同。最后,\arrow宏会连接单词。

\documentclass[11pt]{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\newcommand\tikzmark[1]{\tikz[remember picture, baseline=(#1.base)] \node[anchor=base,inner sep=0pt, outer sep=0pt] (#1) {#1};}

% This code from http://tex.stackexchange.com/q/55068/2693
\tikzset{
    ncbar angle/.initial=90,
    ncbar/.style={
        to path=(\tikztostart)
        -- ($(\tikztostart)!#1!\pgfkeysvalueof{/tikz/ncbar angle}:(\tikztotarget)$)
        -- ($(\tikztotarget)!($(\tikztostart)!#1!\pgfkeysvalueof{/tikz/ncbar angle}:(\tikztotarget)$)!\pgfkeysvalueof{/tikz/ncbar angle}:(\tikztostart)$)
        -- (\tikztotarget)
    },
    ncbar/.default=0.5cm,
}

% Thanks to Paul Gessler adn Percusse for code improvement here
\newcommand{\arrow}[2]{\begin{tikzpicture}[remember picture,overlay]
\draw[->,shorten >=3pt,shorten <=3pt] (#1.base) to [ncbar=\arrowht] (#2.base);
\end{tikzpicture}
\setlength{\arrowht}{0ex}
}
\usepackage{gb4e}
% The following code modified from 
% http://permalink.gmane.org/gmane.comp.tex.linguistics/1036
% This adds some extra space after the first line
\newlength{\arrowht}
\setlength{\arrowht}{0ex}
\newcommand*\cgdepthstrut{{\vrule height 0pt depth \arrowht width 0pt}}
\renewcommand\eachwordone{\cgdepthstrut\rmfamily}
\renewcommand\glt{\vskip -\topsep}
\let\trans=\glt
\newcommand\arrowex{\setlength{\arrowht}{2.5ex}\ex}


\begin{document}
\begin{exe}
\ex\label{scramble-det}
\begin{xlist}
        \arrowex 
        \gll 
        \ldots dat Jan \tikzmark{een} auto gisteren \tikzmark{t}  gekregen heeft.\\
        \ldots that John a car  yesterday t gotten has \\
        \ldots that John a car yesterday.
        \arrow{t}{een}
\end{xlist}
\end{exe}

\begin{exe}
\ex\label{scramble-det}
\begin{xlist}
        \ex 
        \gll 
        \ldots dat Jan een auto gisteren t gekregen heeft.\\
        \ldots that John a car  yesterday t gotten has \\
        \ldots that John a car yesterday.
\end{xlist}
\end{exe}
\end{document}

代码输出

答案2

最后,我终于兑现了我的评论,并将我原来的答案变成了一个包。底层代码不同,并且包允许上下箭头,所以我添加了一个单独的答案。该包还增加了带圆圈标签的可能性,以回答这个问题:

这是一个示例文档,展示了它的一些功能。

\documentclass[11pt]{article}

\usepackage{gb4e}
\usepackage{movement-arrows}
\begin{document}
\begin{exe}
\ex
\begin{xlist}
\ex{
\arrowgloss\gll\ldots dat Jan \mkword[een]{een auto} gisteren \mkword{t}  gekregen heeft.\\
\ldots that John {a \hspace*{1em} car}  yesterday t gotten has \\
\ldots that John a car yesterday.}
\mvarrow{t}{een}
\ex  \mkword{Where} did this move from \mkword{t}?
\mvarrow[circ=1]{t}{Where}
\ex Another example.
\end{xlist}
\end{exe}

\begin{exe}
\ex
\begin{xlist}
\ex This \mkword{is} not \mkword[t]{<be>} verb movement.
\mvarrow{t}{is}
\ex It  \mkword{PRES} not \mkword[be]{be} verb lowering.
\mvarrow[circ=2]{PRES}{be}
\end{xlist}
\end{exe}

\begin{exe}
\arrowstrut
\ex \mkword{What} \mkword{has} \mkword[twh]{<what>} \mkword[thas]{<has>}
moved? 
\mvarrow[circ=1]{thas}{has} 
\mvarrow*[circ=2]{twh}{What}
\end{exe}

\end{document}

代码输出

相关内容