アルゴリズムとソースのリスト

Algorithm2e のスケッチと実際のコードのリスト。

アルゴリズムとソースのリスト

論文ではコードが 2 つの異なる形式で表示され、LaTeX にはそれぞれに別個のツールが用意されています。擬似コードはアルゴリズムの理想的なスケッチであり、キーワードと数学がタイプセットされており、algorithm2e パッケージがそれを処理します。ソース リストは等幅フォントでそのまま再現された実際のコードであり、listings パッケージがそれらを処理します。間違ったツールの選択は摩擦の原因となることが多いため、両方を確認することが役立ちます。

アルゴリズム 2e を使用した疑似コード

\usepackage[ruled,vlined]{algorithm2e}
\begin{algorithm}
\caption{Train}
\While{not converged}{
Update $\theta$\;
}
\end{algorithm}

パッケージ オプションは視覚的なスタイルを設定します。 ruled はアルゴリズムの上下に水平の罫線を描き、ほとんどの会場が期待する慣例としてキャプションを上部に配置します。 一方、 vlined は各ブロックの範囲を示す小さな垂直線を描画するため、ネストは大きなインデントなしで読みやすくなります。 algorithm 環境は図のような浮動小数点数なので、\ref が引用するための番号を与える \caption を持ちます。

内部では、\while{condition}{body} が太字のキーワード、条件、本文をインデントされたブロックとしてループをタイプセットします。 \For\If、および \Return も同じパターンに従います。ステートメントは \; で終わり、行の終了文字を出力して新しい行を開始します。それを忘れてしまうのは、古典的な初心者の間違いです。つまり、線が一緒になってしまうのです。これは通常の LaTeX であるため、$\theta$ のような数学はインラインで動作します。これが擬似コードの目的であり、特定の言語ではなく表記法で更新ルールを記述します。

リスト付きの実際のコード

\usepackage{listings}
\begin{lstlisting}[language=Python]
def f(x):
return x**2
\end{lstlisting}

lstlisting 環境はその内容を正確に再現し、空白を保持し、特殊文字を文字通りに扱うため、何もエスケープせずにコードを貼り付けることができます。 「 language=Python 」オプションは、その言語のキーワードの強調表示をオンにし、「listings」は他の多数の言語を認識します。デフォルトでは、出力はプレーンです。ほとんどの人は、プリアンブルに 1 回限りの \lstset{basicstyle=\ttfamily\small,numbers=left} を追加して、行番号付きの適切なサイズの等幅フォントを取得します。ファイルを貼り付けるのではなく直接インクルードするには、\lstinputlisting[言語=Python]{train.py} がディスクからファイルを読み取り、論文と実際のソースの同期を保ちます。色付きの忠実度の高い強調表示が必要な場合は、外部ツールとシェル エスケープを必要とする代わりに、minted パッケージを使用する方が強力です。

どちらかを選択する

論文の本文では疑似コードを使用してアイデアを伝え、付録やツールの説明など、正確なコードが重要な成果物については逐語的なリストを確保します。よくある間違いは、「[fragile]」オプションを指定せずに Beamer フレーム内に「lstlisting」を配置することです。これは不透明なエラーで失敗します。同じ注意が 最初の Beamer デッキ にも表示されます。

分野キット に戻る