全国高等専門学校プログラミングコンテスト
ソースリスト提出支援のためのLaTeXスタイルファイル
proconsrc.sty
Version 7.0
Compiled by Shoichi Ito (shoichi@nagano-nct.ac.jp)
■ このパッケージについて
全国高等専門学校プログラミングコンテストの本選ではソースリストをPDFで提出する必要があります。このソースリスト作成をLaTeXにより簡単かつ美しく行うためのスタイルファイルがproconsrc.styです。ハイパーリンクの作成や構文着色といった機能があります。
■ 準備
proconsrc.styの動作には、listings環境とその日本語化パッチ(jlisting.sty)、奥村晴彦先生による新ドキュメントクラスが必要です。
- お使いのマシン上でLaTeXを使えるようにします。Windowsの人はあべのりゆきさんのTeXインストーラ3を使って角藤版W32TeXを、Macの人は奥村晴彦先生のページを参照してMacTeXを入れるのがよいでしょう。
- ここを参考にして奥村晴彦先生による新ドキュメントクラスを使えるようにします。角藤版W32TeXやMacTeXには最初からインストールされていますのでこのステップは必要ありません。
- listings環境を使えるようにします。角藤版W32TeXやMacTeXには最初からインストールされていますのでこのステップは必要ありません。
- ここからjlisting.sty.bz2をダウンロードして解凍してください。jlisting.styが得られます。
以上で準備完了です。
■ 使い方
- 作業用のディレクトリを作成し、本アーカイブに同梱のsample.texとproconsrc.styという2つのファイルと、さきほど生成したjlisting.styを同じディレクトリに入れます。
- ソースコードのファイルをすべてsample.texと同じディレクトリにコピーします。サブディレクトリがあってもかまいません。
- sample.texをテキストエディタで開きます。sample.texとproconsrc.styは文字コードUTF-8+改行コードLFで記述されています。
- PostScript/PDFに変換するためのsample.texの11行目でdviを変換するドライバを指定しておきますが、現在のところ問題なく使えるのはdvipdfmxのみです。dvipsはPDFにしたときにブックマークが文字化けします。その他のドライバは作者の環境ではテストされていません。指定しない場合はdvipdfmxが使われます。
- sample.texの14行目に「%%%%% ここを書き換える %%%%%」という行があります。ここから「%%%%%%%%%%」という行までの間に、参加者の情報を書き込む部分がありますので適宜書き換えます。特に迷うことはないでしょう。
- 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を指定してください。
- sample.texを保存し、コマンドラインから
$ platex sample.tex
のように入力してコンパイルします($はプロンプトなので入力の必要はありません)。もし"LaTeX Warning: Label(s)
may have changed. Rerun to get cross-references right."という警告が出ていたらもう一度同様のコマンドを実行してください。
- エラーがなければsample.dviができています。コマンドラインから
$ dvipdfmx sample.dvi
のように入力してPDFに変換します。
- sample.pdfをAcrobatやプレビュー.appで開いて期待通りにできているか確認しましょう。 LaTeXの都合でうまく組版されない場合もあるので、必ず全ページを目で確認してください。
■ オプション
proconsrc.sty自体のオプションは以下の通りです。
- dvipdfm, dvipdfmx, dvips, dvipsone, dviwindo ・・・ dviを変換するために使用するドライバを指定します。現在のところ問題なく使えるのはdvipdfmxのみです(dvipsはPDFにしたときにブックマークが文字化けします。その他のドライバは作者の環境ではテストされていません)。
デフォルトはdvipdfmxです。というわけで現在のところ指定してもしなくても同じです。
■ 提出前のチェック
- 文字化けしたり、ページをはみ出している部分はありませんか?できあがったものをもう一度、全ページめくって確かめましょう。
- PDFのプロパティに校名などが入っていますのでこちらも正しく入っているか確認しましょう(Acrobatならばメニューから[ファイル]→[プロパティ]→[概要])。
- 第21回大会閉会式の講評において、審査委員長神沼靖子先生から「ソースリストのはじめの方に、システム全体の概要がわかるものがあるとよい」という指摘があり
ました。クラス図のようなものが入っていると確かにソース全体の関係が把握しやすくなると思います。必要な方はsample.texに適当に手を加えてく
ださい。また、LaTeXの\sectionや\subsectionを適宜入れることでもわかりやすさを向上させることができると思います。
■ FAQ (よくある質問とその答え)
- listings.styがないといわれる。
→ 日本語対応のlistings環境を使えるようにします。
- ここの下の方に"Download the contents of this package in one zip archive (1.4M)."とありますのでそこからlistings.zipをダウンロードします。
- listings.zipをTeXの管理下の適当なフォルダに移動します。たとえばC:\tex\share\texmf-local\tex\latex\などに置きます。
- コマンドラインを開き、そのディレクトリに移動したうえで次のように入力します(%はプロンプトのつもり)。WindowsではCygwinがインストールされていないと各種コマンドが使えないかもしれませんが適宜読み替えてください。
$ unzip listings.zip
$ rm listings.zip
$ mv jlisting.sty listings
$ cd listings
$ latex listings.ins
$ mktexlsr
- これでlistings環境のインストールは完了です。上記listingsフォルダにあるlistings.pdfがlistings.styの正式な説明書ですので一度は目を通しておくとよいでしょう。
- 自分が使っているプログラミング言語がない。
→ たとえば標準ではGo言語への対応がありません。listings.styの\lstdefinelanguage{...}を使ってGo言語のルールをsample.texの\begin{document}よりも前に追加すると言語を増やすことができます。listings.pdfのセクション3.2やこちらを参照してください。\lstdefinelanguageでHOGEという名前の言語を追加した場合、\InputSource[HOGE]{filename}のように使えます。
- ページ番号などがおかしい。
→ \tableofcontentsや\Lastpageを使用するため、2回か3回platexで処理する必要があります。それでもおかしい場合は、sample.auxやsample.tocなどを削除してからもう一度ためしてみてください。
- ソースコード中の日本語が文字化けする。
→ 文字コードが適切ではないかもしれません。proconsrc.sty自体は文字コード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 のようにしてください。
- タブをスペース4個以外にしたい。
→ proconsrc.styの152行目から169行目にかけて書式の設定があります。この中のtabsize=4という行を変更してください。
- ヘッダーにサブタイトルが出力されない。
→ 場所的な制限から、メインタイトルしか出ないようにしてあります。
- ソースコードの見た目や色を調整したい(文字をすべて黒にしたいなど)
→ proconsrc.styの152行目から169行目にかけて書式の設定があります。この中のbasicstyle, keywordstyle,
commentstyle, identifierstyle, stringstyleといったキーワードの設定を見てください。色の例についてはcolor.styに付属のcolor.dviもしくは熊澤先生のページを参考にしてください。
- ハイパーリンクを作りたくない。
→ proconsrc.styで内部的に使用しているhyperref.styでハイパーリンクを作らないようにとdraftモードにしてしまうとその他の設定もすべて無効になってしまうため、ハイパーリンクを作らないようにはできません。ただしハイパーリンクを見えなくすることはできます。proconsrc.styの99行目のhidelinksを有効にしてください。
- PDFを開いたときの最初の表示が「幅にあわせて連続表示」になってしまうのを変えたい。
→ まだproconsrc.styのオプションとしては用意していませんのでproconsrc.styを直接いじる必要があります。 proconsrc.styの86行目から\hypersetup{...}という設定があり、
PDF表示の設定もここにありますので、このページを参考にしつつpdfstartviewとpdfpagelayoutをお好みに設定してください。
- 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) script | sh | |
Bash shell script | bash | |
C | C | |
C++ | C++ | |
C# | {[Sharp]C} | |
Objective-C | {[Objective]C} | |
Swift | Swift | ○ |
HTML | HTML | |
CSS | CSS | ○ |
JavaScript | JavaScript | ○ |
Java | Java | |
PHP | PHP | |
XML | XML | |
Python | Python | |
Ruby | Ruby | |
Lisp | Lisp | |
Perl | Perl | |
Haskell | Haskell | |
Scala | Scala | |
SPARQL | SPARQL | |
SQL | SQL | |
Visual Basic | {[Visual]Basic} | |
x86アセンブリ言語 | x86masm | |
680x0アセンブリ言語 | Motorola68k | |
(整形なし) | plain | ○ |
■ おことわり
- このパッケージはプロコン委員会公認のものではありません。よって、このパッケージを使って得られる書式と、その年にプロコン委員会から提出を求められる書式が異なる場合があります。この場合、提出したソースリストを受理してもらえない可能性もありますので、その年のソースリスト提出書式をきちんと確認してください。受理してもらえなくても当方では関知しません。
- LaTeXの都合でうまく組版されない場合もあるので、必ず全ページを目で確認してください。うまく組版されていない・文字化けしているなどの原因により、評価が下げられても当方では関知しません。
- このパッケージに含まれるすべてのファイルはパブリックドメインとします。コピーや改造、配布は自由に行っていただいてかまいません。よりよいものができたらぜひ公開してください。
- その他、うまく組版できないなど不具合がありましたらお知らせください。おそらくすぐには対処できませんが、来年度に向けて、くらいの感じでできるだけ対処します。
Copyright 2010-2018 Shoichi Ito all rights reserved.
Last update: March 27, 2018