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

TeXShop のショートカット (Command-T) やメニューの Typeset で 日本語の SageTeX ソースをコンパイルするには,  TeXShop のエンジンをカスタマイズします. 今回は `LuaTeX-ja`-パッケージで日本語対応ができてきた   lualatex を使うカスタマイズを紹介します. 
 
## 実際に試した使用環境

バージョン情報は以下の通りです.

* macOS Mojave 10.14.6
* TeXLive2017+TeXShop 3.97 (奥村晴彦／黒木祐介 著 改訂第7版 LaTeX2ε 美文書作成入門) mac風インストール
* LuaTeX, Version 1.0.4 (TeX Live 2017) 
* 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` でコンパイルできている状況です.

ここから今回の作業になりますが,  設定方法は [日本語が入っている SageTeX ソースを TeXShop でコンパイルするための対応 (pLaTeX 版)](https://qiita.com/rana-aerea/items/e0cb41014ff12f1200fb) をなぞります.

まず, `~/Library/TeXShop/Engines/sage.engine` の複製を同じフォルダーの中に作って, `~/Library/TeXShop/Engines/sage-lualatex.engine` というファイル名にします.

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

```Console
    myhome$ cd ~
    myhome$ cd Library/TeXShop/Engines/
    myhome$ ls sage*
    sage.engine
    myhome$ cp sage.engine sage-lualatex.engine
    myhome$ ls sage*
    sage-lualatex.engine    sage-platex.engine    sage.engine
```

という操作でできます.
`Finder` からなら メニューの`移動`→`フォルダーへ移動...`→`フォルダの場所を入力:` で `~/Library/TeXShop/Engines`と入力して `移動`ボタンを押せば, `~/Library/TeXShop/Engines` というフォルダーを開くことができますので, このフォルダーの中の `sage.engine` を複製して, 新しくできたファイルの方を `sage-lualatex.engine` とリネームするとよいでしょう.

ここまでで作成した `sage-lualatex.engine` というファイルをテキストエディターで開いて, 先頭から11行目と37行目(=後ろから4行目) にある

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

というコマンドを

```Console
     lualatex --file-line-error --synctex=1 "$filename"
 ```
 
 に変更します.
 TeXShop のバージョンアップで TeXShop が変化した場合や, ユーザー独自の lualatex の設定を使いたい場合のために上記 2箇所の変更の考え方を書いておきます.
 
1. 変更が 2箇所になるのは, sagetex のコンパイルが LaTeX, Sagemath, LaTeX という順の実行になっていて LaTeX の実行が 2回になるからです.
2. 変更元の `pdflatex ...` は将来  `lualatex ...` に変わる可能性があります. 実際, TeXShop の `環境設定 `→ `内部設定`→`pdfTeX`→`LaTeX` は `lualatex --file-line-error --synctex=1` にするようになってきているようです. TeXShop がバージョンアップで `lualatex` を `sage.engine` で使うように変わった場合は, この節の対応はせずに, 次の節の中の `sage-lualatex`を `sage` と読み替えて下さい.

## ソースごとの設定

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

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

SageTeX 文書の documentclass が

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

の場合は `\usepackage{luatexja}` を使用して下さい.
パッケージ名に `la` とハイフンが無いため意外に感じるかもしれませんが, `luatexja` で LuaLaTeX が漢字対応になります.

一方, `jarticle` と `jsartilce` は LuaLaTeX でコンパイルできません.

しかし, LuaLaTeX 版の documentclass を SageTeX 文書に使うことで LuaLaTeX に対応することができます. この場合は documentclass の部分で `luatexja.sty` を自動的に読み込む処理になります.

```TeX
\documentclass{ltjsarticle}
```

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

```TeX
\documentclass{ltjarticle}
```

も使えます. ページの余白は `ltjarticle` と `article` が近いようです.


```TeX
\documentclass{ltjtarticle}
```

は縦書きの documentclass です. SageTeX で使うにはテクニックが必要になりそうです. 本文は縦書きで Sagemath のプログラムや大きい数式は箱の中で横書きにしたいところですが, 私にとっては将来の課題です.

## SageTeX + TeXShop の使用例 

preamble 部で `\usepackage{luatexja}` というマクロを使うことで LuaLaTeX を日本語に対応させることができます.

数式の割合が多い文書に少しだけ日本語の説明を入れる場合や英語の文書に少しだけ漢字や仮名を入れる場合, 英語の文書を日本語にリライトする途中で英語の文章を原型に近い形で見ながら作業する場合, スライドなどで日本語対応のクラスファイルが無い場合に使える方法です.

```TeX:2020-02-24a-sagetex-by-texshop.tex
%!TEX TS-program = sage-lualatex
\documentclass{article}
\usepackage{luatexja}
\usepackage{sagetex}
\begin{document}
title: \textsf{SageTeX} with some KANJI through TeXShop

file and date: 2020-02-24a-sagetex-by-texshop.tex (lualatex + article.cls + luatexja.sty)

author: @rana-aerea

Reference: [日本語が入っている SageTeX ソースを TeXShop でコンパイルするための対応 (LuaLaTeX 版)]
    https://qiita.com/rana-aerea/items/e6f7fbb4c6f1f0c46daa

\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
    LuaTeX, Version 1.0.4 (TeX Live 2017) 
    macOS Mojave 10.14.6
\end{verbatim}
\end{document}
```

本文と順番が前後しますが, `jarticle` を LuaLaTeX-ja でエミュレートするには , `ltjarticle` を使います.

```TeX:2020-02-24b-sagetex-by-texshop.tex
%!TEX TS-program = sage-lualatex
\documentclass{ltjarticle}
% Automatically reads luatexja.sty by \RequirePackage{luatexja}
\usepackage{sagetex}
\begin{document}
title: \textsf{SageTeX} with some KANJI through TeXShop

file and date: 2020-02-24b-sagetex-by-texshop.tex (lualatex + ltjarticle.cls)

author: @rana-aerea

Reference: [日本語が入っている SageTeX ソースを TeXShop でコンパイルするための対応 (LuaLaTeX 版)]
    https://qiita.com/rana-aerea/items/e6f7fbb4c6f1f0c46daa

\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
    LuaTeX, Version 1.0.4 (TeX Live 2017) 
    macOS Mojave 10.14.6
\end{verbatim}
\end{document}
```

`jsarticle` を LuaLaTeX-ja でエミュレートするには , `ltjsarticle` を使います.

```TeX:2020-02-24c-sagetex-by-texshop.tex
%!TEX TS-program = sage-lualatex
\documentclass{ltjsarticle}
% Automatically reads luatexja.sty by \RequirePackage{luatexja}
\usepackage{sagetex}
\begin{document}
title: \textsf{SageTeX} with some KANJI through TeXShop

file and date: 2020-02-24c-sagetex-by-texshop.tex (lualatex + ltjsarticle.cls)

author: @rana-aerea

Reference: [日本語が入っている SageTeX ソースを TeXShop でコンパイルするための対応 (LuaLaTeX 版)]
    https://qiita.com/rana-aerea/items/e6f7fbb4c6f1f0c46daa

\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
    LuaTeX, Version 1.0.4 (TeX Live 2017) 
    macOS Mojave 10.14.6
\end{verbatim}
\end{document}
```

念の為, LuaLaTeX-ja の縦書き documentclass も試してみました.

```TeX:2020-02-24d-sagetex-by-texshop.tex
%!TEX TS-program = sage-lualatex
\documentclass{ltjtarticle}
% Automatically reads luatexja.sty by \RequirePackage{luatexja}
\usepackage{sagetex}
\begin{document}
title: \textsf{SageTeX} with some KANJI through TeXShop

file and date: 2020-02-24d-sagetex-by-texshop.tex (lualatex + ltjtarticle.cls)

author: @rana-aerea

Reference: [日本語が入っている SageTeX ソースを TeXShop でコンパイルするための対応 (LuaLaTeX 版)]
    https://qiita.com/rana-aerea/items/e6f7fbb4c6f1f0c46daa

\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}

Conclusion of this example:
    Compiling a file  dominated by English language
    in east Asian vertical style produces weird document.

We should conceal horizontal sage block in a box.
\vskip1ex
Verified on:
\begin{verbatim}
    SageMath-8.9 (macOS)
    TeXShop 3.97
    LuaTeX, Version 1.0.4 (TeX Live 2017) 
    macOS Mojave 10.14.6
\end{verbatim}
\end{document}
```