Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MathML 数式不調、一部タグがそのまま出てくる #131

Closed
hs9587 opened this issue Dec 14, 2021 · 6 comments
Closed

MathML 数式不調、一部タグがそのまま出てくる #131

hs9587 opened this issue Dec 14, 2021 · 6 comments

Comments

@hs9587
Copy link

hs9587 commented Dec 14, 2021

MathMK の数式が一部うまく出てこないです。
タグがそのまま出てきてしまいます。

ブラウザでこのような数式になる MsthMLデータ
mml err

mml.err.md
が、Vivliostyle Pub 画面にて
mml err vivpub
のように、左辺項「h」のみ良いように出てきて、それ以降はタグがそのままになります。

@MurakamiShinyu
Copy link
Member

MurakamiShinyu commented Dec 14, 2021

Markdownの中にHTMLコード(MathMLコードでも)を入れる場合、途中に空白行を入れることはできません。

Markdownの中にHTMLを入れる HTML Blockの仕様: https://github.github.com/gfm/#html-blocks

Markdownのこの仕様は分かりにくいかもしれませんが、HTMLコードの途中に空白行があると、そこでHTMLブロックが終了することになっているということです。

つまり、

<math>
  <mrow>
    <mi>h</mi>

これで HTMLブロックが終了します。だから「h」だけがHTMLの中のMathMLとして処理されることになります。

そしてそのあとに次の部分はコードブロックとして解釈されます。

    <mo>=</mo>

    <mfenced …>
      <mover>…</mover>
    </mfenced>

これは Indented code block https://github.github.com/gfm/#indented-code-blocks の仕様によるものです。
(4つ以上のスペースでインデントされたブロックはコードブロックとして出力される)

MathMLコードの中の空白行を削除して試してみてください。

@MurakamiShinyu
Copy link
Member

@hs9587

上記のとおり、これは正常な動作ですので、このissueはクローズします。
また気がついたことがあればissue登録お願いします。

@hs9587
Copy link
Author

hs9587 commented Dec 14, 2021

コメントありがとうございます。
Markdown中の HTMLの仕様だったんですね、クローズ了解しました。

MathMLコードの中の空白行を削除して試してみてください。
こちら、空白文字「 」一文字だけの行にするというのは行儀悪いですかね。

MathML ソース書いてて左辺と右辺が目立つように書きたいのです

@MurakamiShinyu
Copy link
Member

こちら、空白文字「 」一文字だけの行にするというのは行儀悪いですかね。

Markdown仕様(VFMが準拠しているCommonMarkやGFM)での空白行の定義 https://github.github.com/gfm/#blank-line は次のようになってます:

A line containing no characters, or a line containing only spaces (U+0020) or tabs (U+0009), is called a blank line.

つまり、空白文字「 」一文字だけの行も空白行であり、ブロックの区切りになることに変わりません。
(ただしvfm(Vivliostyle Pubで使われるMarkdown→HTML変換ツール)での動作を確認したところ、空白文字があると空白行扱いにならないことがあるようです。これはバグですので、vfmを修正することになります)

したがって、その方法は使えません。

HTMLのコメント <!-- --> を使って次のように書くことならできるはずです。

<math>
  <mrow>
    <mi>h</mi>
<!---->
    <mo>=</mo>
<!---->
    <mfenced open="|" close="|">
      <mover><mi>HP</mi><mo>&rarr;</mo></mover>
    </mfenced>
  </mrow>
</math>

あるいは、Markdownを使わないで、HTMLを使うならばこの問題はありません。

@hs9587
Copy link
Author

hs9587 commented Dec 14, 2021

空白行の定義、了解しました。
(vfm のバグ見つかって良かったです)

@MurakamiShinyu
Copy link
Member

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants