名前: tohma 日時: 2005-03-19 19:53:46 IPアドレス: 220.38.124.*
>>35073 思いついた通りに書いた手抜きですが、こんなのでどうでしょう…? $ perl tex2cal.pl sample.tex $ cat sample.tex.ans ただし、(1) のような穴埋め形式のものは方程式を解く必要があり、 面倒だったので省略しました。必要なら頑張って下さい。 ----- tex2cal.pl ここから↓ -------------------------------- #!/usr/bin/perl $infile = $ARGV[0]; ### TeX ソースから数式部分を抜き出し open(inTEX, "$infile"); open(outTEX2EQ, ">$infile.eq"); while (<inTEX>){ if (/^(\(\d+\))\\hspace{1zw}\$(.+)\$$/){ print outTEX2EQ "$1 $2\n"; }else{ next; } } close outTEX2EQ; close inTEX; ### 数式の TeX コマンドを四則で書き直し open(inTEX2EQ, "$infile.eq"); open(outEQ2CAL, ">$infile.cal"); while (<inTEX2EQ>){ next if (/\\f/); s/\\left//g; s/\\right//g; s/\\{/{/g; s/\\}/}/g; s/\\times/\*/g; s/\\div/\//g; s/(\d+)\\dfrac{(\d+)}{(\d+)}/\(\($1\*$3\+$2\)\/$3\)/g; s/\\dfrac{(\d+)}{(\d+)}/\($1\/$2\)/g; print outEQ2CAL; } close outEQ2CAL; close inTEX2EQ; ### 計算して答を出力 open(inCAL2ANS, "$infile.cal"); open(outANS, ">$infile.ans"); while (<inCAL2ANS>){ if (/^(\(\d+\)) (.*)$/){ $ans = eval($2); print outANS "$1 $ans\n"; } } close outANS; close inCAL2ANS; ----- tex2cal.pl ここまで↑ -------------------------------- ----- sample.tex ここから↓ -------------------------------- \documentclass[a4paper,10pt,fleqn]{jsarticle} \usepackage{amsmath,amssymb} \usepackage[dvipdfm]{graphicx} \usepackage{okumacro} \pagestyle{empty} \setlength{\voffset}{-2cm} \setlength{\textheight}{27.3cm} \newcommand{\f}[1]{\framebox[1cm]{ }} \begin{document} \underline{\Large{10分間計算練成プリント(小6標準)氏名: 得点: /10}} \vspace{1zw} (1)\hspace{1zw}$\left(\f -7\dfrac{1}{3}\right)\div 3\dfrac{1}{3}\times \left(1\dfrac{3}{4}-0.25\right)=3$ \vspace{0.6cm} \begin{flushright} \underline{答)\hspace{2.5cm}} \end{flushright} (2)\hspace{1zw}$\left\{2.6-\left(1.7+\f \right)\right\}\div 0.25=1.2$ \vspace{0.6cm} \begin{flushright} \underline{答)\hspace{2.5cm}} \end{flushright} (3)\hspace{1zw}$\left(2\dfrac{5}{6}-\dfrac{2}{3}\right)\times 2-6\div 1\dfrac{1}{2}$ \vspace{0.6cm} \begin{flushright} \underline{答)\hspace{2.5cm}} \end{flushright} (4)\hspace{1zw}$72\times 5=18\div \f \times 4$ \vspace{0.6cm} \begin{flushright} \underline{答)\hspace{2.5cm}} \end{flushright} (5)\hspace{1zw}$\left(\dfrac{3}{5}+2\dfrac{2}{9}\div \dfrac{8}{27}\right)\times 1\dfrac{7}{18}$ \vspace{0.6cm} \begin{flushright} \underline{答)\hspace{2.5cm}} \end{flushright} (6)\hspace{1zw}$6-3\dfrac{1}{7}\div \left(0.25+\dfrac{2}{3}\right)\div \dfrac{9}{14}$ \vspace{0.6cm} \begin{flushright} \underline{答)\hspace{2.5cm}} \end{flushright} (7)\hspace{1zw}$6\dfrac{9}{10}\div 1\dfrac{1}{6}\times \dfrac{7}{9}$ \vspace{0.6cm} \begin{flushright} \underline{答)\hspace{2.5cm}} \end{flushright} (8)\hspace{1zw}$0.4968\div 0.092-1.6$ \vspace{0.6cm} \begin{flushright} \underline{答)\hspace{2.5cm}} \end{flushright} (9)\hspace{1zw}$\dfrac{7}{12}\div 2\dfrac{4}{5}+\f \times 0.25=1$ \vspace{0.6cm} \begin{flushright} \underline{答)\hspace{2.5cm}} \end{flushright} (10)\hspace{1zw}$13.25-1.75-0.7\times 0.3$ \vspace{0.6cm} \begin{flushright} \underline{答)\hspace{2.5cm}} \end{flushright} \begin{flushright} \underline{所要時間 分:No.2}\\ \underline{◎実施日 月 日} \end{flushright} \end{document} ----- sample.tex ここまで↑ --------------------------------
この書き込みへの返事: