みなさん,レポートは何で書いていますか?
手書きで書いている人,wordで書いている人,いろいろいると思いますが,特にwordで書いている人に是非おすすめしたいものがあります。
それがTeXです。
TeXとは
スタンフォード大学のすごい教授が作った組版処理システムであり,コマンドを書いてレイアウトを決めるマークアップ式のもので,特に数式に強いのが特徴です。
そもそも理系の人が最高の組版を求めて作ったものなのでレポートには最適と言えます。
x = \frac{-b\pm \sqrt{b^2 - 4ac}}{2a}
例えば,こんなにきれいな数式がwordよりも数千倍楽に書くことができます。便利ですね。
LaTeXの種類について
LaTeXには様々な種類がありますがここではLuaLaTeXを使う前提で進めていきます。LuaLaTeXは日本語にも対応していて,ソースコードから直接pdfを出力するので一回のコマンドでコンパイルを済ませることができます。
これまでplatex等を使っていた人も良ければLuaLaTeXを使ってみてはいかがでしょうか。
環境構築
主に必要なのは2つです。
- TeX Live(TeXのためのコンパイラなどのツール一式)
- テキストエディタ(VSCodeがおすすめですがお好きなエディタを)
TeX Live
- Windows
ここにアクセスして指示に従ってインストールしてください。 - Mac
まずHomebrewというパッケージ管理ツールをダウンロードします(ダウンロード済みの方は飛ばしてください)。
Homebrew
まずここにアクセスします。
するとこのようなサイトに飛びます。(少し日本語が怪しいですが安全なサイトです)
そしてインストールと書かれているところの下のコマンドをコピーしてターミナル上で実行してください。(ターミナルはlaunchpadから検索すると出てきます)
実行するとパスワードを要求されるので各々のパスワードを入力してEnterを押すと自動でダウンロードからインストールされます。
homebrewの使い方
使い方は簡単です。
何かをインストールしたいときは次のコマンドを実行します。
brew install インストールしたいソフトの名前
最低限この使い方を覚えれば大丈夫です。
TeX Liveをインストールするには以下のコマンドを入力します。
brew install --cask mactex
guiを使わない人は以下のコマンドでも大丈夫です。
brew install mactex-no-gui --cask
インストールには結構な時間がかかるので気長に待ちましょう。
インストールが終わればTeXのコードがコンパイルできるようになります。
エディタ,コンパイル設定
ここではVSCodeを使って解説していきます。それ以外のエディタを使用する人はそのエディタに沿った設定を各自お願いします。
VSCodeはここからダウンロードできます。
VSCodeには拡張機能というものがあり,様々な機能を追加できます。
ここではTeX用の拡張機能である,LaTeX Workshopを使っていきます。
拡張機能は左の四角が4つ並んでいるところをクリックしてLaTeX Workshopと検索すると出てきます。それをダウンロードしたら第一段階終了です。
settings.jsonの設定
VSCodeには様々な設定を記述するsetting.jsonというものがあります。ここにLaTeX用の設定を記述することで保存時にコンパイルしてpdfファイルに出力といったことが可能になります。
まず左下の歯車マーク(またはCtrl + , or command + ,)を押し,設定を開きます。そして画面右上のこのマークを押します。
settings.jsonが開くので次のコードをコピペしてください。
{
"latex-workshop.latex.recipes": [
{
"name": "lualatex",
"tools": ["lualatex"]
}
],
"latex-workshop.latex.tools": [
{
"name": "lualatex",
"command": "lualatex",
"args": [
"--cmdx",
"-file-line-error",
"-synctex=1",
"-interaction=nonstopmode",
"-halt-on-error",
"%DOC%"
],
"env": {}
}
]
}
既に最上部と最下部の波括弧がある場合は新たに記述する必要はありません。
これでVSCodeでTeXを使う準備が整いました。
実際に使ってみる
適当なフォルダにこのコードをtemplate.texとして保存してください。
\documentclass[a4paper]{ltjsarticle}
\usepackage[margin=20mm,bottom=25mm]{geometry}
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{siunitx}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{url}
\usepackage{here}
\usepackage{multirow}
\usepackage{enumitem}
\usepackage{wrapfig}
\usepackage[nobreak]{cite}
\newcommand{\maru}[1]{\raisebox{.5pt}{\textcircled{\raisebox{-.9pt}{#1}}}}
\makeatletter
\newcommand{\figcap}[1]{\def\@captype{figure}\caption{#1}}
\newcommand{\tabcap}[1]{\def\@captype{table}\caption{#1}}
\makeatother
\usepackage{luatexja-fontspec}
\setmainfont[
Ligatures=TeX,
]{Times New Roman}
\setmainjfont[
YokoFeatures={JFM=prop},
CharacterWidth=Proportional,
Kerning=On,
]{IPAPMincho}
\renewcommand{\lstlistingname}{ソースコード}
\lstset{
basicstyle = \ttfamily,
columns = fixed,
basewidth = .5em,
numbers = left,
numberstyle = \small,
frame = tb,
% 色
commentstyle=\color{green!30!darkgray},
keywordstyle=\color{blue},
stringstyle=\color{violet!60!gray},
}
\begin{document}
\section{箇条書き} \begin{enumerate}[label=\maru{\arabic*}]
\item アイテム
\end{enumerate}
\section{数式}
\begin{equation}
F = ma
\end{equation}
\begin{equation}
x = \frac{-b\pm \sqrt{b^2 - 4ac}}{2a}
\end{equation}
\section{ソースコード}
\begin{lstlisting}[language=C++, caption=ほげ, label=lst:hoge]
// 挨拶は大事
void sayHello() {
puts("hello, world");
}
\end{lstlisting}
\begin{thebibliography}{99}
% \cite{hoge}で参照
\bibitem{book1} 著者 : 書名,出版社,2022,p.114-514
\bibitem{site1} タイトル,(最終閲覧日2022年5月15日),\url{http://example.net}
\end{thebibliography}
\end{document}
このようにtexでは\コマンド
という形でレポートを形作っていきます。
このコードを実際にコンパイルするとこのようなものが出力されます。
このようにTeXは自動的にページ番号や章番号を振ってくれたり段落の字下げも行います。
やはりなんと言っても数式が綺麗ですね。
表や図も同様に専用のコマンドがあるので是非調べて使ってみてください。
終わりに
TeXの良いところは数式の美しさや自動で様々なことをやってくれること,テキストファイルなので共有が簡単などとてもたくさんあります。筆者はGitHubのリポジトリに保管して管理しています。
みなさんもTeXを使用して良いTeXレポートライフを!
参考文献
VSCodeで最高のLaTeX環境を作る(https://qiita.com/rainbartown/items/d7718f12d71e688f3573)
VSCodeでLuaLaTexビルドの環境を整える(https://qiita.com/SuzuTomo2001/items/f5368084aa7351bb3f80)
お借りしたテンプレートコード (https://github.com/yamader/report)