我正在使用 overleaf 来编写我的文档,我需要在 minted 环境中列出一些包含波斯语单词的 python 代码,如下所示:
\begin{minted}[bgcolor=bg]{python}
>>> farsi_tagged_sents = nltk.corpus.multext_east.tagged_sents("oana-fa.xml", tagset='universal')
>>> farsi_tagged_sents[0]
[('یکی', 'NUM'),
('از', 'ADP'),
('روزهايِ', 'NOUN'),
('بسيار', 'ADV'),
('سردِ', 'ADJ'),
('ماهِ', 'NOUN'),
('آوريل', 'NOUN'),
('بود', 'VERB'),
('و', 'CONJ'),
('ساعتها', 'NOUN'),
('سيزده', 'NUM'),
('ضربه', 'NOUN'),
('مينواختند', 'VERB'),
('.', '')]
\end{minted}
但是,当我编译上述代码时,引号之间什么都没有显示。我尝试了babel
package 和\FR{}
command,但没有成功。有什么方法可以突出显示我的代码,同时在其中包含波斯语吗?
答案1
我认为唯一现实的方法是使用babel
和lualatex
。
坏消息是你说你正在使用 Overleaf。几乎可以肯定的是,Overleaf 上的版本babel
太旧了,无法运行此功能,因此你需要在本地运行最新的 TeXLive 安装。
平均能量损失
使用以下命令进行编译:lualatex --shell-escape filename
。
该mapfont=direction
选项允许babel
自动将 RTL 字符切换为波斯字体。这意味着无需在环境中标记文本minted
。
\documentclass{article}
\usepackage[bidi=basic]{babel}
\babelprovide[import,main,language=Default]{english}
\babelprovide[import,mapfont=direction,language=Default]{persian}
\babelfont{rm}{Latin Modern Roman}
\babelfont{sf}{Latin Modern Sans}
\babelfont{tt}{Latin Modern Mono}
\babelfont[persian]{tt}{FreeMono}
\usepackage{xcolor}
\usepackage{minted}
\begin{document}
\begin{minted}[fontsize=\footnotesize]{python}
>>> farsi_tagged_sents = nltk.corpus.multext_east.tagged_sents("oana-fa.xml", tagset='universal')
>>> farsi_tagged_sents[0]
[('یکی', 'NUM'),
('از', 'ADP'),
('روزهايِ', 'NOUN'),
('بسيار', 'ADV'),
('سردِ', 'ADJ'),
('ماهِ', 'NOUN'),
('آوريل', 'NOUN'),
('بود', 'VERB'),
('و', 'CONJ'),
('ساعتها', 'NOUN'),
('سيزده', 'NUM'),
('ضربه', 'NOUN'),
('مينواختند', 'VERB'),
('.', '')]
\end{minted}
\end{document}