全国高等専門学校プログラミングコンテスト
ソースリスト提出支援のためのLaTeXスタイルファイル
proconsrc.sty
Version 5.0
Compiled by Shoichi Ito (shoichi@nagano-nct.ac.jp)
このパッケージについて
全国高等専門学校プログラミングコンテストの本選ではソースリスト を提出する必要があります。このソースリスト作成をLaTeXにより簡単かつ美しく行うためのスタイルファイルがproconsrc.styです。長野高専で過去数年間にわたって使われてきていたものをベースにしています。第21回大会までの印刷物での提出に代わり、第22回大会からはPDFでのオンライ
ン提出となりましたのでそちらへの対応を主体に進めています。
準備
proconsrc.styの動作には、listings環境と奥村晴彦先生による新ドキュメントクラスが必要です。
- お使いのマシン上でLaTeXを使えるようにします。Windowsの人はあべのりゆきさんのTeXインストーラ3を使って角藤版W32TeXを、Macの人は奥村晴彦先生のページを参照してMacTeXを入れるのがよいでしょう。
- 日本語対応のlistings環境を使えるようにします。
- ここの下の方に"Download the contents of this package in one zip archive (254.3k)."とありますのでそこからlistings.zipをダウンロードします。
- ここの"jlisting 本体 ver. 0.2 (bzip2)"からjlisting.sty.bz2をダウンロードします。
- listings.zipとjlisting.sty.bz2をTeXの管理下の適当なフォルダに移動します。たとえばC:\tex\share\texmf-local\tex\latex\などに置きます。
- コマンドラインを開き、そのディレクトリに移動したうえで次のように入力します(%はプロンプトのつもり)。WindowsではCygwinがインストールされていないと各種コマンドが使えないかもしれませんが適宜読み替えてください。
% unzip listings.zip
% rm listings.zip
% bzip2 -dv jlisting.sty.bz2
% mv jlisting.sty listings
% cd listings
% latex listings.ins
% mktexlsr
- これでlistings環境のインストールは完了です。上記listingsフォルダにあるlistings.pdfがlistings.styの正式な説明書ですので一度は目を通しておくとよいでしょう。
- MacTeXの人は/usr/local/texlive/texmf-local/tex/latex/localの下にjlistingというフォルダを作ってその中にjlisting.styを入れ、sudo mktexlsrします。
- ここを 参考にしてjsarticleを使えるようにします。角藤版W32TeXの場合は最初からインストールされていますのでこのステップは必要ありません。
以上で準備完了です。
使い方
- sample.texとproconsrc.styを同じディレクトリに入れます。オプションや設定などはバージョンごとに節操なく変えていくと思いますので、proconsrc.styを全ユーザー共通のディレクトリにインストールといったことはせずに、必要になるたびに最新版をローカルディレクトリにコピーしてきて使うのがいいと思います。
- ソースコードのファイルをすべてsample.texと同じディレクトリにコピーします。サブディレクトリがあってもかまいません。
- sample.texをテキストエディタで開きます。sample.texとproconsrc.styはUTF-8+LFで記述されています。
- PostScript/PDFに変換するためのsample.texの11行目でdviを変換するドライバを指定しておきますが、現在のところ問題なく使えるのはdvipdfmxのみです。dvipsはPDFにしたときにブックマークが文字化けします。その他のドライバは作者の環境ではテストされていません。指定しない場合はdvipdfmxが使われます。
- sample.texの38行目に「%%%%% ここを書き換える %%%%%」という行があります。ここから「%%%%%%%%%%」という行までの間に、参加者の情報を書き込む部分がありますので適宜書き換えます。特に迷うことはないでしょう。
- sample.texの88行目に「%%%%% ここを書き換える %%%%%」という行があります。ここから「%%%%%%%%%%」という行までの間に、印刷したいソースコードのファイル名を
\InputSource{bzip2.c}
といった感じで\InputSource命令の引数に入れて、これを必要な個数だけ並べてください。
- sample.texを保存し、コマンドラインから
% platex -kanji=utf8 sample.tex
のように入力してコンパイルします。もし"LaTeX Warning: Label(s) may have changed. Rerun
to get cross-references right."という警告が出ていたらもう一度同様のコマンドを実行してください。
- エラーがなければsample.dviができています。コマンドラインから
% dvipdfmx sample.dvi
のように入力してPDFに変換します。
- sample.pdfをAcrobatやプレビューで開いて期待通りにできているか確認しましょう。
LaTeXの都合でうまく組版されない場合もあるので、必ず全ページを目で確認してください。
オプション一覧
proconsrc.sty自体のオプションは以下の通りです。Version 5.0から、PDFでの閲覧のみを考慮し、両面印刷(twoside)オプションへの対応を取りやめています。
- dvipdfm, dvipdfmx, dvips, dvipsone, dviwindo ・・・ dviを変換するために使用するドライバを指定します。現在のところ問題なく使えるのはdvipdfmxのみです(dvipsはPDFにしたときにブックマークが文字化けします。その他のドライバは作者の環境ではテストされていません)。
デフォルトはdvipdfmxです。というわけで現在のところ指定してもしなくても同じです。
提出前のチェック
- 文字化けしたり、ページをはみ出している部分はありませんか?できあがったものをもう一度、全ページめくって確かめましょう。
- PDFにした場合、プロパティに校名などが入っていますのでこちらも確認しましょう(Acrobatならばメニューから[ファイル]→[プロパティ]→[概要])。
- 第21回大会閉会式の講評において、審査委員長神沼靖子先生から「ソースリストのはじめの方に、システム全体の概要がわかるものがあるとよい」という指摘があり
ました。クラス図のようなものが入っていると確かにソース全体の関係が把握しやすくなると思います。必要な方はsample.texに適当に手を加えてく
ださい。また、LaTeXの\sectionや\subsectionを適宜入れることでもわかりやすさを向上させることができると思います。
FAQ (よくある質問とその答え)
- 両面印刷にしたい。
→ PDFでの提出となったため、Version 5.0から両面印刷オプション(twoside)への対応を取りやめています。
- ページ番号などがおかしい。
→ \tableofcontentsや\Lastpageを使用するため、2回か3回platexで処理する必要があります。それでもおかしい場合は、sample.auxやsample.tocなどを削除してからもう一度ためしてみてください。
- ソースコード中の日本語が文字化けする。
→ 文字コードが適切ではないかもしれません。Version 5.0からはスタイルファイル自体をUTF-8+LFで組むようにしました。文字コードの変換はnkfというコマンド等で行えます。たとえばここにはWindows用の文字コード変換ユーティリティがたくさんあります。おすすめはこれ。Emacs使いならM-x set-buffer-file-coding-systemでutf-8-unixに。
- ソースファイルがたくさんありすぎて一覧をリストアップするだけで大変。
→ MacやUNIXなら(WindowsならCygwinを入れて)ソースのある最上位ディレクトリで、find . -name '*.c' -print
> ichiran.txt のようにしてください。
- C言語以外のソースコードを入れたい。
→
このスタイルファイルではデフォルトはC言語のソースコードを想定しています。デフォルトの言語を変えたい場合は、sample.texの18行目前後に
\lstset{...}という命令がありますので、その中のlanguage=Cとなっている部分をlanguage=Javaやlanguage=C
++のように変更してください。対応している言語はlistings.pdfを参照してください。言語を切り替えることで、書体が変更されるキーワード
(命令)が切り替わり、見栄えのよい出力が得られます。デフォルトの言語はCでいいがhoge.javaだけJavaスタイルにしたいという場合は、\InputSource{hoge.java}という部分を
\lstset{language=Java} % Javaにする
\InputSource{hoge.java} % ソース本体
\lstset{language=C} % Cに戻す
のようにしてください。
- タブをスペース4以外にしたい。
→ sample.texの18行目に\lstset{...}という命令がありますので、その中のtabsize=4という行を変更してください。
- ヘッダーにサブタイトルが出力されない。
→ 場所的な制限から、メインタイトルしか出ないようにしてあります。
- ソースコードの色を調整したい(文字をすべて黒にしたいなど)
→ sample.texの18行目\lstset{...}の中のbasicstyle, keywordstyle, commentstyle,
identifierstyle, stringstyleといったキーワードの設定を見てください。色の例についてはcolor.styに付属のcolor.dviもしくは熊澤先生のページを参考にしてください。
- ハイパーリンクを作りたくない
→ proconsrc.styで内部的に使用している hyperref.styでハイパーリンクを作らないようにとdraftモードにしてしまうとその他の設定もすべて無効になってしまうため、ハイパーリンクを作らないようにはできません。ただしハイパーリンクを見えなくすることはできます。proconsrc.styの97行目のhidelinksを有効にしてください。
- PDFを開いたときの最初の表示が「幅にあわせて連続表示」になってしまうのを変えたい
→
まだproconsrc.styのオプションとしては用意していませんのでproconsrc.styを直接いじる必要があります。
proconsrc.styの82行目あたりに\hypersetup{...}という設定があり、
PDF表示の設定もここにありますので、このページを参考にしつつpdfstartviewとpdfpagelayoutをお好みに設定してください。
おことわり
- このパッケージはプロコン委員会公認のものではありません。よって、このパッケージを使って得られる書式と、その年にプロコ ン委員会から提出を求められる書式が異なる場合があります。この場合、提出したソースリストを受理してもらえない可能性もありますので、その年のソースリ
スト提出書式をきちんと確認してください。受理してもらえなくても当方では関知しません。
- LaTeXの都合でうまく組版されない場合もあるので、必ず全ページを目で確認してください。うまく組版されていない・文字化けしているなどの原因により、評価が下げられても当方では関知しません。
- このパッケージに含まれるすべてのファイルはパブリックドメインとします。コピーや改造、配布は自由に行っていただいてかまいません。よりよいものができたらぜひ公開してください。
- ザ・ドリフターズはこのパッケージとは無関係です。
更新履歴
- Version 3.3 (2010.10.27)
- Version 3.5 (2011.2.17)
- 片面印刷に対応。\documentclassのオプションにtwosideをつけると両面印刷、つけないと片面印刷になります。
- 行番号がフレームの中に入るように右にずらした。これで穴あけパンチも大丈夫。
- \MakeTOCコマンドを改変。目次ページのヘッダに"Contents"と入れるようにしました。目次の下に"Typeset
by proconsrc.sty"と表示されるようにしました。
- sample.texで目次のページを1ページ目とするようにした(従来は目次が2ページ目になっていた)。
- サンプルのチームメンバー変更。リーダーをいかりや長介さんに。荒井注さんは一般メンバーに移動。(スタイルファイルと関係ないな!)
- Version 3.6 (2011.7.28)
- ファイル名にアンダースコア(_)、$記号が入っている場合に対応。
- sample.tex内で、1行が長い場合に改行する処理をデフォルトでONにした(breaklines=true)。
- Version 4.0 (2012.9.15)
- sample.texで片面印刷をデフォルト設定にした。(PDFとして閲覧することを考慮した修正)
- hyperrefパッケージを導入。目次から各プログラムにジャンプできるようにした。PDFのしおりにも対応。リンクを作成する機能をデフォルトでオンにした(切るときはnohyperオプション)。(PDFとして閲覧することを考慮した修正)
- colorパッケージを導入。プログラミング言語固有のキーワードやコメントを色分けできるようにした。(PDFとして閲覧することを考慮した修正)
- 付属のtexclean.batで*.outも削除するようにした。
- Version 5.0 (2014.9.1)
- 表紙に登録番号を追加した。
- ファイルに貼り付けるためと印刷物本体のために表紙ページを2枚印刷するようにしていたがPDFでは不要なので1枚だけにした。
- 両面印刷への対応を取りやめた。
- nohyperオプションを廃止した。
- 表紙と目次に一発で戻れるしおりをPDFに作成するようにした。
- ヘッダーとフッターの、学校名と作品名の配置を変更した。
- サンプルに使っていたソースをbzip2のものから独自のものに変更した。
今後の予定
- ファイル名の拡張子に応じて自動で\lstsetを切り替えるようにする。
- ソースの色分けに使っている配色をもう少しセンス良く。
- 文字コードの違いを自動吸収したい。
- このドキュメント自体をPDFにする。Webブラウザ上だと読みにくい。
- dvipdfmx以外のドライバへの対応は必要?
その他、うまく組版できないなど不具合がありましたらお知らせください。できるだけ対処します。
Copyright 2010-2014 Shoichi Ito all rights reserved.
Last update: September 1, 2014