Latex3: تغيير الحالة للسيريلية

تم إنشاؤها على ١٧ فبراير ٢٠٢٠  ·  31تعليقات  ·  مصدر: latex3/latex3

كما هو مذكور في https://github.com/latex3/latex3/issues/671 ، حاليًا

\documentclass{article}
\usepackage[T1,T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{expl3}

\ExplSyntaxOn
\def\test{\text_lowercase:n}
\ExplSyntaxOff

\begin{document}
\test{\.I İ \CYRI И}
\end{document}

يعطي في أفضل الأحوال نتيجة "فردية".

يجب أن يكون من الممكن إجراء تغيير الحالة هنا لأنه لا يعتمد على تغييرات \lccode بل على توسيع И إلى

\u8:И ->\IeC {\CYRI }

ثم القيام بالعمل.

expl3 feature-request

التعليق الأكثر فائدة

josephwright ولكن يجب عليك فعلاً تنفيذ \text_lowercase:n{\emoji{Man}} = \emoji{Boy} ؛-)

ال 31 كومينتر

u8: И -> IeC {CYRI}

أليس من المنطقي استخراج И من u8: И والبحث عن الحالة
المعلومات في بعض intarray؟

تضمين التغريدة
نعم!

ما هي هذه u8: ... الأوامر على أي حال؟ هل هم بحاجة؟

تضمين التغريدة
نعم!

أو ربما لا كريس. قد يتعين على المرء أن يتعامل مع ترميز ^^ في هذا المكان بدلاً من И ولكن بشكل عام أوافق على أن هذا يبدو وكأنه نقطة بداية أفضل

ما هي هذه u8: ... الأوامر على أي حال؟ هل هم بحاجة؟

يجب أن تعرف :-) اسمك موجود في الملف الذي يحتوي على هذا الرمز. نعم ، هناك حاجة إليها: في pdftex ، يرى LaTeX أن البايتات تحللها ويقوم بإنشاء اسم csname واحد منها \u8:... الذي يحمل LICR لهذا الحرف utf8 الذي في الحالة أعلاه هو \IeC {\CYRI } أو إذا كان \u8:... غير معرّف يستجيب بدون تمثيل Unicode لـ ...

يجب أن تعرف :-) اسمك موجود في الملف الذي يحتوي على هذا الرمز.
ولكن ليس كل ما قد أكون مسؤولاً عنه مطلوبًا :-).

أوافق على أن أنظر إلى الكود الأصلي! على الأقل لمعرفة من أين: أتى.

لكن يجب أن أتوقف الآن في حال أغضبت شخصًا معينًا من خلال عرض آرائي في مكان عام :-).

blefloch هناك بعض الأشياء المطلوبة. الأول هو تحديد زوج UTF-8 / ثلاثي / رباعي والاستيلاء عليه بالكامل بدلاً من رمز رمزي. هذا سهل بما فيه الكفاية: تحقق من رموز char النشطة التي تساوي نقطة البداية inputenc . المرحلة الثانية هي معرفة كيفية تغييرها. السبب في أنني ذكرت اتباع نهج \IeC{...} هو أننا لسنا بحاجة إلى بيانات _ new_: إنها نفس الطريقة التي يتعامل بها \MakeUppercase وبالتالي نستخدم بيانات \@uclclist نحن يجمع بالفعل.

السبب في أنني ذكرت اتباع نهج IeC {...} هو أننا لا نحتاج إلى بيانات جديدة:
حسنًا ، قد تحتاج إلى المزيد إذا كنت ترغب في تغطية كل شخصية تغير الحالة تمامًا (قد لا يكون لديهم جميعًا LICRs بعد.)

يعد استخدام الأرقام وجداول Unicode أكثر جاذبية من الناحية الجمالية ، بالطبع. ولكن إذا كانت "جداول الأسماء" تعمل في الوقت الحالي. . .

بالنسبة إلى السيريلية واليونانية والأرمينية وما إلى ذلك ، هل من الممكن استخدام LICRs الجديدة من النموذج cyr {} ، قليلا مثل اللهجات؟

@ car222222 ظهرت المشكلة نظرًا لوجود أماكن تعمل فيها حاليًا \MakeUppercase لن تعمل بها \text_uppercase:n ، والتي تنحصر في الأشياء التي تمر عبر u8:... . لهذا السبب بدأت بهذا. إذا كنا نريد نطاق Unicode الكامل في pdfTeX (قابل للتنفيذ) ، فسنحتاج إلى تخزين البيانات يدويًا في مصفوفة عدد صحيح.

إذا كنا نريد نطاق Unicode الكامل في pdfTeX (قابل للتنفيذ) ، فسنحتاج إلى تخزين البيانات يدويًا في مصفوفة عدد صحيح.

بالنظر إلى أن pdfTeX يوفر عمدًا أحرف utf8 فقط إذا كانت مدعومة بواسطة ترميزات الخط المحملة ، فمن المشكوك فيه تغيير الحالة الأولى ثم اكتشاف أن النتيجة هي حرف غير مدعوم. بالطبع ، إذا كانت البيانات بأكملها داخل التنسيق ، فلا توجد حمولة إضافية (بخلاف الحجم الذي تتخذه) والإعداد الأولي.

من المشكوك فيه أن تتغير الحالة الأولى ثم تجد أن النتيجة هي شخصية غير مدعومة.

لا أجد هذا مشكلة كبيرة. الأحرف الصغيرة والكبيرة في نفس التشفير ، لذلك لن تحصل إلا على خطأ في حرف كبير ألفا إذا بدأت بحرف ألفا صغير غير مدعوم.

في 18/2/2020 الساعة 3:49 مساءً ، كتبت أولريك فيشر:

it is questionable to first case change and then find that the
result is an unsupported character.

لا أجد هذا مشكلة كبيرة. الأحرف الصغيرة والكبيرة في تنسيق
نفس التشفير ، لذلك لن تحصل إلا على خطأ في حرف ألفا كبير إذا كنت
ابدأ بحرف ألفا صغير غير مدعوم.

حتى إذا كان هناك ترميز بأحرف صغيرة ألفا ولكن ليس بأحرف كبيرة
ألفا (قد يكون هذا هو الحال بالنسبة لبعض اللهجات النادرة) ،
يبدو أن الحصول على خطأ في Unicode char لم يتم إعداده أفضل من
الحصول على حرف صغير بطريق الخطأ.

أتفق مع أولريك وبرونو. لكنني أفشل في تخيل حالة واقعية (يقصد التورية) حيث لا يتوفر كلا الحرفين العلوي والصغير في نفس الوقت.

بالنظر إلى أن pdfTeX يوفر عمدًا أحرف utf8 فقط إذا كانت مدعومة من ترميزات الخط المحملة

ماذا يعني؟ لا يوفر pdfTeX "أحرفًا" على الإطلاق ، أليس كذلك؟ و "ترميزات الخطوط المحملة" هو مفهوم LaTeX ، وليس محركًا.

ربما يعني ذلك أنه بالطريقة التي أعددنا بها أصلاً عناصر utf8 لـ LaTeX ، كانت LICRs فقط (وتم توفير التعيينات فقط "للتشفيرات المعروفة" ثم تم تحميلها فقط للترميزات المحملة.

صحيح ، لكن لا داعي للإبقاء على هذه القيود هذه الأيام ، أليس كذلك؟
يمكننا الآن بالتأكيد توفيرها بسهولة لأي مجموعة فرعية من Unicode نرغب في ذلك ، وفي هذا السياق نحتاج فقط إلى تغطية جميع "الأحرف القابلة للغلاف".

إخلاء المسؤولية: لم أكن أبدًا حريصًا جدًا على هذا التقييد على الترميزات المعروفة :-).

    Given that pdfTeX deliberately only provides utf8 chars if
    supported by the loaded font encodings

ماذا يعني؟ لا يوفر pdfTeX "أحرفًا" على الإطلاق ، أليس كذلك؟ و
"ترميزات الخطوط المحملة" هو مفهوم LaTeX ، وليس محركًا.

معنى pdflatex وكتابة pdftex

ربما يعني ذلك أنه بالطريقة التي قمنا بها في الأصل بإعداد عناصر utf8 من أجل
كانت LaTeX و LICRs فقط (وتم توفير التعيينات فقط لـ "المعروف
الترميزات ثم تحميلها فقط للترميزات التي تم تحميلها.

نعم ، وهو شيء جيد لأن ذلك أبقى عالم LaTeX خاليًا من
التوفو والشخصيات المفقودة

صحيح ، لكن لا داعي للإبقاء على هذه القيود هذه الأيام ، أليس كذلك؟
يمكننا الآن بالتأكيد توفيرها بسهولة لأي مجموعة فرعية من Unicode نحن
ترغب في ذلك ، وفي هذا السياق ، نحتاج فقط إلى تغطية جميع "الأحرف القابلة للغلاف".

نعم هنالك. إذا لم يكن لديك الحروف الرسومية لتنضيد الأحرف
لا جدوى من القيام بذلك ، وهذا هو السبب في أن الادعاء بأنك cn تفعل unicode كـ
كما هو الحال في xetex أو luatex (اللاتكس) ثم عمل ثقوب فقط لا
تحذيرات char XXX في السجل هي خطوة إلى الوراء إلى pdflatex
الحل إيمهو

إخلاء المسؤولية: لم أكن أبدًا حريصًا جدًا على هذا التقييد على الترميزات المعروفة :-).

حسنًا ، طالما أنك تكتب باللغة الإنجليزية ، فعادة ما لا يهم إذا كنت
الكتابة بلغات أخرى ويتلف المستند الخاص بك بدون
تحذير لك أنه يفعل

قد تكون هناك أسباب لعدم تحميل LICR للأحرف غير القابلة للتمثيل.

ولكن هنا نتحدث فقط عن تحديد LICRs والأحرف الكبيرة ، لاحظ "الأحرف".
لا علاقة لها بالتنضيد ، لذا فإن الترميزات / الخطوط المتوفرة ليست ذات صلة.
حالة الاستخدام: لا يتم استخدام النموذج ذي الأحرف الكبيرة إلا في إشارة مرجعية بتنسيق pdf ، ولا يتم طباعته أبدًا (بواسطة TeX ، على الأقل!)

بعد النظر إلى المشكلة أكثر قليلاً ، بدا أنه من الأسهل التعامل معها باستخدام قائمة ثابتة من التعيينات بدلاً من محاولة القيام بأشياء من خلال النظر داخل الأحرف النشطة. لقد ألقيت نظرة سريعة على عدد نقاط الشفرة الموجودة مع البيانات المتغيرة للحالة: حوالي 2000. ربما يكون هذا كثيرًا لفعلها جميعًا ، لذلك اخترت في الوقت الحاضر النقاط اليونانية والسيريلية المغطاة بـ T2 / LGR . خواطر مرحب بها.

ماذا عن فكرة تخزين كل منهم في intarray؟

الشيء مع استخدام intarray هو أننا لا نستطيع جعلها متناثرة ، لذا فإن الحجم سيعتمد على نقطة الرمز للقيمة النهائية التي سيتم تخزينها. هناك أيضًا قدر ضئيل من أداء الأداء عند نقطة الاستخدام حيث يتعين علينا الاستخراج والتحويل إلى وحدات البايت وإنشاء أحرف نشطة بعد ذلك ، بدلاً من القيام بذلك مرة واحدة في وقت التحميل.

أيضًا ، بالعودة إلى أعمال "ما هي نقاط الشفرة التي تحتوي على رموز رمزية" ، على حد علمي ، تعتبر اليونانية والسيرلية بالإضافة إلى اللاتينية التي تمت تغطيتها بالفعل هي الأكثر فائدة إلى حد بعيد

حسنًا ، بالنسبة لليونانيين وكيرلس هم الأكثر فائدة ، نعم! لكن ليس لبقية العالم؟
Das Heisst: كيف قمت بقياس هذه الأداة؟

أعتقد أن الإجمالي يرتفع كثيرًا بسبب وجود العديد من المشتقات اللاتينية حوله ، أم لا؟
2000 هو حوالي 30+ حرف أبجدي نموذجي ، على ما أعتقد.

كانت "الأداة المساعدة" هنا تبدأ للتو بـ "ما يعمل حاليًا في pdfTeX" ، لذا "ما هي الترميزات المتاحة". لست متأكدًا مما تغطيه جميع التعيينات بالضبط: من الممكن أن تكون هناك إيجابيات خاطئة. من المفترض أن تكون هناك بداية كل متغيرات الرياضيات (مائل ، سانسريف ، ...).

الكثير منها لهجة لاتينية / سيريلية / يونانية ، ثم هناك كوبيك ، أرميني ، هنغاري قديم ، شيروكي ، إلخ. بالتأكيد ليست 30 حرفًا ، ولكن ربما على الأقل 10.

القائمة الكاملة للنصوص:

  • اللاتينية (> 700 نقطة رمز!) بما في ذلك. إصدارات كاملة العرض
  • اليونانية
  • قبطي
  • السيريلية
  • أرميني
  • الجورجية
  • شيروكي
  • جلاجوليتيك
  • ديزيريت
  • أوساج
  • المجرية القديمة
  • وارانج
  • ميديفيدرين
  • أدلام

!! اللاتينية (> 700 نقطة رمز!) بما في ذلك. إصدارات كاملة العرض
آه نعم ، ناهيك عن النسخ "العلوية المحاطة بدائرة" ،
وأنا متأكد من أنه يجب أن يكون هناك رموز تعبيرية صغيرة في Unicode الآن :-).

@ car222222 لحسن الحظ ، لا توجد أحرف محاطة بدائرة ؛) إنها بشكل أساسي الكثير والكثير من إصدارات اللكنة

josephwright ولكن يجب عليك فعلاً تنفيذ \text_lowercase:n{\emoji{Man}} = \emoji{Boy} ؛-)

أفكار حول مزيد من التغطية؟ أم نذهب مع ما أعددته للحاضر؟

يختلف التعامل مع \.I İ في MWE أعلاه في pdfLaTeX (أيضًا مقارنة بمحركات Unicode) ، لكنني أعترف أن İ ربما يكون حالة صعبة في كود تغيير الحالة العامة.

لذلك جربت مغير الحالة التركي

\documentclass{article}
\usepackage{fontspec}
\usepackage{libertinus}
\usepackage{expl3}

\ExplSyntaxOn
\def\test{\text_lowercase:nn{tr}}
\ExplSyntaxOff

\begin{document}
\test{\.I İ \CYRI И}
\end{document}

( L3 programming layer <2020-02-25> ) و LuaLaTeX و XeLaTeX ليسوا سعداء

! Undefined control sequence.
<inserted text> ı

moewew هم ، هذا غريب بعض الشيء: سأحصل على مرتبة

moewew مشكلة محددة مع التركية: تم

أفكار حول مزيد من التغطية؟ أم نذهب مع ما أعددته للحاضر؟

سأبدأ بالحاضر وأمتد عند الحاجة

حسنًا ، أعتقد أن هذا هو أفضل منصب ، ويعني أيضًا أنه يمكننا الحفاظ على تقدم المشكلات. سأختتم هنا ويمكن معالجة إضافات محددة في الإصدارات الجديدة.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات