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
© Copyright 2025 ExpyDoc