私はクラスノートにマークダウンを使用していますが、それは素晴らしいことです。テーブルのようなことができるように、Markdownで前処理を行うこともあります。しかし、この用語は多くの数学を使ってクラスを教えているので、LaTeXの数式をMarkdownで追加できるようになりたいと思っています。
The refinement relation is written $a \sqsubseteq b$, which can be
pronounced "$a$ approximates $b$" or "$b$ is at least as defined as $a$".
LaTeXの各フラグメントをニースアンチエイリアスPNGファイルに前処理して、HTML <img>
タグを介してMarkdownに含めることができるようにしたいと思います。しかし、LaTeXの断片をどのように取得してニースの画像を取得するかはまったくわかりません。
私が行う方法を知っているのは、DVI、PostScript、またはPDF形式でフルページを取得することだけです。
この問題は解決されたと思いますが、正しい検索語を推測することはできませんでした。それを解決する方法や既存のソリューションを探す場所についての提案はありますか?
EDIT:mathTeXをインストールしたので、コードは柔軟性がなく、Linux Filesystem Hierarchy標準に違反し、アマチュア作業であると言えます。 -その言葉の良し悪しの両方で。コードは非常に複雑なため、明らかな障害はありません。私は代わりを探しています。
また、一番下では、ソリューションが dvipng
に基づいていることは明らかです。
1年後:期待していたシームレスな統合が得られませんでしたが、自分の考案したスクリプトに沿ってリンプしています。 dvipng
の代わりに、dvips -E
とImageMagickのconvert
プログラムを使用する方が少し簡単であることがわかります。利点は、スケーリングのようなものをわずかに制御しやすく、透明な背景を簡単に作成できることです。好奇心の強い人は この例 を検査できます。
このソリューションを誰にも勧めることはできません。しかし、MathTeXもお勧めできません。
Pandoc で試しましたか?
次のコードをMarkdownファイルの先頭に追加して、MathJaxレンダリングサポートを取得します
<style TYPE="text/css">
code.has-jax {font: inherit; font-size: 100%; background: inherit; border: inherit;}
</style>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: {
inlineMath: [['$','$'], ['\\(','\\)']],
skipTags: ['script', 'noscript', 'style', 'textarea', 'pre'] // removed 'code' entry
}
});
MathJax.Hub.Queue(function() {
var all = MathJax.Hub.getAllJax(), i;
for(i = 0; i < all.length; i += 1) {
all[i].SourceElement().parentNode.className += ' has-jax';
}
});
</script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.4/MathJax.js?config=TeX-AMS_HTML-full"></script>
そして、 `$ x ^ 2 $`または `$$ x ^ 2 $$`は期待通りにレンダリングされます:-)
オンラインディストリビューションを使用したくない場合は、MathJaxのローカルバージョンをいつでもインストールできますが、ローカルWebサーバーを介してホストする必要がある場合があります。
UPDATE:最近では、標準的なマークダウンの代わりに pandoc を使用していますが、上記はまだ有用です。
あなたの質問に反問で答えます...
組織モードについてどう思いますか? Markdownほど純粋ではありませんが、Markdownに似ており、操作が簡単で、Latexを埋め込むことができます。 Cf. http://www.gnu.org/software/emacs/manual/html_node/org/Embedded-LaTeX.html
追記
Org-modeをまだ見ていない場合、Markdownよりも汎用的な「自然なマークアップ言語」、つまりテーブルの処理として1つの大きな強みがあります。起源:
| 1 | 0 | 0 | | -1 | 1 | 0 | | -1 | -1 | 1 |
あなたがそれがどう思うかを表します...
そして、ラテックスは、tex-modeのpreview-latexを使用して断片的にレンダリングされます。
multimarkdownを見る必要があります http://fletcherpenney.net/multimarkdown/
メタデータ(ヘッダー、キーワード、日付、作成者など)、テーブル、asciimath、mathml、hellをサポートしています。基本的に、これらの他の非常に便利な機能をすべて追加するためのマークダウンの拡張機能です。 XSLTを使用しているため、独自のLaTeXスタイルを簡単に作成し、直接変換できます。私はいつもそれを使っていますが、とても気に入っています。
マークダウンにマルチマークダウンが組み込まれることを望みます。かなりいいでしょう。
Edit:Multimarkdownは、html、latex、その他いくつかの形式を生成します。 htmlには、選択したスタイルシートが付属しています。正しく覚えていれば、MathMLにも変換され、FirefoxとSafari/Chromeに表示されます。
RStudio には無料のIDEがあり、MarkdownとLaTeXを使用できます。
kramdownは、まさにあなたが説明することをします:
https://kramdown.gettalong.org/syntax.html#math-blocks
また、Markdownよりも信頼性が高く明確に定義されています。
mimeTeX が便利かもしれません。
ねえ、これは最も理想的な解決策ではないかもしれませんが、私にとってはうまくいきます。最終的に、Python-Markdown LaTeX拡張機能を作成しました。
https://github.com/justinvh/Markdown-LaTeX
$ math $および%text%構文を使用したインライン数学およびテキスト式のサポートを追加します。拡張機能は、latex/dvipngを使用して各方程式/テキストのpngを生成し、外部画像を持たずに画像を直接インライン化するためにデータをbase64エンコードするプリプロセッサです。
その後、データは、式をbase64表現にエンコードするシンプル区切りのキャッシュファイルに格納されます。これにより、ラテックスを実際に実行する回数が制限されます。
以下に例を示します。
%Hello, world!% This is regular text, but this: $y = mx + b$ is not.
出力:
$ markdown -x latex test.markdown
<p><img class='latex-inline math-false' alt='Hello, world!' id='Helloworld' src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFwAAAAQBAMAAABpWwV8AAAAMFBMVEX///8iIiK6urpUVFTu7u6YmJgQEBDc3NxERESqqqqIiIgyMjJ2dnZmZmbMzMwAAAAbX03YAAAAAXRSTlMAQObYZgAAAVpJREFUKM9jYICDOgb2BwzYAVji8AQg8fb/PZ79u4AMvv0Mrz/gUA6W8F7AmcLAsJuBYT7Y1PcMfLiUgyWYF/B8Z2DYAVReABKrZ2DHpZwdopzrA0nKOeHKj66CKOcKPQJWwJo2NVFhfwCQyymhYwCUYD0avIApgYFh2927/QUcE3gDwMpvMhRCDJzNMIPhKZg7UW8DUOIMg9sCPgGo6e8ZODeAlAP9xLEArNy/IIwhAMx9D3IM+3cgi70BqnxZaNQFkHJWAQbeBrByjgURExaAuc9AyjnB5hjAlEO9ygVXzrplpskEMPchQvkBmGMcGApgjjkAVs7yhyWVAcwFK2f/AlJeAI0m5gMsEK+aMhQ6aDuA1DcDIZirBg7IOwxlB5g2QBJBF8OZVUz95hqfC3hOXWGYrwBSHskwk4EByGXab8QAlOBaGizFKYAtUlgUGEgBTCSpZnDCLQUA+y6MXeYnPDgAAAAASUVORK5CYII='> This is regular text, but this: <img class='latex-inline math-true' alt='y = mx + b' id='ymxb' src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFIAAAAOBAMAAABOTlYkAAAAMFBMVEX///9ERETu7u4yMjK6urp2dnZUVFSIiIjMzMwQEBDc3NwiIiJmZmaYmJiqqqoAAADS00rKAAAAAXRSTlMAQObYZgAAAOtJREFUKM9jYCAACsCk4wYGgiABTLInEKuS+QGxKvkVGBj47jBwI8tcffI84e45BoZ7GVcLECo9751iWLeSoRPITBQEggMMDBy9sxj2MDgz8DIE8yCpPMxwjWFBGUMMkpFcbAEMvxjKGLgYxIE8NkHBiYIyQMY+hmoGhi0Mdsi2czawbGCQBTJ+ILvzE0MaA9MHIIWwnWE9A+sBpk8LGDgmMCnAVXJNYPgCJHhRQvUiA/cDXoECZx4DXoSZTBtYgaaEPw5AVnkOGBRc5xTcbsReQrL9+nWwyxbgC88DcJZ+QygDcYD1+QPiFAIAtLA8KPZOGFEAAAAASUVORK5CYII='> is not.</p>
ご覧のとおり、これは詳細な出力ですが、Markdownを既に使用しているため、実際には問題ではありません:)
この議論に出会ったのは今だけなので、私のコメントがまだ役に立つことを願っています。私はMathJaxに携わっており、あなたの状況をどのように理解しているかから、それは問題を解決する良い方法だと思います。
画像を好む理由はありますか?
はい。ただし、自分で少しハックする必要があります。ラテックスタグ$\some\inline\latex$
または$$\some\equation$$
を mimetex.cgi スクリプトの適切な画像タグに置き換えるフィルターを作成しました。 5分すべてかかりました。
警告:見事にい...
#!/usr/bin/env python
import sys, markdown,re
MIMETEX_LOC="http://some.server.com/cgi-bin/mimetex.cgi"
def sanitizeLatex(text):
return re.sub(r"\\",r"%5C", text)
def wrapLatexBlock(text):
return '<img alt="equation" class="block" src="%s?%s"></img>'%(MIMETEX_LOC,text)
def wrapLatexInline(text):
return '<img alt="equation" class="inline" src="%s?%s"></img>'%(MIMETEX_LOC,text)
def prepLatexBlock(matchobj):
return wrapLatexBlock(sanitizeLatex(matchobj.group()[2:-2]))
def prepLatexInline(matchobj):
return wrapLatexInline(sanitizeLatex(matchobj.group()[1:-1]))
if __== "__main__":
# initialise markdown
md=markdown.Markdown()
raw_md=open(sys.argv[1],"r").read()
##
# deal with embedded latex
##
raw_md=re.sub(r'\$\$(.*?)\$\$',prepLatexBlock, raw_md)
raw_md=re.sub(r'\$(.*?)\$',prepLatexInline, raw_md)
##
# once latex is parsed, convert md to html
##
main_html=md.convert(raw_md)
# hey presto!
print(main_html)
もちろん、.blockおよび.inlineイメージに適切なcssを定義する必要があります...
Lunamarkコードを使用してLuaでMarkdownを解析することができます( Github repo を参照)。これは、LuatexのマクロによってMarkdownが直接解析され、Pandocがサポートする多くの形式への変換をサポートすることを意味します(つまり、 、ライブラリはlualatex
、context
、Metafun、Plain Luatex、およびtexlua
スクリプトで使用するのに適しています。
プロジェクトは John MacFarlane (Pandocの作者)によって開始され、ツールの開発はPandocの開発を非常に密接に追跡し、同様の(つまり、優れた)品質です。
Khaled Hosny は、便利なマクロサポートを提供するContextモジュールを作成しました。 に対するMichalの回答)Markdownをサポートするパッケージはありますか?の質問 は、ラテックスを同様にサポートするコードを提供します。
teqhtml を見つけたとき、まったく同じものを探していました。結果の画像を周囲のテキストと垂直に揃えるという素晴らしいボーナスを使用して、$および$$方程式を画像に変換します。多くのドキュメントはありませんが、非常に簡単です。
将来の読者に役立つことを願っています。
本当に古いスレッドをすみませんが、私は jemdoc を数年使用しており、本当に素晴らしいです。