LoginSignup
0
0

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-02-24

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箇所の変更の考え方を書いておきます.

  1. 変更が 2箇所になるのは, sagetex のコンパイルが LaTeX, Sagemath, LaTeX という順の実行になっていて LaTeX の実行が 2回になるからです.
  2. 変更元の pdflatex ... は将来 lualatex ... に変わる可能性があります. 実際, TeXShop の 環境設定内部設定pdfTeXLaTeXlualatex --file-line-error --synctex=1 にするようになってきているようです. TeXShop がバージョンアップで lualatexsage.engine で使うように変わった場合は, この節の対応はせずに, 次の節の中の sage-lualatexsage と読み替えて下さい.

ソースごとの設定

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

% !TEX TS-program = sage-lualatex

SageTeX 文書の documentclass が

\documentclass{article}

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

一方, jarticlejsartilce は LuaLaTeX でコンパイルできません.

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

\documentclass{ltjsarticle}

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

\documentclass{ltjarticle}

も使えます. ページの余白は ltjarticlearticle が近いようです.

\documentclass{ltjtarticle}

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

SageTeX + TeXShop の使用例

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

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

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 を使います.

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 を使います.

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 も試してみました.

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