我需要为语言学书籍排版 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
,因此它非常小。它只重新定义了一些命令,这些命令对于正确的双向排版至关重要。