TeXのすゝめ〜Gitで綺麗な文書を管理しよう

# はじめに
この記事は[SFC Advent Calendar 2019](https://qiita.com/advent-calendar/2019/sfc)の1日目の記事です! SFCのみなさんが興味を持っている技術を知りたいなという思いでアドベントカレンダーを立てさせてもらいましたが，11月30日現在25名ちょうどの方が参加を予定してくれているということで嬉しい限りです．

今回はGitで文書の管理ができるからTeXは便利だよという話を書きます．
愛用者は沢山いると思いますが，SFCを見渡す限りTeXを使っている人（プログラミングできる人の中でも）がそんなにいないように思います．とても便利なので布教させて下さい！

### 要約
- TeXっていうのがあるよ
- 色々メリットあるけど，Gitで管理できるのいいよ
- TeXの始め方紹介するよ

# TeXとは何か
ご存じの方も多いでしょうが，念のため説明すると**組版ソフト**です．AdobeのInDesignも組版ソフトですね．要は印刷物のレイアウト，内容を決めて印刷データをつくる工程のことを組版といいます．たまにMS Wordを使って"おしゃれな"印刷物を作っている場合がありますが，バージョンや環境によって出力されるものが違うのでやめた方がいいですね．ワープロに組版の機能を求めるのは間違い．その点，組版システムだと「どのように印刷するか」ということを指定するため出力データに環境差が出ません．

組版の説明をしてしまいましたが，TeXは**マークアップ言語を使ってレイアウト等を指定しDVIファイル(どのように印刷するか書いているファイル)を出力する処理系及び言語**ということになります．通常はDVIはdvipdfmxなどを使ってPDFに変換します．IDEを使えば自動的にPDFまでの変換をやってくれたり，参考文献リストの生成をやってくれたりします．通常はそういうのを使うとよろしいかと思います．

ちなみに，TeXについて調べると必ずLaTeXというキーワードが出てくると思いますが，TeXとLaTeXは似て非なるものです．そもそもTeXという言語は基本的な描画コマンドしか用意されていないのでかなり不便です，そこで最適限のマクロが用意されたLaTeXを使うのが一般的です．（以下，LaTeXの説明ですが便宜上TeXと書きます．）

# 何がいいの？
**印刷用の最終データを作れる**
どの環境でも同じものが表示できるというのは前項で述べたとおりです．

**スタイルとコンテンツを分けて書ける**
HTMLとCSSの関係に近いですが，例えば学会毎のスタイルはそれぞれ配布されているのでそれを使って書けるのはもちろんのこと，自分のレポート等にあったスタイルを用途毎に自分で作っておくこともできます．また論文など，文書作成ではレイアウトが決まっていることも多いと思います．そういったときに，レイアウトを用意するところから始めるのではなく，レイアウトはスタイルの読み込みですませ，あとは執筆に集中できるのは大きなメリットでしょう．

**マクロを追加できる**
よく使う一連のコマンドの再利用が簡単にできます．

**参照関係を設定できる**
「図1」のような図のキャプションと文章中の番号をそろえたいなどの場合，labelコマンドとrefコマンドの使用で直接番号を打ち込まずとも適切な数字を自動的に入れてくれます．図番号が後から変わる心配がありません．これは参考文献等でも同じことです．

**コマンドを覚えたら変なアプリを使うより早い**
コマンドさえ覚えてしまえばGUIでポチポチメニューを開いたりしながら作るよりもキーボードだけで書ける分，はやく，楽にできるというのはプログラマならご理解いただけるかと．

**スタイルもコンテンツもテキストファイルなのでGit管理できる**
このような，スタイルとコンテンツのファイルはそれぞれテキストファイルで作成します．ですからGitで，レイアウトを含む文書作成・管理が可能になります．


ここで述べた内容は多くの組版ソフトに共通しているもので，TeXでしかできないものではありません．むしろコードで書かなければならない分とっつきにくいというデメリットはあるでしょう．しかし，Gitで管理できるというメリットのためだけにTeXを使う意義はあると思います．これで提出の直前にデータが飛ぶことも減るというものです．また，複数人での執筆ではコードレビュー(?)やコメントをつけながらプログラムを書くかのように文書を書けるのはとても便利です．


# TeXの始め方
筆者は授業で提出するあらゆるレポート類，論文など対外的に提出する文書は基本的にTeXで書いています．コマンドを覚えるのが苦手な方はすこし敬遠されるかも知れませんが，日頃から使えばかなり使えるようになります．Texpadという専用エディタを使っているので純正のアプリは私には不要です．ですので最低限必要な処理系だけ入るようにBasicTeXというサブセットをインストールしています．純正のアプリが古くさくて使いたくない方はBasicTeXとお好きなエディタにするのがお勧めです．

```Bash
$ brew install basictex
$ sudo tlmgr update --self --all
$ sudo tlmgr paper a4
$ sudo tlmgr install collection-langjapanese
```
参考：[BasicTeX - TeX Wiki](https://texwiki.texjp.org/?BasicTeX)

具体的な使い方はこちらに詳しいですから参照して下さい．
[TeX Wiki](https://texwiki.texjp.org)

### Texpad
有料のTeXエディタですが，補完が充実しているので初心者にこそ使っていただきたいです．詳細は[Texpad](https://www.texpad.com)のページを見て下さい．
<img width="1152" alt="スクリーンショット 2019-11-30 22.03.34.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/327967/ec73e873-a027-429b-fc6e-d5e9cb563696.png">

### Gitの利用
Gitの利用に関しては，筆者はGitHubにPaperリポジトリ（論文用リポジトリ）を用意し，その中に全ての文書を入れています．使い回したいスタイルについてはSubmoduleを使うなどすれば便利かと思います．

### 卒論等に使用するには
最終更新が2012年ですので今もSFCの卒論・修論のスタイルに準拠しているかどうか確認できていませんが，こちらにymrl氏がTeXのテンプレートを公開されています．

https://github.com/ymrl/thesis-template

# おわりに

印刷物のデザインを共同編集したり，履歴を残して編集するのは難しいです．しかし，TeXを使えば全てテキストであることから簡単にこれらの履歴をGit等を用いて残せます．

TeXを始めるにあたって、styleから書く必要は無く，なにも設定しなければデフォルトのものになります．まずは文書構造を定義する.texファイルを書くところからTeXでのレポート執筆ライフを始めてみてはいかが？

#付録
レポートでよく使ってるテンプレートです．

```TeX

\documentclass[twocolumn,9pt]{jarticle}
\usepackage[dvipdfmx]{graphicx}
\usepackage{url}
\usepackage{layout}
\usepackage{listings}

\title{\vspace{-4cm} レポートタイトル}
\author{n年 名前(00000000)\thanks{大学 学部}}
\date{}

\begin{document}
\maketitle

\section{セクション名}
テキスト

\end{document]
```