سلام
همانطور که آقای
سيدسعيد موسویندوشنی
هم پاسخ دادند، یکی از راه حل ها نوشتن کد در lstlisting است. اما برای اینکه بتوانید کد را از فایل بخوانید، می توان به صورت زیر عمل کرد.
\documentclass[a4paper,12pt]{article}
\usepackage{listings}
\usepackage{caption}
\usepackage{xepersian}
\settextfont{Vazir}
\setlatintextfont{Vazir}
\lstset{ numbers=left, frame=single, breaklines=true, captiondirection=RTL, escapeinside={(*@}{@*)}, tabsize=4, language=Python }
\renewcommand{\lstlistingname}{\rl{برنامه}}
\captionsetup{ labelsep=endash, labelformat=parens }
\lstdefinestyle{PythonCode1}{ caption={Test Function} }
\lstdefinestyle{PythonCode2}{ caption={main.py}, captionpos=b }
\begin{document}
نمونه کد دارای متن فارسی
\lr{\lstinputlisting[style=PythonCode1]{sample.py}}
\lr{\lstinputlisting[style=PythonCode2]{sample.py}}
\lr{\lstinputlisting[title=\lr{Python Code}, captionpos=tb]{sample.py}}
\end{document}
سپس باید تمامی متن های فارسی خود که در فایل خارجی قرار دارد را داخل (*@\rl{متن فارسی}@*)
قرار دهید. مشابه نمونه زیر
number = 12
# (*@\rl{این یک متن تستی است.}@*)
def test():
if number > 10:
print("(*@\rl{این یک متن تستی است.}@*)")
test()
و در پایان خروجی به صورت زیر خواهد بود.