我尝试为语言学家制定指南。其中一部分涉及使用包排版从右到左的文本bidi
。我想使用verbatim
代码,但波斯字符在环境中无法正确打印verbatim
。但以下代码不起作用。我还查看了解决方案类似的问题,但这也不起作用。
\documentclass{article}
\usepackage{fontspec}
\newfontfamily\Parsifont[Script=Arabic]{XB Niloofar}
\usepackage{bidi}
\newcommand{\PRL}[1]{\RL{\Parsifont #1}}
\begin{document}
\PRL{او مرد را دوست نخواهد داشت.}
\begin{verbatim}
\usepackage{fontspec}\newfontfamily\Parsifont[Script=Arabic]{XB Niloofar}
\usepackage{bidi}
\newcommand{\PRL}[1]{\RL{\Parsifont #1}}
\PRL{او مرد را دوست نخواهد داشت.}
\end{verbatim}
\end{document}
这是根据其他建议的解决方案进行的第二次尝试:
\documentclass{article}
\usepackage{fontspec}
\newfontfamily\Parsifont[Script=Arabic]{XB Niloofar}
\usepackage{fancyvrb}
\usepackage{xepersian}
\usepackage{bidi}
\newcommand{\PRL}[1]{\RL{\Parsifont #1}}
\DefineVerbatimEnvironment{rtlverbatim}{Verbatim}{commandchars=+\[\]}
\begin{document}
\PRL{او مرد را دوست نخواهد داشت.}
\begin{latin}
\begin{verbatim}
\usepackage{fontspec}\newfontfamily\Parsifont[Script=Arabic]{XB Niloofar}
\usepackage{bidi}
\newcommand{\PRL}[1]{\RL{\Parsifont #1}}
\PRL{او مرد را دوست نخواهد داشت.}
\end{verbatim}
\end{latin}
\end{document}
答案1
您没有正确理解解决方案的概念
- 您应该使用新定义的逐字环境
rtlverbatim
; - 波斯语文本应该被包围
+PRL[...]
才能在逐字环境中正确显示。
您可能还想为逐字波斯语文本定义单独的波斯语字体。请参阅XePersian
文档以查看效果。
你的示例应该像这样修改:
\documentclass{article}
\usepackage{fontspec}
\newfontfamily\Parsifont[Script=Arabic]{XB Niloofar}
\usepackage{fancyvrb}
\usepackage{xepersian}
\newcommand{\PRL}[1]{\RL{\Parsifont #1}}
\DefineVerbatimEnvironment{rtlverbatim}{Verbatim}{commandchars=+\[\]}
\begin{document}
\PRL{او مرد را دوست نخواهد داشت.}
\begin{latin}
\begin{rtlverbatim}
\usepackage{fontspec}\newfontfamily\Parsifont[Script=Arabic]{XB Niloofar}
\usepackage{bidi}
\newcommand{\PRL}[1]{\RL{\Parsifont #1}}
\PRL{+PRL[او مرد را دوست نخواهد داشت.]}
\end{rtlverbatim}
\end{latin}
\end{document}