Reply to: Table column widths rendering as NaN%May 24, 2012 at 12:47 am
I'd say that's a pretty good hack (I'd actually call it a good, but specific, workaround). Basically it means you must specify units.
For others reading, this is not a complete fix. It will make it so that the conversion from “CALS proportional” to “HTML percentage” no longer happens (you'll end up with “*” or “*N” where N is a number in your @width in the
Note that this workaround will give you incorrect values in the HTML in one particular case (though they will look like valid HTML width values). So, you might watch out for that. It will occur when no units are specified at all, as follows:
In CALS when no units are specified and the width is not proportional (ie: no “*”) the default unit is assumed to be “pt”. In HTML when no units are specified the units are assumed to be “px” (and CALS specifically does not have the equivalent of pixels). You might use this as an additional hack though. On most screens XMetaL will probably render “pt” close enough to an equivalent number of pixels (there are 72pt in an inch and in most cases you can assume 96px/inch) so you might get a fairly close approximation of what the table will look like in output. Keep this in mind if you use this though, in case the DITA OT changes in the future to support units with the corresponding conversion from pt to px.
I guess it depends on what your table content is, but my feeling is that it generally makes sense to use proportional sizes and let things just flow for outputs like HTML. I think most of the time we're not shooting for pixel-perfect layouts when it comes to tabular content in HTML (where table sizes are going to expand anyway if the content is too large to fit — that's just part of the HTML spec). Unfortunately, if you do output to PDF and have 'fiddly' content then you are also dealing with a fixed page size. In extreme cases you might even end up needing to conditionalize for these two different outputs.
The CALS spec is very complex and the DITA OT only deals with a portion of what is allowed (it doesn't deal with column ordering for example and always assumes