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 に登録すること か Sagemath のバージョンアップごとの SageTeX と TeXShop の設定を簡単にするにはアプリにシンボリック・リンクを張ること の設定ができているところから説明します.
TeXShop のエンジンのファイル ~/Library/TeXShop/Engines/sage.engine
が配置してあって, このエンジンのファイルの中の /Applications/SageMath-X.X.app/
の部分を適切に変更してあるはずです.
先頭の行に
% !TEX TS-program = sage
と書いてある英語の SageTeX ソースが TeXShop の Command-T
でコンパイルできている状況です.
ここから今回の作業になりますが, 設定方法は 日本語が入っている SageTeX ソースを TeXShop でコンパイルするための対応 (pLaTeX 版) をなぞります.
まず, ~/Library/TeXShop/Engines/sage.engine
の複製を同じフォルダーの中に作って, ~/Library/TeXShop/Engines/sage-lualatex.engine
というファイル名にします.
Terminal.app
のコマンドラインからなら
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行目) にある
pdflatex --file-line-error --synctex=1 "$filename"
というコマンドを
lualatex --file-line-error --synctex=1 "$filename"
に変更します.
TeXShop のバージョンアップで TeXShop が変化した場合や, ユーザー独自の lualatex の設定を使いたい場合のために上記 2箇所の変更の考え方を書いておきます.
- 変更が 2箇所になるのは, sagetex のコンパイルが LaTeX, Sagemath, LaTeX という順の実行になっていて LaTeX の実行が 2回になるからです.
- 変更元の
pdflatex ...
は将来lualatex ...
に変わる可能性があります. 実際, TeXShop の環境設定
→内部設定
→pdfTeX
→LaTeX
はlualatex --file-line-error --synctex=1
にするようになってきているようです. TeXShop がバージョンアップでlualatex
をsage.engine
で使うように変わった場合は, この節の対応はせずに, 次の節の中のsage-lualatex
をsage
と読み替えて下さい.
ソースごとの設定
SageTeX を使うソースの最初の行に次のマジックを入れます.
% !TEX TS-program = sage-lualatex
SageTeX 文書の documentclass が
\documentclass{article}
の場合は \usepackage{luatexja}
を使用して下さい.
パッケージ名に la
とハイフンが無いため意外に感じるかもしれませんが, luatexja
で LuaLaTeX が漢字対応になります.
一方, jarticle
と jsartilce
は LuaLaTeX でコンパイルできません.
しかし, LuaLaTeX 版の documentclass を SageTeX 文書に使うことで LuaLaTeX に対応することができます. この場合は documentclass の部分で luatexja.sty
を自動的に読み込む処理になります.
\documentclass{ltjsarticle}
を使うと行末の禁則処理などがよくなるようです.
\documentclass{ltjarticle}
も使えます. ページの余白は ltjarticle
と article
が近いようです.
\documentclass{ltjtarticle}
は縦書きの documentclass です. SageTeX で使うにはテクニックが必要になりそうです. 本文は縦書きで Sagemath のプログラムや大きい数式は箱の中で横書きにしたいところですが, 私にとっては将来の課題です.
SageTeX + TeXShop の使用例
preamble 部で \usepackage{luatexja}
というマクロを使うことで LuaLaTeX を日本語に対応させることができます.
数式の割合が多い文書に少しだけ日本語の説明を入れる場合や英語の文書に少しだけ漢字や仮名を入れる場合, 英語の文書を日本語にリライトする途中で英語の文章を原型に近い形で見ながら作業する場合, スライドなどで日本語対応のクラスファイルが無い場合に使える方法です.
%!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 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 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 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}