语言树和从右到左

语言树和从右到左
\documentclass[12pt]{article}

\usepackage{csvsimple,filecontents}
\usepackage{fontspec}
\usepackage[american]{babel}
\usepackage{libertine}
\newfontfamily\arabicfont[Script=Arabic,Scale=2]{Amiri}
\usepackage[fullvoc]{arabluatex}
\usepackage[linguistics]{forest}



\begin{document}

\begin{forest}
[Possessive Construction[possessor[\arb{al-kitAbi}]][possessed[\arb{.A_ayAtu}]]]
\end{forest}

\end{document}

因为阿拉伯语是从右到左的,在上面的“树”中,我需要以相反的顺序输入单词。对于这个短语来说,这是可以的,但对于长句子来说,可能容易出错。我能做些什么,让我从左到右输入单词,然后输出结果从右到左?

在此处输入图片描述

答案1

在 中这相当简单forest。它有一个reversed键,可用于反转节点的顺序。这可应用于整个树以获得正确的阿拉伯语书写顺序,即使树是按照阿拉伯语口语顺序输入的。

在以下示例中,我创建了一个名为的样式written order,它将反转树中的所有节点以反映书写顺序。树可以按口语顺序输入。

由于我是一名句法学家,我为阿拉伯语句子提供了一个相当正确的树,显示了动词移动的踪迹,但由于我不了解阿拉伯音译系统,所以我使用了一种临时版本。我添加了一个辅助样式,arabic它将终端节点的内容包装在\arb宏中,这样您就不必为每个单词都输入它。我选择用尖括号显示移动的踪迹,但只显示音译形式。感谢@cfr 帮助我选择将not arb任何特定节点设为非阿拉伯语。

% !TEX TS-program = LuaLaTeX

\documentclass{article}
\usepackage[linguistics]{forest}
\usepackage{libertine}
\newfontfamily\arabicfont[Script=Arabic]{Amiri}
\usepackage[fullvoc]{arabluatex}
\usepackage[margin=1in]{geometry}

\forestset{
  declare boolean={arb}{1},
  arabic/.style={
    where n children={0}{
      tier=word,
      delay={
        if arb={content={\arb{##1}}}{},
      },
    }{}
  },
  written order/.style={for tree=reversed},
}

\newcommand{\trace}[1]{$\langle$#1$\rangle$}
\begin{document}

\begin{forest}arabic
[TP       
    [T [ra'aa] ] 
    [VP
        [DP [D [al]] [NP [N [rajul]]]]
        [V' 
            [V [{\arb[trans]{\trace{ra'aa}}}]]
            [DP [D [al] ] [NP [N [filam]]]]
        ]
    ]
]
\end{forest}
\hfill
\begin{forest}written order,arabic
[TP       
    [T [ra'aa]] 
    [VP
        [DP [D [al]] [NP [N [rajul]]]]
        [V' 
            [V [{\arb[trans]{\trace{ra'aa}}}]]
            [DP [D [al]] [NP [N [filam]]]]
        ]
    ]
]
\end{forest}
\end{document}

代码输出

相关内容