クイズの問題集をlatexで自動で作る。なぜならwordとか使えないから
以下の感じになるぜよ
これがソースコード
\documentclass[a4paper,10pt,dvipdfmx]{jsarticle}
\usepackage{csvsimple} % csv読み込み
\usepackage{longtable} % テーブル設定(自動的に改ページしてくれる)
\usepackage{ifthen} % 条件式を書く(奇数番号の問題の背景色処理など)
\usepackage{colortbl} % 背景色
\usepackage{pxrubrica} % ルビ振り(文字サイズ指定可能)
% フォント指定
\special{pdf:mapline rml H KozGoPr6N-Medium.otf} % 小塚ゴシック使用(なかったら環境に適したものを使ってください.)
\special{pdf:mapline gbm H KozGoPr6N-Medium.otf}
% 行間設定
\renewcommand{\baselinestretch}{1.125}
% セル上部の空白設定(ルビ文字が被らないように)
\renewcommand{\arraystretch}{1.125}
% 背景色のコマンド定義
\newcommand{\oddC}{\cellcolor[rgb]{0.8, 0.8, 0.9}} % 奇数番号背景
\newcommand{\evenC}{\cellcolor[rgb]{1, 1, 1}} % 偶数番号背景
% ドキュメント開始
\begin{document}
{
\rubysizeratio{0.7} % ルビサイズ指定
\csvreader[longtable=p{2cm}|p{10cm}|p{3cm}, % セル書式
table head=\hline \bfseries 番号 & \bfseries 問題文 & \bfseries 解答\\\hline, % ヘッダー
late after line=\\\hline\hline\hline
] % セル末尾処理
{mondai.csv}{問題番号=\問題番号,注意事項=\注意事項,問題文=\問題文,解答=\解答,解説=\解説} % csv読み込み, 変数に代入(ファイルは同フォルダ下のmondai.csvを読み込み.列は左から 問題番号,注意事項,問題文,解答,解説 になってます.)
{
% 問題番号ごとに色分け
\ifthenelse{\isodd{\問題番号}{}}{
% 注意事項で条件分け
\ifthenelse{\equal{\注意事項}{}}
{
\oddC \問題番号 & \oddC \問題文 & \oddC \解答 % ここはセルごとに色を設定しないとコンパイル不可
}{
\oddC \問題番号 \par【\注意事項】 & \oddC \問題文 & \oddC \解答 % \parじゃないと改行されないので注意
}
\ifthenelse{\equal{\解説}{}}{}{
\\\hline \rowcolor[rgb]{0.8, 0.8, 0.9} \multicolumn{3}{p{158.75mm}}{ % ここのpのサイズは手動でいい値を見つけるしかない...
\begin{tabular}{p{156.5mm}} % ここはmulticolumnの中にtabularを入れると綺麗に色が塗られる
\解説
\end{tabular}
}
}
}{
\ifthenelse{\equal{\注意事項}{}}{%
\oddC\evenC \問題番号 & \oddC\evenC \問題文 & \oddC\evenC \解答
}
{
\oddC\evenC \問題番号 \par【\注意事項】 & \oddC\evenC \問題文 & \oddC\evenC \解答
}
\ifthenelse{\equal{\解説}{}}{}{
\\\hline \rowcolor[rgb]{1, 1, 1} \multicolumn{3}{p{158.75mm}}{
\begin{tabular}{p{156.5mm}}
\解説
\end{tabular}
}
}
}
}
}
\end{document}
これがファイル例(mondai.csv)
問題番号,注意事項,問題文,解答,解説
1,,6、28、496などのように、その数以外のすべて約数の和が、元の数と等しくなるような自然数のことを何というでしょう?,完全数,4つ目の完全数は8128
2,,思いがけない幸いを意味する「\ruby[g]{僥倖}{ぎょうこう}」を漢字で書いたとき、二つの文字に共通する部首は何でしょう?,人偏(僥倖が出た場合はもう一度を取る),
3,,火を信仰していることから「\ruby[g]{拝火教}{はいかきょう}」の別名もある、聖典をアベスターとするササン\ruby[g]{朝}{ちょう}ペルシアで\ruby[g]{国教}{こっきょう}に指定されていた宗教は何でしょう?,ゾロアスター教,「ひをみ」だと「火を見ると消す習性があることから『森の消防士』とも呼ばれる、鼻の先から生えた大きな角が特徴的な動物は何でしょう?」で答えがサイとかなんとか
4,ここに注意事項,ここに\ruby[g]{問題文}{もんだいぶん}。 \linebreak ルビを付けたい場合は\textbackslash ruby[g]\{問題文\}\{もんだいぶん\}というようにcsvに書いておく)\linebreak \textbackslash linebreakと書けばセル内改行ができるが上のように気持ち悪い文になる,ここに解答,ここに解説(解説がない場合はここは省略される)