ダブルクリック起動の 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 ページ内のFile
→ Download as
→ LaTeX
で 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
と短いパス名が並んでいて, そのすぐ次に長いパス名で SageMath
や sage
などの文字列が来ている場合です.
pandoc
が見つけられないエラー
順序が前後しますが, 内容が短い方を先にします. 今回の方法は jupyter note book
の Web ページ内のFile
→ Download as
→ LaTeX
で出る
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 で出力を使う場合などの状況が考えられます.