TeX を使った図形問題を作る

TeX を使った図形問題を作る
問題ごとに数値が異なる三角形を作り、その面積を求める問題を作ってみましょう。
出力例
方針
TeX の記述は複雑なため、変数$n で最初から TeX の図形を作ると混乱しやすくなります。
慣れないうちはまず固定値で TeX の図形を作りましょう。
この段階では$n を使用しないため、プレビューを参照するために解答式、制約条件などの
必須項目にはダミーの$n、制約条件を入れておきます。
図形が完成したら、図の形を決定するそれぞれの値に$n をあてはめていきます。
TeX を使った図形描画の手順
1.線を引く
2.任意の x,y から水平線上に垂線を引く
3.補足情報を入れる
4.三角形の頂点と水平な線の始点・終点をつなぎ、三角形を作る
5.点線を引き、問題のヒントを作る
6.問題を解くための数値を入れる
最後に
三角形の形を決定する数値に変数$n をあてはめる
問題詳細
サンプル
Copyright © 2014 MathPub Center All Rights Reserved.
1/6
固定値で図形を作る
※赤字の TeX に対応する描画を赤くしています
1.線を引く
\begin{picture}(100,100)
…描画範囲を決定
\put(0,0){\line(1,0){100}}
…傾き(1,0)な水平線を長さ 100
(始点 0,0 から x 軸に絶対値 100)で引く
\end{picture}
…描画終わる
(100,0)
2.任意の x,y から水平線上に垂線を引く
\begin{picture}(100,100)
\put(0,0){\line(1,0){100}}
\qbezier(30,40)(30,20)(30,0)
\end{picture}
※\qbezier は曲線を引く際に使用しますが、2点を通過
する直線を引くのにも使用できます。今回は、始点(30,40)
から(30,20)を通り終点(30,0)に至る直線を引きました。
(30,40)
(30,20)
(30,0)
Copyright © 2014 MathPub Center All Rights Reserved.
2/6
3.補足情報を入れる
\begin{picture}(100,100)
\put(0,0){\line(1,0){100}}
\qbezier(30,40)(30,20)(30,0)
\put(50,20){\makebox(100,10){←qbezier で垂線を
引いた}}
…(50,20)の位置に、”←qbezier で垂線を引いた”
という文を入れる
\put(30,50){\makebox(20,10){(30,40)}}
…(30,50)に横 20 縦 10 の見えない枠を作り、中にテ
キスト”(30,40)”を入れる
\put(30,0){\framebox(10,10){ }}
…(30,0)に 10×10 の四角形を置く
\end{picture}
4.三角形の頂点と水平な線の始点・終点をつなぎ、三角形を作る
\begin{picture}(100,100)
\put(0,0){\line(100,0){100}}
\qbezier(30,40)(30,20)(30,0)
\put(30,0){\framebox(10,10){
}}
\qbezier(0,0)(15,20)(30,40)
…(15,20)を通り、(0,0)から(30,40)をつなぐ線を引く
\qbezier(30,40)(65,20)(100,0)
…(65,20)を通り、(30,40)から(100,0)をつなぐ線を引く
(30,40)
\end{picture}
(15,20)
(0,0)
(65,20)
(100,0)
Copyright © 2014 MathPub Center All Rights Reserved.
3/6
5.点線を引き、問題のヒントを作る
\begin{picture}(100,100)
\put(0,0){\line(1,0){100}}
\qbezier(30,40)(30,20)(30,0)
\put(30,0){\framebox(10,10){ }}
\qbezier(0,0)(15,20)(30,40)
\qbezier(30,40)(65,20)(100,0)
\qbezier[30](0,0)(50,-20)(100,0)…[30+1]個の点を使い、
(0,0)と(100,0)を通り、それぞれから引いた接線が(50,-20)
を通る曲線を引く
(15,20)
\qbezier[30](30,40)(15,20)(30,0)…[30+1]個の点を使い、
(30,40)と(30,0)を通り、それぞれから引いた接線が(15,20)
を通る曲線を引く
(50,-20)
\end{picture}
6.問題を解くための数値を入れる
\begin{picture}(100,100)
\put(0,0){\line(1,0){100}}
\qbezier(30,40)(30,20)(30,0)
\put(30,0){\framebox(10,10){ }}
\qbezier(0,0)(15,20)(30,40)
\qbezier(30,40)(65,20)(100,0)
\qbezier[30](0,0)(50,-20)(100,0)
\qbezier[30](30,40)(15,20)(30,0)
\put(40,-20){\makebox(30,10){xcm}}
…(40,-20)に横 30 縦 10 の見えない枠を作りテキス
ト”xcm”を入れる
\put(20,20){\makebox(30,10){ycm}}
…(20,20)に横 30 縦 10 の見えない枠を作りテキスト”ycm”を入れる
\end{picture}
Copyright © 2014 MathPub Center All Rights Reserved.
4/6
三角形の形を決定する数値に変数$n をあてはめる
\begin{picture}(100,100)
←描画開始と終了の指定は変更なし
底辺の長さ
\put(0,0){\line(1,0){$1}}
←底辺の長さを$1 とする。
このとき制約条件も考えておくと後で便利。
仮に長さは最少 40、最大 100 とし、
垂線の足の□を表示するため、垂線の左右に
充分な長さが取れるよう制約条件の調整を考える
三角形の頂点の値を($2,$3)とする
\qbezier($2,$3)($2,$4)($2,0)
垂線の足を作る
\put($2,0){\framebox(10,10){
}}
三角形の頂点と(0,0)をつなぐ直線
\qbezier(0,0)($5,$4)($2,$3)
三角形の頂点と($1,0)をつなぐ直線
\qbezier($2,$3)($6,$4)($1,0)
底辺の長さを示す点線
\qbezier[30](0,0)($7,-20)($1,0)
垂直線の長さを示す点線
\qbezier[30]($2,$3)($5,$4)($2,0)
←\qbezier(30,40)(30,20)(30,0) を変更
頂点から三角形を繋ぐ線を引くため
$3/2=$4;f1 という制約条件を考える
←\put(3,0){\framebox(10,10){
}}を変更
←\qbezier(0,0)(15,20)(30,40)を変更
$2/2=$5;f2
←\qbezier(30,40)(65,20)(100,0)を変更
($1+$2)/2=$6;f2
←\qbezier[30](0,0)(50,-20)(100,0)を変更
$1/2=$7;f2
←\qbezier[30](30,40)(15,20)(30,0)を変更
底辺の長さの中心あたりに長さを表記(cm)
\put($2,-20){\makebox(30,10){$1cm}} ←\put(40,-20){\makebox(30,10){xcm}}
垂直線の中心あたりに高さを表記(cm)
\put($2,$4){\makebox(30,10){$3cm}} ←\put(20,20){\makebox(30,10){ycm}}
\end{picture}
制約条件
Rd(40,100);$1$2$3:$1>$2,$1-$2>30
$3/2=$4;f1
$2/2=$5;f2
($1+$2)/2=$6;f2
$1/2=$7;f2
$1*$3/2=$8;f
解答
$1*$3/2=$8
解答:$8cm^2
($2,$3)
($5:$2/2,$4)
($6:($1+$2)/2,$4)
($2,$4:$3/2)
(0,0)
($2,0)
($1,0)
Copyright © 2014 MathPub Center All Rights Reserved.
5/6
問題詳細
サンプル
問題名
言語
カテゴリ
問題文
問題式
TeX を使った図形描画:三角形
日本語
(図形 など)
三角形の面積を求めよ
\begin{picture}(100,100)
\put(0,0){\line(1,0){$1}}
\qbezier($2,$3)($2,$4)($2,0)
\put($2,0){\framebox(10,10){
\qbezier(0,0)($5,$4)($2,$3)
\qbezier($2,$3)($6,$4)($1,0)
}}
\qbezier[30](0,0)($7,-20)($1,0)
\qbezier[30]($2,$3)($5,$4)($2,0)
\put($2,-20){\makebox(30,10){$1cm}}
\put($2,$4){\makebox(30,10){$3cm}}
\end{picture}
解答式
$1*$3/2=$8
解答: $8cm^2
\begin{picture}(100,100)
\put(0,0){\line(1,0){$1}}
\qbezier($2,$3)($2,$4)($2,0)
\put($2,0){\framebox(10,10){ }}
\qbezier(0,0)($5,$4)($2,$3)
\qbezier($2,$3)($6,$4)($1,0)
\qbezier[30](0,0)($7,-20)($1,0)
\qbezier[30]($2,$3)($5,$4)($2,0)
\put($2,-20){\makebox(30,10){$1cm}}
\put($2,$4){\makebox(30,10){$3cm}}
\end{picture}
解答
$8cm^2
制約条件
Rd(40,100);$1$2$3:$1>$2,$1-$2>30
$3/2=$4;f1
$2/2=$5;f2
($1+$2)/2=$6;f2
$1/2=$7;f2
$1*$3/2=$8;f
Copyright © 2014 MathPub Center All Rights Reserved.
6/6