(* Require XMLgen_MC.nb ver >=0.04 *)
SetDirectory[NotebookDirectory[]];
<<XMLgenMC.mx;
TTS[mt_]:=ToString[TeXForm[StandardForm[mt]]];
TOT[mt_]:=ToString[OneLineTeXForm[mt]];
TOTT[mt_]:=ToString[OneLineTeXForm[Transpose[mt]]];
TOC[mt_,c_]:=TOTT[{Transpose[mt][[c]]}];
TTD[r_]:=StringReplace[TT[r],"\\frac"->"\\dfrac"];
Rnz[m_]:=(RandomInteger[m]+1)*(2*RandomInteger[1]-1); (* \\pm 1,\pm2,...,\pm(m+1) *)
Rpos[m_]:=RandomInteger[m]+1; (* 1,2,...,m+1 *)
Rbtw[m_]:=RandomInteger[2m]-m;
TTC[A_,n_]:=TOTT[{(Transpose[A])[[n]]}];
Col[A_,n_]:=Transpose[{A[[Range[Length[A]],n]]}];
ColCat[CL_]:=Join@@@(Transpose@CL);
PtString[M_]:=StringReplace[ToString[M],{"{"->"(","}"->")"}];
Title="2次の正方行列の和";
SELNUM=5;NUM=100;

(* Select matrices satisfying some mapping conditions *)
QtList={}; For[ct=1,ct≤300,ct++,
M2={{Rnz[4],Rnz[4]},{Rnz[4],Rnz[4]}};
QtList=Append[QtList,{RandomInteger[1]+2,M2}];
QtList=DeleteDuplicates[QtList]];QtList=RandomSample[QtList,NUM];Length[QtList]

QtextF[mm_]:=Module[{Cn,M2},{Cn,M2}=QtList[[mm]];
Return["次の行列の和の結果が\\("<>TOT[M2]<>"となるものをすべて選べ"]];

CListF[mm_]:=Module[{Cn,M21,M22,M2,fs,a11,a12,a21,a22,ret={}},
{Cn,M2}=QtList[[mm]];fs="正解です.";
M21={{a11,a12},{a21,a22}}={{Rnz[3],Rnz[3]},{Rnz[3],Rnz[3]}};M22=M2-M21;
ret=Append[ret,{"\\("<>TOT[M21]<>"+"<>TOT[M22]<>"\\)",fs}];
M21={{a11,a12},{a21,a22}}={{Rnz[3],Rnz[3]},{Rnz[3],Rnz[3]}};M22=M2-M21;
ret=Append[ret,{"\\("<>TOT[M21]<>"+"<>TOT[M22]<>"\\)",fs}];
M21={{a11,a12},{a21,a22}}={{Rnz[3],Rnz[3]},{Rnz[3],Rnz[3]}};M22=M2-M21;
ret=Append[ret,{"\\("<>TOT[M21]<>"+"<>TOT[M22]<>"\\)",fs}];
M21={{a11,a12},{a21,a22}}={{Rnz[3],Rnz[3]},{Rnz[3],Rnz[3]}};M22=M2-M21;
ret=Append[ret,{"\\("<>TOT[M21]<>"+"<>TOT[M22]<>"\\)",fs}];
Return[RandomSample[ret,Cn]]];

ICListF[mm_]:=Module[{Cn,M21,M22,M2,fs1,fs2,fs3,ret={}},{Cn,M2}=QtList[[mm]];
fs1="行列の和は行を合わせることではありません.";
fs2="行列の和は列を合わせることではありません.";
fs3="行列の和の計算を間違えていないでしょうか?";
ret=Append[ret,{"\\("<>TOT[{M2[[1]]}]<>"+"<>TOT[{M2[[2]]}]<>"\\)",fs1}];
ret=Append[ret,{"\\("<>TOT[Col[M2,1]]<>"+"<>TOT[Col[M2,2]]<>"\\)",fs2}];
M21={{Rnz[3],Rnz[3]},{Rnz[3],Rnz[3]}};M22=M2+M21;
ret=Append[ret,{"\\("<>TOT[M21]<>"+"<>TOT[M22]<>"\\)",fs3}];
M21={{Rnz[3],Rnz[3]},{Rnz[3],Rnz[3]}};M22=M2-M21-{{Rnz[0],0},{Rnz[0],Rnz[0]}};
ret=Append[ret,{"\\("<>TOT[M21]<>"+"<>TOT[M22]<>"\\)",fs3}];
Return[RandomSample[ret,SELNUM-Cn]]];

ICListF[3]

GenerateMCxml[DFname[],"LA/10-02."<>Title<>"(MC1)",Title,NUM,"false",QtextF,CListF,ICListF]

Col[{{1,2},{3,4}},1]