محیط lstlisting
رو نباید داخل محیط latin
بذارین. در ضمن لازم نیست کپشن رو داخل دستور \rl
بذارین.
\documentclass{article}
\usepackage{listings}
\usepackage{xepersian}
\newcommand{\MainFont}{XB Zar}
\settextfont[Scale=1]{\MainFont}
\setlatintextfont[Scale=1]{Times New Roman}
\setdigitfont[Scale=1]{\MainFont}
\def\lstlistingname{\rl{برنامه}}
\lstdefinestyle{mystyle}{%
captiondirection=RTL,%
frame=l,%
numbers=left,
basicstyle=\setLTR\ttfamily % این خط رو اضافه کردم
}
\begin{document}
\begin{lstlisting}[language=python,,style=mystyle,caption={برنامه پایتون مولد شکل 1.},label=ajabcodi]
from PIL import Image
import numpy as np
w, h = 40, 40
data = np.zeros((h, w, 3), dtype=np.uint8)
data[25:35, 25:35] = [255, 255, 255]
img = Image.fromarray(data, 'RGB')
img.save('WhiteSquare1.png')
\end{lstlisting}
کد پایتون
\ref{ajabcodi}
مد نظر است.
\end{document}
خروجی این کد به این صورته: