アイウエオカウンターーマークシート用

\newif\ifdr
\drtrue
%%% 
%%% アイウエオカウンタ
%%% 
\makeatletter
\def\@kkana#1{%
  \ifcase#1\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\else\@ctrerr\fi}
\def\kkana#1{\expandafter\@kkana\csname c@#1\endcsname}%カナ
\makeatother
%%% 
%%% 指定サイズの箱の中にテキスト
%%% \xbox[テキストの位置]{線の太さ}{縦}{横}{テキスト}
%%% テキストの位置は l/r/c で指定、デフォルトは c
\def\xxbox#1#2#3#4{{\fboxsep=0pt \fboxrule=#1%
\fbox{\hbox{$\vcenter{\vbox to #2{\vss\hbox to #3{#4}\vss}}$}}}}
\newcommand{\xbox}[5][c]{%
\ifx#1l \xxbox{#2}{#3}{#4}{\,#5\hss\,}\else%
\ifx#1r \xxbox{#2}{#3}{#4}{\,\hss#5\,}\else%
\ifx#1c \xxbox{#2}{#3}{#4}{\hss#5\hss}\fi\fi\fi}
%%% 
%%% マーク用箱:
%%% 答えを入れると箱とラベルを自動的に生成する。
%%% \drfalse とすれば答えの表示は消える。
%%% (例)次の\shikaku{}に当てはまる……
%%%    $1234+5678=\shikaku{6912}$である。
%%% 
\makeatletter 
\newcounter{markcnt}
\def\shikaku#1{%
  \def\marklbl{\empty}
  \@tempcnta\z@
  \@tfor \@tempa:=#1\do{\advance\@tempcnta\@ne%
  \addtocounter{markcnt}{1}
  \edef\marklbl{\marklbl\kkana{markcnt}}}%
  \ifnum\@tempcnta=6 \def\markwd{60mm}\else%
  \ifnum\@tempcnta=5 \def\markwd{30mm}\else%
  \ifnum\@tempcnta=4 \def\markwd{25mm}\else%
  \ifnum\@tempcnta=3 \def\markwd{20mm}\else%
  \ifnum\@tempcnta=2 \def\markwd{15mm}\else%
  \def\markwd{10mm}\fi\fi\fi\fi\fi
  \thinspace\xbox{1pt}{5.7mm}{\markwd}{\marklbl\ifdr\textcolor{red}{\tt\footnotesize#1}\fi}\thinspace}
\makeatother
%%% \sqrtをオプション付きまたはtxfonts/pxfonts等で使うとカウンタがずれるため:
\makeatletter 
\AtBeginDocument{\let\temp@sqrt\sqrt
\newsavebox{\myroot}%
\def\temp@Sqrt[#1]#2{\sbox{\myroot}{\ensuremath{#2}}\temp@sqrt[#1]{\usebox{\myroot}}}
\def\temp@SQrt#1{\sbox{\myroot}{\ensuremath{#1}}\temp@sqrt{\usebox{\myroot}}}
\def\sqrt{\@ifnextchar[\temp@Sqrt\temp@SQrt}}%
\makeatother
%%%