コンテンツにスキップ

TeXレンダリング

TeX 記法

Cinderella 2.4版から、文字表現が強力になりました。TeX記法[Knu93]による数式表現ができます。これは数式を含む複雑な文章を書くときの標準的な記法です。現在の Cinderella ではおよそ 95% のTeX記法が使えます。ここでは、最も重要な点についてのみ記述します。また、標準的なTeXとの違いについても記述します。

TeXはCindyScriptのdrawtext()で表示する文章と、幾何学要素のラベル、「文字列を追加する」ボタンによる文字列に使えます。特別メニューの文字列入力による文章には使えません。

TeX 記法の宣言

通常の文章の中で、ドル記号ではさんだ部分が TeX記法によるものと解釈されます。: $... ここがTeX形式のテキスト...$  次の文は、TeXの特徴を示す例です。:

drawtext(
  (0,0),
  "和の公式: $\sum_{i=1}^n i^2 = { 2\cdot n^3+ 4\cdot n^2 +n\over 6 }"
);

もし間違ったフォントが選ばれていても、CinderellaのTeX では最適な解釈をしようとします。

drawtext(
  (0,0),
  "和の公式: $\sum_{i=1}^n i^2 = { 2\cdot n^3+ 3\cdot n^2 +n\over 6 }$",size->20,
  family->"Lucida Calligraphy"
);

サブスクリプトとスーパースクリプト

TeXでの最もよく使われる記法は、サブスクリプト(上付き文字)とスーパースクリプト(添え字)でしょう。これには、それぞれ _ と ^ 記号を用います。もし、複雑なサブ・スーパースクリプトを用いたい場合は、波括弧でくくります。通常の TeX スクリプトと異なり、数だけからなるものであれば、括弧はいりません。次のコードがその例です。

textsize(20);
drawtext((0,0), "$A_1$");
drawtext((2,0), "$A_123$");
drawtext((4,0), "$A_1^12$");
drawtext((6,0), "$A_{1_2}^{1/2}$");
drawtext((8,0), "$A_{1_2}^{\sqrt{x^2+y^2}}$");

特殊な式

Cinderella の TeX は、和、平方根、積分記号といった特殊記号が扱えます。次がその例です。

textsize(20);
drawtext((0,0), "$\sum_{i=1}^n (i^2+1)");
drawtext((3,0), "$\sqrt{x^2+y^2}");
drawtext((6,0), "$\int_a^b f(x)dx");

TeX ではバックスラッシュ \ を用いて制御コードを書きます。 \sum と \int では、自動的に和の記号や積分記号、上付き文字と下付き文字などを使って式を表現します。次のものは同じように式を作ります。:

\prod, \coprod, \bigcup, \bigcap, \bigwedge, \bigvee, \bigoplus, \bigotimes, \bigodot, \biguplus, \int, \iint, \iiint, \ont

括弧

Cinderella TeX では4種類の括弧を式の中で使います。

  • 丸い括弧 : (....)
  • 角括弧 : [....]
  • 波括弧 : {...}
  • 縦線 : |...|

波括弧は TeX では特別な意味を持つので、波括弧そのものを表示したいときはバックスラッシュに続いて書く必要があります。数式では異なる大きさの括弧を使いたい場合があります。そのためには、 \big, \Big, \bigg, \Bigg に続いて括弧を書きます。次の例をごらん下さい。

drawtext((0,0),size->16,
"$\Bigg( \bigg( \Big( \big( (\ldots) \big) \Big) \bigg) \Bigg)$");
drawtext((5,0),size->16,
"$\Bigg[ \bigg[ \Big[ \big[ [\ldots] \big] \Big] \bigg] \Bigg]$");
drawtext((10,0),size->16,
"$\Bigg\{ \bigg\{ \Big\{ \big\{ \{\ldots\} \big\} \Big\} \bigg\} \Bigg\}$");
drawtext((15,0),size->16,
"$\Bigg| \bigg| \Big| \big| |\ldots| \big| \Big| \bigg| \Bigg|$")

大きな括弧を表示するのに、次のような方法もあります。次の例に見られるように \left と \right を使うことによって、ちょうどよい大きさの括弧でくくることができます。

drawtext((0,0),size->16,
"$\left[\sum_{i=1}^n \left({\sqrt sin(i)\right)\right]^2$")

\left と \right は、きちんと入れ子状になっていなければなりません。一方の括弧だけを使いたい場合は \left. あるいは \right. を用います。

特殊な形の式

分数のような特殊な形の式があります。 Cinderella TeX は次の式をサポートしています。

\frac,\over,\choose,\binom

次のような使い方をします。

drawtext((0,0),size->16,"${1+n^2\over 1-n^2}$");
drawtext((3,0),size->16,"${2\choose 3}$");
drawtext((6,0),size->16,"$\frac{a+b}{x^2}$");
drawtext((9,0),size->16,"$\binom{a+b}{x^2}$");

空白

空白と改行は、よく式を区切るためだけに使われ、式のレイアウトのためにはあまり使われません。\,\;\quad\qquad\! を使えば、空白の大きさを変えられます。現在のフォントの "m" の大きさが空白の単位になります。

  • \qquad: 2.0 単位の空白
  • \quad: 1.0 単位の空白
  • \;: 5/18 単位の空白
  • \,: 3/18 単位の空白
  • \!: -5/18 単位の空白(マイナスなので前の文字と重なることになります)
drawtext((0,0),size->16,"$A\!A A \,A\;A\quad A \qquad A$")

上線と下線

Cinderella TeX は式の上または下に矢印などの線を引くいくつかの方法をサポートしています。それは次のものです。

\overline, \underline, \overleftarrow, \overrightarrow, \vec, \hat, \tilde

これらの記号のあとに、線を引きたい部分を波括弧でくくります。

drawtext((0,0),size->16,"$\overline{A}\;\cap\;\overline{B}\;=\;\overline{A\;\cup\; B}$");
drawtext((6,0),size->16,"$|\overrightarrow{(x,y)}|\;= \; \sqrt{x^2+y^2}$");
drawtext((13,0),size->16,"$\tilde{X}+\hat{Y}\;=\;\underline{X\oplus Y}$");

ベクトルと行列

ベクトルと行列は数式では特別なものです。 Cinderellas TeX ではこれらもサポートしています。最も基本的な使い方は \begin{array}{...}.....\end{array} です。各行は \\ で区切ります。各行の中で、各成分は & で区切ります。2番目の波括弧には、各列での書式を書きます。これは次の3つです。

  • r 右寄せ
  • l 左寄せ
  • c センタリング(中央揃え)

次の例は一般的な行列の表示の方法を示します。

drawtext((0,0),
"$M\;=\;\left(
\begin{array}{lcr}
 1+1&2&3\\
 1&2+2&3\\
 1&2&3+3\\
 \end{array}
\right)
$"
,size->20);

Array 記号は次の例に見られるように、いろいろな場面で使うことができます。

drawtext((0,0),
"$sign(x)\;:=\;\left\{
\begin{array}{ll}
  1&if \quad x>0\\
 -1&if \quad x<0\\
  0&if \quad x=0\\
 \end{array}
\right.
$"
,size->20);

Cinderella は行列の形式についての情報を必要とせず、自動的に括弧をつけて表示します。括弧のつけかたには次の5つの種類があります。

drawtext((0,0), "$\begin{matrix} a-\lambda & b\\ c & b-\lambda\\ \end{matrix}$",);
drawtext((4,0), "$\begin{pmatrix}a-\lambda & b\\ c & b-\lambda\\ \end{pmatrix}$");
drawtext((8,0), "$\begin{bmatrix}a-\lambda & b\\ c & b-\lambda\\ \end{bmatrix}$");
drawtext((12,0),"$\begin{Bmatrix}a-\lambda & b\\ c & b-\lambda\\ \end{Bmatrix}$");
drawtext((16,0),"$\begin{vmatrix}a-\lambda & b\\ c & b-\lambda\\ \end{vmatrix}$");

色

Cinderellas TeX は式に色をつけることができます。そのためには \color{...} を用います。現在用意されている色の名前は

white, balck, red, green, blue, darkred, darkgreen, darkblue, magenta, yellow, cyan, orange

です。色記号とそれに続いて書かれた文全体を波括弧でくくると、それらが指示した色で表示されます。

drawtext((0,0),size->20,color->(0,0,0),
  "Sum formula: $
\sum_{\color{darkgreen}i=1}^{\color{darkgreen}n} {\color{darkred}i^2}
\quad = \quad
{\color{blue}{ 2\cdot n^3+ 4\cdot n^2 +n\over 6 }}$"
);

通常の文

式の中で普通の文を書きたいことはよくあります。その場合は、次の例で示すように \mbox{....} 記号の波括弧の中に書きます。

drawtext((0,0),size->20,color->(0,0,0),
  "$
\sum_{\mbox{All i not equal to j}}(i^2+j^2)
$"
);

特殊記号

数式ではいろいろな特殊記号を用います。TeXで用いるそれらの記号の一覧を以下に示します。それぞれ、バックスラッシュに続いてその名前を書きます。

ギリシャ文字

α \alpha β \beta γ \gamma δ \delta ∊ \epsilon
ε \varepsilon ζ \zeta η \eta θ \theta ϑ \vartheta
ι \iota κ \kappa λ \lambda λ \lamda μ \mu
μ \my ν \nu ν \ny ξ \xi ο \omicron
π \pi ϖ \varpi ρ \rho ϱ \varrho σ \sigma
ς \varsigma τ \tau υ \upsilon υ \ypsilon φ \phi
χ \chi ψ \psi ω \omega Α \Alpha Β \Beta
Γ \Gamma Δ \Delta Ε \Epsilon Ζ \Zeta Η \Eta
Θ \Theta Ι \Oota Κ \Kappa Λ \Lambda Λ \Lamda
Μ \Mu Μ \My Ν \Nu Ν \Ny Ξ \Xi
Ο \Omicron Π \Pi Ρ \Rho Σ \Sigma Τ \Tau
Υ \Upsilon Υ \Ypsilon Φ \Phi Χ \Chi Ψ \Psi
Ω \Omega

矢印

← \leftarrow → \rightarrow → \to ↔ \leftrightarrow ⇐ \Leftarrow
⇒ \Rightarrow ⇔ \Leftrightarrow ↦ \mapsto ↩ \hookleftarrow ↼ \leftharpoonup
↽ \leftharpoondown ↪ \hookrightarrow ⇀ \rightharpoonup ⇁ \rightharpoondown ← \longleftarrow
→ \longrightarrow ↔ \longleftrightarrow ⇐ \Longleftarrow ⇒ \Longrightarrow ⇔ \Longleftrightarrow
⇖ \longmapsto ↑ \uparrow ↓ \downarrow ↕ \updownarrow ⇑ \Uparrow
⇓ \Downarrow ⇕ \Updownarrow ↗ \nearrow ↘ \searrow ↙ \swarrow
↖ \nwarrow ↝ \leadsto ⇠ \dashleftarrow ⇇ \leftleftarrows ⇆ \leftrightarrows
⇚ \Lleftarrow ↞ \twoheadleftarrow ↢ \leftarrowtail ⇋ \leftrightharpoons ↰ \Lsh
↫ \looparrowleft ↶ \curvearrowleft ↺ \circlearrowleft ⇢ \dashrightarrow ⇉ \rightrightarrows
⇄ \rightleftarrows ⇛ \Rrightarrow ↠ \twoheadrightarrow ↣ \rightarrowtail ⇌ \rightleftharpoons
↱ \Rsh ↬ \looparrowright ↷ \curvearrowright ↻ \circlearrowright ⊸ \multimap
⇈ \upuparrows ⇊ \downdownarrows ↿ \upharpoonleft ↾ \upharpoonright ⇃ \downharpoonleft
⇂ \downharpoonright ⇝ \rightsquigarrow ↭ \leftrightsquigarrow ← \leftarrow ↑ \uparrow
→ \rightarrow ↓ \downarrow ↔ \leftrightarrow ↕ \updownarrow ↖ \nwarrow
↗ \nearrow ↘ \searrow ↙ \snarrow ⇐ \Leftarrow ⇑ \Uparrow
⇒ \Rightarrow ⇓ \Downarrow ⇔ \Leftrightarrow ⇕ \Updownarrow ⇖ \Nwarrow
⇗ \Nearrow ⇘ \Searrow ⇙ \Snarrow

数学記号

≤ \leq ≪ \ll ≺ \prec ≼ \preceq ⊂ \subset
⊆ \subseteq ⊏ \sqsubset ⊑ \sqsubseteq ∈ \in ⊢ \vdash
∣ \mid ⌣ \smile ≥ \geq ≫ \gg ≻ \succ
≽ \succeq ⊃ \supset ⊇ \supseteq ⊐ \sqsupset ⊒ \sqsupseteq
∋ \ni ⊣ \dashv ∥ \parallel ⌢ \frown ∉ \notin
≡ \equiv ≐ \doteq ∼ \sim ≃ \simeq ≈ \approx
≅ \cong ⋈ \Join ⋈ \bowtie ∝ \propto ⊨ \models
⊥ \perp ≍ \asymp ≠ \neq ± \pm × \times
∪ \cup ⊔ \sqcup ∨ \vee ⊕ \oplus ⊙ \odot
⊗ \otimes △ \bigtriangleup ⊲ \lhd ⊴ \unlhd ∓ \mp
÷ \div ∖ \setminus ∩ \cap ⊓ \sqcap ∧ \wedge
⊖ \ominus ⊘ \oslash ○ \bigcirc ▽ \bigtriangledown ⊳ \rhd
⊵ \unrhd ◁ \triangleleft ▷ \triangleright ⋆ \star ∗ \ast
∘ \circ ∙ \bullet ⋄ \diamond ⊎ \uplus † \dagger
‡ \ddagger ≀ \wr ∑ \sum ∏ \prod ∐ \coprod
∨ \int ⋃ \bigcup ⋂ \bigcap ⊔ \bigsqcup ∮ \oint
⋁ \bigvee ⋀ \bigwedge ⊕ \bigoplus ⊗ \bigotimes ⊙ \bigodot
⊎ \biguplus … \dots ⋯ \cdots ⋮ \vdots ⋱ \ddots
ℏ \hbar ℓ \ell ℜ \Re ℑ \Im א \aleph
℘ \wp ∀ \forall ∃ \exists ℧ \mho ∂ \partial
′ \prime ∅ \emptyset ∞ \infty ∇ \nabla △ \triangle
□ \Box ◇ \Diamond ⊥ \bot ⊤ \top ∠ \angle
√ \surd ♢ \diamondsuit ♡ \heartsuit ♣ \clubsuit ♠ \spadesuit
¬ \neg ♭ \flat ♮ \natural ♯ \sharp Ϝ \digamma
ϰ \varkappa ב \beth ד \daleth ג \gimel ⋖ \lessdot
≤ \leqslant ≦ \leqq ⋘ \lll ≲ \lesssim ≶ \lessgtr
⋚ \lesseqgtr ≼ \preccurlyeq ⋞ \curlyeqprec ≾ \precsim ⋐ \Subset
⊏ \sqsubset ∴ \therefore ⌣ \smallsmile ⊲ \vartriangleleft ⊴ \trianglelefteq
⋗ \gtrdot ≧ \geqq ⋙ \ggg ≳ \gtrsim ≷ \gtrless
⋛ \gtreqless ≽ \succcurlyeq ⋟ \curlyeqsucc ≿ \succsim ⋑ \Supset
⊐ \sqsupset ∵ \because ∥ \shortparallel ⌢ \smallfrown ⊳ \vartriangleright
⊵ \trianglerighteq ≑ \doteqdot ≓ \risingdotseq ≒ \fallingdotseq ≖ \eqcirc
≗ \circeq ≜ \triangleq ≏ \bumpeq ≎ \Bumpeq ∼ \thicksim
≈ \thickapprox ≊ \approxeq ∽ \backsim ⊨ \vDash ⊩ \Vdash
⊪ \Vvdash ∍ \backepsilon ∝ \varpropto ≬ \between ⋔ \pitchfork
◀ \blacktriangleleft ▷ \blacktriangleright ∔ \dotplus ⋉ \ltimes ⋓ \Cup
⊻ \veebar ⊞ \boxplus ⊠ \boxtimes ⋋ \leftthreetimes ⋎ \curlyvee
⋅ \centerdot ⋈ \rtimes ⋒ \Cap ⊼ \barwedge ⊟ \boxminus
⊡ \boxdot ⋌ \rightthreetimes ⋏ \curlywedge ⊺ \intercal ⋇ \divideontimes
∖ \smallsetminus ⊝ \circleddash ⊚ \circledcirc ⊛ \circledast ℏ \hbar
ℏ \hslash □ \square ■ \blacksquare Ⓢ \circledS △ \vartriangle
▲ \blacktriangle ∁ \complement ▽ \triangledown ▼ \blacktriangledown ◊ \lozenge
◆ \blacklozenge ★ \bigstar ∠ \angle ∡ \measuredangle ∢ \sphericalangle
‵ \backprime ∄ \nexists Ⅎ \Finv ∅ \varnothing ð \eth
℧ \mho \vert ‖ \Vert ℂ \C ℇ
ℍ \H ℑ \Im ℓ \ell ℕ \N ℙ \P
ℚ \Q ℜ \Re ℝ \R ℤ \Z ± \pm
∓ \mp ★ \star ∗ \ast • \bullet · \centerdot
ℵ \aleph ∈ \in ∉ \not\in ∋ \ni ∌ \not\ni
∖ \backslash ∖ \setminus ∕ \slash ∀ \forall ╳ \times
∩ \cap ∪ \cup ⋅ \cdot ∞ \infty ⇒ \implies
⋮ \vdots ⋱ \ddots ⋯ \cdots … \ldots

Unicode

まれに、特定の記号が TeX で表現できないことがあります。その場合、Unicodeを使う方法があります。 \unicode{...} か \unicodex{...} という記号を用いてTeXのなかで使います。第1の式では、Unicodeを10進数で指定します。2番目の式では16進数で指定します。次の(少し高度な)例では、まず sum(...) 関数を用いてUnicodeの列を作り、それをTeXで表示しています。

chess=sum(0..11,i,"\;\unicode{"+(9812+i)+"}");
drawtext((0,0),size->30,"$"+chess+"$");

結果は次のようになります。