0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ダブルクリック起動の SageMath-9.0.app の jupyter notebook で view 関数を使えるようにして, 計算結果の print, show, view による表示を比較したこと

Last updated at Posted at 2020-02-21

ダブルクリック起動の SageMath-X.X.app は計算結果を view() 関数で表示できないとう問題点と, Markdown セルが入っている ipynb ファイル( jupyter notebook のノートブック・ファイル)を LaTeX にダウンロードできないという問題点があります.

それぞれ, LaTeX や pandoc をみつけられないことが理由です.
LaTeX と pandoc をインストールする必要があるのはもちろんですが, もう一工夫する必要があります. 環境変数を設定してから SageMath-X.X.app を呼び出す Mac アプリを作って対策としました.

数式処理の計算結果の表示の仕方 8 通りを比較する機会となりましたので, 計算結果の LaTeX ソース関係の 8 通りも含めて合計 16 通りを比較する動作テスト用のサンプル・プログラムを作成しました.

実際に試した使用環境

バージョン情報は以下の通りです.

  • macOS Mojave 10.14.6
  • TeXLive2017+TeXShop 3.97 (奥村晴彦/黒木祐介 著 改訂第7版 LaTeX2ε 美文書作成入門) mac風インストール
  • SageMath-9.0
  • minimal example は 2020年02月21日作成

SageMath-9.9.app で LaTeX と pandoc を使うための対処療法

対処方を 2 つ試しました. 一つは bash コマンド

# !/bin/bash

/Applications/SageMath-9.0.app/Contents/MacOS/Sage >> ~/MySageLog.log 2>> ~/MySageLog.log & exit

SageMathWrapper.command テキストファイル にして, この SageMathWrapper.command をダブルクリックするという方法です.

この方法は Terminal.app のウィンドウが新しく開いたままになってしまうという欠点があります. また, そのウィンドウで Quit すると Terminal.app の他のウィンドウまで閉じてしまうという問題点があります.

もう一つの対策は, オートメーターを使って, Mac の GUI と unix の橋渡しのコマンドを作ることです. /Applications/Automator.app をダブルクリックして開いて, アプリケーションをクリック, 選択ボタンをクリック すると新規書類の編集画面になりますので, 左上の検索ボックスにシェルと入力してリターンキーを打つと シェルスクリプトを実行 という項目がでてきます. この項目を右側のウィンドウにドラッグします. シェル: /bin/bash の下の空のボックス (Automator.app のバージョンによっては cat が入っているボックスの中身を削除して空にしたボックス)に 下記のコードを入力して, コマンド-S キーなどで, SageMathWrapper.app というファイル名でセーブします.

/bin/bash --login -c /Applications/SageMath-9.0.app/Contents/MacOS/Sage >> ~/MySageLog.log 2>> ~/MySageLog.log &
exit

このファイル SageMathWrapper.app をダブルクリックすると SageMath-9.0.app が起動します.

以上 2 つの方法のどちらで起動した場合でも LaTeX と pandoc が SageMath-9.0.app から使えるようになります. ユーザーの視点でいうなら, view 関数が正常動作するようになり, jupyter note book の Web ページ内のFileDownload asLaTeX で ipynb ファイル (ノートブック)をダウンロードすることができるようになります.

脇道にそれますが..., ダウンロード先は ブラウザーのダウンロード先のようです. Safari の場合はデフォールトで ダウンロード フォルダーですが, Safari で書類などを別の場所にダウンロードした後は Jupyter Notebook のダウンロード先も変わってしまうようです. ブラウザーの機能でダウンロード先を設定し直しておきましょう.

SageMath-9.0.app と unix の橋渡しをするアプリは AppleScript で作ることも可能です. これについては勉強中です.

今回の方法が対処するエラーの判定法

まず, LaTeX と pandoc がインストールしてあるかどうか確認します. Terminal.app の画面で

myhome$ which pdflatex; which pandoc

というコマンドを実行して出力のパスのフォルダー名を確認します.
出力にファイル名が無かったり, 1つだけだったりした場合は不足しているソフトウェアをインストールして下さい.

出力が /usr/local/bin/pdflatex/usr/local/bin/pandoc になった場合は, フォルダー名は /usr/local/bin です.

次に, SageMath-9.0.app をダブルクリックや Dock のアイコンのクリック , LaunchPad のアイコンのクリックで起動して, Jupyter Notebook のノートブックの画面で,

        !echo $PATH

を実行します. 出力の中に先ほどのフォルダーがない場合が今回の記事に該当します.

出力は長いので, 出力の最後の方を見て下さい. 該当する場合の出力の最後の方は

/Applications/SageMath-9.0.app/Contents/Resources/sage/src/bin:/usr/bin:/bin:/usr/sbin:/sbin

となっています. コロン : で区切ってある出力を右から見て行くいと,

    /sbin
    /usr/sbin
    /bin
    /usr/bin

と短いパス名が並んでいて, そのすぐ次に長いパス名で SageMathsage などの文字列が来ている場合です.

pandoc が見つけられないエラー

順序が前後しますが, 内容が短い方を先にします. 今回の方法は jupyter note book の Web ページ内のFileDownload asLaTeX
で出る

    500 : Internal Server Error
    The error was:
        
        nbconvert failed: Pandoc wasn't found.
        Please check that pandoc is installed:
        http://pandoc.org/installing.html

というエラーの対処療法になっています.

print, show, view latex の動作テスト・プログラムと LaTeX が見つけられないエラー (サブセクションの中身全体で ipynb ファイル 1つです)

Sagemath display the result of calculation in plain text format or in latex format.
It can show the latex image in a different window. Finally, it can give latex source of the output.
%display plain
# display the result of calcuation in plain text format
print( factor(x^2+2*x+1) )
    (x + 1)^2
factor(x^2+2*x+1)
    (x + 1)^2
show(factor(x^2+2*x+1))
    (x + 1)^2
view(factor(x^2+2*x+1))
    Error: PDFLaTeX does not seem to be installed.  Download it from
    ctan.org and try again.
    Latex error
print( latex(factor(x^2+2*x+1)) )
    {\left(x + 1\right)}^{2}
latex(factor(x^2+2*x+1))
    {\left(x + 1\right)}^{2}
show(latex(factor(x^2+2*x+1)))
    {\left(x + 1\right)}^{2}
view(latex(factor(x^2+2*x+1)))
    Error: PDFLaTeX does not seem to be installed.  Download it from
    ctan.org and try again.
    Latex error
%display latex
# display the result of calcuation in  latex format
print( factor(x^2+2*x+1) )
    (x + 1)^2
factor(x^2+2*x+1)
{\left(x + 1\right)}^{2}
show(factor(x^2+2*x+1))
{\left(x + 1\right)}^{2}
view(factor(x^2+2*x+1))
    Error: PDFLaTeX does not seem to be installed.  Download it from
    ctan.org and try again.
    Latex error
print( latex(factor(x^2+2*x+1)) )
    {\left(x + 1\right)}^{2}
latex(factor(x^2+2*x+1))
{\left(x + 1\right)}^{2}
show(latex(factor(x^2+2*x+1)))
{\left(x + 1\right)}^{2}
view(latex(factor(x^2+2*x+1)))
    Error: PDFLaTeX does not seem to be installed.  Download it from
    ctan.org and try again.
    Latex error

動作テスト・プログラムの結果

対処療法を用いない場合でも %display latex は機能しています. エラーがでるのは, view 関数を使用する場合です. 対処療法を用いると, view 関数のエラーメッセージがでなくなって, view 関数の実行では別ウィンドウに数式の表示がでました.

対処療法を用いた場合でも , %display plain%display latex の状態によらずにテキスト出力を使いたい場合は, print(,...)print(latex(...)) を使うとよいようです. 出力を pdf にとっておいて, Sagemath で再使用したい場合や, LaTeX で出力を使う場合などの状況が考えられます.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?