MathML仕様の実装状況

Antenna House Formatter V7.4 は、独自開発した「Antenna House Formatter MathML 描画エンジン」により、W3Cによる Mathematical Markup Language (MathML) Version 3.0 2nd Edition (PDF版) を描画することができます。そのため、PDF中への画像を高い解像度で描画することが可能です。 MathMLの利用方法については、グラフィクスを参照してください。また、オプション設定ファイルによる設定も参照してください。

以下に、MathMLの各要素、属性の実装状況を示します。

  • ]は機能が実装されている要素/属性を表します。
  • ]は部分的実装要素/属性を表します。
  • ×]は未実装の要素/属性を表します。

Presentation Markup

要素属性実装状況備考
2.1.6 id 以下のCSSプロパティを評価します。
  • font-family
  • font-weight
  • font-style
  • font-size
  • color
  • background-color
id、class では、外部のCSSの指定が反映されます。 同一タグに指定された mathvariantfontfamily などによる指定よりも優先されます。CSS組版では、<math> に指定されたCSSプロパティは、上記以外でも画像のプロパティとして評価されます。
class
style
href ハイパーリンクはしません。
xref ×
other × [廃止された属性]
2.2 <math> xmlns="http://www.w3.org/1998/Math/MathML"
display オプション設定ファイルで初期値を変更することができます。
maxwidth
overflow linebreak のみ実装しています。linebreak 以外は、自動的な行分割処理を行わず、行があふれます。 none という値を受け付けるように拡張されています。これはエラーメッセージを出力しません。
altimg × 無視されます。
altimg-width × 無視されます。
altimg-height × 無視されます。
altimg-valign × 無視されます。
alttext
cdgroup ×
macros × [廃止された属性]
mode [廃止された属性] display の指定が優先します。
3.1.10 mathcolor
mathbackground
3.2.1.2 <mglyph>
src JPEG や PNG などのラスタ画像にのみ対応しています。
width
height
valign
alt
fontfamily [廃止された属性] src が指定されたときは無効です。
index [廃止された属性] src が指定されたときは無効です。index の値は GlyphID とみなされます。
3.2.2 mathvariant initialtailedloopedstretched には対応していません。
mathsize
dir 制限事項を参照してください。
fontfamily [廃止された属性] mathvariant と併用した場合の効果は保証されません。
fontweight [廃止された属性] mathvariant と併用した場合の効果は保証されません。
fontstyle [廃止された属性] mathvariant と併用した場合の効果は保証されません。
fontsize [廃止された属性] mathsize と併用した場合の効果は保証されません。
color [廃止された属性] mathcolor と併用した場合の効果は保証されません。
background [廃止された属性] mathbackground と併用した場合の効果は保証されません。
3.2.3 <mi> 仕様では、<mi>3</mi> というような数字を斜体にしないとは書かれていませんが、多くの実装系にならって数字などは斜体になりません。オプション設定ファイルで、この制限を調整することができます。
3.2.4 <mn>
3.2.5 <mo>
form
lspace オプション設定ファイルで演算子辞書に登録されていないときの初期値を変更することができます。
rspace オプション設定ファイルで演算子辞書に登録されていないときの初期値を変更することができます。
fence
separator × 無視されます。
stretchy stretchy="-0.2em" のように、値に符号付き長さを指定できるように拡張されています(符号なし長さは指定できません)。符号付き長さの指定は、true の意味を含みます。 通常、伸張は元になる文字幅などと同じになるように行われます。stretchy に正の長さを指定すると、その長さ分左右(または上下)に長くされます。負の長さを指定すると短くされます。この長さは、minsizemaxsize の制限を受けます。
symmetric
maxsize
minsize オプション設定ファイルで初期値を変更することができます。
largeop
movablelimits
accent
linebreak
lineleading 初期値は 0 です。オプション設定ファイルで初期値を変更することができます。
linebreakstyle
linebreakmultchar
indentalign
indentshift
indenttarget 後方のidや参照できない位置にあるidを参照したときの効果は保証されません。
indentalignfirst
indentshiftfirst
indentalignlast
indentshiftlast
3.2.6 <mtext>
3.2.7 <mspace> mathvariantmathcolor は無効です。
width
height
depth
linebreak indentingnewline は廃止されました。それは newline とみなされますが、オプション設定ファイルでインデント量を指定できます。その値は indentshift の値に加算されます。
indentalign
indentshift
indenttarget 後方のidや参照できない位置にあるidを参照したときの効果は保証されません。
indentalignfirst
indentshiftfirst
indentalignlast
indentshiftlast
3.2.8 <ms> エスケープ文字はオプション設定ファイルで変更することができます。lquoteおよびrquoteが空のときはエスケープ処理は行われません。
lquote
rquote
3.3.1 <mrow>
dir
3.3.2 <mfrac>
linethickness
numalign
denomalign
bevelled
3.3.3 <msqrt>
3.3.3 <mroot>
3.3.4 <mstyle>
scriptlevel <math> に適用可。
displaystyle <math> に適用可。
scriptsizemultiplier <math> に適用可。オプション設定ファイルで初期値を変更することができます。
scriptminsize <math> に適用可。オプション設定ファイルで初期値を変更することができます。
infixlinebreakstyle <math> に適用可。
decimalpoint <math> に適用可。
任意属性 <math> に適用可。以下を受け付けます。
accent accentunder align alignmentscope bevelled charalign charspacing close columnalign columnlines columnspacing columnspan columnwidth crossout denomalign depth dir edge equalcolumns equalrows fence form frame framespacing groupalign height indentalign indentalignfirst indentalignlast indentshift indentshiftfirst indentshiftlast indenttarget largeop leftoverhang length linebreak linebreakmultchar linebreakstyle lineleading linethickness location longdivstyle lquote lspace mathsize mathvariant maxsize minlabelspacing minsize movablelimits mslinethickness notation numalign open position rightoverhang rowalign rowlines rowspacing rowspan rquote rspace selection separator separators shift side stackalign stretchy subscriptshift superscriptshift symmetric valign width
これらは、内部の要素のそれぞれの属性の初期値となります。
veryverythinmathspace [廃止された属性]
verythinmathspace [廃止された属性]
thinmathspace [廃止された属性]
mediummathspace [廃止された属性]
thickmathspace [廃止された属性]
verythickmathspace [廃止された属性]
veryverythickmathspace [廃止された属性]
fontfamily [廃止された属性]
fontweight [廃止された属性]
fontstyle [廃止された属性]
fontsize [廃止された属性]
color [廃止された属性]
background [廃止された属性]
3.3.5 <merror> 表示スタイルはオプション設定ファイルで指定できます。
3.3.6 <mpadded>
width
height
depth
lspace
voffset
3.3.7 <mphantom>
3.3.8 <mfenced>
open
close
separators
3.3.9 <menclose>
notation *arrowmadruwb は未実装です。 circle は境界矩形に対して内接するように描かれます。オプション設定ファイルで外接させるように変更できます。 circumscribed-circle で外接円を、inscribed-circle で内接円を明示することができるよう拡張されています。
3.4.1 <msub>
subscriptshift
3.4.2 <msup>
superscriptshift
3.4.3 <msubsup>
subscriptshift
superscriptshift
3.4.4 <munder>
accentunder
align
3.4.5 <mover>
accent
align
3.4.6 <munderover>
accent
accentunder
align
3.4.7 <mmultiscripts>
3.4.7 <mprescripts>
3.4.7 <none>
3.5.1 <mtable>
align
rowalign
columnalign
groupalign
alignmentscope ×
columnwidth
width
rowspacing オプション設定ファイルで初期値を変更することができます。
columnspacing オプション設定ファイルで初期値を変更することができます。
rowlines
columnlines
frame
framespacing 長さを3つ指定できるように拡張されています。3つめの長さは省略でき、指定したときは frame="none" のときの左右のアキとなります。 オプション設定ファイルで初期値を変更することができます。
equalrows
equalcolumns
displaystyle
side
minlabelspacing
3.5.2 <mtr>
rowalign
columnalign
groupalign
3.5.3 <mlabeledtr>
3.5.4 <mtd>
rowspan
columnspan columnspan が 1 より大きなセルでは <maligngroup> は無視されます。
rowalign
columnalign
groupalign
3.5.5 <maligngroup> <mtd> の内部にない <maligngroup> は無視されます。
groupalign
3.5.5 <malignmark> <mtd> の内部にない <malignmark> は無視されます。
edge
3.6.1 <mstack>
align
stackalign
charalign
charspacing tightmediumloose に対応する間隔はオプション設定ファイルで指定できます。自動的な間隔の調整は行いません。
3.6.2 <mlongdiv> 除数や結果に <msrow> が含まれない場合はエラーとしています。除数や被除数、結果に <mscarries> を適用することもできます。
longdivstyle
3.6.3 <msgroup>
position <mlongdiv> の除数では position は無視されます。また、<mlongdiv> の結果では、それが被除数の上に位置しないとき position は無視されます。
shift
3.6.4 <msrow>
position <mlongdiv> の除数では position は無視されます。また、<mlongdiv> の結果では、それが被除数の上に位置しないとき position は無視されます。
3.6.5 <mscarries> <mscarries><msrow> が後行しない場合はエラーとしています。
position
location nnenw に対応しています。他は n とみなされます。
crossout
scriptsizemultiplier
3.6.6 <mscarry>
location nnenw に対応しています。他は n とみなされます。
crossout
3.6.7 <msline>
position
length
leftoverhang
rightoverhang
mslinethickness
3.7.1 <maction>
actiontype actiontype="toggle" のときは selection で指定された要素が表示され、他のときは最初の要素のみが表示されます。
selection

Content Markup

外部の Content Dictionary を参照して表示を動的に変化させることはできません。必ずしも MathML3 仕様書の例示と同じに表示されるわけではありません。

要素属性実装状況備考
4.2 encoding ×
definitionURL ×
4.2.1 <cn>
type
base
4.2.1 <sep>
4.2.2 <ci>
type × 無視されます。
4.2.3 <csymbol>
type ×
cd ×
4.2.4 <cs>
4.2.5 <apply> 演算子に対応するオペランドの不足や過多に対しては、そのオペランドを括弧で囲み <merror> を適用したように表示されます。
4.2.6 <bind>
4.2.6 <bvar>
4.2.7 <share> href="#id" という自分自身への参照のみ対応しています。
src ×
4.2.9 <cerror>
4.2.10 <cbytes>
4.3.3.1 <domainofapplication>
4.3.3.1 <condition>
4.3.3.1 <lowlimit>
4.3.3.1 <uplimit>
4.3.3.2 <degree>
4.3.3.3 <momentabout>
4.3.3.3 <logbase>
4.4.1.1 <interval>
4.4.1.2 <inverse>
4.4.1.3 <lambda>
4.4.1.4 <compose>
4.4.1.5 <ident>
4.4.1.6 <domain>
4.4.1.7 <codomain>
4.4.1.8 <image>
4.4.1.9 <piecewise>
4.4.1.9 <piece>
4.4.1.9 <otherwise>
4.4.2.1 <quotient>
4.4.2.2 <factorial>
4.4.2.3 <divide>
4.4.2.4 <max>
4.4.2.5 <min>
4.4.2.6 <minus>
4.4.2.7 <plus> 仕様には単項 + はありませんが、次のように書くことを許しています。
<apply>
 <plus/>
 <ci>x</ci>
</apply>
4.4.2.8 <power>
4.4.2.9 <rem>
4.4.2.10 <times> 通常は U+2062(&InvisibleTimes;)を使いますが、次のように、第2オペランドが <cn> のときは U+00D7(&times;)を使います。
<apply>
 <times/>
 <cn>1</cn>
 <cn>7</cn>
</apply>
4.4.2.11 <root>
4.4.2.12 <gcd>
4.4.2.13 <and>
4.4.2.14 <or>
4.4.2.15 <xor>
4.4.2.16 <not>
4.4.2.17 <implies>
4.4.2.18 <forall>
4.4.2.19 <exists>
4.4.2.20 <abs>
4.4.2.21 <conjugate>
4.4.2.22 <arg>
4.4.2.23 <real>
4.4.2.24 <imaginary>
4.4.2.25 <lcm>
4.4.2.26 <floor>
4.4.2.27 <ceiling>
4.4.3.1 <eq>
4.4.3.2 <neq>
4.4.3.3 <gt>
4.4.3.4 <lt>
4.4.3.5 <geq>
4.4.3.6 <leq>
4.4.3.7 <equivalent>
4.4.3.8 <approx> MathML3仕様書では U+2243(&TildeEqual;)が使われていますが、MathML2仕様書やTeXのように U+2248(&TildeTilde;)を使います。
4.4.3.9 <factorof>
4.4.4.1 <int>
4.4.4.2 <diff>
4.4.4.3 <partialdiff>
4.4.4.4 <divergence>
4.4.4.5 <grad>
4.4.4.6 <curl>
4.4.4.7 <laplacian>
4.4.5.1 <set>
type × 無視されます。
4.4.5.2 <list>
order × 無視されます。
4.4.5.3 <union>
4.4.5.4 <intersect>
4.4.5.5 <in>
4.4.5.6 <notin>
4.4.5.7 <subset>
4.4.5.8 <prsubset>
4.4.5.9 <notsubset>
4.4.5.10 <notprsubset>
4.4.5.11 <setdiff>
4.4.5.12 <card>
4.4.5.13 <cartesianproduct>
4.4.6.1 <sum>
4.4.6.2 <product>
4.4.6.3 <limit>
4.4.6.4 <tendsto>
type
4.4.7.1 <sin>
4.4.7.1 <cos>
4.4.7.1 <tan>
4.4.7.1 <sec>
4.4.7.1 <csc>
4.4.7.1 <cot>
4.4.7.1 <sinh>
4.4.7.1 <cosh>
4.4.7.1 <tanh>
4.4.7.1 <sech>
4.4.7.1 <csch>
4.4.7.1 <coth>
4.4.7.1 <arcsin>
4.4.7.1 <arccos>
4.4.7.1 <arctan>
4.4.7.1 <arccosh>
4.4.7.1 <arccot>
4.4.7.1 <arccoth>
4.4.7.1 <arccsc>
4.4.7.1 <arccsch>
4.4.7.1 <arcsec>
4.4.7.1 <arcsech>
4.4.7.1 <arcsinh>
4.4.7.1 <arctanh>
4.4.7.2 <exp>
4.4.7.3 <ln>
4.4.7.4 <log>
4.4.8.1 <mean>
4.4.8.2 <sdev>
4.4.8.3 <variance>
4.4.8.4 <median>
4.4.8.5 <mode>
4.4.8.6 <moment>
4.4.9.1 <vector>
4.4.9.2 <matrix>
4.4.9.3 <matrixrow>
4.4.9.4 <determinant>
4.4.9.5 <transpose>
4.4.9.6 <selector>
4.4.9.7 <vectorproduct>
4.4.9.8 <scalarproduct>
4.4.9.9 <outerproduct>
4.4.10.1 <integers>
4.4.10.2 <reals>
4.4.10.3 <rationals>
4.4.10.4 <naturalnumbers>
4.4.10.5 <complexes>
4.4.10.6 <primes>
4.4.10.7 <exponentiale>
4.4.10.8 <imaginaryi>
4.4.10.9 <notanumber>
4.4.10.10 <true>
4.4.10.11 <false>
4.4.10.12 <emptyset>
4.4.10.13 <pi>
4.4.10.14 <eulergamma>
4.4.10.15 <infinity>
4.5.1 <declare> × [廃止された要素] 無視されます。
<reln> [廃止された要素]
<fn> [廃止された要素]

Mixing Markup

要素属性実装状況備考
5.2.1 <semantics> <semantics> タグ自身は無視されます。
5.2.2 <annotation> × 無視されます。
5.2.3 <annotation-xml> × 無視されます。

演算子辞書

演算子辞書は、MathML 3.0 2nd Edition にあるものがそのまま実装されています。 ただし、次の演算子が追加されています。

文字グリフ名前formprioritylspacerspace属性備考
U+FE37presentation form for vertical left curly bracketpostfix88000stretchy, accent U+23DE を使ってください
U+FE38presentation form for vertical right curly bracketpostfix88000stretchy, accent U+23DF を使ってください

オプション設定ファイルによって、演算子辞書の内容を調整することができます。以下のような制約があります。

  • priority には対応していません。
  • separator は無視されます。

オプション設定ファイルで利用可能なデフォルトの演算子辞書を OperatorDictionary.xml に置いてあります。Antenna House Formatter V7.4 はこのファイルを参照しません。変更したい演算子の部分を抽出して利用するとよいでしょう。

演算子辞書のDTDは次のとおりです。

<!ELEMENT operator-dictionary entry*>
<!ELEMENT entry EMPTY>
<!ATTLIST entry operator       CDATA #REQUIRED>
<!ATTLIST entry form           (prefix|infix|postfix) #REQUIRED>
<!ATTLIST entry priority       %integer; "0">
<!ATTLIST entry lspace         (0|1|2|3|4|5|6|7) "5">
<!ATTLIST entry rspace         (0|1|2|3|4|5|6|7) "5">
<!ATTLIST entry minsize        %length; #IMPLIED>
<!ATTLIST entry maxsize        %length: #IMPLIED>
<!ATTLIST entry accent         (false|true) "false">
<!ATTLIST entry fence          (false|true) "false">
<!ATTLIST entry separator      (false|true) "false">
<!ATTLIST entry stretchy       (false|true) "false">
<!ATTLIST entry symmetric      (false|true) "false">
<!ATTLIST entry largeop        (false|true) "false">
<!ATTLIST entry movablelimits  (false|true) "false">
<!ATTLIST entry linebreakstyle (before|after|duplicate) "before">

文字の置換

MathML では、入力された一部の文字を置換して処理することになっています。Antenna House Formatter V7.4 では、以下の文字の置換を行います。

  • <mi><mn><mo> 中の文字列に対して
    1. U+0027 U+0027 U+0027 U+0027 を U+2057 に
    2. U+0027 U+0027 U+0027 を U+2034 に
    3. U+0027 U+0027 を U+2033 に
    4. U+0027 を U+2032 に
    5. U+002D を U+2212 に
    それぞれ置換します。
  • それら以外の <mtext> などのタグ中の文字列に対して U+002D を U+2010 に置換します。

オプション設定ファイルで、これらの置換を無効にすることができます。

実体参照

制限事項

  • 以下の要素内では行分割は起こりません。

    • <mfrac>
    • <menclose>
    • <msub>
    • <msup>
    • <msubsup>
    • <munder>
    • <mover>
    • <munderover>
    • <mmultiscripts>
    • <msqrt>
    • <mroot>
    • <mstack>
    • <mlongdiv>

  • 以下の要素内では自動的な行分割は起こりません。

    • <mtable>

  • アラビア語など複雑なスクリプト、絵文字には対応していません。

  • dir="rtl" では、領域の左右反転処理を行いますが、文字列の進行方向の反転処理、根号やΣなどの鏡像処理は行っていません。

  • <csymbol> の多くは実装されていません。

  • <bvar> には適用方法の不明なものが多くあります。

  • GUIでMathMLを表示したとき、一部のフォントで =- などの記号の表示位置が上下にずれることがあります。 このようなとき、GUIの その他設定ダイアログその他ページ で [MathMLをグリフ表示する] をチェックしてください。また、GUIの制限事項のGUIの描画に関する対処方法も参照してください。 PDF出力などでは問題ありません。