高度な特殊タグ練習   作:紺野遍音

5 / 5
前回は加法定理の図を描いたのだった。
もちろんあのような自由な作図にも便利だが、もっと汎用性のある図を紹介しよう。
種々のグラフである。

ある意味この記事がもたらす一番の恩恵かもしれない。


高度な練習(enclosureタグ その3)

encloseタグで長方形や軸の線を描けるということは、つまり棒グラフを描けるということにほかならない。

 

$$\require{enclose}\require{color}\color{#777777}{\smash{\rlap{\Rule{8em}{0.05em}{0.05em}}}\smash{\rlap{\Rule{0.1em}{4em}{0em}}}\smash{\rlap{\hskip 1.2em \Rule{1.2em}{1.2em}{0em}}}\smash{\rlap{\hskip 3.0em \Rule{1.2em}{2.4em}{0em}}} \smash{\rlap{\hskip 4.8em \Rule{1.2em}{3.2em}{0em}}}\phantom{\Rule{8em}{4em}{1em}}}$$

\require{enclose}\require{color}\color{#777777}{\smash{\rlap{\Rule{8em}{0.05em}{0.05em}}}\smash{\rlap{\Rule{0.1em}{4em}{0em}}}\smash{\rlap{\hskip 1.2em \Rule{1.2em}{1.2em}{0em}}}\smash{\rlap{\hskip 3.0em \Rule{1.2em}{2.4em}{0em}}} \smash{\rlap{\hskip 4.8em \Rule{1.2em}{3.2em}{0em}}}\phantom{\Rule{8em}{4em}{1em}}}

これを半角の$2つずつで囲んで作る。

原理は簡単で、

① まずencloseパッケージを召喚 ※実はencloseタグを使わなければ不要で、素のMathJaxでも作図できるらしい。ただ、後述するような白抜きや斜め線を後から描こうと思った際にはencloseが必要なので、requireを後から書き足すのは面倒。

② 次にcolorパッケージを召喚し、colorを#777777にする

③ smash,rlap構文で重ね合わせられるようにする

長方形(Rule)で軸を作る。まずは幅8em、高さが上下に0.05emずつの横軸で──

⑤ 次に幅が0.1em、高さが4emの縦軸。

⑥ 続いて長方形(Rule)でグラフを作る準備。再びsmash,rlap構文。その中に左端を基準とした1.2emの右ズレ(hskip)を入れて幅1.2em、高さが上に1.2em、下に0emの長方形(Rule)を描く。

⑦ 同様に、smash,rlap構文、3.0emの右ズレ(hskip)、幅1.2em、高さが上に2.4em、下に0emの長方形(Rule)を描く。

⑧ 同様に、smash,rlap構文、4.8emの右ズレ(hskip)、幅1.2em、高さが上に3.2em、下に0emの長方形(Rule)を描く。

⑨ 最後に全体の描画領域確保用の透明な(phantom)長方形(Rule)をsmash,rlap構文で全体に重ねて配置する。

 

凡例も、smash,rlap構文で文字を配置することで描画できる。

$$\require{enclose}\require{color}\color{#777777}{\smash{\rlap{\Rule{8em}{0.05em}{0.05em}}}\smash{\rlap{\Rule{0.1em}{4em}{0em}}}\smash{\rlap{\hskip 1.2em \Rule{1.2em}{1.2em}{0em}}}\smash{\rlap{\hskip 3.0em \Rule{1.2em}{2.4em}{0em}}} \smash{\rlap{\hskip 4.8em \Rule{1.2em}{3.2em}{0em}}}\smash{\rlap{\hskip 1.45em \raise -1.0em{A}}}\smash{\rlap{\hskip 3.25em \raise -1.0em{B}}}\smash{\rlap{\hskip 5.05em \raise -1.0em{C}}}\phantom{\Rule{8em}{4em}{1em}}}$$

\require{enclose}\require{color}\color{#777777}{\smash{\rlap{\Rule{8em}{0.05em}{0.05em}}}\smash{\rlap{\Rule{0.1em}{4em}{0em}}}\smash{\rlap{\hskip 1.2em \Rule{1.2em}{1.2em}{0em}}}\smash{\rlap{\hskip 3.0em \Rule{1.2em}{2.4em}{0em}}} \smash{\rlap{\hskip 4.8em \Rule{1.2em}{3.2em}{0em}}}\smash{\rlap{\hskip 1.45em \raise -1.0em{A}}}\smash{\rlap{\hskip 3.25em \raise -1.0em{B}}}\smash{\rlap{\hskip 5.05em \raise -1.0em{C}}}\phantom{\Rule{8em}{4em}{1em}}}

棒と同じだけ右ズレ(hskip)して、-1.0em持ち上げる(Raise)ことで棒の下に配置している。

 

少々手間が増えるが、棒の白抜き(黒抜き)もこの通り行える。

$$\require{color}\require{enclose}\color{#777777}{\smash{\rlap{\Rule{8em}{0.05em}{0.05em}}}\smash{\rlap{\Rule{0.1em}{4em}{0em}}}\smash{\rlap{\hskip 1.2em \raise 0.2em \enclose{box}{\phantom{\Rule{0.8em}{1.2em}{0em}}}}}\smash{\rlap{\hskip 3.0em \raise 0.2em \enclose{box}{\phantom{\Rule{0.8em}{2.4em}{0em}}}}}\smash{\rlap{\hskip 4.8em \raise 0.2em \enclose{box}{\phantom{\Rule{0.8em}{3.2em}{0em}}}}}\smash{\rlap{\hskip 1.45em \raise -1.0em{A}}}\smash{\rlap{\hskip 3.25em \raise -1.0em{B}}}\smash{\rlap{\hskip 5.05em \raise -1.0em{C}}}\phantom{\Rule{8em}{4em}{1em}}}$$

\require{color}\require{enclose}\color{#777777}{\smash{\rlap{\Rule{8em}{0.05em}{0.05em}}}\smash{\rlap{\Rule{0.1em}{4em}{0em}}}\smash{\rlap{\hskip 1.2em \raise 0.2em \enclose{box}{\phantom{\Rule{0.8em}{1.2em}{0em}}}}}\smash{\rlap{\hskip 3.0em \raise 0.2em \enclose{box}{\phantom{\Rule{0.8em}{2.4em}{0em}}}}}\smash{\rlap{\hskip 4.8em \raise 0.2em \enclose{box}{\phantom{\Rule{0.8em}{3.2em}{0em}}}}}\smash{\rlap{\hskip 1.45em \raise -1.0em{A}}}\smash{\rlap{\hskip 3.25em \raise -1.0em{B}}}\smash{\rlap{\hskip 5.05em \raise -1.0em{C}}}\phantom{\Rule{8em}{4em}{1em}}}

これも半角の$2つずつで囲んで作る。

原理としては、上とほぼ同様で、棒グラフの長方形(Rule)を、(Box)囲んだ(enclose)透明な(phantom)長方形(Rule)に置き換えたに過ぎない。

 

もちろん横棒だってお手の物。

$$\require{enclose}\require{color}\color{#777777}{\smash{\rlap{\Rule{0.1em}{4em}{0em}}}\smash{\rlap{\raise 3.2em{\Rule{3em}{0.4em}{0.4em}}}}\smash{\rlap{\raise 2.2em{\Rule{5em}{0.4em}{0.4em}}}}\smash{\rlap{\raise 1.2em{\Rule{2em}{0.4em}{0.4em}}}}\phantom{\Rule{6em}{4em}{0em}}}$$

\require{enclose}\require{color}\color{#777777}{\smash{\rlap{\Rule{0.1em}{4em}{0em}}}\smash{\rlap{\raise 3.2em{\Rule{3em}{0.4em}{0.4em}}}}\smash{\rlap{\raise 2.2em{\Rule{5em}{0.4em}{0.4em}}}}\smash{\rlap{\raise 1.2em{\Rule{2em}{0.4em}{0.4em}}}}\phantom{\Rule{6em}{4em}{0em}}}

これも半角の$2つずつで囲んで作る。

縦棒の縦の長さに関しては、棒の中心から上に伸びる高さと下に伸びる高さを合わせて考える必要がある。

 

 

encloseが円内の塗りつぶしに対応できないので色付きの円グラフは作れないが、円周上の点と半径を描画することはできるので、色なしの円グラフなら作れてしまう。

 

$$\require{color} \color{#777777}{\require{enclose} \smash{\rlap{\hskip 0.8em \enclose{circle}{\phantom{\Rule{6em}{3em}{3em}}}}} \smash{\rlap{\hskip 4em \raise 0em \Rule{0.08em}{3.2em}{0em}}} \smash{\rlap{\hskip 4em \raise 0.2em \enclose{updiagonalstrike}{\phantom{\Rule{1.8em}{1.8em}{0em}}}}} \phantom{\Rule{8em}{4em}{4em}}}$$

\require{color} \color{#777777}{\require{enclose} \smash{\rlap{\hskip 0.8em \enclose{circle}{\phantom{\Rule{6em}{3em}{3em}}}}} \smash{\rlap{\hskip 4em \raise 0em \Rule{0.08em}{3.2em}{0em}}} \smash{\rlap{\hskip 4em \raise 0.2em \enclose{updiagonalstrike}{\phantom{\Rule{1.8em}{1.8em}{0em}}}}} \phantom{\Rule{8em}{4em}{4em}}}

これも半角の$2つずつで囲んで作る。

縦線は先ほど同様長方形(Rule)を左端を基準として円の中心までの分右ズレ(hskip)させて、斜めの線は円の中心を左端とした透明な(phantom)長方形(Rule)右上がり対角線(updiagonalstrike)として描画している。斜め線の長方形の高さと横幅を考えるにはちょっと三角関数を考えてやる必要がある。高さがサインで横幅がコサインだ。円の中心より左側に斜め線を通すなら、それも踏まえて長方形をどれだけ右ズレさせるかを考える必要がある。

 

折れ線グラフも、点と線を結べるので、位置調整に気合を入れる必要はあるが、作ることができる。

$$\require{color}\require{enclose}\color{#777777}{\smash{\rlap{\Rule{6em}{0.05em}{0.05em}}}\smash{\rlap{\Rule{0.1em}{4em}{0em}}}\smash{\rlap{\hskip 1em\raise 1em{\enclose{updiagonalstrike}{\phantom{\Rule{1em}{1.5em}{0em}}}}}}\smash{\rlap{\hskip 2.4em\raise 2em{\enclose{downdiagonalstrike}{\phantom{\Rule{1em}{0.5em}{0em}}}}}}\smash{\rlap{\hskip 3.8em \raise 2em{\enclose{updiagonalstrike}{\phantom{\Rule{1em}{1.2em}{0em}}}}}}\smash{\rlap{\hskip 0.8em \raise 0.6em{\bullet}}}\smash{\rlap{\hskip 2.2em \raise 2.4em{\bullet}}}\smash{\rlap{\hskip 3.6em \raise 1.6em{\bullet}}}\smash{\rlap{\hskip 5em \raise 3.2em{\bullet}}}\phantom{\Rule{6em}{4em}{1em}}}$$

\require{color}\require{enclose}\color{#777777}{\smash{\rlap{\Rule{6em}{0.05em}{0.05em}}}\smash{\rlap{\Rule{0.1em}{4em}{0em}}}\smash{\rlap{\hskip 1em\raise 1em{\enclose{updiagonalstrike}{\phantom{\Rule{1em}{1.5em}{0em}}}}}}\smash{\rlap{\hskip 2.4em\raise 2em{\enclose{downdiagonalstrike}{\phantom{\Rule{1em}{0.5em}{0em}}}}}}\smash{\rlap{\hskip 3.8em \raise 2em{\enclose{updiagonalstrike}{\phantom{\Rule{1em}{1.2em}{0em}}}}}}\smash{\rlap{\hskip 0.8em \raise 0.6em{\bullet}}}\smash{\rlap{\hskip 2.2em \raise 2.4em{\bullet}}}\smash{\rlap{\hskip 3.6em \raise 1.6em{\bullet}}}\smash{\rlap{\hskip 5em \raise 3.2em{\bullet}}}\phantom{\Rule{6em}{4em}{1em}}}

これも半角の$2つずつで囲んで作る。

気合が必要というのは、最初の折れ線は左端中心の基準から1em右、1em上の箇所から始まって右に1em、上に1.5em移動しているのだが、その上の(bullet)は基準から0,8em右、0.6em上と、2.2em右(先ほどの点からは1.4em右)2.4em(先ほどの点からは1.8em上)という指定にしなければ上の図のようにピッタリにならないことだ。

こればっかりはもはや描画レンダラーの問題でありどうしようもない。

コツとしては、まず折れ線を描画して、その上から点を微調整して合わせていくというのがやりやすいだろう。折れ線グラフの主役はあくまで折れ線だからだ。




この項に関しては結構需要が高そうな気がする。
  1. 目次
  2. 小説情報
  3. 縦書き
  4. しおりを挟む
  5. お気に入り登録
  6. 評価
  7. 感想
  8. ここすき
  9. 誤字
  10. 閲覧設定
▲ページの一番上に飛ぶ  X(Twitter)で読了報告
感想を書く ※感想一覧 ※ログインせずに感想を書き込みたい場合はこちら
内容
0文字 10~5000文字
感想を書き込む前に 感想を投稿する際のガイドライン に違反していないか確認して下さい。
※展開予想はネタ潰しになるだけですので、感想欄ではご遠慮ください。

評価する
※参考:評価数の上限
評価する前に 評価する際のガイドライン に違反していないか確認して下さい。