texlive[55165] Master: xepersian restored without permission
commits+karl at tug.org
commits+karl at tug.org
Sat May 16 23:33:48 CEST 2020
Revision: 55165
http://tug.org/svn/texlive?view=revision&revision=55165
Author: karl
Date: 2020-05-16 23:33:48 +0200 (Sat, 16 May 2020)
Log Message:
-----------
xepersian restored without permission requirement
Modified Paths:
--------------
trunk/Master/tlpkg/libexec/ctan2tds
trunk/Master/tlpkg/tlpsrc/collection-langarabic.tlpsrc
Added Paths:
-----------
trunk/Master/texmf-dist/doc/xelatex/xepersian/
trunk/Master/texmf-dist/doc/xelatex/xepersian/README
trunk/Master/texmf-dist/doc/xelatex/xepersian/dkun-0.3.py
trunk/Master/texmf-dist/doc/xelatex/xepersian/dkun-0.4.py
trunk/Master/texmf-dist/doc/xelatex/xepersian/ftxe-0.12.py
trunk/Master/texmf-dist/doc/xelatex/xepersian/img/
trunk/Master/texmf-dist/doc/xelatex/xepersian/img/ireland.jpg
trunk/Master/texmf-dist/doc/xelatex/xepersian/img/weather/
trunk/Master/texmf-dist/doc/xelatex/xepersian/img/weather/clouds.jpg
trunk/Master/texmf-dist/doc/xelatex/xepersian/img/weather/rain.jpg
trunk/Master/texmf-dist/doc/xelatex/xepersian/img/weather/sun.jpg
trunk/Master/texmf-dist/doc/xelatex/xepersian/magazine-sample.tex
trunk/Master/texmf-dist/doc/xelatex/xepersian/test-correction.tex
trunk/Master/texmf-dist/doc/xelatex/xepersian/test-empty-form.tex
trunk/Master/texmf-dist/doc/xelatex/xepersian/test-question-only.tex
trunk/Master/texmf-dist/doc/xelatex/xepersian/test-solution-form.tex
trunk/Master/texmf-dist/doc/xelatex/xepersian/undk-0.6.py
trunk/Master/texmf-dist/doc/xelatex/xepersian/unldk-0.2.py
trunk/Master/texmf-dist/doc/xelatex/xepersian/xepersian-doc.pdf
trunk/Master/texmf-dist/doc/xelatex/xepersian/xepersian-logo.tex
trunk/Master/texmf-dist/doc/xelatex/xepersian/xepersian.pdf
trunk/Master/texmf-dist/fonts/misc/xetex/fontmapping/xepersian/
trunk/Master/texmf-dist/fonts/misc/xetex/fontmapping/xepersian/persian-tex-text.map
trunk/Master/texmf-dist/fonts/misc/xetex/fontmapping/xepersian/persian-tex-text.tec
trunk/Master/texmf-dist/source/xelatex/xepersian/
trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-basics.ltx
trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-boolean.ltx
trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-captions.ltx
trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-envcs.ltx
trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-intro.ltx
trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-pkgs.ltx
trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-preamble.ltx
trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-title.ltx
trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc.ltx
trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian.dtx
trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian.ins
trunk/Master/texmf-dist/tex/xelatex/xepersian/
trunk/Master/texmf-dist/tex/xelatex/xepersian/algorithm-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/algorithmic-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/amsart-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/amsbook-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/appendix-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/article-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/artikel1-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/artikel2-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/artikel3-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/backref-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/bidimoderncv-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/bidituftesidenote-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/boek-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/boek3-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/book-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/bookest-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/breqn-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/color-localise-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/enumerate-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/enumitem-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/extarticle-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/extbook-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/extrafootnotefeatures-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/extreport-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/fancyref-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/footnote-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/framed-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/glossaries-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/hyperref-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/imsproc-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/kashida-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-commands-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-environments-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-messages-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-misc-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/listings-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/loadingorder-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/localise-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/memoir-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/minitoc-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/natbib-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/packages-localise-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/rapport1-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/rapport3-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/refrep-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/report-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/scrartcl-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/scrbook-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/scrreprt-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/soul-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/tikz.code-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/tkz-linknodes-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/tocloft-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/varioref-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localise-commands-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localise-environments-xepersian.def
trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian-logo.pdf
trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian-magazine.cls
trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian-mathsdigitspec.sty
trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian-multiplechoice.sty
trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian-persiancal.sty
trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty
Added: trunk/Master/texmf-dist/doc/xelatex/xepersian/README
===================================================================
--- trunk/Master/texmf-dist/doc/xelatex/xepersian/README (rev 0)
+++ trunk/Master/texmf-dist/doc/xelatex/xepersian/README 2020-05-16 21:33:48 UTC (rev 55165)
@@ -0,0 +1,30 @@
+____________________
+The XePersian package
+v23.0
+
+The xepersian package provides a convenient interface for
+typesetting Persian and English texts in LaTeX, using XeTeX
+engine.
+
+If you want to report any bugs or typos and corrections in the
+documentation, or ask for any new features, or suggest any
+improvements, or ask any questions about the package, then
+please use the issue tracker:
+
+ <https://github.com/persiantex/xepersian/issues>
+
+In doing so, please always explain your issue well enough, and always
+include a minimal working example showing the issue.
+
+Current version release date: 2020/05/16
+___________________________________________
+Copyright (c) Vafa Khalighi 2008--2020
+Copyright (c) bidi-tex GitHub Organization 2018--2020
+
+Distributed under the LaTeX Project Public License
+It may be distributed and/or modified under the LaTeX Project Public License,
+version 1.3c or higher (your choice). The latest version of
+this license is at: http://www.latex-project.org/lppl.txt
+
+This work is “author-maintained” (as per LPPL maintenance status)
+by Vafa Khalighi.
Property changes on: trunk/Master/texmf-dist/doc/xelatex/xepersian/README
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/xelatex/xepersian/dkun-0.3.py
===================================================================
--- trunk/Master/texmf-dist/doc/xelatex/xepersian/dkun-0.3.py (rev 0)
+++ trunk/Master/texmf-dist/doc/xelatex/xepersian/dkun-0.3.py 2020-05-16 21:33:48 UTC (rev 55165)
@@ -0,0 +1,468 @@
+#! /usr/bin/env python
+
+#########################################
+# General Public License #
+# Author: Mostafa Vahedi #
+# Date: 21 Apr. 2008 #
+# Version 0.3 #
+#########################################
+
+import codecs
+
+import sys
+
+
+dk_numerical = [
+chr(0x97), # Arabic Thoushads Seperator
+chr(0xA1) # ARABIC DECIMAL SEPARATOR
+]
+
+
+dk_vowels = [
+chr(0xAB), # ARABIC FATHA
+chr(0xAA), # ARABIC KASRA
+chr(0xA9), # ARABIC DAMMA
+chr(0xAC), # ARABIC FATHATAN
+chr(0xBA), # ARABIC SHADDA
+#chr(0x??), # ARABIC LETTER SUPERSCRIPT ALEF
+#chr(0x??), # ARABIC LETTER SUBSCRIPT ALEF
+chr(0xAD), # ARABIC HAMZA ABOVE
+chr(0xAE) # ARABIC SUKUN
+]
+
+dk_non_joiners = [
+chr(0xBC) # ARABIC LETTER HAMZA
+]
+
+dk_bidi_joiners_initial = [
+chr(0xE1), # ARABIC LETTER AIN, initial form
+chr(0xE5), # ARABIC LETTER GHAIN, initial form
+chr(0xF9) # ARABIC LETTER HEH, initial form
+]
+
+dk_bidi_joiners_medial = [
+chr(0xE3), # ARABIC LETTER AIN, medial form
+chr(0xE7), # ARABIC LETTER GHAIN, medial form
+chr(0xFB) # ARABIC LETTER HEH, medial form
+]
+
+dk_bidi_joiners_final = [
+chr(0xE2), # ARABIC LETTER AIN, final form
+chr(0xE6), # ARABIC LETTER GHAIN, final form
+chr(0xFE) # ARABIC LETTER FARSI YEH, final form
+]
+
+dk_bidi_joiners_isolated = [
+chr(0xE0), # ARABIC LETTER AIN, isolated form
+chr(0xE4), # ARABIC LETTER GHAIN, isolated form
+chr(0xFC) # ARABIC LETTER FARSI YEH, isolated form
+]
+
+dk_bidi_joiners_initial_medial = [
+chr(0x94), # ARABIC TATWEEL
+chr(0xFF), # ARABIC LETTER YEH WITH HAMZA ABOVE, initial-medial form
+chr(0xC0), # ARABIC LETTER BEH, initial-medial form
+chr(0xC2), # ARABIC LETTER PEH, initial-medial form
+chr(0xC4), # ARABIC LETTER TEH, initial-medial form
+chr(0xC6), # ARABIC LETTER THEH, initial-medial form
+chr(0xC8), # ARABIC LETTER JEEM, initial-medial form
+chr(0xCA), # ARABIC LETTER TCHEH, initial-medial form
+chr(0xCC), # ARABIC LETTER HAH, initial-medial form
+chr(0xCE), # ARABIC LETTER KHAH, initial-medial form
+chr(0xD5), # ARABIC LETTER SEEN, initial-medial form
+chr(0xD7), # ARABIC LETTER SHEEN, initial-medial form
+chr(0xD9), # ARABIC LETTER SAD, initial-medial form
+chr(0xDB), # ARABIC LETTER DAD, initial-medial form
+chr(0xDD), # ARABIC LETTER TAH, initial-medial form
+chr(0xDF), # ARABIC LETTER ZAH, initial-medial form
+chr(0xE9), # ARABIC LETTER FEH, initial-medial form
+chr(0xEB), # ARABIC LETTER QAF, initial-medial form
+chr(0xED), # ARABIC LETTER KEHEH, initial-medial form
+chr(0xEF), # ARABIC LETTER GAF, initial-medial form
+chr(0xF2), # ARABIC LETTER LAM, initial-medial form
+chr(0xF4), # ARABIC LETTER MEEM, initial-medial form
+chr(0xF6), # ARABIC LETTER NOON, initial-medial form
+chr(0xFD) # ARABIC LETTER FARSI YEH, initial-medial form
+]
+
+dk_bidi_joiners_final_isolated = [
+chr(0xBF), # ARABIC LETTER BEH, final-isolated form
+chr(0xC1), # ARABIC LETTER PEH, final-isolated form
+chr(0xC3), # ARABIC LETTER TEH, final-isolated form
+chr(0xC5), # ARABIC LETTER THEH, final-isolated form
+chr(0xC7), # ARABIC LETTER JEEM, final-isolated form
+chr(0xC9), # ARABIC LETTER TCHEH, final-isolated form
+chr(0xCB), # ARABIC LETTER HAH, final-isolated form
+chr(0xCD), # ARABIC LETTER KHAH, final-isolated form
+chr(0xD4), # ARABIC LETTER SEEN, final-isolated form
+chr(0xD6), # ARABIC LETTER SHEEN, final-isolated form
+chr(0xD8), # ARABIC LETTER SAD, final-isolated form
+chr(0xDA), # ARABIC LETTER DAD, final-isolated form
+chr(0xDC), # ARABIC LETTER TAH, final-isolated form
+chr(0xDE), # ARABIC LETTER ZAH, final-isolated form
+chr(0xE8), # ARABIC LETTER FEH, final-isolated form
+chr(0xEA), # ARABIC LETTER QAF, final-isolated form
+chr(0xEC), # ARABIC LETTER KEHEH, final-isolated form
+chr(0xEE), # ARABIC LETTER GAF, final-isolated form
+chr(0xF0), # ARABIC LETTER LAM, final-isolated form
+chr(0xF3), # ARABIC LETTER MEEM, final-isolated form
+chr(0xF5), # ARABIC LETTER NOON, final-isolated form
+chr(0xF8) # ARABIC LETTER HEH, final-isolated form
+]
+
+dk_right_joiners_final = [
+chr(0xBE) # ARABIC LETTER ALEF, final form
+]
+
+dk_right_joiners_isolated = [
+chr(0xBD) # ARABIC LETTER ALEF, isolated form
+]
+
+dk_right_joiners_final_isolated = [
+chr(0xBB), # ARABIC LETTER ALEF WITH MADDA ABOVE, isolated form
+chr(0xCF), # ARABIC LETTER DAL
+chr(0xD0), # ARABIC LETTER THAL
+chr(0xD1), # ARABIC LETTER REH
+chr(0xD2), # ARABIC LETTER ZAIN
+chr(0xD3), # ARABIC LETTER JEH
+#chr(0xBF), # ARABIC LETTER TEH MARBUTAH
+chr(0xF1), # ARABIC LIGATURE LAM WITH ALEF
+chr(0xF7) # ARABIC LETTER WAW
+]
+
+
+table_DK_UN = {
+chr(0xB0) : [u'\u06F0'], # EXTENDED ARABIC-INDIC DIGIT ZERO
+chr(0xB1) : [u'\u06F1'], # EXTENDED ARABIC-INDIC DIGIT ONE
+chr(0xB2) : [u'\u06F2'], # EXTENDED ARABIC-INDIC DIGIT TWO
+chr(0xB3) : [u'\u06F3'], # EXTENDED ARABIC-INDIC DIGIT THREE
+chr(0xB4) : [u'\u06F4'], # EXTENDED ARABIC-INDIC DIGIT FOUR
+chr(0xB5) : [u'\u06F5'], # EXTENDED ARABIC-INDIC DIGIT FIVE
+chr(0xB6) : [u'\u06F6'], # EXTENDED ARABIC-INDIC DIGIT SIX
+chr(0xB7) : [u'\u06F7'], # EXTENDED ARABIC-INDIC DIGIT SEVEN
+chr(0xB8) : [u'\u06F8'], # EXTENDED ARABIC-INDIC DIGIT EIGHT
+chr(0xB9) : [u'\u06F9'], # EXTENDED ARABIC-INDIC DIGIT NINE
+chr(0xA7) : [u'\u060C'], # ARABIC COMMA
+chr(0x94) : [u'\u0640'], # ARABIC TATWEEL
+chr(0xA3) : [u'\u061F'], # ARABIC QUESTION MARK
+chr(0xBB) : [u'\u0622'], # ARABIC LETTER ALEF WITH MADDA ABOVE, isolated form
+chr(0xFF) : [u'\u0626'], # ARABIC LETTER YEH WITH HAMZA ABOVE, initial-medial form
+chr(0xBC) : [u'\u0621'], # ARABIC LETTER HAMZA
+chr(0xBD) : [u'\u0627'], # ARABIC LETTER ALEF, isolated form
+chr(0xBE) : [u'\u0627'], # ARABIC LETTER ALEF, final form
+chr(0xBF) : [u'\u0628'], # ARABIC LETTER BEH, final-isolated form
+chr(0xC0) : [u'\u0628'], # ARABIC LETTER BEH, initial-medial form
+chr(0xC1) : [u'\u067E'], # ARABIC LETTER PEH, final-isolated form
+chr(0xC2) : [u'\u067E'], # ARABIC LETTER PEH, initial-medial form
+chr(0xC3) : [u'\u062A'], # ARABIC LETTER TEH, final-isolated form
+chr(0xC4) : [u'\u062A'], # ARABIC LETTER TEH, initial-medial form
+chr(0xC5) : [u'\u062B'], # ARABIC LETTER THEH, final-isolated form
+chr(0xC6) : [u'\u062B'], # ARABIC LETTER THEH, initial-medial form
+chr(0xC7) : [u'\u062C'], # ARABIC LETTER JEEM, final-isolated form
+chr(0xC8) : [u'\u062C'], # ARABIC LETTER JEEM, initial-medial form
+chr(0xC9) : [u'\u0686'], # ARABIC LETTER TCHEH, final-isolated form
+chr(0xCA) : [u'\u0686'], # ARABIC LETTER TCHEH, initial-medial form
+chr(0xCB) : [u'\u062D'], # ARABIC LETTER HAH, final-isolated form
+chr(0xCC) : [u'\u062D'], # ARABIC LETTER HAH, initial-medial form
+chr(0xCD) : [u'\u062E'], # ARABIC LETTER KHAH, final-isolated form
+chr(0xCE) : [u'\u062E'], # ARABIC LETTER KHAH, initial-medial form
+chr(0xCF) : [u'\u062F'], # ARABIC LETTER DAL
+chr(0xD0) : [u'\u0630'], # ARABIC LETTER THAL
+chr(0xD1) : [u'\u0631'], # ARABIC LETTER REH
+chr(0xD2) : [u'\u0632'], # ARABIC LETTER ZAIN
+chr(0xD3) : [u'\u0698'], # ARABIC LETTER JEH
+chr(0xD4) : [u'\u0633'], # ARABIC LETTER SEEN, final-isolated form
+chr(0xD5) : [u'\u0633'], # ARABIC LETTER SEEN, initial-medial form
+chr(0xD6) : [u'\u0634'], # ARABIC LETTER SHEEN, final-isolated form
+chr(0xD7) : [u'\u0634'], # ARABIC LETTER SHEEN, initial-medial form
+chr(0xD8) : [u'\u0635'], # ARABIC LETTER SAD, final-isolated form
+chr(0xD9) : [u'\u0635'], # ARABIC LETTER SAD, initial-medial form
+chr(0xDA) : [u'\u0636'], # ARABIC LETTER DAD, final-isolated form
+chr(0xDB) : [u'\u0636'], # ARABIC LETTER DAD, initial-medial form
+chr(0xDC) : [u'\u0637'], # ARABIC LETTER TAH, initial-medial form
+chr(0xAB) : [u'\u064E'], # ARABIC FATHA
+chr(0xAA) : [u'\u0650'], # ARABIC KASRA
+chr(0xA9) : [u'\u064F'], # ARABIC DAMMA
+chr(0xAC) : [u'\u064B'], # ARABIC FATHATAN
+chr(0xBA) : [u'\u0651'], # ARABIC SHADDA
+chr(0x95) : [u'\u0023'], # * #
+chr(0x83) : [u'\u0024'], # * $
+chr(0x96) : [u'\u066A'], # * %
+chr(0x87) : [u'\u0026'], # * &
+chr(0x9C) : [u'\u00D7'], # * ARABIC cross (times) x
+chr(0x97) : [u'\u066C'], # Arabic Thoushads Seperator
+#chr(0xBA) : [u'\u0670'], # ARABIC LETTER SUPERSCRIPT ALEF
+chr(0xAD) : [u'\u0654'], # ARABIC HAMZA ABOVE
+chr(0xA1) : [u'\u066B'], # ARABIC DECIMAL SEPARATOR
+chr(0x91) : [u'\u0028'], # * RIGHT PARENTHESIS
+chr(0x90) : [u'\u0029'], # * LEFT PARENTHESIS
+#chr(0xBF) : [u'\u0629'], # ARABIC LETTER TEH MARBUTAH
+chr(0x8E) : [u'\u00BB'], # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+chr(0xDD) : [u'\u0637'], # ARABIC LETTER TAH, final-isolated form
+chr(0xDE) : [u'\u0638'], # ARABIC LETTER ZAH, final-isolated form
+chr(0x8F) : [u'\u00AB'], # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+chr(0xAE) : [u'\u0652'], # ARABIC SUKUN
+chr(0x9F) : [u'\u002D'], # * -
+chr(0xA2) : [u'\u002E'], # * FULL STOP
+#chr(0xA1) : [u'\u002F'], # * /
+chr(0x82) : [u'\u002A'], # * *
+chr(0x86) : [u'\u007E'], # * ~
+chr(0xA5) : [u'\u003A'], # * COLON
+chr(0xA6) : [u'\u061B'], # ARABIC SEMICOLON
+chr(0x9A) : [u'\u003E'], # * GREATER-THAN SIGN
+chr(0x9E) : [u'\u002B'], # * +
+chr(0x99) : [u'\u003D'], # * =
+chr(0x98) : [u'\u003C'], # * LESS-THAN SIGN
+chr(0x81) : [u'\u0040'], # * @
+chr(0x92) : [u'\u005D'], # * [
+chr(0x9D) : [u'\u005C'], # * \
+chr(0x93) : [u'\u005B'], # * ]
+#chr(0xAE) : [u'\u005E'], # * ^
+#chr(0xD5) : [u'\u005F'], # * _
+chr(0xA8) : [u'\u0060'], # * `
+chr(0x8B) : [u'\u007D'], # * {
+chr(0xAF) : [u'\u007C'], # * |
+chr(0xA0) : [u'\u0020'], # * SPACE
+chr(0xA4) : [u'\u0021'], # * EXCLAMATION MARK
+chr(0x8C) : [u'\u007B'], # * }
+chr(0xDF) : [u'\u0638'], # ARABIC LETTER ZAH, initial-medial form
+chr(0xE0) : [u'\u0639'], # ARABIC LETTER AIN, isolated form
+chr(0xE1) : [u'\u0639'], # ARABIC LETTER AIN, final form
+chr(0xE2) : [u'\u0639'], # ARABIC LETTER AIN, medial form
+chr(0xE3) : [u'\u0639'], # ARABIC LETTER AIN, initial form
+chr(0xE4) : [u'\u063A'], # ARABIC LETTER GHAIN, isolated form
+chr(0xE5) : [u'\u063A'], # ARABIC LETTER GHAIN, final form
+chr(0xE6) : [u'\u063A'], # ARABIC LETTER GHAIN, medial form
+chr(0xE7) : [u'\u063A'], # ARABIC LETTER GHAIN, initial form
+chr(0xE8) : [u'\u0641'], # ARABIC LETTER FEH, final-isolated form
+chr(0xE9) : [u'\u0641'], # ARABIC LETTER FEH, initial-medial form
+chr(0xEA) : [u'\u0642'], # ARABIC LETTER QAF, final-isolated form
+chr(0xEB) : [u'\u0642'], # ARABIC LETTER QAF, initial-medial form
+chr(0xEC) : [u'\u06A9'], # ARABIC LETTER KEHEH, final-isolated form
+chr(0xED) : [u'\u06A9'], # ARABIC LETTER KEHEH, initial-medial form
+chr(0xEE) : [u'\u06AF'], # ARABIC LETTER GAF, final-isolated form
+chr(0xEF) : [u'\u06AF'], # ARABIC LETTER GAF, initial-medial form
+chr(0xF0) : [u'\u0644'], # ARABIC LETTER LAM, final-isolated form
+chr(0xF1) : [u'\u0644\u0627'], # ARABIC LIGATURE LAM WITH ALEF
+chr(0xF2) : [u'\u0644'], # ARABIC LETTER LAM, initial-medial form
+chr(0xF3) : [u'\u0645'], # ARABIC LETTER MEEM, final-isolated form
+chr(0xF4) : [u'\u0645'], # ARABIC LETTER MEEM, initial-medial form
+chr(0xF5) : [u'\u0646'], # ARABIC LETTER NOON, final-isolated form
+chr(0xF6) : [u'\u0646'], # ARABIC LETTER NOON, initial-medial form
+chr(0xF7) : [u'\u0648'], # ARABIC LETTER WAW
+chr(0xF8) : [u'\u0647'], # ARABIC LETTER HEH, final-isolated form
+chr(0xFB) : [u'\u0647'], # ARABIC LETTER HEH, medial form
+chr(0xF9) : [u'\u0647'], # ARABIC LETTER HEH, initial form
+chr(0xFE) : [u'\u06CC'], # ARABIC LETTER FARSI YEH, final form
+chr(0xFC) : [u'\u06CC'], # ARABIC LETTER FARSI YEH, isolated form
+chr(0xFD) : [u'\u06CC'] # ARABIC LETTER FARSI YEH, initial-medial form
+}
+
+
+def dk_is_numeric(ch):
+ if ((ch in dk_numerical) or
+ ((ch >= chr(0xB0)) and (ch <= chr(0xB9))) ):
+ return 1
+ return 0
+
+def dk_can_join_left(ch):
+ if ((ch in dk_bidi_joiners_initial) or
+ (ch in dk_bidi_joiners_medial) or
+ (ch in dk_bidi_joiners_final) or
+ (ch in dk_bidi_joiners_isolated) or
+ (ch in dk_bidi_joiners_initial_medial) or
+ (ch in dk_bidi_joiners_final_isolated)):
+ return 1
+ return 0
+
+def dk_can_join_right(ch):
+ if (dk_can_join_left(ch) or
+ (ch in dk_right_joiners_final) or
+ (ch in dk_right_joiners_isolated) or
+ (ch in dk_right_joiners_final_isolated)):
+ return 1
+ return 0
+
+def dk_joining_left(ch):
+ if ((ch in dk_bidi_joiners_initial) or
+ (ch in dk_bidi_joiners_medial) or
+ (ch in dk_bidi_joiners_initial_medial)):
+ return 1
+ return 0
+
+
+def dk_joining_right(ch):
+ if ((ch in dk_right_joiners_final) or
+ (ch in dk_bidi_joiners_medial) or
+ (ch in dk_bidi_joiners_final)):
+ return 1
+ return 0
+
+def dk_not_right_joined(ch):
+ if ((ch in dk_bidi_joiners_initial) or
+ (ch in dk_right_joiners_isolated) or
+ (ch in dk_bidi_joiners_isolated)):
+ return 1
+ return 0
+
+def dk_adjust_shaping(text, i):
+ current = text[i]
+ u = u''
+ try:
+ u = table_DK_UN[current][0]
+ except KeyError:
+ print 'ERROR: unmapped character'
+ return u''
+
+ #if you don't want shaping remove the following comment
+ #return u
+
+ if ((current in dk_vowels) or (dk_is_numeric(current))):
+ return u
+
+ #find next non-vowel character on the left
+ text_len = len(text)
+ next_index = i+1
+ while ((next_index < text_len) and (text[next_index] in dk_vowels)):
+ next_index += 1
+
+ if (next_index == text_len):
+ next = ''
+ else:
+ next = text[next_index]
+
+ # if current letter is joining from left but next letter is or can not joining
+ if (dk_joining_left(current)):
+ if (not dk_can_join_right(next)):
+ u += u'\u200D' #ZWJ
+ elif (dk_not_right_joined(next)):
+ u += u'\u200D\u200C' #ZWJ+ZWNJ
+ # if current letter can join but next letter is joining from right
+ elif (dk_can_join_left(current)):
+ if (dk_joining_right(next)):
+ u += u'\u200C\u200D' #ZWNJ+ZWJ
+ elif (dk_can_join_right(next)):
+ u += u'\u200C' #ZWNJ
+ return u
+
+def dk_adjust_number(text):
+ result = u''
+ i = len(text)-1
+ while (i >= 0):
+ result += dk_adjust_shaping(text, i)
+ i -= 1
+ return result
+
+
+def map_dk_unicode(text):
+ mapped_text = u''
+
+ i = 0
+ while (i < len(text)):
+ if (dk_is_numeric(text[i])):
+ next_index = i
+ while ((next_index+1 < len(text)) and
+ (dk_is_numeric(text[next_index+1]))):
+ next_index += 1
+ mapped_text += dk_adjust_number(text[i:next_index+1])
+ i = next_index+1
+ continue
+
+ mapped_text += dk_adjust_shaping(text, i)
+ i += 1
+ return mapped_text
+
+def dk_next_part(line, i):
+ j = i
+ language_flag = (line[j]<chr(0x80))
+ while ((j<line_len) and ((line[j]<chr(0x80)) == language_flag) ):
+ j += 1
+ return j
+
+
+def is_english_letter_number(c):
+ if ((c >= 'a') and (c <= 'z')) or ((c >= 'A') and (c <= 'Z')):
+ return 1
+ if (c >= '0') and (c <= '9'):
+ return 1
+ return 0
+
+def is_inbetween_chars(c):
+ if ((c == '.') or (c == '-') or (c == '_') or (c == '/')):
+ return 1
+ return 0
+
+def needs_english_wrapper(part):
+ part_len = len(part)
+ i = -1
+ while (i+1 < part_len):
+ i += 1
+ if (is_english_letter_number(part[i]) == 1):
+ continue
+ if (i>0) and (is_inbetween_chars(part[i]) == 1) and \
+ (part_len > i+1) and (is_english_letter_number(part[i+1]) == 1):
+ continue
+ return 1
+ return 0
+
+# Main body of the program
+if len(sys.argv) <= 2:
+ print 'usage: python dkun in_filename out_filename'
+ exit(0)
+
+filename = sys.argv[1]
+outfile = sys.argv[2]
+
+try:
+ f = open(filename, 'r')
+except IOError:
+ print "Can not open the input file: " + filename
+ exit(0)
+
+try:
+ of = codecs.open(outfile, encoding='utf-8', mode='w')
+except IOError:
+ print "Can not open the output file: " + outfile
+ exit(0)
+
+line_number = 0
+for line in f:
+ line_number += 1
+ output_line = u''
+ line_len = len(line)
+
+ put_end_of_line = 0
+ if ((line_len > 0) and (line[line_len-1] == '\n')):
+ put_end_of_line = 1
+ line_len = line_len - 1
+ if ((line_len > 0) and (line[line_len-1] == '\r')):
+ line_len = line_len - 1
+
+ i = 0
+
+ while (i<line_len):
+ next_part_index = dk_next_part(line, i)
+ next_part = line[i:next_part_index]
+ next_part_latin = (line[i]<chr(0x80))
+
+ if next_part_latin:
+ if (needs_english_wrapper(next_part[::-1]) == 1):
+ next_part = '\$e_'+next_part[::-1]+'\$f_'
+ else:
+ next_part = next_part[::-1]
+ output_line += next_part.encode( 'utf-8' )
+ else:
+ output_line += map_dk_unicode(next_part)
+ i = next_part_index
+ # end of while
+
+ if (put_end_of_line == 1):
+ output_line += u'\u000a'
+
+ # write the processed line
+ of.write(output_line)
+ # end of line processing
+# end of file processing
+
+of.close()
+f.close()
Property changes on: trunk/Master/texmf-dist/doc/xelatex/xepersian/dkun-0.3.py
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/xelatex/xepersian/dkun-0.4.py
===================================================================
--- trunk/Master/texmf-dist/doc/xelatex/xepersian/dkun-0.4.py (rev 0)
+++ trunk/Master/texmf-dist/doc/xelatex/xepersian/dkun-0.4.py 2020-05-16 21:33:48 UTC (rev 55165)
@@ -0,0 +1,465 @@
+#! /usr/bin/env python
+
+#########################################
+# General Public License #
+# Author: Mostafa Vahedi #
+# Date: 24 Sep. 2012 #
+# Version 0.4 #
+#########################################
+
+import codecs
+
+import sys
+
+
+dk_numerical = [
+chr(0x97), # Arabic Thoushads Seperator
+chr(0xA1) # ARABIC DECIMAL SEPARATOR
+]
+
+
+dk_vowels = [
+chr(0xAB), # ARABIC FATHA
+chr(0xAA), # ARABIC KASRA
+chr(0xA9), # ARABIC DAMMA
+chr(0xAC), # ARABIC FATHATAN
+chr(0xBA), # ARABIC SHADDA
+#chr(0x??), # ARABIC LETTER SUPERSCRIPT ALEF
+#chr(0x??), # ARABIC LETTER SUBSCRIPT ALEF
+chr(0xAD), # ARABIC HAMZA ABOVE
+chr(0xAE) # ARABIC SUKUN
+]
+
+dk_non_joiners = [
+chr(0xBC) # ARABIC LETTER HAMZA
+]
+
+dk_bidi_joiners_initial = [
+chr(0xE1), # ARABIC LETTER AIN, initial form
+chr(0xE5), # ARABIC LETTER GHAIN, initial form
+chr(0xF9) # ARABIC LETTER HEH, initial form
+]
+
+dk_bidi_joiners_medial = [
+chr(0xE3), # ARABIC LETTER AIN, medial form
+chr(0xE7), # ARABIC LETTER GHAIN, medial form
+chr(0xFB) # ARABIC LETTER HEH, medial form
+]
+
+dk_bidi_joiners_final = [
+chr(0xE2), # ARABIC LETTER AIN, final form
+chr(0xE6), # ARABIC LETTER GHAIN, final form
+chr(0xFE) # ARABIC LETTER FARSI YEH, final form
+]
+
+dk_bidi_joiners_isolated = [
+chr(0xE0), # ARABIC LETTER AIN, isolated form
+chr(0xE4), # ARABIC LETTER GHAIN, isolated form
+chr(0xFC) # ARABIC LETTER FARSI YEH, isolated form
+]
+
+dk_bidi_joiners_initial_medial = [
+chr(0x94), # ARABIC TATWEEL
+chr(0xFF), # ARABIC LETTER YEH WITH HAMZA ABOVE, initial-medial form
+chr(0xC0), # ARABIC LETTER BEH, initial-medial form
+chr(0xC2), # ARABIC LETTER PEH, initial-medial form
+chr(0xC4), # ARABIC LETTER TEH, initial-medial form
+chr(0xC6), # ARABIC LETTER THEH, initial-medial form
+chr(0xC8), # ARABIC LETTER JEEM, initial-medial form
+chr(0xCA), # ARABIC LETTER TCHEH, initial-medial form
+chr(0xCC), # ARABIC LETTER HAH, initial-medial form
+chr(0xCE), # ARABIC LETTER KHAH, initial-medial form
+chr(0xD5), # ARABIC LETTER SEEN, initial-medial form
+chr(0xD7), # ARABIC LETTER SHEEN, initial-medial form
+chr(0xD9), # ARABIC LETTER SAD, initial-medial form
+chr(0xDB), # ARABIC LETTER DAD, initial-medial form
+chr(0xDD), # ARABIC LETTER TAH, initial-medial form
+chr(0xDF), # ARABIC LETTER ZAH, initial-medial form
+chr(0xE9), # ARABIC LETTER FEH, initial-medial form
+chr(0xEB), # ARABIC LETTER QAF, initial-medial form
+chr(0xED), # ARABIC LETTER KEHEH, initial-medial form
+chr(0xEF), # ARABIC LETTER GAF, initial-medial form
+chr(0xF2), # ARABIC LETTER LAM, initial-medial form
+chr(0xF4), # ARABIC LETTER MEEM, initial-medial form
+chr(0xF6), # ARABIC LETTER NOON, initial-medial form
+chr(0xFD) # ARABIC LETTER FARSI YEH, initial-medial form
+]
+
+dk_bidi_joiners_final_isolated = [
+chr(0xBF), # ARABIC LETTER BEH, final-isolated form
+chr(0xC1), # ARABIC LETTER PEH, final-isolated form
+chr(0xC3), # ARABIC LETTER TEH, final-isolated form
+chr(0xC5), # ARABIC LETTER THEH, final-isolated form
+chr(0xC7), # ARABIC LETTER JEEM, final-isolated form
+chr(0xC9), # ARABIC LETTER TCHEH, final-isolated form
+chr(0xCB), # ARABIC LETTER HAH, final-isolated form
+chr(0xCD), # ARABIC LETTER KHAH, final-isolated form
+chr(0xD4), # ARABIC LETTER SEEN, final-isolated form
+chr(0xD6), # ARABIC LETTER SHEEN, final-isolated form
+chr(0xD8), # ARABIC LETTER SAD, final-isolated form
+chr(0xDA), # ARABIC LETTER DAD, final-isolated form
+chr(0xDC), # ARABIC LETTER TAH, final-isolated form
+chr(0xDE), # ARABIC LETTER ZAH, final-isolated form
+chr(0xE8), # ARABIC LETTER FEH, final-isolated form
+chr(0xEA), # ARABIC LETTER QAF, final-isolated form
+chr(0xEC), # ARABIC LETTER KEHEH, final-isolated form
+chr(0xEE), # ARABIC LETTER GAF, final-isolated form
+chr(0xF0), # ARABIC LETTER LAM, final-isolated form
+chr(0xF3), # ARABIC LETTER MEEM, final-isolated form
+chr(0xF5), # ARABIC LETTER NOON, final-isolated form
+chr(0xF8) # ARABIC LETTER HEH, final-isolated form
+]
+
+dk_right_joiners_final = [
+chr(0xBE) # ARABIC LETTER ALEF, final form
+]
+
+dk_right_joiners_isolated = [
+chr(0xBD) # ARABIC LETTER ALEF, isolated form
+]
+
+dk_right_joiners_final_isolated = [
+chr(0xBB), # ARABIC LETTER ALEF WITH MADDA ABOVE, isolated form
+chr(0xCF), # ARABIC LETTER DAL
+chr(0xD0), # ARABIC LETTER THAL
+chr(0xD1), # ARABIC LETTER REH
+chr(0xD2), # ARABIC LETTER ZAIN
+chr(0xD3), # ARABIC LETTER JEH
+#chr(0xBF), # ARABIC LETTER TEH MARBUTAH
+chr(0xF1), # ARABIC LIGATURE LAM WITH ALEF
+chr(0xF7) # ARABIC LETTER WAW
+]
+
+
+table_DK_UN = {
+chr(0xB0) : [u'\u06F0'], # EXTENDED ARABIC-INDIC DIGIT ZERO
+chr(0xB1) : [u'\u06F1'], # EXTENDED ARABIC-INDIC DIGIT ONE
+chr(0xB2) : [u'\u06F2'], # EXTENDED ARABIC-INDIC DIGIT TWO
+chr(0xB3) : [u'\u06F3'], # EXTENDED ARABIC-INDIC DIGIT THREE
+chr(0xB4) : [u'\u06F4'], # EXTENDED ARABIC-INDIC DIGIT FOUR
+chr(0xB5) : [u'\u06F5'], # EXTENDED ARABIC-INDIC DIGIT FIVE
+chr(0xB6) : [u'\u06F6'], # EXTENDED ARABIC-INDIC DIGIT SIX
+chr(0xB7) : [u'\u06F7'], # EXTENDED ARABIC-INDIC DIGIT SEVEN
+chr(0xB8) : [u'\u06F8'], # EXTENDED ARABIC-INDIC DIGIT EIGHT
+chr(0xB9) : [u'\u06F9'], # EXTENDED ARABIC-INDIC DIGIT NINE
+chr(0xA7) : [u'\u060C'], # ARABIC COMMA
+chr(0x94) : [u'\u0640'], # ARABIC TATWEEL
+chr(0xA3) : [u'\u061F'], # ARABIC QUESTION MARK
+chr(0xBB) : [u'\u0622'], # ARABIC LETTER ALEF WITH MADDA ABOVE, isolated form
+chr(0xFF) : [u'\u0626'], # ARABIC LETTER YEH WITH HAMZA ABOVE, initial-medial form
+chr(0xBC) : [u'\u0621'], # ARABIC LETTER HAMZA
+chr(0xBD) : [u'\u0627'], # ARABIC LETTER ALEF, isolated form
+chr(0xBE) : [u'\u0627'], # ARABIC LETTER ALEF, final form
+chr(0xBF) : [u'\u0628'], # ARABIC LETTER BEH, final-isolated form
+chr(0xC0) : [u'\u0628'], # ARABIC LETTER BEH, initial-medial form
+chr(0xC1) : [u'\u067E'], # ARABIC LETTER PEH, final-isolated form
+chr(0xC2) : [u'\u067E'], # ARABIC LETTER PEH, initial-medial form
+chr(0xC3) : [u'\u062A'], # ARABIC LETTER TEH, final-isolated form
+chr(0xC4) : [u'\u062A'], # ARABIC LETTER TEH, initial-medial form
+chr(0xC5) : [u'\u062B'], # ARABIC LETTER THEH, final-isolated form
+chr(0xC6) : [u'\u062B'], # ARABIC LETTER THEH, initial-medial form
+chr(0xC7) : [u'\u062C'], # ARABIC LETTER JEEM, final-isolated form
+chr(0xC8) : [u'\u062C'], # ARABIC LETTER JEEM, initial-medial form
+chr(0xC9) : [u'\u0686'], # ARABIC LETTER TCHEH, final-isolated form
+chr(0xCA) : [u'\u0686'], # ARABIC LETTER TCHEH, initial-medial form
+chr(0xCB) : [u'\u062D'], # ARABIC LETTER HAH, final-isolated form
+chr(0xCC) : [u'\u062D'], # ARABIC LETTER HAH, initial-medial form
+chr(0xCD) : [u'\u062E'], # ARABIC LETTER KHAH, final-isolated form
+chr(0xCE) : [u'\u062E'], # ARABIC LETTER KHAH, initial-medial form
+chr(0xCF) : [u'\u062F'], # ARABIC LETTER DAL
+chr(0xD0) : [u'\u0630'], # ARABIC LETTER THAL
+chr(0xD1) : [u'\u0631'], # ARABIC LETTER REH
+chr(0xD2) : [u'\u0632'], # ARABIC LETTER ZAIN
+chr(0xD3) : [u'\u0698'], # ARABIC LETTER JEH
+chr(0xD4) : [u'\u0633'], # ARABIC LETTER SEEN, final-isolated form
+chr(0xD5) : [u'\u0633'], # ARABIC LETTER SEEN, initial-medial form
+chr(0xD6) : [u'\u0634'], # ARABIC LETTER SHEEN, final-isolated form
+chr(0xD7) : [u'\u0634'], # ARABIC LETTER SHEEN, initial-medial form
+chr(0xD8) : [u'\u0635'], # ARABIC LETTER SAD, final-isolated form
+chr(0xD9) : [u'\u0635'], # ARABIC LETTER SAD, initial-medial form
+chr(0xDA) : [u'\u0636'], # ARABIC LETTER DAD, final-isolated form
+chr(0xDB) : [u'\u0636'], # ARABIC LETTER DAD, initial-medial form
+chr(0xDC) : [u'\u0637'], # ARABIC LETTER TAH, initial-medial form
+chr(0xAB) : [u'\u064E'], # ARABIC FATHA
+chr(0xAA) : [u'\u0650'], # ARABIC KASRA
+chr(0xA9) : [u'\u064F'], # ARABIC DAMMA
+chr(0xAC) : [u'\u064B'], # ARABIC FATHATAN
+chr(0xBA) : [u'\u0651'], # ARABIC SHADDA
+chr(0x95) : [u'\u0023'], # * #
+chr(0x83) : [u'\u0024'], # * $
+chr(0x96) : [u'\u066A'], # * %
+chr(0x87) : [u'\u0026'], # * &
+chr(0x9C) : [u'\u00D7'], # * ARABIC cross (times) x
+chr(0x97) : [u'\u066C'], # Arabic Thoushads Seperator
+#chr(0xBA) : [u'\u0670'], # ARABIC LETTER SUPERSCRIPT ALEF
+chr(0xAD) : [u'\u0654'], # ARABIC HAMZA ABOVE
+chr(0xA1) : [u'\u066B'], # ARABIC DECIMAL SEPARATOR
+chr(0x91) : [u'\u0028'], # * RIGHT PARENTHESIS
+chr(0x90) : [u'\u0029'], # * LEFT PARENTHESIS
+#chr(0xBF) : [u'\u0629'], # ARABIC LETTER TEH MARBUTAH
+chr(0x8E) : [u'\u00BB'], # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+chr(0xDD) : [u'\u0637'], # ARABIC LETTER TAH, final-isolated form
+chr(0xDE) : [u'\u0638'], # ARABIC LETTER ZAH, final-isolated form
+chr(0x8F) : [u'\u00AB'], # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+chr(0xAE) : [u'\u0652'], # ARABIC SUKUN
+chr(0x9F) : [u'\u002D'], # * -
+chr(0xA2) : [u'\u002E'], # * FULL STOP
+#chr(0xA1) : [u'\u002F'], # * /
+chr(0x82) : [u'\u002A'], # * *
+chr(0x86) : [u'\u007E'], # * ~
+chr(0xA5) : [u'\u003A'], # * COLON
+chr(0xA6) : [u'\u061B'], # ARABIC SEMICOLON
+chr(0x9A) : [u'\u003E'], # * GREATER-THAN SIGN
+chr(0x9E) : [u'\u002B'], # * +
+chr(0x99) : [u'\u003D'], # * =
+chr(0x98) : [u'\u003C'], # * LESS-THAN SIGN
+chr(0x81) : [u'\u0040'], # * @
+chr(0x92) : [u'\u005D'], # * [
+chr(0x9D) : [u'\u005C'], # * \
+chr(0x93) : [u'\u005B'], # * ]
+#chr(0xAE) : [u'\u005E'], # * ^
+#chr(0xD5) : [u'\u005F'], # * _
+chr(0xA8) : [u'\u0060'], # * `
+chr(0x8B) : [u'\u007D'], # * {
+chr(0xAF) : [u'\u007C'], # * |
+chr(0xA0) : [u'\u0020'], # * SPACE
+chr(0xA4) : [u'\u0021'], # * EXCLAMATION MARK
+chr(0x8C) : [u'\u007B'], # * }
+chr(0xDF) : [u'\u0638'], # ARABIC LETTER ZAH, initial-medial form
+chr(0xE0) : [u'\u0639'], # ARABIC LETTER AIN, isolated form
+chr(0xE1) : [u'\u0639'], # ARABIC LETTER AIN, final form
+chr(0xE2) : [u'\u0639'], # ARABIC LETTER AIN, medial form
+chr(0xE3) : [u'\u0639'], # ARABIC LETTER AIN, initial form
+chr(0xE4) : [u'\u063A'], # ARABIC LETTER GHAIN, isolated form
+chr(0xE5) : [u'\u063A'], # ARABIC LETTER GHAIN, final form
+chr(0xE6) : [u'\u063A'], # ARABIC LETTER GHAIN, medial form
+chr(0xE7) : [u'\u063A'], # ARABIC LETTER GHAIN, initial form
+chr(0xE8) : [u'\u0641'], # ARABIC LETTER FEH, final-isolated form
+chr(0xE9) : [u'\u0641'], # ARABIC LETTER FEH, initial-medial form
+chr(0xEA) : [u'\u0642'], # ARABIC LETTER QAF, final-isolated form
+chr(0xEB) : [u'\u0642'], # ARABIC LETTER QAF, initial-medial form
+chr(0xEC) : [u'\u06A9'], # ARABIC LETTER KEHEH, final-isolated form
+chr(0xED) : [u'\u06A9'], # ARABIC LETTER KEHEH, initial-medial form
+chr(0xEE) : [u'\u06AF'], # ARABIC LETTER GAF, final-isolated form
+chr(0xEF) : [u'\u06AF'], # ARABIC LETTER GAF, initial-medial form
+chr(0xF0) : [u'\u0644'], # ARABIC LETTER LAM, final-isolated form
+chr(0xF1) : [u'\u0644\u0627'], # ARABIC LIGATURE LAM WITH ALEF
+chr(0xF2) : [u'\u0644'], # ARABIC LETTER LAM, initial-medial form
+chr(0xF3) : [u'\u0645'], # ARABIC LETTER MEEM, final-isolated form
+chr(0xF4) : [u'\u0645'], # ARABIC LETTER MEEM, initial-medial form
+chr(0xF5) : [u'\u0646'], # ARABIC LETTER NOON, final-isolated form
+chr(0xF6) : [u'\u0646'], # ARABIC LETTER NOON, initial-medial form
+chr(0xF7) : [u'\u0648'], # ARABIC LETTER WAW
+chr(0xF8) : [u'\u0647'], # ARABIC LETTER HEH, final-isolated form
+chr(0xFB) : [u'\u0647'], # ARABIC LETTER HEH, medial form
+chr(0xF9) : [u'\u0647'], # ARABIC LETTER HEH, initial form
+chr(0xFE) : [u'\u06CC'], # ARABIC LETTER FARSI YEH, final form
+chr(0xFC) : [u'\u06CC'], # ARABIC LETTER FARSI YEH, isolated form
+chr(0xFD) : [u'\u06CC'] # ARABIC LETTER FARSI YEH, initial-medial form
+}
+
+
+def dk_is_numeric(ch):
+ if ((ch in dk_numerical) or
+ ((ch >= chr(0xB0)) and (ch <= chr(0xB9))) ):
+ return 1
+ return 0
+
+def dk_can_join_left(ch):
+ if ((ch in dk_bidi_joiners_initial) or
+ (ch in dk_bidi_joiners_medial) or
+ (ch in dk_bidi_joiners_final) or
+ (ch in dk_bidi_joiners_isolated) or
+ (ch in dk_bidi_joiners_initial_medial) or
+ (ch in dk_bidi_joiners_final_isolated)):
+ return 1
+ return 0
+
+def dk_can_join_right(ch):
+ if (dk_can_join_left(ch) or
+ (ch in dk_right_joiners_final) or
+ (ch in dk_right_joiners_isolated) or
+ (ch in dk_right_joiners_final_isolated)):
+ return 1
+ return 0
+
+def dk_joining_left(ch):
+ if ((ch in dk_bidi_joiners_initial) or
+ (ch in dk_bidi_joiners_medial) or
+ (ch in dk_bidi_joiners_initial_medial)):
+ return 1
+ return 0
+
+
+def dk_joining_right(ch):
+ if ((ch in dk_right_joiners_final) or
+ (ch in dk_bidi_joiners_medial) or
+ (ch in dk_bidi_joiners_final)):
+ return 1
+ return 0
+
+def dk_not_right_joined(ch):
+ if ((ch in dk_bidi_joiners_initial) or
+ (ch in dk_right_joiners_isolated) or
+ (ch in dk_bidi_joiners_isolated)):
+ return 1
+ return 0
+
+def dk_adjust_shaping(text, i):
+ current = text[i]
+ u = u''
+ try:
+ u = table_DK_UN[current][0]
+ except KeyError:
+ print 'ERROR: unmapped character'
+ return u''
+
+ #if you don't want shaping remove the following comment
+ #return u
+
+ if ((current in dk_vowels) or (dk_is_numeric(current))):
+ return u
+
+ #find next non-vowel character on the left
+ text_len = len(text)
+ next_index = i+1
+ while ((next_index < text_len) and (text[next_index] in dk_vowels)):
+ next_index += 1
+
+ if (next_index == text_len):
+ next = ''
+ else:
+ next = text[next_index]
+
+ # if current letter is joining from left but next letter is or can not joining
+ if (dk_joining_left(current)):
+ if (not dk_can_join_right(next)):
+ u += u'\u200D' #ZWJ
+ elif (dk_not_right_joined(next)):
+ u += u'\u200D\u200C' #ZWJ+ZWNJ
+ # if current letter can join but next letter is joining from right
+ elif (dk_can_join_left(current)):
+ if (dk_joining_right(next)):
+ u += u'\u200C\u200D' #ZWNJ+ZWJ
+ elif (dk_can_join_right(next)):
+ u += u'\u200C' #ZWNJ
+ return u
+
+def dk_adjust_number(text):
+ result = u''
+ i = len(text)-1
+ while (i >= 0):
+ result += dk_adjust_shaping(text, i)
+ i -= 1
+ return result
+
+
+def map_dk_unicode(text):
+ mapped_text = u''
+
+ i = 0
+ while (i < len(text)):
+ if (dk_is_numeric(text[i])):
+ next_index = i
+ while ((next_index+1 < len(text)) and
+ (dk_is_numeric(text[next_index+1]))):
+ next_index += 1
+ mapped_text += dk_adjust_number(text[i:next_index+1])
+ i = next_index+1
+ continue
+
+ mapped_text += dk_adjust_shaping(text, i)
+ i += 1
+ return mapped_text
+
+def dk_next_part(line, i):
+ j = i
+ language_flag = (line[j]<chr(0x80))
+ while ((j<line_len) and ((line[j]<chr(0x80)) == language_flag) ):
+ j += 1
+ return j
+
+
+def is_english_letter_number(c):
+ if ((c >= 'a') and (c <= 'z')) or ((c >= 'A') and (c <= 'Z')):
+ return 1
+ if (c >= '0') and (c <= '9'):
+ return 1
+ return 0
+
+def is_inbetween_chars(c):
+ if ((c == '.') or (c == '-') or (c == '_') or (c == '/')):
+ return 1
+ return 0
+
+def needs_english_wrapper(part):
+ part_len = len(part)
+ i = -1
+ while (i+1 < part_len):
+ i += 1
+ if (is_english_letter_number(part[i]) == 1):
+ continue
+ if (i>0) and (is_inbetween_chars(part[i]) == 1) and \
+ (part_len > i+1) and (is_english_letter_number(part[i+1]) == 1):
+ continue
+ return 1
+ return 0
+
+# Main body of the program
+if len(sys.argv) <= 2:
+ print 'usage: python dkun in_filename out_filename'
+ exit(0)
+
+filename = sys.argv[1]
+outfile = sys.argv[2]
+
+try:
+ f = open(filename, 'r')
+except IOError:
+ print "Can not open the input file: " + filename
+ exit(0)
+
+try:
+ of = codecs.open(outfile, encoding='utf-8', mode='w')
+except IOError:
+ print "Can not open the output file: " + outfile
+ exit(0)
+
+line_number = 0
+for line in f:
+ line_number += 1
+ output_line = u''
+ line_len = len(line)
+
+ put_end_of_line = 0
+ if ((line_len > 0) and (line[line_len-1] == '\n')):
+ put_end_of_line = 1
+ line_len = line_len - 1
+ if ((line_len > 0) and (line[line_len-1] == '\r')):
+ line_len = line_len - 1
+
+ i = 0
+
+ while (i<line_len):
+ next_part_index = dk_next_part(line, i)
+ next_part = line[i:next_part_index]
+ next_part_latin = (line[i]<chr(0x80))
+
+ if next_part_latin:
+ next_part = next_part[::-1]
+ output_line += next_part.encode( 'utf-8' )
+ else:
+ output_line += map_dk_unicode(next_part)
+ i = next_part_index
+ # end of while
+
+ if (put_end_of_line == 1):
+ output_line += u'\u000a'
+
+ # write the processed line
+ of.write(output_line)
+ # end of line processing
+# end of file processing
+
+of.close()
+f.close()
Property changes on: trunk/Master/texmf-dist/doc/xelatex/xepersian/dkun-0.4.py
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/xelatex/xepersian/ftxe-0.12.py
===================================================================
--- trunk/Master/texmf-dist/doc/xelatex/xepersian/ftxe-0.12.py (rev 0)
+++ trunk/Master/texmf-dist/doc/xelatex/xepersian/ftxe-0.12.py 2020-05-16 21:33:48 UTC (rev 55165)
@@ -0,0 +1,1045 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses>
+
+##################################################
+# Author: Mostafa Vahedi #
+# Date: 19 August 2011 #
+# Version: 0-12 #
+# Application: FarsiTeX to XePersian converter #
+##################################################
+
+import codecs
+
+import sys
+import os
+
+ft_numerical = [
+chr(0xB9), # Arabic Thoushads Seperator
+chr(0xBC) # ARABIC DECIMAL SEPARATOR
+]
+
+
+ft_vowels = [
+chr(0xB0), # ARABIC FATHA
+chr(0xB1), # ARABIC KASRA
+chr(0xB2), # ARABIC DAMMA
+chr(0xB3), # ARABIC FATHATAN
+chr(0xB4), # ARABIC SHADDA
+chr(0xBA), # ARABIC LETTER SUPERSCRIPT ALEF
+chr(0xBB), # ARABIC HAMZA ABOVE
+chr(0xC4) # ARABIC SUKUN
+]
+
+ft_non_joiners = [
+chr(0x8F) # ARABIC LETTER HAMZA
+]
+
+ft_bidi_joiners_initial = [
+chr(0xE4), # ARABIC LETTER AIN, initial form
+chr(0xE8), # ARABIC LETTER GHAIN, initial form
+chr(0xFB) # ARABIC LETTER HEH, initial form
+]
+
+ft_bidi_joiners_medial = [
+chr(0xE3), # ARABIC LETTER AIN, medial form
+chr(0xE7), # ARABIC LETTER GHAIN, medial form
+chr(0xFA) # ARABIC LETTER HEH, medial form
+]
+
+ft_bidi_joiners_final = [
+chr(0xE2), # ARABIC LETTER AIN, final form
+chr(0xE6), # ARABIC LETTER GHAIN, final form
+chr(0xFC) # ARABIC LETTER FARSI YEH, final form
+]
+
+ft_bidi_joiners_isolated = [
+chr(0xE1), # ARABIC LETTER AIN, isolated form
+chr(0xE5), # ARABIC LETTER GHAIN, isolated form
+chr(0xFD) # ARABIC LETTER FARSI YEH, isolated form
+]
+
+ft_bidi_joiners_initial_medial = [
+chr(0x8B), # ARABIC TATWEEL
+chr(0x8E), # ARABIC LETTER YEH WITH HAMZA ABOVE, initial-medial form
+chr(0x93), # ARABIC LETTER BEH, initial-medial form
+chr(0x95), # ARABIC LETTER PEH, initial-medial form
+chr(0x97), # ARABIC LETTER TEH, initial-medial form
+chr(0x99), # ARABIC LETTER THEH, initial-medial form
+chr(0x9B), # ARABIC LETTER JEEM, initial-medial form
+chr(0x9D), # ARABIC LETTER TCHEH, initial-medial form
+chr(0x9F), # ARABIC LETTER HAH, initial-medial form
+chr(0xA1), # ARABIC LETTER KHAH, initial-medial form
+chr(0xA8), # ARABIC LETTER SEEN, initial-medial form
+chr(0xAA), # ARABIC LETTER SHEEN, initial-medial form
+chr(0xAC), # ARABIC LETTER SAD, initial-medial form
+chr(0xAE), # ARABIC LETTER DAD, initial-medial form
+chr(0xAF), # ARABIC LETTER TAH, initial-medial form
+chr(0xE0), # ARABIC LETTER ZAH, initial-medial form
+chr(0xEA), # ARABIC LETTER FEH, initial-medial form
+chr(0xEC), # ARABIC LETTER QAF, initial-medial form
+chr(0xEE), # ARABIC LETTER KEHEH, initial-medial form
+chr(0xF0), # ARABIC LETTER GAF, initial-medial form
+chr(0xF3), # ARABIC LETTER LAM, initial-medial form
+chr(0xF5), # ARABIC LETTER MEEM, initial-medial form
+chr(0xF7), # ARABIC LETTER NOON, initial-medial form
+chr(0xFE) # ARABIC LETTER FARSI YEH, initial-medial form
+]
+
+ft_bidi_joiners_final_isolated = [
+chr(0x92), # ARABIC LETTER BEH, final-isolated form
+chr(0x94), # ARABIC LETTER PEH, final-isolated form
+chr(0x96), # ARABIC LETTER TEH, final-isolated form
+chr(0x98), # ARABIC LETTER THEH, final-isolated form
+chr(0x9A), # ARABIC LETTER JEEM, final-isolated form
+chr(0x9C), # ARABIC LETTER TCHEH, final-isolated form
+chr(0x9E), # ARABIC LETTER HAH, final-isolated form
+chr(0xA0), # ARABIC LETTER KHAH, final-isolated form
+chr(0xA7), # ARABIC LETTER SEEN, final-isolated form
+chr(0xA9), # ARABIC LETTER SHEEN, final-isolated form
+chr(0xAB), # ARABIC LETTER SAD, final-isolated form
+chr(0xAD), # ARABIC LETTER DAD, final-isolated form
+chr(0xC1), # ARABIC LETTER TAH, final-isolated form
+chr(0xC2), # ARABIC LETTER ZAH, final-isolated form
+chr(0xE9), # ARABIC LETTER FEH, final-isolated form
+chr(0xEB), # ARABIC LETTER QAF, final-isolated form
+chr(0xED), # ARABIC LETTER KEHEH, final-isolated form
+chr(0xEF), # ARABIC LETTER GAF, final-isolated form
+chr(0xF1), # ARABIC LETTER LAM, final-isolated form
+chr(0xF4), # ARABIC LETTER MEEM, final-isolated form
+chr(0xF6), # ARABIC LETTER NOON, final-isolated form
+chr(0xF9) # ARABIC LETTER HEH, final-isolated form
+]
+
+ft_right_joiners_final = [
+chr(0x91) # ARABIC LETTER ALEF, final form
+]
+
+ft_right_joiners_isolated = [
+chr(0x8D), # ARABIC LETTER ALEF WITH MADDA ABOVE, isolated form
+chr(0x90) # ARABIC LETTER ALEF, isolated form
+]
+
+ft_right_joiners_final_isolated = [
+chr(0xA2), # ARABIC LETTER DAL
+chr(0xA3), # ARABIC LETTER THAL
+chr(0xA4), # ARABIC LETTER REH
+chr(0xA5), # ARABIC LETTER ZAIN
+chr(0xA6), # ARABIC LETTER JEH
+chr(0xBF), # ARABIC LETTER TEH MARBUTAH
+chr(0xF2), # ARABIC LIGATURE LAM WITH ALEF
+chr(0xF8) # ARABIC LETTER WAW
+]
+
+
+table_FT_UN = {
+chr(0x80) : [u'\u06F0'], # EXTENDED ARABIC-INDIC DIGIT ZERO
+chr(0x81) : [u'\u06F1'], # EXTENDED ARABIC-INDIC DIGIT ONE
+chr(0x82) : [u'\u06F2'], # EXTENDED ARABIC-INDIC DIGIT TWO
+chr(0x83) : [u'\u06F3'], # EXTENDED ARABIC-INDIC DIGIT THREE
+chr(0x84) : [u'\u06F4'], # EXTENDED ARABIC-INDIC DIGIT FOUR
+chr(0x85) : [u'\u06F5'], # EXTENDED ARABIC-INDIC DIGIT FIVE
+chr(0x86) : [u'\u06F6'], # EXTENDED ARABIC-INDIC DIGIT SIX
+chr(0x87) : [u'\u06F7'], # EXTENDED ARABIC-INDIC DIGIT SEVEN
+chr(0x88) : [u'\u06F8'], # EXTENDED ARABIC-INDIC DIGIT EIGHT
+chr(0x89) : [u'\u06F9'], # EXTENDED ARABIC-INDIC DIGIT NINE
+chr(0x8A) : [u'\u060C'], # ARABIC COMMA
+chr(0x8B) : [u'\u0640'], # ARABIC TATWEEL
+chr(0x8C) : [u'\u061F'], # ARABIC QUESTION MARK
+chr(0x8D) : [u'\u0622'], # ARABIC LETTER ALEF WITH MADDA ABOVE, isolated form
+chr(0x8E) : [u'\u0626'], # ARABIC LETTER YEH WITH HAMZA ABOVE, initial-medial form
+chr(0x8F) : [u'\u0621'], # ARABIC LETTER HAMZA
+chr(0x90) : [u'\u0627'], # ARABIC LETTER ALEF, isolated form
+chr(0x91) : [u'\u0627'], # ARABIC LETTER ALEF, final form
+chr(0x92) : [u'\u0628'], # ARABIC LETTER BEH, final-isolated form
+chr(0x93) : [u'\u0628'], # ARABIC LETTER BEH, initial-medial form
+chr(0x94) : [u'\u067E'], # ARABIC LETTER PEH, final-isolated form
+chr(0x95) : [u'\u067E'], # ARABIC LETTER PEH, initial-medial form
+chr(0x96) : [u'\u062A'], # ARABIC LETTER TEH, final-isolated form
+chr(0x97) : [u'\u062A'], # ARABIC LETTER TEH, initial-medial form
+chr(0x98) : [u'\u062B'], # ARABIC LETTER THEH, final-isolated form
+chr(0x99) : [u'\u062B'], # ARABIC LETTER THEH, initial-medial form
+chr(0x9A) : [u'\u062C'], # ARABIC LETTER JEEM, final-isolated form
+chr(0x9B) : [u'\u062C'], # ARABIC LETTER JEEM, initial-medial form
+chr(0x9C) : [u'\u0686'], # ARABIC LETTER TCHEH, final-isolated form
+chr(0x9D) : [u'\u0686'], # ARABIC LETTER TCHEH, initial-medial form
+chr(0x9E) : [u'\u062D'], # ARABIC LETTER HAH, final-isolated form
+chr(0x9F) : [u'\u062D'], # ARABIC LETTER HAH, initial-medial form
+chr(0xA0) : [u'\u062E'], # ARABIC LETTER KHAH, final-isolated form
+chr(0xA1) : [u'\u062E'], # ARABIC LETTER KHAH, initial-medial form
+chr(0xA2) : [u'\u062F'], # ARABIC LETTER DAL
+chr(0xA3) : [u'\u0630'], # ARABIC LETTER THAL
+chr(0xA4) : [u'\u0631'], # ARABIC LETTER REH
+chr(0xA5) : [u'\u0632'], # ARABIC LETTER ZAIN
+chr(0xA6) : [u'\u0698'], # ARABIC LETTER JEH
+chr(0xA7) : [u'\u0633'], # ARABIC LETTER SEEN, final-isolated form
+chr(0xA8) : [u'\u0633'], # ARABIC LETTER SEEN, initial-medial form
+chr(0xA9) : [u'\u0634'], # ARABIC LETTER SHEEN, final-isolated form
+chr(0xAA) : [u'\u0634'], # ARABIC LETTER SHEEN, initial-medial form
+chr(0xAB) : [u'\u0635'], # ARABIC LETTER SAD, final-isolated form
+chr(0xAC) : [u'\u0635'], # ARABIC LETTER SAD, initial-medial form
+chr(0xAD) : [u'\u0636'], # ARABIC LETTER DAD, final-isolated form
+chr(0xAE) : [u'\u0636'], # ARABIC LETTER DAD, initial-medial form
+chr(0xAF) : [u'\u0637'], # ARABIC LETTER TAH, initial-medial form
+chr(0xB0) : [u'\u064E'], # ARABIC FATHA
+chr(0xB1) : [u'\u0650'], # ARABIC KASRA
+chr(0xB2) : [u'\u064F'], # ARABIC DAMMA
+chr(0xB3) : [u'\u064B'], # ARABIC FATHATAN
+chr(0xB4) : [u'\u0651'], # ARABIC SHADDA
+chr(0xB5) : [u'\u0023'], # * #
+chr(0xB6) : [u'\u0024'], # * $
+chr(0xB7) : [u'\u0025'], # * %
+chr(0xB8) : [u'\u0026'], # * &
+chr(0xB9) : [u'\u066C'], # Arabic Thoushads Seperator
+chr(0xBA) : [u'\u0670'], # ARABIC LETTER SUPERSCRIPT ALEF
+chr(0xBB) : [u'\u0654'], # ARABIC HAMZA ABOVE
+chr(0xBC) : [u'\u066B'], # ARABIC DECIMAL SEPARATOR
+chr(0xBD) : [u'\u0029'], # * RIGHT PARENTHESIS
+chr(0xBE) : [u'\u0028'], # * LEFT PARENTHESIS
+chr(0xBF) : [u'\u0629'], # ARABIC LETTER TEH MARBUTAH
+chr(0xC0) : [u'\u00BB'], # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+chr(0xC1) : [u'\u0637'], # ARABIC LETTER TAH, final-isolated form
+chr(0xC2) : [u'\u0638'], # ARABIC LETTER ZAH, final-isolated form
+chr(0xC3) : [u'\u00AB'], # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+chr(0xC4) : [u'\u0652'], # ARABIC SUKUN
+chr(0xC5) : [u'\u002D'], # * -
+chr(0xC6) : [u'\u002E'], # * FULL STOP
+chr(0xC7) : [u'\u002F'], # * /
+chr(0xC8) : [u'\u002A'], # * *
+chr(0xC9) : [u'\u007E'], # * ~
+chr(0xCA) : [u'\u003A'], # * COLON
+chr(0xCB) : [u'\u061B'], # ARABIC SEMICOLON
+chr(0xCC) : [u'\u003E'], # * GREATER-THAN SIGN
+chr(0xCD) : [u'\u002B'], # * +
+chr(0xCE) : [u'\u003D'], # * =
+chr(0xCF) : [u'\u003C'], # * LESS-THAN SIGN
+# chr(0xD0) : [u'\u0040'], # * @
+chr(0xD0) : [u''], # * @
+chr(0xD1) : [u'\u005D'], # * [
+chr(0xD2) : [u'\u005C'], # * \
+chr(0xD3) : [u'\u005B'], # * ]
+chr(0xD4) : [u'\u005E'], # * ^
+chr(0xD5) : [u'\u005F'], # * _
+chr(0xD6) : [u'\u0060'], # * `
+chr(0xD7) : [u'\u007D'], # * {
+chr(0xD8) : [u'\u007C'], # * |
+chr(0xDA) : [u'\u0020'], # * SPACE
+chr(0xDD) : [u'\u0021'], # * EXCLAMATION MARK
+chr(0xDE) : [u'\u007B'], # * }
+chr(0xE0) : [u'\u0638'], # ARABIC LETTER ZAH, initial-medial form
+chr(0xE1) : [u'\u0639'], # ARABIC LETTER AIN, isolated form
+chr(0xE2) : [u'\u0639'], # ARABIC LETTER AIN, final form
+chr(0xE3) : [u'\u0639'], # ARABIC LETTER AIN, medial form
+chr(0xE4) : [u'\u0639'], # ARABIC LETTER AIN, initial form
+chr(0xE5) : [u'\u063A'], # ARABIC LETTER GHAIN, isolated form
+chr(0xE6) : [u'\u063A'], # ARABIC LETTER GHAIN, final form
+chr(0xE7) : [u'\u063A'], # ARABIC LETTER GHAIN, medial form
+chr(0xE8) : [u'\u063A'], # ARABIC LETTER GHAIN, initial form
+chr(0xE9) : [u'\u0641'], # ARABIC LETTER FEH, final-isolated form
+chr(0xEA) : [u'\u0641'], # ARABIC LETTER FEH, initial-medial form
+chr(0xEB) : [u'\u0642'], # ARABIC LETTER QAF, final-isolated form
+chr(0xEC) : [u'\u0642'], # ARABIC LETTER QAF, initial-medial form
+chr(0xED) : [u'\u06A9'], # ARABIC LETTER KEHEH, final-isolated form
+chr(0xEE) : [u'\u06A9'], # ARABIC LETTER KEHEH, initial-medial form
+chr(0xEF) : [u'\u06AF'], # ARABIC LETTER GAF, final-isolated form
+chr(0xF0) : [u'\u06AF'], # ARABIC LETTER GAF, initial-medial form
+chr(0xF1) : [u'\u0644'], # ARABIC LETTER LAM, final-isolated form
+chr(0xF2) : [u'\u0644\u0627'], # ARABIC LIGATURE LAM WITH ALEF
+chr(0xF3) : [u'\u0644'], # ARABIC LETTER LAM, initial-medial form
+chr(0xF4) : [u'\u0645'], # ARABIC LETTER MEEM, final-isolated form
+chr(0xF5) : [u'\u0645'], # ARABIC LETTER MEEM, initial-medial form
+chr(0xF6) : [u'\u0646'], # ARABIC LETTER NOON, final-isolated form
+chr(0xF7) : [u'\u0646'], # ARABIC LETTER NOON, initial-medial form
+chr(0xF8) : [u'\u0648'], # ARABIC LETTER WAW
+chr(0xF9) : [u'\u0647'], # ARABIC LETTER HEH, final-isolated form
+chr(0xFA) : [u'\u0647'], # ARABIC LETTER HEH, medial form
+chr(0xFB) : [u'\u0647'], # ARABIC LETTER HEH, initial form
+chr(0xFC) : [u'\u06CC'], # ARABIC LETTER FARSI YEH, final form
+chr(0xFD) : [u'\u06CC'], # ARABIC LETTER FARSI YEH, isolated form
+chr(0xFE) : [u'\u06CC'] # ARABIC LETTER FARSI YEH, initial-medial form
+}
+
+F_PERCENT_SIGN = chr(0xB7)
+F_AT_SIGN = chr(0xD0)
+F_SLASH = chr(0xD2)
+F_SPACE = chr(0xDA)
+F_PRNT_OPEN = chr(0xDE)
+F_PRNT_CLOSE = chr(0xD7)
+
+# latex and farsitex commands whose first parameter does not need \lr{...}
+commands = [
+"begin", "end",
+"input", "include", "includeonly",
+"hspace", "vspace", "hspace*", "vspace*",
+"label", "ref", "cite", "bibitem",
+"bibliographystyle",
+"parbox",
+"newenvironment", "newtheorem",
+"persianmathdigitsfamily",
+"fontfamily", "fontseries", "fontshape",
+"rmdefault", "sfdefault", "ttdefault",
+"bfdefault", "itdefault", "sldefault", "scdefault",
+"pagenumbering", "pagestyle", "thispagestyle",
+"setcounter", "stepcounter", "setlength", "addtolength"
+]
+
+def ft_is_all_persian_space(next_part):
+ l = len(next_part)
+ i = 0
+ while (i < l):
+ if (next_part[i] != F_SPACE):
+ return 0
+ i += 1
+ return 1
+
+def ft_is_numeric(ch):
+ if ((ch in ft_numerical) or
+ ((ch >= chr(0x80)) and (ch <= chr(0x89))) ):
+ return 1
+ return 0
+
+def ft_can_join_left(ch):
+ if ((ch in ft_bidi_joiners_initial) or
+ (ch in ft_bidi_joiners_medial) or
+ (ch in ft_bidi_joiners_final) or
+ (ch in ft_bidi_joiners_isolated) or
+ (ch in ft_bidi_joiners_initial_medial) or
+ (ch in ft_bidi_joiners_final_isolated)):
+ return 1
+ return 0
+
+def ft_can_join_right(ch):
+ if (ft_can_join_left(ch) or
+ (ch in ft_right_joiners_final) or
+ (ch in ft_right_joiners_isolated) or
+ (ch in ft_right_joiners_final_isolated)):
+ return 1
+ return 0
+
+def ft_joining_left(ch):
+ if ((ch in ft_bidi_joiners_initial) or
+ (ch in ft_bidi_joiners_medial) or
+ (ch in ft_bidi_joiners_initial_medial)):
+ return 1
+ return 0
+
+
+def ft_joining_right(ch):
+ if ((ch in ft_right_joiners_final) or
+ (ch in ft_bidi_joiners_medial) or
+ (ch in ft_bidi_joiners_final)):
+ return 1
+ return 0
+
+def ft_not_right_joined(ch):
+ if ((ch in ft_bidi_joiners_initial) or
+ (ch in ft_right_joiners_isolated) or
+ (ch in ft_bidi_joiners_isolated)):
+ return 1
+ return 0
+
+def ft_adjust_shaping(text, i):
+ current = text[i]
+ u = u''
+ try:
+ u = table_FT_UN[current][0]
+ except KeyError:
+ return u''
+
+ #if you don't want shaping remove the following comment
+ #return u
+
+ if ((current in ft_vowels) or (ft_is_numeric(current))):
+ return u
+
+ #find next non-vowel character on the left
+ text_len = len(text)
+ next_index = i+1
+ while ((next_index < text_len) and (text[next_index] in ft_vowels)):
+ next_index += 1
+
+ if (next_index == text_len):
+ next = ''
+ else:
+ next = text[next_index]
+
+ # if current letter is joining from left but next letter is or can not joining
+ if (ft_joining_left(current)):
+ if (not ft_can_join_right(next)):
+ u += u'\u200D' #ZWJ
+ elif (ft_not_right_joined(next)):
+ u += u'\u200D\u200C' #ZWJ+ZWNJ
+ # if current letter can join but next letter is joining from right
+ elif (ft_can_join_left(current)):
+ if (ft_joining_right(next)):
+ u += u'\u200C\u200D' #ZWNJ+ZWJ
+ elif (ft_can_join_right(next)):
+ u += u'\u200C' #ZWNJ
+ return u
+
+def ft_adjust_number(text):
+ result = u''
+ i = len(text)-1
+ while (i >= 0):
+ result += ft_adjust_shaping(text, i)
+ i -= 1
+ return result
+
+
+def map_ft_unicode(text):
+ mapped_text = u''
+
+ i = 0
+ while (i < len(text)):
+ if (ft_is_numeric(text[i])):
+ next_index = i
+ while ((next_index+1 < len(text)) and
+ (ft_is_numeric(text[next_index+1]))):
+ next_index += 1
+ mapped_text += ft_adjust_number(text[i:next_index+1])
+ i = next_index+1
+ continue
+
+ mapped_text += ft_adjust_shaping(text, i)
+ i += 1
+ return mapped_text
+
+# Finds next token all of the same language
+def ft_next_part(line, i, line_len):
+ global global_state
+ global recursive
+ global filenames
+
+ j = i
+ language_flag = (line[j]<chr(0x80))
+ while ((j<line_len) and ((line[j]<chr(0x80)) == language_flag) ):
+ if ( (global_state == 0) and ( (line[j] == '%') or (line[j] == F_PERCENT_SIGN) ) and (line[j-1] != '\\') and (line[j-1] != F_SLASH) ):
+ global_state = 1
+ elif ((global_state == 0) and ((line[j:j+16] == '\\begin{verbatim}') or (line[j:j+17] == '\\begin{verbatim*}'))):
+ global_state = 2
+ elif ((global_state == 2) and ((line[j:j+14] == '\\end{verbatim}') or (line[j:j+15] == '\\end{verbatim*}'))):
+ global_state = 0
+ elif ((global_state == 0) and (line[j:j+6] == '\\verb*')):
+ next_index = line.find(line[j+6], j+7)
+ j = next_index
+ elif ((global_state == 0) and (line[j:j+5] == '\\verb')):
+ next_index = line.find(line[j+5], j+6)
+ j = next_index
+ elif (recursive == 1):
+ if ((global_state == 0) and (line[j:j+9] == '\\include{')):
+ next_index = line.find('}', j+9)
+ filename = line[j+10:next_index-1] + '.ftx'
+ if (os.path.exists(filename) and not filename in filenames):
+ filenames.append(filename)
+ elif ((global_state == 0) and (line[j:j+7] == '\\input{')):
+ next_index = line.find('}', j+7)
+ filename = line[j+8:next_index-1] + '.ftx'
+ if (os.path.exists(filename) and not filename in filenames):
+ filenames.append(filename)
+ elif ((global_state == 0) and (line[j:j+9] == F_SLASH + 'include' + F_PRNT_OPEN)):
+ next_index = line.find(F_PRNT_CLOSE, j+9)
+ if (line[j+9]!=F_AT_SIGN):
+ filename = line[j+9:next_index] + '.ftx'
+ else:
+ filename = line[j+10:next_index-1] + '.ftx'
+ if (os.path.exists(filename) and not filename in filenames):
+ filenames.append(filename)
+ elif ((global_state == 0) and (line[j:j+7] == F_SLASH + 'input' + F_PRNT_OPEN)):
+ next_index = line.find(F_PRNT_CLOSE, j+7)
+ if (line[j+7]!=F_AT_SIGN):
+ filename = line[j+7:next_index] + '.ftx'
+ else:
+ filename = line[j+8:next_index-1] + '.ftx'
+ if (os.path.exists(filename) and not filename in filenames):
+ filenames.append(filename)
+ j += 1
+ return j
+
+###############################################
+# from here all functions are used to translate
+# farsitex commands to xepersian commands
+###############################################
+
+def read_size(input,index,last_index):
+ dim_index = -1
+ inch_index = input.find(u'in', index)
+ if (inch_index != -1):
+ dim_index = inch_index
+ mm_index = input.find(u'mm', index)
+ if (mm_index != -1):
+ if (dim_index == -1 or mm_index < index):
+ dim_index = mm_index
+ cm_index = input.find(u'cm', index)
+ if (cm_index != -1):
+ if (dim_index == -1 or cm_index < dim_index):
+ dim_index = cm_index
+ pt_index = input.find(u'pt', index)
+ if (pt_index != -1):
+ if (dim_index == -1 or pt_index < dim_index):
+ dim_index = pt_index
+ next_cmd = input.find(u'\\', index)
+ if (next_cmd == -1 and dim_index == -1):
+ print "Error in parsing \epsfxsize command at " + str(line_number) + "\n"
+ return -1
+ elif (next_cmd == -1 or (dim_index != -1 and next_cmd > dim_index)):
+ epsfxsize = input[index:dim_index+2]
+ return dim_index+2
+ elif (next_cmd != -1):
+ end_cmd = next_cmd+1
+ while (end_cmd < last_index and input[end_cmd].isalpha()):
+ end_cmd += 1
+ return end_cmd
+ else:
+ print "Error in parsing \epsfxsize command at " + str(line_number) + "\n"
+ return -1
+
+
+latex_options=[u'a4paper', u'a5paper', u'b5paper',
+ u'letterpaper', u'legalpaper', u'executivepaper',
+ u'landscape', u'10pt', u'11pt', u'12pt',
+ u'oneside', u'twoside', u'draft',
+ u'final', u'titlepage', u'notitlepage',
+ u'onecolumn', u'twocolumn',
+ u'leqno', u'fleqn']
+
+table_eq_packages = {
+u'poem' : u'persianpoem',
+u'fmakeidx' : u'makeidx',
+u'ffancyhe' : u'fancyhdr',
+u'fmultico' : u'multicol'
+}
+
+farsitex_ignore_options = [u'persian', u'farsi', u'epsf', u'fgraphix', u'lotusfont']
+
+xepersian_packages = u'\n\\usepackage{url}\n%\\usepackage{fancyvrb}\n\\usepackage{setspace}\\doublespacing\n\\usepackage{graphicx} \n\\usepackage{amssymb}\n'
+
+xepersian_preamble = u'\\settextfont[Scale=1.2]{XB Zar}\n\\setlatintextfont[Scale=1.1]{Times New Roman}\n\\setdigitfont{XB Zar}\n\\setpookfont{XB Kayhan Pook}\n\\setsayehfont{XB Kayhan Sayeh}\n\\defpersianfont\\lotoos[Scale=1.2]{XB Roya}\n\\defpersianfont\elmi[Scale=1.2]{XB Roya} \n\\def\\nazok{\\normalfont\\normalsize}\n\\let\\iranic\\it\n\\let\\siah\\bf\n\\let\\khabide\\sl\n\\def\\siahir{\\siah\\iranic} \n\\def\\siahkh{\\siah\\khabide}\n\\let\\tookhali\\pookfamily\n\\let\\sayedar\\sayehfamily\n\\def\\farsi{\\end{latin}}\n\\def\\english{\\begin{latin}}\n\\let\\farmbox\\mbox\n\\newcommand{\\ftxepmatrix}[1]{\\begin{pmatrix}#1\\end{pmatrix}}\n\\newcommand{\\ftxematrix}[1]{\\begin{matrix}#1\\end{matrix}} \n\\def\\FarsiTeX{\\lr{FarsiTeX}}\n\\def\\فارسیتک{\\rl{فارسیتک}}\n\\def\\InE{\\begingroup\\beginL\\latinfont}\n\\def\\EnE{\\endL\\endgroup} \n\\def\\InF{\\begingroup\\beginR\\persianfont}\n\\def\\EnF{\\endR\\endgroup}\n\\newcommand{\\IE}[1]{\\lr{#1}}\n\\newcommand{\\IP}[1]{\\rl{#1}} \n\\newcommand{\\IF}[1]{\\rl{#1}}\n\\def\\persiandash{\\rl{-}} \n\\def\\DeclareRobustBiCommand#1#2#3#4{\\DeclareRobustCommand#1{\\if at rl{}#4\\else{}#3\\fi}\\let#2=#1} \n\\catcode`\\﷼=3\n\\catcode`=11\n\\newcommand\\dotsectionseparator{\\SepMark{.}}\n\\newcommand\\dashsectionseparator{\\SepMark{-}}\n'
+
+thesis_preamble = u'\\university{\\lr{UniversityName}}\n\\city{\\lr{CityName}}\n\\latinuniversity{UniversityName}\n\\latincity{CityName} \n\\let\\englishtitle\\latintitle\n\\let\\englishauthor\\latinauthor\n\\let\\englishdegree\\latindegree\n\\let\\englishthesisdate\\latinthesisdate \n\\let\\englishsupervisor\\latinsupervisor\n\\let\\englishdepartment\\latindepartment\n\\let\\makeenglishtitle\\makelatintitle \n\\let\\englishkeywords\\latinkeywords\n\\newenvironment{englishabstract}{\\begin{latinabstract}}{\\end{latinabstract}}\n'
+
+def is_alpha_numeric_space(input):
+ input_len = len(input)
+ i = 0
+ while (i<input_len):
+ if (not (input[i].isalpha() or input[i].isdigit() or input[i]==u'.' or input[i]==u' ') ):
+ return 0
+ i+=1
+ return 1
+
+def is_alpha_numeric(input):
+ input_len = len(input)
+ i = 0
+ while (i<input_len):
+ if (not (input[i].isalpha() or input[i].isdigit() or input[i]=='.') ):
+ return 0
+ i+=1
+ return 1
+
+def find_eq_cmd(keyword):
+ try:
+ eq_cmd = table_eq_packages[keyword]
+ except KeyError:
+ eq_cmd = u''
+ return eq_cmd
+
+def convert_persian_to_english(num):
+ result = u''
+ num_len = len(num)
+ index = 0
+ while (index < num_len):
+ if (ord(num[index]) >= ord(u'۰') and ord(num[index]) <= ord(u'۹')):
+ result += unichr(ord(num[index]) - ord(u'۰') + ord(u'0'))
+ else:
+ result += num[index]
+ index += 1
+ return result
+
+def generate_farsitex_cmds_file(helper_filename,preamble):
+ try:
+ of = codecs.open(helper_filename, encoding='utf-8', mode='w')
+ except IOError:
+ print "Can not open the output file: " + helper_filename
+ exit(0)
+ of.write(preamble)
+ of.close
+
+
+# \verb|| -> \item[\verb||] or \section{\verb||}
+# \kasre{} \alef{} ...
+def translate_cmds(output_line):
+ global last_epsfxsize
+ global last_epsfxsize_line
+ global last_epsfysize
+ global last_epsfysize_line
+ global state
+ global filename
+
+ result = u''
+ line_len = len(output_line)
+ index = 0
+ if (state == 1): #\begin{verbatim}
+ end_verbatim = output_line.find('\\end{verbatim}')
+ if (end_verbatim == -1):
+ return output_line
+ result += output_line[0:end_verbatim+14]
+ index = end_verbatim+14
+ state = 0
+ elif (state == 2): #\begin{verbatim*}
+ end_verbatim = output_line.find('\\end{verbatim*}')
+ if (end_verbatim == -1):
+ return output_line
+ result += output_line[0:end_verbatim+15]
+ index = end_verbatim+15
+ state = 0
+ elif (output_line[0:14] == "\\documentstyle"):
+ result += u'\\documentclass'
+ #process options
+ last_index = output_line.find(u']')
+ index = 15
+ first_option = 1
+ preamble = xepersian_preamble
+ packages = xepersian_packages
+ xe_document_class = u''
+ while (index < last_index):
+ next_comma = output_line.find(u',',index,last_index)
+ if (next_comma == -1):
+ next_comma = last_index
+ first_of_option = index
+ while (output_line[first_of_option] == u' '):
+ first_of_option += 1
+ end_of_option = next_comma
+ while (output_line[end_of_option-1] == u' '):
+ end_of_option -= 1
+ option = output_line[first_of_option:end_of_option]
+ index = next_comma+1
+ eq_cmd = find_eq_cmd(option)
+ if (eq_cmd != u''):
+ packages += u'\\usepackage{' + eq_cmd + u'}\n'
+ continue
+ elif (option in farsitex_ignore_options):
+ continue
+ elif (option == u'sharifth'):
+ xe_document_class = u'xepersian-thesis'
+ preamble += thesis_preamble
+ continue
+ elif (not option in latex_options):
+ packages += u'\\usepackage{' + option + u'}\n'
+ continue
+
+ if (first_option):
+ result += u'['
+ else:
+ result += u','
+ result += option
+ first_option = 0
+ #end while
+ if (not first_option):
+ result += u']'
+ # process document style into document class
+ index = output_line.find(u'}',last_index)
+ document_class = output_line[last_index+2:index]
+ if (xe_document_class != u''):
+ result += u'{' + xe_document_class + u'}'
+ elif (document_class == u'oldarticle'):
+ result += u'{article}'
+ elif (document_class == u'oldbook'):
+ result += u'{book}'
+ elif (document_class == u'oldreport'):
+ result += u'{report}'
+ else:
+ result += u'{' + document_class + u'}'
+ # I assume that nothing important is after
+ # \documentstyle[...]{...}, otherwise it may conflict
+ # with our preamble
+ if (index != -1):
+ result += output_line[index+1:]
+ result += packages + u'\\usepackage{xepersian}\n'
+ helper_filename = filename + '_farsitex_cmds_xepersian.tex'
+ generate_farsitex_cmds_file(helper_filename,preamble)
+ result += '\\input{' + helper_filename + '}\n'
+ return result
+ #end elif "documentstyle"
+
+ while (index < line_len):
+ next_index = output_line.find(u'\\', index)
+ comment_index = output_line.find(u'%', index)
+ if (next_index == -1):
+ result += output_line[index:]
+ break
+ elif (state == 1):
+ if (output_line[next_index:next_index+14] == u'\\end{verbatim}'):
+ result += output_line[index:next_index+14]
+ index = next_index+14
+ state = 0
+ else:
+ result += output_line[index:next_index+1]
+ index = next_index+1
+ elif (state == 2):
+ if (output_line[next_index:next_index+15] == u'\\end{verbatim*}'):
+ result += output_line[index:next_index+15]
+ index = next_index+15
+ state = 0
+ else:
+ result += output_line[index:next_index+1]
+ index = next_index+1
+ elif (comment_index != -1 and comment_index < next_index):
+ result += output_line[index:]
+ break
+ elif (output_line[next_index:next_index+14] == u"\\input{amssym}"):
+ result += u'\\usepackage{amssymb}'
+ index = next_index+14
+ elif (output_line[next_index:next_index+12] == u"\\input{epsf}"):
+ index = next_index+12
+ elif (output_line[next_index:next_index+15] == u"\\includeepspdf{"):
+ result += u'\\includegraphics{'
+ index = next_index+15
+ elif (output_line[next_index:next_index+16] == u"\\begin{verbatim}"):
+ result += output_line[index:next_index+16]
+ index = next_index+16
+ state = 1
+ elif (output_line[next_index:next_index+17] == u"\\begin{verbatim*}"):
+ result += output_line[index:next_index+17]
+ index = next_index+17
+ state = 2
+ elif (output_line[next_index:next_index+26] == u'\\setlength{\\headrulewidth}'):
+ end_cmd = output_line.find('}', next_index+26)
+ result += u'\\renewcommand{\\headrulewidth}' + output_line[next_index+26:end_cmd+1]
+ index = end_cmd+1
+ elif (output_line[next_index:next_index+26] == u'\\setlength{\\footrulewidth}'):
+ end_cmd = output_line.find('}', next_index+26)
+ result += u'\\renewcommand{\\footrulewidth}' + output_line[next_index+26:end_cmd+1]
+ index = end_cmd+1
+ elif (output_line[next_index:next_index+10] == u"\\epsffile{"):
+ result += output_line[index:next_index]
+ result += u'\\includegraphics'
+ size_options = u''
+ if (line_number - last_epsfxsize_line <= 3):
+ size_options = u'width=' + last_epsfxsize
+ if (line_number - last_epsfysize_line <= 3):
+ if (size_options != u''):
+ size_options += u','
+ size_options += u'height=' + last_epsfysize
+ if (size_options != u''):
+ result += u'[' + size_options + u']'
+ end_prn = output_line.find(u'.eps}', next_index+9)
+
+ if (end_prn != -1):
+ result += output_line[next_index+9:end_prn] + u'}'
+ index = end_prn+5
+ else:
+ end_prn = output_line.find(u'.ps}', next_index+9)
+ if (end_prn != -1):
+ result += output_line[next_index+9:end_prn] + u'}'
+ index = end_prn+4
+ else:
+ end_prn = output_line.find(u'}', next_index+9)
+ result += output_line[next_index+9:end_prn+1]
+ index = end_prn+1
+ # I assume all the parameter of \epsfxsize comes in one line
+ elif (output_line[next_index:next_index+11] == u"\\epsfxsize="):
+ end_size = read_size(output_line, next_index+11, line_len)
+ if (end_size != -1):
+ last_epsfxsize = output_line[next_index+11:end_size]
+ index = end_size
+ else:
+ index = next_index+11
+ last_epsfxsize_line = line_number
+ # I assume all the parameter of \epsfysize comes in one line
+ elif (output_line[next_index:next_index+11] == u"\\epsfysize="):
+ end_size = read_size(output_line, next_index+11, line_len)
+ if (end_size != -1):
+ last_epsfysize = output_line[next_index+11:end_size]
+ index = end_size
+ else:
+ index = next_index+11
+ last_epsfysize_line = line_number
+ elif (output_line[next_index:next_index+10] == u"\\LR{\\verb*"):
+ end_verb = output_line.find(output_line[next_index+10], next_index+11)
+ verb_param = output_line[next_index+11:end_verb]
+ if (is_alpha_numeric(verb_param)):
+ result += output_line[index:next_index]
+ result += u'\\lr{\\tt{}' + verb_param
+ else:
+ result += output_line[index:end_verb+1]
+ index = end_verb+1
+ elif (output_line[next_index:next_index+9] == u"\\LR{\\verb"):
+ end_verb = output_line.find(output_line[next_index+9], next_index+10)
+ verb_param = output_line[next_index+10:end_verb]
+ if (is_alpha_numeric_space(verb_param)):
+ result += output_line[index:next_index]
+ result += u'\\lr{\\tt{}' + verb_param
+ else:
+ result += output_line[index:end_verb+1]
+ index = end_verb+1
+ elif (output_line[next_index:next_index+6] == u"\\verb*"):
+ end_verb = output_line.find(output_line[next_index+6], next_index+7)
+ result += output_line[index:end_verb+1]
+ index = end_verb+1
+ elif (output_line[next_index:next_index+5] == u"\\verb"):
+ end_verb = output_line.find(output_line[next_index+5], next_index+6)
+ result += output_line[index:end_verb+1]
+ index = end_verb+1
+ elif (output_line[next_index:next_index+9] == u"\\pmatrix{"):
+ result += u'\\ftxepmatrix{'
+ index = next_index+9
+ elif (output_line[next_index:next_index+8] == u"\\matrix{"):
+ result += u'\\ftxematrix{'
+ index = next_index+8
+ elif (output_line[next_index:next_index+16] == u"\\begin{document}"):
+ result += u'\\begin{document}\n%\\VerbatimFootnotes'
+ index = next_index+16
+ elif (output_line[next_index:next_index+8] == u'\\label {'):
+ begin_param = next_index+8
+ end_param = output_line.find(u'}', begin_param)
+ param = convert_persian_to_english(output_line[begin_param:end_param])
+ result += output_line[index:begin_param-2]
+ result += u'{' + param + u'}'
+ index = end_param+1
+ elif (output_line[next_index:next_index+6] == u'\\ref {'):
+ begin_param = next_index+6
+ end_param = output_line.find(u'}', begin_param)
+ param = convert_persian_to_english(output_line[begin_param:end_param])
+ result += output_line[index:begin_param-2]
+ result += u'{' + param + u'}'
+ index = end_param+1
+ elif (output_line[next_index:next_index+7] == u'\\label{'):
+ begin_param = next_index+7
+ end_param = output_line.find(u'}', begin_param)
+ param = convert_persian_to_english(output_line[begin_param:end_param])
+ result += output_line[index:begin_param]
+ result += param + u'}'
+ index = end_param+1
+ elif (output_line[next_index:next_index+5] == u'\\ref{'):
+ begin_param = next_index+5
+ end_param = output_line.find(u'}', begin_param)
+ param = convert_persian_to_english(output_line[begin_param:end_param])
+ result += output_line[index:begin_param]
+ result += param + u'}'
+ index = end_param+1
+ elif (output_line[next_index:next_index+13] == u'\\multicolumn{'):
+ begin_param = next_index+13
+ end_param = output_line.find(u'}', begin_param)
+ param = convert_persian_to_english(output_line[begin_param:end_param])
+ result += output_line[index:begin_param]
+ result += param + u'}'
+ index = end_param+1
+ elif (output_line[next_index:next_index+12] == u'\\setcounter{'):
+ begin_num = output_line.find(u'{', next_index+12)
+ end_num = output_line.find(u'}', begin_num)
+ num = convert_persian_to_english(output_line[begin_num+1:end_num])
+ result += output_line[index:begin_num+1]
+ result += num + u'}'
+ index = end_num+1
+ elif (output_line[next_index:next_index+14] == u'\\addtocounter{'):
+ begin_num = output_line.find(u'{', next_index+14)
+ end_num = output_line.find(u'}', begin_num)
+ num = convert_persian_to_english(output_line[begin_num+1:end_num])
+ result += output_line[index:begin_num+1]
+ result += num + u'}'
+ index = end_num+1
+ else:
+ result += output_line[index:next_index+2]
+ index = next_index+2
+ #end while
+ return result
+
+###############################################
+# from here all functions are mainly used to
+# convert farsitex format to unicode
+###############################################
+
+def convert_file(f, of, convert_cmds):
+ global state
+ global line_number
+ global last_epsfysize_line
+ global last_epsfxsize_line
+ global last_epsfxsize
+ global last_epsfysize
+ global global_state
+
+ state = 0
+ line_number = 0
+ last_epsfysize_line = 0
+ last_epsfxsize_line = 0
+ last_epsfxsize = u''
+ last_epsfysize = u''
+
+ for line in f:
+ line_number += 1
+ print line_number,
+ output_line = u''
+ line_len = len(line)
+
+ # remove new-line characters from end of line
+ if (line_len>1 and line[line_len-1] == '\n'):
+ line_len-=1
+ if (line_len>1 and line[line_len-1] == '\r'):
+ line_len-=1
+
+ # check line-direction character
+ line_direction_rtl = (line[0] == '<')
+ if (line[0] != '>') and (line[0] != '<'):
+ print "FORMAT ERROR AT LINE: " + str(line_number)
+ exit(0)
+
+ i = 1
+
+ while (i<line_len):
+ next_part_index = ft_next_part(line, i, line_len)
+ next_part = line[i:next_part_index]
+ next_part_latin = (line[i]<chr(0x80))
+
+ # see if we should put \lr{...} for the current english expression
+ if (global_state == 0):
+ if line_direction_rtl and next_part_latin:
+ is_command_rtl = (next_part_latin and (i>1) and (line[i-1]==F_SLASH) )
+ is_parameter_rtl = (next_part_latin and (i>1) and (next_part_index<line_len) and (line[i-1]==F_AT_SIGN) and (line[next_part_index]==F_AT_SIGN) )
+ is_math_rtl = (next_part_latin and (line[i]=="$") and (line[next_part_index-1]=="$") )
+ is_verb_parameter = ( (line[i-6:i] == F_SLASH+"verb") and not isalpha(line[i]))
+ is_verb = (next_part_latin and (line[i:i+5]=='\\verb' or line[i:i+6]==' \\verb'))
+ is_english = (next_part_latin and (line[i:i+8]=='\\english'))
+
+ cmd_index = 0
+ while cmd_index < len(commands):
+ len_cmd = len(commands[cmd_index])+2
+ if ( (i > len_cmd) and (line[i-len_cmd:i] == F_SLASH+commands[cmd_index]+F_PRNT_OPEN) ):
+ break
+ elif ( (i > len_cmd+1) and (line[i-len_cmd-1:i] == F_SLASH+commands[cmd_index]+F_SPACE+F_PRNT_OPEN) ):
+ break
+ cmd_index += 1
+ is_commands_group = cmd_index < len(commands)
+ is_documentstyle_cmd = (line_len > 15) and (line[1:15] == F_SLASH+"documentstyle")
+
+ if next_part_latin:
+ if (global_state == 0):
+ # whether we should put a \lr{ command
+ if ( line_direction_rtl and not (is_command_rtl or is_parameter_rtl or is_math_rtl or is_commands_group or is_documentstyle_cmd or is_verb_parameter or is_verb or is_english) ):
+ output_line += u'\\lr{'
+ if ( line_direction_rtl and is_verb):
+ output_line += u'\\LR{'
+
+ # here is the main place that converting happens
+ output_line += next_part.encode( 'utf-8' )
+
+ if (global_state == 0):
+ # check whether we already used a \lr command: then end it
+ if ( line_direction_rtl and not (is_command_rtl or is_parameter_rtl or is_math_rtl or is_commands_group or is_documentstyle_cmd or is_verb_parameter or is_verb or is_english) ):
+ output_line += u'}'
+ if ( line_direction_rtl and is_verb):
+ output_line += u'}'
+ else:
+ if (global_state == 0):
+ # whether we should put a \rl{} command
+ if ( not line_direction_rtl and not ft_is_all_persian_space(next_part)):
+ output_line += u'\\rl{'
+
+ # here is the main place that converting happens
+ output_line += map_ft_unicode(next_part)
+
+ if (global_state == 0):
+ # check whether we already used a \rl command: then end it
+ if (not line_direction_rtl and not ft_is_all_persian_space(next_part)):
+ output_line += u'}'
+
+ i = next_part_index
+ # end of while
+
+ #if there was a % commenting then we can return to normal situation
+ if (global_state == 1):
+ global_state = 0
+
+ # convert some of the FarsiTeX commands to XePersian commands
+ # only if it is requested
+ if (convert_cmds):
+ result = translate_cmds(output_line)
+ else:
+ result = output_line
+ output_line = result + u'\n'
+ # write the processed line
+ of.write(output_line)
+ # end of line processing
+ # end of file processing
+
+def print_usage():
+ print 'usage: python ftxe-0-11 [-r] [-s] [-x] [-u] in_filename1 in_filename2'
+ print '-r: (DEFAULT) recursively consider files included in the given files'
+ print '-s: do not recursively consider files'
+ print '-x: (DEFAULT) insert xepersian related commands'
+ print '-u: only convert to unicode'
+
+###################################
+# Begin of main body of the program
+###################################
+
+# global variables
+line_number = 0
+last_epsfxsize = u''
+last_epsfxsize_line = 0
+last_epsfysize = u''
+last_epsfysize_line = 0
+state = 0
+global_state = 0
+recursive = 1
+convert_xepersian = 1
+filename = ''
+
+if len(sys.argv) <= 1:
+ print_usage()
+ exit(0)
+
+#find options
+options_index = 1
+while (options_index < len(sys.argv) and sys.argv[options_index][0]=='-'):
+ if (sys.argv[options_index]=='-s'):
+ recursive = 0
+ elif (sys.argv[options_index]=='-u'):
+ convert_xepersian = 0
+ options_index += 1
+
+filenames = []
+while (options_index < len(sys.argv)):
+ filenames.append(sys.argv[options_index])
+ options_index += 1
+
+if (len(filenames) == 0):
+ print 'error: no input filename is specified!'
+ print_usage()
+ exit(0)
+
+index = 0
+while (index < len(filenames)):
+ filename = filenames[index]
+ index += 1
+
+ outfile = ''
+ if (filename[-4:] != '.tex'):
+ outfile = filename[0:-3] + 'tex'
+ else:
+ outfile = filename + '.tex'
+
+ print '\n\nConverting "' + filename + '" into "' + outfile + '"'
+ try:
+ f = open(filename, 'r')
+ except IOError:
+ print "Can not open the input file: " + filename
+ exit(0)
+
+ try:
+ of = codecs.open(outfile, encoding='utf-8', mode='w')
+ except IOError:
+ print "Can not open the output file: " + outfile
+ exit(0)
+
+ convert_file(f, of, convert_xepersian)
+
+ of.close()
+ f.close()
Property changes on: trunk/Master/texmf-dist/doc/xelatex/xepersian/ftxe-0.12.py
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/xelatex/xepersian/img/ireland.jpg
===================================================================
(Binary files differ)
Index: trunk/Master/texmf-dist/doc/xelatex/xepersian/img/ireland.jpg
===================================================================
--- trunk/Master/texmf-dist/doc/xelatex/xepersian/img/ireland.jpg 2020-05-16 21:27:48 UTC (rev 55164)
+++ trunk/Master/texmf-dist/doc/xelatex/xepersian/img/ireland.jpg 2020-05-16 21:33:48 UTC (rev 55165)
Property changes on: trunk/Master/texmf-dist/doc/xelatex/xepersian/img/ireland.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/xelatex/xepersian/img/weather/clouds.jpg
===================================================================
(Binary files differ)
Index: trunk/Master/texmf-dist/doc/xelatex/xepersian/img/weather/clouds.jpg
===================================================================
--- trunk/Master/texmf-dist/doc/xelatex/xepersian/img/weather/clouds.jpg 2020-05-16 21:27:48 UTC (rev 55164)
+++ trunk/Master/texmf-dist/doc/xelatex/xepersian/img/weather/clouds.jpg 2020-05-16 21:33:48 UTC (rev 55165)
Property changes on: trunk/Master/texmf-dist/doc/xelatex/xepersian/img/weather/clouds.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/xelatex/xepersian/img/weather/rain.jpg
===================================================================
(Binary files differ)
Index: trunk/Master/texmf-dist/doc/xelatex/xepersian/img/weather/rain.jpg
===================================================================
--- trunk/Master/texmf-dist/doc/xelatex/xepersian/img/weather/rain.jpg 2020-05-16 21:27:48 UTC (rev 55164)
+++ trunk/Master/texmf-dist/doc/xelatex/xepersian/img/weather/rain.jpg 2020-05-16 21:33:48 UTC (rev 55165)
Property changes on: trunk/Master/texmf-dist/doc/xelatex/xepersian/img/weather/rain.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/xelatex/xepersian/img/weather/sun.jpg
===================================================================
(Binary files differ)
Index: trunk/Master/texmf-dist/doc/xelatex/xepersian/img/weather/sun.jpg
===================================================================
--- trunk/Master/texmf-dist/doc/xelatex/xepersian/img/weather/sun.jpg 2020-05-16 21:27:48 UTC (rev 55164)
+++ trunk/Master/texmf-dist/doc/xelatex/xepersian/img/weather/sun.jpg 2020-05-16 21:33:48 UTC (rev 55165)
Property changes on: trunk/Master/texmf-dist/doc/xelatex/xepersian/img/weather/sun.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/xelatex/xepersian/magazine-sample.tex
===================================================================
--- trunk/Master/texmf-dist/doc/xelatex/xepersian/magazine-sample.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/xelatex/xepersian/magazine-sample.tex 2020-05-16 21:33:48 UTC (rev 55165)
@@ -0,0 +1,172 @@
+\documentclass[12pt,twoside]{xepersian-magazine}
+\usepackage{graphicx}
+\usepackage{xltxtra}
+\usepackage{amsmath}
+\usepackage{xepersian}
+\settextfont[Scale=1]{XB Zar}
+\setlatintextfont[Scale=1]{Junicode}
+\setmathdigitfont{XB Zar}
+\pagestyle{fancy}
+\title{مجلهٔ زیپرشین}
+\author{وفا خلیقی}
+\edition{جلد اول}
+\customlogo{مجلهٔ زیپرشین}
+\customminilogo{مجلهٔ زیپرشین}
+\custommagazinename{مجلهٔ زیپرشین}
+\customwwwTxt{http://google.com}
+\begin{document}
+\begin{frontpage}
+\firstimage{img/ireland.jpg}{این زیرنویس تصویر اصلی در صفحهٔ اول است.}
+\firstarticle{این تیتر مقالهٔ اول است.}
+{خوب این قسمت کوچکی از مقالهٔ اول است که ما در حال نوشتن آن هستم. باید یک مقدار بنویسیم تا مقداری این قسمت پر شود تا بتوانیم چیز قشنگی داشته باشیم. دقت کنیم که بصورت انتخابی حتی میتوانیم زمان را هم درج کنیم که در سمت راست قرار میگیرد.}%
+{۱۲:۳۴}
+\secondarticle{این هم سر تیتر مقالهٔ دوم است.}%
+{این هم زیر تیتر مقالهٔ دوم است که آن را در اینجا مینویسیم.}%
+{خوب این قسمت کوچکی از مقالهٔ اول است که ما در حال نوشتن آن هستم. باید یک مقدار بنویسیم تا مقداری این قسمت پر شود تا بتوانیم چیز قشنگی داشته باشیم. دقت کنیم که بصورت انتخابی حتی میتوانیم زمان را هم درج کنیم که در سمت راست قرار میگیرد.}%
+{قسمت الف}%
+{۱۰:۲۳}
+
+\thirdarticle{این سرتیتر مقالهٔ سوم است.}%
+{این هم زیرتیتر مقالهٔ سوم است که ما آن را در اینجا قرار میدهیم.}%
+{خوب این قسمت کوچکی از مقالهٔ اول است که ما در حال نوشتن آن هستم. باید یک مقدار بنویسیم تا مقداری این قسمت پر شود تا بتوانیم چیز قشنگی داشته باشیم. دقت کنیم که بصورت انتخابی حتی میتوانیم زمان را هم درج کنیم که در سمت راست قرار میگیرد. و همانطور که میبینید من مطلبی برای گفتن ندارم فقط متن علکی مینویسم تا کمی صفحه را پر کرده باشم. اما در قسمتهای بعدی مقداری از سهراب سپهری خواهم نوشت.}%
+
+{قسمت ب}%
+{۱۰:۰۲}
+
+\begin{indexblock}{نمایه (فهرست مطالب) اصلی}
+\indexitem{۱- مقاله اول}{1}
+
+\indexitem{۲- مقاله دوم}{3}
+
+\indexitem{۳- مقاله سوم}{3}
+
+\indexitem{۴- مقاله چهارم}{5}
+\end{indexblock}
+
+\begin{weatherblock}{وضع آب و هوا}
+\weatheritem{img/weather/rain.jpg}{امروز}{13}{9}{}
+\weatheritem{img/weather/sun.jpg}{فردا}{15}{1}{}
+\weatheritem{img/weather/clouds.jpg}{جمعه}{12}{6}{}
+\end{weatherblock}
+
+\begin{authorblock}
+\textbf{ویرایشگران}
+
+وفا خلیقی، مهدی امیدعلی و مصطفی واحدی
+
+\texttt{me at somedomain.com\\[5pt]
+http://google.com}\\
+\end{authorblock}
+\end{frontpage}
+\newsection{قسمت الف}
+\begin{article}{2}
+{این تیتر این مقاله است.}
+{این هم زیرتیتر این مقاله هست.}
+{قسمت الف}
+{1}
+\authorandplace{نام نویسنده}{مکان}
+
+\noindent\timestamp{۸:۲۵}
+ويژگی اصلی که اين معماری را متمايز کرده و در دنيای اينترنت آنها در مقابل معماری قبلی شبكهها قرار داده است، امكان ايجاد ارتباط مستقيم بين كامپيوترهای مختلف بدون نياز به دخالت سرورهای قدرتمند در بين راه است. نام اين نوع معماری هم در واقع بر گرفته شده از همین ارتباط مستقیم بين گرهها است. در واقع در اين نوع شبكهها اثری از سرورها نيست و تمامی گرههای معمولی موجود در شبكه، بايد وظايفی را که قبلا بر عهدهی سرورها بود، خود انجام دهند. بنابراين در اين نوع معماری گرههای معمولی در ضمن اينکه از خدمات شبکه بهرهمند میشود بايد نقش خدمتگزار را هم ايفا کنند . در اين نوع شبکهها گرههای معمولی به كمك روشها و پروتكلهای توزيع شده، تمامی وظايف مسير يابی در شبكه، جستجوی منابع، امنيت شبكه و شناسايی هويت استفاده كنندهها و همچنين مقابله با حملات احتمالی مهاجمان را بر عهده دارند.
+\footnote{این یک زیرنویس فارسی است.}\LTRfootnote{This is an English footnote.}
+\begin{equation}
+(a+b)^3=a^3+3a^2b+3ab^2+b^3\label{eq-1}
+\end{equation}
+این معادلهٔ \eqref{eq-1} است.
+\columntitle{lines}{این را برای مهم یا نشان دادن حرفی مهم در این مجله انجام میدهیم.}
+
+ويژگی اصلی که اين معماری را متمايز کرده و در دنيای اينترنت آنها در مقابل معماری قبلی شبكهها قرار داده است، امكان ايجاد ارتباط مستقيم بين كامپيوترهای مختلف بدون نياز به دخالت سرورهای قدرتمند در بين راه است. نام اين نوع معماری هم در واقع بر گرفته شده از همین ارتباط مستقیم بين گرهها است. در واقع در اين نوع شبكهها اثری از سرورها نيست و تمامی گرههای معمولی موجود در شبكه، بايد وظايفی را که قبلا بر عهدهی سرورها بود، خود انجام دهند. بنابراين در اين نوع معماری گرههای معمولی در ضمن اينکه از خدمات شبکه بهرهمند میشود بايد نقش خدمتگزار را هم ايفا کنند . در اين نوع شبکهها گرههای معمولی به كمك روشها و پروتكلهای توزيع شده، تمامی وظايف مسير يابی در شبكه، جستجوی منابع، امنيت شبكه و شناسايی هويت استفاده كنندهها و همچنين مقابله با حملات احتمالی مهاجمان را بر عهده دارند.
+
+اما معماری همتابههمتا ويژگیهای ديگری نيز دارد که آن را هم برای فراهمکنندگان کاربردها و هم برای استفادهکنندگان جذابتر میکند. از آنجا که شبکههای همتابههمتا از همان زيرساختهای اينترنت استفاده میکنند ونيازی به راهاندازی سرورها ندارند، ساخت اين شبكهها بسيار ارزانتر از ايجاد زير ساختهای لازم برای راهاندازی شبكههای مشتری/خدمتگزار است. همچنين با زياد شدن تعداد کاربران چون درعمل تعداد گرههای ارائه کنندهی خدمات هم بالا میرود، نه تنها عملكرد شبكه افت پيدا نمیكند بلكه انتظار بهبود عملکرد نيز میرود. گذشته از اين موارد، مالكيت اين شبكهها به صورت اشتراكی بين تمام کاربران پخش شده و هيچ شخص يا شركتی نمیتواند سياستهای دلخواه خود را در اين نوع شبكهها اعمال کند.
+
+اماهيچ چيزی بی بها به دست نمیآید. نبود سرور مرکزی اگر چه ويژگیهای جذابی به شبکههای همتابههمتا میبخشد اما از طرف ديگر آنها را با دشواریهايی نيز روبهرو میکند. عدم وجود يك هماهنگ كننده مركزی در شبكه، انجام بسياری از امور و ارائه خدمات را دچار مشكل میکند. از يک طرف، تغيير و رفتوآمد زیاد کاربران از ويژگیهای ذاتی اين شبکهها است و از طرف ديگر در اين شبكهها، ديگر اين گرههای معمولی هستند كه عهدهدار تمامی وظايف هستند. به همين دلیل يکی از مشکلات اصلی فراروی اين شبكهها، مقابله با تغييرات لحظهای و فراهم آوردن ثبات در ارائه خدمات در بستری از بیثباتی است.
+\end{article}
+
+\articlesep
+
+\begin{article}{2}
+{این تیتر این مقاله است.}
+{این هم زیرتیتر این مقاله هست.}
+{قسمت الف}
+{1}
+\authorandplace{نام نویسنده}{مکان}
+
+\noindent\timestamp{08:25}
+ويژگی اصلی که اين معماری را متمايز کرده و در دنيای اينترنت آنها در مقابل معماری قبلی شبكهها قرار داده است، امكان ايجاد ارتباط مستقيم بين كامپيوترهای مختلف بدون نياز به دخالت سرورهای قدرتمند در بين راه است. نام اين نوع معماری هم در واقع بر گرفته شده از همین ارتباط مستقیم بين گرهها است. در واقع در اين نوع شبكهها اثری از سرورها نيست و تمامی گرههای معمولی موجود در شبكه، بايد وظايفی را که قبلا بر عهدهی سرورها بود، خود انجام دهند. بنابراين در اين نوع معماری گرههای معمولی در ضمن اينکه از خدمات شبکه بهرهمند میشود بايد نقش خدمتگزار را هم ايفا کنند . در اين نوع شبکهها گرههای معمولی به كمك روشها و پروتكلهای توزيع شده، تمامی وظايف مسير يابی در شبكه، جستجوی منابع، امنيت شبكه و شناسايی هويت استفاده كنندهها و همچنين مقابله با حملات احتمالی مهاجمان را بر عهده دارند.
+\LTRfootnote{This is an English footnote.}\footnote{این یک زیرنویس فارسی است.}
+اما معماری همتابههمتا ويژگیهای ديگری نيز دارد که آن را هم برای فراهمکنندگان کاربردها و هم برای استفادهکنندگان جذابتر میکند. از آنجا که شبکههای همتابههمتا از همان زيرساختهای اينترنت استفاده میکنند ونيازی به راهاندازی سرورها ندارند، ساخت اين شبكهها بسيار ارزانتر از ايجاد زير ساختهای لازم برای راهاندازی شبكههای مشتری/خدمتگزار است. همچنين با زياد شدن تعداد کاربران چون درعمل تعداد گرههای ارائه کنندهی خدمات هم بالا میرود، نه تنها عملكرد شبكه افت پيدا نمیكند بلكه انتظار بهبود عملکرد نيز میرود. گذشته از اين موارد، مالكيت اين شبكهها به صورت اشتراكی بين تمام کاربران پخش شده و هيچ شخص يا شركتی نمیتواند سياستهای دلخواه خود را در اين نوع شبكهها اعمال کند.
+
+اماهيچ چيزی بی بها به دست نمیآید. نبود سرور مرکزی اگر چه ويژگیهای جذابی به شبکههای همتابههمتا میبخشد اما از طرف ديگر آنها را با دشواریهايی نيز روبهرو میکند. عدم وجود يك هماهنگ كننده مركزی در شبكه، انجام بسياری از امور و ارائه خدمات را دچار مشكل میکند. از يک طرف، تغيير و رفتوآمد زیاد کاربران از ويژگیهای ذاتی اين شبکهها است و از طرف ديگر در اين شبكهها، ديگر اين گرههای معمولی هستند كه عهدهدار تمامی وظايف هستند. به همين دلیل يکی از مشکلات اصلی فراروی اين شبكهها، مقابله با تغييرات لحظهای و فراهم آوردن ثبات در ارائه خدمات در بستری از بیثباتی است.
+
+ويژگی اصلی که اين معماری را متمايز کرده و در دنيای اينترنت آنها در مقابل معماری قبلی شبكهها قرار داده است، امكان ايجاد ارتباط مستقيم بين كامپيوترهای مختلف بدون نياز به دخالت سرورهای قدرتمند در بين راه است. نام اين نوع معماری هم در واقع بر گرفته شده از همین ارتباط مستقیم بين گرهها است. در واقع در اين نوع شبكهها اثری از سرورها نيست و تمامی گرههای معمولی موجود در شبكه، بايد وظايفی را که قبلا بر عهدهی سرورها بود، خود انجام دهند. بنابراين در اين نوع معماری گرههای معمولی در ضمن اينکه از خدمات شبکه بهرهمند میشود بايد نقش خدمتگزار را هم ايفا کنند . در اين نوع شبکهها گرههای معمولی به كمك روشها و پروتكلهای توزيع شده، تمامی وظايف مسير يابی در شبكه، جستجوی منابع، امنيت شبكه و شناسايی هويت استفاده كنندهها و همچنين مقابله با حملات احتمالی مهاجمان را بر عهده دارند.
+
+اما معماری همتابههمتا ويژگیهای ديگری نيز دارد که آن را هم برای فراهمکنندگان کاربردها و هم برای استفادهکنندگان جذابتر میکند. از آنجا که شبکههای همتابههمتا از همان زيرساختهای اينترنت استفاده میکنند ونيازی به راهاندازی سرورها ندارند، ساخت اين شبكهها بسيار ارزانتر از ايجاد زير ساختهای لازم برای راهاندازی شبكههای مشتری/خدمتگزار است. همچنين با زياد شدن تعداد کاربران چون درعمل تعداد گرههای ارائه کنندهی خدمات هم بالا میرود، نه تنها عملكرد شبكه افت پيدا نمیكند بلكه انتظار بهبود عملکرد نيز میرود. گذشته از اين موارد، مالكيت اين شبكهها به صورت اشتراكی بين تمام کاربران پخش شده و هيچ شخص يا شركتی نمیتواند سياستهای دلخواه خود را در اين نوع شبكهها اعمال کند.
+
+اماهيچ چيزی بی بها به دست نمیآید. نبود سرور مرکزی اگر چه ويژگیهای جذابی به شبکههای همتابههمتا میبخشد اما از طرف ديگر آنها را با دشواریهايی نيز روبهرو میکند. عدم وجود يك هماهنگ كننده مركزی در شبكه، انجام بسياری از امور و ارائه خدمات را دچار مشكل میکند. از يک طرف، تغيير و رفتوآمد زیاد کاربران از ويژگیهای ذاتی اين شبکهها است و از طرف ديگر در اين شبكهها، ديگر اين گرههای معمولی هستند كه عهدهدار تمامی وظايف هستند. به همين دلیل يکی از مشکلات اصلی فراروی اين شبكهها، مقابله با تغييرات لحظهای و فراهم آوردن ثبات در ارائه خدمات در بستری از بیثباتی است.
+
+\expandedtitle{doublebox}{این هم مطلی است مهم یا چیزی که از خلاصهٔ این مقاله ما متوجه شدهایم و این برای ما و خوانندگان خیلی مهم است.}
+
+ويژگی اصلی که اين معماری را متمايز کرده و در دنيای اينترنت آنها در مقابل معماری قبلی شبكهها قرار داده است، امكان ايجاد ارتباط مستقيم بين كامپيوترهای مختلف بدون نياز به دخالت سرورهای قدرتمند در بين راه است. نام اين نوع معماری هم در واقع بر گرفته شده از همین ارتباط مستقیم بين گرهها است. در واقع در اين نوع شبكهها اثری از سرورها نيست و تمامی گرههای معمولی موجود در شبكه، بايد وظايفی را که قبلا بر عهدهی سرورها بود، خود انجام دهند. بنابراين در اين نوع معماری گرههای معمولی در ضمن اينکه از خدمات شبکه بهرهمند میشود بايد نقش خدمتگزار را هم ايفا کنند . در اين نوع شبکهها گرههای معمولی به كمك روشها و پروتكلهای توزيع شده، تمامی وظايف مسير يابی در شبكه، جستجوی منابع، امنيت شبكه و شناسايی هويت استفاده كنندهها و همچنين مقابله با حملات احتمالی مهاجمان را بر عهده دارند.
+
+اما معماری همتابههمتا ويژگیهای ديگری نيز دارد که آن را هم برای فراهمکنندگان کاربردها و هم برای استفادهکنندگان جذابتر میکند. از آنجا که شبکههای همتابههمتا از همان زيرساختهای اينترنت استفاده میکنند ونيازی به راهاندازی سرورها ندارند، ساخت اين شبكهها بسيار ارزانتر از ايجاد زير ساختهای لازم برای راهاندازی شبكههای مشتری/خدمتگزار است. همچنين با زياد شدن تعداد کاربران چون درعمل تعداد گرههای ارائه کنندهی خدمات هم بالا میرود، نه تنها عملكرد شبكه افت پيدا نمیكند بلكه انتظار بهبود عملکرد نيز میرود. گذشته از اين موارد، مالكيت اين شبكهها به صورت اشتراكی بين تمام کاربران پخش شده و هيچ شخص يا شركتی نمیتواند سياستهای دلخواه خود را در اين نوع شبكهها اعمال کند.
+
+اماهيچ چيزی بی بها به دست نمیآید. نبود سرور مرکزی اگر چه ويژگیهای جذابی به شبکههای همتابههمتا میبخشد اما از طرف ديگر آنها را با دشواریهايی نيز روبهرو میکند. عدم وجود يك هماهنگ كننده مركزی در شبكه، انجام بسياری از امور و ارائه خدمات را دچار مشكل میکند. از يک طرف، تغيير و رفتوآمد زیاد کاربران از ويژگیهای ذاتی اين شبکهها است و از طرف ديگر در اين شبكهها، ديگر اين گرههای معمولی هستند كه عهدهدار تمامی وظايف هستند. به همين دلیل يکی از مشکلات اصلی فراروی اين شبكهها، مقابله با تغييرات لحظهای و فراهم آوردن ثبات در ارائه خدمات در بستری از بیثباتی است.
+\end{article}
+
+\articlesep
+
+\newsection{قسمت ب}
+
+\begin{article}{2}
+{این یک تیتر کوتاه است.وفا خلیقی}
+{این هم مثل همیشه زیرتیتر است که ما آن را در اینجا قرار میدهیم.}
+{قسمت ب}
+{3}
+
+\authorandplace{نام نویسنده}{مکان}
+
+\noindent\timestamp{08:25} et ويژگی اصلی که اين معماری را متمايز کرده و در دنيای اينترنت آنها در مقابل معماری قبلی شبكهها قرار داده است، امكان ايجاد ارتباط مستقيم بين كامپيوترهای مختلف بدون نياز به دخالت سرورهای قدرتمند در بين راه است. نام اين نوع معماری هم در واقع بر گرفته شده از همین ارتباط مستقیم بين گرهها است. در واقع در اين نوع شبكهها اثری از سرورها نيست و تمامی گرههای معمولی موجود در شبكه، بايد وظايفی را که قبلا بر عهدهی سرورها بود، خود انجام دهند. بنابراين در اين نوع معماری گرههای معمولی در ضمن اينکه از خدمات شبکه بهرهمند میشود بايد نقش خدمتگزار را هم ايفا کنند . در اين نوع شبکهها گرههای معمولی به كمك روشها و پروتكلهای توزيع شده، تمامی وظايف مسير يابی در شبكه، جستجوی منابع، امنيت شبكه و شناسايی هويت استفاده كنندهها و همچنين مقابله با حملات احتمالی مهاجمان را بر عهده دارند.
+
+اما معماری همتابههمتا ويژگیهای ديگری نيز دارد که آن را هم برای فراهمکنندگان کاربردها و هم برای استفادهکنندگان جذابتر میکند. از آنجا که شبکههای همتابههمتا از همان زيرساختهای اينترنت استفاده میکنند ونيازی به راهاندازی سرورها ندارند، ساخت اين شبكهها بسيار ارزانتر از ايجاد زير ساختهای لازم برای راهاندازی شبكههای مشتری/خدمتگزار است. همچنين با زياد شدن تعداد کاربران چون درعمل تعداد گرههای ارائه کنندهی خدمات هم بالا میرود، نه تنها عملكرد شبكه افت پيدا نمیكند بلكه انتظار بهبود عملکرد نيز میرود. گذشته از اين موارد، مالكيت اين شبكهها به صورت اشتراكی بين تمام کاربران پخش شده و هيچ شخص يا شركتی نمیتواند سياستهای دلخواه خود را در اين نوع شبكهها اعمال کند.
+
+اماهيچ چيزی بی بها به دست نمیآید. نبود سرور مرکزی اگر چه ويژگیهای جذابی به شبکههای همتابههمتا میبخشد اما از طرف ديگر آنها را با دشواریهايی نيز روبهرو میکند. عدم وجود يك هماهنگ كننده مركزی در شبكه، انجام بسياری از امور و ارائه خدمات را دچار مشكل میکند. از يک طرف، تغيير و رفتوآمد زیاد کاربران از ويژگیهای ذاتی اين شبکهها است و از طرف ديگر در اين شبكهها، ديگر اين گرههای معمولی هستند كه عهدهدار تمامی وظايف هستند. به همين دلیل يکی از مشکلات اصلی فراروی اين شبكهها، مقابله با تغييرات لحظهای و فراهم آوردن ثبات در ارائه خدمات در بستری از بیثباتی است.
+
+ويژگی اصلی که اين معماری را متمايز کرده و در دنيای اينترنت آنها در مقابل معماری قبلی شبكهها قرار داده است، امكان ايجاد ارتباط مستقيم بين كامپيوترهای مختلف بدون نياز به دخالت سرورهای قدرتمند در بين راه است. نام اين نوع معماری هم در واقع بر گرفته شده از همین ارتباط مستقیم بين گرهها است. در واقع در اين نوع شبكهها اثری از سرورها نيست و تمامی گرههای معمولی موجود در شبكه، بايد وظايفی را که قبلا بر عهدهی سرورها بود، خود انجام دهند. بنابراين در اين نوع معماری گرههای معمولی در ضمن اينکه از خدمات شبکه بهرهمند میشود بايد نقش خدمتگزار را هم ايفا کنند . در اين نوع شبکهها گرههای معمولی به كمك روشها و پروتكلهای توزيع شده، تمامی وظايف مسير يابی در شبكه، جستجوی منابع، امنيت شبكه و شناسايی هويت استفاده كنندهها و همچنين مقابله با حملات احتمالی مهاجمان را بر عهده دارند.
+
+اما معماری همتابههمتا ويژگیهای ديگری نيز دارد که آن را هم برای فراهمکنندگان کاربردها و هم برای استفادهکنندگان جذابتر میکند. از آنجا که شبکههای همتابههمتا از همان زيرساختهای اينترنت استفاده میکنند ونيازی به راهاندازی سرورها ندارند، ساخت اين شبكهها بسيار ارزانتر از ايجاد زير ساختهای لازم برای راهاندازی شبكههای مشتری/خدمتگزار است. همچنين با زياد شدن تعداد کاربران چون درعمل تعداد گرههای ارائه کنندهی خدمات هم بالا میرود، نه تنها عملكرد شبكه افت پيدا نمیكند بلكه انتظار بهبود عملکرد نيز میرود. گذشته از اين موارد، مالكيت اين شبكهها به صورت اشتراكی بين تمام کاربران پخش شده و هيچ شخص يا شركتی نمیتواند سياستهای دلخواه خود را در اين نوع شبكهها اعمال کند.
+
+اماهيچ چيزی بی بها به دست نمیآید. نبود سرور مرکزی اگر چه ويژگیهای جذابی به شبکههای همتابههمتا میبخشد اما از طرف ديگر آنها را با دشواریهايی نيز روبهرو میکند. عدم وجود يك هماهنگ كننده مركزی در شبكه، انجام بسياری از امور و ارائه خدمات را دچار مشكل میکند. از يک طرف، تغيير و رفتوآمد زیاد کاربران از ويژگیهای ذاتی اين شبکهها است و از طرف ديگر در اين شبكهها، ديگر اين گرههای معمولی هستند كه عهدهدار تمامی وظايف هستند. به همين دلیل يکی از مشکلات اصلی فراروی اين شبكهها، مقابله با تغييرات لحظهای و فراهم آوردن ثبات در ارائه خدمات در بستری از بیثباتی است.
+
+\expandedtitle{lines}{این هم دوباره مطلب مهمی است که ما آن را از لابلای این مقاله برای خواننده درست کردهایم.}
+
+ويژگی اصلی که اين معماری را متمايز کرده و در دنيای اينترنت آنها در مقابل معماری قبلی شبكهها قرار داده است، امكان ايجاد ارتباط مستقيم بين كامپيوترهای مختلف بدون نياز به دخالت سرورهای قدرتمند در بين راه است. نام اين نوع معماری هم در واقع بر گرفته شده از همین ارتباط مستقیم بين گرهها است. در واقع در اين نوع شبكهها اثری از سرورها نيست و تمامی گرههای معمولی موجود در شبكه، بايد وظايفی را که قبلا بر عهدهی سرورها بود، خود انجام دهند. بنابراين در اين نوع معماری گرههای معمولی در ضمن اينکه از خدمات شبکه بهرهمند میشود بايد نقش خدمتگزار را هم ايفا کنند . در اين نوع شبکهها گرههای معمولی به كمك روشها و پروتكلهای توزيع شده، تمامی وظايف مسير يابی در شبكه، جستجوی منابع، امنيت شبكه و شناسايی هويت استفاده كنندهها و همچنين مقابله با حملات احتمالی مهاجمان را بر عهده دارند.
+
+اما معماری همتابههمتا ويژگیهای ديگری نيز دارد که آن را هم برای فراهمکنندگان کاربردها و هم برای استفادهکنندگان جذابتر میکند. از آنجا که شبکههای همتابههمتا از همان زيرساختهای اينترنت استفاده میکنند ونيازی به راهاندازی سرورها ندارند، ساخت اين شبكهها بسيار ارزانتر از ايجاد زير ساختهای لازم برای راهاندازی شبكههای مشتری/خدمتگزار است. همچنين با زياد شدن تعداد کاربران چون درعمل تعداد گرههای ارائه کنندهی خدمات هم بالا میرود، نه تنها عملكرد شبكه افت پيدا نمیكند بلكه انتظار بهبود عملکرد نيز میرود. گذشته از اين موارد، مالكيت اين شبكهها به صورت اشتراكی بين تمام کاربران پخش شده و هيچ شخص يا شركتی نمیتواند سياستهای دلخواه خود را در اين نوع شبكهها اعمال کند.
+
+اماهيچ چيزی بی بها به دست نمیآید. نبود سرور مرکزی اگر چه ويژگیهای جذابی به شبکههای همتابههمتا میبخشد اما از طرف ديگر آنها را با دشواریهايی نيز روبهرو میکند. عدم وجود يك هماهنگ كننده مركزی در شبكه، انجام بسياری از امور و ارائه خدمات را دچار مشكل میکند. از يک طرف، تغيير و رفتوآمد زیاد کاربران از ويژگیهای ذاتی اين شبکهها است و از طرف ديگر در اين شبكهها، ديگر اين گرههای معمولی هستند كه عهدهدار تمامی وظايف هستند. به همين دلیل يکی از مشکلات اصلی فراروی اين شبكهها، مقابله با تغييرات لحظهای و فراهم آوردن ثبات در ارائه خدمات در بستری از بیثباتی است.
+\end{article}
+
+\articlesep
+
+\begin{editorial}{1}{این یک مثال از مقالهای از طرف ویرایشگر است.}{نام و نام خانوادگی}{4}
+يژگی اصلی که اين معماری را متمايز کرده و در دنيای اينترنت آنها در مقابل معماری قبلی شبكهها قرار داده است، امكان ايجاد ارتباط مستقيم بين كامپيوترهای مختلف بدون نياز به دخالت سرورهای قدرتمند در بين راه است. نام اين نوع معماری هم در واقع بر گرفته شده از همین ارتباط مستقیم بين گرهها است. در واقع در اين نوع شبكهها اثری از سرورها نيست و تمامی گرههای معمولی موجود در شبكه، بايد وظايفی را که قبلا بر عهدهی سرورها بود، خود انجام دهند. بنابراين در اين نوع معماری گرههای معمولی در ضمن اينکه از خدمات شبکه بهرهمند میشود بايد نقش خدمتگزار را هم ايفا کنند . در اين نوع شبکهها گرههای معمولی به كمك روشها و پروتكلهای توزيع شده، تمامی وظايف مسير يابی در شبكه، جستجوی منابع، امنيت شبكه و شناسايی هويت استفاده كنندهها و همچنين مقابله با حملات احتمالی مهاجمان را بر عهده دارند.
+
+اما معماری همتابههمتا ويژگیهای ديگری نيز دارد که آن را هم برای فراهمکنندگان کاربردها و هم برای استفادهکنندگان جذابتر میکند. از آنجا که شبکههای همتابههمتا از همان زيرساختهای اينترنت استفاده میکنند ونيازی به راهاندازی سرورها ندارند، ساخت اين شبكهها بسيار ارزانتر از ايجاد زير ساختهای لازم برای راهاندازی شبكههای مشتری/خدمتگزار است. همچنين با زياد شدن تعداد کاربران چون درعمل تعداد گرههای ارائه کنندهی خدمات هم بالا میرود، نه تنها عملكرد شبكه افت پيدا نمیكند بلكه انتظار بهبود عملکرد نيز میرود. گذشته از اين موارد، مالكيت اين شبكهها به صورت اشتراكی بين تمام کاربران پخش شده و هيچ شخص يا شركتی نمیتواند سياستهای دلخواه خود را در اين نوع شبكهها اعمال کند.
+
+اماهيچ چيزی بی بها به دست نمیآید. نبود سرور مرکزی اگر چه ويژگیهای جذابی به شبکههای همتابههمتا میبخشد اما از طرف ديگر آنها را با دشواریهايی نيز روبهرو میکند. عدم وجود يك هماهنگ كننده مركزی در شبكه، انجام بسياری از امور و ارائه خدمات را دچار مشكل میکند. از يک طرف، تغيير و رفتوآمد زیاد کاربران از ويژگیهای ذاتی اين شبکهها است و از طرف ديگر در اين شبكهها، ديگر اين گرههای معمولی هستند كه عهدهدار تمامی وظايف هستند. به همين دلیل يکی از مشکلات اصلی فراروی اين شبكهها، مقابله با تغييرات لحظهای و فراهم آوردن ثبات در ارائه خدمات در بستری از بیثباتی است.
+\end{editorial}
+
+\articlesep
+
+\begin{shortarticle}{4}{محیط مقالهٔ کوتاه}{محیط مقالهٔ کوتاه داخل مجلهٔ زیپرشین}{5}
+\shortarticleitem{این یک تیتر کوتاه است}{ويژگی اصلی که اين معماری را متمايز کرده و در دنيای اينترنت آنها در مقابل معماری قبلی شبكهها قرار داده است، امكان ايجاد ارتباط مستقيم بين كامپيوترهای مختلف بدون نياز به دخالت سرورهای قدرتمند در بين راه است. نام اين نوع معماری هم در واقع بر گرفته شده از همین ارتباط مستقیم بين گرهها است. در واقع در اين نوع شبكهها اثری از سرورها نيست و تمامی گرههای معمولی موجود در شبكه، بايد وظايفی را که قبلا بر عهدهی سرورها بود، خود انجام دهند. بنابراين در اين نوع معماری گرههای معمولی در ضمن اينکه از خدمات شبکه بهرهمند میشود بايد نقش خدمتگزار را هم ايفا کنند . در اين نوع شبکهها گرههای معمولی به كمك روشها و پروتكلهای توزيع شده، تمامی وظايف مسير يابی در شبكه، جستجوی منابع، امنيت شبكه و شناسايی هويت استفاده كنندهها و همچنين مقابله با حملات احتمالی مهاجمان را بر عهده دارند.}
+\shortarticleitem{یک تیتر کوتاه دیگر}{ويژگی اصلی که اين معماری را متمايز کرده و در دنيای اينترنت آنها در مقابل معماری قبلی شبكهها قرار داده است، امكان ايجاد ارتباط مستقيم بين كامپيوترهای مختلف بدون نياز به دخالت سرورهای قدرتمند در بين راه است. نام اين نوع معماری هم در واقع بر گرفته شده از همین ارتباط مستقیم بين گرهها است. در واقع در اين نوع شبكهها اثری از سرورها نيست و تمامی گرههای معمولی موجود در شبكه، بايد وظايفی را که قبلا بر عهدهی سرورها بود، خود انجام دهند. بنابراين در اين نوع معماری گرههای معمولی در ضمن اينکه از خدمات شبکه بهرهمند میشود بايد نقش خدمتگزار را هم ايفا کنند . در اين نوع شبکهها گرههای معمولی به كمك روشها و پروتكلهای توزيع شده، تمامی وظايف مسير يابی در شبكه، جستجوی منابع، امنيت شبكه و شناسايی هويت استفاده كنندهها و همچنين مقابله با حملات احتمالی مهاجمان را بر عهده دارند.}
+\shortarticleitem{یک تیتر کوتاه دیگر}{ويژگی اصلی که اين معماری را متمايز کرده و در دنيای اينترنت آنها در مقابل معماری قبلی شبكهها قرار داده است، امكان ايجاد ارتباط مستقيم بين كامپيوترهای مختلف بدون نياز به دخالت سرورهای قدرتمند در بين راه است. نام اين نوع معماری هم در واقع بر گرفته شده از همین ارتباط مستقیم بين گرهها است. در واقع در اين نوع شبكهها اثری از سرورها نيست و تمامی گرههای معمولی موجود در شبكه، بايد وظايفی را که قبلا بر عهدهی سرورها بود، خود انجام دهند. بنابراين در اين نوع معماری گرههای معمولی در ضمن اينکه از خدمات شبکه بهرهمند میشود بايد نقش خدمتگزار را هم ايفا کنند . در اين نوع شبکهها گرههای معمولی به كمك روشها و پروتكلهای توزيع شده، تمامی وظايف مسير يابی در شبكه، جستجوی منابع، امنيت شبكه و شناسايی هويت استفاده كنندهها و همچنين مقابله با حملات احتمالی مهاجمان را بر عهده دارند.}
+\shortarticleitem{یک تیتر کوتاه دیگر}{ويژگی اصلی که اين معماری را متمايز کرده و در دنيای اينترنت آنها در مقابل معماری قبلی شبكهها قرار داده است، امكان ايجاد ارتباط مستقيم بين كامپيوترهای مختلف بدون نياز به دخالت سرورهای قدرتمند در بين راه است. نام اين نوع معماری هم در واقع بر گرفته شده از همین ارتباط مستقیم بين گرهها است. در واقع در اين نوع شبكهها اثری از سرورها نيست و تمامی گرههای معمولی موجود در شبكه، بايد وظايفی را که قبلا بر عهدهی سرورها بود، خود انجام دهند. بنابراين در اين نوع معماری گرههای معمولی در ضمن اينکه از خدمات شبکه بهرهمند میشود بايد نقش خدمتگزار را هم ايفا کنند . در اين نوع شبکهها گرههای معمولی به كمك روشها و پروتكلهای توزيع شده، تمامی وظايف مسير يابی در شبكه، جستجوی منابع، امنيت شبكه و شناسايی هويت استفاده كنندهها و همچنين مقابله با حملات احتمالی مهاجمان را بر عهده دارند.}
+\shortarticleitem{یک تیتر کوتاه دیگر}{ويژگی اصلی که اين معماری را متمايز کرده و در دنيای اينترنت آنها در مقابل معماری قبلی شبكهها قرار داده است، امكان ايجاد ارتباط مستقيم بين كامپيوترهای مختلف بدون نياز به دخالت سرورهای قدرتمند در بين راه است. نام اين نوع معماری هم در واقع بر گرفته شده از همین ارتباط مستقیم بين گرهها است. در واقع در اين نوع شبكهها اثری از سرورها نيست و تمامی گرههای معمولی موجود در شبكه، بايد وظايفی را که قبلا بر عهدهی سرورها بود، خود انجام دهند. بنابراين در اين نوع معماری گرههای معمولی در ضمن اينکه از خدمات شبکه بهرهمند میشود بايد نقش خدمتگزار را هم ايفا کنند . در اين نوع شبکهها گرههای معمولی به كمك روشها و پروتكلهای توزيع شده، تمامی وظايف مسير يابی در شبكه، جستجوی منابع، امنيت شبكه و شناسايی هويت استفاده كنندهها و همچنين مقابله با حملات احتمالی مهاجمان را بر عهده دارند.}
+\shortarticleitem{یک تیتر کوتاه دیگر}{ويژگی اصلی که اين معماری را متمايز کرده و در دنيای اينترنت آنها در مقابل معماری قبلی شبكهها قرار داده است، امكان ايجاد ارتباط مستقيم بين كامپيوترهای مختلف بدون نياز به دخالت سرورهای قدرتمند در بين راه است. نام اين نوع معماری هم در واقع بر گرفته شده از همین ارتباط مستقیم بين گرهها است. در واقع در اين نوع شبكهها اثری از سرورها نيست و تمامی گرههای معمولی موجود در شبكه، بايد وظايفی را که قبلا بر عهدهی سرورها بود، خود انجام دهند. بنابراين در اين نوع معماری گرههای معمولی در ضمن اينکه از خدمات شبکه بهرهمند میشود بايد نقش خدمتگزار را هم ايفا کنند . در اين نوع شبکهها گرههای معمولی به كمك روشها و پروتكلهای توزيع شده، تمامی وظايف مسير يابی در شبكه، جستجوی منابع، امنيت شبكه و شناسايی هويت استفاده كنندهها و همچنين مقابله با حملات احتمالی مهاجمان را بر عهده دارند.}
+\end{shortarticle}
+
+\articlesep
+
+\end{document}
Property changes on: trunk/Master/texmf-dist/doc/xelatex/xepersian/magazine-sample.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/xelatex/xepersian/test-correction.tex
===================================================================
--- trunk/Master/texmf-dist/doc/xelatex/xepersian/test-correction.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/xelatex/xepersian/test-correction.tex 2020-05-16 21:33:48 UTC (rev 55165)
@@ -0,0 +1,38 @@
+\documentclass{article}
+\usepackage[correction]{xepersian-multiplechoice}
+\usepackage{xepersian}
+\settextfont[Scale=1]{XB Zar}
+\setmathdigitfont[Scale=1]{XB Zar}
+\begin{document}
+\begin{question}{اگر $A=\{ 1,2\} $ و $B=\{ 2,3\} $ آنگاه حاصل $B^2-A\times B$ کدام است.}
+\false $\{(3,2),(3,3)\} $
+\true $\{(2,2),(2,3)\} $
+\false $\{(2,3),(3,3)\} $
+\false $\{(2,2),(3,2)\} $
+\end{question}
+
+\begin{question}{اگر $A=\{ 1,2\} $ و $B=\{ 2,3\} $ آنگاه حاصل $B^2-A\times B$ کدام است.}
+\true $x$
+\false $y$
+\false $z$
+\false $t$
+\end{question}
+
+\begin{question}{مجموعه $(B-A^{'})^{'}$ برابر است با:}
+\false $B^{'}\bigcap A$
+\false $B'\bigcup A' $
+\true $A$
+\false هیچکدام.
+\end{question}
+
+\begin{question}{صورت متعارفی عدد مختلط $\frac{7+i}{1-i}$ کدام است.}
+\false $4+4i$
+\false $4-3i$
+\false $3+4i$
+\true $3-3i$
+\end{question}
+\begin{correction}
+جواب درست یکی از اینها است.
+\end{correction}
+
+\end{document}
Property changes on: trunk/Master/texmf-dist/doc/xelatex/xepersian/test-correction.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/xelatex/xepersian/test-empty-form.tex
===================================================================
--- trunk/Master/texmf-dist/doc/xelatex/xepersian/test-empty-form.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/xelatex/xepersian/test-empty-form.tex 2020-05-16 21:33:48 UTC (rev 55165)
@@ -0,0 +1,42 @@
+\documentclass{article}
+\usepackage{xepersian-multiplechoice}
+\usepackage{xepersian}
+\settextfont[Scale=1]{XB Zar}
+\setmathdigitfont[Scale=1]{XB Zar}
+\begin{document}
+\begin{question}{اگر $A=\{ 1,2\} $ و $B=\{ 2,3\} $ آنگاه حاصل $B^2-A\times B$ کدام است.}
+\false $\{(3,2),(3,3)\} $
+\true $\{(2,2),(2,3)\} $
+\false $\{(2,3),(3,3)\} $
+\false $\{(2,2),(3,2)\} $
+\end{question}
+
+\begin{question}{اگر $A=\{ 1,2\} $ و $B=\{ 2,3\} $ آنگاه حاصل $B^2-A\times B$ کدام است.}
+\true $x$
+\false $y$
+\false $z$
+\false $t$
+\end{question}
+
+\begin{question}{مجموعه $(B-A^{'})^{'}$ برابر است با:}
+\false $B^{'}\bigcap A$
+\false $B'\bigcup A' $
+\true $A$
+\false هیچکدام.
+\end{question}
+
+\begin{question}{صورت متعارفی عدد مختلط $\frac{7+i}{1-i}$ کدام است.}
+\false $4+4i$
+\false $4-3i$
+\false $3+4i$
+\true $3-3i$
+\end{question}
+\begin{correction}
+جواب درست یکی از اینها است.
+\end{correction}
+\bigskip
+
+\begin{center}
+\makeform
+\end{center}
+\end{document}
Property changes on: trunk/Master/texmf-dist/doc/xelatex/xepersian/test-empty-form.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/xelatex/xepersian/test-question-only.tex
===================================================================
--- trunk/Master/texmf-dist/doc/xelatex/xepersian/test-question-only.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/xelatex/xepersian/test-question-only.tex 2020-05-16 21:33:48 UTC (rev 55165)
@@ -0,0 +1,38 @@
+\documentclass{article}
+\usepackage{xepersian-multiplechoice}
+\usepackage{xepersian}
+\settextfont[Scale=1]{XB Zar}
+\setmathdigitfont[Scale=1]{XB Zar}
+\begin{document}
+\begin{question}{اگر $A=\{ 1,2\} $ و $B=\{ 2,3\} $ آنگاه حاصل $B^2-A\times B$ کدام است.}
+\false $\{(3,2),(3,3)\} $
+\true $\{(2,2),(2,3)\} $
+\false $\{(2,3),(3,3)\} $
+\false $\{(2,2),(3,2)\} $
+\end{question}
+
+\begin{question}{اگر $A=\{ 1,2\} $ و $B=\{ 2,3\} $ آنگاه حاصل $B^2-A\times B$ کدام است.}
+\true $x$
+\false $y$
+\false $z$
+\false $t$
+\end{question}
+
+\begin{question}{مجموعه $(B-A^{'})^{'}$ برابر است با:}
+\false $B^{'}\bigcap A$
+\false $B'\bigcup A' $
+\true $A$
+\false هیچکدام.
+\end{question}
+
+\begin{question}{صورت متعارفی عدد مختلط $\frac{7+i}{1-i}$ کدام است.}
+\false $4+4i$
+\false $4-3i$
+\false $3+4i$
+\true $3-3i$
+\end{question}
+\begin{correction}
+جواب درست یکی از اینها است.
+\end{correction}
+
+\end{document}
Property changes on: trunk/Master/texmf-dist/doc/xelatex/xepersian/test-question-only.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/xelatex/xepersian/test-solution-form.tex
===================================================================
--- trunk/Master/texmf-dist/doc/xelatex/xepersian/test-solution-form.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/xelatex/xepersian/test-solution-form.tex 2020-05-16 21:33:48 UTC (rev 55165)
@@ -0,0 +1,42 @@
+\documentclass{article}
+\usepackage{xepersian-multiplechoice}
+\usepackage{xepersian}
+\settextfont[Scale=1]{XB Zar}
+\setmathdigitfont[Scale=1]{XB Zar}
+\begin{document}
+\begin{question}{اگر $A=\{ 1,2\} $ و $B=\{ 2,3\} $ آنگاه حاصل $B^2-A\times B$ کدام است.}
+\false $\{(3,2),(3,3)\} $
+\true $\{(2,2),(2,3)\} $
+\false $\{(2,3),(3,3)\} $
+\false $\{(2,2),(3,2)\} $
+\end{question}
+
+\begin{question}{اگر $A=\{ 1,2\} $ و $B=\{ 2,3\} $ آنگاه حاصل $B^2-A\times B$ کدام است.}
+\true $x$
+\false $y$
+\false $z$
+\false $t$
+\end{question}
+
+\begin{question}{مجموعه $(B-A^{'})^{'}$ برابر است با:}
+\false $B^{'}\bigcap A$
+\false $B'\bigcup A' $
+\true $A$
+\false هیچکدام.
+\end{question}
+
+\begin{question}{صورت متعارفی عدد مختلط $\frac{7+i}{1-i}$ کدام است.}
+\false $4+4i$
+\false $4-3i$
+\false $3+4i$
+\true $3-3i$
+\end{question}
+\begin{correction}
+جواب درست یکی از اینها است.
+\end{correction}
+
+\bigskip
+\begin{center}
+\makemask
+\end{center}
+\end{document}
Property changes on: trunk/Master/texmf-dist/doc/xelatex/xepersian/test-solution-form.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/xelatex/xepersian/undk-0.6.py
===================================================================
--- trunk/Master/texmf-dist/doc/xelatex/xepersian/undk-0.6.py (rev 0)
+++ trunk/Master/texmf-dist/doc/xelatex/xepersian/undk-0.6.py 2020-05-16 21:33:48 UTC (rev 55165)
@@ -0,0 +1,485 @@
+#! /usr/bin/env python
+#########################################
+# General Public License #
+# Author: Mostafa Vahedi #
+# Date: 25 Apr. 2008 #
+# Version 0.6 #
+#########################################
+
+import codecs
+
+import sys
+
+bidi_joiners = [
+u'\u0626', u'\u0628', u'\u062a', u'\u062b', u'\u062c', u'\u062d', u'\u062e',
+u'\u0633', u'\u0634', u'\u0635', u'\u0636', u'\u0637', u'\u0638', u'\u0639', u'\u063a',
+u'\u0640', u'\u0641', u'\u0642', u'\u0643', u'\u0644', u'\u0645', u'\u0646', u'\u0647',
+u'\u0649', u'\u064a', u'\u067e', u'\u0686', u'\u06a9', u'\u06af', u'\u200d',
+u'\u06cc']
+
+right_joiners = [
+u'\u0622', u'\u0623', u'\u0624', u'\u0625', u'\u0627', u'\u0629', u'\u062f', u'\u0630', u'\u0631',
+u'\u0632', u'\u0648', u'\u0671', u'\u0600', u'\u0698']
+
+
+#form_numbers, isolated, final, medial, initial
+table_UN_DK = {
+u'\n' : [1, '\n'],
+#case u'\u0020' - 0xA0 : #space
+u' ' : [1, chr(0xA0)],
+#case u'\u0021' - 0xA4 : #exclamation
+u'!' : [1, chr(0xA4)],
+## case u'\u0022' - 0x?? : #quotation
+#case u'\u0023' - 0x95 : #number sign
+u'#' : [1, chr(0x95)],
+#case u'\u0024' - 0x83 : #?? dollar sign
+u'$' : [1, chr(0x83)],
+#case u'\u0025' - 0x96 : #percent sign
+u'%' : [1, chr(0x96)],
+#case u'\u0026' - 0x87 : #?? ampersand
+u'&' : [1, chr(0x87)],
+#case u'\u0027' - 0xa9 : #apostrophe
+u'\'' : [1, chr(0xa9)],
+#case u'\u0028' - 0x90 : #left parenthesis
+u'(' : [1, chr(0x91)],
+#case u'\u0029' - 0x91 : #right parenthesis
+u')' : [1, chr(0x90)],
+#case u'\u002a' - 0x82 : #asterisk
+u'*' : [1, chr(0x82)],
+#case u'\u002b' - 0x9e : #plus sign
+u'+' : [1, chr(0x9e)],
+#case u'\u002c' - 0x97 : #comma
+u',' : [1, chr(0x2C)],
+#case u'\u002d' - 0x9f : #hyphen-minus
+u'-' : [1, chr(0x9f)],
+#case u'\u002e' - 0xA2 : #full stop
+u'.' : [1, chr(0xA2)],
+#case u'\u002f' - 0xa1 : #solidus
+u'/' : [1, chr(0xa1)],
+# #-- digits 0..9 B0 - B9
+#case u'\u003a' - 0xa5 : #colon
+u':' : [1, chr(0xa5)],
+## case u'\u003b' - 0xa6 : #handled in >128: semicolon
+#case u'\u003c' - 0x98 : #less than sign
+u'<' : [1, chr(0x98)],
+#case u'\u003d' - 0x99 : #equal sign
+u'=' : [1, chr(0x99)],
+#case u'\u003e' - 0x9a : #more than sign
+u'>' : [1, chr(0x9a)],
+## case u'\u003f' - 0xa3 : #handled in >128: question mark
+#case u'\u0040' - 0x81 : #commercialat
+u'@' : [1, chr(0x81)],
+##-- letters A..Z
+#case u'\u005b' - 0x92 : #left square bracket
+u'[' : [1, chr(0x93)],
+#case u'\u005c' - 0x9d : #reverse solidus
+u'\\' : [1, chr(0x9d)],
+#case u'\u005d' - 0x93 : #right square bracket
+u']' : [1, chr(0x92)],
+#case u'\u005e' - 0xAE : #circumflex accent
+u'^' : [1, chr(0xAE)],
+## case u'\u005f' - 0x?? : #?? low line
+#case u'\u0060' - 0xa8 : #grave accent
+u'`' : [1, chr(0xa8)],
+# #-- letters a..z
+#case u'\u007b' - 0x8b : #left curly bracket
+u'{' : [1, chr(0x8c)],
+#case u'\u007c' - 0xaf : #vertical line
+u'|' : [1, chr(0xaf)],
+#case u'\u007d' - 0x8c : #right curly bracket
+u'}' : [1, chr(0x8b)],
+#case u'\u007e' - 0x86 : #tilde
+u'~' : [1, chr(0x86)],
+#case u'\u00BB' - 0x8E : #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+u'\u00BB' : [1, chr(0x8E)],
+#case u'\u00AB' - 0x8F : #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+u'\u00AB' : [1, chr(0x8F)],
+#case u'\u00D7' - 0x9c : #times
+u'\u00D7' : [1, chr(0x9c)],
+#case u'\u200C' #ZWJ
+u'\u200C' : [1, ''],
+#case u'\u200D' #ZWNJ
+u'\u200D' : [1, ''],
+
+#060C - 0xA7 : arabic comma
+u'\u060C' : [1, chr(0xA7)],
+#061B - 0xA6 : arabic semicolon
+u'\u061B' : [1, chr(0xA6)],
+#061F - 0XA3 : arabic question mark
+u'\u061F' : [1, chr(0xA3)],
+#0621 - 0xBC hamza
+u'\u0621' : [1, chr(0xBC)],
+#0622 - 0xBB : alef + madda, the kernel joins it if should joined!!!
+u'\u0622' : [1, chr(0xBB)],
+#0623 - 0xBD+0xAD - 0xBE+0xAD : alef + hamza above
+u'\u0623' : [2, chr(0xBD)+chr(0xAD), chr(0xBE)+chr(0xAD)],
+#0624 - 0xF7+0xAD : waw + hamza above
+u'\u0624' : [1, chr(0xF7)+chr(0xAD)],
+#0625 - 0xBD+\hamzabelow - 0xBE+\hamzabelow : alef + hamza below
+u'\u0625' : [2, chr(0xBD)+'\\hamzabelow', chr(0xBE)+'\\hamzabelow'],
+#0626 - 0xFF - 0xFC+0xAD : yeh + hamza above
+u'\u0626' : [3, chr(0xFC)+chr(0xAD), chr(0xFE)+chr(0xAD), chr(0xFF)],
+#0627 - 0xBD - 0xBE : alef
+u'\u0627' : [2, chr(0xBD), chr(0xBE)],
+#0628 - 0xBF - 0xC0 : beh
+u'\u0628' : [2, chr(0xBF), chr(0xC0)],
+#0629 - \0xF8 : teh marbuta
+u'\u0629' : [1, '\\'+chr(0xF8)],
+#062a - 0xC3 - 0xC4 : teh
+u'\u062a' : [2, chr(0xC3), chr(0xC4)],
+#062b - 0xC5 - 0xC6 : theh
+u'\u062b' : [2, chr(0xC5), chr(0xC6)],
+#062c - 0xC7 - 0xC8 : jeem
+u'\u062c' : [2, chr(0xC7), chr(0xC8)],
+#062d - 0xCB - 0xCC : hah
+u'\u062d' : [2, chr(0xCB), chr(0xCC)],
+#062e - 0xCD - 0xCE : khah
+u'\u062e' : [2, chr(0xCD), chr(0xCE)],
+#062f - 0xCF : dal
+u'\u062f' : [1, chr(0xCF)],
+#0630 - 0xD0 : thal
+u'\u0630' : [1, chr(0xD0)],
+#0631 - 0xD1 : reh
+u'\u0631' : [1, chr(0xD1)],
+#0632 - 0xD2 : zain
+u'\u0632' : [1, chr(0xD2)],
+#0633 - 0xD4 - 0xD5 : seen
+u'\u0633' : [2, chr(0xD4), chr(0xD5)],
+#0634 - 0xD6 - 0xD7 : sheen
+u'\u0634' : [2, chr(0xD6), chr(0xD7)],
+#0635 - 0xD8 - 0xD9 : sad
+u'\u0635' : [2, chr(0xD8), chr(0xD9)],
+#0636 - 0xDA - 0xDB : dad
+u'\u0636' : [2, chr(0xDA), chr(0xDB)],
+#0637 - 0xDC - 0xDD : tah
+u'\u0637' : [2, chr(0xDC), chr(0xDD)],
+#0638 - 0xDE - 0xDF : zah
+u'\u0638' : [2, chr(0xDE), chr(0xDF)],
+#0639 - 0xE0 - 0xE1 - 0xE2 - 0xE3 : ain
+u'\u0639' : [4, chr(0xE0), chr(0xE2), chr(0xE3), chr(0xE1)],
+#063a - 0xE4 - 0xE5 - 0xE6 - 0xE7 : ghain
+u'\u063a' : [4, chr(0xE4), chr(0xE6), chr(0xE7), chr(0xE5)],
+#0640 - 0x94 : tatweel
+u'\u0640' : [1, chr(0x94)],
+#0641 - 0xE8 - 0xE9 : feh
+u'\u0641' : [2, chr(0xE8), chr(0xE9)],
+#0642 - 0xEA - 0xEB : Qaf
+u'\u0642' : [2, chr(0xEA), chr(0xEB)],
+#0643 - \arabkeh - 0xED : arabic ke
+u'\u0643' : [2, '\\arabkeh', chr(0xED)],
+#0644 - 0xF0 - 0xF2 : lam
+u'\u0644' : [2, chr(0xF0), chr(0xF2)],
+#0645 - 0xF3 - 0xF4 : meem
+u'\u0645' : [2, chr(0xF3), chr(0xF4)],
+#0646 - 0xF5 - 0xF6 : noon
+u'\u0646' : [2, chr(0xF5), chr(0xF6)],
+#0647 - 0xF8 - 0xF9 - 0xFB : heh
+u'\u0647' : [3, chr(0xF8), chr(0xFB), chr(0xF9)],
+#0648 - 0xF7 : waw
+u'\u0648' : [1, chr(0xF7)],
+#0649 - \alefmaq - \alefmaqjd : alef maksura
+u'\u0649' : [2, '\\alefmaq', '\\alefmaqjd'],
+#064a - \arabyeh - \arabyehjd - 0xFD : arabic yeh
+u'\u064a' : [3, '\\arabyeh', '\\arabyehjd', chr(0xFD)],
+
+#064b - 0xAC : nasb
+u'\u064b' : [1, chr(0xAC)],
+#064c - \raf : raf
+u'\u064c' : [1, '\\'+chr(0xA9)],
+#064d - \jar : jar
+u'\u064d' : [1, '\\'+chr(0xAA)],
+#064e - 0xAB : fatha
+u'\u064e' : [1, chr(0xAB)],
+#064f - 0xA9 : zamma
+u'\u064f' : [1, chr(0xA9)],
+#0650 - 0xAA : kasra
+u'\u0650' : [1, chr(0xAA)],
+#0651 - 0xBA : shadda
+u'\u0651' : [1, chr(0xBA)],
+#0652 - 0xAE : sokun
+u'\u0652' : [1, chr(0xAE)],
+#0653 - \mad : madda
+u'\u0653' : [1, '\\'+chr(0x86)],
+#0654 - 0xAD : hamza above
+u'\u0654' : [1, chr(0xAD)],
+#0655 - \hamzabelow : hamza below
+u'\u0655' : [1, '\\hamzabelow'],
+#0656 - \alefkootahpayyn : alef subscript
+u'\u0656' : [1, '\\'+chr(0xBD)+chr(0xFC)+chr(0xA0)],
+
+#066a - 0x96 : arabic percent sign
+u'\u066a' : [1, chr(0x96)],
+#066b - 0xA1 : arabic decimal seperator
+u'\u066b' : [1, chr(0xA1)],
+#066c - 0x97 : arabic thousands seperator
+u'\u066c' : [1, chr(0x97)],
+
+#0670 - \alefkootahbala : alef superscript
+u'\u0670' : [1, '\\'+chr(0xBB)],
+
+#067e - 0xC1 - 0xC2 : peh
+u'\u067e' : [2, chr(0xC1), chr(0xC2)],
+#0686 - 0xC9 - 0xCA : cheh
+u'\u0686' : [2, chr(0xC9), chr(0xCA)],
+#0698 - 0xD3 : jeh
+u'\u0698' : [1, chr(0xD3)],
+#06a9 - 0xEC - 0xED : farsi keh
+u'\u06a9' : [2, chr(0xEC), chr(0xED)],
+#06af - 0xEE - 0xEF : gaf
+u'\u06af' : [2, chr(0xEE), chr(0xEF)],
+#06cc - 0xFC - 0xFD - 0xFE : farsi yeh
+u'\u06cc' : [3, chr(0xFC), chr(0xFE), chr(0xFD)],
+
+#arabic-indic digits
+u'\u06F0' : [1, chr(0xB0)],
+u'\u06F1' : [1, chr(0xB1)],
+u'\u06F2' : [1, chr(0xB2)],
+u'\u06F3' : [1, chr(0xB3)],
+u'\u06F4' : [1, chr(0xB4)],
+u'\u06F5' : [1, chr(0xB5)],
+u'\u06F6' : [1, chr(0xB6)],
+u'\u06F7' : [1, chr(0xB7)],
+u'\u06F8' : [1, chr(0xB8)],
+u'\u06F9' : [1, chr(0xB9)],
+
+#arabic digits
+u'\u0660' : [1, chr(0xB0)],
+u'\u0661' : [1, chr(0xB1)],
+u'\u0662' : [1, chr(0xB2)],
+u'\u0663' : [1, chr(0xB3)],
+u'\u0664' : [1, '\\arabfour'],
+u'\u0665' : [1, '\\arabfive'],
+u'\u0666' : [1, '\\arabsix'],
+u'\u0667' : [1, chr(0xB7)],
+u'\u0668' : [1, chr(0xB8)],
+u'\u0669' : [1, chr(0xB9)],
+
+#0644_#0627 - 0xF1 : lam+alef
+u'\u0600' : [1, chr(0xF1)]
+}
+
+def is_right_joinable(c):
+ if (c in bidi_joiners) or (c in right_joiners):
+ return 1
+ return 0
+
+def is_left_joinable(c):
+ if (c in bidi_joiners):
+ return 1
+ return 0
+
+def is_nonend_vowel(vowel):
+ if (vowel >= u'\u064e') and (vowel <= u'\u0656'):
+ return 1
+ if (vowel == u'\u0670'):
+ return 1
+ return 0
+
+def is_vowel(vowel):
+ if (vowel >= u'\u064b') and (vowel <= u'\u0656'):
+ return 1
+ if (vowel == u'\u0670'):
+ return 1
+ return 0
+
+def is_six_vowel(vowel):
+ if (vowel >= u'\u064b') and (vowel <= u'\u0650'):
+ return 1
+ return 0
+
+
+def is_right_joinable_v(line, i):
+ if (i>0) and (is_right_joinable(line[i])):
+ j = i-1
+ if is_vowel(line[j]):
+ while ((j>=0) and (is_vowel(line[j]) == 1)):
+ j -= 1
+ if (j == -1) or not(is_left_joinable(line[j])):
+ return 0
+ return 1
+ return 0
+
+def is_left_joinable_v(line, i):
+ line_len = len (line)
+ if (line_len>0) and (i<line_len-1) and (is_left_joinable(line[i])):
+ j = i+1
+ if is_vowel(line[j]):
+ while ((j<line_len) and (is_vowel(line[j]) == 1)):
+ j += 1
+ if (j == line_len) or not(is_right_joinable(line[j])):
+ return 0
+ return 1
+ return 0
+
+#isolated 0, final 1, medial 2, initial 3
+def find_form(line, i):
+ j_r = is_right_joinable_v(line, i)
+ j_l = is_left_joinable_v(line, i)
+
+ if (j_r == 0) and (j_l == 0):
+ return 0
+ if (j_r == 1) and (j_l == 0):
+ return 1
+ if (j_r == 1) and (j_l == 1):
+ return 2
+ # Therefore (j_r == 0) and (j_l == 1):
+ return 3
+
+def map_char_unicode_DK(c, form):
+ try:
+ n = table_UN_DK[c][0]
+ except KeyError:
+ return c.encode('latin-1')
+ if (n == 1):
+ return table_UN_DK[c][1]
+ elif (n == 2):
+ if (c in right_joiners):
+ return table_UN_DK[c][1 + form]
+ else:
+ return table_UN_DK[c][1 + form/2]
+ elif (n == 4):
+ return table_UN_DK[c][1 + form]
+ # farsi yeh (farsi or arabic or +hamza)
+ if (c == u'\u06cc') or (c == u'\u0626') or (c == u'\u064a'):
+ if (form >= 2):
+ return table_UN_DK[c][3]
+ return table_UN_DK[c][1 + form]
+ elif (c == u'\u0647'): # heh
+ if (form < 2):
+ return table_UN_DK[c][1]
+ return table_UN_DK[c][form]
+ return c
+
+def is_english_letter_number(c):
+ if ((c >= u'a') and (c <= u'z')) or ((c >= u'A') and (c <= u'Z')):
+ return 1
+ if (c >= u'0') and (c <= u'9'):
+ return 1
+ if (c == u',') or (c == u'?'):
+ return 1
+ return 0
+
+def is_inbetween_chars(c):
+ if ((c == u'.') or (c == u'-') or (c == u'_') or (c == u'/')):
+ return 1
+ return 0
+
+def is_farsi_numerical(c):
+ if ((c >= u'\u06F0') and (c <= u'\u06F9')) or (c == u'\u066b') or (c == u'\u066c'):
+ return 1
+ return 0
+
+# Main body of the program
+if len(sys.argv) <= 2:
+ print 'usage: python undk in_filename out_filename'
+ exit(0)
+
+filename = sys.argv[1]
+outfile = sys.argv[2]
+
+try:
+ f = codecs.open(filename, 'r', 'utf-8')
+except IOError:
+ print "Can not open the input file: " + filename
+ exit(0)
+
+try:
+ of = open(outfile, 'w')
+except IOError:
+ print "Can not open the output file: " + outfile
+ exit(0)
+
+# this is an option
+autoEnglish = 1
+
+inAutoEnglish = 0
+inFarsi = 1
+inFarsiNumber = 0
+for line in f:
+ this_line = ''
+ line_len = len (line)
+
+ # to remove the Byte Order Mark = BOM
+ start = 0
+ if line[0] == unicode( codecs.BOM_UTF8, "utf8"):
+ start = 1
+ # end of BOM removal
+
+ i = start
+ english_part = ''
+ auto_english_part = ''
+ number_part = ''
+ while i < line_len:
+ # find the \$f_ or \$e_
+ if line[i] == u'\\':
+ if line[i+1:i+4] == "$f_":
+ inFarsi = 1
+ i += 4
+ this_line += english_part[::-1]
+ english_part = ''
+ elif line[i+1:i+4] == "$e_":
+ inFarsi = 0
+ i += 4
+ # The following situation should not happen !!!!
+ if (autoEnglish == 1) and (inAutoEnglish == 1):
+ this_line += auto_english_part[::-1]
+ auto_english_part = ''
+ inAutoEnglish = 0
+ print 'Warning: mixed Auto-English and Forced-English'
+ if (inFarsiNumber == 1):
+ this_line += number_part[::-1]
+ number_part = ''
+ inFarsiNubmer = 0
+ # end of character processing
+ if inFarsi == 0:
+ english_part += line[i].encode('ascii')
+ # Therefore we are in FarsiMode
+ else:
+ # when we are in AutoEnglish mode and the current character
+ # is '.', '-', '_', or '/' and the next character
+ # is English AlphaNumberic then consider the current character
+ # as an English character
+ if (autoEnglish == 1) and (inAutoEnglish == 1) and \
+ (is_inbetween_chars(line[i]) == 1) and \
+ (line_len > i+1) and (is_english_letter_number(line[i+1]) == 1):
+ auto_english_part += line[i].encode('ascii')
+ elif (is_english_letter_number(line[i]) == 1) and (autoEnglish == 1):
+ if (inFarsiNumber == 1):
+ this_line += number_part[::-1]
+ number_part = ''
+ inFarsiNubmer = 0
+ inAutoEnglish = 1
+ auto_english_part += line[i].encode('ascii')
+ else:
+ if (autoEnglish == 1) and (inAutoEnglish == 1):
+ this_line += auto_english_part[::-1]
+ auto_english_part = ''
+ inAutoEnglish = 0
+ if (is_farsi_numerical(line[i]) == 1):
+ inFarsiNumber = 1
+ number_part += map_char_unicode_DK(line[i], 0)
+ else:
+ if (inFarsiNumber == 1):
+ this_line += number_part[::-1]
+ number_part = ''
+ inFarsiNubmer = 0
+ which_form = find_form(line, i)
+ if (i+1 < line_len) and (line[i] == u'\u0644') and (line[i+1] == u'\u0627'):
+ which_form = 1
+ this_line += map_char_unicode_DK(u'\u0600', which_form)
+ i = i + 1
+ else:
+ this_line += map_char_unicode_DK(line[i], which_form)
+ i += 1
+ # end of while
+ if inFarsi == 0:
+ this_line += english_part[::-1]
+ english_part = ''
+
+ # write the processed line
+ of.write(this_line)
+ # end of line processing
+# end of file processing
+
+of.close()
+f.close()
Property changes on: trunk/Master/texmf-dist/doc/xelatex/xepersian/undk-0.6.py
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/xelatex/xepersian/unldk-0.2.py
===================================================================
--- trunk/Master/texmf-dist/doc/xelatex/xepersian/unldk-0.2.py (rev 0)
+++ trunk/Master/texmf-dist/doc/xelatex/xepersian/unldk-0.2.py 2020-05-16 21:33:48 UTC (rev 55165)
@@ -0,0 +1,445 @@
+#! /usr/bin/env python
+#########################################
+# General Public License #
+# Author: Mostafa Vahedi #
+# Date: 22 Apr. 2007 #
+# Version 0.2 #
+#########################################
+
+import codecs
+
+import sys
+
+bidi_joiners = [
+u'\u0626', u'\u0628', u'\u062a', u'\u062b', u'\u062c', u'\u062d', u'\u062e',
+u'\u0633', u'\u0634', u'\u0635', u'\u0636', u'\u0637', u'\u0638', u'\u0639', u'\u063a',
+u'\u0640', u'\u0641', u'\u0642', u'\u0643', u'\u0644', u'\u0645', u'\u0646', u'\u0647',
+u'\u0649', u'\u064a', u'\u067e', u'\u0686', u'\u06a9', u'\u06af', u'\u200d',
+u'\u06cc']
+
+right_joiners = [
+u'\u0622', u'\u0623', u'\u0624', u'\u0625', u'\u0627', u'\u0629', u'\u062f', u'\u0630', u'\u0631',
+u'\u0632', u'\u0648', u'\u0671', u'\u0600', u'\u0698']
+
+
+#form_numbers, isolated, final, medial, initial
+table_UN_DK = {
+u'\n' : [1, '\n'],
+#case u'\u0020' - 0xA0 : #space
+u' ' : [1, chr(0xA0)],
+#case u'\u0021' - 0xA4 : #exclamation
+u'!' : [1, chr(0xA4)],
+## case u'\u0022' - 0x?? : #quotation
+#case u'\u0023' - 0x95 : #number sign
+u'#' : [1, chr(0x95)],
+#case u'\u0024' - 0x83 : #?? dollar sign
+u'$' : [1, chr(0x83)],
+#case u'\u0025' - 0x96 : #percent sign
+u'%' : [1, chr(0x96)],
+#case u'\u0026' - 0x87 : #?? ampersand
+u'&' : [1, chr(0x87)],
+#case u'\u0027' - 0xa9 : #apostrophe
+u'\'' : [1, chr(0xa9)],
+#case u'\u0028' - 0x90 : #left parenthesis
+u'(' : [1, chr(0x91)],
+#case u'\u0029' - 0x91 : #right parenthesis
+u')' : [1, chr(0x90)],
+#case u'\u002a' - 0x82 : #asterisk
+u'*' : [1, chr(0x82)],
+#case u'\u002b' - 0x9e : #plus sign
+u'+' : [1, chr(0x9e)],
+#case u'\u002c' - 0x97 : #comma
+u',' : [1, chr(0x97)],
+#case u'\u002d' - 0x9f : #hyphen-minus
+u'-' : [1, chr(0x9f)],
+#case u'\u002e' - 0xA2 : #full stop
+u'.' : [1, chr(0xA2)],
+#case u'\u002f' - 0xa1 : #solidus
+u'/' : [1, chr(0xa1)],
+# #-- digits 0..9 B0 - B9
+#case u'\u003a' - 0xa5 : #colon
+u':' : [1, chr(0xa5)],
+## case u'\u003b' - 0xa6 : #handled in >128: semicolon
+#case u'\u003c' - 0x98 : #less than sign
+u'<' : [1, chr(0x98)],
+#case u'\u003d' - 0x99 : #equal sign
+u'=' : [1, chr(0x99)],
+#case u'\u003e' - 0x9a : #more than sign
+u'>' : [1, chr(0x9a)],
+## case u'\u003f' - 0xa3 : #handled in >128: question mark
+#case u'\u0040' - 0x81 : #commercialat
+u'@' : [1, chr(0x81)],
+##-- letters A..Z
+#case u'\u005b' - 0x92 : #left square bracket
+u'[' : [1, chr(0x93)],
+#case u'\u005c' - 0x9d : #reverse solidus
+u'\\' : [1, chr(0x9d)],
+#case u'\u005d' - 0x93 : #right square bracket
+u']' : [1, chr(0x92)],
+#case u'\u005e' - 0xAE : #circumflex accent
+u'^' : [1, chr(0xAE)],
+## case u'\u005f' - 0x?? : #?? low line
+#case u'\u0060' - 0xa8 : #grave accent
+u'`' : [1, chr(0xa8)],
+# #-- letters a..z
+#case u'\u007b' - 0x8b : #left curly bracket
+u'{' : [1, chr(0x8c)],
+#case u'\u007c' - 0xaf : #vertical line
+u'|' : [1, chr(0xaf)],
+#case u'\u007d' - 0x8c : #right curly bracket
+u'}' : [1, chr(0x8b)],
+#case u'\u007e' - 0x86 : #tilde
+u'~' : [1, chr(0x86)],
+#case u'\u00BB' - 0x8E : #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+u'\u00BB' : [1, chr(0x8E)],
+#case u'\u00AB' - 0x8F : #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+u'\u00AB' : [1, chr(0x8F)],
+#case u'\u00D7' - 0x9c : #times
+u'\u00D7' : [1, chr(0x9c)],
+#case u'\u200C' #ZWJ
+u'\u200C' : [1, ''],
+#case u'\u200D' #ZWNJ
+u'\u200D' : [1, ''],
+
+#060C - 0xA7 : arabic comma
+u'\u060C' : [1, chr(0xA7)],
+#061B - 0xA6 : arabic semicolon
+u'\u061B' : [1, chr(0xA6)],
+#061F - 0XA3 : arabic question mark
+u'\u061F' : [1, chr(0xA3)],
+#0621 - 0xBC hamza
+u'\u0621' : [1, chr(0xBC)],
+#0622 - 0xBB : alef + madda, the kernel joins it if should joined!!!
+u'\u0622' : [1, chr(0xBB)],
+#0623 - 0xBD+0xAD - 0xBE+0xAD : alef + hamza above
+u'\u0623' : [2, chr(0xBD)+chr(0xAD), chr(0xBE)+chr(0xAD)],
+#0624 - 0xF7+0xAD : waw + hamza above
+u'\u0624' : [1, chr(0xF7)+chr(0xAD)],
+#0625 - 0xBD+\hamzabelow - 0xBE+\hamzabelow : alef + hamza below
+u'\u0625' : [2, chr(0xBD)+'\\hamzabelow', chr(0xBE)+'\\hamzabelow'],
+#0626 - 0xFF - 0xFC+0xAD : yeh + hamza above
+u'\u0626' : [3, chr(0xFC)+chr(0xAD), chr(0xFE)+chr(0xAD), chr(0xFF)],
+#0627 - 0xBD - 0xBE : alef
+u'\u0627' : [2, chr(0xBD), chr(0xBE)],
+#0628 - 0xBF - 0xC0 : beh
+u'\u0628' : [2, chr(0xBF), chr(0xC0)],
+#0629 - \0xF8 : teh marbuta
+u'\u0629' : [1, '\\'+chr(0xF8)],
+#062a - 0xC3 - 0xC4 : teh
+u'\u062a' : [2, chr(0xC3), chr(0xC4)],
+#062b - 0xC5 - 0xC6 : theh
+u'\u062b' : [2, chr(0xC5), chr(0xC6)],
+#062c - 0xC7 - 0xC8 : jeem
+u'\u062c' : [2, chr(0xC7), chr(0xC8)],
+#062d - 0xCB - 0xCC : hah
+u'\u062d' : [2, chr(0xCB), chr(0xCC)],
+#062e - 0xCD - 0xCE : khah
+u'\u062e' : [2, chr(0xCD), chr(0xCE)],
+#062f - 0xCF : dal
+u'\u062f' : [1, chr(0xCF)],
+#0630 - 0xD0 : thal
+u'\u0630' : [1, chr(0xD0)],
+#0631 - 0xD1 : reh
+u'\u0631' : [1, chr(0xD1)],
+#0632 - 0xD2 : zain
+u'\u0632' : [1, chr(0xD2)],
+#0633 - 0xD4 - 0xD5 : seen
+u'\u0633' : [2, chr(0xD4), chr(0xD5)],
+#0634 - 0xD6 - 0xD7 : sheen
+u'\u0634' : [2, chr(0xD6), chr(0xD7)],
+#0635 - 0xD8 - 0xD9 : sad
+u'\u0635' : [2, chr(0xD8), chr(0xD9)],
+#0636 - 0xDA - 0xDB : dad
+u'\u0636' : [2, chr(0xDA), chr(0xDB)],
+#0637 - 0xDC - 0xDD : tah
+u'\u0637' : [2, chr(0xDC), chr(0xDD)],
+#0638 - 0xDE - 0xDF : zah
+u'\u0638' : [2, chr(0xDE), chr(0xDF)],
+#0639 - 0xE0 - 0xE1 - 0xE2 - 0xE3 : ain
+u'\u0639' : [4, chr(0xE0), chr(0xE2), chr(0xE3), chr(0xE1)],
+#063a - 0xE4 - 0xE5 - 0xE6 - 0xE7 : ghain
+u'\u063a' : [4, chr(0xE4), chr(0xE6), chr(0xE7), chr(0xE5)],
+#0640 - 0x94 : tatweel
+u'\u0640' : [1, chr(0x94)],
+#0641 - 0xE8 - 0xE9 : feh
+u'\u0641' : [2, chr(0xE8), chr(0xE9)],
+#0642 - 0xEA - 0xEB : Qaf
+u'\u0642' : [2, chr(0xEA), chr(0xEB)],
+#0643 - \arabkeh - 0xED : arabic ke
+u'\u0643' : [2, '\\arabkeh', chr(0xED)],
+#0644 - 0xF0 - 0xF2 : lam
+u'\u0644' : [2, chr(0xF0), chr(0xF2)],
+#0645 - 0xF3 - 0xF4 : meem
+u'\u0645' : [2, chr(0xF3), chr(0xF4)],
+#0646 - 0xF5 - 0xF6 : noon
+u'\u0646' : [2, chr(0xF5), chr(0xF6)],
+#0647 - 0xF8 - 0xF9 - 0xFB : heh
+u'\u0647' : [3, chr(0xF8), chr(0xFB), chr(0xF9)],
+#0648 - 0xF7 : waw
+u'\u0648' : [1, chr(0xF7)],
+#0649 - \alefmaq - \alefmaqjd : alef maksura
+u'\u0649' : [2, '\\alefmaq', '\\alefmaqjd'],
+#064a - \arabyeh - \arabyehjd - 0xFD : arabic yeh
+u'\u064a' : [3, '\\arabyeh', '\\arabyehjd', chr(0xFD)],
+
+#064b - 0xAC : nasb
+u'\u064b' : [1, chr(0xAC)],
+#064c - \raf : raf
+u'\u064c' : [1, '\\'+chr(0xA9)],
+#064d - \jar : jar
+u'\u064d' : [1, '\\'+chr(0xAA)],
+#064e - 0xAB : fatha
+u'\u064e' : [1, chr(0xAB)],
+#064f - 0xA9 : zamma
+u'\u064f' : [1, chr(0xA9)],
+#0650 - 0xAA : kasra
+u'\u0650' : [1, chr(0xAA)],
+#0651 - 0xBA : shadda
+u'\u0651' : [1, chr(0xBA)],
+#0652 - 0xAE : sokun
+u'\u0652' : [1, chr(0xAE)],
+#0653 - \mad : madda
+u'\u0653' : [1, '\\'+chr(0x86)],
+#0654 - 0xAD : hamza above
+u'\u0654' : [1, chr(0xAD)],
+#0655 - \hamzabelow : hamza below
+u'\u0655' : [1, '\\hamzabelow'],
+#0656 - \alefkootahpayyn : alef subscript
+u'\u0656' : [1, '\\'+chr(0xBD)+chr(0xFC)+chr(0xA0)],
+
+#066a - 0x96 : arabic percent sign
+u'\u066a' : [1, chr(0x96)],
+#066b - 0xA1 : arabic decimal seperator
+u'\u066b' : [1, chr(0xA1)],
+#066c - 0x97 : arabic thousands seperator
+u'\u066c' : [1, chr(0x97)],
+
+#0670 - \alefkootahbala : alef superscript
+u'\u0670' : [1, '\\'+chr(0xBB)],
+
+#067e - 0xC1 - 0xC2 : peh
+u'\u067e' : [2, chr(0xC1), chr(0xC2)],
+#0686 - 0xC9 - 0xCA : cheh
+u'\u0686' : [2, chr(0xC9), chr(0xCA)],
+#0698 - 0xD3 : jeh
+u'\u0698' : [1, chr(0xD3)],
+#06a9 - 0xEC - 0xED : farsi keh
+u'\u06a9' : [2, chr(0xEC), chr(0xED)],
+#06af - 0xEE - 0xEF : gaf
+u'\u06af' : [2, chr(0xEE), chr(0xEF)],
+#06cc - 0xFC - 0xFD - 0xFE : farsi yeh
+u'\u06cc' : [3, chr(0xFC), chr(0xFE), chr(0xFD)],
+
+#arabic-indic digits
+u'\u06F0' : [1, chr(0xB0)],
+u'\u06F1' : [1, chr(0xB1)],
+u'\u06F2' : [1, chr(0xB2)],
+u'\u06F3' : [1, chr(0xB3)],
+u'\u06F4' : [1, chr(0xB4)],
+u'\u06F5' : [1, chr(0xB5)],
+u'\u06F6' : [1, chr(0xB6)],
+u'\u06F7' : [1, chr(0xB7)],
+u'\u06F8' : [1, chr(0xB8)],
+u'\u06F9' : [1, chr(0xB9)],
+
+#arabic digits
+u'\u0660' : [1, chr(0xB0)],
+u'\u0661' : [1, chr(0xB1)],
+u'\u0662' : [1, chr(0xB2)],
+u'\u0663' : [1, chr(0xB3)],
+u'\u0664' : [1, '\\arabfour'],
+u'\u0665' : [1, '\\arabfive'],
+u'\u0666' : [1, '\\arabsix'],
+u'\u0667' : [1, chr(0xB7)],
+u'\u0668' : [1, chr(0xB8)],
+u'\u0669' : [1, chr(0xB9)],
+
+#0644_#0627 - 0xF1 : lam+alef
+u'\u0600' : [1, chr(0xF1)]
+}
+
+def is_right_joinable(c):
+ if (c in bidi_joiners) or (c in right_joiners):
+ return 1
+ return 0
+
+def is_left_joinable(c):
+ if (c in bidi_joiners):
+ return 1
+ return 0
+
+def is_nonend_vowel(vowel):
+ if (vowel >= u'\u064e') and (vowel <= u'\u0656'):
+ return 1
+ if (vowel == u'\u0670'):
+ return 1
+ return 0
+
+def is_vowel(vowel):
+ if (vowel >= u'\u064b') and (vowel <= u'\u0656'):
+ return 1
+ if (vowel == u'\u0670'):
+ return 1
+ return 0
+
+def is_six_vowel(vowel):
+ if (vowel >= u'\u064b') and (vowel <= u'\u0650'):
+ return 1
+ return 0
+
+
+def is_right_joinable_v(line, i):
+ if (i>0) and (is_right_joinable(line[i])):
+ j = i-1
+ if is_vowel(line[j]):
+ while ((j>=0) and (is_vowel(line[j]) == 1)):
+ j -= 1
+ if (j == -1) or not(is_left_joinable(line[j])):
+ return 0
+ return 1
+ return 0
+
+def is_left_joinable_v(line, i):
+ line_len = len (line)
+ if (line_len>0) and (i<line_len-1) and (is_left_joinable(line[i])):
+ j = i+1
+ if is_vowel(line[j]):
+ while ((j<line_len) and (is_vowel(line[j]) == 1)):
+ j += 1
+ if (j == line_len) or not(is_right_joinable(line[j])):
+ return 0
+ return 1
+ return 0
+
+#isolated 0, final 1, medial 2, initial 3
+def find_form(line, i):
+ j_r = is_right_joinable_v(line, i)
+ j_l = is_left_joinable_v(line, i)
+
+ if (j_r == 0) and (j_l == 0):
+ return 0
+ if (j_r == 1) and (j_l == 0):
+ return 1
+ if (j_r == 1) and (j_l == 1):
+ return 2
+ # Therefore (j_r == 0) and (j_l == 1):
+ return 3
+
+def map_char_unicode_DK(c, form):
+ try:
+ n = table_UN_DK[c][0]
+ except KeyError:
+ return c.encode('latin-1')
+ if (n == 1):
+ return table_UN_DK[c][1]
+ elif (n == 2):
+ if (c in right_joiners):
+ return table_UN_DK[c][1 + form]
+ else:
+ return table_UN_DK[c][1 + form/2]
+ elif (n == 4):
+ return table_UN_DK[c][1 + form]
+ # farsi yeh (farsi or arabic or +hamza)
+ if (c == u'\u06cc') or (c == u'\u0626') or (c == u'\u064a'):
+ if (form >= 2):
+ return table_UN_DK[c][3]
+ return table_UN_DK[c][1 + form]
+ elif (c == u'\u0647'): # heh
+ if (form < 2):
+ return table_UN_DK[c][1]
+ return table_UN_DK[c][form]
+ return c
+
+def is_english_letter_number(c):
+ if ((c >= u'a') and (c <= u'z')) or ((c >= u'A') and (c <= u'Z')):
+ return 1
+ if (c >= u'0') and (c <= u'9'):
+ return 1
+ return 0
+
+def is_farsi_numerical(c):
+ if ((c >= u'\u06F0') and (c <= u'\u06F9')) or (c == u'\u066b') or (c == u'\u066c'):
+ return 1
+ return 0
+
+# Main body of the program
+if len(sys.argv) <= 2:
+ print 'usage: python unldk in_filename out_filename'
+ exit(0)
+
+filename = sys.argv[1]
+outfile = sys.argv[2]
+
+try:
+ f = codecs.open(filename, 'r', 'utf-8')
+except IOError:
+ print "Can not open the input file: " + filename
+ exit(0)
+
+try:
+ of = open(outfile, 'w')
+except IOError:
+ print "Can not open the output file: " + outfile
+ exit(0)
+
+inFarsi = 0
+inFarsiNumber = 0
+for line in f:
+ this_line = ''
+ line_len = len (line)
+
+ # to remove the Byte Order Mark = BOM
+ start = 0
+ if line[0] == unicode( codecs.BOM_UTF8, "utf8"):
+ start = 1
+ # end of BOM removal
+
+ i = start
+ farsi_part = ''
+ while i < line_len:
+ # find the \$f_ or \$e_
+ if line[i] == u'\\':
+ if line[i+1:i+4] == "$f_":
+ inFarsi = 1
+ i += 4
+ elif line[i+1:i+4] == "$e_":
+ if (inFarsiNumber == 1):
+ farsi_part += number_part[::-1]
+ number_part = ''
+ inFarsiNubmer = 0
+ this_line += farsi_part[::-1]
+ fasi_part = ''
+ inFarsi = 0
+ i += 4
+ # end of character processing
+ if inFarsi == 0:
+ this_line += line[i].encode('ascii')
+ else:
+ if (is_farsi_numerical(line[i]) == 1):
+ inFarsiNumber = 1
+ number_part += map_char_unicode_DK(line[i], 0)
+ else:
+ if (inFarsiNumber == 1):
+ farsi_part += number_part[::-1]
+ number_part = ''
+ inFarsiNubmer = 0
+ which_form = find_form(line, i)
+ if (i+1 < line_len) and (line[i] == u'\u0644') and (line[i+1] == u'\u0627'):
+ which_form = 1
+ farsi_part += map_char_unicode_DK(u'\u0600', which_form)
+ i = i + 1
+ else:
+ farsi_part += map_char_unicode_DK(line[i], which_form)
+ i += 1
+ # end of while
+ if inFarsi == 1:
+ this_line += farsi_part[::-1]
+ farsi_part = ''
+
+ # write the processed line
+ of.write(this_line)
+ # end of line processing
+# end of file processing
+
+of.close()
+f.close()
Property changes on: trunk/Master/texmf-dist/doc/xelatex/xepersian/unldk-0.2.py
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/xelatex/xepersian/xepersian-doc.pdf
===================================================================
(Binary files differ)
Index: trunk/Master/texmf-dist/doc/xelatex/xepersian/xepersian-doc.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/xelatex/xepersian/xepersian-doc.pdf 2020-05-16 21:27:48 UTC (rev 55164)
+++ trunk/Master/texmf-dist/doc/xelatex/xepersian/xepersian-doc.pdf 2020-05-16 21:33:48 UTC (rev 55165)
Property changes on: trunk/Master/texmf-dist/doc/xelatex/xepersian/xepersian-doc.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/xelatex/xepersian/xepersian-logo.tex
===================================================================
--- trunk/Master/texmf-dist/doc/xelatex/xepersian/xepersian-logo.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/xelatex/xepersian/xepersian-logo.tex 2020-05-16 21:33:48 UTC (rev 55165)
@@ -0,0 +1,1483 @@
+\documentclass{minimal}
+\usepackage{pstricks}
+\begin{document}
+\psset{xunit=.5pt,yunit=.5pt,runit=.5pt}
+\begin{pspicture}(644,645)
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(336.4,15.6)
+\curveto(336.4,7.6)(329.9,1.201)(322,1.201)
+\curveto(314,1.201)(307.6,7.701)(307.6,15.6)
+\curveto(307.6,23.5)(314.1,30)(322,30)
+\curveto(329.9,30)(336.4,23.6)(336.4,15.6)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(368.4,18.8)
+\curveto(369.2,10.901)(363.5,3.8)(355.599,2.901)
+\curveto(347.7,2.1)(340.599,7.8)(339.7,15.701)
+\curveto(338.9,23.6)(344.599,30.701)(352.5,31.6)
+\curveto(360.5,32.5)(367.6,26.7)(368.4,18.8)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(400,25.3)
+\curveto(401.7,17.5)(396.7,9.8)(388.9,8.2)
+\curveto(381.099,6.5)(373.4,11.5)(371.799,19.3)
+\curveto(370.099,27.1)(375.099,34.8)(382.9,36.401)
+\curveto(390.6,38.1)(398.3,33.1)(400,25.3)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(430.7,35.1)
+\curveto(433.2,27.5)(429,19.401)(421.4,16.901)
+\curveto(413.799,14.401)(405.7,18.6)(403.2,26.201)
+\curveto(400.7,33.801)(404.9,41.901)(412.5,44.401)
+\curveto(420.1,46.901)(428.2,42.7)(430.7,35.1)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(460.2,48.1)
+\curveto(463.4,40.8)(460.2,32.3)(452.9,29)
+\curveto(445.599,25.8)(437.099,29)(433.799,36.3)
+\curveto(430.599,43.6)(433.799,52.1)(441.099,55.3)
+\curveto(448.4,58.6)(456.9,55.3)(460.2,48.1)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(488.2,64)
+\curveto(492.2,57.1)(489.8,48.3)(482.9,44.3)
+\curveto(476,40.3)(467.2,42.7)(463.2,49.6)
+\curveto(459.2,56.5)(461.599,65.3)(468.5,69.3)
+\curveto(475.401,73.3)(484.2,70.9)(488.2,64)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(514.3,82.8)
+\curveto(519,76.401)(517.6,67.3)(511.1,62.6)
+\curveto(504.6,57.901)(495.6,59.3)(490.901,65.8)
+\curveto(486.201,72.3)(487.701,81.3)(494.1,86)
+\curveto(500.6,90.7)(509.6,89.3)(514.3,82.8)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(538.4,104.2)
+\curveto(543.7,98.3)(543.299,89.099)(537.299,83.8)
+\curveto(531.4,78.5)(522.199,79)(516.9,84.901)
+\curveto(511.6,90.8)(512.1,100)(518,105.3)
+\curveto(523.9,110.7)(533.1,110.2)(538.4,104.2)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(560.1,128.1)
+\curveto(566,122.8)(566.5,113.6)(561.201,107.701)
+\curveto(555.901,101.801)(546.701,101.301)(540.801,106.6)
+\curveto(534.902,111.901)(534.402,121.1)(539.701,127)
+\curveto(545,132.9)(554.2,133.4)(560.1,128.1)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(579.2,154)
+\curveto(585.7,149.3)(587.099,140.3)(582.4,133.8)
+\curveto(577.7,127.3)(568.7,125.901)(562.2,130.6)
+\curveto(555.7,135.3)(554.3,144.3)(559,150.8)
+\curveto(563.7,157.3)(572.7,158.7)(579.2,154)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(595.4,181.8)
+\curveto(602.299,177.8)(604.7,169)(600.7,162.1)
+\curveto(596.7,155.201)(587.9,152.8)(581,156.8)
+\curveto(574.1,160.8)(571.7,169.6)(575.7,176.5)
+\curveto(579.7,183.5)(588.5,185.8)(595.4,181.8)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(608.7,211.2)
+\curveto(616,208)(619.3,199.4)(616,192.099)
+\curveto(612.8,184.799)(604.2,181.599)(596.9,184.799)
+\curveto(589.6,188)(586.3,196.6)(589.6,203.9)
+\curveto(592.9,211.2)(601.4,214.5)(608.7,211.2)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(618.8,241.8)
+\curveto(626.401,239.3)(630.5,231.2)(628.1,223.6)
+\curveto(625.6,216)(617.5,211.901)(609.901,214.3)
+\curveto(602.3,216.8)(598.201,224.901)(600.6,232.5)
+\curveto(603.1,240.1)(611.2,244.3)(618.8,241.8)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(625.7,273.3)
+\curveto(633.5,271.7)(638.5,264)(636.8,256.2)
+\curveto(635.2,248.4)(627.5,243.4)(619.7,245.099)
+\curveto(611.9,246.799)(606.9,254.4)(608.599,262.2)
+\curveto(610.2,270)(617.9,274.9)(625.7,273.3)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(629.2,305.3)
+\curveto(637.099,304.5)(642.9,297.401)(642,289.401)
+\curveto(641.2,281.501)(634.1,275.701)(626.1,276.6)
+\curveto(618.201,277.401)(612.401,284.5)(613.3,292.5)
+\curveto(614.2,300.4)(621.3,306.1)(629.2,305.3)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(629.4,337.5)
+\curveto(637.4,337.5)(643.9,331)(643.799,323.1)
+\curveto(643.799,315.1)(637.299,308.7)(629.4,308.7)
+\curveto(621.4,308.7)(615,315.2)(615,323.1)
+\curveto(615,331.1)(621.4,337.5)(629.4,337.5)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(626.2,369.6)
+\curveto(634.099,370.4)(641.2,364.7)(642.099,356.8)
+\curveto(642.9,348.9)(637.2,341.8)(629.299,340.9)
+\curveto(621.4,340.1)(614.299,345.8)(613.499,353.8)
+\curveto(612.5,361.7)(618.3,368.8)(626.2,369.6)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(619.7,401.1)
+\curveto(627.5,402.8)(635.2,397.8)(636.8,390)
+\curveto(638.5,382.2)(633.5,374.5)(625.7,372.9)
+\curveto(617.9,371.2)(610.2,376.2)(608.599,384)
+\curveto(606.9,391.8)(611.9,399.5)(619.7,401.1)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(609.9,431.8)
+\curveto(617.5,434.3)(625.599,430.1)(628.099,422.5)
+\curveto(630.599,414.9)(626.4,406.8)(618.799,404.3)
+\curveto(611.199,401.8)(603.099,406)(600.599,413.6)
+\curveto(598.099,421.2)(602.3,429.4)(609.9,431.8)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(596.9,461.4)
+\curveto(604.2,464.7)(612.7,461.4)(615.9,454.1)
+\curveto(619.2,446.8)(615.9,438.3)(608.599,435)
+\curveto(601.299,431.8)(592.799,435)(589.499,442.3)
+\curveto(586.4,449.6)(589.6,458.1)(596.9,461.4)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(581,489.3)
+\curveto(587.9,493.3)(596.7,490.9)(600.7,484)
+\curveto(604.7,477.1)(602.3,468.3)(595.4,464.3)
+\curveto(588.5,460.3)(579.7,462.7)(575.7,469.6)
+\curveto(571.7,476.5)(574.1,485.3)(581,489.3)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(562.2,515.5)
+\curveto(568.599,520.2)(577.7,518.8)(582.4,512.3)
+\curveto(587.099,505.9)(585.7,496.8)(579.2,492.1)
+\curveto(572.7,487.4)(563.7,488.9)(559,495.3)
+\curveto(554.3,501.8)(555.7,510.8)(562.2,515.5)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(540.8,539.6)
+\curveto(546.7,544.9)(555.901,544.5)(561.2,538.5)
+\curveto(566.5,532.6)(566.099,523.5)(560.099,518.1)
+\curveto(554.2,512.8)(544.999,513.3)(539.7,519.2)
+\curveto(534.3,525.1)(534.8,534.2)(540.8,539.6)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(516.9,561.3)
+\curveto(522.2,567.2)(531.4,567.7)(537.299,562.4)
+\curveto(543.199,557.1)(543.699,547.9)(538.4,542)
+\curveto(533.099,536.1)(523.9,535.6)(518,540.9)
+\curveto(512.1,546.2)(511.6,555.3)(516.9,561.3)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(491,580.3)
+\curveto(495.7,586.8)(504.7,588.2)(511.2,583.5)
+\curveto(517.7,578.8)(519.099,569.8)(514.4,563.3)
+\curveto(509.7,556.9)(500.7,555.4)(494.2,560.1)
+\curveto(487.7,564.9)(486.3,573.9)(491,580.3)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(463.1,596.6)
+\curveto(467.1,603.5)(475.901,605.9)(482.8,601.9)
+\curveto(489.7,597.9)(492.1,589.1)(488.1,582.2)
+\curveto(484.1,575.3)(475.3,572.9)(468.401,576.9)
+\curveto(461.5,580.9)(459.2,589.7)(463.1,596.6)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(433.8,609.9)
+\curveto(437,617.2)(445.6,620.5)(452.901,617.2)
+\curveto(460.201,614)(463.501,605.4)(460.201,598.1)
+\curveto(457.001,590.8)(448.401,587.6)(441.1,590.8)
+\curveto(433.8,594)(430.5,602.6)(433.8,609.9)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(403.2,620)
+\curveto(405.7,627.6)(413.8,631.7)(421.4,629.3)
+\curveto(429,626.8)(433.099,618.7)(430.7,611.1)
+\curveto(428.2,603.5)(420.099,599.4)(412.5,601.8)
+\curveto(404.9,604.3)(400.7,612.4)(403.2,620)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(371.7,626.9)
+\curveto(373.3,634.7)(381,639.7)(388.8,638)
+\curveto(396.6,636.3)(401.6,628.7)(399.901,620.9)
+\curveto(398.201,613.1)(390.6,608.1)(382.8,609.8)
+\curveto(375,611.4)(370.1,619)(371.7,626.9)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(339.7,630.4)
+\curveto(340.5,638.3)(347.6,644.1)(355.6,643.2)
+\curveto(363.5,642.4)(369.3,635.3)(368.5,627.3)
+\curveto(367.7,619.4)(360.5,613.6)(352.6,614.5)
+\curveto(344.6,615.4)(338.8,622.5)(339.7,630.4)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(307.5,630.6)
+\curveto(307.5,638.6)(314,645)(321.9,645)
+\curveto(329.9,645)(336.299,638.5)(336.299,630.6)
+\curveto(336.299,622.6)(329.799,616.2)(321.9,616.2)
+\curveto(313.9,616.1)(307.5,622.6)(307.5,630.6)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(275.4,627.4)
+\curveto(274.5,635.3)(280.3,642.4)(288.2,643.3)
+\curveto(296.1,644.1)(303.2,638.4)(304.1,630.5)
+\curveto(304.9,622.6)(299.2,615.5)(291.2,614.7)
+\curveto(283.3,613.7)(276.2,619.4)(275.4,627.4)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(243.9,620.8)
+\curveto(242.2,628.7)(247.2,636.3)(255,638)
+\curveto(262.8,639.7)(270.5,634.7)(272.1,626.9)
+\curveto(273.8,619.1)(268.8,611.4)(261,609.8)
+\curveto(253.2,608.1)(245.5,613)(243.9,620.8)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(213.2,611.1)
+\curveto(210.7,618.7)(214.9,626.8)(222.5,629.3)
+\curveto(230.1,631.8)(238.2,627.6)(240.7,620)
+\curveto(243.2,612.4)(239,604.3)(231.4,601.8)
+\curveto(223.8,599.3)(215.6,603.5)(213.2,611.1)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(183.6,598.1)
+\curveto(180.3,605.4)(183.6,613.9)(190.9,617.2)
+\curveto(198.2,620.4)(206.7,617.2)(210,609.9)
+\curveto(213.2,602.6)(209.9,594.1)(202.7,590.9)
+\curveto(195.4,587.5)(186.9,590.8)(183.6,598.1)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(155.7,582.2)
+\curveto(151.7,589.1)(154.1,597.9)(161,601.9)
+\curveto(167.9,605.9)(176.7,603.5)(180.7,596.6)
+\curveto(184.7,589.7)(182.3,580.9)(175.4,576.9)
+\curveto(168.5,572.9)(159.7,575.2)(155.7,582.2)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(129.5,563.4)
+\curveto(124.8,569.8)(126.3,578.9)(132.7,583.6)
+\curveto(139.2,588.3)(148.2,586.9)(152.9,580.4)
+\curveto(157.6,574)(156.1,564.9)(149.7,560.2)
+\curveto(143.2,555.5)(134.2,556.9)(129.5,563.4)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(105.4,541.9)
+\curveto(100,547.8)(100.6,557)(106.5,562.3)
+\curveto(112.4,567.6)(121.5,567.2)(126.9,561.2)
+\curveto(132.2,555.3)(131.7,546.1)(125.8,540.8)
+\curveto(119.9,535.5)(110.8,536)(105.4,541.9)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(83.7,518.1)
+\curveto(77.7,523.4)(77.3,532.6)(82.6,538.5)
+\curveto(87.9,544.4)(97,544.9)(103,539.6)
+\curveto(108.9,534.3)(109.4,525.1)(104,519.2)
+\curveto(98.8,513.2)(89.7,512.8)(83.7,518.1)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(64.7,492.1)
+\curveto(58.2,496.8)(56.8,505.8)(61.5,512.3)
+\curveto(66.2,518.8)(75.2,520.2)(81.7,515.5)
+\curveto(88.1,510.8)(89.6,501.8)(84.9,495.3)
+\curveto(80.1,488.9)(71.1,487.4)(64.7,492.1)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(48.4,464.3)
+\curveto(41.5,468.3)(39.1,477.1)(43.1,484)
+\curveto(47.1,490.9)(55.9,493.3)(62.8,489.3)
+\curveto(69.7,485.3)(72.1,476.5)(68,469.6)
+\curveto(64.1,462.7)(55.3,460.3)(48.4,464.3)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(35.1,435)
+\curveto(27.8,438.2)(24.5,446.8)(27.8,454.1)
+\curveto(31,461.4)(39.6,464.7)(46.9,461.4)
+\curveto(54.2,458.2)(57.4,449.6)(54.2,442.3)
+\curveto(51,435)(42.4,431.7)(35.1,435)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(25,404.4)
+\curveto(17.4,406.8)(13.3,415)(15.8,422.6)
+\curveto(18.3,430.2)(26.4,434.3)(34,431.9)
+\curveto(41.6,429.4)(45.7,421.3)(43.2,413.7)
+\curveto(40.8,406.1)(32.6,401.9)(25,404.4)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(18.1,372.9)
+\curveto(10.3,374.5)(5.4,382.2)(7,390)
+\curveto(8.6,397.8)(16.3,402.8)(24.1,401.1)
+\curveto(31.9,399.4)(36.9,391.8)(35.2,384)
+\curveto(33.6,376.2)(26,371.2)(18.1,372.9)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(14.6,340.9)
+\curveto(6.7,341.7)(0.9,348.8)(1.8,356.8)
+\curveto(2.6,364.7)(9.7,370.5)(17.7,369.7)
+\curveto(25.6,368.9)(31.4,361.7)(30.5,353.8)
+\curveto(29.6,345.8)(22.5,340)(14.6,340.9)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(14.4,308.6)
+\curveto(6.4,308.6)(0,315.1)(0,323)
+\curveto(0,331)(6.5,337.4)(14.5,337.4)
+\curveto(22.4,337.4)(28.9,330.9)(28.9,322.9)
+\curveto(28.9,315.1)(22.4,308.6)(14.4,308.6)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(17.6,276.6)
+\curveto(9.7,275.701)(2.6,281.5)(1.7,289.401)
+\curveto(0.9,297.3)(6.6,304.401)(14.6,305.3)
+\curveto(22.5,306.1)(29.6,300.401)(30.4,292.401)
+\curveto(31.3,284.5)(25.6,277.4)(17.6,276.6)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(24.1,245)
+\curveto(16.3,243.3)(8.6,248.3)(7,256.1)
+\curveto(5.3,263.901)(10.3,271.5)(18.1,273.201)
+\curveto(25.9,274.801)(33.6,269.901)(35.2,262.1)
+\curveto(36.9,254.4)(32,246.7)(24.1,245)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(33.9,214.3)
+\curveto(26.3,211.8)(18.2,216)(15.7,223.6)
+\curveto(13.2,231.201)(17.4,239.3)(25,241.8)
+\curveto(32.6,244.3)(40.7,240.1)(43.2,232.5)
+\curveto(45.7,224.9)(41.5,216.8)(33.9,214.3)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(46.9,184.8)
+\curveto(39.6,181.5)(31.1,184.8)(27.8,192.1)
+\curveto(24.5,199.401)(27.8,207.901)(35.1,211.201)
+\curveto(42.4,214.401)(50.9,211.1)(54.1,203.801)
+\curveto(57.5,196.6)(54.2,188.1)(46.9,184.8)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(62.8,156.8)
+\curveto(55.9,152.8)(47.1,155.2)(43.1,162.1)
+\curveto(39.1,169)(41.5,177.8)(48.4,181.8)
+\curveto(55.3,185.8)(64.1,183.401)(68.1,176.5)
+\curveto(72.1,169.7)(69.8,160.8)(62.8,156.8)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(81.6,130.7)
+\curveto(75.2,126)(66.1,127.4)(61.5,133.9)
+\curveto(56.8,140.299)(58.2,149.4)(64.7,154.099)
+\curveto(71.1,158.799)(80.2,157.299)(84.8,150.9)
+\curveto(89.5,144.4)(88.1,135.4)(81.6,130.7)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(103.1,106.6)
+\curveto(97.2,101.2)(88,101.7)(82.7,107.7)
+\curveto(77.4,113.599)(77.8,122.7)(83.8,128.099)
+\curveto(89.7,133.4)(98.9,132.9)(104.2,126.999)
+\curveto(109.5,121.1)(109,111.9)(103.1,106.6)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(126.9,84.9)
+\curveto(121.6,79)(112.4,78.5)(106.5,83.799)
+\curveto(100.6,89.098)(100.1,98.199)(105.4,104.199)
+\curveto(110.7,110.098)(119.9,110.598)(125.8,105.199)
+\curveto(131.8,100)(132.2,90.8)(126.9,84.9)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(152.9,65.8)
+\curveto(148.2,59.3)(139.2,57.901)(132.7,62.6)
+\curveto(126.2,67.3)(124.8,76.3)(129.5,82.8)
+\curveto(134.2,89.2)(143.2,90.7)(149.7,86)
+\curveto(156.1,81.3)(157.6,72.3)(152.9,65.8)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(180.7,49.6)
+\curveto(176.7,42.701)(167.9,40.3)(161,44.3)
+\curveto(154.1,48.3)(151.7,57.1)(155.7,64)
+\curveto(159.7,70.9)(168.5,73.2)(175.4,69.2)
+\curveto(182.3,65.3)(184.7,56.5)(180.7,49.6)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(210,36.3)
+\curveto(206.8,29)(198.2,25.7)(190.9,29)
+\curveto(183.6,32.2)(180.3,40.8)(183.6,48.1)
+\curveto(186.8,55.401)(195.4,58.6)(202.7,55.401)
+\curveto(210,52.1)(213.3,43.6)(210,36.3)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(240.6,26.2)
+\curveto(238.2,18.599)(230,14.5)(222.4,16.9)
+\curveto(214.8,19.4)(210.7,27.5)(213.1,35.099)
+\curveto(215.6,42.7)(223.7,46.799)(231.3,44.299)
+\curveto(238.9,41.9)(243.1,33.8)(240.6,26.2)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(272.1,19.3)
+\curveto(270.5,11.5)(262.8,6.5)(255,8.2)
+\curveto(247.2,9.8)(242.2,17.5)(243.9,25.3)
+\curveto(245.6,33.1)(253.2,38.1)(261,36.401)
+\curveto(268.8,34.8)(273.8,27.1)(272.1,19.3)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.7764706 0.78431374 0.79215688}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(304.1,15.8)
+\curveto(303.3,7.901)(296.2,2.1)(288.2,3)
+\curveto(280.3,3.8)(274.5,10.9)(275.3,18.9)
+\curveto(276.1,26.799)(283.3,32.599)(291.2,31.7)
+\curveto(299.2,30.8)(305,23.7)(304.1,15.8)
+\closepath
+}
+}
+{
+\newrgbcolor{curcolor}{0.60784316 0.50588238 0.34117648}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=curcolor]
+{
+\newpath
+\moveto(291.4,500.2)
+\curveto(301.1,484.1)(307,462.5)(307,439.8)
+\curveto(307,435.5)(306.8,431.2)(306.3,426.9)
+\curveto(314.6,418.4)(321.3,409.1)(326,401.8)
+\curveto(327.6,410.1)(328.4,418.8)(328.4,427.4)
+\curveto(328.4,463.9)(314.9,501.1)(293.6,519.1)
+\curveto(284,522)(276.8,520.1)(274.4,519.3)
+\curveto(280.9,514.7)(286.6,508.1)(291.4,500.2)
+\closepath
+\moveto(302.4,527.6)
+\curveto(319.6,526.4)(337.6,516.9)(351.3,499.5)
+\curveto(365,482.1)(374.5,457.9)(374.5,430.5)
+\curveto(374.5,400.5)(363.1,368.7)(333.6,336.2)
+\curveto(340,335.8)(346.1,333.4)(350.5,329.8)
+\curveto(351.6,330)(352.7,330.1)(353.8,330.1)
+\lineto(354.5,330.1)
+\curveto(383.3,356.7)(394.6,389.2)(394.6,420.6)
+\curveto(394.6,450)(384.6,478.3)(369.5,499.2)
+\curveto(354.5,520.1)(334.6,533.4)(315.1,533.3)
+\curveto(308.3,533.3)(295.201,530)(288.6,526.5)
+\curveto(289.1,526.4)(294.5,528.1)(302.4,527.6)
+\closepath
+\moveto(372.7,501.3)
+\curveto(388.2,479.8)(398.4,450.8)(398.5,420.6)
+\curveto(398.5,389.2)(387.4,356.4)(359.4,329.5)
+\curveto(365.4,328.2)(370.7,325)(373.9,320.8)
+\curveto(374.299,320.2)(374.7,319.6)(375,319)
+\curveto(407,346.7)(419.5,380.5)(419.5,413.6)
+\curveto(419.5,446.6)(406.9,478.8)(388.4,502.7)
+\curveto(370,526.6)(345.8,542)(323,541.9)
+\curveto(312.4,541.9)(301.9,538.6)(292.3,531.1)
+\curveto(299.7,535.1)(307.401,537)(315.1,537)
+\curveto(336.4,536.9)(357.2,522.7)(372.7,501.3)
+\closepath
+\moveto(282.7,533.4)
+\curveto(277,534)(271.1,533.9)(265.2,533)
+\curveto(270.2,533)(275,532.1)(279.6,530.4)
+\curveto(280.5,531.4)(281.5,532.5)(282.7,533.4)
+\closepath
+\moveto(258.7,497.6)
+\curveto(264.6,487.7)(268.1,475)(268.1,463)
+\curveto(268.1,459.9)(267.9,456.8)(267.4,453.9)
+\curveto(272.3,451.7)(277.8,448.9)(283.8,445.1)
+\curveto(284,447.5)(284.1,449.9)(284.1,452.4)
+\curveto(284.1,468)(279.8,484.7)(272.5,497.4)
+\curveto(265.2,510.2)(255.1,518.7)(243.7,518.7)
+\curveto(238.8,518.7)(233.6,517.1)(228.1,513.6)
+\curveto(230.3,514.3)(232.5,514.6)(234.6,514.6)
+\curveto(244.5,514.6)(252.9,507.5)(258.7,497.6)
+\closepath
+\moveto(274.7,498.6)
+\curveto(282.2,485.4)(286.6,468.4)(286.6,452.4)
+\curveto(286.6,449.4)(286.4,446.5)(286.1,443.6)
+\curveto(289.6,441.3)(293.3,438.6)(297.1,435.6)
+\curveto(299.6,433.6)(301.9,431.5)(304.1,429.3)
+\curveto(304.4,432.8)(304.6,436.4)(304.6,439.9)
+\curveto(304.6,462.1)(298.8,483.4)(289.3,499)
+\curveto(279.8,514.6)(266.9,524.5)(252.7,524.5)
+\curveto(247.3,524.5)(241.6,523.1)(235.8,519.9)
+\curveto(238.5,520.7)(241.2,521.1)(243.8,521.1)
+\curveto(256.5,521.1)(267.2,511.7)(274.7,498.6)
+\closepath
+\moveto(247.5,460.9)
+\curveto(251.3,459.7)(257.4,458.1)(265,454.9)
+\curveto(265.4,457.5)(265.6,460.2)(265.6,463)
+\curveto(265.6,474.5)(262.2,486.9)(256.6,496.4)
+\curveto(251,505.9)(243.2,512.2)(234.6,512.1)
+\curveto(229.7,512.1)(224.3,510.1)(218.6,505.1)
+\curveto(235.7,512.7)(255.7,492)(247.5,460.9)
+\closepath
+\moveto(273.9,519.8)
+\curveto(274.4,521.3)(275.6,524.8)(278,528.3)
+\curveto(273.9,529.7)(269.6,530.5)(265.1,530.5)
+\curveto(259.2,530.5)(253,529.2)(246.5,526.3)
+\curveto(248.6,526.7)(250.7,526.9)(252.7,526.9)
+\curveto(260.3,526.9)(267.4,524.3)(273.9,519.8)
+\closepath
+\moveto(428.7,500)
+\curveto(430.9,497.5)(432.599,495.4)(434.599,492.7)
+\curveto(435.499,495.7)(437.499,498.8)(437.499,501.7)
+\curveto(441.499,499.1)(448.099,497.9)(451.699,493.7)
+\lineto(451.899,493.7)
+\curveto(458.999,503.7)(476.699,494.6)(472.899,484.5)
+\lineto(471.699,482.3)
+\curveto(469.699,479.4)(467.199,478.3)(464.899,478.2)
+\curveto(461.798,478.3)(459.298,480.2)(459.298,483.7)
+\curveto(459.298,485.2)(459.798,486.5)(460.399,487.5)
+\curveto(461.098,488.4)(461.899,488.9)(462.598,488.9)
+\curveto(463.199,488.9)(463.798,488.7)(464.498,487.9)
+\curveto(465.298,487.1)(465.498,486.5)(465.498,486.1)
+\curveto(465.498,485.7)(465.298,485.2)(464.898,484.9)
+\curveto(464.498,484.6)(463.998,484.4)(463.797,484.4)
+\lineto(463.697,484.4)
+\curveto(463.096,484.2)(462.297,484.5)(461.997,483.9)
+\curveto(461.697,483.3)(461.897,482.5)(462.497,482.2)
+\lineto(462.497,482.2)
+\curveto(462.897,482)(463.297,481.9)(463.697,481.9)
+\curveto(465.596,482)(467.797,483.5)(467.897,486.1)
+\curveto(467.897,487.3)(467.296,488.5)(466.197,489.6)
+\curveto(465.096,490.7)(463.797,491.3)(462.497,491.3)
+\curveto(458.997,491.2)(456.697,487.6)(456.697,483.7)
+\curveto(456.697,481.3)(457.596,479.2)(459.197,477.8)
+\curveto(460.697,476.4)(462.697,475.7)(464.897,475.7)
+\lineto(464.897,475.7)
+\curveto(467.596,475.7)(470.497,477)(472.796,479.6)
+\curveto(484.496,464.8)(484.096,446.4)(479.897,438.1)
+\curveto(527.7,488.7)(462.8,525.4)(428.7,500)
+\closepath
+\moveto(422.2,266.6)
+\curveto(441,286.901)(460.2,314.6)(465.5,356.201)
+\curveto(466.4,363.401)(466.8,370.401)(466.8,377.401)
+\curveto(466.8,386.501)(466.1,395.401)(464.7,404.101)
+\lineto(464.7,401.101)
+\curveto(464.7,354.901)(443.599,311.801)(407.599,284.101)
+\lineto(407.599,282.902)
+\curveto(407.599,282.202)(407.599,281.502)(407.499,280.902)
+\curveto(412.299,276.601)(415.799,269.801)(415.799,261.702)
+\curveto(415.799,261.101)(415.799,260.502)(415.699,259.902)
+\curveto(417.9,262)(420,264.2)(422.2,266.6)
+\closepath
+\moveto(442.8,496)
+\curveto(441.7,496.6)(440.5,497)(439.3,497.6)
+\curveto(439,496.1)(438.6,495.6)(438.1,494.1)
+\curveto(437.6,492.8)(437.201,491.3)(436.901,490.1)
+\curveto(439.8,486.5)(441.701,483.8)(443.3,481.3)
+\curveto(444,480)(446.7,474.8)(449.8,468.9)
+\curveto(453.3,462.1)(457.3,454.3)(458.901,450.6)
+\curveto(459.1,450.1)(459.6,449.9)(460.001,449.9)
+\curveto(460.201,449.9)(460.301,449.9)(460.501,450)
+\curveto(461.101,450.3)(461.401,451)(461.101,451.6)
+\curveto(458.501,457.6)(450.402,473.1)(446.902,479.7)
+\curveto(447.002,484.2)(448.002,488.2)(449.601,491.4)
+\curveto(447.7,493.3)(445.3,494.8)(442.8,496)
+\closepath
+\moveto(412.1,505.1)
+\curveto(432.1,480.1)(446.5,447.4)(446.5,412)
+\curveto(446.5,376.4)(431.8,338.2)(393.9,302.9)
+\curveto(394.099,302.4)(394.2,302)(394.4,301.5)
+\curveto(399,299.8)(402.299,296.9)(404.4,293.8)
+\curveto(405.7,291.901)(406.5,289.901)(407,288.1)
+\curveto(443,314.8)(461.1,355.3)(461.1,401.201)
+\curveto(461.1,411.501)(460,421.901)(457.8,432.301)
+\curveto(449.3,457.501)(435.5,479.901)(419,498.101)
+\curveto(416.7,500.5)(414.4,502.8)(412.1,505.1)
+\closepath
+\moveto(468.7,321.6)
+\curveto(467.9,321.6)(467.099,321.6)(466.3,321.701)
+\curveto(463.8,314.401)(460.8,307.501)(457.5,301.201)
+\curveto(473.7,307.1)(489.7,314.001)(500.3,327.301)
+\curveto(520.2,352.201)(520.8,405.201)(472.901,407.401)
+\curveto(473.6,403.401)(474.1,399.401)(474.501,395.301)
+\lineto(474.501,395.301)
+\curveto(474.501,395.301)(475.101,390.601)(475.201,387.201)
+\curveto(476.701,384.301)(477.301,381.701)(477.301,379.301)
+\curveto(477.301,376.301)(476.301,373.501)(474.701,370.901)
+\lineto(474.701,366.701)
+\curveto(477.6,370.301)(479.801,374.401)(479.801,379.301)
+\curveto(479.801,382.401)(478.501,386.201)(476.402,389.801)
+\curveto(476.402,389.801)(476.301,390.101)(476.502,390.401)
+\curveto(481.202,396.101)(486.302,398.301)(494.002,398.001)
+\curveto(495.902,394.801)(496.002,387.401)(495.902,382.801)
+\curveto(486.301,379.201)(483.702,371.901)(483.801,364.601)
+\curveto(483.801,357.801)(485.701,350.701)(485.701,344.901)
+\curveto(485.701,341.301)(485.001,338.401)(483.001,336.401)
+\curveto(482.501,335.901)(482.501,335.101)(483.001,334.701)
+\curveto(483.201,334.501)(483.601,334.301)(483.901,334.301)
+\curveto(484.201,334.301)(484.501,334.401)(484.8,334.701)
+\curveto(487.5,337.401)(488.3,341.101)(488.3,344.901)
+\curveto(488.3,351.101)(486.401,358.201)(486.401,364.601)
+\curveto(486.501,371.801)(487.501,377.901)(497.1,381.201)
+\curveto(497.3,381.301)(498.701,381.301)(499.1,381.301)
+\curveto(505.6,381.101)(510.901,374.201)(510.901,374.201)
+\curveto(492.2,375.9)(515.8,321.6)(468.7,321.6)
+\closepath
+\moveto(200.6,450.7)
+\lineto(200.6,448.7)
+\lineto(200.6,448.5)
+\lineto(200.6,448.3)
+\curveto(200.6,448.2)(200.5,447.7)(200.3,446.9)
+\curveto(205.2,447.9)(210.7,448.4)(216.8,448.4)
+\curveto(249.8,448.4)(297.4,431.9)(320.5,377.2)
+\curveto(323.1,380.4)(325.6,383.6)(327.9,387)
+\curveto(327.799,387.1)(327.7,387.2)(327.599,387.3)
+\curveto(323.7,394.3)(310.9,416.4)(293.299,430.6)
+\curveto(283.399,438.6)(274.399,443.8)(266.799,447.3)
+\curveto(244.899,456.8)(221.599,459.5)(200.099,458.5)
+\curveto(200.6,456)(200.6,453.5)(200.6,450.7)
+\closepath
+\moveto(391.4,504.8)
+\curveto(410.299,480.3)(423.2,447.4)(423.2,413.5)
+\curveto(423.2,380)(410.5,345.4)(378.7,317.2)
+\curveto(382.3,316)(385.5,313.8)(388,311.4)
+\curveto(389.6,309.799)(391,308.099)(392.1,306.299)
+\curveto(428.8,340.799)(442.701,377.599)(442.701,411.899)
+\curveto(442.701,449.199)(426.201,483.599)(404.001,508.799)
+\curveto(397.901,515.699)(391.401,521.899)(384.701,527.199)
+\curveto(365.401,539.699)(345.301,546.699)(327.901,546.699)
+\curveto(320.501,546.699)(313.701,545.499)(307.401,542.999)
+\curveto(312.501,544.599)(317.8,545.399)(323.1,545.399)
+\curveto(347.6,545.5)(372.5,529.3)(391.4,504.8)
+\closepath
+\moveto(287.4,329.7)
+\curveto(289.7,330.4)(291.9,330.8)(294.1,330.8)
+\curveto(295,330.8)(295.9,330.7)(296.7,330.6)
+\curveto(298.3,332.3)(300.4,333.5)(302.5,334.4)
+\curveto(305.8,335.7)(309.5,336.4)(313.2,336.4)
+\curveto(316.7,336.3)(320.099,335.9)(323.099,334.3)
+\curveto(325.599,335.5)(328.299,336.1)(330.999,336.3)
+\curveto(359.999,368.6)(370.899,401.5)(370.899,430.6)
+\curveto(370.899,457.2)(361.699,480.6)(348.499,497.3)
+\curveto(337.699,511)(318.899,524)(301.599,524.2)
+\curveto(309.899,521.3)(319.799,519.9)(333.699,500.8)
+\curveto(345.598,484.3)(354.699,460.9)(354.699,438.2)
+\curveto(354.699,428.8)(353.098,419.2)(349.598,409.8)
+\curveto(339.699,383.7)(322.899,365.9)(305.898,348.7)
+\curveto(299.6,342.4)(293.4,336.2)(287.4,329.7)
+\closepath
+\moveto(343.5,419.6)
+\curveto(352.3,470.2)(320.7,503.9)(303.8,514.5)
+\curveto(302.5,515.3)(301.2,516)(299.9,516.7)
+\curveto(319.2,496.8)(330.8,461.9)(330.9,427.5)
+\curveto(330.9,417.8)(330,408.1)(328,398.8)
+\curveto(329.4,396.5)(330.6,394.5)(331.5,392.9)
+\curveto(335.3,399)(338.6,405.6)(341.3,412.8)
+\curveto(342.2,415)(342.9,417.3)(343.5,419.6)
+\closepath
+\moveto(259.7,291.3)
+\lineto(259.7,291.3)
+\lineto(259.7,291.3)
+\lineto(259.7,291.3)
+\closepath
+\moveto(396,240.9)
+\curveto(398.4,243.2)(399.1,244.5)(401.9,247.599)
+\lineto(403.799,250.4)
+\lineto(404.299,251.4)
+\curveto(406.4,255.099)(407.099,258.5)(407.099,261.7)
+\curveto(407.2,268.099)(403.599,273.4)(400.299,275.5)
+\lineto(397.199,277.5)
+\lineto(398.699,280.9)
+\lineto(398.699,281)
+\curveto(398.699,281.1)(398.799,281.2)(398.799,281.4)
+\curveto(398.9,281.799)(398.9,282.299)(398.9,282.9)
+\curveto(398.9,284.7)(398.4,287)(397.099,289)
+\curveto(395.7,291)(393.599,292.9)(389.4,294)
+\lineto(386.2,294.8)
+\lineto(386.2,298.1)
+\curveto(386.3,299.1)(384.9,302.6)(382.099,305.1)
+\curveto(379.299,307.8)(375.7,309.6)(372.099,309.6)
+\lineto(367.799,309.6)
+\lineto(367.799,314)
+\curveto(367.799,314)(367.699,314.6)(367.099,315.4)
+\curveto(366.499,316.2)(365.4,317.299)(363.999,318.2)
+\curveto(361.199,320)(357.299,321.4)(353.999,321.4)
+\curveto(352.799,321.4)(351.699,321.2)(350.699,320.9)
+\lineto(348.199,320.099)
+\lineto(346.399,321.9)
+\curveto(343.598,324.799)(337.598,327.5)(332.399,327.5)
+\curveto(329.699,327.5)(327.298,326.9)(325.399,325.5)
+\lineto(322.399,323.4)
+\lineto(319.8,326)
+\curveto(319.3,326.7)(316.5,327.7)(313.2,327.7)
+\curveto(310.599,327.7)(307.8,327.2)(305.8,326.4)
+\curveto(303.7,325.6)(302.7,324.4)(302.7,324.2)
+\lineto(301.1,320.099)
+\lineto(297,321.7)
+\curveto(296.3,322)(295.3,322.2)(294.1,322.2)
+\curveto(290.2,322.2)(285.1,320.2)(282.4,315.2)
+\lineto(281.2,313)
+\lineto(273.4,313)
+\curveto(268.4,306.4)(263.8,299.2)(259.8,291.3)
+\lineto(259.8,291.3)
+\lineto(259.8,291.3)
+\curveto(259.8,291.3)(258,288.8)(255.8,283.901)
+\curveto(266.3,301.001)(284,315.201)(311.6,315.3)
+\curveto(320.401,315.3)(330.1,313.901)(340.901,310.6)
+\curveto(374.8,300.5)(383.501,280.8)(383.501,262)
+\curveto(383.501,244.3)(376.001,227.3)(375.201,219.6)
+\curveto(375.1,218.6)(375.001,217.701)(375.001,216.8)
+\curveto(375.001,206.401)(381.601,201.6)(387.701,201.6)
+\curveto(391.701,201.6)(395.401,203.6)(397.301,207.5)
+\curveto(397.101,207.3)(396.902,207.2)(396.701,207)
+\curveto(395.1,205.9)(393.201,205.4)(391.201,205.4)
+\curveto(389.001,205.4)(386.501,206.099)(384.6,207.9)
+\curveto(382.6,209.7)(379.401,213.799)(380.701,220.599)
+\curveto(382,227.3)(388.6,233.7)(396,240.9)
+\closepath
+\moveto(214.3,227)
+\curveto(219.4,223.4)(225.2,220.3)(230.1,219.2)
+\curveto(223.6,228.599)(218.3,240.2)(215.7,254.3)
+\curveto(213.2,255)(210.9,255.5)(208.9,255.901)
+\curveto(208.8,256.001)(208.6,256.201)(208.5,256.3)
+\curveto(208.6,255.7)(208.6,255.1)(208.6,254.5)
+\curveto(208.6,250.2)(207,243.5)(201.1,239.5)
+\curveto(202.8,236.7)(208.1,231.4)(214.3,227)
+\closepath
+\moveto(261.2,156.2)
+\curveto(269.1,159.8)(269.7,169.599)(269.7,174)
+\curveto(269.7,175.7)(268.6,178.1)(266.6,180)
+\curveto(265.3,181.3)(263.6,182.4)(261.8,183)
+\curveto(260,183.2)(258.2,183.5)(256.5,183.9)
+\curveto(254.4,184.4)(252.5,184.599)(250.7,184.599)
+\curveto(242.7,184.599)(238.1,179.7)(233.1,174.999)
+\curveto(232.6,173.399)(232.2,171.399)(232.2,169.199)
+\curveto(232.2,165.098)(233.3,160.499)(236,156.999)
+\curveto(238.1,154.399)(241,152.299)(245.2,151.399)
+\curveto(248.8,150.999)(255.6,152.699)(261.2,155.899)
+\lineto(261.2,156.2)
+\closepath
+\moveto(234.1,155.6)
+\curveto(230.9,159.701)(229.7,164.8)(229.7,169.3)
+\curveto(229.7,170.3)(229.8,171.3)(229.9,172.2)
+\curveto(226.3,169.099)(222.2,166.5)(216.3,166)
+\curveto(213.3,165.8)(210.2,165.7)(207.1,165.7)
+\curveto(204.5,165.7)(201.9,165.7)(199.3,165.8)
+\curveto(196.7,165.8)(194.2,165.901)(191.7,165.901)
+\curveto(178.1,165.901)(166.8,164.401)(166.7,153.501)
+\curveto(166.8,148.501)(169.1,141.601)(174.5,132.101)
+\curveto(174.5,132.101)(175.3,130.801)(176.8,128.902)
+\curveto(175.4,132.301)(174.6,135.801)(174.6,139.402)
+\curveto(174.6,142.902)(175.4,146.402)(177.2,149.502)
+\curveto(178.7,152.102)(181.1,153.702)(183.8,154.502)
+\curveto(186.5,155.302)(189.4,155.502)(192.5,155.502)
+\curveto(196.5,155.502)(200.7,155.202)(204.7,155.202)
+\curveto(210.8,155.202)(216.2,156.002)(219.5,159.402)
+\lineto(219.5,159.402)
+\curveto(220.2,160.101)(221.4,160.101)(222.1,159.402)
+\curveto(222.8,158.702)(222.8,157.502)(222.1,156.801)
+\curveto(217.5,152.201)(211,151.501)(204.6,151.501)
+\curveto(200.4,151.501)(196.2,151.901)(192.4,151.801)
+\curveto(189.5,151.801)(186.8,151.601)(184.8,150.902)
+\curveto(182.7,150.202)(181.3,149.301)(180.3,147.601)
+\curveto(178.9,145.202)(178.2,142.402)(178.2,139.402)
+\curveto(178.2,134.402)(180.1,129.002)(183.2,124.702)
+\curveto(186.3,120.402)(190.4,117.502)(194.7,116.902)
+\curveto(195.6,116.801)(196.5,116.702)(197.2,116.702)
+\curveto(201.8,116.802)(204,118.502)(205.7,121.402)
+\curveto(207.4,124.301)(208.1,128.601)(208.7,132.702)
+\curveto(208.8,133.202)(209.1,133.702)(209.6,134.002)
+\curveto(220.6,140.802)(221.6,145.802)(224.9,149.102)
+\curveto(225.6,149.802)(226.8,149.802)(227.5,149.102)
+\curveto(228.2,148.403)(228.2,147.203)(227.5,146.502)
+\curveto(225.4,144.502)(223.2,138.202)(212.3,131.302)
+\curveto(211.7,127.302)(211,123.102)(209,119.502)
+\curveto(207.2,116.202)(204.1,113.602)(199.5,113.002)
+\curveto(203.2,112.102)(207.2,111.902)(211.5,112.602)
+\curveto(228.1,120.302)(238.5,140.002)(242.8,149.403)
+\curveto(239.1,150.8)(236.1,153)(234.1,155.6)
+\closepath
+\moveto(178.4,227)
+\curveto(182.2,223.2)(191.4,221.9)(195.9,226.3)
+\curveto(198,221.1)(212,186.6)(270.9,187.401)
+\curveto(264.4,189.401)(255.1,193.6)(245.2,202.201)
+\curveto(241,205.901)(236.9,210.1)(233.1,215.1)
+\curveto(226.3,215.401)(218.7,219.401)(212.1,224)
+\curveto(206,228.4)(200.9,233.2)(198.4,236.8)
+\curveto(195.7,236.1)(193.2,235.8)(191,235.8)
+\curveto(185.4,235.8)(181,237.8)(178.1,240.901)
+\curveto(175.2,244.001)(173.9,248.001)(173.9,251.8)
+\curveto(173.9,254)(174.3,256.1)(175.2,258)
+\curveto(171.3,255.5)(168.2,252.6)(166.7,250.6)
+\curveto(133.8,254.701)(116.2,252.3)(109.6,246.8)
+\curveto(104.4,236.3)(100,215.901)(133.4,206.2)
+\curveto(132.1,207.5)(132.3,208.8)(133.1,210)
+\curveto(129,211)(125.4,212.6)(122.4,214.7)
+\curveto(116.7,218.7)(113.4,224.599)(113.4,231.599)
+\curveto(113.4,232.099)(113.4,232.599)(113.5,233.099)
+\curveto(113.7,236.9)(115.5,239.7)(118.2,241.2)
+\curveto(120.9,242.7)(124.2,243.099)(127.8,243.099)
+\curveto(134.7,243.099)(143.1,241.599)(150.6,241.599)
+\curveto(158.5,241.599)(165,243.099)(168.6,248.7)
+\lineto(168.6,248.7)
+\curveto(169.2,249.599)(170.3,249.8)(171.2,249.2)
+\curveto(172.1,248.599)(172.3,247.5)(171.7,246.599)
+\curveto(167,239.4)(158.8,237.799)(150.6,237.799)
+\curveto(142.6,237.799)(134.2,239.299)(127.8,239.299)
+\curveto(124.5,239.299)(121.7,238.9)(120,237.9)
+\curveto(118.3,236.9)(117.4,235.7)(117.2,232.799)
+\lineto(117.2,231.499)
+\curveto(117.2,225.699)(119.7,221.099)(124.6,217.599)
+\curveto(129.3,214.299)(136.3,212.299)(145.2,212.2)
+\curveto(148.4,215.599)(149.9,219.099)(149.8,221.5)
+\curveto(149.8,222.1)(149.7,222.6)(149.6,223)
+\curveto(149.4,223.7)(149.6,224.4)(150.1,224.9)
+\curveto(151.3,226.099)(152.8,226.5)(154.2,226.799)
+\curveto(155.7,227.099)(157.3,227.4)(159,227.9)
+\curveto(162.4,228.9)(166.2,230.599)(170.1,235.7)
+\curveto(170.7,236.5)(171.9,236.7)(172.7,236.099)
+\curveto(173.5,235.499)(173.7,234.299)(173.1,233.499)
+\curveto(166.6,224.799)(159,224.099)(155.1,223.199)
+\curveto(154.4,223.098)(153.9,222.899)(153.5,222.699)
+\curveto(153.6,222.299)(153.6,221.899)(153.6,221.499)
+\curveto(153.6,217.499)(151.4,213.099)(147.3,209.099)
+\curveto(147.1,208.9)(146.8,208.7)(146.5,208.599)
+\curveto(146.5,207.9)(146.2,207.2)(145.4,206.4)
+\curveto(153.2,205.7)(163.5,203.299)(168.5,208.299)
+\curveto(173.4,213.3)(174.9,223.5)(178.4,227)
+\closepath
+\moveto(137.5,369.6)
+\curveto(138.8,371.1)(150.4,383.1)(157.7,388.3)
+\curveto(150.7,386.6)(139.4,380.6)(129.8,372.9)
+\curveto(131.7,371.5)(135.2,369.9)(137.5,369.6)
+\closepath
+\moveto(139.8,354.8)
+\curveto(144.9,360)(162.2,379.5)(161.1,383.3)
+\curveto(155.1,377.5)(150.2,373.2)(147.6,370.2)
+\curveto(143.7,365.7)(141,361.9)(139.8,354.8)
+\closepath
+\moveto(112.4,270.4)
+\curveto(112.4,281.4)(130.8,280)(133.9,291.9)
+\curveto(137.4,305.2)(123.1,305.799)(129.8,316.2)
+\curveto(120.1,322.7)(110.1,319.099)(110.1,327.2)
+\curveto(110.1,335.4)(128.6,339.3)(135.6,363.3)
+\curveto(135.6,363.3)(133.7,358.2)(128.3,353.7)
+\curveto(113.3,341.3)(96,340.4)(95.4,324)
+\curveto(94.7,306.2)(114.8,294.5)(107.6,287.3)
+\curveto(100.6,280.3)(108.9,273.9)(112.4,270.4)
+\closepath
+\moveto(191.5,437.6)
+\curveto(197.2,430.6)(211.2,411.6)(211.2,392.9)
+\curveto(211.2,385.5)(208.9,378)(202.9,371.7)
+\curveto(245.8,352.7)(214.3,317.599)(219.2,256.099)
+\curveto(223.3,232.4)(235.3,215.9)(247.7,204.999)
+\curveto(259.6,194.499)(270.3,187.999)(279.2,187.999)
+\curveto(279.4,187.999)(280.4,188.199)(280.6,188.299)
+\curveto(267.1,193.199)(254.7,205.299)(248.9,216.799)
+\curveto(246.1,222.4)(243.7,229.299)(242.6,235.099)
+\curveto(241.6,240.599)(241.5,243.299)(241.5,249.999)
+\curveto(241.5,277.999)(252,295.099)(252,295.099)
+\curveto(264.7,320.299)(282.8,337.599)(299.7,354.7)
+\curveto(306,361)(312.099,367.4)(317.7,374)
+\curveto(295.5,428.5)(248.9,444.7)(216.7,444.7)
+\curveto(210.1,444.7)(204.2,444)(199.2,442.9)
+\lineto(199.2,442.9)
+\curveto(198.9,442.8)(198.6,442.8)(198.3,442.9)
+\curveto(196.9,441.1)(194.8,439.1)(191.5,437.6)
+\closepath
+\moveto(351.3,167.9)
+\curveto(347.7,163.4)(341.1,158.9)(329.7,155.5)
+\curveto(316.8,151.7)(304.7,149.7)(294,149.7)
+\curveto(283.8,149.7)(274.7,151.5)(267,155)
+\curveto(266.1,154.3)(265.1,153.6)(264,153)
+\curveto(261.7,148.3)(258.3,145.3)(253.8,143.4)
+\curveto(294.6,128)(363.6,139.299)(381.7,155.2)
+\lineto(381.7,156.4)
+\curveto(381.7,159.099)(381.8,161.5)(382,163.7)
+\lineto(381,163.7)
+\curveto(368.4,163.7)(358.6,165.7)(351.3,167.9)
+\closepath
+\moveto(396,161.5)
+\curveto(399.4,161.5)(402.8,162.1)(405.9,163.2)
+\curveto(413.9,164.8)(421.4,168.099)(427.099,171)
+\curveto(409.599,165.8)(394.999,163.9)(382.9,163.7)
+\curveto(386.4,162.4)(390.7,161.5)(396,161.5)
+\closepath
+\moveto(414.5,154.1)
+\curveto(410.6,140.5)(433.7,139.6)(443.2,141.701)
+\curveto(441.5,142.701)(440.099,144.301)(439.3,146.801)
+\curveto(438.2,150.201)(439.401,153.402)(441.401,155.601)
+\curveto(435,158.9)(418.3,167.3)(414.5,154.1)
+\closepath
+\moveto(553,374.7)
+\curveto(550.8,446.1)(503.9,525.6)(428.7,533.7)
+\curveto(423.099,527.5)(418.2,521.4)(413.9,515.4)
+\curveto(417.799,511.7)(421.599,507.9)(425.299,503.8)
+\curveto(425.499,503.6)(425.699,503.3)(425.9,503.1)
+\curveto(426.5,503.6)(427.2,504.1)(427.799,504.6)
+\curveto(445.999,517.4)(483.099,519.7)(498.699,487.7)
+\curveto(514.098,456.1)(484.899,432.1)(484.899,432.1)
+\curveto(481.598,429.2)(475.699,426.3)(468.798,424.9)
+\curveto(469.998,420.5)(470.998,416.1)(471.899,411.6)
+\lineto(472.098,411.6)
+\curveto(491.598,413.1)(513.498,401.4)(517.498,373.2)
+\curveto(525.298,318)(470.098,296.3)(452.198,290.099)
+\curveto(449.597,288.9)(448.798,287.099)(448.798,287.099)
+\curveto(453.498,286.4)(457.598,282.7)(460.098,277.7)
+\curveto(461.298,275.2)(461.798,273)(461.798,271)
+\curveto(461.798,266.2)(458.698,262.6)(454.399,260.1)
+\curveto(450.098,257.6)(444.499,256.401)(440.499,256.401)
+\curveto(438.699,256.401)(437.099,256.701)(436.199,257.1)
+\curveto(435.699,257.3)(435.399,257.5)(435.299,257.701)
+\curveto(435.4,258.1)(435.499,258.6)(435.699,259.001)
+\curveto(439.199,266.801)(458.199,258.001)(454.799,275.301)
+\curveto(453.699,280.701)(450.699,283.101)(446.599,283.501)
+\curveto(431.499,261.501)(413.599,246.301)(401.7,234.801)
+\curveto(394.4,227.902)(388.8,223.301)(387.599,219.701)
+\curveto(387.2,218.501)(386.2,214.901)(388.499,212.501)
+\curveto(389.099,211.901)(389.999,211.101)(390.899,211.001)
+\curveto(396.999,210.001)(397.699,216.801)(397.699,216.801)
+\curveto(398.699,215.501)(399.299,214.001)(399.299,212.402)
+\curveto(399.299,212.002)(399.199,211.601)(399.199,211.202)
+\lineto(399.199,210.902)
+\curveto(398.199,204.002)(392.899,200.402)(387.399,200.402)
+\lineto(387.3,200.402)
+\curveto(383.901,200.402)(380.401,201.801)(377.7,204.502)
+\curveto(375,207.302)(373.3,211.402)(373.3,216.902)
+\curveto(373.3,217.801)(373.401,218.801)(373.5,219.801)
+\curveto(374.4,227.902)(381.8,244.701)(381.8,262.101)
+\curveto(381.8,280.501)(373.6,299.402)(340.1,309.501)
+\curveto(329.401,312.701)(319.8,314.101)(311.1,314.101)
+\curveto(279.5,314.101)(261.1,295.101)(251.8,274.702)
+\curveto(249.7,268.002)(247.8,259.402)(247.3,248.902)
+\curveto(247.1,244.502)(247.5,239.202)(248,235.301)
+\curveto(248.6,231.301)(251.1,222.902)(253.8,217.301)
+\curveto(259.6,205.701)(268.2,194.601)(279.7,189.801)
+\lineto(281.5,189.101)
+\curveto(287.4,190.402)(290.8,191.601)(297.2,193.902)
+\lineto(298.7,194.402)
+\curveto(308.9,198.101)(318.5,201.601)(327.8,201.601)
+\curveto(333.8,201.601)(339,200.301)(343.7,197.301)
+\curveto(344.3,197.001)(344.8,196.601)(345.3,196.201)
+\lineto(348.2,193.901)
+\lineto(348.2,193.901)
+\lineto(348.9,193.201)
+\curveto(352.5,189.401)(355.2,183.901)(354.799,178.1)
+\curveto(354.599,175.701)(353.9,172.901)(352.199,170.1)
+\curveto(359.199,168)(368.499,166.201)(380.499,166.201)
+\curveto(394.799,166.201)(413.099,168.801)(435.899,176.701)
+\lineto(435.999,176.701)
+\curveto(436.099,176.701)(436.099,176.801)(436.099,176.801)
+\curveto(474.299,176.801)(459.099,152.101)(454.9,157.001)
+\curveto(450.299,162.201)(439.4,154.801)(442.5,146.301)
+\curveto(447.2,133.101)(468.7,144.801)(471,153.501)
+\curveto(466.6,124.701)(421.8,137.001)(411.5,138.401)
+\curveto(399.4,140.1)(394.5,128.901)(396.2,118.6)
+\curveto(397.599,110.1)(392.3,102.3)(389.9,100)
+\curveto(407,96.7)(415.099,111.2)(421.799,115.8)
+\curveto(428.599,120.5)(453.199,118.2)(467.099,128.901)
+\curveto(481,139.5)(479.2,165.1)(479.2,168.1)
+\curveto(482.4,169.401)(493.2,173.8)(493.2,186.201)
+\curveto(493.2,197.001)(485.2,202.401)(477,201.401)
+\curveto(467.9,200.3)(465.2,189.1)(475.5,188.901)
+\curveto(473.2,191.201)(475.9,194.701)(479,193.001)
+\curveto(483.7,190.401)(478.4,182.601)(468.7,184.201)
+\curveto(465.3,184.801)(457.599,185.901)(450.3,186.901)
+\curveto(505.7,215.9)(556.1,275.2)(553,374.7)
+\closepath
+\moveto(435.5,254.8)
+\curveto(436.9,254.2)(438.7,254)(440.8,254)
+\curveto(445.401,254)(451.2,255.3)(456,258)
+\curveto(460.8,260.7)(464.7,265.1)(464.7,271)
+\curveto(464.7,273.4)(464.099,276)(462.7,278.8)
+\curveto(462,280.2)(461.3,281.3)(460.4,282.3)
+\curveto(465.2,278.6)(467.599,275)(468.599,271.8)
+\curveto(468.799,271)(468.999,270.2)(469.2,269.5)
+\curveto(469.3,268.7)(469.4,268)(469.4,267.3)
+\curveto(469.4,264.8)(468.799,262.6)(468.099,260.901)
+\curveto(464.7,251.5)(455.8,247.1)(445.9,247)
+\curveto(444.299,247)(442.599,247.1)(441,247.4)
+\curveto(438.3,248.9)(435.9,251.7)(435.4,255)
+\curveto(435.4,254.8)(435.4,254.8)(435.5,254.8)
+\closepath
+\moveto(436.1,245.8)
+\curveto(439.3,244.901)(442.6,244.5)(445.8,244.5)
+\lineto(445.901,244.5)
+\curveto(456.401,244.5)(466.401,249.4)(470.3,259.8)
+\curveto(470,250.5)(465.3,246.401)(458.901,243.1)
+\curveto(452.3,239.701)(444.001,237.6)(438.001,232.6)
+\curveto(433.201,228.6)(431.201,223.701)(431.201,218.8)
+\curveto(431.201,211.8)(435.1,204.8)(440.1,199)
+\curveto(405,220.5)(420.6,241.6)(436.1,245.8)
+\closepath
+\moveto(452.6,224.5)
+\curveto(439.8,220.2)(441.8,205.1)(443.201,199.1)
+\curveto(437.801,204.901)(433.701,212.1)(433.701,218.701)
+\curveto(433.701,222.901)(435.301,227.001)(439.6,230.6)
+\curveto(445,235.201)(453.1,237.3)(460,240.8)
+\curveto(466.9,244.3)(472.8,249.7)(472.8,260.401)
+\curveto(472.8,263.201)(472.401,266.3)(471.6,269.8)
+\curveto(470.701,275.8)(466.201,282.8)(453.8,289.401)
+\curveto(463.901,288.701)(482.7,284.201)(486,265.001)
+\curveto(489.7,243.8)(468.7,229.9)(452.6,224.5)
+\closepath
+\moveto(281.2,184.7)
+\curveto(276.6,183.599)(272,182.9)(267.3,182.8)
+\curveto(267.7,182.5)(268,182.2)(268.4,181.901)
+\curveto(270.7,179.6)(272.2,176.901)(272.3,174.1)
+\curveto(272.3,170.8)(272.1,164.1)(268.3,159)
+\curveto(270.5,156.8)(281.7,154.5)(281.7,154.5)
+\curveto(283.1,154.3)(284,154.4)(285,154.4)
+\curveto(288.3,154.4)(290.7,156.2)(292.5,159.099)
+\curveto(294.2,161.999)(295.1,165.999)(295.1,169.799)
+\curveto(295.1,170.799)(295,171.9)(294.9,172.9)
+\curveto(293.8,180.5)(289.1,184.9)(281.9,184.9)
+\curveto(281.6,184.7)(281.4,184.7)(281.2,184.7)
+\closepath
+\moveto(298.9,190.4)
+\curveto(295.1,189)(291.3,187.599)(287.4,186.4)
+\curveto(292.9,184.5)(296.6,179.599)(297.4,173)
+\curveto(297.5,171.9)(297.6,170.8)(297.6,169.6)
+\curveto(297.6,165.401)(296.6,161)(294.6,157.6)
+\curveto(293.7,156.1)(292.6,154.8)(291.3,153.8)
+\curveto(298.5,153.6)(305.7,154.3)(312.5,155.5)
+\lineto(312.5,155.5)
+\curveto(320.6,156.6)(325.2,166.3)(325.2,174.5)
+\curveto(325.2,175.6)(325.099,176.7)(324.9,177.7)
+\curveto(323.7,185.099)(316.599,193.3)(307.4,193.3)
+\curveto(304.7,192.5)(301.8,191.4)(298.9,190.4)
+\closepath
+\moveto(342.3,194)
+\curveto(337.901,196.9)(333.2,198)(328.3,198)
+\curveto(323.401,198)(318.2,196.9)(312.8,195.2)
+\curveto(320.8,192.7)(326.3,185.3)(327.5,178.3)
+\curveto(327.7,177.1)(327.8,175.901)(327.8,174.6)
+\curveto(327.8,168.701)(325.6,161.8)(321.3,157.5)
+\curveto(323.901,158.1)(326.3,158.8)(328.7,159.5)
+\curveto(337.9,162.2)(351.099,169)(351.8,178.4)
+\lineto(351.8,178.299)
+\curveto(351.8,178.699)(351.901,178.999)(351.901,179.4)
+\curveto(351.7,186.1)(346.1,191.3)(342.3,194)
+\closepath
+\moveto(124.6,372.3)
+\curveto(139.1,383.8)(159.7,393.3)(163.6,389.4)
+\curveto(167.5,385.5)(151.7,361.4)(135,344.7)
+\curveto(148.8,344.7)(163.4,347.4)(194.7,374.5)
+\curveto(198.5,380.2)(200,386.1)(200,392)
+\curveto(200.1,410.6)(184.6,429)(178.3,435.6)
+\curveto(170.3,436.8)(167.6,442.5)(167.5,442.8)
+\lineto(167.4,443.1)
+\lineto(167.3,443.4)
+\curveto(167.3,443.6)(166.4,448.1)(166.9,454.1)
+\curveto(145,449.2)(128.2,441.5)(121.7,436.1)
+\curveto(121.7,436.1)(123.6,433.7)(122.8,428.8)
+\curveto(126.4,427.3)(132.4,435.8)(140.9,432.2)
+\curveto(148.2,429)(154.9,422.4)(162.3,423.4)
+\lineto(163,420.3)
+\curveto(155,418)(147.7,426)(140.2,428.8)
+\curveto(132.4,431.8)(126.3,423.4)(122.1,425.9)
+\curveto(121.8,424.9)(121.3,423.7)(120.7,422.5)
+\curveto(121.3,418.1)(124.1,412.6)(128.3,409.3)
+\curveto(128.4,409.2)(128.5,409)(128.5,408.8)
+\curveto(128.5,408.6)(128.4,408.4)(128.3,408.3)
+\curveto(125.1,405.7)(106.6,392.3)(101.8,387.6)
+\curveto(102.1,387.4)(102.4,387.2)(102.8,387)
+\curveto(109.4,382.9)(117.4,378.9)(122.4,378.9)
+\lineto(123.3,378.9)
+\curveto(125.9,381)(147.7,395.5)(160.4,395.6)
+\curveto(164.4,395.6)(167.7,394)(168.7,389.9)
+\curveto(168.8,389.6)(168.6,389.2)(168.3,389.1)
+\curveto(168,389)(167.6,389.2)(167.5,389.5)
+\curveto(166.6,392.9)(164.1,394.2)(160.4,394.2)
+\curveto(148.2,394.3)(124.9,378.7)(124,377.7)
+\curveto(123.9,377.6)(123.8,377.5)(123.6,377.5)
+\curveto(123.2,377.5)(122.8,377.4)(122.4,377.4)
+\curveto(112.4,377.5)(94.5,390.6)(90.8,393.4)
+\curveto(93.6,385.4)(108,374.8)(124.6,372.3)
+\closepath
+\moveto(136,408.7)
+\curveto(126.6,410.2)(125.5,420.7)(125.5,420.7)
+\curveto(127.8,426.2)(141.1,427.3)(148.8,416.8)
+\curveto(148.8,416.8)(143.4,407.5)(136,408.7)
+\closepath
+\moveto(184.9,262.5)
+\curveto(180.7,260.4)(177.7,256.6)(177.7,251.9)
+\curveto(177.8,245.9)(181.7,239.599)(191.1,239.5)
+\curveto(193.1,239.5)(195.4,239.8)(198,240.5)
+\curveto(204.4,243.5)(206.2,250.2)(206.2,254.4)
+\curveto(206.2,255.2)(206.1,255.9)(206,256.4)
+\curveto(205.8,257.299)(205.6,258.2)(205.3,258.9)
+\curveto(198.4,263.9)(191.2,264.2)(184.9,262.5)
+\closepath
+\moveto(100.7,388.4)
+\curveto(105.3,392.9)(122.3,405.4)(126.8,408.8)
+\curveto(122.9,412.1)(120.4,416.5)(119.7,420.8)
+\curveto(119.4,420.2)(119,419.5)(118.5,418.9)
+\curveto(112.3,409.2)(98.6,401.4)(90.8,395)
+\curveto(91.5,394.5)(95.5,391.5)(100.6,388.2)
+\curveto(100.7,388.3)(100.7,388.4)(100.7,388.4)
+\closepath
+\moveto(208.7,392.9)
+\curveto(208.8,410.9)(194.2,430.5)(189,436.7)
+\curveto(188.5,436.6)(188.1,436.4)(187.6,436.3)
+\curveto(185.6,435.8)(183.7,435.6)(181.9,435.5)
+\curveto(189,427.6)(202.4,410.4)(202.5,392.1)
+\curveto(202.5,386)(201,379.9)(197.2,374)
+\curveto(198.3,373.6)(199.4,373.2)(200.4,372.8)
+\lineto(200.4,372.8)
+\curveto(206.5,378.7)(208.7,385.7)(208.7,392.9)
+\closepath
+\moveto(159.6,456.1)
+\curveto(157.3,460.5)(152.9,464.6)(140.5,471)
+\curveto(133.4,463.1)(132.9,454)(134.1,447)
+\curveto(141.3,450.6)(149.9,453.7)(159.6,456.1)
+\closepath
+\moveto(186.9,439.3)
+\curveto(196.7,441.7)(197.5,448.8)(197.5,448.8)
+\curveto(197.5,457.5)(198.9,461.8)(183.6,477.1)
+\curveto(165.7,466.7)(170.3,444.2)(170.3,444.2)
+\curveto(170.3,444.2)(174,436.1)(186.9,439.3)
+\closepath
+}
+}
+\end{pspicture}
+\end{document}
Property changes on: trunk/Master/texmf-dist/doc/xelatex/xepersian/xepersian-logo.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/xelatex/xepersian/xepersian.pdf
===================================================================
(Binary files differ)
Index: trunk/Master/texmf-dist/doc/xelatex/xepersian/xepersian.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/xelatex/xepersian/xepersian.pdf 2020-05-16 21:27:48 UTC (rev 55164)
+++ trunk/Master/texmf-dist/doc/xelatex/xepersian/xepersian.pdf 2020-05-16 21:33:48 UTC (rev 55165)
Property changes on: trunk/Master/texmf-dist/doc/xelatex/xepersian/xepersian.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/fonts/misc/xetex/fontmapping/xepersian/persian-tex-text.map
===================================================================
--- trunk/Master/texmf-dist/fonts/misc/xetex/fontmapping/xepersian/persian-tex-text.map (rev 0)
+++ trunk/Master/texmf-dist/fonts/misc/xetex/fontmapping/xepersian/persian-tex-text.map 2020-05-16 21:33:48 UTC (rev 55165)
@@ -0,0 +1,59 @@
+;;
+;; This is file `persian-tex-text.map',
+;; generated with the docstrip utility.
+;;
+;; The original source files were:
+;;
+;; xepersian.dtx (with options: `persian-tex-text.map')
+;;
+;; __________________________________________________
+;; Copyright (c) 2008--2020 Vafa Khalighi
+;; Copyright (c) 2018--2020 bidi-tex GitHub Organization
+;;
+;; It may be distributed and/or modified under the LaTeX Project Public License,
+;; version 1.3c or higher (your choice). The latest version of
+;; this license is at: http://www.latex-project.org/lppl.txt
+;;
+;; This work is “author-maintained” (as per LPPL maintenance status)
+;; by Vafa Khalighi.
+;;
+;;
+LHSName "persian-TeX-text"
+RHSName "Unicode"
+
+pass(Unicode)
+U+0030 <> U+06F0 ;
+U+0031 <> U+06F1 ;
+U+0032 <> U+06F2 ;
+U+0033 <> U+06F3 ;
+U+0034 <> U+06F4 ;
+U+0035 <> U+06F5 ;
+U+0036 <> U+06F6 ;
+U+0037 <> U+06F7 ;
+U+0038 <> U+06F8 ;
+U+0039 <> U+06F9 ;
+
+U+002C <> U+060C ; comma > arabic comma
+U+003F <> U+061F ; question mark -> arabic qm
+U+003B <> U+061B ; semicolon -> arabic semicolon
+
+; ligatures from Knuth's original CMR fonts
+U+002D U+002D <> U+2013 ; -- -> en dash
+U+002D U+002D U+002D <> U+2014 ; --- -> em dash
+
+U+0027 <> U+2019 ; ' -> right single quote
+U+0027 U+0027 <> U+201D ; '' -> right double quote
+U+0022 > U+201D ; " -> right double quote
+
+U+0060 <> U+2018 ; ` -> left single quote
+U+0060 U+0060 <> U+201C ; `` -> left double quote
+
+U+0021 U+0060 <> U+00A1 ; !` -> inverted exclam
+U+003F U+0060 <> U+00BF ; ?` -> inverted question
+
+; additions supported in T1 encoding
+U+002C U+002C <> U+201E ; ,, -> DOUBLE LOW-9 QUOTATION MARK
+U+003C U+003C <> U+00AB ; << -> LEFT POINTING GUILLEMET
+U+003E U+003E <> U+00BB ; >> -> RIGHT POINTING GUILLEMET
+;;
+;; End of file `persian-tex-text.map'.
Property changes on: trunk/Master/texmf-dist/fonts/misc/xetex/fontmapping/xepersian/persian-tex-text.map
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/fonts/misc/xetex/fontmapping/xepersian/persian-tex-text.tec
===================================================================
(Binary files differ)
Index: trunk/Master/texmf-dist/fonts/misc/xetex/fontmapping/xepersian/persian-tex-text.tec
===================================================================
--- trunk/Master/texmf-dist/fonts/misc/xetex/fontmapping/xepersian/persian-tex-text.tec 2020-05-16 21:27:48 UTC (rev 55164)
+++ trunk/Master/texmf-dist/fonts/misc/xetex/fontmapping/xepersian/persian-tex-text.tec 2020-05-16 21:33:48 UTC (rev 55165)
Property changes on: trunk/Master/texmf-dist/fonts/misc/xetex/fontmapping/xepersian/persian-tex-text.tec
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-basics.ltx
===================================================================
--- trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-basics.ltx (rev 0)
+++ trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-basics.ltx 2020-05-16 21:33:48 UTC (rev 55165)
@@ -0,0 +1,1472 @@
+\documentclass{ltxdoc}
+\input{xepersian-doc-preamble.ltx}
+\begin{document}
+\section{Basics\label{basics}}
+\subsection{Loading The Package}
+You can load the package in the ordinary way;
+\begin{BDef}
+\Lcs{usepackage}\OptArgs\Largb{xepersian}
+\end{BDef}
+Where \texttt{options} of the package are explained later in \autoref{options}.
+
+When loading the package, it is important to know that:
+\begin{enumerate}
+\item \textsf{xepersian} should be the last package that you load, because otherwise you are certainly going to overwrite \textsf{bidi} and \textsf{\XePersian} package's definitions and consequently, you will not get the expected output.
+\item In fact, in addition to \textsf{bidi}, \textsf{\XePersian} also makes sure that some specific packages are loaded before \textsf{bidi} and \textsf{\XePersian}; these are those packages that \textsf{bidi} and \textsf{\XePersian} modifies them for bidirectional and Persian/English typesetting.
+
+If you load \textsf{\XePersian} before any of these packages, then you will get an error saying that you should load \textsf{\XePersian} or \textsf{bidi} as your last package. When it says that you should load \textsf{bidi} package as your last package, it really means that you should load \textsf{\XePersian} as your last package as \textsf{bidi} package is loaded automatically by \textsf{\XePersian} package.
+
+For instance, consider the following minimal example:
+\begin{lstlisting}[morekeywords={settextfont}]
+\documentclass{minimal}
+\usepackage{xepersian}
+\usepackage{enumerate}
+\settextfont{XB Niloofar}
+\begin{document}
+*\parsitext{این فقط یک آزمایش است}*
+\end{document}
+\end{lstlisting}
+Where \textsf{enumerate} is loaded after \textsf{\XePersian}. If you run \texttt{xelatex} on this document, you will get an error which looks like this:
+\begin{lstlisting}[numbers=none,backgroundcolor=\color{blue!30},frame=none,framexleftmargin=1mm]
+! Package xepersian Error: Oops! you have loaded package enumerate after xepersian package. Please load package enumerate before xepersian package, and then try to run xelatex on your document again.
+
+See the xepersian package documentation for explanation.
+Type H <return> for immediate help.
+ ...
+
+l.5 \begin{document}
+
+?
+
+\end{lstlisting}
+\end{enumerate}
+\subsection{\textsf{\XePersian}'s Symbol}
+ As you may know lion symbolizes \TeX{} but lion does not symbolizes \textsf{\XePersian}. \textbf{Simorgh}\footnote{\textbf{Simorgh} is an Iranian benevolent, mythical flying creature which has been shown on the titlepage of this documentation. For more details see \url{http://en.wikipedia.org/wiki/Simurgh}} (shown on the first page of this documentation) symbolizes \textsf{\XePersian}.
+\subsection{Commands for Version number, and Date of The Package}
+\begin{BDef}
+\Lcs{xepersianversion}\quad\Lcs{xepersiandate}
+\end{BDef}
+\begin{itemize}
+\item \Lcs{xepersianversion} gives the current version of the package.
+\item \Lcs{xepersiandate} gives the current date of the package.
+\end{itemize}
+\begin{lstlisting}[morekeywords={settextfont,XePersian,xepersianversion,xepersiandate}]
+\documentclass{article}
+\usepackage{xepersian}
+\settextfont{XB Niloofar}
+\begin{document}
+\begin{latin}
+This is typeset by \textsf{\XePersian} package,\xepersianversion,
+\xepersiandate.
+\end{latin}
+\end{document}
+\end{lstlisting}
+\subsection{{Options of The Package\label{options}}}
+There are few options:
+\subsubsection{\texttt{defaultlatinfontfeatures} Option}
+\begin{BDef}
+\texttt{defaultlatinfontfeatures}$=$\Larga{value}
+\end{BDef}
+The \texttt{defaultlatinfontfeatures} option allows you to pass font features to the main Latin font. \Larga{value} is a set of font features.
+\subsubsection{\texttt{extrafootnotefeatures} Option}
+This is just the \texttt{extrafootnotefeatures} Option of \textsf{bidi} package. If you enable this option, you can typeset footnotes in paragraph form or in multi-columns (from two-columns to ten-columns). For more details, please read the manual of \textsf{bidi} package.
+\subsubsection{\texttt{Kashida} Option}
+If you pass \texttt{Kashida} option to the package, you will use Kashida for stretching words for better output quality and getting rid of underfull or overfull \Lcs{hbox} messages.
+
+Note that you can not use \texttt{Kashida} option when you are using Nastaliq-like font (well, you still can use \texttt{Kashida} option when you use any Nastaliq-like font, but I can not guarantee high quality output!).
+
+\bigskip
+The following two commands are provided when you activate the \texttt{Kashida} option:
+\begin{BDef}
+\Lcs{KashidaOn}\quad\Lcs{KashidaOff}
+\end{BDef}
+\begin{itemize}
+\item \Lcs{KashidaOn} enables Kashida and is active by default when \texttt{Kashida} option is activated.
+\item \Lcs{KashidaOff} disables Kashida.
+\end{itemize}
+
+\subsubsection{\texttt{quickindex} Option}
+When you generally want to prepare index for your Persian documents, you need to first run \texttt{xelatex}, then \texttt{xindy}, and again \texttt{xelatex} on your document respectively, which is very time consuming. The \texttt{quickindex} option gives you the index with only and only one run of \texttt{xelatex}. To use this feature, you will need to run \texttt{xelatex --shell-escape} on your \TeX{} document; otherwise you get an error which indicates that shell scape (or write18) is not enabled.
+
+ This option is now obsolete and equivalent to \texttt{quickindex-variant2} option.
+\subsubsection{\texttt{quickindex-variant1} Option}
+ Same as \texttt{quickindex} Option but uses variant one (in which \parsitext{آ} is grouped under \parsitext{ا}) for sorting Persian alphabets.
+\subsubsection{\texttt{quickindex-variant2} Option}
+ Same as \texttt{quickindex} Option but uses variant two (in which \parsitext{آ} is a separate letter) for sorting Persian alphabets.
+\subsubsection{\texttt{localise} Option}
+This option allows you to use most frequently-used \LaTeX\ commands and environments in Persian, almost like what \TeX-e-Parsi offers. This is still work in progress and we wish to add lots more Persian equivalents of \LaTeX\ and \TeX\ commands and environments. The Persian equivalents of \LaTeX\ and \TeX\ commands are shown in \autoref{lcs}, The Persian equivalents of \XePersian\ commands are shown in \autoref{xcs}, Persian equivalents of \LaTeX\ environments are shown in \autoref{lenv} and Persian equivalents of \XePersian\ environments are shown in \autoref{xenv}
+
+Please note that the Persian equivalents of \LaTeX\ and \TeX\ commands and environments are only available after loading \textsf{xepersian} package. This means that you have to write all commands or environments that come before \Lcs{usepackage}\Largb{xepersian}, in its original form, i.e. \Lcs{documentclass}.
+
+Not only you can use Persian equivalents of \LaTeX\ and \TeX\ commands and environments, but still original \LaTeX\ and \TeX\ commands and environments work too.
+
+The \TeX\, \LaTeX\, and \XePersian\ commands and environments and their Persian equivalents listed in \autoref{lcs}, \autoref{xcs}, \autoref{lenv} and \autoref{xenv} is not the whole story; If any command and environment in \autoref{lcs}, \autoref{xcs}, \autoref{lenv} and \autoref{xenv} have a starred version, their starred version also work. For example in \autoref{lcs}, the Persian equivalent of \Lcs{chapter} is \Pcs{فصل}. I know that \Lcs{chapter} has a starred version, so this means \Pcs{فصل*} is also the Persian equivalent of \Lcs{chapter*}. Is that clear?
+
+\medskip
+However there is more; you can localise any other commands/environments you want. You can use the following commands to localise your own commands/environments:
+\begin{BDef}
+\Lcs{eqcommand}\Largb{\Larga{command-name in Persian}}\Largb{\Larga{original \LaTeX{} command-name}}\\
+\Lcs{eqenvironment}\Largb{\Larga{environment-name in Persian}}\Largb{\Larga{original \LaTeX{} environment-name}}
+\end{BDef}
+
+\begin{center}
+\tablecaption{The Equivalent \LaTeX\ and \TeX\ Commands\label{lcs}}
+\tablehead
+ {\bfseries Command in \TeX\ or \LaTeX\ &\bfseries Equivalent Persian Command\\ \hline}
+\tabletail
+ {\hline \multicolumn{2}{r}{\emph{Continued on next page}}\\}
+\tablelasttail{\hline}
+\begin{supertabular}{lr}
+\bicsintabular{شمعجدول}{@arstrut}
+\bicsintabular{فوق}{above}
+\bicsintabular{فاصلهکوتاهبالاینمایش}{abovedisplayshortskip}
+\bicsintabular{فاصلهبالاینمایش}{abovedisplayskip}
+\bicsintabular{عنوانچکیده}{abstractname}
+\bicsintabular{اکسنت}{accent}
+\bicsintabular{فعال}{active}
+\bicsintabular{بیفزاسطرفهرست}{addcontentsline}
+\bicsintabular{اضافهبرجریمه}{addpenalty}
+\bicsintabular{نشانی}{address}
+\bicsintabular{بیفزابهفهرست}{addtocontents}
+\bicsintabular{اضافهبرشمارنده}{addtocounter}
+\bicsintabular{اضافهبربعد}{addtolength}
+\bicsintabular{بیفزافضایو}{addvspace}
+\bicsintabular{تنظیمبدنمایی}{adjdemerits}
+\bicsintabular{بیفزابر}{advance}
+\bicsintabular{بعدازانتساب}{afterassignment}
+\bicsintabular{بعدازگروه}{aftergroup}
+\bicsintabular{الف}{aleph}
+\bicsintabular{خصیصهمستعارقلم}{aliasfontfeature}
+\bicsintabular{انتخابخصیصهمستعارقلم}{aliasfontfeatureoption}
+\bicsintabular{شکستنی}{allowbreak}
+\bicsintabular{تخصی@}{alloc@}
+\bicsintabular{تخصیصیافته}{allocationnumber}
+\bicsintabular{شکستنمایشمجاز}{allowdisplaybreaks}
+\bicsintabular{حروفبزرگ}{Alph}
+\bicsintabular{حروفکوچک}{alph}
+\bicsintabular{نامهمچنین}{alsoname}
+\bicsintabular{و}{and}
+\bicsintabular{زاویه}{angle}
+\bicsintabular{عنوانپیوست}{appendixname}
+\bicsintabular{تقریب}{approx}
+\bicsintabular{عربی}{arabic}
+\bicsintabular{آرگ}{arg}
+\bicsintabular{رنگخطجدول}{arrayrulecolor}
+\bicsintabular{فاصلهستونهایآرایه}{arraycolsep}
+\bicsintabular{ضخامتخطجدول}{arrayrulewidth}
+\bicsintabular{کشیدگیآرایه}{arraystretch}
+\bicsintabular{درآغازنوشتار}{AtBeginDocument}
+\bicsintabular{درپایاننوشتار}{AtEndDocument}
+\bicsintabular{درانتهایطبقه}{AtEndOfClass}
+\bicsintabular{درانتهایسبک}{AtEndOfPackage}
+\bicsintabular{نویسنده}{author}
+\bicsintabular{مطلبپشت}{backmatter}
+\bicsintabular{شکافپشت}{backslash}
+\bicsintabular{بدنمایی}{badness}
+\bicsintabular{میله}{bar}
+\bicsintabular{فاصلهکرسی}{baselineskip}
+\bicsintabular{کششفاصلهکرسی}{baselinestretch}
+\bicsintabular{پردازشدستهای}{batchmode}
+\bicsintabular{شروع}{begin}
+\bicsintabular{شروعچپ}{beginL}
+\bicsintabular{شروعراست}{beginR}
+\bicsintabular{شروعگروه}{begingroup}
+\bicsintabular{فاصلهکوتاهپاییننمایش}{belowdisplayshortskip}
+\bicsintabular{فاصلهپاییننمایش}{belowdisplayskip}
+\bicsintabular{سیاه}{bf}
+\bicsintabular{پیشفرضسیاه}{bfdefault}
+\bicsintabular{شمایلسیاه}{bfseries}
+\bicsintabular{شرگروه}{bgroup}
+\bicsintabular{مرجوع}{bibitem}
+\bicsintabular{کتابنامه}{bibliography}
+\bicsintabular{سبککتابنامه}{bibliographystyle}
+\bicsintabular{عنوانکتابنامه}{bibname}
+\bicsintabular{پرشبلند}{bigskip}
+\bicsintabular{مقدارپرشبلند}{bigskipamount}
+\bicsintabular{خطپایینشناور}{botfigrule}
+\bicsintabular{علامتپایین}{botmark}
+\bicsintabular{کادرتاپایین}{bottompageskip}
+\bicsintabular{نسبتپایین}{bottomfraction}
+\bicsintabular{کادر}{box}
+\bicsintabular{حداکثرعمقکادر}{boxmaxdepth}
+\bicsintabular{بشکن}{break}
+\bicsintabular{گلوله}{bullet}
+\bicsintabular{دوپن@پنج}{@cclv}
+\bicsintabular{دوپن@شش}{@cclvi}
+\bicsintabular{شرح}{caption}
+\bicsintabular{کدرده}{catcode}
+\bicsintabular{رونوشت}{cc}
+\bicsintabular{نامرونوشت}{ccname}
+\bicsintabular{نقطهوسط}{cdot}
+\bicsintabular{نقاطوسط}{cdots}
+\bicsintabular{تنظیمازوسط}{centering}
+\bicsintabular{خطوسط}{centerline}
+\bicsintabular{چک@ن}{ch at ck}
+\bicsintabular{فصل}{chapter}
+\bicsintabular{عنوانفصل}{chaptername}
+\bicsintabular{نویسه}{char}
+\bicsintabular{تعریفنویسه}{chardef}
+\bicsintabular{برسیفرمان}{CheckCommand}
+\bicsintabular{مرجع}{cite}
+\bicsintabular{خطایطبقه}{ClassError}
+\bicsintabular{اطلاعطبقه}{ClassInfo}
+\bicsintabular{هشدارطبقه}{ClassWarning}
+\bicsintabular{هشدارطبقهبیسطر}{ClassWarningNoLine}
+\bicsintabular{نشانگرمرکزی}{cleaders}
+\bicsintabular{دوصفحهپاک}{cleardoublepage}
+\bicsintabular{صفحهپاک}{clearpage}
+\bicsintabular{خطناپر}{cline}
+\bicsintabular{ببندورودی}{closein}
+\bicsintabular{ببندخروجی}{closeout}
+\bicsintabular{بستن}{closing}
+\bicsintabular{جریمهسربند}{clubpenalty}
+\bicsintabular{خاج}{clubsuit}
+\bicsintabular{علامتپایینستوناول}{colbotmark}
+\bicsintabular{علامتاولستوناول}{colfirstmark}
+\bicsintabular{رنگ}{color}
+\bicsintabular{کادررنگ}{colorbox}
+\bicsintabular{علامتبالایستوناول}{coltopmark}
+\bicsintabular{رنگستون}{columncolor}
+\bicsintabular{بینستون}{columnsep}
+\bicsintabular{پهنایستون}{columnwidth}
+\bicsintabular{خطبینستون}{columnseprule}
+\bicsintabular{سطرفهرست}{contentsline}
+\bicsintabular{عنوانفهرستمطالب}{contentsname}
+\bicsintabular{کپی}{copy}
+\bicsintabular{حقتالیف}{copyright}
+\bicsintabular{شمار}{count}
+\bicsintabular{شمار@}{count@}
+\bicsintabular{تعریفشمار}{countdef}
+\bicsintabular{سخ}{cr}
+\bicsintabular{سخسخ}{crcr}
+\bicsintabular{نامفرمان}{csname}
+\bicsintabular{گزینهجاری}{CurrentOption}
+\bicsintabular{کادربینابین}{dashbox}
+\bicsintabular{بینابینع}{dashv}
+\bicsintabular{@تاریخ}{@date}
+\bicsintabular{تاریخ}{date}
+\bicsintabular{روز}{day}
+\bicsintabular{خطپایینشناورپهن}{dblbotfigrule}
+\bicsintabular{نسبتپهنپایین}{dblbottomfraction}
+\bicsintabular{خطبالایشناورپهن}{dblfigrule}
+\bicsintabular{نسبتصفحهشناورپهن}{dblfloatpagefraction}
+\bicsintabular{فاصلهبینشناورپهن}{dblfloatsep}
+\bicsintabular{کدمکانغیرهمانطور}{dblfntlocatecode}
+\bicsintabular{فاصلهمتنوشناورپهن}{dbltextfloatsep}
+\bicsintabular{نسبتپهنبالا}{dbltopfraction}
+\bicsintabular{اعلانقلمثابت}{DeclareFixedFont}
+\bicsintabular{اعلانپسوندگرافیک}{DeclareGraphicsExtensions}
+\bicsintabular{اعلاندستورگرافیک}{DeclareGraphicsRule}
+\bicsintabular{اعلانفرمانقلمقدیمی}{DeclareOldFontCommand}
+\bicsintabular{اعلانگزینه}{DeclareOption}
+\bicsintabular{اعلانفرمانقوی}{DeclareRobustCommand}
+\bicsintabular{اعلانقلمعلائم}{DeclareSymbolFont}
+\bicsintabular{دوربسته}{deadcycles}
+\bicsintabular{تر}{def}
+\bicsintabular{تعریف@کلید}{define at key}
+\bicsintabular{تعریفرنگ}{definecolor}
+\bicsintabular{درجه}{deg}
+\bicsintabular{کدجداساز}{delcode}
+\bicsintabular{جداساز}{delimiter}
+\bicsintabular{ضریبجداساز}{delimiterfactor}
+\bicsintabular{گودی}{depth}
+\bicsintabular{خشت}{diamondsuit}
+\bicsintabular{ابعاد}{dim}
+\bicsintabular{بعد}{dimen}
+\bicsintabular{بعد@}{dimen@}
+\bicsintabular{بعد@یک}{dimen at i}
+\bicsintabular{بعد@دو}{dimen at ii}
+\bicsintabular{تعریفبعد}{dimendef}
+\bicsintabular{تیرهگذاری}{discretionary}
+\bicsintabular{شکستنمایش}{displaybreak}
+\bicsintabular{تورفتگینمایش}{displayindent}
+\bicsintabular{سبکنمایش}{displaystyle}
+\bicsintabular{عرضنمایش}{displaywidth}
+\bicsintabular{تقسیم}{divide}
+\bicsintabular{طبقهنوشتار}{documentclass}
+\bicsintabular{کن}{do}
+\bicsintabular{تعویضکدها}{dospecials}
+\bicsintabular{نقطه}{dot}
+\bicsintabular{نقطهمساوی}{doteq}
+\bicsintabular{پرنقطها}{dotfill}
+\bicsintabular{نقاط}{dots}
+\bicsintabular{کادردولا}{doublebox}
+\bicsintabular{رنگفاصلهدوخطجدول}{doublerulesepcolor}
+\bicsintabular{فاصلهبیندوخط}{doublerulesep}
+\bicsintabular{فلشپایین}{downarrow}
+\bicsintabular{عمق}{dp}
+\bicsintabular{تخلیه}{dump}
+\bicsintabular{ترگ}{edef}
+\bicsintabular{پاگروه}{egroup}
+\bicsintabular{انتهایفاصله}{eject}
+\bicsintabular{گرنه}{else}
+\bicsintabular{تاکید}{em}
+\bicsintabular{کششلاجرم}{emergencystretch}
+\bicsintabular{موکد}{emph}
+\bicsintabular{@پوچ}{@empty}
+\bicsintabular{پوچ}{empty}
+\bicsintabular{مجموعهپوچ}{emptyset}
+\bicsintabular{پایان}{end}
+\bicsintabular{پایانچپ}{endL}
+\bicsintabular{پایانراست}{endR}
+\bicsintabular{پایاننامفرمان}{endcsname}
+\bicsintabular{پایاناولینسر}{endfirsthead}
+\bicsintabular{پایانپا}{endfoot}
+\bicsintabular{تهبند}{endgraf}
+\bicsintabular{پایانگروه}{endgroup}
+\bicsintabular{پایانسر}{endhead}
+\bicsintabular{پایانورودی}{endinput}
+\bicsintabular{پایانآخرینپا}{endlastfoot}
+\bicsintabular{گسترشاینصفحه}{enlargethispage}
+\bicsintabular{تهسطر}{endline}
+\bicsintabular{نویسهتهسطر}{endlinechar}
+\bicsintabular{اندوری}{enspace}
+\bicsintabular{انفاصله}{enskip}
+\bicsintabular{فرمانجانشین}{eqcommand}
+\bicsintabular{محیطجانشین}{eqenvironment}
+\bicsintabular{ارجاعفر}{eqref}
+\bicsintabular{کمکخطا}{errhelp}
+\bicsintabular{پیامخطا}{errmessage}
+\bicsintabular{سطرمتنخطا}{errorcontextlines}
+\bicsintabular{پردازشتوقفخطا}{errorstopmode}
+\bicsintabular{نویسهویژه}{escapechar}
+\bicsintabular{یورو}{euro}
+\bicsintabular{حاشیهزوج}{evensidemargin}
+\bicsintabular{هرسخ}{everycr}
+\bicsintabular{هرنمایش}{everydisplay}
+\bicsintabular{هرکادرا}{everyhbox}
+\bicsintabular{هرکار}{everyjob}
+\bicsintabular{هرریاضی}{everymath}
+\bicsintabular{هربند}{everypar}
+\bicsintabular{هرکادرو}{everyvbox}
+\bicsintabular{اجرایگزینهها}{ExecuteOptions}
+\bicsintabular{جریمهاضافیتیرهبندی}{exhyphenpenalty}
+\bicsintabular{بگسترپساز}{expandafter}
+\bicsintabular{فاصلهاضافیبینستونها}{extracolsep}
+\bicsintabular{@اولیازیک}{@firstofone}
+\bicsintabular{@اولیازدو}{@firstoftwo}
+\bicsintabular{چ@ار}{f at ur}
+\bicsintabular{خانواده}{fam}
+\bicsintabular{صفحهتجملی}{fancypage}
+\bicsintabular{کادربا}{fbox}
+\bicsintabular{ضخامتکادربا}{fboxrule}
+\bicsintabular{حاشیهکادربا}{fboxsep}
+\bicsintabular{کادربارنگ}{fcolorbox}
+\bicsintabular{رگ}{fi}
+\bicsintabular{عنوانشکل}{figurename}
+\bicsintabular{پرشکن}{filbreak}
+\bicsintabular{پر}{fill}
+\bicsintabular{علامتاول}{firstmark}
+\bicsintabular{پهن}{flat}
+\bicsintabular{نسبتصفحهشناور}{floatpagefraction}
+\bicsintabular{جریمهشناور}{floatingpenalty}
+\bicsintabular{فاصلهبینشناور}{floatsep}
+\bicsintabular{تنظیمازپایین}{flushbottom}
+\bicsintabular{شکلبندی}{fmtname}
+\bicsintabular{ردهشکلبندی}{fmtversion}
+\bicsintabular{نشانه}{fnsymbol}
+\bicsintabular{قلم}{font}
+\bicsintabular{بعدقلم}{fontdimen}
+\bicsintabular{رمزینهقلم}{fontencoding}
+\bicsintabular{فامیلقلم}{fontfamily}
+\bicsintabular{نامقلم}{fontname}
+\bicsintabular{شمایلقلم}{fontseries}
+\bicsintabular{شکلقلم}{fontshape}
+\bicsintabular{اندازهقلم}{fontsize}
+\bicsintabular{بلندایپایینصفحه}{footheight}
+\bicsintabular{درجزیرنویس}{footins}
+\bicsintabular{زیرنویس}{footnote}
+\bicsintabular{علامتزیرنویس}{footnotemark}
+\bicsintabular{خطزیرنویس}{footnoterule}
+\bicsintabular{فاصلهتازیرنویس}{footnotesep}
+\bicsintabular{اندازهزیرنویس}{footnotesize}
+\bicsintabular{متنزیرنویس}{footnotetext}
+\bicsintabular{فاصلهتاپایینصفحه}{footskip}
+\bicsintabular{فریم}{frame}
+\bicsintabular{کادرباخط}{framebox}
+\bicsintabular{فواصلیکنواختلاتین}{frenchspacing}
+\bicsintabular{مطلبپیش}{frontmatter}
+\bicsintabular{بعدبگذار}{futurelet}
+\bicsintabular{@خورحریصانه}{@gobble}
+\bicsintabular{@خورحریصانهدو}{@gobbletwo}
+\bicsintabular{@خورحریصانهچهار}{@gobblefour}
+\bicsintabular{@عاقتآ}{@gtempa}
+\bicsintabular{@عاقتب}{@gtempb}
+\bicsintabular{ترع}{gdef}
+\bicsintabular{الگویاطلاع}{GenericInfo}
+\bicsintabular{الگویهشدار}{GenericWarning}
+\bicsintabular{الگویخطا}{GenericError}
+\bicsintabular{عام}{global}
+\bicsintabular{تعاریفعام}{globaldefs}
+\bicsintabular{لغتنامه}{glossary}
+\bicsintabular{فقرهفرهنگ}{glossaryentry}
+\bicsintabular{خوششکن}{goodbreak}
+\bicsintabular{کاغذگراف}{graphpaper}
+\bicsintabular{گیومهچپ}{guillemotleft}
+\bicsintabular{گیومهراست}{guillemotright}
+\bicsintabular{گیومهتکیچپ}{guilsinglleft}
+\bicsintabular{گیومهتکیراست}{guilsinglright}
+\bicsintabular{ردیفا}{halign}
+\bicsintabular{بروتو}{hang}
+\bicsintabular{بعدازسطر}{hangafter}
+\bicsintabular{تورفتگیثابت}{hangindent}
+\bicsintabular{بدنماییا}{hbadness}
+\bicsintabular{کادرا}{hbox}
+\bicsintabular{بلندایسرصفحه}{headheight}
+\bicsintabular{فاصلهازسرصفحه}{headsep}
+\bicsintabular{سربهنام}{headtoname}
+\bicsintabular{دل}{heartsuit}
+\bicsintabular{بلندا}{height}
+\bicsintabular{پرا}{hfil}
+\bicsintabular{پررا}{hfill}
+\bicsintabular{رفعپرا}{hfilneg}
+\bicsintabular{پرزافقی}{hfuzz}
+\bicsintabular{فاصلهمخفی}{hideskip}
+\bicsintabular{عرضپنهان}{hidewidth}
+\bicsintabular{خطپر}{hline}
+\bicsintabular{حاشیها}{hoffset}
+\bicsintabular{حفظدرج}{holdinginserts}
+\bicsintabular{فاصلهاگرد}{hrboxsep}
+\bicsintabular{خطا}{hrule}
+\bicsintabular{پرخطا}{hrulefill}
+\bicsintabular{طولسطر}{hsize}
+\bicsintabular{فاصلها}{hskip}
+\bicsintabular{فضایا}{hspace}
+\bicsintabular{هردوا}{hss}
+\bicsintabular{ارتفاع}{ht}
+\bicsintabular{بزرگ}{huge}
+\bicsintabular{بزرگتر}{Huge}
+\bicsintabular{ابرپیوند}{hyperlink}
+\bicsintabular{بارگذاریابر}{hypersetup}
+\bicsintabular{هدفابر}{hypertarget}
+\bicsintabular{تیرهبندی}{hyphenation}
+\bicsintabular{نویسهتیره}{hyphenchar}
+\bicsintabular{جریمهتیرهبندی}{hyphenpenalty}
+\bicsintabular{@گرکلاسفراخوانیشده}{@ifclassloaded}
+\bicsintabular{@گرترشدنی}{@ifdefinable}
+\bicsintabular{@گرنویسهبعدی}{@ifnextchar}
+\bicsintabular{@گرسبکفراخوانیشده}{@ifpackageloaded}
+\bicsintabular{@گرستاره}{@ifstar}
+\bicsintabular{@گرتعریفنشده}{@ifundefined}
+\bicsintabular{گر}{if}
+\bicsintabular{گر@سواقتآ}{if at tempswa}
+\bicsintabular{گرانواع}{ifcase}
+\bicsintabular{گررده}{ifcat}
+\bicsintabular{گرتعریفشده}{ifdefined}
+\bicsintabular{گربعد}{ifdim}
+\bicsintabular{گرتهپرونده}{ifeof}
+\bicsintabular{گرر}{iff}
+\bicsintabular{گرنادرست}{iffalse}
+\bicsintabular{گرپروندهموجود}{IfFileExists}
+\bicsintabular{گرکادرا}{ifhbox}
+\bicsintabular{گرحالتا}{ifhmode}
+\bicsintabular{گردرونی}{ifinner}
+\bicsintabular{گرحالتریاضی}{ifmmode}
+\bicsintabular{گرعدد}{ifnum}
+\bicsintabular{گرفرد}{ifodd}
+\bicsintabular{گرآنگاهدیگر}{ifthenelse}
+\bicsintabular{گردرست}{iftrue}
+\bicsintabular{گرکادرو}{ifvbox}
+\bicsintabular{گرحالتو}{ifvmode}
+\bicsintabular{گرتهی}{ifvoid}
+\bicsintabular{گرتام}{ifx}
+\bicsintabular{فاصلهخالیراندیدهبگیر}{ignorespaces}
+\bicsintabular{فوری}{immediate}
+\bicsintabular{شامل}{include}
+\bicsintabular{درجتصویر}{includegraphics}
+\bicsintabular{مشمولین}{includeonly}
+\bicsintabular{تورفتگی}{indent}
+\bicsintabular{درنمایه}{index}
+\bicsintabular{استعلام}{indexentry}
+\bicsintabular{عنواننمایه}{indexname}
+\bicsintabular{فاصلهرهنما}{indexspace}
+\bicsintabular{ورودی}{input}
+\bicsintabular{ورودپروندهگرموجود}{InputIfFileExists}
+\bicsintabular{شمارهسطرورودی}{inputlineno}
+\bicsintabular{درج}{insert}
+\bicsintabular{جریمهدرج}{insertpenalties}
+\bicsintabular{جریمهبینسطرهایزیرنویس}{interfootnotelinepenalty}
+\bicsintabular{جریمهبینسطرهاینمایش}{interdisplaylinepenalty}
+\bicsintabular{جریمهبینسطرها}{interlinepenalty}
+\bicsintabular{متنداخلی}{intertext}
+\bicsintabular{فاصلهشناوردرمتن}{intertextsep}
+\bicsintabular{مخفی}{invisible}
+\bicsintabular{پیشفرضای}{itdefault}
+\bicsintabular{شکلایتالیک}{itshape}
+\bicsintabular{فقره}{item}
+\bicsintabular{تورفتگیفقره}{itemindent}
+\bicsintabular{فاصلهفقره}{itemsep}
+\bicsintabular{تکرارکن}{iterate}
+\bicsintabular{شکلای}{itshape}
+\bicsintabular{نامکار}{jobname}
+\bicsintabular{قلپ}{jot}
+\bicsintabular{دوری}{kern}
+\bicsintabular{الگو}{kill}
+\bicsintabular{برچسب}{label}
+\bicsintabular{برچسبشمارشیک}{labelenumi}
+\bicsintabular{برچسبشمارشدو}{labelenumii}
+\bicsintabular{برچسبشمارشسه}{labelenumiii}
+\bicsintabular{برچسبشمارشچهار}{labelenumiv}
+\bicsintabular{برچسبفقرهیک}{labelitemi}
+\bicsintabular{برچسبفقرهدو}{labelitemii}
+\bicsintabular{برچسبفقرهسه}{labelitemiii}
+\bicsintabular{برچسبفقرهچهار}{labelitemiv}
+\bicsintabular{فاصلهازبرچسب}{labelsep}
+\bicsintabular{پهنایبرچسب}{labelwidth}
+\bicsintabular{زبان}{language}
+\bicsintabular{درشت}{large}
+\bicsintabular{درشتتر}{Large}
+\bicsintabular{درشتدرشت}{LARGE}
+\bicsintabular{آخرینکادر}{lastbox}
+\bicsintabular{آخریندوری}{lastkern}
+\bicsintabular{آخرینجریمه}{lastpenalty}
+\bicsintabular{آخرینفاصله}{lastskip}
+\bicsintabular{لاتک}{LaTeX}
+\bicsintabular{لاتکای}{LaTeXe}
+\bicsintabular{کدکوچک}{lccode}
+\bicsintabular{نقاطخ}{ldots}
+\bicsintabular{نشانگر}{leaders}
+\bicsintabular{ترکو}{leavevmode}
+\bicsintabular{چپ}{left}
+\bicsintabular{حاشیهچپ}{leftmargin}
+\bicsintabular{حاشیهچپیک}{leftmargini}
+\bicsintabular{حاشیهچپدو}{leftmarginii}
+\bicsintabular{حاشیهچپسه}{leftmarginiii}
+\bicsintabular{حاشیهچپچهار}{leftmarginiv}
+\bicsintabular{حاشیهچپپنج}{leftmarginv}
+\bicsintabular{حاشیهچپشش}{leftmarginvi}
+\bicsintabular{علامتچپ}{leftmark}
+\bicsintabular{کادرتاچپ}{leftpageskip}
+\bicsintabular{فاصلهابتدایسطر}{leftskip}
+\bicsintabular{بگذار}{let}
+\bicsintabular{سطر}{line}
+\bicsintabular{سطرشکن}{linebreak}
+\bicsintabular{جریمهسطر}{linepenalty}
+\bicsintabular{فاصلهسطرها}{lineskip}
+\bicsintabular{حدفاصلهسطر}{lineskiplimit}
+\bicsintabular{کششفاصلهسطر}{linespread}
+\bicsintabular{ضخامتخط}{linethickness}
+\bicsintabular{پهنایسطر}{linewidth}
+\bicsintabular{عنوانفهرستاشکال}{listfigurename}
+\bicsintabular{لیستپروندهها}{listfiles}
+\bicsintabular{فهرستاشکال}{listoffigures}
+\bicsintabular{فهرستجداول}{listoftables}
+\bicsintabular{تورفتگیبندلیست}{listparindent}
+\bicsintabular{عنوانفهرستجداول}{listtablename}
+\bicsintabular{بارکنطبقه}{LoadClass}
+\bicsintabular{بارکنطبقهباگزینه}{LoadClassWithOptions}
+\bicsintabular{مکان}{location}
+\bicsintabular{بلند}{long}
+\bicsintabular{حلقه}{loop}
+\bicsintabular{گسیختگی}{looseness}
+\bicsintabular{انتقالبپایین}{lower}
+\bicsintabular{@دیگر}{@makeother}
+\bicsintabular{@زار}{@m}
+\bicsintabular{ده@زار}{@M}
+\bicsintabular{ده@زاریک}{@Mi}
+\bicsintabular{ده@زاردو}{@Mii}
+\bicsintabular{ده@زارسه}{@Miii}
+\bicsintabular{ده@زارچهار}{@Miv}
+\bicsintabular{بیس@زار}{@MM}
+\bicsintabular{من@ا}{m at ne}
+\bicsintabular{بزرگنمایی}{mag}
+\bicsintabular{گام}{magstep}
+\bicsintabular{نیمگام}{magstephalf}
+\bicsintabular{مطلباصلی}{mainmatter}
+\bicsintabular{اتحرف}{makeatletter}
+\bicsintabular{اتدیگر}{makeatother}
+\bicsintabular{کادربیخط}{makebox}
+\bicsintabular{ساختفرهنگ}{makeglossary}
+\bicsintabular{تهیهنمایه}{makeindex}
+\bicsintabular{ساختبرچسب}{makelabel}
+\bicsintabular{ساختبرچسبها}{makelabels}
+\bicsintabular{ساختحروفکوچک}{MakeLowercase}
+\bicsintabular{عنوانساز}{maketitle}
+\bicsintabular{ساختحروفبزرگ}{MakeUppercase}
+\bicsintabular{درحاشیه}{marginpar}
+\bicsintabular{فاصلهدوحاشیه}{marginparpush}
+\bicsintabular{فاصلهتاحاشیه}{marginparsep}
+\bicsintabular{پهنایحاشیه}{marginparwidth}
+\bicsintabular{علامت}{mark}
+\bicsintabular{علامتدردوطرف}{markboth}
+\bicsintabular{علامتدرراست}{markright}
+\bicsintabular{اعرابریاضی}{mathaccent}
+\bicsintabular{نویسهریاضی}{mathchar}
+\bicsintabular{تعریفنویسهریاضی}{mathchardef}
+\bicsintabular{کدریاضی}{mathcode}
+\bicsintabular{ریاضیرومن}{mathrm}
+\bicsintabular{حداکثرتکرار}{maxdeadcycles}
+\bicsintabular{حداکثرعمقصفحه}{maxdepth}
+\bicsintabular{بعدبیشین}{maxdimen}
+\bicsintabular{کادربی}{mbox}
+\bicsintabular{شمایلنازک}{mdseries}
+\bicsintabular{معنا}{meaning}
+\bicsintabular{نازک}{mediumseries}
+\bicsintabular{فاصلهمتوسطریاضی}{medmuskip}
+\bicsintabular{پرشمتوسط}{medskip}
+\bicsintabular{مقدارپرشمتوسط}{medskipamount}
+\bicsintabular{فضایمتوسط}{medspace}
+\bicsintabular{پیام}{message}
+\bicsintabular{پیامشکن}{MessageBreak}
+\bicsintabular{حداقلفاصلهردیف}{minrowclearance}
+\bicsintabular{دوریریاضی}{mkern}
+\bicsintabular{ماه}{month}
+\bicsintabular{انتقالبچپ}{moveleft}
+\bicsintabular{انتقالبراست}{moveright}
+\bicsintabular{فاصلهریاضی}{mskip}
+\bicsintabular{ری@ضی}{m at th}
+\bicsintabular{چندستونی}{multicolumn}
+\bicsintabular{ضرب}{multiply}
+\bicsintabular{چندادغام}{multispan}
+\bicsintabular{میوفاصله}{muskip}
+\bicsintabular{تعریفمیوفاصله}{muskipdef}
+\bicsintabular{@ترنام}{@namedef}
+\bicsintabular{@کاربردنام}{@nameuse}
+\bicsintabular{یک@}{@ne}
+\bicsintabular{نام}{name}
+\bicsintabular{طبیعی}{natural}
+\bicsintabular{باریک}{nearrow}
+\bicsintabular{باریکتر}{nearrower}
+\bicsintabular{شکلبندیموردنیاز}{NeedsTeXFormat}
+\bicsintabular{منفی}{neg}
+\bicsintabular{فضایمتوسطمنفی}{negmedspace}
+\bicsintabular{فضایضخیممنفی}{negthickspace}
+\bicsintabular{دوریکوچکمنفی}{negthinspace}
+\bicsintabular{بولینو}{newboolean}
+\bicsintabular{کادرجدید}{newbox}
+\bicsintabular{فرماننو}{newcommand}
+\bicsintabular{شمارجدید}{newcount}
+\bicsintabular{شمارندهجدید}{newcounter}
+\bicsintabular{بعدجدید}{newdimen}
+\bicsintabular{محیطنو}{newenvironment}
+\bicsintabular{خانوادهجدید}{newfam}
+\bicsintabular{قلمنو}{newfont}
+\bicsintabular{کمکجدید}{newhelp}
+\bicsintabular{گرجدید}{newif}
+\bicsintabular{درججدید}{newinsert}
+\bicsintabular{برچسبجدید}{newlabel}
+\bicsintabular{تعریفبعدجدید}{newlength}
+\bicsintabular{سطرجدید}{newline}
+\bicsintabular{نویسهسطرجدید}{newlinechar}
+\bicsintabular{میوفاصلهجدید}{newmuskip}
+\bicsintabular{صفحهجدید}{newpage}
+\bicsintabular{بخوانجدید}{newread}
+\bicsintabular{تعریفکادرجدید}{newsavebox}
+\bicsintabular{فاصلهجدید}{newskip}
+\bicsintabular{قضیهجدید}{newtheorem}
+\bicsintabular{جزءجدید}{newtoks}
+\bicsintabular{بنویسجدید}{newwrite}
+\bicsintabular{بیردیف}{noalign}
+\bicsintabular{نشکن}{nobreak}
+\bicsintabular{فاصلهنشکستنی}{nobreakspace}
+\bicsintabular{بدونسند}{nocite}
+\bicsintabular{نگستر}{noexpand}
+\bicsintabular{بدونپرونده}{nofiles}
+\bicsintabular{بدونتورفتگی}{noindent}
+\bicsintabular{بیفاصلهسطر}{nointerlineskip}
+\bicsintabular{بدونحد}{nolimits}
+\bicsintabular{سطرنشکن}{nolinebreak}
+\bicsintabular{پردازشبدونتوقف}{nonstopmode}
+\bicsintabular{فواصلمتعارفلاتین}{nonfrenchspacing}
+\bicsintabular{بدونشماره}{nonumber}
+\bicsintabular{صفحهنشکن}{nopagebreak}
+\bicsintabular{کرسیهایمتعارف}{normalbaselines}
+\bicsintabular{فاصلهکرسیمتعارف}{normalbaselineskip}
+\bicsintabular{رنگعادی}{normalcolor}
+\bicsintabular{قلمعادی}{normalfont}
+\bicsintabular{فاصلهسطرمتعارف}{normallineskip}
+\bicsintabular{حدفاصلهسطرمتعارف}{normallineskiplimit}
+\bicsintabular{درحاشیهعادی}{normalmarginpar}
+\bicsintabular{اندازهعادی}{normalsize}
+\bicsintabular{بدوناتیکت}{notag}
+\bicsintabular{نول}{null}
+\bicsintabular{قلمتهی}{nullfont}
+\bicsintabular{عدد}{number}
+\bicsintabular{سطرعددی}{numberline}
+\bicsintabular{شمارهمطابق}{numberwithin}
+\bicsintabular{پایینصفحهزوج}{@evenfoot}
+\bicsintabular{بالایصفحهزوج}{@evenhead}
+\bicsintabular{پایینصفحهفرد}{@oddfoot}
+\bicsintabular{بالایصفحهفرد}{@oddhead}
+\bicsintabular{شمارهبیروندرست}{@outeqntrue}
+\bicsintabular{شمارهبیروننادرست}{@outeqnfalse}
+\bicsintabular{سطربهسطر}{obeylines}
+\bicsintabular{فضافعال}{obeyspaces}
+\bicsintabular{حاشیهفرد}{oddsidemargin}
+\bicsintabular{سطوربیفاصله}{offinterlineskip}
+\bicsintabular{حذف}{omit}
+\bicsintabular{@تنهادرپیشدرآمد}{@onlypreamble}
+\bicsintabular{یکستون}{onecolumn}
+\bicsintabular{تنهایادداشتها}{onlynotes}
+\bicsintabular{تنهااسلایدها}{onlyslides}
+\bicsintabular{بازکنورودی}{openin}
+\bicsintabular{بازکنخروجی}{openout}
+\bicsintabular{گزینهمصرفنشده}{OptionNotUsed}
+\bicsintabular{یا}{or}
+\bicsintabular{برونی}{outer}
+\bicsintabular{صفحهبندی}{output}
+\bicsintabular{جریمهصفحهبندی}{outputpenalty}
+\bicsintabular{علامتسرریز}{overfullrule}
+\bicsintabular{@فرمانهایپیشدرآمد}{@preamblecmds}
+\bicsintabular{@پو}{p@}
+\bicsintabular{خطایسبک}{PackageError}
+\bicsintabular{اطلاعسبک}{PackageInfo}
+\bicsintabular{هشدارسبک}{PackageWarning}
+\bicsintabular{هشدارسبکبیسطر}{PackageWarningNoLine}
+\bicsintabular{صفحهشکن}{pagebreak}
+\bicsintabular{رنگصفحه}{pagecolor}
+\bicsintabular{عمقصفحه}{pagedepth}
+\bicsintabular{کششپرررصفحه}{pagefilllstretch}
+\bicsintabular{کششپررصفحه}{pagefillstretch}
+\bicsintabular{کششپرصفحه}{pagefilstretch}
+\bicsintabular{غایتصفحه}{pagegoal}
+\bicsintabular{نامصفحه}{pagename}
+\bicsintabular{شمارهگذاریصفحه}{pagenumbering}
+\bicsintabular{رجوعصفحه}{pageref}
+\bicsintabular{ضخامتخطصفحه}{pagerulewidth}
+\bicsintabular{فشردگیصفحه}{pageshrink}
+\bicsintabular{کششصفحه}{pagestretch}
+\bicsintabular{سبکصفحه}{pagestyle}
+\bicsintabular{جمعصفحه}{pagetotal}
+\bicsintabular{بلندایکاغذ}{paperheight}
+\bicsintabular{پهنایکاغذ}{paperwidth}
+\bicsintabular{بند}{par}
+\bicsintabular{پاراگراف}{paragraph}
+\bicsintabular{موازی}{parallel}
+\bicsintabular{کادرپار}{parbox}
+\bicsintabular{فاصلهتهبند}{parfillskip}
+\bicsintabular{تورفتگیسربند}{parindent}
+\bicsintabular{فاصلهبندلیست}{parsep}
+\bicsintabular{شکلبند}{parshape}
+\bicsintabular{فاصلهبند}{parskip}
+\bicsintabular{بخش}{part}
+\bicsintabular{عنوانبخش}{partname}
+\bicsintabular{فاصلهبالایلیستبند}{partopsep}
+\bicsintabular{ارسالگزینهبهکلاس}{PassOptionToClass}
+\bicsintabular{ارسالگزینهبهپکیج}{PassOptionToPackage}
+\bicsintabular{مسیر}{path}
+\bicsintabular{الگوها}{patterns}
+\bicsintabular{مکث}{pausing}
+\bicsintabular{جریمه}{penalty}
+\bicsintabular{غیب}{phantom}
+\bicsintabular{الگویقبلی}{poptabs}
+\bicsintabular{جریمهپسنمایش}{postdisplaypenalty}
+\bicsintabular{جهتپیشنمایش}{predisplaydirection}
+\bicsintabular{جریمهپیشنمایش}{predisplaypenalty}
+\bicsintabular{اندازهپیشنمایش}{predisplaysize}
+\bicsintabular{پیشحدبدنمایی}{pretolerance}
+\bicsintabular{عمققبلی}{prevdepth}
+\bicsintabular{بندقبلی}{prevgraf}
+\bicsintabular{نمایهدراینجا}{printindex}
+\bicsintabular{پردازشگزینهها}{ProcessOptions}
+\bicsintabular{تامین}{protect}
+\bicsintabular{تهیهفرمان}{providecommand}
+\bicsintabular{آمادهسازیطبقه}{ProvidesClass}
+\bicsintabular{آمادهسازیپرونده}{ProvidesFile}
+\bicsintabular{آمادهسازیسبک}{ProvidesPackage}
+\bicsintabular{ثبتالگو}{pushtabs}
+\bicsintabular{کواد}{quad}
+\bicsintabular{کوکواد}{qquad}
+\bicsintabular{@بازآییخروجصفحه}{@outputpagerestore}
+\bicsintabular{رادیکال}{radical}
+\bicsintabular{پایینبیتنظیم}{raggedbottom}
+\bicsintabular{تنظیمازراست}{raggedleft}
+\bicsintabular{تنظیمازچپ}{raggedright}
+\bicsintabular{انتقالببالا}{raise}
+\bicsintabular{بالابر}{raisebox}
+\bicsintabular{ترفیعاتیکت}{raisetag}
+\bicsintabular{زاویهر}{rangle}
+\bicsintabular{سقفر}{rceil}
+\bicsintabular{بخوان}{read}
+\bicsintabular{رجوع}{ref}
+\bicsintabular{کادرقرینه}{reflectbox}
+\bicsintabular{عنوانمراجع}{refname}
+\bicsintabular{گامشمارندهمرجع}{refstepcounter}
+\bicsintabular{راحت}{relax}
+\bicsintabular{رفعآخرینفاصله}{removelastskip}
+\bicsintabular{فرمانازنو}{renewcommand}
+\bicsintabular{محیطازنو}{renewenvironment}
+\bicsintabular{ازنو}{repeat}
+\bicsintabular{سبکموردنیاز}{RequirePackage}
+\bicsintabular{سبکموردنیازباگزینه}{RequirePackageWithOptions}
+\bicsintabular{کادرکشیده}{resizebox}
+\bicsintabular{درحاشیهمعکوس}{reversemarginpar}
+\bicsintabular{کفر}{rfloor}
+\bicsintabular{راست}{right}
+\bicsintabular{حاشیهراست}{rightmargin}
+\bicsintabular{علامتراست}{rightmark}
+\bicsintabular{کادرتاراست}{rightpageskip}
+\bicsintabular{فاصلهانتهایسطر}{rightskip}
+\bicsintabular{رومنعادی}{rmdefault}
+\bicsintabular{فامیلرومن}{rmfamily}
+\bicsintabular{رومنبزرگ}{Roman}
+\bicsintabular{رومنکوچک}{roman}
+\bicsintabular{عددرومی}{romannumeral}
+\bicsintabular{کادرچرخان}{rotatebox}
+\bicsintabular{رنگردیف}{rowcolor}
+\bicsintabular{خط}{rule}
+\bicsintabular{@دومیازدو}{@secondoftwo}
+\bicsintabular{@فضاها}{@spaces}
+\bicsintabular{همینصفحه}{samepage}
+\bicsintabular{مقدارکادر}{savebox}
+\bicsintabular{مقکادر}{sbox}
+\bicsintabular{کادراندازه}{scalebox}
+\bicsintabular{پیشفرضتمامبزرگ}{scdefault}
+\bicsintabular{شکلتمامبزرگ}{scshape}
+\bicsintabular{قلمتوان}{scriptfont}
+\bicsintabular{قلمتوانتوان}{scriptscriptfont}
+\bicsintabular{سبکتهنوشتتهنوشت}{scriptscriptstyle}
+\bicsintabular{اندازهپانویس}{scriptsize}
+\bicsintabular{سبکتهنوشت}{scripstyle}
+\bicsintabular{پردازشگذری}{scrollmode}
+\bicsintabular{قسمت}{section}
+\bicsintabular{تعریفقسمت}{secdef}
+\bicsintabular{ببینید}{see}
+\bicsintabular{نیزببینید}{seealso}
+\bicsintabular{نامببینید}{seename}
+\bicsintabular{قلمبردار}{selectfont}
+\bicsintabular{تنظیمبولی}{setboolean}
+\bicsintabular{درکادر}{setbox}
+\bicsintabular{مقدارشمارنده}{setcounter}
+\bicsintabular{مقدارکلیدها}{setkeys}
+\bicsintabular{مقداربعد}{setlength}
+\bicsintabular{تنظیممنها}{setminus}
+\bicsintabular{تعریفقلمعلائم}{SetSymbolFont}
+\bicsintabular{تنظیمبهعمق}{settodepth}
+\bicsintabular{تنظیمبهارتفاع}{settoheight}
+\bicsintabular{مقداربعدبهاندازه}{settowidth}
+\bicsintabular{کدضریبفاصله}{sfcode}
+\bicsintabular{پیشفرضسف}{sfdefault}
+\bicsintabular{فامیلسنسریف}{sffamily}
+\bicsintabular{کادرسایهدار}{shadowbox}
+\bicsintabular{تیز}{sharp}
+\bicsintabular{بفرست}{shipout}
+\bicsintabular{پشتهکوتاه}{shortstack}
+\bicsintabular{نمایشبده}{show}
+\bicsintabular{نمایشبدهکادر}{showbox}
+\bicsintabular{میزاننمایشکادر}{showboxbreadth}
+\bicsintabular{عمقنمایشکادر}{showboxdepth}
+\bicsintabular{نمایشبدهلیستها}{showlists}
+\bicsintabular{نمایشبدهمحتوای}{showthe}
+\bicsintabular{حالتسادهقلم}{simplefontmode}
+\bicsintabular{شانزد@}{sixt@@n}
+\bicsintabular{نویسهاریب}{skewchar}
+\bicsintabular{فاصله}{skip}
+\bicsintabular{فاصل@}{skip@}
+\bicsintabular{تعریففاصله}{skipdef}
+\bicsintabular{خوابیده}{sl}
+\bicsintabular{پیشفرضخو}{sldefault}
+\bicsintabular{شکلخوابیده}{slshape}
+\bicsintabular{راحتچین}{sloppy}
+\bicsintabular{شمایلخو}{slshape}
+\bicsintabular{کوچک}{small}
+\bicsintabular{پرشکوتاه}{smallskip}
+\bicsintabular{مقدارپرشکوتاه}{smallskipamount}
+\bicsintabular{کوب}{smash}
+\bicsintabular{لبخند}{smile}
+\bicsintabular{کدمکانهمانطور}{snglfntlocatecode}
+\bicsintabular{فضا}{space}
+\bicsintabular{ضریبفاصله}{spacefactor}
+\bicsintabular{فاصلهکلمات}{spaceskip}
+\bicsintabular{پیک}{spadesuit}
+\bicsintabular{ادغام}{span}
+\bicsintabular{ویژه}{special}
+\bicsintabular{حداکثرعمقستون}{splitmaxdepth}
+\bicsintabular{فاصلهبالایستون}{splittopskip}
+\bicsintabular{ستاره}{star}
+\bicsintabular{گامشمارنده}{stepcounter}
+\bicsintabular{کشی}{stretch}
+\bicsintabular{رشته}{string}
+\bicsintabular{شمع}{strut}
+\bicsintabular{کادرشمع}{strutbox}
+\bicsintabular{زیربند}{subitem}
+\bicsintabular{زیرپاراگراف}{subparagraph}
+\bicsintabular{زیرقسمت}{subsection}
+\bicsintabular{زیرپشته}{substack}
+\bicsintabular{زیرزیربند}{subsubitem}
+\bicsintabular{زیرزیرقسمت}{subsubsection}
+\bicsintabular{زیرمجموعه}{subset}
+\bicsintabular{زیرمجموعهمس}{subseteq}
+\bicsintabular{منتهایصفحه}{supereject}
+\bicsintabular{حذفمکانشناور}{suppressfloats}
+\bicsintabular{@موقتآ}{@tempa}
+\bicsintabular{@موقتب}{@tempb}
+\bicsintabular{@موقتپ}{@tempc}
+\bicsintabular{@موقتت}{@tempd}
+\bicsintabular{@موقتث}{@tempe}
+\bicsintabular{@کادرقتآ}{@tempboxa}
+\bicsintabular{@شماقتآ}{@tempcnta}
+\bicsintabular{@شماقتب}{@tempcntb}
+\bicsintabular{@بعدقتآ}{@tempdima}
+\bicsintabular{@بعدقتب}{@tempdimb}
+\bicsintabular{@بعدقتپ}{@tempdimc}
+\bicsintabular{@فاقتآ}{@tempskipa}
+\bicsintabular{@فاقتب}{@tempskipb}
+\bicsintabular{@سواقتآنادرست}{@tempswafalse}
+\bicsintabular{@سواقتآدرست}{@tempswatrue}
+\bicsintabular{@جزقتآ}{@temptokena}
+\bicsintabular{انگزیرنویس}{@thefnmark}
+\bicsintabular{@سومیازسه}{@thirdofthree}
+\bicsintabular{فاصلهجاگذاری}{tabbingsep}
+\bicsintabular{فاصلهبینستونها}{tabcolsep}
+\bicsintabular{فهرستمطالب}{tableofcontents}
+\bicsintabular{عنوانجدول}{tablename}
+\bicsintabular{فاصلهستونها}{tabskip}
+\bicsintabular{تهسطرجدول}{tabularnewline}
+\bicsintabular{اتیکت}{tag}
+\bicsintabular{تلفن}{telephone}
+\bicsintabular{تک}{TeX}
+\bicsintabular{متن}{text}
+\bicsintabular{گلولهمتنی}{textbullet}
+\bicsintabular{قلممتن}{textfont}
+\bicsintabular{امدشمتنی}{textemdash}
+\bicsintabular{اندشمتنی}{textendash}
+\bicsintabular{تعجبوارونهمتنی}{textexclamdown}
+\bicsintabular{نقطهوسطمتنی}{textperiodcentered}
+\bicsintabular{سوالوارونهمتنی}{textquestiondown}
+\bicsintabular{نقلچپمتنیدولا}{textquotedblleft}
+\bicsintabular{نقلراستمتنیدولا}{textquotedblright}
+\bicsintabular{نقلمتنیچپ}{textquoteleft}
+\bicsintabular{نقلمتنیراست}{textquoteright}
+\bicsintabular{فضاینمایانمتنی}{textvisiblespace}
+\bicsintabular{شکافتپشتمتنی}{textbackslash}
+\bicsintabular{میلهمتنی}{textbar}
+\bicsintabular{بزرگترمتنی}{textgreater}
+\bicsintabular{کمترمتنی}{textless}
+\bicsintabular{متنسیاه}{textbf}
+\bicsintabular{مدورمتنی}{textcircled}
+\bicsintabular{رنگمتن}{textcolor}
+\bicsintabular{نشانکلمهمرکبمتن}{textcompwordmark}
+\bicsintabular{فاصلهمتنوشناور}{textfloatsep}
+\bicsintabular{نسبتمتن}{textfraction}
+\bicsintabular{بلندایمتن}{textheight}
+\bicsintabular{متنتورفته}{textindent}
+\bicsintabular{متنایتالیک}{textit}
+\bicsintabular{متننازک}{textmd}
+\bicsintabular{متننرمال}{textnormal}
+\bicsintabular{ثبتیمتنی}{textregistered}
+\bicsintabular{متنرومن}{textrm}
+\bicsintabular{متنتمامبزرگ}{textsc}
+\bicsintabular{متنسنسریف}{textsf}
+\bicsintabular{متنخوابیده}{textsl}
+\bicsintabular{سبکمتنی}{textstyle}
+\bicsintabular{بالانویسمتنی}{textsuperscript}
+\bicsintabular{علامتتجاریمتنی}{texttrademark}
+\bicsintabular{متنتایپ}{texttt}
+\bicsintabular{متنایستاده}{textup}
+\bicsintabular{پهنایمتن}{textwidth}
+\bicsintabular{زیرنویسعنوان}{thanks}
+\bicsintabular{محتوای}{the}
+\bicsintabular{اینزیرنویس}{thempfn}
+\bicsintabular{خطهاضخیم}{thicklines}
+\bicsintabular{فاصلهزیادریاضی}{thickmuskip}
+\bicsintabular{فاصلهکمریاضی}{thinmuskip}
+\bicsintabular{فضاضخیم}{thickspace}
+\bicsintabular{خطهانازک}{thinlines}
+\bicsintabular{دوریکوچک}{thinspace}
+\bicsintabular{اینصفحهتجملی}{thisfancypage}
+\bicsintabular{سبکاینصفحه}{thispagestyle}
+\bicsintabular{سه@}{thr@@}
+\bicsintabular{مد}{tilde}
+\bicsintabular{ظریف}{tiny}
+\bicsintabular{زمان}{time}
+\bicsintabular{ضربدر}{times}
+\bicsintabular{عنوان}{title}
+\bicsintabular{به}{to}
+\bicsintabular{امروز}{today}
+\bicsintabular{جزء}{toks}
+\bicsintabular{تعریفجزء}{toksdef}
+\bicsintabular{حدبدنمایی}{tolerance}
+\bicsintabular{بالا}{top}
+\bicsintabular{خطبالایشناور}{topfigrule}
+\bicsintabular{نسبتبالا}{topfraction}
+\bicsintabular{حاشیهبالا}{topmargin}
+\bicsintabular{علامتبالا}{topmark}
+\bicsintabular{کادرتابالا}{toppageskip}
+\bicsintabular{فاصلهبالایلیست}{topsep}
+\bicsintabular{فاصلهبالا}{topskip}
+\bicsintabular{بلندایکل}{totalheight}
+\bicsintabular{ردگیریکل}{tracingall}
+\bicsintabular{ردگیریفرامین}{tracingcommands}
+\bicsintabular{ردگیریحروف}{tracinglostchars}
+\bicsintabular{ردگیریماکروها}{tracingmacros}
+\bicsintabular{ردگیرینمایشی}{tracingonline}
+\bicsintabular{ردگیریصفحهبندی}{tracingoutput}
+\bicsintabular{ردگیریصفحات}{tracingpages}
+\bicsintabular{ردگیریبندها}{tracingparagraphs}
+\bicsintabular{ردگیریبازگردانی}{tracingrestores}
+\bicsintabular{ردگیریآمارها}{tracingstats}
+\bicsintabular{مثلث}{triangle}
+\bicsintabular{پیشفرضتایپ}{ttdefault}
+\bicsintabular{فامیلتایپ}{ttfamily}
+\bicsintabular{دو@}{tw@}
+\bicsintabular{دوستون}{twocolumn}
+\bicsintabular{درنویس}{typein}
+\bicsintabular{برنویس}{typeout}
+\bicsintabular{کدبزرگ}{uccode}
+\bicsintabular{تیرهبندیبزرگ}{uchyph}
+\bicsintabular{تعریفنشده}{undefined}
+\bicsintabular{زیرخط}{underline}
+\bicsintabular{بیکادرا}{unhbox}
+\bicsintabular{بیکپیا}{unhcopy}
+\bicsintabular{واحدطول}{unitlength}
+\bicsintabular{برگشتدوری}{unkern}
+\bicsintabular{برگشتجریمه}{unpenalty}
+\bicsintabular{برگشتفاصله}{unskip}
+\bicsintabular{بیکادرو}{unvbox}
+\bicsintabular{بیکپیو}{unvcopy}
+\bicsintabular{پیشفرضایستاده}{updefault}
+\bicsintabular{شکلایستاده}{upshape}
+\bicsintabular{ازکادر}{usebox}
+\bicsintabular{باشمارشگر}{usecounter}
+\bicsintabular{گزینشقلم}{usefont}
+\bicsintabular{سبکلازم}{usepackage}
+\bicsintabular{@فضاهایفعال}{@vobeyspaces}
+\bicsintabular{@تهی}{@void}
+\bicsintabular{تنظیمو}{vadjust}
+\bicsintabular{ردیفو}{valign}
+\bicsintabular{محتوایشمارنده}{value}
+\bicsintabular{بدنماییو}{vbadness}
+\bicsintabular{کادرو}{vbox}
+\bicsintabular{کادروسط}{vcenter}
+\bicsintabular{همانطور}{verb}
+\bicsintabular{پرو}{vfil}
+\bicsintabular{پررو}{vfill}
+\bicsintabular{رفعپرو}{vfilneg}
+\bicsintabular{پرزعمودی}{vfuzz}
+\bicsintabular{نمایان}{visible}
+\bicsintabular{خطعمود}{vline}
+\bicsintabular{حاشیهو}{voffset}
+\bicsintabular{ک@درتهی}{voidb at x}
+\bicsintabular{ارجاعصفحهع}{vpageref}
+\bicsintabular{فاصلهوگرد}{vrboxsep}
+\bicsintabular{ارجاعع}{vref}
+\bicsintabular{خطو}{vrule}
+\bicsintabular{طولصفحه}{vsize}
+\bicsintabular{فاصلهو}{vskip}
+\bicsintabular{فضایو}{vspace}
+\bicsintabular{شکستو}{vsplit}
+\bicsintabular{هردوو}{vss}
+\bicsintabular{کادرگود}{vtop}
+\bicsintabular{عرض}{wd}
+\bicsintabular{مادامبکن}{whiledo}
+\bicsintabular{کلاهپهن}{widehat}
+\bicsintabular{مدپهن}{widetilde}
+\bicsintabular{جریمهتهبند}{widowpenalty}
+\bicsintabular{پهنا}{width}
+\bicsintabular{درکارنامه}{wlog}
+\bicsintabular{بنویس}{write}
+\bicsintabular{@فضایلاتین}{@xobeysp}
+\bicsintabular{سی@دو}{@xxxii}
+\bicsintabular{ترگع}{xdef}
+\bicsintabular{نشانگرگسترشی}{xleaders}
+\bicsintabular{فاصلهاضافیکلمات}{xspaceskip}
+\bicsintabular{سال}{year}
+\bicsintabular{@فر}{z@}
+\bicsintabular{@فرفاصله}{z at skip}
+\end{supertabular}
+\end{center}
+
+\bigskip
+\begin{center}
+\tablecaption{The Equivalent \XePersian\ Commands\label{xcs}}
+\tablehead
+ {\bfseries Command in \XePersian &\bfseries Equivalent Persian Command\\ \hline}
+\tabletail
+ {\hline \multicolumn{2}{r}{\emph{Continued on next page}}\\}
+\tablelasttail{\hline}
+\begin{supertabular}{lr}
+\bicsintabular{خطزیرنویسخودکار}{autofootnoterule}
+\bicsintabular{اعدادفرمولهاخودکار}{AutoMathsDigits}
+\bicsintabular{اعدادفرمولهالاتین}{DefaultMathsDigits}
+\bicsintabular{تعریفقلملاتین}{deflatinfont}
+\bicsintabular{تعریفقلمپارسی}{defpersianfont}
+\bicsintabular{کادراچپ}{hboxL}
+\bicsintabular{کادراست}{hboxR}
+\bicsintabular{معادل@کلید}{keyval at eq@alias at key}
+\bicsintabular{مرجعلاتین}{Latincite}
+\bicsintabular{قلملاتین}{latinfont}
+\bicsintabular{امروزلاتین}{latintoday}
+\bicsintabular{خطزیرنویسچپ}{leftfootnoterule}
+\bicsintabular{متنلاتین}{lr}
+\bicsintabular{چپبراست}{LRE}
+\bicsintabular{دوستونیچپ}{LTRdblcol}
+\bicsintabular{پانویس}{LTRfootnote}
+\bicsintabular{متنپانویس}{LTRfootnotetext}
+\bicsintabular{پانویسعنوان}{LTRthanks}
+\bicsintabular{روزپارسی}{persianday}
+\bicsintabular{قلمپارسی}{persianfont}
+\bicsintabular{اعدادفرمولهاپارسی}{PersianMathsDigits}
+\bicsintabular{ماهپارسی}{persianmonth}
+\bicsintabular{سالپارسی}{persianyear}
+\bicsintabular{علامتچپنقلقولپارسی}{plq}
+\bicsintabular{علامتراستنقلقولپارسی}{prq}
+\bicsintabular{خطزیرنویسراست}{rightfootnoterule}
+\bicsintabular{متنپارسی}{rl}
+\bicsintabular{راستبچپ}{RLE}
+\bicsintabular{دوستونیراست}{RTLdblcol}
+\bicsintabular{پانوشت}{RTLfootnote}
+\bicsintabular{متنپانوشت}{RTLfootnotetext}
+\bicsintabular{پانوشتعنوان}{RTLthanks}
+\bicsintabular{@علامتبین}{@SepMark}
+\bicsintabular{علامتبین}{SepMark}
+\bicsintabular{بگذارمرجوعاتعادی}{setdefaultbibitems}
+\bicsintabular{بگذاردرحاشیهعادی}{setdefaultmarginpar}
+\bicsintabular{گزینشقلماعدادفرمولها}{setmathdigitfont}
+\bicsintabular{بگذارزیرنویسچپ}{setfootnoteLR}
+\bicsintabular{بگذارزیرنویسراست}{setfootnoteRL}
+\bicsintabular{گزینشقلملاتینمتن}{setlatintextfont}
+\bicsintabular{بگذارمتنچپ}{setLTR}
+\bicsintabular{بگذارمرجوعاتچپ}{setLTRbibitems}
+\bicsintabular{بگذاردرحاشیهچپ}{setLTRmarginpar}
+\bicsintabular{بگذارمتنراست}{setRTL}
+\bicsintabular{بگذارمرجوعاتراست}{setRTLbibitems}
+\bicsintabular{بگذاردرحاشیهراست}{setRTLmarginpar}
+\bicsintabular{گزینشقلممتن}{settextfont}
+\bicsintabular{خطزیرنویسپهنایمتن}{textwidthfootnoterule}
+\bicsintabular{فهرستمطالبدوستونی}{twocolumnstableofcontents}
+\bicsintabular{نگذارزیرنویسراست}{unsetfootnoteRL}
+\bicsintabular{نگذارمتنچپ}{unsetLTR}
+\bicsintabular{نگذارمتنراست}{unsetRTL}
+\bicsintabular{کادروازچپ}{vboxL}
+\bicsintabular{کادروازراست}{vboxR}
+\bicsintabular{زیلاتک}{XeLaTeX}
+\bicsintabular{زیپرشین}{XePersian}
+\bicsintabular{گونهزیپرشین}{xepersianversion}
+\bicsintabular{تاریخگونهزیپرشین}{xepersiandate}
+\bicsintabular{زیتک}{XeTeX}
+\end{supertabular}
+\end{center}
+
+\bigskip
+\begin{center}
+\tablecaption{The Equivalent \LaTeX\ Environments\label{lenv}}
+\tablehead
+ {\bfseries Environment in \LaTeX\ &\bfseries Equivalent Persian Environment\\ \hline}
+\tabletail
+ {\hline \multicolumn{2}{r}{\emph{Continued on next page}}\\}
+\tablelasttail{\hline}
+\begin{supertabular}{lr}
+\bienvintabular{چکیده}{abstract}
+\bienvintabular{پیوست}{appendix}
+\bienvintabular{آرایه}{array}
+\bienvintabular{وسطچین}{center}
+\bienvintabular{توضیح}{description}
+\bienvintabular{ریاضینمایشی}{displaymath}
+\bienvintabular{نوشتار}{document}
+\bienvintabular{شمارش}{enumerate}
+\bienvintabular{شکل}{figure}
+\bienvintabular{شکل*}{figure*}
+\bienvintabular{محتوایپرونده}{filecontents}
+\bienvintabular{محتوایپرونده*}{filecontents*}
+\bienvintabular{چپچین}{flushleft}
+\bienvintabular{راستچین}{flushright}
+\bienvintabular{فقرات}{itemize}
+\bienvintabular{نامه}{letter}
+\bienvintabular{لیست}{list}
+\bienvintabular{جدولدراز}{longtable}
+\bienvintabular{کادررچ}{lrbox}
+\bienvintabular{ریاضی}{math}
+\bienvintabular{ماتریس}{matrix}
+\bienvintabular{صفحهکوچک}{minipage}
+\bienvintabular{چندستونیها}{multicols}
+\bienvintabular{چندخطی}{multline}
+\bienvintabular{یادداشت}{note}
+\bienvintabular{انباشتن}{overlay}
+\bienvintabular{تصویر}{picture}
+\bienvintabular{اقتباس}{quotation}
+\bienvintabular{نقل}{quote}
+\bienvintabular{اسلاید}{slide}
+\bienvintabular{پارنامرتب}{sloppypar}
+\bienvintabular{شکافتن}{split}
+\bienvintabular{زیرآرایه}{subarray}
+\bienvintabular{جاگذاری}{tabbing}
+\bienvintabular{لوح}{table}
+\bienvintabular{لوح*}{table*}
+\bienvintabular{جدول}{tabular}
+\bienvintabular{جدول*}{tabular*}
+\bienvintabular{مراجع}{thebibliography}
+\bienvintabular{محتواینمایه}{theindex}
+\bienvintabular{صفحهعنوان}{titlepage}
+\bienvintabular{لیستبدوی}{trivlist}
+\bienvintabular{همانطورکههست}{verbatim}
+\bienvintabular{همانطورکههست*}{verbatim*}
+\bienvintabular{شعر}{verse}
+\end{supertabular}
+\end{center}
+
+\bigskip
+\begin{center}
+\tablecaption{The Equivalent \XePersian\ Environments\label{xenv}}
+\tablehead
+ {\bfseries Environment in \XePersian\ &\bfseries Equivalent Persian Environment\\ \hline}
+\tabletail
+ {\hline \multicolumn{2}{r}{\emph{Continued on next page}}\\}
+\tablelasttail{\hline}
+\begin{supertabular}{lr}
+\bienvintabular{لاتین}{latin}
+\bienvintabular{متنچپ}{LTR}
+\bienvintabular{دستهبندیچپ}{LTRitems}
+\bienvintabular{پارسی}{persian}
+\bienvintabular{متنراست}{RTL}
+\bienvintabular{دستهبندیراست}{RTLitems}
+\end{supertabular}
+\end{center}
+\paragraph{Localisation of postion arguments.}
+ Some environments like \texttt{tabular} and some commands like \Lcs{parbox} have an argument which specifies the position. Table \autoref{table-pos} shows their localisations.
+\begin{center}
+\tablecaption{The Equivalent \LaTeX{} position arguments\label{table-pos}}
+\tablehead
+ {\bfseries Position argument in \LaTeX &\bfseries Equivalent Persian position argument\\ \hline}
+\tabletail
+ {\hline \multicolumn{2}{r}{\emph{Continued on next page}}\\}
+\tablelasttail{\hline}
+\begin{supertabular}{cc}
+\texttt{b}&\Penv{ز}\\
+\texttt{c}&\Penv{و}\\
+\texttt{C}&\Penv{س}\\
+\texttt{h}&\Penv{ا}\\
+\texttt{H}&\Penv{آ}\\
+\texttt{J}&\Penv{ت}\\
+\texttt{l}&\Penv{چ}\\
+\texttt{L}&\Penv{ف}\\
+\texttt{m}&\Penv{م}\\
+\texttt{p}&\Penv{پ}\\
+\texttt{p}&\Penv{ص}\\
+\texttt{r}&\Penv{ر}\\
+\texttt{R}&\Penv{ا}\\
+\texttt{s}&\Penv{ک}\\
+\texttt{t}&\Penv{ب}\\
+\end{supertabular}
+\end{center}
+\begin{itemize}
+\item There are two \texttt{p}s in \autoref{table-pos}, first \texttt{p} and its Persian equivalent \Penv{پ} stand for paragraph (used in \texttt{tabular} and similar environments) and the second \texttt{p} and its Persian equivalent \Penv{ص} stand for page (used in \texttt{float}-like environments).
+\end{itemize}
+\subsubsection{Localizations of the keys and key values of \textsf{graphicx} package}
+The equivalent Persian keys and key values of \textsf{graphicx} package is shown in \autoref{table:key} and \autoref{table:keyvalue} respectively.
+\begin{center}
+\tablecaption{Persian Equivalent keys of \textsf{graphicx} package\label{table:key}}
+\tablehead
+ {\bfseries Original Key &\bfseries Equivalent Persian Key\\ \hline}
+\tabletail
+ {\hline \multicolumn{2}{r}{\emph{Continued on next page}}\\}
+\tablelasttail{\hline}
+\begin{supertabular}{lr}
+\texttt{draft}&\Penv{پیشنویس}\\
+\texttt{origin}&\Penv{مبدا}\\
+\texttt{clip}&\Penv{بیاضافه}\\
+\texttt{keepaspectratio}&\Penv{حفظتناسب}\\
+\texttt{natwidth}&\Penv{پهنایطبیعی}\\
+\texttt{natheight}&\Penv{بلندایطبیعی}\\
+\texttt{bb}&\Penv{مختصات}\\
+\texttt{viewport}&\Penv{محدودهنمایش}\\
+\texttt{trim}&\Penv{حذفاطراف}\\
+\texttt{angle}&\Penv{زاویه}\\
+\texttt{width}&\Penv{پهنا}\\
+\texttt{height}&\Penv{بلندا}\\
+\texttt{totalheight}&\Penv{بلندایکل}\\
+\texttt{scale}&\Penv{ضریب}\\
+\texttt{type}&\Penv{نوع}\\
+\texttt{ext}&\Penv{پسوند}\\
+\texttt{read}&\Penv{خواندنی}\\
+\texttt{command}&\Penv{فرمان}\\
+\texttt{x}&\Penv{طول}\\
+\texttt{y}&\Penv{عرض}\\
+\texttt{units}&\Penv{واحد}\\
+\end{supertabular}
+\end{center}
+\begin{center}
+\tablecaption{Persian Equivalent key values of \textsf{graphicx} package\label{table:keyvalue}}
+\tablehead
+ {\bfseries Original Key value&\bfseries Equivalent Persian Key value\\ \hline}
+\tabletail
+ {\hline \multicolumn{2}{r}{\emph{Continued on next page}}\\}
+\tablelasttail{\hline}
+\begin{supertabular}{cc}
+\texttt{b}&\Penv{ز}\\
+\texttt{B}&\Penv{ک}\\
+\texttt{false}&\Penv{نادرست}\\
+\texttt{l}&\Penv{چ}\\
+\texttt{r}&\Penv{ر}\\
+\texttt{t}&\Penv{ب}\\
+\texttt{true}&\Penv{درست}\\
+\end{supertabular}
+\end{center}
+\subsubsection{Localizations of font features and font feature options}
+The equivalent Persian font features and font feature options is shown in \autoref{table:ff} and \autoref{table:ffo} respectively.
+\begin{center}
+\tablecaption{Persian Equivalent font features\label{table:ff}}
+\tablehead
+ {\bfseries Original font feature &\bfseries Equivalent Persian font feature\\ \hline}
+\tabletail
+ {\hline \multicolumn{2}{r}{\emph{Continued on next page}}\\}
+\tablelasttail{\hline}
+\begin{supertabular}{lr}
+\biffintabular{ExternalLocation}{مکانخارجی}
+\biffintabular{ExternalLocation}{مسیر}
+\biffintabular{Renderer}{تحویلدهنده}
+\biffintabular{BoldFont}{قلمسیاه}
+\biffintabular{Language}{زبان}
+\biffintabular{Script}{خط}
+\biffintabular{UprightFont}{قلمعمودی}
+\biffintabular{ItalicFont}{قلمایتالیک}
+\biffintabular{BoldItalicFont}{قلمایتالیکسیاه}
+\biffintabular{SlantedFont}{قلمخوابیده}
+\biffintabular{BoldSlantedFont}{قلمخوابیدهسیاه}
+\biffintabular{SmallCapsFont}{قلمکلاهکوچک}
+\biffintabular{UprightFeatures}{ویژگیهایقلمعمودی}
+\biffintabular{BoldFeatures}{ویژگیهایقلمسیاه}
+\biffintabular{ItalicFeatures}{ویژگیهایقلمایتالیک}
+\biffintabular{BoldItalicFeatures}{ویژگیهایقلمایتالیکسیاه}
+\biffintabular{SlantedFeatures}{ویژگیهایقلمخوابیده}
+\biffintabular{BoldSlantedFeatures}{ویژگیهایقلمخوابیدهسیاه}
+\biffintabular{SmallCapsFeatures}{ویژگیهایقلمکلاهکوچک}
+\biffintabular{SizeFeatures}{ویژگیهایاندازه}
+\biffintabular{Scale}{ضریب}
+\biffintabular{WordSpace}{فضایکلمه}
+\biffintabular{PunctuationSpace}{فضاینقطهگذاری}
+\biffintabular{FontAdjustment}{تنظیمقلم}
+\biffintabular{LetterSpace}{فضایحرف}
+\biffintabular{HyphenChar}{نویسهتیره}
+\biffintabular{Color}{رنگ}
+\biffintabular{Opacity}{کدری}
+\biffintabular{Mapping}{نگاشت}
+\biffintabular{Weight}{سنگینی}
+\biffintabular{Width}{پهنا}
+\biffintabular{OpticalSize}{اندازهچشمی}
+\biffintabular{FakeSlant}{خوابیدهتقلبی}
+\biffintabular{FakeStretch}{کششتقلبی}
+\biffintabular{FakeBold}{سیاهتقلبی}
+\biffintabular{AutoFakeSlant}{خوابیدهتقلبیخودکار}
+\biffintabular{AutoFakeBold}{سیاهتقلبیخودکار}
+\biffintabular{Ligatures}{دویاچندحرفمتصلبههم}
+\biffintabular{Alternate}{متناوب}
+\biffintabular{Variant}{گوناگون}
+\biffintabular{Variant}{مجموعهسبکی}
+\biffintabular{CharacterVariant}{گوناگونینویسه}
+\biffintabular{Style}{سبک}
+\biffintabular{Annotation}{یادداشت}
+\biffintabular{RawFeature}{ویژگیهایکال}
+\biffintabular{CharacterWidth}{پهناینویسه}
+\biffintabular{Numbers}{ارقام}
+\biffintabular{Contextuals}{متنی}
+\biffintabular{Diacritics}{تفکیککنندهها}
+\biffintabular{Letters}{حروف}
+\biffintabular{Kerning}{دوری}
+\biffintabular{VerticalPosition}{موقعیتعمودی}
+\biffintabular{Fractions}{کسر}
+\end{supertabular}
+\end{center}
+\begin{center}
+\tablecaption{Persian Equivalent font feature options\label{table:ffo}}
+\tablehead
+ {\bfseries font feature&\bfseries font feature option &\bfseries Persian font feature option\\ \hline}
+\tabletail
+ {\hline \multicolumn{3}{r}{\emph{Continued on next page}}\\}
+\tablelasttail{\hline}
+\begin{supertabular}{llr}
+\biffointabular{Language}{Default}{پیشفرض}
+\biffointabular{Language}{Parsi}{پارسی}
+\biffointabular{Script}{Parsi}{پارسی}
+\biffointabular{Script}{Latin}{لاتین}
+\biffointabular{Style}{MathScript}{اسکریپتریاضی}
+\biffointabular{Style}{MathScriptScript}{اسکریپتاسکریپتریاضی}
+\end{supertabular}
+\end{center}
+\subsection{A Sample Input \TeX\ File}
+\begin{lstlisting}[morekeywords={settextfont,maketitle,tableofcontents,subsection,subsubsection,part}]
+\documentclass{article}
+\usepackage{xepersian}
+\settextfont{XB Niloofar}
+\title{*\parsitext{یک سند نمونه}*}
+\author{*\parsitext{نام نویسنده}*}
+\begin{document}
+\maketitle
+\tableofcontents
+\part{*\parsitext{عنوان بخش}*}
+...
+\section{*\parsitext{عنوان قسمت}*}
+...
+\subsection{*\parsitext{عنوان زیرقسمت}*}
+...
+\subsubsection{*\parsitext{عنوان زیر زیرقسمت}*}
+...
+\end{document}
+\end{lstlisting}
+\subsection{Font Commands}
+\subsubsection{Basic Font Commands}
+\begin{BDef}
+\Lcs{settextfont}\OptArgs\Largb{\Larga{font name}}\\
+\Lcs{setlatintextfont}\OptArgs\Largb{\Larga{font name}}\\
+\Lcs{setmathdigitfont}\OptArgs\Largb{\Larga{font name}}\\
+\Lcs{setmathsfdigitfont}\OptArgs\Largb{\Larga{font name}}\\
+\Lcs{setmathttdigitfont}\OptArgs\Largb{\Larga{font name}}
+\end{BDef}
+\begin{itemize}
+\item Options in any font command in this documentation are anything that \textsf{fontspec} package provides as the option of loading fonts, except \texttt{Script} and \texttt{Mapping}.
+\item \Lcs{settextfont} will choose the default font for Persian texts of your document.
+\item \Lcs{setlatintextfont} will choose the font for Latin texts of your document. If you do not use this command at all, the default \TeX\ font (fonts used in this documentation) will be used for Latin texts of your document.
+\item \Lcs{setmathdigitfont} will choose the Persian font for digits in math mode. By default, digits in math mode will appear in Persian form.
+\item \Lcs{setmathsfdigitfont} will choose the Persian font for digits in math mode inside \Lcs{mathsf}. By using this command, digits in math mode inside \Lcs{mathsf} will appear in Persian form and if you do not use this command at all, you will get default \TeX\ font for digits in math mode inside \Lcs{mathsf} and digits appear in their original form (Western).
+\item \Lcs{setmathttdigitfont} will choose the Persian font for digits in math mode inside \Lcs{mathtt}. By using this command, digits in math mode inside \Lcs{mathtt} will appear in Persian form and if you do not use this command at all, you will get default \TeX\ font for digits in math mode inside \Lcs{mathtt} and digits appear in their original form (Western).
+\end{itemize}
+\subsubsection{Defining Extra Persian and Latin Fonts}
+\begin{BDef}
+\Lcs{defpersianfont}\Lcs{CS}\OptArgs\Largb{\Larga{font name}}\\
+\Lcs{deflatinfont}\Lcs{CS}\OptArgs\Largb{\Larga{font name}}
+\end{BDef}
+\begin{itemize}
+\item With \Lcs{defpersianfont}, you can define extra Persian fonts.
+\begin{lstlisting}[numbers=none,morekeywords={defpersianfont,Nastaliq}]
+\defpersianfont\Nastaliq[Scale=1]{IranNastaliq}
+\end{lstlisting}
+In this example, we define \Lcs{Nastaliq} to stand for IranNastaliq font.
+\item With \Lcs{deflatinfont}, you can define extra Latin fonts.
+\begin{lstlisting}[numbers=none,morekeywords={deflatinfont,junicode}]
+\deflatinfont\junicode[Scale=1]{Junicode}
+\end{lstlisting}
+In this example, we define \Lcs{junicode} to stand for Junicode font.
+\end{itemize}
+\subsubsection{Choosing Persian Sans Font}
+\begin{BDef}
+\Lcs{setpersiansansfont}\OptArgs\Largb{\Larga{font name}}\\
+\Lcs{persiansffamily}\quad\Lcs{textpersiansf}\Largb{\Larga{text}}
+\end{BDef}
+\subsubsection{Choosing Persian Mono Font}
+\begin{BDef}
+\Lcs{setpersianmonofont}\OptArgs\Largb{\Larga{font name}}\\
+\Lcs{persianttfamily}\quad\Lcs{textpersiantt}\Largb{\Larga{text}}
+\end{BDef}
+\subsubsection{Choosing Persian Iranic Font}
+\begin{BDef}
+\Lcs{setiranicfont}\OptArgs\Largb{\Larga{font name}}\\
+\Lcs{iranicfamily}\quad\Lcs{textiranic}\Largb{\Larga{text}}
+\end{BDef}
+\subsubsection{Choosing Persian Navar Font}
+\begin{BDef}
+\Lcs{setnavarfont}\OptArgs\Largb{\Larga{font name}}\\
+\Lcs{navarfamily}\quad\Lcs{textnavar}\Largb{\Larga{text}}
+\end{BDef}
+\subsubsection{Choosing Persian Pook Font}
+\begin{BDef}
+\Lcs{setpookfont}\OptArgs\Largb{\Larga{font name}}\\
+\Lcs{pookfamily}\quad\Lcs{textpook}\Largb{\Larga{text}}
+\end{BDef}
+
+\subsubsection{Choosing Persian Sayeh Font}
+\begin{BDef}
+\Lcs{setsayehfont}\OptArgs\Largb{\Larga{font name}}\\
+\Lcs{sayehfamily}\quad\Lcs{textsayeh}\Largb{\Larga{text}}
+\end{BDef}
+
+\subsubsection{Choosing Latin Sans Font}
+\begin{BDef}
+\Lcs{setlatinsansfont}\OptArgs\Largb{\Larga{font name}}\\
+\Lcs{sffamily}\quad\Lcs{textsf}\Largb{\Larga{text}}
+\end{BDef}
+\subsubsection{Choosing Latin Mono Font}
+\begin{BDef}
+\Lcs{setlatinmonofont}\OptArgs\Largb{\Larga{font name}}\\
+\Lcs{ttfamily}\quad\Lcs{texttt}\Largb{\Larga{text}}
+\end{BDef}
+\end{document}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-basics.ltx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-boolean.ltx
===================================================================
--- trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-boolean.ltx (rev 0)
+++ trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-boolean.ltx 2020-05-16 21:33:48 UTC (rev 55165)
@@ -0,0 +1,13 @@
+\documentclass{ltxdoc}
+\input{xepersian-doc-preamble.ltx}
+\begin{document}
+\section{New Conditionals}
+\subsection{Shell escape (or write18) conditional}
+\begin{BDef}
+\Lcs{ifwritexviii}\\
+\qquad\textcolor{myred}{\Larga{material when Shell escape (or write18) is enabled}}\\
+\Lcs{else}\\
+\qquad\textcolor{myred}{\Larga{material when Shell escape (or write18) is not enabled}}\\
+\Lcs{fi}
+\end{BDef}
+\end{document}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-boolean.ltx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-captions.ltx
===================================================================
--- trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-captions.ltx (rev 0)
+++ trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-captions.ltx 2020-05-16 21:33:48 UTC (rev 55165)
@@ -0,0 +1,52 @@
+\documentclass{ltxdoc}
+\input{xepersian-doc-preamble.ltx}
+\begin{document}
+\section{Bilingual Captions}
+\XePersian\ sets caption bilingually. This means if you are in RTL mode, you get Persian caption and if you are in LTR mode, you get English caption.
+\subsection{Support For Various Packages}
+In addition to what \textsf{bidi} package supports, \XePersian\ also support a few packages. This support is more about language aspect rather than directionality. These packages are \textsf{algorithmic}, \textsf{algorithm},\textsf{enumerate}, and \textsf{backref} packages.
+
+\subsubsection{Things You Should Know about Support For \textsf{enumerate} Package}
+The \textsf{enumerate} package gives the enumerate environment an optional argument
+which determines the style in which the counter is printed.
+
+An occurrence of one of the tokens \texttt{A}, \texttt{a}, \texttt{I}, \texttt{i}, or \texttt{1} produces the value
+of the counter printed with (respectively) \Lcs{Alph}, \Lcs{alph}, \Lcs{Roman}, \Lcs{roman} or
+\Lcs{arabic}.
+
+In addition with the extra support that \XePersian\ provides, an occurrence of one of the tokens \Penv{ا}, \Penv{ی}, or \Penv{ت} produces the value of the counter printed with (respectively) \Lcs{harfi}, \Lcs{adadi}, or \Lcs{tartibi}.
+
+These letters may be surrounded by any strings involving any other \TeX\
+expressions, however the tokens \texttt{A}, \texttt{a}, \texttt{I}, \texttt{i}, \texttt{1}, \Penv{ا}, \Penv{ی}, \Penv{ت} must be inside a \Largb{} group if
+they are not to be taken as special.
+
+To see an Example, please look at \textsf{enumerate} package documentation.
+\subsection{Index Generation}
+For generating index, you are advised to use \textsf{xindy} program, any other program such as \textsf{makeindex} is not recommended.
+
+
+
+\subsection{Converting Your Farsi\TeX\ Files To \XePersian\ or Unicode}
+There is a python program written by Mostafa Vahedi that enables you to convert Farsi\TeX\ files to \XePersian\ or unicode. This program can be found in \textsf{doc} folder with the name \texttt{ftxe-0.12.py}. To convert your Farsi\TeX\ files to \XePersian, put \texttt{ftxe-0.12.py} in the same directory that your Farsi\TeX\ file is, and then open a terminal/command prompt and do the following:
+
+\begin{BDef}\ttfamily
+python ftxe-0.12.py file.ftx file.tex
+\end{BDef}
+
+This will convert your \texttt{file.ftx} (Farsi\TeX\ file) to \texttt{file.tex} (\XePersian\ file).
+
+The general syntax of using the python script is as follow:
+\begin{BDef}\ttfamily
+python ftxe-0.12.py [-r] [-s] [-x] [-u] input-filename1 input-filename2
+\end{BDef}
+Where
+\begin{description}
+\item[\texttt{-r}] (DEFAULT) recursively consider files included in the given files
+\item[\texttt{-s}] do not recursively consider files
+\item[\texttt{-x}] (DEFAULT) insert \XePersian\ related commands
+\item[\texttt{-u}] only convert to unicode (and not to \XePersian)
+\end{description}
+
+Please note that the python script will not work with versions of python later than 2.6. So you are encouraged to use version 2.6 of python to benefit from this python script.
+
+\end{document}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-captions.ltx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-envcs.ltx
===================================================================
--- trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-envcs.ltx (rev 0)
+++ trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-envcs.ltx 2020-05-16 21:33:48 UTC (rev 55165)
@@ -0,0 +1,90 @@
+\documentclass{ltxdoc}
+\input{xepersian-doc-preamble.ltx}
+\begin{document}
+\section{Latin and Persian Environment}
+\begin{BDef}
+\LBEG{latin}\quad\Larga{text}\quad\LEND{latin}\\
+\LBEG{persian}\quad\Larga{text}\quad\LEND{persian}
+\end{BDef}
+\begin{itemize}
+\item \texttt{latin} environment both changes direction of the paragraphs to LTR and font to Latin font.
+\item \texttt{persian} environment both changes direction of the Paragraphs to RTL and font to Persian font.
+\end{itemize}
+\subsection{\textsf{latinitems} and \textsf{parsiitems} environments}
+\begin{BDef}
+\LBEG{latinitems}\\
+\quad\Lcs{item} \Larga{text}\\
+\quad\ldots\\
+\LEND{latinitems}
+\end{BDef}
+\begin{itemize}
+\item \textsf{latinitems} environment is similar to \textsf{LTRitems} environment but changes the font to Latin font.
+\end{itemize}
+\begin{BDef}
+\LBEG{parsiitems}\\
+\quad\Lcs{item} \Larga{text}\\
+\quad\ldots\\
+\LEND{parsiitems}
+\end{BDef}
+\begin{itemize}
+\item \textsf{parsiitems} environment is similar to \textsf{RTLitems} environment but changes the font to Persian font.
+\end{itemize}
+
+\subsection{Short Latin and Persian Texts}
+\begin{BDef}
+\Lcs{lr}\Largb{\Larga{text}}\quad\Lcs{rl}\Largb{\Larga{text}}
+\end{BDef}
+\begin{itemize}
+\item With \Lcs{lr} command, you can typeset short LTR texts.
+\item With \Lcs{rl} command, you can typeset short RTL texts.
+\end{itemize}
+\subsection{Miscellaneous Commands}
+\begin{BDef}
+\Lcs{persianyear}\quad\Lcs{persianmonth}\quad\Lcs{persianday}\\
+\Lcs{today}\quad\Lcs{latintoday}\quad\Lcs{twocolumnstableofcontents}\quad\Lcs{XePersian}\\
+\Lcs{plq}\quad\Lcs{prq}
+\end{BDef}
+\begin{itemize}
+\item \Lcs{persianyear} is Persian equivalent of \Lcs{year}.
+\item \Lcs{persianmonth} is Persian equivalent of \Lcs{month}.
+\item \Lcs{persianday} is Persian equivalent of \Lcs{day}.
+\item \Lcs{today} typesets current Persian date and \Lcs{latintoday} typesets current Latin date.
+\item \Lcs{twocolumnstableofcontents} typesets table of contents in two columns. This requires that you have loaded \textsf{multicol} package before \textsf{\XePersian} package, otherwise an error will be issued.
+\item \Lcs{XePersian} typesets \XePersian's logo.
+\item \Lcs{plq} and \Lcs{prq} typeset Persian left quote and Persian right quote respectively.
+\end{itemize}
+\subsection{New Commands}
+\begin{BDef}
+\Lcs{Latincite}
+\end{BDef}
+\begin{itemize}
+\item\Lcs{Latincite} functions exactly like \Lcs{cite} command with only one difference; the reference to biblabel item is printed in Latin font in the text.
+\end{itemize}
+\subsection{Additional Counters}
+\XePersian\ defines several additional counters to what already \LaTeX\ offers. These counters are \texttt{harfi}, \texttt{adadi}, and \texttt{tartibi}. In addition, the following commands are also provided:
+
+\begin{BDef}
+\Lcs{harfinumeral}\Largb{\Larga{integer}}\quad\Lcs{adadinumeral}\Largb{\Larga{integer}}\quad\Lcs{tartibinumeral}\Largb{\Larga{integer}}\quad
+\end{BDef}
+\begin{itemize}
+\item The range of \texttt{harfi} counter is integers between 1 and 32 (number of the Persian alphabets) and \texttt{adadi} and \texttt{tartibi} counters, are integers between 0 and 999,999,999.
+\item For \texttt{harfi} counter, if you give an integer bigger than 32 or a negative integer (if you give integer 0, it returns nothing), then you get error and for \texttt{adadi} and \texttt{tartibi} counters, if you give an integer bigger than 999,999,999, then you get an error message.
+\item For \texttt{adadi} and \texttt{tartibi} counters, if you give an integer less than 0 (a negative integer), then \texttt{adadi} and \texttt{tartibi} counters return \textbf{adadi} and \textbf{tartibi} form of the integer 0, respectively.
+\item \Lcs{harfinumeral} returns the \textbf{harfi} form of \Larga{integer}, where $1\leq integer\leq32$ and \Lcs{adadinumeral}, and \Lcs{tartibinumeral} return \textbf{adadi}, and \textbf{tartibi} form of \Larga{integer} respectively, where $0\leq integer\leq 999,999,999$.
+\end{itemize}
+\subsection{Things To Know About \Lcs{setmathdigitfont}, \Lcs{setmathsfdigitfont}, and \Lcs{setmathttdigitfont}}
+\begin{BDef}
+\Lcs{DefaultMathsDigits}\quad\Lcs{PersianMathsDigits}\quad\Lcs{AutoMathsDigits}
+\end{BDef}
+\begin{itemize}
+ \item As we discussed before, \Lcs{setmathdigitfont} will choose the Persian font for digits in math mode. By default, digits in math mode will appear in Persian form.
+\item As we discussed before, \Lcs{setmathsfdigitfont}, and \Lcs{setmathttdigitfont} will choose the Persian sans serif and typewriter fonts for digits in math mode. By using this command, digits in math mode will appear in Persian form and if you do not use this command at all, you will get default \TeX\ font for digits in math mode and digits appear in their original form (Western).
+
+If you use \Lcs{setmathdigitfont}, \Lcs{setmathsfdigitfont}, and \Lcs{setmathttdigitfont}, then you should know that:
+\begin{itemize}
+\item By default, \Lcs{AutoMathsDigits} is active, which means that in Persian mode, you get Persian digits in math mode and in Latin mode, you get \TeX's default font and digits in math mode.
+\item If you use \Lcs{PersianMathsDigits} anywhere, you will overwrite \XePersian's default behaviour and you will always get Persian digits in math mode.
+\item If you use \Lcs{DefaultMathsDigits} anywhere, again you will overwrite \XePersian's default behaviour and you will always get \TeX's default font and digits in math mode.
+\end{itemize}
+\end{itemize}
+\end{document}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-envcs.ltx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-intro.ltx
===================================================================
--- trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-intro.ltx (rev 0)
+++ trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-intro.ltx 2020-05-16 21:33:48 UTC (rev 55165)
@@ -0,0 +1,39 @@
+\documentclass{ltxdoc}
+\input{xepersian-doc-preamble.ltx}
+\begin{document}
+\clearpage
+\section{Introduction}
+\XePersian\ is a package for typesetting Persian/English documents with \XeLaTeX. The package includes adaptations for use with many other commonly-used packages.
+\subsection{Important Notes}
+\begin{itemize}
+\item The \textsf{\XePersian} package only works with \XeTeX\ engine.
+\item Before reading this documentation, you should have read the documentation of the \textsf{bidi} package. The \textsf{\XePersian} package automatically loads \textsf{bidi} package with \texttt{RTLdocument} option enabled and hence any commands that \textsf{bidi} package offers, is also available in \textsf{\XePersian} package. Here, in this documentation, we will not repeat any of \textsf{bidi} package's commands.
+\item In previous versions (\(\leq1.0.3\)) of \XePersian, a thesis class provided for typesetting thesis. As of version 1.0.4, we no longer provide this class because we are not familiar with specification of a thesis in Iran and even if we were, the specifications are different from University to University. \XePersian\ is a general package like \LaTeX\ and should not provide any class for typesetting thesis. So if you really want to have a class file for typesetting thesis, then you should ask your University/department to write one for you.
+
+\end{itemize}
+\subsection{\textsf{\XePersian} Info On The Terminal and In The Log File}
+If you use \textsf{\XePersian} package to write any input \TeX\ document, and then run \texttt{xelatex} on your document, in addition to what \textsf{bidi} package writes to the terminal and to the log file, the \XePersian\ package also writes some information about itself to the terminal and to the log file, too. The information is something like:
+\begin{verbatim}
+****************************************************
+*
+* xepersian package (Persian for LaTeX, using XeTeX engine)
+*
+* Description: The package supports Persian
+* typesetting, using fonts provided in the
+* distribution.
+*
+* Copyright (c) 2008--2020 Vafa Khalighi
+* Copyright (c) 2018--2020 bidi-tex GitHub Organization
+*
+* v23.0, 2020/05/16
+*
+* License: LaTeX Project Public License, version
+* 1.3c or higher (your choice)
+*
+* Location on CTAN: /macros/xetex/latex/xepersian
+*
+* Issue tracker: https://github.com/persiantex/xepersian/issues
+*
+****************************************************
+\end{verbatim}
+\end{document}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-intro.ltx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-pkgs.ltx
===================================================================
--- trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-pkgs.ltx (rev 0)
+++ trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-pkgs.ltx 2020-05-16 21:33:48 UTC (rev 55165)
@@ -0,0 +1,395 @@
+\documentclass{ltxdoc}
+\input{xepersian-doc-preamble.ltx}
+\begin{document}
+\section{Extra Packages And Classes}
+\subsection{Magazine Typesetting}
+\subsubsection{Introduction}
+\textsf{xepersian-magazine} class allows you to create magazines, newspapers and any other types of papers. The output document has a front page and as many inner pages as desired. Articles appear one after another, telling the type, number of columns, heading, subheading, images, author and so forth. It is possible to change the aspect of (almost) everything therefore it is highly customisable. Commands to add different titles, headings and footers are also provided.
+\subsubsection{Usage}
+To create\footnote{For a sample file, please look at \texttt{magazine-sample.tex} in the \textsf{doc} folder} a magazine just load the class as usual\footnote{You also need to load \textsf{graphicx}, \textsf{xunicode} and \textsf{xepersian} packages respectively, after loading the document class and choose fonts for the main text, Latin text and digits in maths formulas. For more detail see \autoref{basics} of the documentation.}, with
+\begin{BDef}
+\Lcs{documentclass}\OptArgs\Largb{xepersian-magazine}
+\end{BDef}
+at the beginning of your source file. The class options are described in \autoref{s-options}.
+
+From this point it is possible to include packages and renew class commands described in \autoref{s-custom}.
+\subsubsection{Front Page}
+As every magazine, \textsf{xepersian-magazine} has its own front page. It includes main headings, an index, the magazine logo and other useful information. This environment should be the first you use within \textsf{xepersian-magazine} class but it is not mandatory.
+
+\begin{BDef}
+\Lcs{firstimage}\quad\Lcs{firstarticle}
+\end{BDef}
+The first two commands you can use inside the \texttt{frontpage} environment are \Lcs{firstimage} and \Lcs{firstarticle} which include, respectively, the main image and the main heading in the front page. The first one takes two arguments \Larga{image} and \Larga{description}. Notice that second argument is optional and it declares the image caption; \Larga{image} defines the relative path to the image. In order to include the first piece of article use
+\begin{BDef}
+\Lcs{firstarticle}\Largb{\Larga{title}}\Largb{\Larga{opening}}\Largb{\Larga{time}}
+\end{BDef}
+first two arguments are mandatory and represent heading and the opening paragraph. Last argument is optional (you can leave it blank) and indicates the time when article happened.
+\begin{BDef}
+\Lcs{secondarticle}
+\end{BDef}
+The second piece of article is included using the command \Lcs{secondarticle} just as the first article. The main difference are that this second piece has two more arguments and it does not include an image.
+
+\begin{BDef}
+\Lcs{secondarticle}\Largb{\Larga{title}}\Largb{\Larga{subtitle}}\Largb{\Larga{opening}}\Largb{\Larga{pagesof}}\Largb{\Larga{time}}
+\end{BDef}
+The new arguments \Larga{subtitle} and \Larga{pagesof} define a subtitle and the name of the section for this piece of article.
+
+\begin{BDef}
+\Lcs{thirdarticle}
+\end{BDef}
+The third piece of article is the last one in the \textsf{xepersian-magazine} front page. It works like the \Lcs{secondarticle}.
+\begin{BDef}
+\Lcs{thirdarticle}\Largb{\Larga{title}}\Largb{\Larga{subtitle}}\Largb{\Larga{opening}}%
+\Largb{\Larga{pagesof}}\Largb{\Larga{time}}
+\end{BDef}
+The arguments meaning is the same as \Lcs{secondarticle} command.
+
+The front page includes three information blocks besides the news: \texttt{indexblock} which contains the index, \texttt{authorblock} which includes information about the author and a \texttt{weatherblock} containing a weather forecast. All these three environments are mostly a frame in the front page therefore they can be redefined to fit your personal wishes but I kept them to give an example and to respec the original \textsf{xepersian-magazine} format.
+
+\begin{BDef}
+\Lcs{indexitem}
+\end{BDef}
+The \texttt{indexblock} environment contains a manually editted index of \textsf{xepersian-magazine}. It takes one optional argument \Larga{title} and places a title over the index block. To add entries inside the index just type
+\begin{BDef}
+\Lcs{indexitem}\Largb{\Larga{title}}\Largb{\Larga{reference}}
+\end{BDef}
+inside the environment. The \Larga{title} is the index entry text and the \Larga{reference} points to a article inside \textsf{xepersian-magazine}. It will be more clear when you read \autoref{sub-1}. In order to get a correct output, it is necessary to leave a blank line between index items.
+
+The \texttt{authorblock} environment can include whatever you would like. I called it \texttt{authorblock} because I think it is nice to include some author reference in the front page: who you are, why are you doing this... This environment creates a frame box in the bottom right corner of the front page with your own logo at the top.
+
+\begin{BDef}
+\Lcs{weatheritem}
+\end{BDef}
+Finally, the \texttt{weatherblock} lets you include a weather forecast. It takes one optional argument \Larga{title} that places a title over the weather block. It can
+ fit up to three weather icons with maximum and minimum temperatures,
+ description and name. To add each of the weather entries type the following
+
+\begin{BDef}
+\Lcs{weatheritem}\Largb{\Larga{image}}\Largb{\Larga{day-name}}\Largb{\Larga{max}}%
+\Largb{\Larga{min}}\Largb{\Larga{short-des}}
+\end{BDef}
+
+The first argument includes the path to the weather icon (i.e. sunny or rainy), \Larga{day-name} like Monday, \Larga{max} and \Larga{min} are the highest and lowest day temperatures and \Larga{short-des} is a brief description of the weather condition: partly cloudy, sunny and windy \ldots
+\subsubsection{Inside\label{sub-1}}
+Once we have created the front page we should include all articles inside our magazine. \textsf{xepersian-magazine} arranges all articles one after each other, expanding headings all over the page and splitting the article text in the number of columns we wish. There are three different environments to define a piece of article: the \texttt{article} environment described in \autoref{subsub-1}, the \texttt{editorial} environment \autoref{subsub-2} for opinion articles and the \texttt{shortarticle} environment explained in \autoref{subsub-3}.
+\subsubsection{The article environment\label{subsub-1}}
+The main environment to include a piece of article is called \texttt{article}. It takes four arguments that set up the headings and structure of the article.
+\begin{BDef}
+\LBEG{article}\Largb{\Larga{num-of-columns}}\Largb{\Larga{title}}\Largb{\Larga{subtitle}}%
+\Largb{\Larga{pagesof}}\Largb{\Larga{label}}\\
+\ldots\Larga{text}\ldots\\
+\LEND{article}
+\end{BDef}
+
+The first argument \Larga{num-of-columns} sets the number of columns the article will be divided whereas \Larga{label} is used when pointing an article from the index in the front page. The rest of the arguments are easy to understand.
+
+
+Inside the \texttt{article} environment, besides the main text of the article, it is possible to include additional information using several class commands.
+\begin{BDef}
+\Lcs{authorandplace}\quad\Lcs{timestamp}
+\end{BDef}
+
+The \Lcs{authorandplace}\Largb{\Larga{author}}\Largb{\Larga{place}} inserts the name of the editor and the place where the article happened in the way many magazines do. Another useful command is \Lcs{timestamp}\Largb{\Larga{time}} which includes the time and a separator just before the text. These two commands should be used before the text because they type the text as the same place they are executed.
+
+\begin{BDef}
+\Lcs{image}
+\end{BDef}
+To include images within the text of an article, \textsf{xepersian-magazine} provides an \Lcs{image} command. Since \textsf{multicol} package does not provide any float support for its \textsf{multicols} environment, I created a macro that includes an image only if that is possible, calculating if there is enough space for the image.It is not the best solution but it works quite well and I could not find a better one. To include an image use the command and its two arguments: the relative path to the image and a short description.
+\begin{BDef}
+\Lcs{image}\Largb{\Larga{image}}\Largb{\Larga{description}}
+\end{BDef}
+
+\begin{BDef}
+\Lcs{columntitle}\quad\Lcs{expandedtitle}
+\end{BDef}
+Within the text of the article, it is possible to add column and expanded titles. The main difference between them is that the first one keeps inside the width of an article column whereas the second expands all over the width of the page, breaking all the columns. Their use is analogous, as follows
+
+\begin{BDef}
+\Lcs{columntitle}\Largb{\Larga{type}}\Largb{\Larga{text}}\\
+\Lcs{expandedtitle}\Largb{\Larga{type}}\Largb{\Larga{text}}
+\end{BDef}
+These two commands use \textsf{fancybox} package features. That is why there are five different types of titles which correspond mainly with fancybox ones: \textsf{shadowbox},
+\textsf{doublebox}, \textsf{ovalbox}, \textsf{Ovalbox} and \textsf{lines}.
+\subsubsection{The editorial environment\label{subsub-2}}
+In addition to the editorial article environment, one can use the editorial environment to create editorial or opinion texts. The main feature is that it transforms the style
+of the heading. Although this environment accepts all the commands article takes, it does not make any sense to use the \Lcs{authorandplace} command within it since it includes an author argument. To create an editorial text use
+
+\begin{BDef}
+\LBEG{editorial}\Largb{\Larga{num-of-columns}}\Largb{\Larga{title}}\Largb{\Larga{author}}\Largb{\Larga{label}}\\
+\ldots\Larga{text}\ldots\\
+\LEND{editorial}
+\end{BDef}
+
+All arguments have the same meaning as article environment (see \autoref{subsub-1}).
+\subsubsection{The shortarticle environment\label{subsub-3}}
+The shortarticle environment creates a block of short article. Althought it has its own title and subtitle, each piece of article within it may have a title. To use it just
+type:
+
+\begin{BDef}
+\LBEG{shortarticle}\Largb{\Larga{num-of-columns}}\Largb{\Larga{title}}\Largb{\Larga{subtitle}}\Largb{\Larga{label}}\\
+\ldots\Larga{text}\ldots\\
+\Lcs{shortarticleitem}\Largb{\Larga{title}}\Largb{\Larga{text}}\\
+\ldots\\
+\LEND{shortarticle}
+\end{BDef}
+You can also specify the number of columns of the block like editorial and article environments. To add a piece of article inside the shortarticle use the \Lcs{shortarticleitem}, indicating a title and the text of the issue.
+\subsubsection{Commands between articles}
+\begin{BDef}
+\Lcs{articlesep}\quad\Lcs{newsection}
+\end{BDef}
+
+There are two commands you can use among the articles inside \textsf{xepersian-magazine}: \Lcs{articlesep} and \Lcs{newsection}. The first one does not take any parameter and just draws a line between two articles. The second changes the content of \Lcs{xepersian at section} to the new \Larga{section name}. From the point it is used, all articles which follow will be grouped within the new section.
+
+\begin{BDef}
+\Lcs{newsection}\Largb{\Larga{section name}}
+\end{BDef}
+\subsubsection{Customization\label{s-custom}}
+\textsf{xepersian-magazine} includes many commands which can be used to customize its aspect, from the front page to the last page. I will list them grouped so it is easy to find
+them. Treat them as standard \LaTeX\ commands, using \Lcs{renewcommand} to change
+their behaviour.
+\subsubsection{Front Page}
+
+\begin{BDef}
+\Lcs{customlogo}\quad\Lcs{customminilogo}\quad\Lcs{custommagazinename}
+\end{BDef}
+When creating a magazine, everyone wants to show its own logo instead of \textsf{xepersian-magazine} default heading. To achieve this, you need to put the following command at the preamble of your document:
+
+\begin{BDef}
+\Lcs{customlogo}\Largb{\Larga{text}}\\
+\Lcs{customminilogo}\Largb{\Larga{text}}\\
+\Lcs{custommagazinename}\Largb{\Larga{text}}
+\end{BDef}
+
+
+\begin{BDef}
+\Lcs{edition}\quad\Lcs{editionformat}
+\end{BDef}
+
+The edition text has to be declared in the preamble of the document. One important thing to know is that \Lcs{author}, \Lcs{date} and \Lcs{title} have no effect inside \textsf{xepersian-magazine} since the magazine date is taken from \Lcs{today} command and the other two are only for the title page (if using \Lcs{maketitle}).
+
+\begin{BDef}
+\Lcs{indexFormat}\quad\Lcs{indexEntryFormat}\quad\Lcs{indexEntryPageTxt}\\
+\Lcs{indexEntryPageFormat}\quad%
+\Lcs{indexEntrySeparator}
+\end{BDef}
+
+When defining the index in the front page, there are several commands to customize the final index style. \Lcs{indexFormat} sets the format of the title; \Lcs{indexEntryFormat}, the format of each index entry; \Lcs{indexEntryPageTxt} and \Lcs{indexEntryPageFormat} lets you define which is the text that goes with the page number and its format. Finally, \textsf{xepersian-magazine} creates a thin line between index entries, you can redefine it using \Lcs{indexEntrySeparator}. To get the index with \Lcs{xepersian at indexwidth} is provided.
+
+\begin{BDef}
+\Lcs{weatherFormat}\quad\Lcs{weatherTempFormat}\quad\Lcs{weatherUnits}
+\end{BDef}
+
+Relating to the weather block, the title format can be changed redefining \Lcs{weatherFormat}. In order to customize the format of the temperature numbers and their units it is necessary to redefine \Lcs{weatherTempFormat} and \Lcs{weatherUnits} respectively.
+
+\begin{BDef}
+\Lcs{*TitleFormat}\quad\Lcs{*SubtitleFormat}\quad\Lcs{*TextFormat}
+\end{BDef}
+The main article that appear in the front page can change their formats. To obtain that there are three standard commands to modify the title, subtitle and text style. You just have to replace the star (\texttt{*}) with first, second or third depending on which article you are editing. Note that first piece of article has no subtitle therefore it does not make any sense to use the non-existent command \Lcs{firstSubtitleFormat}.
+
+\begin{BDef}
+\Lcs{pictureCaptionFormat}\quad\Lcs{pagesFormat}
+\end{BDef}
+Two other elements to configure are the picture captions and the pages or section format in the entire document. To proceed just redefine the macros \Lcs{pictureCaptionFormat} and \Lcs{pagesFormat}.
+\subsubsection{Inside The Magazine}
+\begin{BDef}
+\Lcs{innerTitleFormat}\quad\Lcs{innerSubtitleFormat}\quad\Lcs{innerAuthorFormat}\\
+\Lcs{innerPlaceFormat}
+\end{BDef}
+
+The articles inside \textsf{xepersian-magazine} may have a different format from the ones in the front page. To change their title or subtitle format redefine \Lcs{innerTitleFormat} and \Lcs{innerSubtitleFormat}. The article text format matches the document general definition. When using the \Lcs{authorandplace} command, you might want to change the default style. Just renew \Lcs{innerAuthorFormat} and \Lcs{innerPlaceFormat} to get the results.
+
+\begin{BDef}
+\Lcs{timestampTxt}\quad\Lcs{timestampSeparator}\quad\Lcs{timestampFormat}
+\end{BDef}
+
+The \Lcs{timestamp} command described in \autoref{subsub-1} lets you introduce the time of the event before the article text. You can configure its appearance by altering
+several commands: \Lcs{timestampTxt} which means the text after the timestamp; \Lcs{timestampSeparator} which defines the element between the actual timestamp and the beginning of the text and, finally, \Lcs{timestampFormat} to change the entire timestamp format.
+
+\begin{BDef}
+\Lcs{innerTextFinalMark}
+\end{BDef}
+
+\textsf{xepersian-magazine} puts a small black square at the end of the article. As I wanted to create a highly customizable \LaTeX\ class I added the macro \Lcs{innerTextFinalMark} to change this black square. This item will appear always following the last character of the text with the \texttt{\~} character.
+
+\begin{BDef}
+\Lcs{minraggedcols}\quad\Lcs{raggedFormat}
+\end{BDef}
+
+The \Lcs{minraggedcols} counter is used to tell \textsf{xepersian-magazine} when article text should be ragged instead of justified. The counter represents the minimum number of columns that are needed in order to use ragged texts. For example, if \Lcs{minraggedcols} is set to 3, all articles with 3 columns or more will be ragged. Articles with 1, 2 columns will have justified text. By default, \Lcs{minraggedcols} is set to 4.
+
+The \Lcs{raggedFormat} macro can be redefined to fit user ragged style. Default value is \Lcs{RaggedLeft}.
+
+\begin{BDef}
+\Lcs{heading}\quad\Lcs{foot}
+\end{BDef}
+\textsf{xepersian-magazine} includes package \textsf{fancyhdr} for changing headings and footers. Although it is possible to use its own commands to modify \textsf{xepersian-magazine} style, there are two commands to change headings and foot appearance. Place them in the preamble of your \textsf{xepersian-magazine} document.
+
+\begin{BDef}
+\Lcs{heading}\Largb{\Larga{left}}\Largb{\Larga{center}}\Largb{\Larga{right}}\\
+\Lcs{foot}\Largb{\Larga{left}}\Largb{\Larga{center}}\Largb{\Larga{right}}
+\end{BDef}
+
+ If you still prefer to use fancyhdr macros, use them after the \texttt{frontpage} environment.
+
+\textsf{xepersian-magazine} by default places no headers and footers. If you want headers and foooters, then after loading \textsf{xepersian} package, you should write \Lcs{pagestyle}\Largb{fancy} at the preamble of your document.
+
+\subsubsection{Class Options\label{s-options}}
+The \textsf{xepersian-magazine} class is in itself an alteration of the standard \textsf{article} class, thus it inherits most of its class options but \textsf{twoside}, \textsf{twocolumn}, \textsf{notitlepage} and \textsf{a4paper}. If you find problems when loading other article features, please let me know to fix it. There are also five own options that \textsf{xepersian-magazine} implements.
+\begin{description}
+\item[\textsf{a3paper}] (false) This option makes \textsf{xepersian-magazine} 297 mm width by 420 mm height. This option is implemented because the standard \textsf{article} class does not allow this document size.
+\item[\textsf{9pt}] (false) Allows the 9pt font size that \textsf{article} class does not include (default is 10pt).
+\item[\textsf{columnlines}] columnlines (false) Adds lines between columns in the entire \textsf{xepersian-magazine}. The default line width is 0.1pt but it is possible to change this by setting length \Lcs{columnlines} in the preamble.
+\item[\textsf{showgrid}] (false) This option is only for developing purposes. Because the front page has a personal design using the textpos package, I created this grid to make easier the lay out.
+\end{description}
+
+\subsection{Typesetting Multiple-choice Questions}
+\subsubsection{Introduction}
+\textsf{xepersian-multiplechoice} is a package for making multiple choices questionnaires under \LaTeX. A special environment
+allows you to define questions and possible answers. You can specify which
+answers are correct and which are not. \textsf{xepersian-multiplechoice} not only formats the questions
+for you, but also generates a ``form'' (a grid that your students will have to fill
+in), and a ``mask'' (the same grid, only with correct answers properly checked
+in). You can then print the mask on a slide and correct the questionnaires
+more easily by superimposing the mask on top of students' forms.
+
+\subsubsection{Usage}
+Here we now explain the usage of this package, however there are four example files, namely \texttt{test-question-only.tex}, \texttt{test-solution-form.tex}, \texttt{test-empty-form.tex} and \texttt{test-correction.tex}, available in \textsf{doc} folder that you may want to look at.
+\subsubsection{Loading The Package}
+You can load the package as usual by:
+\begin{BDef}
+\Lcs{usepackage}\OptArgs\Largb{xepersian-multiplechoice}
+\end{BDef}
+The available options are described along the text,
+where appropriate.
+\subsubsection{Creating Questions}
+Here's a simple example demonstrating how to produce a new question:
+\begin{lstlisting}[morekeywords={false,true}]
+\begin{question}{*\parsitext{سؤال}*}
+\false *\parsitext{جواب ۱}*
+\true *\parsitext{جواب ۲}*
+\false *\parsitext{جواب ۳}*
+\false *\parsitext{جواب ۴}*
+\end{question}
+\begin{correction}
+*\parsitext{جواب واقعی و علت اینکه این جواب، جواب واقعی هست}*
+\end{correction}
+\end{lstlisting}
+\subsubsection{The \texttt{question} Environment}
+The \texttt{question} environment allows you to insert questions into your document. It
+takes one mandatory argument which specifies the actual question's text. The
+question will be displayed in a frame box, the size of the line.
+\begin{BDef}
+\Lcs{true}\quad\Lcs{false}
+\end{BDef}
+
+The proposed answers are displayed below the question in a list fashion (the
+question environment is a list-based one). Instead of using \Lcs{item} however, use
+either \Lcs{true} or \Lcs{false} to insert a possible answer.
+
+\subsubsection{Question Numbers}
+The \texttt{question} environment is associated with a \LaTeX\ counter named \texttt{question}.
+This counter stores the number of the next (or current) question. It is initialized
+to 1, and automatically incremented at the end of \texttt{question} environments. You
+might want to use it to format question titles. For instance, you could decide that
+each question belongs to a subsection in the \texttt{article} class, and use something like
+this before each question: \Lcs{subsection*}\Largb{Question \Lcs{thequestion}}
+
+\subsubsection{The Form and the Mask}
+\begin{BDef}
+\Lcs{makeform}\quad\Lcs{makemask}
+\end{BDef}
+Based on the questions appearing in your document, \textsf{xepersian-multiplechoice} has the ability to
+generate a ``form'' (a grid that your students will have to fill in), and a ``mask''
+(the same grid, only with correct answers properly checked in). This can make
+the correction process easier.
+
+To generate a form and a mask, use the macros \Lcs{makeform} and \Lcs{makemask}.
+\textsf{xepersian-multiplechoice} uses two auxiliary files to build them. These files have respectively an
+extension of \texttt{frm} and \texttt{msk}. If you use these macros, you will need two passes of
+\LaTeX\ in order to get a correctly formatted document.
+
+\subsubsection{Typesetting corrections}
+The ``correction'' mode allows you to automatically
+typeset and distribute corrections to your students. These corrections
+are slightly modified versions of your questionnaire: each possible answer is prefixed with a small symbol (a visual clue) indicating whether the answer was correct
+or wrong. In addition, you can typeset explanations below each question.
+
+To activate the correction mode, use the \texttt{correction} option. It is off by
+default.
+
+To typeset explanations below the questions, use the \texttt{correction} environment
+(no argument). The contents of this environment is displayed only in correction
+mode. In normal mode, it is simply discarded.
+
+In addition, note that \textsf{xepersian-multiplechoice} cancels the actions performed by \Lcs{makeform} and
+\Lcs{makemask} in \texttt{correction} mode. This is to avoid further edition of the source
+when typesetting a correction.
+
+\subsubsection{Important Note}
+Currently, \textsf{xepersian-multiplechoice} requires that you provide a constant number of proposed answers
+across all questions in your \textsf{xepersian-multiplechoice}. This is something natural when you want to
+build forms, but this might me too restrictive otherwise, I'm not sure, so it is
+possible that this restriction will be removed in future versions.
+
+Currently, there is a built-in mechanism for checking that the number of proposed
+answers remains constant: when \textsf{xepersian-multiplechoice} encounters the first occurrence of the
+\texttt{question} environment, it remembers the number of proposed answers from there.
+Afterwards, any noticed difference in subsequent occurrences will generate an error.
+As a consequence, you never have to tell \textsf{xepersian-multiplechoice} explicitly what that number
+is.
+
+\subsection{Customising The Package}
+\subsubsection{The \texttt{question} environment}
+\begin{BDef}
+\Lcs{questionspace}\quad\Lcs{answerstitlefont}\quad\Lcs{answernumberfont}
+\end{BDef}
+\Lcs{questionspace} is the amount of extra vertical space to put under the question,
+before the list of proposed answers. This is a \LaTeX\ length that defaults to \texttt{0pt}.
+
+Before the list of possible answers, a short title is displayed (for English, it
+reads ``Possible answers:''). The \Lcs{answerstitlefont} macro takes one mandatory
+argument which redefines the font to use for the answers title. By default,
+\Lcs{bfseries} is used.
+
+Each proposed answer in the list is numbered automatically (and alphabetically).
+The \Lcs{answernumberfont} macro takes one mandatory argument which
+redefines the font to use for displaying the answer number. By default, \Lcs{bfseries}
+is used.
+
+\subsubsection{The Form and the Mask}
+\begin{BDef}
+\Lcs{headerfont}\quad\Lcs{X}
+\end{BDef}
+
+The \Lcs{headerfont} macro takes one mandatory argument which redefines the font
+to use for the headers (first line and first column) of the form and mask arrays.
+By default, \Lcs{bfseries} is used.
+
+In the mask, correct answers are checked in by filling the corresponding cell
+with an ``X'' character. If you want to change this, call the \Lcs{X} macro with one
+(mandatory) argument.
+
+\subsubsection{The correction}
+\begin{BDef}
+\Lcs{truesymbol}\quad\Lcs{falsesymbol}
+\end{BDef}
+
+In correction mode, labels in front of answers are modified to give a visual clue
+about whether the answer was correct or wrong. By default, a cross and a small
+arrow are used. You can change these symbols by using the \Lcs{truesymbol} and
+
+\Lcs{falsesymbol} macros. For instance, you could give a fancier look to your correction
+by using the \textsf{pifont} package and issuing:
+
+\begin{lstlisting}[numbers=none,morekeywords={truesymbol,ding,falsesymbol}]
+\truesymbol{\ding{'063}~}
+\falsesymbol{\ding{'067}~}
+\end{lstlisting}
+
+\begin{BDef}
+\Lcs{correctionstyle}
+\end{BDef}
+The appearance of the contents of the correction environment can be adjusted
+by using the \Lcs{correctionstyle} macro. By default, \Lcs{itshape} is used.
+
+\end{document}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-pkgs.ltx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-preamble.ltx
===================================================================
--- trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-preamble.ltx (rev 0)
+++ trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-preamble.ltx 2020-05-16 21:33:48 UTC (rev 55165)
@@ -0,0 +1,108 @@
+\usepackage{docmute}
+\usepackage{supertabular}
+\usepackage{fontspec}
+\setmainfont[Ligatures=TeX,Numbers=OldStyle]{Minion Pro}
+\setsansfont[Ligatures=TeX,Numbers=OldStyle]{Myriad Pro}
+\usepackage{calc}
+\usepackage{pifont}
+\usepackage{bbding}
+\usepackage{bidicode}
+\usepackage{microtype}
+\definecolor{xepersianblue}{rgb}{0.1,0.2,0.8}
+\usepackage[numbered]{hypdoc}
+\definecolor{myred}{rgb}{0.65,0.04,0.07}
+\hypersetup{%
+ pdfauthor={Vafa Khalighi},%
+ linkcolor=xepersianblue,%
+ urlcolor=xepersianblue,%
+ citecolor=xepersianblue%
+}
+\usepackage{bidi}
+\setlength\columnseprule{.4pt}
+\newfontfamily\ParsiFont[Script=Arabic]{Iranian Sans}
+\def\Pcs#1{\nxPLcs{#1}}
+\def\nxPLcs#1{\RLE{\texttt{\symbol{92}\ParsiFont#1}}}
+\def\Lenv#1{\texttt{#1}}
+\def\Penv#1{\RLE{\ParsiFont#1}}
+\let\parsitext\Penv
+\def\XeTeX{Xe\TeX}
+\def\XeLaTeX{Xe\LaTeX}
+\def\XePersian{XePersian}
+\newcommand*{\bicsintabular}[2]{\Lcs{#2}&\Pcs{#1}\\}
+\newcommand*{\biffintabular}[2]{\texttt{#1}&\Penv{#2}\\}
+\newcommand*{\biffointabular}[3]{\texttt{#1}&\texttt{#2}&\Penv{#3}\\}
+\newcommand*{\bienvintabular}[2]{\Lenv{#2}&\Penv{#1}\\}
+\makeatletter
+\renewcommand\tableofcontents{\relax
+ \begin{multicols}{2}[\section*{\contentsname}]\small
+ \@starttoc{toc}\relax
+ \end{multicols}}
+\pdfstringdefDisableCommands{%
+\renewcommand\Lcs[1]{\textbackslash#1}
+}
+\newbox\xepersianlogobox
+\sbox{\xepersianlogobox}{\includegraphics[height=0.5in,keepaspectratio=true]{xepersian-logo}}
+\def\ps at docheadings{%
+ \let\@oddhead\@empty
+ \def\@oddfoot{\parbox{\textwidth}{\hfill\leftmark\quad\thepage\qquad\raisebox{-0.2in}{\usebox\xepersianlogobox}}}%
+ \let\@mkboth\markboth
+ \def\sectionmark##1{%
+ \markboth {%
+ ##1}{}}}
+\def\@part[#1]#2{%
+ \ifnum \c at secnumdepth >\m at ne
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
+ \else
+ \addcontentsline{toc}{part}{#1}%
+ \fi
+ {\parindent \z@ \raggedright
+ \interlinepenalty \@M
+ \normalfont
+ \ifnum \c at secnumdepth >\m at ne
+ \Large\bfseries\color{blue!65!black} \partname\nobreakspace\thepart
+ \par\nobreak
+ \fi
+ \huge \bfseries #2%
+ \markboth{}{}\par}%
+ \nobreak
+ \vskip 3ex
+ \@afterheading}
+\def\@spart#1{%
+ {\parindent \z@ \raggedright
+ \interlinepenalty \@M
+ \normalfont
+ \huge \bfseries\color{blue!65!black} #1\par}%
+ \nobreak
+ \vskip 3ex
+ \@afterheading}
+\renewcommand\section{\@startsection {section}{1}{\z@}%
+ {-3.5ex \@plus -1ex \@minus -.2ex}%
+ {2.3ex \@plus.2ex}%
+ {\normalfont\Large\bfseries\color{blue!65!black}}}
+\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\normalfont\large\bfseries\color{blue!65!black}}}
+\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\normalfont\normalsize\bfseries\color{blue!65!black}}}
+\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
+ {3.25ex \@plus1ex \@minus.2ex}%
+ {-1em}%
+ {\normalfont\normalsize\bfseries\color{blue!65!black}}}
+\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
+ {3.25ex \@plus1ex \@minus .2ex}%
+ {-1em}%
+ {\normalfont\normalsize\bfseries\color{blue!65!black}}}
+\makeatother
+\pagestyle{docheadings}
+\newcounter{local}
+\renewcommand\theenumi{\protect\setcounter{local}%
+ {201+\the\value{enumi}}\protect\ding{\value{local}}}
+\renewcommand\labelenumi{\theenumi}
+\renewcommand\labelitemi{\HandRight}
+\renewcommand\labelitemii{\HandRightUp}
+\renewcommand\labelitemiii{\HandCuffRight}
+\renewcommand\labelitemiv{\HandPencilLeft}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-preamble.ltx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-title.ltx
===================================================================
--- trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-title.ltx (rev 0)
+++ trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-title.ltx 2020-05-16 21:33:48 UTC (rev 55165)
@@ -0,0 +1,47 @@
+\documentclass{ltxdoc}
+\input{xepersian-doc-preamble.ltx}
+\begin{document}
+ \title{\textcolor{blue!65!black}{\Huge The \textsf{\XePersian} \textit{Package}}\\
+\LARGE Persian for \LaTeXe, using {\XeTeX} engine\\[5pt]
+\large User documentation for \textcolor{blue!65!black}{version 23.0}}
+\author{Vafa Khalighi\thanks{Thanks to the bidi-tex GitHub organization consisted of David Carlisle and other members of the {\LaTeX} team to maintain the package in the period 2018--2020.}}
+\setcounter{page}{0}
+\thispagestyle{empty}
+\includegraphics[width=.3\textwidth]{xepersian-logo}\qquad
+\parindent 0pt
+\vbox{\Huge
+\textcolor{blue!65!black}{\Huge The \textsf{\XePersian} \textit{Package}}
+
+\Large
+User documentation for \textcolor{blue!65!black}{version 23.0}}
+
+\vskip 0pt plus 3fill
+\textit{\large to my Master, \textbf{Ferdowsi The Great}}
+
+\vskip 0pt plus 3fill
+{\color{red!85!black}\fbox{\begin{minipage}{\dimexpr\textwidth-2\fboxsep-2\fboxrule}
+If you want to report any bugs or typos and corrections in the documentation,
+or ask for any new features, or suggest any improvements, or ask any questions about the package, then please use the issue tracker:
+
+\medskip
+ \centerline{\url{https://github.com/persiantex/xepersian/issues}}
+
+\medskip
+In doing so, please always explain your issue well enough, and always include
+a minimal working example showing the issue.
+\end{minipage}
+}}
+
+\vskip 0pt plus 3fill
+
+
+Copyright (c) 2008--2020 Vafa Khalighi
+
+Copyright (c) 2018--2020 bidi-tex GitHub Organization
+
+
+\medskip
+Permission is granted to distribute and/or modify \emph{both the documentation and the code} under the conditions of the \LaTeX{} Project Public License, either version 1.3c of this license or (at your option) any later version.
+
+\clearpage
+\end{document}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-title.ltx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc.ltx
===================================================================
--- trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc.ltx (rev 0)
+++ trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc.ltx 2020-05-16 21:33:48 UTC (rev 55165)
@@ -0,0 +1,17 @@
+\documentclass{ltxdoc}
+\input{xepersian-doc-preamble.ltx}
+\hypersetup{%
+ pdftitle={User documentation for version 23.0 of the XePersian
+ package}%
+}
+\begin{document}
+\input{xepersian-doc-title.ltx}
+\maketitle
+ \tableofcontents
+\input{xepersian-doc-intro.ltx}
+\input{xepersian-doc-basics.ltx}
+\input{xepersian-doc-envcs.ltx}
+\input{xepersian-doc-boolean.ltx}
+\input{xepersian-doc-captions.ltx}
+\input{xepersian-doc-pkgs.ltx}
+\end{document}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc.ltx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian.dtx
===================================================================
--- trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian.dtx (rev 0)
+++ trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian.dtx 2020-05-16 21:33:48 UTC (rev 55165)
@@ -0,0 +1,8309 @@
+% \iffalse
+%<*internal>
+\iffalse
+%</internal>
+%<*readme>
+____________________
+The XePersian package
+v23.0
+
+The xepersian package provides a convenient interface for
+typesetting Persian and English texts in LaTeX, using XeTeX
+engine.
+
+If you want to report any bugs or typos and corrections in the
+documentation, or ask for any new features, or suggest any
+improvements, or ask any questions about the package, then
+please use the issue tracker:
+
+ <https://github.com/persiantex/xepersian/issues>
+
+In doing so, please always explain your issue well enough, and always
+include a minimal working example showing the issue.
+
+
+Current version release date: 2020/05/16
+___________________________________________
+Copyright (c) Vafa Khalighi 2008--2020
+Copyright (c) bidi-tex GitHub Organization 2018--2020
+
+Distributed under the LaTeX Project Public License
+It may be distributed and/or modified under the LaTeX Project Public License,
+version 1.3c or higher (your choice). The latest version of
+this license is at: http://www.latex-project.org/lppl.txt
+
+This work is “author-maintained” (as per LPPL maintenance status)
+by Vafa Khalighi.
+%</readme>
+%<*internal>
+\fi
+\begingroup
+%</internal>
+%<*batchfile>
+\input docstrip.tex
+\let\MetaPrefix\relax
+\keepsilent
+\preamble
+
+ __________________________________________________
+ Copyright (c) 2008--2020 Vafa Khalighi
+ Copyright (c) 2018--2020 bidi-tex GitHub Organization
+
+ It may be distributed and/or modified under the LaTeX Project Public License,
+ version 1.3c or higher (your choice). The latest version of
+ this license is at: http://www.latex-project.org/lppl.txt
+
+ This work is “author-maintained” (as per LPPL maintenance status)
+ by Vafa Khalighi.
+
+
+\endpreamble
+\askforoverwritefalse
+\let\MetaPrefix\DoubleperCent
+\generate{\file{algorithmic-xepersian.def}{\from{\jobname.dtx}{table,algorithmic-xepersian.def}}}
+\generate{\file{algorithm-xepersian.def}{\from{\jobname.dtx}{table,algorithm-xepersian.def}}}
+\generate{\file{amsart-xepersian.def}{\from{\jobname.dtx}{table,amsart-xepersian.def}}}
+\generate{\file{amsbook-xepersian.def}{\from{\jobname.dtx}{table,amsbook-xepersian.def}}}
+\generate{\file{appendix-xepersian.def}{\from{\jobname.dtx}{table,appendix-xepersian.def}}}
+\generate{\file{article-xepersian.def}{\from{\jobname.dtx}{table,article-xepersian.def}}}
+\generate{\file{artikel1-xepersian.def}{\from{\jobname.dtx}{table,artikel1-xepersian.def}}}
+\generate{\file{artikel2-xepersian.def}{\from{\jobname.dtx}{table,artikel2-xepersian.def}}}
+\generate{\file{artikel3-xepersian.def}{\from{\jobname.dtx}{table,artikel3-xepersian.def}}}
+\generate{\file{backref-xepersian.def}{\from{\jobname.dtx}{table,backref-xepersian.def}}}
+\generate{\file{bidituftesidenote-xepersian.def}{\from{\jobname.dtx}{table,bidituftesidenote-xepersian.def}}}
+\generate{\file{bidimoderncv-xepersian.def}{\from{\jobname.dtx}{table,bidimoderncv-xepersian.def}}}
+\generate{\file{boek3-xepersian.def}{\from{\jobname.dtx}{table,boek3-xepersian.def}}}
+\generate{\file{boek-xepersian.def}{\from{\jobname.dtx}{table,boek-xepersian.def}}}
+\generate{\file{bookest-xepersian.def}{\from{\jobname.dtx}{table,bookest-xepersian.def}}}
+\generate{\file{book-xepersian.def}{\from{\jobname.dtx}{table,book-xepersian.def}}}
+\generate{\file{breqn-xepersian.def}{\from{\jobname.dtx}{table,breqn-xepersian.def}}}
+\generate{\file{latex-localise-commands-xepersian.def}{\from{\jobname.dtx}{table,latex-localise-commands-xepersian.def}}}
+\generate{\file{color-localise-xepersian.def}{\from{\jobname.dtx}{table,color-localise-xepersian.def}}}
+\generate{\file{xepersian-localise-commands-xepersian.def}{\from{\jobname.dtx}{table,xepersian-localise-commands-xepersian.def}}}
+\generate{\file{enumerate-xepersian.def}{\from{\jobname.dtx}{table,enumerate-xepersian.def}}}
+\generate{\file{enumitem-xepersian.def}{\from{\jobname.dtx}{table,enumitem-xepersian.def}}}
+\generate{\file{latex-localise-environments-xepersian.def}{\from{\jobname.dtx}{table,latex-localise-environments-xepersian.def}}}
+\generate{\file{xepersian-localise-environments-xepersian.def}{\from{\jobname.dtx}{table,xepersian-localise-environments-xepersian.def}}}
+\generate{\file{extarticle-xepersian.def}{\from{\jobname.dtx}{table,extarticle-xepersian.def}}}
+\generate{\file{extbook-xepersian.def}{\from{\jobname.dtx}{table,extbook-xepersian.def}}}
+\generate{\file{extrafootnotefeatures-xepersian.def}{\from{\jobname.dtx}{table,extrafootnotefeatures-xepersian.def}}}
+\generate{\file{extreport-xepersian.def}{\from{\jobname.dtx}{table,extreport-xepersian.def}}}
+\generate{\file{fancyref-xepersian.def}{\from{\jobname.dtx}{table,fancyref-xepersian.def}}}
+\generate{\file{footnote-xepersian.def}{\from{\jobname.dtx}{table,footnote-xepersian.def}}}
+\generate{\file{framed-xepersian.def}{\from{\jobname.dtx}{table,framed-xepersian.def}}}
+\generate{\file{glossaries-xepersian.def}{\from{\jobname.dtx}{table,glossaries-xepersian.def}}}
+\generate{\file{hyperref-xepersian.def}{\from{\jobname.dtx}{table,hyperref-xepersian.def}}}
+\generate{\file{imsproc-xepersian.def}{\from{\jobname.dtx}{table,imsproc-xepersian.def}}}
+\generate{\file{kashida-xepersian.def}{\from{\jobname.dtx}{table,kashida-xepersian.def}}}
+\generate{\file{listings-xepersian.def}{\from{\jobname.dtx}{table,listings-xepersian.def}}}
+\generate{\file{loadingorder-xepersian.def}{\from{\jobname.dtx}{table,loadingorder-xepersian.def}}}
+\generate{\file{localise-xepersian.def}{\from{\jobname.dtx}{table,localise-xepersian.def}}}
+\generate{\file{memoir-xepersian.def}{\from{\jobname.dtx}{table,memoir-xepersian.def}}}
+\generate{\file{latex-localise-messages-xepersian.def}{\from{\jobname.dtx}{table,latex-localise-messages-xepersian.def}}}
+\generate{\file{minitoc-xepersian.def}{\from{\jobname.dtx}{table,minitoc-xepersian.def}}}
+\generate{\file{latex-localise-misc-xepersian.def}{\from{\jobname.dtx}{table,latex-localise-misc-xepersian.def}}}
+\generate{\file{natbib-xepersian.def}{\from{\jobname.dtx}{table,natbib-xepersian.def}}}
+\generate{\file{packages-localise-xepersian.def}{\from{\jobname.dtx}{table,packages-localise-xepersian.def}}}
+\def\MetaPrefix{;;}
+\def\mapping at postamble{%
+ \MetaPrefix ^^J%
+ \MetaPrefix\space End of file `\outFileName'.%
+}
+\usepostamble\mapping at postamble
+\generate{\file{persian-tex-text.map}{\from{\jobname.dtx}{persian-tex-text.map}}}
+\let\MetaPrefix\DoubleperCent
+\usepostamble\org at postamble
+\generate{\file{rapport1-xepersian.def}{\from{\jobname.dtx}{table,rapport1-xepersian.def}}}
+\generate{\file{rapport3-xepersian.def}{\from{\jobname.dtx}{table,rapport3-xepersian.def}}}
+\generate{\file{refrep-xepersian.def}{\from{\jobname.dtx}{table,refrep-xepersian.def}}}
+\generate{\file{report-xepersian.def}{\from{\jobname.dtx}{table,report-xepersian.def}}}
+\generate{\file{scrartcl-xepersian.def}{\from{\jobname.dtx}{table,scrartcl-xepersian.def}}}
+\generate{\file{scrbook-xepersian.def}{\from{\jobname.dtx}{table,scrbook-xepersian.def}}}
+\generate{\file{scrreprt-xepersian.def}{\from{\jobname.dtx}{table,scrreprt-xepersian.def}}}
+\generate{\file{soul-xepersian.def}{\from{\jobname.dtx}{table,soul-xepersian.def}}}
+\generate{\file{tikz.code-xepersian.def}{\from{\jobname.dtx}{table,tikz.code-xepersian.def}}}
+\generate{\file{tkz-linknodes-xepersian.def}{\from{\jobname.dtx}{table,tkz-linknodes-xepersian.def}}}
+\generate{\file{tocloft-xepersian.def}{\from{\jobname.dtx}{table,tocloft-xepersian.def}}}
+\generate{\file{varioref-xepersian.def}{\from{\jobname.dtx}{table,varioref-xepersian.def}}}
+\generate{\file{xepersian.sty}{\from{\jobname.dtx}{table,xepersian.sty}}}
+\generate{\file{xepersian-magazine.cls}{\from{\jobname.dtx}{table,xepersian-magazine.cls}}}
+\generate{\file{xepersian-mathsdigitspec.sty}{\from{\jobname.dtx}{table,xepersian-mathsdigitspec.sty}}}
+\generate{\file{xepersian-multiplechoice.sty}{\from{\jobname.dtx}{table,xepersian-multiplechoice.sty}}}
+\generate{\file{xepersian-persiancal.sty}{\from{\jobname.dtx}{table,xepersian-persiancal.sty}}}
+%</batchfile>
+%<batchfile>\endbatchfile
+%<*internal>
+\generate{\file{\jobname.ins}{\from{\jobname.dtx}{batchfile}}}
+\nopreamble\nopostamble
+\generate{\file{README.txt}{\from{\jobname.dtx}{readme}}}
+\generate{\file{magazine-sample.tex}{\from{\jobname.dtx}{magazine-sample.tex}}}
+\generate{\file{test-correction.tex}{\from{\jobname.dtx}{test-correction.tex}}}
+\generate{\file{test-empty-form.tex}{\from{\jobname.dtx}{test-empty-form.tex}}}
+\generate{\file{test-question-only.tex}{\from{\jobname.dtx}{test-question-only.tex}}}
+\generate{\file{test-solution-form.tex}{\from{\jobname.dtx}{test-solution-form.tex}}}
+\generate{\file{xepersian-logo.tex}{\from{\jobname.dtx}{xepersian-logo.tex}}}
+\endgroup
+\immediate\write18{mv README.txt README}
+\immediate\write18{makeindex -s gind.ist -o \jobname.ind \jobname.idx}
+\immediate\write18{makeindex -s gglo.ist -o \jobname.gls \jobname.glo}
+%</internal>
+%
+%<*driver>
+\documentclass{ltxdoc}
+\input{xepersian-doc-preamble.ltx}
+\hypersetup{%
+ pdftitle={Source documentation for version 23.0 of the XePersian
+ package}%
+}
+\EnableCrossrefs
+\CodelineIndex
+%\RecordChanges
+\begin{document}
+ \DocInput{\jobname.dtx}
+ \PrintIndex
+% \PrintChanges
+\end{document}
+%</driver>
+%
+%
+% \fi
+%
+% \GetFileInfo{\jobname.dtx}
+% \title{\textcolor{blue!65!black}{\Huge The \textsf{\XePersian} \textit{Package}}\\
+%\LARGE Persian for \LaTeXe, using {\XeTeX} engine\\[5pt]
+%\large Source documentation for \textcolor{blue!65!black}{version 23.0}}
+% \author{Vafa Khalighi\thanks{Thanks to the bidi-tex GitHub organization consisted of David Carlisle and other members of the {\LaTeX} team to maintain the package in the period 2018--2020.}}
+%\setcounter{page}{0}
+%\thispagestyle{empty}
+%\includegraphics[width=.3\textwidth]{xepersian-logo}\qquad
+%\parindent 0pt
+%\vbox{\Huge
+%\textcolor{blue!65!black}{\Huge The \textsf{\XePersian} \textit{Package}}
+%
+%\Large
+%Source documentation for \textcolor{blue!65!black}{version 23.0}}
+%
+%\vskip 0pt plus 3fill
+%\textit{\large to my Master, \textbf{Ferdowsi The Great}}
+%
+%\vskip 0pt plus 3fill
+%{\color{red!85!black}\fbox{\begin{minipage}{\dimexpr\textwidth-2\fboxsep-2\fboxrule}
+%If you want to report any bugs or typos and corrections in the documentation,
+%or ask for any new features, or suggest any improvements, or ask any questions about the package, then please use the issue tracker:
+%
+%\medskip
+% \centerline{\url{https://github.com/persiantex/xepersian/issues}}
+%
+%\medskip
+%In doing so, please always explain your issue well enough, and always include
+%a minimal working example showing the issue.
+%\end{minipage}
+%}}
+%
+%\vskip 0pt plus 3fill
+%
+%Copyright (c) 2008--2020 Vafa Khalighi
+%
+%Copyright (c) 2018--2020 bidi-tex GitHub Organization
+%
+%\medskip
+%Permission is granted to distribute and/or modify \emph{both the documentation and the code} under the conditions of the \LaTeX{} Project Public License, either version 1.3c of this license or (at your option) any later version.
+%
+%\clearpage
+%\maketitle
+% \tableofcontents
+% \StopEventually{}
+% \section{File \texttt{algorithmic-xepersian.def}}
+%\iffalse
+%<*table>
+%\fi
+%% \CheckSum{10884}
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%%
+% \iffalse
+%</table>
+%<*algorithmic-xepersian.def>
+%\fi
+%
+%
+%
+% \begin{macrocode}
+\ProvidesFile{algorithmic-xepersian.def}[2010/07/25 v0.2 adaptations for algorithmic package]
+\def\algorithmicrequire{\if at RTL\textbf{ورودی:}\else\textbf{Require:}\fi}
+\def\algorithmicensure{\if at RTL\textbf{خروجی:}\else\textbf{Ensure:}\fi}
+% \end{macrocode}
+%
+%\iffalse
+%</algorithmic-xepersian.def>
+%<*algorithm-xepersian.def>
+%\fi
+% \section{File \texttt{algorithm-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{algorithm-xepersian.def}[2010/07/25 v0.2 adaptations for algorithm package]
+\def\ALG at name{\if at RTL الگوریتم\else Algorithm\fi}
+\def\ALGS at name{الگوریتمها}
+\def\listalgorithmname{\if at RTL فهرست \ALGS at name\else List of \ALG at name s\fi}
+% \end{macrocode}
+% \iffalse
+%</algorithm-xepersian.def>
+%<*amsart-xepersian.def>
+%\fi
+% \section{File \texttt{amsart-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{amsart-xepersian.def}[2017/02/04 v0.4 adaptations for amsart class]
+\renewcommand \thepart {\@tartibi\c at part}
+\def\appendix{\par\c at section\z@ \c at subsection\z@
+ \let\sectionname\appendixname
+ \def\thesection{\@harfi\c at section}}
+
+% \end{macrocode}
+% \iffalse
+%</amsart-xepersian.def>
+%<*amsbook-xepersian.def>
+%\fi
+% \section{File \texttt{amsbook-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{amsbook-xepersian.def}[2017/02/04 v0.5 adaptations for amsbook class]
+\def\frontmatter{\cleardoublepage\pagenumbering{harfi}}
+\renewcommand \thepart {\@tartibi\c at part}
+\def\appendix{\par
+ \c at chapter\z@ \c at section\z@
+ \let\chaptername\appendixname
+ \def\thechapter{\@harfi\c at chapter}}
+
+
+% \end{macrocode}
+% \iffalse
+%</amsbook-xepersian.def>
+%<*appendix-xepersian.def>
+%\fi
+% \section{File \texttt{appendix-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{appendix-xepersian.def}[2015/02/01 v0.1 adaptations for appendix package]
+\renewcommand{\@resets at pp}{\par
+ \@ppsavesec
+ \stepcounter{@pps}
+ \setcounter{section}{0}%
+ \if at chapter@pp
+ \setcounter{chapter}{0}%
+ \renewcommand\@chapapp{\appendixname}%
+ \renewcommand\thechapter{\@harfi\c at chapter}%
+ \else
+ \setcounter{subsection}{0}%
+ \renewcommand\thesection{\@harfi\c at section}%
+ \fi
+ \restoreapp
+}
+% \end{macrocode}
+% \iffalse
+%</appendix-xepersian.def>
+%<*article-xepersian.def>
+%\fi
+% \section{File \texttt{article-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{article-xepersian.def}[2010/07/25 v0.2 adaptations for standard article class]
+\renewcommand \thepart {\@tartibi\c at part}
+\renewcommand\appendix{\par
+ \setcounter{section}{0}%
+ \setcounter{subsection}{0}%
+ \gdef\thesection{\@harfi\c at section}}
+% \end{macrocode}
+% \iffalse
+%</article-xepersian.def>
+%<*artikel1-xepersian.def>
+%\fi
+% \section{File \texttt{artikel1-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{artikel1-xepersian.def}[2010/07/25 v0.1 adaptations for artikel1 class]
+\renewcommand*\thepart{\@tartibi\c at part}
+\renewcommand*\appendix{\par
+ \setcounter{section}{0}%
+ \setcounter{subsection}{0}%
+ \gdef\thesection{\@harfi\c at section}}
+% \end{macrocode}
+% \iffalse
+%</artikel1-xepersian.def>
+%<*artikel2-xepersian.def>
+%\fi
+% \section{File \texttt{artikel2-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{artikel2-xepersian.def}[2010/07/25 v0.1 adaptations for artikel2 class]
+\renewcommand*\thepart{\@tartibi\c at part}
+\renewcommand*\appendix{\par
+ \setcounter{section}{0}%
+ \setcounter{subsection}{0}%
+ \gdef\thesection{\@harfi\c at section}}
+% \end{macrocode}
+% \iffalse
+%</artikel2-xepersian.def>
+%<*artikel3-xepersian.def>
+%\fi
+% \section{File \texttt{artikel3-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{artikel3-xepersian.def}[2010/07/25 v0.1 adaptations for artikel3 class]
+\renewcommand*\thepart{\@tartibi\c at part}
+\renewcommand*\appendix{\par
+ \setcounter{section}{0}%
+ \setcounter{subsection}{0}%
+ \gdef\thesection{\@harfi\c at section}}
+% \end{macrocode}
+% \iffalse
+%</artikel3-xepersian.def>
+%<*backref-xepersian.def>
+%\fi
+% \section{File \texttt{backref-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{backref-xepersian.def}[2010/07/25 v0.1 adaptations for backref package]
+\def\backrefpagesname{\if at RTL صفحات\else pages\fi}
+\def\BR at Latincitex[#1]#2{%
+ \BRorg at Latincitex[{#1}]{#2}%
+ \ifBR at verbose
+ \PackageInfo{backref}{back Latin cite \string`#2\string'}%
+ \fi
+ \Hy at backout{#2}%
+}
+\AtBeginDocument{%
+ \@ifundefined{NAT at parse}{%
+ \global\let\BRorg at Latincitex\@Latincitex
+ \global\let\@Latincitex\BR at Latincitex
+ }{%
+ \@ifpackageloaded{hyperref}{}{%
+ \def\hyper at natlinkstart#1{\Hy at backout{#1}}%
+ }%
+ \PackageInfo{backref}{** backref set up for natbib **}%
+ }%
+}%
+% \end{macrocode}
+% \iffalse
+%</backref-xepersian.def>
+%<*bidituftesidenote-xepersian.def>
+%\fi
+% \section{File \texttt{bidituftesidenote-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{bidituftesidenote-xepersian.def}[2017/02/04 v0.3 xepersian changes to bidituftesidenote package]
+
+\setLTRcitationfont{\resetlatinfont\footnotesize}
+
+\renewcommand*{\@bidituftesidenote at LTRmarginfont}{\resetlatinfont\footnotesize}
+
+\renewcommand*{\@bidituftesidenote at RTLmarginfont}{\setpersianfont\footnotesize}
+
+
+% \end{macrocode}
+% \iffalse
+%</bidituftesidenote-xepersian.def>
+%<*bidimoderncv-xepersian.def>
+%\fi
+% \section{File \texttt{bidimoderncv-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{bidimoderncv-xepersian.def}[2010/07/25 v0.1 adaptations for bidimoderncv class]
+\def\refname{\if at RTL تألیفات\else Publications\fi}
+% \end{macrocode}
+% \iffalse
+%</bidimoderncv-xepersian.def>
+%<*boek3-xepersian.def>
+%\fi
+% \section{File \texttt{boek3-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{boek3-xepersian.def}[2010/07/25 v0.1 adaptations for boek3 class]
+\renewcommand*\thepart{\@tartibi\c at part}
+\renewcommand*\frontmatter{%
+ \cleardoublepage
+ \@mainmatterfalse
+ \pagenumbering{harfi}}
+\renewcommand*\appendix{\par
+ \setcounter{chapter}{0}%
+ \setcounter{section}{0}%
+ \gdef\@chapapp{\appendixname}%
+ \gdef\thechapter{\@harfi\c at chapter}}
+% \end{macrocode}
+% \iffalse
+%</boek3-xepersian.def>
+%<*boek-xepersian.def>
+%\fi
+% \section{File \texttt{boek-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{boek-xepersian.def}[2010/07/25 v0.1 adaptations for boek class]
+\renewcommand*\thepart{\@tartibi\c at part}
+\renewcommand*\frontmatter{%
+ \cleardoublepage
+ \@mainmatterfalse
+ \pagenumbering{harfi}}
+\renewcommand*\appendix{\par
+ \setcounter{chapter}{0}%
+ \setcounter{section}{0}%
+ \gdef\@chapapp{\appendixname}%
+ \gdef\thechapter{\@harfi\c at chapter}}
+% \end{macrocode}
+% \iffalse
+%</boek-xepersian.def>
+%<*bookest-xepersian.def>
+%\fi
+% \section{File \texttt{bookest-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{bookest-xepersian.def}[2010/07/25 v0.1 adaptations for bookest class]
+\renewcommand \thepart {\@tartibi\c at part}
+\renewcommand\appendix{\par
+ \setcounter{chapter}{0}%
+ \setcounter{section}{0}%
+ \gdef\@chapapp{\appendixname}%
+ \gdef\thechapter{\@harfi\c at chapter}
+}%end appendix
+% \end{macrocode}
+% \iffalse
+%</bookest-xepersian.def>
+%<*book-xepersian.def>
+%\fi
+% \section{File \texttt{book-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{book-xepersian.def}[2010/07/25 v0.2 adaptations for standard book class]
+\renewcommand\frontmatter{%
+ \cleardoublepage
+ \@mainmatterfalse
+ \pagenumbering{harfi}}
+\renewcommand \thepart {\@tartibi\c at part}
+\renewcommand\appendix{\par
+ \setcounter{chapter}{0}%
+ \setcounter{section}{0}%
+ \gdef\@chapapp{\appendixname}%
+ \gdef\thechapter{\@harfi\c at chapter}
+}%end appendix
+% \end{macrocode}
+% \iffalse
+%</book-xepersian.def>
+%<*breqn-xepersian.def>
+%\fi
+% \section{File \texttt{breqn-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{breqn-xepersian.def}[2010/07/25 v0.1 adaptations for breqn package]
+\def\@dmath[#1]{\if at RTL\@RTLfalse\addfontfeatures{Mapping=farsidigits}\fi%
+ \everydisplay\expandafter{\the\everydisplay \display at setup}%
+ \if at noskipsec \leavevmode \fi
+ \if at inlabel \leavevmode \global\@inlabelfalse \fi
+ \if\eq at group\else\eq at prelim\fi
+ \setkeys{breqn}{#1}%
+ \the\eqstyle
+ \eq at setnumber
+ \begingroup
+ \eq at setup@a
+ \eq at startup
+}
+\def\@dgroup[#1]{\if at RTL\@RTLfalse\addfontfeatures{Mapping=farsidigits}\fi%
+ \let\eq at group\@True \global\let\eq at GRP@first at dmath\@True
+ \global\GRP at queue\@emptytoks \global\setbox\GRP at box\box\voidb at x
+ \global\let\GRP at label\@empty
+ \global\grp at wdL\z@\global\grp at wdR\z@\global\grp at wdT\z@
+ \global\grp at linewidth\z@\global\grp at wdNum\z@
+ \global\let\grp at eqs@numbered\@False
+ \global\let\grp at aligned\@True
+ \global\let\grp at shiftnumber\@False
+ \eq at prelim
+ \setkeys{breqn}{#1}%
+ \if\grp at hasNumber \grp at setnumber \fi
+}
+\def\@dseries[#1]{\if at RTL\@RTLfalse\addfontfeatures{Mapping=farsidigits}\fi%
+ \let\display at setup\dseries at display@setup
+ % Question: should this be the default for dseries???
+ \global\eq at wdCond\z@
+ \@dmath[layout={M},#1]%
+ \mathsurround\z@\@@math \penalty\@Mi
+ \let\endmath\ends at math
+ \def\premath{%
+ \ifdim\lastskip<.3em \unskip
+ \else\ifnum\lastpenalty<\@M \dquad\fi\fi
+}%
+ \def\postmath{\unpenalty\eq at addpunct \penalty\intermath at penalty \dquad \@ignoretrue}%
+\ignorespaces
+}
+% \end{macrocode}
+% \iffalse
+%</breqn-xepersian.def>
+%<*latex-localise-commands-xepersian.def>
+%\fi
+% \section{File \texttt{latex-localise-commands-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{latex-localise-commands-xepersian.def}[2014/02/05 v0.3 Persian localisation of LaTeX2e commands]
+\eqcommand{شمعجدول}{@arstrut}
+\eqcommand{فوق}{above}
+\eqcommand{فاصلهکوتاهبالاینمایش}{abovedisplayshortskip}
+\eqcommand{فاصلهبالاینمایش}{abovedisplayskip}
+\eqcommand{عنوانچکیده}{abstractname}
+\eqcommand{اکسنت}{accent}
+\eqcommand{فعال}{active}
+\eqcommand{بیفزاسطرفهرست}{addcontentsline}
+\eqcommand{اضافهبرجریمه}{addpenalty}
+\eqcommand{نشانی}{address}
+\eqcommand{بیفزابهفهرست}{addtocontents}
+\eqcommand{اضافهبرشمارنده}{addtocounter}
+\eqcommand{اضافهبربعد}{addtolength}
+\eqcommand{بیفزافضایو}{addvspace}
+\eqcommand{تنظیمبدنمایی}{adjdemerits}
+\eqcommand{بیفزابر}{advance}
+\eqcommand{بعدازانتساب}{afterassignment}
+\eqcommand{بعدازگروه}{aftergroup}
+\eqcommand{الف}{aleph}
+\eqcommand{خصیصهمستعارقلم}{aliasfontfeature}
+\eqcommand{انتخابخصیصهمستعارقلم}{aliasfontfeatureoption}
+\eqcommand{شکستنی}{allowbreak}
+\eqcommand{تخصی@}{alloc@}
+\eqcommand{تخصیصیافته}{allocationnumber}
+\eqcommand{شکستنمایشمجاز}{allowdisplaybreaks}
+\eqcommand{حروفبزرگ}{Alph}
+\eqcommand{حروفکوچک}{alph}
+\eqcommand{نامهمچنین}{alsoname}
+\eqcommand{و}{and}
+\eqcommand{زاویه}{angle}
+\eqcommand{عنوانپیوست}{appendixname}
+\eqcommand{تقریب}{approx}
+\eqcommand{عربی}{arabic}
+\eqcommand{آرگ}{arg}
+\eqcommand{رنگخطجدول}{arrayrulecolor}
+\eqcommand{فاصلهستونهایآرایه}{arraycolsep}
+\eqcommand{ضخامتخطجدول}{arrayrulewidth}
+\eqcommand{کشیدگیآرایه}{arraystretch}
+\eqcommand{درآغازنوشتار}{AtBeginDocument}
+\eqcommand{درپایاننوشتار}{AtEndDocument}
+\eqcommand{درانتهایطبقه}{AtEndOfClass}
+\eqcommand{درانتهایسبک}{AtEndOfPackage}
+\eqcommand{نویسنده}{author}
+\eqcommand{مطلبپشت}{backmatter}
+\eqcommand{شکافپشت}{backslash}
+\eqcommand{بدنمایی}{badness}
+\eqcommand{میله}{bar}
+\eqcommand{فاصلهکرسی}{baselineskip}
+\eqcommand{کششفاصلهکرسی}{baselinestretch}
+\eqcommand{پردازشدستهای}{batchmode}
+\eqcommand{شروع}{begin}
+\eqcommand{شروعچپ}{beginL}
+\eqcommand{شروعراست}{beginR}
+\eqcommand{شروعگروه}{begingroup}
+\eqcommand{فاصلهکوتاهپاییننمایش}{belowdisplayshortskip}
+\eqcommand{فاصلهپاییننمایش}{belowdisplayskip}
+\eqcommand{سیاه}{bf}
+\eqcommand{پیشفرضسیاه}{bfdefault}
+\eqcommand{شمایلسیاه}{bfseries}
+\eqcommand{شرگروه}{bgroup}
+\eqcommand{مرجوع}{bibitem}
+\eqcommand{کتابنامه}{bibliography}
+\eqcommand{سبککتابنامه}{bibliographystyle}
+\eqcommand{عنوانکتابنامه}{bibname}
+\eqcommand{پرشبلند}{bigskip}
+\eqcommand{مقدارپرشبلند}{bigskipamount}
+\eqcommand{خطپایینشناور}{botfigrule}
+\eqcommand{علامتپایین}{botmark}
+\eqcommand{کادرتاپایین}{bottompageskip}
+\eqcommand{نسبتپایین}{bottomfraction}
+\eqcommand{کادر}{box}
+\eqcommand{حداکثرعمقکادر}{boxmaxdepth}
+\eqcommand{بشکن}{break}
+\eqcommand{گلوله}{bullet}
+\eqcommand{دوپن@پنج}{@cclv}
+\eqcommand{دوپن@شش}{@cclvi}
+\eqcommand{شرح}{caption}
+\eqcommand{کدرده}{catcode}
+\eqcommand{رونوشت}{cc}
+\eqcommand{نامرونوشت}{ccname}
+\eqcommand{نقطهوسط}{cdot}
+\eqcommand{نقاطوسط}{cdots}
+\eqcommand{تنظیمازوسط}{centering}
+\eqcommand{خطوسط}{centerline}
+\eqcommand{چک@ن}{ch at ck}
+\eqcommand{فصل}{chapter}
+\eqcommand{عنوانفصل}{chaptername}
+\eqcommand{نویسه}{char}
+\eqcommand{تعریفنویسه}{chardef}
+\eqcommand{برسیفرمان}{CheckCommand}
+\eqcommand{مرجع}{cite}
+\eqcommand{خطایطبقه}{ClassError}
+\eqcommand{اطلاعطبقه}{ClassInfo}
+\eqcommand{هشدارطبقه}{ClassWarning}
+\eqcommand{هشدارطبقهبیسطر}{ClassWarningNoLine}
+\eqcommand{نشانگرمرکزی}{cleaders}
+\eqcommand{دوصفحهپاک}{cleardoublepage}
+\eqcommand{صفحهپاک}{clearpage}
+\eqcommand{خطناپر}{cline}
+\eqcommand{ببندورودی}{closein}
+\eqcommand{ببندخروجی}{closeout}
+\eqcommand{بستن}{closing}
+\eqcommand{جریمهسربند}{clubpenalty}
+\eqcommand{خاج}{clubsuit}
+\eqcommand{علامتپایینستوناول}{colbotmark}
+\eqcommand{علامتاولستوناول}{colfirstmark}
+\eqcommand{رنگ}{color}
+\eqcommand{کادررنگ}{colorbox}
+\eqcommand{علامتبالایستوناول}{coltopmark}
+\eqcommand{رنگستون}{columncolor}
+\eqcommand{بینستون}{columnsep}
+\eqcommand{پهنایستون}{columnwidth}
+\eqcommand{خطبینستون}{columnseprule}
+\eqcommand{سطرفهرست}{contentsline}
+\eqcommand{عنوانفهرستمطالب}{contentsname}
+\eqcommand{کپی}{copy}
+\eqcommand{حقتالیف}{copyright}
+\eqcommand{شمار}{count}
+\eqcommand{شمار@}{count@}
+\eqcommand{تعریفشمار}{countdef}
+\eqcommand{سخ}{cr}
+\eqcommand{سخسخ}{crcr}
+\eqcommand{نامفرمان}{csname}
+\eqcommand{گزینهجاری}{CurrentOption}
+\eqcommand{کادربینابین}{dashbox}
+\eqcommand{بینابینع}{dashv}
+\eqcommand{@تاریخ}{@date}
+\eqcommand{تاریخ}{date}
+\eqcommand{روز}{day}
+\eqcommand{خطپایینشناورپهن}{dblbotfigrule}
+\eqcommand{نسبتپهنپایین}{dblbottomfraction}
+\eqcommand{خطبالایشناورپهن}{dblfigrule}
+\eqcommand{نسبتصفحهشناورپهن}{dblfloatpagefraction}
+\eqcommand{فاصلهبینشناورپهن}{dblfloatsep}
+\eqcommand{کدمکانغیرهمانطور}{dblfntlocatecode}
+\eqcommand{فاصلهمتنوشناورپهن}{dbltextfloatsep}
+\eqcommand{نسبتپهنبالا}{dbltopfraction}
+\eqcommand{اعلانقلمثابت}{DeclareFixedFont}
+\eqcommand{اعلانپسوندگرافیک}{DeclareGraphicsExtensions}
+\eqcommand{اعلاندستورگرافیک}{DeclareGraphicsRule}
+\eqcommand{اعلانفرمانقلمقدیمی}{DeclareOldFontCommand}
+\eqcommand{اعلانگزینه}{DeclareOption}
+\eqcommand{اعلانفرمانقوی}{DeclareRobustCommand}
+\eqcommand{اعلانقلمعلائم}{DeclareSymbolFont}
+\eqcommand{دوربسته}{deadcycles}
+\eqcommand{تر}{def}
+\eqcommand{تعریف@کلید}{define at key}
+\eqcommand{تعریفرنگ}{definecolor}
+\eqcommand{درجه}{deg}
+\eqcommand{کدجداساز}{delcode}
+\eqcommand{جداساز}{delimiter}
+\eqcommand{ضریبجداساز}{delimiterfactor}
+\eqcommand{گودی}{depth}
+\eqcommand{خشت}{diamondsuit}
+\eqcommand{ابعاد}{dim}
+\eqcommand{بعد}{dimen}
+\eqcommand{بعد@}{dimen@}
+\eqcommand{بعد@یک}{dimen at i}
+\eqcommand{بعد@دو}{dimen at ii}
+\eqcommand{تعریفبعد}{dimendef}
+\eqcommand{تیرهگذاری}{discretionary}
+\eqcommand{شکستنمایش}{displaybreak}
+\eqcommand{تورفتگینمایش}{displayindent}
+\eqcommand{سبکنمایش}{displaystyle}
+\eqcommand{عرضنمایش}{displaywidth}
+\eqcommand{تقسیم}{divide}
+\eqcommand{طبقهنوشتار}{documentclass}
+\eqcommand{کن}{do}
+\eqcommand{تعویضکدها}{dospecials}
+\eqcommand{نقطه}{dot}
+\eqcommand{نقطهمساوی}{doteq}
+\eqcommand{پرنقطها}{dotfill}
+\eqcommand{نقاط}{dots}
+\eqcommand{کادردولا}{doublebox}
+\eqcommand{رنگفاصلهدوخطجدول}{doublerulesepcolor}
+\eqcommand{فاصلهبیندوخط}{doublerulesep}
+\eqcommand{فلشپایین}{downarrow}
+\eqcommand{عمق}{dp}
+\eqcommand{تخلیه}{dump}
+\eqcommand{ترگ}{edef}
+\eqcommand{پاگروه}{egroup}
+\eqcommand{انتهایفاصله}{eject}
+\eqcommand{گرنه}{else}
+\eqcommand{تاکید}{em}
+\eqcommand{کششلاجرم}{emergencystretch}
+\eqcommand{موکد}{emph}
+\eqcommand{@پوچ}{@empty}
+\eqcommand{پوچ}{empty}
+\eqcommand{مجموعهپوچ}{emptyset}
+\eqcommand{پایان}{end}
+\eqcommand{پایانچپ}{endL}
+\eqcommand{پایانراست}{endR}
+\eqcommand{پایاننامفرمان}{endcsname}
+\eqcommand{پایاناولینسر}{endfirsthead}
+\eqcommand{پایانپا}{endfoot}
+\eqcommand{تهبند}{endgraf}
+\eqcommand{پایانگروه}{endgroup}
+\eqcommand{پایانسر}{endhead}
+\eqcommand{پایانورودی}{endinput}
+\eqcommand{پایانآخرینپا}{endlastfoot}
+\eqcommand{گسترشاینصفحه}{enlargethispage}
+\eqcommand{تهسطر}{endline}
+\eqcommand{نویسهتهسطر}{endlinechar}
+\eqcommand{اندوری}{enspace}
+\eqcommand{انفاصله}{enskip}
+\eqcommand{فرمانجانشین}{eqcommand}
+\eqcommand{محیطجانشین}{eqenvironment}
+\eqcommand{ارجاعفر}{eqref}
+\eqcommand{کمکخطا}{errhelp}
+\eqcommand{پیامخطا}{errmessage}
+\eqcommand{سطرمتنخطا}{errorcontextlines}
+\eqcommand{پردازشتوقفخطا}{errorstopmode}
+\eqcommand{نویسهویژه}{escapechar}
+\eqcommand{یورو}{euro}
+\eqcommand{حاشیهزوج}{evensidemargin}
+\eqcommand{هرسخ}{everycr}
+\eqcommand{هرنمایش}{everydisplay}
+\eqcommand{هرکادرا}{everyhbox}
+\eqcommand{هرکار}{everyjob}
+\eqcommand{هرریاضی}{everymath}
+\eqcommand{هربند}{everypar}
+\eqcommand{هرکادرو}{everyvbox}
+\eqcommand{اجرایگزینهها}{ExecuteOptions}
+\eqcommand{جریمهاضافیتیرهبندی}{exhyphenpenalty}
+\eqcommand{بگسترپساز}{expandafter}
+\eqcommand{فاصلهاضافیبینستونها}{extracolsep}
+\eqcommand{@اولیازیک}{@firstofone}
+\eqcommand{@اولیازدو}{@firstoftwo}
+\eqcommand{چ@ار}{f at ur}
+\eqcommand{خانواده}{fam}
+\eqcommand{صفحهتجملی}{fancypage}
+\eqcommand{کادربا}{fbox}
+\eqcommand{ضخامتکادربا}{fboxrule}
+\eqcommand{حاشیهکادربا}{fboxsep}
+\eqcommand{کادربارنگ}{fcolorbox}
+\eqcommand{رگ}{fi}
+\eqcommand{عنوانشکل}{figurename}
+\eqcommand{پرشکن}{filbreak}
+\eqcommand{پر}{fill}
+\eqcommand{علامتاول}{firstmark}
+\eqcommand{پهن}{flat}
+\eqcommand{نسبتصفحهشناور}{floatpagefraction}
+\eqcommand{جریمهشناور}{floatingpenalty}
+\eqcommand{فاصلهبینشناور}{floatsep}
+\eqcommand{تنظیمازپایین}{flushbottom}
+\eqcommand{شکلبندی}{fmtname}
+\eqcommand{ردهشکلبندی}{fmtversion}
+\eqcommand{نشانه}{fnsymbol}
+\eqcommand{قلم}{font}
+\eqcommand{بعدقلم}{fontdimen}
+\eqcommand{رمزینهقلم}{fontencoding}
+\eqcommand{فامیلقلم}{fontfamily}
+\eqcommand{نامقلم}{fontname}
+\eqcommand{شمایلقلم}{fontseries}
+\eqcommand{شکلقلم}{fontshape}
+\eqcommand{اندازهقلم}{fontsize}
+\eqcommand{بلندایپایینصفحه}{footheight}
+\eqcommand{درجزیرنویس}{footins}
+\eqcommand{زیرنویس}{footnote}
+\eqcommand{علامتزیرنویس}{footnotemark}
+\eqcommand{خطزیرنویس}{footnoterule}
+\eqcommand{فاصلهتازیرنویس}{footnotesep}
+\eqcommand{اندازهزیرنویس}{footnotesize}
+\eqcommand{متنزیرنویس}{footnotetext}
+\eqcommand{فاصلهتاپایینصفحه}{footskip}
+\eqcommand{فریم}{frame}
+\eqcommand{کادرباخط}{framebox}
+\eqcommand{فواصلیکنواختلاتین}{frenchspacing}
+\eqcommand{مطلبپیش}{frontmatter}
+\eqcommand{بعدبگذار}{futurelet}
+\eqcommand{@خورحریصانه}{@gobble}
+\eqcommand{@خورحریصانهدو}{@gobbletwo}
+\eqcommand{@خورحریصانهچهار}{@gobblefour}
+\eqcommand{@عاقتآ}{@gtempa}
+\eqcommand{@عاقتب}{@gtempb}
+\eqcommand{ترع}{gdef}
+\eqcommand{الگویاطلاع}{GenericInfo}
+\eqcommand{الگویهشدار}{GenericWarning}
+\eqcommand{الگویخطا}{GenericError}
+\eqcommand{عام}{global}
+\eqcommand{تعاریفعام}{globaldefs}
+\eqcommand{لغتنامه}{glossary}
+\eqcommand{فقرهفرهنگ}{glossaryentry}
+\eqcommand{خوششکن}{goodbreak}
+\eqcommand{کاغذگراف}{graphpaper}
+\eqcommand{گیومهچپ}{guillemotleft}
+\eqcommand{گیومهراست}{guillemotright}
+\eqcommand{گیومهتکیچپ}{guilsinglleft}
+\eqcommand{گیومهتکیراست}{guilsinglright}
+\eqcommand{ردیفا}{halign}
+\eqcommand{بروتو}{hang}
+\eqcommand{بعدازسطر}{hangafter}
+\eqcommand{تورفتگیثابت}{hangindent}
+\eqcommand{بدنماییا}{hbadness}
+\eqcommand{کادرا}{hbox}
+\eqcommand{بلندایسرصفحه}{headheight}
+\eqcommand{فاصلهازسرصفحه}{headsep}
+\eqcommand{سربهنام}{headtoname}
+\eqcommand{دل}{heartsuit}
+\eqcommand{بلندا}{height}
+\eqcommand{پرا}{hfil}
+\eqcommand{پررا}{hfill}
+\eqcommand{رفعپرا}{hfilneg}
+\eqcommand{پرزافقی}{hfuzz}
+\eqcommand{فاصلهمخفی}{hideskip}
+\eqcommand{عرضپنهان}{hidewidth}
+\bidi at csletcs{خطپر}{hline}% this is an exception
+\eqcommand{حاشیها}{hoffset}
+\eqcommand{حفظدرج}{holdinginserts}
+\eqcommand{فاصلهاگرد}{hrboxsep}
+\eqcommand{خطا}{hrule}
+\eqcommand{پرخطا}{hrulefill}
+\eqcommand{طولسطر}{hsize}
+\eqcommand{فاصلها}{hskip}
+\eqcommand{فضایا}{hspace}
+\eqcommand{هردوا}{hss}
+\eqcommand{ارتفاع}{ht}
+\eqcommand{بزرگ}{huge}
+\eqcommand{بزرگتر}{Huge}
+\eqcommand{ابرپیوند}{hyperlink}
+\eqcommand{بارگذاریابر}{hypersetup}
+\eqcommand{هدفابر}{hypertarget}
+\eqcommand{تیرهبندی}{hyphenation}
+\eqcommand{نویسهتیره}{hyphenchar}
+\eqcommand{جریمهتیرهبندی}{hyphenpenalty}
+\eqcommand{@گرکلاسفراخوانیشده}{@ifclassloaded}
+\eqcommand{@گرترشدنی}{@ifdefinable}
+\eqcommand{@گرنویسهبعدی}{@ifnextchar}
+\eqcommand{@گرسبکفراخوانیشده}{@ifpackageloaded}
+\eqcommand{@گرستاره}{@ifstar}
+\eqcommand{@گرتعریفنشده}{@ifundefined}
+\eqcommand{گر}{if}
+\eqcommand{گر@سواقتآ}{if at tempswa}
+\eqcommand{گرانواع}{ifcase}
+\eqcommand{گررده}{ifcat}
+\eqcommand{گرتعریفشده}{ifdefined}
+\eqcommand{گربعد}{ifdim}
+\eqcommand{گرتهپرونده}{ifeof}
+\eqcommand{گرر}{iff}
+\eqcommand{گرنادرست}{iffalse}
+\eqcommand{گرپروندهموجود}{IfFileExists}
+\eqcommand{گرکادرا}{ifhbox}
+\eqcommand{گرحالتا}{ifhmode}
+\eqcommand{گردرونی}{ifinner}
+\eqcommand{گرحالتریاضی}{ifmmode}
+\eqcommand{گرعدد}{ifnum}
+\eqcommand{گرفرد}{ifodd}
+\eqcommand{گرآنگاهدیگر}{ifthenelse}
+\eqcommand{گردرست}{iftrue}
+\eqcommand{گرکادرو}{ifvbox}
+\eqcommand{گرحالتو}{ifvmode}
+\eqcommand{گرتهی}{ifvoid}
+\eqcommand{گرتام}{ifx}
+\eqcommand{فاصلهخالیراندیدهبگیر}{ignorespaces}
+\eqcommand{فوری}{immediate}
+\eqcommand{شامل}{include}
+\eqcommand{درجتصویر}{includegraphics}
+\eqcommand{مشمولین}{includeonly}
+\eqcommand{تورفتگی}{indent}
+\eqcommand{درنمایه}{index}
+\eqcommand{استعلام}{indexentry}
+\eqcommand{عنواننمایه}{indexname}
+\eqcommand{فاصلهرهنما}{indexspace}
+\eqcommand{ورودی}{input}
+\eqcommand{ورودپروندهگرموجود}{InputIfFileExists}
+\eqcommand{شمارهسطرورودی}{inputlineno}
+\eqcommand{درج}{insert}
+\eqcommand{جریمهدرج}{insertpenalties}
+\eqcommand{جریمهبینسطرهایزیرنویس}{interfootnotelinepenalty}
+\eqcommand{جریمهبینسطرهاینمایش}{interdisplaylinepenalty}
+\eqcommand{جریمهبینسطرها}{interlinepenalty}
+\eqcommand{متنداخلی}{intertext}
+\eqcommand{فاصلهشناوردرمتن}{intertextsep}
+\eqcommand{مخفی}{invisible}
+\eqcommand{پیشفرضای}{itdefault}
+\eqcommand{شکلایتالیک}{itshape}
+\eqcommand{فقره}{item}
+\eqcommand{تورفتگیفقره}{itemindent}
+\eqcommand{فاصلهفقره}{itemsep}
+\eqcommand{تکرارکن}{iterate}
+\eqcommand{شکلای}{itshape}
+\eqcommand{نامکار}{jobname}
+\eqcommand{قلپ}{jot}
+\eqcommand{دوری}{kern}
+\eqcommand{الگو}{kill}
+\eqcommand{برچسب}{label}
+\eqcommand{برچسبشمارشیک}{labelenumi}
+\eqcommand{برچسبشمارشدو}{labelenumii}
+\eqcommand{برچسبشمارشسه}{labelenumiii}
+\eqcommand{برچسبشمارشچهار}{labelenumiv}
+\eqcommand{برچسبفقرهیک}{labelitemi}
+\eqcommand{برچسبفقرهدو}{labelitemii}
+\eqcommand{برچسبفقرهسه}{labelitemiii}
+\eqcommand{برچسبفقرهچهار}{labelitemiv}
+\eqcommand{فاصلهازبرچسب}{labelsep}
+\eqcommand{پهنایبرچسب}{labelwidth}
+\eqcommand{زبان}{language}
+\eqcommand{درشت}{large}
+\eqcommand{درشتتر}{Large}
+\eqcommand{درشتدرشت}{LARGE}
+\eqcommand{آخرینکادر}{lastbox}
+\eqcommand{آخریندوری}{lastkern}
+\eqcommand{آخرینجریمه}{lastpenalty}
+\eqcommand{آخرینفاصله}{lastskip}
+\eqcommand{لاتک}{LaTeX}
+\eqcommand{لاتکای}{LaTeXe}
+\eqcommand{کدکوچک}{lccode}
+\eqcommand{نقاطخ}{ldots}
+\eqcommand{نشانگر}{leaders}
+\eqcommand{ترکو}{leavevmode}
+\eqcommand{چپ}{left}
+\eqcommand{حاشیهچپ}{leftmargin}
+\eqcommand{حاشیهچپیک}{leftmargini}
+\eqcommand{حاشیهچپدو}{leftmarginii}
+\eqcommand{حاشیهچپسه}{leftmarginiii}
+\eqcommand{حاشیهچپچهار}{leftmarginiv}
+\eqcommand{حاشیهچپپنج}{leftmarginv}
+\eqcommand{حاشیهچپشش}{leftmarginvi}
+\eqcommand{علامتچپ}{leftmark}
+\eqcommand{کادرتاچپ}{leftpageskip}
+\eqcommand{فاصلهابتدایسطر}{leftskip}
+\eqcommand{بگذار}{let}
+\eqcommand{سطر}{line}
+\eqcommand{سطرشکن}{linebreak}
+\eqcommand{جریمهسطر}{linepenalty}
+\eqcommand{فاصلهسطرها}{lineskip}
+\eqcommand{حدفاصلهسطر}{lineskiplimit}
+\eqcommand{کششفاصلهسطر}{linespread}
+\eqcommand{ضخامتخط}{linethickness}
+\eqcommand{پهنایسطر}{linewidth}
+\eqcommand{عنوانفهرستاشکال}{listfigurename}
+\eqcommand{لیستپروندهها}{listfiles}
+\eqcommand{فهرستاشکال}{listoffigures}
+\eqcommand{فهرستجداول}{listoftables}
+\eqcommand{تورفتگیبندلیست}{listparindent}
+\eqcommand{عنوانفهرستجداول}{listtablename}
+\eqcommand{بارکنطبقه}{LoadClass}
+\eqcommand{بارکنطبقهباگزینه}{LoadClassWithOptions}
+\eqcommand{مکان}{location}
+\eqcommand{بلند}{long}
+\eqcommand{گسیختگی}{looseness}
+\eqcommand{انتقالبپایین}{lower}
+\eqcommand{@دیگر}{@makeother}
+\eqcommand{@زار}{@m}
+\eqcommand{ده@زار}{@M}
+\eqcommand{ده@زاریک}{@Mi}
+\eqcommand{ده@زاردو}{@Mii}
+\eqcommand{ده@زارسه}{@Miii}
+\eqcommand{ده@زارچهار}{@Miv}
+\eqcommand{بیس@زار}{@MM}
+\eqcommand{من@ا}{m at ne}
+\eqcommand{بزرگنمایی}{mag}
+\eqcommand{گام}{magstep}
+\eqcommand{نیمگام}{magstephalf}
+\eqcommand{مطلباصلی}{mainmatter}
+\eqcommand{اتحرف}{makeatletter}
+\eqcommand{اتدیگر}{makeatother}
+\eqcommand{کادربیخط}{makebox}
+\eqcommand{ساختفرهنگ}{makeglossary}
+\eqcommand{تهیهنمایه}{makeindex}
+\eqcommand{ساختبرچسب}{makelabel}
+\eqcommand{ساختبرچسبها}{makelabels}
+\eqcommand{ساختحروفکوچک}{MakeLowercase}
+\eqcommand{عنوانساز}{maketitle}
+\eqcommand{ساختحروفبزرگ}{MakeUppercase}
+\eqcommand{درحاشیه}{marginpar}
+\eqcommand{فاصلهدوحاشیه}{marginparpush}
+\eqcommand{فاصلهتاحاشیه}{marginparsep}
+\eqcommand{پهنایحاشیه}{marginparwidth}
+\eqcommand{علامت}{mark}
+\eqcommand{علامتدردوطرف}{markboth}
+\eqcommand{علامتدرراست}{markright}
+\eqcommand{اعرابریاضی}{mathaccent}
+\eqcommand{نویسهریاضی}{mathchar}
+\eqcommand{تعریفنویسهریاضی}{mathchardef}
+\eqcommand{کدریاضی}{mathcode}
+\eqcommand{ریاضیرومن}{mathrm}
+\eqcommand{حداکثرتکرار}{maxdeadcycles}
+\eqcommand{حداکثرعمقصفحه}{maxdepth}
+\eqcommand{بعدبیشین}{maxdimen}
+\eqcommand{کادربی}{mbox}
+\eqcommand{شمایلنازک}{mdseries}
+\eqcommand{معنا}{meaning}
+\eqcommand{نازک}{mediumseries}
+\eqcommand{فاصلهمتوسطریاضی}{medmuskip}
+\eqcommand{پرشمتوسط}{medskip}
+\eqcommand{مقدارپرشمتوسط}{medskipamount}
+\eqcommand{فضایمتوسط}{medspace}
+\eqcommand{پیام}{message}
+\eqcommand{پیامشکن}{MessageBreak}
+\eqcommand{حداقلفاصلهردیف}{minrowclearance}
+\eqcommand{دوریریاضی}{mkern}
+\eqcommand{ماه}{month}
+\eqcommand{انتقالبچپ}{moveleft}
+\eqcommand{انتقالبراست}{moveright}
+\eqcommand{فاصلهریاضی}{mskip}
+\eqcommand{ری@ضی}{m at th}
+\eqcommand{چندستونی}{multicolumn}
+\eqcommand{ضرب}{multiply}
+\eqcommand{چندادغام}{multispan}
+\eqcommand{میوفاصله}{muskip}
+\eqcommand{تعریفمیوفاصله}{muskipdef}
+\eqcommand{@ترنام}{@namedef}
+\eqcommand{@کاربردنام}{@nameuse}
+\eqcommand{یک@}{@ne}
+\eqcommand{نام}{name}
+\eqcommand{طبیعی}{natural}
+\eqcommand{باریک}{nearrow}
+\eqcommand{باریکتر}{nearrower}
+\eqcommand{شکلبندیموردنیاز}{NeedsTeXFormat}
+\eqcommand{منفی}{neg}
+\eqcommand{فضایمتوسطمنفی}{negmedspace}
+\eqcommand{فضایضخیممنفی}{negthickspace}
+\eqcommand{دوریکوچکمنفی}{negthinspace}
+\eqcommand{بولینو}{newboolean}
+\eqcommand{کادرجدید}{newbox}
+\eqcommand{فرماننو}{newcommand}
+\eqcommand{شمارجدید}{newcount}
+\eqcommand{شمارندهجدید}{newcounter}
+\eqcommand{بعدجدید}{newdimen}
+\eqcommand{محیطنو}{newenvironment}
+\eqcommand{خانوادهجدید}{newfam}
+\eqcommand{قلمنو}{newfont}
+\eqcommand{کمکجدید}{newhelp}
+\eqcommand{درججدید}{newinsert}
+\eqcommand{برچسبجدید}{newlabel}
+\eqcommand{تعریفبعدجدید}{newlength}
+\eqcommand{سطرجدید}{newline}
+\eqcommand{نویسهسطرجدید}{newlinechar}
+\eqcommand{میوفاصلهجدید}{newmuskip}
+\eqcommand{صفحهجدید}{newpage}
+\eqcommand{بخوانجدید}{newread}
+\eqcommand{تعریفکادرجدید}{newsavebox}
+\eqcommand{فاصلهجدید}{newskip}
+\eqcommand{قضیهجدید}{newtheorem}
+\eqcommand{جزءجدید}{newtoks}
+\eqcommand{بنویسجدید}{newwrite}
+\eqcommand{بیردیف}{noalign}
+\eqcommand{نشکن}{nobreak}
+\eqcommand{فاصلهنشکستنی}{nobreakspace}
+\eqcommand{بدونسند}{nocite}
+\eqcommand{نگستر}{noexpand}
+\eqcommand{بدونپرونده}{nofiles}
+\eqcommand{بدونتورفتگی}{noindent}
+\eqcommand{بیفاصلهسطر}{nointerlineskip}
+\eqcommand{بدونحد}{nolimits}
+\eqcommand{سطرنشکن}{nolinebreak}
+\eqcommand{پردازشبدونتوقف}{nonstopmode}
+\eqcommand{فواصلمتعارفلاتین}{nonfrenchspacing}
+\eqcommand{بدونشماره}{nonumber}
+\eqcommand{صفحهنشکن}{nopagebreak}
+\eqcommand{کرسیهایمتعارف}{normalbaselines}
+\eqcommand{فاصلهکرسیمتعارف}{normalbaselineskip}
+\eqcommand{رنگعادی}{normalcolor}
+\eqcommand{قلمعادی}{normalfont}
+\eqcommand{فاصلهسطرمتعارف}{normallineskip}
+\eqcommand{حدفاصلهسطرمتعارف}{normallineskiplimit}
+\eqcommand{درحاشیهعادی}{normalmarginpar}
+\eqcommand{اندازهعادی}{normalsize}
+\eqcommand{بدوناتیکت}{notag}
+\eqcommand{نول}{null}
+\eqcommand{قلمتهی}{nullfont}
+\eqcommand{عدد}{number}
+\eqcommand{سطرعددی}{numberline}
+\eqcommand{شمارهمطابق}{numberwithin}
+\eqcommand{پایینصفحهزوج}{@evenfoot}
+\eqcommand{بالایصفحهزوج}{@evenhead}
+\eqcommand{پایینصفحهفرد}{@oddfoot}
+\eqcommand{بالایصفحهفرد}{@oddhead}
+\eqcommand{شمارهبیروندرست}{@outeqntrue}
+\eqcommand{شمارهبیروننادرست}{@outeqnfalse}
+\eqcommand{سطربهسطر}{obeylines}
+\eqcommand{فضافعال}{obeyspaces}
+\eqcommand{حاشیهفرد}{oddsidemargin}
+\eqcommand{سطوربیفاصله}{offinterlineskip}
+\eqcommand{حذف}{omit}
+\eqcommand{@تنهادرپیشدرآمد}{@onlypreamble}
+\eqcommand{یکستون}{onecolumn}
+\eqcommand{تنهایادداشتها}{onlynotes}
+\eqcommand{تنهااسلایدها}{onlyslides}
+\eqcommand{بازکنورودی}{openin}
+\eqcommand{بازکنخروجی}{openout}
+\eqcommand{گزینهمصرفنشده}{OptionNotUsed}
+\eqcommand{یا}{or}
+\eqcommand{برونی}{outer}
+\eqcommand{صفحهبندی}{output}
+\eqcommand{جریمهصفحهبندی}{outputpenalty}
+\eqcommand{علامتسرریز}{overfullrule}
+\eqcommand{@فرمانهایپیشدرآمد}{@preamblecmds}
+\eqcommand{@پو}{p@}
+\eqcommand{خطایسبک}{PackageError}
+\eqcommand{اطلاعسبک}{PackageInfo}
+\eqcommand{هشدارسبک}{PackageWarning}
+\eqcommand{هشدارسبکبیسطر}{PackageWarningNoLine}
+\eqcommand{صفحهشکن}{pagebreak}
+\eqcommand{رنگصفحه}{pagecolor}
+\eqcommand{عمقصفحه}{pagedepth}
+\eqcommand{کششپرررصفحه}{pagefilllstretch}
+\eqcommand{کششپررصفحه}{pagefillstretch}
+\eqcommand{کششپرصفحه}{pagefilstretch}
+\eqcommand{غایتصفحه}{pagegoal}
+\eqcommand{نامصفحه}{pagename}
+\eqcommand{شمارهگذاریصفحه}{pagenumbering}
+\eqcommand{رجوعصفحه}{pageref}
+\eqcommand{ضخامتخطصفحه}{pagerulewidth}
+\eqcommand{فشردگیصفحه}{pageshrink}
+\eqcommand{کششصفحه}{pagestretch}
+\eqcommand{سبکصفحه}{pagestyle}
+\eqcommand{جمعصفحه}{pagetotal}
+\eqcommand{بلندایکاغذ}{paperheight}
+\eqcommand{پهنایکاغذ}{paperwidth}
+\bidi at csdefcs{بند}{par}% this is an exception since \par is redefined only in some circumstances
+\eqcommand{پاراگراف}{paragraph}
+\eqcommand{موازی}{parallel}
+\eqcommand{کادرپار}{parbox}
+\eqcommand{فاصلهتهبند}{parfillskip}
+\eqcommand{تورفتگیسربند}{parindent}
+\eqcommand{فاصلهبندلیست}{parsep}
+\eqcommand{شکلبند}{parshape}
+\eqcommand{فاصلهبند}{parskip}
+\eqcommand{بخش}{part}
+\eqcommand{عنوانبخش}{partname}
+\eqcommand{فاصلهبالایلیستبند}{partopsep}
+\eqcommand{ارسالگزینهبهکلاس}{PassOptionToClass}
+\eqcommand{ارسالگزینهبهپکیج}{PassOptionToPackage}
+\eqcommand{مسیر}{path}
+\eqcommand{الگوها}{patterns}
+\eqcommand{مکث}{pausing}
+\eqcommand{جریمه}{penalty}
+\eqcommand{غیب}{phantom}
+\eqcommand{الگویقبلی}{poptabs}
+\eqcommand{جریمهپسنمایش}{postdisplaypenalty}
+\eqcommand{جهتپیشنمایش}{predisplaydirection}
+\eqcommand{جریمهپیشنمایش}{predisplaypenalty}
+\eqcommand{اندازهپیشنمایش}{predisplaysize}
+\eqcommand{پیشحدبدنمایی}{pretolerance}
+\eqcommand{عمققبلی}{prevdepth}
+\eqcommand{بندقبلی}{prevgraf}
+\eqcommand{نمایهدراینجا}{printindex}
+\eqcommand{پردازشگزینهها}{ProcessOptions}
+\eqcommand{تامین}{protect}
+\eqcommand{تهیهفرمان}{providecommand}
+\eqcommand{آمادهسازیطبقه}{ProvidesClass}
+\eqcommand{آمادهسازیپرونده}{ProvidesFile}
+\eqcommand{آمادهسازیسبک}{ProvidesPackage}
+\eqcommand{ثبتالگو}{pushtabs}
+\eqcommand{کواد}{quad}
+\eqcommand{کوکواد}{qquad}
+\eqcommand{@بازآییخروجصفحه}{@outputpagerestore}
+\eqcommand{رادیکال}{radical}
+\eqcommand{پایینبیتنظیم}{raggedbottom}
+\eqcommand{تنظیمازراست}{raggedleft}
+\eqcommand{تنظیمازچپ}{raggedright}
+\eqcommand{انتقالببالا}{raise}
+\eqcommand{بالابر}{raisebox}
+\eqcommand{ترفیعاتیکت}{raisetag}
+\eqcommand{زاویهر}{rangle}
+\eqcommand{سقفر}{rceil}
+\eqcommand{بخوان}{read}
+\eqcommand{رجوع}{ref}
+\eqcommand{کادرقرینه}{reflectbox}
+\eqcommand{عنوانمراجع}{refname}
+\eqcommand{گامشمارندهمرجع}{refstepcounter}
+\eqcommand{راحت}{relax}
+\eqcommand{رفعآخرینفاصله}{removelastskip}
+\eqcommand{فرمانازنو}{renewcommand}
+\eqcommand{محیطازنو}{renewenvironment}
+\eqcommand{سبکموردنیاز}{RequirePackage}
+\eqcommand{سبکموردنیازباگزینه}{RequirePackageWithOptions}
+\eqcommand{کادرکشیده}{resizebox}
+\eqcommand{درحاشیهمعکوس}{reversemarginpar}
+\eqcommand{کفر}{rfloor}
+\eqcommand{راست}{right}
+\eqcommand{حاشیهراست}{rightmargin}
+\eqcommand{علامتراست}{rightmark}
+\eqcommand{کادرتاراست}{rightpageskip}
+\eqcommand{فاصلهانتهایسطر}{rightskip}
+\eqcommand{رومنعادی}{rmdefault}
+\eqcommand{فامیلرومن}{rmfamily}
+\eqcommand{رومنبزرگ}{Roman}
+\eqcommand{رومنکوچک}{roman}
+\eqcommand{عددرومی}{romannumeral}
+\eqcommand{کادرچرخان}{rotatebox}
+\eqcommand{رنگردیف}{rowcolor}
+\eqcommand{خط}{rule}
+\eqcommand{@دومیازدو}{@secondoftwo}
+\eqcommand{@فضاها}{@spaces}
+\eqcommand{همینصفحه}{samepage}
+\eqcommand{مقدارکادر}{savebox}
+\eqcommand{مقکادر}{sbox}
+\eqcommand{کادراندازه}{scalebox}
+\eqcommand{پیشفرضتمامبزرگ}{scdefault}
+\eqcommand{شکلتمامبزرگ}{scshape}
+\eqcommand{مقدارکلیدها}{setkeys}
+\eqcommand{قلمتوان}{scriptfont}
+\eqcommand{قلمتوانتوان}{scriptscriptfont}
+\eqcommand{سبکتهنوشتتهنوشت}{scriptscriptstyle}
+\eqcommand{اندازهپانویس}{scriptsize}
+\eqcommand{سبکتهنوشت}{scripstyle}
+\eqcommand{پردازشگذری}{scrollmode}
+\eqcommand{قسمت}{section}
+\eqcommand{تعریفقسمت}{secdef}
+\eqcommand{ببینید}{see}
+\eqcommand{نیزببینید}{seealso}
+\eqcommand{نامببینید}{seename}
+\eqcommand{قلمبردار}{selectfont}
+\eqcommand{تنظیمبولی}{setboolean}
+\eqcommand{درکادر}{setbox}
+\eqcommand{مقدارشمارنده}{setcounter}
+\eqcommand{مقداربعد}{setlength}
+\eqcommand{تنظیممنها}{setminus}
+\eqcommand{تعریفقلمعلائم}{SetSymbolFont}
+\eqcommand{تنظیمبهعمق}{settodepth}
+\eqcommand{تنظیمبهارتفاع}{settoheight}
+\eqcommand{مقداربعدبهاندازه}{settowidth}
+\eqcommand{کدضریبفاصله}{sfcode}
+\eqcommand{پیشفرضسف}{sfdefault}
+\eqcommand{فامیلسنسریف}{sffamily}
+\eqcommand{کادرسایهدار}{shadowbox}
+\eqcommand{تیز}{sharp}
+\eqcommand{بفرست}{shipout}
+\eqcommand{پشتهکوتاه}{shortstack}
+\eqcommand{نمایشبده}{show}
+\eqcommand{نمایشبدهکادر}{showbox}
+\eqcommand{میزاننمایشکادر}{showboxbreadth}
+\eqcommand{عمقنمایشکادر}{showboxdepth}
+\eqcommand{نمایشبدهلیستها}{showlists}
+\eqcommand{نمایشبدهمحتوای}{showthe}
+\eqcommand{حالتسادهقلم}{simplefontmode}
+\eqcommand{شانزد@}{sixt@@n}
+\eqcommand{نویسهاریب}{skewchar}
+\eqcommand{فاصله}{skip}
+\eqcommand{فاصل@}{skip@}
+\eqcommand{تعریففاصله}{skipdef}
+\eqcommand{خوابیده}{sl}
+\eqcommand{پیشفرضخو}{sldefault}
+\eqcommand{شکلخوابیده}{slshape}
+\eqcommand{راحتچین}{sloppy}
+\eqcommand{شمایلخو}{slshape}
+\eqcommand{کوچک}{small}
+\eqcommand{پرشکوتاه}{smallskip}
+\eqcommand{مقدارپرشکوتاه}{smallskipamount}
+\eqcommand{کوب}{smash}
+\eqcommand{لبخند}{smile}
+\eqcommand{کدمکانهمانطور}{snglfntlocatecode}
+\eqcommand{فضا}{space}
+\eqcommand{ضریبفاصله}{spacefactor}
+\eqcommand{فاصلهکلمات}{spaceskip}
+\eqcommand{پیک}{spadesuit}
+\eqcommand{ادغام}{span}
+\eqcommand{ویژه}{special}
+\eqcommand{حداکثرعمقستون}{splitmaxdepth}
+\eqcommand{فاصلهبالایستون}{splittopskip}
+\eqcommand{ستاره}{star}
+\eqcommand{گامشمارنده}{stepcounter}
+\eqcommand{کشی}{stretch}
+\eqcommand{رشته}{string}
+\eqcommand{شمع}{strut}
+\eqcommand{کادرشمع}{strutbox}
+\eqcommand{زیربند}{subitem}
+\eqcommand{زیرپاراگراف}{subparagraph}
+\eqcommand{زیرقسمت}{subsection}
+\eqcommand{زیرپشته}{substack}
+\eqcommand{زیرزیربند}{subsubitem}
+\eqcommand{زیرزیرقسمت}{subsubsection}
+\eqcommand{زیرمجموعه}{subset}
+\eqcommand{زیرمجموعهمس}{subseteq}
+\eqcommand{منتهایصفحه}{supereject}
+\eqcommand{حذفمکانشناور}{suppressfloats}
+\eqcommand{@موقتآ}{@tempa}
+\eqcommand{@موقتب}{@tempb}
+\eqcommand{@موقتپ}{@tempc}
+\eqcommand{@موقتت}{@tempd}
+\eqcommand{@موقتث}{@tempe}
+\eqcommand{@کادرقتآ}{@tempboxa}
+\eqcommand{@شماقتآ}{@tempcnta}
+\eqcommand{@شماقتب}{@tempcntb}
+\eqcommand{@بعدقتآ}{@tempdima}
+\eqcommand{@بعدقتب}{@tempdimb}
+\eqcommand{@بعدقتپ}{@tempdimc}
+\eqcommand{@فاقتآ}{@tempskipa}
+\eqcommand{@فاقتب}{@tempskipb}
+\eqcommand{@سواقتآنادرست}{@tempswafalse}
+\eqcommand{@سواقتآدرست}{@tempswatrue}
+\eqcommand{@جزقتآ}{@temptokena}
+\eqcommand{انگزیرنویس}{@thefnmark}
+\eqcommand{@سومیازسه}{@thirdofthree}
+\eqcommand{فاصلهجاگذاری}{tabbingsep}
+\eqcommand{فاصلهبینستونها}{tabcolsep}
+\eqcommand{فهرستمطالب}{tableofcontents}
+\eqcommand{عنوانجدول}{tablename}
+\eqcommand{فاصلهستونها}{tabskip}
+\eqcommand{تهسطرجدول}{tabularnewline}
+\eqcommand{اتیکت}{tag}
+\eqcommand{تلفن}{telephone}
+\eqcommand{تک}{TeX}
+\eqcommand{متن}{text}
+\eqcommand{گلولهمتنی}{textbullet}
+\eqcommand{قلممتن}{textfont}
+\eqcommand{امدشمتنی}{textemdash}
+\eqcommand{اندشمتنی}{textendash}
+\eqcommand{تعجبوارونهمتنی}{textexclamdown}
+\eqcommand{نقطهوسطمتنی}{textperiodcentered}
+\eqcommand{سوالوارونهمتنی}{textquestiondown}
+\eqcommand{نقلچپمتنیدولا}{textquotedblleft}
+\eqcommand{نقلراستمتنیدولا}{textquotedblright}
+\eqcommand{نقلمتنیچپ}{textquoteleft}
+\eqcommand{نقلمتنیراست}{textquoteright}
+\eqcommand{فضاینمایانمتنی}{textvisiblespace}
+\eqcommand{شکافتپشتمتنی}{textbackslash}
+\eqcommand{میلهمتنی}{textbar}
+\eqcommand{بزرگترمتنی}{textgreater}
+\eqcommand{کمترمتنی}{textless}
+\eqcommand{متنسیاه}{textbf}
+\eqcommand{مدورمتنی}{textcircled}
+\eqcommand{رنگمتن}{textcolor}
+\eqcommand{نشانکلمهمرکبمتن}{textcompwordmark}
+\eqcommand{فاصلهمتنوشناور}{textfloatsep}
+\eqcommand{نسبتمتن}{textfraction}
+\eqcommand{بلندایمتن}{textheight}
+\eqcommand{متنتورفته}{textindent}
+\eqcommand{متنایتالیک}{textit}
+\eqcommand{متننازک}{textmd}
+\eqcommand{متننرمال}{textnormal}
+\eqcommand{ثبتیمتنی}{textregistered}
+\eqcommand{متنرومن}{textrm}
+\eqcommand{متنتمامبزرگ}{textsc}
+\eqcommand{متنسنسریف}{textsf}
+\eqcommand{متنخوابیده}{textsl}
+\eqcommand{سبکمتنی}{textstyle}
+\eqcommand{بالانویسمتنی}{textsuperscript}
+\eqcommand{علامتتجاریمتنی}{texttrademark}
+\eqcommand{متنتایپ}{texttt}
+\eqcommand{متنایستاده}{textup}
+\eqcommand{پهنایمتن}{textwidth}
+\eqcommand{زیرنویسعنوان}{thanks}
+\eqcommand{محتوای}{the}
+\eqcommand{اینزیرنویس}{thempfn}
+\eqcommand{خطهاضخیم}{thicklines}
+\eqcommand{فاصلهزیادریاضی}{thickmuskip}
+\eqcommand{فاصلهکمریاضی}{thinmuskip}
+\eqcommand{فضاضخیم}{thickspace}
+\eqcommand{خطهانازک}{thinlines}
+\eqcommand{دوریکوچک}{thinspace}
+\eqcommand{اینصفحهتجملی}{thisfancypage}
+\eqcommand{سبکاینصفحه}{thispagestyle}
+\eqcommand{سه@}{thr@@}
+\eqcommand{مد}{tilde}
+\eqcommand{ظریف}{tiny}
+\eqcommand{زمان}{time}
+\eqcommand{ضربدر}{times}
+\eqcommand{عنوان}{title}
+\eqcommand{به}{to}
+\eqcommand{امروز}{today}
+\eqcommand{جزء}{toks}
+\eqcommand{تعریفجزء}{toksdef}
+\eqcommand{حدبدنمایی}{tolerance}
+\eqcommand{بالا}{top}
+\eqcommand{خطبالایشناور}{topfigrule}
+\eqcommand{نسبتبالا}{topfraction}
+\eqcommand{حاشیهبالا}{topmargin}
+\eqcommand{علامتبالا}{topmark}
+\eqcommand{کادرتابالا}{toppageskip}
+\eqcommand{فاصلهبالایلیست}{topsep}
+\eqcommand{فاصلهبالا}{topskip}
+\eqcommand{بلندایکل}{totalheight}
+\eqcommand{ردگیریکل}{tracingall}
+\eqcommand{ردگیریفرامین}{tracingcommands}
+\eqcommand{ردگیریحروف}{tracinglostchars}
+\eqcommand{ردگیریماکروها}{tracingmacros}
+\eqcommand{ردگیرینمایشی}{tracingonline}
+\eqcommand{ردگیریصفحهبندی}{tracingoutput}
+\eqcommand{ردگیریصفحات}{tracingpages}
+\eqcommand{ردگیریبندها}{tracingparagraphs}
+\eqcommand{ردگیریبازگردانی}{tracingrestores}
+\eqcommand{ردگیریآمارها}{tracingstats}
+\eqcommand{مثلث}{triangle}
+\eqcommand{پیشفرضتایپ}{ttdefault}
+\eqcommand{فامیلتایپ}{ttfamily}
+\eqcommand{دو@}{tw@}
+\eqcommand{دوستون}{twocolumn}
+\eqcommand{درنویس}{typein}
+\eqcommand{برنویس}{typeout}
+\eqcommand{کدبزرگ}{uccode}
+\eqcommand{تیرهبندیبزرگ}{uchyph}
+\eqcommand{زیرخط}{underline}
+\eqcommand{بیکادرا}{unhbox}
+\eqcommand{بیکپیا}{unhcopy}
+\eqcommand{واحدطول}{unitlength}
+\eqcommand{برگشتدوری}{unkern}
+\eqcommand{برگشتجریمه}{unpenalty}
+\eqcommand{برگشتفاصله}{unskip}
+\eqcommand{بیکادرو}{unvbox}
+\eqcommand{بیکپیو}{unvcopy}
+\eqcommand{پیشفرضایستاده}{updefault}
+\eqcommand{شکلایستاده}{upshape}
+\eqcommand{ازکادر}{usebox}
+\eqcommand{باشمارشگر}{usecounter}
+\eqcommand{گزینشقلم}{usefont}
+\eqcommand{سبکلازم}{usepackage}
+\eqcommand{@فضاهایفعال}{@vobeyspaces}
+\eqcommand{@تهی}{@void}
+\eqcommand{تنظیمو}{vadjust}
+\eqcommand{ردیفو}{valign}
+\eqcommand{محتوایشمارنده}{value}
+\eqcommand{بدنماییو}{vbadness}
+\eqcommand{کادرو}{vbox}
+\eqcommand{کادروسط}{vcenter}
+\eqcommand{همانطور}{verb}
+\eqcommand{پرو}{vfil}
+\eqcommand{پررو}{vfill}
+\eqcommand{رفعپرو}{vfilneg}
+\eqcommand{پرزعمودی}{vfuzz}
+\eqcommand{نمایان}{visible}
+\eqcommand{خطعمود}{vline}
+\eqcommand{حاشیهو}{voffset}
+\eqcommand{ک@درتهی}{voidb at x}
+\eqcommand{ارجاعصفحهع}{vpageref}
+\eqcommand{فاصلهوگرد}{vrboxsep}
+\eqcommand{ارجاعع}{vref}
+\eqcommand{خطو}{vrule}
+\eqcommand{طولصفحه}{vsize}
+\eqcommand{فاصلهو}{vskip}
+\eqcommand{فضایو}{vspace}
+\eqcommand{شکستو}{vsplit}
+\eqcommand{هردوو}{vss}
+\eqcommand{کادرگود}{vtop}
+\eqcommand{عرض}{wd}
+\eqcommand{مادامبکن}{whiledo}
+\eqcommand{کلاهپهن}{widehat}
+\eqcommand{مدپهن}{widetilde}
+\eqcommand{جریمهتهبند}{widowpenalty}
+\eqcommand{پهنا}{width}
+\eqcommand{درکارنامه}{wlog}
+\eqcommand{بنویس}{write}
+\eqcommand{@فضایلاتین}{@xobeysp}
+\eqcommand{سی@دو}{@xxxii}
+\eqcommand{ترگع}{xdef}
+\eqcommand{نشانگرگسترشی}{xleaders}
+\eqcommand{فاصلهاضافیکلمات}{xspaceskip}
+\eqcommand{سال}{year}
+\eqcommand{@فر}{z@}
+\eqcommand{@فرفاصله}{z at skip}
+% \end{macrocode}
+% \iffalse
+%</latex-localise-commands-xepersian.def>
+%<*color-localise-xepersian.def>
+%\fi
+% \section{File \texttt{color-localise-xepersian.def}}
+% \begin{macrocode}
+\آمادهسازیپرونده{color-localise-xepersian.def}[2011/03/01 v0.1 localising color package]
+\تعریفرنگ{سیاه}{rgb}{0,0,0}
+\تعریفرنگ{سفید}{rgb}{1,1,1}
+\تعریفرنگ{قرمز}{rgb}{1,0,0}
+\تعریفرنگ{سبز}{rgb}{0,1,0}
+\تعریفرنگ{آبی}{rgb}{0,0,1}
+\تعریفرنگ{آسمانی}{cmyk}{1,0,0,0}
+\تعریفرنگ{بنفش}{cmyk}{0,1,0,0}
+\تعریفرنگ{زرد}{cmyk}{0,0,1,0}
+% \end{macrocode}
+% \iffalse
+%</color-localise-xepersian.def>
+%<*xepersian-localise-commands-xepersian.def>
+%\fi
+% \section{File \texttt{xepersian-localise-commands-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{xepersian-localise-commands-xepersian.def}[2012/07/25 v0.2 Persian localisation of XePersian commands]
+\eqcommand{خطزیرنویسخودکار}{autofootnoterule}
+\eqcommand{اعدادفرمولهاخودکار}{AutoMathsDigits}
+\eqcommand{اعدادفرمولهالاتین}{DefaultMathsDigits}
+\eqcommand{معادل@کلید}{keyval at eq@alias at key}
+\eqcommand{تعریفقلملاتین}{deflatinfont}
+\eqcommand{تعریفقلمپارسی}{defpersianfont}
+\eqcommand{کادراچپ}{hboxL}
+\eqcommand{کادراست}{hboxR}
+\eqcommand{مرجعلاتین}{Latincite}
+\eqcommand{قلملاتین}{latinfont}
+\eqcommand{امروزلاتین}{latintoday}
+\eqcommand{خطزیرنویسچپ}{leftfootnoterule}
+\eqcommand{متنلاتین}{lr}
+\eqcommand{چپبراست}{LRE}
+\eqcommand{دوستونیچپ}{LTRdblcol}
+\eqcommand{پانویس}{LTRfootnote}
+\eqcommand{متنپانویس}{LTRfootnotetext}
+\eqcommand{پانویسعنوان}{LTRthanks}
+\eqcommand{روزپارسی}{persianday}
+\eqcommand{قلمپارسی}{persianfont}
+\eqcommand{اعدادفرمولهاپارسی}{PersianMathsDigits}
+\eqcommand{ماهپارسی}{persianmonth}
+\eqcommand{سالپارسی}{persianyear}
+\eqcommand{علامتچپنقلقولپارسی}{plq}
+\eqcommand{علامتراستنقلقولپارسی}{prq}
+\eqcommand{خطزیرنویسراست}{rightfootnoterule}
+\eqcommand{متنپارسی}{rl}
+\eqcommand{راستبچپ}{RLE}
+\eqcommand{دوستونیراست}{RTLdblcol}
+\eqcommand{پانوشت}{RTLfootnote}
+\eqcommand{متنپانوشت}{RTLfootnotetext}
+\eqcommand{پانوشتعنوان}{RTLthanks}
+\eqcommand{@علامتبین}{@SepMark}
+\eqcommand{علامتبین}{SepMark}
+\eqcommand{بگذارمرجوعاتعادی}{setdefaultbibitems}
+\eqcommand{بگذاردرحاشیهعادی}{setdefaultmarginpar}
+\eqcommand{گزینشقلماعدادفرمولها}{setmathdigitfont}
+\eqcommand{بگذارزیرنویسچپ}{setfootnoteLR}
+\eqcommand{بگذارزیرنویسراست}{setfootnoteRL}
+\eqcommand{گزینشقلملاتینمتن}{setlatintextfont}
+\eqcommand{بگذارمتنچپ}{setLTR}
+\eqcommand{بگذارمرجوعاتچپ}{setLTRbibitems}
+\eqcommand{بگذاردرحاشیهچپ}{setLTRmarginpar}
+\eqcommand{بگذارمتنراست}{setRTL}
+\eqcommand{بگذارمرجوعاتراست}{setRTLbibitems}
+\eqcommand{بگذاردرحاشیهراست}{setRTLmarginpar}
+\eqcommand{گزینشقلممتن}{settextfont}
+\eqcommand{خطزیرنویسپهنایمتن}{textwidthfootnoterule}
+\eqcommand{فهرستمطالبدوستونی}{twocolumnstableofcontents}
+\eqcommand{نگذارزیرنویسراست}{unsetfootnoteRL}
+\eqcommand{نگذارمتنچپ}{unsetLTR}
+\eqcommand{نگذارمتنراست}{unsetRTL}
+\eqcommand{کادروازچپ}{vboxL}
+\eqcommand{کادروازراست}{vboxR}
+\eqcommand{زیلاتک}{XeLaTeX}
+\eqcommand{زیپرشین}{XePersian}
+\eqcommand{گونهزیپرشین}{xepersianversion}
+\eqcommand{تاریخگونهزیپرشین}{xepersiandate}
+\eqcommand{زیتک}{XeTeX}
+% \end{macrocode}
+% \iffalse
+%</xepersian-localise-commands-xepersian.def>
+%<*enumerate-xepersian.def>
+%\fi
+% \section{File \texttt{enumerate-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{enumerate-xepersian.def}[2010/07/25 v0.1 adaptations for enumerate package]
+\def\@enloop@{%
+ \ifx ا\@entemp \def\@tempa{\@enLabel\harfi }\else
+ \ifx ی\@entemp \def\@tempa{\@enLabel\adadi }\else
+ \ifx ت\@entemp \def\@tempa{\@enLabel\tartibi }\else
+ \ifx A\@entemp \def\@tempa{\@enLabel\Alph }\else
+ \ifx a\@entemp \def\@tempa{\@enLabel\alph }\else
+ \ifx i\@entemp \def\@tempa{\@enLabel\roman }\else
+ \ifx I\@entemp \def\@tempa{\@enLabel\Roman }\else
+ \ifx 1\@entemp \def\@tempa{\@enLabel\arabic}\else
+ \ifx \@sptoken\@entemp \let\@tempa\@enSpace \else
+ \ifx \bgroup\@entemp \let\@tempa\@enGroup \else
+ \ifx \@enum@\@entemp \let\@tempa\@gobble \else
+ \let\@tempa\@enOther
+ \@enhook
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \@tempa}
+% \end{macrocode}
+% \iffalse
+%</enumerate-xepersian.def>
+%<*enumitem-xepersian.def>
+%\fi
+% \section{File \texttt{enumitem-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{enumitem-xepersian.def}[2017/09/06 v0.1 adaptations for enumitem package]
+\AddEnumerateCounter*\tartibi\@tartibi{999999999}
+\AddEnumerateCounter*\adadi\@adadi{999999999}
+\AddEnumerateCounter\harfi\@harfi{گ}
+\AddEnumerateCounter\Abjad\@Abjad{ک}
+\AddEnumerateCounter\abjad\@abjad{غثکب}
+\SetEnumerateShortLabel{اول}{\tartibi*}
+\SetEnumerateShortLabel{یک}{\adadi*}
+\SetEnumerateShortLabel{آ}{\harfi*}
+\SetEnumerateShortLabel{ب}{\Abjad*}
+\SetEnumerateShortLabel{ج}{\abjad*}
+% \end{macrocode}
+% \iffalse
+%</enumitem-xepersian.def>
+%<*latex-localise-environments-xepersian.def>
+%\fi
+% \section{File \texttt{latex-localise-environments-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{latex-localise-environments-xepersian.def}[2010/07/25 v0.2 Persian localisation of LaTeX2e environments]
+\eqenvironment{چکیده}{abstract}
+\eqenvironment{پیوست}{appendix}
+\eqenvironment{آرایه}{array}
+\eqenvironment{وسطچین}{center}
+\eqenvironment{توضیح}{description}
+\eqenvironment{ریاضینمایشی}{displaymath}
+\eqenvironment{نوشتار}{document}
+\eqenvironment{شمارش}{enumerate}
+\eqenvironment{شکل}{figure}
+\eqenvironment{شکل*}{figure*}
+\eqenvironment{محتوایپرونده}{filecontents}
+\eqenvironment{محتوایپرونده*}{filecontents*}
+\eqenvironment{چپچین}{flushleft}
+\eqenvironment{راستچین}{flushright}
+\eqenvironment{فقرات}{itemize}
+\eqenvironment{نامه}{letter}
+\eqenvironment{لیست}{list}
+\eqenvironment{جدولدراز}{longtable}
+\eqenvironment{کادررچ}{lrbox}
+\eqenvironment{ریاضی}{math}
+\eqenvironment{ماتریس}{matrix}
+\eqenvironment{صفحهکوچک}{minipage}
+\eqenvironment{چندخطی}{multline}
+\eqenvironment{یادداشت}{note}
+\eqenvironment{انباشتن}{overlay}
+\eqenvironment{تصویر}{picture}
+\eqenvironment{اقتباس}{quotation}
+\eqenvironment{نقل}{quote}
+\eqenvironment{اسلاید}{slide}
+\eqenvironment{پارنامرتب}{sloppypar}
+\eqenvironment{شکافتن}{split}
+\eqenvironment{زیرآرایه}{subarray}
+\eqenvironment{جاگذاری}{tabbing}
+\eqenvironment{لوح}{table}
+\eqenvironment{لوح*}{table*}
+\eqenvironment{جدول}{tabular}
+\eqenvironment{جدول*}{tabular*}
+\eqenvironment{مراجع}{thebibliography}
+\eqenvironment{محتواینمایه}{theindex}
+\eqenvironment{صفحهعنوان}{titlepage}
+\eqenvironment{لیستبدوی}{trivlist}
+\eqenvironment{شعر}{verse}
+% \end{macrocode}
+% \iffalse
+%</latex-localise-environments-xepersian.def>
+%<*xepersian-localise-environments-xepersian.def>
+%\fi
+% \section{File \texttt{xepersian-localise-environments-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{xepersian-localise-environments-xepersian.def}[2010/07/25 v0.1 Persian localisation of XePersian and bidi environments]
+\eqenvironment{لاتین}{latin}
+\eqenvironment{متنچپ}{LTR}
+\eqenvironment{دستهبندیچپ}{LTRitems}
+\eqenvironment{شعرنو}{modernpoem}
+\eqenvironment{شعرنو*}{modernpoem*}
+\eqenvironment{پارسی}{persian}
+\eqenvironment{متنراست}{RTL}
+\eqenvironment{دستهبندیراست}{RTLitems}
+\eqenvironment{شعرسنتی}{traditionalpoem}
+\eqenvironment{شعرسنتی*}{traditionalpoem*}
+% \end{macrocode}
+% \iffalse
+%</xepersian-localise-environments-xepersian.def>
+%<*extarticle-xepersian.def>
+%\fi
+% \section{File \texttt{extarticle-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{extarticle-xepersian.def}[2010/07/25 v0.1 adaptations for extarticle class]
+\renewcommand\thepart {\@tartibi\c at part}
+\renewcommand\appendix{\par
+ \setcounter{section}{0}%
+ \setcounter{subsection}{0}%
+ \gdef\thesection{\@harfi\c at section}}
+% \end{macrocode}
+% \iffalse
+%</extarticle-xepersian.def>
+%<*extbook-xepersian.def>
+%\fi
+% \section{File \texttt{extbook-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{extbook-xepersian.def}[2010/07/25 v0.1 adaptations for extbook class]
+\renewcommand\frontmatter{%
+ \cleardoublepage
+ \@mainmatterfalse
+ \pagenumbering{harfi}}
+\renewcommand \thepart {\@tartibi\c at part}
+\renewcommand\appendix{\par
+ \setcounter{chapter}{0}%
+ \setcounter{section}{0}%
+ \gdef\@chapapp{\appendixname}%
+ \gdef\thechapter{\@harfi\c at chapter}
+}%end appendix
+% \end{macrocode}
+% \iffalse
+%</extbook-xepersian.def>
+%<*extrafootnotefeatures-xepersian.def>
+%\fi
+% \section{File \texttt{extrafootnotefeatures-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{extrafootnotefeatures-xepersian.def}[2012/01/01 v0.2 footnote macros for extrafootnotefeatures option of xepersian package]
+\renewcommand{\foottextfont}{\footnotesize\if at RTL@footnote\else\resetlatinfont\fi}
+\renewcommand{\LTRfoottextfont}{\footnotesize\resetlatinfont}
+\renewcommand{\RTLfoottextfont}{\footnotesize\setpersianfont}
+% \end{macrocode}
+% \iffalse
+%</extrafootnotefeatures-xepersian.def>
+%<*extreport-xepersian.def>
+%\fi
+% \section{File \texttt{extreport-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{extreport-xepersian.def}[2010/07/25 v0.1 adaptations for extreport class]
+\renewcommand\thepart {\@tartibi\c at part}
+\renewcommand\appendix{\par
+ \setcounter{chapter}{0}%
+ \setcounter{section}{0}%
+ \gdef\@chapapp{\appendixname}%
+ \gdef\thechapter{\@harfi\c at chapter}}
+% \end{macrocode}
+% \iffalse
+%</extreport-xepersian.def>
+%<*fancyref-xepersian.def>
+%\fi
+% \section{File \texttt{fancyref-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{fancyref-xepersian.def}[2018/09/29 v0.1 bilingual captions for fancyref package]
+\renewcommand*{\Frefchapname}{\chaptername}
+\renewcommand*{\Frefenumname}{%
+ \if at RTL
+فقره%
+ \else
+ Item%
+ \fi
+}
+\renewcommand*{\Frefeqname}{%
+ \if at RTL
+معادله%
+ \else
+ Equation%
+ \fi
+}
+\renewcommand*{\Freffigname}{\figurename}
+\renewcommand*{\Freffnname}{%
+ \if at RTL
+زیرنویس%
+ \else
+ Footnote%
+ \fi
+}
+\renewcommand*{\Frefonname}{%
+ \if at RTL
+در%
+ \else
+ On%
+ \fi
+}
+\renewcommand*{\Frefpgname}{\pagename}
+\renewcommand*{\Frefsecname}{%
+ \if at RTL
+قسمت%
+ \else
+ Section%
+ \fi
+}
+\renewcommand*{\Frefseename}{%
+ \if at RTL
+ببینید%
+ \else
+ See%
+ \fi
+}
+\renewcommand*{\Freftabname}{\tablename}
+\renewcommand*{\Freffigshortname}{%
+ \if at RTL
+ \Freffigname
+ \else
+ Fig.%
+ \fi
+}
+\renewcommand*{\Frefpgshortname}{%
+ \if at RTL
+ \Frefpgname
+ \else
+ P.%
+ \fi
+}
+\renewcommand*{\Freftabshortname}{%
+ \if at RTL
+ \tablename
+ \else
+ Tab.%
+ \fi
+}
+\renewcommand*{\frefchapname}{%
+ \if at RTL
+ \Frefchapname
+ \else
+ \MakeLowercase{\Frefchapname}%
+\fi
+}
+\renewcommand*{\frefenumname}{%
+ \if at RTL
+ \Frefenumname
+ \else
+ \MakeLowercase{\Frefenumname}%
+ \fi
+}
+\renewcommand*{\frefeqname}{%
+ \if at RTL
+ \Frefeqname
+ \else
+ \MakeLowercase{\Frefeqname}%
+ \fi
+}
+\renewcommand*{\freffigname}{%
+ \if at RTL
+ \Freffigname
+ \else
+ \MakeLowercase{\Freffigname}%
+ \fi
+}
+\renewcommand*{\freffnname}{%
+ \if at RTL
+ \Freffnname
+ \else
+ \MakeLowercase{\Freffnname}%
+ \fi
+}
+\renewcommand*{\frefonname}{%
+ \if at RTL
+ \Frefonname
+ \else
+ \MakeLowercase{\Frefonname}%
+ \fi
+}
+\renewcommand*{\frefpgname}{%
+ \if at RTL
+ \Frefpgname
+ \else
+ \MakeLowercase{\Frefpgname}%
+ \fi
+}
+\renewcommand*{\frefsecname}{%
+ \if at RTL
+ \Frefsecname
+ \else
+ \MakeLowercase{\Frefsecname}%
+ \fi
+}
+\renewcommand*{\frefseename}{%
+ \if at RTL
+ \Frefseename
+ \else
+ \MakeLowercase{\Frefseename}%
+ \fi
+}
+\renewcommand*{\freftabname}{%
+ \if at RTL
+ \Freftabname
+ \else
+ \MakeLowercase{\Freftabname}%
+ \fi
+}
+\renewcommand*{\freffigshortname}{%
+ \if at RTL
+ \Freffigshortname
+ \else
+ \MakeLowercase{\Freffigshortname}%
+ \fi
+}
+\renewcommand*{\frefpgshortname}{%
+ \if at RTL
+ \Frefpgshortname
+ \else
+ \MakeLowercase{\Frefpgshortname}%
+ \fi
+}
+\renewcommand*{\freftabshortname}{%
+ \if at RTL
+ \Freftabshortname
+ \else
+ \MakeLowercase{\Freftabshortname}%
+ \fi
+}
+% \end{macrocode}
+% \iffalse
+%</fancyref-xepersian.def>
+%<*footnote-xepersian.def>
+%\fi
+% \section{File \texttt{footnote-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{footnote-xepersian.def}[2017/08/09 v0.6 footnote macros for xepersian package]
+
+\renewcommand*{\bidi@@footnotetext at font}{\footnotesize\if at RTL@footnote\else\resetlatinfont\fi}
+
+\renewcommand*{\bidi@@LTRfootnotetext at font}{\footnotesize\resetlatinfont}
+
+\renewcommand*{\bidi@@RTLfootnotetext at font}{\footnotesize\setpersianfont}
+
+% \end{macrocode}
+% \iffalse
+%</footnote-xepersian.def>
+%<*framed-xepersian.def>
+%\fi
+% \section{File \texttt{framed-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{framed-xepersian.def}[2012/06/05 v0.1 xepersian adaptations for framed package for XeTeX engine]
+\renewenvironment{titled-frame}[1]{%
+ \def\FrameCommand{\fboxsep8pt\fboxrule2pt
+ \TitleBarFrame{\textbf{#1}}}%
+ \def\FirstFrameCommand{\fboxsep8pt\fboxrule2pt
+ \TitleBarFrame[$\if at RTL\blacktriangleleft\else\blacktriangleright\fi$]{\textbf{#1}}}%
+ \def\MidFrameCommand{\fboxsep8pt\fboxrule2pt
+ \TitleBarFrame[$\if at RTL\blacktriangleleft\else\blacktriangleright\fi$]{\textbf{#1\ (\if at RTL ادامه\else cont\fi)}}}%
+ \def\LastFrameCommand{\fboxsep8pt\fboxrule2pt
+ \TitleBarFrame{\textbf{#1\ (\if at RTL ادامه\else cont\fi)}}}%
+ \MakeFramed{\advance\hsize-20pt \FrameRestore}}%
+% note: 8 + 2 + 8 + 2 = 20. Don't use \width because the frame title
+% could interfere with the width measurement.
+ {\endMakeFramed}
+% \end{macrocode}
+% \iffalse
+%</framed-xepersian.def>
+%<*glossaries-xepersian.def>
+%\fi
+% \section{File \texttt{glossaries-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{glossaries-xepersian.def}[2014/09/04 v0.4 xepersian adaptations for glossaries package for XeTeX engine]
+\glsaddprotectedpagefmt{@harfi}
+\glsaddprotectedpagefmt{@tartibi}
+\glsaddprotectedpagefmt{@adadi}
+% \end{macrocode}
+% \iffalse
+%</glossaries-xepersian.def>
+%<*hyperref-xepersian.def>
+%\fi
+% \section{File \texttt{hyperref-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{hyperref-xepersian.def}[2015/02/02 v0.6 bilingual captions for hyperref package]
+ \def\equationautorefname{\if at RTL معادله\else Equation\fi}%
+ \def\footnoteautorefname{\if at RTL زیرنویس\else footnote\fi}%
+ \def\itemautorefname{\if at RTL فقره\else item\fi}%
+ \def\figureautorefname{\if at RTL شکل\else Figure\fi}%
+ \def\tableautorefname{\if at RTL جدول\else Table\fi}%
+ \def\partautorefname{\if at RTL بخش\else Part\fi}%
+ \def\appendixautorefname{\if at RTL ضمیمه\else Appendix\fi}%
+ \def\chapterautorefname{\if at RTL فصل\else chapter\fi}%
+ \def\sectionautorefname{\if at RTL قسمت\else section\fi}%
+ \def\subsectionautorefname{\if at RTL زیرقسمت\else subsection\fi}%
+ \def\subsubsectionautorefname{\if at RTL زیرزیرقسمت\else subsubsection\fi}%
+ \def\paragraphautorefname{\if at RTL پاراگراف\else paragraph\fi}%
+ \def\subparagraphautorefname{\if at RTL زیرپاراگراف\else subparagraph\fi}%
+ \def\FancyVerbLineautorefname{\if at RTL سطر\else line\fi}%
+ \def\theoremautorefname{\if at RTL قضیه\else Theorem\fi}%
+ \def\pageautorefname{\if at RTL صفحه\else page\fi}%
+\AtBeginDocument{%
+\let\HyOrg at appendix\appendix
+\def\appendix{%
+ \ltx at IfUndefined{chapter}%
+ {\gdef\theHsection{\Alph{section}}}%
+ {\gdef\theHchapter{\Alph{chapter}}}%
+ \xdef\Hy at chapapp{\Hy at appendixstring}%
+ \HyOrg at appendix
+}
+}
+\pdfstringdefDisableCommands{%
+\let\lr\@firstofone
+\let\rl\@firstofone
+\def\XePersian{XePersian}
+}
+\ltx at IfUndefined{@resets at pp}{%
+}{%
+ \let\HyOrg at resets@pp\@resets at pp
+ \def\@resets at pp{%
+ \ltx at IfUndefined{chapter}{%
+ \gdef\theHsection{\Hy at AlphNoErr{section}}%
+ }{%
+ \gdef\theHchapter{\Hy at AlphNoErr{chapter}}%
+ }%
+ \xdef\Hy at chapapp{\Hy at appendixstring}%
+ \HyOrg at resets@pp
+ }%
+}
+% \end{macrocode}
+% \iffalse
+%</hyperref-xepersian.def>
+%<*imsproc-xepersian.def>
+%\fi
+% \section{File \texttt{imsproc-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{imsproc-xepersian.def}[2017/06/09 v0.5 xepersian adaptations for imsproc class for XeTeX engine]
+
+\renewcommand \thepart {\@tartibi\c at part}
+\def\appendix{\par\c at section\z@ \c at subsection\z@
+ \let\sectionname\appendixname
+ \def\thesection{\@harfi\c at section}}
+
+% \end{macrocode}
+% \iffalse
+%</imsproc-xepersian.def>
+%<*kashida-xepersian.def>
+%\fi
+% \section{File \texttt{kashida-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{kashida-xepersian.def}[2020/05/16 v0.8 implementation of Kashida for xepersian package]
+%
+% The new changes is minimal and only cosmetic; To resolve the
+% issue properly, I will be studying TeX line breaking algorithms and
+% experiment to see how much of it I can mimic. The idea of using
+% a rule or even a box is awful and it breaks a lot of things. The ideal
+% solution is to insert Kashida without any rules or boxes or if
+% the font offers the alternative forms, it can be used for Kashida.
+% Unfortunately, computing the stretch using the \pdfsavepos and
+% \pdflastxpos primitives from the PDFTeX engine is bad and
+% impractical for several reasons.The process is extremely
+% slow and requires at least two runs of TeX. On a particular line,
+% we need to write to the aux file at least 10 times, on a page we
+% have on average around 10 lines and hence, for a 100 pages
+% document, we have to do this 10,000 times. These statistics are
+% very modest. On the other hand, if we reach max count (which is
+% very likely), then we have to do some devious things.
+%
+\chardef\xepersian at zwj="200D % zero-width joiner
+\chardef\xepersian at lrm="200E % left to right mark
+\chardef\xepersian at kashidachar="0640 % kashida
+
+\chardef\xepersian at D=10 % dual-joiner class
+\chardef\xepersian at L=11 % lam
+\chardef\xepersian at R=12 % right-joiner
+\chardef\xepersian at A=13 % alef
+\chardef\xepersian at V=4096 % vowel or other combining mark (to be ignored)
+\newif\if at Kashida@on
+\def\xepersian at kashida{%
+ \if at Kashida@on
+ \xepersian at zwj
+ \xepersian at lrm
+ \nobreak
+ \leaders\hrule height \XeTeXglyphbounds\tw@
+ \the\XeTeXcharglyph\xepersian at kashidachar
+ depth \XeTeXglyphbounds\f at ur
+ \the\XeTeXcharglyph\xepersian at kashidachar
+ \hskip0pt plus 0.5em
+% \dimexpr \fontcharwd\font\xepersian at kashidachar -
+% \XeTeXglyphbounds\@ne
+% \the\XeTeXcharglyph\xepersian at kashidachar -
+% \XeTeXglyphbounds\thr@@
+% \the\XeTeXcharglyph\xepersian at kashidachar \relax
+ \xepersian at zwj
+ \fi
+}
+
+\def\setclass#1#2{\def\theclass{#1}\def\charlist{#2}%
+ \expandafter\dosetclass\charlist,\end}
+\def\dosetclass#1,#2\end{%
+ \def\test{#1}\def\charlist{#2}%
+ \ifx\test\empty\let\next\finishsetclass
+ \else \XeTeXcharclass "\test = \theclass
+ \let\next\dosetclass \fi
+ \expandafter\next\charlist,,\end}
+\def\finishsetclass#1,,\end{}
+
+\setclass \xepersian at A {0622,0623,0625,0627}
+\setclass \xepersian at R {0624,0629,062F,0630,0631,0632,0648,0698}
+\setclass \xepersian at D {0626,0628,062A,062B,062C,062D,062E}
+\setclass \xepersian at D {0633,0634,0635,0636,0637,0638,0639,063A}
+\setclass \xepersian at D {0640,0641,0642,0643,0645,0646,0647,0649,064A}
+\setclass \xepersian at D {067E,0686,06A9,06AF,06CC}
+\setclass \xepersian at L {0644}
+\setclass \xepersian at V {064B,064C,064D,064E,064F,0650,0651,0652}
+
+\XeTeXinterchartoks \xepersian at D \xepersian at D = {\xepersian at kashida}
+\XeTeXinterchartoks \xepersian at L \xepersian at D = {\xepersian at kashida}
+\XeTeXinterchartoks \xepersian at D \xepersian at L = {\xepersian at kashida}
+\XeTeXinterchartoks \xepersian at L \xepersian at L = {\xepersian at kashida}
+\XeTeXinterchartoks \xepersian at D \xepersian at R = {\xepersian at kashida}
+\XeTeXinterchartoks \xepersian at D \xepersian at A = {\xepersian at kashida}
+\XeTeXinterchartoks \xepersian at L \xepersian at R = {\xepersian at kashida}
+\XeTeXinterchartoks \xepersian at L \xepersian at A = {}
+
+\newcommand{\KashidaOn}{\@Kashida at ontrue}
+\newcommand{\KashidaOff}{\@Kashida at onfalse}
+
+\KashidaOn
+% \end{macrocode}
+% \iffalse
+%</kashida-xepersian.def>
+%<*listings-xepersian.def>
+%\fi
+% \section{File \texttt{listings-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{listings-xepersian.def}[2014/07/17 v0.3 bilingual captions for listings package]
+\def\lstlistingname{\if at RTL برنامهٔ\else Listing\fi}
+\def\lstlistlistingname{\if at RTL فهرست برنامهها\else Listings\fi}
+% \end{macrocode}
+% \iffalse
+%</listings-xepersian.def>
+%<*loadingorder-xepersian.def>
+%\fi
+% \section{File \texttt{loadingorder-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{loadingorder-xepersian.def}[2018/09/29 v0.5 making sure that xepersian is the last package loaded]
+\bidi at isloaded{algorithmic}
+\bidi at isloaded{algorithm}
+\bidi at isloaded{backref}
+\bidi at isloaded{enumerate}
+\bidi at isloaded{enumitem}
+\bidi at isloaded{fancyref}
+\bidi at isloaded{tocloft}
+\bidi at isloaded{url}
+\bidi at isloaded{varioref}
+\AtBeginDocument{
+ \if at bidi@algorithmicloaded@\else
+ \bidi at isloaded[\PackageError{xepersian}{Oops! you have loaded package algorithmic after xepersian package. Please load package algorithmic before xepersian package, and then try to run xelatex on your document again}{}]{algorithmic}
+ \fi%
+ \if at bidi@algorithmloaded@\else
+ \bidi at isloaded[\PackageError{xepersian}{Oops! you have loaded package algorithm after xepersian package. Please load package algorithm before xepersian package, and then try to run xelatex on your document again}{}]{algorithm}
+ \fi%
+ \if at bidi@backrefloaded@\else
+ \bidi at isloaded[\PackageError{xepersian}{Oops! you have loaded package backref after xepersian package. Please load package backref before xepersian package, and then try to run xelatex on your document again}{}]{backref}
+ \fi%
+ \if at bidi@enumerateloaded@\else
+ \bidi at isloaded[\PackageError{xepersian}{Oops! you have loaded package enumerate after xepersian package. Please load package enumerate before xepersian package, and then try to run xelatex on your document again}{}]{enumerate}
+ \fi%
+ \if at bidi@enumitemloaded@\else
+ \bidi at isloaded[\PackageError{xepersian}{Oops! you have loaded package enumitem after xepersian package. Please load package enumitem before xepersian package, and then try to run xelatex on your document again}{}]{enumitem}
+ \fi%
+ \if at bidi@fancyrefloaded@\else
+ \bidi at isloaded[\PackageError{xepersian}{Oops! you have loaded package fancyref after xepersian package. Please load package fancyref before xepersian package, and then try to run xelatex on your document again}{}]{fancyref}
+ \fi%
+ \if at bidi@tocloftloaded@\else
+ \bidi at isloaded[\PackageError{xepersian}{Oops! you have loaded package tocloft after xepersian package. Please load package tocloft before xepersian package, and then try to run xelatex on your document again}{}]{tocloft}
+ \fi%
+ \if at bidi@urlloaded@\else
+ \bidi at isloaded[\PackageError{xepersian}{Oops! you have loaded package url after xepersian package. Please load package url before xepersian package, and then try to run xelatex on your document again}{}]{url}
+ \fi%
+ \if at bidi@variorefloaded@\else
+ \bidi at isloaded[\PackageError{xepersian}{Oops! you have loaded package varioref after xepersian package. Please load package varioref before xepersian package, and then try to run xelatex on your document again}{}]{varioref}
+ \fi%
+}
+% \end{macrocode}
+% \iffalse
+%</loadingorder-xepersian.def>
+%<*localise-xepersian.def>
+%\fi
+% \section{File \texttt{localise-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{localise-xepersian.def}[2014/07/10 v0.2b Persian localisation of LaTeX2e]
+\newcommand{\makezwnjletter}{\catcode`=11\relax}
+\makezwnjletter
+\newcommand*{\eqcommand}[2]{\if at bidi@csprimitive{#2}{\bidi at csletcs{#1}{#2}}{\bidi at csdefcs{#1}{#2}}}
+\newcommand*{\eqenvironment}[2]{\newenvironment{#1}{\csname#2\endcsname}{\csname end#2\endcsname}}
+\@ifpackageloaded{keyval}{%
+\newcommand*\keyval at eq@alias at key[4][KV]{%
+ \bidi at csletcs{#1@#2@#3}{#1@#2@#4}%
+ \bidi at csletcs{#1@#2@#3 at default}{#1@#2@#4 at default}}%
+}{\@ifpackageloaded{xkeyval}{%
+\newcommand*\keyval at eq@alias at key[4][KV]{%
+ \bidi at csletcs{#1@#2@#3}{#1@#2@#4}%
+ \bidi at csletcs{#1@#2@#3 at default}{#1@#2@#4 at default}}%
+}{}}
+\input{latex-localise-commands-xepersian.def}
+\input{xepersian-localise-commands-xepersian.def}
+\input{latex-localise-environments-xepersian.def}
+\input{xepersian-localise-environments-xepersian.def}
+\input{latex-localise-messages-xepersian.def}
+\input{latex-localise-misc-xepersian.def}
+\input{packages-localise-xepersian.def}
+\aliasfontfeature{ExternalLocation}{مکانخارجی}
+\aliasfontfeature{Path}{مسیر}
+\aliasfontfeature{Renderer}{تحویلدهنده}
+\aliasfontfeature{BoldFont}{قلمسیاه}
+\aliasfontfeature{Language}{زبان}
+\aliasfontfeature{Script}{خط}
+\aliasfontfeature{UprightFont}{قلمعمودی}
+\aliasfontfeature{ItalicFont}{قلمایتالیک}
+\aliasfontfeature{BoldItalicFont}{قلمایتالیکسیاه}
+\aliasfontfeature{SlantedFont}{قلمخوابیده}
+\aliasfontfeature{BoldSlantedFont}{قلمخوابیدهسیاه}
+\aliasfontfeature{SmallCapsFont}{قلمکلاهکوچک}
+\aliasfontfeature{UprightFeatures}{ویژگیهایقلمعمودی}
+\aliasfontfeature{BoldFeatures}{ویژگیهایقلمسیاه}
+\aliasfontfeature{ItalicFeatures}{ویژگیهایقلمایتالیک}
+\aliasfontfeature{BoldItalicFeatures}{ویژگیهایقلمایتالیکسیاه}
+\aliasfontfeature{SlantedFeatures}{ویژگیهایقلمخوابیده}
+\aliasfontfeature{BoldSlantedFeatures}{ویژگیهایقلمخوابیدهسیاه}
+\aliasfontfeature{SmallCapsFeatures}{ویژگیهایقلمکلاهکوچک}
+\aliasfontfeature{SizeFeatures}{ویژگیهایاندازه}
+\aliasfontfeature{Scale}{ضریب}
+\aliasfontfeature{WordSpace}{فضایکلمه}
+\aliasfontfeature{PunctuationSpace}{فضاینقطهگذاری}
+\aliasfontfeature{FontAdjustment}{تنظیمقلم}
+\aliasfontfeature{LetterSpace}{فضایحرف}
+\aliasfontfeature{HyphenChar}{نویسهتیره}
+\aliasfontfeature{Color}{رنگ}
+\aliasfontfeature{Opacity}{کدری}
+\aliasfontfeature{Mapping}{نگاشت}
+\aliasfontfeature{Weight}{سنگینی}
+\aliasfontfeature{Width}{پهنا}
+\aliasfontfeature{OpticalSize}{اندازهچشمی}
+\aliasfontfeature{FakeSlant}{خوابیدهتقلبی}
+\aliasfontfeature{FakeStretch}{کششتقلبی}
+\aliasfontfeature{FakeBold}{سیاهتقلبی}
+\aliasfontfeature{AutoFakeSlant}{خوابیدهتقلبیخودکار}
+\aliasfontfeature{AutoFakeBold}{سیاهتقلبیخودکار}
+\aliasfontfeature{Ligatures}{دویاچندحرفمتصلبههم}
+\aliasfontfeature{Alternate}{متناوب}
+\aliasfontfeature{Variant}{گوناگون}
+\aliasfontfeature{Variant}{مجموعهسبکی}
+\aliasfontfeature{CharacterVariant}{گوناگونینویسه}
+\aliasfontfeature{Style}{سبک}
+\aliasfontfeature{Annotation}{یادداشت}
+\aliasfontfeature{RawFeature}{ویژگیهایکال}
+\aliasfontfeature{CharacterWidth}{پهناینویسه}
+\aliasfontfeature{Numbers}{ارقام}
+\aliasfontfeature{Contextuals}{متنی}
+\aliasfontfeature{Diacritics}{تفکیککنندهها}
+\aliasfontfeature{Letters}{حروف}
+\aliasfontfeature{Kerning}{دوری}
+\aliasfontfeature{VerticalPosition}{موقعیتعمودی}
+\aliasfontfeature{Fractions}{کسر}
+\aliasfontfeatureoption{Language}{Default}{پیشفرض}
+\aliasfontfeatureoption{Language}{Persian}{پارسی}
+\aliasfontfeatureoption{Script}{Persian}{پارسی}
+\aliasfontfeatureoption{Script}{Latin}{لاتین}
+\aliasfontfeatureoption{Style}{MathScript}{اسکریپتریاضی}
+\aliasfontfeatureoption{Style}{MathScriptScript}{اسکریپتاسکریپتریاضی}
+% \end{macrocode}
+% \iffalse
+%</localise-xepersian.def>
+%<*memoir-xepersian.def>
+%\fi
+% \section{File \texttt{memoir-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{memoir-xepersian.def}[2010/07/25 v0.1 adaptations for memoir class]
+\renewcommand{\@memfront}{%
+ \@smemfront\pagenumbering{harfi}}
+\renewcommand{\setthesection}{\thechapter\@SepMark\harfi{section}}
+\renewcommand*{\thebook}{\@tartibi\c at book}
+\renewcommand*{\thepart}{\@tartibi\c at part}
+\renewcommand{\appendix}{\par
+ \setcounter{chapter}{0}%
+ \setcounter{section}{0}%
+ \gdef\@chapapp{\appendixname}%
+ \gdef\thechapter{\@harfi\c at chapter}%
+ \anappendixtrue}
+% \end{macrocode}
+% \iffalse
+%</memoir-xepersian.def>
+%<*latex-localise-messages-xepersian.def>
+%\fi
+% \section{File \texttt{latex-localise-messages-xepersian.def}}
+% \begin{macrocode}
+\آمادهسازیپرونده{latex-localise-messages-xepersian.def}[2011/03/01 v0.1 localising LaTeX2e messages]
+% \end{macrocode}
+% \iffalse
+%</latex-localise-messages-xepersian.def>
+%<*minitoc-xepersian.def>
+%\fi
+% \section{File \texttt{minitoc-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{minitoc-xepersian.def}[2010/07/25 v0.1 bilingual captions for minitoc package]
+\def\ptctitle{\if at RTL فهرست مطالب\else Table of Contents\fi}%
+\def\plftitle{\if at RTL فهرست تصاویر\else List of Figures\fi}%
+\def\plttitle{\if at RTL فهرست جداول\else List of Tables\fi}%
+\def\mtctitle{\if at RTL عناوین\else Contents\fi}%
+\def\mlftitle{\if at RTL اشکال\else Figures\fi}%
+\def\mlttitle{\if at RTL جداول\else Tables\fi}%
+\def\stctitle{\if at RTL عناوین\else Contents\fi}%
+\def\slftitle{\if at RTL اشکال\else Figures\fi}%
+\def\slttitle{\if at RTL جداول\else Tables\fi}%
+% \end{macrocode}
+% \iffalse
+%</minitoc-xepersian.def>
+%<*latex-localise-misc-xepersian.def>
+%\fi
+% \section{File \texttt{latex-localise-misc-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{latex-localise-misc-xepersian.def}[2012/01/01 v0.2 miscellaneous Persian localisation of LaTeX2e]
+\تر\گرجدید#1{%
+\شمار@\نویسهویژه \نویسهویژه\من@ا
+ \بگذار#1\گرنادرست
+\@گر#1\گردرست
+\@گر#1\گرنادرست
+\نویسهویژه\شمار@}
+\تر\@گر#1#2{%
+\بگسترپساز\تر\نامفرمان\بگسترپساز\@خورحریصانهدو\رشته#1%
+\بگسترپساز\@خورحریصانهدو\رشته#2\پایاننامفرمان
+{\بگذار#1#2}}
+\بگذار\تعریفنشده\undefined
+
+\تر\حلقه#1\ازنو{\تر\تکرارکن{#1\راحت\بگسترپساز\تکرارکن\رگ}%
+ \تکرارکن \بگذار\تکرارکن\راحت}
+\بگذار\ازنو\رگ
+
+
+\بلند\تر \حلقه #1\ازنو{%
+ \تر\تکرارکن{#1\راحت % \راحت اضافی
+ \بگسترپساز\تکرارکن\رگ
+ }%
+ \تکرارکن
+ \بگذار\تکرارکن\راحت
+}
+\بگذار\ازنو=\رگ
+
+
+\@ifdefinitionfileloaded{latex-xetex-bidi}{%
+\def\@xfloat #1[#2]{%
+ \@nodocument
+ \def \@captype {#1}%
+ \def \@fps {#2}%
+ \@onelevel at sanitize \@fps
+ \def \reserved at b {!}%
+ \ifx \reserved at b \@fps
+ \@fpsadddefault
+ \else
+ \ifx \@fps \@empty
+ \@fpsadddefault
+ \fi
+ \fi
+ \ifhmode
+ \@bsphack
+ \@floatpenalty -\@Mii
+ \else
+ \@floatpenalty-\@Miii
+ \fi
+ \ifinner
+ \@parmoderr\@floatpenalty\z@
+ \else
+ \@next\@currbox\@freelist
+ {%
+ \@tempcnta \sixt@@n
+ \expandafter \@tfor \expandafter \reserved at a
+ \expandafter :\expandafter =\@fps
+ \do
+ {%
+ \if \reserved at a h%
+ \ifodd \@tempcnta
+ \else
+ \advance \@tempcnta \@ne
+ \fi
+ \fi
+ \if \reserved at a ا%
+ \ifodd \@tempcnta
+ \else
+ \advance \@tempcnta \@ne
+ \fi
+ \fi
+ \if \reserved at a t%
+ \@setfpsbit \tw@
+ \fi
+ \if \reserved at a ب%
+ \@setfpsbit \tw@
+ \fi
+ \if \reserved at a b%
+ \@setfpsbit 4%
+ \fi
+ \if \reserved at a ز%
+ \@setfpsbit 4%
+ \fi
+ \if \reserved at a p%
+ \@setfpsbit 8%
+ \fi
+ \if \reserved at a ص%
+ \@setfpsbit 8%
+ \fi
+ \if \reserved at a !%
+ \ifnum \@tempcnta>15
+ \advance\@tempcnta -\sixt@@n\relax
+ \fi
+ \fi
+ }%
+ \@tempcntb \csname ftype@\@captype \endcsname
+ \multiply \@tempcntb \@xxxii
+ \advance \@tempcnta \@tempcntb
+ \global \count\@currbox \@tempcnta
+ }%
+ \@fltovf
+ \fi
+ \global \setbox\@currbox
+ \color at vbox
+ \normalcolor
+ \vbox \bgroup
+ \hsize\columnwidth
+ \@parboxrestore
+ \@floatboxreset
+}
+\let\bm@و\bm at c
+\let\bm@چ\bm at l
+\let\bm@ر\bm at r
+\let\bm@ز\bm at b
+\let\bm@ب\bm at t
+\let\bm@ک\bm at s
+\long\def\@iiiparbox#1#2[#3]#4#5{%
+ \leavevmode
+ \@pboxswfalse
+ \if at hboxRconstruct\@bidi at list@minipage at parbox@not at nobtrue\fi
+ \if at RTL\if#1t\@bidi at list@minipage at parboxtrue\else\if#1b\@bidi at list@minipage at parboxtrue\else\if#1ز\@bidi at list@minipage at parboxtrue\else\if#1ب\@bidi at list@minipage at parboxtrue\fi\fi\fi\fi\fi
+ \setlength\@tempdima{#4}%
+ \@begin at tempboxa\vbox{\hsize\@tempdima\@parboxrestore#5\@@par}%
+ \ifx\relax#2\else
+ \setlength\@tempdimb{#2}%
+ \edef\@parboxto{to\the\@tempdimb}%
+ \fi
+ \if#1b\vbox
+ \else\if#1ز\vbox
+ \else\if #1t\vtop
+ \else\if #1ب\vtop
+ \else\ifmmode\vcenter
+ \else\@pboxswtrue $\vcenter
+ \fi\fi\fi\fi\fi
+ \@parboxto{\let\hss\vss\let\unhbox\unvbox
+ \csname bm@#3\endcsname}%
+ \if at pboxsw \m at th$\fi
+ \@end at tempboxa}
+\def\@iiiminipage#1#2[#3]#4{%
+ \leavevmode
+ \@pboxswfalse
+ \if at hboxRconstruct\@bidi at list@minipage at parbox@not at nobtrue\fi
+ \if at RTL\if#1t\@bidi at list@minipage at parboxtrue\else\if#1b\@bidi at list@minipage at parboxtrue\else\if#1ز\@bidi at list@minipage at parboxtrue\else\if#1ب\@bidi at list@minipage at parboxtrue\fi\fi\fi\fi\fi
+ \setlength\@tempdima{#4}%
+ \def\@mpargs{{#1}{#2}[#3]{#4}}%
+ \setbox\@tempboxa\vbox\bgroup
+ \color at begingroup
+ \hsize\@tempdima
+ \textwidth\hsize \columnwidth\hsize
+ \@parboxrestore
+ \def\@mpfn{mpfootnote}\def\thempfn{\thempfootnote}\c at mpfootnote\z@
+ \let\@footnotetext\@mpfootnotetext
+ \let\@LTRfootnotetext\@mpLTRfootnotetext
+ \let\@RTLfootnotetext\@mpRTLfootnotetext
+ \let\@listdepth\@mplistdepth \@mplistdepth\z@
+ \@minipagerestore
+ \@setminipage}
+\def\@testpach#1{\@chclass \ifnum \@lastchclass=\tw@ 4 \else
+ \ifnum \@lastchclass=3 5 \else
+ \z@ \if #1c\@chnum \z@ \else
+ \if #1و\@chnum \z@ \else
+ \if \if at RTLtab#1r\else#1l\fi\@chnum \@ne \else
+ \if \if at RTLtab#1ر\else#1چ\fi\@chnum \@ne \else
+ \if \if at RTLtab#1l\else#1r\fi\@chnum \tw@ \else
+ \if \if at RTLtab#1چ\else#1ر\fi\@chnum \tw@ \else
+ \@chclass \if #1|\@ne \else
+ \if #1@\tw@ \else
+ \if #1p3 \else
+ \if #1پ3 \else \z@ \@preamerr 0\fi
+ \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi
+\fi}%
+}{}
+\@ifdefinitionfileloaded{array-xetex-bidi}{%
+\def\@testpach{\@chclass
+ \ifnum \@lastchclass=6 \@ne \@chnum \@ne \else
+ \ifnum \@lastchclass=7 5 \else
+ \ifnum \@lastchclass=8 \tw@ \else
+ \ifnum \@lastchclass=9 \thr@@
+ \else \z@
+ \ifnum \@lastchclass = 10 \else
+ \edef\@nextchar{\expandafter\string\@nextchar}%
+ \@chnum
+ \if \@nextchar c\z@ \else
+ \if \@nextchar و\z@ \else
+ \if \@nextchar \if at RTLtab r\else l\fi\@ne \else
+ \if \@nextchar \if at RTLtab ر\else چ\fi\@ne \else
+ \if \@nextchar \if at RTLtab l\else r\fi\tw@ \else
+ \if \@nextchar \if at RTLtab چ\else ر\fi\tw@ \else
+ \z@ \@chclass
+ \if\@nextchar |\@ne \else
+ \if \@nextchar !6 \else
+ \if \@nextchar @7 \else
+ \if \@nextchar <8 \else
+ \if \@nextchar >9 \else
+ 10
+ \@chnum
+ \if \@nextchar m\thr@@\else
+ \if \@nextchar م\thr@@\else
+ \if \@nextchar p4 \else
+ \if \@nextchar پ4 \else
+ \if \@nextchar b5 \else
+ \if \@nextchar ز5 \else
+ \z@ \@chclass \z@ \@preamerr \z@ \fi \fi \fi \fi \fi \fi \fi
+ \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi}%
+}{}
+\@ifdefinitionfileloaded{arydshln-xetex-bidi}{
+\ifadl at usingarypkg
+\def\@testpach{\@chclass
+ \ifnum \@lastchclass=6 \@ne \@chnum \@ne \else
+ \ifnum \@lastchclass=7 5 \else
+ \ifnum \@lastchclass=8 \tw@ \else
+ \ifnum \@lastchclass=9 \thr@@
+ \else \z@
+ \ifnum \@lastchclass = 10 \else
+ \edef\@nextchar{\expandafter\string\@nextchar}%
+ \@chnum
+ \if \@nextchar c\z@ \else
+ \if \@nextchar و\z@ \else
+ \if \@nextchar \if at RTLtab r\else l\fi\@ne \else
+ \if \@nextchar \if at RTLtab ر\else چ\fi\@ne \else
+ \if \@nextchar \if at RTLtab l\else r\fi\tw@ \else
+ \if \@nextchar \if at RTLtab چ\else ر\fi\tw@ \else
+ \z@ \@chclass
+ \if\@nextchar |\@ne \let\@arrayrule\adl at arrayrule \else
+ \if\@nextchar :\@ne \let\@arrayrule\adl at arraydashrule \else
+ \if\@nextchar ;\@ne \let\@arrayrule\adl at argarraydashrule \else
+ \if \@nextchar !6 \else
+ \if \@nextchar @7 \else
+ \if \@nextchar <8 \else
+ \if \@nextchar >9 \else
+ 10
+ \@chnum
+ \if \@nextchar m\thr@@\else
+ \if \@nextchar م\thr@@\else
+ \if \@nextchar p4 \else
+ \if \@nextchar پ4 \else
+ \if \@nextchar b5 \else
+ \if \@nextchar ز5 \else
+ \z@ \@chclass \z@ \@preamerr \z@ \fi \fi \fi \fi \fi \fi \fi \fi \fi
+ \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi}
+
+\def\@classz{\@classx
+ \@tempcnta \count@
+ \prepnext at tok
+ \@addtopreamble{\ifcase \@chnum
+ \hfil
+ \adl at putlrc{\d at llarbegin \insert at column \d at llarend}\hfil \or
+ \hskip1sp\adl at putlrc{\d at llarbegin \insert at column \d at llarend}\hfil \or
+ \hfil\hskip1sp\adl at putlrc{\d at llarbegin \insert at column \d at llarend}\or
+ \setbox\adl at box\hbox \adl at startmbox{\@nextchar}\insert at column
+ \adl at endmbox\or
+ \setbox\adl at box\vtop \@startpbox{\@nextchar}\insert at column \@endpbox \or
+ \setbox\adl at box\vbox \@startpbox{\@nextchar}\insert at column \@endpbox
+ \fi}\prepnext at tok}
+\def\adl at class@start{4}
+\def\adl at class@iiiorvii{7}
+
+\else
+\def\@testpach#1{\@chclass \ifnum \@lastchclass=\tw@ 4\relax \else
+ \ifnum \@lastchclass=\thr@@ 5\relax \else
+ \z@ \if #1c\@chnum \z@ \else
+ \if #1و\@chnum\z@ \else
+ \if \if at RTLtab#1r\else#1l\fi\@chnum \@ne \else
+ \if \if at RTLtab#1ر\else#1چ\fi\@chnum \@ne \else
+ \if \if at RTLtab#1l\else#1r\fi\@chnum \tw@ \else
+ \if \if at RTLtab#1چ\else#1ر\fi\@chnum \tw@ \else
+ \@chclass
+ \if #1|\@ne \let\@arrayrule\adl at arrayrule \else
+ \if #1:\@ne \let\@arrayrule\adl at arraydashrule \else
+ \if #1;\@ne \let\@arrayrule\adl at argarraydashrule \else
+ \if #1@\tw@ \else
+ \if #1p\thr@@ \else
+ \if #1پ\thr@@ \else\z@ \@preamerr 0\fi
+ \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi}
+
+\def\@arrayclassz{\ifcase \@lastchclass \@acolampacol \or \@ampacol \or
+ \or \or \@addamp \or
+ \@acolampacol \or \@firstampfalse \@acol \fi
+ \edef\@preamble{\@preamble
+ \ifcase \@chnum
+ \hfil\adl at putlrc{$\relax\@sharp$}\hfil
+ \or \adl at putlrc{$\relax\@sharp$}\hfil
+ \or \hfil\adl at putlrc{$\relax\@sharp$}\fi}}
+\def\@tabclassz{\ifcase \@lastchclass \@acolampacol \or \@ampacol \or
+ \or \or \@addamp \or
+ \@acolampacol \or \@firstampfalse \@acol \fi
+ \edef\@preamble{\@preamble
+ \ifcase \@chnum
+ \hfil\adl at putlrc{\@sharp\unskip}\hfil
+ \or \adl at putlrc{\@sharp\unskip}\hfil
+ \or \hfil\hskip\z@ \adl at putlrc{\@sharp\unskip}\fi}}
+\def\adl at class@start{6}
+\def\adl at class@iiiorvii{3}
+\fi
+}{}
+\@ifdefinitionfileloaded{tabulary-xetex-bidi}{%
+\def\@testpach{\@chclass
+ \ifnum \@lastchclass=6 \@ne \@chnum \@ne \else
+ \ifnum \@lastchclass=7 5 \else
+ \ifnum \@lastchclass=8 \tw@ \else
+ \ifnum \@lastchclass=9 \thr@@
+ \else \z@
+ \ifnum \@lastchclass = 10 \else
+ \edef\@nextchar{\expandafter\string\@nextchar}%
+ \@chnum
+ \if \@nextchar c\z@ \else
+ \if \@nextchar و\z@ \else
+ \if \@nextchar \if at RTLtab r\else l\fi\@ne \else
+ \if \@nextchar \if at RTLtab ر\else چ\fi\@ne \else
+ \if \@nextchar \if at RTLtab l\else r\fi\tw@ \else
+ \if \@nextchar \if at RTLtab چ\else ر\fi\tw@ \else
+ \if \@nextchar C7 \else
+ \if \@nextchar س7 \else
+ \if \@nextchar L8 \else
+ \if \@nextchar ف8 \else
+ \if \@nextchar R9 \else
+ \if \@nextchar ا9 \else
+ \if \@nextchar J10 \else
+ \if \@nextchar ت10 \else
+ \z@ \@chclass
+ \if\@nextchar |\@ne \else
+ \if \@nextchar !6 \else
+ \if \@nextchar @7 \else
+ \if \@nextchar <8 \else
+ \if \@nextchar >9 \else
+ 10
+ \@chnum
+ \if \@nextchar m\thr@@\else
+ \if \@nextchar م\thr@@\else
+ \if \@nextchar p4 \else
+ \if \@nextcharپ4 \else
+ \if \@nextchar b5 \else
+ \if \@nextchar ز5 \else
+ \z@ \@chclass \z@ \@preamerr \z@ \fi \fi \fi \fi\fi \fi \fi\fi \fi \fi \fi \fi \fi \fi \fi \fi
+ \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi}%
+}{}
+\@ifdefinitionfileloaded{float-xetex-bidi}{%
+\let\@float at Hx\@xfloat
+\def\@xfloat#1[{\@ifnextchar{H}{\@float at HH{#1}[}{\@ifnextchar{آ}{\@float@آآ{#1}[}{\@float at Hx{#1}[}}}
+\def\@float at HH#1[H]{%
+ \expandafter\let\csname end#1\endcsname\float at endH
+ \let\@currbox\float at box
+ \def\@captype{#1}\setbox\@floatcapt=\vbox{}%
+ \expandafter\ifx\csname fst@#1\endcsname\relax
+ \@flstylefalse\else\@flstyletrue\fi
+ \setbox\@currbox\color at vbox\normalcolor
+ \vbox\bgroup \hsize\columnwidth \@parboxrestore
+ \@floatboxreset \@setnobreak
+ \ignorespaces}
+\def\@float@آآ#1[آ]{%
+ \expandafter\let\csname end#1\endcsname\float at endH
+ \let\@currbox\float at box
+ \def\@captype{#1}\setbox\@floatcapt=\vbox{}%
+ \expandafter\ifx\csname fst@#1\endcsname\relax
+ \@flstylefalse\else\@flstyletrue\fi
+ \setbox\@currbox\color at vbox\normalcolor
+ \vbox\bgroup \hsize\columnwidth \@parboxrestore
+ \@floatboxreset \@setnobreak
+ \ignorespaces}
+}{}
+\begingroup \catcode `|=0 \catcode `[= 1
+\catcode`]=2 \catcode `\{=12 \catcode `\}=12
+\catcode`\\=12 |gdef|@x at xepersian@localize at verbatim#1\پایان{همانطورکههست}[#1|پایان[همانطورکههست]]
+|gdef|@sx at xepersian@localize at verbatim#1\پایان{همانطورکههست*}[#1|پایان[همانطورکههست*]]
+|endgroup
+\def\همانطورکههست{\@verbatim \frenchspacing\@vobeyspaces \@x at xepersian@localize at verbatim}
+\def\endهمانطورکههست{\if at newlist \leavevmode\fi\endtrivlist}
+\ExplSyntaxOn
+\AtBeginDocument{\@namedef{همانطورکههست*}{\@verbatim \fontspec_print_visible_spaces: \@sx at xepersian@localize at verbatim}}
+\ExplSyntaxOff
+\expandafter\let\csname endهمانطورکههست*\endcsname =\endهمانطورکههست
+% \end{macrocode}
+% \iffalse
+%</latex-localise-misc-xepersian.def>
+%<*natbib-xepersian.def>
+%\fi
+% \section{File \texttt{natbib-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{natbib-xepersian.def}[2011/08/01 v0.1 adaptations for natbib package]
+\renewcommand\NAT at set@cites{%
+ \ifNAT at numbers
+ \ifNAT at super \let\@cite\NAT at citesuper
+ \def\NAT at mbox##1{\unskip\nobreak\textsuperscript{##1}}%
+ \let\citeyearpar=\citeyear
+ \let\NAT at space\relax
+ \def\NAT at super@kern{\kern\p@}%
+ \else
+ \let\NAT at mbox=\mbox
+ \let\@cite\NAT at citenum
+ \let\NAT at space\NAT at spacechar
+ \let\NAT at super@kern\relax
+ \fi
+ \let\@citex\NAT at citexnum
+ \let\@Latincitex\NAT at Latin@citexnum
+ \let\@biblabel\NAT at biblabelnum
+ \let\@bibsetup\NAT at bibsetnum
+ \renewcommand\NAT at idxtxt{\NAT at name\NAT at spacechar\NAT at open\NAT at num\NAT at close}%
+ \def\natexlab##1{}%
+ \def\NAT at penalty{\penalty\@m}%
+ \else
+ \let\@cite\NAT at cite
+ \let\@citex\NAT at citex
+ \let\@Latincitex\NAT at Latin@citex
+ \let\@biblabel\NAT at biblabel
+ \let\@bibsetup\NAT at bibsetup
+ \let\NAT at space\NAT at spacechar
+ \let\NAT at penalty\@empty
+ \renewcommand\NAT at idxtxt{\NAT at name\NAT at spacechar\NAT at open\NAT at date\NAT at close}%
+ \def\natexlab##1{##1}%
+ \fi}
+\newcommand\NAT at Latin@citex{}
+\def\NAT at Latin@citex%
+ [#1][#2]#3{%
+ \NAT at reset@parser
+ \NAT at sort@cites{#3}%
+ \NAT at reset@citea
+ \@cite{\lr{\let\NAT at nm\@empty\let\NAT at year\@empty
+ \@for\@citeb:=\NAT at cite@list\do
+ {\@safe at activestrue
+ \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+ \@safe at activesfalse
+ \@ifundefined{b@\@citeb\@extra at b@citeb}{\@citea%
+ {\reset at font\bfseries ?}\NAT at citeundefined
+ \PackageWarning{natbib}%
+ {Citation `\@citeb' on page \thepage \space undefined}\def\NAT at date{}}%
+ {\let\NAT at last@nm=\NAT at nm\let\NAT at last@yr=\NAT at year
+ \NAT at parse{\@citeb}%
+ \ifNAT at longnames\@ifundefined{bv@\@citeb\@extra at b@citeb}{%
+ \let\NAT at name=\NAT at all@names
+ \global\@namedef{bv@\@citeb\@extra at b@citeb}{}}{}%
+ \fi
+ \ifNAT at full\let\NAT at nm\NAT at all@names\else
+ \let\NAT at nm\NAT at name\fi
+ \ifNAT at swa\ifcase\NAT at ctype
+ \if\relax\NAT at date\relax
+ \@citea\NAT at hyper@{\NAT at nmfmt{\NAT at nm}\NAT at date}%
+ \else
+ \ifx\NAT at last@nm\NAT at nm\NAT at yrsep
+ \ifx\NAT at last@yr\NAT at year
+ \def\NAT at temp{{?}}%
+ \ifx\NAT at temp\NAT at exlab\PackageWarningNoLine{natbib}%
+ {Multiple citation on page \thepage: same authors and
+ year\MessageBreak without distinguishing extra
+ letter,\MessageBreak appears as question mark}\fi
+ \NAT at hyper@{\NAT at exlab}%
+ \else\unskip\NAT at spacechar
+ \NAT at hyper@{\NAT at date}%
+ \fi
+ \else
+ \@citea\NAT at hyper@{%
+ \NAT at nmfmt{\NAT at nm}%
+ \hyper at natlinkbreak{%
+ \NAT at aysep\NAT at spacechar}{\@citeb\@extra at b@citeb
+ }%
+ \NAT at date
+ }%
+ \fi
+ \fi
+ \or\@citea\NAT at hyper@{\NAT at nmfmt{\NAT at nm}}%
+ \or\@citea\NAT at hyper@{\NAT at date}%
+ \or\@citea\NAT at hyper@{\NAT at alias}%
+ \fi \NAT at def@citea
+ \else
+ \ifcase\NAT at ctype
+ \if\relax\NAT at date\relax
+ \@citea\NAT at hyper@{\NAT at nmfmt{\NAT at nm}}%
+ \else
+ \ifx\NAT at last@nm\NAT at nm\NAT at yrsep
+ \ifx\NAT at last@yr\NAT at year
+ \def\NAT at temp{{?}}%
+ \ifx\NAT at temp\NAT at exlab\PackageWarningNoLine{natbib}%
+ {Multiple citation on page \thepage: same authors and
+ year\MessageBreak without distinguishing extra
+ letter,\MessageBreak appears as question mark}\fi
+ \NAT at hyper@{\NAT at exlab}%
+ \else
+ \unskip\NAT at spacechar
+ \NAT at hyper@{\NAT at date}%
+ \fi
+ \else
+ \@citea\NAT at hyper@{%
+ \NAT at nmfmt{\NAT at nm}%
+ \hyper at natlinkbreak{\NAT at spacechar\NAT@@open\if*#1*\else#1\NAT at spacechar\fi}%
+ {\@citeb\@extra at b@citeb}%
+ \NAT at date
+ }%
+ \fi
+ \fi
+ \or\@citea\NAT at hyper@{\NAT at nmfmt{\NAT at nm}}%
+ \or\@citea\NAT at hyper@{\NAT at date}%
+ \or\@citea\NAT at hyper@{\NAT at alias}%
+ \fi
+ \if\relax\NAT at date\relax
+ \NAT at def@citea
+ \else
+ \NAT at def@citea at close
+ \fi
+ \fi
+ }}\ifNAT at swa\else\if*#2*\else\NAT at cmt#2\fi
+ \if\relax\NAT at date\relax\else\NAT@@close\fi\fi}}{#1}{#2}}
+\newcommand\NAT at Latin@citexnum{}
+\def\NAT at Latin@citexnum[#1][#2]#3{%
+ \NAT at reset@parser
+ \NAT at sort@cites{#3}%
+ \NAT at reset@citea
+ \@cite{\lr{\def\NAT at num{-1}\let\NAT at last@yr\relax\let\NAT at nm\@empty
+ \@for\@citeb:=\NAT at cite@list\do
+ {\@safe at activestrue
+ \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+ \@safe at activesfalse
+ \@ifundefined{b@\@citeb\@extra at b@citeb}{%
+ {\reset at font\bfseries?}
+ \NAT at citeundefined\PackageWarning{natbib}%
+ {Citation `\@citeb' on page \thepage \space undefined}}%
+ {\let\NAT at last@num\NAT at num\let\NAT at last@nm\NAT at nm
+ \NAT at parse{\@citeb}%
+ \ifNAT at longnames\@ifundefined{bv@\@citeb\@extra at b@citeb}{%
+ \let\NAT at name=\NAT at all@names
+ \global\@namedef{bv@\@citeb\@extra at b@citeb}{}}{}%
+ \fi
+ \ifNAT at full\let\NAT at nm\NAT at all@names\else
+ \let\NAT at nm\NAT at name\fi
+ \ifNAT at swa
+ \@ifnum{\NAT at ctype>\@ne}{%
+ \@citea
+ \NAT at hyper@{\@ifnum{\NAT at ctype=\tw@}{\NAT at test{\NAT at ctype}}{\NAT at alias}}%
+ }{%
+ \@ifnum{\NAT at cmprs>\z@}{%
+ \NAT at ifcat@num\NAT at num
+ {\let\NAT at nm=\NAT at num}%
+ {\def\NAT at nm{-2}}%
+ \NAT at ifcat@num\NAT at last@num
+ {\@tempcnta=\NAT at last@num\relax}%
+ {\@tempcnta\m at ne}%
+ \@ifnum{\NAT at nm=\@tempcnta}{%
+ \@ifnum{\NAT at merge>\@ne}{}{\NAT at last@yr at mbox}%
+ }{%
+ \advance\@tempcnta by\@ne
+ \@ifnum{\NAT at nm=\@tempcnta}{%
+ \ifx\NAT at last@yr\relax
+ \def at NAT@last at yr{\@citea}%
+ \else
+ \def at NAT@last at yr{--\NAT at penalty}%
+ \fi
+ }{%
+ \NAT at last@yr at mbox
+ }%
+ }%
+ }{%
+ \@tempswatrue
+ \@ifnum{\NAT at merge>\@ne}{\@ifnum{\NAT at last@num=\NAT at num\relax}{\@tempswafalse}{}}{}%
+ \if at tempswa\NAT at citea@mbox\fi
+ }%
+ }%
+ \NAT at def@citea
+ \else
+ \ifcase\NAT at ctype
+ \ifx\NAT at last@nm\NAT at nm \NAT at yrsep\NAT at penalty\NAT at space\else
+ \@citea \NAT at test{\@ne}\NAT at spacechar\NAT at mbox{\NAT at super@kern\NAT@@open}%
+ \fi
+ \if*#1*\else#1\NAT at spacechar\fi
+ \NAT at mbox{\NAT at hyper@{{\citenumfont{\NAT at num}}}}%
+ \NAT at def@citea at box
+ \or
+ \NAT at hyper@citea at space{\NAT at test{\NAT at ctype}}%
+ \or
+ \NAT at hyper@citea at space{\NAT at test{\NAT at ctype}}%
+ \or
+ \NAT at hyper@citea at space\NAT at alias
+ \fi
+ \fi
+ }%
+ }%
+ \@ifnum{\NAT at cmprs>\z@}{\NAT at last@yr}{}%
+ \ifNAT at swa\else
+ \@ifnum{\NAT at ctype=\z@}{%
+ \if*#2*\else\NAT at cmt#2\fi
+ }{}%
+ \NAT at mbox{\NAT@@close}%
+ \fi
+ }}{#1}{#2}%
+}%
+\AtBeginDocument{\NAT at set@cites}
+\DeclareRobustCommand\Latincite
+ {\begingroup\let\NAT at ctype\z@\NAT at partrue\NAT at swatrue
+ \@ifstar{\NAT at fulltrue\NAT at Latin@cites}{\NAT at fullfalse\NAT at Latin@cites}}
+\newcommand\NAT at Latin@cites{\@ifnextchar [{\NAT@@Latin@@citetp}{%
+ \ifNAT at numbers\else
+ \NAT at swafalse
+ \fi
+ \NAT@@Latin@@citetp[]}}
+\newcommand\NAT@@Latin@@citetp{}
+\def\NAT@@Latin@@citetp[#1]{\@ifnextchar[{\@Latincitex[#1]}{\@Latincitex[][#1]}}
+% \end{macrocode}
+% \iffalse
+%</natbib-xepersian.def>
+%<*packages-localise-xepersian.def>
+%\fi
+% \section{File \texttt{packages-localise-xepersian.def}}
+% \begin{macrocode}
+\آمادهسازیپرونده{packages-localise-xepersian.def}[2013/04/24 v0.2 localising LaTeX2e Packages]
+\@گرسبکفراخوانیشده{color}{\ورودی{color-localise-xepersian.def}}{}
+\@ifpackageloaded{multicol}{%
+\newenvironment{چندستونیها}{\begin{multicols}}{\end{multicols}}%
+\newenvironment{چندستونیها*}{\begin{multicols*}}{\end{multicols*}}%
+}{}
+\@ifpackageloaded{verbatim}{%
+\begingroup
+ \vrb at catcodes
+ \lccode`\!=`\\ \lccode`\[=`\{ \lccode`\]=`\}
+ \catcode`\~=\active \lccode`\~=`\^^M
+ \lccode`\C=`\C
+ \lowercase{\endgroup
+ \def\xepersian at localize@verbatim at start#1{%
+ \verbatim at startline
+ \if\noexpand#1\noexpand~%
+ \let\next\xepersian at localize@verbatim@
+ \else \def\next{\xepersian at localize@verbatim@#1}\fi
+ \next}%
+ \def\xepersian at localize@verbatim@#1~{\xepersian at localize@verbatim@@#1!پایان\@nil}%
+ \def\xepersian at localize@verbatim@@#1!پایان{%
+ \verbatim at addtoline{#1}%
+ \futurelet\next\xepersian at localize@verbatim@@@}%
+ \def\xepersian at localize@verbatim@@@#1\@nil{%
+ \ifx\next\@nil
+ \verbatim at processline
+ \verbatim at startline
+ \let\next\xepersian at localize@verbatim@
+ \else
+ \def\@tempa##1!پایان\@nil{##1}%
+ \@temptokena{!پایان}%
+ \def\next{\expandafter\xepersian at localize@verbatim at test\@tempa#1\@nil~}%
+ \fi \next}%
+ \def\xepersian at localize@verbatim at test#1{%
+ \let\next\xepersian at localize@verbatim at test
+ \if\noexpand#1\noexpand~%
+ \expandafter\verbatim at addtoline
+ \expandafter{\the\@temptokena}%
+ \verbatim at processline
+ \verbatim at startline
+ \let\next\xepersian at localize@verbatim@
+ \else \if\noexpand#1
+ \@temptokena\expandafter{\the\@temptokena#1}%
+ \else \if\noexpand#1\noexpand[%
+ \let\@tempc\@empty
+ \let\next\xepersian at localize@verbatim at testend
+ \else
+ \expandafter\verbatim at addtoline
+ \expandafter{\the\@temptokena}%
+ \def\next{\xepersian at localize@verbatim@#1}%
+ \fi\fi\fi
+ \next}%
+ \def\xepersian at localize@verbatim at testend#1{%
+ \if\noexpand#1\noexpand~%
+ \expandafter\verbatim at addtoline
+ \expandafter{\the\@temptokena[}%
+ \expandafter\verbatim at addtoline
+ \expandafter{\@tempc}%
+ \verbatim at processline
+ \verbatim at startline
+ \let\next\xepersian at localize@verbatim@
+ \else\if\noexpand#1\noexpand]%
+ \let\next\xepersian at localize@verbatim@@testend
+ \else\if\noexpand#1\noexpand!%
+ \expandafter\verbatim at addtoline
+ \expandafter{\the\@temptokena[}%
+ \expandafter\verbatim at addtoline
+ \expandafter{\@tempc}%
+ \def\next{\xepersian at localize@verbatim@!}%
+ \else \expandafter\def\expandafter\@tempc\expandafter
+ {\@tempc#1}\fi\fi\fi
+ \next}%
+ \def\xepersian at localize@verbatim@@testend{%
+ \ifx\@tempc\@currenvir
+ \verbatim at finish
+ \edef\next{\noexpand\end{\@currenvir}%
+ \noexpand\xepersian at localize@verbatim at rescan{\@currenvir}}%
+ \else
+ \expandafter\verbatim at addtoline
+ \expandafter{\the\@temptokena[}%
+ \expandafter\verbatim at addtoline
+ \expandafter{\@tempc]}%
+ \let\next\xepersian at localize@verbatim@
+ \fi
+ \next}%
+ \def\xepersian at localize@verbatim at rescan#1#2~{\if\noexpand~\noexpand#2~\else
+ \@warning{Characters dropped after `\string\end{#1}'}\fi}}%
+\def\همانطورکههست{\begingroup\@verbatim \frenchspacing\@vobeyspaces
+ \xepersian at localize@verbatim at start}
+\@namedef{همانطورکههست*}{\begingroup\@verbatim\xepersian at localize@verbatim at start}
+\def\endهمانطورکههست{\endtrivlist\endgroup\@doendpe}
+\expandafter\let\csname endهمانطورکههست*\endcsname =\endهمانطورکههست
+}{}
+\ExplSyntaxOn
+\AtBeginDocument{
+ \xepersian_localize_patch_verbatim:
+}
+\cs_set:Npn \xepersian_localize_patch_verbatim: {
+ \@ifpackageloaded{verbatim}{
+ \cs_set:cpn {همانطورکههست*} {
+ \group_begin: \@verbatim \fontspec_print_visible_spaces: \xepersian at localize@verbatim at start
+ }
+ }{
+ }
+}
+\ExplSyntaxOff
+\@ifpackageloaded{graphicx}{%
+\def\Gin at boolkey#1#2{%
+\expandafter\@ifdefinable \csname Gin@#2درست\endcsname{%
+\expandafter\let\csname Gin@#2درست\expandafter\endcsname\csname Gin@#2true\endcsname}%
+\expandafter\@ifdefinable \csname Gin@#2نادرست\endcsname{%
+\expandafter\let\csname Gin@#2نادرست\expandafter\endcsname\csname Gin@#2false\endcsname}%
+ \csname Gin@#2\ifx\relax#1\relax true\else#1\fi\endcsname}
+\define at key{Grot}{origin}[c]{%
+ \@tfor\@tempa:=#1\do{%
+ \if l\@tempa \Grot at x\z@\else
+ \if چ\@tempa \Grot at x\z@\else
+ \if r\@tempa \Grot at x\width\else
+ \if ر\@tempa \Grot at x\width\else
+ \if t\@tempa \Grot at y\height\else
+ \if ب\@tempa \Grot at y\height\else
+ \if b\@tempa \Grot at y-\depth\else
+ \if ز\@tempa \Grot at y-\depth\else
+ \if B\@tempa \Grot at y\z@\else
+ \if ک\@tempa \Grot at y\z@\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}}
+\معادل@کلید{Gin}{پیشنویس}{draft}
+\معادل@کلید{Gin}{مبدا}{origin}
+\معادل@کلید{Grot}{مبدا}{origin}
+\معادل@کلید{Gin}{بیاضافه}{clip}
+\معادل@کلید{Gin}{حفظتناسب}{keepaspectratio}
+\معادل@کلید{Gin}{پهنایطبیعی}{natwidth}
+\معادل@کلید{Gin}{بلندایطبیعی}{natheight}
+\معادل@کلید{Gin}{مختصات}{bb}
+\معادل@کلید{Gin}{محدودهنمایش}{viewport}
+\معادل@کلید{Gin}{حذفاطراف}{trim}
+\معادل@کلید{Gin}{زاویه}{angle}
+\معادل@کلید{Gin}{پهنا}{width}
+\معادل@کلید{Gin}{بلندا}{height}
+\معادل@کلید{Gin}{بلندایکل}{totalheight}
+\معادل@کلید{Gin}{ضریب}{scale}
+\معادل@کلید{Gin}{نوع}{type}
+\معادل@کلید{Gin}{پسوند}{ext}
+\معادل@کلید{Gin}{خواندنی}{read}
+\معادل@کلید{Gin}{فرمان}{command}
+\معادل@کلید{Grot}{طول}{x}
+\معادل@کلید{Grot}{عرض}{y}
+\معادل@کلید{Grot}{واحد}{units}
+}{}
+% \end{macrocode}
+% \iffalse
+%</packages-localise-xepersian.def>
+%<*persian-tex-text.map>
+%\fi
+% \section{File \texttt{persian-tex-text.map}}
+% \begin{macrocode}
+LHSName "persian-TeX-text"
+RHSName "Unicode"
+
+pass(Unicode)
+U+0030 <> U+06F0 ;
+U+0031 <> U+06F1 ;
+U+0032 <> U+06F2 ;
+U+0033 <> U+06F3 ;
+U+0034 <> U+06F4 ;
+U+0035 <> U+06F5 ;
+U+0036 <> U+06F6 ;
+U+0037 <> U+06F7 ;
+U+0038 <> U+06F8 ;
+U+0039 <> U+06F9 ;
+
+
+U+002C <> U+060C ; comma > arabic comma
+U+003F <> U+061F ; question mark -> arabic qm
+U+003B <> U+061B ; semicolon -> arabic semicolon
+
+; ligatures from Knuth's original CMR fonts
+U+002D U+002D <> U+2013 ; -- -> en dash
+U+002D U+002D U+002D <> U+2014 ; --- -> em dash
+
+U+0027 <> U+2019 ; ' -> right single quote
+U+0027 U+0027 <> U+201D ; '' -> right double quote
+U+0022 > U+201D ; " -> right double quote
+
+U+0060 <> U+2018 ; ` -> left single quote
+U+0060 U+0060 <> U+201C ; `` -> left double quote
+
+U+0021 U+0060 <> U+00A1 ; !` -> inverted exclam
+U+003F U+0060 <> U+00BF ; ?` -> inverted question
+
+; additions supported in T1 encoding
+U+002C U+002C <> U+201E ; ,, -> DOUBLE LOW-9 QUOTATION MARK
+U+003C U+003C <> U+00AB ; << -> LEFT POINTING GUILLEMET
+U+003E U+003E <> U+00BB ; >> -> RIGHT POINTING GUILLEMET
+% \end{macrocode}
+% \iffalse
+%</persian-tex-text.map>
+%<*rapport1-xepersian.def>
+%\fi
+% \section{File \texttt{rapport1-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{rapport1-xepersian.def}[2010/07/25 v0.1 adaptations for rapport1 class]
+\renewcommand*\thepart{\@tartibi\c at part}
+\renewcommand*\appendix{\par
+ \setcounter{chapter}{0}%
+ \setcounter{section}{0}%
+ \gdef\@chapapp{\appendixname}%
+ \gdef\thechapter{\@harfi\c at chapter}}
+% \end{macrocode}
+% \iffalse
+%</rapport1-xepersian.def>
+%<*rapport3-xepersian.def>
+%\fi
+% \section{File \texttt{rapport3-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{rapport3-xepersian.def}[2010/07/25 v0.2 adaptations for rapport3 class]
+\renewcommand*\thepart{\@tartibi\c at part}
+\renewcommand*\appendix{\par
+ \setcounter{chapter}{0}%
+ \setcounter{section}{0}%
+ \gdef\@chapapp{\appendixname}%
+ \gdef\thechapter{\@harfi\c at chapter}}
+% \end{macrocode}
+% \iffalse
+%</rapport3-xepersian.def>
+%<*refrep-xepersian.def>
+%\fi
+% \section{File \texttt{refrep-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{refrep-xepersian.def}[2010/07/25 v0.2 adaptations for refrep class]
+\renewcommand \thepart {\@tartibi\c at part}
+\renewcommand\appendix{\par
+ \setcounter{chapter}{0}%
+ \setcounter{section}{0}%
+ \gdef\@chapapp{\appendixname}%
+ \gdef\thechapter{\@harfi\c at chapter}
+}%end appendix
+% \end{macrocode}
+% \iffalse
+%</refrep-xepersian.def>
+%<*report-xepersian.def>
+%\fi
+% \section{File \texttt{report-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{report-xepersian.def}[2010/07/25 v0.2 adaptations for standard report class]
+\renewcommand \thepart {\@tartibi\c at part}
+\renewcommand\appendix{\par
+ \setcounter{chapter}{0}%
+ \setcounter{section}{0}%
+ \gdef\@chapapp{\appendixname}%
+ \gdef\thechapter{\@harfi\c at chapter}
+}%end appendix
+% \end{macrocode}
+% \iffalse
+%</report-xepersian.def>
+%<*scrartcl-xepersian.def>
+%\fi
+% \section{File \texttt{scrartcl-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{scrartcl-xepersian.def}[2010/07/25 v0.2 adaptations for scrartcl class]
+\renewcommand*{\thepart}{\@tartibi\c at part}
+\renewcommand*\appendix{\par%
+ \setcounter{section}{0}%
+ \setcounter{subsection}{0}%
+ \gdef\thesection{\@harfi\c at section}%
+ \csname appendixmore\endcsname
+}
+\renewcommand*{\@@maybeautodot}[1]{%
+ \ifx #1\@stop\let\@@maybeautodot\relax
+ \else
+ \ifx #1\harfi \@autodottrue\fi
+ \ifx #1\adadi \@autodottrue\fi
+ \ifx #1\tartibi \@autodottrue\fi
+ \ifx #1\Alph \@autodottrue\fi
+ \ifx #1\alph \@autodottrue\fi
+ \ifx #1\Roman \@autodottrue\fi
+ \ifx #1\roman \@autodottrue\fi
+ \ifx #1\@harfi \@autodottrue\fi
+ \ifx #1\@adadi \@autodottrue\fi
+ \ifx #1\@tartibi \@autodottrue\fi
+ \ifx #1\@Alph \@autodottrue\fi
+ \ifx #1\@alph \@autodottrue\fi
+ \ifx #1\@Roman \@autodottrue\fi
+ \ifx #1\@roman \@autodottrue\fi
+ \ifx #1\romannumeral \@autodottrue\fi
+ \fi
+ \@@maybeautodot
+}
+% \end{macrocode}
+% \iffalse
+%</scrartcl-xepersian.def>
+%<*scrbook-xepersian.def>
+%\fi
+% \section{File \texttt{scrbook-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{scrbook-xepersian.def}[2010/07/25 v0.2 adaptations for scrbook class]
+\renewcommand*\frontmatter{%
+ \if at twoside\cleardoubleoddpage\else\clearpage\fi
+ \@mainmatterfalse\pagenumbering{harfi}%
+}
+\renewcommand*{\thepart}{\@tartibi\c at part}
+\renewcommand*\appendix{\par%
+ \setcounter{chapter}{0}%
+ \setcounter{section}{0}%
+ \gdef\@chapapp{\appendixname}%
+ \gdef\thechapter{\@harfi\c at chapter}%
+ \csname appendixmore\endcsname
+}
+\renewcommand*{\@@maybeautodot}[1]{%
+ \ifx #1\@stop\let\@@maybeautodot\relax
+ \else
+ \ifx #1\harfi \@autodottrue\fi
+ \ifx #1\adadi \@autodottrue\fi
+ \ifx #1\tartibi \@autodottrue\fi
+ \ifx #1\Alph \@autodottrue\fi
+ \ifx #1\alph \@autodottrue\fi
+ \ifx #1\Roman \@autodottrue\fi
+ \ifx #1\roman \@autodottrue\fi
+ \ifx #1\@harfi \@autodottrue\fi
+ \ifx #1\@adadi \@autodottrue\fi
+ \ifx #1\@tartibi \@autodottrue\fi
+ \ifx #1\@Alph \@autodottrue\fi
+ \ifx #1\@alph \@autodottrue\fi
+ \ifx #1\@Roman \@autodottrue\fi
+ \ifx #1\@roman \@autodottrue\fi
+ \ifx #1\romannumeral \@autodottrue\fi
+ \fi
+ \@@maybeautodot
+}
+% \end{macrocode}
+% \iffalse
+%</scrbook-xepersian.def>
+%<*scrreprt-xepersian.def>
+%\fi
+% \section{File \texttt{scrreprt-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{scrreprt-xepersian.def}[2010/07/25 v0.2 adaptations for scrreprt class]
+\renewcommand*{\thepart}{\@tartibi\c at part}
+\renewcommand*\appendix{\par%
+ \setcounter{chapter}{0}%
+ \setcounter{section}{0}%
+ \gdef\@chapapp{\appendixname}%
+ \gdef\thechapter{\@harfi\c at chapter}%
+ \csname appendixmore\endcsname
+}
+\renewcommand*{\@@maybeautodot}[1]{%
+ \ifx #1\@stop\let\@@maybeautodot\relax
+ \else
+ \ifx #1\harfi \@autodottrue\fi
+ \ifx #1\adadi \@autodottrue\fi
+ \ifx #1\tartibi \@autodottrue\fi
+ \ifx #1\Alph \@autodottrue\fi
+ \ifx #1\alph \@autodottrue\fi
+ \ifx #1\Roman \@autodottrue\fi
+ \ifx #1\roman \@autodottrue\fi
+ \ifx #1\@harfi \@autodottrue\fi
+ \ifx #1\@adadi \@autodottrue\fi
+ \ifx #1\@tartibi \@autodottrue\fi
+ \ifx #1\@Alph \@autodottrue\fi
+ \ifx #1\@alph \@autodottrue\fi
+ \ifx #1\@Roman \@autodottrue\fi
+ \ifx #1\@roman \@autodottrue\fi
+ \ifx #1\romannumeral \@autodottrue\fi
+ \fi
+ \@@maybeautodot
+}
+% \end{macrocode}
+% \iffalse
+%</scrreprt-xepersian.def>
+%<*soul-xepersian.def>
+%\fi
+% \section{File \texttt{soul-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{soul-xepersian.def}[2018/12/12 v0.2 adaptations for soul package]
+\let\SOUL at tt@latin\SOUL at tt
+\newfontface{\SOUL at tt@nonlatin}{Times New Roman}
+\def\SOUL at tt{%
+ \if at nonlatin
+ \SOUL at tt@nonlatin
+ \else
+ \SOUL at tt@latin
+ \fi
+}
+\bidi at appto\resetlatinfont{%
+ \setbox\z@\hbox{\SOUL at tt-}%
+ \SOUL at ttwidth\wd\z@
+}
+\bidi at appto\setpersianfont{%
+ \setbox\z@\hbox{\SOUL at tt-}%
+ \SOUL at ttwidth\wd\z@
+}
+% \end{macrocode}
+% \iffalse
+%</soul-xepersian.def>
+%<*tikz.code-xepersian.def>
+%\fi
+% \section{File \texttt{tikz.code-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{tikz.code-xepersian.def}[2018/12/11 v0.1 adaptations for tikz.code.tex file]
+\bidi at patchcmd\tikz at finish{%
+ \begingroup
+ \tikz at options
+}{%
+ \begingroup
+ \@@textdigitfont at onfalse
+ \tikz at options
+}{}{}
+% \end{macrocode}
+% \iffalse
+%</tikz.code-xepersian.def>
+%<*tkz-linknodes-xepersian.def>
+%\fi
+% \section{File \texttt{tkz-linknodes-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{tkz-linknodes-xepersian.def}[2012/06/13 v0.1 adaptations for tkz-linknodes package]
+\renewcommand*{\@SetTab}{%
+ \let\@alph\@latinalph%
+ \ifnum \value{C at NumTab}>25\relax%
+ \setcounter{C at NumTab}{1}%
+ \else%
+ \stepcounter{C at NumTab}%
+ \fi%
+ \setcounter{C at NumGroup}{0}%
+ \newcommand*{\PrefixCurrentTab}{\alph{C at NumTab}}
+ \setboolean{B at FirstLink}{true}
+ \setboolean{B at NewGroup}{false}
+ \setcounter{C at NumGroup}{0}
+ \setcounter{C at CurrentGroup}{0}
+ \setcounter{NumC at Node}{0}
+ \setcounter{NumC at Stop}{0}
+ \setcounter{C at NextNode}{0}
+ \setcounter{C at CurrentStop}{0}
+ \setcounter{C at CurrentNode}{0}
+}%
+% \end{macrocode}
+% \iffalse
+%</tkz-linknodes-xepersian.def>
+%<*tocloft-xepersian.def>
+%\fi
+% \section{File \texttt{tocloft-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{tocloft-xepersian.def}[2010/07/25 v0.1 bilingual captions for tocloft package]
+\renewcommand*{\cftchapname}{\if at RTL فصل\else chapter\fi}
+\renewcommand*{\cftsecname}{\if at RTL قسمت\else section\fi}
+\renewcommand*{\cftsubsecname}{\if at RTL زیرقسمت\else subsection\fi}
+\renewcommand*{\cftsubsubsecname}{\if at RTL زیرزیرقسمت\else subsubsection\fi}
+\renewcommand*{\cftparaname}{\if at RTL پاراگراف\else paragraph\fi}
+\renewcommand*{\cftsubparaname}{\if at RTL زیرپاراگراف\else subparagraph\fi}
+\renewcommand*{\cftfigname}{\if at RTL شکل\else figure\fi}
+\renewcommand*{\cftsubfigname}{\if at RTL زیرشکل\else subfigure\fi}
+\renewcommand*{\cfttabname}{\if at RTL جدول\else table\fi}
+\renewcommand*{\cftsubtabname}{\if at RTL زیرجدول\else subtable\fi}
+% \end{macrocode}
+% \iffalse
+%</tocloft-xepersian.def>
+%<*varioref-xepersian.def>
+%\fi
+% \section{File \texttt{varioref-xepersian.def}}
+% \begin{macrocode}
+\ProvidesFile{varioref-xepersian.def}[2018/09/29 v0.1 bilingual captions for varioref package]
+\def\reftextfaceafter{%
+ \if at RTL
+در صفحه
+\reftextvario{مقابل}{بعد}%
+ \else
+ on the \reftextvario{facing}{next} page%
+ \fi
+}
+\def\reftextfacebefore{%
+ \if at RTL
+در صفحه
+\reftextvario{مقابل}{قبل}%
+ \else
+ on the \reftextvario{facing}{preceding} page%
+ \fi
+}
+\def\reftextafter{%
+ \if at RTL
+در صفحه
+\reftextvario{بعد}{بعد}%
+ \else
+ on the \reftextvario{following}{next} page%
+ \fi
+}
+\def\reftextbefore{%
+ \if at RTL
+در صفحه
+\reftextvario{قبل}{قبل}%
+ \else
+ on the \reftextvario{preceding}{previous} page%
+ \fi
+}
+\def\reftextcurrent{%
+ \if at RTL
+در
+\reftextvario{همین صفحه}{صفحه جاری}%
+ \else
+ on \reftextvario{this}{the current} page%
+ \fi
+}
+\def\reftextfaraway#1{%
+ \if at RTL
+در صفحه%
+~\pageref{#1}%
+ \else
+ on page~\pageref{#1}%
+ \fi
+}
+\def\reftextpagerange#1#2{%
+ \if at RTL
+در صفحههای%
+~\pageref{#1}--\pageref{#2}%
+ \else
+ on pages~\pageref{#1}--\pageref{#2}%
+ \fi
+}
+\def\reftextlabelrange#1#2{%
+ \if at RTL
+ \ref{#1} تا~\ref{#2}%
+ \else
+ \ref{#1} to~\ref{#2}%
+ \fi
+}
+% \end{macrocode}
+% \iffalse
+%</varioref-xepersian.def>
+%<*xepersian.sty>
+%\fi
+% \section{File \texttt{xepersian.sty}}
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\def\xepersian at version{23.0}
+\def\xepersiandate{2020/05/16}
+\ProvidesPackage{xepersian}[\xepersiandate\space v\xepersian at version\space
+Persian typesetting in XeLaTeX]
+\RequirePackage{fontspec}
+\RequirePackage{xepersian-persiancal}
+\RequirePackage{xepersian-mathsdigitspec}
+\RequirePackage{bidi}
+\edef\@xepersian at info{****************************************************^^J%
+* ^^J%
+* xepersian package (Persian for LaTeX, using XeTeX engine)^^J%
+* ^^J%
+* Description: The package supports Persian^^J%
+* typesetting, using fonts provided in the^^J%
+* distribution.^^J%
+* ^^J%
+* Copyright (c) 2008--2020 Vafa Khalighi^^J%
+* Copyright (c) 2018--2020 bidi-tex GitHub Organization^^J%
+* ^^J%
+* v\xepersian at version, \xepersiandate^^J%
+* ^^J%
+* License: LaTeX Project Public License, version^^J%
+* 1.3c or higher (your choice)^^J%
+* ^^J%
+* Location on CTAN: /macros/xetex/latex/xepersian^^J%
+* ^^J%
+* Issue tracker: https://github.com/persiantex/xepersian/issues^^J%
+* ^^J%
+****************************************************}
+\typeout{\@xepersian at info}
+\edef\xepersian at everyjob{\the\everyjob}
+\everyjob{\xepersian at everyjob\typeout{\@xepersian at info}}
+\newcommand*{\xepersianversion}
+ {\ensuremath\xepersian at version}
+\newcommand*{\IfxepersianPackageVersionLater}[1]{%
+ \ifdim\xepersian at version pt > #1 pt %
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi}
+\newcommand*{\IfxepersianPackageVersionBefore}[1]{%
+ \ifdim\xepersian at version pt < #1 pt %
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi}
+\newcommand*{\IfxepersianPackageVersion}[1]{%
+ \ifdim\xepersian at version pt = #1 pt %
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi}
+\def\prq{«}
+\def\plq{»}
+\def\xepersian at cmds@temp#1{%
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname xepersian@#1\endcsname\relax
+ \begingroup
+ \escapechar=-1 %
+ \edef\x{\expandafter\meaning\csname#1\endcsname}%
+ \def\y{#1}%
+ \def\z##1->{}%
+ \edef\y{\expandafter\z\meaning\y}%
+ \expandafter\endgroup
+ \ifx\x\y
+ \expandafter\def\csname xepersian@#1\expandafter\endcsname
+ \expandafter{%
+ \csname#1\endcsname
+ }%
+ \fi
+ \fi
+}%
+\xepersian at cmds@temp{shellescape}
+\newif\ifwritexviii
+\ifnum\xepersian at shellescape=1\relax
+ \writexviiitrue
+\else
+\writexviiifalse
+\fi
+\newfontscript{Persian}{arab}
+\newfontlanguage{Persian}{FAR}
+\ExplSyntaxOn
+
+\keys_define:nn {fontspec-opentype}
+ {
+ Ligatures / PersianTeX .code:n = { \tl_set:Nn \l__fontspec_mapping_tl {persian-tex-text} },
+ Ligatures / PersianTeXOff .code:n = { \tl_clear:N \l__fontspec_mapping_tl },
+ Ligatures / PersianTeXReset .code:n = { \tl_clear:N \l__fontspec_mapping_tl },
+ }
+
+\keys_define:nn {fontspec-aat}
+ {
+ Ligatures / PersianTeX .code:n =
+ {
+ \tl_set:Nn \l__fontspec_mapping_tl { persian-tex-text }
+ }
+ }
+
+\DeclareDocumentCommand \settextfont { O{} m O{} }
+ {
+ \__xepersian_main_settextfont:nn {#1,#3} {#2}
+ \ignorespaces
+ }
+\cs_new:Nn \__xepersian_main_settextfont:nn
+ {
+ \fontspec_set_family:Nnn \l__xepersian_persianfont_family_tl {Script=Persian,Ligatures=PersianTeX,#1} {#2}
+ \tl_set_eq:NN \rmdefault \l__xepersian_persianfont_family_tl
+ \use:x { \exp_not:n { \DeclareRobustCommand \persianfont }
+ {
+ \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl }
+ \exp_not:N \fontfamily { \l__xepersian_persianfont_family_tl }
+ \exp_not:N \selectfont
+ }
+ }
+ \str_if_eq:eeT {\familydefault} {\rmdefault}
+ { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl }
+ \__xepersian_settextfont_hook:nn {#1} {#2}
+ \normalfont
+ }
+
+\cs_set_eq:NN \__xepersian_settextfont_hook:nn \use_none:nn
+
+\DeclareDocumentCommand \settextdigitfont { O{} m O{} }
+ {
+ \__xepersian_main_settextdigitfont:nn {#1,#3} {#2}
+ \ignorespaces
+ }
+\cs_new:Nn \__xepersian_main_settextdigitfont:nn
+ {
+ \fontspec_set_family:Nnn \l__xepersian_textdigitfont_family_tl {Script=Persian,Ligatures=PersianTeX,#1} {#2}
+ \use:x
+ {
+ \exp_not:n { \DeclareRobustCommand \xepersian at textdigitfont }
+ {
+ \exp_not:N \fontfamily { \l__xepersian_textdigitfont_family_tl }
+ \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl }
+ \exp_not:N \selectfont
+ }
+ }
+ \__xepersian_settextdigitfont_hook:nn {#1} {#2}
+ \XeTeXinterchartoks \e at alloc@intercharclass at top \bidi at digits@charclass = {\xepersian@@start at switch@textdigitfont}
+ \XeTeXinterchartoks \bidi at digits@charclass \e at alloc@intercharclass at top = {\xepersian@@stop at switch@textdigitfont}
+ \XeTeXinterchartoks \z@ \bidi at digits@charclass = {\xepersian@@start at switch@textdigitfont}
+ \XeTeXinterchartoks \bidi at digits@charclass \z@ = {\xepersian@@stop at switch@textdigitfont}
+ \XeTeXinterchartoks \bidi at digits@charclass \bidi at sepmark@charclass = {\xepersian@@stop at switch@textdigitfont}
+ \XeTeXinterchartoks \bidi at sepmark@charclass \bidi at digits@charclass = {\DigitsDotDashInterCharToks\xepersian@@start at switch@textdigitfont}
+ \if at bidi@csundef{xepersian at D}{}{%
+ \XeTeXinterchartoks \xepersian at D \bidi at digits@charclass = {\xepersian@@start at switch@textdigitfont}
+ \XeTeXinterchartoks \bidi at digits@charclass \xepersian at D = {\xepersian@@stop at switch@textdigitfont}
+ \XeTeXinterchartoks \xepersian at L \bidi at digits@charclass = {\xepersian@@start at switch@textdigitfont}
+ \XeTeXinterchartoks \bidi at digits@charclass \xepersian at L = {\xepersian@@stop at switch@textdigitfont}
+ \XeTeXinterchartoks \xepersian at A \bidi at digits@charclass = {\xepersian@@start at switch@textdigitfont}
+ \XeTeXinterchartoks \bidi at digits@charclass \xepersian at A = {\xepersian@@stop at switch@textdigitfont}
+ \XeTeXinterchartoks \xepersian at R \bidi at digits@charclass = {\xepersian@@start at switch@textdigitfont}
+ \XeTeXinterchartoks \bidi at digits@charclass \xepersian at R = {\xepersian@@stop at switch@textdigitfont}
+ }
+ }
+
+\newcommand*{\xepersian@@start at switch@textdigitfont}{\ifx\f at family\ttdefault\else\if at nonlatin\if@@textdigitfont at on\bgroup\xepersian at textdigitfont\else\fi\fi\fi}
+\newcommand*{\xepersian@@stop at switch@textdigitfont}{\ifx\f at family\ttdefault\else\if at nonlatin\if@@textdigitfont at on\egroup\else\fi\fi\fi}
+
+\cs_set_eq:NN \__xepersian_settextdigitfont_hook:nn \use_none:nn
+
+\DeclareDocumentCommand \setdigitfont { O{} m O{} }
+ {
+ \__xepersian_main_settextdigitfont:nn {#1,#3} {#2}
+ \__xepersian_main_setmathdigitfont:nn {#1,#3} {#2}
+ \ignorespaces
+ }
+
+
+\DeclareDocumentCommand \setlatintextfont { O{} m O{} }
+ {
+ \__xepersian_main_setlatintextfont:nn {#1,#3} {#2}
+ \ignorespaces
+ }
+\cs_new:Nn \__xepersian_main_setlatintextfont:nn
+ {
+ \fontspec_set_family:Nnn \l__xepersian_latinfont_family_tl {Ligatures=TeX,#1} {#2}
+ \use:x { \exp_not:n { \DeclareRobustCommand \latinfont }
+ {
+ \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl }
+ \exp_not:N \fontfamily { \l__xepersian_latinfont_family_tl }
+ \exp_not:N \selectfont
+ }
+ }
+ \str_if_eq:eeT {\familydefault} {\rmdefault}
+ { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl }
+ \__xepersian_setlatintextfont_hook:nn {#1} {#2}
+ \normalfont
+ }
+
+\cs_set_eq:NN \__xepersian_setlatintextfont_hook:nn \use_none:nn
+
+\tl_set_eq:NN \setlatinsansfont \setsansfont
+\tl_set_eq:NN \setlatinmonofont \setmonofont
+
+\DeclareDocumentCommand \defpersianfont { m O{} m O{} }
+ {
+ \__xepersian_main_defpersianfont:NnnN #1 {#2,#4} {#3}
+ \NewDocumentCommand
+ }
+\DeclareDocumentCommand \redefpersianfont { m O{} m O{} }
+ {
+ \__xepersian_main_defpersianfont:NnnN #1 {#2,#4} {#3}
+ \RenewDocumentCommand
+ }
+\cs_new:Nn \__xepersian_main_defpersianfont:NnnN
+ {
+ \fontspec_set_family:cnn { l__xepersian_ \cs_to_str:N #1 _family_tl } {Script=Persian,Ligatures=PersianTeX,#2} {#3}
+ \use:x
+ {
+ \exp_not:N #4 \exp_not:N #1 {}
+ {
+ \exp_not:N \fontfamily { \use:c {l__xepersian_ \cs_to_str:N #1 _family_tl } }
+ \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl }
+ \exp_not:N \selectfont
+ }
+ }
+ }
+
+\DeclareDocumentCommand \deflatinfont { m O{} m O{} }
+ {
+ \__xepersian_main_deflatinfont:NnnN #1 {#2,#4} {#3}
+ \NewDocumentCommand
+ }
+\DeclareDocumentCommand \redeflatinfont { m O{} m O{} }
+ {
+ \__xepersian_main_deflatinfont:NnnN #1 {#2,#4} {#3}
+ \RenewDocumentCommand
+ }
+\cs_new:Nn \__xepersian_main_deflatinfont:NnnN
+ {
+ \fontspec_set_family:cnn { l__xepersian_ \cs_to_str:N #1 _family_tl } {Ligatures=TeX,#2} {#3}
+ \use:x
+ {
+ \exp_not:N #4 \exp_not:N #1 {}
+ {
+ \exp_not:N \fontfamily { \use:c {l__xepersian_ \cs_to_str:N #1 _family_tl } }
+ \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl }
+ \exp_not:N \selectfont
+ }
+ }
+ }
+
+\newcommand\persiansfdefault{}
+\newcommand\persianttdefault{}
+\newcommand\iranicdefault{}
+\newcommand\navardefault{}
+\newcommand\pookdefault{}
+\newcommand\sayehdefault{}
+\DeclareRobustCommand\persiansffamily
+ {\not at math@alphabet\persiansffamily\mathpersiansf
+ \fontfamily\persiansfdefault\selectfont}
+\DeclareRobustCommand\persianttfamily
+ {\not at math@alphabet\persianttfamily\mathpersiantt
+ \fontfamily\persianttdefault\selectfont}
+\DeclareRobustCommand\iranicfamily
+ {\not at math@alphabet\iranicfamily\mathiranic
+ \fontfamily\iranicdefault\selectfont}
+\DeclareRobustCommand\navarfamily
+ {\not at math@alphabet\navarfamily\mathnavar
+ \fontfamily\navardefault\selectfont}
+\DeclareRobustCommand\pookfamily
+ {\not at math@alphabet\pookfamily\mathpook
+ \fontfamily\pookdefault\selectfont}
+\DeclareRobustCommand\sayehfamily
+ {\not at math@alphabet\sayehfamily\mathsayeh
+ \fontfamily\sayehdefault\selectfont}
+\DeclareTextFontCommand{\textpersiansf}{\persiansffamily}
+\DeclareTextFontCommand{\textpersiantt}{\persianttfamily}
+\DeclareTextFontCommand{\textiranic}{\iranicfamily}
+\DeclareTextFontCommand{\textnavar}{\navarfamily}
+\DeclareTextFontCommand{\textpook}{\pookfamily}
+\DeclareTextFontCommand{\textsayeh}{\sayehfamily}
+
+\DeclareDocumentCommand \setpersiansansfont { O{} m O{} }
+ {
+ \__xepersian_main_setpersiansansfont:nn {#1,#3} {#2}
+ \ignorespaces
+ }
+\cs_new:Nn \__xepersian_main_setpersiansansfont:nn
+ {
+ \fontspec_set_family:Nnn \l__xepersian_persiansffamily_family_tl {Script=Persian,Ligatures=PersianTeX,#1} {#2}
+ \tl_set_eq:NN \persiansfdefault \l__xepersian_persiansffamily_family_tl
+ \use:x { \exp_not:n { \DeclareRobustCommand \persiansffamily }
+ {
+ \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl }
+ \exp_not:N \fontfamily { \l__xepersian_persiansffamily_family_tl }
+ \exp_not:N \selectfont
+ }
+ }
+ \str_if_eq:eeT {\familydefault} {\persiansfdefault}
+ { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl }
+ \__xepersian_setpersiansansfont_hook:nn {#1} {#2}
+ \normalfont
+ }
+
+\cs_set_eq:NN \__xepersian_setpersiansansfont_hook:nn \use_none:nn
+
+\DeclareDocumentCommand \setpersianmonofont { O{} m O{} }
+ {
+ \__xepersian_main_setpersianmonofont:nn {#1,#3} {#2}
+ \ignorespaces
+ }
+\cs_new:Nn \__xepersian_main_setpersianmonofont:nn
+ {
+ \fontspec_set_family:Nnn \l__xepersian_persianttfamily_family_tl {Script=Persian,Ligatures=PersianTeX,#1} {#2}
+ \tl_set_eq:NN \persianttdefault \l__xepersian_persianttfamily_family_tl
+ \use:x { \exp_not:n { \DeclareRobustCommand \persianttfamily }
+ {
+ \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl }
+ \exp_not:N \fontfamily { \l__xepersian_persianttfamily_family_tl }
+ \exp_not:N \selectfont
+ }
+ }
+ \str_if_eq:eeT {\familydefault} {\persianttdefault}
+ { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl }
+ \__xepersian_setpersianmonofont_hook:nn {#1} {#2}
+ \normalfont
+ }
+
+\cs_set_eq:NN \__xepersian_setpersianmonofont_hook:nn \use_none:nn
+
+\DeclareDocumentCommand \setnavarfont { O{} m O{} }
+ {
+ \__xepersian_main_setnavarfont:nn {#1,#3} {#2}
+ \ignorespaces
+ }
+\cs_new:Nn \__xepersian_main_setnavarfont:nn
+ {
+ \fontspec_set_family:Nnn \l__xepersian_navarfamily_family_tl {Script=Persian,Ligatures=PersianTeX,#1} {#2}
+ \tl_set_eq:NN \navardefault \l__xepersian_navarfamily_family_tl
+ \use:x { \exp_not:n { \DeclareRobustCommand \navarfamily }
+ {
+ \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl }
+ \exp_not:N \fontfamily { \l__xepersian_navarfamily_family_tl }
+ \exp_not:N \selectfont
+ }
+ }
+ \str_if_eq:eeT {\familydefault} {\navardefault}
+ { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl }
+ \__xepersian_setnavarfont_hook:nn {#1} {#2}
+ \normalfont
+ }
+
+\cs_set_eq:NN \__xepersian_setnavarfont_hook:nn \use_none:nn
+
+\DeclareDocumentCommand \setpookfont { O{} m O{} }
+ {
+ \__xepersian_main_setpookfont:nn {#1,#3} {#2}
+ \ignorespaces
+ }
+\cs_new:Nn \__xepersian_main_setpookfont:nn
+ {
+ \fontspec_set_family:Nnn \l__xepersian_pookfamily_family_tl {Script=Persian,Ligatures=PersianTeX,#1} {#2}
+ \tl_set_eq:NN \pookdefault \l__xepersian_pookfamily_family_tl
+ \use:x { \exp_not:n { \DeclareRobustCommand \pookfamily }
+ {
+ \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl }
+ \exp_not:N \fontfamily { \l__xepersian_pookfamily_family_tl }
+ \exp_not:N \selectfont
+ }
+ }
+ \str_if_eq:eeT {\familydefault} {\pookdefault}
+ { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl }
+ \__xepersian_setpookfont_hook:nn {#1} {#2}
+ \normalfont
+ }
+
+\cs_set_eq:NN \__xepersian_setpookfont_hook:nn \use_none:nn
+
+\DeclareDocumentCommand \setsayehfont { O{} m O{} }
+ {
+ \__xepersian_main_setsayehfont:nn {#1,#3} {#2}
+ \ignorespaces
+ }
+\cs_new:Nn \__xepersian_main_setsayehfont:nn
+ {
+ \fontspec_set_family:Nnn \l__xepersian_sayehfamily_family_tl {Script=Persian,Ligatures=PersianTeX,#1} {#2}
+ \tl_set_eq:NN \sayehdefault \l__xepersian_sayehfamily_family_tl
+ \use:x { \exp_not:n { \DeclareRobustCommand \sayehfamily }
+ {
+ \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl }
+ \exp_not:N \fontfamily { \l__xepersian_sayehfamily_family_tl }
+ \exp_not:N \selectfont
+ }
+ }
+ \str_if_eq:eeT {\familydefault} {\sayehdefault}
+ { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl }
+ \__xepersian_setsayehfont_hook:nn {#1} {#2}
+ \normalfont
+ }
+
+\cs_set_eq:NN \__xepersian_setsayehfont_hook:nn \use_none:nn
+
+\DeclareDocumentCommand \setiranicfont { O{} m O{} }
+ {
+ \__xepersian_main_setiranicfont:nn {#1,#3} {#2}
+ \ignorespaces
+ }
+\cs_new:Nn \__xepersian_main_setiranicfont:nn
+ {
+ \fontspec_set_family:Nnn \l__xepersian_iranicfamily_family_tl {Script=Persian,Ligatures=PersianTeX,#1} {#2}
+ \tl_set_eq:NN \iranicdefault \l__xepersian_iranicfamily_family_tl
+ \use:x { \exp_not:n { \DeclareRobustCommand \iranicfamily }
+ {
+ \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl }
+ \exp_not:N \fontfamily { \l__xepersian_iranicfamily_family_tl }
+ \exp_not:N \selectfont
+ }
+ }
+ \str_if_eq:eeT {\familydefault} {\iranicdefault}
+ { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl }
+ \__xepersian_setiranicfont_hook:nn {#1} {#2}
+ \normalfont
+ }
+
+\cs_set_eq:NN \__xepersian_setiranicfont_hook:nn \use_none:nn
+
+\ExplSyntaxOff
+\def\resetlatinfont{%
+\let\@xepersian@@fontsize at scale\xepersian@@fontsize at scale%
+\let\@xepersian@@baselineskip at scale\xepersian@@baselineskip at scale%
+\def\xepersian@@fontsize at scale{%
+ \strip at pt\dimexpr 1pt * \dimexpr
+ \xepersian@@latin at fontsize@scale pt\relax
+ / \dimexpr \@xepersian@@fontsize at scale pt\relax\relax
+}%
+\def\xepersian@@baselineskip at scale{%
+ \strip at pt\dimexpr 1pt * \dimexpr
+ \xepersian@@latin at baselineskip@scale pt\relax
+ / \dimexpr \@xepersian@@baselineskip at scale pt\relax\relax
+}%
+\@nonlatinfalse%
+\let\normalfont\latinfont%
+\let\reset at font\normalfont%
+\latinfont%
+\fontsize\f at size\f at baselineskip%
+\selectfont%
+\let\xepersian@@fontsize at scale\xepersian@@latin at fontsize@scale%
+\let\xepersian@@baselineskip at scale\xepersian@@latin at baselineskip@scale%
+}
+\def\setpersianfont{%
+\let\@xepersian@@fontsize at scale\xepersian@@fontsize at scale%
+\let\@xepersian@@baselineskip at scale\xepersian@@baselineskip at scale%
+\let\xepersian@@fontsize at scale\@ne%
+\let\xepersian@@baselineskip at scale\@ne%
+\@nonlatintrue%
+\let\normalfont\persianfont%
+\let\reset at font\normalfont%
+\persianfont%
+\fontsize\f at size\f at baselineskip%
+\selectfont%
+\let\xepersian@@fontsize at scale\@xepersian@@fontsize at scale%
+\let\xepersian@@baselineskip at scale\@xepersian@@baselineskip at scale%
+}
+\bidi at newrobustcmd*{\lr}[1]{\LRE{\resetlatinfont#1}}
+\bidi at newrobustcmd*{\rl}[1]{\RLE{\setpersianfont#1}}
+\def\latin{\LTR\LatinAlphs\@RTL at footnotefalse\resetlatinfont}
+\def\endlatin{\endLTR}
+\newenvironment{latin*}{\latin
+ \everypar{%
+ {\setbox\z@\lastbox
+ \ifvoid\z@
+ \kern-\parindent
+ \fi}%
+ }%
+}{\endlatin\@endpetrue}
+\def\persian{\RTL\PersianAlphs\@RTL at footnotetrue\setpersianfont}
+\def\endpersian{\endRTL}
+\newenvironment{persian*}{\persian
+ \everypar{%
+ {\setbox\z@\lastbox
+ \ifvoid\z@
+ \kern-\parindent
+ \fi}%
+ }%
+}{\endpersian\@endpetrue}
+\newenvironment{latinitems}{\begin{LTRitems}\LatinAlphs\@RTL at footnotefalse\resetlatinfont}{\end{LTRitems}}
+\newenvironment{persianitems}{\begin{RTLitems}\PersianAlphs\@RTL at footnotetrue\setpersianfont}{\end{RTLitems}}
+\let\originaltoday=\today
+\def\latintoday{\lr{\originaltoday}}
+\def\today{\rl{\persiantoday}}
+\def \@LTRmarginparreset {%
+ \reset at font
+ \resetlatinfont
+ \normalsize
+ \@minipagetrue
+ \everypar{\@minipagefalse\everypar{}\beginL}%
+}
+\DeclareRobustCommand\Latincite{%
+ \@ifnextchar [{\@tempswatrue\@Latincitex}{\@tempswafalse\@Latincitex[]}}
+\def\@Latincitex[#1]#2{\leavevmode
+ \let\@citea\@empty
+ \@cite{\lr{\@for\@citeb:=#2\do
+ {\@citea\def\@citea{,\penalty\@m\ }%
+ \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+ \if at filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi
+ \@ifundefined{b@\@citeb}{\hbox{\reset at font\bfseries ?}%
+ \G at refundefinedtrue
+ \@latex at warning
+ {Citation `\@citeb' on page \thepage \space undefined}}%
+ {\@cite at ofmt{\csname b@\@citeb\endcsname}}}}}{#1}}
+
+\renewcommand*{\bidi at font@@outputpage}{\if at RTLmain\setpersianfont\else\resetlatinfont\fi}
+
+\newif\if at xepersian@@computeautoilg
+\newcount\xepersian at tcl
+\newdimen\xepersian at ilg
+\newdimen\xepersian at strutilg
+\chardef\f at ur=4
+\newcommand*{\xepersian at computeautoilg}{% compute the interline glue
+ \xepersian at tcl=1536\xepersian at ilg\z@\xepersian at strutilg\z@
+ \loop
+ \iffontchar\font\xepersian at tcl
+ \ifdim\XeTeXglyphbounds\tw@ \the\XeTeXcharglyph\xepersian at tcl>\z@
+ \ifdim\XeTeXglyphbounds\tw@ \the\XeTeXcharglyph\xepersian at tcl>\xepersian at ilg
+ \xepersian at ilg=\XeTeXglyphbounds\tw@ \the\XeTeXcharglyph\xepersian at tcl
+ \fi
+ \else
+ \ifdim\XeTeXglyphbounds\tw@ \the\XeTeXcharglyph\xepersian at tcl<\z@
+ \ifdim-\XeTeXglyphbounds\tw@ \the\XeTeXcharglyph\xepersian at tcl>\xepersian at ilg
+ \xepersian at ilg=-\XeTeXglyphbounds\tw@ \the\XeTeXcharglyph\xepersian at tcl
+ \fi
+ \fi
+ \fi
+ \ifdim\XeTeXglyphbounds\f at ur \the\XeTeXcharglyph\xepersian at tcl>\z@
+ \ifdim\XeTeXglyphbounds\f at ur \the\XeTeXcharglyph\xepersian at tcl>\xepersian at strutilg
+ \xepersian at strutilg=\XeTeXglyphbounds\f at ur \the\XeTeXcharglyph\xepersian at tcl
+ \fi
+ \else
+ \ifdim\XeTeXglyphbounds\f at ur \the\XeTeXcharglyph\xepersian at tcl<\z@
+ \ifdim-\XeTeXglyphbounds\f at ur \the\XeTeXcharglyph\xepersian at tcl>\xepersian at strutilg
+ \xepersian at strutilg=-\XeTeXglyphbounds\f at ur \the\XeTeXcharglyph\xepersian at tcl
+ \fi
+ \fi
+ \fi
+ \fi
+ \advance\xepersian at tcl\@ne
+ \ifnum\xepersian at tcl<1792\repeat
+ \advance\xepersian at strutilg\xepersian at ilg
+% \ifdim\xepersian at strutilg>\baselineskip
+% \PackageInfo{xepersian}{character with height+depth greater than current baselineskip found in font}
+% \PackageInfo{xepersian}{baselineskip changed to that height+depth!}
+% \linespread{\strip at pt\dimexpr 1pt * \xepersian at strutilg / \baselineskip\relax}
+% \selectfont
+% \fi
+}
+
+\newif\if@@textdigitfont at on
+
+\newcommand{\TextDigitFontOn}{\@@textdigitfont at ontrue}
+\newcommand{\TextDigitFontOff}{\@@textdigitfont at onfalse}
+
+\TextDigitFontOn
+
+\newcommand*\xepersian at setlength[4]{%
+ \ifdim #2<\ifdim #2=\z@ \z@ \else \p@\fi
+ \ifdim #3<\ifdim #3=\z@ \z@ \else \p@\fi
+ \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi
+ \setlength{#1}{\p@ \@plus\p@ \@minus\p@}%
+ \else
+ \setlength{#1}{\p@ \@plus\p@ \@minus#4}%
+ \fi
+ \else
+ \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi
+ \setlength{#1}{\p@ \@plus#3 \@minus\p@}%
+ \else
+ \setlength{#1}{\p@ \@plus#3 \@minus#4}%
+ \fi
+ \fi
+ \else
+ \ifdim #3<\ifdim #3=\z@ \z@ \else \p@\fi
+ \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi
+ \setlength{#1}{#2 \@plus\p@ \@minus\p@}%
+ \else
+ \setlength{#1}{#2 \@plus\p@ \@minus#4}%
+ \fi
+ \else
+ \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi
+ \setlength{#1}{#2 \@plus#3 \@minus\p@}%
+ \else
+ \setlength{#1}{#2 \@plus#3 \@minus#4}%
+ \fi
+ \fi
+ \fi
+}
+
+\newcommand*{\setfontsize}[2][1.2\@tempdima]{%
+ \@defaultunits\@tempdima#2pt\relax\@nnil
+ \setlength{\@tempdimc}{\@tempdima}%
+ \addtolength{\@tempdimc}{-10\p@}%
+ \edef\@ptsize{\strip at pt\@tempdimc}%
+ \@defaultunits\@tempdimb#1pt\relax\@nnil
+ \setlength{\@tempdimc}{\dimexpr (100\@tempdimb / \@tempdima * \p@)}%
+ \edef\@tempb{\the\@tempdimc}%
+ \setlength{\@tempdimc}{\@tempdima}%
+ \def\@tempa##1##2##3##4##5\@nnil{\def##1{##2.##3##4}}%
+ \expandafter\@tempa\expandafter\@tempb\@tempb\@nnil%
+ \xepersian at setlength{\abovedisplayskip}%
+ {.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}%
+ \xepersian at setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}%
+ \xepersian at setlength{\belowdisplayshortskip}%
+ {.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}%
+ \setlength{\belowdisplayskip}{\abovedisplayskip}%
+ \edef\normalsize{%
+ \noexpand\@setfontsize\noexpand\normalsize
+ {\the\@tempdima}{\the\@tempdimb}%
+ \abovedisplayskip \the\abovedisplayskip
+ \abovedisplayshortskip \the\abovedisplayshortskip
+ \belowdisplayskip \the\belowdisplayskip
+ \belowdisplayshortskip \the\belowdisplayshortskip
+ \let\noexpand\@listi\noexpand\@listI
+ }%
+ \setlength{\@tempdima}{0.9125\@tempdimc}%
+ \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \xepersian at setlength{\abovedisplayskip}%
+ {.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}%
+ \xepersian at setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}%
+ \xepersian at setlength{\belowdisplayshortskip}%
+ {.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}%
+ \setlength{\belowdisplayskip}{\abovedisplayskip}%
+ \edef\small{%
+ \noexpand\@setfontsize\noexpand\small
+ {\the\@tempdima}{\the\@tempdimb}%
+ \abovedisplayskip \the\abovedisplayskip
+ \abovedisplayshortskip \the\abovedisplayshortskip
+ \belowdisplayskip \the\belowdisplayskip
+ \belowdisplayshortskip \the\belowdisplayshortskip
+ \let\noexpand\@listi\noexpand\@listi at small
+ }%
+ \setlength{\@tempdima}{.83334\@tempdimc}%
+ \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \xepersian at setlength{\abovedisplayskip}%
+ {.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}%
+ \xepersian at setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}%
+ \xepersian at setlength{\belowdisplayshortskip}%
+ {.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}%
+ \setlength{\belowdisplayskip}{\abovedisplayskip}%
+ \edef\footnotesize{%
+ \noexpand\@setfontsize\noexpand\footnotesize
+ {\the\@tempdima}{\the\@tempdimb}%
+ \abovedisplayskip \the\abovedisplayskip
+ \abovedisplayshortskip \the\abovedisplayshortskip
+ \belowdisplayskip \the\belowdisplayskip
+ \belowdisplayshortskip \the\belowdisplayshortskip
+ \let\noexpand\@listi\noexpand\@listi at footnotesize
+ }%
+ \setlength{\@tempdima}{.66667\@tempdimc}%
+ \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \edef\scriptsize{%
+ \noexpand\@setfontsize\noexpand\scriptsize
+ {\the\@tempdima}{\the\@tempdimb}%
+ }%
+ \setlength{\@tempdima}{.5\@tempdimc}%
+ \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \edef\tiny{%
+ \noexpand\@setfontsize\noexpand\tiny
+ {\the\@tempdima}{\the\@tempdimb}%
+ }%
+ \setlength{\@tempdima}{1.2\@tempdimc}%
+ \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \edef\large{%
+ \noexpand\@setfontsize\noexpand\large
+ {\the\@tempdima}{\the\@tempdimb}%
+ }%
+ \setlength{\@tempdima}{1.44\@tempdimc}%
+ \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \edef\Large{%
+ \noexpand\@setfontsize\noexpand\Large
+ {\the\@tempdima}{\the\@tempdimb}%
+ }%
+ \setlength{\@tempdima}{1.728\@tempdimc}%
+ \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \edef\LARGE{%
+ \noexpand\@setfontsize\noexpand\LARGE
+ {\the\@tempdima}{\the\@tempdimb}%
+ }%
+ \setlength{\@tempdima}{2.074\@tempdimc}%
+ \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \edef\huge{%
+ \noexpand\@setfontsize\noexpand\huge
+ {\the\@tempdima}{\the\@tempdimb}%
+ }%
+ \setlength{\@tempdima}{2.488\@tempdimc}%
+ \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \edef\Huge{%
+ \noexpand\@setfontsize\noexpand\Huge
+ {\the\@tempdima}{\the\@tempdimb}%
+ }%
+ \normalsize
+ \setlength{\@tempdimb}{\f at baselineskip}%
+ \xepersian at setlength{\parsep}%
+ {.3333\@tempdimb}{.1667\@tempdimb}{.0833\@tempdimb}%
+ \xepersian at setlength{\topsep}%
+ {.6667\@tempdimb}{.1667\@tempdimb}{.3333\@tempdimb}%
+ \@tempswafalse
+ \begingroup
+ \def\@list at extra{\aftergroup\@tempswatrue}%
+ \csname @listi\endcsname
+ \endgroup
+ \edef\@listi{\leftmargin\leftmargini
+ \topsep \the\topsep
+ \parsep \the\parsep
+ \itemsep \parsep
+ \if at tempswa\noexpand\@list at extra\fi
+ }%
+ \let\@listI\@listi
+ \xepersian at setlength{\parsep}%
+ {.1667\@tempdimb}{.0833\@tempdimb}{.0833\@tempdimb}%
+ \xepersian at setlength{\topsep}%
+ {.3333\@tempdimb}{.1667\@tempdimb}{.1667\@tempdimb}%
+ \@tempswafalse
+ \begingroup
+ \def\@list at extra{\aftergroup\@tempswatrue}%
+ \csname @listi\endcsname
+ \endgroup
+ \edef\@listi at small{\leftmargin\leftmargini
+ \topsep \the\topsep
+ \parsep \the\parsep
+ \itemsep \parsep
+ \if at tempswa\noexpand\@list at extra\fi
+ }%
+ \xepersian at setlength{\parsep}%
+ {.125\@tempdimb}{.0625\@tempdimb}{.0625\@tempdimb}%
+ \xepersian at setlength{\topsep}%
+ {.25\@tempdimb}{.125\@tempdimb}{.125\@tempdimb}
+ \@tempswafalse
+ \begingroup
+ \def\@list at extra{\aftergroup\@tempswatrue}%
+ \csname @listi\endcsname
+ \endgroup
+ \edef\@listi at footnotesize{\leftmargin\leftmargini
+ \topsep \the\topsep
+ \parsep \the\parsep
+ \itemsep \parsep
+ \if at tempswa\noexpand\@list at extra\fi
+ }%
+ \xepersian at setlength{\parsep}%
+ {.1667\@tempdimb}{.0833\@tempdimb}{.0833\@tempdimb}%
+ \xepersian at setlength{\topsep}%
+ {.3333\@tempdimb}{.1667\@tempdimb}{.0833\@tempdimb}%
+ \@tempswafalse
+ \begingroup
+ \def\@list at extra{\aftergroup\@tempswatrue}%
+ \csname @listii\endcsname
+ \endgroup
+ \edef\@listii{\leftmargin\leftmarginii
+ \labelwidth=\dimexpr \leftmargin-\labelsep
+ \topsep \the\topsep
+ \parsep \the\parsep
+ \itemsep \parsep
+ \if at tempswa\noexpand\@list at extra\fi
+ }%
+ \xepersian at setlength{\topsep}%
+ {.1667\@tempdimb}{.0833\@tempdimb}{.0833\@tempdimb}%
+ \setlength{\partopsep}{\z@ \@plus\z@ \@minus\p@}%
+ \@tempswafalse
+ \begingroup
+ \def\@list at extra{\aftergroup\@tempswatrue}%
+ \csname @listiii\endcsname
+ \endgroup
+ \edef\@listiii{\leftmargin\leftmarginiii
+ \labelwidth=\dimexpr \leftmargin-\labelsep
+ \topsep \the\topsep
+ \parsep \z@
+ \partopsep \the\partopsep
+ \itemsep \topsep
+ \if at tempswa\noexpand\@list at extra\fi
+ }%
+ \@tempswafalse
+ \begingroup
+ \def\@list at extra{\aftergroup\@tempswatrue}%
+ \csname @listiv\endcsname
+ \endgroup
+ \edef\@listiv{\leftmargin\leftmarginiv
+ \labelwidth=\dimexpr \leftmargin-\labelsep\relax
+ \if at tempswa\noexpand\@list at extra\fi
+ }%
+ \@tempswafalse
+ \begingroup
+ \def\@list at extra{\aftergroup\@tempswatrue}%
+ \csname @listv\endcsname
+ \endgroup
+ \edef\@listv{\leftmargin\leftmarginv
+ \labelwidth=\dimexpr \leftmargin-\labelsep\relax
+ \if at tempswa\noexpand\@list at extra\fi
+ }%
+ \@tempswafalse
+ \begingroup
+ \def\@list at extra{\aftergroup\@tempswatrue}%
+ \csname @listvi\endcsname
+ \endgroup
+ \edef\@listvi{\leftmargin\leftmarginvi
+ \labelwidth=\dimexpr \leftmargin-\labelsep\relax
+ \if at tempswa\noexpand\@list at extra\fi
+ }%
+ \@listi
+ \setlength{\@tempdimb}{\f at baselineskip}%
+ \setlength{\footnotesep}{.555\@tempdimb}%
+ \xepersian at setlength{\skip\footins}%
+ {.75\@tempdimb}{.3333\@tempdimb}{.1667\@tempdimb}%
+ \xepersian at setlength{\floatsep}%
+ {\@tempdimb}{.1667\@tempdimb}{.1667\@tempdimb}%
+ \xepersian at setlength{\textfloatsep}%
+ {1.6667\@tempdimb}{.1667\@tempdimb}{.3333\@tempdimb}%
+ \setlength{\intextsep}{\floatsep}%
+ \setlength{\dblfloatsep}{\floatsep}%
+ \setlength{\dbltextfloatsep}{\textfloatsep}%
+ \setlength{\@fptop}{\z@ \@plus 1fil}%
+ \setlength{\@fpsep}{.6667\@tempdimb \@plus 2fil}%
+ \setlength{\@fpbot}{\@fptop}%
+ \setlength{\@dblfptop}{\@fptop}%
+ \setlength{\@dblfpsep}{\@fpsep}%
+ \setlength{\@dblfpbot}{\@fptop}%
+ \xepersian at setlength{\partopsep}{.2\@tempdimb}{.1\@tempdimb}{.1\@tempdimb}%
+}
+
+\renewcommand*{\@bidi at logo@}{%
+ \@bidi at logo@hb at xt@columnwidth
+ {\hss\bfseries
+حروفچینی شده با
+ \textsf{\XePersian}\quad\@bidi at logo{xepersian-logo.pdf}}}
+
+\renewcommand*{\@bidi at pdfcreator}{%
+ The xepersian package, v\xepersian at version, \xepersiandate
+}
+
+\newcommand*{\@xepersian at pdfcustomproperties}{%
+ This is the xepersian package, Version \xepersian at version,
+ Released May 16, 2020.
+}
+
+\newcommand\twocolumnstableofcontents{%
+\if at bidi@csundef{multi at column@out}{%
+\PackageError{xepersian}{Oops! you should load multicol package before xepersian package for being able to use this command}{}}{%
+ \begin{multicols}{2}[\section*{\contentsname}]%
+ \small
+ \@starttoc{toc}%
+ \end{multicols}}}
+\bidi at newrobustcmd*{\XePersian}{\leavevmode$\smash{\hbox{X\lower.5ex
+ \hbox{\kern-.125em\bidi at reflect@box{E}}Persian}}$}
+\def\figurename{\if at RTL شکل\else Figure\fi}
+\def\tablename{\if at RTL جدول\else Table\fi}
+\def\contentsname{\if at RTL فهرست مطالب\else Contents\fi}
+\def\listfigurename{\if at RTL فهرست تصاویر\else List of Figures\fi}
+\def\listtablename{\if at RTL فهرست جداول\else List of Tables\fi}
+\def\appendixname{\if at RTL پیوست\else Appendix\fi}
+\def\indexname{\if at RTL نمایه\else Index\fi}
+\def\refname{\if at RTL مراجع\else References\fi}
+\def\abstractname{\if at RTL چکیده\else Abstract\fi}
+\def\partname{\if at RTL بخش\else Part\fi}
+\def\datename{\if at RTL تاریخ:\else Date:\fi}
+\def\@@and{\if at RTL و\else and\fi}
+\def\bibname{\if at RTL کتابنامه\else Bibliography\fi}
+\def\chaptername{\if at RTL فصل\else Chapter\fi}
+\def\ccname{\if at RTL رونوشت\else cc\fi}
+\def\enclname{\if at RTL پیوست\else encl\fi}
+\def\pagename{\if at RTL صفحه\else Page\fi}
+\def\headtoname{\if at RTL به\else To\fi}
+\def\proofname{\if at RTL اثبات\else Proof\fi}
+\def\@Abjad#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 غ%
+ \else\@ctrerr\fi}
+\def\Abjad#1{\expandafter\@Abjad\csname c@#1\endcsname}
+\let\Abjadnumeral\@Abjad
+\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\harfi#1{\expandafter\@harfi\csname c@#1\endcsname}
+\let\harfinumeral\@harfi
+\newcommand{\adadi}[1]{%
+\expandafter\@adadi\csname c@#1\endcsname%
+}
+\newcommand{\@adadi}[1]{%
+\xepersian at numberstring{#1}\xepersian at yekanii{صفر}{}%
+}
+\let\adadinumeral\@adadi%
+\def\xepersian at numberoutofrange#1#2{%
+\PackageError{xepersian}{The number `#1' is too large %
+to be formatted using xepersian}{The largest possible %
+number is 999,999,999.}%
+}
+\def\xepersian at numberstring#1#2#3#4{%
+\ifnum\number#1<\@ne%
+#3%
+\else\ifnum\number#1<1000000000 %
+\expandafter\xepersian at adadi\expandafter{\number#1}#2%
+\else%
+\xepersian at numberoutofrange{#1}{#4}%
+\fi\fi%
+}
+\def\xepersian at adadi#1#2{%
+\expandafter\xepersian@@adadi%
+\ifcase%
+\ifnum#1<10 1%
+\else\ifnum#1<100 2%
+\else\ifnum#1<\@m 3%
+\else\ifnum#1<\@M 4%
+\else\ifnum#1<100000 5%
+\else\ifnum#1<1000000 6%
+\else\ifnum#1<10000000 7%
+\else\ifnum#1<100000000 8%
+\else9%
+\fi\fi\fi\fi\fi\fi\fi\fi %
+\or00000000#1% case 1: Add 8 leading zeros
+\or0000000#1% case 2: Add 7 leading zeros
+\or000000#1% case 3: Add 6 leading zeros
+\or00000#1% case 4: Add 5 leading zeros
+\or0000#1% case 5: Add 4 leading zeros
+\or000#1% case 6: Add 3 leading zeros
+\or00#1% case 7: Add 2 leading zeros
+\or0#1% case 8: Add 1 leading zero
+\or#1% case 9: Add no leading zeros
+\or%
+\@nil#2%
+\fi%
+}
+\def\xepersian@@adadi#1#2#3#4#5#6#7\or#8\@nil#9{%
+\ifnum#1#2#3>\z@
+\xepersian at milyoongan#1#2#3%
+\ifnum#7>\z@\ifnum#4#5#6>\z@\ و \else\ و \fi\else\ifnum#4#5#6>\z@\ و \fi\fi%
+\fi%
+\ifnum#4#5#6>\z@%
+\xepersian at sadgan#4#5#6{#1#2#3}{#4#5}\xepersian at yekani%
+\ifnum#4#5#6>\@ne\fi%
+هزار%
+\ifnum#7>\z@\ و \fi%
+\fi%
+\xepersian at sadgan#7{#4#5#6}1#9%
+}
+\def\xepersian at milyoongan#1#2#3{%
+\ifnum#1#2#3=\@ne%
+\xepersian at sadgan#1#2#301\xepersian at yekaniii%
+%
+میلیون%
+\else%
+\xepersian at sadgan#1#2#301\xepersian at yekanii%
+%
+میلیون%
+\fi%
+}
+\def\xepersian at sadgan#1#2#3#4#5#6{%
+\ifnum#1>\z@%
+\ifnum#4#1>\@ne\xepersian at yekaniv#1\fi%
+صد%
+\ifnum#2#3>\z@\ و \fi%
+\fi%
+\ifnum#2#3<20%
+\ifnum#5#2#3>\@ne#6{#2#3}\fi%
+\else%
+\xepersian at dahgan#2%
+\ifnum#3>\z@\ و \xepersian at yekani#3\fi%
+#60%
+\fi%
+}
+\def\xepersian at yekani#1{%
+\ifcase#1\@empty\or یک\or دو\or سه\or چهار\or پنج\or شش%
+\or هفت\or هشت\or نه\or ده\or یازده\or دوازده\or سیزده%
+\or چهارده\or پانزده\or شانزده\or هفده%
+\or هجده\or نوزده\fi%
+}
+\def\xepersian at yekanii#1{%
+\ifcase#1\@empty\or یک\else\xepersian at yekani{#1}\fi%
+}
+\def\xepersian at yekaniii#1{%
+\ifcase#1\@empty\or یک\else\xepersian at yekani{#1}\fi%
+}
+\def\xepersian at yekaniv#1{%
+\ifcase#1\@empty\or\or دوی\or سی\or چهار\or پان\or شش%
+\or هفت\or هشت\or نه\fi%
+}
+\def\xepersian at dahgan#1{%
+\ifcase#1\or\or بیست\or سی\or چهل%
+\or پنجاه\or شصت\or هفتاد\or هشتاد%
+\or نود\fi%
+}
+\newcommand{\tartibi}[1]{%
+\expandafter\@tartibi\csname c@#1\endcsname%
+}
+\newcommand{\@tartibi}[1]{%
+\xepersian at numberstring@tartibi{#1}\xepersian at tartibi{صفرم}{م}%
+}
+\let\tartibinumeral\@tartibi%
+\def\xepersian at numberstring@tartibi#1#2#3#4{%
+\ifnum\number#1<\@ne%
+#3%
+\else\ifnum\number#1<1000000000 %
+\expandafter\xepersian at adadi@tartibi\expandafter{\number#1}#2%
+\else%
+\xepersian at numberoutofrange{#1}{#4}%
+\fi\fi%
+}
+\def\xepersian at adadi@tartibi#1#2{%
+\expandafter\xepersian@@adadi at tartibi%
+\ifcase%
+\ifnum#1<10 1%
+\else\ifnum#1<100 2%
+\else\ifnum#1<\@m 3%
+\else\ifnum#1<\@M 4%
+\else\ifnum#1<100000 5%
+\else\ifnum#1<1000000 6%
+\else\ifnum#1<10000000 7%
+\else\ifnum#1<100000000 8%
+\else9%
+\fi\fi\fi\fi\fi\fi\fi\fi %
+\or00000000#1% case 1: Add 8 leading zeros
+\or0000000#1% case 2: Add 7 leading zeros
+\or000000#1% case 3: Add 6 leading zeros
+\or00000#1% case 4: Add 5 leading zeros
+\or0000#1% case 5: Add 4 leading zeros
+\or000#1% case 6: Add 3 leading zeros
+\or00#1% case 7: Add 2 leading zeros
+\or0#1% case 8: Add 1 leading zero
+\or#1% case 9: Add no leading zeros
+\or%
+\@nil#2%
+\fi%
+}
+\def\xepersian@@adadi at tartibi#1#2#3#4#5#6#7\or#8\@nil#9{%
+\ifnum#1#2#3>\z@
+\xepersian at milyoongan@tartibi#1#2#3%
+\ifnum#7>\z@\ifnum#4#5#6>\z@\ و \else\ و \fi\else\ifnum#4#5#6>\z@\ و \fi\fi%
+\fi%
+\ifnum#4#5#6>\z@%
+\xepersian at sadgan#4#5#6{#1#2#3}{#4#5}\xepersian at yekani%
+\ifnum#4#5#6>\@ne \fi%
+هزار%
+\ifnum#7>\z@\ و \fi%
+\fi%
+\xepersian at sadgan@tartibi#7{#4#5#6}1#9%
+}
+\def\xepersian at milyoongan@tartibi#1#2#3{%
+\ifnum#1#2#3=\@ne%
+\xepersian at sadgan@tartibi#1#2#301\xepersian at yekaniii%
+%
+میلیون%
+\else%
+\xepersian at sadgan#1#2#301\xepersian at yekanii%
+%
+میلیون%
+\fi%
+}
+\def\xepersian at sadgan@tartibi#1#2#3#4#5#6{%
+\ifnum#1>\z@%
+\ifnum#4#1>\@ne\xepersian at yekaniv#1\fi%
+صد%
+\ifnum#2#3>\z@\ و \fi%
+\fi%
+\ifnum#2#3<20%
+\ifnum#5#2#3>\@ne\ifnum#1#2#3#4#5=10001 اول\else#6{#2#3}\fi\fi%
+\else%
+\ifnum#2#3=30%
+\xepersian at dahgan@tartibi#2%
+\else%
+\xepersian at dahgan#2%
+\fi%
+\ifnum#3>\z@\ و \xepersian at yekanv#3\fi%
+#60%
+\fi%
+}
+\def\xepersian at dahgan@tartibi#1{%
+\ifcase#1\or\or بیست\or سیا\or چهل%
+\or پنجاه\or شصت\or هفتاد\or هشتاد%
+\or نود\fi%
+}
+\def\xepersian at tartibi#1{%
+\ifcase#1م\or یکم\or دوم\or سوم\or چهارم%
+\or پنجم\or ششم\or هفتم\or هشتم\or نهم%
+\or دهم\or یازدهم\or دوازدهم\or سیزدهم%
+\or چهاردهم\or پانزدهم\or شانزدهم%
+\or هفدهم\or هجدهم\or نوزدهم\fi%
+}
+\def\xepersian at yekanv#1{%
+\ifcase#1\@empty\or یک\or دو\or سو\or چهار\or پنج\or شش%
+\or هفت\or هشت\or نه\or ده\or یازده\or دوازده\or سیزده%
+\or چهارده\or پانزده\or شانزده\or هفده%
+\or هجده\or نوزده\fi%
+}
+\providecommand*{\xpg at warning}[1]{%
+ \PackageWarning{XePersian}%
+ {#1}}
+\if at bidi@csundef{@abjad}{%
+\def\@abjad#1{%
+\ifnum#1>1999 \xpg at warning{Illegal value (#1) for abjad numeral} {#1}
+\else
+ \ifnum#1<\z@\space\xpg at warning{Illegal value (#1) for abjad numeral}%
+ \else
+ \ifnum#1<10\expandafter\abj at num@i\number#1%
+ \else
+ \ifnum#1<100\expandafter\abj at num@ii\number#1%
+ \else
+ \ifnum#1<\@m\expandafter\abj at num@iii\number#1%
+ \else
+ \ifnum#1<\@M\expandafter\abj at num@iv\number#1%since #1<2000, we must have 1000
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+\fi
+}
+\def\abjad#1{\expandafter\@abjad\csname c@#1\endcsname}
+\let\abjadnumeral\@abjad
+\def\abjad at zero{}
+\def\abj at num@i#1{%
+ \ifcase#1\or آ\or ب\or ج\or د%
+ \or ه\or و\or ز\or ح\or ط\fi
+ \ifnum#1=\z@\abjad at zero\fi}
+\def\abj at num@ii#1{%
+ \ifcase#1\or ی\or ک\or ل\or م\or ن%
+ \or س\or ع\or ف\or ص\fi
+ \ifnum#1=\z@\fi\abj at num@i}
+\def\abj at num@iii#1{%
+ \ifcase#1\or ق\or ر\or ش\or ت\or ث%
+ \or خ\or ذ\or ض\or ظ\fi
+ \ifnum#1=\z@\fi\abj at num@ii}
+\def\abj at num@iv#1{%
+ \ifcase#1\or غ\fi
+ \ifnum#1=\z@\fi\abj at num@iii}
+}{}
+\let\@latinalph\@alph%
+\let\@latinAlph\@Alph%
+\def\LatinAlphs{%
+ \let\@alph\@latinalph%
+ \let\@Alph\@latinAlph%
+}
+\def\thempfootnote{{\itshape\@latinalph\c at mpfootnote}}
+\renewcommand*{\bidi@@thebibliography at font@hook}{%
+\if at LTRbibitems
+ \resetlatinfont
+\fi}
+\bidi at AfterEndPreamble{%
+\if at bidi@csundef{persianfont}{%
+\PackageError{xepersian}{You have not specified any font\MessageBreak
+ for the main Persian text}{Use `\settextfont' to load a font.}%
+}{}}
+\@ifdefinitionfileloaded{loadingorder-xetex-bidi}{\input{loadingorder-xepersian.def}}{}
+\@ifdefinitionfileloaded{footnote-xetex-bidi}{\input{footnote-xepersian.def}}{}
+\@ifpackageloaded{appendix}{\input{appendix-xepersian.def}}{}
+\@ifpackageloaded{listings}{\input{listings-xepersian.def}}{}
+\@ifpackageloaded{algorithmic}{\input{algorithmic-xepersian.def}}{}
+\@ifpackageloaded{algorithm}{\input{algorithm-xepersian.def}}{}
+\@ifpackageloaded{backref}{\input{backref-xepersian.def}}{}
+\@ifpackageloaded{fancyref}{\input{fancyref-xepersian.def}}{}
+\@ifpackageloaded{bidituftesidenote}{\input{bidituftesidenote-xepersian.def}}{}
+\@ifpackageloaded{breqn}{\input{breqn-xepersian.def}}{}
+\@ifpackageloaded{enumerate}{\input{enumerate-xepersian.def}}{}
+\@ifpackageloaded{enumitem}{\input{enumitem-xepersian.def}}{}
+\@ifpackageloaded{framed}{\input{framed-xepersian.def}}{}
+\@ifpackageloaded{glossaries}{\input{glossaries-xepersian.def}}{}
+\@ifpackageloaded{hyperref}{\input{hyperref-xepersian.def}}{}
+\@ifpackageloaded{minitoc}{\input{minitoc-xepersian.def}}{}
+\@ifpackageloaded{natbib}{\input{natbib-xepersian.def}}{}
+\@ifpackageloaded{soul}{\input{soul-xepersian.def}}{}
+\@ifpackageloaded{tikz}{\input{tikz.code-xepersian.def}}{}
+\@ifpackageloaded{tkz-linknodes}{\input{tkz-linknodes-xepersian.def}}{}
+\@ifpackageloaded{tocloft}{\@ifclassloaded{memoir}{}{\input{tocloft-xepersian.def}}}{}
+\@ifpackageloaded{varioref}{\input{varioref-xepersian.def}}{}
+\@ifclassloaded{article}{\input{article-xepersian.def}}{}
+\@ifclassloaded{extarticle}{\input{extarticle-xepersian.def}}{}
+\@ifclassloaded{artikel1}{\input{artikel1-xepersian.def}}{}
+\@ifclassloaded{artikel2}{\input{artikel2-xepersian.def}}{}
+\@ifclassloaded{artikel3}{\input{artikel3-xepersian.def}}{}
+\@ifclassloaded{amsart}{\input{amsart-xepersian.def}}{}
+\@ifclassloaded{bidimoderncv}{\input{bidimoderncv-xepersian.def}}{}
+\@ifclassloaded{report}{\input{report-xepersian.def}}{}
+\@ifclassloaded{extreport}{\input{extreport-xepersian.def}}{}
+\@ifclassloaded{rapport1}{\input{rapport1-xepersian.def}}{}
+\@ifclassloaded{rapport3}{\input{rapport3-xepersian.def}}{}
+\@ifclassloaded{scrartcl}{\input{scrartcl-xepersian.def}}{}
+\@ifclassloaded{scrbook}{\input{scrbook-xepersian.def}}{}
+\@ifclassloaded{scrreprt}{\input{scrreprt-xepersian.def}}{}
+\@ifclassloaded{amsbook}{\input{amsbook-xepersian.def}}{}
+\@ifclassloaded{boek3}{\input{boek3-xepersian.def}}{}
+\@ifclassloaded{boek}{\input{boek-xepersian.def}}{}
+\@ifclassloaded{bookest}{\input{bookest-xepersian.def}}{}
+\@ifclassloaded{extbook}{\input{extbook-xepersian.def}}{}
+\@ifclassloaded{book}{\input{book-xepersian.def}}{}
+\@ifclassloaded{refrep}{\input{refrep-xepersian.def}}{}
+\@ifclassloaded{memoir}{\input{memoir-xepersian.def}}{}
+\@ifclassloaded{imsproc}{\input{imsproc-xepersian.def}}{}
+
+\def\xepersian@@fontsize at branch#1{%
+ \@tempcnta\z@
+ \@for\xepersian at tmp:=#1\do{%
+ \KV@@sp at def\xepersian at frag{\xepersian at tmp}%
+ \ifcase\@tempcnta\relax% cnta == 0
+ \edef\xepersian at value{\xepersian at frag}%
+ \setfontsize{\xepersian at frag}%
+ \or% cnta == 1
+ \setfontsize[\xepersian at frag]{\xepersian at value}%
+ \else\fi
+ \advance\@tempcnta\@ne}%
+}
+
+
+\define at choicekey{xepersian.sty}{mathdigits}[\xepersian at tempa\xepersian at tempb]{automatic,default,persian}{%
+ \ifcase\xepersian at tempb\relax
+ \AutoMathsDigits
+ \or
+ \DefaultMathsDigits
+ \or
+ \PersianMathsDigits
+ \fi}
+\define at choicekey{xepersian.sty}{inlinemathdigits}[\xepersian at tempa\xepersian at tempb]{automatic,default,persian}{%
+ \ifcase\xepersian at tempb\relax
+ \AutoInlineMathsDigits
+ \or
+ \DefaultInlineMathsDigits
+ \or
+ \PersianInlineMathsDigits
+ \fi}
+\define at choicekey{xepersian.sty}{displaymathdigits}[\xepersian at tempa\xepersian at tempb]{automatic,default,persian}{%
+ \ifcase\xepersian at tempb\relax
+ \AutoDisplayMathsDigits
+ \or
+ \DefaultDisplayMathsDigits
+ \or
+ \PersianDisplayMathsDigits
+ \fi}
+\define at choicekey{xepersian.sty}{RTLdocument}[\xepersian at tempa\xepersian at tempb]{on,off}[on]{%
+ \ifcase\xepersian at tempb\relax
+ \@RTLtrue
+ \or
+ \@RTLfalse
+ \fi}
+
+\define at choicekey{xepersian.sty}{documentdirection}[\xepersian at tempa\xepersian at tempb]{righttoleft,lefttoright}{%
+ \ifcase\xepersian at tempb\relax
+ \@RTLtrue
+ \or
+ \@RTLfalse
+ \fi}
+
+
+\define at choicekey{xepersian.sty}{tabledirection}[\xepersian at tempa\xepersian at tempb]{righttoleft,lefttoright}{%
+ \ifcase\xepersian at tempb\relax
+ \@RTLtabtrue
+ \or
+ \@RTLtabfalse
+ \fi}
+
+\define at choicekey{xepersian.sty}{script}[\xepersian at tempa\xepersian at tempb]{latin,nonlatin}[latin]{%
+ \ifcase\xepersian at tempb\relax
+ \@nonlatinfalse
+ \or
+ \@nonlatintrue
+ \fi}
+
+\define at choicekey{xepersian.sty}{rldocument}[\xepersian at tempa\xepersian at tempb]{on,off}[on]{%
+ \ifcase\xepersian at tempb\relax
+ \@RTLtrue
+ \or
+ \@RTLfalse
+ \fi}
+\define at choicekey{xepersian.sty}{footnoterule}[\xepersian at tempa\xepersian at tempb]{automatic,left,right,split,textwidth}{%
+ \ifcase\xepersian at tempb\relax
+ \autofootnoterule
+ \or
+ \leftfootnoterule
+ \or
+ \rightfootnoterule
+ \or
+ \SplitFootnoteRule
+ \or
+ \textwidthfootnoterule
+ \fi}
+\define at choicekey{xepersian.sty}{footnotedirection}[\xepersian at tempa\xepersian at tempb]{righttoleft,lefttoright}{%
+ \ifcase\xepersian at tempb\relax
+ \@RTL at footnotetrue
+ \or
+ \@RTL at footnotefalse
+ \fi}
+\define at choicekey{xepersian.sty}{debugfootnotedirection}[\xepersian at tempa\xepersian at tempb]{on,off}[on]{%
+ \ifcase\xepersian at tempb\relax
+ \footdir at debugtrue
+ \or
+ \footdir at debugfalse
+ \fi}
+\define at choicekey{xepersian.sty}{Kashida}[\xepersian at tempa\xepersian at tempb]{on,off}[on]{%
+ \ifcase\xepersian at tempb\relax
+ \input{kashida-xepersian.def}
+ \fi}
+\define at choicekey{xepersian.sty}{localise}[\xepersian at tempa\xepersian at tempb]{on,off}[on]{%
+ \ifcase\xepersian at tempb\relax
+ \input{localise-xepersian.def}
+ \fi}
+\define at choicekey{xepersian.sty}{extrafootnotefeatures}[\xepersian at tempa\xepersian at tempb]{on,off}[on]{%
+ \ifcase\xepersian at tempb\relax
+ \@extrafootnotefeaturestrue
+ \or
+ \@extrafootnotefeaturesfalse
+ \fi}
+\define at choicekey{xepersian.sty}{quickindex}[\xepersian at tempa\xepersian at tempb]{on,off}[on]{%
+ \ifcase\xepersian at tempb\relax
+ \PackageWarning{xepersian}{Obsolete option}%
+ \ifwritexviii%
+ \@ifclassloaded{memoir}{\PackageError{xepersian}{This feature does not yet work with the memoir class}{}}{%
+ \renewcommand\printindex{\newpage%
+ \immediate\closeout\@indexfile
+ \immediate\write18{xindy -L persian-variant2 -C utf8 -M texindy -M page-ranges \jobname.idx}
+ \@input@{\jobname.ind}}}%
+ \else
+ \PackageError{xepersian}{“shell escape” (or “write18”) is not enabled. You need to run “xelatex --shell-escape” on your TeX document for this feature to work}{}
+ \fi
+ \fi}
+\define at choicekey{xepersian.sty}{quickindex-variant1}[\xepersian at tempa\xepersian at tempb]{on,off}[on]{%
+ \ifcase\xepersian at tempb\relax
+ \ifwritexviii%
+ \@ifclassloaded{memoir}{\PackageError{xepersian}{This feature does not yet work with the memoir class}{}}{%
+ \renewcommand\printindex{\newpage%
+ \immediate\closeout\@indexfile
+ \immediate\write18{xindy -L persian-variant1 -C utf8 -M texindy -M page-ranges \jobname.idx}
+ \@input@{\jobname.ind}}}%
+ \else
+ \PackageError{xepersian}{“shell escape” (or “write18”) is not enabled. You need to run “xelatex --shell-escape” on your TeX document for this feature to work}{}
+ \fi
+ \fi}
+\define at choicekey{xepersian.sty}{quickindex-variant2}[\xepersian at tempa\xepersian at tempb]{on,off}[on]{%
+ \ifcase\xepersian at tempb\relax
+ \ifwritexviii%
+ \@ifclassloaded{memoir}{\PackageError{xepersian}{This feature does not yet work with the memoir class}{}}{%
+ \renewcommand\printindex{\newpage%
+ \immediate\closeout\@indexfile
+ \immediate\write18{xindy -L persian-variant2 -C utf8 -M texindy -M page-ranges \jobname.idx}
+ \@input@{\jobname.ind}}}%
+ \else
+ \PackageError{xepersian}{“shell escape” (or “write18”) is not enabled. You need to run “xelatex --shell-escape” on your TeX document for this feature to work}{}
+ \fi
+ \fi}
+\define at choicekey{xepersian.sty}{abjadvariant}[\xepersian at tempa\xepersian at tempb]{one,two}{%
+ \ifcase\xepersian at tempb\relax
+ \def\PersianAlphs{%
+ \let\@alph\@abjad%
+ \let\@Alph\@abjad%
+ }
+ \or
+ \def\PersianAlphs{%
+ \let\@alph\@Abjad%
+ \let\@Alph\@Abjad%
+ }
+ \fi}
+\DeclareOptionX{defaultlatinfontfeatures}{%
+\defaultfontfeatures
+ [\latinfont]
+ {#1}
+}
+
+\DeclareOptionX{mathfontsizescale}{%
+ \def\xepersian@@math at fontsize@scale{#1}%
+ }
+
+\DeclareOptionX{fontsizescale}{%
+ \def\xepersian@@fontsize at scale{#1}%
+ }
+
+\DeclareOptionX{fontsize}{%
+ \xepersian@@fontsize at branch{#1}%
+ }
+
+\DeclareOptionX{latinfontsizescale}{%
+ \def\xepersian@@latin at fontsize@scale{#1}%
+ }
+
+\DeclareOptionX{baselineskipscale}{%
+ \def\xepersian@@baselineskip at scale{#1}%
+ }
+
+\DeclareOptionX{latinbaselineskipscale}{%
+ \def\xepersian@@latin at baselineskip@scale{#1}%
+ }
+
+\define at choicekey{xepersian.sty}{logo}[\xepersian at tempa\xepersian at tempb]{on,off}[on]{%
+ \ifcase\xepersian at tempb\relax
+ \AtBeginDocument{\@bidi at inslogo@}%
+ \or
+ \let\@bidi at logo@\@empty \let\@bidi at inslogo@\@empty
+ \fi}
+
+\define at choicekey{xepersian.sty}{pdfinfo}[\xepersian at tempa\xepersian at tempb]{on,off}[on]{%
+ \ifcase\xepersian at tempb\relax
+ \@bidi at pdfm@marktrue
+ \or
+ \@bidi at pdfm@markfalse
+ \fi}
+
+\define at choicekey{xepersian.sty}{computeautoilg}[\xepersian at tempa\xepersian at tempb]{on,off}[on]{%
+ \ifcase\xepersian at tempb\relax
+ \@xepersian@@computeautoilgtrue
+ \or
+ \@xepersian@@computeautoilgfalse
+ \fi}
+
+\define at choicekey{xepersian.sty}{DetectColumn}[\xepersian at tempa\xepersian at tempb]{on,off}[on]{%
+ \ifcase\xepersian at tempb\relax
+ \def\bidi at firstcolumn@status at write{%
+ \protected at write\@auxout{}%
+ {\string\bidi at column@status
+ {1}}}%
+ \def\bidi at lastcolumn@status at write{%
+ \protected at write\@auxout{}%
+ {\string\bidi at column@status{2}}}%
+ \or
+ \let\bidi at firstcolumn@status at write\relax
+ \let\bidi at lastcolumn@status at write\relax
+ \fi}
+
+
+\define at choicekey{xepersian.sty}{debugtextdigitfont}[\xepersian at tempa\xepersian at tempb]{on,off}[on]{%
+ \ifcase\xepersian at tempb\relax
+ \bidi at AtEndPreamble{%
+ \bidi at patchcmd{\xepersian@@start at switch@textdigitfont}%
+ {\xepersian at textdigitfont}{\addfontfeature{Color=C71585}}{}{}%
+ }
+ \or
+ \relax
+ \fi}
+
+\define at choicekey{xepersian.sty}{perpagefootnote}[\xepersian at tempa\xepersian at tempb]{on,off}[on]{%
+ \ifcase\xepersian at tempb\relax
+ \@bidi at perpage@footnotetrue
+ \or
+ \@bidi at perpage@footnotefalse
+ \fi}
+
+\ExecuteOptionsX{%
+ documentdirection=righttoleft,
+ tabledirection=righttoleft,
+ script=nonlatin,
+ footnotedirection=righttoleft,
+ footnoterule=automatic,
+ abjadvariant=two,
+ DetectColumn=off,
+ fontsizescale=\@ne,
+ latinfontsizescale=\@ne,
+ mathfontsizescale=\@ne,
+ baselineskipscale=\@ne,
+ latinbaselineskipscale=\@ne
+}
+
+\ProcessOptionsX
+
+\if at extrafootnotefeatures
+ \input{extrafootnotefeatures-xetex-bidi.def}%
+ \input{extrafootnotefeatures-xepersian.def}%
+\fi
+
+\bidi at patchcmd{\set at fontsize}{\@tempdimb#2pt}{%
+ \@tempdimb\xepersian@@fontsize at scale\dimexpr#2pt\relax
+}{}{}
+
+\bidi at patchcmd{\set at fontsize}{\@tempskipa#3pt}{%
+ \@tempskipa\xepersian@@baselineskip at scale\dimexpr#3pt\relax
+}{}{}
+
+
+\newcommand*{\xepersian@@update at math@fontsize}[1]{%
+ \strip at pt\dimexpr\xepersian@@math at fontsize@scale
+ \dimexpr 1pt * \dimexpr #1 pt\relax /
+ \dimexpr \xepersian@@fontsize at scale pt\relax
+ \relax\relax
+}
+
+\bidi at patchcmd{\getanddefine at fonts}{%
+ \xdef\font at name{\csname \string#2/\tf at size\endcsname}%
+}{%
+ \xdef\font at name{\csname \string#2/\xepersian@@update at math@fontsize\tf at size\endcsname}%
+}{}{}
+
+\bidi at patchcmd{\getanddefine at fonts}{%
+ \xdef\font at name{\csname \string#2/\sf at size\endcsname}%
+}{%
+ \xdef\font at name{\csname \string#2/\xepersian@@update at math@fontsize\sf at size\endcsname}%
+}{}{}
+
+\bidi at patchcmd{\getanddefine at fonts}{%
+ \xdef\font at name{\csname \string#2/\ssf at size\endcsname}%
+}{%
+ \xdef\font at name{\csname \string#2/\xepersian@@update at math@fontsize\ssf at size\endcsname}%
+}{}{}
+
+
+\if at xepersian@@computeautoilg
+\bidi at patchcmd{\set at fontsize}{%
+\baselineskip\f at baselineskip\relax
+}{%
+\baselineskip\f at baselineskip\relax
+\xepersian at computeautoilg
+ \ifdim\xepersian at strutilg>\baselineskip
+ \PackageInfo{xepersian}{character with height+depth greater than current baselineskip found in font}%
+ \PackageInfo{xepersian}{baselineskip changed to that height+depth!}%
+ \baselineskip\xepersian at strutilg
+ \ifdim\footnotesep=.7\baselineskip
+ \else
+ \footnotesep.7\baselineskip
+ \fi
+ \fi
+}{}{}
+\fi
+
+\setlatintextfont[Path,BoldFont={lmroman10-bold},BoldItalicFont={lmroman10-bolditalic},ItalicFont={lmroman10-italic},SmallCapsFont={lmromancaps10-regular},SlantedFont={lmromanslant10-regular},BoldSlantedFont={lmromanslant10-bold}]{lmroman10-regular}%
+\PersianAlphs
+% \end{macrocode}
+% \iffalse
+%</xepersian.sty>
+%<*xepersian-magazine.cls>
+%\fi
+% \section{File \texttt{xepersian-magazine.cls}}
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{xepersian-magazine}[2010/07/25 v0.2 Typesetting Persian magazines in XeLaTeX]
+\RequirePackage{ifthen}
+\newlength{\xepersian at imgsize}
+\newlength{\xepersian at coltitsize}
+\newlength{\xepersian at pageneed}
+\newlength{\xepersian at pageleft}
+\newlength{\xepersian at indexwidth}
+\newcommand{\xepersian at ncolumns}{0}
+\newlength{\columnlines}
+\setlength{\columnlines}{0 pt} % no lines by default
+\newboolean{xepersian at hyphenatedtitles}
+\setboolean{xepersian at hyphenatedtitles}{true}
+\newboolean{xepersian at ninepoints}
+\setboolean{xepersian at ninepoints}{false}
+\newboolean{xepersian at showgrid}
+\setboolean{xepersian at showgrid}{false}
+\newboolean{xepersian at a3paper}
+\setboolean{xepersian at a3paper}{false}
+\newboolean{xepersian at insidefrontpage}
+\setboolean{xepersian at insidefrontpage}{false}
+\newboolean{xepersian at insideweather}
+\setboolean{xepersian at insideweather}{false}
+\newboolean{xepersian at insideindex}
+\setboolean{xepersian at insideindex}{false}
+\newcount\xepersian at gridrows
+\newcount\xepersian at gridcolumns
+\xepersian at gridrows=40
+\xepersian at gridcolumns=50
+\newcount\minraggedcols
+\minraggedcols=5
+\DeclareOption{10pt}{\PassOptionsToClass{10pt}{article}}
+\DeclareOption{11pt}{\PassOptionsToClass{11pt}{article}}
+\DeclareOption{12pt}{\PassOptionsToClass{12pt}{article}}
+\DeclareOption{twocolumn}%
+{\ClassWarning{xepersian-magazine}{Option 'twocolumn' not available for xepersian-magazine.}}
+\DeclareOption{notitlepage}%
+{\ClassWarning{xepersian-magazine}{Option 'notitlepage' not available for xepersian-magazine.}}
+\DeclareOption{twoside}%
+{\ClassWarning{xepersian-magazine}{Option 'twoside' not available for xepersian-magazine.}}
+\DeclareOption{9pt}{\setboolean{xepersian at ninepoints}{true}}
+\DeclareOption{hyphenatedtitles}{\setboolean{xepersian at hyphenatedtitles}{false}}
+\DeclareOption{columnlines}{\setlength{\columnlines}{0.1 pt}}
+\DeclareOption{showgrid}{\setboolean{xepersian at showgrid}{true}}
+\DeclareOption{a3paper}{\setboolean{xepersian at a3paper}{true}}
+\ProcessOptions\relax
+\LoadClass[10pt, onecolumn, titlepage, a4paper]{article}
+\RequirePackage{ifxetex}
+\RequirePackage{multido}
+\RequirePackage{datetime}
+\RequirePackage{multicol}
+\RequirePackage{fancyhdr}
+\RequirePackage{fancybox}
+\ifthenelse{\boolean{xepersian at a3paper}}{%
+\RequirePackage[a3paper,headsep=0.5cm,vmargin={2cm,2cm},hmargin={1.5cm,1.5cm}]{geometry}
+}{
+\RequirePackage[headsep=0.5cm,vmargin={2cm,2cm},hmargin={1.5cm,1.5cm}]{geometry}
+}
+\RequirePackage[absolute]{textpos} % absoulte positioning
+\RequirePackage{hyphenat} % when hyphenate
+\RequirePackage{lastpage} % to know the last page number
+\RequirePackage{setspace} % set space between lines
+\RequirePackage{ragged2e}
+\newcommand{\raggedFormat}{\RaggedLeft}
+\AtEndOfClass{\xepersianInit}
+\ifthenelse{\boolean{xepersian at showgrid}}{%
+\AtBeginDocument{
+\grid[show]{\xepersian at gridrows}{\xepersian at gridcolumns}}
+\advance\minraggedcols by -1
+}{%
+\AtBeginDocument{
+\grid[]{\xepersian at gridrows}{\xepersian at gridcolumns}}
+\advance\minraggedcols by -1
+}
+\ifthenelse{\boolean{xepersian at ninepoints}}{
+\renewcommand{\normalsize}{%
+ \@setfontsize{\normalsize}{9pt}{10pt}%
+ \setlength{\abovedisplayskip}{5pt plus 1pt minus .5pt}%
+ \setlength{\belowdisplayskip}{\abovedisplayskip}%
+ \setlength{\abovedisplayshortskip}{3pt plus 1pt minus 2pt}%
+ \setlength{\belowdisplayshortskip}{\abovedisplayshortskip}}
+
+\renewcommand{\tiny}{\@setfontsize{\tiny}{5pt}{6pt}}
+
+\renewcommand{\scriptsize}{\@setfontsize{\scriptsize}{7pt}{8pt}}
+
+\renewcommand{\small}{%
+ \@setfontsize{\small}{8pt}{9pt}%
+ \setlength{\abovedisplayskip}{4pt plus 1pt minus 1pt}%
+ \setlength{\belowdisplayskip}{\abovedisplayskip}%
+ \setlength{\abovedisplayshortskip}{2pt plus 1pt}%
+ \setlength{\belowdisplayshortskip}{\abovedisplayshortskip}}
+
+\renewcommand{\footnotesize}{%
+ \@setfontsize{\footnotesize}{8pt}{9pt}%
+ \setlength{\abovedisplayskip}{4pt plus 1pt minus .5pt}%
+ \setlength{\belowdisplayskip}{\abovedisplayskip}%
+ \setlength{\abovedisplayshortskip}{2pt plus 1pt}%
+ \setlength{\belowdisplayshortskip}{\abovedisplayshortskip}}
+
+\renewcommand{\large}{\@setfontsize{\large}{11pt}{13pt}}
+\renewcommand{\Large}{\@setfontsize{\Large}{14pt}{18pt}}
+\renewcommand{\LARGE}{\@setfontsize{\LARGE}{18pt}{20pt}}
+\renewcommand{\huge}{\@setfontsize{\huge}{20pt}{25pt}}
+\renewcommand{\Huge}{\@setfontsize{\Huge}{25pt}{30pt}}
+}{}
+\def\customwwwTxt#1{\gdef\@customwwwTxt{\lr{#1}}}
+\newcommand{\xepersian at wwwFormat}{\sffamily}
+\newcommand{\xepersian at www}{%
+\raisebox{-3pt}{{\xepersian at wwwFormat\@customwwwTxt}}
+}
+\newcommand{\xepersian at edition}{ویرایش من}
+\newcommand{\editionFormat}{\large\bfseries\texttt}
+\newcommand{\xepersian at editionLogo}{%
+\raisebox{-3pt}{%
+{\editionFormat\xepersian at edition}%
+}%
+}
+\newcommand{\indexFormat}{\large\bfseries}
+\newcommand{\xepersian at indexFrameTitle}[1]
+{\begin{flushright}{{\indexFormat #1}}\end{flushright}}
+
+\newcommand{\indexEntryFormat}{\normalsize}
+\newcommand{\xepersian at indexEntry}[1]{\begin{minipage}{13\TPHorizModule}%
+{\indexEntryFormat\noindent\ignorespaces{#1}}%
+\end{minipage}}
+\newcommand{\indexEntrySeparator}{\rule{\xepersian at indexwidth}{.1pt}}
+\newcommand{\indexEntryPageTxt}{صفحهٔ}
+\newcommand{\indexEntryPageFormat}{\footnotesize}
+\newcommand{\xepersian at indexEntryPage}[1]{%
+{\indexEntryPageFormat{\indexEntryPageTxt{}~#1}}%
+}
+\newcommand{\headDateTimeFormat}{}
+\newcommand{\xepersian at headDateTime}{%
+\headDateTimeFormat\date\hspace{5pt}$\parallel$\hspace{5pt}%
+\currenttime %
+}
+\newcommand{\weatherFormat}{\bfseries}
+\newcommand{\xepersian at weather}[1]{%
+\noindent{\weatherFormat #1}%
+}
+\newcommand{\weatherTempFormat}{\small}
+\newcommand{\weatherUnits}{\textdegree{}C}
+\newcommand{\xepersian at section}[0]{صفحهٔ جلو}
+\newcommand{\xepersian at headleft}{%
+{\small\bfseries \@custommagazinename}، \date
+}
+\newcommand{\xepersian at headcenter}{%
+\xepersian at section{}
+}
+\newcommand{\xepersian at headright}{%
+\small\xepersian at edition%
+\hspace*{5pt}\beginL\thepage\ / \pageref{LastPage}\endL
+}
+
+\newcommand{\heading}[3]{%
+\renewcommand{\xepersian at headleft}{\beginR#1\endR}%
+\renewcommand{\xepersian at headcenter}{\beginR#2\endR}%
+\renewcommand{\xepersian at headright}{\beginR#3\endR}%
+}
+\newcommand{\xepersian at footright}{%
+{\footnotesize\lr{\copyright\ \@customwwwTxt{}}---تهیهشده توسط \lr{\XePersian}}%
+}
+\newcommand{\xepersian at footcenter}{%
+}
+\newcommand{\xepersian at footleft}{%
+}
+
+\newcommand{\foot}[3]{%
+\renewcommand{\xepersian at footleft}{\beginR#1\endR}%
+\renewcommand{\xepersian at footcenter}{\beginR#2\endR}%
+\renewcommand{\xepersian at footright}{\beginR#3\endR}%
+}
+\newcommand{\firstTitleFormat}{\Huge\bfseries\flushright}
+\newcommand{\xepersian at firstTitle}[1]{%
+{%
+\begin{spacing}{2.0}{%
+\noindent\ignorespaces
+\ifthenelse{\boolean{xepersian at hyphenatedtitles}}%
+{\nohyphens{\firstTitleFormat #1}}%
+{{\firstTitleFormat #1}}%
+}%
+\end{spacing}%
+}%
+}
+\newcommand{\firstTextFormat}{}
+\newcommand{\xepersian at firstText}[1]{%
+{\noindent\ignorespaces\firstTextFormat #1}%
+}
+\newcommand{\secondTitleFormat}{\LARGE\bfseries}
+\newcommand{\xepersian at secondTitle}[1]{%
+\begin{spacing}{1.5}{%
+\noindent\ignorespaces\flushright
+\ifthenelse{\boolean{xepersian at hyphenatedtitles}}%
+{\nohyphens{\secondTitleFormat #1}}%
+{{\secondTitleFormat #1}}%
+}\end{spacing}%
+}
+\newcommand{\secondSubtitleFormat}{\large}
+\newcommand{\xepersian at secondSubtitle}[1]{%
+{\noindent\ignorespaces{\secondSubtitleFormat #1}}%
+}
+\newcommand{\secondTextFormat}{}
+\newcommand{\xepersian at secondText}[1]{%
+\begin{multicols}{2}
+{\noindent\ignorespaces\secondTextFormat #1}
+\end{multicols}
+}
+\newcommand{\thirdTitleFormat}{\Large\bfseries}
+\newcommand{\xepersian at thirdTitle}[1]{%
+\begin{spacing}{1.5}{%
+\noindent\ignorespaces\flushright
+\ifthenelse{\boolean{xepersian at hyphenatedtitles}}%
+{\nohyphens{\thirdTitleFormat #1}}%
+{{\thirdTitleFormat #1}}%
+}\end{spacing}%
+}
+\newcommand{\thirdSubtitleFormat}{\large}
+\newcommand{\xepersian at thirdSubtitle}[1]%
+{{\noindent\ignorespaces\thirdSubtitleFormat #1}}
+\newcommand{\thirdTextFormat}{}
+\newcommand{\xepersian at thirdText}[1]{{\thirdTextFormat #1}}
+\newcommand{\pictureCaptionFormat}{\small\bfseries}
+\newcommand{\xepersian at pictureCaption}[1]{%
+{\noindent\pictureCaptionFormat #1}%
+}
+\newcommand{\pagesFormat}{\bfseries\footnotesize}
+\newcommand{\xepersian at pages}[1]%
+{\noindent{\pagesFormat\MakeUppercase{#1}}}
+\newcommand{\innerTitleFormat}{\Huge}
+\newcommand{\xepersian at innerTitle}[1]{%
+\begin{flushright}{%
+\noindent
+\ifthenelse{\boolean{xepersian at hyphenatedtitles}}%
+{\nohyphens{\innerTitleFormat #1}}%
+{{\innerTitleFormat #1}}%
+}%
+\\%
+\end{flushright}%
+}
+\newcommand{\innerSubtitleFormat}{\large}
+\newcommand{\xepersian at innerSubtitle}[1]{{\innerSubtitleFormat #1}}
+\newcommand{\timestampTxt}{}
+\newcommand{\timestampSeparator}{|}
+\newcommand{\timestampFormat}{\small}
+\newcommand{\timestamp}[1]{%
+{\timestampFormat%
+#1~\timestampTxt{}%
+}~\timestampSeparator{}%
+}
+\newcommand{\innerAuthorFormat}{\footnotesize}
+\newcommand{\innerPlaceFormat}{\footnotesize\bfseries}
+\newcommand{\innerTextFinalMark}{\rule{0.65em}{0.65em}}
+\newcommand{\editorialTitleFormat}{\LARGE\textit}
+\newcommand{\xepersian at editorialTitle}[1]{\editorialTitleFormat{#1}}
+\newcommand{\editorialAuthorFormat}{\textsc}
+\newcommand{\shortarticleTitleFormat}{\LARGE\bfseries}
+\newcommand{\xepersian at shortarticleTitle}[1]{{\shortarticleTitleFormat #1}}
+\newcommand{\shortarticleSubtitleFormat}{\Large}
+\newcommand{\xepersian at shortarticleSubtitle}[1]{{\shortarticleSubtitleFormat #1}}
+\newcommand{\shortarticleItemTitleFormat}{\large\bfseries}
+\newcommand{\xepersian at shortarticleItemTitle}[1]{{\shortarticleItemTitleFormat #1}}
+\renewcommand{\maketitle}{\begin{titlepage}%
+ \let\footnotesize\small
+ \let\footnoterule\relax
+ \let \footnote \thanks
+ \null\vfil
+ \vskip 60\p@
+ \begin{center}%
+ {\LARGE \@title \par}%
+ \vskip 1em%
+ {\LARGE «\xepersian at edition» \par}%
+ \vskip 3em%
+ {\large
+ \lineskip .75em%
+ \begin{tabular}[t]{c}%
+ \@author
+ \end{tabular}\par}%
+ \vskip 1.5em%
+ {\large \@date \par}%
+ \end{center}\par
+ \@thanks
+ \vfil\null
+ \end{titlepage}%
+ \setcounter{footnote}{0}%
+ \global\let\thanks\relax
+ \global\let\maketitle\relax
+ \global\let\@thanks\@empty
+ \global\let\@author\@empty
+ \global\let\@date\@empty
+ \global\let\@title\@empty
+ \global\let\title\relax
+ \global\let\author\relax
+ \global\let\date\relax
+ \global\let\and\relax
+}
+\newcommand{\xepersian at say}[1]{\typeout{#1}}
+\newsavebox{\xepersian at fmbox}
+\newenvironment{xepersian at fmpage}[1]
+ {\begin{lrbox}{\xepersian at fmbox}\begin{minipage}{#1}}
+ {\end{minipage}\end{lrbox}\fbox{\usebox{\xepersian at fmbox}}}
+\newcommand{\image}[2]{
+\vspace{5pt}
+\setlength{\fboxsep}{1pt}
+\addtolength{\xepersian at imgsize}{\columnwidth}
+\addtolength{\xepersian at imgsize}{-1\columnsep}
+\ifxetex
+\setlength{\xepersian at pageneed}{1.5\xepersian at imgsize}
+\addtolength{\xepersian at pageneed}{50pt}
+\ClassWarning{xepersian-magazine}{%
+Image #1 needs: \the\xepersian at pageneed \space %
+and there is left: \the\page at free\space%
+}
+\ifdim \xepersian at pageneed < \page at free
+
+{\centering\fbox{%
+\includegraphics[width = \xepersian at imgsize,
+height = \xepersian at imgsize,
+keepaspectratio ]{#1}}}
+\xepersian at pictureCaption{#2}
+
+\vspace{5pt}
+\else
+\ClassWarning{Image #1 needs more space!%
+ It was not inserted!}
+\fi
+\fi
+}
+\textblockorigin{1cm}{1cm}
+\newdimen\xepersian at dx
+\newdimen\xepersian at dy
+\newcount\xepersian at cx
+\newcount\xepersian at cy
+\newcommand{\grid}[3][]{
+\xepersian at dx=\textwidth%
+\xepersian at dy=\textheight%
+\xepersian at cx=#3% %columns
+\xepersian at cy=#2% %rows
+
+\count1=#3%
+\advance\count1 by 1
+
+\count2=#2%
+\advance\count2 by 1
+
+\divide\xepersian at dx by #3
+\divide\xepersian at dy by #2
+
+\setlength{\TPHorizModule}{\xepersian at dx}
+\setlength{\TPVertModule}{\xepersian at dy}
+
+\ifthenelse{\equal{#1}{show}}{
+\multido{\xepersian at nrow=0+1}{\count2}{
+\begin{textblock}{\xepersian at cx}(0,\xepersian at nrow)
+\rule[0pt]{\textwidth}{.1pt}
+\end{textblock}
+}
+
+\multido{\xepersian at ncol=0+1}{\count1}{
+\begin{textblock}{\xepersian at cy}(\xepersian at ncol,0)
+\rule[0pt]{.1pt}{\textheight}
+\end{textblock}
+}
+}{}
+}
+\newcommand{\xepersianInit}{
+\setlength{\headheight}{14pt}
+\renewcommand{\headrulewidth}{0.4pt}
+
+\pagestyle{fancy}
+
+\setlength{\columnseprule}{\columnlines}
+\setlength{\fboxrule}{0.1 pt}
+
+}
+
+\def\customlogo#1{\gdef\@customlogo{\beginR#1\endR}}
+\def\customminilogo#1{\gdef\@customminilogo{\beginR#1\endR}}
+\def\custommagazinename#1{\gdef\@custommagazinename{\beginR#1\endR}}
+\newcommand{\logo}[0]{
+%% Heading %%
+\noindent\hrulefill\hspace{10pt}\xepersian at editionLogo\hspace{5pt}\xepersian at www
+
+\vspace*{-3pt}
+
+{\Large\bfseries \@customlogo}
+\hrulefill
+\hspace{10pt}\xepersian at headDateTime
+
+}
+\newcommand{\minilogo}[0]{
+{\large\bfseries \@customminilogo}
+
+\vspace*{5pt}
+}
+\newcommand{\mylogo}[1]{
+{\beginR#1\endR}
+
+\noindent
+\xepersian at editionLogo\hspace{5pt}
+\hrulefill
+\hspace{5pt}\xepersian at headDateTime
+}
+\newcommand{\edition}[1]{\renewcommand{\xepersian at edition}{#1}}
+\newenvironment{frontpage}[0]
+{
+\setboolean{xepersian at insidefrontpage}{true}
+\thispagestyle{empty}
+\logo
+
+}%
+{
+\thispagestyle{empty}
+\clearpage
+\newpage
+\fancyhead{}
+ \fancyfoot{}
+\fancyhead[RO,LE]{\beginR\xepersian at headright\endR}
+\fancyhead[LO,RE]{\beginR\xepersian at headleft\endR}
+ \fancyhead[C]{\beginR\xepersian at headcenter\endR}
+ \fancyfoot[RO,LE]{\beginR\xepersian at footright\endR}
+ \fancyfoot[LO,RE]{\beginR\xepersian at footleft\endR}
+\fancyfoot[C]{\beginR\xepersian at footcenter\endR}
+\renewcommand{\headrulewidth}{0.4pt}
+\setboolean{xepersian at insidefrontpage}{false}
+
+}
+\newcommand{\firstarticle}[3]
+{
+\ifthenelse{\boolean{xepersian at insidefrontpage}}{%
+\ifthenelse{\boolean{xepersian at hyphenatedtitles}}{%
+\begin{textblock}{24}(22,5)
+}
+{
+\begin{textblock}{28}(22,5)
+}
+\vspace{-7pt}
+\xepersian at firstTitle{#1}
+\end{textblock}
+\begin{textblock}{29}(22,10)
+\vspace{5pt plus 2pt minus 2pt}
+
+\xepersian at firstText{\timestamp{#3}~#2}
+
+\end{textblock}
+
+\begin{textblock}{50}(0,15)
+\rule{50\TPHorizModule}{.3pt}
+\end{textblock}
+}{%else
+\ClassError{xepersian-magazine}{%
+\protect\firstarticle\space in a wrong place.\MessageBreak
+\protect\firstarticle\space may only appear inside frontpage environment.
+}{%
+\protect\firstarticle\space may only appear inside frontpage environment.
+}%
+}
+}
+\newcommand{\secondarticle}[5]
+{
+\ifthenelse{\boolean{xepersian at insidefrontpage}}{%
+\begin{textblock}{33}(2,16)
+\xepersian at pages{#4}
+\vspace{-5pt}
+\xepersian at secondTitle{#1}
+
+\vspace*{5pt}
+
+\xepersian at secondSubtitle{#2}
+
+\vspace*{-7pt}
+
+\xepersian at secondText{\timestamp{#5}~#3}
+
+\end{textblock}
+
+\begin{textblock}{33}(2,25)
+\vspace{5pt plus 2pt minus 2pt}
+
+\noindent\ignorespaces\rule{33\TPHorizModule}{.3pt}
+\end{textblock}
+}{%else
+\ClassError{xepersian-magazine}{%
+\protect\secondarticle\space in a wrong place.\MessageBreak
+\protect\secondarticle\space may only appear inside frontpage environment.
+}{%
+\protect\secondarticle\space may only appear inside frontpage environment.
+}%
+}
+}
+\newcommand{\thirdarticle}[6]
+{
+\ifthenelse{\boolean{xepersian at insidefrontpage}}{%
+\begin{textblock}{32}(2,26)
+\xepersian at pages{#5}
+\vspace{-5pt}
+\setlength{\fboxsep}{1pt}
+\xepersian at thirdTitle{#1}
+
+\vspace*{5pt}
+
+\xepersian at thirdSubtitle{#2}
+
+\vspace*{5pt}
+
+{\noindent\ignorespaces %
+\ifthenelse{\equal{#4}{}}{}
+
+\xepersian at thirdText{\timestamp{#6}~#3}
+
+}
+
+\vspace*{5pt}
+
+\end{textblock}
+}{%else
+\ClassError{xepersian-magazine}{%
+\protect\thirdarticle\space in a wrong place.\MessageBreak
+\protect\thirdarticle\space may only appear inside frontpage environment.
+}{%
+\protect\thirdarticle\space may only appear inside frontpage environment.
+}%
+}
+}
+\newcommand{\firstimage}[2]
+{
+\ifthenelse{\boolean{xepersian at insidefrontpage}}{%
+\begin{textblock}{18}(2,5)
+\setlength{\fboxsep}{1pt}
+\ifxetex % only in PDF
+\noindent\fbox{\includegraphics[width = 18\TPHorizModule ]{#1}}
+\fi
+
+\xepersian at pictureCaption{#2}
+\end{textblock}%
+}
+{\ClassError{xepersian-magazine}{%
+\protect\firstimage\space in a wrong place.\MessageBreak
+\protect\firstimage\space may only appear inside frontpage environment.
+}{%
+\protect\firstimage\space may only appear inside frontpage environment.
+}}
+}%
+\newcommand{\weatheritem}[5]{%
+\ifthenelse{\boolean{xepersian at insideweather}}{
+\begin{minipage}{45pt}
+\ifxetex
+\includegraphics[width=40pt]{#1}
+\fi
+\end{minipage}
+\begin{minipage}{50pt}
+\weatherTempFormat
+#2\\
+\beginL#3 $\|$ #4 \lr{\weatherUnits{}}\endL\\
+#5
+\end{minipage}
+}{%else
+\ClassError{xepersian-magazine}{%
+\protect\weatheritem\space in a wrong place.\MessageBreak
+\protect\weatheritem\space may only appear inside weatherblock environment.
+}{%
+\protect\weatheritem\space may only appear inside weatherblock environment.\MessageBreak
+weatherblock environment may only appear inside frontpage environment.
+}%
+}
+}
+\newenvironment{weatherblock}[1]
+{
+\ifthenelse{\boolean{xepersian at insidefrontpage}}{%
+\setboolean{xepersian at insideweather}{true}
+\begin{textblock}{32}(2,38)
+\vspace*{-15pt}
+
+\xepersian at weather{\beginR#1\endR}
+
+\vspace*{5pt}
+
+\noindent\begin{xepersian at fmpage}{32\TPHorizModule}
+\begin{minipage}{32\TPHorizModule}
+\hspace{5pt}
+
+}{%
+\ClassError{xepersian-magazine}{%
+weatherblock in a wrong place.\MessageBreak
+weatherblock may only appear inside frontpage environment.
+}{%
+weatherblock may only appear inside frontpage environment.
+}
+}
+}%
+{
+\end{minipage}
+\end{xepersian at fmpage}
+\end{textblock}
+\setboolean{xepersian at insideweather}{false}
+}
+\newenvironment{authorblock}[0]
+{
+\ifthenelse{\boolean{xepersian at insidefrontpage}}{%
+\begin{textblock}{15}(36,35)
+\setlength{\fboxsep}{5pt}
+\begin{xepersian at fmpage}{13\TPHorizModule}
+\begin{minipage}{13\TPHorizModule}
+\centering
+\minilogo
+
+}{%else
+\ClassError{xepersian-magazine}{%
+authorblock in a wrong place.\MessageBreak
+authorblock may only appear inside frontpage environment.
+}{%
+authorblock may only appear inside frontpage environment.
+}
+}
+}
+{
+\end{minipage}
+\end{xepersian at fmpage}
+\end{textblock}
+}
+\newenvironment{indexblock}[1]
+{
+\ifthenelse{\boolean{xepersian at insidefrontpage}}{%
+\setboolean{xepersian at insideindex}{true}%let's in
+\begin{textblock}{15}(36,16)
+\setlength{\xepersian at indexwidth}{13\TPHorizModule}
+\xepersian at indexFrameTitle{#1}
+
+\setlength{\fboxsep}{5pt} %espacio entre el frame y la imagen
+\begin{xepersian at fmpage}{\xepersian at indexwidth}
+\begin{minipage}{\xepersian at indexwidth}
+\vspace*{10pt}
+}{%else
+\ClassError{xepersian-magazine}{%
+indexblock in a wrong place.\MessageBreak
+indexblock may only appear inside frontpage environment.
+}{%
+indexblock may only appear inside frontpage environment.
+}
+}
+}%
+{
+\end{minipage}
+\end{xepersian at fmpage}
+\end{textblock}
+\setboolean{xepersian at insideindex}{false}%let's out
+}
+\newcommand{\indexitem}[2]
+{
+\ifthenelse{\boolean{xepersian at insideindex}}{
+\xepersian at indexEntry{#1، \xepersian at indexEntryPage{\pageref{#2}}}
+
+\vspace{0.5cm}
+
+\noindent\ignorespaces\indexEntrySeparator{}
+}{%else
+\ClassError{xepersian-magazine}{%
+\protect\indexitem\space in a wrong place.\MessageBreak
+\protect\indexitem\space may only appear inside indexblock environment.
+}{%
+\protect\indexitem\space may only appear inside indexblock environment.\MessageBreak
+indexblock environment may only appear inside frontpage environment.
+}%
+}
+}
+\newcommand{\xepersian at inexpandedtitle}[1]{
+\begin{minipage}{.95\textwidth}
+\begin{center}
+\noindent\Large\textbf{\beginR#1\endR}
+\end{center}
+\end{minipage}
+}
+\newcommand{\expandedtitle}[2]{
+\end{multicols}
+
+\begin{center}
+\setlength{\fboxsep}{5pt}
+\setlength{\shadowsize}{2pt}
+\ifthenelse{\equal{#1}{shadowbox}}{%
+\shadowbox{%
+\xepersian at inexpandedtitle{#2}%
+}%
+}{}
+\ifthenelse{\equal{#1}{doublebox}}{%
+\doublebox{%
+\xepersian at inexpandedtitle{#2}%
+}%
+}{}
+\ifthenelse{\equal{#1}{ovalbox}}{%
+\ovalbox{%
+\xepersian at inexpandedtitle{#2}%
+}%
+}{}
+\ifthenelse{\equal{#1}{Ovalbox}}{%
+\Ovalbox{%
+\xepersian at inexpandedtitle{#2}%
+}%
+}{}
+\ifthenelse{\equal{#1}{lines}}{
+\hrule
+\vspace*{8pt}
+\begin{center}
+\noindent\Large\textbf{#2}
+\end{center}
+\vspace*{8pt}
+\hrule
+}{}
+\end{center}
+
+\begin{multicols}{\xepersian at ncolumns{}}
+\ifnum \xepersian at ncolumns > \minraggedcols
+\raggedFormat
+\fi
+}
+\newcommand{\xepersian at incolumntitle}[2]{
+\begin{minipage}{#1}
+\begin{center}
+\noindent\normalsize\textbf{#2}
+\end{center}
+\end{minipage}
+}
+
+\newcommand{\columntitle}[2]{
+\vspace*{5pt}
+\begin{center}
+\setlength{\fboxsep}{5pt}
+\setlength{\shadowsize}{2pt}
+\addtolength{\xepersian at coltitsize}{\columnwidth}
+\addtolength{\xepersian at coltitsize}{-1\columnsep}
+\addtolength{\xepersian at coltitsize}{-5pt}
+\addtolength{\xepersian at coltitsize}{-1\shadowsize}
+\ifthenelse{\equal{#1}{shadowbox}}{%
+\shadowbox{%
+\xepersian at incolumntitle{\xepersian at coltitsize}{#2}%
+}%
+}{}
+\ifthenelse{\equal{#1}{doublebox}}{%
+\doublebox{%
+\xepersian at incolumntitle{\xepersian at coltitsize}{#2}%
+}%
+}{}
+\ifthenelse{\equal{#1}{ovalbox}}{%
+\ovalbox{%
+\xepersian at incolumntitle{\xepersian at coltitsize}{#2}%
+}%
+}{}
+\ifthenelse{\equal{#1}{Ovalbox}}{%
+\Ovalbox{%
+\xepersian at incolumntitle{\xepersian at coltitsize}{#2}%
+}%
+}{}
+\ifthenelse{\equal{#1}{lines}}{
+\hrule
+\vspace*{5pt}
+\begin{center}
+\noindent\normalsize\textbf{#2}
+\end{center}
+\vspace*{5pt}
+\hrule
+}{}
+\end{center}
+}
+\renewcommand{\date}{%
+\longdate{\today}%
+}
+\newcommand{\authorandplace}[2]{%
+\rightline{%
+{\innerAuthorFormat #1},\space{}{\innerPlaceFormat #2}%
+}%
+\par %
+}
+\newcommand{\newsection}[1]{
+\renewcommand{\xepersian at section}{#1}
+}
+\newenvironment{article}[5]
+{
+\xepersian at say{Adding a new piece of article}
+\renewcommand{\xepersian at ncolumns}{#1}
+\begin{multicols}{#1}[
+\xepersian at pages{#4}
+\xepersian at innerTitle{#2}%
+\xepersian at innerSubtitle{#3}%
+][4cm]%
+\label{#5}
+\ifnum #1 > \minraggedcols
+\raggedFormat
+\fi
+}
+{~\innerTextFinalMark{}
+\end{multicols}
+}
+\newcommand{\articlesep}{%
+\setlength{\xepersian at pageneed}{16000pt}
+\setlength\xepersian at pageleft{\pagegoal}
+\addtolength\xepersian at pageleft{-\pagetotal}
+
+\xepersian at say{How much left \the\xepersian at pageleft}
+
+\ifdim \xepersian at pageneed < \xepersian at pageleft
+\xepersian at say{Not enough space}
+\else
+\xepersian at say{Adding sep line between articles}
+\vspace*{10pt plus 10pt minus 5pt}
+\hrule
+\vspace*{10pt plus 5pt minus 5pt}
+\fi
+
+}
+\newcommand{\xepersian at editorialTit}[2]{
+\setlength{\arrayrulewidth}{.1pt}
+\begin{center}
+\begin{tabular}{c}
+\noindent
+\xepersian at editorialTitle{#1}
+\vspace{2pt plus 1pt minus 1pt}
+\\
+\hline
+\vspace{2pt plus 1pt minus 1pt}
+\\
+\editorialAuthorFormat{#2}
+\end{tabular}
+\end{center}
+}
+\newenvironment{editorial}[4]
+{
+\xepersian at say{Adding a new editorial}
+\begin{multicols}{#1}[%
+\xepersian at editorialTit{#2}{#3}%
+][4cm]
+\label{#4}
+\ifnum #1 > \minraggedcols
+\raggedFormat
+\fi
+}
+{
+\end{multicols}
+}
+\newcommand{\xepersian at shortarticleTit}[2]{
+\begin{center}
+\vbox{%
+\noindent
+\xepersian at shortarticleTitle{#1}
+\vspace{4pt plus 2pt minus 2pt}
+\hrule
+\vspace{4pt plus 2pt minus 2pt}
+\xepersian at shortarticleSubtitle{#2}
+}
+\end{center}
+}
+\newenvironment{shortarticle}[4]
+{
+\xepersian at say{Adding a short article block}
+\begin{multicols}{#1}[\xepersian at shortarticleTit{#2}{#3}][4cm] %
+ \label{#4}
+\par %
+\ifnum #1 > \minraggedcols
+\raggedFormat
+\fi
+}
+{
+\end{multicols}
+}
+\newcommand{\shortarticleitem}[2]{
+\goodbreak
+\vspace{5pt plus 3pt minus 3pt}
+{\vbox{\noindent\xepersian at shortarticleItemTitle{#1}}}
+\vspace{5pt plus 3pt minus 3pt}
+{\noindent #2}\\
+}
+% \end{macrocode}
+% \iffalse
+%</xepersian-magazine.cls>
+%<*xepersian-mathsdigitspec.sty>
+%\fi
+% \section{File \texttt{xepersian-mathsdigitspec.sty}}
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{xepersian-mathsdigitspec}
+ [2018/12/16 v1.1.7 Unicode Persian maths digits in XeLaTeX]
+\def\new at mathgroup{\alloc at 8\mathgroup\chardef\@cclvi}
+\let\newfam\new at mathgroup
+\def\select at group#1#2#3#4{%
+ \ifx\math at bgroup\bgroup\else\relax\expandafter\@firstofone\fi
+ {%
+ \ifmmode
+ \ifnum\csname c at mv@\math at version\endcsname<\@cclvi
+ \begingroup
+ \escapechar\m at ne
+ \getanddefine at fonts{\csname c at mv@\math at version\endcsname}#3%
+ \globaldefs\@ne \math at fonts
+ \endgroup
+ \init at restore@version
+ \xdef#1{\noexpand\use at mathgroup\noexpand#2%
+ {\number\csname c at mv@\math at version\endcsname}}%
+ \global\advance\csname c at mv@\math at version\endcsname\@ne
+ \else
+ \let#1\relax
+ \@latex at error{Too many math alphabets used in
+ version \math at version}%
+ \@eha
+ \fi
+ \else \expandafter\non at alpherr\fi
+ #1{#4}%
+ }%
+}
+\def\document at select@group#1#2#3#4{%
+ \ifx\math at bgroup\bgroup\else\relax\expandafter\@firstofone\fi
+ {%
+ \ifmmode
+ \ifnum\csname c at mv@\math at version\endcsname<\@cclvi
+ \begingroup
+ \escapechar\m at ne
+ \getanddefine at fonts{\csname c at mv@\math at version\endcsname}#3%
+ \globaldefs\@ne \math at fonts
+ \endgroup
+ \expandafter\extract at alph@from at version
+ \csname mv@\math at version\expandafter\endcsname
+ \expandafter{\number\csname
+ c at mv@\math at version\endcsname}%
+ #1%
+ \global\advance\csname c at mv@\math at version\endcsname\@ne
+ \else
+ \let#1\relax
+ \@latex at error{Too many math alphabets used
+ in version \math at version}%
+ \@eha
+ \fi
+ \else \expandafter\non at alpherr\fi
+ #1{#4}%
+ }%
+}
+\ExplSyntaxOn
+\bool_set_false:N \g__fontspec_math_bool
+\tl_map_inline:nn
+ {
+ \new at mathgroup\cdp at list\cdp at elt\DeclareMathSizes
+ \@DeclareMathSizes\newmathalphabet\newmathalphabet@@\newmathalphabet@@@
+ \DeclareMathVersion\define at mathalphabet\define at mathgroup\addtoversion
+ \version at list\version at elt\alpha at list\alpha at elt
+ \restore at mathversion\init at restore@version\dorestore at version\process at table
+ \new at mathversion\DeclareSymbolFont\group at list\group at elt
+ \new at symbolfont\SetSymbolFont\SetSymbolFont@\get at cdp
+ \DeclareMathAlphabet\new at mathalphabet\SetMathAlphabet\SetMathAlphabet@
+ \DeclareMathAccent\set at mathaccent\DeclareMathSymbol\set at mathchar
+ \set at mathsymbol\DeclareMathDelimiter\@xxDeclareMathDelimiter
+ \@DeclareMathDelimiter\@xDeclareMathDelimiter\set at mathdelimiter
+ \set@@mathdelimiter\DeclareMathRadical\mathchar at type
+ \DeclareSymbolFontAlphabet\DeclareSymbolFontAlphabet@
+ }
+ {
+ \tl_remove_once:Nn \@preamblecmds {\do#1}
+ }
+\ExplSyntaxOff
+\newcommand\xepersian at PackageInfo[1]{\PackageInfo{xepersian-mathsdigitspec}{#1}}
+\newcommand\SetMathCode[4]{%
+ \Umathcode#1="\mathchar at type#2 \csname sym#3\endcsname #4\relax}
+\newcommand\SetMathCharDef[4]{%
+ \Umathchardef#1="\mathchar at type#2 \csname sym#3\endcsname #4\relax}
+\ExplSyntaxOn
+\cs_new_eq:NN \orig_mathbf:n \mathbf
+\cs_new_eq:NN \orig_mathit:n \mathit
+\cs_new_eq:NN \orig_mathrm:n \mathrm
+\cs_new_eq:NN \orig_mathsf:n \mathsf
+\cs_new_eq:NN \orig_mathtt:n \mathtt
+\NewDocumentCommand \new at mathbf { m } {
+ \orig_mathbf:n {
+ \int_step_inline:nnnn { `0 } { \c_one } { `9 } {
+ \mathcode ##1 = \numexpr "100 * \symnew at mathbf@font at digits + ##1 \relax
+ }
+ #1
+ }
+}
+\NewDocumentCommand \new at mathit { m } {
+ \orig_mathit:n {
+ \int_step_inline:nnnn { `0 } { \c_one } { `9 } {
+ \mathcode ##1 = \numexpr "100 * \symnew at mathit@font at digits + ##1 \relax
+ }
+ #1
+ }
+}
+\NewDocumentCommand \new at mathrm { m } {
+ \orig_mathrm:n {
+ \int_step_inline:nnnn { `0 } { \c_one } { `9 } {
+ \mathcode ##1 = \numexpr "100 * \symnew at mathrm@font at digits + ##1 \relax
+ }
+ #1
+ }
+}
+\NewDocumentCommand \new at mathsf{ m } {
+ \orig_mathsf:n {
+ \int_step_inline:nnnn { `0 } { \c_one } { `9 } {
+ \mathcode ##1 = \numexpr "100 * \symnew at mathsf@font at digits + ##1 \relax
+ }
+ #1
+ }
+}
+\NewDocumentCommand \new at mathtt{ m } {
+ \orig_mathtt:n {
+ \int_step_inline:nnnn { `0 } { \c_one } { `9 } {
+ \mathcode ##1 = \numexpr "100 * \symnew at mathtt@font at digits + ##1 \relax
+ }
+ #1
+ }
+}
+
+\cs_new:Npn \__xepersian_mathsdigitspec_error:nxx { \msg_error:nnxx {xepersian-mathsdigitspec} }
+\cs_new:Nn \__xepersian_mathsdigitspec_msg_new:nnnn
+ { \msg_new:nnxx {#1} {#2} { \tl_trim_spaces:n {#3} } { \tl_trim_spaces:n {#4} } }
+\char_set_catcode_space:n {32}
+\__xepersian_mathsdigitspec_msg_new:nnnn {xepersian-mathsdigitspec} {char-not-exist}
+ {
+ The font "#1" does not contain U+#2.
+ }
+ {
+ Select another font and rerun xelatex.
+ }
+\char_set_catcode_ignore:n {32}
+
+\prg_new_conditional:Nnn \__xepersian_mathsdigitspec_primitive_font_char_if_exist:n {p,TF,T,F}
+ {
+ \etex_iffontchar:D \l_fontspec_font "#1 \scan_stop:
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
+
+\clist_new:N \l_xepersian_mathsdigitspec_char_clist
+
+\cs_new:Nn \__xepersian_mathsdigitspec_char_set_not_exist_error:nn
+ {
+ \clist_set:Nn \l_xepersian_mathsdigitspec_char_clist { #1 }
+ \clist_map_inline:Nn \l_xepersian_mathsdigitspec_char_clist {
+ \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF { ##1 }{ \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #2 } { ##1 } }
+ }
+ }
+
+\cs_new:Nn \__xepersian_mathsdigitspec_char_prepend_not_exist_error:nn
+ {
+ \clist_put_left:Nn \l_xepersian_mathsdigitspec_char_clist { #1 }
+ \clist_map_inline:Nn \l_xepersian_mathsdigitspec_char_clist {
+ \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF { ##1 }{ \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #2 } { ##1 } }
+ }
+ }
+
+\cs_new:Nn \__xepersian_mathsdigitspec_char_append_not_exist_error:nn
+ {
+ \clist_put_right:Nn \l_xepersian_mathsdigitspec_char_clist { #1 }
+ \clist_map_inline:Nn \l_xepersian_mathsdigitspec_char_clist {
+ \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF { ##1 }{ \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #2 } { ##1 } }
+ }
+ }
+
+\cs_new:Nn \__xepersian_mathsdigitspec_char_not_exist_error:n
+ {
+ \__xepersian_mathsdigitspec_char_set_not_exist_error:nn {
+ 06F0 , 06F1 , 06F2 , 06F3 , 06F4 , 06F5 , 06F6 , 06F7 , 06F8 ,
+ 06F9 , 066A , 066B
+ } { #1 }
+ }
+
+\DeclareDocumentCommand \setmathdigitfont { O{} m O{} }
+ {
+ \__xepersian_main_setmathdigitfont:nn {#1,#3} {#2}
+ }
+\cs_new:Nn \__xepersian_main_setmathdigitfont:nn
+ {
+ \let\glb at currsize\relax
+ \fontspec_set_family:Nnn \g__xepersian_mathdigitsfamily_tl {Ligatures=PersianTeX,#1} {#2}
+ \__xepersian_setmathdigitfont_hook:nn {#1} {#2}
+ \xepersian at PackageInfo{Defining the default Persian maths digits font as '#2'}
+ \DeclareSymbolFont{OPERATORS} {\g_fontspec_encoding_tl}{\g__xepersian_mathdigitsfamily_tl} {m}{n}
+ \DeclareSymbolFont{new at mathbf@font at digits}{\g_fontspec_encoding_tl}{\g__xepersian_mathdigitsfamily_tl}{bx}{n}
+ \DeclareSymbolFont{new at mathit@font at digits}{\g_fontspec_encoding_tl}{\g__xepersian_mathdigitsfamily_tl}{m}{it}
+ \DeclareSymbolFont{new at mathrm@font at digits}{\g_fontspec_encoding_tl}{\g__xepersian_mathdigitsfamily_tl}{m}{n}
+ \__xepersian_mathsdigitspec_char_not_exist_error:n { #2 }
+ \def\persianmathsdigits{%
+ \SetMathCode{`0}{\mathalpha}{OPERATORS}{`0}
+ \SetMathCode{`1}{\mathalpha}{OPERATORS}{`1}
+ \SetMathCode{`2}{\mathalpha}{OPERATORS}{`2}
+ \SetMathCode{`3}{\mathalpha}{OPERATORS}{`3}
+ \SetMathCode{`4}{\mathalpha}{OPERATORS}{`4}
+ \SetMathCode{`5}{\mathalpha}{OPERATORS}{`5}
+ \SetMathCode{`6}{\mathalpha}{OPERATORS}{`6}
+ \SetMathCode{`7}{\mathalpha}{OPERATORS}{`7}
+ \SetMathCode{`8}{\mathalpha}{OPERATORS}{`8}
+ \SetMathCode{`9}{\mathalpha}{OPERATORS}{`9}
+ \SetMathCode{`\%}{\mathbin}{OPERATORS}{`٪}
+ \SetMathCharDef{\decimalseparator}{\mathord}{OPERATORS}{"066B}
+ \tl_set_eq:NN \mathbf \new at mathbf
+ \tl_set_eq:NN \mathit \new at mathit
+ \tl_set_eq:NN \mathrm \new at mathrm}
+ }
+
+\cs_set_eq:NN \__xepersian_setmathdigitfont_hook:nn \use_none:nn
+
+\DeclareDocumentCommand \setmathsfdigitfont { O{} m O{} }
+ {
+ \__xepersian_main_setmathsfdigitfont:nn {#1,#3} {#2}
+ }
+\cs_new:Nn \__xepersian_main_setmathsfdigitfont:nn
+ {
+ \fontspec_set_family:Nnn \g__xepersian_mathsfdigitfamily_tl {Ligatures=PersianTeX,#1} {#2}
+ \__xepersian_setmathsfdigitfont_hook:nn {#1} {#2}
+ \DeclareSymbolFont{new at mathsf@font at digits}{\g_fontspec_encoding_tl}{\g__xepersian_mathsfdigitfamily_tl}{m}{n}
+ \__xepersian_mathsdigitspec_char_not_exist_error:n { #2 }
+ \def\persianmathsfdigits{\tl_set_eq:NN \mathsf \new at mathsf}
+ }
+
+\cs_set_eq:NN \__xepersian_setmathsfdigitfont_hook:nn \use_none:nn
+
+\DeclareDocumentCommand \setmathttdigitfont { O{} m O{} }
+ {
+ \__xepersian_main_setmathttdigitfont:nn {#1,#3} {#2}
+ }
+\cs_new:Nn \__xepersian_main_setmathttdigitfont:nn
+ {
+ \fontspec_set_family:Nnn \g__xepersian_mathttdigitfamily_tl {Ligatures=PersianTeX,#1} {#2}
+ \__xepersian_setmathttdigitfont_hook:nn {#1} {#2}
+ \DeclareSymbolFont{new at mathtt@font at digits}{\g_fontspec_encoding_tl}{\g__xepersian_mathttdigitfamily_tl}{m}{n}
+ \__xepersian_mathsdigitspec_char_not_exist_error:n { #2 }
+ \def\persianmathttdigits{\tl_set_eq:NN \mathtt \new at mathtt}
+ }
+
+\cs_set_eq:NN \__xepersian_setmathttdigitfont_hook:nn \use_none:nn
+
+\ExplSyntaxOff
+\ifx\newcommand\undefined\else
+ \newcommand{\ZifferAn}{}
+\fi
+\mathchardef\ziffer at DotOri="013A
+{\ZifferAn
+ \catcode`\.=\active\gdef.{\begingroup\obeyspaces\futurelet\n\ziffer at dcheck}}
+\def\ziffer at dcheck{\ziffer at check\ZifferLeer\ziffer at DotOri}
+\def\ziffer at check#1#2{%
+ \ifx\n1\endgroup#1\else
+ \ifx\n2\endgroup#1\else
+ \ifx\n3\endgroup#1\else
+ \ifx\n4\endgroup#1\else
+ \ifx\n5\endgroup#1\else
+ \ifx\n6\endgroup#1\else
+ \ifx\n7\endgroup#1\else
+ \ifx\n8\endgroup#1\else
+ \ifx\n9\endgroup#1\else
+ \ifx\n0\endgroup#1\else
+ \ifx\n\overline\endgroup#1\else
+ \endgroup#2%
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi}
+\mathcode`.="8000\relax
+\def\ZifferLeer{\ifx\decimalseparator\undefined .\else \decimalseparator\fi}
+\def\DefaultInlineMathsDigits{\def\SetInlineMathsDigits{}}
+\def\DefaultDisplayMathsDigits{\def\SetDisplayMathsDigits{}}
+\def\DefaultMathsDigits{%
+ \DefaultInlineMathsDigits%
+ \DefaultDisplayMathsDigits%
+}
+\def\PersianInlineMathsDigits{\def\SetInlineMathsDigits{%
+\ifx\persianmathsdigits\undefined\else\persianmathsdigits\fi%
+\ifx\persianmathsfdigits\undefined\else\persianmathsfdigits\fi%
+\ifx\persianmathttdigits\undefined\else\persianmathttdigits\fi}}
+\def\PersianDisplayMathsDigits{\def\SetDisplayMathsDigits{%
+\ifx\persianmathsdigits\undefined\else\persianmathsdigits\fi%
+\ifx\persianmathsfdigits\undefined\else\persianmathsfdigits\fi%
+\ifx\persianmathttdigits\undefined\else\persianmathttdigits\fi}}
+\def\PersianMathsDigits{%
+ \PersianInlineMathsDigits%
+ \PersianDisplayMathsDigits%
+}
+\def\AutoInlineMathsDigits{\def\SetInlineMathsDigits{%
+\ifx\persianmathsdigits\undefined\else\if at nonlatin\persianmathsdigits\fi\fi%
+\ifx\persianmathsfdigits\undefined\else\if at nonlatin\persianmathsfdigits\fi\fi%
+\ifx\persianmathttdigits\undefined\else\if at nonlatin\persianmathttdigits\fi\fi}}
+\def\AutoDisplayMathsDigits{\def\SetDisplayMathsDigits{%
+\ifx\persianmathsdigits\undefined\else\if at nonlatin\persianmathsdigits\fi\fi%
+\ifx\persianmathsfdigits\undefined\else\if at nonlatin\persianmathsfdigits\fi\fi%
+\ifx\persianmathttdigits\undefined\else\if at nonlatin\persianmathttdigits\fi\fi}}
+\def\AutoMathsDigits{%
+ \AutoInlineMathsDigits%
+ \AutoDisplayMathsDigits%
+}
+\AutoMathsDigits
+\everymath\expandafter{\the\everymath\SetInlineMathsDigits%
+ \let\SetDisplayMathsDigits\relax%
+}
+\everydisplay\expandafter{%
+ \the\everydisplay\SetDisplayMathsDigits%
+ \let\SetInlineMathsDigits\relax%
+}
+% \end{macrocode}
+% \iffalse
+%</xepersian-mathsdigitspec.sty>
+%<*xepersian-multiplechoice.sty>
+%\fi
+% \section{File \texttt{xepersian-multiplechoice.sty}}
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{xepersian-multiplechoice}[2010/07/25 v0.2
+ Multiple Choice Questionnaire class for Persian in XeLaTeX]
+\RequirePackage{pifont}
+\RequirePackage{fullpage}
+\RequirePackage{ifthen}
+\RequirePackage{calc}
+\RequirePackage{verbatim}
+\RequirePackage{tabularx}
+\def\@headerfont{\bfseries}
+\newcommand\headerfont[1]{\gdef\@headerfont{#1}}
+\def\@X{X}
+\newcommand\X[1]{\gdef\@X{#1}}
+\def\pbs#1{\let\tmp=\\#1\let\\=\tmp}
+\newcolumntype{D}{>{\pbs\centering}X}
+\newcolumntype{Q}{>{\@headerfont}X}
+
+\renewcommand\tabularxcolumn[1]{m{#1}}
+\newcommand\makeform at nocorrection{%
+ \addtocontents{frm}{\protect\end{tabularx}}
+ \@starttoc{frm}}
+\newcommand\makeform at correction{%
+ \addtocontents{frm}{\protect\end{tabularx}}}
+\newcommand\makemask at nocorrection{%
+ \addtocontents{msk}{\protect\end{tabularx}}
+ \@starttoc{msk}}
+\newcommand\makemask at correction{%
+ \addtocontents{msk}{\protect\end{tabularx}}}
+\newlength\questionspace
+\setlength\questionspace{0pt}
+\newcommand\answerstitle[1]{\gdef\@answerstitle{#1}}
+\def\@answerstitlefont{\bfseries}
+\newcommand\answerstitlefont[1]{\gdef\@answerstitlefont{#1}}
+\def\@answernumberfont{\bfseries}
+\newcommand\answernumberfont[1]{\gdef\@answernumberfont{#1}}
+\newcounter{question}\stepcounter{question}
+\newcounter{@choice}
+\def\@initorcheck{%
+ \xdef\@choices{\the at choice}%
+ \setcounter{@choice}{1}%
+ \gdef\@arraydesc{|Q||}%
+ \gdef\@headerline{}%
+ \whiledo{\not{\value{@choice}>\@choices}}{
+ \xdef\@arraydesc{\@arraydesc D|}
+ \def\@appendheader{\g at addto@macro\@headerline}
+ \@appendheader{&\protect\@headerfont}
+ \edef\@the at choice{{\alph{@choice}}}
+ \expandafter\@appendheader\@the at choice
+ \stepcounter{@choice}}%
+ \addtocontents{frm}{%
+ \protect\begin{tabularx}{\protect\linewidth}{\@arraydesc}
+ \protect\hline
+ \@headerline\protect\\\protect\hline\protect\hline}%
+ \addtocontents{msk}{%
+ \protect\begin{tabularx}{\protect\linewidth}{\@arraydesc}
+ \protect\hline
+ \@headerline\protect\\\protect\hline\protect\hline}%
+ \gdef\@initorcheck{%
+ \ifthenelse{\value{@choice} = \@choices}{}{%
+ \ClassError{xepersian-multiplechoice}{Question \thequestion: wrong number of choices
+ (\the at choice\space instead of \@choices)}{%
+ Questions must all have the same number of proposed answers.%
+ \MessageBreak
+ Type X <return> to quit, fix your MCQ (multiple choice question) and rerun XeLaTeX.}}}}
+\newenvironment{question}[1]{%
+ %% \begin{question}
+ \begin{minipage}{\textwidth}
+ \xdef\@formanswerline{\@questionheader}%
+ \xdef\@maskanswerline{\@questionheader}%
+ \fbox{\parbox[c]{\linewidth}{#1}}
+ \vspace\questionspace\par
+ {\@answerstitlefont\@answerstitle}
+ \begin{list}{\@answernumberfont\alph{@choice})~}{\usecounter{@choice}}}{%
+ %% \end{question}
+ \end{list}
+ \@initorcheck%
+ \addtocontents{frm}{\@formanswerline\protect\\\protect\hline}%
+ \addtocontents{msk}{\@maskanswerline\protect\\\protect\hline}%
+ \end{minipage}
+ \stepcounter{question}}
+\def\@truesymbol{\ding{52}~}
+\def\@falsesymbol{\ding{56}~}
+\newcommand\truesymbol[1]{\gdef\@truesymbol{#1}}
+\newcommand\falsesymbol[1]{\gdef\@falsesymbol{#1}}
+\def\@true at nocorrection{\item}
+\def\@false at nocorrection{\item}
+\def\@true at correction{\item[\@truesymbol\refstepcounter{@choice}]}
+\def\@false at correction{\item[\@falsesymbol\refstepcounter{@choice}]}
+\newcommand\true{%
+ \xdef\@formanswerline{\@formanswerline&}%
+ \xdef\@maskanswerline{\@maskanswerline&\@X}%
+ \@true}%
+\newcommand\false{%
+ \xdef\@formanswerline{\@formanswerline&}%
+ \xdef\@maskanswerline{\@maskanswerline&}%
+ \@false}%
+\def\@correctionstyle{\itshape}
+\newcommand\correctionstyle[1]{\gdef\@correctionstyle{#1}}
+\newenvironment{@correction}{\@correctionstyle}{}
+ \def\@questionheader{سؤال \thequestion}
+ \answerstitle{جوابهای ممکن:}
+\DeclareOption{nocorrection}{%
+ \let\@true\@true at nocorrection
+ \let\@false\@false at nocorrection
+ \let\correction\comment
+ \let\endcorrection\endcomment
+ \def\makeform{\makeform at nocorrection}
+ \def\makemask{\makemask at nocorrection}}
+\DeclareOption{correction}{%
+ \let\@true\@true at correction
+ \let\@false\@false at correction
+ \let\correction\@correction
+ \let\endcorrection\end at correction
+ \def\makeform{\makeform at correction}
+ \def\makemask{\makemask at correction}}
+\ExecuteOptions{nocorrection}
+\newcommand\questiontitle[1]{\gdef\@questiontitle{#1}}
+\def\@questiontitlefont{\bfseries}
+\newcommand\questiontitlefont[1]{\gdef\@questiontitlefont{#1}}
+\newlength\questiontitlespace
+\setlength\questiontitlespace{5pt}
+\newlength\questionsepspace
+\setlength\questionsepspace{20pt}
+\gdef\@questionsepspace{0pt}
+\let\old at question\question
+\let\old at endquestion\endquestion
+\renewenvironment{question}[1]{%
+ %% \begin{question}
+ \vspace\@questionsepspace
+ \fbox{\parbox[c]{0.25\linewidth}{\@questiontitlefont\@questiontitle}}
+ \nopagebreak\vspace\questiontitlespace\par
+ \old at question{#1}}{%
+ %% \end{question}
+ \old at endquestion
+ \gdef\@questionsepspace{\questionsepspace}}
+ \questiontitle{سؤال \thequestion:}
+\ProcessOptions
+% \end{macrocode}
+% \iffalse
+%</xepersian-multiplechoice.sty>
+%<*xepersian-persiancal.sty>
+%\fi
+% \section{File \texttt{xepersian-persiancal.sty}}
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{xepersian-persiancal}[2012/07/25 v0.2 provides Persian calendar]
+
+\newif\ifXePersian at leap \newif\ifXePersian at kabiseh
+\newcount\XePersian at i \newcount\XePersian at y \newcount\XePersian at m \newcount\XePersian at d
+\newcount\XePersian at latini \newcount\XePersian at persiani
+\newcount\XePersian at latinii \newcount\XePersian at persianii
+\newcount\XePersian at latiniii \newcount\XePersian at persianiii
+\newcount\XePersian at latiniv \newcount\XePersian at persianiv
+\newcount\XePersian at latinv \newcount\XePersian at persianv
+\newcount\XePersian at latinvi \newcount\XePersian at persianvi
+\newcount\XePersian at latinvii \newcount\XePersian at persianvii
+\newcount\XePersian at latinviii \newcount\XePersian at persianviii
+\newcount\XePersian at latinix \newcount\XePersian at persianix
+\newcount\XePersian at latinx \newcount\XePersian at persianx
+\newcount\XePersian at latinxi \newcount\XePersian at persianxi
+\newcount\XePersian at latinxii \newcount\XePersian at persianxii
+ \newcount\XePersian at persianxiii
+
+\newcount\XePersian at temp
+\newcount\XePersian at temptwo
+\newcount\XePersian at tempthree
+\newcount\XePersian at yModHundred
+\newcount\XePersian at thirtytwo
+\newcount\XePersian at dn
+\newcount\XePersian at sn
+\newcount\XePersian at mminusone
+
+
+\XePersian at y=\year \XePersian at m=\month \XePersian at d=\day
+\XePersian at temp=\XePersian at y
+\divide\XePersian at temp by 100\relax
+\multiply\XePersian at temp by 100\relax
+\XePersian at yModHundred=\XePersian at y
+\advance\XePersian at yModHundred by -\XePersian at temp\relax
+\ifodd\XePersian at yModHundred
+ \XePersian at leapfalse
+\else
+ \XePersian at temp=\XePersian at yModHundred
+ \divide\XePersian at temp by 2\relax
+ \ifodd\XePersian at temp\XePersian at leapfalse
+ \else
+ \ifnum\XePersian at yModHundred=0%
+ \XePersian at temp=\XePersian at y
+ \divide\XePersian at temp by 400\relax
+ \multiply\XePersian at temp by 400\relax
+ \ifnum\XePersian at y=\XePersian at temp\XePersian at leaptrue\else\XePersian at leapfalse\fi
+ \else\XePersian at leaptrue
+ \fi
+ \fi
+\fi
+\XePersian at latini=31\relax
+\ifXePersian at leap
+ \XePersian at latinii = 29\relax
+\else
+ \XePersian at latinii = 28\relax
+\fi
+\XePersian at latiniii = 31\relax
+\XePersian at latiniv = 30\relax
+\XePersian at latinv = 31\relax
+\XePersian at latinvi = 30\relax
+\XePersian at latinvii = 31\relax
+\XePersian at latinviii = 31\relax
+\XePersian at latinix = 30\relax
+\XePersian at latinx = 31\relax
+\XePersian at latinxi = 30\relax
+\XePersian at latinxii = 31\relax
+\XePersian at thirtytwo=32\relax
+\XePersian at temp=\XePersian at y
+\advance\XePersian at temp by -17\relax
+\XePersian at temptwo=\XePersian at temp
+\divide\XePersian at temptwo by 33\relax
+\multiply\XePersian at temptwo by 33\relax
+\advance\XePersian at temp by -\XePersian at temptwo
+\ifnum\XePersian at temp=\XePersian at thirtytwo\XePersian at kabisehfalse
+\else
+ \XePersian at temptwo=\XePersian at temp
+ \divide\XePersian at temptwo by 4\relax
+ \multiply\XePersian at temptwo by 4\relax
+ \advance\XePersian at temp by -\XePersian at temptwo
+ \ifnum\XePersian at temp=\z@\XePersian at kabisehtrue\else\XePersian at kabisehfalse\fi
+\fi
+\XePersian at tempthree=\XePersian at y % Number of Leap years
+\advance\XePersian at tempthree by -1
+\XePersian at temp=\XePersian at tempthree % T := (MY-1) div 4
+\divide\XePersian at temp by 4\relax
+\XePersian at temptwo=\XePersian at tempthree % T := T - ((MY-1) div 100)
+\divide\XePersian at temptwo by 100\relax
+\advance\XePersian at temp by -\XePersian at temptwo
+\XePersian at temptwo=\XePersian at tempthree % T := T + ((MY-1) div 400)
+\divide\XePersian at temptwo by 400\relax
+\advance\XePersian at temp by \XePersian at temptwo
+\advance\XePersian at tempthree by -611 % Number of Kabise years
+\XePersian at temptwo=\XePersian at tempthree % T := T - ((SY+10) div 33) * 8
+\divide\XePersian at temptwo by 33\relax
+\multiply\XePersian at temptwo by 8\relax
+\advance\XePersian at temp by -\XePersian at temptwo
+\XePersian at temptwo=\XePersian at tempthree %
+\divide\XePersian at temptwo by 33\relax
+\multiply\XePersian at temptwo by 33\relax
+\advance\XePersian at tempthree by -\XePersian at temptwo
+\ifnum\XePersian at tempthree=32\advance\XePersian at temp by 1\fi % if (SY+10) mod 33=32 then Inc(T);
+\divide\XePersian at tempthree by 4\relax % T := T - ((SY+10) mod 33) div 4
+\advance\XePersian at temp by -\XePersian at tempthree
+\advance\XePersian at temp by -137 % T := T - 137 Adjust the value
+\XePersian at persiani=31
+\advance\XePersian at persiani by -\XePersian at temp % now 31 - T is the persiani
+\XePersian at persianii = 30\relax
+\ifXePersian at kabiseh
+ \XePersian at persianiii = 30\relax
+\else
+ \XePersian at persianiii = 29\relax
+\fi
+\XePersian at persianiv = 31\relax
+\XePersian at persianv = 31\relax
+\XePersian at persianvi = 31\relax
+\XePersian at persianvii = 31\relax
+\XePersian at persianviii= 31\relax
+\XePersian at persianix = 31\relax
+\XePersian at persianx = 30\relax
+\XePersian at persianxi = 30\relax
+\XePersian at persianxii = 30\relax
+\XePersian at persianxiii= 30\relax
+\XePersian at dn= 0\relax
+\XePersian at sn= 0\relax
+\XePersian at mminusone=\XePersian at m
+\advance\XePersian at mminusone by -1\relax
+\XePersian at i=0\relax
+\ifnum\XePersian at i < \XePersian at mminusone
+\loop
+\advance \XePersian at i by 1\relax
+\advance\XePersian at dn by \csname XePersian at latin\romannumeral\the\XePersian at i\endcsname
+\ifnum\XePersian at i<\XePersian at mminusone \repeat
+\fi
+\advance \XePersian at dn by \XePersian at d
+\XePersian at i=1\relax
+\XePersian at sn = \XePersian at persiani
+\ifnum \XePersian at sn<\XePersian at dn
+\loop
+\advance \XePersian at i by 1\relax
+\advance\XePersian at sn by \csname XePersian at persian\romannumeral\the\XePersian at i\endcsname
+\ifnum \XePersian at sn<\XePersian at dn \repeat
+\fi
+\ifnum \XePersian at i < 4
+ \XePersian at m = 9 \advance\XePersian at m by \XePersian at i
+ \advance \XePersian at y by -622\relax
+\else
+ \XePersian at m = \XePersian at i \advance \XePersian at m by -3\relax
+ \advance \XePersian at y by -621\relax
+\fi
+\advance\XePersian at sn by -\csname XePersian at persian\romannumeral\the\XePersian at i%
+\endcsname
+\ifnum\XePersian at i = 1
+ \XePersian at d = \XePersian at dn \advance \XePersian at d by 30 \advance\XePersian at d by -\XePersian at persiani
+\else
+ \XePersian at d = \XePersian at dn \advance \XePersian at d by -\XePersian at sn
+\fi
+\newcommand*{\persiantoday}{%
+\number\XePersian at d\space%
+\XePersian at persian@month{\XePersian at m}\space\number\XePersian at y%
+}
+\let\persianyear\XePersian at y
+\let\persianmonth\XePersian at m
+\let\persianday\XePersian at d
+\def\XePersian at persian@month#1{\ifcase#1\or فروردین\or
+اردیبهشت\or
+خرداد\or تیر\or
+مرداد\or
+شهریور\or مهر\or
+آبان\or آذر\or
+دی\or بهمن\or
+اسفند\fi}
+% \end{macrocode}
+% \iffalse
+%</xepersian-persiancal.sty>
+%\fi
+%
+% \Finale
+%
+%
+%\iffalse
+%<*magazine-sample.tex>
+\documentclass[12pt,twoside]{xepersian-magazine}
+\usepackage{graphicx}
+\usepackage{xltxtra}
+\usepackage{amsmath}
+\usepackage{xepersian}
+\settextfont[Scale=1]{XB Zar}
+\setlatintextfont[Scale=1]{Junicode}
+\setmathdigitfont{XB Zar}
+\pagestyle{fancy}
+\title{مجلهٔ زیپرشین}
+\author{وفا خلیقی}
+\edition{جلد اول}
+\customlogo{مجلهٔ زیپرشین}
+\customminilogo{مجلهٔ زیپرشین}
+\custommagazinename{مجلهٔ زیپرشین}
+\customwwwTxt{http://google.com}
+\begin{document}
+\begin{frontpage}
+\firstimage{img/ireland.jpg}{این زیرنویس تصویر اصلی در صفحهٔ اول است.}
+\firstarticle{این تیتر مقالهٔ اول است.}
+{خوب این قسمت کوچکی از مقالهٔ اول است که ما در حال نوشتن آن هستم. باید یک مقدار بنویسیم تا مقداری این قسمت پر شود تا بتوانیم چیز قشنگی داشته باشیم. دقت کنیم که بصورت انتخابی حتی میتوانیم زمان را هم درج کنیم که در سمت راست قرار میگیرد.}%
+{۱۲:۳۴}
+\secondarticle{این هم سر تیتر مقالهٔ دوم است.}%
+{این هم زیر تیتر مقالهٔ دوم است که آن را در اینجا مینویسیم.}%
+{خوب این قسمت کوچکی از مقالهٔ اول است که ما در حال نوشتن آن هستم. باید یک مقدار بنویسیم تا مقداری این قسمت پر شود تا بتوانیم چیز قشنگی داشته باشیم. دقت کنیم که بصورت انتخابی حتی میتوانیم زمان را هم درج کنیم که در سمت راست قرار میگیرد.}%
+{قسمت الف}%
+{۱۰:۲۳}
+
+\thirdarticle{این سرتیتر مقالهٔ سوم است.}%
+{این هم زیرتیتر مقالهٔ سوم است که ما آن را در اینجا قرار میدهیم.}%
+{خوب این قسمت کوچکی از مقالهٔ اول است که ما در حال نوشتن آن هستم. باید یک مقدار بنویسیم تا مقداری این قسمت پر شود تا بتوانیم چیز قشنگی داشته باشیم. دقت کنیم که بصورت انتخابی حتی میتوانیم زمان را هم درج کنیم که در سمت راست قرار میگیرد. و همانطور که میبینید من مطلبی برای گفتن ندارم فقط متن علکی مینویسم تا کمی صفحه را پر کرده باشم. اما در قسمتهای بعدی مقداری از سهراب سپهری خواهم نوشت.}%
+
+{قسمت ب}%
+{۱۰:۰۲}
+
+\begin{indexblock}{نمایه (فهرست مطالب) اصلی}
+\indexitem{۱- مقاله اول}{1}
+
+\indexitem{۲- مقاله دوم}{3}
+
+\indexitem{۳- مقاله سوم}{3}
+
+\indexitem{۴- مقاله چهارم}{5}
+\end{indexblock}
+
+\begin{weatherblock}{وضع آب و هوا}
+\weatheritem{img/weather/rain.jpg}{امروز}{13}{9}{}
+\weatheritem{img/weather/sun.jpg}{فردا}{15}{1}{}
+\weatheritem{img/weather/clouds.jpg}{جمعه}{12}{6}{}
+\end{weatherblock}
+
+\begin{authorblock}
+\textbf{ویرایشگران}
+
+وفا خلیقی، مهدی امیدعلی و مصطفی واحدی
+
+\texttt{me at somedomain.com\\[5pt]
+http://google.com}\\
+\end{authorblock}
+\end{frontpage}
+\newsection{قسمت الف}
+\begin{article}{2}
+{این تیتر این مقاله است.}
+{این هم زیرتیتر این مقاله هست.}
+{قسمت الف}
+{1}
+\authorandplace{نام نویسنده}{مکان}
+
+\noindent\timestamp{۸:۲۵}
+ويژگی اصلی که اين معماری را متمايز کرده و در دنيای اينترنت آنها در مقابل معماری قبلی شبكهها قرار داده است، امكان ايجاد ارتباط مستقيم بين كامپيوترهای مختلف بدون نياز به دخالت سرورهای قدرتمند در بين راه است. نام اين نوع معماری هم در واقع بر گرفته شده از همین ارتباط مستقیم بين گرهها است. در واقع در اين نوع شبكهها اثری از سرورها نيست و تمامی گرههای معمولی موجود در شبكه، بايد وظايفی را که قبلا بر عهدهی سرورها بود، خود انجام دهند. بنابراين در اين نوع معماری گرههای معمولی در ضمن اينکه از خدمات شبکه بهرهمند میشود بايد نقش خدمتگزار را هم ايفا کنند . در اين نوع شبکهها گرههای معمولی به كمك روشها و پروتكلهای توزيع شده، تمامی وظايف مسير يابی در شبكه، جستجوی منابع، امنيت شبكه و شناسايی هويت استفاده كنندهها و همچنين مقابله با حملات احتمالی مهاجمان را بر عهده دارند.
+\footnote{این یک زیرنویس فارسی است.}\LTRfootnote{This is an English footnote.}
+\begin{equation}
+(a+b)^3=a^3+3a^2b+3ab^2+b^3\label{eq-1}
+\end{equation}
+این معادلهٔ \eqref{eq-1} است.
+\columntitle{lines}{این را برای مهم یا نشان دادن حرفی مهم در این مجله انجام میدهیم.}
+
+ويژگی اصلی که اين معماری را متمايز کرده و در دنيای اينترنت آنها در مقابل معماری قبلی شبكهها قرار داده است، امكان ايجاد ارتباط مستقيم بين كامپيوترهای مختلف بدون نياز به دخالت سرورهای قدرتمند در بين راه است. نام اين نوع معماری هم در واقع بر گرفته شده از همین ارتباط مستقیم بين گرهها است. در واقع در اين نوع شبكهها اثری از سرورها نيست و تمامی گرههای معمولی موجود در شبكه، بايد وظايفی را که قبلا بر عهدهی سرورها بود، خود انجام دهند. بنابراين در اين نوع معماری گرههای معمولی در ضمن اينکه از خدمات شبکه بهرهمند میشود بايد نقش خدمتگزار را هم ايفا کنند . در اين نوع شبکهها گرههای معمولی به كمك روشها و پروتكلهای توزيع شده، تمامی وظايف مسير يابی در شبكه، جستجوی منابع، امنيت شبكه و شناسايی هويت استفاده كنندهها و همچنين مقابله با حملات احتمالی مهاجمان را بر عهده دارند.
+
+اما معماری همتابههمتا ويژگیهای ديگری نيز دارد که آن را هم برای فراهمکنندگان کاربردها و هم برای استفادهکنندگان جذابتر میکند. از آنجا که شبکههای همتابههمتا از همان زيرساختهای اينترنت استفاده میکنند ونيازی به راهاندازی سرورها ندارند، ساخت اين شبكهها بسيار ارزانتر از ايجاد زير ساختهای لازم برای راهاندازی شبكههای مشتری/خدمتگزار است. همچنين با زياد شدن تعداد کاربران چون درعمل تعداد گرههای ارائه کنندهی خدمات هم بالا میرود، نه تنها عملكرد شبكه افت پيدا نمیكند بلكه انتظار بهبود عملکرد نيز میرود. گذشته از اين موارد، مالكيت اين شبكهها به صورت اشتراكی بين تمام کاربران پخش شده و هيچ شخص يا شركتی نمیتواند سياستهای دلخواه خود را در اين نوع شبكهها اعمال کند.
+
+اماهيچ چيزی بی بها به دست نمیآید. نبود سرور مرکزی اگر چه ويژگیهای جذابی به شبکههای همتابههمتا میبخشد اما از طرف ديگر آنها را با دشواریهايی نيز روبهرو میکند. عدم وجود يك هماهنگ كننده مركزی در شبكه، انجام بسياری از امور و ارائه خدمات را دچار مشكل میکند. از يک طرف، تغيير و رفتوآمد زیاد کاربران از ويژگیهای ذاتی اين شبکهها است و از طرف ديگر در اين شبكهها، ديگر اين گرههای معمولی هستند كه عهدهدار تمامی وظايف هستند. به همين دلیل يکی از مشکلات اصلی فراروی اين شبكهها، مقابله با تغييرات لحظهای و فراهم آوردن ثبات در ارائه خدمات در بستری از بیثباتی است.
+\end{article}
+
+\articlesep
+
+\begin{article}{2}
+{این تیتر این مقاله است.}
+{این هم زیرتیتر این مقاله هست.}
+{قسمت الف}
+{1}
+\authorandplace{نام نویسنده}{مکان}
+
+\noindent\timestamp{08:25}
+ويژگی اصلی که اين معماری را متمايز کرده و در دنيای اينترنت آنها در مقابل معماری قبلی شبكهها قرار داده است، امكان ايجاد ارتباط مستقيم بين كامپيوترهای مختلف بدون نياز به دخالت سرورهای قدرتمند در بين راه است. نام اين نوع معماری هم در واقع بر گرفته شده از همین ارتباط مستقیم بين گرهها است. در واقع در اين نوع شبكهها اثری از سرورها نيست و تمامی گرههای معمولی موجود در شبكه، بايد وظايفی را که قبلا بر عهدهی سرورها بود، خود انجام دهند. بنابراين در اين نوع معماری گرههای معمولی در ضمن اينکه از خدمات شبکه بهرهمند میشود بايد نقش خدمتگزار را هم ايفا کنند . در اين نوع شبکهها گرههای معمولی به كمك روشها و پروتكلهای توزيع شده، تمامی وظايف مسير يابی در شبكه، جستجوی منابع، امنيت شبكه و شناسايی هويت استفاده كنندهها و همچنين مقابله با حملات احتمالی مهاجمان را بر عهده دارند.
+\LTRfootnote{This is an English footnote.}\footnote{این یک زیرنویس فارسی است.}
+اما معماری همتابههمتا ويژگیهای ديگری نيز دارد که آن را هم برای فراهمکنندگان کاربردها و هم برای استفادهکنندگان جذابتر میکند. از آنجا که شبکههای همتابههمتا از همان زيرساختهای اينترنت استفاده میکنند ونيازی به راهاندازی سرورها ندارند، ساخت اين شبكهها بسيار ارزانتر از ايجاد زير ساختهای لازم برای راهاندازی شبكههای مشتری/خدمتگزار است. همچنين با زياد شدن تعداد کاربران چون درعمل تعداد گرههای ارائه کنندهی خدمات هم بالا میرود، نه تنها عملكرد شبكه افت پيدا نمیكند بلكه انتظار بهبود عملکرد نيز میرود. گذشته از اين موارد، مالكيت اين شبكهها به صورت اشتراكی بين تمام کاربران پخش شده و هيچ شخص يا شركتی نمیتواند سياستهای دلخواه خود را در اين نوع شبكهها اعمال کند.
+
+اماهيچ چيزی بی بها به دست نمیآید. نبود سرور مرکزی اگر چه ويژگیهای جذابی به شبکههای همتابههمتا میبخشد اما از طرف ديگر آنها را با دشواریهايی نيز روبهرو میکند. عدم وجود يك هماهنگ كننده مركزی در شبكه، انجام بسياری از امور و ارائه خدمات را دچار مشكل میکند. از يک طرف، تغيير و رفتوآمد زیاد کاربران از ويژگیهای ذاتی اين شبکهها است و از طرف ديگر در اين شبكهها، ديگر اين گرههای معمولی هستند كه عهدهدار تمامی وظايف هستند. به همين دلیل يکی از مشکلات اصلی فراروی اين شبكهها، مقابله با تغييرات لحظهای و فراهم آوردن ثبات در ارائه خدمات در بستری از بیثباتی است.
+
+ويژگی اصلی که اين معماری را متمايز کرده و در دنيای اينترنت آنها در مقابل معماری قبلی شبكهها قرار داده است، امكان ايجاد ارتباط مستقيم بين كامپيوترهای مختلف بدون نياز به دخالت سرورهای قدرتمند در بين راه است. نام اين نوع معماری هم در واقع بر گرفته شده از همین ارتباط مستقیم بين گرهها است. در واقع در اين نوع شبكهها اثری از سرورها نيست و تمامی گرههای معمولی موجود در شبكه، بايد وظايفی را که قبلا بر عهدهی سرورها بود، خود انجام دهند. بنابراين در اين نوع معماری گرههای معمولی در ضمن اينکه از خدمات شبکه بهرهمند میشود بايد نقش خدمتگزار را هم ايفا کنند . در اين نوع شبکهها گرههای معمولی به كمك روشها و پروتكلهای توزيع شده، تمامی وظايف مسير يابی در شبكه، جستجوی منابع، امنيت شبكه و شناسايی هويت استفاده كنندهها و همچنين مقابله با حملات احتمالی مهاجمان را بر عهده دارند.
+
+اما معماری همتابههمتا ويژگیهای ديگری نيز دارد که آن را هم برای فراهمکنندگان کاربردها و هم برای استفادهکنندگان جذابتر میکند. از آنجا که شبکههای همتابههمتا از همان زيرساختهای اينترنت استفاده میکنند ونيازی به راهاندازی سرورها ندارند، ساخت اين شبكهها بسيار ارزانتر از ايجاد زير ساختهای لازم برای راهاندازی شبكههای مشتری/خدمتگزار است. همچنين با زياد شدن تعداد کاربران چون درعمل تعداد گرههای ارائه کنندهی خدمات هم بالا میرود، نه تنها عملكرد شبكه افت پيدا نمیكند بلكه انتظار بهبود عملکرد نيز میرود. گذشته از اين موارد، مالكيت اين شبكهها به صورت اشتراكی بين تمام کاربران پخش شده و هيچ شخص يا شركتی نمیتواند سياستهای دلخواه خود را در اين نوع شبكهها اعمال کند.
+
+اماهيچ چيزی بی بها به دست نمیآید. نبود سرور مرکزی اگر چه ويژگیهای جذابی به شبکههای همتابههمتا میبخشد اما از طرف ديگر آنها را با دشواریهايی نيز روبهرو میکند. عدم وجود يك هماهنگ كننده مركزی در شبكه، انجام بسياری از امور و ارائه خدمات را دچار مشكل میکند. از يک طرف، تغيير و رفتوآمد زیاد کاربران از ويژگیهای ذاتی اين شبکهها است و از طرف ديگر در اين شبكهها، ديگر اين گرههای معمولی هستند كه عهدهدار تمامی وظايف هستند. به همين دلیل يکی از مشکلات اصلی فراروی اين شبكهها، مقابله با تغييرات لحظهای و فراهم آوردن ثبات در ارائه خدمات در بستری از بیثباتی است.
+
+\expandedtitle{doublebox}{این هم مطلی است مهم یا چیزی که از خلاصهٔ این مقاله ما متوجه شدهایم و این برای ما و خوانندگان خیلی مهم است.}
+
+ويژگی اصلی که اين معماری را متمايز کرده و در دنيای اينترنت آنها در مقابل معماری قبلی شبكهها قرار داده است، امكان ايجاد ارتباط مستقيم بين كامپيوترهای مختلف بدون نياز به دخالت سرورهای قدرتمند در بين راه است. نام اين نوع معماری هم در واقع بر گرفته شده از همین ارتباط مستقیم بين گرهها است. در واقع در اين نوع شبكهها اثری از سرورها نيست و تمامی گرههای معمولی موجود در شبكه، بايد وظايفی را که قبلا بر عهدهی سرورها بود، خود انجام دهند. بنابراين در اين نوع معماری گرههای معمولی در ضمن اينکه از خدمات شبکه بهرهمند میشود بايد نقش خدمتگزار را هم ايفا کنند . در اين نوع شبکهها گرههای معمولی به كمك روشها و پروتكلهای توزيع شده، تمامی وظايف مسير يابی در شبكه، جستجوی منابع، امنيت شبكه و شناسايی هويت استفاده كنندهها و همچنين مقابله با حملات احتمالی مهاجمان را بر عهده دارند.
+
+اما معماری همتابههمتا ويژگیهای ديگری نيز دارد که آن را هم برای فراهمکنندگان کاربردها و هم برای استفادهکنندگان جذابتر میکند. از آنجا که شبکههای همتابههمتا از همان زيرساختهای اينترنت استفاده میکنند ونيازی به راهاندازی سرورها ندارند، ساخت اين شبكهها بسيار ارزانتر از ايجاد زير ساختهای لازم برای راهاندازی شبكههای مشتری/خدمتگزار است. همچنين با زياد شدن تعداد کاربران چون درعمل تعداد گرههای ارائه کنندهی خدمات هم بالا میرود، نه تنها عملكرد شبكه افت پيدا نمیكند بلكه انتظار بهبود عملکرد نيز میرود. گذشته از اين موارد، مالكيت اين شبكهها به صورت اشتراكی بين تمام کاربران پخش شده و هيچ شخص يا شركتی نمیتواند سياستهای دلخواه خود را در اين نوع شبكهها اعمال کند.
+
+اماهيچ چيزی بی بها به دست نمیآید. نبود سرور مرکزی اگر چه ويژگیهای جذابی به شبکههای همتابههمتا میبخشد اما از طرف ديگر آنها را با دشواریهايی نيز روبهرو میکند. عدم وجود يك هماهنگ كننده مركزی در شبكه، انجام بسياری از امور و ارائه خدمات را دچار مشكل میکند. از يک طرف، تغيير و رفتوآمد زیاد کاربران از ويژگیهای ذاتی اين شبکهها است و از طرف ديگر در اين شبكهها، ديگر اين گرههای معمولی هستند كه عهدهدار تمامی وظايف هستند. به همين دلیل يکی از مشکلات اصلی فراروی اين شبكهها، مقابله با تغييرات لحظهای و فراهم آوردن ثبات در ارائه خدمات در بستری از بیثباتی است.
+\end{article}
+
+\articlesep
+
+\newsection{قسمت ب}
+
+\begin{article}{2}
+{این یک تیتر کوتاه است.وفا خلیقی}
+{این هم مثل همیشه زیرتیتر است که ما آن را در اینجا قرار میدهیم.}
+{قسمت ب}
+{3}
+
+\authorandplace{نام نویسنده}{مکان}
+
+\noindent\timestamp{08:25} et ويژگی اصلی که اين معماری را متمايز کرده و در دنيای اينترنت آنها در مقابل معماری قبلی شبكهها قرار داده است، امكان ايجاد ارتباط مستقيم بين كامپيوترهای مختلف بدون نياز به دخالت سرورهای قدرتمند در بين راه است. نام اين نوع معماری هم در واقع بر گرفته شده از همین ارتباط مستقیم بين گرهها است. در واقع در اين نوع شبكهها اثری از سرورها نيست و تمامی گرههای معمولی موجود در شبكه، بايد وظايفی را که قبلا بر عهدهی سرورها بود، خود انجام دهند. بنابراين در اين نوع معماری گرههای معمولی در ضمن اينکه از خدمات شبکه بهرهمند میشود بايد نقش خدمتگزار را هم ايفا کنند . در اين نوع شبکهها گرههای معمولی به كمك روشها و پروتكلهای توزيع شده، تمامی وظايف مسير يابی در شبكه، جستجوی منابع، امنيت شبكه و شناسايی هويت استفاده كنندهها و همچنين مقابله با حملات احتمالی مهاجمان را بر عهده دارند.
+
+اما معماری همتابههمتا ويژگیهای ديگری نيز دارد که آن را هم برای فراهمکنندگان کاربردها و هم برای استفادهکنندگان جذابتر میکند. از آنجا که شبکههای همتابههمتا از همان زيرساختهای اينترنت استفاده میکنند ونيازی به راهاندازی سرورها ندارند، ساخت اين شبكهها بسيار ارزانتر از ايجاد زير ساختهای لازم برای راهاندازی شبكههای مشتری/خدمتگزار است. همچنين با زياد شدن تعداد کاربران چون درعمل تعداد گرههای ارائه کنندهی خدمات هم بالا میرود، نه تنها عملكرد شبكه افت پيدا نمیكند بلكه انتظار بهبود عملکرد نيز میرود. گذشته از اين موارد، مالكيت اين شبكهها به صورت اشتراكی بين تمام کاربران پخش شده و هيچ شخص يا شركتی نمیتواند سياستهای دلخواه خود را در اين نوع شبكهها اعمال کند.
+
+اماهيچ چيزی بی بها به دست نمیآید. نبود سرور مرکزی اگر چه ويژگیهای جذابی به شبکههای همتابههمتا میبخشد اما از طرف ديگر آنها را با دشواریهايی نيز روبهرو میکند. عدم وجود يك هماهنگ كننده مركزی در شبكه، انجام بسياری از امور و ارائه خدمات را دچار مشكل میکند. از يک طرف، تغيير و رفتوآمد زیاد کاربران از ويژگیهای ذاتی اين شبکهها است و از طرف ديگر در اين شبكهها، ديگر اين گرههای معمولی هستند كه عهدهدار تمامی وظايف هستند. به همين دلیل يکی از مشکلات اصلی فراروی اين شبكهها، مقابله با تغييرات لحظهای و فراهم آوردن ثبات در ارائه خدمات در بستری از بیثباتی است.
+
+ويژگی اصلی که اين معماری را متمايز کرده و در دنيای اينترنت آنها در مقابل معماری قبلی شبكهها قرار داده است، امكان ايجاد ارتباط مستقيم بين كامپيوترهای مختلف بدون نياز به دخالت سرورهای قدرتمند در بين راه است. نام اين نوع معماری هم در واقع بر گرفته شده از همین ارتباط مستقیم بين گرهها است. در واقع در اين نوع شبكهها اثری از سرورها نيست و تمامی گرههای معمولی موجود در شبكه، بايد وظايفی را که قبلا بر عهدهی سرورها بود، خود انجام دهند. بنابراين در اين نوع معماری گرههای معمولی در ضمن اينکه از خدمات شبکه بهرهمند میشود بايد نقش خدمتگزار را هم ايفا کنند . در اين نوع شبکهها گرههای معمولی به كمك روشها و پروتكلهای توزيع شده، تمامی وظايف مسير يابی در شبكه، جستجوی منابع، امنيت شبكه و شناسايی هويت استفاده كنندهها و همچنين مقابله با حملات احتمالی مهاجمان را بر عهده دارند.
+
+اما معماری همتابههمتا ويژگیهای ديگری نيز دارد که آن را هم برای فراهمکنندگان کاربردها و هم برای استفادهکنندگان جذابتر میکند. از آنجا که شبکههای همتابههمتا از همان زيرساختهای اينترنت استفاده میکنند ونيازی به راهاندازی سرورها ندارند، ساخت اين شبكهها بسيار ارزانتر از ايجاد زير ساختهای لازم برای راهاندازی شبكههای مشتری/خدمتگزار است. همچنين با زياد شدن تعداد کاربران چون درعمل تعداد گرههای ارائه کنندهی خدمات هم بالا میرود، نه تنها عملكرد شبكه افت پيدا نمیكند بلكه انتظار بهبود عملکرد نيز میرود. گذشته از اين موارد، مالكيت اين شبكهها به صورت اشتراكی بين تمام کاربران پخش شده و هيچ شخص يا شركتی نمیتواند سياستهای دلخواه خود را در اين نوع شبكهها اعمال کند.
+
+اماهيچ چيزی بی بها به دست نمیآید. نبود سرور مرکزی اگر چه ويژگیهای جذابی به شبکههای همتابههمتا میبخشد اما از طرف ديگر آنها را با دشواریهايی نيز روبهرو میکند. عدم وجود يك هماهنگ كننده مركزی در شبكه، انجام بسياری از امور و ارائه خدمات را دچار مشكل میکند. از يک طرف، تغيير و رفتوآمد زیاد کاربران از ويژگیهای ذاتی اين شبکهها است و از طرف ديگر در اين شبكهها، ديگر اين گرههای معمولی هستند كه عهدهدار تمامی وظايف هستند. به همين دلیل يکی از مشکلات اصلی فراروی اين شبكهها، مقابله با تغييرات لحظهای و فراهم آوردن ثبات در ارائه خدمات در بستری از بیثباتی است.
+
+\expandedtitle{lines}{این هم دوباره مطلب مهمی است که ما آن را از لابلای این مقاله برای خواننده درست کردهایم.}
+
+ويژگی اصلی که اين معماری را متمايز کرده و در دنيای اينترنت آنها در مقابل معماری قبلی شبكهها قرار داده است، امكان ايجاد ارتباط مستقيم بين كامپيوترهای مختلف بدون نياز به دخالت سرورهای قدرتمند در بين راه است. نام اين نوع معماری هم در واقع بر گرفته شده از همین ارتباط مستقیم بين گرهها است. در واقع در اين نوع شبكهها اثری از سرورها نيست و تمامی گرههای معمولی موجود در شبكه، بايد وظايفی را که قبلا بر عهدهی سرورها بود، خود انجام دهند. بنابراين در اين نوع معماری گرههای معمولی در ضمن اينکه از خدمات شبکه بهرهمند میشود بايد نقش خدمتگزار را هم ايفا کنند . در اين نوع شبکهها گرههای معمولی به كمك روشها و پروتكلهای توزيع شده، تمامی وظايف مسير يابی در شبكه، جستجوی منابع، امنيت شبكه و شناسايی هويت استفاده كنندهها و همچنين مقابله با حملات احتمالی مهاجمان را بر عهده دارند.
+
+اما معماری همتابههمتا ويژگیهای ديگری نيز دارد که آن را هم برای فراهمکنندگان کاربردها و هم برای استفادهکنندگان جذابتر میکند. از آنجا که شبکههای همتابههمتا از همان زيرساختهای اينترنت استفاده میکنند ونيازی به راهاندازی سرورها ندارند، ساخت اين شبكهها بسيار ارزانتر از ايجاد زير ساختهای لازم برای راهاندازی شبكههای مشتری/خدمتگزار است. همچنين با زياد شدن تعداد کاربران چون درعمل تعداد گرههای ارائه کنندهی خدمات هم بالا میرود، نه تنها عملكرد شبكه افت پيدا نمیكند بلكه انتظار بهبود عملکرد نيز میرود. گذشته از اين موارد، مالكيت اين شبكهها به صورت اشتراكی بين تمام کاربران پخش شده و هيچ شخص يا شركتی نمیتواند سياستهای دلخواه خود را در اين نوع شبكهها اعمال کند.
+
+اماهيچ چيزی بی بها به دست نمیآید. نبود سرور مرکزی اگر چه ويژگیهای جذابی به شبکههای همتابههمتا میبخشد اما از طرف ديگر آنها را با دشواریهايی نيز روبهرو میکند. عدم وجود يك هماهنگ كننده مركزی در شبكه، انجام بسياری از امور و ارائه خدمات را دچار مشكل میکند. از يک طرف، تغيير و رفتوآمد زیاد کاربران از ويژگیهای ذاتی اين شبکهها است و از طرف ديگر در اين شبكهها، ديگر اين گرههای معمولی هستند كه عهدهدار تمامی وظايف هستند. به همين دلیل يکی از مشکلات اصلی فراروی اين شبكهها، مقابله با تغييرات لحظهای و فراهم آوردن ثبات در ارائه خدمات در بستری از بیثباتی است.
+\end{article}
+
+\articlesep
+
+\begin{editorial}{1}{این یک مثال از مقالهای از طرف ویرایشگر است.}{نام و نام خانوادگی}{4}
+يژگی اصلی که اين معماری را متمايز کرده و در دنيای اينترنت آنها در مقابل معماری قبلی شبكهها قرار داده است، امكان ايجاد ارتباط مستقيم بين كامپيوترهای مختلف بدون نياز به دخالت سرورهای قدرتمند در بين راه است. نام اين نوع معماری هم در واقع بر گرفته شده از همین ارتباط مستقیم بين گرهها است. در واقع در اين نوع شبكهها اثری از سرورها نيست و تمامی گرههای معمولی موجود در شبكه، بايد وظايفی را که قبلا بر عهدهی سرورها بود، خود انجام دهند. بنابراين در اين نوع معماری گرههای معمولی در ضمن اينکه از خدمات شبکه بهرهمند میشود بايد نقش خدمتگزار را هم ايفا کنند . در اين نوع شبکهها گرههای معمولی به كمك روشها و پروتكلهای توزيع شده، تمامی وظايف مسير يابی در شبكه، جستجوی منابع، امنيت شبكه و شناسايی هويت استفاده كنندهها و همچنين مقابله با حملات احتمالی مهاجمان را بر عهده دارند.
+
+اما معماری همتابههمتا ويژگیهای ديگری نيز دارد که آن را هم برای فراهمکنندگان کاربردها و هم برای استفادهکنندگان جذابتر میکند. از آنجا که شبکههای همتابههمتا از همان زيرساختهای اينترنت استفاده میکنند ونيازی به راهاندازی سرورها ندارند، ساخت اين شبكهها بسيار ارزانتر از ايجاد زير ساختهای لازم برای راهاندازی شبكههای مشتری/خدمتگزار است. همچنين با زياد شدن تعداد کاربران چون درعمل تعداد گرههای ارائه کنندهی خدمات هم بالا میرود، نه تنها عملكرد شبكه افت پيدا نمیكند بلكه انتظار بهبود عملکرد نيز میرود. گذشته از اين موارد، مالكيت اين شبكهها به صورت اشتراكی بين تمام کاربران پخش شده و هيچ شخص يا شركتی نمیتواند سياستهای دلخواه خود را در اين نوع شبكهها اعمال کند.
+
+اماهيچ چيزی بی بها به دست نمیآید. نبود سرور مرکزی اگر چه ويژگیهای جذابی به شبکههای همتابههمتا میبخشد اما از طرف ديگر آنها را با دشواریهايی نيز روبهرو میکند. عدم وجود يك هماهنگ كننده مركزی در شبكه، انجام بسياری از امور و ارائه خدمات را دچار مشكل میکند. از يک طرف، تغيير و رفتوآمد زیاد کاربران از ويژگی