سلام
یک راهش استفاده از بستۀ 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}