AH Formatter V6.6 は、独自開発した「AH Formatter MathML 描画エンジン」により、W3Cによる Mathematical Markup Language (MathML) Version 3.0 2nd Edition (PDF版) を描画することができます。そのため、PDF中へのイメージを高い解像度で描画することが可能です。 MathMLの利用方法については、グラフィクスを参照してください。 また、オプション設定ファイルによる設定も参照してください。
以下に、MathMLの各要素、属性の実装状況を示します。
注意: | PDF生成時には、フォントを埋め込むことを強く勧めます。 |
---|
要素 | 属性 | 実装状況 | 備考 |
---|---|---|---|
2.1.6 | id | ○ |
以下のCSSプロパティを評価します。id、class では、外部の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 | ○ | V6.6 | |
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 | △ | initial、 tailed、 looped、 stretched には対応していません。 |
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 に正の長さを指定すると、その長さ分左右(または上下)に長くされます。負の長さを指定すると短くされます。この長さは、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 | ○ | オプション設定ファイルで初期値を変更することができます。 | |
columnspacing | ○ | オプション設定ファイルで初期値を変更することができます。 | |
rowlines | ○ | ||
columnlines | ○ | ||
frame | ○ | ||
framespacing | ○ | 長さを3つ指定できるように拡張されています。3つめの長さは省略でき、指定したときは frame="none" のときの左右のアキとなります。 オプション設定ファイルで初期値を変更することができます。 | |
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、ne、nw に対応しています。他は n とみなされます。 | |
crossout | ○ | ||
scriptsizemultiplier | ○ | ||
3.6.6 <mscarry> | ○ | ||
location | △ | n、ne、nw に対応しています。他は n とみなされます。 | |
crossout | ○ | ||
3.6.7 <msline> | ○ | ||
position | ○ | ||
length | ○ | ||
leftoverhang | ○ | ||
rightoverhang | ○ | ||
mslinethickness | ○ | ||
3.7.1 <maction> | ○ | ||
actiontype | ○ | actiontype="toggle" のときは selection で指定された要素が表示され、他のときは最初の要素のみが表示されます。 | |
selection | ○ |
外部の 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(⁢)を使いますが、次のように、第2オペランドが <cn> のときは U+00D7(×)を使います。
<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(≃)が使われていますが、MathML2仕様書やTeXのように U+2248(≈)を使います。 | |
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> | ○ | [廃止された要素] |
要素 | 属性 | 実装状況 | 備考 |
---|---|---|---|
5.2.1 <semantics> | △ | <semantics> タグ自身は無視されます。 | |
5.2.2 <annotation> | × | 無視されます。 | |
5.2.3 <annotation-xml> | × | 無視されます。 |
演算子辞書は、MathML 3.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.6 はこのファイルを参照しません。変更したい演算子の部分を抽出して利用するとよいでしょう。
演算子辞書の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.6 では、以下の文字の置換を行います。
オプション設定ファイルで、これらの置換を無効にすることができます。
以下で定義されている実体参照を利用することができます。