FormedTextにおける数式記述
著者:梅谷 武
語句:TeX
FormedTextにおける数式記述の書式について定める。
作成:2006-02-27
更新:2011-03-10
 TeXにおいては複雑な数式がテキストとして簡単に入力できるように工夫されています。FormedTextでは、このTeXにおける数式記述方法をHTMLで実装できる程度に縮小し、さらに一部の命令をUNICODE(UTF-8)符号で置き換えられるようにしています。
 FormedTextには次の5種類の数式タグがあります。
  • qt → 本文内に数式を埋め込む(TeXのテキスト用数式モード'$'に 対応)
  • qd → 本文とは別に表示領域を確保する(ディスプレイ用数式モード '\['に対応)
  • qdarray → 複数行の数式をそろえて表示する(eqnarray*環境に対応)
  • eqn → qdに数式番号を付ける(equation環境に対応)
  • eqnarray → qdarrayに数式番号を付ける(eqnarray環境に対応)

TeX

 TeXはD.E.Knuthが "The Art of Computer Programming"の組版のために開発した数式を美しく描くことができる組版システムです。オープンソースのフリーソフトウェアとして公開されていて、研究者が論文を書くツールとして広く普及しているだけでなく、商業出版にも使われています。
 XML構文の制約から半角の不等号の代わりに全角の 不等号を使います。つまり、<の代わりに<を、>の代わり に>を使用します。&は数式タグ中では使用できません。
<qt>x_i, x_下, x_{i+1}</qt>
xi, x, xi+1
<qt>x^i, x^上, x^{i+1}</qt>
xi, x, xi+1
 TeXにおける\mathbf命令に対応しています。
<qt>R^n, \bm{R}^n, \bm{R^n}, \bm{実}数</qt>
Rn, Rn, Rn,
 平方根、立方根、4乗根が表現できます。√は\sqrtで置き換えることができます。
<qt>√2, √{x^2 + y^2}, √{x_0 + y_0}, ∛2, ∜2</qt>
2, x2 + y2, x0 + y0, 2, 2
 "\"はTeXと同様に制御文字として機能します。他の数式タグ においてはこれに命令文字列を続けて命令として働かせることができますが、qtタグにおいてはsqrt, underline, overline, det, normと関数名だけが有効です。
<qt>\ , \{, \}, \%, \$, \# \\
\sin(x) < y, y > \log(x)</qt>
 , {, }, %, $, \#
sin(x) < y, y > log(x)
<qt>\sqrt{x + y}, \underline{x + y}, \overline{x + y}}, \det{a}, \norm{`A}</qt>
x + y, x + y, x + y, a, `A
 数式タグにおいて" "はTeXと同様に明示的な空白指定として機能します。HTML形式においては半角スペースに置き換わり、" "は全角スペースに置き換わります。
<qt>a~b cdef</qt>
a b cdef
 √, ∛, ∜によって平方根、立方根、4乗根が表現できます。√は\sqrtで置き換えることができます。テキスト用です。
<qd>\sqrt{2}, √{2}, ∛2, ∜2</qd>
2, 2, 2, 2
 \underlineは下線を、øverlineは上線を引きます。テキスト用です。
<qd>\underline{x + y}, \overline{x + y}</qd>
x + y, x + y
\detは絶対値あるいは行列式、\normはノルムを表わします。
<qd>\det{\frac{1}{\sum_{i=0}^{n}{x^i}} \ \norm{\frac{df}{dx}}</qd>
1
n

i=0
xi
df
dx
 ∑は∑(#x2211)、∏は∏(#x220f)で置き換えることができます。これはギリシャ大文字のΣ、Πとは異なります。
<qd>\sum_{i=0}^{n}{x^i} \ \prod_{i=0}^{n}{x^i}</qd>
n

i=0
xi
n

i=0
xi
<qd>\bigcap_{i=0}^{n}{S_i} \ \bigcup_{i=0}^{n}{T_i}</qd>
n

i=0
Si
n

i=0
Ti
<qd>\inf_{i=0,…,n}{x_i} \ \lim_{i→∞}{x_i}</qd>
 
inf
i=0,…,n
xi
 
lim
i→∞
xi
 ¥intは∫(#x222b)、¥int2は∬(#x222c)、¥int3は∭(#x222d)、¥ointは∮(#x222e)で置き換えることができます。
<qd>∫_0^1{f(x)dx} \ ∬_D{f(x,y)dxdy}
\ ∭_V{f(x,y,z)dxdydz} \ ∮_C{f(x,y)dC}</qd>
1
 
0
f(x)dx
 
 
D
f(x,y)dxdy
 
 
V
f(x,y,z)dxdydz
 
 
C
f(x,y)dC
 \fracは分数を表現する命令です。
<qd>\frac{1}{\sum_{i=0}^{n}{x^i} \ \frac{df}{dx}</qd>
1
n

i=0
xi
df
dx
<qd>\frac{c_1}{b_1 + \frac{c_2}{b_2 + \frac{c_3}{b_3}}}</qd>
c1
b1 +
c2
b2 +
c3
b3

\binom,

\stir1, \stir2, \gauss, \jacobi
 ¥binomは2項係数、¥stir1は第1種スターリング数、¥stir2は第2種スターリング数、¥gaussはガウス記号、¥jacobiは平方剰余記号を表現します。
<qd>\binom{n}{k} \ \stir1{n}{k} \ \stir2{n}{k}
\ \gauss{n}{k} \ \jacobi{n}{k}</qd>
(n
k
)
[n
k
]
{n
k
}
[n
k
]
(n
k
)
 ¥array命令で行列を表現します。引数文字列においては ';'で行間区切りを、スペースで項目区切りを表わします。列の揃え方 は中央揃えですが、この命令の後にc,l,rという文字を付け加えること によって(¥arrayc, ¥arrayl, ¥arrayr)、列の揃え方を指定することが できます。引数の_命令で左括弧文字を、^命令で右括弧文字を 指定できます。
<qd>\array_{\lb96}^{\rb96}{
a_{11} … a_{1n} ;
: : : ;
a_{m1} … a_{mn} ;
}
\det{\array{
a_{11} … a_{1n} ;
: : : ;
a_{m1} … a_{mn} ;
}}
</qd>
lb96
a11
a1n
am1
amn
rb96
a11
a1n
am1
amn
<qd>\array_{\lb192}^{\lb192}{
\frac{∂g_1}{∂x_1} … \frac{∂g_1}{∂x_n} ;
: : : ;
\frac{∂g_n}{∂x_1} … \frac{∂g_n}{∂x_n} ;
}
\det{\array{
\frac{∂g_1}{∂x_1} … \frac{∂g_1}{∂x_n} ;
: : : ;
\frac{∂g_n}{∂x_1} … \frac{∂g_n}{∂x_n} ;
}}
</qd>
lb192
∂g1
∂x1
∂g1
∂xn
∂gn
∂x1
∂gn
∂xn
rb192
∂g1
∂x1
∂g1
∂xn
∂gn
∂x1
∂gn
∂xn
<qd>
δ_{ij} = \array_{\lc48}{
0, i≠j;
1, i=j;
}
</qd>
δij = lc48
0,
i≠j
1,
i=j
 \up命令は行列の添え字のための命令です。
<qd>\up{t}\array_{\lb96}^{\rb96}{
a b c ;
d e f ;
g h i ;
}\up{-1} = 
\array_{\lb96}^{\rb96}{
A B C ;
D E F ;
G H I ;
}
</qd>
t
lb96
a
b
c
d
e
f
g
h
i
rb96
-1
= lb96
A
B
C
D
E
F
G
H
I
rb96
<qd>\sin x,\ \sin(x+y),\ 3≡1(\mod~2)</qd>
sin x, sin(x+y), 3≡1(mod 2)
<qd>`R \longrightarrow `C, i \longmapsto `z</qd>
`R longrightarrow `C, i longmapsto `z
先頭の英文字列はフォント名、続く数字はフォントの高さ[ピクセル]を表わします。
<qd>\lb36 \rb36 \lb48 \rb48 \lb72 \rb72
\lb96 \rb96 \lb144 \rb144 \lb192 \rb192 \lb288 \rb288</qd>
lb36 rb36 lb48 rb48 lb72 rb72 lb96 rb96 lb144 rb144 lb192 rb192 lb288 rb288
<qd>\lc36 \rc36 \lc48 \rc48 \lc72 \rc72
\lc96 \rc96 \lc144 \rc144 \lc192 \rc192 \lc288 \rc288</qd>
lc36 rc36 lc48 rc48 lc72 rc72 lc96 rc96 lc144 rc144 lc192 rc192 lc288 rc288
 qdarrayタグは複数行の数式を縦方向に揃えてレイアウトします。一行の数式は、
  • 左辺ブロック
  • 関係子
  • 右辺ブロック
の三つのブロックから成ります。ブロックとはで囲まれたqdタグの数式です。これを続けることで任意の行数の数式を表現することができます。行間は改行"\"で検出します。関係子は記号や記号列からなるブロックで、これを基準にして数式を縦に揃えます。
<qdarray>
{F^{-1}・F(f)(ζ^r)} = 
{n^{-1}\sum_{t=0}^{n-1}{F(f)(ζ^t)ζ^{-tr}}} \\
{} = {n^{-1}\sum_{t=0}^{n-1}{(\sum_{s=0}^{n-1}{f(ζ^s)ζ^{st}})ζ^{-tr}}} \\
{} = {n^{-1}\sum_{s=0}^{n-1}{f(ζ^s)(\sum_{t=0}^{n-1}{ζ^{t(s-r)}})}}\\
{} = {n^{-1}f(ζ^r)(\sum_{t=0}^{n-1}{ζ^0)}}\\
{} = f(ζ^r)
</qdarray>
F-1・F(f)(ζr)
=
n-1
n-1

t=0
F(f)(ζt-tr
=
n-1
n-1

t=0
(
n-1

s=0
f(ζsst
-tr
=
n-1
n-1

s=0
f(ζs)(
n-1

t=0
ζt(s-r)
)
=
n-1f(ζr)(
n-1

t=0
ζ0)
=
f(ζr)
 eqnタグはqdタグと同機能で、さらに自動的に数式番号が付き、"eqn"+"数式番号"というアンカーが埋め込まれます。
<eqn>S = √{s(s - a)(s - b)(s - c)}</eqn>
(1)
S = s(s - a)(s - b)(s - c)
 eqnarrayタグはqdarrayタグと同機能で、さらに自動的に数式番号が付き、"eqn"+"数式番号"というアンカーが埋め込まれます。数式番号は左辺ブロックがある行にだけ付けられます。
<eqnarray>
{\sin α + \sin β} = {2\sin \frac{α + β}{2} \cos \frac{α - β}{2} } \\
{\sin α - \sin β} = {2\sin \frac{α - β}{2} \cos \frac{α + β}{2} } \\
{\cos α + \cos β} = {2\cos \frac{α + β}{2} \cos \frac{α - β}{2} } \\
{\cos α - \cos β} = {-2\sin \frac{α + β}{2} \sin \frac{α - β}{2} }
</eqnarray>
(2)
sin α + sin β
=
2sin
α + β
2
cos
α - β
2
(3)
sin α - sin β
=
2sin
α - β
2
cos
α + β
2
(4)
cos α + cos β
=
2cos
α + β
2
cos
α - β
2
(5)
cos α - cos β
=
-2sin
α + β
2
sin
α - β
2
<eqnarray>
{F^{-1}・F(f)(ζ^r)} = 
{n^{-1}\sum_{t=0}^{n-1}{F(f)(ζ^t)ζ^{-tr}}} \\
{} = {n^{-1}\sum_{t=0}^{n-1}{(\sum_{s=0}^{n-1}{f(ζ^s)ζ^{st}})ζ^{-tr}}} \\
{} = {n^{-1}\sum_{s=0}^{n-1}{f(ζ^s)(\sum_{t=0}^{n-1}{ζ^{t(s-r)}})}}\\
{} = {n^{-1}f(ζ^r)(\sum_{t=0}^{n-1}{ζ^0)}}\\
{} = f(ζ^r)
</eqnarray>
(6)
F-1・F(f)(ζr)
=
n-1
n-1

t=0
F(f)(ζt-tr
=
n-1
n-1

t=0
(
n-1

s=0
f(ζsst
-tr
=
n-1
n-1

s=0
f(ζs)(
n-1

t=0
ζt(s-r)
)
=
n-1f(ζr)(
n-1

t=0
ζ0)
=
f(ζr)
 箇条書きに自由に見出しを付けたいときに使います。left属性は見出しの長さが全体に占める割合を
<qdlist left='15' align='center'>
(見出し1):\frac{√{s(s - a)(s - b)(s - c)}}{S} = 1
(見出し2):δ_{ij} = \array_{\lc48}{  0, i≠j;  1, i=j; }
</qdlist>
(見出し1)
s(s - a)(s - b)(s - c)
S
= 1
(見出し2)
δij = lc48
0,
i≠j
1,
i=j
alphaΑα
betaΒβ
gammaΓγ
deltaΔδ
epsilonΕε
zetaΖζ
etaΗη
thetaΘθ
iotaΙι
kappaΚκ
lambdaΛλ
muΜμ
nuΝν
xiΞξ
omicronΟο
piΠπ
rhoΡρ
sigmaΣσ
tauΤτ
upsilonΥυ
phiΦφ
chiΧχ
psiΨψ
omegaΩω
epsilon
thetaϑ
piϖ
rhoϱ
sigmaς
phiϕ
stigmaϚ
digammaϜ
sampiϠ
qoppaϞ
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
Published by SANENSYA Co.,Ltd.