Mathjax: المعادلة \ التسمية و \ المرجع

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

طلب المواصفات! هل يمكننا الحصول على تسهيلات \ label و \ ref للمعادلات؟

قد يكون هذا شائعًا بالفعل ، لكنني لم أتمكن من العثور عليه في قائمة المشكلات (أو ذكره في الوثائق). وقد تمت مناقشته بشكل أساسي منذ فترة طويلة: http://sourceforge.net/projects/mathjax/forums/forum/948700/topic/3817124

شكرا لك!

Fixed Test Available v2.0

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

لقد قمت بنشر تطبيق لترقيم المعادلات التلقائي ، جنبًا إلى جنب مع وحدات الماكرو \ label و \ ref ، في الفرع issue71 من مفترق MathJax الخاص بي. يتطلب هذا بعض التغييرات المهمة في الإجراءات الأساسية لـ MathJax ، لذا يجب أن تكون حذرًا عند استخدام هذا ، حيث أن هذه التغييرات جديدة جدًا ، وبالتالي لم يتم التخلص من بقية النواة. أنا واثق من أنهم بخير ، ولكن قد تكون هناك بعض التفاصيل الدقيقة التي نجدها عندما يرون المزيد من الاستخدام.

هناك معلمات تكوين جديدة (راجع ملف config / defaults.js) تتحكم في ترقيم المعادلة. على وجه الخصوص ، تتحكم معلمة التكوين TeX.equationNumbers.autoNumber في كيفية معالجة MathJax للترقيم التلقائي. افتراضيًا ، لا يتم إجراء أي ترقيم تلقائي (لذا فإن الإعداد الافتراضي هو نفس سلوك MathJax الحالي). ولكن يمكنك تعيين

MathJax.Hub.Config({
  TeX: { 
     equationNumbers: {  autoNumber: "AMS"  },
     extensions: ["AMSmath.js"]
  }
});

للحصول على ترقيم لبيئات AMS (المعادلة ، المحاذاة ، التجميع ، الخطوط المتعددة ، إلخ) ، مع قيام البيئات المميزة بنجمة بقمع الأرقام. يمكنك استخدام \ tag لتوفير رقم المعادلة الخاص بك ، و \ label و \ ref للوصول إلى رقم المعادلة داخل نص الصفحة. (يتم الآن التعرف على الأمر ref داخل وخارج الوضع الرياضي.)

إذا قمت بتعيين autoNumber على "all" ، فسيتم ترقيم كل معادلة معروضة تلقائيًا.

مشكلة يجب وضعها في الاعتبار: يتم التعامل مع أرقام المعادلات باستخدام عنصر mlabeledtr MathML ، والذي لم يتم تنفيذه بواسطة Firefox (لا الإصدار 3 أو 4) ، لذلك إذا كنت تستخدم عارض NativeMML ، فلن يتم عرض أرقام المعادلات. لاحظ أن ملفات التكوين المجمعة التي تتضمن "HTMLorMML" ستحدد ناتج NativeMML في Firefox ، على سبيل المثال. يمكن تجاوز هذا بتحديد

<script type="text/x-mathjax-config">
MathJax.Hub.Config({
  MMLorHTML: { prefer: { Firefox: "HTML" } }
});
</script>

قبل تحميل MathJax.js لإجبار Firefox على استخدام عارض إخراج HTML-CSS بدلاً من عارض NativeMML (مع السماح لـ IE / MathPlayer باستخدام MathML).

ما زلت أعمل في هذا الفرع ، لذا ما زلت أعمل على التغييرات. لست سعيدًا بالطريقة المستخدمة للتعامل مع المراجع الموجهة ، وربما أغير طريقة عملها (على الرغم من أن ذلك سيكون داخليًا ، ولن يغير طريقة ظهوره للمؤلفين أو المستخدمين).

دافيد

ال 33 كومينتر

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

دافيد

لقد قمت بنشر تطبيق لترقيم المعادلات التلقائي ، جنبًا إلى جنب مع وحدات الماكرو \ label و \ ref ، في الفرع issue71 من مفترق MathJax الخاص بي. يتطلب هذا بعض التغييرات المهمة في الإجراءات الأساسية لـ MathJax ، لذا يجب أن تكون حذرًا عند استخدام هذا ، حيث أن هذه التغييرات جديدة جدًا ، وبالتالي لم يتم التخلص من بقية النواة. أنا واثق من أنهم بخير ، ولكن قد تكون هناك بعض التفاصيل الدقيقة التي نجدها عندما يرون المزيد من الاستخدام.

هناك معلمات تكوين جديدة (راجع ملف config / defaults.js) تتحكم في ترقيم المعادلة. على وجه الخصوص ، تتحكم معلمة التكوين TeX.equationNumbers.autoNumber في كيفية معالجة MathJax للترقيم التلقائي. افتراضيًا ، لا يتم إجراء أي ترقيم تلقائي (لذا فإن الإعداد الافتراضي هو نفس سلوك MathJax الحالي). ولكن يمكنك تعيين

MathJax.Hub.Config({
  TeX: { 
     equationNumbers: {  autoNumber: "AMS"  },
     extensions: ["AMSmath.js"]
  }
});

للحصول على ترقيم لبيئات AMS (المعادلة ، المحاذاة ، التجميع ، الخطوط المتعددة ، إلخ) ، مع قيام البيئات المميزة بنجمة بقمع الأرقام. يمكنك استخدام \ tag لتوفير رقم المعادلة الخاص بك ، و \ label و \ ref للوصول إلى رقم المعادلة داخل نص الصفحة. (يتم الآن التعرف على الأمر ref داخل وخارج الوضع الرياضي.)

إذا قمت بتعيين autoNumber على "all" ، فسيتم ترقيم كل معادلة معروضة تلقائيًا.

مشكلة يجب وضعها في الاعتبار: يتم التعامل مع أرقام المعادلات باستخدام عنصر mlabeledtr MathML ، والذي لم يتم تنفيذه بواسطة Firefox (لا الإصدار 3 أو 4) ، لذلك إذا كنت تستخدم عارض NativeMML ، فلن يتم عرض أرقام المعادلات. لاحظ أن ملفات التكوين المجمعة التي تتضمن "HTMLorMML" ستحدد ناتج NativeMML في Firefox ، على سبيل المثال. يمكن تجاوز هذا بتحديد

<script type="text/x-mathjax-config">
MathJax.Hub.Config({
  MMLorHTML: { prefer: { Firefox: "HTML" } }
});
</script>

قبل تحميل MathJax.js لإجبار Firefox على استخدام عارض إخراج HTML-CSS بدلاً من عارض NativeMML (مع السماح لـ IE / MathPlayer باستخدام MathML).

ما زلت أعمل في هذا الفرع ، لذا ما زلت أعمل على التغييرات. لست سعيدًا بالطريقة المستخدمة للتعامل مع المراجع الموجهة ، وربما أغير طريقة عملها (على الرغم من أن ذلك سيكون داخليًا ، ولن يغير طريقة ظهوره للمؤلفين أو المستخدمين).

دافيد

هذا رائع للغاية ، شكرًا جزيلاً!

على الرغم من وجود خطأ واحد ، فإن كتابة \text{(see \eqref{cs})} أثناء وجودك في وضع الرياضيات يبدو أنها تأكل قوس الإغلاق الثاني. إضافة مسافة قبل أن تعمل بشكل مثالي.

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

لقد أصلحت الفهرس غير الصحيح الذي تسبب في إسقاط الحرف الذي يتبع \eqref . يمكنك تحديث نسختك من فرع issue71 للحصول على الإصلاح.

دافيد

ملاحظة: لقد قمت أيضًا بتحديثه حتى لا تضطر إلى طلب تمديد AMSmath صراحة ؛ إذا قمت بتشغيل الترقيم التلقائي ، فسيتم تحميله تلقائيًا الآن.

دافيد

==> مطلوب الإعداد على testcase لأنني أخطط لإضافة اختبارات وحدة لتغطية هذه الميزة.

هناك الكثير من الأشياء لاختبارها هنا. المراجع إلى الأمام ، والمراجع السابقة ، والمراجع إلى تسميات غير موجودة ، واستخدام \tag لتجاوز الترقيم التلقائي ، واستخدام \notag و \nonumber لمنع الترقيم ، والترقيم لبيئات AMS المختلفة ، والإعدادات المختلفة لـ autoNumber ، وهكذا. سيكون الأمر مؤلمًا ، يؤسفني أن أقول.

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

لقد أعددت بعض الاختبارات لهذا الغرض.

التكوين / tex2jax / processRefs-1.html
التكوين / TeX / equationNumbers / autoNumber-1.html
التكوين / TeX / equationNumbers / autoNumber-2.html
التكوين / TeX / equationNumbers / autoNumber-3.html
التكوين / TeX / equationNumbers / autoNumber-4.html
التكوين / TeX / equationNumbers / formatID-1.html
التكوين / TeX / equationNumbers / formatNumber-1.html
التكوين / TeX / equationNumbers / formatTag-1.html
التكوين / TeX / equationNumbers / formatURL-1.html
LaTeXToMathML / المراجع / eqref-1.html
LaTeXToMathML / المراجع / التسمية 1.html
LaTeXToMathML / المراجع / المرجع-1a.html
LaTeXToMathML / المراجع / المرجع-1b.html
LaTeXToMathML / المراجع / المرجع -2. html
LaTeXToMathML / مراجع / مرجع 3.html
LaTeXToMathML / المراجع / العلامة 1.html
LaTeXToMathML / المراجع / العلامة 2.html
LaTeXToMathML / المراجع / notag-1.html

==> في الاختبارات

توجد فاصلة إضافية في tex2jax.js ، السطر 181 ، مما يؤدي إلى تعطل IE.

يبدو أن mlabeledtr تختفي مع Firefox عند تمكين MathML الأصلية. ضع في اعتبارك على سبيل المثال:

http://devel.mathjax.org/testing/testsuite/Configuration/TeX/equationNumbers/formatTag-1.html؟mathJaxPath=http : //devel.mathjax.org/testing/mathjax/dpvc/issue71/

توجد فاصلة إضافية في tex2jax.js ، السطر 181 ، مما يؤدي إلى تعطل IE.

نعم ، لقد اكتشفت ذلك بالفعل وقمت بإصلاحه في الفرع v2.0-candidate (بما أنني قمت بدمج جميع الفروع المنفصلة ، لم أعد أقوم بإجراء تغيير عليها بشكل منفصل بعد الآن).

يبدو أن mlabeledtr تختفي مع Firefox عند تمكين MathML الأصلية.

هذا لأن Firefox لا يطبق <mlabeledtr> ، ويسقط أيًا من هذه الصفوف ، لذلك بدلاً من اختفاء الرياضيات ، يتغير MathJax إلى <mtr> عادي ويسقط التسمية كحل وسط. (يجب أن يكون هذا في قائمة مشاكل Firefox ، إذا لم يكن كذلك بالفعل. الآن بعد أن أصبح الترقيم التلقائي جزءًا من MathJax ، سيكون هذا قيدًا أكثر جدية لـ MathML الأصلي لمتصفح Firefox ، وهو أحد الأسباب التي تجعل الإصدار v2. من المحتمل أن يغير 0 الإعداد الافتراضي لتفضيل HTML-CSS بدلاً من NativeMML لمتصفح Firefox.)

بالنسبة لمتصفح Firefox ، لماذا نزيل التسمية؟ قد نتركه ، حتى لو لم يكن في وضع جيد؟

نظرًا لأن التسمية هي أول <mtd> في <mlabeledtr> ، فإن استبدال <mlabeledtr> بـ <mtr> سيؤدي إلى التخلص من الأعمدة. سيتعين عليك إما العودة وإدراج إدخالات فارغة في جميع الصفوف الأخرى (غير المسماة) بالجدول ، أو سيتعين عليك نقل التسمية إلى نهاية الصف ، وربما إضافة إدخالات فارغة للتأكد من أن التسمية قد تجاوزت العمود الأيمن مستخدم في أي صف آخر من الجدول. كلاهما كانا أكثر تعقيدًا مما أردت القيام به. كان التوقع مع Jax الناتج من NativeMML هو عدم تعديل MathML أكثر من الضرورة القصوى ، وقد فعلت هذا فقط من أجل تجنب فقدان الرياضيات تمامًا. لا أعتقد أنه من الحكمة محاولة التغلب على كل خطأ أصلي في MathML في عارض كل متصفح. كان أملي الأصلي هو أن يقوم Firefox في النهاية بتنفيذ الميزات المفقودة ، وستكون إزالة الملصق مؤقتًا ، ولكن لا يبدو أن هذا سيتوقف في أي وقت قريبًا.

دافيد

لاحظ أن تغيير mlabeledtr مستهدف لمتصفح Firefox 9:
https://bugzilla.mozilla.org/show_bug.cgi؟id=356870

يتم الآن عرض محتوى mlabeledtr كصف عادي ، باستثناء التسمية المخفية افتراضيًا (يمكن تجاوز ذلك باستخدام قاعدة CSS).

للحصول على الخطأ لتنفيذ mlabeledtr ، انظر
https://bugzilla.mozilla.org/show_bug.cgi؟id=689641

تم إصدار Firefox 9 ويتضمن الحل البديل لـ mlabeledtr ، لذلك لن يحتاج MathJax إلى القيام بذلك بنفسه لهذا الإصدار.

هل هناك أي فرصة للحصول على \label (ربما اختياريًا) لتعيين سمة المعرف في المعادلة إلى شيء يمكن التنبؤ به ومشتق من التسمية؟ هذا من شأنه تمكين المراجع من وثائق أخرى إلى معادلة معينة.

على سبيل المثال ، في الوقت الحالي ، إذا كان لدي

\begin{align}
F &= m a \label{NewtonsLaw}
\end{align}

سيؤدي هذا إلى إنشاء معرف mjx-eqn-1 إذا كانت المعادلة الأولى. يعمل هذا داخل المستند لأن \eqref{NewtonsLaw} ينشئ ارتباطًا بـ mjx-eqn-1 .

ومع ذلك ، لا يمكنني الإشارة إلى المعادلة من مستند HTML آخر دون معرفة رقم المعادلة. على سبيل المثال ، لا يمكنني إنشاء رابط خارجي لـ http://www.mywebsite.com/mypage.html#mjx -eqn-NewtonsLaw

grahamdennis - فكرة جيدة. لقد قمت بتعديل الفرع v2.0-candidate ليشمل التغييرات اللازمة لتحقيق ذلك. التغييرات المطلوبة صغيرة ، لذا يمكنك تعديل نسختك الخاصة من ملفات AMSmath.js و TeX / config.js لتضمينها.

دافيد

شكرا dpvc!

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

تم إصدار Firefox 9 ويتضمن الحل البديل لـ mlabeledtr ، لذلك لن يحتاج MathJax إلى القيام بذلك بنفسه لهذا الإصدار.

Davide ، هل أخذت هذا التعليق في الحسبان لـ MathJax 2.0؟ مع إزالة حل MathJax ، سيتمكن مستخدمو Firefox من عرض التسمية إذا كانوا يريدون ذلك ، باستخدام قاعدة CSS البسيطة mlabeledtr > mtd:first-child { display: table-cell; } .

نعم ، يتم تطبيق الحل البديل لـ <mlabeledtr> بشكل مشروط ، ولا يتم استخدامه لـ FF9 وما فوق. راجع سطر ملف NativeMML jax.js 492 .

حسنا عظيم! شكرا.

هل يمكنني ضبطه على معادلات رقمية فقط عند إضافة تسمية؟ لا أستخدم \ label و \ ref كثيرًا.

أعلم أنه يمكنني استخدام بيئة المعادلة * في LaTeX ، لكن لسوء الحظ ، أنا أستخدم Markdown و * محجوز لبناء جملة تخفيض السعر.

شكرا لك.

emptymalei ، لا يوجد إعداد لما تبحث عنه ، ولكن يمكنك استخدام وحدات ماكرو صريحة \tag{} عندما تريد معادلة مرقمة. سيتطلب ذلك منك إجراء الترقيم بنفسك ، ولكن إذا كنت تحتاج فقط إلى بعض المراجع ، فقد يعمل ذلك من أجلك. لذلك ستستخدم \label{} و \tag{} معًا لترقيم معادلة وتقديم تسمية للرجوع إليها لاحقًا.

dpvc شكرا لك. سأحاول \ العلامة {}.

أهلا،

شكراً لكم جميعاً على المشروع الرائع وهذه الميزة الرائعة. هنا لدي مشكلة صغيرة. عند تعديل الرياضيات باستخدام \label بالداخل ، سيتم مضاعفة الملصقات (لإعادة إنتاج هذا ، يمكنك محاولة تحرير صيغة باستخدام \label في أي عرض حي MathJax).

أعتقد أنه يمكن إصلاحه عن طريق إزالة تعريف التسمية في MathJax عند استبدال عناصر HTML. لكن لم أجد أي واجهة لإبلاغ هذه الإزالة ، أو أي رمز يمكنه مسح التعريفات دون تحديث الصفحة.

هل لدي أي فكرة عما يمكنني فعله؟

شكرا لكم مقدما.

من فضلك لا تعيد استخدام الخيوط.

سترغب في قراءة الوثائق الخاصة بإعادة تعيين أرقام المعادلات.

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

يمكن إعادة تعيين أرقام المعادلات ، لكن لا يمكن تسمياتها.

تتم إعادة تعيين الملصقات أيضًا بمقدار resetEquationNumbers() ، على الرغم من أن الوثائق يمكن أن تكون أوضح بشأن ذلك.

شكرا جزيلا! يجب أن يكون استخدامي الخاطئ يؤدي إلى الفشل. شكرا مرة اخرى. اسف على الازعاج.

يبدو MathJax.InputJax.TeX.resetEquationNumbers() كان بناء 2.x: http://docs.mathjax.org/en/v2.7-latest/advanced/typeset.html#reset-automatic-equation-numbering
أوراق اختيارية غير موثقة ولكن أوضحها دافيد في https://github.com/mathjax/MathJax/issues/1705#issuecomment-282743204 ، شكرًا.
في 3.x تم استبداله بـ MathJax.texReset() http://docs.mathjax.org/en/v3.0-latest/web/typeset.html#tex-reset
[بالطبع ، تغيرت الكثير من الأشياء في 3.0. هذا في الغالب لمساعدة مستقبلي في العثور على هذا مرة أخرى لأنني ما زلت في 2.x ؛-) إنه أمر مؤسف بعض الشيء أن الكثير من روابط 2.x doc تتعطل الآن إذا كانت "أحدث /" ...]

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