سلام
یک راهش استفاده از بستۀ newfloat است. بهعنوان مثال شما میتونید یه محیط شناور همانند جدول یا شکل با نام دلخواه داشته باشید؛ مثلاً با نام «کد».
برای تعریف چنین محیطی به این صورت عمل میکنیم:
\uspackage{newfloat}
\DeclareFloatingEnvironment[placement={!htb},name=کد,listname={فهرست کدها},within=chapter]{code}
در کد بالا
گزینۀ placement نحوۀ قرارگیری در متن رو نشون میده. همون آپشنیه که جلوی محیط جدول یا شکل میذارید. وقتی اینجا تعریف کردید دیگه نیازی نیست توی متن بزنید.
گزینۀ name، اسم caption رو تعیین میکنه.
گزینۀ listname عنوانی رو که قراره توی فهرستتون بیاد نشون میده.
گزینۀ within هم که داره میگه شمارۀ این محیطی که تعریف کردید، با چی reset بشه؛ که اینجا من فصل گذاشتم.
* داخل آکلاد هم که code نوشته شده اسم دلخواهیه برای اسم محیط جدید. با توجه به این اسم نحوۀ آوردن به فهرست مطالب هم به این صورته که در جای مود نظر دستور مشابه فهرست جدولها یا شکلها میزنید؛ یعنی اینطوری:
\listofcodes
حالا اگه بخواین استفاده کنین، دقیقاً مثل محیط table یا figure ازش استفاده میکنین. در زیر یه نمونه براتون می ذارم.
\documentclass{report}
%%%%%%%%%%%%%%%%%%
% بستهای برای تعریف محیط شناور جدید
\usepackage{newfloat}
% نحوۀ تعریف محیط جدید با نام دلخواه
\DeclareFloatingEnvironment[placement={!htb},name=کد,listname={فهرست کدها},within=chapter]{code}
%%%%%%%%%%%%%%%%%%
%
%%%%%%%%%%%%%%%%%%
% بستهای برای آوردن کد متلب و کدهای دیگر که تنظیمات مربوط به خودشان را دارند
\usepackage{listings}
\usepackage{xcolor}
\definecolor{mygreen}{RGB}{28,172,0}
\definecolor{mylilas}{RGB}{170,55,241}
\lstset{language=Matlab,
breaklines=true,basicstyle=\ttfamily\footnotesize,
morekeywords={matlab2tikz},
keywordstyle=\color{blue},
morekeywords=[2]{1},
keywordstyle=[2]{\color{black}},
identifierstyle=\color{black},
stringstyle=\color{mylilas},
commentstyle=\color{mygreen},
showstringspaces=false,
}
%%%%%%%%%%%%%%%%%%
\usepackage{xepersian}
\settextfont{IRXLotus}
\setmathdigitfont{IRXLotus}
\begin{document}
% آوردن فهرست کدها
\listofcodes
\newpage
\begin{code}
{\setLTR
\begin{lstlisting}[frame=single,rulecolor=\color{magenta},numbers=left,numberstyle=\tiny]
clc
clear
syms x
y=3*x-1;
d=sqrt((4-x)^2+(3-y)^2);
c=2*d*10+500/(d+2);
f=diff(c,x);
X=solve(f,x);
for i=1:length(X)
D(i)=subs(d,x,X(i));
if D(i)<10
cost(i)=subs(c,d,D(i));
end
end
for i=1:length(cost)
fprintf('---------------------------------\nOption(%d):\nx=%1.2f\ny=%1.2f\nDistance=%1.2f\nCost=%1.2f\n\n',i,X(i),subs(y,x,X(i)),subs(d,x,X(i)),cost(i))
end
\end{lstlisting}
}
\caption{محاسبۀ مسافت و هزینه}
\label{co:distcost}
\end{code}
در کد
\ref{co:distcost}
مسافت و هزینه محاسبه میشود.
\end{document}

