-
-
Notifications
You must be signed in to change notification settings - Fork 12
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
feat: implemented math syntax with MathJax #89
Conversation
が出力されますが、これは次のようにしないとVivliostyleは数式有効にしてくれません。
|
@MurakamiShinyu |
数式が複数行で書かれているときの処理に疑問があります。 まず、
|
@MurakamiShinyu 以上を踏まえて
のどちらにするのがよいでしょうか? |
単一パラグラフ想定 のみ実装でよいと思います。つまり、複数行にわたっていても、空白行(連続した改行)がない場合は単一パラグラフです。 pandoc での数式の扱いを調べたところ、そのようになっているのが分かりました。 詳しくは pandoc のマニュアル→ https://pandoc.org/MANUAL.html#math
↑
↑数式の途中に空白行は入れられない(数式扱いにならない)。 このpandocの数式の扱いの仕様は参考になるかと思います。 |
ありがとうございます。remark の inline 系でこの条件を満たせるかを調べてみます。 |
それとこれも追加ですね。
現在は |
すみません、
と書いたのですが、間違ってたので、次のように直しました:
https://pandoc.org/MANUAL.html#math をよく読むと "and must not be followed immediately by a digit." というのは、 これによって、
|
|
ありがとうございます。
この仕様により
あわせて
も追加実装します。今回の対応で元の remark-prase 時代にあった HTML 出力が廃止されたので対応する CSS セレクターをドキュメントから削除したのですが、この元処理は村上さんの書かれているとおり明示的なスタイル付けを動機としているのだと思われます。そして数式の利用者にも需要はありそうなので新版でも↑の HTML 出力を実装してみます (ドキュメントにも CSS セレクターを改めて掲載します)。 |
インライン数式 インライン数式
ディスプレイ数式
(注)pandocのマニュアル https://pandoc.org/MANUAL.html#math では、途中に空白行がないかぎり複数行にわたってもよいというのはディスプレイ数式だけのように読めるのですが、試してみるとインライン数式でも同様なようです。 |
ありがとうございます。
についてはインライン側も複数行で対応してみます。なお空白行がある場合、おそらくコード ブロックなどの特殊な構文をのぞき remark-parse (の CommonMark/GFM) によってパラグラフが分離されると思われます。念の為、これが除外されることのテストは実装します。 |
以下の正規表現でおおむね実現できた。
フラグ インラインの「 |
よって正規表現を変えるか tokenizer 側でなんとかする必要あり。 |
前述のコメントを見返して
になるのは正しい挙動に思える。2 を問題としていたが |
…ns for start and end symbols, and escape
@MurakamiShinyu @yamasy1549 |
気がついた問題:
|
偶数個の
|
…he start and end in math syntax
覚書。 以下を修正。
否定 残件。
|
… in math syntax (inline) Co-authored-by: Shinyu Murakami <murakami@vivliostyle.com>
Co-authored-by: Shinyu Murakami <murakami@vivliostyle.com>
…reak immediately before it was deleted to make it only display syntax Co-authored-by: Shinyu Murakami <murakami@vivliostyle.com>
docs/vfm.md
Outdated
|
||
- `$...$`, `$$...$$` ...Range specification matches | ||
- `$...\n...$`, `$\n...\n$` ...Within the same paragraph | ||
- `$...\$...$`, `$$...\$...$$` ...Escape `$` by `\` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ディスプレイ数式では "Escape $
by \
" という処理はされていない。
$$...\$$
をテストするとそれが確認できる。pandoc でも同様なので、この動作はたぶん問題ない。
$ lib/cli.js --math --partial
$$...\$$
^D
<p><span class="math display">$$...\$$</span></p>
$ pandoc --mathjax
$$...\$$
<p><span class="math display">\[...\\]</span></p>
次のように、奇数個のエスケープの例にするとよいかなと思います。
- `$...\$...$`, `$$...\$...$$` ...Escape `$` by `\` | |
- `$...\$...$`, `$...\\\$...$` ...Escape `$` by `\` |
@MurakamiShinyu |
Co-authored-by: Shinyu Murakami <murakami@vivliostyle.com>
@MurakamiShinyu @yamasy1549 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
特に問題点の指摘もなさそうなので merge しました。利用してみて意見などがありましたら、改めて Issue などでご指摘ください。 |
@akabekobeko たいへん遅くなってすみません、今確認しました。ありがとうございます! |
#37 の議論を踏まえて MathJax 形式の数式構文を実装しました。
@MurakamiShinyu @yamasy1549
ドキュメント
docs/vfm.md
とテストtests/math.test.ts
のレビューをお願いします。補足として当初は unified のみに依存する独自処理を実装していたのですが、remark を利用するとこれが拡張する tokenizer/method として登録しないと Markdown 構文間の排他がおこなわれないため、VFM 1.0 時点では仕方なく remark プラグインとすることにしました。
VFM 2.0 で remark 13 未満のインターフェースを判定して分岐しているため 13 以降では独自処理に切り替わるはずです。ただし remark 13 でも構文の排他は remark (micromark) として実装しないと機能しないと予想しています。