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

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

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

انتشار نسخهٔ جدید، 22.1، بستهٔ xepersian توسط مؤلف مربوطه

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

با سلام

نسخهٔ جدید، 22.1، بستهٔ xepersian توسط مؤلف مربوطه منتشر و در تاریخ 2018/12/10 در سایت ‎CTAN‎ آپلود شده و در تاریخ 2018/12/09 تحت عنوان ‎Revision 49367‎ در مخزن ‎TeXLive‎ قرار گرفته است.

کدهایی که اضافه و یا حذف گردیده و در سطح کاربری فنی و مهم هستند (با استفاده از دستور ‎diff -aU 0‎) در فایل پیوست ‎(diff-xepersian-22.0-22.1.diff)‎ ذخیره گردیده و در صورت تمایل می‌توانید آن را دانلود و در یک ویرایشگر معمولی مشاهده کنید.

فایل‌های حذف شده: ‎ ‎
فایل‌های اضافه شده: ‎ ‎

راهنما و منابع بسته‌های ‎LaTeX2e (source2e)‎ ممکن است در درک بهتر کدهای موجود در فایل diff-xepersian-22.0-22.1.diff مؤثر باشد.

تذکر بسیار مهم:

در این نسخه از XePersian همچنان فونت‌های سری HM فیلتر می‌شوند و برای رفع فیلترینگ این فونت‌ها ساده‌ترین راه برای یک کاربر نهایی همان است که در این پیام و این پیام توضیح داده شد.

با تشکر

پ.ن.1- لطفاً توجه فرمایید که در بسیاری از بخش‌های بسته‌های bidi و xepersian، کدهای اصلی از روی بسته‌های دیگر کپی شده و فقط نام متغیرها و دستورات به‌گونه‌ای ناهمگون تغییر کرده است که نمونه‌هایی از آن در پیام‌های قبلی در همین تاپیک گزارش شده است. بنابراین اگر علاقمند به فراگیری کدهای مربوطه هستید توصیه می‌شود راهنمای بسته‌های اصلی را که در این اطلاع‌رسانی‌ها معرفی می‌شوند حتی‌المقدور مطالعه فرمایید.

پ.ن.2- زمان‌های اعلام شده در متن پیام به وقت محلی سایت مربوطه است.
پیوست‌ها
diff-xepersian-22.0-22.1.zip
(541 بایت) دانلود 14 بار
mingranina
 
پست‌ها : 63
تاریخ عضویت: 17 سپتامبر 2016, 07:53

انتشار نسخهٔ جدید، 35.4، بستهٔ bidi توسط مؤلف مربوطه

پستتوسط mingranina » 11 دسامبر 2018, 09:10

با سلام

نسخهٔ جدید، 35.4، بستهٔ bidi توسط مؤلف مربوطه منتشر و در تاریخ 2018/12/11 در سایت ‎CTAN‎ آپلود شده و در تاریخ 2018/12/10 تحت عنوان ‎Revision 49379‎ در مخزن ‎TeXLive‎ قرار گرفته است.

کدهایی که اضافه و یا حذف گردیده و در سطح کاربری فنی و مهم هستند (با استفاده از دستور ‎diff -aU 0‎) در فایل پیوست ‎(diff-bidi-35.3-35.4.diff)‎ ذخیره گردیده و در صورت تمایل می‌توانید آن را دانلود و در یک ویرایشگر معمولی مشاهده کنید.

فایل‌های حذف شده: ‎ ‎
فایل‌های اضافه شده: ‎ ‎

راهنما و منابع بسته‌های ‎LaTeX2e (source2e)‎ ممکن است در درک بهتر کدهای موجود در فایل diff-bidi-35.3-35.4.diff مؤثر باشد.

با تشکر

پ.ن.1- لطفاً توجه فرمایید که در بسیاری از بخش‌های بسته‌های bidi و xepersian، کدهای اصلی از روی بسته‌های دیگر کپی شده و فقط نام متغیرها و دستورات به‌گونه‌ای ناهمگون تغییر کرده است که نمونه‌هایی از آن در پیام‌های قبلی در همین تاپیک گزارش شده است. بنابراین اگر علاقمند به فراگیری کدهای مربوطه هستید توصیه می‌شود راهنمای بسته‌های اصلی را که در این اطلاع‌رسانی‌ها معرفی می‌شوند حتی‌المقدور مطالعه فرمایید.

پ.ن.2- زمان‌های اعلام شده در متن پیام به وقت محلی سایت مربوطه است.
پیوست‌ها
diff-bidi-35.3-35.4.zip
(473 بایت) دانلود 15 بار
mingranina
 
پست‌ها : 63
تاریخ عضویت: 17 سپتامبر 2016, 07:53

انتشار نسخهٔ جدید، 22.2، بستهٔ xepersian توسط مؤلف مربوطه

پستتوسط mingranina » 11 دسامبر 2018, 09:12

با سلام

نسخهٔ جدید، 22.2، بستهٔ xepersian توسط مؤلف مربوطه منتشر و در تاریخ 2018/12/11 در سایت ‎CTAN‎ آپلود شده و در تاریخ 2018/12/10 تحت عنوان ‎Revision 49380‎ در مخزن ‎TeXLive‎ قرار گرفته است.

کدهایی که اضافه و یا حذف گردیده و در سطح کاربری فنی و مهم هستند (با استفاده از دستور ‎diff -aU 0‎) در فایل پیوست ‎(diff-xepersian-22.1-22.2.diff)‎ ذخیره گردیده و در صورت تمایل می‌توانید آن را دانلود و در یک ویرایشگر معمولی مشاهده کنید.

فایل‌های حذف شده: ‎ ‎
فایل‌های اضافه شده: ‎tikz.code-xepersian.def‎

راهنما و منابع بسته‌های ‎tikz (tikz.code.tex)‎ ممکن است در درک بهتر کدهای موجود در فایل diff-xepersian-22.1-22.2.diff مؤثر باشد.

تذکر بسیار مهم:

در این نسخه از XePersian همچنان فونت‌های سری HM فیلتر می‌شوند و برای رفع فیلترینگ این فونت‌ها ساده‌ترین راه برای یک کاربر نهایی همان است که در این پیام و این پیام توضیح داده شد.

با تشکر

پ.ن.1- لطفاً توجه فرمایید که در بسیاری از بخش‌های بسته‌های bidi و xepersian، کدهای اصلی از روی بسته‌های دیگر کپی شده و فقط نام متغیرها و دستورات به‌گونه‌ای ناهمگون تغییر کرده است که نمونه‌هایی از آن در پیام‌های قبلی در همین تاپیک گزارش شده است. بنابراین اگر علاقمند به فراگیری کدهای مربوطه هستید توصیه می‌شود راهنمای بسته‌های اصلی را که در این اطلاع‌رسانی‌ها معرفی می‌شوند حتی‌المقدور مطالعه فرمایید.

پ.ن.2- زمان‌های اعلام شده در متن پیام به وقت محلی سایت مربوطه است.
پیوست‌ها
diff-xepersian-22.1-22.2.zip
(457 بایت) دانلود 13 بار
mingranina
 
پست‌ها : 63
تاریخ عضویت: 17 سپتامبر 2016, 07:53

انتشار نسخهٔ جدید، 22.3، بستهٔ xepersian توسط مؤلف مربوطه

پستتوسط mingranina » 13 دسامبر 2018, 02:30

با سلام

نسخهٔ جدید، 22.3، بستهٔ xepersian توسط مؤلف مربوطه منتشر و در تاریخ 2018/12/12 در سایت ‎CTAN‎ آپلود شده و در تاریخ 2018/12/12 تحت عنوان ‎Revision 49395‎ در مخزن ‎TeXLive‎ قرار گرفته است.

کدهایی که اضافه و یا حذف گردیده و در سطح کاربری فنی و مهم هستند (با استفاده از دستور ‎diff -aU 0‎) در فایل پیوست ‎(diff-xepersian-22.2-22.3.diff)‎ ذخیره گردیده و در صورت تمایل می‌توانید آن را دانلود و در یک ویرایشگر معمولی مشاهده کنید.

فایل‌های حذف شده: ‎persiigits.map, persiigits.tec‎
فایل‌های اضافه شده: ‎persian-tex-text.map, persian-tex-text.tec‎

راهنما و منابع بسته‌های ‎fontspec, soul‎ ممکن است در درک بهتر کدهای موجود در فایل diff-xepersian-22.2-22.3.diff مؤثر باشد.

تذکر بسیار مهم:

در این نسخه از XePersian همچنان فونت‌های سری HM فیلتر می‌شوند و برای رفع فیلترینگ این فونت‌ها ساده‌ترین راه برای یک کاربر نهایی همان است که در این پیام و این پیام توضیح داده شد.

با تشکر

پ.ن.1- لطفاً توجه فرمایید که در بسیاری از بخش‌های بسته‌های bidi و xepersian، کدهای اصلی از روی بسته‌های دیگر کپی شده و فقط نام متغیرها و دستورات به‌گونه‌ای ناهمگون تغییر کرده است که نمونه‌هایی از آن در پیام‌های قبلی در همین تاپیک گزارش شده است. بنابراین اگر علاقمند به فراگیری کدهای مربوطه هستید توصیه می‌شود راهنمای بسته‌های اصلی را که در این اطلاع‌رسانی‌ها معرفی می‌شوند حتی‌المقدور مطالعه فرمایید.

پ.ن.2- زمان‌های اعلام شده در متن پیام به وقت محلی سایت مربوطه است.
پیوست‌ها
diff-xepersian-22.2-22.3.zip
(1.39 KiB) دانلود 14 بار
mingranina
 
پست‌ها : 63
تاریخ عضویت: 17 سپتامبر 2016, 07:53

انتشار نسخهٔ جدید، 22.4، بستهٔ xepersian توسط مؤلف مربوطه

پستتوسط mingranina » 14 دسامبر 2018, 03:45

با سلام

نسخهٔ جدید، 22.4، بستهٔ xepersian توسط مؤلف مربوطه منتشر و در تاریخ 2018/12/14 در سایت ‎CTAN‎ آپلود شده و در تاریخ 2018/12/13 تحت عنوان ‎Revision 49406‎ در مخزن ‎TeXLive‎ قرار گرفته است.

کدهایی که اضافه و یا حذف گردیده و در سطح کاربری فنی و مهم هستند (با استفاده از دستور ‎diff -aU 0‎) در فایل پیوست ‎(diff-xepersian-22.3-22.4.diff)‎ ذخیره گردیده و در صورت تمایل می‌توانید آن را دانلود و در یک ویرایشگر معمولی مشاهده کنید.

فایل‌های حذف شده: ‎ ‎
فایل‌های اضافه شده: ‎ ‎

راهنما و منابع بسته‌های ‎fontspec, The LaTeX3 Sources, The LaTeX3 Interfaces‎ ممکن است در درک بهتر کدهای موجود در فایل diff-xepersian-22.3-22.4.diff مؤثر باشد.

تذکر بسیار مهم:

در این نسخه از XePersian همچنان فونت‌های سری HM فیلتر می‌شوند و برای رفع فیلترینگ این فونت‌ها ساده‌ترین راه برای یک کاربر نهایی همان است که در این پیام و این پیام توضیح داده شد.

با تشکر

پ.ن.1- لطفاً توجه فرمایید که در بسیاری از بخش‌های بسته‌های bidi و xepersian، کدهای اصلی از روی بسته‌های دیگر کپی شده و فقط نام متغیرها و دستورات به‌گونه‌ای ناهمگون تغییر کرده است که نمونه‌هایی از آن در پیام‌های قبلی در همین تاپیک گزارش شده است. بنابراین اگر علاقمند به فراگیری کدهای مربوطه هستید توصیه می‌شود راهنمای بسته‌های اصلی را که در این اطلاع‌رسانی‌ها معرفی می‌شوند حتی‌المقدور مطالعه فرمایید.

پ.ن.2- زمان‌های اعلام شده در متن پیام به وقت محلی سایت مربوطه است.
پیوست‌ها
diff-xepersian-22.3-22.4.zip
(879 بایت) دانلود 13 بار
mingranina
 
پست‌ها : 63
تاریخ عضویت: 17 سپتامبر 2016, 07:53

انتشار نسخهٔ جدید، 22.5، بستهٔ xepersian توسط مؤلف مربوطه

پستتوسط mingranina » 17 دسامبر 2018, 07:19

با سلام

نسخهٔ جدید، 22.5، بستهٔ xepersian توسط مؤلف مربوطه منتشر و در تاریخ 2018/12/16 در سایت ‎CTAN‎ آپلود شده و در تاریخ 2018/12/16 تحت عنوان ‎Revision 49428‎ در مخزن ‎TeXLive‎ قرار گرفته است.

کدهایی که اضافه و یا حذف گردیده و در سطح کاربری فنی و مهم هستند (با استفاده از دستور ‎diff -aU 0‎) در فایل پیوست ‎(diff-xepersian-22.4-22.5.diff)‎ ذخیره گردیده و در صورت تمایل می‌توانید آن را دانلود و در یک ویرایشگر معمولی مشاهده کنید.

فایل‌های حذف شده: ‎ ‎
فایل‌های اضافه شده: ‎ ‎

راهنما و منابع بسته‌های ‎fontspec, The LaTeX3 Sources, The LaTeX3 Interfaces‎ ممکن است در درک بهتر کدهای موجود در فایل diff-xepersian-22.4-22.5.diff مؤثر باشد.

تذکر بسیار مهم:

در این نسخه از XePersian همچنان فونت‌های سری HM فیلتر می‌شوند و برای رفع فیلترینگ این فونت‌ها ساده‌ترین راه برای یک کاربر نهایی همان است که در این پیام و این پیام توضیح داده شد.

تغییرات در این نسخه صرفاً جایگزینی تکرار دوازده بارهٔ تابعی است که در نسخهٔ پیشین به بستهٔ xepersian اضافه شده بود و یک عمل مشابه را برای دوازده نویسهٔ مختلف انجام می‌دهد. این تغییرات پس از آن انجام می‌شود که دو روز پیش از آن پرسشی تحت عنوان How to check the existence of some characters in a font using a loop? در سایت معتبر SE مطرح شد که در آن از عبارت

Is there any way to replace those repeating lines of code in the argument of the function with a (while, until, ...) LOOP which iterates over a list of characters [06F0, ..., 066B]?

استفاده شده بود. دوستانی که این بحث را دنبال می‌کنند باید جریانی مشابه با همین مورد را که در این پیام به‌عرض رسید به‌خاطر داشته باشند.

با تشکر

پ.ن.1- لطفاً توجه فرمایید که در بسیاری از بخش‌های بسته‌های bidi و xepersian، کدهای اصلی از روی بسته‌های دیگر کپی شده و فقط نام متغیرها و دستورات به‌گونه‌ای ناهمگون تغییر کرده است که نمونه‌هایی از آن در پیام‌های قبلی در همین تاپیک گزارش شده است. بنابراین اگر علاقمند به فراگیری کدهای مربوطه هستید توصیه می‌شود راهنمای بسته‌های اصلی را که در این اطلاع‌رسانی‌ها معرفی می‌شوند حتی‌المقدور مطالعه فرمایید.

پ.ن.2- زمان‌های اعلام شده در متن پیام به وقت محلی سایت مربوطه است.
پیوست‌ها
diff-xepersian-22.4-22.5.zip
(793 بایت) دانلود 14 بار
mingranina
 
پست‌ها : 63
تاریخ عضویت: 17 سپتامبر 2016, 07:53

روشی دیگر برای عدم تکرار دوازده بارهٔ یک تابع در xepersian

پستتوسط mingranina » 21 دسامبر 2018, 15:19

با سلام

در این پیام در مورد تکرار دوازده بارهٔ یک تابع در نسخهٔ 22.4 بستهٔ xepersian توضیح داده شد و اینکه پرسشی در همین زمینه در سایت SE مطرح و متعاقب آن تغییراتی توسط مؤلف زیپرشین در نسخهٔ 22.5 برای عدم تکرار این تابع ایجاد شد. اینک در ادامهٔ همان پرسش در سایت SE یک پیشنهاد و یک راه حل نیز ارائه شده است. در اینجا برای آشنایی مقدماتی با قواعد برنامه‌نویسی لایهٔ بنیادین LaTeX3 مجموعهٔ این مطالب به‌ترتیب زمانی مطرح می‌شود.

ابتدا پرسشی که در تاریخ ‎2018/12/14‎ در سایت SE مطرح شد:

[نمایش]
Tisha Shusho:
I am trying to modify the current version of xepersian package to suit my needs. The following code copied from xepersian-mathsdigitspec.sty is supposed to check if some characters do exist in the font to be loaded. My question is about the function \__xepersian_mathsdigitspec_char_not_exist_error. Is there any way to replace those repeating lines of code in the argument of the function with a (while, until, ...) LOOP which iterates over a list of characters [06F0, ..., 066B]?

کد: انتخاب همهٔ
\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:
  }

\cs_new:Nn \__xepersian_mathsdigitspec_char_not_exist_error:n
 {
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ۰ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 06F0 } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ۱ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 06F1 } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ۲ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 06F2 } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ۳ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 06F3 } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ۴ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 06F4 } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ۵ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 06F5 } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ۶ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 06F6 } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ۷ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 06F7 } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ۸ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 06F8 } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ۹ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 06F9 } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ٫ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 066B } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ٪ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 066A } }
 }

**************************************************

پس از این پرسش سه نقطه‌نظر در تاریخ ‎2018/12/16‎ به‌صورت زیر مطرح می‌شود:
[نمایش]
Steven B. Segletes:
If you just need to see if certain glyphs exist, why not just use fonttable, as in \documentclass{article} \usepackage{fullpage} \usepackage{fonttable} \begin{document} \fonttable{cmti10} \fonttable{cmsy10} \end{document}
– Steven B. Segletes

**************************************************

[نمایش]
Steven B. Segletes:
Welcome to the site, as well. By the way, it is appropriate in your question to include a fully compiling example rather than just a code snippet or macro definition.
– Steven B. Segletes

**************************************************

[نمایش]
Tisha Shusho:
Thanks, Steven, the check for the existence of the characters must be done within the program. BTW, I tried too much to prepare a complete, small, and working example, but I couldn't, because I am a newbie.
– Tisha Shusho

**************************************************

و روشی که در تاریخ ‎2018/12/16‎ در نسخهٔ 22.5 xepersian در فایل xepersian-mathsdigitspec.sty توسط مؤلف آن به‌کار رفته است:

دوازده خط تکراری زیر
کد: انتخاب همهٔ
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ۰ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 06F0 } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ۱ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 06F1 } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ۲ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 06F2 } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ۳ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 06F3 } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ۴ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 06F4 } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ۵ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 06F5 } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ۶ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 06F6 } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ۷ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 06F7 } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ۸ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 06F8 } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ۹ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 06F9 } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ٫ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 066B } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ٪ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 066A } }

در تابع ‎\__xepersian_mathsdigitspec_char_not_exist_error‎ با قطعه کد زیر جایگزین شده
کد: انتخاب همهٔ
    \__xepersian_mathsdigitspec_char_set_not_exist_error:nn {
      06F0 , 06F1 , 06F2 , 06F3 , 06F4 , 06F5 , 06F6 , 06F7 , 06F8 ,
      06F9 , 066A , 066B
    } { #1 }

و قبل از تابع فوق هم قطعه کد زیر افزوده شده است
کد: انتخاب همهٔ
\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 } }
    }
 }

**************************************************

و راه‌حل مطرح شده در تاریخ ‎2018/12/18‎ در سایت SE:
Tisha Shusho:
After reading the documents "The expl3 package and LaTeX3 programming" and the "LaTeX3 Interfaces" again (but thoroughly this time) I think I have found a solution to my question. I replaced the following piece of code in
xepersian-mathsdigitspec.sty

کد: انتخاب همهٔ
\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:
  }

\cs_new:Nn \__xepersian_mathsdigitspec_char_not_exist_error:n
 {
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ۰ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 06F0 } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ۱ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 06F1 } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ۲ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 06F2 } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ۳ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 06F3 } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ۴ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 06F4 } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ۵ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 06F5 } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ۶ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 06F6 } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ۷ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 06F7 } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ۸ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 06F8 } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ۹ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 06F9 } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ٫ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 066B } }
    \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF ٪ { \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #1 } { 066A } }
 }

with

کد: انتخاب همهٔ
\seq_new:N \l_my_xepersian_digits_seq
\seq_set_split:Nnn \l_my_xepersian_digits_seq { , } { 06F0 , 06F1 , 06F2 , 06F3 , 06F4 , 06F5 , 06F6 , 06F7 , 06F8 , 06F9 , 066A , 066B }

and replaced all instances of the function \__xepersian_mathsdigitspec_char_not_exist_error with:

کد: انتخاب همهٔ
\seq_map_inline:Nn \l_my_xepersian_digits_seq
  {
    \etex_iffontchar:D \l_fontspec_font "##1 \scan_stop:
    \else:
      \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #2 } { ##1 }
    \fi:
  }

Of course one can use \seq_map_function to define a new function and replace all occurrences of the function \__xepersian_mathsdigitspec_char_not_exist_error with that.
– Tisha Shusho


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

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

تکنیک گونه‌های توابع در LaTeX3 و کاربرد آن در اصلاح xepersia

پستتوسط mingranina » 29 دسامبر 2018, 22:56

با سلام

در مورد قواعد برنامه‌نویسی LaTeX3 در این پیام مطالبی به‌عرض رسید. در پیامی جدید در سایت SE هفت تابع تکراری دیگر در فایل xepersian.sty با یک تابع جایگزین شده که در آن از تکنیک گونه‌های توابع در LaTeX3 استفاده گردیده و در بخش پاسخ و نظر مربوط به آن، نقدها و پیشنهادهای اصلاحی بسیار جالبی مطرح شده است. با توجه به آنکه یکی از شرکت کنندگان در این بحث از بزرگان تیم LaTeX3 هستند ممکن است نکات و مطالب مطرح شده برای علاقمندان LaTeX3 بسیار مفید باشد.

همچنین در بخش ‎My Working Example‎ در پیام مورد اشاره، فایل xepersian.sty اصلاح گردیده و تحت عنوان hmxepersian.sty از آن استفاده شده است. در توضیح پیشوند «hm» نیز آمده است که اشاره به رفع فیلترینگ فونت‌هایی دارد که در نام آنها از عبارت «HM» استفاده شده باشد. در حقیقت در این فایل روش جدیدی برای رفع فیلترینگ فونت‌های مذکور ارائه شده است.

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

واگذاری نگهداری از بسته‌های bidi و xepersian

پستتوسط mingranina » 20 ژانویه 2019, 00:46

با سلام

حدود 2 ماه پیش نگهداری از بسته‌های bidi و xepersian به عهدهٔ تیم LaTeX3 Project واگذار گردید و مخزن‌های بای‌دای و زیپرشین در اختیار آنها قرار گرفت. این تیم، با عنوان ‎bidi-tex GitHub Organisation‎، متشکل از بزرگانی صاحب نام در زمینهٔ TeX و LaTeX است که هریک در پروندهٔ قطور خود بسته‌ها و کدهای بسیار پیچیده و متعددی در TeX و LaTeX دارند.

امروز یکی از اعضای اصلی این گروه، جناب ‎David Carlisle‎، اولین اصلاحات خود را در مخزن bidi قرار داد و به این ترتیب فعالیت گروه bidi-tex رسماً آغاز گردیده است. بنابراین می‌توان امیدوار بود که از این پس شاهد یک انسجام و همگونی خاصی در این دو نرم‌افزار باشیم. همچنین از این پس دیگر شاهد مسائل و مشکلات حاشیه‌ای مربوط به این بسته‌ها نخواهیم بود که نمونه‌های متعدد این مسائل و مشکلات را می‌توانید با یک نگاه اجمالی در سایت مربوطه بیابید. آخرین نمونهٔ آن هم همین فیلترینگ فونت‌های سری HM بود که در این پیام و این پیام در مورد چگونگی رفع این مشکل توضیح داده شد و به‌عرض رسید که در این فیلترینگ شرایط فیلترینگ یکتا نیست و به علت ضعف طرح مربوطه، به سادگی آشکار و رفع شد.

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

انتشار نسخهٔ جدید، 35.5، بستهٔ bidi توسط ‎bidi-tex GitHub Or

پستتوسط mingranina » 22 ژانویه 2019, 05:09

با سلام

نسخهٔ جدید، 35.5، بستهٔ bidi توسط ‎bidi-tex GitHub Organisation‎ منتشر و در تاریخ 2019/01/19 در سایت ‎CTAN‎ آپلود شده و در تاریخ 2019/01/10 تحت عنوان ‎Revision 49781‎ در مخزن ‎TeXLive‎ قرار گرفته است.

کدهایی که اضافه و یا حذف گردیده (با استفاده از دستور ‎diff -aU 0‎) در فایل پیوست ‎(diff-bidi-35.4-35.5.diff)‎ ذخیره گردیده و در صورت تمایل می‌توانید آن را دانلود و در یک ویرایشگر معمولی مشاهده کنید.

فایل‌های حذف شده: ‎ ‎
فایل‌های اضافه شده: ‎ ‎

راهنما و منابع بسته‌های ‎LaTeX2e (source2e), longtable‎ ممکن است در درک بهتر کدهای موجود در فایل diff-bidi-35.4-35.5.diff مؤثر باشد.

همانگونه که در پیام قبلی به عرض رسید نگهداری از بسته‌های bidi و xepersian به عهدهٔ ‎bidi-tex GitHub Organisation‎ واگذار شده است و با توجه به سوابق اعضای تیم LaTeX3 از این پس اطلاع‌رسانی در مورد این دو نرم‌افزار در مخازن GitHub مربوط به بسته‌های bidi و xepersian به صورتی سیستماتیک، منسجم و دقیق انجام خواهد شد، بنابراین از این به‌بعد اطلاع‌رسانی در مورد بروزرسانی این دو نرم‌افزار در اینجا متوقف خواهد شد و دوستان علاقمند می‌توانند مستقیماً به مخازن مربوطه مراجعه فرمایند.

با تشکر

پ.ن.- زمان‌های اعلام شده در متن پیام به وقت محلی سایت مربوطه است.
پیوست‌ها
diff-bidi-35.4-35.5.zip
(3.04 KiB) دانلود 10 بار
mingranina
 
پست‌ها : 63
تاریخ عضویت: 17 سپتامبر 2016, 07:53

قبلی


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


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