LoginSignup
0
1

More than 3 years have passed since last update.

SageTeXのスタイルファイルはSagemathのdistributionからインストールすること

Last updated at Posted at 2020-01-12

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 のコマンドでコンパイルできるようになりました. コンパイルの仕方はサンプルに書き込んであります.

2020-01-12-sagetex-by-shell.tex
\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_ROOTTEXMFLOCALは計算機関係の教科書でよく<SAGE_ROOT><TEXMFLOCAL>と書いてある種類の変数です. 要するに変数の中身を手で直接打ち込むという意味です.

まず, Terminal.app で以下のコマンドを実行してユーザー共通のスタイルファイルなどを置く場所を見つけます. ここの TEXMFLOCAL だけは文字列をそのまま打ち込みます.

myhome$ kpsewhich -var-value=TEXMFLOCAL
/Users/Shared/TeXLive/texmf

次に, <SAGE_ROOT> ですが, 結果を直接見る方が簡単です. SageMath-8.9.appSageMath-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> をフォルダー名に置き換えたコマンドを使うことになっているようです.

文献によっては texhashmktexlsr になっていますが, シンボリック・リンクで繋がっていて実体は同一のコマンドのようです.

0
1
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
1