レポート用LaTeX周りメモ
私が普段大学のレポートを書くために使っているあれこれをメモしておく。
レポートを書く手段について
理系学生なら、レポートはLaTeX一強なので、嫌でも使わざるをえない。
一応LaTeXを使う理由を述べておく。
LaTeXはスクリプト的なものを書いて、コンパイルしてPDFに変換する。
そのため
- キーボードで完結するので楽。
- 文を書くフェーズと、見た目を整えるフェーズを分離できる。
- 図表の番号を振るのが楽。
- 数式を書くといえばLaTeXみたいなとこある。
- Gitで管理できる。
また、LaTeX形式でスライドを作成できるBeamerなるものがある。
他のレポートを書く方法も紹介しておく
- MicrosoftWord, Googleドキュメント
- みなさんご存知のやつ。
Wordはまじで操作性悪かった記憶ある - 一応これでもLaTeXみたいに数式が書けるらしい。
- あと、wordファイル上でコメントのやりとりができるのも便利。
- 編集履歴の保存も全部入ってる。
- みなさんご存知のやつ。
- マークダウン
- VSCodeを使うなら、Markdown Preview Enhancedを使えば数式が使えるようになる。
- SATySFi
- LaTeXの可読性の低さやエラーの不親切さを改善するべく開発されているやつ。
- まだ、ユーザーが多くなくて敷居が高い。
- SATySFi Wiki 学習用資料
-
Typst
- SATySFi よりさらに新しいやつ
- コンパイルが爆速らしい
LaTeX周りの入門サイト・LaTeX全般について
Texに入門したい人は以下のサイトで始めるのがオススメ。
-
TeX Wiki
- Tex周り全般
-
LaTeXコマンド集
- 数式の書き方とか, 細々したコマンド類を知りたいときとか
-
LaTeXコマンド一覧
- 数式や文字装飾周りが1ページにまとまってる
- 物理のかぎしっぽ, TeXテンプレート
- コマンドテンプレート集
VSCodeでLaTeXが書きたい(環境周り)
-
ここの手順をする
- ここの手順ではpLaTeXとかいうのが使えるようになる。
- 他にもLuaLaTeXとか色々あるらしい。
ざっくりいうと
- VSCodeとTeX Liveを入れる
-
.latexmkrc
を書く - VSCodeにLaTeX Workshop入れる
- VSCodeの
settings.json
にもろもろ書く
環境構築したくない人向け
ブラウザ上でログインすればすぐにLaTeXが使えるようになるやつ。
- CloudLaTeX
-
Overleaf
- コメント機能あり。
- Overleaf で日本語を書く方法
Overleaf環境をローカルで
Docker DesktopでローカルにOverleaf環境を構築した時のメモ
Dockerが使えるなら、割と楽にOverleafがローカルで使えるらしい。
LaTeXのソースを分割する
レポートがでかくなってくると, ファイルの行数すごいしやってられなくなる.
意外と簡単にファイル分割できる.
ヘッダとか書かずに, ただ\input
で分割したソースを読み込むだけ.
章別に分けたり, 表を別のファイルにしたり.
\input hoge.tex
\input fuga.tex
数学記号・数式
amsmathの数式環境をよく使う。場合分けのある数式とかを書く場合に、便利。
数学記法全般について
論理式の否定: notは斜線
$\not{x}$
だと, 斜線が入るだけ, $\bar{x}$
と書く.
ソースコードを入れる
listingsを使う。
% \usepackage{listings, jlisting, color}
\lstinputlisting[caption=hogehoge, label=code:hoge, language=C]{./hoge.c}
% 直接書くなら
\begin{lstlisting}[caption=fugafuga, label=code:fuga, language=C]
main() {
return 0;
}
\end{lstlisting}
listingsだけだと、日本語コメントに対応していない。TeXLiveだと標準で、\usepackage{listings, jvlisting}
するだけで対応できる。
なんか、私の環境だとjvlistingが効かないので、jlistingを下記のリンクからダウンロードする。
本当はちゃんとした場所に配置すべきなんだけど、report.texと同じ場所にぶちこんでおけば読み込んでくれる。
また、複数の言語のソースコードを載せる際に、言語に応じてスタイルを変更したいときは\lstdefinestyle{hogehoge}{}
で個別にスタイルを定義できる。
クラス図を書く
- PlantUMLを使う
また、クラス図に出てくるAggregationとかCompositionとかは下の記事が参考になる。
表を入れる
\begin{table}[htbp]
\centering
\caption{hoge}
\label{tab:hoge}
\begin{tabular}{|llll|l|}
\hline
hoge & fuga & piyo & foo & bar \\
\hline
0 & 0 & 0 & 0 & 0 \\
\hline
\end{tabular}
\end{table}
表で斜め線を入れる
diagboxを使う
% \usepackage{diagbox}
\begin{table}[htbp]
\centering
\caption{hoge}
\label{tab:hoge}
\begin{tabular}{|llll|l|}
\hline
\diagbox{ho}{ge} & fuga & piyo & foo & bar \\
\hline
0 & 0 & 0 & 0 & 0 \\
\hline
\end{tabular}
\end{table}
カルノー図を入れる
図を入れる
%\usepackage[dvipdfmx]{graphicx}
\begin{figure}[htbp]
\centering
\includegraphics[width=12cm]{hoge.png}
\caption{hoge}
\label{fig:hoge}
\end{figure}
画像は、png形式かpdfで入れるのが無難。
また、tikzを使うことで、関数のグラフや状態遷移図を描くこともできる。
SVG画像も入れれるけどクソめんどくさい。
図を複数入れる
minipageを使う.
% \usepackage[subrefformat=parens]{subcaption}
\begin{figure}[htbp]
\begin{minipage}[t]{0.45\hsize}
\centering
\includegraphics[width=6cm]{hoge.png}
\subcaption{hoge}
\end{minipage}
\begin{minipage}[t]{0.45\hsize}
\centering
\includegraphics[width=6cm]{fuga.png}
\subcaption{fuga}
\end{minipage}
\begin{minipage}[t]{0.45\hsize}
\centering
\includegraphics[width=6cm]{pien}
\subcaption{pien}
\end{minipage}
\caption{hoge, fuga, pien}
\label{fig:hoge}
\end{figure}
データをグラフ化する
gnuplotを使う。CUIで操作するグラフ描画ソフト。データからグラフを出力するスクリプトを書いたり、グラフの曲線を多項式で近似したりできる。
gnuplotのスクリプトの例
set term pdfcairo enhanced size 4in, 3in
set output 'hoge-graph.pdf'
set xlabel '横軸 title'
set ylabel '縦軸 title'
set key left top box
plot [0:1] '1.data' using 1:2 title "hoge",\
'2.data' using 1:2 title "fuga",\
'3.data' using 1:2 title "piyo"
gnuplotが読み込むデータの例#
が行頭にある行はコメントで, 数値はスペース区切りで配置する
# コメント
0 1.0
1 2.1
2 3.5
3 5.5
latex内で図を描く
TikZを使えば、LaTeX内で直接図をスクリプトで描ける。
各種関数のグラフ、図形、状態遷移図とかのグラフが描ける。
3次元グラフも描ける。
ノードの数が増えてくると、位置の指定がだるくなる。
- PGF/TikZをオススメする記事
-
TikZのgraph記法とgraph drawing
- データ構造のgraphの書き方について
- 後半の、graph drawingはLuaTeXでしか動かない
-
BeamerのためのTikZ
- 数式にマーカーを付けたりとかもできるらしい。
Graphvizでデータ構造のグラフや状態遷移図を描く
二部グラフとか、プログラムで使ってるやつを出力して、それを出来るだけかんたんに図に変えたい。
-
- グラフ、状態遷移図、フローチャートとかがdot言語というやつで描ける。
-
- めちゃめちゃ詳しく書いてあるやつ
-
- ブラウザでdot言語を書きながら、プレビューできるサイト
GUIで簡単な状態遷移図が描きたい
-
オートマトンをGUIで描けるやつ
- ブラウザですぐ使える、オートマトンを描くツール
- ちょっと描きたいときに便利
回路図が描きたい
draw.io使うといいよ
リンクを貼る方法
hyperrefとpxjahyperを使えば、自動で\ref{}
や\cite{}
にリンクが付く。
URLが貼りたいときは\url{http://hogehoge.com}
とか書く。
\usepackage[dvipdfmx]{hyperref}
\usepackage{pxjahyper}
セクションにリンクを貼る
\hyperref[sec:hoge]{ほげほげ}
\section{ほげほげ}
\label{sec:hoge}
参考文献の書き方
参考文献リストは複数ファイルから読み込める
(以下はbackground.bibとmethod.bibを読み込み)
\bibliography{references/background,references/method}
- 参考文献リストの参照 - cite
-
IEEE形式での参考文献の入れ方
- めちゃめちゃに内容が厚い. これがあれば迷うことはなさそう.
なんか bib ファイルが読み込めないとき(outdir 指定時)
latexmk のオプションとして -bibtexfudge-
を付ける
or latexmkrc に $bibtex_fudge=0;
を記載する
参考文献管理ソフト
参考文献を管理する用の便利なソフトがある
-
Zotero
- 完全フリー
- 導入方法
- Chrome 拡張で web 上の論文を簡単に保存できたり便利
- Google Drive をローカルにマウントすることで, 文献の保存先を Google Drive にもできる.
付録のつけかた
\appendix
を挿入した後のsectionが全部付録A.
みたいな表記に変わる.
付録
っていうのが気に入らなければ, \appendix
の後で定義し直せばいい.
\appendix
% \def\thesection{Appendix\Alph. {section}}
\section{ほげほげ}
その他
section・タイトル周りいじりたい
目次を入れる
\tableofcontents
箇条書き
\begin{itemize}
\item hoge
\item fuga
\end{itemize}
頭に①とかつける箇条書き
\begin{enumerate}
\renewcommand{\labelenumi}{\textcircled{\scriptsize \theenumi}}
\item hoge
\item fuga
\end{enumerate}
文章の途中で箇条書きを使う場合インデントするとよい
ほげほげの利点は
\begin{quote}
\begin{itemize}
\item fugafuga
\item piyopiyo
\end{itemize}
\end{quote}
である.
空白を入れたい時
\quad 一文字分のスペース
\qquad 二文字分のスペース
インライン数式で記号を書くの便利
箇条書き等の途中の行を三点リーダーで省略したいとき
\begin{itemize}
\item hoge
\begin{quote}
$\vdots$
\end{quote}
\item fuga
\end{itemize}
A~B とか書きたい時
波ダッシュは普通に置いてもだめ, どうしても使いたいときは, インライン数式で, 近似のやつを使う.
A$\sim$B
部分的に文字の大きさを変えたい時
\tiny
< \scriptsize
< \footnotesize
< \small
< \normalsize
< \large
< \LARGE
< \huge
< \Huge
【LaTeX】文字サイズの変更方法まとめ
レポートの書き方周り
Writing 全般
-
- レポートとか報告書の書き方でめちゃくちゃ為になる本
-
- 非英語話者のための論文の書き方本. 英語. PDF無料配布.
-
- 理科系の作文技術と近い内容で, 短くまとまっている.
Discussion