MIF Reference
MIF Reference
MIF Reference
3
Contents
Chapter 1: Introduction
Why use MIF? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Using this manual ......................................................................... 1
Style conventions ......................................................................... 2
Overview of MIF statements ............................................................... 2
MIF statement syntax ..................................................................... 4
Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Mini TOC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Graphic objects and graphic frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Text flows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Text insets (text imported by reference) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Chapter 8: Examples
Text example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Bar chart example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
Pie chart example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Custom dashed lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Table examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Database publishing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Chapter 1: Introduction
MIF (Maker Interchange Format) is a group of ASCII statements that create an easily parsed, readable text file of all
the text, graphics, formatting, and layout constructs that Adobe® FrameMaker® understands. Because MIF is an alter-
native representation of a FrameMaker document, it allows FrameMaker and other applications to exchange infor-
mation while preserving graphics, document content, and format.
For an introduction to writing MIF files, read , “Using MIF Statements.” You can then use the statement index,
subject index, and table of contents to locate more specific information about a particular MIF statement.
For a description of a MIF statement, use the table of contents or statement index to locate the statement.
For a description of the differences between the MIF statements for this version of FrameMaker and earlier versions,
see , “MIF Compatibility.”
Style conventions
This manual uses different fonts to represent different types of information.
• What you type is shown in
text like this.
• MIF statement names, pathnames, and filenames are also shown in
text like this.
• Placeholders (such as MIF data) are shown in
text like this.
• For example, the statement description for PgfTag is shown as:
<PgfTag tagstring >
• You replace tagstring with the tag of a paragraph format.
This manual also uses the term FrameMaker, (as in FrameMaker document, or FrameMaker session) to refer to
FrameMaker and to refer to structured or unstructured documents.
FrameMaker also treats each document as an object and stores document preferences as properties of the document.
For example, a document’s page size and page numbering style are document properties.
• Page properties
• Graphic frame properties
• Text frame properties
• Fill pattern
• Pen pattern
• Line width
• Line cap
• Line style (dash or solid)
• Color
• Text line alignment and character format
Because the interpreter also provides default objects for a document, the current state of an object may be deter-
mined by a default object. For example, if a document does not provide any paragraph formats, the interpreter
applies a set of default paragraph properties to the first paragraph. Subsequent paragraphs use the same properties
unless otherwise specified.
Statement hierarchy
Some MIF statements can contain other statements. The contained statements are called substatements. In this
manual, substatements are usually shown indented within the containing statements as follows:
<Document
<DStartPage 1>
>
The indentation is not required in a MIF file, although it may make the file easier for you to read.
A MIF main statement appears at the top level of a file. A main statement cannot be nested within other statements.
Some substatements can only appear within certain main statements.
The statement descriptions in this manual indicate the valid locations for a substatement by including it in all of the
valid main statements. Main statements are identified in the statement description; for the correct order of main
statements, see “MIF file layout” on page 53.
string Left quotation mark ( ` ), zero or more standard ASCII characters (you can also include UTF-8 char-
acters), and a straight quotation mark ( ' ).
tagstring A string that names a format tag, such as a paragraph format tag. A tagstring value must be
unique; case is significant. A statement that refers to a tagstring must exactly match the
tagstring value. A tagstring value can include any character from the FrameMaker char-
acter set.
ID Integer that specifies a unique ID. An ID can be any positive integer between 1 and 65535, inclu-
sive. A statement that refers to an ID must exactly match the ID.
dimension Decimal number signifying a dimension. You can specify the units, such as 1.11", 72 pt, and
8.3 cm. If no units are specified, the default unit is used.
degrees A decimal number signifying an angle value in degrees. You cannot specify units; any number is
interpreted as a degree value.
percentage A decimal number signifying a percentage value. You cannot specify units; any number is inter-
preted as a percentage value.
metric A dimension specified in units that represent points, where one point is 1/72 inch (see “Math
values” on page 6). Only used in MathFullForm statements.
W H Pair of dimensions representing width and height. You can specify the units.
X Y Coordinates of a point. Coordinates originate at the upper-left corner of the page or graphic frame.
You can specify the units.
L T R B Coordinates representing left, top, right, and bottom indents. You can specify the units.
L T W H Coordinates representing the left and top indents plus the dimensions representing the width and
height of an object. You can specify the units.
ADOBE FRAMEMAKER 6
MIF Reference
X Y W H Coordinates of a point on the physical screen represented by X and Y plus dimensions describing
the width and height. Used only by the DWindowRect and DViewRect statements within the
Document statement and the BWindowRect statement within the Book statement. The
values are in pixels; you cannot specify the units.
keyword A token value. The allowed token values are listed for each statement; you can provide only one
value.
<token…> Ellipsis points in a statement indicate required substatements or arguments. The entire expanded
statement occurs at this point.
Unit values
You can specify the unit of measurement for most dimension data items. The following table lists the units of
measurement that FrameMaker supports and their notation in MIF.
Measurement unit Notation in MIF Relationship to other units
Dimension data types can mix different units of measurement. For example, the statement <CellMargins L T R
B> can be written as either of the following:
<CellMargins 6 pt 18 pt 6 pt 24 pt>
<CellMargins 6 pt .25" .5 pica 2 pica>
Math values
The MathFullForm statement uses metric values in formatting codes. A metric unit represents one point (1/72
inch). The metric type is a 32-bit fixed-point number. The 16 most significant bits of a metric value represent the
digits before the decimal; the 16 least significant bits represent the digits after the decimal. Therefore, 1 point is
expressed as hexadecimal 0x10000 or decimal 65536. The following table shows how to convert metric values into
equivalent measurement units.
To get this unit Divide the metric value by this number
point 65536
inch 4718592
millimeter 185771
centimeter 1857713
pica 786432
didot 6997
ADOBE FRAMEMAKER 7
MIF Reference
cicero 839724
pixel 49152
Tab \t
> \>
' \q
` \Q
\ \\
Note: The \xnn character is supported only for legacy MIF files.
All FrameMaker characters with values above the standard ASCII range (greater than \x7f) are represented in a
string by using \xnn notation, where nn represents the hexadecimal code for the character. The hexadecimal digits
must be followed by a space.
When using special characters in a variable definition, you can also use a hexadecimal notation or Unicode notation.
In the previous example, the hexadecimal notation for the paragraph symbol (¶) is \xa6. Alternatively, you can use
the \u00B6 Unicode notation to represent the same character.
The following example shows a FrameMaker document line and its representation in a MIF string.
You can also use the Char statement to include certain predefined special characters in a ParaLine statement (see
“Char statement” on page 134).
Device-independent pathnames
Several MIF statements require pathnames as values. You should supply a device-independent pathname so that files
can easily be transported across different system types. Because of MIF parsing requirements, you must use the
following syntax to supply a pathname:
`<code\>name<code\>name<code\>name …'
ADOBE FRAMEMAKER 8
MIF Reference
where name is the name of a component in the file’s path and code identifies the role of the component in the path.
The following table lists codes and their meanings.
Code Meaning
c Component
When you specify a device-independent pathname in a MIF string, you must precede any right angle brackets (>)
with backslashes (\), as shown in the syntax above.
Absolute pathnames
An absolute pathname shows the location of a file beginning with the root directory, volume, or drive. The following
table specifies device-independent, absolute pathnames for the different versions of FrameMaker.
UNIX `<r\><c\>MyDirectory<c\>MySubdirectory<c\>Filename'
Windows `<v\>c:<c\>mydir<c\>subdir<c\>filename'
Relative pathnames
A relative pathname shows the location of a file relative to the current directory. In all FrameMaker versions, the
device-independent, relative pathname for the same file is:
` <c\>Filename '
9
UNIX Shift
Save the edited MIF file as a text file by using the Save As command and choosing Text Only from the Format pop-
up menu. Give the saved file the suffix .mif. When you save a document as Text Only, FrameMaker asks you where
to place carriage returns. For a MIF file, choose the Only between Paragraphs option.
ADOBE FRAMEMAKER 10
MIF Reference
In UNIX versions, FrameMaker saves a document in text format in the ISO Latin-1 character encoding. You can
change the character encoding to ASCII by changing the value of an X resource. See the description of character
encoding in the online manual Customizing FrameMaker. In the Windows version, press Esc F t c to toggle between
FrameMaker’s character encoding and ANSI for Windows.
Catalogs Color
Condition
Paragraph Format
Element
Ruling
Table Format
Views
Formats Variable
Cross-reference
Objects Document
Dictionary
Anchored frames
Tables
Pages
Text flows
FrameMaker provides all of these objects, even if the object is empty. To avoid unpredictable results in a document,
you must follow this order when you create a MIF file.
This example is in the sample file hello.mif. To see how FrameMaker provides defaults for a document, open this
file in FrameMaker. Even though the MIF file does not specify any formatting, FrameMaker provides a default
Paragraph Catalog and Character Catalog. In addition, it provides a right master page, as well as many other default
properties.
Save this document as a MIF file and open the FrameMaker-generated MIF file in a text editor or in FrameMaker as
a text file. (For information on how to save and open MIF files, see “Opening and saving MIF files” on page 9.)
You’ll see that the MIF interpreter has taken the original 6-line file and generated over 1,000 lines of MIF statements
that describe all the default objects and their properties. To see the actual text of the document, go to the end of the
file.
This example demonstrates an important point about MIF files. Your MIF file can be very sparse; the MIF interpreter
supplies missing information. Most documents are not this simple, however, and require some formatting. The
following sections describe how to add additional document components, such as paragraph and character formats,
a table, and custom page layouts, to this minimal MIF file.
Creating a paragraph
In a MIF file, paragraphs are defined by a Para statement. A Para statement contains one or more ParaLine state-
ments that contain the lines in a paragraph; the actual text of the line is enclosed in one or more String statements:
<Para # Begin a paragraph
<ParaLine # Begin a line within the paragraph
<String `Hello World'># The actual text of this document
> # End of ParaLine statement
> # End of Para statement
The Para, ParaLine, and String statements are the only required statements to import text. You could use this
example to import a simple document into FrameMaker by placing each paragraph in a Para statement. Break the
paragraph text into a series of String statements contained in one ParaLine statement. It doesn’t matter how you
break up text lines within a Para statement; the MIF interpreter automatically wraps lines when it reads the MIF file.
Some characters must be represented by backslash sequences in a MIF string. For more information, see “Character
set in strings” on page 7.
The Pgf statement contains a group of substatements that describe all of a paragraph’s properties. It has the following
syntax:
<Pgf
<property value>
<property value>
...
>
A Pgf statement is quite long, so learning how to relate its substatements to the paragraph’s properties may take some
practice. Usually a MIF statement name is similar to the name of the setting within a dialog box. The following
examples show the property dialog boxes from the Paragraph Designer with the related Pgf substatements.
Suppose you have created a paragraph format for a numbered list item with Basic properties defined as follows in
the Paragraph Designer.
Basic properties
The Default Font properties are defined as follows in the Paragraph Designer.
Font properties
<PgfFont
<FEncoding>
<FLanguage> Language
Pagination properties
Numbering properties
<PgfNumFormat `<n+\>.\\t' > Autonumber Format (a number followed by a period and a tab)
Advanced properties
Asian properties
The Table Cell properties are defined as follows in the Paragraph Designer.
Direction properties
<PgfFIndent 0.0">
<PgfLIndent 0.0">
<PgfRIndent 0.0">
...
<PgfBoxColor NoColor>
<PgfAsianComposer No>
<PgfDir LTR>
> # end of Pgf
> # end of PgfCatalog
If you open pgfcat.mif in FrameMaker, you’ll see that the Paragraph Catalog contains a single paragraph format
called 1Heading. If you supply a Paragraph Catalog, the paragraph formats in your catalog replace those in the
default catalog; they do not supplement the default formats.
If you do not supply a Paragraph Catalog in a MIF file, the MIF interpreter provides a default Paragraph Catalog with
predefined paragraph formats.
If a Pgf statement provides only the name of a paragraph format, the MIF interpreter supplies default values for the
rest of the paragraph properties when it reads in the MIF file.
Tips
The following hints may help you minimize the MIF statements for paragraph formats:
ADOBE FRAMEMAKER 24
MIF Reference
• If possible, use the formats in the default Paragraph Catalog (don’t supply a PgfCatalog statement). If you know
the names of the default paragraph formats, you can tag paragraphs with the PgfTag statement.
• If you know that a document will use a particular template when it is imported into a FrameMaker document,
you can just tag the paragraphs in the text flow. Don’t create a new Paragraph Catalog in MIF; it’s easier to create
catalogs in FrameMaker document templates.
• If you need to provide a full Paragraph Catalog in a MIF file, you can still use FrameMaker to ease the task of
creating a catalog. Create a template in FrameMaker, save the template as a MIF file, and include the Paragraph
Catalog in your document. For instructions, see “Including template files” on page 45.
<ParaLine
<String `You can also format characters by '>
<Font
<FTag `Emphasis'>
…character property statements…
> # end of Font
<String `applying'>
<Font
<FTag `'>
> # end of Font
<String ` a locally defined character format.'>
> # end of ParaLine
> # end of Para
Like paragraph formats, character formats inherit properties from previously defined character formats. Unlike
paragraph formats, however, a character format ends at the close of a Para statement.
See the sample file charfmt.mif for examples of using character formats.
Tables are like paragraphs in that they have a format. A table format controls the appearance of a table, including the
number and width of columns, the types of ruling or shading in rows and columns, and the table’s position in a text
column. Table formats can be named, stored in a Table Catalog, and applied to many tables. A table format can also
be defined locally.
In a FrameMaker document, tables appear where they have been placed in the text flow. A table behaves like an
anchored frame, so a table flows with the surrounding text unless you give it a specific location. In a MIF file, the
document’s tables are collected in one place and a placeholder for each table indicates the table’s position in the text
flow.
You create a table in a MIF file as follows:
• Specify the contents of the table by using a Tbl statement. An individual table is called a table instance. All table
instances are stored in one Tbls statement. Assign each table instance a unique ID number.
• Indicate the position of the table in the text flow by using an ATbl statement. The ATbl statement is the place-
holder, or anchor, for the table instance. It refers to the table instance’s unique ID.
ADOBE FRAMEMAKER 26
MIF Reference
• Specify the table format by using a TblFormat statement. Formats can be named and stored in the Table Catalog,
which is defined by a TblCatalog statement, or locally defined within a table.
You can use the following MIF statements to create this simple table:
<MIFFile 2015>
<Tbls
<Tbl
<TblID 1> # ID for this table
<TblTag `Format A'> # Applies format from Table Catalog
<TblNumColumns 2> # Number of columns in this table
<TblColumnWidth 2.0"> # Width of first column
<TblColumnWidth 1.5"> # Width of second column
<TblH # Begin table heading
<Row # Begin row
ADOBE FRAMEMAKER 27
MIF Reference
<ParaLine
<String `Coffee prices for January'>
<ATbl 1> # Matches table ID in Tbl statement
> # end of ParaLine
> # end of Para
This example is in the sample file table.mif. If you open this file in FrameMaker, you’ll see that the anchor symbol
for the table appears at the end of the sentence. To place the table anchor between two words in the sentence, use the
following statements:
<Para
<ParaLine
<String `Coffee prices '>
<ATbl 1>
<String `for January'>
> # end of ParaLine
> # end of Para
Note that the ATbl statement appears outside the String statement. A ParaLine statement usually consists of
String statements that contain text interspersed with statements for table anchors, frame anchors, markers, and
cross-references.
About ID numbers
The table ID used by the ATbl statement must exactly match the ID given by the TblID statement. If it does not, the
MIF interpreter ignores the ATbl statement and the table instance does not appear in the document. You cannot use
multiple ATbl statements that refer to the same table ID.
An ID can be any positive integer from 1 to 65535, inclusive. The only other statements that require an ID are AFrame
statements, linked TextRect statements, and Group statements. For more information about these statements, see
“Graphic objects and graphic frames” on page 111.
Rotated cells
A table can have rotated cells and straddle cells. The following table includes rotated cells in the heading row:
Coffee
Price
In a MIF file, a cell that is rotated simply includes a CellAngle statement that specifies the angle of rotation:
<Cell
<CellAngle 270>
<CellContent…>
> # end of Cell
Cells can only be rotated by 90, 180, or 270 degrees. Cells are rotated clockwise.
ADOBE FRAMEMAKER 29
MIF Reference
Straddle cells
The contents of a straddle cell cross cell borders as if there were a single cell. You can straddle cells horizontally or
vertically. The following table includes a heading row that straddles two columns:
Brazilian Coffee
The MIF code for the straddle cell includes a CellColumns statement that specifies the number of columns that the
cell crosses. The contents of the straddle cell appear in the first of the straddle columns; the subsequent Cell state-
ments for the row must appear even if they are empty.
<Row
<Cell
<CellColumns 2> # Number of straddle columns.
<CellContent # Content is in the first cell.
<Para
<PgfTag `CellHeading'>
<ParaLine
<String `Brazilian Coffee'>
>
> # end of Para
> # end of CellContent
> # end of Cell
<Cell # Second cell appears, even though
<CellContent # it is empty.
<Para
<PgfTag `CellHeading'>
<ParaLine>
> # end of Para
> # end of CellContent
> # end of Cell
> # end of Row
If the cell straddles rows, the substatement is CellRows.
Colombian $474.35
The TblColumn statement numbers each column and sets its width. A table can have more columns than TblColumn
statements; if a column does not have a specified format, the MIF interpreter uses the format of the most recently
defined column.
Note: A table instance must have at least one TblColumn statement. A table can use a format from the Table Catalog
that includes a TblColumn statement or it can include a local TblFormat statement that supplies the TblColumn
statement.
Tips
To avoid problems when creating tables:
• Give each table a unique ID number.
• Make sure that each Tbl statement has only one corresponding ATbl statement, and that each ATbl statement
has a corresponding Tbl statement.
• Make sure that each ATbl statement matches the ID of its corresponding table instance.
Body pages contain the text and graphics that form the content of the document. Master pages control the layout of
body pages. Each body page is associated with one master page, which specifies the number, size, and placement of
the page’s text frames and the page background, such as headers, footers, and graphics.
Untagged
background text
frame
Untagged
background text
frame
Master page Body page
Text frames define the layout of the document’s text on a page. A text frame can arrange text in one or more columns.
In MIF, a text frame is represented by a TextRect statement. The dimensions of the text frame and the number of
columns in the text frame are specified by substatements under the TextRect statement.
A text flow describes the text contained in one or more text frames. In MIF, a text flow is represented by a TextFlow
statement. The actual text of the document is specified by substatements under the TextFlow statement.
If the text flow has the autoconnect property (if the text flow uses the MIF statement <TFAutoConnect Yes>), the
text flow runs through a series of text frames; when you fill up one text frame, text continues into the next text frame.
Most documents have only one text flow, although you can create many separate flows.
FrameMaker provides a default right master page for single-sided documents and default right and left master pages
for double-sided documents. A MIF file can either use the default page layout or provide a custom layout.
Other master page layouts that you’ve defined are not lost when the interpreter reads a MIF file. The user can still
apply these page layouts to individual body pages.
For an example of a MIF file with a first page layout, see the sample file frstpage.mif.
Creating markers
A FrameMaker document can contain markers that hold hidden text and mark locations. For example, you use
markers to add index entries, cross-references, and hypertext commands to a document. FrameMaker provides both
predefined marker types and markers that you can define as needed. (For more information about markers and
marker types, see page 136.)
Within a FrameMaker document, you insert a marker by choosing the Marker command from the Special menu. In
a MIF file you insert a marker by using a Marker statement. The Marker statement specifies the marker type and the
marker text.
The following example inserts an index marker:
<Para
<ParaLine
<Marker
<MType 2> # Index marker
<MText `Hello world'># Index entry
> # end of Marker
<String `Hello world'>
> # end of ParaLine
> # end of Para
The MText statement contains the complete index entry.
When FrameMaker writes a Marker statement, the statement includes an MCurrPage substatement with the page
number on which the marker appears. You do not need to provide an MCurrPage statement when you generate a
MIF file; this statement is ignored when the MIF interpreter reads a MIF file.
Creating cross-references
In a FrameMaker document, you can create cross-references that are automatically updated. A cross-reference can
refer to an entire paragraph or to a particular word or phrase in a paragraph. The text to which a cross-reference
points is called the reference source; the actual location of the cross-reference is the reference point.
ADOBE FRAMEMAKER 38
MIF Reference
The format of a cross-reference determines its appearance and the wording. Cross-reference formats include building
blocks, instructions to FrameMaker about what information to extract from the reference source. A common
building block is <$pagenum>, which FrameMaker replaces with the page number of the reference source. Another
common building block is <$paratext>, which FrameMaker replaces with the text content of the paragraph,
excluding autonumbering and special characters such as tabs and forced line breaks.
Within a FrameMaker document, you insert and format cross-references by choosing Cross-Reference from the
Special menu. In a MIF file, you create a cross-reference as follows:
• Create the format of cross-references by using XRefFormats and XRefFormat statements.
• Insert a marker at the reference source by using a Marker statement.
• Insert the reference point by using an XRef statement.
Creating variables
In a FrameMaker document, variables act as placeholders for text that might change. For example, many documents
use a variable for the current date. A variable consists of a name, which is how you choose a variable, and a definition,
which contains the text and formatting that appear where a variable is inserted.
FrameMaker provides two kinds of variables: system variables that are predefined by FrameMaker, and user variables
that are defined by the user. System variables contain building blocks that allow FrameMaker to extract certain infor-
mation from the document or the system, such as the current date or the current page number, and place it in text.
Headers and footers frequently use system variables. You can modify a system variable’s definition but you cannot
create new system variables. User variables contain only text and formatting information.
ADOBE FRAMEMAKER 40
MIF Reference
Within a FrameMaker document, you insert and define variables by choosing Variable from the Special menu. The
variable appears in the document text where it is inserted.
In a MIF file, you define and insert variables as follows:
• Define and name the document variables by using VariableFormats and VariableFormat statements.
• Insert the variable in text by using the Variable statement.
Inserting variables
To insert a user variable or a system variable in text, use the Variable statement. The following example inserts the
system variable Page Count into a paragraph:
<Para
<ParaLine
<String `This document has '>
<Variable
<VariableName `Page Count'>
ADOBE FRAMEMAKER 41
MIF Reference
# Unconditional text
<Conditional # Begin conditional text
<InCondition `Winter'> # Specifies condition tag
> # end of Conditional
<String `warm and soft sweaters'>
# Conditional text
<Conditional # Begin conditional text
<InCondition `Summer'> # Specifies condition tag
> # end of Conditional
<String `cool and comfortable tank tops'>
<Unconditional >
<String ` for those '> # Unconditional text
> # end of ParaLine
<ParaLine
<Conditional
<InCondition `Winter'>
> # end of Conditional
<String `chilly winter'>
<Conditional
<InCondition `Summer'>
> # end of Conditional
<String `hot summer'>
<Unconditional >
<String ` days.'>
> # end of ParaLine
> # end of Para
You can apply multiple condition tags to text by using multiple InCondition statements:
<Conditional
<InCondition `Winter'>
<InCondition `Summer'>
> # end of Conditional
Creating filters
Structured FrameMaker allows specific components in a structured document to be processed differently to generate
different output formats. Consider a case where you want some text in a document to be included in the Print output,
but not in the HTML Help output. You can create a filter based on the values of the attributes of elements, and process
only those elements in the document that match the filter, and include such elements in the Print output.
In a MIF file, you create a filter required for generating the output of a structured document using the DefAttrVal-
uesCatalog, DefAttrValues, AttrCondExprCatalog, and AttrCondExpr statements.
All MIF 8 documents contain a catalog of predefined filters. The catalog is empty if a filter is not defined in a struc-
tured document. A filter comprises a tag called AttrCondExprTag, the expression tag AttrCondExprStr, and the
state of the filter which is stored in the AttrCondState tag. The state of the filter indicates whether the filter is active
in the document. Although the catalog can have several filters, only one filter must be active at any time.
To create filters, use the AttrCondExprCatalog statement as illustrated in the following example where two filters
are created:
<AttrCondExprCatalog
<AttrCondExpr
<AttrCondExprTag `NewExpr1'>
<AttrCondExprStr `(A="val1" OR A="val11") AND (B="val2" OR B="val22")'>
<AttrCondState `Inactive'>
> # end of AttrCondExpr
<AttrCondExpr
<AttrCondExprTag `NewExpr2'>
<AttrCondExprStr `(A="val4" OR A="val44") OR (B="val3" OR B="val33")'>
<AttrCondState `Active'>
> # end of AttrCondExpr
> # end of AttrCondExprCatalog
The following statements create an empty filter catalog:
<AttrCondExprCatalog
> # end of AttrCondExprCatalog
All MIF 8 documents contain attribute-value pairs.
To create a catalog of attributes with values, use the DefAttrValuesCatalog statement as illustrated in the following
example:
<DefAttrValuesCatalog
<DefAttrValues
<AttributeTag `A'>
<AttributeValue `val1'>
<AttributeValue `val2'>
> # end of DefAttrValues
<DefAttrValues
<AttributeTag `B'>
<AttributeValue `val3'>
ADOBE FRAMEMAKER 45
MIF Reference
<AttributeValue `val4'>
> # end of DefAttrValues
> # end of DefAttrValuesCatalog
The following statements create a catalog of attributes without values:
<DefAttrValuesCatalog
> # end of DefAttrValuesCatalog
You can use MIF statements to turn off active cross-references and to change the type of hypertext link that the cross-
reference emulates. (By default, cross-references emulate the gotolink behavior.)
• To make cross-references emulate the openlink command, which displays the destination page in a new
document window, use the following statement:
<DViewOnlyXRef OpenBehavior>
Use this setting to allow users to see both the source page and the destination page.
• To turn off active cross-references, use the following statement:
<DViewOnlyXRef NotActive>
Use this setting to emulate the behavior in earlier FrameMaker versions.
You can use the DViewOnlySelect statement to control whether active cross-references highlight the marker
associated with destination text.
• When cross-references are active and <DViewOnlySelect Yes> is specified, clicking a cross-reference in the
document highlights the marker associated with the destination text.
• When cross-references are active and <DViewOnlySelect UserOnly> is specified, clicking a cross-reference
does not highlight the marker. However, the user can select text in the locked document.
• When cross-references are active and <DViewOnlySelect No> is specified, clicking a cross-reference does not
highlight the marker. The user cannot select text in the locked document.
By default, clicking a cross-reference does not highlight the marker associated with the destination text but the user
can select text in the locked document.
Disabling commands
You can disable specific commands in a View Only document. For example, a hypertext author might disable copy
and print commands for sensitive documents.
To disable a command, you must supply the hex code, called an fcode, that internally represents that command in
FrameMaker. For example, you can disable printing, copying, and unlocking the document by supplying the
following statements:
<DViewOnlyNoOp 0x313># Disable printing
<DViewOnlyNoOp 0x322># Disable copying
<DViewOnlyNoOp 0xF00># Disable unlocking the document
The following table lists the files where you can find fcodes for commands:
For this version Look here
See the online manual Customizing FrameMaker for more information about the commands file in UNIX versions.
Applications of MIF
You can use MIF files any time you need access to FrameMaker’s formatting capabilities. This section provides some
examples of how MIF can be used and some tips on minimizing MIF statements.
You can use MIF to:
ADOBE FRAMEMAKER 49
MIF Reference
Modifying documents
You can use MIF to perform custom document processing. For example, you can create a program or write a series
of text editor macros to search for and change paragraph tags in a MIF file. You can also edit a MIF book file to easily
add or change document names in a book.
For an example of using MIF to easily update the values in a table, see “Updating several values in a table” on
page 240.
Writing filters
MIF allows you to write filters to convert data from other formats to FrameMaker format and to convert a MIF file
to another document format. While FrameMaker will change in future versions, MIF will always remain compatible
with earlier versions, so your filters can continue to write MIF files.
Import filters
MIF statements can completely describe a FrameMaker document or book file. Because documents created with
most word processors and text editors have fewer features than a FrameMaker document, your import filters
normally use only a subset of MIF statements.
To write an import filter, first determine which MIF statements describe the format of the input file. Then write a
program to translate the file from its original file format to MIF. If the imported document doesn’t use sophisticated
formatting and layout features, don’t include the corresponding MIF statements in your filter.
For example, if the file was created by a word processor, your filter should convert document text to a single
TextFlow statement. Ignore line and page breaks (except forced breaks) in your source document, because the text
will be repaginated by the MIF interpreter. If the document uses style sheets, convert paragraph styles to paragraph
formats in a PgfCatalog statement, and convert table styles to table formats in a TblCatalog statement.
ADOBE FRAMEMAKER 50
MIF Reference
Output filters
You can write output filters that convert a MIF file to any format you want. While you should be familiar with all
MIF statements to determine which ones you need to translate a FrameMaker document, your output filter doesn’t
need to convert all the possible MIF statements.
In most cases, a MIF description of a FrameMaker document contains more information than you need. Because
MIF appears as a series of nested statements, your output filter must be able to scan a MIF file for the information it
needs and skip over statements that it will not use.
Installing a filter
In UNIX versions, you can set up FrameMaker to automatically start a script that runs a filter based on the filename
suffix. The filter can convert a file to a MIF file. FrameMaker then interprets the MIF file, storing the results in a
FrameMaker document. For more information about installing your filter, see the online manual Customizing
FrameMaker.
Database publishing
You can use MIF files to import information from an external application, such as a database, into a FrameMaker
document. This type of information transfer is often called database publishing. For example, you can write a C
program or a database script to retrieve information from a database and store that information as a MIF file. A user
can then open or import the MIF file to get a fully formatted FrameMaker document that contains up-to-date infor-
mation from the database.
There are four key elements to a typical database publishing solution:
• The database provides a system to enter, manipulate, select, and sort data. You can use any database that can
create text-based output files.
• MIF provides the data interchange format between the database and FrameMaker. MIF can completely describe
a document in ASCII format, including information such as text and graphics, page layout, and indexes and
cross-references.
• FrameMaker provides the text formatting. FrameMaker reads MIF files and dynamically manages line breaks,
page breaks, headers and footers, and graphics. The user can view, print, save, or even navigate through an online
document using hypertext commands.
ADOBE FRAMEMAKER 51
MIF Reference
• Optional control programs allow you to tightly integrate the database and FrameMaker. Some database
publishing applications are controlled entirely from the database system or through hypertext commands
embedded in a FrameMaker document. More complicated applications may require an external control
program, such as a C program that issues queries and selects a FrameMaker document template.
Text
Final Document
CAD or Other
Illustration
Packages
Database
For an example of a database publishing application, see “Database publishing” on page 241.
Statement Description
MIFFile Labels the file as a MIF document file. The MIFFile statement is required and must be
the first statement in the file.
Control statements Establish the default units in a Units statement, the debugging setting in a Verbose
statement, and comments in a Comment statement. These statements can appear
anywhere at the top level as well as in some substatements.
Macro statements Define macros with a define statement and read in files with an include statement.
These statements can appear anywhere at the top level.
ColorCatalog Describes document colors. The ColorCatalog statement contains Color state-
ments that define each color and tag.
PgfCatalog Describes paragraph formats. The PgfCatalog statement contains Pgf statements
that define the properties and tag for each paragraph format.
ElementDefCatalog Defines the contents of the Element Catalog for a structured document. For more infor-
mation, see , “MIF Statements for Structured Documents and Books.”
FmtChangeListCatalog Defines the contents of the Format Change List Catalog for a structured document. For
more information, see , “MIF Statements for Structured Documents and Books.”
DefAttrValuesCatalog Defines the DefAttrValuesCatalog for a structured document. For more information, see
, “MIF Statements for Structured Documents and Books.”
AttrCondExprCatalog Defines the AttrCondExprCatalog for a structured document. For more information, see
, “MIF Statements for Structured Documents and Books.”
ADOBE FRAMEMAKER 54
MIF Reference
Statement Description
FontCatalog Describes character formats. The FontCatalog statement contains Font statements
that define the properties and tag for each character format.
RulingCatalog Describes ruling styles for tables. The RulingCatalog statement contains Ruling
statements that define the properties for each ruling style.
TblCatalog Describes table formats. The TblCatalog statement contains TblFormat state-
ments that define the properties and tag for each table format.
StyleCatalog Describes object styles. The StyleCatalog statement contains Style statements
that define the properties and tags for each object style.
KumihanCatalog Contains the Kumihan tables that specify line composition rules for Japanese text.
Views Describes color views for the document. The Views statement contains View state-
ments that define which colors are visible in each color view.
MarkerTypeCatalog Defines a catalog of user-defined markers for the current document. The MarkerType-
Catalog statement contains MarkerTypeCatalog statements that specify each
user-defined marker.
Document Controls document features such as page size, margins, and column layout. Because the
MIF interpreter assumes the same page defaults as the New command, this section is
necessary only if you want to override those default settings.
BookComponent Provides the setup information for files generated from the document. BookCompo-
nent statements describe the filename, filename suffix, file type, and paragraph tags or
marker types to include.
AFrames Describes all anchored frames in the document. The AFrames statement contains
Frame statements that define the contents ID number of each anchored frame. Later in
the MIF file, where the document contents are described, the MIF file must include an
AFrame statement that corresponds to each Frame statement. The AFrame statement
identifies where a specific anchored frame appears in a text flow; it need only supply the
frame’s ID number.
Tbls Describes all tables in the document. The Tbls statement contains Tbl statements that
define the contents of each table and its ID number. Later in the MIF file, where the docu-
ment contents are described, the MIF file must include a short ATbl statement that corre-
sponds to each Tbl statement. The ATbl statement identifies where a specific table
appears in a text flow; it need only supply the table’s ID number.
Page Describes the layout of each page in the document. The description includes the layout of
each page, the dimensions of the text frames, and the objects and other graphic frames
on that page. A MIF file created by FrameMaker includes a Page statement for each page
in the document, including the master pages. When you write an import filter, you can
omit Page statements; the MIF interpreter repaginates the document as needed.
InlineComponentsInfo Describes the mini table of contents (mini TOC) in the document. The InlineCompo-
nentsInfo statement contains InlineComponentInfo statement that define
the properties of the mini TOC.
ADOBE FRAMEMAKER 55
MIF Reference
Statement Description
TextFlow Represents the actual text in the document. Within TextFlow statements, the text is
expressed in paragraphs which in turn contain paragraph lines. Line endings of
ParaLine statements are not significant because the MIF interpreter wraps the
contents of ParaLine statements into paragraphs.
MIFFile statement
The MIFFile statement identifies the file as a MIF file. The MIFFile statement is required and must be the first line
of the file with no leading white space.
Syntax
The version argument indicates the version number of the MIF language used in the file, and comment shows the
name and version number of the program that generated the file. For example, a MIF file saved in FrameMaker (2015
release) begins with the following line:
<MIFFile 2015> # Generated by FrameMaker 12.0.2.366
MIF is compatible across versions, so a MIF interpreter can parse any MIF file. The results may sometimes differ
from your intentions if a MIF file describes features that are not included in FrameMaker that reads the MIF file. For
more information, see , “MIF Compatibility.”
Comment statement
The Comment statement identifies an optional comment.
Syntax
Usage
Comments can appear within Comment statements, or they can follow a number sign ( # ). When it encounters a
number sign, the MIF interpreter ignores all text until the end of the line, including angle brackets.
Because Comment statements can be nested within one another, the MIF interpreter examines all characters following
an angle bracket until it finds the corresponding angle bracket that ends the comment.
<Comment - The following statements define the paragraph formats>
<Comment <These statements have been removed: <Font <FBold> <FItalic>>>>
The MIF interpreter processes number signs within Comment statements as normal comments, ignoring the
remainder of the line.
<Comment - When a number sign appears within a <Comment> statement,
# the MIF interpreter ignores the rest of the characters in that
# line--including angle brackets < >.>
# End of <Comment> Statement.
ADOBE FRAMEMAKER 56
MIF Reference
Macro statements
MIF has two statements that allow you to define macros and include information from other files. Although these
statements usually appear near the beginning of a MIF file, you need not put them in that position. However, the
MIF interpreter does not interpret a macro that occurs before its definition.
define statement
The define statement creates a macro. When the MIF interpreter reads a MIF file, it replaces the macro name with
its replacement text. A define statement can appear anywhere in a MIF file; however, the macro definition must
appear before any occurrences of the macro name.
Syntax
Usage
Once a macro has been defined, you can use the macro name anywhere that the replacement text is valid. For
example, suppose you define the following macro:
define (Bold, <Font <FWeight `Bold'>>)
When you use the macro in MIF statements, write <Bold>. The interpreter replaces <Bold> with <Font <FWeight
`Bold'>>. Note that it retains the outer angle brackets in the replacement text.
Note that when you use a macro in a MIF file, you must enclose macro names in brackets to comply with the MIF
syntax (for example, write <Bold> instead of Bold). The MIF parser requires these brackets to interpret the macro
correctly.
include statement
The include statement reads information from other files. It is similar to an #include statement in a C program.
When the MIF interpreter reads a MIF file, it replaces the include statement with the contents of the included file.
An include statement can appear anywhere in a MIF file. However, make sure that the contents of the included file
appear in a valid location when they are read into the MIF file.
Syntax
Usage
The pathname argument specifies a UNIX-style pathname, which uses a slash ( / ) to separate directory names (for
example, /usr/doc/template.mif). For the Windows version of FrameMaker, use the following guideline for
specifying absolute pathnames:
• For Windows versions, start an absolute pathname with the drive name. For example, to include the file
myfile.doc from the directory mydir on the c: drive, specify the pathname c:/mydir/myfile.doc. Don’t
start an absolute path with a slash (/).
If you specify a relative pathname, the MIF interpreter searches for the file to include in the directory or folder that
contains the file being interpreted. In UNIX versions of FrameMaker, the MIF interpreter also searches the
$FMHOME/fminit and the $FMHOME/fminit/filters directories for a file with a relative pathname.
ADOBE FRAMEMAKER 57
MIF Reference
In general, you would use an include statement to read a header file containing define statements that a filter
needs to translate a file. Isolate the data in a header file to simplify the process of changing important mappings. You
can also use an include statement to read in a template file containing formatting information. Your application can
then simply generate a document’s text. For more information, see “Including template files” on page 45.
Syntax
<DTrackChangesOn boolean> Preserves the On/Off state of the Track Text Edit feature
<DTrackChangesPreviewState integer> Preserves the preview state of the Track Text Edit feature
<DTrackChangesReviewerName string> The windows/unix login name of the reviewer whose edits are visible
in the document
The Show Reviewer Name popup menu lets you select the name of the
reviewer whose changes you want to display in the document. The
reviewer’s name selected in the Show Reviewer Name popup menu
appears in this tag. When you select All Users, this tag is empty.
<ReviewerName string> The windows/unix login name of the reviewer who made a particular
change
The number of seconds past after 00:00 hours, Jan 1, 1970 UTC
Conditional text
FrameMaker documents can contain conditional text. In a MIF file, the condition tags are defined by a Condition
statement, which specifies whether the condition tag is hidden or shown. The condition tags for a document are
stored in a ConditionCatalog statement.
Within the text flow, Conditional and Unconditional statements show where conditional text begins and ends.
ADOBE FRAMEMAKER 58
MIF Reference
ConditionCatalog statement
The ConditionCatalog statement defines the contents of the Condition Catalog. A MIF file can have only one
ConditionCatalog statement, which must appear at the top level in the order given in “MIF file layout” on page 53.
Syntax
<ConditionCatalog
Condition statement
The Condition statement defines the state of a condition tag and its condition indicators, which control how condi-
tional text is displayed in the document window. The statement must appear in a ConditionCatalog statement. The
property statements can appear in any order.
Syntax
<Condition
<CColor tagstring> Color for condition tag (see “ColorCatalog statement” on page 84)
<CSeparation integer> Color for condition tag; no longer used, but written out by FrameMaker for backward-
compatibility (see “Color statements” on page 263)
Syntax
Boolean expressions
A Boolean expression is defined in a BoolCond statement.
BoolCondCatalog statement
You can create Boolean expressions by linking different conditional tags using Boolean operators. In a MIF file,
Boolean condition expressions are defined using a BoolCond statement. The Boolean expressions for a document
are stored in a BoolCondCatalog statement.
The BoolCondCatalog statement defines the contents of Boolean Expression Catalog for conditional text. A MIF
file can have only one BoolCondCatalog statement, after Condition Catalog.
Syntax
<BoolCondCatalog
<BoolCond.........>
BoolCond statement
The BoolCond statement defines a new boolean expression, which is used to evaluate the show/hide state of condi-
tional text. Statement must appear in BoolCondCatalog statement. The property statement can appear in any order.
Syntax
<BoolCond
• 'Active'
• 'Inactive'
Filter By Attribute
Elements in a structured document can have one or more attributes associated with them. Using FrameMaker, you
can filter a structured document based on the value of these attributes.
All MIF 8 documents contain a catalog of predefined attribute values. If no values are defined, the catalog remains
empty. Each definition in a catalog includes an attribute tag (AttributeTag) and the corresponding list of values
(AttributeValue).
DefAttrValuesCatalog statement
The DefAttrValuesCatalog statement is used to define the contents of the Defined Attribute Values catalog. A
MIF file can contain one DefAttrValuesCatalog statement only.
Syntax
<DefAttrValuesCatalog
DefAttrValues statement
The DefAttrValues statement is used to define a set of attributes with relevant values.
Syntax
<DefAttrValues
AttrCondExprCatalog statement
The AttrCondExprCatalog statement is used to define the contents of the Attribute Expression catalog. A MIF file
can contain one AttrCondExprCatalog statement only.
Syntax
<AttrCondExprCatalog
AttrCondExpr statement
The AttrCondExpr statement is used to define a set of attributes with values.
Syntax
<AttrCondExpr
'Active'
'Inactive'
Paragraph formats
A paragraph format is defined in a Pgf statement. Paragraph formats can be defined locally or stored in the
Paragraph Catalog, which is defined by a PgfCatalog statement.
PgfCatalog statement
The PgfCatalog statement defines the contents of the Paragraph Catalog. A MIF file can have only one PgfCatalog
statement, which must appear at the top level in the order given in “MIF file layout” on page 53.
Syntax
<PgfCatalog
Usage
If you don’t include a PgfCatalog statement, the MIF interpreter uses the paragraph formats defined in NewTem-
plate. (For information on defaults specified in templates, see page 3.) If you include PgfCatalog, paragraph
formats in the MIF file replace default formats. The MIF interpreter does not add your paragraph format to the
default Paragraph Catalog, although it provides default values for unspecified properties in a paragraph format (see
“Creating and applying paragraph formats” on page 12).
Pgf statement
The Pgf statement defines a paragraph format. Pgf statements can appear in many statements; the statement
descriptions show where Pgf can be used.
The Pgf statement contains substatements that set the properties of a paragraph format. Most of these properties
correspond to those in the Paragraph Designer. Properties can appear in any order within a Pgf statement, with the
following exception: the PgfNumTabs statement must appear before any TabStop statements.
Syntax
Basic properties
<PgfFIndent dimension> First line left margin, measured from left side of current text column
<PgfLIndent dimension> Left margin, measured from left side of current text column
<PgfRIndent dimension> Right margin, measured from right side of current text column
<PgfLineSpacing keyword> Amount of space between lines in paragraph measured from baseline
to baseline
The statement is not required for input files; the MIF interpreter calcu-
lates the number of tabs. If it does appear, it must appear before any
TabStop statements; otherwise, the MIF interpreter ignores the tab
settings.
<TabStop Begin definition of tab stop; the following property statements can
appear in any order, but must appear within a TabStop statement
<TSDecimalChar integer> Align decimal tab around a character by ASCII value; in UNIX versions,
type man ascii in a UNIX window for a list of characters and their
corresponding ASCII values
Pagination properties
<PgfPlacementStyle keyword> Placement of side heads, run-in heads, and paragraphs that straddle
text columns
Numbering properties
Advanced properties
<HyphenMaxLines integer> Maximum number of consecutive lines that can end in a hyphen
<PgfMinWordSpace integer> Minimum word spacing (as a percentage of a standard space in the
paragraph’s default font)
<PgfOptWordSpace integer> Optimum word spacing (as a percentage of a standard space in the
paragraph’s default font)
<PgfMaxWordSpace integer> Maximum word spacing (as a percentage of a standard space in the
paragraph’s default font)
ADOBE FRAMEMAKER 65
MIF Reference
<PgfLanguage keyword> Language to use for spelling and hyphenation. Note that FrameMaker
writes this statement so MIF files can be opened in older versions of
FrameMaker. However, the language for a paragraph format or char-
acter format is now properly specified in the PgfFont and Font
statements (see page 67)
<PgfTopSeparator string> Name of reference frame (from reference page) to put above paragraph
<PgfBoxColor string> The background color for the entire box that surrounds a paragraph.
<PgfBotSeparator string> Name of reference frame (from reference page) to put below paragraph
Miscellaneous properties
<PgfLocked boolean> Yes means the paragraph is part of a text inset that obtains its format-
ting properties from the source document. See page 66
<PgfAcrobatLevel integer> Level at which the paragraph is shown in an outline of Acrobat Book-
marks; 0 indicates that the paragraph does not appear as a bookmark
Usage
Within a PgfCatalog statement, the PgfTag statement assigns a tag to a paragraph format. To apply a paragraph
format from the Paragraph Catalog to the current paragraph, use the PgfTag statement in a ParaLine statement.
If the PgfTag statement within a text flow does not match a format in the Paragraph Catalog, then the Pgf statement
makes changes to the current paragraph format. That is, a Pgf statement after PgfTag specifies how the paragraph
differs from the format in the catalog.
If a document has side heads, indents and tabs are measured from the text column, not the side head. In a table cell,
tab and indent settings are measured from the cell margins, not the cell edges.
Usage of some aspects of the Pgf statement is described in the following sections.
Character formats
A character format is defined by a PgfFont or a Font statement. Character formats can be defined locally or they
can be stored in the Character Catalog, which is defined by a FontCatalog statement.
ADOBE FRAMEMAKER 67
MIF Reference
FontCatalog statement
The FontCatalog statement defines the contents of the Character Catalog. A document can have only one
FontCatalog statement, which must appear at the top level in the order given in “MIF file layout” on page 53.
Syntax
<FontCatalog
<Font…> Defines a character format (see “PgfFont and Font statements,” next)
Syntax
<PgfFont|Font
Font name
<FPostScriptName string> Name of font when sent to PostScript printer (see “Font name” on page 70)
<FPlatformName string> Platform-specific font name, only read by the Windows version (see page 71)
ADOBE FRAMEMAKER 68
MIF Reference
Font language
Font encoding
<FEncoding keyword> Specifies the encoding for this font. This is to specify the encoding for a
double-byte font. If not present, the default is Roman.
<FSeparation integer> Font color; no longer used, but written out by FrameMaker for backward-
compatibility (see “Color statements” on page 263)
<FStretch percent> The amount to stretch or compress the font, where 100% means no change
Font style
<FPosition keyword> Specifies subscript and superscript characters; font size and position relative
to baseline determined by Document substatements (see page 94)
Kerning information
<FDX percent> Horizontal kern value for manual kerning expressed as percentage of an em;
positive value moves characters right and negative value moves characters
left
<FDY percent> Vertical kern value for manual kerning expressed as percentage of an em; posi-
tive value moves characters down and negative value moves characters up
<FDW percent> Spread value for space between characters expressed as percentage of an em;
positive value increases the space and negative value decreases the space
<FTsume boolean> Yes turns on Tsume (variable width rendering) for Asian characters
Filter statements Valid when text properties are applied to a file imported into FrameMaker
Miscellaneous information
<FLocked boolean> Yes means the font is part of a text inset that obtains its formatting properties
from the source document
Usage
Use PgfFont within a Pgf statement to override the default font for the paragraph. Use Font within a FontCatalog
statement to define a font or in a Para statement to override the default character format. Substatements in the Font
and PgfFont statements are optional. Like the Pgf substatements, Font substatements reset the current font.
ADOBE FRAMEMAKER 70
MIF Reference
When the MIF interpreter reads a Font statement, it continues using the character format properties until it either
reads another Font statement or reads the end of the Para statement. You can set the character format back to its
previous state by providing an empty FTag statement. A Font statement that does not supply all property substate-
ments inherits the current font state for those properties not supplied.
For more information about creating and applying character formats in a MIF file, see “Creating and applying
character formats” on page 24. For more information about character formats in general, see your user’s manual.
Usage of some aspects of the PgfFont and Font statements is described in the following sections.
Font name
When a PgfFont or Font statement includes all of the family, angle, weight, and variation properties, FrameMaker
identifies the font in one or more of the following ways:
• The statement FPlatformName specifies a font name that uniquely identifies the font on a specific platform.
• The statements FFamily, FAngle, FWeight, and FVar specify how FrameMaker stores font information inter-
nally.
• The statement FPostScriptName specifies the name given to a font when it is sent to a PostScript printer (specif-
ically, the name that would be passed to the PostScript FindFont operator before any font coordination opera-
tions). The PostScript name is unique for all PostScript fonts, but may not be available for fonts that have no
PostScript version.
For complete font specifications, FrameMaker always writes the FFamily, FAngle, FWeight, FVar, and FPost-
ScriptName statements. In addition, the Windows version of FrameMaker also writes the FPlatformName
statement. A UNIX version of FrameMaker ignores FPlatformName.
When FrameMaker reads a MIF file that includes more than one way of identifying a font, it checks the font name
in the following order:
1 Platform name
2 Combination of family, angle, weight, and variation properties
3 PostScript name
If you are writing filters to generate MIF, you do not need to use all three methods. You should always specify the
PostScript name, if it is available. You should use the platform name only if your filter will be run on a specific
platform. A filter running on a specific platform can easily find and write out the platform name, but the name
cannot be used on other platforms.
Font encoding
The <FEncoding> statement specifies which encoding to use for a font. The default is Roman, or standard 7-bit
encoding. If this statement is not included for a font, 7-bit encoding is assumed.
ADOBE FRAMEMAKER 71
MIF Reference
This statement takes precedence over all other font attributes. For example, if the document includes a font with
<FEncodin g ` J I S X 0 2 0 8 . S h if t J I S ’ > , but that font family is not available on the user’s system, then the text will
appear in some other font on the system that uses Japanese encoding. If there is no Japanese encoded font on the
system, the text appears in Roman encoding and the user will see garbled characters.
FPlatformName statement
The <FPlatformName string> statement provides a platform-specific ASCII string name that uniquely identifies
a font for a particular platform. The string value consists of several fields separated by a period.
Windows: The Windows platform name has the following syntax:
<FPlatformName W.FaceName.ItalicFlag.Weight.Variation>
W Platform designator
FaceName Windows face name (for more information, see your Windows documentation)
I (Italic)
R (Regular)
The following statements are valid representations of the Windows font Helvetica Narrow Bold Oblique:
<FPlatformName W.Helvetica-Narrow.I.700>
<FPlatformName W.Helvetica.I.700.Narrow>
Object styles
An object style is defined by a Style statement. Object styles can be defined locally or they can be stored in the
Object Style catalog, which is defined by a StyleCatalog statement.
StyleCatalog statement
The StyleCatalog statement defines the object styles. A document can have only one StyleCatalog statement,
which must appear at the top level in the order given in “MIF file layout” on page 53.
Syntax
<StyleCatalog
<Style Defines a character format (see “PgfFont and Font statements,” next)
Style statement
The Style statement defines the object style properties. A document can have only one StyleCatalog statement,
which must appear at the top level in the order given in “MIF file layout” on page 53.
ADOBE FRAMEMAKER 72
MIF Reference
Syntax
<Style
<Pen integer> Pen pattern for lines and edges (see “Values for Pen and Fill statements” on
page 107)
<ObTint percentage> Applies a tint to the object color; 100% is equivalent to the pure object color and 0%
is equivalent to no color at all
<DashedPattern
<DashedStyle keyword> Specifies whether object is drawn with a dashed or a solid line
<RunaroundGap dimension> Space between the object and the text flowing around the object; must be a value
between 0.0 and 432.0 points.
INHERITRTL - Derive the direction from the parent object. If it resolves to right
to left then INHERITRTL is assigned to AFrameDir.
<TFrameShGap dimension> Gap between side head and body text areas
<TFrameColumnBalance Yes means columns in the text frame are automatically adjusted to the same height
boolean>
<TFrameDir keyword> Controls the direction of the text frame and its child objects.
INHERITLTR - Derive the direction from the parent object. If it resolves to left to
right, then INHERITLTR is assigned to TFrameDir.
INHERITRTL - Derive the direction from the parent object. If it resolves to right
to left, then INHERITRTL is assigned to TFrameDir.
<TLineDir keyword> Controls the direction in which the text line is drawn.
INHERITRTL - Derive the direction from the parent object. If it resolves to right
to left then INHERITRTL is assigned to TLineDir.
<EquationBreak Set line-width after which the equation breaks to the next line
dimension>
<MathMLStyleInline bool- Yes places the equation inline with the paragraph text
ean>
Line numbers
FrameMaker documents can have the line numbers displayed for assisting in the reviewing process. Multiple
contributors to the document can refer to the content using the Page number and then line number. The following
are the statements relevant to line numbers:
Syntax
<DLineNumRestart boolean> Setting this property to Yes restarts the line numbering to 1 for each page of a
document.
<DLineNumShow boolean> Setting this property to Yes displays the line numbers.
<DLineNumFontFam string> Name of the font family for the line numbers.
Tables
Table formats are defined by a TblFormat statement. Table formats can be locally defined or they can be stored in a
Table Catalog, which is defined by a TblCatalog statement. The ruling styles used in a table are defined in a
RulingCatalog statement.
In a MIF file, all document tables are contained in one Tbls statement. Each table instance is contained in a Tbl
statement. The ATbl statement specifies where each table instance appears in the text flow.
TblCatalog statement
The TblCatalog statement defines the Table Catalog. A document can have only one TblCatalog statement, which
must appear at the top level in the order given in “MIF file layout” on page 53.
Syntax
<TblCatalog
…
ADOBE FRAMEMAKER 75
MIF Reference
TblFormat statement
The TblFormat statement defines the format of a table. A TblFormat statement must appear in a TblCatalog or in
a Tbl statement. A TblFormat statement contains property substatements that define a table’s properties. Table
property statements can appear in any order.
Syntax
Basic properties
<TblFormat
<TblLIndent dimension> Left indent for the table relative to the table’s containing text column; has no
effect on right-aligned tables
<TblRIndent dimension> Right indent for the table relative to the table’s containing text column; has no
effect on left-aligned tables
See page 78
<TblPlacement keyword> Vertical placement of table within text column
<TblTitlePgf1 Paragraph format of title for a new table created with the table format
<TblNumByColumn boolean> Autonumber paragraphs in cells; Yes numbers down each column and No
numbers across each row
Ruling properties
<TblColumnRuling tagstring> Ruling style for most columns; value must match a ruling style name specified
in the RulingCatalog statement
<TblXColumnNum integer> Number of column with a right side that uses the TblXColumnRuling
statement
<TblXColumnRuling tagstring> Ruling style for the right side of column TblXColumnNum
<TblXRowRuling tagstring> Exception ruling style for every nth body row
<TblRulingPeriod integer> Number of body rows after which TblXRowRuling should appear
<TblHFRowRuling tagstring> Ruling style between rows in the heading and footing
<TblSeparatorRuling tagstring> Ruling style for rule between the last heading row and first body row, and also
between the last body row and the first footing row
<TblLastBRuling boolean> Yes means draw bottom rule on the last sheet only; No means draw rule on the
bottom of every sheet
Shading properties
<TblHFFill integer> Default fill pattern for table heading and footing (see page 113)
<TblHFColor tagstring> Default color for table heading and footing (see page 85)
<TblHFSeparation integer> Default color for table heading and footing; no longer used, but written out by
FrameMaker for backward-compatibility (see “Color statements” on page 263)
<TblBodyFill integer> Default fill pattern for body cells (see page 113)
<TblBodyColor tagstring> Default color for body cells (see page 85)
<TblBodySeparation integer> Default color for body cells; no longer used, but written out by FrameMaker for
backward-compatibility (see “Color statements” on page 263)
ADOBE FRAMEMAKER 77
MIF Reference
<TblShadeByColumn boolean> Yes specifies column shading; No specifies body row shading
<TblXFill integer> Exception fill pattern for columns or body rows (see page 113)
<TblXColor tagstring> Exception color for columns or body rows (see page 85)
<TblXSeparation integer> Exception color for columns or body rows; no longer used, but written out by
FrameMaker for backward-compatibility (see “Color statements” on page 263)
Column properties
<TblWidth dimension> Not generated by FrameMaker, but can be used by filters to determine table
width
<TblColumn Each table must have at least one TblColumn statement; a column without a
statement uses the format of the rightmost column
<TblColumnNum integer> Column number; columns are numbered from left to right starting at 0
<TblColumnWidthP integer> Not generated by FrameMaker, but a temporary column width when filtering
proportionally-spaced tables from another application; converted to a fixed
width when read in (see page 82)
<TblColumnWidthA W W> Not generated by FrameMaker, but a width based on a cell width, for filters only;
converted into a fixed width when read in. First value is minimum width; second
value is maximum width. Values limit the range of a computed column width,
and are usually set to a wide range (see page 82).
<TblColumnH Default paragraph format for the column’s heading cells in new tables
<TableColumn If the table column is conditionalized, the conditional properties are specified in
the TableColumn property.
<TblColumnBody Default paragraph format for the column’s body cells in new tables
<TblColumnF Default paragraph format for the column’s footing cells in new tables
ADOBE FRAMEMAKER 78
MIF Reference
Miscellaneous properties
<TblLocked boolean> Yes means the table is part of a text inset that obtains its formatting properties
from the source document
Usage
The basic properties, ruling properties, and shading properties correspond to settings in the Table Designer. The
tagstring value specified in any ruling substatement (such as TblColumnRuling) must match a ruling tag defined
in the RulingCatalog statement (see page 83). The tagstring value specified in any color substatement (such as
TblBodyColor) must match a color tag defined in the ColorCatalog statement (see page 84).
Usage of some of the aspects of the TblFormat statement is described in the following sections.
Alignment of tables
The horizontal alignment of a table within a text column or text frame is specified by the TblAlignment statement:
• If the table is aligned with the left, center, or right side of a text column or text frame, the TblAlignment
statement is set to Left, Center, or Right, respectively.
• If the table is aligned with the closer edge or farther edge of a text frame (closer or farther relative to the binding
of the book), the TblAlignment statement is set to Inside or Outside, respectively.
Tbls statement
The Tbls statement lists the contents of each table in the document. A document can have only one Tbls statement,
which must appear at the top level in the order given in “MIF file layout” on page 53.
Syntax
Tbl statement
The Tbl statement contains the contents of a table instance. It must appear in a Tbls statement.
Each Tbl statement is tied to a location in a text flow by the ID number in a TblID statement. Each Tbl statement
has an associated ATbl statement within a ParaLine statement that inserts the table in the flow. The Tbl statement
must appear before the ATbl statement that refers to it. Each Tbl statement can have only one associated ATbl
statement, and vice versa. For more information about the ATbl statement, see “ParaLine statement” on page 133.
Syntax
<Tbl
Table columns
<EqualizeWidths Makes specified columns the same width as the widest column (for filters only, see
page 82)
Table title
…
> End of TblTitleContent statement
Table rows
Usage
The table column statements specify the actual width of the table instance columns. They override the column
widths specified in the TblFormat statement.
Row statement
A Row statement contains a list of cells. It also includes row properties as needed. The statement must appear in a Tbl
statement.
Syntax
<Row
<Cell…> Each Row statement contains one Cell statement for each column (see “Cell state-
ment,” next)
Usage
Each Row statement contains a Cell statement for each column in the table, even if a straddle hides a cell. Extra Cell
statements are ignored; too few Cell statements result in empty cells in the rightmost columns of the row.
When you rotate a cell to a vertical orientation, the width of unwrapped text affects the height of the row. You can
use RowMaxHeight and RowMinHeight to protect a row’s height from extremes caused by rotating cells containing
multiline paragraphs, or to enforce a uniform height for the rows.
FrameMaker writes out the RowHeight statement for use by other programs. It is not used by the MIF interpreter.
Even if the statement is present, the MIF interpreter recalculates the height of each row based on the row contents
and the RowMinHeight and RowMaxHeight statements.
Cell statement
A Cell statement specifies a cell’s contents. It also includes format, straddle, and rotation information as needed. The
statement must appear in a Row statement.
Syntax
<Cell
<CellFill integer> Fill pattern for cell, 0–15 (see page 113)
<CellColor tagstring> Color for cell (see “ColorCatalog statement” on page 84)
<CellSeparation integer> Color for cell; no longer used, but written out by FrameMaker for back-
ward-compatibility (see “Color statements” on page 263)
Usage
You can use the Rotate command on the Graphics menu to change the CellAngle, but it does not affect the location
of cell margins. CellAngle affects only the orientation and alignment of the text flow. When CellAngle is 90 or 270
degrees, use PgfCellAlignment to move vertically oriented text closer to or farther from a column edge. For infor-
mation about aligning text in a cell, see PgfCellAlignment on page 65.
MIF uses CellAffectsColumnWidthA only with the TblColumnWidthA statement. The MIF default for computing
a cell’s width is TblColumnWidthA. However, if any cells in the column have <CellAffectsColumnWidthA Yes>,
then only those cells affect the computed column width.
Usage of MIF statements to calculate the width of a column is described in the following sections.
Fixed width TblColumnWidth Give a fixed value for column’s width (see page 77)
Shrink-wrap TblColumnWidthA Fit a column within minimum and maximum values (see page 77)
Restricted TblColumnWidthA and CellAf- Use particular cells to determine column width (see page 82)
fectsColumnWidthA
Proportional TblColumnWidthP Create a temporary value for a column width when filtering propor-
tional-width columns from another application; the MIF interpreter
converts the value to a fixed width (see page 77 and “Calculating propor-
tional-width columns,” next)
Equalized EqualizeWidths and Apply the width of the widest column to specified columns in the same
table (see page 79)
TblColumnNum
The table example in “Creating an entire table” on page 238 shows several ways to determine column width.
ADOBE FRAMEMAKER 83
MIF Reference
PTotal Sum of the values for all TblColumnWidthP statements in the table
PWidth Available space for all proportional columns (TblWidth – the sum of fixed-width columns)
For example, suppose you want a four-column table to be 7 inches wide, but only the last three columns to have
proportional width.
• The columns have the following widths:
Column 1 has a fixed-width value of 1": <TblColumnWidth 1">
Column 2 has a proportional value of 2: <TblColumnWidthP 2>
Column 3 has a proportional value of 1: <TblColumnWidthP 1>
Column 4 has a proportional value of 1: <TblColumnWidthP 1>
• Available width for proportional columns (PWidth) is 7" – 1" or 6".
• Sum of all proportional values (PTotal) is 2 + 1 + 1 or 4.
• Width for Column 2 is (2/PTotal) x PWidth = (2/4) x 6" or 3".
• Width for Column 3 or Column 4 is (1/PTotal) x PWidth = (1/4) x 6" or 1.5".
RulingCatalog statement
The RulingCatalog statement defines the contents of the Ruling Catalog, which describes ruling styles for tables.
A document can have only one RulingCatalog statement, which must appear at the top level in the order given in
“MIF file layout” on page 53.
Syntax
<RulingCatalog
Ruling statement
The Ruling statement defines the ruling styles used in table formats. It must appear within the RulingCatalog
statement.
ADOBE FRAMEMAKER 84
MIF Reference
Syntax
<Ruling
<RulingTag tagstring> Ruling style name; an empty string indicates no ruling style
<RulingColor tagstring> Color of ruling line (see “ColorCatalog statement” on page 84)
<RulingSeparation integer> Color of ruling line; no longer used, but written out by FrameMaker for back-
ward-compatibility (see “Color statements” on page 263)
Color
You can assign colors to text and objects in a FrameMaker document. A FrameMaker document has a set of default
colors; you can also define your own colors and store them in the document’s Color Catalog. A FrameMaker
document has three color models you can use to create colors: CMYK, RGB, and HLS. You can also choose inks from
installed color libraries such as PANTONE®.
In a MIF file, colors are defined by a Color statement within a ColorCatalog statement. Regardless of the color
model used to define a new color, colors are stored in a MIF file in CMYK.
You can define a color as a tint of an existing color. Tints are colors that are mixed with white. A tint is expressed by
the percentage of the base color that is printed or displayed. A tint of 100% is equivalent to the pure base color, and
a tint of 0% is equivalent to no color at all.
You can specify overprinting for a color. However, if overprinting is set for a graphic object, the object’s setting takes
precedence. When a graphic object has no overprint statement, the overprint setting for the color is assumed.
You can set up color views to specify which colors are visible in a document. The color views for a document are
specified in the Views statement. The current view for the document is identified in a DCurrentView statement.
The color of a FrameMaker document object is expressed in a property statement for that object. In this manual, the
syntax description of a FrameMaker document object that can have a color property includes the appropriate color
property substatement.
ColorCatalog statement
The ColorCatalog statement defines the contents of the Color Catalog. A document can have only one Color-
Catalog statement, which must appear at the top level in the order given in “MIF file layout” on page 53.
FrameMaker automatically generates new colors while specific operations are performed. For example, FrameMaker
generates new colors when multiple conditional tags are applied to text. These colors are identified by their
ColorTag, which contains the prefix “fm_gen_”.
Syntax
<ColorCatalog
ADOBE FRAMEMAKER 85
MIF Reference
Color statement
The Color statement defines a color. It must appear within the ColorCatalog statement. Note that MIF version 5.5
and later supports multiple color libraries. The ColorPantoneValue statement has been replaced by the ColorFam-
ilyName and ColorInkName statements.
Syntax
<Color
<ColorLibraryInkName string> Specifies name of the color library pigment. Older versions of MIF that
use ColorPantoneValue can still be read into MIF 5.5 and later. The
full ink name must be used.
<ColorTint percentage> 100% indicates solid color; less than 100% indicates a reduced
percentage of the color
<ColorTintBaseColor string The name of the color from which the tint is derived. If the base color
does not exist in the document, black will be used.
<ColorOverprint boolean> Yes indicates overprint is set for the color; No indicates knockout.
ADOBE FRAMEMAKER 86
MIF Reference
Usage
In a MIF file, all colors are expressed as a mixture of cyan, magenta, yellow, and black. The ColorAttribute
statement identifies a default FrameMaker document color; the default colors are all reserved (specified by the
ColorIsReserved keyword) and cannot be modified or deleted by the user. A reserved default color can have two
ColorAttribute statements, for example:
<ColorAttribute ColorIsCyan>
<ColorAttribute ColorIsReserved>
A color tint must be based on an existing color. This has two implications:
• If the base color doesn’t exist in the document, black is used as the base color for the tint.
• The color value statements (values for CMYK, color family, and ink name) are ignored when included in a tint
statement. However, FrameMaker writes out color value statements for a tint, even though they will be ignored.
To modify the color values of a tint, modify the color value statements for the base color used by the tint.
Views statement
The Views statement contains the color views for the document. A document can have only one Views statement,
which must appear at the top level in the order given in “MIF file layout” on page 53.
Syntax
<Views
View statement
For each color view, the View statement specifies which colors will be displayed, which will be displayed as cutouts,
and which will not be displayed at all. The View statement must appear in a Views statement.
Syntax
<View
…
ADOBE FRAMEMAKER 87
MIF Reference
Variables
All variable definitions for a document are contained in a VariableFormats statement. Both user-defined and
system-defined variables are defined by a VariableFormat statement. A Variable statement that refers to the
variable name shows where the variable appears in text (see “ParaLine statement” on page 133).
Syntax
<VariableFormats
<VariableFormat
Usage
VariableName contains the name of the variable, used later in the MIF file by Variable to position the variable in
text. VariableDef contains the variable’s definition. A system-defined variable definition consists of a sequence of
building blocks, text, and character formats. A user-defined variable consists of text and character formats only.
The system variables for the current page number and running headers and footers can only appear on a master page
in an untagged text flow. You cannot insert any variables in a tagged text flow on a master page. You can insert
variables anywhere else in a text flow.
For more information about variables and the building blocks they can contain, see your user’s manual or the online
Help system.
ADOBE FRAMEMAKER 88
MIF Reference
Cross-references
A FrameMaker document can contain cross-references that refer to other portions of the document or to other
documents. A cross-reference has a marker that indicates the source (where the cross-reference points) and a format
that determines the text and its formatting in the cross-reference.
All cross-reference formats in a document are contained in one XRefFormats statement. A cross-reference format
is defined by an XRefFormat statement. Within text, an XRef statement and a Marker statement indicate where each
cross-reference appears.
Syntax
<XRefFormats
<XRefFormat
Usage
XRefName supplies the cross-reference format name, which is used later by the XRef statement to apply a format to
the text of the cross-reference. The XRefDef statement supplies the cross-reference format definition, which is a
string that contains text and cross-reference building blocks.
For more information about cross-references and their building blocks, see your user’s manual or the online Help
system.
The BookComponent statement specifies setup information for files generated from the document. The Dictionary
statement contains the user’s list of allowed words for the document.
Document statement
The Document statement defines global document properties. A document can have only one Document statement,
which must appear at the top level in the order given in “MIF file layout” on page 53.
A Document statement does not need any of these property substatements, which can occur in any order. It can also
contain additional substatements describing standard equation formats. (See , “MIF Equation Statements.”)
For example, The following MIF statements show three possible Document Info fields:
<PDFDocInfo
<Key `Author'>
<Value `Thomas Aquinas'>
<Key `Title'>
<Value `That the Soul Never Thinks Without an Image'>
<Key `Subject'>
<Value `Modern translation of the views of T. A. concerning cognition; "It is'>
<Value ` impossible for our intellect, in its present state of being joined t'>
<Value `o a body capable of receiving impressions, actually to understand...'>
> # end of PDFDocInfo
Syntax
<DNextUnique ID> Refers to the next object with a <Unique ID> statement; gener-
ated by FrameMaker and should not be used by filters
Window properties
<DViewRect X Y W H> Position and size of document window based on position and size of
the document region within containing window; DViewRect takes
precedence over DWindowRect
<DWindowRect X Y W H> Position and size of document window based on the containing
window (including the title bar, etc.)
Column properties
<DMargins L T R B> Not generated by FrameMaker, but used by filters to specify text
margins; ignored unless DColumns is specified
<DColumns integer> Not generated by FrameMaker, but used by filters to specify number
of columns
<DColumnGap dimension> Not generated by FrameMaker, but used by filters to specify column
gap
<DPageSize W H> Document’s default page size and orientation; if W is less than H, the
document’s orientation is portrait; otherwise it is landscape
Pagination
<DPageRounding keyword> Method for removing blank pages or modifying total page count
before saving or printing
<DPunctuationChars string> Punctuation characters that FrameMaker does not strip from run-in
heads; these characters override the default punctuation set in
PgfRunInDefaultPunct (see page 64)
Footnote properties
<DFNoteTag string> Paragraph and reference frame tag for document footnotes
ADOBE FRAMEMAKER 92
MIF Reference
<DTblFNoteTag string> Same meaning for the following statements as the corresponding
document footnote properties
<DTblFNoteLabels string>
<DTblFNoteNumStyle keyword>
<DTblFNoteAnchorPos keyword>
<DTblFNoteNumberPos keyword>
ADOBE FRAMEMAKER 93
MIF Reference
<DTblFNoteAnchorPrefix string>
<DTblFNoteAnchorSuffix string>
<DTblFNoteNumberPrefix string>
<DTblFNoteNumberSuffix string>
<DChBarColor tagstring> Change bar color (see “ColorCatalog statement” on page 84)
<DViewOnlyWinBorders boolean> No suppresses display of scroll bars and border buttons in document
window of View Only document
<DViewOnlyWinMenubar boolean> No suppresses display of document window menu bar in View Only
document
<DViewOnlyWinPalette boolean> Yes makes window behave as command palette window in View
Only document
<DLanguage keyword> Hyphenation and spell-checking language for text lines; for allowed
keywords, see PgfLanguage on page 65
Color printing
<DNoPrintSepColor tagstring> Tag name of color not to print; any color not included here is printed.
If you have multiple colors you don’t want to print, use multiple state-
ments.
<DTrapwiseCompatibility boolean> When printing to a PostScript file, Yes generates postscript opti-
mized for use with the TrapWise application
<DSuperscriptSize percent> Scaling factor for superscripts expressed as percentage of the current
font size
<DSubscriptSize percent> Scaling factor for subscripts expressed as percentage of current font
size
<DSmallCapsSize percent> Scaling factor for small caps expressed as percentage of current font
size
ADOBE FRAMEMAKER 95
MIF Reference
<DSmallCapsStretch percent> Amount to stretch or compress small caps, where 100% means no
change
<DRubiSize percentage> The size of the rubi characters, proportional to the size of the oyamoji
characters (see “Rubi text” on page 227.)
Reference properties
<DUpdateXRefsOnOpen boolean> Yes specifies that cross-references are automatically updated when
the document is opened
<DUpdateTextInsetsOnOpen boolean> Yes specifies that text insets are automatically updated when the
document is opened
Acrobat preferences
<DAcrobatBookmarksIncludeTagNames Yes specifies that each Acrobat Bookmark title begins with the name
boolean> of the paragraph tag
<DMenuBar string> Name of the menu bar displayed by an FDK client when the docu-
ment is opened; if an empty string is specified or if the menu bar is not
found, the standard FrameMaker menu bar is used
<DVoMenuBar string> Name of the menu bar displayed by an FDK client when the docu-
ment is opened in View Only mode; if an empty string is specified or
if the menu bar is not found, the standard view-only menu bar is used
Custom catalogs
<CustomFontFlag boolean> Yes means the document has a custom character tag list
<CustomPgfFlag boolean> Yes means the document has a custom paragraph formats list
<CustomTblFlag boolean> Yes means the document has a custom table formats list
<DCustomFontList ...> Signifies the start of the custom character tag list in the document
This tag is present in the document only when you have created a
custom character tag list in the document.
<DCustomFontTag string> Name of the tag in the custom character tag list
<DCustomPgfList ...> Signifies the start of the custom paragraph formats list in the docu-
ment
This tag is present in the document only when you have created a
custom paragraph formats list in the document.
<DCustomPgfTag string> Name of the paragraph tag in the custom paragraph list
ADOBE FRAMEMAKER 96
MIF Reference
<DCustomTblList ...> Signifies the start of the custom table formats list in the document
This tag is present in the document only when you have created a
custom table formats list in the document.
<DCustomTblTag string> Name of the table tag in the custom table tag
Structure properties For more information, see , “MIF Statements for Structured Docu-
ments and Books.”
<DTrackChangesOn boolean> Preserves the On/Off state of the Track Text Edit option.
WebDAV properties
<WEBDAV
<DocServerUrl string> URL of the MIF document on the WEBDAV Server. Any HTTP path is
valid.
Example:
<DocServerUrl `http://mikej-
xp/joewebdav/myfile.mif'>
#http://mikej-xp/joewebdav is the path of the server.
• CheckedOut
• CheckedIn
Miscellaneous properties
<DMagicMarker integer> Type number of the marker used to represent a delete mark
<DNextUnique ID> Refers to the next object with a <Unique ID> statement; gener-
ated by FrameMaker and should not be used by filters
Window properties
ADOBE FRAMEMAKER 97
MIF Reference
<DViewRect X Y W H> Position and size of document window based on position and size of
the document region within containing window; DViewRect takes
precedence over DWindowRect
<DWindowRect X Y W H> Position and size of document window based on the containing
window (including the title bar, etc.)
Column properties
<DMargins L T R B> Not generated by FrameMaker, but used by filters to specify text
margins; ignored unless DColumns is specified
<DColumns integer> Not generated by FrameMaker, but used by filters to specify number
of columns
<DColumnGap dimension> Not generated by FrameMaker, but used by filters to specify column
gap
<DPageSize W H> Document’s default page size and orientation; if W is less than H, the
document’s orientation is portrait; otherwise it is landscape
Volume numbering
<VolumeNumText string> When VolumeNumStyle is set to Custom, this is the string to use
Chapter numbering
Section numbering
Page numbering
ADOBE FRAMEMAKER 100
MIF Reference
<ContPageNum boolean> Yes means continue page numbering from the previous document
in the book
Pagination
<DPageRounding keyword> Method for removing blank pages or modifying total page count
before saving or printing
<DPunctuationChars string> Punctuation characters that FrameMaker does not strip from run-in
heads; these characters override the default punctuation set in
PgfRunInDefaultPunct (see page 64)
Footnote properties
<DFNoteTag string> Paragraph and reference frame tag for document footnotes
<DTblFNoteTag string> Same meaning for the following statements as the corresponding
document footnote properties
<DTblFNoteLabels string>
<DTblFNoteNumStyle keyword>
<DTblFNoteAnchorPos keyword>
<DTblFNoteNumberPos keyword>
<DTblFNoteAnchorPrefix string>
<DTblFNoteAnchorSuffix string>
<DTblFNoteNumberPrefix string>
<DTblFNoteNumberSuffix string>
<DChBarColor tagstring> Change bar color (see “ColorCatalog statement” on page 84)
<DViewOnlyWinBorders boolean> No suppresses display of scroll bars and border buttons in document
window of View Only document
<DViewOnlyWinMenubar boolean> No suppresses display of document window menu bar in View Only
document
<DViewOnlyWinPalette boolean> Yes makes window behave as command palette window in View
Only document
<DLanguage keyword> Hyphenation and spell-checking language for text lines; for allowed
keywords, see PgfLanguage on page 65
Color printing
<DNoPrintSepColor tagstring> Tag name of color not to print; any color not included here is printed
If you have multiple colors you don’t want to print, use multiple state-
ments.
<DTrapwiseCompatibility boolean> When printing to a PostScript file, Yes generates postscript opti-
mized for use with the TrapWise application
<DSuperscriptSize percent> Scaling factor for superscripts expressed as percentage of the current
font size
ADOBE FRAMEMAKER 104
MIF Reference
<DSubscriptSize percent> Scaling factor for subscripts expressed as percentage of current font
size
<DSmallCapsSize percent> Scaling factor for small caps expressed as percentage of current font
size
<DSmallCapsStretch percent> Amount to stretch or compress small caps, where 100% means no
change
<DRubiSize percentage> The size of the rubi characters, proportional to the size of the oyamoji
characters (see “Rubi text” on page 227.)
Reference properties
<DUpdateXRefsOnOpen boolean> Yes specifies that cross-references are automatically updated when
the document is opened
<DUpdateTextInsetsOnOpen Yes specifies that text insets are automatically updated when the
boolean> document is opened
PDF preferences
<DAcrobatBookmarksIncludeTagNames boolean> Yes specifies that each PDF Bookmark title begins with the name of
the paragraph tag
<DPDFAllNamedDestinations boolean> Yes indicates that FrameMaker will create named destinations for all
paragraphs and elements in the document; this style of marking
creates larger PDF files
<DPDFBookmarks boolean> Yes indicates that FrameMaker will create PDF bookmarks when you
save as PDF
<DPDFConvertCMYK boolean> A setting that determines whether to send CMYK or RGB color values
to the Distiller. This setting can be made and stored on documents in
any platform.
<DPDFTagsConfigurationDefined boolean> Yes indicates that tags configuration is defined for the PDF
<PDFTagConfigurationTOCBeginsWithList A list of strings from which any TOC tag can begin
string>
<PDFTagConfigurationTOCEndsWithList string> A list of strings from which any TOC tag can end
<PDFTagConfigurationListBeginsWithList A list of strings from which any list tag can begin
string>
<PDFTagConfigurationListEndsWithList string> A list of strings from which any list tag can end
<DPDFDestsMarked boolean> Yes indicates that the paragraphs and elements that are targets of
hypertext markers or cross-references have been marked according
to optimization rules for version 6.0 or later; this style of marking
makes it unnecessary to use <DPDFCreateNamedDestina-
tions Yes>
<DPDFEndPage ‘string’> A string for the page number for the ending page in the page range
_ to use this setting, DPDFAllPages must be set to No.
<DPDFJobOptions ‘string’> A string specifying the Distiller job options to use when distilling the
document.
<DPDFOpenBookmarkLevel number> A setting to specify at what level of the bookmark hierarchy to close
all bookmarks. A setting of 0 closes all bookmarks.
<DPDFOpenFit ‘string’> A string to specify how to fit the PDF document into the Acrobat
application window when it opens — can be one of Default,
Page, Width, Height, or None. Any other string value resolves
to Default. Use None in conjunction with DPDFOpenZoom.
<DPDFOpenPage ‘string’> A string for the page number for the page at which you want the PDF
file to open.
<DPDFOpenZoom number> A number to specify the zoom percentage when opening the PDF
document. To use this setting, DPDFOpenPage must either be
absent or set to None — otherwise FrameMaker ignores this setting.
<DPDFPageHeight number> A number for the page width — to use this setting DPDFPageSiz-
eSet must be set to Yes.
<DPDFPageWidth number> A number for the page height — to use this setting, DPDFPage-
SizeSet must be set to Yes
<DPDFRegMarks ‘string’> A string specifying which registration marks to use. Can be one of
None, Western, or Tombo — any other string resolves to None.
<DPDFSaveSeparate Yes/No> A setting that specifies whether to save a book as one PDF file or as a
collection of separate PDF files for each component in the book. This
setting is ignored in individual documents.
<DPDFStartPage ‘string’> A string for the page number for the starting page in the page range
_ top use this setting, DPDFAllPages must be set to No.
<DPDFStructure boolean> Yes indicates that the document includes structure statements for
Structured PDF
<DPDFStructureDefined boolean> Statement to determine how FrameMaker should display the PDF
structure settings in the PDF Setup dialog box; this statement is for
internal FrameMaker use, and you should not modify it
<PDFDocInfo> Specifies the information that appears in the File Info dictionary
when you save the document as PDF
<Key string> A string of up to 255 ASCII characters that represents the name of a
Document Info field; in PDF the name of a Document Info field must
be 126 characters or less.
<Value string> A string of up to 255 ASCII characters that represents the value of a
Document Info field; because a single MIF string contains no more
than 255 ASCII characters, you can use more than one Value state-
ment for a given Key
...
...
<DMenuBar string> Name of the menu bar displayed by an FDK client when the docu-
ment is opened; if an empty string is specified or if the menu bar is
not found, the standard FrameMaker menu bar is used
<DVoMenuBar string> Name of the menu bar displayed by an FDK client when the docu-
ment is opened in View Only mode; if an empty string is specified or
if the menu bar is not found, the standard view-only menu bar is used
Structure properties For more information, see , “MIF Statements for Structured Docu-
ments and Books.”
Document Direction
ADOBE FRAMEMAKER 107
MIF Reference
Miscellaneous properties
<DMagicMarker integer> Type number of the marker used to represent a delete mark
BookComponent statement
BookComponent statements contain the setup information for files that are generated from the document (for
example, a table of contents or an index). BookComponent statements must appear at the top level in the order given
in “MIF file layout” on page 53. These statements are used even if the document does not occur as part of a book. A
BookComponent statement can contain one or more DeriveTag statements.
Syntax
<FileName pathname> Generated file’s device-independent pathname (for pathname syntax, see page 7)
InitialAutoNums statement
The InitialAutoNums statement controls the starting values for autonumber series in a document. A MIF file can
have only one InitialAutoNums statement, which must appear at the top level in the order given in “MIF file layout”
on page 53.
An autonumber format includes a series label to identify the type of autonumber series and one or more counters.
The InitialAutoNums statement initializes the counters so that series that continue across files in a book are
numbered correctly. Any statement that increments the counter value starts from the initial setting.
ADOBE FRAMEMAKER 108
MIF Reference
Syntax
<InitialAutoNums
<AutoNumSeries
<FlowTag string> Specifies flow that the file uses to number the series
Dictionary statement
The Dictionary statement lists all the words in the document dictionary. A MIF file can have only one Dictionary
statement, which must appear at the top level in the order given in “MIF file layout” on page 53.
Syntax
<Dictionary
Dictionary preferences
Use the Dictionary preferences to specify Proximity or Hunspell dictionaries for Spelling and Hyphenation for
various languages.
Syntax
<Dictionary
<DiLanguages
<DiService Name of the spelling and hyphenation service provider in the following
tags under DiService:
<DiSpellProvider string>
<DiHyphenProvider string>
You can set these tags to Hunspell or Proximity.
ADOBE FRAMEMAKER 109
MIF Reference
Pages
Pages in a MIF file are defined by a Page statement. A FrameMaker document can have four types of pages:
• Body pages contain the document’s text and graphics.
• Master pages control the appearance of body pages.
• Reference pages contain boilerplate material or graphic art that is used repeatedly in a document, or custom
math elements.
• Hidden pages contain hidden conditional text in a special text flow.
When FrameMaker writes a MIF file, it writes a sequence of numbered body pages. When you generate a MIF file,
you should only define one body page and allow the MIF interpreter to automatically create new body pages as
needed. For more information about using body pages in a MIF file, see “Specifying page layout” on page 32.
Page statement
The Page statement adds a new page to the document. Page statements must appear at the top level in the order
given in “MIF file layout” on page 53.
Syntax
<Page
<PageNum string> Page number for additive pages (provided for output filters)
<PageTag tagstring> Names master or reference page; for a body page, specifies a different page number
(for example, a point page) to be used instead of the default page number
<PageSize W H> Page width and height; written by FrameMaker but ignored when a MIF file is read
or imported (see DPageSize on page 90)
<PageAngle degrees> Rotation angle of page in degrees (0, 90, 180, 270); angles are measured in a
counterclockwise direction with respect to the page’s original orientation as deter-
mined by the page size (see DPageSize on page 90)
<PageBackground keyword> Names master page to use for current page background (body pages only)
<Frame…> Graphic frames on the page (see the section “Graphic objects and graphic frames”
on page 111)
Graphic object statements Objects on the page (see the section “Graphic objects and graphic frames” on
page 111)
Filter statements
ADOBE FRAMEMAKER 110
MIF Reference
<Font…>
>
Usage
Master and reference page names (supplied by the PageTag statement) appear in the status bar of a document
window. The PageBackground statement names the master page to use as the background for a body page. A value
of Default tells FrameMaker to use the right master page for single-sided documents and to alternate between the
right and left master pages for a two-sided document. For more information about applying master page layouts to
body pages, see “Specifying page layout” on page 32.
A page of type HiddenPage contains the document’s hidden conditional text. (See “How FrameMaker writes a
conditional document” on page 43.)
A page’s size and orientation (landscape or portrait) is determined by the PageAngle statement and the Document
substatement DPageSize. If DPageSize defines a portrait page (one whose height is greater than its width), pages
with an angle of 0 or 180 degrees are portrait; pages with an angle of 90 or 270 degrees are landscape. If DPageSize
defines a landscape page (one whose width is greater than its height), pages with an angle of 0 or 180 degrees are
landscape; pages with an angle of 90 or 270 degrees are portrait.
The filter statements are not generated by FrameMaker. When it reads a MIF file generated by a filter, the MIF inter-
preter uses these statements to set up columns and text flows on master pages.
Mini TOC
FrameMaker document can contain a mini TOC. In a MIF file, a mini TOC tag is defined in an InlineComponen-
tsInfo statement.
InlineComponentsInfo statement
A mini TOC is the only inline component that is available in a document. The InlineComponentsInfo statement
defines the information about all type of inline components present in the document. Information about a particular
type of inline component is defined using the InlineComponentInfo statement.
ADOBE FRAMEMAKER 111
MIF Reference
A MIF file can have only one InlineComponentsInfo statement, which must appear at the top level in the order
given in the “MIF file layout” on page 53.
Syntax
<InlineComponentsInfo
InlineComponentInfo statement
The InlineComponentInfo statement is used to define a set of attributes with values.
Syntax
<InlineComponentInfo
<InlineComponentLinks boolean> Specifies whether entries in an inline component are hyperlinked or not.
<InlineComponentTag string> Name of the paragraph tags included in the inline component, for
example 'Heading 1'.
Object positioning
Each Page statement has nested within it Object and Frame statements. If a graphic frame contains objects and other
graphic frames, the graphic frames and objects are listed in the order that they are drawn (object in back first).
ADOBE FRAMEMAKER 112
MIF Reference
For Object and Frame statements, the interpreter keeps track of the current page and current graphic frame. When
the interpreter encounters a Frame statement, it assumes the graphic frame is on the current page. Similarly, when
the interpreter encounters an object statement, it assumes the object is in the current graphic frame or page.
When you open a MIF file as a FrameMaker document, the default current page is page 1, and the default current
frame is the page frame for page 1. A page frame is an invisible frame that “contains” objects or graphic frames placed
directly on a page. The page frame is not described by any MIF statement. When you import a MIF file into an
existing FrameMaker document, the default current page is the first page visible when the Import command is
invoked; the current frame is the currently selected frame on that page. If there is no currently selected frame, the
current frame is the page frame for that page.
Syntax
<Unique ID> ID, persistent across sessions, assigned when FrameMaker generates a MIF file; used
by the FDK client and should not be used by filters
<Pen integer> Pen pattern for lines and edges (see “Values for Pen and Fill statements” on
page 113)
<Fill integer> Fill pattern for objects (see “Values for Pen and Fill statements” on page 113)
<ObColor tagstring> Applies color from Color Catalog (see page 84)
<ObTint percentage> Applies a tint to the object color; 100% is equivalent to the pure object color and 0%
is equivalent to no color at all
<Separation integer> Applies color; no longer used, but written out by FrameMaker for backward-
compatibility (see “Color statements” on page 263)
<Overprint boolean> Yes turns on overprinting for the graphic object. No turns on knockout. If this
statement is not present, then the overprint setting from the object’s color is
assumed.
<RunaroundType keyword> Specifies whether text can flow around the object and, if so, whether the text
follows the contour of the object or a box shape surrounding the object
<RunaroundGap dimension> Space between the object and the text flowing around the object; must be a value
between 0.0 and 432.0 points
Frames, cells, and equations can only be rotated in 90-degree increments; all other
objects can be arbitrarily rotated.
<DashedPattern
<DashedStyle keyword> Specifies whether object is drawn with a dashed or a solid line
<NumSegments integer> Number of dash segments; ignored when MIF file is read
<DashSegment dimension> Defines a dash segment (see “DashSegment values” on page 114)
<ObjectAttribute Tagged information that gets stored with the object when you save a document as
Structured PDF
Usage
The ID substatement is necessary only if other objects refer to the object. For example, anchored frames, groups, and
linked text frames require ID substatements.
The GroupID statement is necessary only if the object belongs to a set of grouped objects (Group statement). All
objects in the set have the GroupID of the parent object. See “Group statement” on page 120.
Pen/Fill 0 2
3 5
6 8
9 11
12 14
None 15
Pen/Fill Patterns in Tools palette
Each Pen, Fill, or PenWidth substatement resets the MIF interpreter’s corresponding current value. If an Object
statement doesn’t include one of these statements, the MIF interpreter uses the current default value for the object
data.
ADOBE FRAMEMAKER 114
MIF Reference
In a FrameMaker document, patterns aren’t associated directly with a document, but with FrameMaker itself. Each
FrameMaker document contains indexes to FrameMaker patterns. You cannot define document patterns in MIF;
you can only specify the values 0–15. However, you can customize a UNIX or Windows version of FrameMaker to
use patterns that differ from the standard set. For information, see the online manuals Customizing FrameMaker for
UNIX and Working on Multiple Platforms for Windows.
DashSegment values
If the DashedStyle statement has a value of Dashed, the following DashSegment statements describe the dashed
pattern. The value of a DashSegment statement specifies the length of a line segment or a gap in a dashed line. See
the online manual Customizing Adobe FrameMaker for information on changing default dashed patterns in UNIX
versions of FrameMaker. In Windows versions, edit the maker.ini file in the directory where FrameMaker is
installed. See Customizing Adobe FrameMaker for more information. You can also define custom dash patterns. For
examples, see “Custom dashed lines” on page 236.
Objects inherit the values of these statements from previous objects. Since these statements are used only to change
the inherited value from a previous object, the statements are not needed for every object. For example, if you write
out a MIF file, not all objects will contain these statements.
If these statements do not appear in an object or MIF file, the following rules apply:
• If an object does not contain the RunaroundType statement or the RunaroundGap statement, FrameMaker uses
the values from the previous RunaroundType and RunaroundGap statements.
• If no previous RunaroundType and RunaroundGap statements exist in the MIF file, FrameMaker uses the default
values <RunaroundType None> and <RunaroundGap 6.0>.
• For example, if the <RunaroundGap 12.0> statement appears, all objects after that statement have a 12.0 point
gap from text that flows around them. If this is the only RunaroundGap statement in the MIF file, all objects
before that statement have a 6.0 point gap (the default gap value) from the text that flows around them.
• If the MIF file does not contain any RunaroundType statements or RunaroundGap statements, FrameMaker uses
the default values <RunaroundType None> and <RunaroundGap 6.0> for all objects in the file.
• For example, 3.x and 4.x MIF files do not contain any RunaroundType statements. When opening these files,
FrameMaker uses the default value <RunaroundType None>, and text does not flow around any of the existing
graphic objects in these files.
AFrames statement
The AFrames statement contains the contents of all anchored frames in a document. A document can have only one
AFrames statement, which must appear at the top level in the order given in “MIF file layout” on page 53.
The contents of each anchored frame are defined in a Frame statement. Within the text flow, an AFrame statement
indicates where each anchored frame appears by referring to the ID provided in the original frame description (see
“ParaLine statement” on page 133).
Syntax
<AFrames
Arc statement
The Arc statement describes an arc. It can appear anywhere at the top level, or in a Frame or Page statement.
Syntax
<Arc
Generic object statements Information common to all objects (see page 112)
ADOBE FRAMEMAKER 116
MIF Reference
Usage
The arc is a segment of an ellipse whose bounding rectangle is defined in ArcRect. ArcTheta specifies the starting
point of the arc in degrees. Zero corresponds to twelve o’clock, 90 to three o’clock, 180 to six o’clock, and 270 to nine
o’clock. ArcDTheta corresponds to the length of the arc. Positive and negative values correspond to clockwise and
counterclockwise extents.
ArrowStyle statement
The ArrowStyle statement defines both the head cap (at the starting point) and the tail cap (at the ending point) of
lines and arcs.
The arrow style property statements can appear in any order in an ArrowStyle statement. For a complete
description of arrow style properties, see your user’s manual.
Syntax
<ArrowStyle
Ellipse statement
The Ellipse statement describes circles and noncircular ellipses. It can appear anywhere at the top level, or in a
Frame or Page statement.
Syntax
<Ellipse
Generic object statements Information common to all objects (see page 112)
<ShapeRect L T W H> Position and size of object’s bounding rectangle, before rotation, in the page
or graphic frame coordinates
Frame statement
Usually, a Frame statement contains a list of Object and Frame statements that define the contents of the graphic
frame and are listed in the draw order from back to front.
The Frame statement can appear at the top level or in a Page, Frame, or AFrame statement.
Syntax
<Frame
Generic object statements Information common to all objects (see page 112)
<HotspotCmdStr String> When you click on the hotspot, you can execute a command. When executed, the
command takes the user to a URL or a named destination.
Example syntax:
-Or-
'gotolink linkname'
<ShapeRect L T W H> Position and size of object, before rotation, in page or graphic frame coordinates
ADOBE FRAMEMAKER 118
MIF Reference
<FrameType keyword> Whether graphic frame is anchored, and if anchored, the position of the anchored
frame
<Float boolean> Yes floats graphic frame to avoid large white space that results when anchored
frame and the line containing it are moved to the next page
<AnchorBeside keyword> Whether the graphic frame is anchored outside of a text frame or a column in a
text frame
Graphic object statements Objects in the graphic frame (see page 111)
Usage
Unless the generic object data indicates otherwise, the MIF interpreter assumes that each graphic frame inherits the
properties of the current state.
ADOBE FRAMEMAKER 119
MIF Reference
A Frame statement that is contained within an AFrames statement defines an anchored frame. Any other Frame
statement defines an unanchored frame. The assumed value for FrameType is NotAnchored.
For anchored frames, an AFrame statement that refers to the frame ID indicates where the anchored frame appears
within the text flow (see “ParaLine statement” on page 133).
Specifications for the position and alignment of anchored frames are described in the following sections.
If the graphic frame is anchored outside a text column or a text frame, the anchored frame can be positioned in one
of the following ways.
If the graphic frame is anchored outside a text column or text frame The Frame statement contains
On the left side of the text column or text frame <FrameType Left>
On the right side of the text column or text frame <FrameType Right>
On the side of the text column or text frame closer to the binding of the <FrameType Inside>
book (the “inside edge”)
On the side of the text column or text frame farther from the binding of the <FrameType Outside>
book (the “outside edge”)
On the side of the text column or text frame closer to any page edge <FrameType Near>
On the side of the text column or text frame farther from any page edge <FrameType Far>
With the left side of the text column or text frame <AnchorAlign Left>
With the right side of the text column or text frame <AnchorAlign Right>
ADOBE FRAMEMAKER 120
MIF Reference
With the side of the text column or text frame closer to the binding of the <AnchorAlign Inside>
book (the “inside edge”)
With the side of the text column or text frame farther from the binding <AnchorAlign Outside>
of the book (the “outside edge”)
Group statement
The Group statement defines a group of graphic objects and allows objects to be nested. The Group statement must
appear after all the objects that form the group. It can appear at the top level or within a Page or Frame statement.
Syntax
<Group
<Unique ID> ID, persistent across sessions, assigned when FrameMaker generates a MIF file; used by the FDK client
and should not be used by filters
Usage
When the MIF interpreter encounters a Group statement, it searches all objects within the current graphic frame for
those group IDs that match the ID of the Group statement. These objects are then collected to form the group. All
objects with the same group ID must be listed in the MIF file before their associated Group statement is listed. If
multiple Group statements have the same ID, the results will be unpredictable. For more information about the group
ID, see “Generic object statements” on page 112.
ImportObject statement
The ImportObject statement describes an imported graphic. It can appear at the top level or within a Page or Frame
statement.
The imported graphic is either copied into the document or imported by reference:
• If the imported graphic is copied into the document, the data describing the graphic is recorded within the
ImportObject statement. The description of a graphic in a given format is called a facet.
• FrameMaker uses facets to display graphics, print graphics, or store additional graphic information. Imported
graphics can have more than one facet, which means that the graphic is described in more than one format.
• If the graphic is imported by reference, the data describing the graphic is not stored within the ImportObject
statement. Instead, a directory path to the file containing the graphic data is recorded in the ImportObject
statement.
Syntax
<ImportObject
Generic object statements Information common to all objects (see page 112)
<ImportObFile pathname> Object’s UNIX-style pathname; no longer used, but written out by FrameMaker
for backward-compatibility
ADOBE FRAMEMAKER 121
MIF Reference
<ImportHint string> Record identifying the filter used for graphics imported by reference (see
“Record of the filter used to import graphic by reference” on page 124)
A poster file is the default image that appears when the movie is not playing. By
default, either standard icons or the first frame of the movie is used as its poster
image.
<ShapeRect L T W H> Position and size of object, before rotation, in the page or graphic frame coordi-
nates
<BitMapDpi integer> Scaling value for bitmap file; ignored for FrameVector graphics
<ImportObFixedSize boolean> Yes inhibits scaling of bitmap file (see “Size, position, and angle of imported
graphics” on page 122); ignored for FrameVector graphics
<ImportObNameDI pathname> This contains a name for the inset object but it is valid only of inset contains
facets FLV, SWF and U3D.
<ObjectActivateInPDF boolean> On creation of PDF, if this flag is ON for the object, the corresponding annotation
in PDF will get active as soon as the page containing this object becomes visible.
This is only valid for inset having facets FLV, SWF and U3D.
<ObjectOpenInFloatWindow boolean> On creation of PDF, if this flag is ON for the object, the corresponding annotation
in PDF will open in new window inside PDF reader soon as the page containing
this object becomes visible. This is only valid for inset having facets FLV, SWF and
U3D.
<ObjectSupportMMLink boolean> This tag represents if the inset support creation of multimedia link to it from text.
The inset having facets FLV, SWF and U3D supports this.
=string Specifies the name of the facet used to describe the graphic imported by
copying (see , “Facet Formats for Graphics.”)
&%keyword Identifies the data type used in the facet (see , “Facet Formats for Graphics.”).
&… Data describing the imported graphic; data must begin with the ampersand
character (see , “Facet Formats for Graphics.”)
&\x Marks the beginning or end of data represented in hexadecimal (see , “Facet
Formats for Graphics.”)
<NativeOrigin X Y> Coordinates of the origin of the imported graphic within the page or frame;
applicable for graphics that use coordinate systems, such as EPS
<ImportObEditor string> Name of application to call to edit bitmap graphic inset or imported object;
ignored for FrameVector graphics
<ImportObUpdater string> Identifies the imported graphic object or an embedded Windows OLE object.
For a description of the syntax of the string, see “Methods of importing graphics”
on page 123.
ADOBE FRAMEMAKER 122
MIF Reference
<ImportURL string> The http file path of graphic files imported by reference
<ObjectInfo string> U3D model properties such as lighting scheme, background color, existing view,
and rendering mode. The properties specified in this tag are applied to the U3D
object when a MIF file containing a U3D object is opened in FrameMaker.
• <rendering mode>: Valid values are from “1” to “15” (where “1” corre-
sponds to ‘Bounding Box’ and “15” to ‘Hidden Wireframe’)
Example:
<ObjectInfo `camera1;16777215;6;8;'>
Usage
The ImportObject statement describes the imported graphic’s position, size, and angle. If the graphic is imported
by reference, the statement describes the path to the graphic file. If the imported graphic is copied into the document,
the statement contains the data describing the graphic. Data describing the graphic is stored in one or more facets.
If the graphic is linked with an application (through FrameServer or an FDK client), the statement also describes the
path to the application used to edit the graphic.
Usage of some of the aspects of the ImportObject statement is described in the following sections.
Position and coordinate systems: Some types of graphics (such as EPS) use coordinate systems to specify the
position of the graphic. When these types of graphics are imported into a FrameMaker document, the NativeO-
rigin statement specifies the coordinates of the origin of the graphic within the page or frame. If the imported
graphic is updated, FrameMaker uses the coordinates from the NativeOrigin statement to prevent the graphic
from shifting on the page or frame.
Size and scale of TIFF graphics: FrameMaker doesn’t use internal TIFF dpi information for sizing purposes
because not all TIFF files contain that information and because it may be incorrect. FrameMaker allows users to set
the dpi manually when importing the TIFF file. Once the graphic is imported, FrameMaker displays the dpi infor-
mation in the Object Properties dialog box.
Angle of imported graphics: If an object contains both a <FlipLR Yes> statement and an Angle statement with
a nonzero value, the object is first flipped around the vertical axis and then rotated by the value specified in Angle.
Imported graphic or embedded OLE object (Windows = facet_name of an imported graphic object or an OLE
only) object
&data_type
&facet_data
=facet_name
&data_type
&facet_data
=EndInset
Example: <ImportObUpdater `SWF'>
Code Description
Note that this is not a comprehensive list of codes. Codes may be added to this list by Adobe or by developers at your
site.
format_id is a code specifying the format that the filter translates. The code is a string of four characters. The
following table lists some of the possible codes.
Code Description
Code Description
`PNTG’ MacPaint
‘PCX’ PC Paintbrush
‘FRMI’ FrameImage
‘FRMV’ FrameVector
‘CDR’ CorelDRAW
Note that this is not a comprehensive list of codes. Codes may be added to this list by Adobe or by developers at your
site.
ADOBE FRAMEMAKER 126
MIF Reference
platform is a code specifying the platform on which the filter was run. The code is a string of four characters. The
following table lists some of the possible codes.
Code Description
‘WIN4’ Windows 95
filter_vers is a string of four characters identifying the version of the filter on that platform. For example, version
1.0 of a filter is represented by the string `1.0 '.
filter_name is a text string (less than 31 characters long) that describes the filter.
Math statement
A Math statement describes an equation. For its description, see , “MIF Equation Statements.”
Polygon statement
The Polygon statement describes a polygon. It can appear at the top level or in a Page or Frame statement.
Syntax
<Polygon
Generic object statements Information common to all objects (see page 112)
ADOBE FRAMEMAKER 127
MIF Reference
Usage
The NumPoints statement is optional. When the MIF interpreter reads a MIF file, it counts the Point statements to
determine the number of points in the polygon.
PolyLine statement
The PolyLine statement describes a polyline. It can appear at the top level or in a Page or Frame statement.
Syntax
<PolyLine
Generic object statements Information common to all objects (see page 112)
Usage
The PolyLine statement is used for both simple and complex lines. A simple line is represented as a PolyLine with
<NumPoints 2>. The NumPoints statement is optional. When the MIF interpreter reads a MIF file, it counts the
Point statements to determine the number of points in the polyline.
ADOBE FRAMEMAKER 128
MIF Reference
Rectangle statement
The Rectangle statement describes rectangles and squares. It can appear at the top level or in a Page or Frame
statement.
Syntax
<Rectangle
Generic object statements Information common to all objects (see page 112)
<ShapeRect L T W H> Position and size of object, before rotation, in page or graphic frame coordinates
RoundRect statement
A RoundRect statement describes a rectangle with curved corners. It can appear at the top level or in a Page or Frame
statement.
Syntax
<RoundRect
Generic object statements Information common to all objects (see page 112)
<ShapeRect L T W H> Position and size of object, before rotation, in page or graphic frame coordinates
TextLine statement
The TextLine statement describes a text line. It can appear at the top level or in a Page or Frame statement.
A text line is a single line of text that FrameMaker treats differently from other text. Text lines grow and shrink as
they are edited, but they do not automatically wrap the way text in a text column does. Text lines cannot contain
paragraph formats, markers, variables, cross-references, or elements.
Syntax
<TextLine
Generic object statements Information common to all objects (see page 112)
<TLDirection keyword> Controls the direction in which the text line is drawn.
INHERITRTL - Derive the direction from the parent object. If it resolves to right to
left then INHERITRTL is assigned to TLDirection.
<TLLanguage keyword> Spell checking and hyphenation language for text line; for list of allowed keywords, see
PgfLanguage on page 65
<Font…> Embedded font change (see “PgfFont and Font statements” on page 67)
Usage
The TLOrigin statement specifies the baseline (Y) and the left, center, or right edge of the text line (X), depending
on TLAlignment. The text line is rotated by the value specified in an Angle statement. The default angle is 0.
A TextLine statement contains one or more String statements. Each String statement is preceded by an optional
Font statement. The Char statements provide codes for characters outside the printable ASCII range. You can define
macros that make Char statements more readable, and there are several predefined constants for character values.
(See “Char statement” on page 134.)
TextRect statement
The TextRect statement defines a text frame. It can appear at the top level or in a Page or Frame statement.
Syntax
<TextRect
Generic object statements Information common to all objects (see page 112)
<ShapeRect L T W H> Position and size of object, before rotation, in page or graphic frame coordi-
nates
<TRColumnBalance boolean> Yes means columns in the text frame are automatically adjusted to the same
height
<TRSideheadGap dimension> Gap between side head area and body text area (0"-50")
ADOBE FRAMEMAKER 130
MIF Reference
Usage
A text frame can contain one or more text columns (up to ten text columns). The number of columns and the space
between columns are specified by the TRNumColumns and TRColumnGap statements, respectively. The space between
columns cannot exceed 50 inches.
FrameMaker can adjust the height of the text columns to evenly distribute the text in the columns if the TRColumn-
Balance statement is set to Yes.
A text frame also contains the specifications for the placement of side heads. The width and location of the side head
in a text frame are specified by the TRSideheadWidth and TRSideheadPlacement statements. The side head area
cannot be wider than 50 inches. In the TRSideheadPlacement statement, the Inside and Outside settings corre-
spond to the side closer to the binding and the side farther from the binding, respectively. The spacing between the
side head and the text columns in the text frame is specified by the TRSideheadGap statement. The spacing cannot
exceed 50 inches.
TRNext indicates the ID of the next text frame in the flow. If there is no next TextRect, use a <TRNext 0> statement
or omit the entire TRNext statement. The text frame is rotated by the value specified in an Angle statement. The
default angle is 0.
Text flows
Text flows contain the actual text of a FrameMaker document. In a MIF file, text flows are contained in TextFlow
statements. Typically, the TextFlow statement consists of a list of embedded Para statements that contain
paragraphs, special characters, table and graphic frame anchors, and graphic objects.
When the MIF interpreter encounters the first TextFlow statement, it sets up a default text flow environment. The
default environment consists of the current text frame, current paragraph properties, and current font properties.
The TextFlow statement can override all of these defaults.
TextFlow statement
The TextFlow statement defines a text flow. It can appear at the top level or in a TextRect statement. It must appear
after all other main statements in the file.
Syntax
<TextFlow
<FlowDir keyword> Controls the flow direction and of the direction of child objects that derive their
direction from the flow.
INHERITLTR - Derive the direction from the parent object. If it resolves to left
to right, then INHERITLTR is assigned to FlowDir.
<TFFeather boolean> Yes adjusts vertical space in column so that last line of text lies against the
bottom of the column
<TFMinHangHeight dimension> Maximum character height for synchronization of first line in column; if charac-
ters exceed this height, FrameMaker doesn’t synchronize the first line
Usage
Most MIF generators will put all document text in one TextFlow statement. However, if there are subsequent
TextFlow statements, the interpreter assumes they have the same settings (current paragraph format, current font,
and so forth) as the previous text flow.
To divert the flow into a new, unlinked text frame, there must be a TextRectID statement in the first ParaLine
statement of the new TextFlow statement (see page 133). The TextRectID statement resets the current text frame
definition so subsequent text is placed within the identified text frame; this is necessary only if you want to reset the
text frame defaults.
If the text flow contains side heads, the TFSideheads statement is set to Yes. The PgfPlacementStyle statement
(under paragraph properties) identifies the side heads, and the TextRect statement contains specifications for their
size and placement.
For information about text flow properties, see your user’s manual.
Notes statement
The Notes statement defines all of the footnotes that will be used in a table title, cell, or text flow. It can appear at the
top level or at the beginning of a TblTitleContent, CellContent, or TextFlow statement.
ADOBE FRAMEMAKER 132
MIF Reference
Syntax
<Notes
<FNote
<Unique ID> ID, persistent across sessions, assigned when FrameMaker generates a MIF file; used by the
FDK client and should not be used by filters
<Font…> Changes font as needed (see “PgfFont and Font statements” on page 67)
Usage
Within the document text, footnotes are referred to with the <FNote ID> statement, where ID is the ID specified in
the corresponding FNote statement. See “ParaLine statement” on page 133.
Para statement
The Para statement defines a paragraph. It can appear in a TextFlow, FNote, CellContent, or TblTitleContent
statement. In simple MIF files without page or document statements (such as the hello.mif sample file), the Para
statement can also appear at the top level. It usually consists of a list of embedded ParaLine statements that contain
the document text.
Syntax
<Para
<Unique ID> ID, persistent across sessions, assigned when FrameMaker generates a MIF file;
used by the FDK client and should not be used by filters
<PgfEndCond boolean> Used only for hidden conditional text; Yes indicates this is the last paragraph in
the current block of conditional text in the HIDDEN text flow (see page 43)
<PgfCondFullPgf boolean> Used only for hidden conditional text; Yes indicates paragraph contains end of
current block of hidden text and current block ends with a paragraph symbol
Usage
By default, a paragraph uses the current Pgf settings (the same settings as its predecessor). Optional PgfTag and Pgf
statements reset the current format. If there is a PgfTag statement, the MIF interpreter searches the document’s
Paragraph Catalog for a Pgf definition with the same tag. If the tag exists, then the Paragraph Catalog’s Pgf
definition is used. If no definition is found in the catalog, the Pgf definition of the previous paragraph is used;
however, its tag string is reset to the tag in the PgfTag statement.
ParaLine statement
The ParaLine statement defines a line within a paragraph. It must appear in a Para statement.
Syntax
<ParaLine
<ElementBegin …> See , “MIF Statements for Structured Documents and Books.”
<InlineComponent
<SpclHyphenation boolean> Hyphenation of a word at the end of a line causes the word to be spelled
differently, as with German hyphenation
<Font…> Embedded character change for the following text (see page 67)
<VariableLocked boolean> Yes means the variable is part of a text inset that obtains its formatting
information from the source document
<XRefEnd>
<ElementEnd …> See , “MIF Statements for Structured Documents and Books.”
Usage
A typical ParaLine statement consists of one or more String, Char, ATbl, AFrame, FNote, Variable, XRef, and
Marker statements that define the contents of the line of text. These statements are interspersed with statements that
indicate the scope of document components such as structure elements and conditional text.
The VariableLocked statement is used for text insets that retain formatting information from the source document.
If the <VariableLocked Yes> statement appears in a specific variable, that variable is part of a text inset that retains
formatting information from the source document. The variable is not affected by global formatting performed on
the document.
If the <VariableLocked No> statement appears in a specific variable, that variable is not part of a text inset or is
part of a text inset that reads formatting information from the current document. The variable is affected by global
formatting performed on the document.
For more information about text insets, see “Text insets (text imported by reference)” on page 138.
Char statement
The Char statement inserts an extended ASCII character in a ParaLine statement. It must appear in a ParaLine,
TextLine, or BookXRef statement.
Syntax
<Char keyword> Preset name for special character (for allowed keyword values, see “Usage,” next)
Usage
To include an extended ASCII character in a ParaLine statement, use the Char statement with a predefined
character name.
For example, you can represent the pound sterling character ( £ ) with the statement <Char Pound>, as shown in the
following example:
<Para
<ParaLine
<String `the pound sterling'>
<Char Pound>
<String ` symbol'>
> # end of ParaLine
> # end of Para
<Para
<ParaLine
<String `the pound sterling \xa3 symbol'>
> # end of ParaLine
> # end of Para
You can use the <Char HardReturn> statement to insert a forced return in a paragraph. The <Char HardReturn>
statement must be the last substatement in a ParaLine statement.
<Para
<ParaLine
<String `string 1'>
<Char HardReturn>
ADOBE FRAMEMAKER 135
MIF Reference
Tab Tab
Cent Cent ( ¢ )
Pound Sterling ( £ )
Yen Yen ( ¥ )
EnDash En dash ( – )
EmDash Em dash ( — )
Dagger Dagger († )
EnSpace En space
EmSpace Em space
In MIF 8 documents, the following 10 special characters are no longer represented by Character Names. You can
directly enter the UTF-8 code points of these characters:
• <Char DiscHyphen>
• <Char NoHyphen>
• <Char HardHyphen>
• <Char Tab>
• <Char HardReturn>
• <Char NumberSpace>
• <Char HardSpace>
• <Char ThinSpace>
• <Char EnSpace>
• <Char EmSpace>
However, these special characters continue to be represented by Character Names in dialog boxes.
ADOBE FRAMEMAKER 136
MIF Reference
MarkerTypeCatalog statement
The MarkerTypeCatalog statement defines the contents of the catalog of user-defined markers for the current
document. A document can have only one MarkerTypeCatalog statement.
Syntax
<MarkerTypeCatalog
<MTypeName string> Marker name, as it appears in the Marker Type popup menu of the Marker dialog
box.
Marker statement
The Marker statement inserts a marker. It must appear in a ParaLine statement.
For version 5.5 of MIF and later, markers are identified by their names. If you open an earlier version MIF file that
uses markers of type 11 through type 25, the document will show those marker numbers as the marker names. For
MIF version 5.5 or later, MType numbers are still assigned for backward compatibility, but the assignment of numbers
is fairly arbitrary. If the document includes more than 15 custom markers (Type 11 through Type 25), then the extra
custom markers will be assigned <MType 25>.
Syntax
<Marker
<Unique ID> ID, persistent across sessions, assigned when FrameMaker generates a MIF file; used by the FDK
client and should not be used by filters
<MType integer> Marker type number (for list of allowed values, see “Usage,” next). Marker type numbers are not
used for the current versions of FrameMaker, but they are included for backward compatibility
<MTypeName string> Marker name, as it appears in the Marker Type popup menu of the Marker dialog box
<MCurrPage integer> Current page of marker assigned when FrameMaker generates a file; ignored when FrameMaker
reads or imports a MIF file
Usage
Marker type numbers correspond to the marker names in the Marker window as follows.
This number Represents this marker name
0 Header/Footer $1
1 Header/Footer $2
2 Index
3 Comment
4 Subject
5 Author
6 Glossary
ADOBE FRAMEMAKER 137
MIF Reference
7 Equation
8 Hypertext
9 X-Ref
10 Conditional Text
11 through 25 Type 11 through Type 25, for versions of FrameMaker earlier than 5.5. If more than 25 markers are
defined for the document, all extra markers are assigned the number 25.
In UNIX versions, you can change the default marker names. For more information, see the online manual, Custom-
izing FrameMaker.
XRef statement
The XRef statement marks a cross-reference in text. It must appear in a ParaLine statement.
Syntax
<XRef
<Unique ID> ID, persistent across sessions, assigned when FrameMaker generates a
MIF file; used by the FDK client and should not be used by filters
<XRefLastUpdate seconds microseconds> Specifies the time when the cross-reference was last updated; time is
measured in the number of seconds and microseconds that have passed
since January 1, 1970
<XRefLocked boolean> Yes means the cross-reference is part of a text inset that obtains its
formatting information from the source document
<XRefSrcIsElem boolean> Yes means the source of the cross-reference is an element from a struc-
tured document
<XRefSrcFile pathname> Device-independent pathname of file in which to search for source text
(for pathname syntax, see page 7)
<XRefSrcElemNonUniqueId string> A string specifying the 'id' attribute of the source element, in case it is not
a unique ID
<XRefClientName string> The registered name of the client that created the cross-reference
<XRefClientType string> The type of the client that created the cross-reference
<Font…> Embedded character change for the following cross-reference text (see
page 67)
ADOBE FRAMEMAKER 138
MIF Reference
Usage
The XRef statement marks where a cross-reference appears in text. The XRefName statement applies a format to the
cross-reference text; its string argument must match the name of the format provided by an XRefFormat statement.
The XRefSrcText statement identifies the cross-reference source. If the source text is in a separate file, the XRefS-
rcFile statement provides a device-independent filename. You can omit it or give it an empty string argument if the
cross-reference source is in the same file.
The XRefEnd statement marks the end of the cross-reference.
Any String or Char statements between the XRef and XRefEnd statements represent the actual text of the cross-
reference. These intermediary statements are optional.
For an example of a cross-reference in MIF, see “Creating cross-references” on page 37.
The XRefLocked statement is used for text insets that retain formatting information from the source document.
If the <XRefLocked Yes> statement appears in a specific cross-reference, that cross-reference is part of a text inset
that retains formatting information from the source document. The cross-reference is not affected by global
formatting performed on the document.
If the <XRefLocked No> statement appears in a specific cross-reference, that cross-reference is not part of a text
inset, or is part of a text inset that reads formatting information from the current document. The cross-reference is
affected by global formatting performed on the document.
For more information about text insets, see “Text insets (text imported by reference),” next.
TextInset statement
The TextInset statement defines text that has been imported by reference. A TextInset statement appears in a
ParaLine statement.
ADOBE FRAMEMAKER 139
MIF Reference
Syntax
<TextInset
<TiName string> Specifies a name for the text inset that may be assigned by an FDK client
or by this statement in a MIF file; FrameMaker does not automatically
assign a name for the text inset
<TiSrcFile pathname> Specifies the source file with a device-independent filename (for path-
name syntax, see page 7)
<TiAutoUpdate boolean> Yes specifies that the text inset is updated automatically when the
source file changes
<TiLastUpdate seconds microseconds> Specifies the time when the text inset was last updated; time is measured
in the number of seconds and microseconds that have passed since
January 1, 1970
<TiImportHint string> Identifies the filter used to convert the file (see “Record of the filter used
to import text” on page 140)
<TiApiClient …> Identifies the text inset as one created and maintained by an FDK client
(see “TiApiClient statement” on page 141)
<TiFlow …> Identifies the text inset as an imported text flow from another document
(see “TiFlow statement” on page 142)
<TiText …> Identifies the text inset as an imported text file (see “TiText statement”
on page 143)
<TiTextTable …> Identifies the text inset as text imported into a table (see “TiTextTable
statement” on page 143)
…(Free-form text) Para statements containing and describing the imported text (see
“Para statement” on page 132)
Usage
All text insets require information about the source file and the imported text. The information is used to update the
text inset when changes are made to the original file.
There are several different types of text insets. The type of the text inset is identified and described by a substatement:
• Text created and maintained by an FDK client is described by the TiApiClient substatement. For information
on the statement, see the section “TiApiClient statement” on page 141.
• A text flow imported from another FrameMaker document or from a document filtered by FrameMaker is
described by the TiFlow substatement. For information on the statement, see the section “TiFlow statement” on
page 142.
• Plain text imported by reference is described by the TiText substatement. For information on the statement, see
the section “TiText statement” on page 143.
• Text imported into a tabular format is described by the TiTextTable substatement. For information on the
statement, see the section “TiTextTable statement” on page 143.
Usage of some of the aspects of the TextInset statement is described in the following section.
ADOBE FRAMEMAKER 140
MIF Reference
Note that this is not a comprehensive list of codes. Codes may be added to this list by Adobe or by developers at your
site.
format_id is a code specifying the format that the filter translates. The code is a string of four characters. The
following table lists some of the possible codes.
Code Description
Code Description
‘TSJS’ Shift-JIS
‘TBG5’ Big5
‘TGB’ GB-2312
‘TKOR’ Korean
‘TUT8’ UTF-8
‘TU1B’ UTF-16BE
‘TU1L’ UTF-16LE
‘TU3B’ UTF-32BE
‘TU3L’ UTF-32LE
Note that this is not a comprehensive list of codes. Codes may be added to this list by Adobe or by developers at your
site.
platform is a code specifying the platform on which the filter was run. The code is a string of four characters. The
following table lists some of the possible codes.
Code Description
‘WINT’ Windows NT
‘WIN4’ Windows 95
filter_vers is a string of four characters identifying the version of the filter on that platform. For example, version
1.0 of a filter is represented by the string `1.0 '.
filter_name is a text string (less than 31 characters long) that describes the filter.
TiApiClient statement
The TiApiClient statement defines a text inset created and maintained by an FDK client application.
Syntax
<TiApiClient
<TiClientName string> Specifies the name used to register the FDK client application with FrameMaker
<TiClientSource string> Specifies the location of the source file for the text inset
<TiClientData string> Specifies additional data that can be used by an FDK client (for example, SQL query
information)
ADOBE FRAMEMAKER 142
MIF Reference
Usage
When updating text insets, the FDK client can use the TiClientName substatement to determine if it should update
a given text inset.
If the FDK client requires additional information, the client can store the information in the TiClientData
substatement. For example, if the FDK client queries a database for text, the SQL query can be stored in the TiCli-
entData substatement.
TiFlow statement
The TiFlow statement defines a text flow that is imported by reference from a FrameMaker document or a MIF file.
The statement also defines imported text from other formatted documents that FrameMaker can filter (for example,
a Microsoft Word document).
Syntax
<TiFlow
<TiFormatting keyword> Specifies which document formats are used for the text inset
<TiMainFlow boolean> Yes specifies that the text inset is imported from the main flow of the
source document; No specifies that the text inset is imported from a
different flow
<TiPageSpace keyword> If the text inset is not imported from the main flow, specifies whether the
text inset is imported from a flow in the body page or the reference page
of the source document
<TiFlowName string> If the text inset is not imported from the main flow, specifies the tag of
the flow to import; if the source file is an edition, set to `Windows
edition'
<TiFormatRemoveOverrides boolean> When reformatting to use the current document’s formats, Yes specifies
that format overrides are removed
<TiFormatRemovePageBreaks boolean> When reformatting to use the current document’s formats, Yes specifies
that manual page breaks are removed
Usage
If the imported text flow is not the main flow of the source document, the TiPageSpace and TiFlowName substate-
ments identify the flow in the source document that serves as the imported text flow.
Text imported from another document can obtain formatting information from the original document (if the
TiFormatting statement is set to TiSource) or from the current document (if the TiFormatting statement is set
to TiEnclosing):
ADOBE FRAMEMAKER 143
MIF Reference
• If the imported text flow is reformatted to use the current document’s formats, the TiFormatRemoveOverrides
substatement specifies whether or not format overrides in the text are removed, and the TiFormatRemovePage-
Breaks substatement specifies whether or not manual page breaks in the text are removed.
• If the imported text flow retains the formatting of the source document, the paragraph, character, table, variable,
and cross-reference formats used in the inset are marked with special MIF statements to indicate that these
formats should not be affected by global updates. These statements are PgfLocked, FLocked, TblLocked,
VariableLocked, and XRefLocked, respectively. The MIF statements appear under the descriptions of these
formats.
Plain text formatting can also be used, if the TiFormatting statement is set to TiPlainText.
TiText statement
The TiText statement defines a text file imported by reference. It appears in a TextInset statement.
Syntax
<TiText
<TiEOLisEOP boolean> Yes specifies that the end of the line marks the end of a paragraph; No specifies that a
blank line identifies the end of a paragraph
<TiTxtEncoding keyword> Specifies the text encoding for the source file
TiTextTable statement
The TiTextTable statement defines imported text formatted as a table. It appears in a TextInset statement.
Syntax
<TiTextTable
<TiTblTag string> Specifies the name of the table format used for the table
<TiTblIsByRow boolean> Yes specifies that each paragraph in the imported text is converted to a
row of table cells; No specifies that each paragraph in the imported text is
converted to a table cell
ADOBE FRAMEMAKER 144
MIF Reference
<TiTblNumCols num> If each paragraph is converted to a separate cell, specifies the number of
columns in the table
<TiTblSep string> If each paragraph is converted to a row of cells, specifies the character used
to indicate the contents of each cell
<TiTblNumSep num> If characters are used to indicate the contents of each cell, specifies the
number of these characters used as a single divider
<TiTblHeadersEmpty boolean> Yes indicates that the imported text is not inserted in the heading rows
<TiTblTxtEncoding keyword> Specifies the text encoding for the source file
Usage
When imported text is converted to a tabular format, each paragraph can be converted into either a cell or a row of
cells:
• If each paragraph is converted to a table cell, the TiTblIsByRow substatement is set to No. The number of
columns in the table is specified by the TiTblNumCols substatement.
• If each paragraph is converted to a row of cells, the TiTblIsByRow substatement is set to Yes. The character used
in the imported text to delimit the contents of each cell is specified by the TiTblSep substatement, and the
number of these characters used as a single divider is specified by the TiTblNumSep substatement.
• For example, if the imported text uses a single tab character to distinguish the contents of one table cell from the
next, the following substatements are used:
<TiTblSep `\t'>
<TiTblNumSep 1>
• As another example, if the imported text uses two spaces to distinguish the contents of one table cell from the
next, the following substatements are used:
<TiTblSep ` '>
<TiTblNumSep 2>
If the TiTblNumHdrRows substatement is not set to 0, the table has header rows. If the TiTblHeadersEmpty
substatement is set to No, these rows are filled with imported text.
145
Section Description
Book Labels the file as a MIF book file. The Book statement is required and must be the
first statement in the file.
Macro statements Defines macros with a define statement and reads in files with an include
statement. These statements can appear anywhere at the top level.
Control statements Establishes the default units in a Units statement, the debugging setting in a
Verbose statement, and comments in a Comment statement. These statements
can appear anywhere at the top level.
View only statements Specify whether the book is View Only, and how to display View Only book windows
BDisplayText Specifies the type of text to display in the book window for each book component
icon.
PDF statements Specify document info entries and how to handle named destinations when you
save the book as PDF
BookComponent Provides the setup information for each file in the book.
Condition Catalog Defines the condition tags of each document in the book.
Combined Font Catalog Defines the combined fonts of each document in the book.
FontCatalog Defines the character formats of each document in the book. The FontCatalog
statement contains a series of Font statements that define the tags that appear in
the Character Catalog of generated files.
PgfCatalog Defines the paragraph formats of each document in the book. The PgfCatalog
statement contains a series of Pgf statements that define the tags that appear in
the Include and Don’t Include scroll lists of the setup dialog boxes for generated
files.
BookXRef Names and defines the book’s internal cross-references. The BookXRef statement
contains cross-reference definitions in XRefDef statements, cross-reference text
in XRefSrcText statements, and the source filename in XRefSrcFile state-
ments.
BookUpdateReferences Specifies whether or not cross-references and text insets are automatically updated
when the book file is opened.
WEBDAV statements Specifies whether or not a book is marked as managed content on the WebDAV
server.
ADOBE FRAMEMAKER 146
MIF Reference
Syntax
The version argument indicates the version number of the MIF language used in the file, and comment is a comment
showing the name and version number of the program that generated the file.
For example, a MIF book file saved in version 9 of FrameMaker begins with the following line:
<Book 2015> # Generated by version 9.0 of FrameMaker
MIF is compatible across versions, so a MIF interpreter should be able to parse any MIF file, although the results can
sometimes differ from the user’s intentions.
A MIF book file identification line is the only statement required in a MIF book file.
Book statements
A MIF file for a book contains statements specific to books (BWindowRect, BookComponent, BookXRef, and
BookUpdateReferences), plus the following statements, which can also occur in a MIF file for a document:
Comment, Units, Verbose, PgfCatalog, and FontCatalog, ColorCatalog, and ConditionCatalog.
BWindowRect statement
The BWindowRect statement defines the position of the book window on the screen. It can appear anywhere in the
file but normally appears just after the Book statement.
Syntax
PDF statements
The PDFBookInfo statement specifies the information to include in the Document Info dictionary when you save
the book as PDF. Each data entry consists of one Key statement, followed by at least one Value statement; you can
include as many Value statements as you like. FrameMaker ignores any Key that does not have at least one Value
following it. MIF does not represent entries for Creator, Creation Date, or Modification Date.
For additional information and an example of the syntax for the Key and Value statements, see “PDF Document Info”
on page 89
Syntax
<PDFBookInfo Specifies the information that appears in the File Info dictionary when you save the book as PDF
Each Document Info entry consists of one Key statement followed by at least one Value statement.
ADOBE FRAMEMAKER 147
MIF Reference
<Key string> A string of up to 255 ASCII characters that represents the name of a Document Info field; in PDF the
name of a File Info field must be 126 characters or less.
<Value string> A string of up to 255 ASCII characters that represents the value of a Document Info field; because a
single MIF string contains no more than 255 ASCII characters, you can use more than one Value
statement for a given Key
A Value can include Unicode characters; represent Unicode characters via &#xHHHH;, where &#x
opens the character code, the “; ” character closes the character code, and HHHH are as many hexadec-
imal values as are required to represent the character.
... You can repeat paired groupings of Key and Value statements
The BookFileInfostatement stores encoded packets of information (XMP data) that corresponds with values of
fields in the File Info dialog box. This statement can only appear in the Book statement.
Syntaxº
...
Syntax
<BXmlVersion string> The XML version that was specified in the XML declaration when the
XML file was opened
<BXmlEncoding string> The XML encoding parameter that was specified in the XML declara-
tion when the XML file was opened
<BXmlStandAlone int> The XML standalone parameter that was specified in the XML declara-
tion when the XML file was opened—determines whether or not the
XML document requires a DTD
ADOBE FRAMEMAKER 148
MIF Reference
<BXmlStyleSheet string> The path or URI to the stylesheet that was specified for the XML file,
plus the type parameter specifying the type of stylesheet
Syntax
<BViewOnlyWinBorders boolean> No suppresses display of scroll bars and border buttons in book
window of View Only book
<BViewOnlyWinMenubar boolean> No suppresses display of book window menu bar in View Only book
(Unix only)
<BViewOnlyPopup boolean> No suppresses display of book context menus in View Only book
BDisplayText statement
The BDisplayText statement defines the type of text to display in the book window next to the book component
icons. It can appear anywhere in the file but normally appears just after the book’s View Only statements.
Syntax
<BDisplayText keyword> The type of text to display next to component icons in the book window;
keyword can be one of:
AsFilename; displays the filename of the book component in the
book window.
BookComponent statement
The BookComponent statement contains the setup information for a folder, group, document, or generated file in a
book. The BookComponent statements must precede all other statements that represent book content. The order of
BookComponent statements determines the order of the documents in the book.
If the BookComponentType is either a folder or a group, the following BookComponent statements should begin
under a BeginFolder and EndFolder statements or BeginGroup and EndGroup statements. The sequence should
be as follows.
ADOBE FRAMEMAKER 149
MIF Reference
<BookComponent
<BookComponentType FolderBookComponent>
<ComponentTitle 'Folder Name'>
<Expanded Yes>
<ExcludeComponent No>
...
<ComponentTemplateFilePath 'folder_template.fm'>
> # end of BookComponent
<BeginFolder> or <BeginGroup>
<BookComponent
<BookComponentType GeneralBookComponent>
...
> # end of BookComponent for file 1
#There can be multiple BookComponent statements within a BeginFolder and EndFolder
statements.
<EndFolder> or <EndGroup>
You specify the setup information as substatements nested within the overall book component statement. A
BookComponent statement doesn’t need all these substatements, which can occur in any order. A BookComponent
statement can contain one or more DeriveTag statements.
Folder components
<EndFolder> EndFolder indicates the end of the folder started with the immedi-
ately previous BeginFolder statement.
Group components
<EndGroup> EndGroup indicates the end of the group started with the immedi-
ately previous BeginGroup statement.
Syntax
<FileName pathname> A document or generated file in the book (for pathname syntax, see
page 7)
<DisplayText string> The text to display in the book window next to the icon for this compo-
nent; FrameMaker displays this text when BDisplayText is set to
AsText (see “<BDisplayText keyword>” on page 148).
GroupBookComponent (group)
FolderBookComponent (folder)
GeneralBookComponent (regular component)
Generated components
Volume numbering
<VolumeNumText string> When VolumeNumStyle is set to Custom, this is the string to use
Chapter numbering
<ChapterNumText string> When ChapterNumStyle is set to Custom, this is the string to use
Section numbering
<SectionNumText string> When SectionNumStyle is set to Custom, this is the string to use
ADOBE FRAMEMAKER 152
MIF Reference
Page numbering
<ContPageNum boolean> Yes continues page numbering from the previous file in the book
Paragraph numbering
Footnote numbering
<BFNoteLabels string> When BFNoteNumStyle is set to Custom, this is the string to use
ADOBE FRAMEMAKER 154
MIF Reference
<BTblFNoteComputeMethod keyword> Table footnote numbering; either value causes the component to read
the numbering style from its document
<DefaultPrint boolean> Yes adds file to Print scroll list in Print Files in Book dialog box (file is
printed); saved for compatibility with versions earlier than 6.0
<DefaultApply boolean> Yes adds file to Update scroll list in the Import Formats dialog box (file
is updated); saved for compatibility with versions earlier than 6.0
<DefaultDerive boolean> Yes adds file to Generate scroll list in the Generate/Update Book dialog
box
<NumPages integer> The number of pages in the components document, as calculated the
last time the book was updated
Book autonumbering
<FlowTag string> Specifies flow that the book uses to number the series
...
<ComponentApplication string> Name of the application for a folder, template, or XML file
BookXRef statement
The BookXRef statement defines the cross-reference formats for the book.
Syntax
<BookXRef
<XRefSrcIsElem boolean> Yes means the source of the cross-reference is an element from a
structured document
<XRefSrcFile pathname> File in which to search for source text (for pathname syntax, see
page 7)
<XRefSrcElemNonUniqueId string> A string specifying the 'id' attribute of the source element, in case it is
not a unique ID
BookUpdateReferences statement
The BookUpdateReferences statement specifies whether or not cross-references and text insets are automatically
updated when the book file is opened.
Syntax
<BookUpdateReferences boolean> Yes specifies that cross-references and text insets are automati-
cally updated when the book file is opened
WEBDAV statements
The BookServerURL and BookServerState MIF statements mark a book as managed content from the WebDAV
perspective.
Syntax
<BookServerURL string> URL of the MIF book file on the WEBDAV Server. All http path values are
valid.
Example:
<BookServerUrl `http://mikej-
xp/joewebdav/myfile.book.mif'> #
http://mikej-xp/joewebdav is the path of the
server.
<BookServerState keyword checked- Indicates whether a book is checked in or checked out on the WebDAV
out checkedin> server.
Example:
<BookServerState CheckedIn>
157
ElementDefCatalog statement
The ElementDefCatalog statement defines the contents of the Element Catalog. A document or book file can have
only one ElementDefCatalog statement which must appear at the top level in the order given in “MIF file layout”
on page 10.
Syntax
ElementDef statement
The ElementDef statement creates an element definition, which specifies an element’s tag name, content rules, and
optional format rules. It must appear within an ElementDefCatalog statement.
Syntax
<EDValidHighestLevel boolean> Yes indicates element can be used as the highest level element
for a flow; only a container element is allowed to be the highest
level element
<EDGeneralRule string> The general rule for the element; the following types of elements
can have general rules: containers, tables, table parts (table titles,
headings, bodies, footings, rows, and cells), and footnotes
<EDInitialTablePattern string> List of the tags of table child elements that are automatically
created when a table is inserted
<E DTex tFor matR ules …> See “EDTextFormatRules statement” on page 162
<E DEnd Elem entR ules …> See “EDEndElementRules statement” on page 164
<EDBannerText string> The banner text that appears inside a new element instance
<EDDescriptiveTag string> Description of the element tag that appears next to the element in
the element catalog
Usage
The element name can contain any characters from the FrameMaker character set except the following:
( ) & | , * + ? < > % [ ] = ! ; : { } "
Content rules
The content rule for a container element consists of the following statements:
• A required <EDObject EDContainer> statement specifies the element type.
• A required EDGeneralRule statement specifies what the element can contain and in what order the element’s
contents can appear.
ADOBE FRAMEMAKER 160
MIF Reference
• An optional EDExclusions statement specifies elements that cannot appear in the defined element or in its
descendants.
• An optional EDInclusions statement specifies elements that can appear anywhere in the defined element or in
its descendants.
The general rule specification must follow the conventions for data in a MIF string. If a general rule contains angle
brackets ( < > ), the right angle bracket must be preceded by a backslash in the MIF string. For example, an element
that can contain text might have the following general rule:
<EDGeneralRule `<TEXT\>'>
If you don’t provide a general rule statement for a container element, the MIF interpreter applies the default rule
<ANY>. The rule means that any element or text is allowed.
The following general rule describes an element that must contain at least one element named Item.
<ElementDef
<EDTag `BulletList'>
<EDValidHighestLevel No >
<EDGeneralRule `Item+'>
<EDObject EDContainer >
> # end of ElementDef
For more information about content rules, see the online manual FrameMaker Structure Application Developer’s
Guide.
Attribute definitions
Element definitions can specify attribute definitions, which describe attributes (information stored with an element
other than its content). The definition of an attribute can specify that the attribute is required for all elements with
the element definition. It can also provide a list of the values the attribute can have and a default value.
EDAttrDef statement
The EDAttrDef statement defines the formatting properties to be applied to a container, table, table child, or
footnote element in different contexts. It must appear in an ElementDef statement.
Syntax
<EDAttrHidden boolean> Yes means the attribute is hidden and will not appear in the Struc-
ture view or in the Edit Attributes dialog box
<EDAttrDefValues The default if the attribute is not required. If the attribute type is
FAttrInts, FAttrReals, FAttrStrings, or
FAttrUniqueIdRefs, the default can have multiple strings
Format rules
Format rules allow the template builder to specify the format of an element in specific circumstances. A format rule
can be either a context rule or a level rule.
A context rule contains clauses that specify an element’s formatting based on its parent and sibling elements. For
example, one clause of a format rule could specify that a Para element has the FirstBody paragraph format if it is the
first child of a Heading element. Another clause could specify that a Para element has the Body paragraph format in
all other contexts.
A level rule contains clauses that specify an element’s formatting on the basis of the level to which it is nested within
specific types of ancestor elements. For example, one clause of a level rule could specify that a Para element appears
in 12-point type if it has only one Section element among its ancestors. Another clause could specify that a Para
element appears in 10-point type if there are two Section elements among its ancestors.
Element definitions contain format rules grouped into the following statements:
• EDTextFormatRules
• EDObjectFormatRules
• EDPrefixRules
• EDSuffixRules
• EDStartElementRules
• EDEndElementRules
EDTextFormatRules statement
The EDTextFormatRules statement defines the formatting properties to be applied to a container, table, table child,
or footnote element in different contexts. It must appear in an ElementDef statement. An EDTextFormatRules
statement can contain zero or more substatements describing level and context format rules.
Syntax
EDObjectFormatRules statement
The EDObjectFormatRules statement defines the formatting properties to be applied to a table, cross-reference,
system variable, marker, graphic, or equation element in different contexts. It must appear in an ElementDef
statement.
An EDObjectFormatRules statement can contain a single level format rule or a single context format rule.
ADOBE FRAMEMAKER 163
MIF Reference
Syntax
<EDObjectFormatRules Begin object format rules (a single level format rule or a single context
format rule)
or
<EDObjectFormatRules
EDPrefixRules statement
A prefix is a fixed text range that appears at the beginning of an element (before the element’s content). The EDPre-
fixRules statement defines the formatting properties to be applied to a prefix in different contexts. It must appear
in an ElementDef statement. It is valid only for container elements.
An EDPrefixRules statement can contain zero or more substatements describing level and context format rules.
Syntax
<EDPrefixRules Begin prefix rules (any combination of level and context format rules)
EDSuffixRules statement
A suffix is a fixed text range that appears at the end of an element (after the element’s content). The EDSuffixRules
statement defines the formatting properties to be applied to a suffix in different contexts. It must appear in an
ElementDef statement. It is valid only for container elements.
An EDSuffixRules statement can contain zero or more substatements describing level and context format rules.
Syntax
<EDSuffixRules Begin suffix rules (any combination of level and context format rules)
<L evel Form atRu le…> Additional level format rule statements as needed
ADOBE FRAMEMAKER 164
MIF Reference
EDStartElementRules statement
The EDStartElementRules statement defines a special set of format rules to be applied to the first paragraph in a
parent element. The EDStartElementRules statement must appear in an ElementDef statement. It is valid only for
container elements.
An EDStartElementRules statement can contain zero or more substatements describing level and context format
rules.
Syntax
<EDStartElementRules Begin start element rules (any combination of level and context format
rules)
<C onte xtFo rmat Rule …> Additional context format rule statements as needed
EDEndElementRules statement
The EDEndElementRules statement defines a special set of format rules to be applied to the last paragraph in a
parent element. The EDEndElementRules statement must appear in an ElementDef statement. It is valid only for
container elements.
An EDEndElementRules statement can contain zero or more substatements describing level and context format
rules.
Syntax
<EDEndElementRules Begin end element rules (any combination of level and context format
rules)
<L evel Form atRu le…> Additional level format rule statements as needed
ContextFormatRule statement
The ContextFormatRule statement contains clauses that specify an element’s formatting on the basis of the
element’s parent and sibling elements. It contains an If statement and zero or more ElseIf statements. It can also
contain an Else statement.
The ContextFormatRule statement must appear in a format rules statement, such as an EDTextFormatRules or
EDEndElementRules statement.
Syntax
<If…> An If clause (see “If, ElseIf, and Else statements” on page 166)
<ElseIf…> An ElseIf clause (see “If, ElseIf, and Else statements” on page 166)
<Else…> An optional Else clause (see “If, ElseIf, and Else statements” on
page 166)
LevelFormatRule statement
The LevelFormatRule statement contains statements that specify an element’s formatting on the basis of the level
to which the element is nested within specific types of ancestor elements.
The LevelFormatRule statement contains a CountElements statement listing the tags of elements to count
among the element’s ancestors and a statement specifying the tag of the element at which to stop counting. The
LevelFormatRule statement also contains an If statement, zero or more ElseIf statements, and an optional Else
statement. The If, ElseIf, and Else statements define the formatting applied to the element at specified levels
of nesting within the ancestor elements specified by the CountElements statement.
The LevelFormatRule statement must appear in a format rules statement, such as an EDTextFormatRules or
EDEndElementRules statement.
Syntax
<If…> An If clause (see “If, ElseIf, and Else statements” on page 166)
<ElseIf…> An optional ElseIf clause (see “If, ElseIf, and Else statements” on
page 166)
ADOBE FRAMEMAKER 166
MIF Reference
<Else…> An optional Else clause (see “If, ElseIf, and Else statements” on
page 166)
<Context contextstring> String specifying a context, such as Section < Section. If this
context applies to the element, the following formatting statements are
used to format the element.
<ElseIf
<Context contextstring>
<Formatting statement>
<Formatting statement>
In a LevelFormatRule statement, If and ElseIf, and Else statements take the following form:
<If Begin If clause
<Level levelstring> String specifying a level of nesting, such as 1 or 5. If the element is nested
to this level, the following formatting statements are used to format the
element.
ADOBE FRAMEMAKER 167
MIF Reference
<Level levelstring>
Formatting statements
If, ElseIf, and Else statements can use the following statements to specify an element’s formatting:
<IsTextRange boolean> Yes if the element is formatted as a text range instead of as a paragraph
Only text format rules can include this statement.
<FormatTag tagstring> The format tag. If IsTextRange specifies Yes, tagstring specifies
a character format tag; otherwise, it specifies a paragraph tag, table tag,
marker type, cross-reference format, or equation size
Only text and object format rules can include this statement
<FmtChangeListTag tagstring> The tag of a named format change list (a format change list in the format
change list catalog). For more information on format change lists, see “Format
change lists” on page 168
<FmtChangeList …> The definition of an unnamed format change list. For more information on
format change lists, see “Format change lists” on page 168
<ContextLabel labelstring> The context label for generated files. It cannot contain white-space characters
or any of these special characters:
Only text and object format rules can include this statement
ADOBE FRAMEMAKER 168
MIF Reference
Each If, ElseIf, and Else statement can include only one of the following formatting statements:
• FormatTag
• FmtChangeList
• FmtChangeListTag
• ContextFormatRule
• LevelFormatRule
FmtChangeListCatalog statement
The FmtChangeListCatalog statement defines the contents of the Format Change List Catalog. A document can
have only one FmtChangeListCatalog statement which must appear at the top level in the order given in “MIF file
layout” on page 10.
Syntax
FmtChangeList statement
The FmtChangeList statement creates a format change list definition. The FmtChangeList statement for a named
change list must appear in the FmtChangeListCatalog statement. The FmtChangeList statement for a unnamed
change list must appear in the format rule clause that uses it.
ADOBE FRAMEMAKER 169
MIF Reference
A change list can specify absolute values or relative values. For example, it can specify that the paragraph left indent
is one inch or it can specify that it is one inch greater than the inherited left indent. Alternatively, a change list can
simply specify a paragraph catalog format to apply to a paragraph. If it does this, it can’t specify changes to any other
paragraph properties.
If a FmtChangeList statement defines a named change list, it must include an FclTag statement specifying its
name. In addition, it must contain one statement for each paragraph format property it changes. For example, if a
named change list changes only the first indent by a relative value, it contains only FclTag and PgfFIndentChange
statements. If it changes the space below and the leading with absolute values, it contains FclTag, PgfSpBefore,
and PgfLeading statements.
If a FmtChangeList statement changes a paragraph property to an absolute value, the statement it uses is the same
as the corresponding paragraph format statement (for example, PgfLIndent). If the change list changes a property
with a relative value, the statement it uses has the name of the corresponding paragraph format statement with the
word Change appended to it (for example, PgfLIndentChange).
Syntax
Basic properties
<FclTag tagstring> Format change list name if the format change list is named
<PgfFIndent dimension> First line left margin, measured from left side of current text
column
<PgfFIndentRelative boolean> Yes means the first indent is relative to the left indent instead
of the left side of the current text column
<PgfLIndent dimension> Left margin, measured from left side of current text column
<PgfRIndent dimension> Right margin, measured from right side of current text column
<PgfLineSpacingFixed boolean> Yes means the lines spacing is fixed (to the default font size)
ADOBE FRAMEMAKER 170
MIF Reference
<PgfNumTabs integer> Number of tabs in a paragraph. To clear all the tabs in a para-
graph, specify 0
<TSXRelative boolean> Yes means the tab stop is relative to the left indent
<TSDecimalChar integer> Align decimal tab around a character by ASCII value; in UNIX
versions, type man ascii in a UNIX window for a list of char-
acters and their corresponding ASCII values
<MoveTabs dimension> Move all tabs by a specified distance. A format change list can
have one or more TabStob statements, or a MoveTabs
statement. It can’t have both
<FPostScriptName string> Name of font when sent to PostScript printer (see “Font name”
on page 70)
<FPlatformName string> Platform-specific font name, only read by the Windows version
(see “FPlatformName statement” on page 71)
<FSeparation integer> Font color; no longer used, but written out by FrameMaker for
backward-compatibility (see “Color statements” on page 263)
ADOBE FRAMEMAKER 171
MIF Reference
<FStretch percent> The amount to stretch or compress the font, where 100%
means no change
<FStretchChange percent> The amount to change the width setting for the font, where
100% means no change
<FPosition keyword> Specifies subscript and superscript characters; font size and
position relative to baseline determined by Document
substatements (see page 94)
<FLocked boolean> Yes means the font is part of a text inset that obtains its
formatting properties from the source document
ADOBE FRAMEMAKER 172
MIF Reference
Pagination properties
<PgfPlacementStyle keyword> Placement of side heads, run-in heads, and paragraphs that
straddle text columns
Numbering properties
Advanced properties
<PgfTopSeparator string> Name of reference frame (from reference page) to put above
paragraph
<PgfTopSepAtIndent boolean> Yes if the position of the frame specified by the PgfTopS-
eparator statement is at the current left indent
<PgfTopSepOffset dimension> Position at which to place the reference frame above the para-
graph
<PgfBotSeparator string> Name of reference frame (from reference page) to put below
paragraph
<PgfBotSepAtIndent boolean> Yes if the position of the frame specified by the PgfBo-
tSeparator statement is at the current left indent
<PgfBotSepOffset dimension> Position at which to place the reference frame below the para-
graph
ADOBE FRAMEMAKER 174
MIF Reference
<PgfCellLMarginChange dimension> Change to left cell margin for first paragraph in a cell
<PgfCellBMarginChange dimension> Change to bottom cell margin for first paragraph in a cell
<PgfCellTMarginChange dimension> Change to top cell margin for first paragraph in a cell
<PgfCellRMarginChange dimension> Change to right cell margin for first paragraph in a cell
Elements
ElementBegin and ElementEnd statements
The ElementBegin and ElementEnd statements indicate where a structural element begins and ends. These state-
ments must appear in a ParaLine statement (see page 182) or in a BookElements statement (see page 185).
Syntax
<Unique ID> ID, persistent across sessions, assigned when FrameMaker generates a
MIF file; used by the API and should not be used by filters
<ElementReferenced boolean> Yes means the element is marked as a PDF named destination for cross-
references, hypertext markers, or bookmarks (version 6.0 or later)
<ENamespacePath string> The system path or URI to the DTD or schema that defines the namespace
<BannerTextProcessed boolean> On means the banner text for the element was created once for this
element.
Off means the banner text was not created for this element.
<AttrValue string> Attribute value if attribute allows more than one value
<UserString string> A string in which clients can store private data — can be up to 1023 char-
acters in length
Usage
FrameMaker writes out the tagstring value in an ElementEnd statement for use by filters. Your application does
not need to supply the tagstring value when it writes MIF files.
If the interpreter reads unbalanced ElementBegin and ElementEnd statements, it ignores superfluous element ends
and closes all open elements at the end of a TextFlow statement. If the interpreter reads a flow that does not have an
element enclosing all of the flow’s contents, it creates a highest-level element with the tag NoName. ElementBegin
and ElementEnd statements are nested within ParaLine and BookElements statements. The following example
shows how FrameMaker writes an UnorderedList element:
<Para
<PgfTag `Bullet'>
# The autonumber contains a bullet and a tab.
<PgfNumString `• \t'>
<ParaLine
# Note that the ElementBegin statement is nested inside both
# the Para and ParaLine statements.
<ElementBegin
<ETag `UnorderedList'>
<Collapsed No >
<SpecialCase No >
> # end of ElementBegin
<ElementBegin
<ETag `Item'>
<Collapsed No >
<SpecialCase No >
> # end of ElementBegin
<String `Light rail provides transportation for those who '>
>
<ParaLine
<String `are unable to drive or cannot afford an automobile.'>
<ElementEnd `Item'>
>
> # end of Para
<Para
<PgfTag `Bullet'>
<PgfNumString `• \t'>
<ParaLine
<ElementBegin
<ETag `Item'>
<Collapsed No >
<SpecialCase No >
> # end of ElementBegin
<String `Light rail lures commuters away from rush hour traffic.'>
# Again, note that both the Item and Bulletlist elements end
# before the end of the Para and ParaLine statements.
<ElementEnd `Item'>
<ElementEnd `UnorderedList'>
>
> # end of Para
The SuffixBegin statement appears before the element suffix string, which is followed by the ElementEnd
statement. Everything between the SuffixBegin statement and the ElementEnd statement is treated as the
element suffix. The ElementEnd statement does not appear when the element has no suffix.
Banner text
Banner text in a FrameMaker file instructs you about what to enter in an element. Banner text is controlled using the
BannerText element in the EDD. You can control the instructional text you want to display for each of the elements.
FrameMaker does not treat banner text as real content in the document. Banner text is included in FM and MIF
output but is not included in XML output.
Banner text in FrameMaker is governed with the following settings:
Syntax
<EDBannerText string> The banner text that appears inside a new element instance
<DBannerTextOn Boolean> Yes turns on banner text for tags in document window.
<BannerTextProcessed boolean> On means the banner text for the element was created once for this
element.
Off means the banner text was not created for this element.
Filter By Attribute
DefAttrValuesCatalog and AttrCondExprCatalog statements
The Filter By Attribute feature in FrameMaker supports filtering a structured document for complex output
scenarios based on the value of attributes. You define a filter using a Boolean expression containing attribute-value
pairs. You can create multiple filters, save them, and use them for filtering a document based on different output
scenarios.
The DefAttrValuesCatalog statement and the AttrCondExprCatalog statement store information required for
generating the output.
The DefAttrValuesCatalog statement defines the contents of the defined attribute values catalog. If no values are
defined, the catalog is empty. Each definition has an attribute tag (AttributeTag) and a corresponding list of values
(AttributeValue).
The AttrCondExprCatalog defines the contents of the filters catalog defined for a structured document. A MIF file
can have only one AttrCondExprCatalog statement.
ADOBE FRAMEMAKER 178
MIF Reference
Syntax
<DXmlSystemId string> The system identifier for the XML document type
<DXmlSystemId string>
<DXmlEncoding string> The XML encoding parameter that was specified in the XML declara-
<BXmlEncoding string> tion when the XML file was opened
<DXmlFileEncoding string> The XML encoding that was found in the imported XML file
<BXmlFileEncoding string>
<DXmlPublicId string> The public identifier for the XML document type
<DXmlPublicId string>
<DXmlStandAlone int> The XML standalone parameter that was specified in the XML declara-
<BXmlStandAlone int> tion when the XML file was opened—determines whether or not the
XML document requires a DTD
<DXmlStyleSheet string> The URI for the stylesheet associated with the imported XML docu-
<BXmlStyleSheet string> ment
<DXmlUseBOM int> The Byte Order Mark that was specified in the imported XML docu-
<BXmlUseBOM int> ment
<DXmlWellFormed int> Indicates whether the XML document was wellformed or not
<BXmlWellFormed int>
<DXmlVersion string> The XML version that was specified in the XML declaration when the
<BXmlVersion string> XML file was opened
ADOBE FRAMEMAKER 179
MIF Reference
Syntax
<DShowElementDescriptiveTags bool- Yes displays descriptive text against elements in the element
ean> catalog for the document.
<DAttrEditor keyword> When Edit Attributes dialog box appears for new elements
<DElementBordersOn boolean> Yes turns on element borders in document window. This state-
ment and DElementTags are mutually exclusive. If both state-
ments appear in a MIF file, the later statement overrides the earlier
one
<DElementTags boolean> Yes turns on element tags in document window. This statement
and DElementBordersOn are mutually exclusive. If both
statements appear in a MIF file, the later statement overrides the
earlier one
<DBannerTextOn boolean> Yes turns on banner text for tags in document window.
<DUseInitStructure boolean> Yes means structured FrameMaker inserts initial structure for
new elements
ADOBE FRAMEMAKER 180
MIF Reference
<DSGMLAppName string> The name of the SGML application associated with the document.
For information on registering SGML applications, see the online
manual FrameMaker Structure Application Developer’s Guide
<DApplyFormatRules boolean> Yes uses element format rules to reformat document on opening
and to remove format overrides; for input filters only, not gener-
ated by FrameMaker
<PrevElement
<Attributes …>
>
<Element
>
<NextElement
<Attributes …>
>
<DFCLMaximums Upper change list limits. Format change lists cannot increment
properties beyond these values
<PgfCellLMargin dimension> Maximum left cell margin for first paragraph in a cell
<PgfCellBMargin dimension> Maximum bottom cell margin for first paragraph in a cell
<PgfCellTMargin dimension> Maximum top cell margin for first paragraph in a cell
<PgfCellRMargin dimension> Maximum right cell margin for first paragraph in a cell
<DFCLMinimums Lower change list limits. Format change lists cannot decrement
properties below these values
<PgfCellLMargin dimension> Minimum left cell margin for first paragraph in a cell
<PgfCellBMargin dimension> Minimum bottom cell margin for first paragraph in a cell
<PgfCellTMargin dimension> Minimum top cell margin for first paragraph in a cell
<PgfCellRMargin dimension> Minimum right cell margin for first paragraph in a cell
<WEBDAV
<DocServerUrl string> URL of the MIF file on the WEBDAV Server. Any HTTP path is valid.
Example:
<DocServerUrl `http://mikej-xp/
joewebdav/myfile.mif'>
ParaLine statement
The ParaLine statement defines a line within a paragraph. It must appear in a Para statement.
Syntax
<ParaLine
Usage
A typical ParaLine statement consists of one or more String, Char, ATbl, AFrame, FNote, Variable, XRef, and
Marker statements that define the contents of the line of text. These statements are interspersed with statements that
indicate the scope of document components such as structural elements and conditional text.
ElementDefCatalog statement
The ElementDefCatalog statement contains the definitions of all elements in the book file. A book file can have
only one ElementDefCatalog statement. It normally appears near the beginning of the file.
ADOBE FRAMEMAKER 183
MIF Reference
Syntax
Usage
The book file inherits the Element Catalog from the document used to generate the book file or from a document
given as the source for the Import>Element Definitions command. In a MIF file, you should copy the Element
Catalog from one of the structure documents included in the book.
BookSettings statement
The BookSettings statement contains the definitions of all elements in the book file. A book file can have only one
BookSettings statement. It normally appears near the beginning of the file. The statements in the BookSettings
statement correspond to statements in the BookSettings statement, except that they begin with the letter B instead
of the letter D.
Syntax
<BShowElementDescriptiveTags Yes displays descriptive text against elements in the element catalog
boolean> for the book.
<BAttrEditor keyword> When Edit Attributes dialog box appears for new elements
<BUseInitStructure boolean> Yes means structured FrameMaker inserts initial structure for new
elements
<BUseInitStructureRecursively True means inserting an element in a structured book will allow its
boolean> child element (or elements) with their hierarchy to be inserted as
defined in the EDD
<BSGMLAppName string> The name of the SGML application associated with the document. For
information on registering SGML applications, see the online manual
FrameMaker Structure Application Developer’s Guide
<BSeparateInclusions boolean> Yes means structured FrameMaker lists inclusions separately in the
element catalog
<BFCLMaximums Upper change list limits. Format change lists cannot increment proper-
ties beyond these values
<PgfCellLMargin dimension> Minimum left cell margin for first paragraph in a cell
<PgfCellBMargin dimension> Minimum bottom cell margin for first paragraph in a cell
<PgfCellTMargin dimension> Minimum top cell margin for first paragraph in a cell
<PgfCellRMargin dimension> Minimum right cell margin for first paragraph in a cell
<BFCLMinimums Lower change list limits. Format change lists cannot decrement proper-
ties below these values
<PgfCellLMargin dimension> Minimum left cell margin for first paragraph in a cell
<PgfCellBMargin dimension> Minimum bottom cell margin for first paragraph in a cell
<PgfCellTMargin dimension> Minimum top cell margin for first paragraph in a cell
<PgfCellRMargin dimension> Minimum right cell margin for first paragraph in a cell
BookElements statement
The BookElements statement contains all of the elements in the book’s hierarchy. This statement must appear after
the BookComponent statements. Otherwise, the MIF interpreter warns you about out-of-bounds EComponent
values.
Syntax
<ElementEnd>
Usage
The ElementBegin and ElementEnd statements define elements that contain other elements.
The Element statement defines an element with no subelements. If the element is inserted in the book structure
from the Element Catalog, this statement includes only the ETag substatement. If the element corresponds to a book
component, this statement encodes the sequence number of the corresponding component file. If the element corre-
sponds to an unstructured component file, the ETag string value is empty. (For more information about structured
documents, see Using FrameMaker.)
ADOBE FRAMEMAKER 186
MIF Reference
MIF Messages
Invalid context specification: parameter.
There is a syntax error in an <EDContextSpec> statement in an element definition.
Duplicate definition: only first element definition for tag will be used.
Two or more element definitions use the same tag.
MathML statement
FrameMaker provides support for MathML, which is an XML application for representing mathematical notation.
This support is provided through out-of-the-box integration with MathFlow Editor by Design Science. FrameMaker
includes 30-day trial licenses of the following MathFlow editors: Style Editor and Structure Editor.
Following is a sample MIF tags snippet that shows MathML MIF syntax:
<MathML
<MathMLDataLen 489>
<MathMLData `'>
<ShapeRect 0.0" 0.0" 1.30666" 0.59999">
<BRect 0.0" 0.0" 1.30666" 0.59999">
<MathMLDpi 150>
<MathMLComposeDpi 300>
<MathMLfontSize 14>
<MathMLinLine Yes>
<MathMLApplyPgfStyle Yes>
<MathMLFlipLR No>
> # end of MathML
Syntax
<MathML
<MathMLData String> The actual data of XML representation of the MathML equation. Using the XML tags, the MIF
file displays the structure of the equation. For example:
<MathMLDpi integer> Scaling value for the image file created for the equation.
<MathMLComposeDpi inte- To show the equation corresponding to MathML FrameMaker creates a temporary image and
ger> this ComposeDpi is used to provide the resolution at the time of creation of that image.
<MathMLinLine boolean> Yes places the equation inline with the enclosing paragraph.
ADOBE FRAMEMAKER 189
MIF Reference
<MathMLApplyPgfStyle Yes applies the formats of the enclosing paragraph to the equation. Formats include, the font,
boolean> font family, background color, and foreground color.
Document statement
In addition to document preferences (see “Document statement” on page 89), the MIF Document statement
describes standard formats for equations. The equation formatting substatements correspond to settings in the
Equations palette.
Syntax
Equation sizes
<DMathSmallSigma dimension> Size in points of summation and product symbols in small equa-
tions
<DMathLargeSigma dimension> Size in points of summation and product symbols in large equa-
tions
<DMathSmallLevel1 dimension> Size in points of level 1 expression (normal level) in small equations
<DMathSmallLevel2 dimension> Size in points of level 2 expression (first level subscripts and super-
scripts) in small equations
<DMathSmallLevel3 dimension> Size in points of level 3 expression (second level subscripts and
superscripts) in small equations
<DMathShowCustom boolean> Specifies whether to show all math elements or only custom
elements in Insert Math Element dialog box
<D Math Cata log… > Describes custom math elements (see “DMathCatalog statement,”
next)
DMathCatalog statement
The DMathCatalog statement describes the custom math elements in a document. It must appear in a Document
statement.
Syntax
<DMathGreekOverrides tagstring> Identifies a redefined Greek symbol and forces lookup on reference
page; tagstring argument must match the name of reference
frame
<DMathOpTLineOverride boolean> No uses default glyph for operator; Yes looks up operator on text
line in reference frame
<DMathNewType keyword> Specifies custom math element type; for a list of types, see the
chapter on creating equations in your user’s manual
<DMathOpTLineOverride boolean> No uses default glyph for operator; Yes looks up operator on text
line in reference frame
Usage
You can define new math elements or redefine math elements that appear on the Equations palette. To create a
custom math element, add the element’s name and type to the DMathCatalog statement. On a reference page with
a name beginning with the word FrameMath, define the math element in a named unanchored graphic frame. In the
frame (called a reference frame), create a text line that contains one or more characters that represent the math
symbol; you can apply specialized math fonts and change the position of the characters to get the appearance you
want. You can use custom elements in equations by including them in a MathFullForm statement.
For example, to create a symbol for the set of real numbers, add the new element to the Math Catalog as follows:
<Document
<DMathCatalog
<DMathNew
# Name of new math element
<DMathOpName `Real Numbers'>
# Type of math element
<DMathNewType Atom >
> # end of DMathNew
> # end of DMathCatalog
> # end of Document
Define the custom element on a reference page that has a name beginning with FrameMath:
<Page
# Create a named reference page.
<PageType ReferencePage >
<PageTag `FrameMath1'>
# Create a named, unanchored frame.
<Frame
<FrameType NotAnchored >
<Tag `Real Numbers'>
...
# Create the math element in the first text line in the frame.
<TextLine
ADOBE FRAMEMAKER 192
MIF Reference
...
# Apply a specialized math font to the letter R.
<Font
<FTag `'>
<FFamily `MathematicalPi'>
<FVar `Six'>
<FWeight `Regular'>
> # end of Font
<String `R'>
> # end of TextLine
> # end of Frame
> # end of Page
To insert the new element in an equation, use the char expression (see page 197) and the element’s name in a
MathFullForm statement as shown in the following equation:
<MathFullForm `equal[in[forall[char[x]], comma[char[(*T"Real Numbers"T*)New],
times[char[f],id[char[x]]]]], indexes[1,0,char[x],num[3.00000000,"3"]]]'
> # end of MathFullForm
The equation looks like this in the FrameMaker document:
You can change the appearance of a built-in math element, although you cannot change the element’s type or
behavior. For example, to redefine the built-in inverse sine function (asin) so that it appears as sin-1, add the
redefined element to the Math Catalog as follows:
<DMathCatalog
<DMathOpOverrides
# The name of the built-in operator as it appears in MIF.
<DMathOpName `asin'>
# Forces lookup from the reference page.
<DMathOpTLineOverride Yes >
> # end of DMathOpOverrides
> # end of DMathCatalog
Redefine the appearance of the element in a reference frame as follows:
<Page
# Create a named reference page.
<PageType ReferencePage >
<PageTag `FrameMath1'>
# Create a named, unanchored frame.
<Frame
<FrameType NotAnchored >
...
# The name of the built-in element as it appears in
# the Equations palette.
<Tag `Inverse Sine'>
# Define the element in the first text line in the frame.
<TextLine
...
# Apply a new font style and position to change the
# appearance of the math element.
<Font
<FTag `'>
<FWeight `Regular'>
> # end of Font
<String `sin'>
<Font
ADOBE FRAMEMAKER 193
MIF Reference
<FTag `'>
<FWeight `Regular'>
<FPosition FSuperscript >
> # end of Font
<String `-1 '>
> # end of TextLine
> # end of Frame
> # end of Page
When you create the reference frame that specifies the new appearance of the math element, you must give the frame
the name of the built-in element as it appears in the Equations palette. To find the name of a built-in element, choose
Insert Math Element from the equations pop-up menu on the Equations palette. Turn off Show Custom Only in the
dialog box and scroll through the element names until you find the one you want.
To use the redefined element in an equation, include the asin expression (see page 202) along with the name of the
reference frame as follows:
<MathFullForm `asin[(*T"Inverse Sine"T*)char[x]]'
> # end of MathFullForm
For more information about including custom operators in equations, see “Custom operators” on page 211. For more
information about format codes, see “MathFullForm statement syntax” on page 195.
Math statement
A Math statement describes an equation within a document. It can appear at the top level or within a Page or Frame
statement.
Syntax
<Math
Generic object statements Information common to all objects (see “Generic object statements” on
page 112)
<ShapeRect L T W H> Position and size of bounding rectangle, before rotation, in enclosing
page or frame
Usage
Values of the ShapeRect statement specify the coordinates and size of the bounding rectangle before it is rotated.
The equation is rotated by the value specified in an Angle statement. The MathFullForm string defines the mathe-
matical properties of the equation. For a complete description, see “MathFullForm statement,” next.
Whenever you save a document as a MIF file using the Save As command, FrameMaker writes all the Math substate-
ments, except ObColor, to the file. It writes an ObColor statement only when the equation is in a color other than
black. The ObColor statement specifies the color for the entire equation object. To specify color for an individual
element within an equation, use the formatting code (*qstringq*) (see “MathFullForm statement syntax” on
page 195).
If you are writing an output filter for converting FrameMaker equations to a format used by another application, you
might be able to ignore some of the Math substatements. You don’ t need MIF statements for FrameMaker’s math
features that are unsupported by another application.
If you are writing an input filter for converting equations created with another application to FrameMaker equations,
you must provide a ShapeRect or MathOrigin substatement to specify the equation’ s location on the page. The
other Math substatements are not required. If you don’ t provide them, the MIF interpreter uses preset values. If you
don’ t define the equation in a MathFullForm statement, an equation prompt appears in the FrameMaker document.
MathFullForm statement
The MathFullForm statement consists of a string containing a series of expressions that define the mathematical
structure of an equation. Each expression defines a component of the equation and can be nested within other
expressions.
2
y = ax + b
<MathFullForm ` equal[char[y],times[char[a],power[id[plus[char[x],char[b]]],num[2,"2"]]]]'
> # end of MathFullForm
ADOBE FRAMEMAKER 195
MIF Reference
Formatting codes are enclosed within asterisk ( * ) delimiters. If an expression doesn’ t contain formatting codes, it
cannot contain asterisks. Formatting codes consist of a pair of flags enclosing a numeric value or string, except for
boolean flags, which are a single flag. For example, the following expression contains formatting codes that select a
display format and a boolean flag to set a manual line break point:
<MathFullForm `id[(*i2i*)char[x]]'>
String values in format codes must be enclosed in straight, double quotation marks ( " ). To include characters in the
extended ASCII range (above 0x127), use a backslash sequence (see “Character set in strings” on page 7).
You can use the following formatting codes, which can appear in any order. The default for all numeric values is 0.
b metric b Extra space at bottom of expression; corresponds to Spacing values in the Position Settings
dialog box
c integer c Alignment for horizontal lists and matrices (0=baseline, 1=top, 2=bottom)
j integer j Alignment for vertical lists and matrices (0=center, 1=left, 2=right,3=at equal symbol, 4=left of
equal symbol)
l metric l Extra space to left of expression; corresponds to Spacing values in the Position Settings dialog
box
r metric r Extra space to right of expression; corresponds to Spacing values in the Position Settings dialog
box
t metric t Extra space at top of expression; corresponds to Spacing values in the Position Settings dialog
box
When expressions have multiple display formats, there is one default format. Additional formats are numbered. For
example, the id expression has three display formats.
Atomic expressions
Atomic expressions are expressions that don’ t take other expressions as operands. They usually act as operands in
more complex expressions.
prompt
prompt is a placeholder to show an expression’ s undefined operands. Of the character formatting specifications,
only kerning values affect the appearance of a prompt.
Example MathFullForm statement
num
num describes a number. It always has two operands: the first shows the number as used for computations (internal
precision), and the second shows the number as displayed. When fewer digits are displayed than are used internally,
an ellipsis appears after the number.
Example MathFullForm statement
NaN means not a number. These forms of num usually result from computations.
string
string contains a character string. Character strings must be enclosed in straight, double quotation marks ( " ). To
include characters in the extended ASCII range (above 0x127), use a backslash sequence (see “Character set in
strings” on page 7). To include a straight, double quotation mark, precede the quotation mark with a straight, double
quotation mark.
Example MathFullForm statement
char
char describes a character.
The char expression can contain one of the letters a through z, one of the letters A through Z, a custom math
element, or one of the character names shown in the following table.
Example MathFullForm statement
··
x <MathFullForm ` char[x,0,0,2,0,0]' >
···
x <MathFullForm ` char[x,0,0,3,0,0]' >
The char expression can also describe composite diacritical marks. The following table contains examples.
Example MathFullForm statement
The diacritical expression places diacritical marks around multiple operands and describes two additional
diacritical marks. The diacritical expression describes the same marks that the char expression describes, but it
can take multiple operands. In addition, the diacritical expression describes two forms of diacritical mark not
described by the char expression. The following table shows examples of diacritical expressions.
Example MathFullForm statement
<MathFullForm `diacritical[4,0,0,0,0,char[x]]'>
x
<MathFullForm `diacritical[5,0,0,0,0,char[x]]'>
x
)
<MathFullForm
AB `diacritical[4,0,0,0,0,times[char[A],char[B]]]'>
Note: The diacritical expression is not backward compatible. When an earlier version (previous to 4.x) of
FrameMaker reads a MIF file saved in version 4 or later of FrameMaker, any equations that contain diacritical
expressions are lost. You should edit any MathFullForm statements that contain diacritical expressions before
opening the file in earlier versions of FrameMaker. For more information, see “Math statements” on page 264.
dummy
The dummy expression describes a dummy variable that you can use as a placeholder in equations. For example, in
the following equation, i is a dummy variable:
4
i 2 3 4
x = 1+x+x +x +x
i=0
The dummy expression has the same syntax as the char expression and can contain the same character symbols or
names.
Example MathFullForm statement
Operator expressions
Operator expressions take at least one expression as an operand. There are no restrictions on the complexity of
operator expressions, and they are not restricted by any concepts of domain or typing.
Unary operators
Unary operators have one expression as an operand. Three of the unary operators — id, lparen, and rparen — have
multiple display formats. The following table contains an example of each unary operator (in all of its display
formats) with char[x] as a sample operand.
Example MathFullForm statement
ln x <MathFullForm `ln[char[x]]'>
x <MathFullForm ` mp[char[x]]' >
Binary operators
Binary operators have two operand expressions. One of the binary operators, sn (scientific notation), has two display
formats. The following table contains an example of each binary operator with char[x] as a sample operand.
Example MathFullForm statement
N-ary operators
N-ary operators have two or more operand expressions. When one of these operators has more than two operands,
FrameMaker displays an additional operand symbol for each operand expression. For example, the following table
shows several forms of plus.
Example MathFullForm statement
1+2+3+4 <MathFullForm
` plus[num[1,"1"],num[2,"2"],num[3,"3"],num[4,"4"]]' >
ADOBE FRAMEMAKER 206
MIF Reference
The following table contains an example of each n-ary operator. Each example shows two operands.
Example MathFullForm statement
Large operators
Large operator expressions have one primary operand. In addition, they can have one or two range operands. The
following table contains an example of each large operator with only one operand with char[x] as a sample operand.
Example MathFullForm statement
Expressions with range operands have multiple display formats that change how operands are positioned around the
symbol. Extended unions and intersections have two display formats. The formats are the same for both expressions;
as an example, the following table shows the two display formats for an intersection with three operands:
Example MathFullForm statement
3 <MathFullForm
1 ` bigcap[num[1.0,"1"],num[2.0,"2"],num[3.0,"3"]]' >
2
3 <MathFullForm
2 1 ` bigcap[(*i1i*)num[1.0,"1"],num[2.0,"2"],num[3.0,"3"]]' >
Sums, products, and integrals have three display formats. The formats are the same for all of these operators; as an
example, the following table shows the display formats for an integral with three operands.
Example MathFullForm statement
x
a
dx
x x
<MathFullForm ` substitution[char[x],char[x]]' >
x dx
For partial and full differentials (such as ----- and ----- ), see page 205.
x dx
Indexes
There are three expressions for describing indexes: indexes, chem, and tensor.
indexes: The indexes expression describes any number of subscripts and superscripts. The first operand is the
number of superscripts and the second operand is the number of subscripts. Subsequent operands define the
subscripts and then the superscripts.
Note: Note that the number of superscripts is listed before the number of subscripts. However, superscript operands are
listed after subscript operands.
The following table contains an example of each indexes form.
Example MathFullForm statement
34 <MathFullForm
x 12 ` indexes[2,2,char[x],num[1,"1"],num[2,"2"],num[3,"3"],num[4,
"4"]]' >
chem: The chem expression defines pre-upper and pre-lower indexes, subscripts, and superscripts. Each position
can have one expression. The following table shows all possible forms of chem.
Example MathFullForm statement
1x
<MathFullForm ` chem[1,0,0,0,char[x],num[1,"1"]]' >
1x2
<MathFullForm ` chem[1,1,0,0,char[x],num[1,"1"],num[2,"2"]]' >
1 <MathFullForm
2x3 ` chem[1,1,1,0,char[x],num[1,"1"],num[2,"2"],num[3,"3"]]' >
1 2 <MathFullForm
3x ` chem[1,0,1,1,char[x],num[1,"1"],num[2,"2"],num[3,"3"]]' >
1 2 <MathFullForm
3x4 ` chem[1,1,1,1,char[x],num[1,"1"],num[2,"2"],num[3,"3"],num[4
,"4"]]' >
tensor: The tensor expression represents specially formatted tensor notation. The first operand describes the
position of the tensor indexes; subsequent operands define the indexes. The leftmost tensor index corresponds to
the least significant bit of the first operand in binary format; the rightmost index corresponds to the most significant
bit. 0 is the subscript position; 1 is the superscript position. The following table shows forms of tensor.
Example MathFullForm statement
1 <MathFullForm
x 23 ` tensor[1,char[x],num[1,"1"],num[2,"2"],num[3,"3"]]' >
23 <MathFullForm
x1 ` tensor[6,char[x],num[1,"1"],num[2,"2"],num[3,"3"]]' >
2 <MathFullForm
x1 3 ` tensor[2,char[x],num[1,"1"],num[2,"2"],num[3,"3"]]' >
1 3 <MathFullForm
x 2 ` tensor[5,char[x],num[1,"1"],num[2,"2"],num[3,"3"]]' >
ADOBE FRAMEMAKER 211
MIF Reference
3 <MathFullForm
x 12 ` tensor[4,char[x],num[1,"1"],num[2,"2"],num[3,"3"]]' >
12 <MathFullForm
x 3 ` tensor[3,char[x],num[1,"1"],num[2,"2"],num[3,"3"]]' >
Matrices
The matrix expression defines a matrix. The first operand is the number of rows in the matrix; the second operand
is the number of columns. Subsequent operands are expressions representing the elements of the matrix. The
elements are listed from left to right and from top to bottom. The matrix expression has an alternate display format.
The following table shows examples of matrix.
Example MathFullForm statement
<MathFullForm
1 2 3 ` matrix[2,3,num[1,"1"],num[2,"2"],num[3,"3"],num[4,"4"],num[
4 5 6 5,"5"],num[6,"6"]]' >
<MathFullForm
1 2 ` matrix[3,2,num[1,"1"],num[2,"2"],num[3,"3"],num[4,"4"],num[
3 4 5,"5"],num[6,"6"]]' >
5 6
Custom operators
The following expressions allow you to use custom operators that have been defined on a math reference page:
Expression Definition
The expressions that insert new custom operators must include the name of the custom operator from the reference
page. For example, suppose a document has a custom operator MyFunction that is added to the DMathCatalog
statement as follows:
<DMathCatalog
<DMathNew
ADOBE FRAMEMAKER 212
MIF Reference
Sample equations
The following examples show MathFullForm statements for complete equations.
Example 1
2
b b – 4ac-
x = –--------------------------------------
2a
<MathFullForm
` equal[char[x],over[plus[minus[char[b]],pm[sqrt[plus[power[char[b],num[2,"2"]],minus[times
[num[4,"4"],char[a],char[c]]]]]]],times[num[2,"2"],char[a]]]]' >
213
Syntax
<MIFEncoding ` ‘> # originally written as Japanese (Shift-JIS)
<MIFEncoding ` ‘> # originally written as Japanese (EUC)
To determine which encoding was used, each MIF file that contains Chinese text must include a MIFEncoding
statement near the beginning of the file. It must appear before any Chinese text in the file. The string value in the
MIFEncoding statement is the Chinese spelling of the word “Chinese”. FrameMaker reads this fixed string and deter-
mines what the hexadecimal encoding is for it. From that, FrameMaker expects the same encoding to be used for all
subsequent Asian text in the document.
To see the characters spelling the word “Chinese”, you must view the MIF file on a system that is enabled for Chinese
character display. When the MIF is displayed on a Roman system, the characters appear garbled.
Syntax
<MIFEncoding ` ‘> # originally written as Traditional Chinese (Big5)
<MIFEncoding ` ‘> # originally written as Traditional Chinese (CNS)
<MIFEncoding ` ‘> # originally written as Simplified Chinese
Syntax
<MIFEncoding ` ‘> # originally written as Korean
Combined Fonts
Combined fonts assign two component fonts to one combined font name. This is done to handle both an Asian font
and a Western font as though they are in one font family. In a combined font, the Asian font is the base font, and the
Roman font is the Western font. For example, you can create a combined font named Mincho-Palatino that uses
Mincho for Asian characters and switches to Palatino for Roman characters.
When reading a MIF paragraph that uses Mincho-Palatino, FrameMaker displays Asian characters in Mincho and
Roman characters in Palatino. If the Mincho font is not installed on the user’s system, FrameMaker displays the Asian
text in a font that uses the same character encoding as Mincho.
CombinedFontCatalog statement
Combined fonts are defined for the document in the CombinedFontCatalog statement. For each combined font,
there is a CombinedFontDefn statement that specifies the combined font name and identifies the Asian and the
Roman component fonts. Note that the combined font catalog must precede the first PgfFont and Font statements
in the document.
Syntax
<CombinedFontCatalog
ADOBE FRAMEMAKER 215
MIF Reference
Example
The following is an example of a combined font catalog:
<CombinedFontCatalog
<CombinedFontDefn
<CombinedFontName `MyCombinedFont'>
<CombinedFontBaseFamily `Osaka'>
<CombinedFontWesternFamily `Times'>
<CombinedFontWesternSize 75.0%>
<CombinedFontWesternShift 0.0%>
<CombinedFontBaseEncoding `JISX0208.ShiftJIS'>
<CombinedFontAllowBaseFamilyBoldedAndObliqued Yes>
> # end of CombinedFontDefn
> # end of CombinedFontCatalog
FCombinedFontName is a new statement to express the combined font name. The FFamily statement expresses the
base font’s family name.
The FPostScriptName and FPlatformName statements all refer to the base font. The following new statements have
been added to express the corresponding values for the Roman font:
• FWesternPostScriptName
• FWesternPlatformName
Syntax
<PgfFont
<FCombinedFontName string> The name of the combined font, as defined in the combined font
catalog
<FEncoding string> Specifies the encoding for the base font. This is to specify the
encoding for a double-byte font. If not present, the default is
Roman.
Example
The following is an example of a combined font in a Para statement:
<Para
<Unique 996885>
<PgfTag `Body'>
<ParaLine
<Font
<FTag `'>
<FPlatformName `M.Osaka.P'>
<FWesternPlatformName `M.Times.P'>
<FFamily `Osaka'>
<FCombinedFontName `MyCombinedFont'>
<FEncoding `JISX0208.ShiftJIS'>
<FLocked No>
> # end of Font
<String `CombinedFontStatement '>
<Font
<FTag `'>
<FPlatformName `M.Osaka.P'>
<FWesternPlatformName `M.Times.P'>
<FFamily `Osaka'>
<FCombinedFontName `MyCombinedFont'>
ADOBE FRAMEMAKER 217
MIF Reference
<FWeight `Medium'>
<FEncoding `JISX0208.ShiftJIS'>
<FLanguage Japanese>
<FLocked No>
> # end of Font
<String ` '>
> # end of ParaLine
> # end of Para
Kumihan Tables
Kumihan tables specify line composition rules for Japanese documents. FrameMaker uses standard JIS 4051
Kumihan rules by default. In most cases, the JIS standard is fine, but there are cases where corporate standards might
differ from the JIS rules.
Kumihan tables are associated with a document. To customize the Kumihan tables for a document, you specify the
tables in MIF. Then you can import the MIF into an existing document, or into a template you will use to create new
documents.
The 25 numerical values for the BegParentheses statement specify the actions FrameMaker takes when a
character from each of the 25 classes, such as an ending parenthesis character, follows a character in the BegParen-
theses class. The position of each numerical value after the BegParentheses statement specifies the class. For
example, the first position is the BegParentheses class, the EndParentheses class is the second position, and so
on. If a numerical value of 0 is specified, FrameMaker allows a line break between a character the BegParentheses
class and a character in the class specified in that position in the statement. If a value of 1 is specified, FrameMaker
does not allow a line break.
BaseCharWithSuper
ParenBeginWariChu
NonSeparableChar
SucceedingSymbol
BaseCharWithRubi
NoLineBeginChar
PrecedingSymbol
ParenEndWariChu
BegParentheses
EndParentheses
CenteredPunct
QuestionBang
PeriodComma
AsianSpace
UnitSymbol
RomanSpace
RomanChar
Hiragana
Numeral
Others
Spare1
Spare2
Spare3
Spare4
Spare5
<BegParentheses 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1
The column position of each numerical value in the statement specifies the action to
take for each class.
In the preceding example, a line break does not occur between a character in the BegParentheses class and a
character in the EndParentheses class because the value 1 is in the second position, which is the column position
for the EndParentheses class of characters. For more information on the LineBreakTable statement, see
“LineBreakTable statement” on page 224.
KumihanCatalog statement
The KumihanCatalog statement begins the Kumihan table specification for the document. Note that the Kumihan
catalog is not included in the <Document> block, but is in a block of its own.
Each Asian language can have its own Kumihan tables. This means that one Kumihan catalog can have up to four
sets of tables, one set for each of the four supported Asian languages (Japanese, Traditional Chinese, SimpleChinese,
and Korean).
ADOBE FRAMEMAKER 219
MIF Reference
Syntax
<KumihanCatalog
...
<Kumihan Additional Kumihan table sets as needed (one for each Asian
language - up to four per document)
...
Kumihan statement
The Kumihan statement defines a set of Kumihan tables. A document can have one set of tables for each of the four
supported Asian languages.
Syntax
...
...
...
...
CharClass statement
The CharClass statement assigns individual characters to one of 25 classes. The JIS standard recognizes 20 classes,
and MIF includes an additional five classes (Spare1 through Spare5) so you can assign characters custom character
classes.
MIF Statement Column Description
Position
<CharClass
ADOBE FRAMEMAKER 220
MIF Reference
<NonSeparableChar chars> 7 Characters that cannot have line breaks between them
<BaseCharWithSuper chars> 13 FrameMaker uses this class to allow spreading between the end of
a footnote and the next character. Do not assign any characters to
this class.
<BaseCharWithRubi chars> 14 The rubi block, including oyamoji and rubi text. This class has to do
with Rubikake and Nibukake rules that specify how to handle
spacing between a rubi block and an adjacent character.
<ParenBeginWariChu chars> 19 The current version of FrameMaker does not support Warichu; this
class is not used by FrameMaker
<ParenEndWariChu chars> 20 The current version of FrameMaker does not support Warichu; this
class is not used by FrameMaker
Usage
Assigning characters to a class identifies them in the succeeding tables so the various typographical rules can be
specified for each class of character.
Any character that is not assigned to a class is automatically assigned to the <Others> class. When specifying classes,
you should not assign any characters to <Others>. In fact, it is not necessary to include a MIF statement for
<Others>. In the following tables, the 12th column position corresponds to the <Others> class.
If you are using Asian system software, you can enter the characters for each class directly in a text file.
Example
The following is an example of a portion of a CharClass statement:
<CharClass
<BegParentheses ` '>
<EndParentheses ` '>
<NoLineBeginChar ` '>
...
> # end of CharClass
SqueezeTable statement
The SqueezeTable statement defines how to compress the space surrounding characters of each class. Note that
each character is rendered within a specific area. For Asian characters, this area is the same for each character. These
rules determine how to compress this area for optimum line rendering.
Syntax
<SqueezeTable
0 - No squeeze
1 - Half squeeze from top or left
2 - Half squeeze from bottom or right
3 - Quarter squeeze from all sides
4 - Same as 3, but do not apply vertical squeeze to a semicolon
5 - This character pair should not have occurred
ADOBE FRAMEMAKER 222
MIF Reference
Usage
The SqueezeHorizontal and SqueezeVertical statements include 25 numerical values, one for each character
class. The values are separated by a space. An example of a squeeze table statement is:
<SqueezeTable
BaseCharWithSuper
ParenBeginWariChu
NonSeparableChar
SucceedingSymbol
BaseCharWithRubi
NoLineBeginChar
PrecedingSymbol
ParenEndWariChu
BegParentheses
EndParentheses
CenteredPunct
QuestionBang
PeriodComma
AsianSpace
UnitSymbol
RomanSpace
RomanChar
Hiragana
Numeral
Others
Spare1
Spare2
Spare3
Spare4
Spare5
<SqueezeHorizontal 1 1 2 0 0 3 2 0 0 0 0 0 0 0 5 0 0 0 1 2 0 0 0 0 0
<SqueezeVertical 1 2 0 0 4 2 0 0 0 0 0 0 0 5 0 0 0 1 2 0 0 0 0 0 0
> # end of SqueezeTable
In the preceding example, the SqueezeHorizontal value for a character in the NoLineBeginChar class is 2, which
specifies half squeeze from the right.
SpreadTable statement
The SpreadTable statement defines how to reduce the squeeze that was applied to adjacent characters. There are 25
statement rows in this table, each corresponding to the 25 character classes, respectively.
There are 26 numeric values in each statement row. The first 25 values correspond to the 25 character classes, respec-
tively. The 26th value corresponds to the beginning or end of a line. These values specify how to spread a character
of the class identified by the row statement, when followed by a character in the class identified by the column
position in the statement.
Syntax
<SpreadTable
<BegParentheses numerals>
<EndParentheses numerals>
<NoLineBeginChar numerals>
<QuestionBang numerals>
<CenteredPunct numerals>
<PeriodComma numerals>
<NonSeparableChar numerals>
<PrecedingSymbol numerals>
<SucceedingSymbol numerals>
<AsianSpace numerals>
<Hiragana numerals>
<Others>
ADOBE FRAMEMAKER 223
MIF Reference
<BaseCharWithSuper numerals>
<BaseCharWithRubi numerals>
<Numeral numerals>
<UnitSymbol numerals>
<RomanSpace numerals>
<RomanChar numerals>
<ParenBeginWariChu numerals>
<ParenEndWariChu numerals>
<Spare1 numerals>
<Spare2 numerals>
<Spare3 numerals>
<Spare4 numerals>
<Spare5 numerals>
0 - No spread
1 - Spread the first character of the pair by 1/2 em
2 - Spread the second character of the pair by 1/2 em
3 - Spread the first character of the pair by 1/4 em
4 - Spread the second character of the pair by 1/4 em
5 - Spread both characters of the pair by 1/4 em
6 - Spread the first character by 1/2 em and the second character by 1/4 em
7 - Add spread to the first character of an Asian/Roman character pair
8 - Add spread to the second character of a Roman/Asian character pair
9 - Delete the first occurance of the two spaces; for example, delete the first of two adjacent Roman space characters
10 - Nibukake - Rubi may extend over the preceding nibukake, but it cannot exceed the nibukake; add space to the first oyamoji
character
11 - Nibukake - Rubi may extend over the following nibukake, but it cannot exceed the nibukake; add space to the last oyamoji
character
12 - Allow rubi text to extend over oyamoji character when betagumi; no space is added
13 - Place oyamoji character with rubi based on the standard rule
14 - Double yakumono - Double yakumono rule is applied
15 - This character pair should not have occurred
ADOBE FRAMEMAKER 224
MIF Reference
Usage
Each statement row in the spread table includes 26 numerical values, one for each character class, and an added value
for the characters at the beginning or the end of a line. The values are separated by a space. An example of a spread
table is:
<SpreadTable
BaseCharWithSuper
ParenBeginWariChu
NonSeparableChar
SucceedingSymbol
BaseCharWithRubi
NoLineBeginChar
PrecedingSymbol
ParenEndWariChu
BegParentheses
EndParentheses
CenteredPunct
QuestionBang
PeriodComma
AsianSpace
UnitSymbol
RomanSpace
RomanChar
Hiragana
Numeral
Others
Spare1
Spare2
Spare3
Spare4
Spare5
<BegParentheses 1 0 0 0 4 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1
4 2 5 5
<EndParentheses 1 1 1 1 4 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1
4 4 0 5
> # end of SpreadTable
In the preceding example, no spread occurs between a character in the BegParentheses class and a character in
the QuestionBang class because the value 0 (No spread) is in the fourth position, which is the column position for
the QuestionBang class of characters.
LineBreakTable statement
The LineBreakTable statement defines how to break lines between characters. There are 25 statement rows in this
table, each corresponding to the 25 character classes, respectively.
There are 25 numeric values in each statement row. Each value corresponds to one of the 25 character classes, respec-
tively. These values specify how to break a line after a character of the class identified by the row statement, when
followed by a character of the class identified by the column position.
Syntax
<LineBreakTable
<BegParentheses numerals>
<EndParentheses numerals>
<NoLineBeginChar numerals>
<QuestionBang numerals>
<CenteredPunct numerals>
<PeriodComma numerals>
<NonSeparableChar numerals>
<PrecedingSymbol numerals>
<SucceedingSymbol numerals>
<AsianSpace numerals>
ADOBE FRAMEMAKER 225
MIF Reference
<Hiragana numerals>
<Others>
<BaseCharWithSuper numerals>
<BaseCharWithRubi numerals>
<Numeral numerals>
<UnitSymbol numerals>
<RomanSpace numerals>
<RomanChar numerals>
<ParenBeginWariChu numerals>
<ParenEndWariChu numerals>
<Spare1 numerals>
<Spare2 numerals>
<Spare3 numerals>
<Spare4 numerals>
<Spare5 numerals>
Usage
Each statement row in the line break table includes 25 numerical values, one for each character class. The values are
separated by a space. An example of a line break table is:
<LineBreakTable
BaseCharWithSuper
ParenBeginWariChu
NonSeparableChar
SucceedingSymbol
BaseCharWithRubi
NoLineBeginChar
PrecedingSymbol
ParenEndWariChu
BegParentheses
EndParentheses
CenteredPunct
QuestionBang
PeriodComma
AsianSpace
UnitSymbol
RomanSpace
RomanChar
Hiragana
Numeral
Others
Spare1
Spare2
Spare3
Spare4
Spare5
<BegParentheses 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 0 0 0 0 0
<EndParentheses 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
...
> # end of LineBreakTable
ADOBE FRAMEMAKER 226
MIF Reference
In the preceding example, a line break can occur between a character in the EndParentheses class and a character
in the NonSeparableChar class because the value 0 (Line break is allowed) is in the seventh position, which is the
column position for the NonSeparableChar class of characters.
ExtraSpaceTable statement
The ExtraSpaceTable statement defines how to add extra space between characters when needed for full justifi-
cation. There are 25 statement rows in this table, each corresponding to the 25 character classes, respectively.
There are 25 numeric values in each statement row. Each value corresponds to one of the 25 character classes, respec-
tively. These values specify how to add space after a character of the class identified by the row statement, when
followed by a character of the class identified by the column position.
Syntax
<ExtraSpaceTable
<BegParentheses numerals>
<EndParentheses numerals>
<NoLineBeginChar numerals>
<QuestionBang numerals>
<CenteredPunct numerals>
<PeriodComma numerals>
<NonSeparableChar numerals>
<PrecedingSymbol numerals>
<SucceedingSymbol numerals>
<AsianSpace numerals>
<Hiragana numerals>
<Others>
<BaseCharWithSuper numerals>
<BaseCharWithRubi numerals>
<Numeral numerals>
<UnitSymbol numerals>
<RomanSpace numerals>
<RomanChar numerals>
<ParenBeginWariChu numerals>
<ParenEndWariChu numerals>
<Spare1 numerals>
<Spare2 numerals>
ADOBE FRAMEMAKER 227
MIF Reference
<Spare3 numerals>
<Spare4 numerals>
<Spare5 numerals>
Usage
Each statement row in the extra space table includes 25 numerical values, one for each character class. The values are
separated by a space. An example of a extra space table is:
<ExtraSpaceTable
BaseCharWithSuper
ParenBeginWariChu
NonSeparableChar
SucceedingSymbol
BaseCharWithRubi
NoLineBeginChar
PrecedingSymbol
ParenEndWariChu
BegParentheses
EndParentheses
CenteredPunct
QuestionBang
PeriodComma
AsianSpace
UnitSymbol
RomanSpace
RomanChar
Hiragana
Numeral
Others
Spare1
Spare2
Spare3
Spare4
Spare5
<BegParentheses 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 6 1 1 1 1 1
<EndParentheses 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1
...
> # end of ExtraSpaceTable
In the preceding example, a extra space is not allowed between a character in the EndParentheses class and a
character in the CenteredPunct class because the value 1 (Extra space is not allowed) is in the fifth position, which
is the column position for the CenteredPunct class of characters.
Rubi text
Rubi text is a Japanese system for representing the pronunciation of words as a string of phonetic characters
(hiragana) directly above the word in question (oyamoji). A MIF file includes document-level statements that
describe the settings made in the Rubi Properties dialog box, as well as MIF statements for a rubi composite.
A rubi composite includes both oyamoji text and rubi text. If the document is structured, the rubi composite
contains an object tagged RubiGroup, the oyamoji text, an element tagged Rubi, and the rubi text.
ADOBE FRAMEMAKER 228
MIF Reference
Document statement
In addition to document preferences (see “Document statement” on page 89), the MIF Document statement
describes standard formats for rubi text. The rubi formatting substatements correspond to settings in the Rubi
Properties dialog box.
Syntax
<DRubiSize percentage> The size of the rubi characters, proportional to the size of the
OR oyamoji characters
<DRubiFixedSize point size The fixed size of the rubi characters in points only.
<DRubiAlignAtBounds boolean> Yes aligns all rubi and oyamoji characters at line boundaries
Example
<Document
. . .
<DRubiSize 50%>
<DRubiOverhang Yes>
<DRubiAlignAtBounds Yes>
<DWideSpaceForJapanese Proportional>
ADOBE FRAMEMAKER 229
MIF Reference
<DNarrowSpaceForJapanese Proportional>
<DWideSpaceForOther Narrow>
<DNarrowSpaceForOther Narrow>
. . .
> # end of Document
RubiCompositeBegin statement
The RubiCompositeBegin statement is always matched with a RubiCompositeEnd statement. Between them are
the contents of the rubi composite; the oyamoji and the rubi text. A rubi composite can occur anywhere in a
Paraline statement. Also, anything that can occur within a Paraline, except another rubi composite, can also
occur between the RubiCompositeBegin and RubiCompositeEnd statements.
In a structured document, the rubi composite includes a RubiGroup element and a Rubi element.
Syntax
Example - unstructured
<Paraline
<String ` kumihan '>
. . .
<RubiCompositeBegin
<String ` '>
<RubiTextBegin
<String ` '>
<RubiTextEnd >
<RubiCompositeEnd >
> # end of ParaLine
Example - structured
<Paraline
<String ‘Some text ’>
. . .
<RubiCompositeBegin
<Element
<Unique 123456>
ADOBE FRAMEMAKER 230
MIF Reference
<ETag ‘RubiGroup’>
<Attributes
. #. . Typical MIF to define attributes
> # end of Attributes
<Collapsed No>
<SpecialCase No>
<AttributeDisplay AllAttributes>
> # end of Element
> # end of RubiCompositeBegin
<String ‘Oyamoji text’>
<RubiTextBegin
<Element
<Unique 123457>
<ETag ‘Rubi’>
<Attributes
. #. . Typical MIF to define attributes
> # end of Attributes
<Collapsed No>
<SpecialCase No>
<AttributeDisplay AllAttributes>
> # end of Element
<String ‘Rubi text’>
<RubiTextEnd>
<RubiCompositeEnd>
<String ‘Some more text ’>
. . .
> # end of Paraline
231
Chapter 8: Examples
The examples in this appendix show how to describe text and graphics in MIF files. (The current examples are valid
only for unstructured documents.) You can import the MIF file into an existing Adobe® FrameMaker® template, or
you can open the MIF file as a FrameMaker document. In either case, if you save the resulting document in MIF
format, you will create a complete description of the document—not just the text or graphics.
If you find any MIF statement difficult to understand, the best way to learn more is to create a sample file that uses
the statement. Use FrameMaker to edit and format a document that uses the MIF feature and then save the document
as a MIF file. Examine the MIF file with any standard text editor.
The examples in this appendix are provided online.
For FrameMaker on this platform Look here
Text example
This example shows a simple text file and the MIF file that describes it. If you are writing a filter program to convert
text files to MIF, your program should create a similar MIF file. The following text file was created with a text editor:
MIF (Maker Interchange Format) is a group of statements that describe all text and
graphics understood by FrameMaker in an easily parsed, readable text file. MIF
provides a way to exchange information between FrameMaker and other applications
while preserving graphics, document structure, and format.
You can write programs that convert graphics or documents into a MIF file and then
import the MIF file into a FrameMaker document with the graphics and document
formats intact.
A filter program translated the text file to produce the following MIF file:
<MIFFile 2015> # Identifies this as a MIF file.
# The macros below are used only for the second paragraph
of
# text, to illustrate how they can ease the process of
# MIF generation.
define(pr,` <Para ' )
define(ep,` > ' )
define(ln,`<ParaLine <String ' )
define(en,`>> ' )
# First paragraph of text.
<Para
#
# <PgfTag> statement forces a lookup in the document’s
# Paragraph Catalog, so you don’t have to specify the
format
# in detail here.
<PgfTag `Body ' >
ADOBE FRAMEMAKER 232
MIF Reference
#
# One <ParaLine> statement for each line in the
paragraph.
# Line breaks don’t matter; the MIF interpreter adjusts
line
# breaks when the file is opened or imported.
<ParaLine
<String `MIF (Maker Interchange format) is a group of '>
>
<ParaLine
<String ` statements that describe all text and graphics '>
>
<ParaLine
<String `understood by FrameMaker in an easily parsed, '>
>
<ParaLine
<String ` readable text file. MIF provides a way to exchange '>
>
<ParaLine
<String `information between FrameMaker and other ' >
>
<ParaLine
<String `applications while preserving graphics, document '>
>
<ParaLine
<String `structure, and format. ' >
>
> # end of Para
#
# Second paragraph of text.Macros defined earlier are
used
# here.
# This paragraph inherits the format of the previous one,
# since there’s no PgfTag or Pgf statement to override
it.
pr
ln `You can write programs that convert graphics or documents' en
ln `into a MIF file and then import the MIF file into a FrameMaker' en
ln `document with the graphics and document formats intact.' en
ep
# End of MIF File
To draw the bar chart, you open or import the MIF file in FrameMaker. Normally, you would create an anchored
frame in a document, select the frame, and then import this file. The MIF statements to describe the bar chart can
be created by a database publishing application that uses the values in a database to determine the size of the bars.
Market Shares
100% Brand F
Brand I
75%
50%
25%
# Now draw all the black bars, since they have the same
fill.
# Set the fill for the first bar; the others inherit the
fill
# pattern.
<Rectangle <GroupID 1>
<Fill 1>
<ShapeRect 1.10" 1.97" 0.13" 0.38">
>
<Rectangle <GroupID 1>
<ShapeRect 1.60" 1.72" 0.13" 0.63">
>
<Rectangle <GroupID 1>
<ShapeRect 2.10" 1.22" 0.13" 1.13">
>
<Rectangle <GroupID 1>
<ShapeRect 2.60" 0.85" 0.13" 1.50">
>
# Define the group for all the objects to make the chart
easier
# to
# manipulate after it's imported into a FrameMaker
document.
<Group <ID 1>
>
<PenWidth .5>
<Fill 0>
# Draw the black arc.
# All arcs are part of the same circle, so they have the
same
# ArcRect.
# All objects in the chart are grouped, so they have the
same
# Group ID.
<Arc <GroupID 1>
<ArcRect 12 11 144 144 > <ArcTheta 0> <ArcDTheta 58>
>
# Continue clockwise around the chart.
<Arc <Fill 5> <GroupID 1>
<ArcRect 12 11 144 144 > <ArcTheta 58> <ArcDTheta 77>
>
<Arc <Fill 2> <GroupID 1>
<ArcRect 12 11 144 144 > <ArcTheta 135> <ArcDTheta 108>
>
<Arc <Fill 4> <GroupID 1>
<ArcRect 12 11 144 144 > <ArcTheta 243> <ArcDTheta 66>
>
<Arc <Fill 6> <GroupID 1>
<ArcRect 12 11 144 144 > <ArcTheta 309> <ArcDTheta 51>
>
# Define the group for all the objects to make the chart
easier
# to manipulate after it’s imported into a FrameMaker
# document.
<Group <ID 1> >
<PolyLine
<DashedPattern
<DashedStyle Dashed>
<NumSegments 2>
<DashSegment 0.5pt>
<DashSegment 20pt>
> # end of DashedPattern
# The polyline inherits round head caps and tail caps
from
# the previous PolyLine statement.
<NumPoints 2>
<Point 1.0" 2">
<Point 7.5" 2">
> # end of PolyLine
# This is a wild one!
<PolyLine
<DashedPattern
<DashedStyle Dashed>
<NumSegments 8>
<DashSegment 4pt> # solid
<DashSegment 8pt>
<DashSegment 12pt> # solid
<DashSegment 16pt>
<DashSegment 20pt> # solid
<DashSegment 24pt>
<DashSegment 20pt> # solid
<DashSegment 16pt>
<DashSegment 12pt> # solid
<DashSegment 8pt>
> # end of DashedPattern
<HeadCap Butt>
<TailCap Butt>
<NumPoints 2>
<Point 1.0" 3">
<Point 7.5" 3">
> # end of PolyLine
# This one has a missing DashSegment statement, so the
first
# 10-point segment is repeated with a default gap of 10
points.
<PolyLine
<DashedPattern
<DashedStyle Dashed>
# Missing NumSegments.
<DashSegment 10pt>
# Missing a second DashSegment.
>
# This polyline inherits the butt cap and tail style
# from the previous PolyLine statement.
<NumPoints 2>
<Point 1.0" 4">
<Point 7.5" 4">
> # end PolyLine
# This one is a really dense dotted line.
<PolyLine
<DashedPattern
<DashedStyle Dashed>
<DashSegment 1pt>
<DashSegment 1pt>
>
# This polyline also inherits the butt cap and tail style
ADOBE FRAMEMAKER 238
MIF Reference
Table examples
You can use MIF to create a table or to update a few values in an existing table.
Table 2: StockWatch
<TblColumn
<TblColumnNum 1>
# Make 2nd column 1 inch wide. This establishes a minimum
# width for the columns.
<TblColumnWidth 1">
>
<TblColumn
<TblColumnNum 2>
# Shrink-wrap the third column to the width of its
heading
# cell.
# See CellAffectsColumnWidthA statement below.
<TblColumnWidthA 0 2">
>
> # end of TblFormat
# The table instance has three columns.
<TblNumColumns 3>
<EqualizeWidths
# Make the width of the second and third columns equal to
# the larger of the two. However, the columns cannot be
wider
# than 2 inches or narrower than 1 inch.
<TblColumnNum 1>
<TblColumnNum 2>
> # end of EqualizeColWidth
<TblTitle
<TblTitleContent
<Para
# Forces lookup in Paragraph Catalog.
<PgfTag `TableTitle'>
<ParaLine
<String `StockWatch'>
> # end of ParaLine
> # end of Para
> # end of TblTitleContent
> # end of TblTitle
<TblH # The heading.
<Row # The heading row.
<Cell <CellContent <Para # Cell in column 0.
<PgfTag `CellHeading'> # Forces lookup in Paragraph Catalog.
<ParaLine <String `Mining and Metal'>>>>
> # end of Cell
<Cell <CellContent <Para # Cell in column 1
<PgfTag `CellHeading'> # Forces lookup in Paragraph Catalog.
<ParaLine <String `10/31/90 Close'>>>>
> # end of Cell
<Cell <CellContent <Para # Cell in column 2
<PgfTag `CellHeading'> # Forces lookup in Paragraph Catalog.
<ParaLine <String `Weekly %'> <Char HardReturn>>
<ParaLine <String `Change'>>>>
# For shrink-wrap.
<CellAffectsColumnWidthA Yes>
> # end of Cell
> # end of Row
> # end of TblH
<TblBody # The body.
<Row # The first body row.
<Cell <CellContent <Para
<PgfTag `CellBody'> # Forces lookup in Paragraph Catalog.
<ParaLine <String `Ace Aluminum'>>>>
> # end of Cell
ADOBE FRAMEMAKER 240
MIF Reference
<VariableFormat
<VariableName `91 Revenue'>
<VariableDef `3,145,365'>
>>
When you import the MIF file into the document that contains the table, FrameMaker updates the variables in the
table.
Database publishing
This database publishing example shows how to use the data storage and manipulation capabilities of a database and
the formatting capabilities of FrameMaker through MIF.
In this example, inventory information for a coffee distributor is stored in a database. Database fields contain a
reference number, the type of coffee, the number of bags in inventory, the current inventory status, and the price per
bag. A sales representative creates an up-to-date report on the coffee inventory by using a customized dialog box in
the database application to select the category of information and sort order:
ADOBE FRAMEMAKER 242
MIF Reference
When the sales representative clicks Publish, a database procedure scans the database, retrieves the requested infor-
mation, and writes a MIF file that contains all of the information in a fully formatted document. The final document
looks like this:
The data from the database is published as a FrameMaker table. The database procedure makes one pass through the
records in the database and writes the contents of each record in a row of the table. The procedure then creates a
TextFlow statement that contains the text that appears above the table and creates an ATbl statement to refer to the
table instance.
You can set up a report generator like the previous example by following these general steps:
1 Create the template for the final report in FrameMaker. Design the master pages and body pages for the
document and create paragraph and character formats. You can include graphics (such as a company logo) on the
master page.
2 Create a table format for the report. Specify the table position, column format, shading, and title format. Store
the format in the Table Catalog.
3 When the document has the appearance you want, save it as a MIF file.
4 Edit the MIF file to create a MIF template that you can include in your generated MIF file (see “Including
template files” on page 45). The MIF template used for this example is in the sample file coffee.mif.
5 Use your database to create any custom dialog boxes or report-generating procedures.
6 Create a database query, or procedure, that extracts data from the database and writes it out into a MIF file. Use
a MIF include statement to include the document template in the new document.
The database user can now open a fully formatted report.
ADOBE FRAMEMAKER 243
MIF Reference
The code for the procedure that extracts information from the database and outputs the MIF strings is shown in this
appendix. This procedure is written in the ACIUS 4th DIMENSION command language. You could use any database
query language to perform the same task.
The procedure does the following:
7 Creates a new document.
8 Sends the MIFFile identification line.
9 Uses include to read in the formatting information stored in the template coffee.mif.
10 Sends the MIF statements to create a table instance.
11 In each body cell, sends a field that includes the information extracted from the database.
12 Creates a text flow that uses the TextRectID from the empty body page in the coffee.mif template.
13 Includes the Atbl statement that places the table instance in the document text flow.
14 Closes the document.
In the following example, database commands are shown like this: SEND PACKET. Comments are preceded by a
single back quote (`). Local variables are preceded by a dollar sign ($).
`This procedure first gets the information entered by the user and stores it in local variables:
` $1 = Name of sales representative
` $2 = Phone number
` $3 = Discount
CR:=char(13) ` carriage return character
DQ:=char(34) ` double quotation mark character
C_TIME(vDoc)
CLOSE DOCUMENT(vDoc)
vDoc:=Create document("")
vDisc:=1-(Num($3»)/100)
`Send header.
SEND PACKET(vDoc;"<MIFFile 2015> #Generated by 4th Dimension for Version 7.0 of
FrameMaker"+CR)
`Read in the MIF template for the report.
SEND PACKET(vDoc;"include (coffee.mif)"+CR)
`Generate table.
ADOBE FRAMEMAKER 244
MIF Reference
`Number'>"+CR)
SEND PACKET(vDoc;"<ParaLine <String
`"+String([Inventory]Bags;"###")+"'>>>>>"+CR)
SEND PACKET(vDoc;"<Cell "+vFill+" <CellContent <Para <PgfTag `Body'>"+CR)
SEND PACKET(vDoc;"<ParaLine <String `"+[Inventory]Status+"'>>>>>"+CR)
SEND PACKET(vDoc;"<Cell "+vFill+" <CellContent <Para <PgfTag
`Number'>"+CR)
SEND PACKET(vDoc;"<ParaLine <Conditional <InCondition `Retail'>>"+CR)
SEND PACKET(vDoc;"<String `"+String([Inventory]Price per Bag;"$#,###.00")+"'>")
SEND PACKET(vDoc;"<Conditional <InCondition `Discount'>>"+CR)
SEND PACKET(vDoc;"<String `"+String(vDiscPrice;"$###,###.00")+"'> "+CR)
SEND PACKET(vDoc;"<Unconditional> >>>>>"+CR)
MESSAGE("Generating MIF for "+[Inventory]Name+", Status:
"+[Inventory]Status+".")
NEXT RECORD([Inventory])
End for
SEND PACKET(vDoc;">>>"+CR) `End of table.
`Body of page.
SEND PACKET(vDoc;"<TextFlow <TFTag `A'> <TFAutoConnect Yes>"+CR)
SEND PACKET(vDoc;"<Para <PgfTag `Heading'> <ParaLine <TextRectID 8>"+CR)
SEND PACKET(vDoc;"<String `GREEN COFFEE PRICE LIST'> <AFrame
1>>>"+CR)
SEND PACKET(vDoc;"<Para <PgfTag `Prepared'> <ParaLine <String `To order,
contact:'>>>"+CR)
SEND PACKET(vDoc;"<Para <PgfTag `Body'> <ParaLine <String
`"+$1»+"'>>>"+CR)
SEND PACKET(vDoc;"<Para <PgfTag `Body2'>"+CR)
SEND PACKET(vDoc;"<ParaLine <String `Sales Representative'>>>"+CR)
SEND PACKET(vDoc;"<Para <PgfTag `Body2'>"+CR)
SEND PACKET(vDoc;"<ParaLine <String `Primo Coffee Distributors'>>>"+CR)
SEND PACKET(vDoc;"<Para <PgfTag `Body2'> <ParaLine "+CR)
SEND PACKET(vDoc;"<String `"+String(Num($2»);"(###) ###-####")+"'>"+CR)
SEND PACKET(vDoc;"<ATbl 2> >>>"+CR) `Send the anchor for the table
CLOSE DOCUMENT(vDoc)
ALERT("Your MIF file is awaiting your attention.")
For example, suppose you need to publish a parts catalog. Each part has a name, a description, and a table that gives
pricing information. A typical record looks like this:
In the database, all the information about each part is associated with its record. Due to the structure of MIF,
however, the information must appear in different portions of the MIF file: the part name and description belong in
the TextFlow statement, while the table belongs in the Tbls statement. To accomplish this, you can make the
following modifications to the design of the database procedure shown in the previous example.
• At the beginning of the procedure, create two text files—one for the main MIF file that will contain the MIF file
identification line and the main text flow and the other for the Tbls statement.
• Use a second include statement to read in the Tbls statement
• As your procedure passes through each record, write the data that belongs in the TextFlow statement in the
main text file and write the table data to the Tbls file.
If you are using 4th Dimension, the procedure should have the following statements:
vDoc:=CREATE DOCUMENT ("") `Prompts user to name main file.
vTbls:=CREATE DOCUMENT (Tbls.mif) `Hard codes name of include file.
SEND PACKET (vDoc;"<MIFFile 2015> #File ID")
SEND PACKET (vDoc;"include (template.mif")
SEND PACKET (vDoc;"include (Tbls.mif")
As you process the records, you write the table data to the second include file by referring to the vTbls variable in a
SEND PACKET command. For example:
SEND PACKET (vTbls; "<Cell <CellContent"+CR)
The main MIF file would have the following components:
<MIFFile 2015> # File ID
include (template.mif) # MIF template
include (Tbls.mif) # Table instances, created by
# the database
<TextFlow # Main text flow
...
> # end of text flow
When FrameMaker opens the main MIF file, it will use the two include statements to place the data and template
information in the required order.
ADOBE FRAMEMAKER 247
MIF Reference
--- Skipping these chars: The MIF file contains a syntax error or a MIF statement not
supported in this version of FrameMaker. FrameMaker ignores
...(MIF statements)... all MIF statements contained within the erroneous or unsup-
---------- Done skipping. ported MIF statement. The ignored MIF statements are listed in
the error message.
A footnote cannot contain another footnote. One footnote in the MIF file is embedded in another.
Cannot connect to TRNext ID n. The text frame ID specified in a TRNext statement has no
corresponding defined text frame.
Cannot find anchored frame n. The graphic frame ID specified in an AFrames statement has
no corresponding defined graphic frame.
Cannot find footnote n. The footnote ID specified in a FNote statement has no corre-
sponding defined footnote.
Cannot find table ID n. MIF cannot match <ATbl x > with an earlier <Tbl <TblID
x> > statement.
Cannot find text frame ID n. The text frame ID specified in a TextRectID statement has
no corresponding defined text frame.
Cannot open filename. Make sure that the file exists and that you have read access to it;
then try again.
ADOBE FRAMEMAKER 249
MIF Reference
Cannot store inset’s facets. The MIF file contains a graphic inset, but the MIF interpreter
can’t store the graphic inset in the document. There might be an
error in the MIF syntax, or there might not be enough temporary
disk space available. In UNIX versions, try to increase the space
available in your home directory or the /usr/tmp directory
and try again. In the Windows versions, try quitting other appli-
cations and closing other open windows; then start
FrameMaker again.
Char out of range: character_value. A character in a Char statement or a character expressed using
\ x in a string is out of range.
Condition settings must not change between <XRef> and You cannot change a condition tag setting in the middle of a
<XRefEnd>. cross-reference. Make sure the entire cross-reference is
contained in one condition setting.
DashedPattern statement has no DashedSegment state- A DashedPattern statement gives DashedStyle a value
ments. of Dashed but has no DashedSegment statements to
define the dashed pattern.
Empty group: ID=n. The group ID specified in a Group statement has no corre-
sponding defined objects with a matching group ID.
Expected comma/identifier/left parenthesis/right paren- The MIF file contains a syntax error.
thesis/right quote.
Following <TabStop> statements will determine actual The PgfNumTabs statement is present in MIF for use by other
number of tabs. programs that read MIF files; it is not used by the MIF interpreter.
When the MIF interpreter reads a MIF file, it counts the number
of TabStop statements to determine the number of tabs stops
in a paragraph.
Frames are nested too deeply (over 10); skipping statement. There are too many nested frames. The maximum nesting depth
is 10.
Graphic frame has an invalid <Angle> attribute. An invalid value is specified by the Angle statement for a
graphic frame.
Insufficient memory! FrameMaker cannot allocate enough memory for one of its
work buffers. In UNIX versions, try to free some swap space and
restart FrameMaker. In the Windows versions, try quitting other
applications and closing other open windows; then start
FrameMaker again.
Macro/IncludeFile nesting too deep. The define or include statements specify too many nested levels
of statements.
Missing dimension. A necessary dimension value was not found in a MIF statement.
No name was given for the cross-reference format: The XRefName statement is not specified for a cross-reference
format_definition. format.
No name was given for the variable definition: vari- The VariableName statement is not specified for a variable.
able_definition.
Object ignored; must come before <TextFlow> statements. All object statements must come before the first TextFlow
statement in a MIF file.
String too long (over 255 or 1023 characters); overflow The maximum length for most <UserString> strings is 1023
ignored. characters. The maximum length for all other strings is 255 char-
acters.
Structured MIF statement ignored. This FrameMaker is set to use the unstructured program inter-
face, and so it does not support structured MIF statements.
Syntax error in <MathFullForm> statement. The MIF file contains a syntax error in a MathFullForm state-
ment.
Unable to start new object. FrameMaker cannot allocate memory for a new object. In UNIX
versions, try to free some swap space and restart FrameMaker. In
the Windows versions, try quitting other applications and
closing other open windows; then start FrameMaker again.
Unable to store marker. The marker table is full. In UNIX versions, FrameMaker is prob-
ably running out of swap space. Try to free some swap space
and restart FrameMaker. In the Windows versions, try quitting
other applications and closing other open windows; then start
FrameMaker again.
Unbalanced right angle bracket. A right angle bracket ( > ) was found that has no corresponding
left angle bracket ( < ).
Unexpected opcode. A statement was found in a context where it is not valid (for
example, an FFamily statement in a Document statement).
Unexpected right angle bracket. A right angle bracket ( > ) was found where a data value was
expected or was found outside a statement.
Unknown PANTONE name: string. The name specified in the ColorPantoneValue statement
is not the name of a valid PANTONE color.
Value of n out of range (m). A statement’s data value was too large or too small.
WARNING: Circular text flow was found and cut. The MIF file defined a set of linked text frames resulting in a
circular text flow. (The last text frame in the flow is linked to the
first or to one in the middle.) The MIF interpreter attempted to
solve the problem by disconnecting a text frame.
WARNING: Circular text flow. Don’t use the document. The MIF file defined a set of linked text frames resulting in a
circular text flow. (The last text frame in the flow is linked to the
first or to one in the middle.) The MIF interpreter was unable to
solve the problem. A FrameMaker document file will open, but
do not use it.
251
Language support
The PgfLanguage property of the Pgf statement now supports Arabic and Hebrew languages.
Numbering style
The following new numbering styles have been added:
• IndicNumeric
• FarsiNumeric
• HebrewNumeric
• AbjadNumeric
• AlifbataNumeric
These new numbering styles can be assigned at the paragraph level (PgfNumFormat), document level, or book level.
At the document level, the numbering style is defined in the Document statement. The following properties of the
Document statement can be configured to use the new numbering styles:
• VolumeNumStyle
• ChapterNumStyle
• DPageNumStyle
• SectionNumStyle
• SubSectionNumStyle
• DFNoteNumStyle
• DTblFNoteNumStyle
At the book level, the following properties of the BookComponent statement can be configured to use the new
numbering styles:
• VolumeNumStyle
• ChapterNumStyle
• SectionNumStyle
• SubSectionNumStyle
• PageNumStyle
• BFNoteNumStyle
• BTblFNoteNumStyle
ADOBE FRAMEMAKER 252
MIF Reference
Document direction
The DocDir property defines the direction — left-to-right (LTR) or right-to-left (RTL), in which you can author
your document. The objects that inherit their direction property from the Document would get affected if the DocDir
property is changed.
Paragraph direction
You can set the direction of a paragraph by using the PgfDir property. You can either change the direction of a single
paragraph (Para statement) or a paragraph format (Pgf statement).
Table direction
You can set the direction of a table by using the TblDir property. You can either change the direction of a single table
(Tbl statement) or a table format (TblFormt statement).
Element direction
ElemDir property control the direction of an element in a structured document.
MathML style
You can change the style of the MathML equation by using the MathMLStyleInline and MathMLApplyPgfStyle
properties. These properties allow a MathML equation to be inline with the enclosing paragraph’s text or apply the
formats of the enclosing paragraph.
Mini TOC
You can add a mini TOC to an unstructured document. The properties of InlineComponentsInfo statement
defines the mini TOC properties.
ADOBE FRAMEMAKER 253
MIF Reference
MathML
FrameMaker provides support for MathML, which is an XML application for representing mathematical notation.
This support is provided through out-of-the-box integration with MathFlow Editor by Design Science. FrameMaker
includes 30-day trial licenses of two MathFlow editors: Style Editor and Structure Editor.
In a MIF file, the MathML tag contains the various tags that hold MathML properties and data.
Hotspot
A hotspot is an active area in a document that you can link to different areas of the document, to another document,
or to a URL. You can apply hotspots to various objects, such as graphics, images, and anchored frames. In a MIF file,
you can make an object a hotspot using the IsHotspot boolean tag. Using the HotspotCmdStr tag, you can specify
the target URL or bookmark the user will go to after clicking the hotspot.
Object Style
You can save your frequently used object properties as a style. You can apply these object styles to various objects,
such as images, anchored frames, and text frames for consistent size and appearance. For example, you can create
and apply an object style to all the anchored frames in a document, or across documents, to make them of the same
size.
In MIF files, the StyleCatalog tag contains the object styles and you can specify an object style using the Style tag.
Line Numbers
Line numbers in FrameMaker files help you identify particular lines of content. Line numbers are set at a document
ADOBE FRAMEMAKER 254
MIF Reference
level (for a .fm file) and appear before each inserted line in a FrameMaker document. In a MIF document, you can
enable line numbers using the DLineNumShow tag.
Dictionary Preferences
Using the dictionary preferences, you can specify Proximity or Hunspell dictionaries for Spelling and Hyphenation
for various languages. In a MIF file, dictionary preferences are set in the Dictionary tag.
Descriptive tags
FrameMaker displays the description of the elements in the element catalog. In a mif file, the EDDescriptiveTag
tag contains the descriptive tag of an element and using a boolean tag DShowElmentDescriptiveTags, you can
decide whether or not to display the element descriptions.
Custom catalogs
FrameMaker allows you to create custom catalogs of character formats, paragraph formats, and table formats. A mif
document contains the boolean tags, CustomPgfFlag, CustomFontFlag, and CustomTblFlag, to control whether
or not these custom catalogs exist in the document. For the custom catalogs, a mif document contains one tag each
to signify the start of a custom catalog: DCustomFontList, DCustomPgfList, or DCustomTblList. The DCustom-
FontTag, DCustomPgfTag, and DCustomTblTag tags specify the names of the tags in the custom catalogs.
Filter By Attribute
Elements in a structured document can have one or more attributes associated with them. Using structured
FrameMaker, you can filter a structured document based on the value of these attributes. The Filter by Attribute
feature simplifies the task of filtering a structured document for complex output scenarios. You create a filter using
the DefAttrValuesCatalog, DefAttrValues, AttrCondExprCatalog, and AttrCondExpr statements.
XML Namespaces
In versions 7.0 and later, elements in structured FrameMaker documents now store namespace information. The
ENamespace statement contains an arbitrary number of namespace declaration. Each namespace declaration
consists of one ENamespacePrefix statement and one ENamemespacePath statement.
To improve handling of bookmarks hypertext links within and across PDF files, FrameMaker now stores reference
data within documents. PgfReferenced identifies each paragraph that is marked as a named destination; Elemen-
tReferenced similarly identified structure elements. If you like, you can specify that the Save As PDF function
creates a named destination for every paragraph in the document; this is done via FP_PDFDestsMarked within the
Document statement.
Books
Version 6.0 of FrameMaker has brought significant change to books. The book window now can display the filename
of each book component, or a text snippet from the component’s document. In MIF, BDisplayText determines
which type of information to display.
A book can also be view-only; MIF now includes BViewOnly, BViewOnlyWinBorders, BViewOnlyWinMenuBar,
BViewOnlyPopup, and BViewOnlyNoOp statements to express whether a book is view-only, and how it should
appear.
Book Components
Book components store numbering properties to use when generating a book. The following table shows the new
MIF statements for managing different types of numbering:
Volume Chapter Page Footnote Table Footnote
Documents
Because there are new numbering properties for documents and books, documents now have new numbering state-
ments. The following table shows the new MIF statements for managing different types of numbering in documents:
Volume Chapter Page Footnote
VolNumComputeMethod ChapterNumComputemethod
Control statements
A new control statement, CharUnits, has been added to express whether characters and line spacing is measured by
points or by Q (the standard units of measurement for Japanese typography). The keywords for this statement are
CUpt and CUQ.
Document statements
The DPageNumStyle and DFNoteNumStyle statements have new keywords to express Japanese footnote numbering
formats. The new keywords are ZenLCAlpha, ZenUCAlpha, KanjiNumeric, KanjiKazu, and BusinessKazu.
DTrapwiseCompatibility is a new statement that determines whether generated PostScript will be optimized for
the TrapWise application.
DSuperscriptStretch, DSubscriptStretch, and DSmallCapsStretch are new statements that specify the
amount to stretch or compress superscript, subscript, or small caps text.
Color statements
MIF 5.5 now supports a number of color libraries. In the Color statement, the ColorPantoneValue statement is no
longer used. Instead, ColorFamilyName specifies the color library to use, and ColorInkName identifies the specific
pigment. Note that the full name must be provided for ColorInkName.
The Color statement can also express a tint as a percentage of a base color. ColorTintPercentage specifies the
percentage, and ColorTintBaseColor specifies the base color to use.
ColorOverprint is a new statement that assigns overprinting to the color. If a graphic object has no overprint
statement in it, the overprint setting for that object’s color is assumed.
Marker statements
In FrameMaker, users can define named custom markers. MTypeName is a new statement to specify the marker name.
The MType statement is still written out for backward compatibility, but FrameMaker reads MTypeName when
present.
Paragraph statements
In version 5, paragraphs can span all text columns and side heads or span columns only. As a result of this change,
the PgfPlacementStyle statement now supports the additional keyword StraddleNormalOnly, which indicates
that the paragraph spans text columns but not side heads.
For supporting the capability to create PDF bookmarks from paragraph tags, the new PgfAcrobatLevel statement
has been added. This statement specifies the paragraph’s level in an outline of bookmarks.
For more information about the MIF syntax for paragraphs, see “Pgf statement” on page 62.
Character statements
In version 5, the FDX, FDY, and FDW statements, which specify the horizontal kern value, the vertical kern value, and
the spread of characters, now measure in terms of the percentage of an em.
In previous versions, the FDX and FDY statements specified values in points. When reading MIF files from previous
versions, FrameMaker in version 5 will convert points into the percentage of an em. Previous versions of
FrameMaker generate error messages when reading FDX and FDY statements specifying percentages, since these
products expect the kerning value in points.
Table statements
In version 5, tables can be aligned along the inside or outside edge (in relation to the binding of a book) of a text
column or text frame. As a result of this change, the TblAlignment statement now supports the additional keywords
Inside and Outside.
In addition, the existing TblTitleContent statement is now contained in the new TblTitle statement.
For more information about the MIF syntax for tables, see “Tbl statement” on page 79.
Document statements
In version 5, the DAcrobatBookmarksIncludeTagNames statement has been added under the Document statement
to support the conversion of paragraph tags to bookmarks in Adobe Acrobat. By default, this statement is set to No.
Another new statement, DGenerateAcrobatInfo, sets print options to the required states for generating Acrobat
information. By default, this statement is set to Yes.
For View Only documents, the default value of the DViewOnlySelect statement has changed from Yes to UserOnly.
For text insets, the following statement has been renamed:
MIF 4.00 MIF 5.00
In version 5, if FrameMaker finds the DMaxInterLine and DMaxInterPgf statements in a 4.00 document,
FrameMaker applies these settings to all flows in the document.
ADOBE FRAMEMAKER 261
MIF Reference
If FrameMaker in version 5 finds the TextFlow MIF statements for side heads, FrameMaker will convert these state-
ments to the equivalent statements under the TextRect statement.
If these types of statements are found under both the TextRect statement and the TextFlow statement, the state-
ments under the TextRect statement will be used.
Note that the existence of side heads in a text flow is still specified by the TFSideheads statement, which is under
the TextFlow statement.
For more information about the MIF syntax for text frames, see “TextRect statement” on page 129. For more infor-
mation about the MIF syntax for text flows, see “Text flows” on page 130.
<DataLink...> <TextInset...>
<DataLinkEnd> <TextInsetEnd>
If you open a 5.00 MIF file with text insets in a version 4 FrameMaker product, the older version of the product will
strip out the text inset MIF statements. The text inset becomes plain text that cannot be updated.
For more information about the MIF syntax for text insets, see “Text insets (text imported by reference)” on
page 138. For information about the MIF syntax for publishers, see “If the TiTblNumHdrRows substatement is
not set to 0, the table has header rows. If the TiTblHeadersEmpty substatement is set to No,
these rows are filled with imported text.” on page 144.
<Views…> Ignored
Color statements
The following table lists the changes for color property statements.
MIF 3.00 MIF 4.00
Separation values refer to the reserved, default colors that appear in the Color pop-up menu in the FrameMaker
Tools palette.
This value Corresponds to this color
Version 4 and later versions of FrameMaker read separation statements and convert them to the equivalent color
statements. FrameMaker writes both color statements and separation statements for backward compatibility. For the
reserved default colors, FrameMaker writes the equivalent separation value. For custom colors, FrameMaker writes
the separation value 5 (Cyan) so that you can easily find and change custom colors.
If your application creates files that will be read by both older (before version 4) and newer (after version 4)
FrameMaker product versions, include both color and separation statements in the MIF files; otherwise, use only the
color statements.
Math statements
The following table lists the changes for math statements.
MIF 3.00 MIF 4.00
DMathItalicFunctionName DMathFunctions
In addition, the diacritical expression defines new diacritical marks (see “Using char and diacritical for
diacritical marks” on page 200). The diacritical expression is not backward compatible.
If your application only reads or writes files for version 4 or later versions of FrameMaker, use only the 4.00 state-
ments. If your application reads or writes files for version 3 or previous versions of FrameMaker, use only the 3.00
statements. Do not use both statements.
The MIF interpreter always reads the MIF 3.00 statements. It writes both 3.00 and 4.00 statements for backward
compatibility.
ADOBE FRAMEMAKER 265
MIF Reference
Object statements
The following table lists the changes in graphic object statements (see “Graphic objects and graphic frames” on
page 111).
MIF 3.00 MIF 4.00
<BRect> <ShapeRect>
Text lines, text frames, imported graphics, table cells, and equations that are rotated at an angle of 90, 180, or 270
degrees retain rotation in earlier versions. If these objects are rotated at any other angle, they are rotated back to 0
degrees in the earlier version. All other objects are rotated back to 0 degrees.
FrameMaker writes both BRect and ShapeRect values for backward compatibility. For text lines, text frames,
imported graphics, table cells, and equations that are rotated at an angle of 90, 180, or 270 degrees, the BRect value
is the position and size of the object after rotation. For any object rotated at any other angle, the BRect value is the
position and size of the object before rotation, which is the same as the ShapeRect value.
Device-independent pathnames
The following codes for pathname components in a device-independent pathname are obsolete and are ignored by
the MIF interpreter.
Code Meaning
A Apollo-dependent pathname
D DOS-dependent pathname
M Macintosh-dependent pathname
U UNIX-dependent pathname
Document statements
The following changes have been made to Document statements.
MIF 3.00 MIF 4.00
In addition, the Document statement has a number of new property statements that set options for View Only
documents (see page 93), set options for structured documents, and define custom math operators (see page 190).
Page statement
The following change has been made to the Page statement.
MIF 3.00 MIF 4.00
A page’s size and orientation (landscape or portrait) is determined by the PageAngle statement and the Document
substatement DPageSize. FrameMaker writes the PageOrientation statement for backward compatibility. MIF
generators should use the PageAngle statement instead of PageOrientation.
ADOBE FRAMEMAKER 266
MIF Reference
When the MIF interpreter reads a Page statement that includes both a PageAngle and a PageOrientation
statement, it ignores the PageOrientation statement. When the interpreter reads a Page statement that contains a
PageOrientation statement but no PageAngle statement, it determines the page’s angle from the PageOrien-
tation statement. If the page orientation matches the orientation determined by the DPageSize statement, the
page’s angle is 0 degrees; otherwise, the page’s angle is 90 degrees. A page that has neither a PageAngle nor a
PageOrientation statement has an angle of 0 degrees.
267
If the graphic data does not have a corresponding facet supported by FrameMaker for displaying or printing,
FrameMaker can use filters to convert the graphic data into one of two internal facets: FrameImage (for bitmap data)
and FrameVector (for vector data). For example, FrameMaker does not have a facet for HPGL, so HPGL data is
converted into a FrameVector facet.
In Windows versions of FrameMaker, users can choose to automatically save a cross-platform facet of an imported
graphic. If a cross-platform facet does not already exist, FrameMaker generates a FrameImage facet for the imported
graphic.
Facet name
The first line of a facet identifies the facet by name. The facet name line has the following format:
=facet_name
The facet name can be one of the standard display and print facets or an application-specific name registered with
FrameMaker. (For information about registering your application-specific facets, see the FDK Platform Guide for
your platform, which is included with the Frame Developer’s Kit.)
Data type
The second line provides the data type of the facet: unsigned bytes (&%v), integer (&%i), or metric (&%m).
If the facet data is binary (such as FrameImage and FrameVector data) or if it contains ASCII characters (such as
EPSI data, as shown in the preceding example), the facet uses the unsigned bytes data type (&%v).
For example, the following line is the second line in a facet that contains data represented as unsigned bytes:
&%v
Facet data
The remaining lines contain the facet data. Each line begins with an ampersand (&).
The end of the data for a facet is marked by the beginning of a new facet. Thus, a line with a new facet name signals
the end of the previous facet data.
The end of the last facet in the graphic inset is marked by the following line:
=EndInset
Unsigned bytes
If the facet data contains a backslash character, another backslash precedes it as an escape character. For example, if
the data contains the string x\yz, the facet contains x\\yz.
Within the facet data, nonprintable ASCII characters or non-ASCII bytes (greater than 7f ) are represented in
hexadecimal.
ADOBE FRAMEMAKER 269
MIF Reference
Any section of data represented in hexadecimal is preceded and followed by the characters \x. For example, the
following FrameImage facet contains data represented in hexadecimal, which is enclosed between two sets of \x
characters:
=FrameImage
&%v
&\x
&59a66a95
&00000040
...
&0000FC0001FC0000
&\x
=EndInset
Integer data
The integer data type stores integer values in a facet. For example, the fmbitmap program stores the dimensions of
the graphic, the x-coordinate of the hot spot, and the y-coordinate of the hot spot as integer data in a facet:
=Data.facet
&%i
&64
&64
&-1
&-1
Metric data
Metric data describes a graphic in terms of units of measurement. The following table shows the abbreviations used
to denote units within a facet.
Units Abbreviation
Centimeters cm
Ciceros cicero, cc
Didots dd
Millimeters mm
Points point, pt
pixels px
When a live link is established between an imported graphic and a graphic application, users can edit the graphic in
a graphic application and directly import the graphic into a FrameMaker document. For more information on live
links, see the FDK Programmer’s Guide, which is provided with the FDK, or the online manual, Using FrameServer
with Applications and Insets, which is provided with the UNIX version of the FDK.
To set up a live link between a graphic application and a FrameMaker document, you need to add functions to your
application to write out graphic data as a graphic inset.
A graphic inset consists of an ImportObject statement that contains one or more facets for display and print. If
your application requires additional information not supported by the display and print facet, the graphic inset also
needs one or more application-specific facets to store this additional information.
The two types of graphic insets are internal graphic insets and external graphic inset files. Each type results in a slightly
different type of integration between FrameMaker and your application. You can choose the type of graphic inset
that your application supports. In most cases, one format is adequate, but you might want to give users more than
one option. Both types require a display and print facet.
FrameMaker document
External graphic insets are best suited to situations in which users are documenting projects in progress or in which
the document’s graphics are updated by external sources (for example, by a database).
An external graphic inset file contains a MIFFile statement and an ImportObject statement. The ImportObject
statement lists the graphic inset file’s pathname, the name of the inset editor that created it, and all of its facets.
An external graphic inset file has the following format:
ADOBE FRAMEMAKER 271
MIF Reference
<MIFFile 2015>
<ImportObject
<ImportObEditor inset_editor_name >
<ImportObFileDI device_independent_pathname>
=facet_name
&data_type
&facet_data
...
=facet_name
&data_type
&facet_data
...
=EndInset
>
A MIF ImportObEditor statement names the main editor for application-specific facets in the
graphic inset file.
A MIF ImportObFileDI statement specifies the device-independent pathname for the graphic inset file. For more
information on device-independent pathnames, see the section “Device-independent pathnames” on page 7.
Your graphic
application
Internal graphic insets are best suited for environments in which portability of FrameMaker document across
different types of systems is most important.
When FrameMaker creates temporary files for internal graphic insets, the temporary files have the following format:
<MIFFile 2015>
<ImportObject
<ImportObEditor inset_editor_name >
<ImportObFile `2.0 internal inset’>
=facet_name
&data_type
&facet_data
...
=facet_name
&data_type
ADOBE FRAMEMAKER 272
MIF Reference
&facet_data
...
=EndInset
>
Because the graphic inset is stored in FrameMaker document, the file does not have an
ImportObFileDI statement.
The ImportObFile statement identifies the file as a FrameMaker version 2.0 internal graphic inset file for compat-
ibility with earlier versions of FrameMaker. If you do not plan to use the graphic insets generated by your application
with earlier versions of FrameMaker, you can omit this statement.
Application-specific facets
Application-specific facets can be in any format your application understands, and a graphic inset file can contain as
many application-specific facets as you want.
When selecting application-specific facets for your graphic inset file, you might want to include an industry-
standard facet (for example, EDIF for EDA applications) so that you can use the graphic inset file to share data with
applications other than FrameMaker.
Application-specific facets can be contained entirely within the graphic inset file (a local facet), or the graphic inset
file can contain a reference to an external data file or database (a remote facet).
Your graphic
application
Application-specific facet
FrameMaker document
Your graphic
application
Graphic inset with a remote
application-specific facet
FrameMaker document
Application-specific facet
Note: Display and print facets must be contained in the graphic inset file. They cannot be remote facets.
To write a remote facet, your graphic application must write an application data file and store its data type and
pathname in the graphic inset file. A remote application-specific facet has the following format:
=facet_name
&facet_type
&path_for_facet_file
=EndInset
For example, the following lines describe the remote facet described in the application data file
/diagrams/BlockDiagram:
=application_name.facet
&%v
&/diagrams/BlockDiagram
=EndInset
Note that although the fmbitmap program writes out the ImportObFile statement, this statement is obsolete and
is only used with older versions of FrameMaker. When defining a function to write a graphic inset file, use the
ImportObFileDI statement and specify a device-independent pathname. For more information on device-
independent pathnames, see “Device-independent pathnames” on page 7.
<MIFFile 2015> # Generated by fmbitmap
<ImportObject
<ImportObFile /tmp/default.fi>
<ImportObEditor fmbitmap>
=BitmapFile.facet
&%v
&/tmp/default
=Data.facet
&%i
&64
&64
&-1
&-1
=FrameImage
&%v
&\x
& ...
&\x
=EndInset
>
To see more examples of the graphic inset format, you can import a graphic into a FrameMaker document (import
by copying) and save the FrameMaker document as a MIF file.
The following MIF statements describe the imported graphic. The graphic data that specifies the rectangle is an EPSI
facet.
<ImportObject
<BRect 0 0 0.25" 0.25">
<Pen 15> <Fill 15>
<ImportObFile `2.0 internal inset'>
=EPSI
&%v
&%!PS-Adobe-2.0 EPSF-2.0\n
&%%BoundingBox: 0 0 18 18\n
&%%Pages: 0\n
&%%Creator: contr2\n
&%%CreationDate: Tue Apr 25 16:09:56 1989\n
&%%EndComments\n
&%%BeginPreview: 18 18 1 18\n
&%FFFFC0\n
ADOBE FRAMEMAKER 276
MIF Reference
&%FFFFC0\n
&%FFFFC0\n
&%FFFFC0\n
&%FFFFC0\n
&%FFFFC0\n
&%FFFFC0\n
&%FFFFC0\n
&%FFFFC0\n
&%FFFFC0\n
&%FFFFC0\n
&%FFFFC0\n
&%FFFFC0\n
&%FFFFC0\n
&%FFFFC0\n
&%FFFFC0\n
&%FFFFC0\n
&%FFFFC0\n
&%%EndPreview\n
&%%EndProlog\n
&%%Page: "one" 1\n
&0 0 moveto 18 0 rlineto 0 18 rlineto -18 0 rlineto closepath 0 setgray\n
&fill\n
&%%Trailer\n
=EndInset
> # End ImportObject
277
Header
The header describes properties of the imported graphic. These properties are described by eight 32-bit integer
values, such as the values shown in the following example:
&59a66a95
&00000040
&00000040
&00000001
&00000000
&00000001
&00000000
&00000000
Each value identifies a property of the imported graphic:
ADOBE FRAMEMAKER 278
MIF Reference
Color map
The optional color map defines colors used for the imported graphic. It consists of 256 bytes of red, followed by 256
bytes of green, followed by 256 bytes of blue. Each byte contains an intensity value for a color. FF is the maximum
intensity and 00 is the minimum (none).
Red level = FF
array of 256 green levels
0A A1 B3 03 00 0C E6 F7 (256 bytes)
Green level = 00
array of 256 blue levels
FF EE AA 11 00 DD 66 77 (256 bytes)
Blue level = 00
The color map defines 256 colors. Each color contains a red, green, and blue level of intensity. The values of the first
red byte, first green byte, and first blue byte define the first color in the map; the values of the second red, green, and
blue bytes define the second color, and so forth.
For example, the data value 05 represents the color defined by the level of red stored in the fifth byte of red, the level
of green stored in the fifth byte of green, and the level of blue stored in the fifth byte of blue. If the fifth byte of red
contains FF (the maximum red intensity) and the fifth bytes of green and blue are both 00, then 05 would represent
bright red.
Byte-encoded data
If ras_type is RT_BYTE_ENCODED (if the sixth value in the header is 0x00000002), the data is a run-length encoded
pixel matrix. The byte value 80 hexadecimal (decimal 128) is used as a separator for encoding several bytes of the
same color. The encoding scheme uses the following format:
80 nn pp
where nn+1 is the number of times to repeat the data byte (pp).
For example, the following values represent seven data bytes of the hex value 55:
80 06 55
A single pixel value of 80 must be encoded as 80 00 in the data. If the value 80 occurs sequentially, use the format:
80 nn 80
where nn+1 is the number of times 80 occurs.
Standard data
If ras_type is RT_STANDARD (if the sixth value in the header is 0x00000001), the data contains uncompressed hex
data corresponding to the graphic. Each byte is eight pixels for a monochrome graphic or one pixel for color. Each
scanline of data must be padded to a word (16 bit) boundary.
ADOBE FRAMEMAKER 280
MIF Reference
Monochrome images
A monochrome graphic has the following header properties:
zs
Property Value
ras_depth 1
ras_maptype RMT_NONE
ras_maplength 0
Property Value
ras_depth 8
ras_maplength 300
Header ...
=FrameImage
&%v
&\x
&59a66a95
&00000040
&00000010
&00000001
&00000000
&00000001
&00000000
&00000000
&FFFFFFFFFFFFFFFF
&80000000FFFFFFFF
&80000000FFFFFFFF
&80000000FFFFFFFF
&80000000FFFFFFFF
&80000000FFFFFFFF
&80000000FFFFFFFF
&80000000FFFFFFFF
&FFFFFFFF00000001
&FFFFFFFF00000001
&FFFFFFFF00000001
&FFFFFFFF00000001
&FFFFFFFF00000001
Graphic data
&FFFFFFFF00000001
&FFFFFFFF00000001
&FFFFFFFFFFFFFFFF
&\x
=EndInset
...
ADOBE FRAMEMAKER 282
MIF Reference
Header ...
=FrameImage
&%v
&\x
&59A66A95
&00000040
&00000010
&00000001
&00000000
&00000002
&00000000
&00000000
&8007FF
&8000000000
&8003FF
&8000000000
&8003FF
&8000000000
&8003FF
&8000000000
&8003FF
&8000000000
&8003FF
&8000000000
&8003FF
Graphic data &8000000000
&8007FF
&00000001
...
ADOBE FRAMEMAKER 283
MIF Reference
...
&8003FF
&00000001
&8003FF
&00000001
&8003FF
&00000001
&8003FF
&00000001
&8003FF
&00000001
Graphic data &8003FF
&00000001
&8007FF
&\x
=EndInset
...
284
One-byte op code Four-byte field describing the size of Actual data of variable length
the data (9 bytes long in this case, as
specified by the previous field)
87 00000009 017A0000002D000000
• The style op codes define the styles applied to all operations until the styles are changed. For example, all graphics
objects use the same line width, fill pattern, and color until the style op codes change. All styles need to be
defined before specifying the first object op code.
• Object
• The object op codes define graphics objects.
The following tables list the op codes, with a brief description of each op code and the number of the page where
each op code is described. The definitions of many of these op codes are similar to corresponding MIF statements.
Definition op codes
Note that the colors defined in a FrameVector graphic can be used only within the FrameVector graphic. These
colors cannot be used for other purposes in the document.
If the definition of a color in the FrameVector graphic does not match the definition in the color catalog of the
document, FrameMaker uses the definition in the color catalog when displaying the graphic.
Style op codes
Object op codes
metric signed 32-bit, fixed point; the first 16 bits represent the digits preceding the decimal, the last 16 bits repre-
sent the digits following the decimal
Type Definition
rectangle 4 metrics interpreted as the position of the rectangle in x and y coordinates and the size of the rectangle
in width and height
Example: 01 00000001 50
Percentages of cyan, magenta, yellow, and black (metric, metric, metric, metric)
black = 0% (0000)
Note: See “Definition op codes” on page 285 for more information on color definitions.
Note: See “Definition op codes” on page 285 for more information on color definitions.
Example: 05 0000001A 00 0B 53 61 67 65 20 47 72 65 65 6E 00 00 04 35 37 30 00
for a color named Sage Green with the PANTONE number 570
Note: See “Definition op codes” on page 285 for more information on color definitions.
Example: FF 00000000
Default value: 0
Description of data: Index to pen patterns (see “Values for Pen and Fill statements” on page 113)
Example: 21 00000001 00
Description of data: Index to pen patterns (see “Values for Pen and Fill statements” on page 113)
Example: 22 00000001 07
Color (0x24)
Example: 24 00000006 00 06 42 6C 61 63 6B 00
Overprint (0x25)
Example: 25 00000001 00
if not overprinted
25 00000001 01
if overprinted
Examples: 26 00000001 00
26 00000001 01
Description of data: Style of head cap or line end (0:arrow, 1:butt, 2:round, 3:square)
Example: 27 00000001 00
Description of data: Style of tail cap or line end (0:arrow, 1:butt, 2:round, 3:square)
Example: 28 00000001 00
Smoothed (0x29)
Example: 29 00000001 00
29 00000001 01
Specification by data type: Byte, string, string, string (some strings not used, depending on flag)
Description of data: Flag indicating which names are used to identify the font (byte — 0:family name, 1:family
and PostScript name, 2:family and platform name, 3:all three names)
Example: 2A 0000000A 00 00 08 43 6F 75 72 69 65 72 00
Description of data: Described by 14 bits, where bit 0 is the least significant bit:
Bits 2-4: underline style — 0:no underline, 1:single, 2:double, 3:numeric (bit 4 is not
currently used)
Bit 5: overline
Bit 6: strikethrough
Bit 7: superscript
Bit 8: subscript
Bit 9: outline
Bits 12-13: case — 0:as is, 1:small caps, 2:lower case, 3:upper case
Example: 03 0000001B 00 0B 53 61 67 65 20 47 72 65 65 6E 00
Description of data: Name of font weight type (uses the same values as the MIF FWeight statement)
Example: 2E 00000008 00 08 52 65 67 75 6C 61 72 00
Description of data: Name of font angle type (uses the same values as the MIF FAngle statement)
Example: 2F 00000008 00 08 52 65 67 75 6C 61 72 00
Description of data: Name of font variation type (uses the same values as the MIF FVar statement)
Example: 30 00000008 00 08 52 65 67 75 6C 61 72 00
Description of data: Horizontal kerning in percentage on an em (a positive value moves characters to the right,
a negative value moves characters to the left)
31 00000004 FFFF8000
Description of data: Vertical kerning in percentage of an em (a positive value moves characters downward, a
negative value moves characters upward)
32 00000004 FFFF8000
33 00000004 FFFF8000
Ellipse (0x80)
Polygon (0x81)
number of points = 3
Note: When smoothed style is on, this object is a closed Bezier curve.
Polyline (0x82)
Note: When smoothed style is on, this object becomes a Bezier curve.
Rectangle (0x83)
Arc (0x85)
Length of arc in degrees, where positive values correspond to clockwise arcs and negative
values correspond to counterclockwise arcs (metric)
start angle = 0°
Description of data: Position and size of the bounding rectangle in points (rectangle)
59A66A95
00000008
00000008
00000001
00000000
00000002
00000000
00000000
80 0E FF
20
for an imported bitmap graphic of a black square with the following specifications:
width = 8 points
height = 8 points
flipped left/right = no
alignment = left
Note: The specification of the start of a text line begins with op code 87 and can contain combi-
nations of fonts and text. A text line must end with op code 89.
Example: 89 00000000
Note: Clipping rectangles are unique to the FrameVector format. All objects within a clipping
rectangle are drawn to the boundaries of the rectangle. If an object extends beyond this
region, the portion that passes the rectangle boundary is not drawn.
The specification of the start of a clipping rectangle begins with op code 8A and ends with
op code 8B. All objects within the clipping rectangle must be specified between these two
op codes.
Example: 8B 00000000
Description of data: Position and size of the bounding rectangle in points (rectangle)
...(FrameVector data)...
flipped left/right = no
Note: The vector graphic is scaled to the size of the bounding rectangle.
F R A M E V E C T O R G R A P H I C
&2A0000000C00000A\xHelvetica\x00
&2B0000000400090000
&300000000A0008526567756C617200
&2F0000000A0008526567756C617200
&2E0000000A0008526567756C617200
&330000000400008000
&2C0000000400001000
&88000000160014\xFrameVector Graphic\x00
&8900000000
&070000000C10780201000C00000004000
&270000000100
&82000000140000000200720000005500000033000000550000
&22000000010F
&270000000103
&850000001800040000002B0000002F0000002C0000005A0000005A0000
&FF00000000
&\x
=EndInset
...
The following sections explain the syntax used to describe this facet.