Mathjax: 耇雑なテキストレむアりト、特にTeX入力を䜿甚[以前MathJaxは耇雑なテキストレむアりトをサポヌトしおいたせん。]

䜜成日 2013幎05月19日  Â·  23コメント  Â·  ゜ヌス: mathjax/MathJax

MathJaxは個々のコヌドポむントを調べるため、双方向性、コンテキストシェヌピングなどを必芁ずするスクリプトを凊理するのに問題がありたす。これは、たずえばヘブラむ語やアラビア語を䜿甚しようずするずい぀でも衚瀺されたす。

MathJaxがこれらの範囲を識別し、それらを個々の文字に分割するのではなく、ブロックずしお保持できるずよいでしょう。 少なくずも\ textモヌドでは。

http://en.wikipedia.org/wiki/Complex_text_layout

最も参考になるコメント

構成のHTML-CSS $セクションずSVGセクションでmtextFontInheritをtrueに蚭定するず、MathJaxは\text{}を単䞀の<span>であるため、芁求どおりに実行できたす。 mtextFontInheritがfalseの堎合、MathJaxの方がうたくいく可胜性がありたす。 「䞍明な」文字を個別の<span>に入れるのではなく、1぀のコレクションにグルヌプ化する必芁がありたす。

党おのコメント23件

構成のHTML-CSS $セクションずSVGセクションでmtextFontInheritをtrueに蚭定するず、MathJaxは\text{}を単䞀の<span>であるため、芁求どおりに実行できたす。 mtextFontInheritがfalseの堎合、MathJaxの方がうたくいく可胜性がありたす。 「䞍明な」文字を個別の<span>に入れるのではなく、1぀のコレクションにグルヌプ化する必芁がありたす。

PS、私はりィキメディアのバグゞラに関するレポヌトを芋お、修正するもののリストにそれを远加するこずを蚈画しおいたした。 それを远跡するためにここで問題を芋぀めおくれおありがずう。

mtextFontInheritのヒントをありがずう。 ずにかくそれを有効にする぀もりでしたが、これがそれを行うもう1぀の理由です。

v2.3ではRTLのサポヌトがいく぀か远加されたしたが、耇数文字のシヌケンスが1぀の単䜍ずしお扱われるずいう問題は残っおいたす。 \text{}の堎合、これらの文字はすでに1぀の<span>にグルヌプ化されおいる必芁がありたす。これは、あたり䟿利ではありたせんが、それを凊理する1぀の方法です。

理想的には、MathJaxは、珟圚の単䞀のラテン文字の堎合ず同様に、1぀のグルヌプを圢成する各シヌケンスを単䞀の<mi>たたは<mo>に配眮したす。 私はこれをある皋床調べたしたが、それを凊理するのにいく぀かの困難がありたす。 結合文字を前の文字ずグルヌプ化するこずは可胜ですが、䞀郚の文字がどのように機胜するかは私にはわかりたせん。 たずえば、ノィラヌマU + 0D4Dは、誀解されおいるかもしれたせんが、巊偎のキャラクタヌだけでなく、右偎のキャラクタヌも組み合わせおいるようです。 たた、これらのグルヌプ化の䞀郚は、文字の組み合わせではなく、フォント内の合字によっお凊理されるようです。 残念ながら、MathJaxはフォントからの合字情報にアクセスできたせん。 合字デヌタをMathJaxのフォントテヌブルに远加するこずは可胜ですが、これはかなりの量のデヌタであり、1ペヌゞで䜿甚されるデヌタはごくわずかです。

私は、これらの機胜を䜿甚しお、詊しおいるこずが十分かどうかを知るための蚀語に粟通しおいたせん。 さたざたな蚀語から、察応する必芁のあるさたざたな状況を瀺すいく぀かの䟋を取埗できるかどうか疑問に思っおいたす。

1぀のアプロヌチは、各蚀語のスクリプトに必芁なデヌタを、それを必芁ずするペヌゞにロヌドされる個々の拡匵機胜に配眮するこずですMathJax構成で明瀺的に、たたはペヌゞの数孊内の\require{}を介しお。 それは受け入れられるず思いたすか

おそらく、私たちのWMF蚀語゚ンゞニアリングの@ amire80は、ここで少し圹立぀こずができたす...

@hartmanい぀か@ amire80を突くこずができるず思いたすか 特にりィキペディアがSVG出力をより広く展開したい堎合は、これを改善したいず思いたす。

ここにいるよ 

手䌝いたしょうか

テスト -喜んで、正確に䜕をテストするか教えおください。

非ラテン文字が数匏でどのように機胜するかの䟋 -ヘブラむ語の教科曞では䜿甚されおいたせんが、アラビア語ずペルシア語の教科曞では䜿甚されおいたす。 たぶん@ebraminioはここでチャむムを鳎らすこずができたす。

他に䜕か

@ amire80に立ち寄っおくれおありがずう:-)

手䌝いたしょうか

非ラテン文字の結合文字の凊理を改善できるこずを願っおいたす。 これは、WMFのbugzilla / phabricatorで繰り返し発生しおいたす。 https://github.com/mathjax/MathJax/issues/474#issuecomment -38324717からDavideを匕甚するには

理想的には、MathJaxは1぀のグルヌプを圢成する各シヌケンスを1぀にたずめたすたた、珟圚の単䞀ラテン文字の堎合ず同じように。 私はこれをある皋床調べたしたが、それを凊理するのにいく぀かの困難がありたす。 結合文字を前の文字ずグルヌプ化するこずは可胜ですが、䞀郚の文字がどのように機胜するかは私にはわかりたせん。 たずえば、ノィラヌマU + 0D4Dは、誀解されおいるかもしれたせんが、巊偎のキャラクタヌだけでなく、右偎のキャラクタヌも組み合わせおいるようです。 たた、これらのグルヌプ化の䞀郚は、文字の組み合わせではなく、フォント内の合字によっお凊理されるようです。 残念ながら、MathJaxはフォントからの合字情報にアクセスできたせん。 合字デヌタをMathJaxのフォントテヌブルに远加するこずは可胜ですが、これはかなりの量のデヌタであり、1ペヌゞで䜿甚されるデヌタはごくわずかです。

私は、これらの機胜を䜿甚しお、詊しおいるこずが十分かどうかを知るための蚀語に粟通しおいたせん。 さたざたな蚀語から、察応する必芁のあるさたざたな状況を瀺すいく぀かの䟋を取埗できるかどうか疑問に思っおいたす。

したがっお、私たちの質問は次のようになりたす。誰かが私たちず共有できる専門知識を持っおいたすか @hartmanは芪切にもあなたを指さしおくれたした;-)

おそらく、これを別の問題に分割する必芁がありたす。

ノィラヌマの非垞に基本的な考え方は、子音+ノィラヌマ+子音のシヌケンスには、1぀のグリフのスペヌスを占めるように芋える3぀のUnicode文字があるずいうこずですただし、はるかに耇雑になる可胜性がありたす。

より䞀般的には、MathJaxの珟圚の状況を理解したいず思いたす。 珟圚のレンダリングをテストするにはどうすればよいですか 自分のむンスタンスをむンストヌルしたすか たたは、珟圚のバヌゞョンをテストできるオンラむンむンスタンスはありたすか

子音+ノィラヌマ+子音には3぀のUnicode文字があり、1぀のグリフのスペヌスを占めるように芋えたす

右。 結合文字は数孊的なレむアりトでは十分に䞀般的であるため、䞀般的な状況を理解しおいたす。

ただし、はるかに耇雑になる可胜性がありたす。

それが私たちの問題です。 ほずんどの自然蚀語、非ラテン文字の詳现が欠けおいたす。

たたは、珟圚のバヌゞョンをテストできるオンラむンむンスタンスはありたすか

これは、MediaWikimath拡匵機胜のMathML / SVGモヌドを䜿甚、ブラりザヌこのサンプルたたはこのcodepen 、たたはMathJaxのロヌカルコピヌを䜿甚しお行うこずができたす。

基本的な䟋 àŽ€àµàŽ°ã¯&#xD24;&#xD4D;&#xD30;に倉換され、これらの皮類の結合文字を識別するルヌチンがないため、TeX入力はこれを内郚でMathMLに倉換したす。

<math xmlns="http://www.w3.org/1998/Math/MathML">
  <mrow class="MJX-TeXAtom-ORD">
    <mo>&#xD24;</mo>
  </mrow>
  <mrow class="MJX-TeXAtom-ORD">
    <mo>&#xD4D;</mo>
  </mrow>
  <mrow class="MJX-TeXAtom-ORD">
    <mo>&#xD30;</mo>
  </mrow>
</math>

MathJax出力が3぀のスパンHTML出力の堎合たたは3぀のgSVG出力の堎合に分割されたす。もちろん、これにより、結合された文字のレンダリングが䞭断されたす。

FirefoxがHTMLå‡ºåŠ›ã®ã‚¹ãƒ‘ãƒ³ã‚’çµåˆã™ã‚‹ã“ãšãŒã‚ã‚‹ã“ãšã«æ°—ã¥ããŸã—ãŸã€‚ãŸãšãˆã°àŽ€àµàŽ°ã§ã™ãŒã€ àŽ•àµ_àŽ¶ã®æ·»ãˆå­—ã¯çµåˆã—ãŸã›ã‚“ã€‚Chromeは、䜕も結合されないずいう点でより「䞀貫性」がありたす

したがっお、私たちにずっおの問題は、MathMLで1぀のmi / mo芁玠に再結合する必芁があるすべおの関連する状況を識別するために䜿甚できる簡朔なデヌタセットたたはいく぀かの効率的なヒュヌリスティックがありたすか それができたら、レンダリングも機胜したす。

したがっお、私たちにずっおの問題は次のずおりです。MathMLで1぀のmi / mo芁玠に再結合する必芁があるすべおの関連する状況を特定するために䜿甚できる簡朔なデヌタセットたたはいく぀かの効率的なヒュヌリスティックはありたすか

長いコメントをお詫び申し䞊げたす。少しオフサむトのディスカッションを課題远跡システムに戻したす。

UnicodeUCDデヌタベヌスを䜜成するこずはどれほど実行可胜/高䟡でしょうか
各キャラクタヌのmathjaxで利甚可胜なクラスを組み合わせたすか 基本的にたたは
少なくずも良い最初の近䌌ずしおれロ以倖の文字
結合クラスUnicodeData.txtのフィヌルド4は、
前のもの、さらにクラス9ノィラヌマの堎合は次の
キャラクタヌも䞀緒に保぀必芁がありたす。

xetexのようなナニコヌドtexでさえ、そのtexにも泚目する䟡倀があるでしょう。
たたはluatexはほが確実にこれを正しく行うこずはできたせん
マヌクアップ
぀たり、\ text {abc}たたは\ mathit {abc}たたはその他のそのようなものが必芁になりたす
文字列をテキストずしおタむプセットするように匷制するコマンド
TeXの通垞の分割の習慣ではなく単䞀のフォント
文字ごず。 コンストラクトが単䞀のように芋える堎合でも
䜜者ぞのキャラクタヌ。

埓来のtexでは、フォントは256文字しか䜿甚できないため、問題にはなりたせん。
構成された文字は、さたざたなマクロ再マッピングのトリックでサポヌトできたす。
ベヌスに続く文字の䜜成は、基本的に単玔な堎合でもサポヌトされたせん
鋭いようなアクセントを構成したす。

xetexやluatexなどのUnicodetexバリアントでのサポヌトは少し可倉のようです。 テキストでは、xetex
HarfBuzzラむブラリに物事を枡すので、かなりうたくいきたす。 luatexはそれを内郚で凊理し、珟圚、ビラマではうたく機胜したせん。 数孊では、どちらも非垞に䟿利なこずを行うためにOpenType MATHテヌブルを備えたフォントが必芁であり、ノィラヌマを備えたそのようなフォントは芋぀かりたせんでした。

次のラテックスドキュメントは、テキストでkartikaを䜿甚し、数孊でlatin modernmathを䜿甚しおいたす。
ペヌロッパのアクセントでさえ、通垞、数孊では倱敗したすが、ここにマヌクアップ\mboxを远加するか、MathMLで同等にmiたたはmtextを远加するず、ノィラヌマの䟋でも機胜したす。

画像は䞊郚にxetex、䞋郚にluatexを瀺しおいたす。

したがっお、そのような文字列の呚りに\ text {..}や\ mbox {...}のようなものを必芁ずしないこずは望たしいこずですが、それはあなたのナニコヌドサポヌトをTeXが珟圚達成できるものよりはるかに先んじるこずになりたす
それで、それは「texのような構文」の仕様が䜕であるかに少し䟝存したす、それをプッシュするこずはTeXができるこずをどれだけ超えお合理的ですか

\documentclass{article}

\usepackage{fontspec}
\usepackage{unicode-math}
\setmainfont{kartika.ttf}


\begin{document}

U+0d24 U+0d4d U+0d30 outputs e.g., àŽ€àµàŽ° but 

abc $abc \mbox{àŽ€àµàŽ°} $  U+0063

abç $abç \mbox{àŽ€àµàŽ°} $ U+00e7

abç $abç \mbox{àŽ€àµàŽ°} $  U+0063 U+0327

\end{document}

virama

議論が䜕であるかを理解しおいるかどうかはよくわかりたせんが、単䞀のナニットを構成する文字のシヌケンスを特定するこずが目的である堎合は、 Unicode曞蚘玠クラスタリングが必芁な情報を提䟛するはずです。

はい- @ khaledhosnyの蚀うこずは、私にずっお正しいこずのように聞こえたすが、私はすべおの経隓があるわけではありたせん。 たぶん@santhoshtrはより倚くの詳现を提䟛するこずができたす。

Santhosh、 @ pkraが䞊蚘の3぀のコメントを曞いたこずは、問題を最もよく説明しおいるず思いたす。

2015幎3月3日1205、 KhaledHosnynotifications @ github.comは次のように曞いおいたす。

議論が䜕であるかを理解しおいるかどうかはよくわかりたせんが、
アむデアは、文字のどのシヌケンスが単䞀を構成するかを識別するこずです
ナニット、次にUnicode曞蚘玠クラスタリング
http://unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries should
必芁な情報を提䟛したす。

はい、しかし問題は、JavaScriptにずっおどれだけ意味があるかずいうこずだず思いたす
それを行うためのラむブラリ
基盀ずなるプラットフォヌムがUnicodeプロパティを䜜成しない堎合は手動で
利甚可胜
そしお、それがtex構文を゚ミュレヌトしおいる堎合、texはどこたで行くのでしょうか あなたは倚くを知っおいたす
誰ずしおもtexサポヌトに぀いお。 xetexでどれだけ合理的であるか
そのようなクラスタヌに、テキストに゚スケヌプせずに_math_で賢明なこずを䜕でもしおもらいたす
\text{..}たたはそのようなコマンドを䜿甚しお、
そのようなクラスタヌぞの\ mathclass

曞蚘玠のCoffeeScript実装を芋぀けたした。
https://github.com/devongovett/grapheme-breaker

圹に立぀かもしれたせん。

有益なコメントをありがずう。 芁玄する、

  • xetex / luatexは、この問題で芁求された方法で入力を凊理したせん。぀たり、 \textなどの远加のマヌクアップがありたせん。
  • このように凊理する蚈画があるかどうかは少なくずも私には明確ではありたせん
  • 解決策は、David Cが抂説した単玔なアプロヌチから始めるか、曞蚘玠ブレヌカヌに基づいお構築する可胜性がありたす@hartmanに感謝したす

それに加えお、

  • 䞀方、LaTeXMLずpandocを䜿甚した簡単なテストでは、ここで芁求されおいるような文字、぀たりxetex / luatexずは異なる文字を凊理するこずが瀺されおいたす。

したがっお、゜リュヌションをコアTeX入力に含めるこずはできたせんが、拡匵機胜である必芁があるように思われたす。 もちろん、それは問題ではありたせん。ずにかく拡匵機胜になっおしたう可胜性があるからです。

ここでTeX゚ンゞンから実際に描写したい堎合は、MediaWiki / WMFコミュニティから話を聞くずよいでしょう。

繰り返しになりたすが、より倚くのフィヌドバックを埗るのは良いこずです。

  • TeXの人々では、䜙分なマヌクアップなしで数孊モヌドで文字を凊理しおいたすかxetex / luatex / etcの将来の方向性ですか
  • MediaWiki / WMFの人々非暙準のTeXの振る舞いは、関連するコミュニティによっお実際に望たれおいたすか

これ以䞊のフィヌドバックがなければ、これをパントするか、2.6マむルストヌンから倖す必芁があるず思いたす。

ここで問題を理解させおください。人々は$x+y=<complex character>$のようなこずをしたいず思っおいたす。ここで、 <complex character>はおそらくマルチコヌドの曞蚘玠であり、 <complex character>は数孊の識別子ずしお扱われたす。  もしそうなら、それは合理的な期埅であり、珟圚のUnicode TeX゚ンゞンがそれを正しく凊理しない堎合おそらくそうではない、それはバグたたは機胜の欠劂であり、蚭蚈によるものではない可胜性がありたす。

それずも、 $<complex text string>$のようなこずをしたいのでしょうか。ここで、 <complex text string>は、耇雑なテキストレむアりトを必芁ずする可胜性のある耇数文字のテキスト文字列であり、適切なテキストレむアりトビディ、シェヌピングなどを取埗したす。  これは合理的な期埅ではないず思いたす。これが通垞のテキスト文字列であり、そのように扱う必芁があるこずを瀺すために、ここで䜕らかのマヌクアップが必芁です。

ありがずう、@ khaledhosny

[...]人々は$ x + y =のようなこずをしたい$ここでおそらくマルチコヌドの曞蚘玠であり、数孊の識別子ずしお扱われたすよね

はい、それは私もそれを理解する方法です。 これはもずもずりィキペディアの終わりからの芁求であるため、蚀うのは少し難しいです。

それは合理的な期埅だず思いたす

ありがずう

珟圚のUnicodeTeX゚ンゞンが正しく凊理しない堎合おそらく凊理しない堎合、バグたたは機胜の欠萜である可胜性があり、蚭蚈によるものではありたせん。

それもありがずう。 「おそらくそうではない」郚分は私を少し心配したすが、あなたず@davidcarlisleがそれがUnicode TeX゚ンゞンで望たしい動䜜であるこずに同意するなら、それで十分だず思いたす。


ただMediaWiki / WMF / Wikipedia偎がチャむムを鳎らすこずを望んでいたす。

F2Fに埓っお、これをv2.6マむルストヌン぀たり、次のリリヌスから削陀したす。

特に、TeX / LaTeXたたはXeTeX / LuaTeXずの互換性の芳点から、正しいアプロヌチが䜕であるかは明確ではありたせん。 たた、WMFずりィキペディアコミュニティがここで本圓に䜕を望んでいるのかも明確ではありたせん。

明確にするために、この問題を解決するわけではなく、TeX入力で耇雑なレむアりトがどのように機胜するかを理解するこずに匕き続き関心がありたす。

未来からの爆発:(ずりわけ曞蚘玠https://github.com/tc39/proposal-intl-segmenterによっお文字列を分割できるようにするTC39提案「Unicodeセグメンテヌション」がありたす。 リポゞトリにはポリフィルぞのリンクが含たれおいたすたた、明らかに非暙準のChrome機胜もありたす。

いいね。 ありがずう、@ pkra。

問題ない。 ポリフィルは残念ながら圹に立たない-それはEnligshだけをカバヌしおいる。 しかし、それを詊しおみたい人にずっおは、chromeビルトむンが圹立぀かもしれたせん。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡