全国高等専門学校プログラミングコンテスト
ソースリスト提出支援のためのLaTeXスタイルファイル
proconsrc.sty
Version 7.0

Compiled by Shoichi Ito (shoichi@nagano-nct.ac.jp)



■ このパッケージについて

全国高等専門学校プログラミングコンテストの本選ではソースリストをPDFで提出する必要があります。このソースリスト作成をLaTeXにより簡単かつ美しく行うためのスタイルファイルがproconsrc.styです。ハイパーリンクの作成や構文着色といった機能があります。



■ 準備

proconsrc.styの動作には、listings環境とその日本語化パッチ(jlisting.sty)、奥村晴彦先生による新ドキュメントクラスが必要です。

  1. お使いのマシン上でLaTeXを使えるようにします。Windowsの人はあべのりゆきさんのTeXインストーラ3を使って角藤版W32TeXを、Macの人は奥村晴彦先生のページを参照してMacTeXを入れるのがよいでしょう。
  2. ここを参考にして奥村晴彦先生による新ドキュメントクラスを使えるようにします。角藤版W32TeXやMacTeXには最初からインストールされていますのでこのステップは必要ありません。
  3. listings環境を使えるようにします。角藤版W32TeXやMacTeXには最初からインストールされていますのでこのステップは必要ありません。
  4. ここからjlisting.sty.bz2をダウンロードして解凍してください。jlisting.styが得られます。

以上で準備完了です。



■ 使い方
  1. 作業用のディレクトリを作成し、本アーカイブに同梱のsample.texとproconsrc.styという2つのファイルと、さきほど生成したjlisting.styを同じディレクトリに入れます。
  2. ソースコードのファイルをすべてsample.texと同じディレクトリにコピーします。サブディレクトリがあってもかまいません。
  3. sample.texをテキストエディタで開きます。sample.texとproconsrc.styは文字コードUTF-8+改行コードLFで記述されています。
  4. PostScript/PDFに変換するためのsample.texの11行目でdviを変換するドライバを指定しておきますが、現在のところ問題なく使えるのはdvipdfmxのみです。dvipsはPDFにしたときにブックマークが文字化けします。その他のドライバは作者の環境ではテストされていません。指定しない場合はdvipdfmxが使われます。
  5. sample.texの14行目に「%%%%% ここを書き換える %%%%%」という行があります。ここから「%%%%%%%%%%」という行までの間に、参加者の情報を書き込む部分がありますので適宜書き換えます。特に迷うことはないでしょう。
  6. sample.texの56行目に「%%%%% ここを書き換える %%%%%」という行があります。ここから「%%%%%%%%%%」という行までの間に、印刷したいソースコードのファイル名を
    \InputSource[C++]{source.cpp}
    といった感じで\InputSource命令の引数に入れて、これを必要な個数だけ並べてください。[...]に言語を指定することができます。[...]を省略した場合は[C]を指定したのと同じになります。使用できる言語はlistings.pdfのセクション2.4.1のTable 1にあります。たとえばC#などはdialect(=方言)として定義されているのでlistings.styでは言語名自体を[Sharp]Cと書く必要がありますが、\InputSourceのオプションの[...]と区別するために\InputSource[{[Sharp]C}]{source.cs}のようにブレース括弧を併用して書く必要があります。言語ごとのキーワード強調などをせずそのまま表示したい場合は言語名としてplainを指定してください。
  7. sample.texを保存し、コマンドラインから
    $ platex sample.tex
    のように入力してコンパイルします($はプロンプトなので入力の必要はありません)。もし"LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right."という警告が出ていたらもう一度同様のコマンドを実行してください。
  8. エラーがなければsample.dviができています。コマンドラインから
    $ dvipdfmx sample.dvi
    のように入力してPDFに変換します。
  9. sample.pdfをAcrobatやプレビュー.appで開いて期待通りにできているか確認しましょう。 LaTeXの都合でうまく組版されない場合もあるので、必ず全ページを目で確認してください。



■ オプション

proconsrc.sty自体のオプションは以下の通りです。



■ 提出前のチェック



FAQ (よくある質問とその答え)

  1. listings.styがないといわれる。
    → 日本語対応のlistings環境を使えるようにします。
    1. ここの下の方に"Download the contents of this package in one zip archive (1.4M)."とありますのでそこからlistings.zipをダウンロードします。
    2. listings.zipをTeXの管理下の適当なフォルダに移動します。たとえばC:\tex\share\texmf-local\tex\latex\などに置きます。
    3. コマンドラインを開き、そのディレクトリに移動したうえで次のように入力します(%はプロンプトのつもり)。WindowsではCygwinがインストールされていないと各種コマンドが使えないかもしれませんが適宜読み替えてください。
      $ unzip listings.zip
      $ rm listings.zip
      $ mv jlisting.sty listings
      $ cd listings
      $ latex listings.ins
      $ mktexlsr
    4. これでlistings環境のインストールは完了です。上記listingsフォルダにあるlistings.pdfがlistings.styの正式な説明書ですので一度は目を通しておくとよいでしょう。
  2. 自分が使っているプログラミング言語がない。
    → たとえば標準ではGo言語への対応がありません。listings.styの\lstdefinelanguage{...}を使ってGo言語のルールをsample.texの\begin{document}よりも前に追加すると言語を増やすことができます。listings.pdfのセクション3.2やこちらを参照してください。\lstdefinelanguageでHOGEという名前の言語を追加した場合、\InputSource[HOGE]{filename}のように使えます。
  3. ページ番号などがおかしい。
    → \tableofcontentsや\Lastpageを使用するため、2回か3回platexで処理する必要があります。それでもおかしい場合は、sample.auxやsample.tocなどを削除してからもう一度ためしてみてください。
  4. ソースコード中の日本語が文字化けする。
    → 文字コードが適切ではないかもしれません。proconsrc.sty自体は文字コードUTF-8+改行コードLFで組まれています。文字コードの変換はnkfというコマンド等で行えます。たとえばここにはWindows用の文字コード変換ユーティリティがたくさんあります。Emacs使いならM-x set-buffer-file-coding-systemでutf-8-unixにしてください。
  5. ソースファイルがたくさんありすぎて一覧をリストアップするだけで大変。
    → MacやUNIXなら(WindowsならCygwinを入れて)ソースのある最上位ディレクトリで、find . -name '*.c' -print > ichiran.txt のようにしてください。
  6. タブをスペース4個以外にしたい。
    → proconsrc.styの152行目から169行目にかけて書式の設定があります。この中のtabsize=4という行を変更してください。
  7. ヘッダーにサブタイトルが出力されない。
    → 場所的な制限から、メインタイトルしか出ないようにしてあります。
  8. ソースコードの見た目や色を調整したい(文字をすべて黒にしたいなど)
    → proconsrc.styの152行目から169行目にかけて書式の設定があります。この中のbasicstyle, keywordstyle, commentstyle, identifierstyle, stringstyleといったキーワードの設定を見てください。色の例についてはcolor.styに付属のcolor.dviもしくは熊澤先生のページを参考にしてください。
  9. ハイパーリンクを作りたくない。
    → proconsrc.styで内部的に使用しているhyperref.styでハイパーリンクを作らないようにとdraftモードにしてしまうとその他の設定もすべて無効になってしまうため、ハイパーリンクを作らないようにはできません。ただしハイパーリンクを見えなくすることはできます。proconsrc.styの99行目のhidelinksを有効にしてください。
  10. PDFを開いたときの最初の表示が「幅にあわせて連続表示」になってしまうのを変えたい。
    → まだproconsrc.styのオプションとしては用意していませんのでproconsrc.styを直接いじる必要があります。 proconsrc.styの86行目から\hypersetup{...}という設定があり、 PDF表示の設定もここにありますので、このページを参考にしつつpdfstartviewとpdfpagelayoutをお好みに設定してください。
  11. dvipdfmxで出力されたPDFをAcrobatやIllustratorで編集しようとするとファイルが壊れていると言われる。
    → dvipdfmxで出力されたPDFをAcrobatで開いて、なにもせずに「名前を付けて保存」で別ファイルに保存してください。そちらのファイルであれば問題なく編集できます。



■ プログラミング言語

proconsrc.styでサポートされている主要なプログラミング言語は以下の通りです。proconsrc.styの独自拡張がいくつかあります。それ以外はlistings.styの機能です。サポートされている言語一覧はlistings.pdfのセクション2.4.1にあります。

使っている言語¥InputSource[XXX]{file}のXXXの書き方proconsrc.styの独自拡張
Bourne shell (/bin/sh) scriptsh
Bash shell scriptbash
CC
C++C++
C#{[Sharp]C}
Objective-C{[Objective]C}
SwiftSwift
HTMLHTML
CSSCSS
JavaScriptJavaScript
JavaJava
PHPPHP
XMLXML
PythonPython
RubyRuby
LispLisp
PerlPerl
HaskellHaskell
ScalaScala
SPARQLSPARQL
SQLSQL
Visual Basic{[Visual]Basic}
x86アセンブリ言語x86masm
680x0アセンブリ言語Motorola68k
(整形なし)plain



■ おことわり



Copyright 2010-2018 Shoichi Ito all rights reserved.
Last update: March 27, 2018