有人能认出生产这些酷炫箭头的包装吗?这个特别的来自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}
对于带有注释示例的箭头,注释线前面需要加上命令,\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}
答案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}