日本語 LaTeX コマンドに応じて自動的に文書クラス等を切り替える autojsarticle.cls

日本語 LaTeX コマンド（platex, uplatex, pdflatex, lualatex, xelatex）に応じて、必要な設定（文書クラス、追加パッケージ、graphicxパッケージのオプション）を切り替える稚作のクラスファイル autojsarticle.cls を紹介します。

## 前提

日本語 LaTeX（pTeX, [upLaTeX](https://texwiki.texjp.org/?upTeX%2CupLaTeX), [pdfLaTeX](https://texwiki.texjp.org/?pdfTeX), [LuaLaTeX](https://texwiki.texjp.org/?LuaTeX), [XeLaTeX](https://texwiki.texjp.org/?XeTeX) ）がインストールされていること。日本語 LaTeX のインストールはいくつかの方法がありますが、TexLive がお薦めです。インストール方法は、 [TexWiki](https://texwiki.texjp.org/?TeX%20Live#w628bee6) を参照してください。

## チュートリアル

1. 以下のいずれかの方法で autojsarticle.cls 取得し、カレントフォルダに置く
    * [GitHub](https://github.com/miura-katsuyoshi/autojsarticle) から clone
        ```sh
        git clone https://github.com/miura-katsuyoshi/autojsarticle
        ```
    * [autojsarticle.cls](https://raw.githubusercontent.com/miura-katsuyoshi/autojsarticle/master/autojsarticle.cls) ←のリンクを右クリックし、名前をつけてリンク先を保存
2. カレントフォルダに sample.tex を作成
    * 文書クラスは autojsarticle としてください
    * 文字エンコーディングは UTF-8 にしてください
    * 取り急ぎ試したい方は、以下の内容をテキストエディタにコピーし、sample.tex の名前でカレントフォルダ（autojsarticle.cls と同じフォルダ）に保存してください
        ```LaTeX:sample.tex
        \documentclass{autojsarticle}
        \begin{document}
        世界よ、こんにちは。
        \end{document}
        ```
3. 端末、あるいは、コマンドプロンプトを開き、カレントフォルダ（autojsarticle.cls, sample.tex と同じフォルダ）に移動して、sample.tex をコンパイルする
    * platex コマンドを使う場合：
        ```sh
        platex sample.tex
        dvipdfmx sample.dvi
        ```
    * uplatex コマンドを使う場合：
        ```sh
        uplatex sample.tex
        dvipdfmx sample.dvi
        ```
    * pdflatex コマンドを使う場合：
        ```sh
        pdflatex sample.tex
        ```
    * lualatex コマンドを使う場合：
        ```sh
        lualatex sample.tex
        ```
    * xelatex コマンドを使う場合：
        ```sh
        xelatex sample.tex
        ```
4. sample.dvi をビューアー（Adobe Reader、ブラウザ等）で開く

## これを使うと何が嬉しいのか？

以前は、LaTeX で日本語を扱う場合、platex コマンドと dvipdfmx コマンドを使う方法のほぼ一択で、文書クラスは jarticle でした。ところが、近年[^1]、[upLaTeX](https://texwiki.texjp.org/?upTeX%2CupLaTeX), [pdfLaTeX](https://texwiki.texjp.org/?pdfTeX), [LuaLaTeX](https://texwiki.texjp.org/?LuaTeX), [XeLaTeX](https://texwiki.texjp.org/?XeTeX) 等の様々な拡張版の TeX が登場しました。これらの拡張版の LaTeX を使う場合、適切に、文書クラス、文書クラスオプション、追加パッケージを設定する必要があったり、graphicx パッケージ使用時に適切なオプションを指定する必要があったりと、非常に複雑な状況になっています。また、[Visual Studio Code](https://code.visualstudio.com/) + [LaTeX Workshop](https://github.com/James-Yu/LaTeX-Workshop) 等の統合環境を使う場合、標準の設定では海外で主流の pdflatex が使われますが、pdflatex で日本語を扱うためには適切な設定が必要となります。

この autojsarticle.cls を使うと、自動的に、必要な設定が切り替えられるので、使用する LaTeX コマンドに応じて設定を変更する必要がなくなります。[Visual Studio Code](https://code.visualstudio.com/) + [LaTeX Workshop](https://github.com/James-Yu/LaTeX-Workshop) では、標準設定でコンパイル＆プリビューができます。

## 使い方
* クラスファイル [autojsarticle.cls](https://raw.githubusercontent.com/miura-katsuyoshi/autojsarticle/master/autojsarticle.cls) を、LaTeX コマンドが参照可能なフォルダに置く
    * 手っ取り早い方法は、カレントフォルダに置くことです
    * システムにインストールしたい場合は、/usr/local/texlive/texmf-local/tex/latex/local/ 等のフォルダに置き、mktexlsr コマンドを実行してください
        ```sh
        sudo mktexlsr
        ```
:::note warn
TeX のインストールフォルダ（上述の /usr/local/texlive）は、OS や TeX のインストール方法によって異なります。TeX をコンパイルすると、様々なシステムファイルのパスが表示されますので、それを参考にしてください。
:::
* LaTeX ソースファイルの1行目に記載する文書クラスを autojsarticle にする
    ```LaTeX:文書クラスの指定
    \documentclass{autojsarticle}
    ```
    * 文字エンコーディングは UTF-8 にしてください
    * autojsarticle.cls は、jsarticle.cls を呼び出しています。jsarticle クラスで使用可能なコマンドを使用可能です
    * 文書クラスオプションは、そのまま、jsarticle.cls に伝達されます
        ```LaTeX:文書クラスオプションの指定例
        \documentclass[12pt]{autojsarticle}
        ```
    * graphicx パッケージはインクルード済みですので、`\usepackage{graphicx}` は不要です
* LaTeX コマンド（platex, uplatex, pdflatex, lualatex, xelatex のいずれか）でコンパイルする
    * platex, uplatex は DVI ファイルを生成します。dvipdfmx コマンドで PDF に変換してください
    * pdflatex, lualatex, xelatex は、直接 PDF ファイルを出力します

## どの LaTeX コマンドが良いの？

正直、どの LaTeX コマンドが良いのかは、よくわかりません。

## GitHubリポジトリ

https://github.com/miura-katsuyoshi/autojsarticle

[^1]: 執筆時点は2023年