日本語が入っている  SageTeX ソースを TeXShop でコンパイルするための対応 (pLaTeX 版)

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 に登録すること](https://qiita.com/rana-aerea/items/468f221bbab18131316e) か [Sagemath のバージョンアップごとの SageTeX と TeXShop の設定を簡単にするにはアプリにシンボリック・リンクを張ること](https://qiita.com/rana-aerea/items/0b79d4d65dde5d5df313) の設定ができているところから説明します.

TeXShop のエンジンのファイル
`~/Library/TeXShop/Engines/sage.engine`
が配置してあって, このエンジンのファイルの中の `/Applications/SageMath-X.X.app/` の部分を適切に変更してあるはずです.
先頭の行に

```TeX
% !TEX TS-program = sage
```

と書いてある英語の SageTeX ソースが TeXShop の `Command-T` でコンパイルできている状況です.

ここからが今回の作業です.
まず, `~/Library/TeXShop/Engines/sage.engine` の複製を同じフォルダーの中に作って, `~/Library/TeXShop/Engines/sage-platex.engine` というファイル名にします.

`Terminal.app` のコマンドラインからなら

```Console
    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行目) にある

```Console
     pdflatex --file-line-error --synctex=1 "$filename"
```

というコマンドを

```Console
     ptex2pdf -l -ot "-synctex=1 -file-line-error" "$filename"
 ```
 
 に変更します.
 TeXShop のバージョンアップで TeXShop が変化した場合や, ユーザー独自の platex の設定を使いたい場合のために上記 2箇所の変更の考え方を書いておきます.
 
 1. 変更が 2箇所になるのは, sagetex のコンパイルが LaTeX, Sagemath, LaTeX という順の実行になっていて LaTeX の実行が 2回になるからです.
 2. 変更元の `pdflatex ...` は将来  `lualatex ...` に変わる可能性があります. 実際, TeXShop の `環境設定 `→ `内部設定`→`pdfTeX`→`LaTeX` は `lualatex --file-line-error --synctex=1` にするようになってきているようです.
 3. 変更先の `ptex2pdf ...` はTeXShop の `環境設定 `→ `内部設定`→`TeX+dvipdfmx / TeX + dvips + distiller`→`LaTeX`  の箱の中のコマンド(オプション込み)を使います. 
 

## ソースごとの設定

SageTeX を使うソースの最初の行に次のマジックを入れます.

```TeX
% !TEX TS-program = sage-platex
```

SageTeX 文書の documentclass は

```TeX
\documentclass{article}
```

でもコンパイルできますが,

```TeX
\documentclass{jsarticle}
```

を使うと行末の禁則処理などがよくなるようです.

```TeX
\documentclass{jarticle}
```

は余白の扱いの差のせいか SageTeX の行番号の表示場所が変化します. 私の環境では, sagemath のプログラムと行番号が接近して混ざってしまう危険を感じましたので, `jsarticle.cls` に移行しようと思います.

## SageTeX + TeXShop の使用例 

数式やグラフに少しだけ日本語でコメントを付ける場合や, 計算問題に日本語の指示が少しつくだけの場合, 数式の Typeset が焦点で日本語の部分は読めれば十分という場合, 英語の原稿から日本語に変更する書き直しの初期の段階, は documentclass を`artcticle` にして LaTeX のプログラムだけ `platex` に変更するという方法が使えます.

スライドを作る場合などで, documentclass の日本語対応版が無い場合は, 英語用の documentclass のまま, LaTeX のプログラムを `platex` にしてしのぐことになりますので, この例が参考になると思います. このような場合は, 入力コードの対応用のパッケージを使うことが推奨されていたり, グラフィックスもある場合は `\usepackage{dvipdfmx}` を使ったりグラフィック関係のパッケージに  `[dvipdfmx]` のオプションを付けるなどの対応も必要だったりしますので, 使用する documentclass  に合わせて調整して下さい.

```TeX:2020-02-23a-sagetex-by-texshop.tex
%!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:2020-02-23b-sagetex-by-texshop.tex
%!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:2020-02-23c-sagetex-by-texshop.tex
%!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}
```