-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsettings.tex
636 lines (599 loc) · 33.7 KB
/
settings.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
% برای چاپ پایاننامه به صورت دو رو خط فوق را کامنت و خط زیر را فعال کنید همچنین تغییرات لازم برای هدرها را نیز انجام دهید که در ادامه به آن اشاره شده است
% \documentclass[a4paper,11pt,twoside,openany]{thesis}
\usepackage{amsthm,amssymb,amsmath,textcomp}% فونتها، نمادها و محیطهای ams
\usepackage{setspace,xargs}
\usepackage{array}%آرایههای ریاضی
\usepackage{verbatim}%میتوان محیط های جدید را با این بسته تعریف نمود
\usepackage{verbatimbox}
\usepackage{indentfirst} %جهت ایجاد تورفتگی در اول پاراگراف
\usepackage{xfrac}
% بسته زیر برای جداول است
\usepackage{tabulary}
\usepackage{colortbl}
\usepackage{framed}
% بسته زیر برای تنظیمات هدر صفحات است
\usepackage{fancyhdr}
% تنظیم Heading
\usepackage{longtable}
% پکیج برای جداول طولانی
\usepackage{enumitem}
% محیط شمارنده
\usepackage{multicol}
\setlength{\columnsep}{1cm}
% پکیج برای چند ستونی سازی
%===============================================footnote=====================================
%بسته و تنظیمات زیر زیرنویس هر صفحه را از یک شروع می کند.
\usepackage{zref-perpage}
\zmakeperpage{footnote}
\usepackage{remreset}
\makeatletter
\@removefromreset{footnote}{chapter}
\makeatother
%======================================================================================
\usepackage{tikz,tikz-cd}% برای رسم اشکال و یا نمودارها استفاده می شود. این بسته یکی از مهمترین بستههای لاتک است
\usetikzlibrary{shapes.geometric, arrows,patterns}
\usepackage [pagebackref=true, colorlinks, linkcolor=blue, citecolor=magenta, urlcolor=cyan] {hyperref}
% چنانچه قصد پرینت گرفتن نوشته خود را دارید، خط بالا را غیرفعال و از دستور زیر استفاده کنید. در ضمن pagebackref برای نشان دادن شماره صفحه ارجاعات مراجع در بخش bibliography است.
% \usepackage [pagebackref=false, colorlinks, linkcolor=black, citecolor=black, urlcolor=black] {hyperref}
\usepackage{afterpage}
\usepackage{bookmark}%برای فعال شدن لینکها از این بسته استفاده می شود
% پکیج زیر رنگ و گرافیک و تعریف پوشه عکسها
\usepackage{graphicx,xcolor}
\graphicspath{{./images/}}
\newcommand\figwidth{0.4}
% پکیج زیر برای اضافه کردن کدهای برنامههاست
\usepackage[procnames]{listings}
\usepackage{lscape}% چنانچه بخواهید صفحه ای را به صورت لندسکیپ درآورید این بسته کمک می کند
\usepackage [a4paper, bindingoffset=-.5cm, footskip=1cm, headheight = 16pt, top=3cm, bottom=2.5cm, right=3cm, left=3cm ,] {geometry}% ابعاد صفحه و حاشیهها
% تنظیم ارجاعات
\usepackage[numbers]{natbib}%این بسته برای اضافه نمودن دستورات مرجع زنی مختلف است
% بسته زیر فهرست های و مراجع را به فهرست مطالب اضافه می کند
\usepackage[nottoc]{tocbibind}
% دو بسته زیر امکان caption را برای عکسها فراهم می نماید
\usepackage[margin=10pt,font=small,labelfont=bf,labelsep=endash]{caption}
\usepackage[margin=10pt,font=footnotesize,labelfont=bf,labelsep=endash]{subcaption}
\usepackage[xindy,acronym,toc]{glossaries}% اضافه کردن مراجع و نمایه به فهرست مطالب
%بسته زیر امکان ارجاع دهی الکترونیک به مقالات را ایجاد می کند .البته باید استایل مورد استفاده در بخش مراجع دارای تابع doi باشد.استایل های iut-fa و plainnat-faاین آپشن را دارا هستند.
\usepackage{doi}
% خط زیر امکان نوشتن کنار عکس را می دهد
\usepackage{sidecap}
\sidecaptionvpos{figure}{t}
%خط زیر برای خوانش فونتها در ویندوز است.
\usepackage[OT1,EU1]{fontenc}
%خط زیر مراجع را از اولین فصل شماره گذاری می کند و در لیست تصاویر نشان نمیدهد.
\usepackage{notoccite}
% در مورد تقدم و تاخر وارد کردن بسته ها تنها باید به چند نکته دقت کرد:
% الف) بسته xepersian حتما حتما باید آخرین بسته ای باشد که فراخوانی می شود
% ب) بسته hyperref جزو آخرین بسته هایی باید باشد که فراخوانی می شود.
% ج) بسته glossaries حتما باید بعد از hyperref فراخوانی شود.
% اگر از بسته float استفاده نمی کنید caption جداول مانند تصاویر بسته به اینکه بالا نوشته شده باشند یا پایین تغییر مکان می دهند. چنانچه نیازمندید تا از بستههای float که در زیر آمده است استفاده کنید زیرنویس جداول همه در پایین نوشته می شود. برای اینکه زیرنویسها بعد از فعالسازی بسته های float بالا یا پایین جداول نوشته شود حسب انتخاب باید قبل از table مکان را با یکی از دستورات زیر ست نمایید توجه کنید که بعد از دستورات زیر تمامی زیرنویس ها از آن به بعد مطابق با آخرین دستور اعمالی تنظیم می شوند. برای نمونه به جداول فصل چهارم نگاه کنید.
% \usepackage{floatrow}
% \usepackage{morefloats}
% \floatsetup[table]{capposition=bottom}
% \floatsetup[table]{capposition=top}
%برای نشان دادن رد ماتریس از این عبارت تعریف شده است.میتوانید عبارات خود را تعریف کنید.
% خط زیر اپراتور تریس را ست می نماید
\DeclareMathOperator{\Tr}{Tr}
%============================================Other
% اگر می خواهید پکیج دیگری اضافه کنید به این قسمت اضافه کنید
%%=========================================== XePersian
% \usepackage{xepersian}
%اگر میخواهید زیرنویس ها تک ستونی شود خط فوق را فعال کنید و دو خط زیر را غیر فعال کنید
\usepackage[extrafootnotefeatures]{xepersian}
\twocolumnfootnotes
% \settextfont[Scale=1.1]{Yas}
% \setdigitfont[Scale=1.1]{Yas}
% %اگر میخواهید اعداد در فرمولها لاتین باشد خط بالا را کامنت و خط پایین را فعال کنید
% % \DefaultMathsDigits
% \defpersianfont\nastaliq[Scale=2]{IranNastaliq}
% \defpersianfont\nastaliqsmal[Scale=1]{IranNastaliq}
% \defpersianfont\titr[Scale=1]{XB Titre}
% \defpersianfont\traffic[Scale=1]{XM Traffic}
% % \deflatinfont\urwchl[Scale=1]{Chancery}
% از آنجا که فونت وزیرمتن و فونت ساحل مرحوم راستیکردار بهترین فونت هایفارسی تا به امروز است تمامی فونت ها به این مجموعه ارتقا پیدا کرد
\settextfont[Scale=1]{Vazirmatn}
\setdigitfont[Scale=1]{Vazirmatn}
%اگر میخواهید اعداد در فرمولها لاتین باشد خط بالا را کامنت و خط پایین را فعال کنید
% \DefaultMathsDigits
\defpersianfont\nastaliq[Scale=2]{Vazirmatn}
\defpersianfont\nastaliqsmal[Scale=1]{Vazirmatn}
\defpersianfont\titr[Scale=1]{Vazirmatn}
\defpersianfont\traffic[Scale=1]{Vazirmatn}
% ٫=========================================================
\newcommand\namad[2]{#1\dotfill\lr{#2}\\}
% برای فاصله گذاری استاندارد بین خطوط و دستورات با چند آرگومان اختیاری
%=========================================================================================
% %این خطوط اعداد پانویسها را درست می کند
% \makeatletter
% \footmarkstyle{\textsuperscript{\if@RTL\else\latinfont\fi#1}}
% \makeatother
\makeatletter
\def\@makeLTRfnmark{\hbox{\@textsuperscript{\latinfont\@thefnmark}}}
\renewcommand\@makefntext[1]{%
\parindent 1em%
\noindent
\hb@[email protected]{\hss\if@RTL\@makefnmark\else\@makeLTRfnmark\fi}#1}
\makeatother
% %============================================= Counters
% \def\thesection{\arabic{section}-\thechapter}
% \def\thesubsection{\arabic{subsection}-\thesection}
% \def\theequation{\arabic{equation}-\thechapter}
% \def\thetheorem{\arabic{theorem}-\thesection}
% \def\thefigure{\arabic{figure}-\thechapter}
% \def\thetable{\arabic{table}-\thechapter}
% \def\imagetop#1{\vtop{\null\hbox{#1}}}
%\numberwithin{equation}{section}
%
% %خطوط زیر برای تغییر در شکل خط بالای سر پانویسهاست
% \renewcommand{\footnoterule}{%
%
% \kern -3pt
% \hrule width 0.65\textwidth height 0.85pt
% \kern 2pt
% }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%%%%%%%%%%%%%%%%%%%
\makeatletter
\def\abj@num@i#1{%
\ifcase#1\or الف \or ب\or ج\or د%
\or ه\or و\or ز\or ح\or ط\fi
\ifnum#1=\z@\abjad@zero\fi}
\def\@harfi#1{\ifcase#1\or الف\or ب\or پ\or ت\or ث\or
ج\or چ\or ح\or خ\or د\or ذ\or ر\or ز\or ژ\or س\or ش\or ص\or ض\or ط\or ظ\or ع\or غ\or
ف\or ق\or ک\or گ\or ل\or م\or ن\or و\or ه\or ی\else\@ctrerr\fi}
\def\@glsgetgrouptitle#1{\ifcase#1\or الف \or ب\or پ\or ت\or ث\or
ج\or چ\or ح\or خ\or د\or ذ\or ر\or ز\or ژ\or س\or ش\or ص\or ض\or ط\or ظ\or ع\or غ\or
ف\or ق\or ک\or گ\or ل\or م\or ن\or و\or ه\or ی\else\@ctrerr\fi}
\makeatother
\makeatletter
\bidi@patchcmd{\@Abjad}{آ}{الف}
{\typeout{Succeeded in changing `آ` into `الف`}}
{\typeout{Failed in changing `آ` into `الف`}}
\makeatother
\PersianAlphs
% خطوط فوق جای آرا با الف عوض میکنند.اگر آ را ترجیح می دهید این خطوط را غیرفعال کنید
\makeatletter
\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
\refstepcounter{chapter}%
\typeout{\@chapapp\space\thechapter.}%
\addcontentsline{toc}{chapter}%
{\@chapapp~\protect\numberline{\thechapter}#1}%
\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}{3.3em}}
\renewcommand*\l@subsection{\@dottedtocline{2}{4.8em}{4.2em}}
\makeatother
% خطوط فوق تنظیمات فواصل را در فهرست مطالب انجام می دهند اعداد در سه خط پایانی این خطوط مدیر این کارند
% \SepMark{-}
% در فهرست مطالب و ارجاعات اگر میخواهید به جای نقطه - بگذارید از خط بالا استفاده کنید.
\makeatletter
\bidi@patchcmd{\Hy@org@chapter}{%
\addcontentsline{toc}{chapter}%
{\protect\numberline{\thechapter}#1}%
}{%
\addcontentsline{toc}{chapter}%
{\protect\numberline{\chaptername~\tartibi{chapter}}#1}%
}{\typeout{We succeded in redefining \string\@chapter}}
{\typeout{We failed in redefining \string\@chapter}}
\bidi@patchcmd{\l@chapter}{%
\setlength\@tempdima{1.5em}%
}{%
\setlength\@tempdima{3.em}%
}{\typeout{We succeded in redefining \string\l@chapter}}
{\typeout{We failed in redefining \string\l@chapter}}
%تنظیم فاصله پیوست ها در فهرست با خطوط بالاست
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% ============================================================================================================
%%% تنظیمات مربوط به بسته glossaries
%%% تعریف استایل برای واژه نامه فارسی به انگلیسی، در این استایل واژههای فارسی در سمت راست و واژههای انگلیسی در سمت چپ خواهند آمد. از حالت گروه بندی استفاده میکنیم،
%%% یعنی واژهها در گروههایی به ترتیب حروف الفبا مرتب میشوند، مثلا:
%%% الف
%%% افتصاد ................................... Economy
%%% اشکال ........................................ Failure
%%% ش
%%% شبکه ...................................... Network
\newglossarystyle{myFaToEn}{%
\renewenvironment{theglossary}{}{}
\renewcommand*{\glsgroupskip}{\vskip 10mm}
\renewcommand*{\glsgroupheading}[1]{\subsection*{\glsgetgrouptitle{##1}}}
\renewcommand*{\glossentry}[2]{\begin{flushleft}\noindent\glsentryname{##1}{،##2}\dotfill\space\glsentrytext{##1}\end{flushleft}
}
}
%% % تعریف استایل برای واژه نامه انگلیسی به فارسی، در این استایل واژههای فارسی در سمت راست و واژههای انگلیسی در سمت چپ خواهند آمد. از حالت گروه بندی استفاده میکنیم،
%% % یعنی واژهها در گروههایی به ترتیب حروف الفبا مرتب میشوند، مثلا:
%% % E
%%% Economy ............................... اقتصاد
%% % F
%% % Failure................................... اشکال
%% %N
%% % Network ................................. شبکه
\newglossarystyle{myEntoFa}{%
%%% این دستور در حقیقت عملیات گروهبندی را انجام میدهد. بدین صورت که واژهها در بخشهای جداگانه گروهبندی میشوند،
%%% عنوان بخش همان نام حرفی است که هر واژه در آن گروه با آن شروع شده است.
\renewenvironment{theglossary}{}{}
\renewcommand*{\glsgroupskip}{\vskip 10mm}
\renewcommand*{\glsgroupheading}[1]{\begin{LTR} \subsection*{\glsgetgrouptitle{##1}} \end{LTR}}
%%% در این دستور نحوه نمایش واژهها میآید. در این جا واژه فارسی در سمت راست و واژه انگلیسی در سمت چپ قرار داده شده است، و بین آن با نقطه پر میشود.
\renewcommand*{\glossentry}[2]{\begin{flushleft}\glsentrytext{##1}\noindent\dotfill\space \lr{\glsentryname{##1}{ ,##2}}\end{flushleft}
}
}
%%% تعیین استایل برای فهرست اختصارات
\newglossarystyle{myAbbrlist}{%
%%% این دستور در حقیقت عملیات گروهبندی را انجام میدهد. بدین صورت که اختصارات در بخشهای جداگانه گروهبندی میشوند،
%%% عنوان بخش همان نام حرفی است که هر اختصار در آن گروه با آن شروع شده است.
\renewenvironment{theglossary}{}{}
\renewcommand*{\glsgroupskip}{\vskip 10mm}
\renewcommand*{\glsgroupheading}[1]{\begin{LTR} \subsection*{\glsgetgrouptitle{##1}} \end{LTR}}
%%% در این دستور نحوه نمایش اختصارات میآید. در این جا حالت کوچک اختصار در سمت چپ و حالت بزرگ در سمت راست قرار داده شده است، و بین آن با نقطه پر میشود.
\renewcommand*{\glossentry}[2]{\noindent\glsentrytext{##1}\lr{##2,}\dotfill\space \Glsentrylong{##1}
}
%%% تغییر نام محیط abbreviation به فهرست اختصارات
\renewcommand*{\acronymname}{\rl{فهرست اختصارات}}
}
%%% برای اجرا xindy بر روی فایل .tex و تولید واژهنامهها و فهرست اختصارات و فهرست نمادها یکسری فایل تعریف شده است. Latex داده های مربوط به واژه نامه و .. را در این
%%% فایلها نگهداری میکند. مهمترین option این قسمت این است که
%%% عنوان واژهنامهها و یا فهرست اختصارات و یا فهرست نمادها را میتوانید در اینجا مشخص کنید.
%%% در این جا عباراتی مثل glg، gls، glo و ... پسوند فایلهایی است که برای xindy بکار میروند.
\newglossary[glg]{english}{gls}{glo}{واژهنامه انگلیسی به فارسی}
\newglossary[blg]{persian}{bls}{blo}{واژهنامه فارسی به انگلیسی}
\makeglossaries
\glsdisablehyper
%%% تعاریف مربوط به تولید واژه نامه و فهرست اختصارات و فهرست نمادها
%%% در این فایل یکسری دستورات عمومی برای وارد کردن واژهنامه آمده است.
%%% به دلیل اینکه قرار است این دستورات پایهای را بازنویسی کنیم در اینجا تعریف میکنیم.
\let\oldgls\gls
\let\oldglspl\glspl
\makeatletter
\renewrobustcmd*{\gls}{\@ifstar\@msgls\@mgls}
\newcommand*{\@mgls}[1] {\ifthenelse{\equal{\glsentrytype{#1}}{english}}{\oldgls{#1}\glsuseri{f-#1}}{\lr{\oldgls{#1}}}}
\newcommand*{\@msgls}[1]{\ifthenelse{\equal{\glsentrytype{#1}}{english}}{\glstext{#1}\glsuseri{f-#1}}{\lr{\glsentryname{#1}}}}
\renewrobustcmd*{\glspl}{\@ifstar\@msglspl\@mglspl}
\newcommand*{\@mglspl}[1] {\ifthenelse{\equal{\glsentrytype{#1}}{english}}{\oldglspl{#1}\glsuseri{f-#1}}{\oldglspl{#1}}}
\newcommand*{\@msglspl}[1]{\ifthenelse{\equal{\glsentrytype{#1}}{english}}{\glsplural{#1}\glsuseri{f-#1}}{\glsentryplural{#1}}}
\makeatother
\newcommand{\newword}[4]{
\newglossaryentry{#1} {type={english},name={\lr{#2}},plural={#4},text={#3},description={}}
\newglossaryentry{f-#1} {type={persian},name={#3},text={\lr{#2}},description={}}
}
%%% بر طبق این دستور، در اولین باری که واژه مورد نظر از واژهنامه وارد شود، پاورقی زده میشود.
\defglsentryfmt[english]{\glsgenentryfmt\ifglsused{\glslabel}{}{\LTRfootnote{\glsentryname{\glslabel}}}}
%%% بر طبق این دستور، در اولین باری که واژه مورد نظر از فهرست اختصارات وارد شود، پاورقی زده میشود.
\defglsentryfmt[acronym]{\glsentryname{\glslabel}\ifglsused{\glslabel}{}{\LTRfootnote{\glsentrydesc{\glslabel}}}}
%%%%%% ================================================ دستور برای قرار دادن فهرست اختصارات
\newcommand{\printabbreviation}{
\cleardoublepage
\phantomsection
\baselineskip=.75cm
%% با این دستور عنوان فهرست اختصارات به فهرست مطالب اضافه میشود.
% \addcontentsline{toc}{chapter}{فهرست اختصارات}
\setglossarystyle{myAbbrlist}
\begin{LTR}
\Oldprintglossary[type=acronym]
\end{LTR}
\clearpage
}%
\newcommand{\printacronyms}{\printabbreviation}
%%% در این جا محیط هر دو واژه نامه را باز تعریف کرده ایم، تا اولا مشکل قرار دادن صفحه اضافی را حل کنیم، ثانیا عنوان واژه نامه ها را با دستور addcontentlist وارد فهرست مطالب کرده ایم.
\let\Oldprintglossary\printglossary
\renewcommand{\printglossary}{
\let\appendix\relax
%% تنظیم کننده فاصله بین خطوط در این قسمت
\clearpage
\phantomsection
%% این دستور موجب این میشود که واژهنامهها در حالت دو ستونی نوشته شود.
\twocolumn{}
%% با این دستور عنوان واژهنامه به فهرست مطالب اضافه میشود.
% \addcontentsline{toc}{chapter}{واژه نامه انگلیسی به فارسی}
\setglossarystyle{myEntoFa}
\Oldprintglossary[type=english]
\clearpage
\phantomsection
%% با این دستور عنوان واژهنامه به فهرست مطالب اضافه میشود.
% \addcontentsline{toc}{chapter}{واژه نامه فارسی به انگلیسی}
\setglossarystyle{myFaToEn}
\Oldprintglossary[type=persian]
\onecolumn{}
}%
%%%%%% ============================================================================================================
%%%%%%
%
%%============================================ Titles
% \renewcommand{\abstractname}{\Large چکیده}
\renewcommand{\listfigurename}{فهرست تصاویر}
%\renewcommand{\latinabstract}{}
\renewcommand{\proofname}{\textbf{برهان}}
\renewcommand{\qedsymbol}{$\blacksquare$}
\renewcommand{\bibname}{مراجع}
% \newcommand*{\doi}[1]{doi:\href*{http://dx.doi.org/#1}{#1}}
% for figures: caption label is italic, the caption text is bold / italic
%\captionsetup[figure]{labelfont={bf,it},textfont={normalfont,it}}
% for subfigures: caption label is bold, the caption text normal.
% justification is raggedright (i.e. left aligned)
% singlelinecheck=off means that the justification setting is used even when the caption is only a single line long.
% if singlelinecheck=on, then caption is always centered when the caption is only one line.
%\captionsetup[subfigure]{labelfont=normalfont,textfont=bf,singlelinecheck=off,justification=raggedright}
%\captionsetup{textfont=rm,justification=centering,labelsep=newline}
%%======================================== Environments
\newcounter{theorem}[section]
\newcommand{\environ}[2]{\vspace{7pt} \refstepcounter{theorem}\par\noindent \textbf{\hboxR{#1}\space\thetheorem} \textbf{\space\hboxR{#2}} \\[5pt]}
\newcommand{\closeenviron}{\par\vspace{3pt}}
\newenvironment{thm}[1][]{\environ{قضیه}{#1}\it}{\closeenviron}
\newenvironment{lem}[1][]{\environ{لم}{#1}\it}{\closeenviron}
\newenvironment{prop}[1][]{\environ{گزاره}{#1}\it}{\closeenviron}
\newenvironment{cor}[1][]{\environ{نتیجه}{#1}\it}{\closeenviron}
\newenvironment{con}[1][]{\environ{حدس}{#1}\it}{\closeenviron}
\newenvironment{dfn}[1][]{\environ{تعریف}{#1}\rm}{\hfill $\blacktriangle$ \closeenviron}
\newenvironment{notation}[1][]{\environ{نماد}{#1}\rm}{\hfill $\blacktriangledown$ \closeenviron}
\newenvironment{rem}[1][]{\environ{ملاحظه}{#1}\rm}{\hfill $\blacklozenge$ \closeenviron}
\newenvironment{exm}[1][]{\environ{مثال}{#1}\rm}{\hfill $\bigstar$ \closeenviron}
%
\makeatletter
\newenvironment{prob}[4][]{\@ifempty{#1}
{\vspace{15pt} \par\noindent
\parbox{15cm}{\hskip 7pt\underline{\bf #2}\\[4pt]
\begin{tabular}{p{40pt}l}
\textbf{نمونه:}& \parbox[t]{11.8cm}{#3}\\[7pt]
\textbf{سوال:}& \parbox[t]{11.8cm}{#4}
\end{tabular}\vspace{5pt}
}}
{\vspace{5pt} \par\noindent
\parbox{15cm}{\hskip 7pt\underline{\bf #2}\\[4pt]
\begin{tabular}{p{40pt}l}
\textbf{ثابتها:}& \parbox[t]{11.5cm}{#1}\\[4pt]
\textbf{نمونه:}& \parbox[t]{11.5cm}{#3}\\[7pt]
\textbf{سوال:}& \parbox[t]{11.5cm}{#4}
\end{tabular}\vspace{5pt}
}}} {\\[5pt]}
\makeatother
%
%%======================================== Main body
%
\headheight = 20pt
\pagestyle{plain}
\fancyhf{}
% \lhead{\thepage}
% \rhead{\leftmark}
\doublespacing
\allowdisplaybreaks[1]
% اجازه برای شکستن صفحه در وسط محیط ریاضی
%\setlength{\parindent}{1cm} %دستور برای مشخص کردن فاصله ابتدای هر پاراگراف
% %%%%% ============================================================================================================
% % فرامین مربوط به تعیین رنگ و استفاده از آنها در قسمت کد های برنامه نویسی
\definecolor{keywords}{RGB}{255,0,90}
\definecolor{comments}{RGB}{0,0,205}
\definecolor{red}{RGB}{160,0,0}
\definecolor{green}{RGB}{0,150,0}
\definecolor{Background}{rgb}{0.98,0.98,0.98}
\definecolor{Keywords}{rgb}{0,0,1}
\definecolor{Black}{RGB}{0,0,0}
\definecolor{VioletRed}{RGB}{208,32,144}
\definecolor{DarkOliveGreen}{RGB}{85,107,47}
\definecolor{Saddle Brown}{RGB}{139,69,19}
\definecolor{juliacomment}{RGB}{204,204,0}
% تنظیمات زیر برای رنگ بندی کد بش است
\lstdefinestyle{Mybash}{ language = Bash,
literate = {\$\#}{{{\$\#}}}2,
columns = fullflexible,
basicstyle=\ttfamily\scriptsize,
keywordstyle=\color{DarkOliveGreen}\bfseries,
commentstyle=\color{comments}\bfseries,
stringstyle=\color{green}\bfseries,
showstringspaces=false,
identifierstyle=\color{Black}\bfseries,
procnamekeys={cp,sudo,chmod,fplo2wannier},
prebreak=\raisebox{0ex}[0ex][0ex]{\ensuremath{\hookleftarrow}},
numbers=left,
numberstyle=\footnotesize\color{Saddle Brown},
breaklines=true,
numbersep=5pt,
captionpos=b,
backgroundcolor=\color{Background}\bfseries,
tabsize=2,
morekeywords={[2]},
keywordstyle={[2]\color{VioletRed}\bfseries},
morekeywords={[3],kmeshfplo,cp,bash,sudo,chmod,fplo2wannier,apt-get},
keywordstyle={[3]\color{DarkOliveGreen}\bfseries},
emph={self},
emphstyle={\color{self}\bfseries},
frame=1
}
\lstdefinestyle{Tex}{ language = Tex,
literate = {\$\#}{{{\$\#}}}2,
columns = fullflexible,
escapeinside={\%*}{*)},
morekeywords={encoding,
xs:schema,xs:element,xs:complexType,xs:sequence,xs:attribute},
basicstyle=\ttfamily\scriptsize,
keywordstyle=\color{DarkOliveGreen}\bfseries,
commentstyle=\color{comments}\bfseries,
stringstyle=\color{green}\bfseries,
showstringspaces=false,
identifierstyle=\color{Black}\bfseries,
procnamekeys={end,begin,documentclass,usepackage},
prebreak=\raisebox{0ex}[0ex][0ex]{\ensuremath{\hookleftarrow}},
numbers=left,
numberstyle=\footnotesize\color{Saddle Brown},
breaklines=true,
numbersep=5pt,
captionpos=b,
backgroundcolor=\color{Background}\bfseries,
tabsize=2,
morekeywords={[2]amsmath,amssymb,amsthm,array,babel,biblatex,bm,booktabs,boxedminipage,caption,cancel,chemmacros,changepage,cleveref,dcolumn,enumitem,epstopdf,esint,eucal,fancyhdr,float,fontenc,gensymb,geometry,glossaries,graphicx,grffile,hyperref,indentfirst,inputenc,latexsym,listings,longtable,mathptmx,mathrsfs,mathtools,mhchem,microtype,multicol,natbib,pdfpages,rotating,setspace,showkeys,showidx,subfiles,subcaption,syntonly,textcomp,theorem,todonotes,siunitx,ulem,url,verbatim,xcolor,xypic},
keywordstyle={[2]\color{VioletRed}\bfseries},
% morekeywords={[3]},
% keywordstyle={[3]end,begin,documentclass,usepackage \color{DarkOliveGreen}\bfseries},
emph={self},
emphstyle={\color{self}\bfseries},
frame=1
}
% تنظیمات زیر برای رنگبندی کد Pythonاست
\lstdefinestyle{Mypython}{language=Python,
basicstyle=\ttfamily\scriptsize,
sensitive=true,
keywordstyle=\color{Keywords}\bfseries,
commentstyle=\color{comments}\bfseries,
stringstyle=\color{green}\bfseries,
showstringspaces=false,
identifierstyle=\color{Black}\bfseries,
procnamekeys={def,class},
prebreak=\raisebox{0ex}[0ex][0ex]{\ensuremath{\hookleftarrow}},
numbers=left,
numberstyle=\footnotesize\color{Saddle Brown},
breaklines=true,
numbersep=5pt,
captionpos=b,
backgroundcolor=\color{Background}\bfseries,
tabsize=2,
morekeywords={[2]@invariant},
keywordstyle={[2]\color{VioletRed}\bfseries},
morekeywords={[3],reshape,sin,cos,exp,conjugate,shape,pi,sqrt,genfromtxt,isclose,arctan,complex,dot,arccos,array,float64,sum,multiply,divide,subtract,add,nan_to_num,arctan2,zeros},
keywordstyle={[3]\color{DarkOliveGreen}\bfseries},
emph={self},
emphstyle={\color{self}\bfseries},
frame=1
}
% تنظیمات برای رنگ بندی کد C است
\definecolor{mGreen}{rgb}{0,0.6,0}
\definecolor{mGray}{rgb}{0.5,0.5,0.5}
\definecolor{mPurple}{rgb}{0.58,0,0.82}
\definecolor{backgroundColour}{rgb}{0.95,0.95,0.92}
\definecolor{mygreen}{RGB}{28,172,0} % color values Red, Green, Blue
\definecolor{mylilas}{RGB}{170,55,241}
\lstdefinestyle{CStyle}{
backgroundcolor=\color{backgroundColour},
commentstyle=\color{mGreen},
keywordstyle=\color{magenta},
numberstyle=\scriptsize\color{Saddle Brown},
stringstyle=\color{mPurple},
basicstyle=\ttfamily\scriptsize,
breakatwhitespace=false,
breaklines=true,
captionpos=b,
keepspaces=true,
numbers=left,
numbersep=5pt,
showspaces=false,
showstringspaces=false,
showtabs=false,
tabsize=2,
language=C
}
\lstdefinestyle{julia}
{
keywordsprefix=\@,
morekeywords={,exit,whos,edit,load,is,isa,isequal,typeof,tuple,ntuple,uid,hash,finalizer,convert,promote,
subtype,typemin,typemax,realmin,realmax,sizeof,eps,promote_type,method_exists,applicable,
invoke,dlopen,dlsym,system,error,throw,assert,new,Inf,Nan,pi,im,begin,while,for,in,return,
break,continue,macro,quote,let,for,function,println,while,
if,elseif,else,try,catch,end,bitstype,ccall,do,using,module,
import,export,importall,baremodule,immutable,local,global,const,Bool
},
sensitive=true,
alsoother={$},%
morecomment=[l]\#,%
morecomment=[n]{\#=}{=\#},%
morestring=[s]{"}{"},%
morestring=[m]{'}{'},%
basicstyle=\ttfamily\scriptsize,
sensitive=true,
keywordstyle=\color{Keywords}\bfseries,
commentstyle=\color{juliacomment}\bfseries,
stringstyle=\color{green}\bfseries,
showstringspaces=false,
identifierstyle=\color{Black}\bfseries,
procnamekeys={def,class},
prebreak=\raisebox{0ex}[0ex][0ex]{\ensuremath{\hookleftarrow}},
numbers=left,
numberstyle=\footnotesize\color{Saddle Brown},
breaklines=true,
numbersep=5pt,
captionpos=b,
backgroundcolor=\color{backgroundColour}\bfseries,
morekeywords={[3],reshape,sin,cos,exp,conjugate,shape,pi,sqrt,genfromtxt,isclose,arctan,complex,dot,arccos,array,float64,sum,multiply,divide,subtract,add,nan_to_num,arctan2,zeros,Int,Int8,Int16,Int32,rand,randn,trace,lolog,diag,eye,linespace,grid
Int64,Uint,Uint8,Uint16,Uint32,Uint64,Float32,Float64,Complex64,Complex128,Any,Nothing,None,type,typealias,abstract},
keywordstyle={[3]\color{DarkOliveGreen}\bfseries},
tabsize=2,
emph={self},
emphstyle={\color{self}\bfseries},
frame=1
}
\definecolor{mygreen}{rgb}{0,0.6,0}
\definecolor{mygray}{rgb}{0.5,0.5,0.5}
\definecolor{mymauve}{rgb}{0.58,0,0.82}
\lstdefinestyle{mymatlab}{language=Matlab,%
basicstyle=\ttfamily\scriptsize, % size of fonts used for the code
%basicstyle=\color{red},
backgroundcolor=\color{backgroundColour},
breaklines=true,%
morekeywords={matlab2tikz},
captionpos=b, % sets the caption-position to bottom
keywordstyle=\color{blue},%
% morekeywords=[2]{1}, keywordstyle=[2]{\color{black}},
identifierstyle=\color{black},%
stringstyle=\color{mylilas},
commentstyle=\color{mygreen},%
showstringspaces=false,%without this there will be a symbol in the places where there is a space
numbers=left,%
numberstyle={\tiny \color{black}},% size of the numbers
numbersep=9pt, % this defines how far the numbers are from the text
emph=[1]{for,end,break},emphstyle=[1]\color{red}, %some words to emphasise
numberstyle=\footnotesize\color{Saddle Brown}
%emph=[2]{word1,word2}, emphstyle=[2]{style},
}
\lstdefinestyle{myfortran}{language=[90]Fortran,
backgroundcolor=\color{backgroundColour},
morecomment=[l]{!\ }% Comment only with space after !
backgroundcolor=\color{white}, % choose the background color
basicstyle=\ttfamily\scriptsize, % size of fonts used for the code
breaklines=true, % automatic line breaking only at whitespace
captionpos=b, % sets the caption-position to bottom
commentstyle=\color{mygreen}, % comment style
escapeinside={\%*}{*)}, % if you want to add LaTeX within your code
keywordstyle=\color{blue}, % keyword style
stringstyle=\color{mymauve}, % string literal style
numbers=left,
numberstyle=\footnotesize\color{Saddle Brown},
}
%=====================================================
\XeTeXinterchartokenstate=1
%دستوری برای اینکه کشیدگی در کلمات ایجاد شود
\abovedisplayshortskip=10pt
\belowdisplayshortskip=8pt
%دستوری برای تنظیم فاصله عمودی قبل و بعد از فرمولها
%=============================================تعریف محیط ها
%تعریف و نحوه ظاهر شدن عنوان قضیهها، تعریفها، مثالها و ...
\theoremstyle{definition}
\newtheorem{definition}{تعریف}[section]
\theoremstyle{theorem}
\newtheorem{theorem}[definition]{قضیه}
\newtheorem{lemma}[definition]{لم}
\newtheorem{proposition}[definition]{گزاره}
\newtheorem{corollary}[definition]{نتیجه}
\newtheorem{remark}[definition]{ملاحظه}
\theoremstyle{definition}
\newtheorem{example}[definition]{مثال}
%اگر میخواید هر محیط، شمارهگذاری مستقل خودش رو داشته باشه خطوط زیر را از حالت کامنت خارج و خطوط فوق را کامنت کنید
% \theoremstyle{definition}
% \newtheorem{definition}{تعریف}[section]
% \newtheorem{theorem}{قضیه}[section]
% \newtheorem{lemma}{لم}[section]
% \newtheorem{proposition}{گزاره}[section]
% \newtheorem{corollary}{نتیجه}[section]
% \newtheorem{remark}{ملاحظه}[section]
% \theoremstyle{definition}
% \newtheorem{example}{مثال}[section]
%%%%%%%%%%%%%%%%%%%%%%%%%%
% تغییر نام کلمه «اثبات» به «برهان»
\renewcommand\proofname{\textbf{برهان}}
%%%%%%%%%%%%%%%%%%%%%%%%%%