AMC-TXT構文

LaTeX語にまだ慣れておらず、勉強する時間もない方のために、AMCにはAMC-TXTという特別な形式の簡単なテキストファイルを処理するフィルターが含まれています。この節では、AMC-TXTファイルの構文を詳しく解説します。LaTeXを用いて試験問題を精密に制御する場合は、この節はスキップしてください。

単純な例から始めましょう:

# AMC-TXTソースファイル
Title: はじめてのAMC試験問題
Lang: JA

Presentation: 以下の設問に最も適切な解答を
選択してください。

* カメルーンの首都はどれですか?
+ ヤウンデ
- ドゥアラ
- クリビ

** 以下の数のうち、正の数はどれですか?
- -2
+ 2
+ 10
[重要]重要

試験問題を含んだファイルは、UTF-8でエンコードされたプレーンテキストファイルでなければなりません。UTF-8はいくつかのテキストエディタ(geditなど)のデフォルトエンコーディングです。テキストをボールドにしたり、画像が埋め込めたりするような、OpenOffice/LibreOfficeやそれに類するエディタを使用しないでください。これらはテキスト以外に多量のデータを保存し、AMCはそれを読むことができません。

[注記]注記

デフォルトとして用いられるフォントはlibertineで、これは多数の言語の文字を含んだオープンソースフォントです。このフォントをインストールするか、そうでなければ他のフォントを選ぶ必要があります(下記オプション参照)。debian/ubuntuパッケージでAMCをインストールすれば、このフォントは推奨パッケージとしていっしょにインストールされます。

AMC-TXTの構造はすでにおわかりのとおりです。最初に全体的なオプションがあり、そして設問が続きます。

コメント

AMC-TXTソースファイル内の#文字で始まる行にはコメントを書くことができます。AMCはこれらの行を無視します。

全体オプション

以下のオプションを(任意の順序で)使用することができます:

Lang:

試験問題が記述されている言語を指定するのに用います。現時点では、DE(ドイツ語)、ES(スペイン語)、FR(フランス語)、IT(イタリア語)、NL(オランダ語)、NO(ノルウェー語)、PT(ポルトガル語)、JA(日本語、「日本語」参照)、AR(アラビア語、「アラビア語」参照)のみがサポートされています。オプションを指定しないと、英語が選択されます。他の言語用にローカライズ文字列を定義することもできます(L-xxx形式のオプション参照)。

PaperSize:

用紙サイズを設定します。設定可能な値は、A3A4A5A6B3B4B5B6letterlegalANSIAANSIBANSICANSIDANSIEです。

Title:

試験タイトル。試験問題用紙の上部に印刷されます。

Presentation:

試験の注意事項を記述する文章(時間、規則など)です。

ShuffleQuestions:

1なら(デフォルト)、設問がシャフルされ、用紙ごとに順序が変わります。0なら、ファイルに記述された通りの順序で設問が並びます。

RandomSeed:

シャフル用の乱数生成器のシードはこのオプションで変更することができます。設定されている値(1から4194303の範囲で選択できます)が変更されると、シャフル結果が変わります。当然ですが、問題用紙を印刷したあとはこの値を変更してはなりません。

[注記]注記

この値はxyファイルに(\rngstate{1}{1527384}のように)記録されます。デフォルト値は1527384です。

Code:

正の整数値nを指定すると、n桁分の受験番号をマークする欄が試験問題用紙に追加されます。

CodeDigitsDirection:

受験番号欄の方向を(virticalまたはhorizontalで)設定します。設定しない場合は桁数により(桁数が少なければ水平、多ければ垂直に)自動選択されます。

Columns:

正の整数値nを指定すると、問題用紙をnカラムで生成します。

CompleteMulti:

1なら(デフォルト)、複数選択問題(正解数が0以上の任意個)において、「該当なし」の選択肢を追加します。これをしないと、「受験者がこの設問に解答しなかった」のと「受験者がこの設問に正解がないと考えた」のが区別できません。この選択肢をつけたくない場合は0に設定してください。

L-None:

該当なし」(上記オプション参照)に代わる文字列を設定します。

QuestionBlocks:

1なら(デフォルト)、各設問は複数のカラムやページにまたがらないように透明な枠で囲まれます。0なら、必要に応じて設問が分割され、読み易さは多少犠牲になりますがページ数が節約できます。

L-Question:

必要なら、試験問題内での「」に代わる文字列を設定します。

L-Name:

受験者の氏名記入欄に表示する「氏名」に代わる文字列を設定します。

L-Student:

Codeオプションが使用された場合に、受験者に、受験番号と氏名を記入するよう指示する短い文章です。

TitleWidth:

Code:を使用しない場合のタイトル領域の幅。デフォルト値は.47\linewidthです。

NameFieldWidth:

氏名フィールドの幅。LaTeXの通常の長さ単位が使用できます。デフォルト値は、Code:を使用する場合は5.8cmで、使用しない場合は.47\linewidthです。

NameFieldLines:

氏名フィールドボックスの行数。デフォルト値は、Code:を使用する場合は2で、使用しない場合は1です。

NameFieldLinespace:

氏名フィールドボックスの行間。デフォルト値は.5emです。

Pages:

各問題用紙の最小ページ数を指定します。問題がこのページ数より少ない場合は白紙ページが追加されます。別紙答案用紙を使用している場合は、q+a (例 4+2)のように書くことができ、qは問題用紙自身の最小ページ数、q+aは答案用紙も含めた最小ページ数になります。

ManualDuplex:

1にすると(これはデフォルト値ではありません)、各試験問題用紙のページ数が偶数になり、PDFの試験問題用紙を手動で印刷する際、両面印刷モードで一度に行うことができます。

SingleSided:

1にすると(これはデフォルト値ではありません)、設問のページ数が奇数の場合でも、設問と別紙答案用紙の間に空ページが追加されません。このモードは試験問題用紙を片面印刷するときや、設問と答案用紙を分ける必要がないときに有用です。

BoxColor:

受験者がマークするボックスの色です。これによりボックスは指定した色(例えばredや、薄いグレーもありえます)で印刷され、データ取込み時の誤検出を軽減します。色は、有効なxcolor(詳細はLaTeXのxcolorドキュメント参照)で、redmagentapinklightgraycyanや、#RRGGBBの形式で#FFBEC8(淡い赤)のように指定します。

DefaultScoringS:

単一選択問題(唯一の選択肢のみが正解になる設問)でのデフォルト採点基準です。詳細は「採点基準」を参照してください。デフォルト値は、正解に1点、それ以外に0点です。

DefaultScoringM:

複数選択問題(正解の選択肢が0個、1個あるいは複数個ありうる設問)でのデフォルト採点基準です。詳細は「採点基準」を参照してください。デフォルト値はhaut=2で、完答に2点、1箇所の誤り(マークすべきでないボックスをマークしたり、マークすべきボックスをマークしなかったり)ごとに1点減点します(ただし負にはしない)。

LaTeX:

文章中にLaTeXコマンドを使用したい場合は、このオプションを1にしてください。これにより例えば、$\sqrt{a+b}$のような数式を挿入できます。0なら(デフォルト)、記述した文章がそのまま印刷されます。

LaTeX-Preambule:

LaTeXプリアンブルに追加したいコマンド(例えば\usepackageコマンドなど)を設定します。

LaTeX-BeginDocument:

LaTeXのdocument環境の先頭に挿入したいコマンド(例えばマクロ定義など)を設定します。

Disable:

無効にする機能のリストをコンマで区切って指定します。現在実装されている機能はverbatim「逐語的コンテント」参照)、images「画像」参照)、embf「太字、斜体、タイプライター、アンダーライン」参照)、local_latex「LaTeXコードの断片」参照)です。

PackageOptions:

LaTeXのautomultiplechoiceパッケージに渡す追加オプションを与えます(「パッケージオプション」参照)。

別紙答案用紙

試験問題に別紙答案用紙を用いる場合は、次のオプションを指定してください:

SeparateAnswerSheet:

1なら、別紙答案用紙が追加されます。

AnswerSheetTitle:

別紙答案用紙のタイトルです。

AnswerSheetPresentation:

別紙答案用紙の注意書きです。例えば、解答をこの用紙に記入しなければ無効であることを受験者に伝えます。

AnswerSheetColumns:

別紙答案用紙のカラム数です。

AutoMarks:

1にすると、automarksオプション(「パッケージオプション」参照)を使用します。

設問

単一選択問題(唯一の選択肢のみが正解となる設問)は、行を*で始め、複数選択問題(任意個の正解がある設問)は**で始めます。そのうしろに設問文を続け、以降の行に+で始まる正しい選択肢と、-で始まる誤った選択肢を書きます。

設問オプション

設問にはいくつかオプションが設定できます。それらは次の例のように、***のあとに角括弧で囲み、カンマで区切って並べます:

*[ordered,horiz,id=sum] 1足す1は
いくつですか?
- 0
- 1
+ 2

設問に使用できるオプションは以下のとおりです:

horiz

選択肢を横に並べていきます。

columns=n

選択肢をnカラムに配置します。

ordered

選択肢をシャフルせず、記述ファイル内と同じ順序を保ちます。

id=xxxx

設問に名前をつけ、出力した採点表の得点がどの設問のものかわかりやすくします。この名前にはアクセントなどを含まずLaTeXの特殊文字(_^%など)でない単純な文字しか使用できません。

旧版との互換性のためidのかわりにnameも使用できますが、idを使用してください。

indicative

この設問の採点結果を、受験者の最終得点に加えません。

next

ShuffleQuestionsオプションで設問をシャフルする場合でも、直前の設問の次にこの設問を配置します。

first

この設問を常にグループの先頭に配置します(「設問グループ」を参照してください)。

last

この設問を常にグループの末尾に配置します(「設問グループ」を参照してください)。

採点基準

特定の設問や選択肢の開始文字(***+-)とオプションの後に、波括弧で囲んで採点基準を設定することができます。例えば次の例のようになりますが、採点基準の詳細については、「採点基準」を参照してください。

*{b=2,m=-1} フランスの首都はどれですか?
+ パリ
- リール
- マルセイユ
- ワガドゥグー
-{-2} ニューヨーク

**[ordered,horiz,id=positive]{haut=1} 以下の数のうち、正の数はどれですか?
- -2
+ 2
+ 10

記述式設問

次の例のように<>で囲むことにより、記述式の設問(「記述式設問」参照)を定義することができます:

*<lines=4> 月について述べよ。
-[O]{0} 誤り
-[P]{1} 部分点
+[V]{2} 正解

以下のグローバルオプションを使用することも検討すべきです:

L-OpenText:

別紙答案用紙に記入するよう指示するテキスト(関連する場合のみ)。

L-OpenReserved:

採点用ボックスに記入しないようボックス脇に表示するテキスト。

複数行

文章はどこで切って次の行に続けても(それが空行であっても)、それがオプションや次の設問文や選択肢の開始と混同さえされなければかまいません。例として次の設問を見てください:

* 2
  + 2はいくつですか?
- 0
+ 4
- 10

これは正しいAMC-TXTの設問ですが、これは意図したとおりには扱われません。それは、2行目が、1行目の続きと認識されず、この設問の最初の選択肢の形式になっているためです!

同様の問題は次のAMC-TXTの設問でも発生します。ここでは、「Gershwin:」が全体オプションの定義とみなされてしまいます。

* みなさんは、George
  Gershwin: (作曲家)を知っています。
  彼が生まれたのは何年ですか?
+ 1898年
- 1892年
- 1902年

正しい書き方は次のようになります:

* みなさんは、George Gershwin: 
  (作曲家)を知っています。
  彼が生まれたのは何年ですか?
+ 1898年
- 1892年
- 1902年

空行があると改行が挿入されます:

Presentation: タイトル

試験の説明。

** 難問です。

空には星が何個ありますか?
- 1個
- 2個
- 何千万個も

タイトル

タイトルをつけるには、[====]で囲みます。

逐語的コンテント

逐語的なブロック(プログラムのコードのような)を得るには、それを[verbatim][/verbatim]で囲みます:

* 次のプログラムは何を出力しますか?
[verbatim]
main( )
{
    printf("hello, world\n");
}
[/verbatim]

+ [| hello, world |]
- [| hello |]
- [| world |]

太字、斜体、タイプライター、アンダーライン

太字のテキストを出力するには、それを[**]で囲みます。斜体のテキストを出力するには、それを[__]で囲みます。タイプライターのテキストを出力するには、それを[||]で囲みます。アンダーラインのテキストを出力するには、それを[//]で囲みます。

* [_フランス_]の[*首都*]はどこですか?
+ パリ
- リール
- マルセイユ

画像

次の構文を用いて文書に画像を追加することができます:

![height=2cm]images/bird.png!

これにより、プロジェクトディレクトリにある画像images/bird.pngが、2cmの高さで追加されます。角括弧内で使用できるオプションはLaTeXコマンド\includegraphicsのオプションと同じです (例えばwidth=3cmkeepaspectratio)。横幅の3/4の幅で画像をセンタリングしたい場合は、次のようにします。

!{center}[width=.75\linewidth]images/map.pdf!

LaTeXコードの断片

文書内に小さなLaTeXコード片を置くには、次のように二重の角括弧内にそれを入れます:

[[\multiSymbole{}]]の記号のある設問の正解は1個とは限りません。0個の場合や複数の場合があります。

設問グループ

次の構文により、複数の設問をグループに入れ、シャフルしても離ればなれにならないようにできます:

*( マーチン・ルーサー・キングに関する問題

* 生年はいつですか?
- 1901年
+ 1929年
- 1968年

* 没年はいつですか?
- 1945年
- 1515年
+ 1968年
- 1999年

* どこで生まれましたか?
+ アトランタ
- メンフィス
- ニューヨーク

*) マーチン・ルーサー・キングに関する問題はここまで

次のように、グループにオプションを指定することができます:

*([shuffle=false,columns=2] マーチン・ルーサー・キングに関する問題

以下のオプションが使用できます:

shuffle=xxx

グループ内の設問をシャフルするかどうかを、truefalseで示します。デフォルト値はグローバルなShuffleQuestionsオプションから得ます。

columns=n

グループの設問のカラム数。

group=nom

グループに名前をつけます(内部的な事情)。

numquestions=n

このオプションによりグループの先頭のn個の設問だけが使用されます。設問がシャフルされている場合は、グループからn個の設問をランダムに選べるようになります。

[注記]注記

firstlastのオプションのついた設問には影響しません(必ず挿入されます)。さらに、nextオプションで結びついた設問どうしは一つの設問としてカウントされます。

needspace=dimen

グループを開始するのに必要な高さを(4cm のように単位を付けて)指定します。現在のページの残りの垂直スペースがこれより少なければ、グループを次のページから開始します。

アラビア語

アラビア語で試験問題を作成するのは少し特殊です。もちろん次のオプションを用います。

Lang: AR

さらに、以下の全体オプションを使用することができます:

ArabicFont:

アラビア語テキストに用いるフォントです。デフォルト値はArabEyesプロジェクト(debian/ubuntuではttf-arabeyesパッケージにあります)のフォントRasheeqです。

[注記]注記

非アラビア文字を挿入するには、LaTeXオプションをオンにして、挿入したい文字をLaTeXコマンド\textLRの引数として\textLR{xelatex command}のように指定してください。

日本語

日本語の試験問題は次のオプションを用いて生成することができます。

Lang: JA

AMCは、生成されるLaTeXソースにいくらか調整を行い、日本語テキストが処理できるようにします。

[警告]警告

この場合、AMCはAMC-TXTソースファイルから作られたLaTeXファイルを処理するのにplatexコマンドを用います。これには、最近のバージョンのplatexが必要です。いくつかの旧版linuxディストリビューションに含まれているtexlive 2009に付属のplatexは、AMCに対応していません

他のファイルのインクルード

次のようにして他のファイルをインクルードできます:

IncludeFile: file-to-include.txt
[警告]警告

異なるプロジェクトから同じファイルをインクルードするときは十分に注意してください!仮にプロジェクトAとBから/home/alexis/questions-a.txtをインクルードしているとしましょう。プロジェクトAは完了し、現在プロジェクトBが進行中です。/home/alexis/questions-a.txtにある設問の採点基準を更新し、さらに他の設問を追加します。もし、プロジェクトAの採点をこの新しい採点基準で更新する必要が生じたとき、プロジェクトAで使用した設問のほかに新たな設問があることからAMC内で不整合が生じ、Aの採点はすべておかしくなってしまいます。