LaTeXでレポートを書いてみよう

# 全ての理工系大学生へ
理工系の大学だと初年度から理数系科目のレポート課題が山のように出ます。後々の卒論などのことを考えればコンピュータを利用してレポートを書き上げる練習をしてみるのも悪くないですが、いざWordでレポートを書いてみようとすると数式の体裁などが上手くいかないものです。しかし、そんな時のためにピッタリのシステムがあります。
今回は論文等の執筆ソフト（正確には組版ソフト）である$\LaTeX$を使って、簡単な数学の解答を一枚書いてみることを目標とします。

## 文系ですか？
知ーらね。女の子とデートした後に鉛筆握ってチマチマ書いてろよ。

# LaTeXってなに？
実際には$\LaTeX$と書き、これが利用できない環境でLaTeXと表記されます。
### TL; DR
ソースコードから体裁の整った印刷可能な文書を生成する**組版処理ソフト**です。

## 歴史
太古の昔に Knuth という凄いおじさんがいました（存命）。彼は自分の本を改訂して出版することになったのですが、その仕上がりがあまりにも汚かったので激怒しました。以前まで印刷に使われていた「組版」という手法による美しさを、当時主流になりつつあった「写植」は再現できなかったのです。その後Knuthおじさんは最高の組版システムを作ろうと一念発起し、なんやかんやあって出来上がったのが$\TeX$でした。
$\TeX$は様々な人に喜んで使われましたが、他のそういったソフトの例に漏れず少なからず不満も上がっていました。当時$\TeX$で文章を書くのはかなり煩雑であり、「もっと簡単に論文を書きたい！」という要望が多かったのです。そこである人たちはよく使ういくつかの機能を**マクロ**としてまとめ、$\TeX$に組み込んで頒布するようになりました。そうした巨大なマクロセットの一つが$\LaTeX$なのです。
また、$\TeX$や$\LaTeX$の日本語対応版にp$\TeX$やp$\LaTeX$があります。

# LaTeXを手元のコンピュータで使いたい
$\TeX$のディストリビューションの一つに$\TeX$ Liveがあります。$\TeX$をコンピュータ上で使うためのツール群であり、中には$\LaTeX$も含まれています。これをインストールしてみましょう。

ここを見れば大体わかります。
[TeX Wiki: Tex Live](https://texwiki.texjp.org/?TeX%20Live)

## Linux
小さな機能ごとにインストールする方法もありますが、ストレージ容量にそこそこの余裕さえあるなら面倒なのでこの際全部入れてしまいましょう。

```sh
$ sudo apt install -y texlive-full
```

debian系でない場合も適宜`yum`等に読み替えてください。
不安なら`-y`は外してもいいでしょうが、少し時間がかかるのでそれに付き合う準備は必要でしょう。全部任せたなら、コーヒーでも入れて一息ついていれば思い出した頃にはインストールが終わっているはずです。

ちなみに直Curlしてインストールすることもできます。

### 2023/12/06 追記
apt のレポジトリにある TexLive はかなり古く、最近CTANに追加されたため入っていないパッケージもあります。よほどの理由がない限りは最新版を直接インストールするのが丸いかと思います。

参考：[aptのTeX Liveが古い - ミシシッピ川以東のルイジアナ](https://jj1lis.hatenablog.com/entry/2023/09/24/050802)

（追記終わり）

## Windows
Windows 10(64bit)環境を前提とします。
ISOイメージからインストールする方法とネットワークインストーラを使用する方法がありますが、どちらでも同様の結果が得られるはずです（未確認）。私はISOから入れて特に問題なくインストールできたのでこちらを基準に説明していきます。

### 1. ISOイメージをダウンロードする
$\TeX$ Users Groupのサイトにある[こちら(Acquiring TeX Live as an ISO image)](http://www.tug.org/texlive/acquire-iso.html)の"download from a nearby CTAN mirror"にアクセスします。
するとファイル一覧が表示されますから、`texlive.iso`か`texliveXXXX.iso`（XXXXは年数。執筆時点では2021）を落とします。左クリックか、右クリック後に「名前を付けてリンク先を保存」等でダウンロードが開始されるはずです。
4GB近くあるクソデカファイルなので、通信環境にもよりますが数時間は覚悟したほうがよいでしょう。保存場所はどこでもいいです。

（多分こんな感じのページ）
![TYMPxz8AtR29ijQ1620295241_1620295469.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274196/2107ec72-85ce-12ac-2677-337fa79d9145.png)


### 2. バッチファイルを実行する

中に`install-tl-windows.bat`というファイルがあるはずなのでこれを実行すると、GUIインストーラが起動するはずです。

（最初の画面だけキャプチャしていなかったので[こちら](https://texwiki.texjp.org/?TeX%20Live%2FWindows)から拝借）
![texliveinstallergui.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274196/af0f52c1-76a0-71b7-0b7f-481b2a640015.png)

インストール先などに変更があれば編集し、なければそのまま「インストール」を押しましょう。後はコーヒーでも飲みながら待っていれば、1時間もしないうちに完了するはずです。

![E0mpKuyVkAQ_6rt.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274196/a508ab55-ffa7-7c04-182e-b135bbd53ff1.png)
![E0m2WkrUYAIceR_.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274196/a575bb75-f9b0-93f4-65d2-1147129aa5c8.png)

上の画面が表示されれば上出来。"TeXWorks"という執筆ソフトが入っているはずですから、起動できるか確認しましょう。

![E0m6TrHVUAECU0P.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274196/ba370982-6776-4912-82c9-c8b4e26b3d4e.jpeg)

### 注意点

インストール途中で動作が停止したように見えるかもしれませんが、時間がかかっているだけなので気長に待ちましょう。終わったと思い込んで「中止」を押したが最後、めでたくやり直しと相成ります（1敗）。

## Mac
そのうち書きます。それまでは上のリンク参照。

# 何か書いてみる
ここまでの作業により、手元環境でp$\LaTeX$が使えるようになったと思います。以降はCUI環境（具体的にはBash）で操作することを想定して説明しますが、その辺りはよしなに読み替えていただけると幸いです。

適当にエディタを開いて、

```tex:test.tex
\documentclass[uplatex]{jsarticle}

\title{\LaTeX テスト}
\author{名前}

\begin{document}
    \maketitle

    この文章は \LaTeX で書かれています。

\end{document}

```

と書いてみましょう。最初は意味が解らなくても一字一句写経してみてください（「名前」の部分ははお好きに）。
あとはこれをコンパイルしていきます。ちなみにup$\LaTeX$はp$\LaTeX$のUnicode対応版です。

```bash
$ uplatex test.tex
# なんかいろいろ表示される
# .........
# ......
# ...
$ dvipdfmx test.dvi
# またなんかいろいろ表示される
# .........
# ......
# ...
$ 
```

おそらく作業中のディレクトリ内にはよくわからん拡張子のファイルがたくさん生成されており、その中に`test.pdf`があるはずです。`evince`でも別の方法でもなんでもいいので、このPDFファイルを開いてみましょう。
![Screenshot at 2021-04-30 01-21-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274196/cd783451-d1f9-47d9-a4c7-3e4c3c069d63.png)

こんな感じの文章が生成されていれば成功です。
もしできなければコンパイルエラーをよく読み、それにしたがって修正しましょう。コンパイルエラーは「何が間違っているのか」を教えてくれる重要な文章ですから、怖がったり面倒くさがったりして避けずに注意深く目を通すべきです。
それでもわからなければ、今一度以下のことを確認してみてください。

- $\TeX$Liveのインストールは上手くいったか
- `test.tex`の中身はタイプミスしていないか

それでもダメなら、大人しくググるか近くの詳しい人に聞いてみましょう。

# 解説っぽい何か

## \documentclass

文章の種類を指定する構文で、$\LaTeX$の一行目に記述する必要があります。

```tex
\documentclass[オプション]{文章クラス}
```

他にも`jarticle`とか`jreport`とか`jsbook`とかあるけど、とりあえず`jsarticle`で事足りるでしょう。

## プリアンプル

`\documentclass`と`begin{document}`の間に記述するものを **プリアンプル** といいます。別に覚える必要はないですが、他に指す言葉もないのでこう呼んでおきましょう。
プリアンプルに記述するものは大体以下のような具合です。

### パッケージ

プレーンな$\LaTeX$の構文や機能、記号等はそう多くはありません（要出典）。当然ながら自分で定義して追加することも可能ではありますが、大抵の場合は既に存在する**パッケージ**を導入すると便利です。パッケージを利用するにはプリアンプルに

```tex
\usepackage[オプション]{使いたいパッケージ}
```

と書きます。
具体的にどんなパッケージがあるのかはググれば幾らでも出てきますが、AMS- $\LaTeX$ と呼ばれる数学用パッケージ群（`amsmath`,`amssymb`,`amsfonts`等）は鉄板なのであって困らないでしょう。例えば`amsmath`を使用する場合は、

```tex
\usepackage{amsmath}
```

とすれば大丈夫です。

### レイアウト

ページのレイアウトを指定する際もプリアンプルにコマンドを列挙します。
例えば数式だけインデントを20ポイントにしたい場合であれば（そんな機会があるかは別として）以下のように書きます。

```tex
\setlength{\mathindet}{20pt}
```

### その他

例えば、次のようにタイトルに記載する内容を記述します。

```tex
\title{題名}
\author{著者}
\date{日付} % 入れなかった場合は現在の日付が入る
```

後は`\begin{document}`以下に`\maketitle`を記述すればその場所にタイトルが挿入されます。
実はこれらの指定は`\maketitle`前であればよいので、別に本文に書いても問題はありません。しかしまぁプリアンプルに挿入するのが一般的であるとは思われます。

## 本文

本文は`\begin{document}`と`\end{document}`の間に記述します。`document`に限らず、`\begin{hoge}...\end{hoge}`といったように範囲を指定するコマンドは少なくありません（いわゆるスコープのようなものですね）。
ここで使うコマンドを列挙してはキリがありませんから全ては書きませんが、最低限必要なものだけ幾つか並べておきます。

### 文章構造

|コマンド|説明|
|-------|---|
|\part|部|
|\section|節|
|\subsection|小節|
|\subsubsection|小々節|

`jsarticle`では使えませんが、章分けを行う`\chapter`というのもあります。
`\part`は論文等の長い文章で使うのがよく、普段のレポートであれば`\section`レベルでよいでしょう。
例えば、

```tex
\section{節の名前}
```

とすれば番号つきで節タイトルが挿入されます。
番号が必要ないのであれば`\section*{hoge}`のようにアスタリスク (`*`) を挿入することで `hoge` のみが表示されます。


### 数式

おそらくあなたが$\LaTeX$を使おうと思い至った一番の理由でしょう。
まずインライン（独立しておらず文章中に埋め込まれた）数式を使うには、その部分を`$`などで囲みます。

```tex
ここは普通の文章ですが、$こうして囲まれた部分は数式になります$。\\
\[ここも\]、\(ここも\)、\begin{math}ここも数式です\end{math}。
```

お好みの方法を使ってください。以下では筆者の趣味により`$`を使用します。
インライン数式では分数や極限などが$\lim_{x \to 0}$や$\sum_{n = 0}^\infty$のように潰れて表示されるのですが、最初に`\displaystyle`を挿入することで$\displaystyle \lim_{x \to 0}$、$\displaystyle \sum_{n = 0}^\infty$となります（実際の$\LaTeX$ではもうちょっと綺麗に出力されるはずです）。

### 2023/12/06 追記
ただし `\displaystyle` により大きな記号を表示すると、当然ながら一行の高さにバラツキが生じますし、体裁としてまとまりがなくなります。使用はどうしても通常のインライン表示では見にくいような場合のみにしましょう。（追記終わり）

そうそう、言い忘れていましたが、$\LaTeX$ではテキスト上で改行しても出力文章には反映されません。バックスラッシュ（環境によっては円記号）を二つ並べて`\\`とすることで改行を指定できます。ただし一行以上の空白を開けると段落分けと解釈され、自動的に改行される上に行頭の段落下げも行われます。
そもそも本来文章中で理由なく改行するのはルール違反です。ネット上のテキストならまだしも、レポートではむやみに入れない方がベターかと思われます。

独立して数式を入れたい場合は`equation`と用います。

```tex
\begin{equation}
    e^{i \theta} = \cos \theta + i \sin \theta
\end{equation}
```

とすれば次のような等式が生成されます。本来は式番号が通しで付くのですが、Qiitaの環境ではつかないようです。式番号を省略する際は`equation*`を使います。

```math
\begin{equation}
    e^{i \theta} = \cos \theta + i \sin \theta
\end{equation}
```

また二行以上の等式を等号揃えで表示したいこともあるでしょう。そのような場合は`equation`では上手くいかず、代わりに`eqnarray`や`align`を使用する必要があります。

```tex
\begin{align}
    ax^2 + bx + c &= 0
    x &= \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}
\end{align}
```

揃えたい等号などの前に`&`を入れます。`eqnarray`の場合は`&=&`としましょう。やはり同様に、`align*`とすることで式番号を省略できます。

```math
\begin{align}
    ax^2 + bx + c &= 0 \\
    x &= \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}
\end{align}
```

その他、基本的なものを幾つか列挙しておきます。詳しくは調べてみてください。

```tex
\begin{equation}
    %添字
    f_n \\
    a_{ij} \\
    %累乗
    a^{-2x} \\
    e^x \\
    %分数
    \frac {ab}{b} \\
    \frac pq \\
    %極限
    \lim_{x \to \infty} \\
    x \to 0 \\
    %積分
    \int_{a}^{b} f(x) \mathrm{d}x \\
    %ベクトル
    \vec{v} \\
    %三角関数とか
    \sin x \\
    \cos x \\
    \log x\ (x > 0)
\end{equation}
```

```math
\begin{equation}
    %添字
    f_n \\
    a_{ij} \\
    %累乗
    a^{-2x} \\
    e^x \\
    %分数
    \frac {ab}{b} \\
    \frac pq \\
    %極限
    \lim_{x \to \infty} \\
    x \to 0 \\
    %積分
    \int_{a}^{b} f(x) \mathrm{d}x \\
    %ベクトル
    \vec{v} \\
    %三角関数とか
    \sin x \\
    \cos x \\
    \log x\ (x > 0)
\end{equation}
```

# 解答を書いてみよう

今回は次のような問題について考えてみましょう。

## 問題

実数の連続性により，以下の極限が収束することを示せ．

```math
\lim_{n \to \infty}\left(1 + \frac 1n \right)^n
```


ネイピア数の定義の一つです。有名な問題ですから解答は自分で考えても調べてもいいのですが、どう $\LaTeX$に落とし込むかを自分で考えてみましょう。
あぁ、あと一つ。別に絶対的決まりというほどのものでもありませんが、句読点はそれぞれ全角カンマ(，)とピリオド(．)を使うよう心がけましょう。

## 解答例

これはあくまで例ですので、あなたの好みと専門分野の作法にあった方法で書きましょう。

```latex:example.tex
\documentclass[uplatex,a4paper]{jsarticle}
\usepackage{amsmath,amsfonts,amssymb,amsthm}


\begin{document}
    \section*{問題}
        実数の連続性により，以下の極限が収束することを示せ．
        \begin{equation*}
            \lim_{n \to \infty} \left(1 + \frac 1n \right)^n
        \end{equation*}

    \section*{解答}
        実数の連続性により，$\displaystyle a_n = \left(1 + \frac 1n \right)^n$とおいたときに$\{a_n\}$が上に有界な単調増加数列であることを示せばよい．

        \begin{align*}
            a_n &= \sum_{k = 0}^n \binom{n}{k}\left(\frac 1n \right)^k
                = 1 + n \cdot \frac 1n + \frac{n(n-1)}{2!} \cdot \frac 1{n^2} + \cdots
                    + \frac{n(n-1) \cdots 1}{n!} \cdot \frac 1{n^n} \\
                &= 1 + 1 + \frac 1{2!}\left(1 - \frac 1n \right) + \cdots
                    + \frac 1{n!}\left(1 - \frac 1n \right)\left(1 - \frac 2n \right)
                        \cdots \left(1 - \frac {n-1}n\right)\\
                &\le 1 + 1 + \frac 1{2!}\left(1 - \frac 1{n+1} \right) + \cdots
                    + \frac 1{n!}\left(1 - \frac 1{n+1} \right)\left(1 - \frac 2{n+1} \right)
                        \cdots \left(1 - \frac{n-1}{n+1} \right)\\
                &\ + \frac 1{(n+1)!}\left(1 - \frac 1{n+1} \right)\left(1 - \frac 2{n+1} \right)
                        \cdots \left(1 - \frac{n-1}{n+1} \right)\left(1 - \frac{n}{n+1} \right)\\
                &= a_{n+1}
        \end{align*}

        以上より，どんな$n$に対しても$a_n \le a_{n+1}$を満たすから$\{a_n\}$は単調増加数列である．また$\displaystyle 1 - \frac 1n \le 1$より

        \begin{align*}
            a_n &\le 1 + 1 + \frac 1{2!} + \frac 1{3!} + \cdots + \frac 1{n!}\\
                &\le 1 + \sum_{k = 0}^{n-1}\left( \frac 12 \right)^k = 1 + \frac{1-1/2^n}{1-1/2} \le 3
        \end{align*}

        よって$\{a_n\}$は上に有界であるから，$\{a_n\}$は収束する．\fbox{終}
\end{document}
```

# おわりに
誤字脱字、もしくは誤謬等を発見された方は編集リクエスト経由でご一報ください。

#参考文献

- TeX Wiki : https://texwiki.texjp.org/