75

軽量のマークアップ言語を使用して、大学の授業でノートを取りたいと考えています。

私が選んだエディタは gedit で、reStructuredText Tools for Geditを見つけました。これは reStructuredText プロセッサを実行し、gedit のペインに HTML をレンダリングします。これは素晴らしいことで、80% はそこまで進んでいます。

しかし、私のクラスの多くでは、ノートに数学の方程式やギリシャ文字を含める必要があります。私は LaTeX にあまり詳しくありませんが、LaTeX にはこれらの機能があることを理解しています。

reST ドキュメントで LaTeX を使用するにはどうすればよいですか? reSTドキュメントをLaTeXに処理してからHTMLにレンダリングする必要がありますか、それとももっと良い方法がありますか? マークダウンはこれを簡単にしますか? 必要に応じて gedit プラグインを変更できます。

最後に、これを行う人はいますか?プレーン テキスト エディターでクラスのノートを取るための他の提案はありますか?

ありがとう!

4

11 に答える 11

122

バージョン 0.8 以降、ネイティブでサポートされています。回避策はもう使用しないでください。構文も非常に単純です。ラテックス数学と同じですが、囲みがありません$$

したがって、数学ブロックに対して次のように簡単に書くことができます

.. math::

   \frac{ \sum_{t=0}^{N}f(t,k) }{N}

または、インラインで書きたい場合は、これを使用できます。

:math:`\frac{ \sum_{t=0}^{N}f(t,k) }{N}`

そこの区切りのバッククォートに注意してください。


アップデート:

新しいバージョンでは、数学要素に二重バックスラッシュを使用する必要があるようです\\frac\frac

于 2012-06-27T12:37:34.010 に答える
31

リリース 0.8 (2011-07-07) 以降、"math" ロールとディレクティブ (LaTex 入力構文を使用) がネイティブでサポートされています。

于 2011-09-06T11:04:53.877 に答える
25

これが私がすることです:

  1. reST ドキュメントの先頭に数学の役割を追加します。

    .. role:: raw-math(raw)
        :format: latex html
  2. あなたの数学を次のように書いてください

    :raw-math:`$$ \frac{s}{\sqrt{N}} $$`

    ($$ ... $$ブロックに$ ... $入れたい場合、またはインラインにしたい場合に使用します。)

  3. 次のような html 出力を生成します。

    rst2html --stylesheet=/path/to/my_beautiful_stylesheet.css my_file.rst \
    | tidy -q | /path/to/itex2MML > my_file.xhtml

    これにより、 で html が生成され、rst2htmlで整理されてtidyから、 でラテックス数学が MathML に変換さitex2MMLれ、xhtml ファイルに出力されます。

ノート:

  1. スタイルシートはオプションです
  2. itex2MML については、こちらを参照してください。
  3. HTML ファイルの拡張子は xhtml または xml にする必要があります。そうしないと、数式がブラウザーに表示されません。
于 2010-10-24T11:26:49.740 に答える
9

LaTeX と ReST は同じ問題 (ドキュメント全体のマークアップ) に対する 2 つの解決策であり、一方が他方の内部に住んで満足できるかどうかはわかりません。

  • 最初に LaTeX、次に ReST: LaTeX では、方程式 (およびその他すべて) をレイアウトするために、タイポグラフィ要素を正確に配置する必要があります。ReST は LaTeX 出力 (PostScript など) を入力として取りません。
  • 最初に ReST、次に LaTeX: LaTeX コードを出力する ReST 用の出力フォーマッタを作成し、ReST で拡張機能を定義して、方程式や他の明示的な TeX を誤解しないようにする必要があります。LaTeX からの出力は、依然として PostScript や PDF に似たものになります。

TeX のサブセットを使用してグラフィック方程式を生成し、それを HTML など (たとえば、Trac の LaTeX Formula マクロ) に取り込むコードを見たことがあります。

于 2010-08-31T15:39:40.950 に答える
6

問題を少し分解すると、最初の目標は、選択したライト マークアップから生成された html にラテックス コード出力を逐語的に取得することです (<、>、etch の cgi エスケープを除く)。mathJax (強く推奨) またはgozzilliで言及されているitex で簡単に LaTex 化できます。

最初に、ReST ではエスケープに \ を使用するため、ReST の代わりにマークダウンを使用する方がおそらく簡単であると言わなければなりません。そのため、すべての LaTeX を保護する必要があります。markdownmathJaxがうまく機能する例については、mathoverflow.netのセットアップを試してみてください。

それにもかかわらず、私はあなたが本当に ReST (および mathJax) を必要としていると仮定します。その場合、2 つの方法があります: ストック ReST (および面倒なエスケープ) を使用するか、いくつかの LaTeX ハンドラーを docutils に追加します。

オプション 1 - ストックレスト:

インライン計算の場合は、単に verbatim に加えて、ポストプロセッサが探しているタグを付けるだけです: ``$x<\pi$``。複数行の数学の場合、リテラル ブロックが必要ですが、MathJaX などのクラス属性を設定して解析する必要があります。それ以外の場合は<pre>タグをスキップするためです。

.. class:: mathjax_process

::

  \begin{equation}
    x<\pi
  \end{equation}

オプション 2: ReST プロセッサを拡張する

ReST プロセッサを拡張するためにちょっとしたハッキン​​グを行う場合は、インライン ラテックス用のカスタムの解釈されたテキストロール(例: ) と複数行の数学用:latex:`x<\pi`のカスタムディレクティブを定義することで、LaTeX リテラルのより優れた表記法を取得できます。例えば

.. latex::

  \begin{equation}
    x<\pi
  \end{equation}

default-role`x<\pi`を使用すると、インラインの数学表記を短縮することもでき ます。

ロールとディレクティブを実装するには、いくつかの方法があります。私は(大まかに)以下にたどり着きました。これには、(私が見た他のほとんどのハックとは異なり)統合された後処理のないライター向けの文字通りのLaTexコードに劣化するという優れた機能があります。

from docutils import nodes, utils
from docutils.parsers.rst import directives, Directive 

class Latex(Directive):
    """ Latex directive to display LaTeX as escaped literal wrapped in
        <pre class="latex">. 
    """
    required_arguments = 0
    optional_arguments = 0
    has_content = True
    def run(self):
        self.assert_has_content()
        prenode=nodes.literal_block(self.block_text,
                                    '\n'.join(self.content),
                                    classes=['latex'])
        return [prenode]
directives.register_directive('latex', Latex)

def latex_role(role, rawtext, text, lineno, inliner, options={}, content=[]):
    node = nodes.literal(rawtext,
                         '\(%s\)'%utils.unescape(text, 1),
                         classes=['latex'])
    return [node],[]
register_local_role('latex', latex_role)

上記では、クラス「latex」を使用して処理対象をマークするため、このクラスを探すにはmathJaxまたは同等のものを構成する必要があります。または、上記のコードを変更して、クラスをデフォルトのmathJaxオーバーライド クラスである「mathjax_process」に設定します。

于 2010-11-01T05:32:15.627 に答える
5

Docutils FAQ のこの項目では、TeX 数学を比較的簡単に組み込む 1 つの方法について説明しています。最初に、方程式を直接 LaTeX に渡す、解釈されたテキストの役割を定義します。

.. role:: raw-latex(raw)
    :format: latex

次に、その役割をテキストで使用できます

The area of a circle is :raw-latex:`$\pi r^2$`

FAQ エントリには、HTML を生成するときに画像に数学をレンダリングするために使用できるプリプロセッサ アプローチなど、これを行うための他のいくつかの方法についても言及されています。

于 2010-09-20T14:16:45.153 に答える
5

問題は、reST には実際にはプラグインがないことです。Sphinxなどの拡張可能なフレームワークを選択することもできます。JSMathのプラグインは既に含まれており、MathJaxのプラグインも可能です。さらに、Sphinx は LaTeX を利用して PDF ドキュメントを直接作成します。

別のより軽量な解決策は、ドキュメントで MathJax の (LaTeX に似た) 構文を使用できるように、reST テンプレートを編集して MathJax を含めることです。

しかし、通常、私は何か重大なことに直接 LaTeX を使用しています。これらの軽量マークアップ言語のカスタマイズ機能は、すべてに十分に包括的というわけではありません。

于 2010-08-31T15:45:31.717 に答える
4

Pandocのマークダウン拡張機能により、LaTeX計算をインラインまたは表示できます。$ \ sqrt {-1} $のように、(すぐ隣接する)ドル記号の間に置くだけで、期待どおりに処理されます。私はいつもこの機能を使用していますが、実用的ではないと思います。マニュアルhttp://johnmacfarlane.net/pandoc/README.html#mathを参照してください

マークダウンが解析されると、pandocはHTML、LaTeX、ReST、RTF、DocBook、ODT、マンページなどを書き込むことができます。LaTeX数学コンテキストに派手なLaTeXパッケージが含まれていない場合は、数学をMathMLに解析することもできます。 HTMLまたはRTFですぐにレンダリングします。(これは、LaTeX以外のドキュメントでLaTeX数学を処理するための多くのオプションを提供します。)

Pandocは、ReST(およびHTML、そしてあまり派手ではないLaTeX)も解析します。したがって、私はReStリーダーを含む解決策を提供したいと思っていましたが、数学を処理するための特別な機構はないようです。問題249の説明を参照してください。http://code.google.com/p/pandoc/issues/detail ?id=249 もう一度詳しく調べて確認します。

まだGedit用のpandocプラグインを作成した人はいないと思います(emacsとTextMateには精巧なサポートがあります)-それは素晴らしいことです!

于 2010-09-02T19:11:12.927 に答える
4

バージョン 0.8 の docutils (reStructuredText を解析する) は LaTeX 数学をサポートしていることに注意してください。多くの例については、 http://article.gmane.org/gmane.text.docutils.user/6255を参照してください。「--math-output」オプションの選択肢は、MathML、HTML、MathJax、および LaTeX です。

于 2011-05-30T14:22:27.577 に答える
3

前の回答を拡張するために、LaTeX を必要とせずにMathJaxをReSTおよびDocutilsと連携させる方法を以下に示します。

  1. 次のように、ReST ソース内で LaTeX スタイルの数学を使用します。

    The radar backscatter coefficient is $\sigma^0$.
    
  2. これをファイル内のどこかに含めます(私は私のものを一番下に置きます):

    .. raw:: html
    
    <script type="text/x-mathjax-config">
    MathJax.Hub.Config({
    extensions: ["tex2jax.js"],
    jax: ["input/TeX", "output/HTML-CSS"],
    tex2jax: {
      inlineMath: [ ['$','$'], ["\\(","\\)"] ],
      displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
      processEscapes: true
    },
    "HTML-CSS": { availableFonts: ["TeX"] }
    });
    </script>
    <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
    
  3. HTML に変換:

    rst2html report.rst report.html
    
  4. 最新のブラウザーで HTML を読み込みます。MathJax スクリプトがダウンロードされ、表示時に HTML に適用されます。すべてが私にとって素晴らしいようです!

助けてくれたhttp://www.thales.math.uqam.ca/~labbes/Sage/rst2sws/に感謝します!

更新: 出力 HTML は Firefox では正常に動作しますが、MathJax が Chrome で動作するのに長い時間がかかり、エラーが発生することに気付きました。最後の行のスクリプトソースをから変更して修正しました

src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"

src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML".

その理由は、FireFox が MathML をサポートしているのに対し、Chrome (実際には Webkit) はまだサポートしていないためだと思います (少なくとも完全ではありません。ここでブラウザーのサポートをテストできます)。

MathML は必要なく、TeX だけが必要なので、対応する MathJax バージョンを使用すると、エラーなしで Chrome にすばやく読み込まれるようになりました。さらに、MathML スタイルよりも math TeX スタイルを入力する方がはるかに高速です。

于 2011-06-30T01:31:08.850 に答える
2

rst2htmlの代わりにrst2mathml.pyを使用します。

docutilsをlatex-mathモードで拡張します。このモードの内容はMathMLに変換されます。

于 2011-03-25T21:36:24.880 に答える