MathML仕様の実装状況

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

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

注意: PDF生成時には、フォントを埋め込むことを強く勧めます。

Presentation Markup

要素 属性 実装状況 備考
2.1.6 id 以下のCSSプロパティを評価します。id、class では、外部のCSSの指定が反映されます。
  • font-family
  • font-weight
  • font-style
  • font-size
  • color
  • background-color
同一タグに指定された mathvariant や fontfamily などによる指定よりも優先されます。CSS組版では、<math> に指定されたCSSプロパティは、上記以外でも画像のプロパティとして評価されます。
class
style
href ハイパーリンクはしません。
xref ×
other × [廃止された属性]
2.2 <math> xmlns="http://www.w3.org/1998/Math/MathML"
display
maxwidth
overflow linebreak のみ実装しています。linebreak 以外は、自動的な行分割処理を行わず、行があふれます。
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 の値は CID とみなされます。CID がないときは GlyphID とみなされます。
3.2.2 mathvariant initial、 tailed、 looped、 stretched には対応していません。
mathsize
dir
fontfamily [廃止された属性] 同一タグに指定された mathvariant による指定よりも優先されます。
fontweight [廃止された属性] 同一タグに指定された mathvariant による指定よりも優先されます。
fontstyle [廃止された属性] 同一タグに指定された mathvariant による指定よりも優先されます。
fontsize [廃止された属性] mathsize と併用した場合、fontsize に mathsize が適用されます。
color [廃止された属性]
background [廃止された属性]
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 に正の長さを指定すると、その長さ分左右(または上下)に長くされます。負の長さを指定すると短くされます。この長さは、minsize、maxsize の制限を受けます。
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> mathvariant、mathcolor は無効です。
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 *arrow、madruwb は未実装です。 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 オプション設定ファイルで初期値を変更することができます。 V6.3MR1
columnspacing オプション設定ファイルで初期値を変更することができます。 V6.3MR1
rowlines
columnlines
frame
framespacing 長さを3つ指定できるように拡張されています。3つめの長さは省略でき、指定したときは frame="none" のときの左右のアキとなります。 オプション設定ファイルで初期値を変更することができます。 V6.3MR1
equalrows
equalcolumns
displaystyle
side leftoverlap、rightoverlap はそれぞれ left、right とみなされます。
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 tight、medium、loose に対応する間隔はオプション設定ファイルで指定できます。自動的な間隔の調整は行いません。
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 常に n とみなされます。
crossout
scriptsizemultiplier
3.6.6 <mscarry>
location 常に 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> × 無視されます。

演算子辞書

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

文字 グリフ 名前 form priority lspace rspace 属性 備考
U+FE37 presentation form for vertical left curly bracket postfix 880 0 0 stretchy, accent U+23DE を使ってください
U+FE38 presentation form for vertical right curly bracket postfix 880 0 0 stretchy, accent U+23DF を使ってください

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

オプション設定ファイルで利用可能なデフォルトの演算子辞書を OperatorDictionary.xml に置いてあります。AH Formatter V6.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 では、入力された一部の文字を置換して処理することになっています。AH Formatter V6.4 では、以下の文字の置換を行います。

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

実体参照

以下で定義されている実体参照を利用することができます。

制限事項