いものやま。

雑多な知識の寄せ集め

TeXをMarkdown記法でも使ってみた・改。

f:id:yamaimo0625:20190601142919j:plain

以前、 \TeXMarkdown記法で使う方法についての記事を書いた:

この中で、pre要素を使うというHackをしたわけだけど、1つ問題があった。

それは、Markdown記法の```を使うと、pre要素内の \TeXの数式が正しく出なくなる場合がある、というもの。

回避策として、pre要素を使って \TeXの数式を書く場合、記事中では```を使わずに、preタグを直接HTMLで書くという方法があったのだけど、シンタックスハイライトが使えなくなるというデメリットもあった。

ただ、調べてみると解決策があったので、紹介したい。

解決策

解決策は、pre要素の代わりにdiv要素を使うというシンプルなもの。

情報源は、この記事:

実際、pre要素の代わりにdiv要素を試してみると、問題なく使えた。
pre要素を使えば余計なパースが走らないんじゃないかなと思って使ったんだけど、単にdiv要素でも問題なかったのか・・・

例えば、Markdown

<div style="text-align: center">
[tex: {
\begin{align}
  \mathrm{min.} & \left| C_a X_a - C_b X_b \right| \\
  \mathrm{sub. to\ } & X_a + X_b \le 100 \\
  & X_a \ge 0 \\
  & X_b \ge 0 
\end{align}
}]
</div>

と書けば、

 {
\begin{align}
  \mathrm{min.} & \left| C_a X_a - C_b X_b \right| \\
  \mathrm{sub. to\ } & X_a + X_b \le 100 \\
  & X_a \ge 0 \\
  & X_b \ge 0 
\end{align}
}

と表示される。
(※div要素のstyle属性は、中央寄せするためのもの)

そして、シンタックスハイライトも、以下の通り問題なし:

#include <stdio.h>

int main(int argc, char* argv[]) {
    printf("Hello, World!\n");
    return 0;
}

上記のコードはMarkdown記法の```を使って書いてるんだけど、その後ろでも、

 {
\begin{align}
  \mathrm{min.} & \left| C_a X_a - C_b X_b \right| \\
  \mathrm{sub. to\ } & X_a + X_b \le 100 \\
  & X_a \ge 0 \\
  & X_b \ge 0 
\end{align}
}

のように、確かに問題なく \TeXが使えてる。

なお、上記の記事はそれ以外にもいろいろ細かいTipsが書かれてるので、オススメ。

今日はここまで!