Pythonプログラムのレポート提出方法

この機会にLaTeX文書も書けるようにようになろう。 以下の要領で、LaTeXで書いて(拡張子 .tex をお忘れなく)タイプセットして生成したPDFファイルを提出(アップロード)してください。 数式を記述して、美しい文書を期待してます。

最後に紹介した「かなり気の利いたソースコードの埋め込み」を推奨します。

ソースコードを埋め込む簡単な方法

次のように環境 verbatim を使って

\begin{verbatim}
なにかを
何行か書く
\end{verbatim}
と書くと、LaTeXの特殊文字であろうと、そのままタイプライター体でタイプセットされる。 一行が長い場合には、改行も必要になるはずだ。

\documentclass{jsarticle}
\usepackage{amsmath,amssymb}% 数式入力に数学必携のパッケージ読み込み

\title{課題名}
\author{学生番号 氏名}
\date{日付}

\begin{document}
\maketitle

\section{課題}
課題の説明やスクリプトの説明を書く。

\begin{verbatim}
ここにプログラムソースをコピー
\end{verbatim}

\subsection{実行結果}
実行時の説明

\begin{verbatim}
ここに実行結果(出力)をコピー
\end{verbatim}
%
% 以上を課題ごとに繰り返す
%
\end{document}

文中でそのまま特殊記号を交えて「そのまま表示」したいときには\verbを使う。 「そのまま表示」した文字列を、そこに含まれていない記号(下の例では + で挟むのが肝要)。

なにかかいていて \verb+そのまま表示したい文字列+

わずかに気の利いたソースコードの埋め込み

文中で、OSのコマンドやスクリプト名を書く場合には、その文字列を \texttt でタイプライター体指定する。

コマンド\texttt{python}を起動して、スクリプト\texttt{hogehoge.py}を渡した結果が次のようになる。

ソースコードや実行結果などは本文と同じ左揃えで並んでいるのは、いかにも読みつらい。 次のように、環境 quote(またはquotation)を使うと少し読みやすくなる。

\documentclass{jsarticle}
\usepackage{amsmath,amssymb}% 数式入力に数学必携のパッケージ読み込み

\title{課題名}
\author{学生番号 氏名}
\date{日付}

\begin{document}
\maketitle

\section{課題}
課題の説明やスクリプトの説明を書く。

\begin{quote}
\begin{verbatim}
ここでプログラムソースをコピー
\end{verbatim}
\end{quote}

\subsection{実行結果}
実行時の説明

\begin{quote}
\begin{verbatim}
ここに実行結果(出力)をコピー
\end{verbatim}
\end{quote}
%
% 以上を課題ごとに繰り返す
%
\end{document}

それでも、フォントの大きさなど見栄えはよろしくない。 プログラムファイルの名称についてもソースコードだけからは分からない。

かなり気の利いたソースコードの埋め込み

ソースコードの埋め込みにパッケージ listings(さらに、日本語を含む場合にはjlistingも併用する)を使うとよい。

パッケージjlistingsのインストール

簡単である。 まず、Z:/.windows2000/(マイドキュメント)内にフォルダ texmf を作成する。さらに、その内部にフォルダ tex を作成しておく。 パッケージ jlistingjlisting 本体 をダウンロードして、取り出したファイル jlisting.styを、 Z:/.windows2000/texmf/tex(マイドキュメント\texmf\tex)内にコピーする(別のパッケージの場合はフォルダに一式は言っている場合もあるが、その場合でもフォルダごとコピーする。) TEXMFHOMEの利用参照。

こうして、次のようにパッケージ listings と jlistingを読み込んで、次のようにすると気が利いている。 ソースがPythonであることなど \lstset に若干オプションを指定している。 通常の報告ではソース行番号は不要なので、numbersは%をつけてコメントアウトしている(必要に応じて使い分けて欲しい)。 ソースコードを枠で囲んでしまうか frame={tblr} あるいは、上下だけ線を引くか frame={tb} 、あるいはfame 指定をコメントアウトするかも、思案のしどころだ。 ネット情報でパラメータ設定を参考にして欲しい。

listingsを使う場合、環境 quoate は不要だと思う(ご自由に)。

\documentclass{jsarticle}
\usepackage{amsmath,amssymb}% 数式入力に数学必携のパッケージ読み込み
\usepackage{listings,jlisting}
\lstset{
  language=Python,      <--あるいは MathaticaやMatlab などリスト対象の言語を指定
  basicstyle={\small},%
  identifierstyle={\small},%
  commentstyle={\small\itshape},%
  keywordstyle={\small\bfseries},%
  ndkeywordstyle={\small},%
  stringstyle={\small\ttfamily},
  frame={tblr},
  breaklines=true,
  columns=[l]{fullflexible},%
% numbers=left,%
  xrightmargin=0zw,%
  xleftmargin=3zw,%
  numberstyle={\scriptsize},%
  stepnumber=1,
  numbersep=1zw,%
  lineskip=-0.5ex%
}

\title{課題名}
\author{学生番号 氏名}
\date{日付}

\begin{document}
\maketitle

\section{課題}
課題の説明やスクリプトの説明を書く。

\begin{quote}
\begin{lstlisting}[caption=スクリプトファイル名,label=参照ラベル]
ここでプログラムソースをコピー
\end{lstlisting}


\subsection{実行結果}
実行時の説明

\begin{quote}
\begin{verbatim}
ここに実行結果(出力)をコピー
\end{verbatim}
\end{quote}
%
% 以上を課題ごとに繰り返す
%
\end{document}

ここで、環境 lstlisting にオプション captionとlabelに名前を渡している。

\begin{lstlisting}[caption=sample.py,label=sample]
....
\end{lstlisting}
とすると、"ソースコード 1 sample.py" ソースコードの上部に表記するためだ(番号1は自動的にカウントされるプログラム番号)。 さらに、文中で
ソースコード\ref{sample} は.... を実行するものであったが、これを改良して....
とすることでプログラム番号が参照できる。

パッケージ listings がサポートしている言語(キーワード表記が利用できる)のリストはThe Listings Packageの[2.4 Programming languages]に一覧がある。