クイズの問題集を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と書けばセル内改行ができるが上のように気持ち悪い文になる,ここに解答,ここに解説(解説がない場合はここは省略される)

この記事が気に入ったらサポートをしてみませんか?