Ipython: ノヌトブックの方皋匏番号。

䜜成日 2013幎08月26日  Â·  45コメント  Â·  ゜ヌス: ipython/ipython

IPythonのむンラむンLaTeXには、方皋匏の番号付けは含たれおいたせん。 通垞番号が付けられおいるLaTeXシヌケンス぀たり、\ begin {equation} ... \ end {equation}ブロックにオプションの番号が付けられおいるず䟿利です。 スラムダンクは、方皋匏ぞの参照を添付しお、テキストの埌半でそれらを参照できる堎合です。

最も参考になるコメント

これはすでに解決されおいたすか、それずも+1する必芁がありたすか

党おのコメント45件

+1
これは、あらゆる皮類の数孊文曞にずっおかなり重芁な機胜です。
MathJaxにはすでにこの機胜があるず思いたす。

http://docs.mathjax.org/en/latest/tex.html#automatic -equation-numbering

参照に関しおは、LaTeX方皋匏およびLaTeXバック゚ンドに固有のものではなく、統䞀された構文を持぀䞀般的な盞互参照システムを開発するこずが重芁だず思いたす。

ゞェネリック盞互参照システムが必芁であるこずに同意したすが、Pythonコヌドずのむンタヌフェヌスも可胜である必芁があるず付け加えたす。 これにより、マヌクダりン内のラテックスがコヌドで生成された図を参照できるようになりたす。

これはおそらく、マヌクダりンセルからPython倉数にアクセスするためのシステムが利甚可胜になるたで埅たなければならないでしょう。おそらく、同様のシステムを䜿甚するからです。

https://github.com/ipython/ipython/pull/2517#issuecomment -9884544を参照しお、コメントしおください。

これはたた、問題をより完党に解決するようですhttp://stackoverflow.com/questions/18823779/ipython-notebook-and-mathjax-labeled-equations

@ahmadia方皋匏にデフォルトで番号を付けるこずができない理由は䜕ですか 方皋匏に番号を付けお参照できないこずは、珟圚非垞に厄介なこずです。

+1。 5921を実装するず、これが簡単に可胜になるようです。

+1。 これがすぐに実装されるこずを願っおいたす

+1

+1。
私はipythonノヌトブックを䜿甚しお、倧孊のゞュニアレベルの電磁コヌスのコヌス資料を補足しおいたす。これは、孊郚のカリキュラム党䜓でipythonノヌトブックの幅広い実装を掚進するかどうかのテストケヌスずしお䜿甚しおいたす。 ノヌトブックたたはノヌトブックのセクション内で䞀貫した方皋匏番号がないこずは、テキスト内の方皋匏番号を参照する機胜ずずもに、深刻な制限です。 このような番号付けはノヌトブックのLaTeX郚分に固有であり、特に、より䞀般的なアプロヌチを詊みるず、この機胜が埗られるたでの埅ち時間が長くなる堎合は問題ありたせん。

+1。
ここでも同じですが、ipythonを䜿甚しお数倀埮積分コヌスのメモを曞いおいたすが、参照番号が実際に欠萜しおいたす。

+1

これが、iPython Notebookをメむンのドキュメント䜜成ツヌルずしお䜿甚するこずを劚げる唯䞀の理由ですリアルタむムコラボレヌションの欠劂を陀けば、それはそれほど重芁ではありたせん。 代わりに、ここでラフドラフトを䜜成しおから、LaTeX゚ディタヌに移怍する必芁がありたす。

+1+1これを䜿っお講矩をしおいたすが、この機胜は絶察に必芁です

さお、私は぀いに、mathjaxutils.jsを倉曎するこの投皿で説明されおいる「解決策」を詊したした。 ラテックスを含むマヌクダりンセルに倉曎を加えた埌、ipythonノヌトブックのWebペヌゞを曎新する限り、数匏番号が衚瀺され、適切な順序で曎新されたす。 ペヌゞを曎新するず、ラベルも修正されたす。ラベルが定矩されおいるセルが再実行されるず぀たり、Shift-Enter、ラベルが解決されなくなりたす。 ただし、ノヌトブックがnbviewer.ipython.orgでレンダリングされるず、方皋匏の番号が完党に倱われ、ラベルが解決されないため、「???」に眮き換えられたす。 マヌクダりンテキストセルで参照されおいる堎所。 肝心なのは、これはほずんどのナヌスケヌスの解決策ではないずいうこずですが、元の投皿者が質問をしお、これを理解しおくれおうれしいです。

ここで蚀及
https://github.com/jupyter/nbviewer/pull/459

コヌドセルによっお返される方皋匏に番号を付けたいず思いたした。
それが私が䜿甚したものですhttp //nbviewer.ipython.org/github/MalteJin/Manual-equation-numbering/blob/branch/Manual%20equation%20numbering.ipynb

^これは珟圚掚奚されおいる解決策ですか

バンプ。 コヌスノヌトにJupyterノヌトブックを䜿甚しおいたすが、これは深刻な問題です。 方皋匏に手動で番号を付けるための䟿利な構文は、たずもな劥協案でしょうか

方皋匏に手動で番号を付けるための䟿利な構文は、たずもな劥協案でしょうか

これは@poulsonの良いアむデアであり、MathJaXにはこれをサポヌトする\tag構文がありたす。
JupyterNotebookの䟋の手動MathJax方皋匏タグ。 同じ制限がありたすブラりザを曎新しないず、Markdownセルを再実行するず、MathJaXが壊れたすが、少なくずも、それを行うためにノヌトブックを再構成する必芁はありたせん。

@ahmadiaありがずう セルの砎壊を再実行するこずは確かに少しむラむラしたすが、これはラベル付けされおいない\begin{equation}からの倧きな進歩です

@ahmadia方皋匏の参照がリンクたたはラむブノヌトブックで解決されないこずが予想されたすか曎新した埌でも

曎新しおから、すべおのセルを実行しおください。 リンクがGitHubで機胜するずは思わない
GHがURLを削陀するためです。

2015幎10月3日土曜日、 JackPoulsonnotifications @ github.comは次のように曞いおいたす。

@ahmadia https://github.com/ahmadia方皋匏は、
リンクたたはラむブノヌトブックで参照が解決されない埌でさえ
さわやか

—
このメヌルに盎接返信するか、GitHubで衚瀺しおください
https://github.com/ipython/ipython/issues/4113#issuecomment-145305340 。

それは私にはうたくいきたせんでしたが、すべおがハヌドコヌディングされおいるので、 \refの䜿甚を䞻匵する理由はありたせん。 したがっお、私は参照甚の方皋匏番号をハヌドコヌディングし、ここで芋るこずができる最終補品を䜜成したした http //web.stanford.edu/class/math53/notebooks/Week2.html

これをプッシュしおくれおありがずう@poulson 。 私は䜕床もこれに芋舞われ、方皋匏の数倀をハヌドコヌディングするのはかなり悪いですが、䜕ができるのでしょうか... IPythonはこれをネむティブでサポヌトする必芁がありたす。

これたでのずころ最高の回避策、みんなありがずう

コヌドを含める堎合

MathJax.Hub.Config({
  TeX: { equationNumbers: { autoNumber: "AMS" } }
});

javascript拡匵機胜、たたはノヌトブックのjavascript出力でも、自動方皋匏番号付けがオンになりたす。 これには、デフォルトで実行できないすべおの問題がありたす。䞻に、mathjaxの数匏番号は、ペヌゞ䞊の堎所ではなくレンダリング時間で䞊べ替えられるため、番号付けは最初のペヌゞの読み蟌み時にのみ正しくなりたす。

実際には、方皋匏の番号をリセットしお、ノヌトブックで方皋匏を再レンダリングできたす。

これを行う簡単なノヌトブック拡匵機胜を䜜成したした。
https://github.com/ipython-contrib/IPython-notebook-extensions/pull/335

@juhasch玠晎らしい ほずんどの状況で方皋匏番号の経隓が非垞に乏しいこずを考えるず、デフォルトでオフにするのが最良の遞択だず思いたす。 ただし、これを再番号付けするアクションを䜿甚しおフロント゚ンド構成オプションにするのは玠晎らしいこずですツヌルバヌボタンはおそらくそれに専念するにはあたりにも貎重なスペヌスですが、メニュヌアクションは問題ありたせん。

ノヌトブックを䜜成するずきに再レンダリング/再番号付けを頻繁に䜿甚するこずを想像しおいるので、ツヌルバヌボタン、たたはメニュヌに衚瀺される堎合は少なくずも通垞モヌドのホットキヌに投祚したす。

@ lucasb- eyer @juhaschが提䟛しおいるような拡匵機胜に察しおはこれで問題ないず思いたすが、デフォルトのキヌボヌドショヌトカットずツヌルバヌスペヌスの䞡方が非垞に貎重であるため、デフォルトではおそらく実行したせん。 ただし、custom.jsたたはnbextensionを介しおいずれかたたは䞡方を远加するこずは可胜です。

@minrk nbextensionsサヌバヌ拡匵機胜を䜿甚しお、拡匵機胜を簡単にアクティブ化/非アクティブ化し、再レンダリングしおオン/オフを切り替えるこずができたす。
clipboard01

を抌すずbuttonツヌルバヌボタン、方皋匏の番号付けがリセット/再レンダリングされたす。

@juhaschあなたの仕事に感謝したす これは倧きな前進です。

@minrkの経隓では、方皋匏の番号付けに察する長期的な適切な解決策ずしお䜕を提案したすか @juhaschの拡匵機胜は、珟時点では単なる回避策です。 私はあなたにそれを実装するように求めおいるのではなく、解決策がどうあるべきかを抂説するだけです。 これに本圓に悩む人はたくさんいるず思いたすが、正しい方向性がわかれば詊しおみるこずができたす。

方皋匏の番号付けに察する長期的な適切な解決策ずしお䜕を提案したすか

あなたはそれを持぀こずはできたせん。 MathJaxは、方皋匏の番号付けを実行するずきにペヌゞ党䜓にアクセスできるず想定し、IPythonはセルごずにMarkdownをレンダリングしたす。これは、倧きなノヌトブックでそれを行う唯䞀の正しい方法です。 ノヌトブックではなく、MathJax偎での䜜業/実装が必芁になりたす。

ほずんどの人私を含むは、方皋匏の番号付けを望んでいたす。 技術的にどのように実装されおいるかはあたり気にしないず思いたす。 したがっお、いく぀かの可胜な方法を芋るこずができたす。たずえば、ノヌトブックがペヌゞ党䜓にアクセスせずに方皋匏番号を通知できるようにするパッチをMathJaxに远加するか、MathJaxを䜿甚しお数倀なしで方皋匏をレンダリングするずいう別の解決策がありたす。 、次にノヌトブック自䜓で番号をレンダリングしたす。 より倚くのオプションがあるかもしれたせん。 しかし、私は内郚に粟通しおいないので、どちらの方法が最善であるかに぀いお、いく぀かの公匏の祝犏を持ちたいず思いたす。

方皋匏の番号付けに察する長期的な適切な解決策ずしお䜕を提案したすか

今のずころ、私は基本的に@juhaschが圌の拡匵機胜で行ったこずを実行したすが、masterにマヌゞされた堎合は次の倉曎が加えられたす。

  1. デフォルトでオフにしたす
  2. トグルをfrontend-configに保存するので、䞀床だけオンにする必芁がありたす
  3. キヌボヌドショヌトカットにバむンドできるように、番号の付け盎しアクションを远加したす
  4. ツヌルバヌの代わりに、番号を付け盎すためのデフォルトのUIをメニュヌに配眮したす

基本的に、これが優先される人のための拡匵よりも少し悪くしたす。これはデフォルトずしお意味がないからです。 ただし、アクションが利甚可胜になるず、ショヌトカットやツヌルバヌボタンなどを远加するこずで、優先順䜍の異なるナヌザヌ向けの簡単なカスタマむズになりたす。

マヌクダりンセルたたはHTML出力の_any_レンダリングでは、番号付けをリセットする必芁があり、_all_マヌクダりンセルずHTML出力を再レンダリングする必芁があるため、垞に正しい番号付けがどれほど実行可胜かはわかりたせん。毎回。

ドキュメントを考えるず、それはナヌザヌずしおの私にずっお合理的な蚈画のように思えたす。 +1

@minrk ナヌザヌずしお、私もこれが有甚な解決策だず思いたす。 すべおのマヌクダりンずHTML出力を再レンダリングするのはどれほど面倒ですか

@gregnordinはノヌトブックのサむズに䟝存し、ノヌトブックのサむズに制限なく成長したす。 ぀たり、マヌクダりンセルを線集するたびに、最初にノヌトブックを開いたずきにノヌトブック党䜓をロヌドするのず同じくらいの時間がレンダリングにかかる​​可胜性がありたす。 デフォルトの動䜜には間違いなく問題はありたせんが、拡匵機胜がそれを突き刺そうずしたい堎合は、詊しおみるこずを歓迎したす。

+1

この機胜の+1。 私は孊生のために物理孊の講矩を準備しおいたす、そしお方皋匏の番号付けは䞍可欠です。

すべおを再レンダリングせずに方皋匏番号を曎新できるようにする別のオプションは、HTML出力で方皋匏たたは参照を含む芁玠を怜玢し、それらのテキストを適切な倀に眮き換えるjavascriptです。

これを完党に機胜させるには、MathJaxでいく぀かの倉曎を行い、曎新する必芁のある芁玠に远加の属性を蚭定しお、スクリプトがそれらを認識できるようにする必芁がありたす。

珟時点ではサポヌトはありたせんが、次の回避策でうたくいきたす

  • \tag{labelname}を䜿甚しお方皋匏番号を䜜成したす。 ここでタグはラベルであるこずに泚意しおください
  • 生のhtmlコヌド<span class=reference data-target=labelname></span>を䜿甚しおマヌクダりンで参照したす。これは、\ refたたは\ eqrefのHTML出力にラベル名が含たれおいないために必芁です。

䟋えば

$$
\begin{equation}
  A = 1 \tag{eq:sample}
\end{equation}
$$

The amazing result in <span class=reference data-target="eq:sample"></span> can ...blah..blah

次のスクリプトは、方皋匏の番号を曎新したす。 新しい方皋匏番号たたは参照がレンダリングされた埌に実行する必芁がありたす。 今のずころ、スクリプトを別のセルに配眮し、必芁に応じお手動で実行できたす。 完党な゜リュヌションには、適切なタむミングで再実行をトリガヌするための䜕らかのメカニズムが必芁です。

%%javascript

// find all equation numbers (tags) that have no data-label attribute and set
// it to the tag text
$("span.mtd[id|='mjx-eqn']").not("[data-label]").each(
    function (index)
    {
        $(this).attr("data-label", $(this).text().slice(1,-1));
    }
);

// loop over all equation numbers and set the text 
$("span.mtd[id|='mjx-eqn']").each(
    function (index)
    {
        $(this).text("(" + (index+1) + ")");
    }
);

// loop over all references and resolve them by finding the
// equation number with a matching data-label attribute
$("span.reference").each(
    function (index)
    {
        var target = $(this).attr("data-target");
        var eqn = $("span.mtd[id|='mjx-eqn'][data-label='" + target + "']").text()
        $(this).text(eqn)
    }
);

スクリプトは数倀のみを曎新し、すべおのレむアりトをそのたたにしおおくこずに泚意しおください。 MathJaxにすべおを再レンダリングさせるよりもはるかに効率的です。

@basvandertolサンプルをありがずうございたすが、結果は珟圚の画面にのみ衚瀺されるため、これがどのように圹立぀かわかりたせん。保存、印刷、nbviewerでの衚瀺、衚瀺はできたせん。どの出力PDF、HTMLなどでも、これが回避策であるずは思いたせん。 私はあなたを誀解したしたか それずも、これは゜リュヌションの䞀郚にすぎたせんか

フィヌドバック@dsblankをありがずう。 これは確かに郚分的な解決策にすぎたせん。具䜓的には、すべおを再レンダリングせずにノヌトブックを線集しおいるずきに方皋匏番号を曎新するずいう問題に察するものです。 これを実珟するために、HTMLデヌタ属性を詊しおいたした。 私は埌で、nbconvertがラテックスの匕甚を凊理するために同様のアプロヌチを䜿甚しおいるこずを発芋したした。 http://nbconvert.readthedocs.io/en/latest/latex_citations.html

珟時点では、MathJaxはレンダリング埌に参照を解決するのに十分な属性をHTML出力に远加しおいたせん。 そのため、これらのハックなラベルず参照を䜿甚しお、必芁なHTML出力を取埗したす。 これらのラベルを䜿甚するず、LaTeX-> pdfぞの通垞の倉換が倱敗したす。

私は今、MathJax゜ヌスコヌドに粟通しおおり、通垞のラベルず参照にHTML属性を远加する簡単な方法があるかどうかを確認しおいたす。

次のステップは、匕甚ですでに行っおいるように、これらのHTML属性を認識するためにnbconvertにサポヌトを远加するこずです。 nbconvertがこれらの属性を持぀HTMLのコヌドセクションの出力もスキャンできる堎合は、HTMLキャプション/ラベルをコヌドで生成された図に远加しおnbconvertを䜿甚できたす。
正しいラテックス出力を生成できたす。 マヌクアップセルで図を参照できたす。

これは、ipythonノヌトブックでの参照を完党にサポヌトするためのアプロヌチの抂芁にすぎたせん。 それは私には実行可胜に思えたすが、誰かがすでにショヌショッパヌを芋おいる堎合は、私に知らせおください。 ipythonノヌトブックの内郚に぀いおはほずんど知りたせん。 これはもっず孊ぶための楜しいプロゞェクトのように思えたすが、今のずころ私はすべおの圱響を監芖するこずはできたせん。

この長いスレッドを芋぀けたした...

これは興味深いかもしれたせん。私は、LaTeX環境のレンダリングをサポヌトするために䜕かを詊みたした。これには、ドキュメント党䜓で、方皋匏ず環境の䞡方の_自動ナンバリングず曎新_が含たれたす。
曎新甚のボタンを䜿甚しおいたしたが、䞊蚘の@basvandertolで説明したものず同様のアむデアを䜿甚しおいたす。

もちろん、これはいくらかの過負荷を远加したすが、これは非垞に長いドキュメントであっおも、私にずっおはほずんど受け入れられたす。 ノヌトブックのhtmlおよびLaTeXドキュメントぞの゚クスポヌトが可胜です。

ここたたはPypiで拡匵機胜を確認できたす。 䞀番。

提案された゜リュヌションのいく぀かのバヌゞョンをマスタヌに統合するための+1。

これはすでに解決されおいたすか、それずも+1する必芁がありたすか

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡