学生実験 1-1 : LaTeX によるレポート作成(當間)



更新履歴





実験の進め方

内容と達成目標
  • 情報工学実験1,2においてはテーマ毎に1つ以上のテーマが与えられ,テーマ毎にレポート提出が求められる.
  • 今回のテーマ「LaTeXによるレポート作成」では幾つかの課題(Level X)を通して以下の項目を達成することを目標とする.
    • 達成目標1:一般的な書籍・学術論文に見られる数式・図表・目次等を含めた文書を LaTeX を用いて作成することができる.
    • 達成目標2:目的・目標を把握して実験に取り組み,過程・結果・考察を理論的に考え,レポートとして書き上げることが出来る.
  • 注意点:実験では必ずしも全ての手順を示すとは限りません.分からない場合には何らかの方法(先生やTA,周りの学生,先輩,google 先生に聞いたり,自分で試行錯誤してみたり・・)で解決しましょう.その過程を通して自分で学ぶスキルと自己解決するスキルを身につけることも大切です.
  • 工夫:実験で課している課題は最低限のレベルです.各自,気になることがあればチャレンジし,必要に応じてレポートとしてまとめましょう.
実験の進め方
  • テキスト・補助教材:本ページや参考文献参照
  • 作業スタイル:個人作業(1人1レポート).
評価基準
減点方式.主に以下の点に関してチェックを行う. 減点箇所が見あたらない場合には満点となる.

減点項目
  • 表紙に含めるべき情報が欠落している場合.
  • 適切にコマンドを用いていない場合(節・図・表・数式・列挙・参照など)
  • 出力を強引に作成・整形している場合(「\\」による手動改行,全角スペースによる文字間隔補正など).
  • サンプル出力と*大きな*ズレがある場合.
  • 誤字,脱字.
  • 提出期限を過ぎた場合.

その他:大学では一般社会に通用する技術だけでなく,一般常識も学びます.期限を守ることやコピペだけで仕事を済ませないこと,また必要に応じてコミュニケーションを取る事も忘れずにやってください.

課題と提出方法
  • 全ての Level にトライし,レポートとしてまとめよ.
  • 1名1レポート提出.
  • 表紙には以下の項目を記述すること.
    • 課題番号,タイトル,担当教員名
    • 氏名,学籍番号
    • 実験日,提出期限日,提出した日
  • レポートは LaTeX で作成し,印刷物を提出すると共に tex ファイル及び,作成したスクリプト等一式を以下の場所に保存する事.提出方法やフォルダ名は以下の通り.

    以下は ~/jikken1 に提出物を保存している場合の例です. 修正する場合も同じコマンドで構いませんが,アカウント名(j050xx)を間違えないように注意する事! rsync 自体の説明は例えばここを参照してください.

    % cd   (ホームディレクトリに移動)
    % rsync  -auve  ssh \
         ~/jikken1/ \
         j050xx@naha:/Users/teacher/tnal/jikken1-fri/j050xx/
    % rsync  -auve  ssh \
         ~/jikken1/ \
         j050xx@naha:/Users/teacher/tnal/jikken1-tue/j050xx/
    
    上記はコマンドが長いので「\」を用いて改行していますが, 一行にまとめて書いても良いです.

  • 提出期限:次回実験日の開始時刻前までに 705 室へ(4/14のクラスの期限は4/24,4/18のクラスは4/28).

0. 事前準備

  1. X11.appをインストール.
  2. EasyPackageのpkg/ptex-euc-pkg, math/gnuplot, graphics/ImageMagick, graphics/gimpをインストール.

    各アプリケーションの説明は参考文献・サイトを参照.


1. LaTeXによるレポート作成

1.1 LaTeXとは?

レポートや論文等を綺麗に出力するための文書整形ツール(言語)です. C言語やJavaと同様にLaTeXはコンパイラ言語なので,「作成(プログラミング)→コンパイル→出力確認→適宜修正」といった手順で作成します.

1.2 LaTeX を使う利点

Word等のワープロソフトと比較して・・・

1.3 クイック・スタート!

課題:Level 1
以下の手続きの通り,実際に LaTeX を使って文章を作成しなさい.
  1. (準備)今回の実験用のディレクトリを作成してください(以下はサンプルです.各自で使いやすい用に作成してください).
    > mkdir jikken1
    > mkdir jikken1/latex
    > cd jikken1/latex
    
  2. (文章作成)以下の文章を j050xx-1.tex という名前で保存しましょう.各行の意味は下表の通りです.
    \documentclass[a4paper,10pt]{jarticle}
    \begin{document}
    これはてすとです.
    \end{document}
    
  3. (X11)X11.app を起動し,作成した文書を保存したディレクトリへ移動してください.

    X11.appの場所:アプリケーション→ユーティリティ→X11.app
    (Dockへ登録すると便利でしょう)

  4. (コンパイル)各種の tex コマンド(\documentclass など)を文章に適用した出力を生成します.
    > platex j050xx-1.tex
    
  5. (出力確認)実際の見た目を確認します.
    > xdvi j050xx-1.dvi
    
  6. (PDF作成)印刷用,配布用に他の人から閲覧可能な一般的な形式(ここではPDF)に変換します.
    > dvipdfmx j050xx-1.dvi
    

注記1:X11は出力を確認する(xdviを使う)ためだけに使っています. xdvi を使わず,dvipdfmxでPDFを直接作成してから確認する場合には, X11を使わなくても文章を作成することが出来ます(不便ですが).

注記2:上記の例ではコンパイル platex を一度しか実行していませんが, 本来なら複数回実行すべきです.これは,「一度目のコンパイルで文章や 図表を配置し図表番号を確定した後に,二度目のコンパイルで番号を 参照先へ埋め込んだり,目次を作成する」といったプロセスを経るためです. うまく参照できない場合は2回以上コンパイルした後に確認してみてください.

表1:サンプルソースにおける意味解釈

\documentclass[a4paper,10pt]{jarticle}
\begin{document}
これはてすとです.
\end{document}
  1. 用紙設定(A4),文字サイズ(10pt),文書タイプ(jarticle)
  2. 文章の始まり
  3. 本文
  4. 文章の終わり


2. 良く使う LaTeX 環境とコマンド(命令)

2.1 LaTeX で文書作成する際の決まり事

詳細は LaTeX Tipsの基礎ゼミレジュメや, 文書整形システム LaTeX 入門 を参照すると良いでしょう. 以下は上記資料からの抜粋で,必要最小限を整理したものです.

  1. LaTexコマンド(命令)

    LaTeXの命令は原則として「“\”で始まり,半角空白で終わる」.

  2. コメントアウト(メモ等出力させたくない箇所を出力させない)

    「半角パーセント“%”から改行までの内容」はコメントアウトされまる.

  3. そのままでは出力されない記号

    以下の記号は,そのまま入力しても出力できない特殊文字である. 出力には見えないが「半角空白」も含まれる. ソースファイル等,見た目通り出力させる場合には, 命令ならば「\verb|###|」や バックスラッシュによるエスケープ(\#),, またはverbatim環境(\begin{verbatim} ... \end{verbatim}) を使うことで可能である.

    <そのままでは出力されない記号>
     , #, $, %, &, _, {, }, <, >, \, |, ^, ~
    

  4. 環境と命令

    LaTeXでは,文書を論理構造もしくは表現構造に分けて作成します. 分けられた構造と,それをLaTeXで出力するために使用する環境・命令 を対応づけたのが以下の図になります.


    図1:論理構造とLaTeX命令・コマンドの対応例

    環境の場合は,以下のように \begin と \end で中身を囲う用にして使います.

    \begin{環境名}
    中身
    \end{環境名}
    

    命令の場合は,以下のように々な形式で使われますので,参考文献に挙げているコマンド一覧等を参考に調べて使用してください.

    \命令
    \命令{引数}
    \命令{引数1}{引数2}{引数3}
    

  5. 空白・改行・段落

    半角空白文字(半角スペース)は, コマンドの終了文字(制御文字)として利用しているため, 出力上では無視されます. また,改行も単体では無視されてしまいますので, 段落を変える場合には「空行(改行だけの行)」を挿入することになります. 実際に試してみてください.


2.2 良く使われる環境の使い方

個条書きサンプル

個条書きを書くためには,itemize 環境(順序無しリスト),enumerate 環境(数字順序付きリスト)を使います.

\documentclass[a4paper,10pt]{jarticle}
\begin{document}
\begin{itemize}
 \item 箇条書き1.
 \item 箇条書き2.
 \begin{itemize}
  \item 箇条書き2.1.ネストも出来ます.
  \item[(a)] 任意のラベル付けも簡単です.
 \end{itemize}
 \item 簡単に箇条書きできます.
\end{itemize}
\end{document}

図1:個条書きサンプル





数式サンプル

$を使って文書中に数式を挿入するタイプ(式(1))と, equation 環境で1行立てて数式を挿入するタイプ(式(2),式(3))があります. また,複数個の数式を書きたい場合には eqnarray 環境を使います(式(4),式(5)). なお,図2下段では \label と \ref を用いて,自動的に式番号を挿入しています. TeX ソース内には直接番号を記載していません.

\documentclass[a4paper,10pt]{jarticle}
\begin{document}
文中に数式を埋め込むには $y=ax^ + b$ とします.

equation 環境を使った例.
\begin{equation}
\frac{1}{x}
\end{equation}

eqnarray 環境を使った例1.
\begin{eqnarray}
\lim \frac{a_n}{b_n} = r,~~0<r<\infty \\
\frac{a_{n+1}}{a_n} \leq \frac{b_{n+1}}{b_n}
\end{eqnarray}

eqnarray 環境を使った例2.
\begin{eqnarray}
\lim \frac{a_n}{b_n} &=& r,~~0<r<\infty \label{eq:lim}\\
\frac{a_{n+1}}{a_n} &\leq& \frac{b_{n+1}}{b_n} \label{eq:a_n}
\end{eqnarray}
式(\ref{eq:a_n})を式(\ref{eq:lim})の条件を考慮して展開すると・・・

\end{document}

図2:数式サンプル





図サンプル

図を挿入するには figure 環境を使います(FAQ「画像ファイルを上手く読み込めない」も参照してください). 一般的には EPS 形式の図を挿入します. EPS 形式で図を保存する事の出来る作図ソフトとしては,OmniGraffle(機能制限付きですが,Professional ではない方は試用できます))や,tgif(EasyPackageのjapanese/tgif)等があります.

また,gnuplot で作成した図を直接 EPS 形式で保存したり,tgif で読み込める obj 形式で保存することも可能です.直接 EPS 形式で保存するには以下のようにやります.



LaTex に gnuplot の図を取り込む

  1. グラフ化するデータを準備する(参考:pchistory.dat.CPU,メモリ,HDD容量の推移データ).
  2. gnuplot でグラフ化する.以下は上記サンプルデータを線グラフ化する例.ここでは LaTeX 用に eps 形式で作成しています.
    gnuplot> set terminal postscript eps
    gnuplot> set output "clock.eps"
    gnuplot> set title "Transition of CPU speed"
    gnuplot> set xlabel "year"
    gnuplot> set ylabel "clock"
    gnuplot> plot "pchistory.dat" using 1:2 with line
    
  3. LaTeX に取り込む.
    \documentclass[a4paper,10pt]{jarticle}
    \usepackage{graphicx}
    
    \begin{document}
    \begin{figure}
     \begin{center}
      \includegraphics[scale=0.5]{clock.eps}
      \caption{図のテスト}
     \end{center}
    \end{figure}
    
    \end{document}
    

    図3:図サンプル



    どうやる?(オプション課題)

    • 様々なプロット方法について.
      • サンプルデータには,CPU速度の他にメモリサイズ・HDD容量が記入されています.これらを同時に折れ線でグラフ表示(プロット)するにはどうすれば良いですか?
      • 一部のデータを他の表現(棒グラフ等)でプロットするには?
      • 縦軸に異なる2軸(横軸左にCPU速度,右にメモリサイズ)を用いてプロットするには?
    • 文字飾り等を変更するには?
      • 文字サイズを変更するには?
      • カラー出力するには?
      • EPS出力以外に何がある?




    表サンプル

    表(テーブル)を書くためには,table 環境と tabular 環境を利用します.

    \documentclass[a4paper,10pt]{jarticle}
    \begin{document}
    \begin{table}[htb]
     \begin{center}
      \caption{このレポートを作成している環境}
      \label{table:実験設定}
      \begin{tabular}[htb]{r|l} \hline
    ソフト名 & バージョン \\ \hline \hline
    OS & Mac OS X バージョン 10.5.2 \\ \hline
    端末 & ターミナル.app バージョン 2.0.1 (240) \\ \hline
    エディタ & GNU Emacs GNU Emacs 22.1.1 \\ \hline
    \LaTeX コンパイラ & pTeX 3.141592-p3.1.10 (utf8) (Web2C 7.5.4) \\ \hline
      \end{tabular}
     \end{center}
    \end{table}
    \end{document}
    

    図4:表サンプル





    参考文献サンプル

    参考文献を書くためには,thebibliography 環境を利用します. 注意点として,URL等の記号を含めた文献をリストアップする場合には,verbコマンドを利用する等して文字列として出力するようにしてください.

    \documentclass[a4paper,10pt]{jarticle}
    \begin{document}
    レポートの書き方については文献\cite{1,2}を参考にしてください.
    \LaTeX の使い方については文献\cite{3,4,5}を参考にしてください.
    
    \begin{thebibliography}{99}
    \bibitem{1}
    レポートの書き方のページ, 徳島大学 桑折先生\\
    \verb|http://www.ias.tokushima-u.ac.jp/physics/classes/reporting/wreport.html|
    
    \bibitem{2}
    レポート・論文の構成法と書き方 2004\\
    \verb|http://www2.ikuta.jwu.ac.jp/~kuto/kiso2004/Writing/HowToWrite.html|
    
    \bibitem{3}
    TeX/LaTeX入門, WikiBooks\\
    \verb|http://ja.wikibooks.org/wiki/TeX/LaTeX入門|
    
    \bibitem{4}
    LaTeXしよう!\\
    \verb|http://www.topstudio.co.jp/~kmuto/latex/|
    
    \bibitem{5}
    LaTeXコマンドシート一覧\\
    \verb|http://www002.upp.so-net.ne.jp/latex/|
    
    \bibitem{6}
    LaTeXの使い方\\
    \verb|http://www.maekawa.is.uec.ac.jp/doc/documentation/jlatex/revise/revisec.html|
    
    \bibitem{7}
    LaTeX handbook\\
    \verb|http://www.med.osaka-u.ac.jp/pub/anes/www/latex/latex.html|
    
    \bibitem{8}
    BibCompanion:― 参考文献管理ソフトウェア ―\\
    \verb|http://www.surf.nuqe.nagoya-u.ac.jp/~nakahara/Software/BibCompanion/|
    
    \end{thebibliography}
    \end{document}
    

    図5:参考文献サンプル


    課題:Level 2

    このサンプルと同様な出力を得る TeX ファイルを作成せよ. ただし,名前・学籍番号・日付を変更すること. また,提出する際には TeX ファイル本体を指定の場所(下記)に置くこと. ソースファイルはファイル名を「アカウント.tex」(例:j05001.tex)とせよ.

    提出方法はここを参照.

    課題:Level 2の解答編(latexサンプル)
    • サンプルダウンロード: zip



    FAQ

    LaTeX環境のインストールの仕方
    1. EasyPackageの「インストールを参照して GUI 番をインストールする.
    2. EasyPackageを最新版にアップデートする.
      • 「EasyPackage.app」を起動.
      • 「EasyPackage」メニューから「EasyPackageの更新」を選択し,最新版にアップデート.2008年5月時点で ver.0.2.26 が最新です.
    3. パッケージ一覧を取得する.
      • 「パッケージ」メニューから「一覧を取得」を選択する.
    4. パッケージをインストールする.
      • 分類「pkg」の中から「ptex-euc-pkg」を選択し,インストール.ダブルクリックでインストールできない場合には,選択した状態で「パッケージ」内の「インストール」を選択.(インストールそのものの時間が結構かかります)
      • クイックスタートを参考にし,動作確認.
    正しく書いてるはずなのにコンパイルできない.エラーが文字化けして読めない.

    主に,ファイルの文字コードと,コンパイラ側で扱える文字コードが一致していない事が原因である事が多いです.platex コマンドでコンパイルできないのであれば,ファイルの文字コードにあったコマンド(SJISならplatex-sjis,EUCならplatex-euc,UTF-8ならplatex-utf8)を使ってみましょう.

    emacs でのデフォルト文字コードを UTF-8 にするには?
    1. .emacs に以下の設定を保存.
      ;;; 言語環境の指定
      
      (set-language-environment "Japanese")
      
      ;;; 漢字コードの指定
      
      (set-default-coding-systems 'utf-8)
      (set-buffer-file-coding-system 'utf-8-unix)
      (set-terminal-coding-system 'utf-8)
      (set-keyboard-coding-system 'utf-8)
      (set-clipboard-coding-system 'sjis-mac)
      
    2. ターミナルの文字コードを UTF-8 に設定.
    エラー: Undefined control sequence.

    環境名(figure等)やコマンド名(section{}等)のスペルが間違っているか, コンパイラ側とファイルの文字コードが整合取れていない事が考えられます. スペルミスの場合には上記エラーの前後に出力されている行数を参考に,修正して管さ. 文字コードの場合には「エラーが文字化けして読めない」を参考にして対応してください.

    エラー: dyld: Library not loaded

    アプリケーションが必要としているライブラリがインストールされていない場合に出るエラーです.例えば,readline が必要な状況でインストールされていない場合,次のようなエラーが出ます.

    #エラー例
    oct3:lib tnal$ gnuplot
    dyld: Library not loaded: /usr/local/lib/libreadline.4.3.dylib
      Referenced from: /usr/local/bin/gnuplot
      Reason: image not found
    Trace/BPT trap
    
    • 上記の例では,ライブラリ readline のバージョン 4.3 がインストールされていない場合に出るエラーです.
    • readline 自体がインストールされていない(「ls /usr/local/lib/libreadline*」で何も見つからない)ならば,readline をインストールしましょう.
    • readline 自体はインストールされているが,バージョン番号が異なる場合には ln を使ってそのリンクを張りましょう.例えば,libreadline.5.2.dylib がある場合には次のようにします.
    prompt> sudo ln -s /usr/local/lib/libreadline.5.2.dylib /usr/local/lib/libreadline4.3.dylib
    
    画像ファイルを上手く読み込めない
    このページ(2008-04-03 PDF画像をlatex文書に埋め込む)を参考に,グラフ等をPDF形式で用意し,mediabb.sty を使ってPDFファイルを直接読み込む方法が一番簡単のようです.




    参考文献・サイト

    レポートの書き方
    LaTeX関連
    tgif / gnuplot関連



    用語

    エスケープ,エスケープ処理
    • C言語での「printf("\n");」による改行,
    • シェル(tcsh等)で正規表現を用いて「ls *」で全てのファイルを表示させる場合,
    など,言語を用いて機械に何らかの指示を行う場合, その指示を効率良く伝えるために制御文字(上記の\や*)を利用します. しかし,ファイル名に\が含まれている場合など,制御文字を「ただの文字(列)」として使用したい事もあります. そのように「次の文字は制御文字ではなくただの文字です」と伝える処理をエスケープと呼びます. このページも参考にどうぞ.