انجمن ویکی قلم‌های فارسی
ورود / عضویت

حروفچینی فارسی در زیپرشین (زیپرژن XePersian) و بای‌دای(bidi)

بحث پیرامون مسائل مربوط به قلم‌سازی، حروف‌چینی و بومی‌سازی

حروفچینی فارسی در زیپرشین (زیپرژن XePersian) و بای‌دای(bidi)

پستتوسط mingranina » 09 مارس 2018, 22:54

با سلام

زیپرژن (XePersian) که به زیپرشین معروف شده است به همراه بای‌دای (bidi) از جمله نرم‌افزارهای متداول حروفچینی در فارسی هستند. از این پس در اینجا اشکال‌ها و در صورت امکان روش‌های رفع آنها در این نرم‌افزارها بررسی می‌شوند.

با تشکر
در کل 1 بار ویرایش شده. اخرین ویرایش توسط mingranina در 09 مارس 2018, 23:37.
mingranina
 
پست‌ها : 36
تاریخ عضویت: 17 سپتامبر 2016, 07:53

فاصلهٔ ناموزون بین نظم و نثر در XePersian

پستتوسط mingranina » 09 مارس 2018, 23:10

با سلام

کد زیر نمونه‌ای از حروفچینی نظم و نثر در زیپرشین است:
کد: انتخاب همهٔ
% test-spaces-in-poem.tex
\PassOptionsToPackage{pdfinfo=off}{bidi}
\documentclass{article}
\usepackage{bidipoem}
\usepackage[logo=off]{xepersian}
\settextfont[Scale=1.2]{HM XYas}
\linespread{1.5}
\pagestyle{empty}
\begin{document}
\renewcommand\poemcolsepskip{1.0cm}
این یک آزمایش است. این یک آزمایش است. این یک آزمایش است.
\begin{traditionalpoem}
آنانکه محیط فضل و آداب شدند & در جمع کمال شمع اصحاب شدند \\
ره زین شب تاریک نبردند برون & گفتند فسانه‌ای و در خواب شدند
\end{traditionalpoem}
این یک آزمایش است. این یک آزمایش است. ... ... ... .. این یک آزمایش است.
\begin{traditionalpoem}
آنانکه محیط فضل و آداب شدند & در جمع کمال شمع اصحاب شدند \\
ره زین شب تاریک نبردند برون & گفتند فسانه‌ای و در خواب شدند
\end{traditionalpoem}
این یک آزمایش است. این یک آزمایش است. ... ... ... . این یک آزمایش است.
\begin{traditionalpoem}
آنانکه محیط فضل و آداب شدند & در جمع کمال شمع اصحاب شدند \\
ره زین شب تاریک نبردند برون & گفتند فسانه‌ای و در خواب شدند
\end{traditionalpoem}
این یک آزمایش است. این یک آزمایش است. این یک آزمایش است.
\end{document}

خروجی کد فوق با استفاده از دستور سادهٔ «xelatex test-spaces-in-poem.tex» بصورت زیر است:

test-spaces-in-poem.png

مشاهده می‌شود که فاصلهٔ شعر دوم تا متن بالای آن بیشتر است. برای رفع این اشکال کافی است خط 186 از فایل bidipoem.sty:
/Your-TeXLive-Dir/texmf-dist/tex/xelatex/bidi/bidipoem.sty

یعنی کد
\poemskip\par

را با کد زیر جایگزین کنید:
\par\poemskip


با تشکر
در کل 1 بار ویرایش شده. اخرین ویرایش توسط mingranina در 14 مارس 2018, 02:51.
mingranina
 
پست‌ها : 36
تاریخ عضویت: 17 سپتامبر 2016, 07:53

دستور مبتنی بر محیط‌ آرگومان‌دار در بستهٔ xparse

پستتوسط mingranina » 14 مارس 2018, 02:49

با سلام

کد زیر نمونه‌ای از حروفچینی در زیپرشین است:
کد: انتخاب همهٔ
% test-xparse-environemnt-argumrnts.tex
\PassOptionsToPackage{pdfinfo=off}{bidi}
\documentclass[10pt]{article}
\usepackage{xparse}
\usepackage{xcolor}%
\usepackage[framemethod=TikZ]{mdframed}
\usepackage[logo=off]{xepersian}
\settextfont{HM XYas}
\setdigitfont{HM XYas}
\pagestyle{empty}
\begin{document}
\NewDocumentEnvironment {MyBoxEnv} {O{} O{4}}
  {\mdfdefinestyle{fboxeddefault}{leftmargin=#2mm,rightmargin=#2mm}
  \begin{mdframed}[style=fboxeddefault]{\bf\textcolor{red}{#1}}}
  {\end{mdframed}}
\DeclareDocumentCommand{\MyBox}{O{} O{} m}{\begin{MyBoxEnv}[#1][#2]#3\end{MyBoxEnv}}
\begin{MyBoxEnv}[][9]
  این آزمایش ۱ است.
\end{MyBoxEnv}
\begin{MyBoxEnv}[عنوان:]
  این آزمایش ۲ است.
\end{MyBoxEnv}
\begin{MyBoxEnv}
  این آزمایش ۳ است.
\end{MyBoxEnv}
\MyBox[عنوان: ][13]{این آزمایش ۴ است.}
\MyBox{این آزمایش ۵ است.}
\end{document}

اگر کد فوق را اجرا کنید با خطای زیر مواجه می‌شوید:
! Missing number, treated as zero.
<to be read again>
m
l.31 \MyBox{این آزمایش ۵ است.}

علت این است که با بیان دستور ‎\MyBox‎ به صورت فوق فقط یکای طول (در اینجا mm) به متغیرهای leftmargin و rightmargin منسوب می‌شود. برای رفع این اشکال باید دستور ‎\MyBox‎، به عنوان مثال، به صورت زیر بیان شود:

\DeclareDocumentCommand{\MyBox}{O{} O{4} m}{\begin{MyBoxEnv}[#1][#2]#3\end{MyBoxEnv}}

با بیان فوق، مقدار پیش‌فرض و یکای طول آن، در اینجا ‎4mm‎، به متغیرهای leftmargin و rightmargin منسوب می‌شود و خروجی کد فوق خواهد شد:

test-xparse-environemnt-argumrnts.png

در دستور
‎\MyBox[عنوان: ][13]{این آزمایش ۴ است.}‎

لطفاً به فاصلهٔ اضافی بعد از «عنوان: » توجه داشته باشید.

با تشکر
mingranina
 
پست‌ها : 36
تاریخ عضویت: 17 سپتامبر 2016, 07:53

پاسخ: حروفچینی فارسی در زیپرشین (زیپرژن XePersian) و بای‌دای

پستتوسط Ahmad » 16 مارس 2018, 00:23

با تشکر از معرفی این برنامه ولی من دقیقا متوجه نمی‌شوم که چرا برای انجام یک چنین کاری که در برنامه‌های دیگر با چند کلیک انجام می‌شود آدم خودش را شکنجه بدهد از طریق نوشتن یک صفحه کدهای مختلف
نماد کاربر
Ahmad
Site Admin
 
پست‌ها : 1247
تاریخ عضویت: 30 مه 2004, 17:33
محل سکونت: سوئد

پاسخ: حروفچینی فارسی در زیپرشین (زیپرژن XePersian) و بای‌دای

پستتوسط mingranina » 17 مارس 2018, 00:16

با سلام

البته در مورد مشکل بودن استفاده از TeX و دوستانش حق با شماست، اما استفاده از آنها مزیت‌های خاص خود را دارد. برای توضیحات بیشتر لطفاً لینک زیر را ببینید:

حروفچینی فارسی در کانتکست (ConTeXt)

با تشکر
mingranina
 
پست‌ها : 36
تاریخ عضویت: 17 سپتامبر 2016, 07:53

دستور ‎\index‎ در حروفچینی شعر در XePersian

پستتوسط mingranina » 17 مارس 2018, 00:26

با سلام

کد زیر نمونه‌ای از استفاده از دستور ‎\index‎ در حروفچینی شعر در زیپرشین است:
کد: انتخاب همهٔ
% index-bidipoem.tex
\PassOptionsToPackage{pdfinfo=off}{bidi}
\documentclass{article}
\usepackage[top=25mm, bottom=25mm, left=18mm, right=18mm]{geometry}
\usepackage{makeidx}
\usepackage{hyperref}
\usepackage{multicol}
\usepackage[logo=off,quickindex]{xepersian}
\usepackage{bidipoem}
\settextfont[Scale=1.2]{HM XYas}
\renewcommand{\baselinestretch}{1.5}
\makeindex
\setlength{\columnseprule}{0.5pt}
\renewcommand\poemcolsepskip{1.0cm}
\pagestyle{empty}
\begin{document}
\centerline{شعر شمارهٔ ۱}
\begin{traditionalpoem}
این مصرع اول از اول است. & این مصرع دوم از اول است.\index{بیت اول}  \\
این مصرع اول از دوم است. & این مصرع دوم از دوم است.\index{مصرع دوم} \\
این مصرع اول از سوم است. & این مصرع دوم از سوم است.\index{مصرع سوم} \\
\end{traditionalpoem}
\centerline{شعر شمارهٔ ۲}
\begin{traditionalpoem}
این مصرع اول . از چهارم است. & این مصرع دوم . از چهارم است. \index{بیت چهارم} \\
این مصرع اول از پنجم است.  & این مصرع دوم از پنجم است.      \index{مصرع پنجم} \\
این مصرع اول .. از ششم است.   & این مصرع دوم .. از ششم است. \index{مصرع ششم}  \\
\end{traditionalpoem}
\centerline{شعر شمارهٔ ۳}
\begin{traditionalpoem}
این مصرع اول از هفتم است. & این مصرع دوم از هفتم است.     \index{بیت هفتم}  \\
این مصرع اول . از هشتم است. & این مصرع دوم . از هشتم است. \index{مصرع هشتم} \\
این مصرع اول از نهم است.  & این مصرع دوم از نهم است.      \index{مصرع نهم}  \\
\end{traditionalpoem}
\printindex
\end{document}

خروجی کد فوق با استفاده از دستور سادهٔ «xelatex --shell-escape index-bidipoem.tex» بصورت زیر است:

index-bidipoem-1.png

مشاهده می‌شود که در شعر اول که دستور ‎\index‎ به متن چسبیده است سطرها موزون هستند. اما اگر برای خواناتر شدن کد بین دستور ‎\index‎ و متن در شعر دوم و سوم فاصله ایجاد کنید آنگاه سطرها به‌هم می‌ریزد.

برای رفع این اشکال، یک راه‌حل این است که دستور ‎\index‎ را بازتعریف و راه‌حل دیکر آن است که دستور جدیدی مثل ‎\MyIndex‎ تعریف و قبل از دستور ‎\makeindex‎ قرار دهید:
کد: انتخاب همهٔ
% index-bidipoem.tex
\PassOptionsToPackage{pdfinfo=off}{bidi}
\documentclass{article}
\usepackage[top=25mm, bottom=25mm, left=18mm, right=18mm]{geometry}
\usepackage{makeidx}
\usepackage{hyperref}
\usepackage{multicol}
\usepackage[logo=off,quickindex]{xepersian}
\usepackage{bidipoem}
\settextfont[Scale=1.2]{HM XYas}
\renewcommand{\baselinestretch}{1.5}
\def\MyIndex#1{\unskip\relax\index{#1}}
\makeatletter
\def\makeindex{%
  \newwrite\@indexfile
  \immediate\openout\@indexfile=\jobname.idx
  \def\index{\unskip\@bsphack\begingroup
             \@sanitize
             \@wrindex}\typeout
    {Writing index file \jobname.idx}%
  \let\makeindex\@empty
}
\makeatother
\makeindex
\setlength{\columnseprule}{0.5pt}
\renewcommand\poemcolsepskip{1.0cm}
\pagestyle{empty}
\begin{document}
\centerline{شعر شمارهٔ ۱}
\begin{traditionalpoem}
این مصرع اول از اول است. & این مصرع دوم از اول است.\index{بیت اول}  \\
این مصرع اول از دوم است. & این مصرع دوم از دوم است.\index{مصرع دوم} \\
این مصرع اول از سوم است. & این مصرع دوم از سوم است.\index{مصرع سوم} \\
\end{traditionalpoem}
\centerline{شعر شمارهٔ ۲}
\begin{traditionalpoem}
این مصرع اول . از چهارم است. & این مصرع دوم . از چهارم است. \index{بیت چهارم} \\
این مصرع اول از پنجم است.  & این مصرع دوم از پنجم است.      \index{مصرع پنجم} \\
این مصرع اول .. از ششم است.   & این مصرع دوم .. از ششم است. \index{مصرع ششم}  \\
\end{traditionalpoem}
\centerline{شعر شمارهٔ ۳}
\begin{traditionalpoem}
این مصرع اول از هفتم است. & این مصرع دوم از هفتم است.     \MyIndex{بیت هفتم}  \\
این مصرع اول . از هشتم است. & این مصرع دوم . از هشتم است. \MyIndex{مصرع هشتم} \\
این مصرع اول از نهم است.  & این مصرع دوم از نهم است.      \MyIndex{مصرع نهم}  \\
\end{traditionalpoem}
\printindex
\end{document}

خروجی کد فوق بصورت زیر است و مشاهده می‌شود که سطرها در هر سه شعر موزون هستند:

index-bidipoem-2.png

با تشکر
mingranina
 
پست‌ها : 36
تاریخ عضویت: 17 سپتامبر 2016, 07:53

مراجع و منابع برای فراگیری TeX و دوستانش

پستتوسط mingranina » 19 مارس 2018, 21:06

با سلام

فهرست برخی از منابع و مراجعی که برای فراگیری TeX و دوستانش ممکن است مفید باشند (و به تدریج کامل‌تر خواهد شد):
References and Resources:

TeX:
[1] Knuth D.E. (1996) The TeXbook
[2] Eijkhout V. (2013) TeX By Topic
[3] Abrahams P.W et al. (2013) TeX For The Impatient
[4] von Bechtolsheim S. (1993) TeX In Practice vol. I: Basics
[5] von Bechtolsheim S. (1993) TeX In Practice vol. II: Paragraphs, Math and Fonts
[6] von Bechtolsheim S. (1993) TeX In Practice vol. III: Tokens, Macros
[7] von Bechtolsheim S. (1993) TeX In Practice vol. IV: Output, Routines, Tables
[8] Salomon D. (1995) The Advanced TeXbook
[9] Seroul R. et al. (1995) A Beginner's Book of TeX
[10] Doob M. (1984) A Gentle Introduction To TeX
[11] Krieger J. & Schwarz N. (1989) Introduction To TeX
[12] Gurari E.M. (1994) Writing With TeX
[13] Bausum D. (2002) TeX Reference Manual
[14] Knuth D.E. (1986) The Metafont Book

LaTeX:
[15] Lamport L. (1994) LaTeX, A Document Preparation System 2nd Ed
[16] Mittelbach F. et al. (2004) The LaTeX Companion 2nd Ed
[17] Goossens M. et al. (2008) The LaTeX Graphics Companion 2nd Ed
[18] Goossens M. et al. (1999) The LaTeX Web Companion Integrating TeX HTML and XML
[19] Maltby, G. (1992) An Introduction to TeX and Friends
[20] Kopka H. & Daly P. (2004) A Guide to LaTeX 4th Ed
[21] van Dongen M.R.C. LaTeX and Friends
[22] Eijkhout V. (2012) The Computer Science of TeX and LaTeX
[23] Braams J. et al. (2017) The LaTeX2e Sources

علاوه بر منابع و مراجع فوق، هر بستهٔ TeX و دوستانش یک راهنمای کاربری دارد که با استفاده از دستور texdoc می‌توان از آن استفاده کرد. به عنوان مثال برای راهنمای بستهٔ tikz کافی است دستور زیر را در خط فرمان تایپ کنید:
texdoc tikz

برخی از این راهنماهای کاربری عبارتند از:
XeTeX:
[24] The Not So Short Introduction to LaTeX2e
[25] LaTeX2e The macro package for TeX
[26] LaTeX2e for authors
[27] LaTeX2e for class and package writers
[28] Modifying LaTeX
[29] Configuration options for LaTeX2e
[30] The fontspec package
[31] The fontspec package examples
[32] The expl3 package and LaTeX3 programming
[33] The LaTeX3 Interfaces
[34] The LaTeX3 Sources
[35] The pdfTeX user manual
[36] The Comprehensive LaTeX Symbol List
[37] LaTeX2e Maths Symbols
[38] Script fonts for mathematical use available to LaTeX users
[39] Every symbol (most symbols) defined by unicode-math
[40] Users's Guide to AMS_TeX
[41] User's Guide to AMSFonts Version 2.2d
[42] The eucal and euscript packages
[43] The eufrak package
[44] The RevTeX4-1 document class of the Amerian Physical Society
[45] A LaTeX Package of utilitiy macros (REVTeX4)
[46] The DocStrip program
[47] Babel, a multilingual package
[48] The XeTeX Companion
[49] The XeTeX reference guide
[50] About XeTeX
[51] The bidi package-v32.1
[52] The bidi package-latest version
[53] XePersian Users's Guide-20.6
[54] XePersian Users's Guide-latest version

با تشکر
mingranina
 
پست‌ها : 36
تاریخ عضویت: 17 سپتامبر 2016, 07:53

فاصلهٔ بین حروف با گزینهٔ کشیده در زیپرشین (XePersian)

پستتوسط mingranina » 27 مارس 2018, 19:39

با سلام

کد زیر نمونه‌ای از گزینهٔ کشیده (Kashida) در زیپرشین (XePersian) است که در آن از فونت‌‎XB Niloofar‎ استفاده شده است:
کد: انتخاب همهٔ
% space-between-letters-with-kashida-XB.tex
\PassOptionsToPackage{pdfinfo=off}{bidi}
\documentclass{report}
\usepackage{amsthm}
\usepackage[logo=off,Kashida,KashidaXBFix]{xepersian}
\settextfont[Scale=9]{XB Niloofar}
\setdigitfont[Scale=9]{XB Niloofar}
\chardef\kashida="0640
\theoremstyle{plain}
\newtheorem{theorem}{قضیه}[section]
\newtheorem{definition}[theorem]{تعریف}
\pagestyle{empty}
\begin{document}
\begin{definition}
  این آزمایش تعریف ریاضی است.
  ها \kashida
\end{definition}
\end{document}

خروجی کد فوق با دستور «xelatex space-between-letters-with-kashida.tex» بصورت زیر است:

space-between-letters-with-kashida-XB.png

ملاحظه می‌شود که بین حروفی که کشیده شده فاصله افتاده است. این مشکل با فونت‌های دیگر سری XB یا همان X Series 2 و از جمله فونت یاس Yas (که از فونت‌XB Yas به‌دست آمده) و بسیاری از فونت‌های دیگر نیز وجود دارد. علت آن است که زیپرشین برای کشیدن حروف از دستور ‎\hrule‎ استفاده می‌کند.
برای رفع این مشکل باید از فونت‌های سری HM استفاده کرد که از همان فونت‌های X Series 2 نتیجه شده و البته اصلاحاتی روی آنها انجام شده است. این فونت‌ها را می‌توانید از اینجا دانلود و نصب کنید.
پس از اجرای کد زیر که در آن از فونت‌های سری HM استفاده شده:
کد: انتخاب همهٔ
% space-between-letters-with-kashida-HM.tex
\PassOptionsToPackage{pdfinfo=off}{bidi}
\documentclass{report}
\usepackage{amsthm}
\usepackage[logo=off,Kashida]{xepersian}
\settextfont[Scale=9]{HM XNiloofar}
\setdigitfont[Scale=9]{HM XNiloofar}
\chardef\kashida="0640
\theoremstyle{plain}
\newtheorem{theorem}{قضیه}[section]
\newtheorem{definition}[theorem]{تعریف}
\pagestyle{empty}
\begin{document}
\begin{definition}
  این آزمایش تعریف ریاضی است.
  ها \kashida
\end{definition}
\end{document}

خروجی به‌صورت زیر است (توجه کنید که در این حالت گزینهٔ KashidaXBFix حذف شده است زیرا با فونت‌های سری HM نیازی به این گزینه نیست):

space-between-letters-with-kashida-HM.png

نرم‌افزارهای مورد استفاده:

bidi: v32.9, 2018/02/22
xepersian: v21.1, 2018/01/28


با تشکر
در کل 1 بار ویرایش شده. اخرین ویرایش توسط mingranina در 29 آوریل 2018, 17:12.
mingranina
 
پست‌ها : 36
تاریخ عضویت: 17 سپتامبر 2016, 07:53

اصلاح مکان خط پانویس در XePersian

پستتوسط mingranina » 29 آوریل 2018, 13:56

با سلام

در زیپرشین (XePersian) اگر از گزینهٔ extrafootnotefeatures و بستهٔ ‎multicols*‎ استفاده شود صرفنظر از اینکه اولین پانویس در یک صفحه فارسی باشد یا لاتین، خط پانویس همیشه در سمت چپ صفحهٔ مربوطه قرار می‌گیرد. کد زیر نمونه‌ای از این مورد است:
کد: انتخاب همهٔ
% footnoterule-position.tex
\PassOptionsToPackage{pdfinfo=off}{bidi}
\documentclass{article}
\usepackage{multicol,ptext}
\usepackage[extrafootnotefeatures,logo=off]{xepersian}

\settextfont{HM XYas}

\begin{document}
\begin{multicols*}{2}

این یک آزمایش است.
\RTLfootnote{آزمایش پانویس}

\lr{This is a test.}
\LTRfootnote{Footnote test}

\ptext[1-7]
\newpage
\lr{This is a test.}
\LTRfootnote{Footnote test}

این یک آزمایش است.
\RTLfootnote{آزمایش پانویس}
\ptext[8-14]

\newpage
این یک آزمایش است.
\RTLfootnote{
 آزمایش پانویس آزمایش پانویس آزمایش پانویس آزمایش پانویس
 آزمایش پانویس آزمایش پانویس آزمایش پانویس آزمایش پانویس
 آزمایش پانویس آزمایش پانویس آزمایش پانویس آزمایش پانویس
 }

\lr{This is a test.}
\LTRfootnote{
 Footnote test Footnote test Footnote test Footnote test
 Footnote test Footnote test Footnote test Footnote test
 Footnote test Footnote test Footnote test Footnote test
 }

\ptext[15-21]
\newpage
\lr{This is a test.}
\LTRfootnote{
 Footnote test Footnote test Footnote test Footnote test
 Footnote test Footnote test Footnote test Footnote test
 Footnote test Footnote test Footnote test Footnote test
 }

این یک آزمایش است.
\RTLfootnote{
 آزمایش پانویس آزمایش پانویس آزمایش پانویس آزمایش پانویس
 آزمایش پانویس آزمایش پانویس آزمایش پانویس آزمایش پانویس
 آزمایش پانویس آزمایش پانویس آزمایش پانویس آزمایش پانویس
 }
\ptext[22-28]

\end{multicols*}
\end{document}

خروجی کد فوق با استفاده از دستور سادهٔ «xelatex footnoterule-position.tex» بصورت زیر است:
footnoterule-position.png

برای آنکه در هر صفحه اگر اولین پانویس فارسی باشد خط پانویس در سمت راست و اگر لاتین باشد در سمت چپ صفحه قرار گیرد می‌توان از کد زیر استفاده کرد:
کد: انتخاب همهٔ
% fix-footnoterule-position.tex
\PassOptionsToPackage{pdfinfo=off}{bidi}
\documentclass{article}
\usepackage{multicol,ptext}
\usepackage[extrafootnotefeatures,logo=off]{xepersian}

\settextfont{HM XYas}

\makeatletter
\footdir@temp\footdir@ORG@RTLfootnotetext\@RTLfootnotetext{R}%
\footdir@temp\footdir@ORG@LTRfootnotetext\@LTRfootnotetext{L}%

\def\left@footnoterule{\kern-3\p@
 \hrule \@width \columnwidth \kern 2.6\p@}

\def\right@footnoterule{\kern-3\p@%
 \newskip\Myskip
 \Myskip=\columnwidth
 \advance \Myskip by \columnsep
 \hbox to \textwidth{\hskip \Myskip \leaders\hrule \@width \columnwidth \hfil}\kern2.6\p@}%

\def\footnoterule{%
  \footdir@LeftRightElse
    \left@footnoterule
    \right@footnoterule
    \left@footnoterule
}
\makeatother

\begin{document}
\begin{multicols*}{2}

این یک آزمایش است.
\RTLfootnote{آزمایش پانویس}

\lr{This is a test.}
\LTRfootnote{Footnote test}

\ptext[1-5]
\newpage
\lr{This is a test.}
\LTRfootnote{Footnote test}

این یک آزمایش است.
\RTLfootnote{آزمایش پانویس}
\ptext[1-5]

\newpage
این یک آزمایش است.
\RTLfootnote{
 آزمایش پانویس آزمایش پانویس آزمایش پانویس آزمایش پانویس
 آزمایش پانویس آزمایش پانویس آزمایش پانویس آزمایش پانویس
 آزمایش پانویس آزمایش پانویس آزمایش پانویس آزمایش پانویس
 }

\lr{This is a test.}
\LTRfootnote{
 Footnote test Footnote test Footnote test Footnote test
 Footnote test Footnote test Footnote test Footnote test
 Footnote test Footnote test Footnote test Footnote test
 }

\ptext[1-5]
\newpage
\lr{This is a test.}
\LTRfootnote{
 Footnote test Footnote test Footnote test Footnote test
 Footnote test Footnote test Footnote test Footnote test
 Footnote test Footnote test Footnote test Footnote test
 }

این یک آزمایش است.
\RTLfootnote{
 آزمایش پانویس آزمایش پانویس آزمایش پانویس آزمایش پانویس
 آزمایش پانویس آزمایش پانویس آزمایش پانویس آزمایش پانویس
 آزمایش پانویس آزمایش پانویس آزمایش پانویس آزمایش پانویس
 }
\ptext[1-5]

\end{multicols*}
\end{document}

خروجی کد فوق با استفاده از دستور سادهٔ «xelatex fix-footnoterule-position.tex» بصورت زیر است:
fix-footnoterule-position.png

برای توضیحات بیشتر در مورد کد‌های مربوط به پانویس، لطفاً مراجع زیر را ببینید:

1- پاسخ Heiko Oberdiek به سئوال کاربر Vafa در سایت ‎https://tex.stackexchange.com‎:
Question about zref bundle (changing the behaviour of footnote rule)

2- فایل memoir.cls از بستهٔ memoir و راهنمای آن که در حدود 600 صفحه است.

3- کدهای اساسی مربوط به پانویس در بستهٔ bidi در فایل‌های extrafootnotefeatures-xetex-bidi.def و footnote-xetex-bidi.def که البته از همان مراجع بالا کپی شده اما توضیحات مفصل آنها که در فهم کدهای مربوطه بسیار موثر است حذف گردیده است.

نرم‌افزارهای مورد استفاده:
bidi: v32.9, 2018/02/22
xepersian: v21.1, 2018/01/28

با تشکر
آخرین ویرایش توسط mingranina on 02 مه 2018, 08:17, ویرایش شده در 2.
mingranina
 
پست‌ها : 36
تاریخ عضویت: 17 سپتامبر 2016, 07:53

پاسخ: حروفچینی فارسی در زیپرشین (زیپرژن XePersian) و بای‌دای

پستتوسط Behnam » 01 مه 2018, 03:07

این پانویس سمت چپ و راست البته از نظر فنی پیشرفته‌تر است ولی من شخصاً ترجیح می‌دهم که در یک متن فارسی همهٔ پانویس‌ها در سمت راست و به فارسی شماره‌گذاری شوند حتی اگر به یک متن (یا نام کتاب) لاتین رجوع بدهند. حالا اگر شماره‌گذاری در سمت راست باشد ولی امکان انتخاب حروفچینی متن انگلیسی از سمت چپ نیز وجود داشته باشد چه بهتر!
نماد کاربر
Behnam
 
پست‌ها : 3511
تاریخ عضویت: 27 مه 2004, 04:44
محل سکونت: کانادا

دستور ‎\bidi@patchcmd‎ در XePersian

پستتوسط mingranina » 01 مه 2018, 19:10

با سلام

دستور ‎\bidi@patchcmd‎ در زیپرشین (XePersian) برای تغییر یا اصلاح کد موجود به‌کار می‌رود. این دستور در فایل
biditools.sty
تعریف شده است. البته با توجه به آنکه کدهای مربوط به این دستور و تعدادی از دستورات دیگر در فایل فوق از فایل
etoolbox.sty
مربوط به بستهٔ etoolbox به صورتی ناهمگون کپی شده است، در اینجا از کدهای این بسته استفاده می‌شود. برای تطبیق این کدها با کدهای فایل biditools.sty کافی است تبدیلات زیر انجام شود:

\patchcmd ---> \bidi@patchcmd
\etb@patchcmd ---> \bidi@@patchcmd
\etb@ ---> \bidi@ (otherwise)


در صورت تمایل به دنبال کردن کدهای زیر با استفاده از فایل biditools.sty در بستهٔ bidi، باید توجه داشت که خطوط زیر در فایل‌های etoolbox.sty و biditools.sty یکسان هستند:

etoolbox.sty: 1209-1223
biditools.sty: 544-558

etoolbox.sty: 1269-1342
biditools.sty: 451-519

etoolbox.sty: 1345-1399
biditools.sty: 593-647

etoolbox.sty: 1733-1802
biditools.sty: 713-773


همچنین باید توجه داشت که به علت کپی ناقص کدهای بستهٔ etoolbox، بعضی از دستورات مهم آن مثل ‎\tracingpatches‎ که برای debug کدها بسیار مهم هستند در فایل biditools.sty وجود ندارند.

مطابق آنچه که در راهنمای بستهٔ etoolbox آمده است دستور ‎\patchcmd‎ دارای شش آرگومان است که یکی از آنها اختیاری است (راهنمای بستهٔ etoolbox را ببینید):
کد: انتخاب همهٔ
\patchcmd[<prefix>]{<command>}{<search>}{<replace>}{<success>}{<failure>}

اگر پیشوند اختیاری <prefix> وجود نداشته باشد آنگاه تمام پیشوند‌های <command> جدا خواهند شد، اما اگر وجود داشته باشد (و به‌عنوان مثال برابر ‎\global‎ باشد) آنگاه این <prefix> جایگزین تمام پیشوند‌های <command> می‌شود. بخشی از کد مربوطه در فایل etoolbox.sty که به درک بهتر این دستور کمک می‌کند عبارت است از:
کد: انتخاب همهٔ
\newrobustcmd*{\patchcmd}{%
  \etb@dbg@trce\patchcmd
  \begingroup
  \@makeother\#%
  \etb@patchcmd}

\newcommand{\etb@patchcmd}[4][########1]{%
  \etb@ifpatchable#2{#3}
    {\etb@dbg@succ{ret}%
     \begingroup
     \edef\etb@resrvda{%
       \def\noexpand\etb@resrvda####1\detokenize{macro:}####2->####3&{%
         #1\def\string\etb@resrvda\space####2{\noexpand\etb@resrvdb####3&}}%
       \def\noexpand\etb@resrvdb####1\detokenize{#3}####2&{%
         ####1\detokenize{#4}####2}%
       \edef\noexpand\etb@resrvda{%
         \noexpand\etb@resrvda\meaning#2&}}%
     \etb@resrvda
     \etb@patchcmd@scantoks\etb@resrvda
     \let#2\etb@resrvda
     \undef\etb@resrvda
     \@firstoftwo}%
    {\@secondoftwo}}

همانگونه که ملاحظه می‌شود فقط چهار آرگومان از شش آرگومان دستور ‎\patchcmd‎ در دستور ‎\etb@patchcmd‎ استفاده می‌شود که یکی از آنها همان آرگومان اختیاری <prefix> است که در اینجا با پارامتر ‎########1‎ مشخص شده است که در زمان استفاده به ‎####1‎ تبدیل می‌شود و در تراز (level) سوم یعنی در زمان فراخوانی دستور ‎\etb@resrvdb‎ متن پارامتری (‎<parameter text>‎) آن جایگزین آرگومان شمارهٔ 1 (پارامتر ‎#1‎ یا همان <prefix>) ماکرو ‎\patchcmd‎ می‌گردد.

کد زیر شکل ساده‌تری از این مکانیزم است:
کد: انتخاب همهٔ
% test-nested-definitions.tex
\documentclass{article}
\begin{document}
=================
\newcommand{\X}[2][########1]{\par X: #1-#2 :X
    \def\Y##1{\par Y: #1-#2-##1 :Y
        \def\Z####1{\par Z :#1-#2-####1 :Z}}}
\X[1111]{Test}
\Y{2222}
\Z{3333}

=================
\newcommand{\XX}[2][########1]{\par XX: -#2 :XX
    \def\YY##1{\par YY: -#2-##1: YY
        \def\ZZ####1{\par ZZ: #1-#2-####1: ZZ}}}
\XX{Test}
\YY{2222}
\ZZ{3333}

=================
\newcommand{\XXX}[2][####1]{\par XXX: -#2 :XXX
    \def\YYY##1{\par YYY: #1-#2-##1 :YYY
        \def\ZZZ####1{\par ZZZ: #1-#2-####1 :ZZZ}}}
\XXX{Test}
\YYY{2222}
\ZZZ{3333}

=================
\end{document}

خروجی کد فوق با اجرای دستور ‎pdflatex test-nested-definitions.tex‎ به‌صورت زیر است:
test-nested-definitions.png

دو آرگومان باقیمانده یعنی <success> و <failure> در دستورهای ‎\@firstoftwo‎ (اگر دستور ‎\patchcmd‎ موفق باشد) یا ‎\@secondoftwo‎ (اگر دستور ‎\patchcmd‎ موفق نباشد) استفاده می‌شود که در فایل
latex.ltx
به‌صورت زیر تعریف می‌شوند:
کد: انتخاب همهٔ
\long\def\@firstoftwo#1#2{#1}
\long\def\@secondoftwo#1#2{#2}

و با توجه به آنکه همیشه یکی از دستورات فوق اجرا می‌شود بنابراین حداقل دو token درآشامیده (absorb) می‌شود که این token‌ها می‌توانند هرچیزی از جمله ‎\empty‎ یا ‎\par‎ باشند و در نتیجه دستور ‎\patchcmd‎ را می‌توان به صورت‌های زیر استفاده کرد:
کد: انتخاب همهٔ
\patchcmd{\footnoterule}{\columnwidth}{\textwidth}{\typeout{Succeeded}}{\typeout{failed}}
\patchcmd{\footnoterule}{\columnwidth}{\textwidth}{}{}

اما اگر دو آرگومان آخر حذف شده و به‌صورت زیر استفاده شود:
کد: انتخاب همهٔ
\patchcmd{\footnoterule}{\columnwidth}{\textwidth}

آنگاه اگر به تعداد کافی token‌های غیر قابل استفاده وجود نداشته باشد، یا خطا گرفته می‌شود یا نتایج غیرقابل پیش‌بینی خواهد بود.
یعنی کد زیر با دستور ‎"xelatex footnoterule-succeeds.tex"‎ اجرای موفق خواهد داشت:
کد: انتخاب همهٔ
% footnoterule-succeeds.tex
\PassOptionsToPackage{pdfinfo=off}{bidi}
\documentclass{article}
\usepackage{etoolbox}
\usepackage{multicol,ptext}
\usepackage[extrafootnotefeatures,logo=off]{xepersian}

\settextfont{HM XYas}

\pagestyle{empty}
\patchcmd{\footnoterule}{\columnwidth}{\textwidth}{}{}
\begin{document}
این یک آزمایش است.
\LTRfootnote{Footnote test}
\end{document}

اما اجرای کد زیر با دستور ‎"xelatex footnoterule-fails.tex"‎ با خطا مواجه می‌شود:
کد: انتخاب همهٔ
% footnoterule-fails.tex
\PassOptionsToPackage{pdfinfo=off}{bidi}
\documentclass{article}
\usepackage{etoolbox}
\usepackage{multicol,ptext}
\usepackage[extrafootnotefeatures,logo=off]{xepersian}

\settextfont{HM XYas}

\pagestyle{empty}
\patchcmd{\footnoterule}{\columnwidth}{\textwidth}
\begin{document}
این یک آزمایش است.
\LTRfootnote{Footnote test}
\end{document}

نرم‌افزارهای مورد استفاده:
bidi: v32.9, 2018/02/22
xepersian: v21.1, 2018/01/28


با تشکر
mingranina
 
پست‌ها : 36
تاریخ عضویت: 17 سپتامبر 2016, 07:53

تغییر آخرین خط پاراگراف در XePersian

پستتوسط mingranina » 03 مه 2018, 21:41

با سلام
برای تغییر و اضافه کردن متن به شکل دلخواه در آخر پاراگراف می‌توان از دستور ‎\lastbox‎ استفاده کرد. به‌عنوان نمونه فرض کنید که دو متن مورد نظر، مثل «تاریخ: ۲۰۱۸/۰۵/۰۳» و «(الف) (ب) (ج) (د)»، باید به‌صورت زیر به انتهای پاراگراف اضافه شوند:
اگر در آخرین خط پاراگراف به اندازهٔ کافی فضا وجود داشته باشد متن اول، «تاریخ: ۲۰۱۸/۰۵/۰۳»، در آخر خط و متن دوم،
«(الف) (ب) (ج) (د)»، در ابتدای خط بعدی قرار گیرد، در غیر این‌صورت متن اول در انتهای خط بعدی و متن دوم در ابتدای آن قرار قرار گیرد.
کد زیر یک نمونهٔ ابتدایی برای انجام این تغییرات است:
کد: انتخاب همهٔ
% box-at-the-end-of-line.tex
\PassOptionsToPackage{pdfinfo=off}{bidi}
\documentclass{article}
\usepackage[logo=off]{xepersian}

\settextfont{HM XYas}
\setlatintextfont{HM XYas}
\setdigitfont{HM XYas}

\makeatletter
\newbox\AnswerBox
\newbox\DateBox
\newif\ifAnswerBox
\newif\ifDateBox

\newdimen\HsizeMin
\newbox\LastLineBoxMin
\newbox\LastLineBox
\newbox\LastLineOutBox
\def\changelastline{
  \setbox\LastLineBox\lastbox
  \ifvoid\LastLineBox
    \setbox\LastLineBox\lastbox
    \setbox\LastLineOutBox\hbox{\unhcopy\LastLineBox}
  \else
    \setbox\LastLineBoxMin=\hbox{\unhcopy\LastLineBox}
    \unskip\unpenalty
    \HsizeMin = \wd\LastLineBoxMin
    \advance \HsizeMin by \wd\DateBox
    \ifnum\HsizeMin > \hsize
      \DateBoxtrue
      \setbox\LastLineOutBox\hbox to \hsize{\unhcopy\LastLineBox}
    \else
      \if@RTL
        \setbox\LastLineOutBox\hbox to \hsize{\unhcopy\DateBox \hfill \unhcopy\LastLineBox}
      \else
        \setbox\LastLineOutBox\hbox to \hsize{\unhcopy\LastLineBox \hfill \unhcopy\DateBox}
      \fi
    \fi
  \fi
  \box\LastLineOutBox
  \ifDateBox
    \if@RTL
      \hbox to \hsize{\unhcopy\DateBox \hfill \unhcopy\AnswerBox}
    \else
      \hbox to \hsize{\unhcopy\AnswerBox \hfill \unhcopy\DateBox}
    \fi
  \else
    \if@RTL
      \hbox to \hsize{\hfill \unhcopy\AnswerBox}
    \else
      \copy\AnswerBox
    \fi
  \fi
  }
\makeatother

\def\EnText{GENTLE READER: This is a handbook about \TeX, a new typesetting system
intended for the creation of beautiful books|and especially for books
that contain a lot of mathematics. By preparing a manuscript in TEX format,
you will be telling a computer exactly how the manuscript is to be transformed
into pages whose typographic quality is comparable to that of the world's finest
printers; yet you won't need to do much more work than would be involved if
you were simply typing the manuscript on an ordinary typewriter. }

\def\PeText{کنون ای خردمند وصف خرد - بدین جایگه گفتن اندرخورد -
کنون تا چه داری بیار از خرد - که گوش نیوشنده زو برخورد -
خرد بهتر از هر چه ایزد بداد - ستایش خرد را به از راه داد -
خرد رهنمای و خرد دلگشای - خرد دست گیرد به هر دو سرای -
ازو شادمانی وزویت غمیست - وزویت فزونی وزویت کمیست -
خرد تیره و مرد روشن روان - نباشد همی شادمان یک زمان -
چه گفت آن خردمند مرد خرد - که دانا ز گفتار از برخورد. }

\pagestyle{empty}
\begin{document}
\begin{latin}
\setbox\AnswerBox=\hbox{(a) \hskip10pt (b) \hskip10 pt (c)\hskip10pt (d)}
\setbox\DateBox=\hbox{Date: 2018/05/03}
\vbox{\EnText
 This is a test 1.
 This is a test 2.
 % This is a test 3.
 % This is a test 4.
 % This is a test 4.
 % This is a test 5.
 \par\changelastline}

\vskip 10pt
\vbox{\EnText
 This is a test 1.
 This is a test 2.
 This is a test 3.
 This is a test 4.
 % This is a test 5.
 \par\changelastline}
\end{latin}

\setbox\AnswerBox=\hbox{\rl{(الف) \hskip10pt (ب) \hskip10 pt (ج)\hskip10pt (د)}}
\setbox\DateBox=\hbox{\rl{تاریخ: ۲۰۱۸/۰۵/۰۳}}
\vskip 10pt
\vbox{\PeText
 این یک آزمایش است ۱.
 این یک آزمایش است ۲.
 این یک آزمایش است ۳.
 % این یک آزمایش است ۴.
 % این یک آزمایش است ۵.
 \par\changelastline}

\vskip 10pt
\vbox{\PeText
 این یک آزمایش است ۱.
 این یک آزمایش است ۲.
 این یک آزمایش است ۳.
 این یک آزمایش است ۴.
 % این یک آزمایش است ۵.
 \par\changelastline}

\end{document}

خروجی کد فوق با استفاده از دستور سادهٔ «xelatex box-at-the-end-of-line.tex» بصورت زیر است:
box-at-the-end-of-line.png

نرم‌افزارهای مورد استفاده:

bidi: v32.9, 2018/02/22
xepersian: v21.1, 2018/01/28

با تشکر
mingranina
 
پست‌ها : 36
تاریخ عضویت: 17 سپتامبر 2016, 07:53

رفع مشکل نسخهٔ جدید fontspec و XePersian

پستتوسط mingranina » 07 اوت 2018, 19:09

با سلام

تغییراتی که اخیراً در نسخهٔ جدید بستهٔ ‎fontspec-2.6h (2018/07/30)‎ و بعد از آن ایجاد شده است موجب بروز خطا در اجرای XePersian می‌شود. برای رفع این مشکل باید در سرتاسر فایل xepersian.sty توکن (token) ‎\l__fontspec_nfss_enc_tl‎ را به ‎\g__fontspec_nfss_enc_tl‎ تغییر دهید.

بنابراین اگر از سیستم‌عامل لینوکس و یا مشابه آن استفاده می‌کنید کافی است در خط فرمان دستورات زیر را اجرا کنید:
کد: انتخاب همهٔ
 cd /Your-TeXLive-Dir/texmf-dist/tex/xelatex/xepersian/
 cp xepersian.sty  xepersian.sty.OLD
 sed -i 's@\\l__fontspec_nfss_enc_tl@\\g__fontspec_nfss_enc_tl@g' xepersian.sty

در غیر اینصورت برای اعمال تغییرات از ویرایشگر مورد علاقهٔ خود استفاده کنید.

لطفاً قبل از ایجاد هرگونه تغییری در فایل مورد نظر از آن یک کپی مطمئن و قابل بازیافت تهیه کنید.

کد زیر نمونه‌ای شامل متون فارسی و لاتین است که پس از بروزرسانی TeXLive-2018 (و ارتقاء بستهٔ fontspec به 2.6i) و اعمال تغییرات فوق در فایل xepersian.sty برای آزمایش به‌کار رفته است:
کد: انتخاب همهٔ
% texlive-fontspec-upgrade.tex
\PassOptionsToPackage{pdfinfo=off}{bidi}
\documentclass{article}
\usepackage[logo=off]{xepersian}

\settextfont{HM XYas}
\setlatintextfont{HM XYas}
\setdigitfont{HM XYas}

\def\EnText{GENTLE READER: This is a handbook about \TeX, a new typesetting
system intended for the creation of beautiful books|and especially for books
that contain a lot of mathematics. By preparing a manuscript in TEX format,
you will be telling a computer exactly how the manuscript is to be transformed
into pages whose typographic quality is comparable to that of the world's
finest printers; yet you won't need to do much more work than would be involved
if you were simply typing the manuscript on an ordinary typewriter. }

\def\PeText{کنون ای خردمند وصف خرد - بدین جایگه گفتن اندرخورد -
کنون تا چه داری بیار از خرد - که گوش نیوشنده زو برخورد -
خرد بهتر از هر چه ایزد بداد - ستایش خرد را به از راه داد -
خرد رهنمای و خرد دلگشای - خرد دست گیرد به هر دو سرای -
ازو شادمانی وزویت غمیست - وزویت فزونی وزویت کمیست -
خرد تیره و مرد روشن روان - نباشد همی شادمان یک زمان -
چه گفت آن خردمند مرد خرد - که دانا ز گفتار از برخورد. }

\pagestyle{empty}
\begin{document}

\PeText

\vskip \baselineskip

\begin{latin}
\EnText
\end{latin}

\end{document}

خروجی کد فوق با استفاده از دستور سادهٔ «xelatex texlive-fontspec-upgrade.tex» بصورت زیر است:
texlive-fontspec-upgrade.png

نرم‌افزارهای مورد استفاده:
bidi: v33.0, 2018/06/15
xepersian: v21.2, 2018/061/15

با تشکر
mingranina
 
پست‌ها : 36
تاریخ عضویت: 17 سپتامبر 2016, 07:53

پاسخ: رفع مشکل نسخهٔ جدید fontspec و XePersian

پستتوسط javadr » 08 اوت 2018, 10:45

با سلام و احترام

و با تشکر از زحمات جنابعالی و نگرانی‌ای که پیرامون بسته زی‌پرشین دارید

توجه دارید که بسته زی‌پرشین author-maintained است و لذا ما نباید در بسته دست ببریم و هر چند که راه حل شما مشکل را در این مرحله با یک تغییر نام حل می‌کند همانطوری که جناب ویل روبرستسون نویسنده بسته fontspec اشاره نموده‌اند ولی پیشنهاد من این است که فعلا از همان نسخه قبلی بسته fontspec (نسخه 2.6g) استفاده کنیم.

موفق باشید


mingranina نوشته است:[نمایش]
با سلام

تغییراتی که اخیراً در نسخهٔ جدید بستهٔ ‎fontspec-2.6h (2018/07/30)‎ و بعد از آن ایجاد شده است موجب بروز خطا در اجرای XePersian می‌شود. برای رفع این مشکل باید در سرتاسر فایل xepersian.sty توکن (token) ‎\l__fontspec_nfss_enc_tl‎ را به ‎\g__fontspec_nfss_enc_tl‎ تغییر دهید.

بنابراین اگر از سیستم‌عامل لینوکس و یا مشابه آن استفاده می‌کنید کافی است در خط فرمان دستورات زیر را اجرا کنید:
کد: انتخاب همهٔ
 cd /Your-TeXLive-Dir/texmf-dist/tex/xelatex/xepersian/
 cp xepersian.sty  xepersian.sty.OLD
 sed -i 's@\\l__fontspec_nfss_enc_tl@\\g__fontspec_nfss_enc_tl@g' xepersian.sty

در غیر اینصورت برای اعمال تغییرات از ویرایشگر مورد علاقهٔ خود استفاده کنید.

لطفاً قبل از ایجاد هرگونه تغییری در فایل مورد نظر از آن یک کپی مطمئن و قابل بازیافت تهیه کنید.

کد زیر نمونه‌ای شامل متون فارسی و لاتین است که پس از بروزرسانی TeXLive-2018 (و ارتقاء بستهٔ fontspec به 2.6i) و اعمال تغییرات فوق در فایل xepersian.sty برای آزمایش به‌کار رفته است:
کد: انتخاب همهٔ
% texlive-fontspec-upgrade.tex
\PassOptionsToPackage{pdfinfo=off}{bidi}
\documentclass{article}
\usepackage[logo=off]{xepersian}

\settextfont{HM XYas}
\setlatintextfont{HM XYas}
\setdigitfont{HM XYas}

\def\EnText{GENTLE READER: This is a handbook about \TeX, a new typesetting
system intended for the creation of beautiful books|and especially for books
that contain a lot of mathematics. By preparing a manuscript in TEX format,
you will be telling a computer exactly how the manuscript is to be transformed
into pages whose typographic quality is comparable to that of the world's
finest printers; yet you won't need to do much more work than would be involved
if you were simply typing the manuscript on an ordinary typewriter. }

\def\PeText{کنون ای خردمند وصف خرد - بدین جایگه گفتن اندرخورد -
کنون تا چه داری بیار از خرد - که گوش نیوشنده زو برخورد -
خرد بهتر از هر چه ایزد بداد - ستایش خرد را به از راه داد -
خرد رهنمای و خرد دلگشای - خرد دست گیرد به هر دو سرای -
ازو شادمانی وزویت غمیست - وزویت فزونی وزویت کمیست -
خرد تیره و مرد روشن روان - نباشد همی شادمان یک زمان -
چه گفت آن خردمند مرد خرد - که دانا ز گفتار از برخورد. }

\pagestyle{empty}
\begin{document}

\PeText

\vskip \baselineskip

\begin{latin}
\EnText
\end{latin}

\end{document}

خروجی کد فوق با استفاده از دستور سادهٔ «xelatex texlive-fontspec-upgrade.tex» بصورت زیر است:
texlive-fontspec-upgrade.png

نرم‌افزارهای مورد استفاده:
bidi: v33.0, 2018/06/15
xepersian: v21.2, 2018/061/15

با تشکر
javadr
 
پست‌ها : 1
تاریخ عضویت: 08 اوت 2018, 10:37

پاسخ: حروفچینی فارسی در زیپرشین (زیپرژن XePersian) و بای‌دای

پستتوسط mingranina » 15 اوت 2018, 14:31

با سلام

در نسخهٔ جدید XePersian-21.3 که اخیراً منتشر گردیده، مشکل ناسازگاری آن با نسخهٔ جدید بستهٔ ‎fontspec-2.6h (2018/07/30)‎ و بعد از آن رفع شده است و دیگر نیازی به تغییر فایل xepersian.sty نیست. گرچه حتی اگر اشتباهاً دستورات فوق را اجرا کنید در نسخهٔ جدید XePersian هیچ اتفاقی خاصی نمی‌افتد به‌جز آنکه ممکن است فقط تاریخ اصلاح فایل xepersian.sty تغییر کند.

با توجه به تذکرات برخی از دوستان، فرصت را مغتنم شمرده و نکاتی را در ارتباط با مطالب این تاپیک به عرض می‌رسانم:

-- چون من (بسیار آهسته، در اوقات فراغت و به صورت کاملاً غیر حرفه‌ای) درحال فراگیری TeX و دوستانش هستم مطالبی که در اینجا مطرح می‌شود به نوعی به عنوان تمرین‌های مربوطه است که روی آنها کار کرده‌ام و اصل بر آن است که تکراری و کپی‌برداری از سایت‌ها و مراجع دیگر نیستند. بنابراین اگر مطلبی از قبل در اینترنت و یا در هر مرجع دیگری وجود داشته و در اینجا تکرار شده است لطفاً آدرس مرجع و یا لینک مربوطه را اعلام بفرمایید تا مطلب تکراری در این تاپیک حذف و لینک و یا آدرس مرجع مورد نظر جایگزین آن گردد.

-- نرم‌افزارهای XePersian و bidi در حال حاضر دارای مجوز LPPL (The LaTeX Project Public License) هستند بنابراین هر کاربری می‌تواند با در نظر گرفتن شرایط مجوز مربوطه، این نرم‌افزارها را تغییر داده و حتی آن‌ها را منتشر کند. گمان نمی‌رود که تا کنون موردی مغایر با مجوز فوق‌الذکر وجود داشته باشد اما اگر احساس می‌فرمایید موردی هست بفرمایید تا اصلاح شود.

-- راه‌حل‌هایی که در این تاپیک ارائه می‌شود احتمالاً برای آن دسته از کاربرانی مفید است که عجله دارند و یا اینکه برای به پایان رساندن کار خود فرصت اندکی دارند و نمی‌توانند منتظر بمانند.

با تشکر
mingranina
 
پست‌ها : 36
تاریخ عضویت: 17 سپتامبر 2016, 07:53

بعدی


بازگشت به خط، زبان و قلم‌سازی


کاربران حاضر در این انجمن: بدون کاربران آنلاین و 2 مهمان