Re: Displaystyle and mtable

>> I take "being present" to mean being specified explicitly or by inheritance (in the same way that the mathvariant value is present by inheritance in my earlier example).  Since displaystyle is inherited (as you pointed out in your first message), I take <mtable> to have displaystyle="true" in both of these examples.
> 
> I still don't see how MathJax honors 'the mtable element sets displaystyle to "false" within the table elements.' when the attribute is absent. If the inherited value is true, it will set the value to true with your interpretation. If the inherited value is false, then there is no need to "set" the value to false. So this sentence from the spec is irrelevant and it would make more sense to say that the displaystyle value on the mtable is inherited (unless it is modified by an explicit displaystyle attribute on the mtable). This is what Gecko used to do.

If I understand you correctly, your argument is that in the statement (section 3.3.4.1)

Some attributes, such as displaystyle or scriptlevel (explained below), are inherited from the surrounding context when they are not explicitly set. Specifying such an attribute on an mstyle element sets the value that will be inherited by its child elements. Unless a child element overrides this inherited value, it will pass it on to its children, and they will pass it to their children, and so on. But if a child element does override it, either by an explicit attribute setting or automatically (as is common for scriptlevel), the new (overriding) value will be passed on to that element's children, and then to their children, etc, unless it is again overridden.

the mtable element falls into the category of modifying the attribute automatically (like mfrac does), and that your quoted statement about setting displaystyle to false is that automatic modification.

On the other hand, section 3.1.6, that describes displaystyle and scriptlevel, says

These values are initialized by the math element according to the display attribute. They are automatically adjusted by the various script and limit schemata elements, and the elements mfrac and mroot, which typically set displaystyle false and increment scriptlevel for some or all of their arguments. ... They also may be set explicitly via the displaystyle and scriptlevel attributes on the mstyle element or the displaystyle attribute of mtable. In all other cases, they are inherited from the node's parent.

Here, the elements that automatically adjust displaystyle are the script and limit elements, mfrac, and mroot (note that mtable is not listed here).  The mstyle element can modify the value, and an explicit displaystyle on mtable can set the value.  All other cases inherit the value.  So this section does not support the reading that mtable automatically modifies displaystyle.

My own feeling is that, as you describe above, the sentence is essentially irrelevant, and I think that the spec actually DOES say that the displaystyle value on mtable is inherited unless it is modified by an explicit displaystyle attribute on mtable.  In that reading, sections 3.3.4.1 and 3.1.6 are consistent, though the sentence about displaystyle in 3.3.4.1 is redundant.  Your reading causes 3.3.4.1 and 3.1.6 to be inconsistent.  What the authors of the spec actually intended, I'm not sure.  I guess we'll have to await word from the committee on that.

Davide

Received on Wednesday, 11 June 2014 15:01:36 UTC