search
LoginSignup
8
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

Life is Tech ! Tokai Advent Calendar 2020 Day 2

posted at

updated at

LaTeXで論文を執筆するあなたへ届け

Hello, World! あーみーです.

みなさん$\LaTeX$を使って文書作成していますか?
専門分野にもよりますが,情報系の分野なら論文執筆は$\LaTeX$を使用することが多いと思います.

しかし,研究室で毎年配属される学部生に$\LaTeX$での文書作成を教えることはとてもコストがかかります.
そこで,この記事では,$\LaTeX$を使用した文書作成を,研究室に配属されたばかりの学部生が始められることを目的として,基本の必要な知識をまとめました.
また,文書作成時に役立つ小技もまとめてあります.

文書作成を始める

環境構築

この記事では,誰もが$\LaTeX$での文書作成を一旦試すことができるようにと,私も1から環境を構築するため,このDockerコンテナを使用して$\LaTeX$環境を構築します.Dockerの使い方自体は1日目の記事など,様々な記事で説明がされているので割愛します.環境構築は自分のOSに合うように読み替えてもらえればと思います.

また,この環境構築が面倒で,今すぐ$\LaTeX$で文書作成をしたいという人は,ブラウザ上で書けるOverleafや,Cloud LaTeXを使用するのがいいでしょう.私も普段の報告書や講義のレポートはCloud LaTeXを使います.

1. TeX Liveのインストール

まずはTeX Liveのインストールをするため,先のリンクからダウンロードをしていきます.macOSの場合はTeX LiveをベースにしたmacOS専用ディストリビューションのMacTeXを,それ以外ならTeX Liveをインストールすればいいと思います.それぞれのページを開きましょう.
ページ内のインストールセクションから自分のOSに合うようにイメージをダウンロードします.

私の仮想環境の場合は,Dockerfileを見るとubuntu:20.04と書かれているので,それに合うように以下のGIFのようにダウンロードします.

1606830833.gif

次にダウンロードしてきたイメージをインストールします.Ubuntuの場合は,以下の要領で.debをインストールします.macOSの場合は,.pkgなので,ダブルクリックでインストールできるはずです.インストールには少し時間がかかります.

Ubuntuの場合
$ cd Downloads/ # イメージのあるディレクトリへ移動
$ apt-get update # アップデートしておく
$ apt install -y ./[ダウンロードしたイメージ].deb

インストールが完了したら,ターミナルで以下を実行して,正しくインストールが完了しているか確認してください.

$ platex --version

2. Visual Studio Codeのインストール

エディタは,Visual Studio Codeをこの記事では採用します.このエディタがあれば,これからも大体のことは困らないと思います.先のリンクからダウンロードをして,1.と同様にインストールをしてください.

文書作成

ここからは実際にVisual Studio Codeでテキストを書いて,コンパイルし,PDFの文書を作成する手順を述べていきます.

1. ファイルの作成

今回は,以下のようなディレクトリ構成でファイルを作成します.

Desktop/
└── report/
        └── contents.tex

contents.texの中身は一旦,以下をコピペしておきましょう.

contents.tex
\documentclass{jarticle}

% ===== プリアンブル内 ===== %

\title{LaTeXでの文書作成入門}
\author{おなまえたろう}
\date{\today}



\begin{document}
% ===== document内 ===== %

\maketitle

\section{章のタイトル}
この文書はサンプルです.

\subsection{節のタイトル}
この文書はサンプルです.

\subsubsection{項のタイトル}
この文書はサンプルです.

\end{document}

プリアンブル内と書いた\documentclass{jarticle} 〜 \begin{document}までは設定などを記述していく部分で,document内と書いた\begin{document} 〜 \end{document}までは文書の内容を記述していく部分です.

2.コンパイル

以下のコマンドを実行して,1.で作ったファイルをPDFの文書にコンパイルします.Visual Studio Codeからだと,ツールバーからターミナル>新しいターミナルでターミナルを開くことができるので楽です.

$ platex contents.tex
$ dvipdfmx contents.dvi

report/内に以下のようなcontents.pdfが作成されていれば成功です.これで今日から$\LaTeX$で文書作成ができます.

CheatSheatのコピー.png

Option1. Makefileでコンパイルする

2.のコンパイルを毎回実行するのは面倒ですし,参考文献のためBibtexなど入れた日にはそれどころではありません(platex>pbibtex>platex>platex>dvipdfmx).多くの場合,1発でPDFの文書にコンパイルしてくれるMakefileを用意しておくのが主流です.(Visual Studio Codeでは,$\LaTeX$を自動でコンパイルする設定もでき,Qiitaにも多くの記事がありますが,私はどの設定もスムーズに成功したことがないので,初めはMakefileでコンパイルすることをお勧めします.)

先程のディレクトリにMakefileを作ります.

Desktop/
└── report/
        ├── contents.tex
        └── Makefile

Makefileの中身は以下をコピペしておきましょう.(参考サイト)

※ 今後のことを考えて,Bibtex対応のMakefileにしました

Makefile
TARGET := contents.pdf
CNT := 2

.PHONY: all clean distclean
all: $(TARGET)

clean:
    $(RM) *.aux *.log *.dvi *.bbl *.blg

distclean: clean
    $(RM) $(TARGET)

%.pdf: %.dvi
    dvipdfmx $<

%.dvi: %.tex
    for i in `seq 1 $(CNT)`; do platex -interaction=batchmode $<; done
    -pbibtex $*
    for i in `seq 1 $(CNT)`; do platex -interaction=batchmode $<; done

ターミナルから以下のコマンドを叩くだけで,コンパイルができるようになりました.

$ make

注意1
makeコマンドがインストールされていない場合,Ubuntuは以下のコマンドを実行して,macOSはここを参考にしてインストールをしてください.

Ubuntuの場合
$ apt install -y build-essential

注意2
contents.pdfがすでに存在していると,実行できないので,以下の順番で実行しましょう.

$ make distclean
$ make
$ make clean

cleanはPDF文書作成時に生成される中間ファイルを消すコマンドが,distcleanはPDF文書を消すコマンドが実行されています.

Option2. Makefileのコンパイルをショートカットキーで実行

Visual Studio Codeのターミナルからいちいちmakeを(しかも3つも)実行するのはまだ不便です.そこで,Visual Studio Codeの拡張機能を使って,makeをショートカットキーで実行できるようにします.

  1. 拡張機能からterminal-command-keysをインストールする
  2. Visual Studio Code上でCtrl-K, Ctrl-Sと続けて押し,キーボードショートカットを開く
  3. ウィンドウの右上に以下のアイコンがあるので,一番のファイルアイコンを押し,keybindings.jsonを開く

スクリーンショット 2020-11-30 22.15.50.png
4. keybindings.jsonに以下のプログラムをコピペする

[
    {
        "key": "ctrl+r", // Makefileを実行するときの任意のキーバインド
        "command": "terminalCommandKeys.run",
        "args": {
            "cmd": "cd `dirname \"${file}\"`;make distclean; make; make clean"
        }
    }
]

これで,ctrl+rのショートカットキーだけで,make distcleanmakemake cleanを一度に実行できるようになりました.

最後に,もし各々の研究室などの所属する機関で,スタイルファイルがあるなら,それを配置しましょう.
これで環境構築は完璧です.$\LaTeX$での文書作成をやっていきましょう!

文書作成時の参考サイト

基本的な$\LaTeX$の記法は以下のサイトなどで勉強をしていってください.だいたいのものは解決できます.

小技集

ここからは$\LaTeX$ができる人に向けた,文書作成時に役立つ小技を書いていきます.

複数行のコメントアウト

$\LaTeX$では%で,それから行末までをコメントアウトします.
複数行コメントアウトは,commentというパッケージで可能になります.

% ===== プリアンブル内 ===== %
\usepackage{comment}

% ===== document内 ===== %
\begin{comment}
この複数行は
コメントアウト
されています.
\end{commnet}

1文字分空ける

段落の始め以外の文章中にスペースを空けたくなった場合,em単位で指定すると文字と同じスペースになるので,\hspace{}などで指定すると1文字分空けることができます.

\hspace{1em}今日はいい天気ですね.

文章中の参照番号を改行させない

「図1に示す.」などの「図」と「1」の間で改行させないためには,以下のように~(チルダ)で「改行されない空白」を入れることで回避できます.

結果を図~\ref{fig:hoge}に示す.

参照にハイパーリンクをつける

以下を記述しておくと,図表の参照にハイパーリンクが付き,クリックで相互に飛ぶことができます.

% ===== プリアンブル内 ===== %
\usepackage[dvipdfmx]{hyperref}

また,URLを載せたい場合は,以下を記述します.

% ===== プリアンブル内 ===== %
\usepackage{url}
\sloppy

% ===== document内 ===== %
\url{https://www.google.com/}

ここで\sloppyを一緒に記述しておくと,2カラムなどにした際に,URLの文字列が長く途中でいい感じにハイパーリンク付きURLが改行されない問題を解決してくれます.

目次がPDFリーダー内で文字化けする現象の改善する

hyperrefでハイパーリンクが付いた文書をPDFリーダーで閲覧する際に,以下の画像のように目次が文字化けするときがあります.

以下を記述しておくと,PDFリーダー内の目次の文字化けを改善できます.

% ===== プリアンブル内 ===== %
\usepackage{pxjahyper}

表を簡単に作りたい

セルの内容をスクラッチするのは大変なので,私はよくTables Generatorや,TableConvert Onlineを使用して,CSVなどから$\LaTeX$用のコードをコンバートしています.

図表を文章の直後に入れたい

図表の挿入位置はhtbpで指定しますが,hの指定でもスペースによっては,そこに挿入できないときがあります.hereパッケージにより,強制的に文章の直後に挿入できます.

% ===== プリアンブル内 ===== %
\usepackage[dvipdfmx]{graphicx} % figureのため必要
\usepackage{here}

% ===== document内 ===== %
本プロジェクトのロゴ画像を図~\ref{fig:hoge}に示す.

\begin{figure}[H]
    \centering
    \includegraphics[width=0.8\linewidth]{figures/logo.pdf}
    \caption{本プロジェクトのロゴ画像}
    \label{fig:hoge}
\end{figure}

ページ数の決まっていない論文などはこちらの指定のほうが前から順番に読んでいけるので良いと思います.

表が長すぎてセンタリングされない

横に長過ぎる表は,はみ出るしセンタリングされないので,\scalebox{}{}を使用して,表のサイズを調整すると,キレイに示せます.

% ===== プリアンブル内 ===== %
\usepackage[dvipdfmx]{graphicx}

% ===== document内 ===== %
弊社の10年分の売上高を表~\ref{tab:hoge}に示す.

\begin{table}[htbp]
    \centering
    \caption{弊社の10年分の売上高}
    \label{tab:hoge}
    \scalebox{0.8}{
        \begin{tabular}{c||r|r|r|r|r|r|r|r|r|r|r}
        \hline& 2010    & 2011    & 2012    & 2013    & 2014    & 2015    & 2016    & 2017    & 2018    & 2019    & 2020    \\ \hline
        売上高(円) & 110,000 & 110,000 & 120,000 & 130,000 & 150,000 & 180,000 & 230,000 & 310,000 & 440,000 & 650,000 & 990,000 \\ \hline
        \end{tabular}
    }
\end{table}

数式の参照に括弧を自動でつける

数式参照時にmathtoolsというパッケージをインポートして\eqref{}を使用すると自動で括弧をつけてくれます.

% ===== プリアンブル内 ===== %
\usepackage{mathtools}

% ===== document内 ===== %
分散$s^2$は式~\eqref{eq:hoge}で算出される.

\begin{equation}
    \label{eq:hoge}
    s^2 = \frac{1}{n} \sum_{i=1}^{n} (x_i - \overline{x})^2
\end{equation}

数式をコンパイルせずに試す

数式をコンパイルせずに試すには,TeXclipというサービスを使うと便利です.またこのサービスでは,記述した数式を画像ファイルとしてダウンロードもできるので,色々なところに活用できます.

参考文献の参照番号が連番ならまとめる

参考文献を3件以上参照するときに[1,2,3]となるのはあまりスマートじゃないので,参照番号が連番なら[1-3]とするには以下でできます.

% ===== プリアンブル内 ===== %
\usepackage{cite}

% ===== document内 ===== %
数多くの研究がなされている\cite{thesis1, thesis2, thesis3}

BibTeXを自分で書きたくない

参考文献はBibTeXで本文中から参照すると思いますが,論文はGoogle Scholarで,書籍はGoogle Booksで検索しBibTeXをコピペして集めるのが楽かなと思っています.

  • Google Scholar

    1. BibTeX情報が欲しい論文を検索
    2. 1の検索結果の下にある"マークをクリック
    3. BibTeXボタンをクリック
  • Google Books

    1. BibTeX情報が欲しい書籍を検索
    2. 1の検索結果から対象の書籍を探してクリック
    3. 左にある赤色のEブックを表示ボタンをクリック
    4. ページ最下部にあるBibTeXボタンをクリック

また,Webサイトを参考文献としたい場合もたまにありますが,その時はBibTeX entry from URLというChrome拡張機能などを使用すると便利です.

おわりに

この記事では,$\LaTeX$を使用した文書作成を,研究室に配属されたばかりの学部生が始められることを目的として,基本の必要な知識をまとめました.また,文書作成時に役立つ小技もまとめました.

$\LaTeX$で文書作成するなら,やはり『LaTeX2ε美文書作成入門』に一度目を通しておくことをお勧めします.日常的に$\LaTeX$で文書作成する人は,改訂第8版が2020年11月に発売したばかりなので,手元に1冊あるととても重宝すると思います.
自分の中でやりたい書き方があり,いい方法が見つからない場合は,スタイルファイルを自分で書いたほうが速いかもしれませんね.

それでは,Happy Hacking! :smile:

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
What you can do with signing up
8
Help us understand the problem. What are the problem?