% در ورژن جدید زی‌پرشین برای تایپ متن‌های ریاضی، این سه بسته، حتماً باید فراخوانی شود
\usepackage{amsmath,amssymb,amsthm, amscd,amsfonts}
\usepackage{setspace}
\usepackage{algorithm}
\usepackage{algpseudocode}
\usepackage{color}
\usepackage{titlesec}
\usepackage{makeidx}
\usepackage{listings}
\usepackage{subfig}
\usepackage[usenames,dvipsnames]{color}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{listings}
% بسته‌ای برای تنطیم حاشیه‌های بالا، پایین، چپ و راست صفحه
\usepackage[top=30mm, bottom=40mm, left=30mm, right=40mm]{geometry}
% بسته‌‌ای برای ظاهر شدن شکل‌ها و تصاویر متن
\usepackage{graphicx}
% بسته‌ای برای رسم کادر
\usepackage{framed} 
% بسته‌‌ای برای چاپ شدن خودکار تعداد صفحات در صفحه «معرفی پایان‌نامه»
\usepackage{lastpage}
% بسته‌ و دستوراتی برای ایجاد لینک‌های رنگی با امکان جهش
\usepackage[pagebackref=false,colorlinks,linkcolor=blue,citecolor=magenta]{hyperref}

% چنانچه قصد پرینت گرفتن نوشته خود را دارید، خط بالا را غیرفعال و  از دستور زیر استفاده کنید چون در صورت استفاده از دستور زیر‌‌، 
% لینک‌ها به رنگ سیاه ظاهر خواهند شد که برای پرینت گرفتن، مناسب‌تر است
%\usepackage[pagebackref=false]{hyperref}
% بسته‌ لازم برای تنظیم سربرگ‌ها
\usepackage{fancyhdr}
% بسته‌ای برای ظاهر شدن «مراجع» و «نمایه» در فهرست مطالب همراه با فهرست شکلها و ...
%\usepackage[nottoc]{tocbibind}
% بسته‌ای برای ظاهر شدن «مراجع» و «نمایه» در فهرست مطالب ولی بدون فهرست شکلها و ...
\usepackage[nottoc,notlof,notlot]{tocbibind}

% دستورات مربوط به ایجاد نمایه
\usepackage{makeidx}
\makeindex
%%%%%%%%%%%%%%%%%%%%%%%%%%
% فراخوانی بسته زی‌پرشین و تعریف قلم فارسی و انگلیسی
\usepackage{xepersian}
\settextfont[Scale=1.1]{XB Kayhan}
%\settextfont[Scale=1.1]{Tahoma}
%%%%%%%%%%%%%%%%%%%%%%%%%%
% چنانچه می‌خواهید اعداد در فرمول‌ها، انگلیسی باشد، خط زیر را غیرفعال کنید
\setdigitfont[Scale=1]{Yas}
%%%%%%%%%%%%%%%%%%%%%%%%%%
% تعریف قلم‌های فارسی و انگلیسی اضافی برای استفاده در بعضی از قسمت‌های متن
\defpersianfont\nastaliq[Scale=2]{IranNastaliq}
\defpersianfont\chapternumber[Scale=3]{XB Kayhan}
%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% دستوری برای حذف کلمه «چکیده»
%\renewcommand{\abstractname}{}
% دستوری برای حذف کلمه «abstract»
%\renewcommand{\latinabstract}{}

% دستوری برای تغییر نام کلمه «اثبات» به «برهان»
%\renewcommand\proofname{\textbf{برهان}}
% دستوری برای تغییر نام کلمه «کتاب‌نامه» به «منابع»
\renewcommand{\bibname}{مراجع}
% دستوری برای تغییر نام کلمه «فهرست تصاویر» به «فهرست شکلها»
\def\listfigurename{فهرست شکل‌ها}
% دستوری برای تغییر نام کلمه «فهرست جداول» به «فهرست جدولها»
\def\listtablename{فهرست جدول‌ها}

% دستوری برای تعریف واژه‌نامه انگلیسی به فارسی
\newcommand\persiangloss[2]{#1\dotfill\lr{#2}\\}

\renewcommand{\persiangloss}{واژه‌نامه انگلیسی فارسی}
% دستوری برای تعریف واژه‌نامه فارسی به انگلیسی 
\newcommand\englishgloss[2]{#2\dotfill\lr{#1}\\}

% تعریف دستور جدید «\پ» برای خلاصه‌نویسی جهت نوشتن عبارت «پروژه/پایان‌نامه/رساله»
\newcommand{\پ}{پروژه/پایان‌نامه/رساله }
%%%%%%%%%%%%%%%%%%%%%%%%%%
%
\newtheoremstyle{definition}
  {.5cm}{.5cm}%                                 margin top and bottom
  {}%                                  text layout
  {0cm}%                                        indention of header
  {\bf}{ }%                               header font and text after
  {0.2cm}%                                        space after header
  {\thmname{#1}\thmnumber{ #2}:\thmnote{ #3}}%  header

%%%%%%%%%%%%%%%%%
% تعریف و نحوه ظاهر شدن عنوان قضیه‌ها، تعریف‌ها، مثال‌ها و ...
\theoremstyle{definition}
\newtheorem{definition}{تعریف  }[chapter]
%\theoremstyle{theorem}
\newtheorem{theorem}[definition]{قضیه }
\newtheorem{lemma}[definition]{لم  }
\newtheorem{proposition}[definition]{گزاره }
\newtheorem{corollary}[definition]{نتیجه }
\newtheorem{remark}[definition]{ملاحظه  }
\theoremstyle{definition}
\newtheorem{example}[definition]{مثال }
\newtheorem{claim}{ادعا }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%حذف نقطه بعد از قضیه، مثال و....
\makeatletter
\def\@begintheorem#1#2[#3]{%
  \deferred@thm@head{\the\thm@headfont \thm@indent
    \@ifempty{#1}{\let\thmname\@gobble}{\let\thmname\@iden}%
    \@ifempty{#2}{\let\thmnumber\@gobble}{\let\thmnumber\@iden}%
    \@ifempty{#3}{\let\thmnote\@gobble}{\let\thmnote\@iden}%
    \thm@swap\swappedhead\thmhead{#1}{#2}{#3}%
%    \the\thm@headpunct
    \thmheadnl % possibly a newline.
    \hskip\thm@headsep
  }%
  \ignorespaces}
\makeatother
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% دستورهایی برای سفارشی کردن سربرگ صفحات
%\csname@twosidetrue\endcsname
%\pagestyle{fancy}
%\fancyhf{} 
%\fancyhead[OL,EL]{\thepage}
%\fancyhead[OR]{\small\rightmark}
%\fancyhead[ER]{\small\leftmark}
%\renewcommand{\chaptermark}[1]{%
%\markboth{\thechapter.\ #1}{}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% دستورهایی برای سفارشی کردن سربرگ صفحات بدون سربرگ و با یک خط 
%\csname@twosidetrue\endcsname
%\pagestyle{fancy}
%\fancyhf{} 
%\fancyhead[OL,EL]{}
%\fancyhead[OR]{}
%\fancyhead[ER]{}
%\renewcommand{\chaptermark}[1]{%
%\markboth{\thechapter.\ #1}{}}
%\cfoot{\thepage}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% دستورهایی برای سفارشی کردن صفحات اول فصل‌ها
%\makeatletter
%\newcommand\mycustomraggedright{%
% \if@RTL\raggedleft%
% \else\raggedright%
% \fi}
%\def\@part[#1]#2{%
%\ifnum \c@secnumdepth >-2\relax
%\refstepcounter{part}%
%\addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
%\else
%\addcontentsline{toc}{part}{#1}%
%\fi
%\markboth{}{}%
%{\centering
%\interlinepenalty \@M
%\ifnum \c@secnumdepth >-2\relax
% \huge\bfseries \partname\nobreakspace\thepart
%\par
%\vskip 20\p@
%\fi
%\Huge\bfseries #2\par}%
%\@endpart}
%\def\@makechapterhead#1{%
%\vspace*{-30\p@}%
%{\parindent \z@ \mycustomraggedright %\@mycustomfont
%\ifnum \c@secnumdepth >\m@ne
%\if@mainmatter
%
%\huge\bfseries \@chapapp\space {\chapternumber\thechapter}
%\par\nobreak
%\vskip 20\p@
%\fi
%\fi
%\interlinepenalty\@M 
%\Huge \bfseries #1\par\nobreak
%\vskip 120\p@
%}}
%\makeatother
%%%%%%%%%%%%%%
\SepMark{--}
%%%%%%%%%%%%%%
% تعریف دستور جدید

%%%%%%%%%%%%%%%%%%%%%
%دستور برای اضافه کردن کلمات  عنوان و صفحه به بالای  فهرست
\makeatletter
\renewcommand*\l@chapter[2]{%
  \ifnum \c@tocdepth >\m@ne
    \addpenalty{-\@highpenalty}%
    \vskip 1.0em \@plus\p@
    \setlength\@tempdima{1.5em}%
    \begingroup
      \parindent \z@ \if@RTL\leftskip\else\rightskip\fi \@pnumwidth
      \parfillskip -\@pnumwidth
      \leavevmode \bfseries
      \advance\if@RTL\rightskip\else\leftskip\fi\@tempdima
      \hskip -\if@RTL\rightskip\else\leftskip\fi
      #1\nobreak\leaders\hbox{$\m@th
        \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
        mu$}\hfill \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
      \penalty\@highpenalty
    \endgroup
  \fi}
  
\renewcommand\tableofcontents{%
    \if@twocolumn
      \@restonecoltrue\onecolumn
    \else
      \@restonecolfalse
    \fi
    \centerline{\huge\bfseries\contentsname
        \@mkboth{%
           \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
    \vskip 40\p@
    \@starttoc{toc}%
    \if@restonecol\twocolumn\fi
    }
    
    \renewcommand{\@starttoc}[1]{%
  \hboxR to \textwidth{{\bf عنوان} \hfill {\bf صفحه}}
  \begingroup
    \makeatletter
    \@input{\jobname.#1}%
    \if@filesw
      \expandafter\newwrite\csname tf@#1\endcsname
      \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
    \fi
    \@nobreakfalse
  \endgroup}
 
\makeatother

%%%%%%%%%%%%%%%%%%%%%%%%%%
%دستور برای وسط چین شدن عنوان فصل‌ها
\makeatletter
\def\@makechapterhead#1{%
  \vspace*{50\p@}%
  {\parindent \z@ \centering\normalfont
    \ifnum \c@secnumdepth >\m@ne
      \if@mainmatter
        \huge\bfseries \@chapapp\space \thechapter
        \par\nobreak
        \vskip 20\p@
      \fi
    \fi
    \interlinepenalty\@M
    \Huge \bfseries #1\par\nobreak
    \vskip 40\p@
  }}
\def\@makeschapterhead#1{%
  \vspace*{50\p@}%
  {\parindent \z@ \centering
    \normalfont
    \interlinepenalty\@M
    \Huge \bfseries  #1\par\nobreak
    \vskip 40\p@
  }}
\makeatother

%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% دستورات اضافه کردن کلمه فصل به ابتدای شماره فصل در فهرست
\makeatletter \let\orig@chapter\@chapter
\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
                       \if@mainmatter
			      \refstepcounter{chapter}%
			      \typeout{\@chapapp\space\thechapter.}%
			      \addcontentsline{toc}{chapter}%
            		       	   {\@chapapp~\protect\numberline{\thechapter:}#1}%
                       \else
                         \addcontentsline{toc}{chapter}{#1}%
                       \fi
                    \else 
                      \addcontentsline{toc}{chapter}{#1}%
                      \fi
                    \chaptermark{#1}%
                    \addtocontents{lof}{\protect\addvspace{10\p@}}%
                    \addtocontents{lot}{\protect\addvspace{10\p@}}%
                    \if@twocolumn
                      \@topnewpage[\@makechapterhead{#2}]%
                    \else 
                      \@makechapterhead{#2}%
                      \@afterheading
                    \fi}
%\renewcommand*\l@section{\@dottedtocline{1}{3.5em}{2.3em}}

\renewcommand*\l@section{\@dottedtocline{1}{2em}{2.5em}}
\renewcommand*\l@subsection{\@dottedtocline{2}{3em}{3.2em}}
%\renewcommand*\l@subsection{\@dottedtocline{2}{5.8em}{3.2em}}
\makeatother

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% دستورهایی برای سفارشی کردن صفحات اول فصل‌ها
\makeatletter
\def\@makechapterhead#1{%
  \vspace*{200\p@}%
  {\parindent \z@ \centering\normalfont
    \ifnum \c@secnumdepth >\m@ne
      \if@mainmatter
        {\huge\bfseries \@chapapp\space \thechapter}%%huge برای اندازه کلمه فصل در صفحه اول
        \par\nobreak%%%%%این جاست
        \vskip 50\p@
      \fi
    \fi
    \interlinepenalty\@M 
    {\Huge \bfseries #1}  \thispagestyle{empty}\par\nobreak%%Huge برای اندازه عنوان فصل در صفحه اول
    \vskip 40\p@
    \newpage
     \thispagestyle{plain}
    \vspace*{50\p@}

\par\nobreak
    \vskip 40\p@
  }}
\def\@makeschapterhead#1{
  \vspace*{50\p@}
  {\parindent \z@ \centering
    \normalfont
    \interlinepenalty\@M
    \Huge \bfseries  #1\par\nobreak
   \vskip 40\p@
  }}

\makeatother
\SepMark{--}