用于排版 RL 文本的最小 bidi

用于排版 RL 文本的最小 bidi

我需要为语言学书籍排版 RTL 文本(阿拉伯语、波斯语)。我知道这个bidi软件包。但是bidi对于我们的目的来说,它太强大了,而且有很多副作用(它基本上影响所有内容:标题、脚注、边注……)。这会导致如下hyperref所述的问题:bidi 和 hyperref 更改连字符

我需要的只是在正文中使用脚本的支持。所以问题是:我需要什么来实现这个功能?我可以使用包中的代码吗bidi?有没有像我一样用户bidi加载的包?我想这将是最模块化的……

\documentclass{scrbook}


\usepackage{fontspec}

\usepackage{bidi}

\newfontfamily\Parsifont[Script=Arabic]{XB Niloofar}
\usepackage{bidi}
\newcommand{\PRL}[1]{\RL{\Parsifont #1}}

\begin{document}

Some Persian example: \PRL{او مرد را دوست نخواهد داشت.}

\end{document}

编辑

好的。我现在有以下内容。这对于一行来说很好,但对于较长的文本来说会中断。问题是,换行后文本应该从右侧开始,而不是从页面中间开始,就像从左到右的文本在页面中间结束一样。

\documentclass{scrbook}

\usepackage{fontspec}       

\newfontfamily\Parsifont[Script=Arabic]{XB Niloofar}

\newcommand{\TeXXeTOn}{\TeXXeTstate=1 }
\newcommand{\TeXXeTOff}{\TeXXeTstate=0 }
\TeXXeTOn

\newcommand{\RL}[1]{\beginR #1\endR}

\newcommand{\PRL}[1]{\RL{\Parsifont #1}}

\begin{document}

Some Persian example: \PRL{او مرد را دوست نخواهد داشت.}


\PRL{او مرد را دوست نخواهد داشت. و مرد را دوست نخواهد داشت. و مرد را دوست نخواهد داشت. و مرد را دوست نخواهد داشت.}


\end{document}

答案1

您将需要两个不同的命令/环境来排版波斯语(或任何其他 RTL 语言以及拉丁文本)。一个用于 LTR 段落中的小型 RTL 文本,一个用于 RTL 段落。

\documentclass{scrbook}

\usepackage{fontspec}       
\input{bidi.tex}
\newfontfamily\Parsifont[Script=Arabic]{XB Niloofar}
\newcommand{\PRL}[1]{\RL{\Parsifont #1}}
\newenvironment{PRTL}{\RTL\Parsifont}{\endRTL}

\begin{document}

Some Persian example: \PRL{او مرد را دوست نخواهد داشت.}


\begin{PRTL}
او مرد را دوست نخواهد داشت. و مرد را دوست نخواهد داشت. و مرد را دوست نخواهد داشت. و مرد را دوست نخواهد داشت.
\end{PRTL}


\end{document}

bidi.tex是纯 XeTeX 双向排版包的一部分bidi,因此它非常小。它只重新定义了一些命令,这些命令对于正确的双向排版至关重要。

最低双向设置

相关内容