LaTeXのすゝめ 〜実験レポート〜
はじめに
私の在籍する大学ではB1後期から実験レポートを書くことになるのですが、多くの人はMicrosoft Wordやその他ドキュメントソフトを使用しています。
私は趣味程度にLaTeXで文書を作ったりしていましたが、つい先日LaTeXでレポートを作成、提出しました。
LaTeXは文全体のフォーマットをすべてプリアンブルで管理するため、執筆中にフォーマットをうっかり書き換えてしまう心配がありません。
また、様々なパッケージによって事務書類から論文まで、幅広い用途で使用することができます。
ここでは、レポートを書く上で必要なLaTeXの基本的な使い方を紹介します!
※本記事では、数式の書き方(amsmath)については触れません。ご了承ください。
2024-05-28追記
「図(.pngデータ)の挿入」にて、Paste Imageについての内容を書きました!
インストール
インストールはこちらを参考にさせていただきました
ページフォーマット
一般的に、実験などのレポートは以下のポイントを抑えておく必要があります
- A4用紙
- 11pt~12ptのフォントサイズ
- 上下左右2.4cmの余白
\documentclass[a4paper, 11pt]{ltjsarticle} % A4用紙、11ptフォント、`ltjsarticle`ドキュメントクラス
\usepackage{geometry}
\geometry{margin=24mm} % 上下左右24mm(2.4cm)の余白
表紙
科目によって表紙の必要/不必要が分かれていますが、個人的に表紙は本文と分けて書くほうが好みです
表紙に書く項目は以下の通りになります
- 提出日付
- 科目名
- テーマ名
- 大学、学部、学科(、配属コース)
- 学生番号、氏名
- (共同実験者)
これを1枚にかけて書きます
\documentclass[a4paper,11pt]{ltjsarticle}
\usepackage{geometry}
\geometry{margin=24mm}
\begin{document}
%
\begin{titlepage}
\begin{center}
{\Large 令和6年m月n日}
\vspace{10truept}
{\Large hogehoge実験}
\vspace*{180truept}
{\LARGE テーマA\quad theme}
\vspace{10truept}
{\Large --- subtheme ---}
\vspace{160truept}
{\Large Japan大学 Fukuoka学部}
\vspace{10truept}
{\Large Fukuoka学科 piyopiyoコース}
\vspace{10truept}
{\Large X班}
\vspace{30truept}
{\Large Student_number1 山田 太郎}
\vspace{16truept}
{\large 共同実験者}
\vspace{10truept}
{\large Student_number2 田中 花子}
\vspace{10truept}
{\large Student_number3 花田 隆}
\end{center}
\end{titlepage}
\end{document}
プレビュー
図(.pngデータ)の挿入
歳入の円グラフの画像や人口推移のチャートなど、レポート中に適宜参考資料を掲載することがあります
そんなときはgraphicx
パッケージでfigure環境を使用しましょう
\documentclass[a4paper,11pt]{ltjsarticle}
\usepackage{graphicx} % 画像の挿入
\usepackage{float} % 図表の配置を指定
% その他のプリアンブル
\begin{document}
...
以下に図\ref{fig:example}を示す. % example.pngの図表番号を参照
\begin{figure}[H] % [H]: 好きな位置に図表を配置
\centering % 左右中央揃え
\includegraphics[scale=0.2]{example.png} % 元の画像の0.2倍のサイズでexample.pngを表示
\caption{example.pngの説明文} % 画像下部に説明文を追加
\label{fig:example} % 図番号を文中で参照
\end{figure}
...
\end{document}
プレビュー
また、図を参照するときには\label{fig:sample}
というようにラベルを付けると分かりやすいです
クリップボードから図を挿入する(2024-05-28追記)
先ほど図の挿入方法を紹介しましたが、上記の方法だと.tex
ファイルから画像ファイルにパスでアクセスする必要があります
スクリーンショットやデータをわざわざ作業ディレクトリに持ってくるのが面倒で、どうにかならないかな〜...と思っていた矢先、クリップボードから図を挿入できるVSCode拡張機能を見つけました
Paste Image(visualstudio.Marketplace)
それがPaste Imageです
ページを見たところMarkdown向けの機能だそうですが、LaTeXでも問題なく使えました!
\begin{figure}[H]
\centering
\includegraphics[]{2024-05-28-20-32-35.png} // Paste Imageで挿入
\end{figure}
プレビュー(切り取ったスクリーンショットをクリップボードから貼り付け)
この機能はVSCodeの検索窓で> Paste Image
と打つとカーソルの位置に画像が挿入されます!
ディレクトリの中に画像ファイルが残らないのでディレクトリがごちゃごちゃする心配もないのがイチオシです👍
表の作成、挿入
実験では経時変化や対照実験などで都度都度表の作成を求められます。以前までExcelで作成した表を保存して貼り付けていましたがどうせならLaTeXで描けたほうが楽ですよね!
表はLaTeX標準のtabular環境を使って描くことができます
\documentclass[a4paper,11pt]{ltjsarticle}
\usepackage{float} % 図表の配置を指定
% その他のプリアンブル
\begin{document}
...
以下に表\ref{tab:example}を示す. % 表判号の参照
\begin{table}[H]
\centering
\begin{tabular}{|c|c|c|} % 表の列数を指定
\hline % 横線
A & B & C \\ \hline % 表の列を指定
1 & 2 & 3 \\ \hline % 表の列を指定
4 & 5 & 6 \\ \hline % 表の列を指定
7 & 8 & 9 \\ \hline % 表の列を指定
\end{tabular}
\caption{exampleの表} % 表のタイトル
\label{tab:example} % 表の参照
\end{table}
...
\end{document}
プレビュー
ここで、tabular環境の解説をします
-
\begin{tabular}{|c|c|c|}
{|c|c|c|}
は表を作成するときの縦線と要素の揃え方を指定しています-
縦線の指定(
|
)
今回の例ではすべての要素を囲うように縦線を設定していますが、
これを{c|c|c}
に変えると両端の縦線が消えた表が作成されます
-
要素の揃え方(
c
)
要素の揃え方は以下の通りです- c: 中央揃え
- l: 左揃え
- r: 右揃え
基本的に中央揃えを使用することが多いですが、
実習書で与えられた表を再現するときなどは左揃えなども使用する機会があると思います
-
また、表を参照するときは\label{tab:sample}
というようにラベルを付けると分かりやすいです
グラフの作成
グラフは実験レポートにおいて一番大切と言っても過言ではありません。
グラフのないレポートはトイレのない家のようなものです!
ここでは、tikZ+pgfplotsパッケージを使用したグラフの作成方法を点のプロットと関数の入力、CSV出力の2つについて示します
直接点をプロットしてグラフを作成する
\documentclass[a4paper,tikz,11pt]{ltjsarticle}
\usepackage{graphicx}
\usepackage{float}
\usepackage{pgfplots}
% その他のプリアンブル
\begin{document}
...
以下に図\ref{fig:sample}を示す. % 図番号の参照
\begin{figure}[H]
\centering
\begin{tikzpicture}
\begin{axis}
[
xmin=0, xmax=5, % x軸の範囲
xlabel={number}, % x軸のラベル
ylabel={value}, % y軸のラベル
width=400pt, % グラフの幅
height=200pt, % グラフの高さ
grid=both, % グリッドの表示
grid style={gray!20}, % グリッドの色
minor tick num = 1, % グリッドの間隔
xtick distance = 1, % x軸の目盛りの間隔
]
\addplot coordinates{
(0, 10)
(1, 45)
(3, 80)
(4, 100)
(5, 120)
};
\end{axis}
\end{tikzpicture}
\caption{sampleグラフ}
\label{fig:sample}
\end{figure}
...
\end{document}
プレビュー
addplot coordinates{}
に点を直接入力することでグラフに点と点どうしを結んだグラフが作成されます
点を直線で結ばないようにするには、addplotのoptionsにonly marks
を追加します
...
]
\addplots[only marks] coordinates {
...
直接関数を入力してグラフを作成する
\documentclass[a4paper,tikz,11pt]{ltjsarticle}
\usepackage{graphicx}
\usepackage{float}
\usepackage{pgfplots}
% その他のプリアンブル
\begin{document}
...
以下に図\ref{fig:sample}を示す. % 図番号の参照
以下に図\ref{fig:sample}を示す. % 図番号の参照
\begin{figure}[H]
\centering
\begin{tikzpicture}
\begin{axis}
[
xmin=0, xmax=5, % x軸の範囲
xlabel={x}, % x軸のラベル
ylabel={y}, % y軸のラベル
width=400pt, % グラフの幅
height=200pt, % グラフの高さ
grid=both, % グリッドの表示
grid style={gray!20}, % グリッドの色
minor tick num = 1, % グリッドの間隔
xtick distance = 1, % x軸の目盛りの間隔
]
\addplot {exp(x)}; % グラフの描画
\end{axis}
\end{tikzpicture}
\caption{$y=e^x$のグラフ} % グラフの説明文
\label{fig:sample}
\end{figure}
...
\end{document}
プレビュー
関数を入力するときは、右辺(xの式)のみを記述するようにしてください
CSVの値からグラフを作成する
「実験で測定したデータをExcelでまとめたものをグラフにしたいけどLaTeXで描ける...?」
描けます!!
そもそも
Q. CSVってナニ?
A. CSVとは、"Comma Separated Values"の略で、その名の通りカンマ(,
)で値どうしが区切られているファイル形式です!
CSVの他にもTSV(Tab Separated Values)なども存在します
Excelなどスプレッドシートでまとめたデータは大体こんな具合になっているのではないでしょうか?
(※ChatGPT-4oにて作成したサンプルデータ)
このように縦一列ごとにデータがまとめられているデータをLaTeXでグラフにしましょう!
ExcelデータをCSVにする
Excelなどのスプレッドシートでは通常.xlsxファイルとして保存されると思います
そこで、書き出し(エクスポート)を行い、先ほどのデータをCSVとして保存します!
(※詳しい保存方法は割愛します)
sec, temp, press
0,20.0,20.1
10,21.5,21.4
20,22.0,21.9
30,22.5,22.4
40,23.0,22.9
50,23.5,23.4
60,24.0,23.9
LaTeXで出力する
データをCSVで保存できたら、LaTeXでグラフを描いていきましょう!
ついでと言ってはなんですが、以下のコードでは2つの直線を1つのグラフで表現しています。参考程度にお使いください
\documentclass[a4paper,tikz,11pt]{ltjsarticle}
\usepackage{graphicx}
\usepackage{float}
\usepackage{pgfplots}
% その他のプリアンブル
\pgfplotstableread[
col sep=comma,
comment chars={\#}
]{experiment_data.csv}\experimentdata % データの読み込み
\begin{document}
...
以下に図\ref{fig:sample}を示す. % 図番号の参照
\begin{figure}[H]
\centering
\begin{tikzpicture}
\begin{axis}
[
xmin=0, xmax=60, % x軸の範囲
xlabel={time[s]}, % x軸のラベル
ylabel={temperature[℃]}, % y軸のラベル
width=400pt, % グラフの幅
height=200pt, % グラフの高さ
grid=both, % グリッドの表示
grid style={gray!20}, % グリッドの色
minor tick num = 1, % グリッドの間隔
xtick distance = 10, % x軸の目盛りの間隔
]
\addplot table[
x = sec,
y = temp
] \experimentdata; % グラフの描画
\addplot table[
x = sec,
y = press
] \experimentdata; % グラフの描画
\end{axis}
\end{tikzpicture}
\caption{温度変化と圧力変化のグラフ} % グラフの説明文
\label{fig:sample}
\end{figure}
...
\end{document}
プレビュー
CSVからグラフを作成するときは、執筆している.texファイルがCSVファイルを参照できる環境にて作業をしてください。
(今回、同じディレクトリ内に2つのファイルが存在している)
グラフの作成 のまとめ
グラフの作成は決まった形(figure→tikzpicture→axis)があるので、基本的にそれに従って軸の設定などを行い、\addplot
コマンドでグラフの挿入を行います
今回紹介した3つの方法では、\addplot
は次の3つに分かれます
- 直接関数を入力する:
\addplot {`{x.function}`}
- 直接点をプロットする:
\addplot coordinate{(`{x.value}`, `{y.value}`)(`{x'.value}`, `{y'.value}`)}
- CSVの値を出力する:
\addplot table[x = `{x.value}`, y = `{y.value}`]
(事前にCSVファイルを読み込む必要あり)
参考文献の書き方
最後に、レポートに欠かせない参考文献を書きましょう!
参考文献には、主に以下の情報を掲載します
- 書籍の場合
著者名.書名.出版社,出版年,総ページ数. - 雑誌論文の場合
著者名.記事タイトル.雑誌名.出版年,巻数(号数), はじめのページ – 終わりのページ. - ウェブサイトの場合
著者名.“ページのタイトル”.サイト名. 更新日付.入手先URL,(参照年月日).
今回は、URLを用いた参考文献を書きたいのでウェブサイトの文献を書いていきます
参考文献のURLを記載する際に使いたいパッケージがurlパッケージです
実際に参考文献を書いていきましょう
\documentclass[a4paper,11pt]{ltjsarticle}
\usepackage{url}
% その他のプリアンブル
\begin{document}
...
\section{本文}
どうやらLaTeXではCSVからグラフを作成できるらしい\cite{sample1}。
\section{参考文献}
\renewcommand{\refname}{}
\begin{thebibliography}{99}
\bibitem{sample1} LaTeXのすゝめ 〜実験レポート〜. Zenn. 2024年5月14日. \\\url{https://zenn.dev/hibiki1023k/articles/d3d0cdb8449f6d}
\end{thebibliography}
...
\end{document}
プレビュー
このように、URLをそれっぽく書くことができました
\begin{thebibliography}{99}
の99は文献リストの番号が最大二桁になることを意味しています。
さらに、\cite
を使うことで参考文献の番号と本文中の参照番号を一致させることができるため、もしこれより前に文献が増加した場合でも自動的に数字を合わせてくれます
最後に
今回は私が大学で実験レポートを書く際に使う項目を挙げて紹介しました。
この他にも、LaTeXは様々な分野で幅広く使うことができるパッケージが存在します。私はこれまで化学実験や微分方程式、情報学でLaTeXを使用してレポートを作成しました。
もし不明な点やご要望などありましたらお聞かせください。
この記事によって少しでも多くの人がきれいなレポートを効率的に作成できる様になることを願っています。
最後まで読んでいただきありがとうございました。
参考文献
- タウンワークマガジン. 大学でのレポート引用と出典、参考文献の書き方.
2022年07月04日. 2024年5月15日.
Discussion