LaTeX
TeX
虫食い算
TeXで虫食い算

TeX(LaTeX)で虫食い算を作る方法(2)

前書き

 TeXで虫食い算を作るパッケージの、コマンド部分の構想が固まったので書いておきます。これが本当にTeXないしLaTeXで表現できるかはよくわかりませんがたぶんできるんじゃないかと思います。 
 前提条件としてはTeX(LaTeX)で虫食い算を作る方法(メモ書き)を読んでおけば良いと思います。

穴部分の表現

\eaten{}

が出て、{}内に数字や文字を入れるとそれが□内に表示されるようになるようにしたいです。

 この時、□の内部部分の大きさは、全角1マスより少し大きめがよろしいと考えています。
 また、

\halfeaten{}

で、□を縦に半分割ったような形の穴を出すことができればよいとも考えています。これはn進法虫食い算などで役に立つはずです。

肝心の表現部分について

 これは掛け算と割り算の虫食い算についてのみ想定していますし、それは筆算の形をしていることが条件とします。それ以外については自分が作らないのできちんとこのパッケージができてから余裕があったら追加する形にします。また、自然数同士の筆算が範囲です少数とかは作ったことはありますがここではめんどうなので無視します。
 まず、掛ける数と掛けられる数と積を入力させます(割り算の場合は割る数と割られる数と商)。これによって虫食い算というか筆算の大きさが必ず確定するはずです。ここで、掛ける記号の置き場所ですとか商の位置ですとか線の長さですとかも同時に確定するのでその部分を出させます。
 そのあと、筆算の計算過程を入力させます。これは、掛け算であったら掛ける数と積の間、割り算であったら割られる数の下に入力するやつです。
 この計算過程では、穴の数と虫食い算での一番右端からの位置を入力させます。これによって穴の位置も確定して出力できるはずです。
 あとは線を引きたい人は\sen と打って自由な位置に線を引かせれば終わりです。

入力例

 TeX(LaTeX)で虫食い算を作る方法(メモ書き)で表現した虫食い算を流用して説明してみましょう。一応表で頑張った時のものも置いてみるので比較してみてください。因みに、コマンド名は本当に適当です。まだできていないので
(新しく画像を作るのすら面倒になったので画像も流用しているので穴がずれていたり、ルールとしてちょっと不適切であったりしますがすみません)

掛け算の入力

\begin{musikui}%始まり
%大きさを確定します
\kake{\eaten{}&9&\eaten{}&\eaten{}}%掛けられる数
{\eaten{}&\eaten{}&\eaten{}}%掛ける数
{\eaten{}&\eaten{}&\eaten{}&\eaten{}&\eaten{}&\eaten{}}%積
%穴を入れていきます
\musi{\eaten{}&\eaten{}&\eaten{}&\eaten{}&\eaten{}}{0}%穴と、右端からの距離です
\musi{\eaten{}&\eaten{}&\eaten{}&\eaten{}&6}{1}
\musi{8&\eaten{}&\eaten{}&\eaten{}}{2}
\sen %最後に線を出して終わりです
\end{musikui}%終わり

 結果は下の通り
掛け算出力結果.JPG

 因みに表でゴリ押すとこんな感じです。(\sikakuは□を出すコマンドで、\newcommandで最初に指定しています)

\begin{table}[h]
\begin{tabular}{cccccc}
&&\sikaku&9&\sikaku&\sikaku\\
&$\times$&&\sikaku&\sikaku&\sikaku\\\hline
&\sikaku&\sikaku&\sikaku&\sikaku&\sikaku\\
\sikaku&\sikaku&\sikaku&\sikaku&6& \\
8&\sikaku&\sikaku&\sikaku&& \\\hline
\sikaku&\sikaku&\sikaku&\sikaku&\sikaku&\sikaku\\
\end{tabular}
\end{table}

割り算の入力

\begin{musikui}
%大きさを確定
\wari{\eaten{}&\eaten{}&\eaten{}&\eaten{}&\eaten{}&\eaten{}}%割られる数
{\eaten{}&\eaten{}}%割る数
{\eaten{}&\eaten{}&\eaten{}&\eaten{}}%商
%穴を入れていきます
\musi{\eaten{}&\eaten{}}{3}穴と右端からの位置
\sen %線を出します
\musi{\eaten{}&\eaten{}}{2}
\musi{\eaten{}}{2}
\sen
\musi{\eaten{}&\eaten{}&\eaten{}}{1}
\musi{\eaten{}&\eaten{}}{1}
\sen
\musi{\eaten{}&\eaten{}}{0}
\musi{2&\eaten{}}{0}
\sen
\musi{0}{0}
\sen
\end{musikui}

 出力は以下の通りですが、この画像とは違って穴の下の線は全て割られる数と商の間の長い線と同じ長さに変更としました。そちらの方が処理がとても楽そうなので

割り算出力結果.JPG

 因みに表でゴリ押すとこうなります。

\begin{table}[h]
\begin{tabular}{ccccccccc}
&&&&&\sikaku&\sikaku&\sikaku&\sikaku\\\cline{4-9}
\sikaku&\sikaku&)&\sikaku&\sikaku&\sikaku&\sikaku&\sikaku&\sikaku \\
&&&&\sikaku&\sikaku&&&\\\cline{5-6}
&&&&&\sikaku&\sikaku&&\\
&&&&&&\sikaku&&\\\cline{6-7}
&&&&&\sikaku&\sikaku&\sikaku&\\
&&&&&&\sikaku&\sikaku&\\\cline{6-8}
&&&&&&&\sikaku&\sikaku\\
&&&&&&&2&\sikaku\\\cline{8-9}
&&&&&&&&0\\
\end{tabular}
\end{table}

最後に

 いかがだったでしょうか。このようなパッケージを作れたら良いな~と思っています。
 もし、上記のコマンドだとTeXやLaTeXじゃ処理できないよ!とかもっとこうしたらいいんじゃない?とかこのような仕組みを用いると考えている通りに出せるよ!とかあったら教えてください。どうぞよろしくお願いいたします。
 今はマクロについて勉強中ですが、本を読んでも難しくてなかなか先に進めていません。もっと努力する必要がありそうです。