Sagemath を Latex 内で使うパッケージ SageTeX はメンテナンスが続いているようです. 軽微な修正でも動作に影響が出るため, パッケージのファイル群は Sagemath のdistribution から Latex のフォルダー内に配置し直す必要があります.
SageMath-8.6 から SageMath-8.9 へのアップグレードでSageTeXのマイナーチェンジに遭遇
事象は Sagemath のアップグレードで SageTeX の再設定が必要になったことです.
SageMath-8.9 の macOS 版のディスクイメージをダウンロードして, 早速マウントしました.
念のため, Terminal.app を開いて diff で /Applications/SageMath-8.9.app/Contents/Resources/sage/local/share/texmf/tex/latex/sagetex
の中身を既存のファイルと比較すると, 変更点が出てきました.
スクリプトで使っているpython のコマンドが print ...
からprint(...)
に変更になったようです.
念のため, SageTeX パッケージを使っている既存のLatexソースをコンパイルしようとするとコンパイルできませんでした.
Sagemath についてくる python の仕様変更が理由のようです.
SageMath-8.9 から TeXLive へスタイルファイルや関連するスクリプトファイルをコピーして対処
私の環境での対処です. 他の環境での対処のヒントは後述します. (コピーの代わりにシンボリック・リンクを使う方法については, Sagemath のバージョンアップごとの SageTeX と TeXShop の設定を簡単にするにはアプリにシンボリック・リンクを張ること のステップ 4〜5 を見てください.
使用環境の癖が影響するかもしれませんのでバージョン情報を書いておきます.
- 作業記録の日付は2019年10月12日
- macOS Mojave 10.14.6
- TeXLive2017+TeXShop (奥村晴彦/黒木祐介 著 改訂第7版 LaTeX2ε 美文書作成入門) mac風インストール
- SageMath-8.9 (ディストリビューションは
sage-8.9-OSX_10.14.6-x86_64.app.dmg
で同梱の SageTeX は2019/01/09 v3
)
ファイルの場所は
- TeXのソフトなど:
/Applications/TeXLive
- ユーザー共通のTeXのスタイルファイルなどを置く場所:
/Useres/Shared/TeXLive/texmf
- SageMath-8.9のインストール後のファイル名:
/Applications/SageMath-8.9.app
設定を行ったときのアカウントは
- LaTeX2ε 美文書作成入門の付録の DVD から TeX システムをインストールしたアカウントで,
- 管理者権限があります.
このコンフィギュレーションで Terminal.app から
myhome$ cp -R /Applications/SageMath-8.9.app/Contents/Resources/sage/local/share/texmf/tex /Users/Shared/TeXLive/texmf
というコマンド1行で SageTeX のスタイルファイルなどをTeXLiveのユーザー共通ファイルの場所に配置することができました.
2020-01-13 追記:
スタイルファイルなどの配置の後に
myhome$ texhash /Users/Shared/TeXLive/texmf
というコマンドを実行することになっているようです.
今回の作業記録にはこの部分がなかったので, 実行を忘れたまま使っていたようです. トリッキーな事情でパッケージが使えていたようです.
SageTeX の使用例
確認用のサンプルですが, 今回は何もコンパイルできないという事象の対処ですので, 簡単なサンプルで十分です.
対処の結果, 下記のサンプルが Terminal.app のコマンドでコンパイルできるようになりました. コンパイルの仕方はサンプルに書き込んであります.
\documentclass{article}
\usepackage{sagetex}
\begin{document}
title: \textsf{SageTeX} through command line
file and date: 2020-01-12-sagetex-by-shell.tex
author: @rana-aerea
Reference: % SageTeXのスタイルファイルはSagemathのdistributionからインストールすること
https://qiita.com/rana-aerea/items/1d30c2dc4782416737d0
Use \textsf{SageTex} for letting
\textsf{Sagemath} to calculate formulae in {\LaTeX} documents!
\begin{sagecommandline}
sage: P = x^3 - 7*x + 6 # assign a polynomial to P
sage: factor(P) # factorize the polynomial
\end{sagecommandline}
Compile this file by
\begin{verbatim}
myhome$ lualatex 2020-01-12-sagetex-by-shell.tex
myhome$ sage 2020-01-12-sagetex-by-shell.sagetex.sage
myhome$ lualatex 2020-01-12-sagetex-by-shell.tex
\end{verbatim}
Verified on:
\begin{verbatim}
SageMath-8.9 (macOS)
LuaTeX 1.0.4 (TeX Live 2017)
macOS Mojave 10.14.6
\end{verbatim}
\end{document}
Sage チュートリアルの読み方
ファイルの場所やコピーの仕方は Sage チュートリアル v9.0 »SageTeXを使う に従いました. (私が設定した時は v8.9だったと思います.) 詳しくは「複数ユーザに対応するシステム」の部分です.
ただし, Sage チュートリアルに出てくる 変数SAGE_ROOT
とTEXMFLOCAL
は計算機関係の教科書でよく<SAGE_ROOT>
や<TEXMFLOCAL>
と書いてある種類の変数です. 要するに変数の中身を手で直接打ち込むという意味です.
まず, Terminal.app で以下のコマンドを実行してユーザー共通のスタイルファイルなどを置く場所を見つけます. ここの TEXMFLOCAL
だけは文字列をそのまま打ち込みます.
myhome$ kpsewhich -var-value=TEXMFLOCAL
/Users/Shared/TeXLive/texmf
次に, <SAGE_ROOT>
ですが, 結果を直接見る方が簡単です. SageMath-8.9.app
かSageMath-8.9
がフォルダー /Applications
の直下に見える場合 <SAGE_ROOT>
は
/Applications/SageMath-8.9.app/Contents/Resources/sage/
のことです. 機械に確認させるなら, Terminal.app からsage
コマンドで
myhome$ /Applications/SageMath-8.9.app/sage
とSagemathを起動して, Sagemath のセッションの中からシェルを呼び出すことによって調べることができます. (Jupyter Notebook からではうまくいきません.)
sage: sh.eval(''' echo "$SAGE_ROOT" ''')
/Users/myhome
/Applications/SageMath-8.9.app/Contents/Resources/sage
''
要するに $SAGE_ROOT
はSagemathがコマンドの中で設定している環境変数です. 通例, Terminal.app から直接に調べても$SAGE_ROOT
値は出てきません.
<TEXMFLOCAL>
と<SAGE_ROOT>
の値をテキストエディターなどに
コピペしておいた上で, 同じくテキストエディター上で,
打ち込み不可 myhome$ cp -R SAGE_ROOT/local/share/texmf/tex TEXMFLOCAL
という1行の中の"SAGE_ROOT"と"TEXMFLOCAL"をその値に置き換えます.
編集結果のコマンド1行cp -R ...
を Termnal.app にコピペして実行します.
私の場合は, 前掲のコマンドになりました.
myhome$ cp -R /Applications/SageMath-8.9.app/Contents/Resources/sage/local/share/texmf/tex /Users/Shared/TeXLive/texmf
1行コマンドをエディターで編集するのは, Terminal.app のコピペで誤って複数行をペーストすると変なことになることがあるからです.
通常のインストールでは管理者アカウントから
myhome$ sudo cp -R /Applications/SageMath-8.9.app/Contents/Resources/sage/local/share/texmf/tex /Users/Shared/TeXLive/texmf
というコマンドを実行してパスワードを入力するという仕方になると思います.
2020-01-13 追記:
スタイルファイルなどの配置の後に
myhome$ texhash TEXMFLOCAL
というコマンドの実行が必要です.
<TEXMFLOCAL>
は kpsewhich ...
で確認したフォルダー名に置き換えて打ち込みます.
こちらも, 通常は
myhome$ sudo texhash TEXMFLOCAL
の <TEXMFLOCAL>
をフォルダー名に置き換えたコマンドを使うことになっているようです.
文献によっては texhash
が mktexlsr
になっていますが, シンボリック・リンクで繋がっていて実体は同一のコマンドのようです.