Omni Systems, Inc. Mif2Go User's Guide, Version 55
> 28 Working with macros > 28.9 Deploying macros and macro variables > 28.9.4 Converting a dictionary-style list to an HTML table > 28.9.4.2 Assembling the pieces
To have Mif2Go convert a list that uses a run-in format in FrameMaker (as described in §28.9.4.1 Stating the problem) to an HTML table, you must provide configuration settings and HTML code to meet the following challenges:
Starting and ending each cell.
By default, Mif2Go treats run-in paragraph formats more like character formats. This means that macros you want inserted before the List_Term items would be embedded in the start of the List_Defn paragraphs instead (which is what you would want if you were trying to preserve the run-in effect in HTML instead of converting the list to a table). To get macros in the right place around List_Term paragraphs, you would need to set the following option:
See §21.3.2 Converting sidehead and run-in paragraph formats.
A more involved alternative would be to use a conversion template to replace the run-in formats with regular paragraph formats; see §3.4.1 Importing formats from a FrameMaker template.
If your document has only one such dictionary-style
list, you could insert Code
markers containing macros to provide the <table>
and </table>
tags; see §29.7 Inserting code or text with markers.
However, if your document contains many such lists, instead you would
want to use macros that employ the following:
<$_if>
conditions
(see §28.6.4.2 Using conditional expressions).
For example, you could define and initialize a macro variable to keep track of where to start and end the table:
You could start a CodeBefore
macro for the run-in List_Term format
with:
<$_if ($$InTable==0)><table attr=val ... ><$$InTable=1><$_endif>
This code guarantees that the first List_Term
paragraph in the list is preceded by an opening <table>
tag, yet subsequent List_Term paragraphs
are not, as long as the table is still being generated.
To identify the end of the list, you could assign
a CodeBefore
macro to any paragraph format
that can follow the list (but never appear
within the list):
<$_if ($$InTable==1)></table><$$InTable=0><$_endif>
Each row of the table starts with a List_Term
paragraph, and ends just before the next List_Term
paragraph (or the end of the list); and the beginning and end of a row
also mark the beginning of the first cell and end of the second cell,
respectively. This means the CodeBefore
macro
for the List_Term format can provide
row and cell tags to start and end each row, as well as start the first
cell in the row and end the second cell:
<table attr=val ... ><$$InTable=1>
Each List_Defn
paragraph marks the end of a List_Term
cell and the beginning of a List_Defn
cell (which might also include other paragraph formats following the
List_Defn paragraph; see §28.9.4.1 Stating the problem). Therefore,
a CodeBefore
macro assigned to the List_Defn
format can provide tags for the end of the first cell and beginning of
the second cell:
Next, see §28.9.4.3 Putting it all together.