# تضمين Discourse-math المطبوخ في عرض الطباعة ورسائل البريد الإلكتروني

**URL:** https://meta.discourse.org/t/include-cooked-discourse-math-in-print-view-and-emails/384092
**Category:** Feature
**Tags:** email, math, ux
**Created:** [26 سبتمبر 2025، 7:46ص UTC](https://meta.discourse.org/t/include-cooked-discourse-math-in-print-view-and-emails/384092 "2025-09-26T07:46:45Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![Ethsim2](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ethsim2/32/522255_2.png) [@Ethsim2](https://meta.discourse.org/u/Ethsim2)
#### Post date: [26 سبتمبر 2025، 7:46ص UTC](https://meta.discourse.org/t/include-cooked-discourse-math-in-print-view-and-emails/384092/1 "2025-09-26T07:46:45Z")

</div>

**المشكلة**  
يتم عرض Discourse-math بشكل جميل في المتصفح، ولكن في السياقات التي لا يمكن فيها تشغيل JavaScript، تتراجع الرياضيات إلى مصدر LaTeX خام. حالتان لهما تأثير كبير:

- **عرض الطباعة (`/print` أو متصفح الطباعة إلى PDF):** تظهر الرياضيات كـ `$...$` بدلاً من رموز معروضة.
- **رسائل البريد الإلكتروني (ملخصات، إشعارات، اشتراكات):** يتم تسليم الرياضيات بشكل خام، غير قابلة للقراءة للمستلمين ما لم ينسخوها ويلصقوها في محرر LaTeX.

هذا يكسر سير العمل الهام للمجتمعات التي تعتمد على Discourse للمحتوى التقني.

* * *

**لماذا هذا مهم**

- غالبًا ما يحتاج معلمو وباحثو العلوم والتكنولوجيا والهندسة والرياضيات إلى **طباعة المواضيع** أو **إعادة توجيه رسائل البريد الإلكتروني**. إذا لم تكن الرياضيات واضحة، فإن تلك التصديرات غير قابلة للاستخدام.
- تم إصلاح فجوات أخرى في الطباعة/رسائل البريد الإلكتروني (المفسدات، الروابط المضمنة، الصور) - الرياضيات هي إغفال صارخ.
- دعم الرياضيات المطبوخة في سياقات غير JavaScript سيجعل Discourse منصة من الدرجة الأولى للمجتمعات التقنية.

* * *

**الحل المقترح**

- **خطوة خفيفة (الطباعة):**
  - تأكد من أن عرض `/print` يتضمن HTML الرياضيات المطبوخة.
  - تشغيل تنسيق MathJax قبل الطباعة.

- **خطوة أثقل (رسائل البريد الإلكتروني):**
  - استكشاف عرض MathJax من جانب الخادم، كما اقترح سام ([Sam suggested](https://meta.discourse.org/t/discourse-math/65770/214?u=ethsim2)).
  - عرض الرياضيات إلى SVG أو HTML مطبوخ مسبقًا حتى يرى المستلمون المعادلات المقروءة مباشرة في عملاء البريد الإلكتروني.

- **إعداد موقع اختياري:**
  - “استخدام الرياضيات المطبوخة في عرض الطباعة/رسائل البريد الإلكتروني” → يسمح للمسؤولين بالاختيار بين المصدر الخام مقابل الرياضيات المعروضة.

* * *

**المشاكل ذات الصلة / العمل السابق**

- ✅ تم إصلاح الرياضيات داخل لوحات `[details]` (PR #111، يونيو 2025).
- 📝 كان عرض الطباعة يحتوي بالفعل على إصلاحات للمفسدات/الروابط المضمنة → سابقة لتضمين العناصر المطبوخة.
- 📧 رسائل البريد الإلكتروني: حدد تعليق سام (#214) العرض من جانب الخادم كحل طويل الأجل.

* * *

**ملخص / TL;DR**  
في الوقت الحالي، تتراجع الرياضيات في عرض الطباعة ورسائل البريد الإلكتروني إلى LaTeX خام. إضافة عرض الرياضيات المطبوخة سيجعل ملفات PDF والملخصات **قابلة للقراءة واحترافية ومتسقة** مع ما يراه المستخدمون في المتصفح.

> **استنساخ على Discourse مع Safari لنظام iOS**
>
> حتى عند تمكين **طلب موقع سطح المكتب** في Safari، لا يزال Discourse يلحق  
> `?mobile_view=1` عند فتح `/print`، مما يجبر عرض الطباعة المبسط للجوال.
> 
> الحل البديل: قم بالتغيير يدويًا إلى `?mobile_view=0` للحصول على تخطيط طباعة سطح المكتب الكامل.
> 
> **مثال**  
> `/t/fw-the-email-subject/12345/print?mobile_view=0`

---

<div class="post-metadata">

### Author: ![Ethsim2](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ethsim2/32/522255_2.png) [@Ethsim2](https://meta.discourse.org/u/Ethsim2)
#### Post date: [11 يناير 2026، 9:05م UTC](https://meta.discourse.org/t/include-cooked-discourse-math-in-print-view-and-emails/384092/2 "2026-01-11T21:05:16Z")

</div>

> [@sam](#):
>
> > [@Lhc\_fl](#):
> >
> > مرحباً، يبدو أن إضافة الرياضيات تعتمد على الواجهة الأمامية للعرض. لذلك، لا يمكن لمستخدمي البريد الإلكتروني لدينا تلقي صيغة الرياضيات المعروضة.
> > 
> > هل هناك طريقة لحل هذه المشكلة؟
> 
> من الناحية التقنية، نعم… ولكن الأمر صعب. سنحتاج إلى تحميل MathJax في MiniRacer (أو Node) ومحاكاة DOM والعرض إلى SVG.
> 
> أنا متأكد من أن بعض الأشخاص قاموا بذلك من قبل ولكن لا يمكنني العثور على أمثلة سهلة ومُصانة في الواقع. ربما يستحق الأمر الاختبار لمعرفة ما إذا كانت حزمة العقدة تعمل في المقام الأول.

نعم، أعتقد أن ملخص سام دقيق: إذا أردنا أن تعرض _رسائل البريد الإلكتروني / عرض الطباعة_ الرياضيات معروضة، فنحن بحاجة إلى **عرض الرياضيات من جانب الخادم** (أو على الأقل “العرض المسبق” من جانب الخادم)، لأن عملاء البريد الإلكتروني لن يقوموا بتشغيل MathJax.

النهج الواقعي سيكون:

- أثناء الطهي (أو في مهمة خلفية بعد الطهي)، **ابحث عن نطاقات الرياضيات** (المضمنة + المعروضة).
- اعرض كل تعبير إلى **SVG** (أو MathML كحل بديل) باستخدام MathJax في بيئة Node.
- استبدل الرياضيات في HTML المطبوخ المستخدم للبريد الإلكتروني/الطباعة بأحد ما يلي:
  - `\u003csvg ...\u003e` مضمن (أفضل دقة، لا يوجد استدعاء خارجي)، أو
  - `\u003cimg src=\"data:image/svg+xml;base64,...\"\u003e` (أكثر توافقًا لبعض العملاء، ولكنه قد يصبح كبيرًا).

- التخزين المؤقت بواسطة مفتاح ثابت (على سبيل المثال `sha256(latex + display_mode + macros + font_config)`), لذلك نقوم بالعرض مرة واحدة فقط لكل صيغة فريدة.

الأجزاء الصعبة (ولكن يمكن إدارتها إذا تم تحديد نطاقها بعناية):

- **محاكاة DOM** : مخرجات “المتصفح” الخاصة بـ MathJax تريد DOM؛ لذلك سنحتاج على الأرجح إلى `mathjax-full` + `jsdom` (أو استخدام مسار المحول النقي).
- **الأداء / المهلات** : قم بذلك بشكل غير متزامن في قائمة انتظار المهام، وتدهور بشكل جيد (اترك LaTeX كما هو إذا فشل العرض).
- **مفارقات عملاء البريد الإلكتروني** : بعض العملاء يزيلون SVG؛ لذا فإن وجود خطة بديلة أمر مهم (على سبيل المثال، نص عادي/LaTeX، أو MathML حيث يتم دعمه).

إذا أراد شخص ما إجراء اختبار سريع، فإن أول تجربة سأقوم بها هي:

1. برنامج نصي صغير لـ Node يستخدم `mathjax-full` لعرض `$begin:math:text$E\\=mc\\^2$end:math:text$` إلى SVG،
2. معرفة الافتراضات التي يقدمها (DOM مقابل المحول)،
3. ثم تحديد ما إذا كان MiniRacer طريقًا مسدودًا ويجب أن نتعامل مع هذا على أنه “يحتاج إلى توفر Node” (أو خدمة صغيرة).

إذا نجح هذا الاختبار، فيمكننا التحدث عن مكان توصيله (مسار البريد الإلكتروني مقابل الطهي مقابل عرض الطباعة)، وما نقوم بتخزينه مؤقتًا/تخزينه.
