语法中的移动箭头

语法中的移动箭头

有人能认出生产这些酷炫箭头的包装吗?这个特别的来自https://ling.auf.net/lingbuzz/004081但我在语法论文中多次看到过它,有很多变体。除了我见过的论文中的一些其他功能似乎可以在 XeLaTeX 下工作(根据其他在 LaTeX 下不容易工作的软件包判断),我不知道它是什么。

在此处输入图片描述

答案1

很多年前,我曾在一条评论中承诺过,要将对类似问题的答案整理成一个包。

您的问题促使我在十年后真正兑现了这一承诺。该movement-arrows软件包现已在 CTAN 上可用,如果您有当前年份的 TeXLive 或 MikTeX,则可以将其作为发行版的常规更新进行安装。由于 TikZ 库套件的存在,软件包中的代码与答案中的代码有很大不同tikz-extra

基本思路保持不变:使用\mkword宏将单词标记为节点,然后使用\mvarrow命令添加箭头。如果提供了单个参数,则\mkword宏会将其用作word节点名称。如果单词参数是短语或包含其他标记(下标、格式等),则必须使用可选参数提供明确的节点名称。

\mvarrow宏接受两个节点并将它们连接起来。可选参数允许您使用 添加圆圈标签circ=<label>circ这是 TikZ 样式,因此可以根据需要创建其他类型的标签。

\mkword[<name>]{<word>}
\mvarrow[circ=<label>]{<from-name>}{<to-name} % under arrow
\mvarrow*[circ=<label>]{<from-name>}{<to-name} % over arrow

这是来自 Nevins 和 Weisser 的例子(一个我非常关心的话题!)为了与其他包兼容,我没有使用允许在常规文本中使用和\automath的函数,而是使用了宏。gb4e_^\sb

\documentclass[12pt]{article}
\usepackage{movement-arrows}
\usepackage{gb4e}
\let\sb\textsubscript
\begin{document}
\begin{exe}
\ex This is an example.
\end{exe}
\begin{exe}
\sn
\ex{[ [\sb{ConjP} [ \mkword[NP1]{NP\sb{1}} [\sb{Conj'} in \mkword[NP2]{NP\sb{2}} ] ] \textsc{aux}  \mkword{V} \dots}
\mvarrow*[circ=1]{V}{NP1}
\mvarrow[red,circ=2]{V}{NP2}
\end{exe}

\end{document}

gb4e 代码的输出

对于带有注释示例的箭头,注释线前面需要加上命令,\glossarrow以便为箭头留出适当的空间。文字上方的箭头可以使用\arrowstrut命令来增加更多垂直空间。

这是使用 的相同示例linguex。我创建了一个宏版本\sn,使用箭头上方在示例前添加了一些垂直空间。这可以防止箭头侵占上一个示例。

\documentclass[12pt]{article}
\usepackage{movement-arrows}
\usepackage{linguex}
\let\sb\textsubscript
\begin{document}
\ex. This is an example.

\ex.
\arrowstrut
{[ [\sb{ConjP} [ \mkword[NP1]{NP\sb{1}} [\sb{Conj'} in
   \mkword[NP2]{NP\sb{2}} ] ] \textsc{aux}  \mkword{V} \dots}
\arrow*[circ=1]{V}{NP1}
\arrow[red,circ=2]{V}{NP2}

\end{document}

linguex 代码的输出

答案2

也许这种方法有用

\documentclass{article}

\usepackage{tikz-cd}

\begin{document}
\[
\begin{tikzcd}[column sep=tiny]
  & {} & {}\\
  A & B\ar[u, phantom, ""{coordinate, name=b}] & C\ar[d, phantom, ""{coordinate, name=a}]
  & D
  \ar[ll,"1"{pos=0.75,description,shape=circle,draw=white,double=black,double distance=0.4pt,inner sep=1pt},to path={
      -- (\tikztostart.north)
      |- (b) \tikztonodes
      -| (\tikztotarget.north)
  }] 
  \ar[l,"2"{pos=0.75,description,shape=circle,draw=white,double=black,double distance=0.4pt,inner sep=1pt},to path={
      -- (\tikztostart.south)
      |- (a) \tikztonodes
      -| (\tikztotarget.south)
  }]
\\
  && {}
\end{tikzcd}
\]
\end{document}

在此处输入图片描述

相关内容