TeXShop のショートカット (Command-T) やメニューの Typeset で 日本語の SageTeX ソースをコンパイルするには, TeXShop のエンジンをカスタマイズします. 今回は普及度が高い platex を使うカスタマイズを紹介します.
実際に試した使用環境
バージョン情報は以下の通りです.
- macOS Mojave 10.14.6
- TeXLive2017+TeXShop 3.97 (奥村晴彦/黒木祐介 著 改訂第7版 LaTeX2ε 美文書作成入門) mac風インストール
- e-pTeX, Version 3.14159265-p3.7.1-161114-2.6 (utf8.euc) (TeX Live 2017) (preloaded format=platex 2018.10.7)
- SageMath-8.9
アカウントごとの設定 (TeXShop のエンジンのカスタマイズ)
TeXShop の設定は SageTeX を TeXShop で使うために Sagemath のバージョンを TeXShop に登録すること か Sagemath のバージョンアップごとの SageTeX と TeXShop の設定を簡単にするにはアプリにシンボリック・リンクを張ること の設定ができているところから説明します.
TeXShop のエンジンのファイル
~/Library/TeXShop/Engines/sage.engine
が配置してあって, このエンジンのファイルの中の /Applications/SageMath-X.X.app/
の部分を適切に変更してあるはずです.
先頭の行に
% !TEX TS-program = sage
と書いてある英語の SageTeX ソースが TeXShop の Command-T
でコンパイルできている状況です.
ここからが今回の作業です.
まず, ~/Library/TeXShop/Engines/sage.engine
の複製を同じフォルダーの中に作って, ~/Library/TeXShop/Engines/sage-platex.engine
というファイル名にします.
Terminal.app
のコマンドラインからなら
myhome$ cd ~
myhome$ cd Library/TeXShop/Engines/
myhome$ ls sage*
sage.engine
myhome$ cp sage.engine sage-platex.engine
myhome$ ls sage*
sage-platex.engine sage.engine
という操作でできます.
Finder
からなら メニューの移動
→フォルダーへ移動...
→フォルダの場所を入力:
で ~/Library/TeXShop/Engines
と入力して 移動
ボタンを押せば, ~/Library/TeXShop/Engines
というフォルダーを開くことができますので, このフォルダーの中の sage.engine
を複製して, 新しくできたファイルの方を sage-platex.engine
とリネームするとよいでしょう.
ここまでで作成した sage-platex.engine
というファイルをテキストエディターで開いて, 先頭から11行目と37行目(=後ろから4行目) にある
pdflatex --file-line-error --synctex=1 "$filename"
というコマンドを
ptex2pdf -l -ot "-synctex=1 -file-line-error" "$filename"
に変更します.
TeXShop のバージョンアップで TeXShop が変化した場合や, ユーザー独自の platex の設定を使いたい場合のために上記 2箇所の変更の考え方を書いておきます.
- 変更が 2箇所になるのは, sagetex のコンパイルが LaTeX, Sagemath, LaTeX という順の実行になっていて LaTeX の実行が 2回になるからです.
- 変更元の
pdflatex ...
は将来lualatex ...
に変わる可能性があります. 実際, TeXShop の環境設定
→内部設定
→pdfTeX
→LaTeX
はlualatex --file-line-error --synctex=1
にするようになってきているようです. - 変更先の
ptex2pdf ...
はTeXShop の環境設定
→内部設定
→TeX+dvipdfmx / TeX + dvips + distiller
→LaTeX
の箱の中のコマンド(オプション込み)を使います.
ソースごとの設定
SageTeX を使うソースの最初の行に次のマジックを入れます.
% !TEX TS-program = sage-platex
SageTeX 文書の documentclass は
\documentclass{article}
でもコンパイルできますが,
\documentclass{jsarticle}
を使うと行末の禁則処理などがよくなるようです.
\documentclass{jarticle}
は余白の扱いの差のせいか SageTeX の行番号の表示場所が変化します. 私の環境では, sagemath のプログラムと行番号が接近して混ざってしまう危険を感じましたので, jsarticle.cls
に移行しようと思います.
SageTeX + TeXShop の使用例
数式やグラフに少しだけ日本語でコメントを付ける場合や, 計算問題に日本語の指示が少しつくだけの場合, 数式の Typeset が焦点で日本語の部分は読めれば十分という場合, 英語の原稿から日本語に変更する書き直しの初期の段階, は documentclass をartcticle
にして LaTeX のプログラムだけ platex
に変更するという方法が使えます.
スライドを作る場合などで, documentclass の日本語対応版が無い場合は, 英語用の documentclass のまま, LaTeX のプログラムを platex
にしてしのぐことになりますので, この例が参考になると思います. このような場合は, 入力コードの対応用のパッケージを使うことが推奨されていたり, グラフィックスもある場合は \usepackage{dvipdfmx}
を使ったりグラフィック関係のパッケージに [dvipdfmx]
のオプションを付けるなどの対応も必要だったりしますので, 使用する documentclass に合わせて調整して下さい.
%!TEX TS-program = sage-platex
\documentclass{article}
\usepackage{sagetex}
\begin{document}
title: \textsf{SageTeX} with some KANJI through TeXShop (platex + article.cls)
file and date: 2020-02-23a-sagetex-by-texshop.tex
author: @rana-aerea
Reference: [日本語が入っている SageTeX ソースを TeXShop でコンパイルするための対応 (pLaTeX 版)]
https://qiita.com/rana-aerea/items/e0cb41014ff12f1200fb
\textsf{SageTex} は {\LaTeX} 文書から \textsf{Sagemath} を呼び出して計算できます.
\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}
Opening by TeXShop
and then by typing Command-T.
\end{verbatim}
Verified on:
\begin{verbatim}
SageMath-8.9 (macOS)
TeXShop 3.97
e-pTeX, Version 3.14159265-p3.7.1-161114-2.6 (utf8.euc) (TeX Live 2017)
(preloaded format=platex 2018.10.7)
macOS Mojave 10.14.6
\end{verbatim}
\end{document}
本文とは順番が前後しますが, jarticle
という documentclass も日本語の LaTeX ソースに使うことができます. 残念ながら SageTeX と相性がよくない印象があります.
%!TEX TS-program = sage-platex
\documentclass{jarticle}
\usepackage{sagetex}
\begin{document}
title: \textsf{SageTeX} with some KANJI through TeXShop (platex + jarticle.cls)
file and date: 2020-02-23b-sagetex-by-texshop.tex
author: @rana-aerea
Reference: [日本語が入っている SageTeX ソースを TeXShop でコンパイルするための対応 (pLaTeX 版)]
https://qiita.com/rana-aerea/items/e0cb41014ff12f1200fb
\textsf{SageTex} は {\LaTeX} 文書から \textsf{Sagemath} を呼び出して計算できます.
\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}
Opening by TeXShop
and then by typing Command-T.
\end{verbatim}
Verified on:
\begin{verbatim}
SageMath-8.9 (macOS)
TeXShop 3.97
e-pTeX, Version 3.14159265-p3.7.1-161114-2.6 (utf8.euc) (TeX Live 2017)
(preloaded format=platex 2018.10.7)
macOS Mojave 10.14.6
\end{verbatim}
\end{document}
本格的に日本語の SageTeX ソースを書く場合は documentclass jsarticle
が良いようです. 英語の SageTeX ソースから変換していく場合もこちらの方がよさそうな印象です. 逆に, 日本語の修士論文で SageTeX を使った場合の英語論文へのリライトも jsarticle
で行なって, 全体が英語になったところで, article
に変えるという使い方もありそうです.
%!TEX TS-program = sage-platex
\documentclass{jsarticle}
\usepackage{sagetex}
\begin{document}
title: \textsf{SageTeX} with some KANJI through TeXShop (platex + jsarticle.cls)
file and date: 2020-02-23c-sagetex-by-texshop.tex
author: @rana-aerea
Reference: [日本語が入っている SageTeX ソースを TeXShop でコンパイルするための対応 (pLaTeX 版)]
https://qiita.com/rana-aerea/items/e0cb41014ff12f1200fb
\textsf{SageTex} は {\LaTeX} 文書から \textsf{Sagemath} を呼び出して計算できます.
\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}
Opening by TeXShop
and then by typing Command-T.
\end{verbatim}
Verified on:
\begin{verbatim}
SageMath-8.9 (macOS)
TeXShop 3.97
e-pTeX, Version 3.14159265-p3.7.1-161114-2.6 (utf8.euc) (TeX Live 2017)
(preloaded format=platex 2018.10.7)
macOS Mojave 10.14.6
\end{verbatim}
\end{document}