Adobe FRAMEMAKER 6.0 User Manual

Adobe
®
®
FrameMaker
6.0
MIF Refer ence Online M anual
Adobe, the Adobe logo, Acrobat, Acrobat Reader, Adobe Type Manager, ATM, Display PostScript, Distiller , Exchange, Frame, FrameMaker, FrameViewer, InstantView , and PostScript are trademarks of Adobe Systems Incorporated. Apple, PowerBook, QuickTime, Mac, Macintosh and Power Macintosh are trademarks of Apple Computer, Inc., registered in the United States and other countries. HP -UX i s a registere d trademark of Hewl ett-P ackard Com pany . Micr osoft, MS-DOS, W indo ws, and Win dows NT are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.. Sun and Solaris are trad emarks or r egis ter ed tradema rks of S un M icr osyst ems , I nc. in t he United St at es an d othe r c oun tries. U ni x is a r egis­tered trademark and X
© 2000 Adobe Syste ms Incorporated. All rights reserved.
Window Syst em is a trade mark of Th e Open Gr oup . All other trademarks ar e pr operty of their r especti ve o wners.

Contents

Introduction Why use MIF? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Using this manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Overview of MIF statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
MIF statement syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Using MIF Statements Working with MIF files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Creating a simple MIF file for FrameMaker . . . . . . . . . . . . . . . . . . . . . . . . . 18
Creating and applying character formats . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Creating and formatting tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Specifying page layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Creating markers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Creating cross-references . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Creating variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Creating conditional text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Including template files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Setting View Only document options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Applications of MIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Debugging MIF files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Other application tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Where to go from here . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3
MIF Document Statements
MIF file layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
MIFFile statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Control statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Macro statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Conditional text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Paragraph formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Character formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Cross-references . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Global document properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Graphic objects and graphic frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Text flows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Text insets (text imported by reference) . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Publishers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
MIF Book File Statemen ts MIF book file overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
MIF book file identification line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Book statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
4
MIF Statements for Structured Documents and Books
Structural element definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Attribute definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Format rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Format change lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Preference settings for structured documents . . . . . . . . . . . . . . . . . . . . . . 180
Text in structured documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Structured book statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
MIF Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
MIF Equation Statements Document statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Math statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
MathFullForm statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
MIF Asian Text Processing Statements
Asian Character Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
Combined Fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Kumihan Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Rubi text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Examples Text example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Bar chart example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Pie chart example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Custom dashed lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
Table examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Database publishing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
MIF Messages General form for MIF messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
List of MIF messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
MIF Compatibility Changes between version 5.5 and 6.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
Changes between version 5 and 5.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Changes between versions 4 and 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
Changes between versions 3 and 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
5
Facet Formats for Graphics
Facets for imported graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
Basic facet format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
Graphic insets (UNIX versions) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
General rules for reading and writing facets . . . . . . . . . . . . . . . . . . . . . . . 278
EPSI Facet Format Specification of an EPSI facet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
Example of an EPSI facet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
FrameImage Facet Format
FrameVector Facet Format
Specification of a FrameImage facet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
Specification of FrameImage data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
Differences between monochrome and color . . . . . . . . . . . . . . . . . . . . . . . 285
Sample unencoded FrameImage facet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Sample encoded FrameImage facet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Specification of a FrameVector facet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
Specification of FrameVector data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
Sample FrameVector facet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308

Introduction

6
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 most FrameMaker exception of FrameReader document, it allows FrameMaker products and other applications to exchange information while preserving graphics, document content, and format.
®
) understand. Because MIF is an alternative representation of a FrameMaker
®
products (with the

Why use MIF?

You can use MIF file s to a llo w Frame Ma k er pr oducts an d othe r appli cation s to e x c hange i nfo rmation. Fo r example, you can write programs to convert graphics and text into MIF and then import the MIF file into a FrameMaker product with the graphics and text intact. You can also save a FrameMaker document or book file as a MIF file and then write a program to convert the MIF file to another format. These conversion programs are called filters; filters allow you to convert FrameMaker document files into foreign files (files in another word processing or desktop publishing format), and foreign files into FrameMaker document files.
You can use MIF files with database publishing applications, which allow you to capture changing data from databases and format the data into high-quality documents containing both text and graphics infor­mation. Y ou use the database to enter, manipulate, sort, and select data. You use a FrameMaker product to format the resulting data. You use MIF files as the data interchange format between the database and the FrameMaker product.
You can also use MIF files to do the following:
Share documents with earlier versions of FrameMaker products
Perform custom document proc essing
Set options for online documents in View Only format
These tasks are described in “Applications of MIF” on page 60 perform some of these tasks. See “Other application tools” on page 64
. You can use other FrameMaker products to
.

Using this manual

This manual:
Describes the layout of MIF files.
Provides a complete description of each MIF statement and its syntax.
Provides examples of how to use MIF statements.
Includes MIF statements for version 5.5 of the following FrameMaker products: FrameMaker
FrameViewer®, FrameMaker+SGML™.
®,
Introduction
Y our FrameMaker pr oduct may not include all of the features described in this manual. For example, some statements appear in all MIF files but are only applicable for structured documents created with FrameMaker+SGML. Contact your FrameMaker local customer service representative for information about other FrameMaker products.
T o get the most from this manual you should be familiar with your FrameMaker product. For information about a FrameMaker product and its features, see the documentation for your product. In addition, if you are using MIF as an interchange format between a FrameMaker product and another application, you should be f amiliar with the tools needed to create and manipulate the other application, such as a programming language or database query language.
This chapter provides basic information about working with MIF files, including opening and saving MIF files in your FrameMaker product. It goes on to provide detailed information about the MIF language and its syntax.
7ADOBE FRAMEMAKER 6.0
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 your FrameMaker
product 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
.
MIF statement names, pathnames, and filenames are also shown in
.
Placeholders (such as MIF data) are shown in
text like this. For example, the statement description for 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 product, FrameMak er document, or
FrameMaker session) to refer to any of the FrameMaker, FrameMaker+SGML, and FrameViewer products.

Overview of MIF statements

When you are learning about MIF statements, you may find it useful to understand how FrameMaker products represent documents.
Introduction

How MIF statements represent documents

FrameMaker products represent document components as objects. Different types of objects represent different components in a FrameMaker document. For example, a paragraph is considered an object; a paragraph format is considered a formatting object. The graphic objects that you create by using the Tools palette are yet another type of object.
Each object has properties that represent its characteristics. For example, a paragraph has properties that represent its left indent, the space above it, and its default font. A rectangle has properties that represent its width, height, and position on the page.
When a FrameMaker product creates a MIF file, it writes an ASCII statement for each object in the document or book. The statement includes substatements for the objects pro perties.
For example , suppose a d ocument (with no text fram e) conta ins a rectan gle that is 2inches wide a nd 1inch high. The rectangle is located 3 inches from the left side of the page and 1.5 inches from the top. MIF repre­sents this rectangle with the following statement:
<Rectangle # Type of graphic object
<ShapeRect 3.0" 1.5" 2.0" 1.0"> # Position and size: left offset,
# top offset, width, and height
>
8ADOBE FRAMEMAKER 6.0
A FrameMaker product also treats each document as an object and stores document preferences as properties of the document. For example, a documents page size and page nu mbering style are document properties.

FrameMaker documents have default objects

A FrameMaker document always has a certain set of default objects, formats, and preferences, even when you create a new document. When you create a MIF file, you usually provide the objects and properties that your document needs. However, if you don’t provide all the objects and properties required in a FrameMaker document, the MIF interpreter fills in a set of default objects and document formats.
The MIF interpreter normally provides the following default objects:
Predefined paragraph formats fo r body text, headers, and table cells
Predefined character formats
A right master page for single-sided documents and left and right master pages for double-sided
documents
A reference page
Predefined table formats
Predefined cross-reference formats
Default pen and fill values and dash patterns for graphics
Default colors
Default document preferences, such as ruler settings
Default condition tags
Introduction
Although you can rely on the MIF interpreter to provide defaults, the exact properties and objects provided may vary depending on your FrameMaker products configuration. The MIF interpreter uses default objects and properties that are specified in setup files and in templates. In UNIX® versions, these templates are and . You can modify these default objects and document formats by creating your own version of or or by modifying your setup files.
For more information about modifying the default templates and setup files, see the online manual Customizing FrameMaker Products for UNIX versions of FrameMaker products. For the Macintosh and Windows® versions, see the chapter on templates in your user manual.

Current state and inheritance

A FrameMaker product has a MIF interpreter that reads and parses MIF files. When you open or import a MIF file, the interpreter reads the MIF statements and creates a FrameMaker document that contains the objects described in the MIF file.
When the interpreter reads a MIF file, it keeps track of the current state of certain objects. If the interpreter reads an object with properties that are not fully specified, it applies the current state to that object. When an object acquires the curr ent state, it inherits the properties stored in that state.
9ADOBE FRAMEMAKER 6.0
For example, if the line width is set to 1 point for a graphic object, the interpreter continues to use a 1-point line width for graphic objects until a new value is specified in the MIF file. Similarly, if the MIF file specifies a format for a paragraph, the interpreter uses the same format until a new format is specified in the file.
The MIF interpreter keeps track of the following document objects and properties:
Units
Condition tag properties
Para graph format properties
Character format 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 determined 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.
Introduction

How a FrameMaker product identifies MIF files

A MIF file must be identified by a or statement at the beginning of the file; otherwise a FrameMaker product simpl y reads the file as a text file. All ot her statements are optional; that is, a valid MIF file c an contain only the statement. Other document objects can be added as needed; a FrameMaker product provides a set of default objects if a MIF file does not supply them.

MIF statement syntax

The statement descriptions in this manual use the following conventions to describe syntax:
tokendatawhere token represents one of the MIF statement names (such as ) listed in the MIF statement descriptions later in this manual, and data represents one or more numbers, a string, a token, or nested statements. Markup statements are always delimited by angle brackets (<>); macro statements are not. For the syntax of macro statements, see “Macro statements” on page 70
A token is an indivisible group of characters that identify a reserved word in a MIF statement. Tokens in MIF are case-sensitive. A token cannot contain white space characters, such as spaces, tabs, or newlines. For example, the following MIF statement is invalid because the token contains white space characters:
.
10ADOBE FRAMEMAKER 6.0
When the MIF interpreter finds white space characters that arent part of the text of the document (as in the example MIF statement, ), it interprets the white space as token delimiters. When parsing the example statement, the MIF interpreter ignores the white space characters between the left angle bracket (<) and the first c haracte r of the t ok en, . A fter readi ng the tok en, the MIF in terpr ete r che cks i ts vali dity. If the t oke n is valid, the interpreter reads and parses the data portion of the statement. If the token is not valid, the interpreter ignores all text up to the corresponding right angle bracket (>), including any nested substate­ments. The interpreter then scans the file for the next left angle bracket that marks the beginning of the next MIF statement.
All statements, as well as all data portions of a statement, are optional. If you do not provide a data portion, the MIF interpreter assigns a default value to the statement.

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 page66
.
Introduction

MIF data items

There are several general types of data items in a MIF statement. This manual uses the following terms and symbols to identify data items.
This term or symbol Means
string
Left quotation mark ( ` ), zero or more standard ASCII characters, and a straight quotation mark (' ). Example: . To include extended ASCII characters in a string, you must use a backslash sequence (see “Character set in strings” on page 13
).
11ADOBE FRAMEMAKER 6.0
tagstring
pathname boolean integer ID
dimension
degrees
percentage
metric
WH XY
LTRB
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 tag- string value. A tagstring value can include any character from the FrameMaker character set.
A string specifying a pathname (see “Device-independent pathnames ” on page 13).
A value of either or . Case is significant.
Integer whose range depends on the associated statement name.
Integer tha t sp e ci f ie s a un iqu e ID . An ID ca n b e an y po s it i ve in te g er be t w een 1 a n d 655 35 , inc l u­sive. A statement that refers to an ID must exactly match the ID.
Decimal number signifying a dimension. You can specify the units, such as , , and . If no units are specified, the default unit is used (see “Units statement” on page 68
A decimal number signifying an angle value in degrees. You cannot specify units; any number is interpreted as a degree value.
A decimal number signifying a percentage value. You cannot specify units; any number is inter­preted as a percentage value.
A dimension specified in units that represent points, where one point is 1/72 inch (see “Math val- ues” on page 12). Only used in statements.
Pair of dimensions representing width and height. You can specify the units.
Coordinates of a point. Coordinates originate at the upper-left corner of the page or graphic frame. You can specify the units.
Coordinates representing left, top, right, and bottom indents. You can specify the units.
).
LTWH
XYWH
keyword
<token>
Coordinates representing the left and top indents plus the dimensions representing the width and height of an object. You can specify the units.
Coordinates of a point on the physical screen represented by X and Y plus dimensions describing the width and height. Used only by the and statements within the statement and the statement within the statement. The values are in pixels; you cannot specify the units.
A token value. The allowed token values are listed for each statement; you can provide only one value.
Ellipsis points in a statement indicate required substatements or arguments. The entire expanded statement occurs at this point.
Introduction

Unit values

You can specify the unit of measurement for most dimension data items. The following table lists the units of measurement that a FrameMaker product supports and their notation in MIF.Dimension data types can
Measurement unit Notation in MIF Relationship to other units
point pt or point 1/72 inch inch " or in 72 points millimeter mm or millimeter 1 inch is 25.4 mm centimeter cm or centimeter 1 inch is 2.54 cm pica pc or pica 12 points didot dd or didot 0.01483 inches cicero cc or cicero 12 didots
mix different units of measurement. For example, the statement LTRB can be written as either of the following:
12ADOBE FRAMEMAKER 6.0
<CellMargins6pt18pt6pt24pt> <CellMargins 6 pt .25" .5 pica 2 pica>
Math values
The 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 or decimal . 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 cicero 839724
Introduction

Character set in strings

MIF string data uses the FrameMaker character set (see the Quick Reference for your FrameMaker product). MIF strings must begin with a left quotation mark (ASCII character code ) and end with a straight quotation mark (ASCII character code ). Within a string, you can include any character in the FrameMaker character set. However, because a MIF file can contain only standard ASCII characters and because of MIF parsing requirements, you must represent certain characters with backslash (\) sequences.
Character Representation
Tab \ t >\>
\q `\Q \\\ nonstandard ASCII \xnn
13ADOBE FRAMEMAKER 6.0
All FrameMaker characters with values above the standard ASCII range (greater than ) are represented in a string by using nn notation, wh ere nn represents the hexadecimal code for the character. The hexadecimal digits must be followed by a space.
The following example shows a FrameMaker document line and its representation in a MIF string.
In a FrameMaker document In MIF
Some `symbols': > \Ø¿! `Some \Qsymbols\q: \> \\\xaf \xc0 !'
You can also use the statement to include certain predefined special characters in a statement (see “Char statement on page136).

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…'
where name is the name of a component in the files path and code identifies the role of the component in the path. The following table lists codes and thei r meanings.
Code Meaning
r Root of UNIX file tree (UNIX only) v Volume or drive (Macintosh and Windows) h Host (Apollo only) c Component
Introduction
Code Meaning
u Up one level in the file tree
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 absolu te pa thna me 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 products.Relative pathnames
In this version The pathname appears as this MIF string
UNIX `<r\><c\>MyDirectory<c\>MySubdirectory<c\>Filename' Macintosh `<v\>MyVolume<c\>MyFolder<c\>MySubfolder<c\>Filename' Windows `<v\>c:<c\>mydir<c\>subdir<c\>filename'
14ADOBE FRAMEMAKER 6.0
A relative pathname shows the location of a file relative to the current directory. In all FrameMaker product versions, the device-independent, relative pathname for the same file is:
`<c\>Filename'
Introduction
15ADOBE FRAMEMAKER 6.0

Using MIF Statements

MIF statements can completely describe any FrameMaker document, no matter how complex. As a result, you often need many MIF statements to describe a document. T o learn how to use MIF statements, it helps to begin with some simple examples.
This chapter introduces you to MIF, beginning with a simple MIF example file with only a few lines of text. Additional examples sho w how to add common document objects, such as paragraph formats, a table, and a custom page layout, to this simple MIF file.
The examples in this chapter are also provided in online sample files. You can open these examples in a FrameMaker product and experiment with them by adding additional MIF statements. Look for the sample files in the following location:
In this version Look here
16
UNIX $FMHOME/fminit/language/Samples/MIF, where language is the language in use, such as
Macintosh The MIF folder in the Samples folder Windows The MIF directory under the samples directory
usenglish

Working with MIF files

A MIF file is an alternate representation of a FrameMaker document in ASCII format. MIF files are usually generated by a FrameMaker product or by an application that writes out MIF statements. You can, however, create MIF files by using a text editor or by using a FrameMaker product as a text editor. This section provides some general information about working with MIF files regardless of the method you use to create them.

Opening and saving MIF files

When you save a FrameMaker document, you usually save it in Normal format, FrameMakers binary format for document files. To sa ve a document as a MIF file, choose Save As from the File menu. In the Save Document dialog box, choose Inter change (MIF) from the Format pop-up men u. You should give the saved file the suffix .mif to distinguish it from a file saved in binary format.
When you open or import a MIF file, a FrameMaker product reads th e file directly, translati ng it into a FrameMaker document or book. When you sa ve the document in N ormal format, a FrameMaker pr oduct creates a binary document file. T o prev ent overwriting the original MIF file, remove the .mif file suffix and replace it with a different suffix (or no suffix).
Using MIF Statements
If you use a FrameMaker product to edit a MIF file, you must prevent it from interpreting MIF statements when you open the file by holding down a modifier key and clicking Open in the Open dialog box.
In this version Use this modifier key
UNIX Shift Macintosh Option Windows Control or Shift NeXT Alt
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, a FrameMaker product asks you where to place carriage returns. For a MIF file, choose the Only between Paragraphs opti on .
In UNIX versions, a FrameMaker product saves a document in text format in the ISO Latin-1 character encoding. Y ou 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 Products. In Macintosh and Windows versions, press Esc F t c to toggle between FrameMakers character encoding and ANSI for Windows or ASCII for Macintosh.
17ADOBE FRAMEMAKER 6.0

Importing MIF files

Y ou ca n use the File menu ’s Import>File command to import MIF files into an existing document, but you must make sure that the imported statements are valid at the location where you are importing them. A MIF file can describe both text and graphics; make sure that you ha ve selected either a place in the text flow (if you are importing text or graphics) or an anchored frame (if you are importing graphics).
For example, to import a MIF file that describes a graphic, first create an anchored frame in a document, select the frame, and then import the MIF file (see Bar chart example on page 235).
When you import or include MIF files, make sure that object IDs are unique in the final document and that references to object IDs are correct (see Generic object statements on page 111).

Editing MIF files

You normally use a text editor to edit a MIF file. If you use a FrameMaker product to enter text into a MIF file, be sure to open the MIF file as a text file and turn off Smart Quotes. If you leave Smart Quotes on, you must use a key sequence to type the quotation marks that enclose a MIF string (`'). To enter a left quotation mark, type Control-`. To enter a straight quotation mark, type Control-'.
Although MIF statements are usually generated by a program, while you learn MIF or test and debug an application that generates MIF, you may need to manually generate MIF statements. In either case, you can minimize the number of MIF statements that your application needs to generate or that you need to type in.
Using MIF Statements
The following suggestions may be helpful when you are working with MIF statements:
Edit a MIF file generated by a FrameMaker product.
You can edit a MIF file generated by a FrameMaker product or copy a group of statements from a MIF file into your file and then edit the statements. An easy way to use a FrameMaker product to generate a MIF file is to create an empty document by using the New command and then saving it as a MIF file.
Test one object at a time.
While testing an object in a document or learning about the MIF statements that describe an object, work with just that object. For example, if you work with a document that contains both tables an d anchored frames, start by creating the MIF statements that describe tables. Then add the statements that descri be anchor ed frames.
Use the default properties provided by a FrameMaker product.
If you are not concerned with testing certain document components, let a FrameMaker product provide a set of default document objects and formats.

MIF file layout

A FrameMaker product writes the objects in a MIF document file in the following order:
18ADOBE FRAMEMAKER 6.0
This section Contains these objects
File ID MIF file identification line (MIFFile statement) Units Default units (Units statement) Catalogs Color
Formats Variable
Objects Document
Condition Paragraph Format Element Font or Character Format Ruling Table Format Views
Cross-reference
Dictionary Anchored frames Tables Pages Text flows
A FrameMaker product 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.

Creating a simple MIF file for FrameMaker

The rest of this chapter explains how to create some simple MIF files for FrameMaker and FrameViewer by hand. These instructions do not apply to FrameMaker+SGML, which requires that you create elements first.
Using MIF Statements
The most accurate source of information about MIF files is a MIF file generated by a FrameMaker product. MIF files generated by a FrameMaker product can be very lengthy because a FrameMaker product repeats information and provides default objects an d formats for all documents. You may find it difficult to determine the minimum number of statements that are necessary to define your document by looking at a FrameMaker-generated MIF file.
To better understand how a FrameMaker product reads MIF files, study the following example. This MIF file uses only four statements to describe a document that contains one line of text:
<MIFFile 6.00> # The only required statement <Para # Begin a paragraph
<ParaLine # Begin a line within the paragraph
<String `Hello World'> # The actual text of this document
>#end of Paraline # End of ParaLine statement
>#end of Para # End of Para statement
The MIFFile statement is required in each MIF file. It identifies the FrameMaker product version and must appear on the first line of the file. All other statements are optional; that is, a FrameMaker product provides a set of default objects if you specify none.
19ADOBE FRAMEMAKER 6.0
Comments in a MIF file are preceded by a number sign (#). By convention, the substatements in a MIF statement are indented to show their nesting level and to make the file easier to read. The MIF interpreter ignores spaces at the beginning of a line.
This example is in the sample file hello.mif. To see how a FrameMaker product provides defaults for a document, open this file in a FrameMaker product. Even though the MIF file does not specify any formatting, a FrameMaker product provide s 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 a FrameMaker product as a text file. (For information on how to save and open MIF files, see Opening and saving MIF files on page 16.)
Youll 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. T o see the actual text of the document, go to the end of the file.
This example demonstrates an important point about MI F 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 charac ter formats, a table, and custo m page layouts, to this minimal MIF file.

Creating and applying paragraph formats

In a FrameMaker document, paragraphs have formatting properties that specify the appearance of the paragraph’s text. A paragraph format includes the font family and size, indents, tab stops, the space between line s in a paragrap h, a nd th e sp ace befo re and af te r a par agraph. In a F rameM ak e r do cume nt, t he end of a paragraph is d enoted by a single carriage r eturn. You control the amount of spac e abov e and belo w the paragraph by modifying the paragraph’s format, not by adding extra carriage returns.
Using MIF Statements
In a FrameMaker document, you store paragraph formats in a Paragraph Catalog and assign a tag (name) to the format. You can then apply the same format to many paragraphs by assigning the format tag to the paragraphs. You can also format a paragraph individually, without storing the format in the Paragraph Catalog. Or, you can assign a format from the Paragraph Catalog and then override some of the properties within a particular paragraph. Formats that are not stored in the Paragraph Catalog are called local formats.

Creating a paragraph

In a MIF file, paragraphs are defined by a Para statement. A Para statement contains one or more ParaLine statements 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 a FrameMaker p roduct by placing each paragraph in a Para statement. Break the paragraph text into a series of String statements contained in one ParaLine statement. It doesnt matter how you break up text lines within a Para statement; the MIF interpreter automatically wraps lines when it reads the MIF file.
20ADOBE FRAMEMAKER 6.0
Some characters must be represented by backslash sequences in a MIF string. For more information, see Character set in strings on page13.

Creating a paragraph format

Within a FrameMaker document, you define a paragraph format by using the Paragraph Designer to specify the paragraphs pr operties. In a MIF file, you define a paragraph format by using the Pgf statement.
The Pgf statement co ntains a gr oup of substat ements th at describe all of a p aragraph ’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.
Using MIF Statements
Suppose you have created a paragraph format for a numbered list item with Basic properties defined as follows in the Paragraph Designer.
21ADOBE FRAMEMAKER 6.0
The following table shows the corresponding MIF statements:
In MIF file In Paragraph Designer
<PgfTag `Numbered'> Paragraph Tag <PgfFIndent 0.0"> First Indent <PgfLIndent 0.25"> Left Indent <PgfRIndent 0.0"> Right Indent <PgfAlignment Left > Alignment <PgfSpBefore 0.0 pt> Space Above <PgfSpAfter 0.0 pt> Space Below <PgfLeading 2.0 pt> Line Spacing (leading is added to font size) <PgfLineSpacing Fixed> Line Spacing (fixed) <PgfNumTabs 1> Number of tab stops <TabStop Begin definition of tab <TSX 0.25"> Tab position <TSType Left > Tab type <TSLeaderStr `'> Tab leader (none) > # end of TabStop
In MIF file In Paragraph Designer
<PgfUseNextTag No > Turn off Next Tag feature <PgfNextTag `'> Next Tag name (none)
The Default Font properties are defined as follows in the Paragraph Designer.
Using MIF Statements
22ADOBE FRAMEMAKER 6.0
The following table shows the corresponding MIF statements:
In MIF file In Paragraph Designer
<PgfFont <FFamily `Times'> Family <FSize 12.0 pt> Size <FEncoding> <FAngle `Regular'> Angle <FWeight `Regular'> Weight <FLanguage> Language <FVar `Regular'> Variation <FColor `Black'> Color <FDW 0.0 pt> Spread <FStretch 100%> Stretch <FUnderlining NoUnderlining > Underline
In MIF file In Paragraph Designer
<FOverline No > Overline <FStrike No > Strikethrough <FChangeBar No > Change Bar <FPosition FNormal > Superscript/Subsc rip t <FCase FAsTyped > Capitalization <FPairKern Yes > Pair Kern <FT sume No> Tsume (Asian systems only) > # end of PgfFont
The Pagination properties are defined as follows in the Paragraph Designer.
Using MIF Statements
23ADOBE FRAMEMAKER 6.0
The following table shows the corresponding MIF statements:
In MIF file In Paragraph Designer
<PgfPlacement Anywhere > Start <PgfWithNext No > Keep With Next <PgfWithPrev No > Keep With Previous <PgfBlockSize 1> Widow/Orphan Lines <PgfPlacementStyle Normal > Format (paragraph placement) <PgfRunInDefaultPunct `. '> Run-in Head Default Punctuation (a period followed by an em space)
The Numbering properties are defined as follows in the Paragraph Designer.
Using MIF Statements
24ADOBE FRAMEMAKER 6.0
The following table shows the corresponding MIF statements:
In MIF file In Paragraph Designer
<PgfAutoNum Yes > Turn on Autonumber <PgfNumFormat `<n+\>.\\t' > Autonumber Format (a number followed by a period and a tab) <PgfNumberFont `' > Character Format (Default ¶ Format) <PgfNumAtEnd No > Position (Start of Paragraph)
The Advanced properties are defined as follows in the Paragraph Designer.
Using MIF Statements
25ADOBE FRAMEMAKER 6.0
The following table shows the corresponding MIF statements:
In MIF file In Paragraph Designer
<PgfHyphenate Yes > Automatic Hyphenation (on) <HyphenMaxLines 2> Max. # Adjacent <HyphenMinWord 5> Shortest Word <HyphenMinPrefix 3> Shortest Prefix <HyphenMinSuffix 3> Shortest Suffix <PgfMinWordSpace 90> Minimum Word Spacing <PgfOptWordSpace 100> Optimum Word Spacing <PgfMaxWordSpace 110> Maximum Word Spacing <PgfLetterSpace Yes > Allow Automatic Letter Spacing <PgfTopSeparator `'> Frame Above <PgfBotSeparator `'> Frame Below
The Table Cell properties are defined as follows in the Paragraph Designer.
Using MIF Statements
26ADOBE FRAMEMAKER 6.0
The following table shows the corresponding MIF statements:
In MIF file In Paragraph Designer
<PgfCellAlignment Top > Cell Vertical Alignment <PgfCellMargins 0.0 pt 0.0 pt
0.0 pt 0.0 pt> <PgfCellTMargi nFi xed No > Top <PgfCellBMarginFixed No > Bottom <PgfCellLMarginFixed No > Left <PgfCellRMarginFixed No > Right
Cell Margins

Adding a Paragraph Catalog

In a MIF file, you define a Paragraph Catalog by using a PgfCatalog statement. The Paragraph Catalog contains one or more paragraph formats, which are defined by Pgf statements. A PgfCatalog statement looks like this:
<PgfCatalog
<Pgf
> # A paragraph format description
<Pgf
> # More paragraph formats
> # end of PgfCatalog
The Pgf statement describes a complete paragraph format. For example, the sample file pgfcat.mif stores the paragraph format 1Heading in the Paragraph Catalog:
Using MIF Statements
<MIFFile 6.00> # Hand generated <PgfCatalog
<Pgf
<PgfTag `1Heading'> <PgfUseNextTag Yes > <PgfNextTag `Body'> <PgfAlignment Left > <PgfFIndent 0.0"> <PgfLIndent 0.0"> <PgfRIndent 0.0"> ...
>#endofPgf
> # end of PgfCatalog
If you open pgfcat.mif in a FrameMaker product, youll see that t he Paragrap h 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.
27ADOBE FRAMEMAKER 6.0
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.

Applying a paragraph format

To apply a format from the Paragraph Catalog to a paragraph, use the PgfTag statement to include the format tag na me within the Para statement. For example, to apply the previously defined format 1Heading to a paragraph, use the following statements:
<Para
<PgfTag `1Heading'> <ParaLine
<String `This line has the format called 1Heading.'>
> # end of ParaLine
>#endofPara
To apply a format from the Paragraph Catalog and then locally override some properties, use a partial Pgf statement within the Para statement. The following MIF example applies the paragraph format 1Heading, then changes the alignment:
Using MIF Statements
<Para
<PgfTag `1Heading'> <Pgf
<PgfAlignment Center> >#endofPgf <ParaLine
<String `This line is centered.'> > # end of ParaLine
>#endofPara
To locally define a paragraph format, include a complete Pgf statement within the Para statement:
<Para
<Pgf
<PgfTag `2Heading'>
<PgfUseNextTag Yes >
<PgfNextTag `Body'>
<PgfAlignment Left >
<PgfFIndent 0.0">
<PgfLIndent 0.0">
... >#endofPgf <ParaLine
<String `A locally formatted heading'> > # end of ParaLine
>#endofPara
28ADOBE FRAMEMAKER 6.0
For a complete description of Pgf property statements, see page 73.

How paragraphs inherit properties

Paragraphs can inherit properties from other paragraphs in a MIF file. If a Pgf statement does not provide values for each paragraph property, it acquires any property values explicitly defined in a previous Pgf statement. Because the MIF interpreter sequentially reads MIF files, it uses the most recently defined Pgf statement that occurs before the current statement in the file.
For example, the following MIF cod e applies the default format named Body to the first paragraph in a document and locally overrides the paragraph font:
Using MIF Statements
<Para <Pgf <PgfTag `Body'>
<PgfFont
<FWeight `Bold'>
> # end of PgfFont
> # end of Pgf
<ParaLine
<String `First paragraph in document.'>
> # end of ParaLine
> # end of Para <Para
<ParaLine
<String `Second paragraph in document.'>
> # end of ParaLine
> # end of Para
The previous example is in the sample file pgffmt.mif. If you open this file in a FrameMaker product, youll find that the second paragraph also has the new font property.
29ADOBE FRAMEMAKER 6.0
A paragraph property remains in effect until the property value is changed by a subsequent MIF statement. T o c hange a paragrap h prope rty to another s tate, su pply a Pgf statement containing the paragraph property statement set to the new state.
Thus, in the previous example, you could change the font from Bold to Regular in a Pgf statement in the second Para statement:
<Para
<Pgf
<PgfFont
<FWeight `Regular'>
> # end of PgfFont >#endofPgf <ParaLine
<String `Second paragraph in document.'> > # end of ParaLine
>#endofPara
To summarize, p aragraphs inherit fo rmats as follows:
Formats in the Paragraph Catalog inherit properties from the formats above them.
Locally defined paragraph formats inherit properties from previously specified formats.
T ext lines in anchored frames inherit font properties from previously specified formats, including the last
format in the Paragraph Catalog and previous text li nes.
Using MIF Statements

Tips

The following hints may help you minimize the MIF statements for paragraph formats:
If possible, use the formats in the default Paragraph Catalog (dont 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 a FrameMaker product to
ease the task of creating a catalog. Create a template in a FrameMaker product, save the template as a MIF file, and include the Paragraph Catalog in your document. For instructions, see Including template files on page 55.

Creating and applying character formats

You can define character formats locally or store them in the Character Catalog and apply the formats to text selectio ns. Cr eating and applyi ng charact er form ats is v ery similar t o cre ating and ap plying p aragraph formats as described in the previous section. Because the two methods are similar, this section just summa­rizes how to create and apply character formats.
30ADOBE FRAMEMAKER 6.0
In a MIF file, the Character Catalog is contained in a FontCatalog statement. The FontCatalog statement contains named character formats in a list of Font sta tements. A FontCatalog statement looks like this:
<FontCatalog
<Font...> # Describes a character format <Font...> # Describes a character format
> # end of FontCatalog
A Font statement specifies the properties of a character format; these are the same properties specified in the Character Designer. The Font statement is just like the PgfFont statement that you use to define the default font in a paragraph format. See PgfFont and Font statements on page78 for a complete description of a Font statement.
To apply a predefin ed character format to text, use the FTag statement:
<MIFFile 6.00> #Hand generated <FontCatalog
<Font
<FTag `Emphasis'>
<FAngle `Italic'> >#endofFont
> # end of FontCatalog <Para
<PgfTag `Body'> <ParaLine
<String `You can format characters within a paragraph by '>
<Font
<FTag `Emphasis'>
>#endofFont
<String `applying'>
<Font
<FTag `'>
>#endofFont
<String ` a character format from the character catalog.'> > # end of ParaLine
>#endofPara
Using MIF Statements
31ADOBE FRAMEMAKER 6.0
Remember to include a second Font statement to end the scope of the applied character format. To locally define a character format, use a complete Font statement:
<Para
<PgfTag `Body'> <ParaLine
<String `You can also format characters by '>
<Font
<FTag `Emphasis'>
character property statements
>#endofFont
<String `applying'>
<Font
<FTag `'>
>#endofFont
<String ` a locally defined character format.'> > # end of ParaLine
>#endofPara
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.
Using MIF Statements

Creating and formatting tables

You can create tables in FrameMaker documents, edit them, and apply table formats to them. Tables can have heading rows, body rows, and footing rows. Each row consists of table cells that contain the actual contents of the table.
Title
Coffee Bags Status Price per bag
Heading row
Brazil Santos 50 Prompt $455.00
32ADOBE FRAMEMAKER 6.0
Celebes Kalossi 29 In Stock $924.00 Colombian 25 In Stock $474.35
$1,853.35
Body rows
Footing row
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 de fined 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
placeholder, or anchor, for the table instance. It refers to the table instances unique ID.
Specify the table forma t by usin g a TblFormat statement. Formats can be named and stored in the Table
Catalog, which is defined by a TblCatalog state ment, or locally defined within a table.

Creating a table instance

All table instances in a document are contained in a Tbls statement. The Tbls statement contains a list of Tbl statements, one for each table instance. A document can have only one Tbls statement, which must
occur before any of the table anchors in the text flow. The Tbl statement contains the actual contents of the table cells in a list of MIF substatements. Like other
MIF statements, this list can be quite long. The following is a template for a Tbl statement:
Using MIF Statements
<Tbl
<TblID
> # A unique ID for the table <TblFormat <TblNumColumns <TblColumnWidth <TblH # The heading; omit if no heading
<Row # One Row statement for each row
<Cell
> # end of Row
<TblBody # The body of the table
<Row > # end of TblBody <TblF # The footer; omit if no footer
<Row >#endofTblF
>#endofTbl
> # The table format
> # Number of columns in this table--required
> # Column width, one for each column
> # One statement for each cell in the row
> # One for each row in body
> # One for each row in footer
The TblID statement assigns a unique ID to the table instance. The TblFormat statement provides the table format. You can use the TblFormat statement to apply a table format from the Table Catalog, apply a format from the catalog and override some of its properties, or completely specify the table format locally. Because the tables in a document often share similar characteristics, you usually store table formats in the Table Catalog. Table instances can always override the applied format.
33ADOBE FRAMEMAKER 6.0
The TblNumColumns statement specifies the number of columns in the table instance. It is required in every table.
The TblH, TblBody, and TblF statements contain the table heading, body, and footer rows. If a table does not have a heading or footing, omit the statements.
Here’s an example of a simple table that uses a default format from the Table Catalog. The table has one heading row, one body row, and no footing rows:
Coffee Price per Bag
Brazil Santos $455.00
You can use the following MIF statements to create this simple table:
<MIFFile 6.00> <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
<Cell # First cell in row
<CellContent
<Para # Cells can contain paragraphs
<PgfTag `CellHeading'> # Applies format from Paragraph Catalog <ParaLine
<String `Coffee'> # Text in this cell
>
> # end of Para
> # end of CellContent >#endofCell <Cell # Second cell in row
<CellContent
<Para
<PgfTag `CellHeading'> <ParaLine
<String `Price per Bag'>
>
> # end of Para
> # end of CellContent >#endofCell
>#endofRow > # end of TblH <TblBody # Table body
<Row # Begin row
<Cell # First cell in row
<CellContent
<Para
<PgfTag `CellBody'>
Using MIF Statements
34ADOBE FRAMEMAKER 6.0
<ParaLine
<String `Brazil Santos'>
>
> # end of Para
> # end of CellContent >#endofCell <Cell # Second cell in row
<CellContent
<Para
<PgfTag `CellBody'> <ParaLine
<String `$455.00'>
>
> # end of Para
> # end of CellContent >#endofCell
>#endofRow
> # end of TblBody
>#endofTbl
>#endofTbls
Using MIF Statements
35ADOBE FRAMEMAKER 6.0
A table cell is a text column that contains an untagged text flow not connected to any other flows. Y o u can put any kind of text or graphics in a table cell. The cell automatically grows vertically to accommodate the inserted text or graphic; however, the width of the column remains fixed.

Adding a table anchor

To indicate the position of a table in the text flow, you must add an ATbl statement. The ATbl statement refers to the unique ID specified by the TblID statement in the table instance. For example, to insert the table defined in the previous example, you would add the following statements to the minimal MIF file:
<Para
<ParaLine
<String `Coffee prices for January'> <ATbl 1> # Matches table ID in
> # end of ParaLine
>#endofPara
This example is in the sample file table.mif. If you open this file in a FrameMaker product, youll 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:
Tbl
statement
Using MIF Statements
<Para
<ParaLine
<String `Coffee prices '> <ATbl 1> <String `for January'>
> # end of ParaLine
>#endofPara
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 stat ement m ust exac tly mat ch 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 int eger fr om 1 to 65535, inclusi v e. The only other stat ements that re quir e 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
.
36ADOBE FRAMEMAKER 6.0
Rotated cells
A table can have rotated cells and straddle cells. The following table includes rotated cells in the heading row:
Coffee
Price
Brazil Santos $455.00
In a MIF file, a c ell that is rotat ed simp ly incl udes a CellAngle statement that specifies the angle of rotation:
<Cell
<CellAngle 270>
<CellContent
>#endofCell
>
Cells can only be rotated by 90, 180, or 270 degrees. Cells are rotated clockwise.
Using MIF Statements
Straddle cells
The contents of a straddle cell cross cell borders as if there were a single cell. You can straddle cells horizon­tally or vertically. The following table includes a heading row that straddles two columns:
Brazilian Coffee
Coffee Price per Bag
Brazil Santos $455.00
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 subse­quent Cell statements 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'> >
>#endofPara
> # end of CellContent >#endofCell <Cell # Second cell appears, even though
<CellContent # it is empty.
<Para
<PgfTag `CellHeading'> <ParaLine >
>#endofPara
> # end of CellContent >#endofCell
>#endofRow
37ADOBE FRAMEMAKER 6.0
If the cell straddles rows, the substatement is CellRows.

Creating a table format

A table format includes the following properties:
The properties specified by the Table Designer
These include the row and column ruling and shading styles, the position of text within cell margins, the table’s placement within the text column, and the table title position.
The number and widths of columns
Using MIF Statements
The paragraph format of the first paragraph in the title (if there is one)
The paragraph format of the topmost paragraph in the heading, body, and footing cell of each column
For example, you could change the format of the previous table to include shaded rows and a different ruling style:
Coffee Price per Bag
Brazil Santos $455.00 Celebes Kalossi $924.00 Colombian $474.35
The following MIF statements define this table format:
<TblFormat
<TblTag `Coffee Table'> # Every table must have at least one TblColumn statement. <TblColumn
<TblColumnNum 0> # Columns are numbered from 0.
<TblColumnWidth 2.0"> # Width of first column. > # end of TblColumn <TblColumn
<TblColumnNum 1> # Second column.
<TblColumnWidth 1.5"> # Width of second column. > # end of TblColumn <TblCellMargins 6.0 pt 6.0 pt 6.0 pt 4.0 pt> <TblLIndent 0.0"> # These are exactly like paragraph <TblRIndent 0.0"> # format properties. <TblAlignment Center > <TblPlacement Anywhere > <TblSpBefore 12.0 pt> <TblSpAfter 12.0 pt> <TblBlockSize 1> <TblHFFill 15> # No fill for heading row. <TblHFColor `Black'> <TblBodyFill 5> # Use 10% gray fill for main body rows. <TblBodyColor `Black'> <TblShadeByColumn No > # Shade by row, not by column. <TblShadePeriod 1> # Shade every other row.
38ADOBE FRAMEMAKER 6.0
<TblXFill 15> # No fill for alternate rows. <TblXColor `Black'> # Color for alternate rows. <TblAltShadePeriod 1> <TblLRuling `Thin'> # Use thin left outside rule. <TblBRuling `Thin'> # Use thin bottom outside rule. <TblRRuling `Thin'> # Use thin right outside rule. <TblTRuling `Medium'> # Use medium top outside rule. <TblColumnRuling `Thin'> # Use thin rules between columns. <TblXColumnRuling `Thin'> <TblBodyRowRuling `Thin'> # Use thin rules between rows. <TblXRowRuling `Thin'> <TblHFRowRuling `'> # No rules between heading rows. <TblSeparatorRuling `Medium'> # Use medium rule after heading row. <TblXColumnNum 1> <TblRulingPeriod 4> <TblLastBRuling No > <TblTitlePlacement InHeader> # Place title above table. <TblTitlePgf1 # Paragraph format for first
<PgfTag `TableTitle'> # paragraph in title. > # end of TblTitlePgf1
Using MIF Statements
39ADOBE FRAMEMAKER 6.0
<TblTitleGap 6.0 pt> # Gap between title and table. <TblInitNumColumns 2> # Initial number of rows and <TblInitNumHRows 1> # columns for new tables with <TblInitNumBodyRows 4> # this format. <TblInitNumFRows 0> <TblNumByColumn No >
> # end of TblFormat
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.
A table instance must have at least one TblColumn statement. A table can use a f ormat from the Table Catalog that includes a TblColumn statement or it can include a local TblFormat statement tha t supp li es th e TblColumn statement.

Adding a Table Catalog

Y ou can store table formats in a T able Catalog by using a TblCatalog statement. A document can have only one TblCatalog statement, which must occur before the Tbls statement.
The TblCatalog statement contains one TblFormat statement for each format, as shown in the following template:
<TblCatalog
<TblFormat <TblFormat
> # end of TblCatalog
… …
> >
Using MIF Statements
As with the Paragraph Catalog, if your MIF file does not provide a Table Catalog, the MIF interpreter supplies a default catalog and formats. If you do provide a Table Catalog, your defined table formats supercede those in the default Table Catalog.
You can add a minimal table format to the catalog by simply supplying a table format tag name. The MIF interpreter supplies a set of default values to the tables properties when it reads in the MIF file.
The ruling styles in a table format are defined in a separate catalog called the Ruling Catalog. Y ou can define your own Ruling Catalog with the RulingCatalog statement. Whether you use the default ruling styles or create your own, substatements that refer to ruling styles, such as the TblLRuling statement, must use the name of a ruling style from the Ruling Catalog. See RulingCatalog statement on page 93.

Applying a table format

You can apply a table format from the Table Catalog or you can define a table format locally. To apply a table format from the Table Catalog, use the TblTag statement within the Tbl statement:
<Tbls
<Tbl
<TblID 1>
<TblTag `Format A'> # Tag of format in Table Catalog
<TblNumColumns 1>
40ADOBE FRAMEMAKER 6.0
<TblBody
...
> # end of TblBody >#endofTbl
>#endofTbls
To locally define a table format, use a complete TblFormat statement:
<Tbls
<Tbl
<TblID 1>
<TblFormat
<TblTag ` '> # Every table must have one TblColumn statement. <TblColumn
<TblColumnNum 0> <TblColumnWidth 1.0">
> # end of TblColumn
table property statements
> # end of TblFormat >#endofTbl
> # end of Tbls
Using MIF Statements

Creating default paragraph formats for new tables

You can use the TblFormat and TblColumn statements to define default paragraph formats for the columns in new tables. These default formats do not affect tables that are defined within the MIF file; they only affect tables that the user inserts after the MIF file has been opened in a FrameMaker product. Your filter or application should provide these defaults only for documents that might be edited later.
For example, the following MIF code assigns a paragraph format named Description to body cells in new tables that are given the format called Coffee Table:
<TblFormat
<TblTag `Coffee Table'> <TblColumn
<TblColumnNum 0>
<TblColumnWidth 1.0">
<TblColumnBody
<PgfTag `Description'>
> # end of TblColumnBody > # end of TblColumn
> # end of TblFormat
41ADOBE FRAMEMAKER 6.0

Tables inherit properties differently

Tables inherit formatting properties somewhat differently than other document components. A table without an applied ta bl e fo rm at doe s not i n her it o ne f r o m a p re viou sl y d efi ne d tab le. Instead, it get s a set of default properties from the MIF interpreter. Thus, if you apply a named format to a table, a following table will not inherit that format.
Paragraphs in ta ble cells still inh erit properties from previously defined paragraph formats. If you give a table cell a certain paragraph style, all subsequent cells inherit the same property unless it is explicitly reset. Table cells can inherit paragraph properties from any previously specified paragraph format, including other tables, paragraphs, or even the Paragraph Format catalog.

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.

Specifying page layout

FrameMaker documents have two kinds of pages that determine the position and appearance of text in the document: body pages and master pages.
Using MIF Statements
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 pages text frames and the page background, such as headers, footers, and graphics.
Untagged background text frame
42ADOBE FRAMEMAKER 6.0
Tagged template text frame
Untagged background text frame
Master page Body page
On body pages, you type in a column of a tagged text frame.
T ext frames define the layout of the document’s text on a page. A text frame can arrange text in one or more columns. I n MIF , a te xt frame is repr esented b y 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.
A FrameMaker product 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.

Using the default layout

If you dont need to control the page layout of a document, you can use the default page layout by putting all of the document’s text into a TextFlow statement. When reading the file, the MIF interpreter creates default master pages and body pages. The MIF file creates a single-column text frame for the body pages to contain the documents text. The MIF interpreter associates the text flow with this text frame.
The following example is in the sample file defpage.mif:
Using MIF Statements
<MIFFile 6.00> # Hand generated <TextFlow # All document text is in this text flow.
<TFTag `A'> # Make this a tagged text flow. <TFAutoConnect Yes> # Automatically connect text frames. <Para
<ParaLine
<String `This paragraph appears on a body page within a'> <String ` text flow tagged A.'>
> # end of ParaLine >#endofPara
> # end of TextFlow # End of MIFFile
A text flow must be tagged, and it must include <TFAutoConnect Yes>; otherwise, when the user adds text to the document, the FrameMaker product wont creat e additional pages and text frames to hold the added text.

Creating a simple page layout

If you want some control of the page layout but do not want to create master pages, you can use the Document substatements DPageSize, DMargins, and DColumns to specify the page size, margins, and number of columns in the text frame in the document. The MIF interpreter uses this information to create master pages and body pages. These statements correspond to the Normal Page Layout options.
43ADOBE FRAMEMAKER 6.0
The following example is in the sample file columlay.mif:
<MIFFile 6.00> # Hand generated <Document
<DPageSize 7.5" 9.0"> # Set the page size. <DMargins 2" 1" .5" .5"> # Set the margins. <DColumns 1> # Set the number of columns in the default
#textframe.
<DTwoSides No> # Set document to single-sided.
> # end of Document <TextFlow # Document text is in this text flow.
<TFTag `A'> # Make this a tagged text flow. <TFAutoConnect Yes> # Automatically connect text frames. <Para
<ParaLine
<String `This paragraph appears on a body page within a'> <String ` text flow tagged A.'>
> # end of ParaLine >#endofPara
> # end of TextFlow # End of MIFFile
Using MIF Statements

Creating a single-sided custom layout

If the document that youre importing needs a custom master page, you must specify a custom page layout. For example, a document might need a master page for background graphics.
To create a custom layout for a single-sided document, you do the following:
Create a right master page.
Create a single, empty body page.
Create an empty, tagged text flow that is linked to the master page.
Create a tagged text f l ow that is linked to the body page and contains all the documents text.
The MIF code shown in this section is also in the sample file snglpage.mif.
To create the master page
To create a master page layout, use the Page statement to create the page and use the TextRect statement to create the text frame.
To specify the number of text columns in the text frame, use the TRNumColumns statement. By default, if the text frames specification does not include this statement, the text frame has only one column.
44ADOBE FRAMEMAKER 6.0
This example sets up a right master page with a text frame containing one text column:
<MIFFile 6.00> # Hand generated <Document
<DPageSize 7.5" 9.0"> # Set the document page size. <DTwoSides No> # Make this a single-sided document.
> # end of Document <Page # Create a right master page.
<PageType RightMasterPage> <PageTag `Right'> <TextRect # Set up a text frame.
<ID 1> # Give the text frame a unique ID. <Pen 15> # Set the pen style. <Fill 15> # Set the fill pattern (none). <ShapeRect 2" 1" 5" 7.5"> # Specify the text frame size. <TRNumColumns 1> # Specify number of text columns. <TRColumnGap 0.0"> # Specify gap between text columns.
> # end of TextRect
> # end of Page
The ID statement assigns a unique ID number to this text frame. You must give text frames a unique ID in a MIF file; other objects that require unique I Ds are anchored graphic frames and table instances .
To create an empty body page
To create the body page, use the Page statement. Then use the TextRect statement to create a text frame with dimensions that are exactly the same as the text frame on the master page. Give the text frame a unique ID:
Using MIF Statements
<Page
<PageType BodyPage> <PageBackground `Default'> <TextRect
<ID 2> # This text frame has a unique ID. # The body page dimensions match those of the master page. <ShapeRect 2" 1" 5" 7.5"> <TRNumColumns 1> # The column layout must also match. <TRColumnGap 0.0">
> # end TextRect
>#endPage If the dimensions (specified by the ShapeRect statement) and column layout (specified by the TRNum- Columns and TRColumnGap statements) of the master page and body page do not match, the body page will not use the page layout from the master page. Instead, the body page will use the page layout defined for the body page.
To create the text flow for the master page
The text flow for the master page is not contained in the Page statement; instead, it is contained in a TextFlow statement that is linked to the text frame on the master page. The Page statements must come before any TextFlow statements.
45ADOBE FRAMEMAKER 6.0
Link the text flow to the master page’s text frame by using the TextRectID statement to refer to the text frame’s unique ID:
<TextFlow
<TFTag `A'> # The text flow must be tagged. <TFAutoConnect Yes> # Autoconnect must be turned on. <Para
<ParaLine
<TextRectID 1> # Refers to text frame ID on master page.
> # end of ParaLine >#endofPara
> # end of TextFlow
The text flow for the master page must be empty. Be sure to give the text flow the same flow tag that you give the text flow for the body page and to turn on the autoconnect feature.
To create the text flow for the body page
The text flow for the body page is containe d in a separate TextFlow statement that is linked to the body page’s text frame. The text flow contains the actual text of the document in one or more Para statements. If text overflows the first text frame, the MIF interpreter creates another body page with a layout that matches the right master page and pours text into the body pages text frame.
Using MIF Statements
<TextFlow
<TFTag `A'> <TFAutoConnect Yes> <Para
<TextRectID 2>
<PgfTag `Body'>
<ParaLine
<String `This appears on a body page within a text flow'> <String ` tagged A.'>
> # end of ParaLine > # end of Para
> # end of TextFlow
Why one body page?
The method you use to create body pages is different from the method that a FrameMaker product uses when it writes a MIF file. When a FrameMaker product writes a file, it knows where each page break occurs in the file, so it creates a series of Page statements that each contain the text and graphics located on that page. When you are importing a document, you do not know where page breaks will fall, so you cannot break the document into a series of Page statements. Instead, you simply create one text flow for the entire document and link it to a single, empty body page. When the MIF interpreter reads the file, it creates as many pages as the document requires and gives each page the background specified by the master page.
46ADOBE FRAMEMAKER 6.0

Creating a double-sided custom layout

If you import a two-sided document, you might need to specify different page layouts for right and left pages. For example, a document might have a wider inside margin to allow extra room for binding. You can do this in a MIF file by creating and linking a second master page and a second body page. As with a single-sided layout, all the documents te xt is in one text flow. When the MIF interpreter reads the file, it adds alternate left and right body pages to the document. You can control whether the document starts with a right page or a left page by using the DParity statement.
For an example of a document with left and right master pages, see the sample file dblpage.mif.

Creating a first master page

In addition to left and right master pages, you can create custom master page layouts that you can apply to body pages. For example, some books have a special layout for the first page in a chapter.
In a MIF file, you can create as many master pages as you need, but you cannot apply all of them to the appropriate body page s. Y ou can only apply a left page, a right page, and one additional custo m master page to the body pages. Furthermore, you can only link the custom master page to the first page in a document.
When you are importing a document into a FrameMaker product, you do not know how much text the MIF interpreter will put on a page; you can only determine where the first page begins. When the inter­preter reads the MIF file, it applies the custom master page layout to the first page in the document. For each subsequent page, it uses the DParity and DTwoSides statements to determine when to add a left page and when to add a right page.
Using MIF Statements
Other master page layouts that youve 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.

Adding headers and footers

Headers and footers are defined in untagged text flows on the master pages of a document. When a FrameMaker product creates default master pages, it automatically provides untagged text flows for headers and footers.
If you are importing a document th at has headers and footers, you define additional text frames on the master pages. Link an untagged text flow to each additional text frame on the master page. The untagged text flow contains the text of the header or footer.
For an example of a MIF file with a footer, see the sample file footers.mif. Note that the footer text flow contains a variable; you can place variables only in untagged text flows on a master page, not in tagged flows.
47ADOBE FRAMEMAKER 6.0

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. A FrameMaker product provides both predefined marker types and markers that you can define as needed. (For more information about markers and marker types, see page 137
Within a FrameMaker document, you insert a marker by choosing the Marker command from the Special menu. In a MIF fil e y ou i nse rt a mark e r b y usi n g 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
>#endofPara
The MText statement contains the complete index entry. When a FrameMaker product writes a Marker statement, the statement includes an MCurrPage
substatement with the page number on which the marker appears. Y ou 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.
.)
Using MIF Statements

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.
The format of a cross-reference determines its appearance and the wording. Cross-reference formats include building blocks, instructions to a FrameMaker product about what information to extract from the reference source. A c ommon building block is <$pagenum>, which a FrameMaker product replaces with the page number of the reference source.
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.
48ADOBE FRAMEMAKER 6.0

Creating cross-reference formats

The cross-reference formats for a document are defined in one XRefFormats statement. A document can have only one XRefFormats statement.
The XRefFormats statement contains one or more XRefFormat statements that define the cross-reference formats. A cross-referen ce format consists of a name and a de finition.
<XRefFormats
<XRefFormat
<XRefName `Page'> <XRefDef `page\x11 <$pagenum\>'>
> # end of XRefFormat
> # end of XRefFormats
The name can be any string allowed in a MIF file (see Character set in strings on page 13). In this example, a nonbreaking space (\x11) appears between the word “page” and the page number. Each cross-reference format must have a unique name; names are case-sensitive. The cross-reference definition contains text and cross-reference building blocks. See your user’s manual or the online Help system for a list of building blocks.

Inserting the reference source marker

To mark the location of the reference source, insert a Marker statement at the beginning of the reference source. The following example creates a cross-reference to a heading:
Using MIF Statements
<Para
<PgfTag `Heading'> <ParaLine
<Marker
<MType 9> # Identifies this as a cross-reference
<MText `34126: Heading: My Heading'> # Cross-reference source > # end of Marker <String `My Heading'>
> # end of ParaLine
>#endofPara
The <MT ype 9> statement identifies this as a cross-reference marker; it is required. The MText statement contains the cross-reference source text, which must be unique. When a FrameMaker product writes a cross-reference, it adds a unique number and the paragraph tag to the MText statement, as shown in the previous example. While the number is not required, it guarantees that the cross-reference points to a unique source.

Inserting the reference point

The final step in creating a cross-reference is to insert an XRef statement at the position in text where the cross-reference should appear. The XRef statement provides the name of the cross-reference format (defined in XRefFormat), the source text, and the pathname of the file containing the source:
49ADOBE FRAMEMAKER 6.0
<Para
<PgfTag `Body'> <ParaLine
<String `This is a cross-reference to '> <XRef
<XRefName `Page'> # Cross-reference format
<XRefSrcText `34126: Heading: My Heading'> # Source text
<XRefSrcFile `'> # File containing source > # end of XRef <XRefEnd> <String `.'>
> # end of ParaLine
>#endofPara
The format name must exactly match the name of a format defined in XRefFormats. The source text must be unique and must match the string in the MText statement in the corresponding reference point marker . The XRefSrcFile statement is only required if the reference source is in a different file from the reference point. It must be a valid MIF filename (see Device-independent pathnames on page 13).
You must also supply an XRefEnd statement after the XRef statement.

How a FrameMaker product writes cros s-references

When a FrameMaker product writes a cross-reference, it provides the actual text that will appear at the reference point. This information is not required in a MIF input file. The previous example would be written as follows:
Using MIF Statements
<XRef
<XRefName `Page'> <XRefSrcText `34126: Heading: My Heading'>
<XRefSrcFile `'> >#endofXRef <String `page'> # The text that appears in the document; <Char HardSpace > # in this case, a page number followed a <String `1'> # hard space and the number 1 <XRefEnd> # End of cross-reference text
If you do include the text of the cross-reference, make sure that the XRefEnd statement follows the text. A FrameMaker pr od uc t c o ns i de r s everything betw ee n t h e XRef statement and the XRefEnd statement to be part of the cross-reference.

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.
50ADOBE FRAMEMAKER 6.0
A FrameMaker product provides two kinds of variables: system variables that are predefined by the FrameMaker product, and user variables that are defined by the user. System variables contain building blocks that allow a FrameMaker product to extract certain information 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 variables definition but you cannot create new system variables. User variables contain only text and formatting information.
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 sta tement.

Defining user variables

All variable definitions for a document are contained in a single VariableFormats statement. The Variable- Formats statement contains a VariableFormat statement for each document variable. The VariableFormat
statement provides the variable name and definition.
<VariableFormats
<VariableFormat
<VariableName `Product Number'>
<VariableDef `A15-24'>
> # end of VariableFormat > # end of VariableFormats
Using MIF Statements
The variable name must be unique; case and spaces are significant. For a user variable, the variable definition can contain only text and character formats; you can provide any character format defined in the Character C at alog. T he f oll o wing example appli es th e de fa ul t c ha ract e r fo rmat Em p has is to a variable:
<VariableFormat
<VariableName `Product Number'>
<VariableDef `<Emphasis\>A15-24<Default \xa6 Font\>'>
> # end of VariableFormat
You can speci fy c harac t er form ats as bui ld ing bloc ks ; th at i s, the c ha ract e r for mat nam e m ust be e ncl ose d in angle brackets. Because of MIF parsing requirements, you must use a backslash sequence for the closing angle bracket. You must also use hexadecimal notation for special characters in the variable definition. In this example, \xa6 is the hex notation for the paragraph symbol ( characters in strings, see page 13
.
). For more information about special

Using system variables

Whenever you open or import a MIF file, the MIF interpreter provides the default system variables. You can redefine a system variable but you cannot provide new system variables.
51ADOBE FRAMEMAKER 6.0
System variables are defined by a VariableFormat statement. For example, the following statement shows the default definition for the system variable Page Count:
<VariableFormat
<VariableName `Page Count'>
<VariableDef `<$lastpagenum\>'>
> # end of VariableFormat
System variables contain building blocks that provide certain information to a FrameMaker product. These building blocks are preceded by a dollar sign ($) and can only a ppear in system variables. Some system variables have restrictions on which building blocks they can contain. These restrictions are discussed in your users manual and in the online Help system. You can add any text and character formatting t o any system variable.

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'> > # end of Variable <String `pages.'>
> # end of ParaLine
>#endofPara
Using MIF Statements
The VariableName string must match the name of a variable format defined in the VariableFormats statement.
Variables are subject to the following restrictions:
You cannot place any variable in a tagged text flow on a master page.
The system variable Current Page # and the system variables for running headers and footers can only
appear in untagged text flows on a master page.
The system variables Table Continuation and Table Sheet can only appear in tables.

Creating conditional text

You can produce several slightly different versions of a document from a single conditional document. In a conditional document, you use condition tags to differentiate conditional text (text that is specific to one version of the document) from unconditional text (text that is common to all versions of the document).
In a MIF file, you create a conditional document as follows:
Create the condition tags and specify their format of via ConditionCatalog and Condition statements.
Apply one or more condition tags to the appropriate sections of the document via Conditional and
Unconditional statements.
Show or hide conditional text by using the CState statement.
52ADOBE FRAMEMAKER 6.0

Creating and applying condition tags

In MIF, all condition tags are defined in a ConditionCatalog statement, which contains one or more Condition statements. A Condition statement specifies the condition tag name, the condition indicators
(how conditional text appears in the document window), a color, and a state (either hidden or shown). For example, the following statements create a Condition Catalog with two conditional tags named
Summer and Winter:
<ConditionCatalog
<Condition
<CTag `Summer'> # Condition tag name <CState CHidden > # Condition state (now hidden) <CStyle COverline > # Condition indicator <CColor `Blue'> # Condition indicator
> # end of Condition <Condition
<CTag `Winter'> <CState CShown > # This condition is shown <CStyle CUnderline > <CColor `Red'>
> # end of Condition
> # end of ConditionCatalog
Using MIF Statements
To mark conditional and unconditional passages within document text, use Conditional and UnCondi­tional statements as shown in the following example:
<Para
<ParaLine
<String `Our company makes a full line of '> # 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
>#endofPara
53ADOBE FRAMEMAKER 6.0
You can apply multiple condition tags to text by using multiple InCondition statements:
<Conditional
<InCondition `Winter'> <InCondition `Summer'>
> # end of Conditional

Showing and hiding conditional text

If you are creating a MIF file for a FrameMaker product to read, you can specify whether conditional text is shown or hidden simply by setting the CState property for that condition. In the previous example, all text with the condition tag Summer is hidden and text marked with the condition tag Winter is shown.
Y ou can show all conditional text in a document by using the Document statement <DShowAllConditions Yes>. To allow selective display of conditions, use <DShowAllConditions No>.
You can turn off the display of condition indicators by using the Document statement <DDisplayOver- rides No>.
Using MIF Statements

How a FrameMaker product writes a conditional document

If you are converting a MIF file that was generated by a FrameMaker product, you need to understand how a FrameMaker product writes a file that contains hidden conditional text.
When a FrameMaker product writes a MIF file, it places all hidden conditional text in a text flow with the tag name HIDDEN. Within the document text flow, a conditional text marker, <Mark e r <MType 10>>, indicates where hidden conditional text would appear if shown.
The marker text contains a plus sign (+) followed by a unique five-digit integer. The corresponding block of hidden text is in the hidden text flow. It begins with a conditional text marker containing a minus sign (–) and a matching integer and ends with a marker containing an equal sign (=) and the same integer. One or more Para statements appear between the markers. If the hidden conditional text doesnt span paragraphs, all the text appears in one Para statement. If the hidden text spans paragraphs, each end of paragraph in the conditional text forces a new Para statement in the hidden text flow.
The following example shows how a FrameMaker product writes the sentence used in the previous example:
# This text flow contains the sentence as it appears # in the document body.
54ADOBE FRAMEMAKER 6.0
<TextFlow
<TFTag `A'> <TFAutoConnect Yes > <Para
<ParaLine
<String `Our company makes a full line of '>
# This marker indicates that hidden text appears
# in the hidden text flow.
<Marker
<MType 10> <MText `+88793'>
<MCurrPage 0> > # end of Marker <Conditional
<InCondition `Summer'> > # end of Conditional <String `cool and comfortable tank tops'> <Unconditional > ...
>#endofPara > # end of TextFlow # This text flow contains the hidden conditional text. <TextFlow
<TFTag `HIDDEN'>
<Para
<PgfEndCond Yes > <ParaLine
<Marker
<MType 10> # This marker shows the beginning of hidden text. # Its ID matches the marker ID in the body text flow. <MText `-88793'>
<MCurrPage 0> > # end of Marker <Conditional
<InCondition `Winter'> > # end of Conditional # Here's the hidden text. <String `chilly winter'> <Marker
<MType 10>
# This marker shows the end of hidden text. It must
# match the marker that begins with a minus sign (-).
<MText `=88793'>
<MCurrPage 0> > # end of Marker
> >#endofPara ...
> # end of TextFlow
Using MIF Statements
55ADOBE FRAMEMAKER 6.0

Including template files

When you write an application, such as a filter or a database publishing application, to generate a MIF file, you have two ways to include all formatting information in the file:
Generate all paragraph formats and other formatting information directly from the application.
Create a template document in a FrameMaker product, save it as a MIF file, and include the template file
in your generated MIF file. Its usually easier to create a template in a FrameMaker product than it is to generate the formatting infor-
mation directly. To create the template as a MIF file, do the following:
1 Create the template in a FrameMaker product and save it as a MIF file. 2 Edit the MIF file to preserve the formatting catalogs and the page definitions and delete the text flow. 3 Generate the text flow for your document and use the include statement to read the formatting infor-
mation from the template.
Using MIF Statements

Creating the template

Create the template document in a FrameMaker product. Define the paragraph and character formats, table formats, variable and cross-reference formats, master pages, and any other formatting and page layout information that your document needs. Generally , a templa te contains some sample lines that illus­trate each format in the document. Save the completed template as a MIF file. For more information about creating templates, see your users manual.

Editing the MIF file

You need to edit the resulting MIF file to extract just the formatting and page layout information.
1 Delete the MIFFile statement. 2 Search for the first body page and locate its TextRect statement. 3 To find the first body page, search for the first occurrence of <PageType BodyPage>. Suppose the first
body page in your MIF file looks like this:
<Page
<Unique 45155> <PageType BodyPage > <PageNum `1'> <PageSize 8.5" 11.0"> <PageOrientation Portrait > <PageAngle 0.0> <PageBackground `Default'> <TextRect
<ID 7>
<Unique 45158>
<Pen 15>
<Fill 15>
<PenWidth 1.0 pt>
<ObColor `Black'>
<DashedPattern
<DashedStyle Solid> > # end of DashedPattern <ShapeRect 1.0" 1.0" 6.5" 9.0"> <TRNext 0>
> # end of TextRect
> # end of Page
56ADOBE FRAMEMAKER 6.0
The ID for the TextRect on this body page is 7. Remember this ID number. If there is more than one TextRect on the body page, remember the ID of the first one.
4 Locate the text flow associated with the TextRect statement on the first body page and delete it.
Suppose you are working with the previous example. You would search for the statement <TextRectID 7> to locate the text flow. It might look similar to the following:
Using MIF Statements
<TextFlow
<Notes >#endofNotes <Para
<Unique 45157> <PgfTag `MyFormat'> <ParaLine
<TextRectID 7>
<String `A single line of text.'> >
>#endofPara
> # end of TextFlow
Delete the entire text flow.
5 From your application, generate a MIF file that includes the edited template file.
Suppose the edited MIF file is called mytemplate.mif. Your application would generate the following two lines at the top of any new MIF file:
57ADOBE FRAMEMAKER 6.0
<MIFFile 6.00> # Generated by my application include (mytemplate.mif)
The include statement is similar to a C #include directive. It causes the MIF interpreter to read the contents of the file named mytemplate.mif. For more information about filenames in MIF , see Device-independent pathnames on page13.
6 From your application, generate a text flow that contains the entire document contents.
The text flow should use the ID and tag name of the text flow you deleted from the template file; this associates the new text flow with the first body page in the template.
The entire generated MIF file would look something like this:
<MIFFile 6.00> # Generated by my application include (mytemplate.mif) <TextFlow
<TFTag `A'> <TFAutoConnect Yes> <TextRectID 7> <Para
<ParaLine
<String `This is the content of the generated document.'> >
>#endofPara
> # end of TextFlow
A user can open the generated MIF file to get a fully formatted FrameMaker document.
Using MIF Statements

Setting View Only document options

You can use MIF statements to control the display of View Only documents. A View Only document is a locked FrameMaker hypertext document that a user can open, read, and print but not edit. You can use MIF statements to control the appearance and behavior of the doc u ment window and to control the behavior of cross-references in locked documents.
If you plan to display the View Only document in FrameReader, you need to save the MIF file as a FrameMaker document. FrameReader cannot read MIF files.
The MIF statements for View Only documents are intended for hypertext authors who want more control over hypertext documents. They do not have corresponding commands in the user interface.
The View Only MIF statements described in this section must appear in a Document statement. These statements have no effect in an unlocked document. Make sure that the Document stat ement also includes the following substatement:
<DViewOnly Yes>

Changing the document window

You can use MIF statements to change the appearance and behavior of the document window in the following ways:
58ADOBE FRAMEMAKER 6.0
To suppress the document window menu bar, use the following statement:
<DViewOnlyWinMenubar No>
This statement has no effect in the Macintosh and Windows version of a FrameMaker product because those versions have an application menu bar rather than a document window menu bar.
To suppress the display of scroll bars and border buttons in the document window, use the following
statement:
<DViewOnlyWinBorders No>
To suppress selection in the document window, include the following statement:
<DViewOnlySelect No>
Y ou can normally select text and objects in a locked document by Control-dragging in UNIX and Windows versions or by Command-dragging in Macintosh versions. Specifying <DViewOnlySelect N o> prevents all selection in a locked document.
To suppress the appearance of a document region pop-up menu, use the statement:
<DViewOnlyWinPopup No>
A document region pop-up menu is a menu activated by the right mouse button. For example, in UNIX versions of a FrameMaker product, the Maker menu and Viewer menus can be accessed by pressing the right mouse button. If the DViewOnlyWinPopup statement has a value of No, the background menu does not appear when the right mouse button is pressed. This statement has no effect in Macintosh and Windows versions of a FrameMaker product.
To make a window behave as a palette window, use the following statement:
Using MIF Statements
<DViewOnlyWinPalette Yes>
A palette window is a command window, such as the Equations palette, that exhibits special platform­dependent behavior . In UNI X versions of FrameMa ker pr oducts, a palett e window can only be dismissed; it cannot be closed to an icon. In Macintosh versions, a palette always remains in front of the active window.
In Windows versions, a palette floats outside the main application window and cannot be unlocked. T o edit the palette, y o u n e ed to r ese t the D ViewOnlyWinPalette statement to No in the MIF file before opening it in a FrameMaker product.

Using active cross-references

A locked document automatically has active cross-references. An active cross-reference behaves like a hypertext gotolink command; when the user clicks on a cross-reference, a FrameMaker product displays the link ’s destination page. By default, the destination page is shown in the same document window as the links source.
Y ou 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.)
59ADOBE FRAMEMAKER 6.0
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 <D ViewOnlySe lect No> is specified, clicking a cross-re ference 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.
Using MIF Statements
To disable a command, you must supply the hex code, called an fcode, that internally represents that command in a FrameMaker product. For example, y ou 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
60ADOBE FRAMEMAKER 6.0
UNIX $FMHOME/fminit/language/configui/Commands, where language is the language in use,
Windows install_dir/fminit/configui/cmds.cfg, where install_dir is the directory where the
Macintosh fm_codes.h, which is available separately with the Frame Developer’s Kit (FDK)
such as usenglish
FrameMaker product is installed
See the online manual Customizing Fram eM a k er Pr od uc ts for more information about the commands file in UNIX versions. For information about disabling commands on the Macintosh, see the Frame Developer’s Kit (FDK) manuals, available separately.

Applications of MIF

You can use MIF files any time you need access to a FrameMaker products 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:
Share files with earlier versions of FrameMaker
Perform custom document proc essing
Write import and export filters for FrameMaker documents
Perform database publishing

Sharing files with earlier versions

A FrameMaker product automatically opens documents created with an earlier version of FrameMaker (2.0 or higher).
To use an earlier version of FrameMaker (such as 2.1) to edit a document created with a later version of FrameMaker (such as 6.0):
1 Use the newer F rameMaker prod uct version to save the document in MIF. 2 Open the MIF file with the earlier version of FrameMaker.
Earlier versions of FrameMaker do not support all MIF statements in the curr ent version. For example, when you use versi on 2.1 of FrameMaker to open a document cr eated in version 3 of FrameMaker, MIF statements describing tables and conditional text are skipped. Ignore the related error messages. For a description of the differences between MIF 6.0 and previous versions, see , MIF Compatibility.
Using MIF Statements

Modifying documents

Y ou can use MIF to perform custo m document processing. For example, you can creat e 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 244.

Writing filters

MIF allows you to write filters to convert data from other formats to FrameMaker format and to convert a MIF file to anot her document format. W hile FrameM aker pr oducts will cha nge in futu re vers ions, 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 creat ed 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.
61ADOBE FRAMEMAKER 6.0
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 lay out feat ures , 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 br eaks) in your source d ocument, 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 conv ert table styles to table formats in a TblCatalog statement.
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 doesnt 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.
Installi n g a fi lt e r
In UNIX versions, you can set up a FrameMaker product to automatically start a script that runs a filter based on the filename suffix. The filter can convert a file to a MIF file. The FrameMaker product then inter­prets the MIF file, storing the results in a FrameMaker document. For more information about installing your filter, see the online manual Customizing FrameMaker Products.
Using MIF Statements
Minimizing MIF statements
The following tips may help you minimize the number of MIF statements that your filter needs to generate:
If you are not concerned about controlling the format of a document, use the default formats that a
FrameMaker product provides for new documents. The user can always change formats as needed within the FrameMaker document.
If you are fi ltering a document from another applic ation into a FrameMaker product and then back to
the application, you may want to import the filters MIF file into a FrameMaker document, save the document as a MIF file, and then convert the file back to the original format from the MIF file generated by the FrameMaker product. This technique takes advantage of a FrameMaker product’s syntactically complete MIF statements, but allows your filter to write a shorter MIF file.
If your filter needs to generate fully-formatted MIF files, you can minimize the number of formatting
statements by creating a template in a FrameMaker product, saving the template as a MIF file, and then including the MIF template file in y our filter’s generated document. You must edit the saved MIF template (see Including template files on page 55). An advantage of this techniqu e is that you can use the same template for more than one document.
Define macros to ease the process of generating statements. For an example of using macros, see “Text
example on page 233.
62ADOBE FRAMEMAKER 6.0

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 infor­mation 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 information 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. Y ou can use any database that
can create text-based output files.
MIF provides the data interchange format between the database and a FrameMaker product. MIF can
completely describe a document in ASCII format, including information such as text and graphics, page layout, and indexes and cross-references.
A FrameMaker product provides the text formatting. The FrameMaker product 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.
If you plan t o use a F rameMake r p r od uct t o view MI F f i les , use F rameViewer. You cannot use Fr a me Reader to view MIF files because FrameReader cannot read MIF.
Using MIF Statements
Optional control programs allow you to tightly integrate the database and the FrameMaker product.
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
MIF (ASCII text)
63ADOBE FRAMEMAKER 6.0
Database
For an example of a database pu blishing application, see Database publishing on page 245.

Debugging MIF files

When a FrameMaker product reads a MIF file, it might detect errors such as unexpected character sequences. In UNIX and Windows versions, a FrameMaker product displays messages in a console window . In Macintosh and Windows versions, you must turn on Show File Translation Errors in the Preferences dialog box to display messages in a window. I f a FrameMaker product finds an error , it co ntinues to process the MIF file and r eads as much of the document as possible.
When you are debugging MIF files, you should examine the error messages for clues. The MIF interpreter reports line numbers for most errors. For a description of MIF error messages, see , MIF Messages.
In some cases, the MIF interpreter reports an invalid opcode message for a statement. If the statement seems correct to you, check the statements above it. A missing right angle bracket can cause the interpreter to parse a statement incorrectly.
If the MIF interpreter brings up an empty document when it reads your file, it has stopped trying to interpret your file and opened an empty custom document instead. Close the document and check your MIF file for errors. Try adding a Verbose statement to your file to get more complete messages.
Using MIF Statements
If your MIF statements are syntactically correct but cause unexpected results in the document, check for mismatched ID numbers and check the placement of statements. Many MIF statements are position­dependent and can cause errors if they appear in the wrong place in a file. For example, an ATbl statement that comes before its corresponding Tbl statement causes an error.
Here are some additional tips for debugging MIF files:
Use the Verbose statement to generate comments. To debug a specific section of a MIF file, you can
precede the section with the <V erbose Yes> statement and end the section with the <Verbose No > statement.
Make sure angle brackets are balanced.
Make sure that MIF statement names are capitalized correctly. MIF statement names and keyword values
are case-sensitive.
Make sure that string arguments are enclosed in straight single quotation marks. (See “MIF data items
on page11 for an example.)
Make sure ID numbers are unique.
Make sure that every table anchor has a corresponding table instance, and that every table instance has
an anchor in the text flow.
64ADOBE FRAMEMAKER 6.0
Make sure that tag names with spaces are enclosed in straight single quotation marks.
Make sure paired statements are balanced. For example, XRef and XRefEnd statements must be paired.
Make sure that right angle bracket (>) and backslash (\) characters in text are preceded by a backslash.
Make sure that hexadecimal characters, for example \xe6, have a space after them.

Other application tools

The Frame Developers Kit (FDK) provides tools that you can use to write filters and to perform custom document processing. The FDK includes the Application Program Interface (API), which you can use to create a C application that can create and save documents, modify documents, and interact with the user. The FDK also includes the Frame Development Environment (FDE), which allows you to make your FDK clients portable to the platforms that FrameMaker supports.
MIF files can be used by C applications, text processing utilities, or UNIX shell scripts. You might want to work directly with MIF files if you are filtering large numbers of files in batch mode. You also might want to work with MIF files if you are doing simple document processing, such as changing a few tag names, or if you are setting options for View Only documents.
You can use the FDK and MIF files together; for example, a database publishing application can extract values from a database and write out the information as a table in a MIF file. An FDK client can then automatically open the MIF file as a FrameMaker document.
Using MIF Statements

Where to go from here

This chapter has given you a start at working with MIF files. You can use the information in this chapter as guidelines for working with similar MIF statements. Once you have experimented with basic MIF files, you can learn about other MIF statements by creating small FrameMaker documents that contain a specific feature and saving these documents as MIF files. Because a FrameMaker product writes complete and precise MIF code, it is your ultimate source for learning about MIF statements.
For more information about document components not described in this chapter, see the MIF statement descriptions in Chapters 3 through 5.
65ADOBE FRAMEMAKER 6.0

MIF Document Statements

This chapter describes the structure of MIF document files and the MIF statements they can contain. Most MIF statements are listed in the order that they appear in a MIF file, as described in the following section. If you are looking for information about a particular statement, use this manuals statement index to locate it. If you are looking for information about a type of object, such as a table or paragraph, use the table of contents to locate the MIF statements that describe the object.

MIF file layout

The following table lists the main statements in a MIF document file in the order that a FrameMaker product writes them. Y ou must follow the same order that a FrameMaker product uses, with the exception of the macro statements and control statements, which can appear anywhere at the top level of a file. Each statement, except the MIFFile statement, is optional. Most main statements use substatements to describe objects and their properties.
66
Statement Description
MIFFile Labels the file as a MIF document file. The MIFFile statement is required and must be
Control statements Establish the default units in a Units statement, the debugging setting in a Verbose
Macro statements Define macros with a define statement and read in files with an include statement.
ColorCatalog Describes document colors. The ColorCatalog statement contains Color statements
CombinedFontCatalog Describes combined fonts. The CombinedFontCatalog statement contains Com-
ConditionCatalog Describes condition tags. The ConditionCatalog statement contains Condition state-
ElementDefCatalog Defines the contents of the Element Catalog for a structured document. For more infor-
FmtChangeListCatalog Defines the contents of the Format Change List Catalog for a structured document. For
PgfCatalog Describes paragraph formats. The PgfCatalog statement contains Pgf statements that
FontCatalog Describes character formats. The FontCatalog statement contains Font statements
the first statement in the file.
statement, and comments in a Comment statement. These statements can appear anywhere at the top level as well as in some substatements.
These statements can appear anywhere at the top level.
that define each color and tag.
binedFontDefn statements that define each combined font and its component fonts.
ments that define each condition tag and its properties.
mation, see MIF Statements for Structured Documents and Books.
more information, see MIF Statements for Structured Documents and Books.
define the properties and tag for each paragraph format.
that define the properties and tag for each character format.
RulingCatalog Describes ruling styles for tables. The RulingCatalog statement contains Ruling state-
ments that define the properties for each ruling style.
MIF Document Statements
Statement Description
TblCatalog Describes table formats. The TblCatalog statement contains TblFormat statements
that define the properties and tag for each table format.
67ADOBE FRAMEMAKER 6.0
Views Describes color views for the document. The Views statement contains View state-
VariableFormats Defines variables.The VariableFormats statement contains VariableFormat state-
MarkerTypeCatalog Defines a catalog of user-defined markers for the current document. The MarkerType-
XRefFormats Defines cross-reference formats. The XRefFormats statement contains XRefFormat
Document Controls document features such as page size, margins, and column layout. Because
BookComponent Provides the setup information for files generated from the document. BookCompo-
InitialAutoNums Provides a starting value for the autonumber series in a document. Dictionary Lists allowed words in the document. AFrames Describes all anchored frames in the document. The AFrames statement contains
Tbls Describes all tables in the document. The Tbls statement contains Tbl statements that
ments that define which colors are visible in each color view.
ments that define each variable.
Catalog statement contains MarkerTypeCatalog statements that specify each user-defined marker.
statements that define each cross-reference format.
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.
nent statements describe the filename, filename suffix, file type, and paragraph tags or marker types to include.
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 state- ment identifies where a specific anchored frame appears in a text flow; it need only sup­ply the frames ID number.
define the contents of each table and its ID number. Later in the MIF file, where the document contents are described, the MIF file must include a short ATbl statement that corresponds to each Tbl statement. The ATbl statement identifies where a specific table appears in a text flow; it need only supply the tables ID number.
Page Describes the layout of each page in the document. The description includes the layout
TextFlow Represents the actual text in the document. Within TextFlow statements, the text is
of each page, the dimensions of the text frames, and the objects and other graphic frames on that page. A MIF file created by a FrameMaker product 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 doc­ument as needed.
expressed in paragraphs which in turn contain paragraph lines. Line endings of Para-
Line statements are not significant because the MIF interpreter wraps the contents of ParaLine statements into paragraphs.
MIF Document Statements

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
<MIFFile version> #comment (Required) Identifies a MIF file
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 version 6.0 of FrameMaker begins with the following line:
<MIFFile 6.00> # Generated by FrameMaker 6.0
MIF is compatible across versions, so a MIF interpreter can parse any MIF file. The resul ts may sometimes differ from your intentions if a MIF file describes features that are not included in the FrameMaker product that reads the MIF file. For more information, see AppendixC, MIF Compatibility.
68ADOBE FRAMEMAKER 6.0

Control statements

Control statements set defaults, provide debugging information, and insert comments.

Units statement

The Units statement specifies the default units for dimensions and coordinates in the document. It can appear anywhere at the top level or within any statement.
Syntax
<Units keyword> Default units for document
keyword can be one of:
Uin Ucm Umm Upica Upt Udd Ucc
Usage
If no Units statement is provided, the default value is Uin. A Units statement remains in effect until another Units statement is encountered. When a FrameMaker product writes a MIF file, it uses the documents
current display units.
MIF Document Statements

CharUnits statement

The CharUnits statement specifies the default units for measuring font size and line spacing. This is to accommodate the Japanese “Q” units of measurement. This statement can appear anywhere at the top level or within any statement.
Syntax
<CharUnits keyword> Default units for font size and line spacing
keyword can be one of:
CUpt CUQ

Verbose statement

The Verbose statement turns on a debugging mode for MIF. It can appear anywhere at the top level or within any statement.
Syntax
69ADOBE FRAMEMAKER 6.0
<Verbose boolean> Yes turns on debugging information
Usage
When Verbose mode is on, the MIF interpreter writes detailed stream of processing descriptions to a window. In UNIX versions of FrameMaker products, these descriptions appear in the window from which the FrameMaker product was started. To display messages in Windows and Macintosh versions, you mu st turn on Show File Translation Errors in the FrameMaker products Preferences dialog box. The messages appear in a console window in Windows and in an Error Log window on the Macintosh. The processing descriptions can be quite long, but ma y be esse ntial for debugging a pr ogram that cr eat es MIF fo r input to a FrameMaker product. A Verbose statement can occur unnested or within markup statements, as explained later in this chapter. A Verbose statement remains in effect until the interpreter encounters another Verbose statement that changes the setting.

Comment statement

The Comment statement identifies an optional comment.
Syntax
<Comment comment-text> Identifies a comment
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.
MIF Document Statements
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.

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.
70ADOBE FRAMEMAKER 6.0

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 any where in a MI F file; ho wev er , the macro definition must appear before any occurrences of the macro name.
Syntax
define (name, replacement) Creates a macro
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.
MIF Document Statements

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 stateme nt can appear anywhere in a MIF fi le. However, make sure that the contents of the included file appear in a valid location when they are read into the MIF file.
Syntax
include (pathname) Reads in a file
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 Macintosh and Windo ws versions of FrameMaker products, use the following guidelines for specifying absolute pathnames:
For Macint osh v e rs ion s, s ta rt an absol ute pathname with a slash an d the volume name. Fo r ex ampl e, t o
include the file MyFile from the volume MacVolume, specify the pathname /MacVolume/MyFile.
71ADOBE FRAMEMAKER 6.0
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, specif y th e pa thna me 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 a FrameMaker product, the MIF inter­preter also searches the $FMHOME/fminit and the $FMHOME/fminit/filters directories for a file with a relative pathname.
In general, you would use an include statement to read a header file containing define statements that a filter nee ds to transl ate a fil e. I sol at e the data in a he ade r file t o sim plif y the proc es s of ch an ging impo rtant mappings. You can also use an include statement to read in a t emplate file containing formatting infor- mation. Your application can then simply generate a documents text. F or more information, see Including template files on page55.

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.

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 66.
MIF Document Statements
Syntax
<ConditionCatalog <Condition> Defines a condition tag (see Condition statement, next) <Condition> Additional statements as needed
> End of ConditionCatalog statement

Condition statement

The Condition statement defines the state of a condition tag and its condition indicators, which control how conditional text is displayed in the document window. The statement must appear in a Condition- Catalog statement. The property statements can appear in any order.
Syntax
<Condition
72ADOBE FRAMEMAKER 6.0
<CTag string> Condition tag string <CState keyword> Whether text with this tag is shown or hidden
keyword can be one of:
CHidden CShown
<CStyle keyword> Format of text with this condition
keyword can be one of:
CAsIs CUnderline CDoubleUnderline CStrike COverline CChangeBar
<CColor tagstring> Color for condition tag (see “ColorCatalog statement” on page 94) <CSeparation integer> Color for condition tag; no longer used, but written out by
> End of Condition statement
FrameMaker products for backward-compatibility (see Color state­ments on page 264)

Conditional and Unconditional statements

The Conditional statement marks the beginning of conditional text and the Unconditional statement marks the end. These statements must appear in a Row or ParaLine statement.
MIF Document Statements
Syntax
<Conditional Begin conditional text <InCondition tagstring> Specifies condition tag from Condition Catalog <InCondition tagstring> Additional statements as needed
> End of Conditional statement <Unconditional> Returns to unconditional state

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 ap pear at the t op level in the orde r given in MIF file lay out on page66.
73ADOBE FRAMEMAKER 6.0
Syntax
<PgfCatalog <Pgf> Defines a paragraph format (see Pgf statement on page 73) <Pgf> Additional statements as needed > End of PgfCatalog statement
Usage
If you dont include a PgfCatalog statement, the MIF interpreter uses the paragraph formats defined in NewTemplate. (For information on defaults specified in templates, see page 9.) If you include PgfCatalog,
paragraph formats in the MIF file replac e default formats. The MIF interpre ter does not add your paragraph f ormat to the default Paragraph Catalog, although it provides default values for unspecified properties in a paragraph format (see Creating and applying paragraph formats on page19).

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.
MIF Document Statements
Syntax
Basic properties
<Pgf Begin paragraph format <PgfTag tagstring> Paragraph tag name <PgfUseNextTag boolean> Turns on following paragraph tag feature <PgfNextTag tagstring> Tag name of following paragraph <PgfFIndent dimension > First line left margin, measured from left side of current text col um n <PgfFIndentRelative boolean> Used for structured documents only <PgfFIndentOffset dimension> Used for structured documents only <PgfLIndent dimension> Left margin, measured from left side of current te xt co lum n <PgfRIndent dimension> Right margin, measured from right side of current text column <PgfAlignment keyword> Alignment within the text column
keyword can be one of:
LeftRight Left Center Right
<PgfSpBefore dimension> Space above paragraph
74ADOBE FRAMEMAKER 6.0
<PgfSpAfter dimension> Space below paragraph <PgfLineSpacing keyword> Amount of space between lines in paragraph measured from baseline
<PgfLeading dimension> Space below each line in a paragraph <PgfNumTabs integer> Number of tabs in a paragraph
<TabStop Begin definition of tab stop; the following property statements can
<TSX dimension> Horizontal position of tab stop <TSType keyword> Tab stop alignment
<TSLeaderStr string> Tab stop leader string (for example, ` . ')
to baseline keyword can be one of:
Fixed (default font size) Proportional (largest font in line)
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.
appear in any order, but must appear within a Tab Stop statement
keyword can be one of:
Left Center Right Decimal
MIF Document Statements
75ADOBE FRAMEMAKER 6.0
<TSDecimalChar integer> Align decimal tab around a character by ASCII value; in UNIX versions,
> End of Tab Stop statement <TabStop> Additional statements as needed
Default font properties
<PgfFont> Default font (see page 78)
Pagination properties
<PgfPlacement keyword> Vertical placement of paragraph in text column
<PgfPlacementStyle keyword> Placement of side heads, run-in heads, and paragraphs that straddle
type man ascii in a UNIX window for a list of characters and their cor­responding ASCII values
keyword can be one of:
Anywhere ColumnTop PageTop LPageTop RPageTop
text columns keyword can be one of:
Normal RunIn SideheadTop SideheadFirstBaseline SideheadLastBaseline Straddle StraddleNormalOnly
See page 77 <PgfRunInDefaultPunct string> Default punctuation for run-in heads <PgfWithPrev boolean> Yes keeps paragraph with previous paragraph <PgfWithNext boolean> Yes keeps paragraph with next paragraph <PgfBlockSize integer> Widow/orphan lines
Numbering properties
<PgfAutoNum boolean> Yes turns on autonumbering <PgfNumFormat string> Autonumber formatting string <PgfNumberFont tagstring> Tag from Character Catalog <PgfNumAtEnd boolean> Yes places number at end of line, instead of beginning
Advanced properties
<PgfHyphenate boolean> Yes turns on automatic hyphenation <HyphenMaxLines integer> Maximum number of consecutive lines that can end in a hyphen <HyphenMinPrefix integer> Minimum number of letters that must precede hyphen <HyphenMinSuffix integer> Minimum number of letters that must follow a hyphen
<HyphenMinWord integer> Minimum length of a hyphenated word <PgfLetterSpace boolean> Spread characters to fill line
MIF Document Statements
76ADOBE FRAMEMAKER 6.0
<PgfMinWordSpace integer> Minimum word spacing (as a percentage of a standard space in the
<PgfOptWordSpace integer> Optimum word spacing (as a percentage of a standard space in the
<PgfMaxWordSpace integer> Maximum word spacing (as a percentage of a standard space in the
<PgfLanguage keyword> Language to use for spelling and hyphenation. Note that FrameMaker
paragraphs default font)
paragraphs default font)
paragraphs default font)
products write this statement so MIF files can be opened in older ver-
sions of FrameMaker. However, the language for a paragraph format
or character format is now properly specified in the PgfFont and Font
statements (see page 78)
keyword can be one of:
NoLanguage
USEnglish
UKEnglish
German
SwissGerman
French
CanadianFrench
Spanish
Catalan
Italian
Portuguese
Brazilian
Danish
Dutch
Norwegian
Nynorsk
Finnish
Swedish
Japanese
Tr aditionalChinese
SimplifiedChinese
Korean
<PgfTopSeparator string> Name of reference frame (from reference page) to put above para-
<PgfTopSepAtIndent boolean> Used for structured documents only <PgfTopSepOffset dimension> Used for structured documents only <PgfBotSeparator string> Name of reference frame (from reference page) to put below para-
<PgfBotSepAtIndent boolean> Used for structured documents only <PgfBotSepOffset dimension> Used for structured documents only
Ta ble cell properties
<PgfCellAlignment keyword> Vertical alignment for first paragraph in a cell
graph
graph
keyword can be one of:
Top
Middle
Bottom
MIF Document Statements
<PgfCellMargins L T R B> Cell margins for first paragraph in a cell <PgfCellLMarginFixed boolean> Yes means left cell margin is added to TblCellMargins; No means
left cell margin overrides TblCellMargins
77ADOBE FRAMEMAKER 6.0
<PgfCellTMarginF ixe d boo lean> Yes means top cell margin is added to TblCellMargins; No means
<PgfCellRMarginFixed boolean> Yes means right cell margin is added to TblCellMargins; No means
<PgfCellBMarginFixed boolean> Yes means bottom cel l margin is added to TblCellMargins; No
Miscellaneous properties
<PgfLocked boolean> Yes means the paragraph is part of a text inset that obtains its format-
<PgfAcrobatLevel integer> Level at which the paragraph is shown in an outline of PDF Book-
<PgfReferenced boolean> Yes means the paragraph is marked as a PDF named destination for
<PgfPDFStruct ureLe vel i nteg e r> Within the PgfCatalog statement, the structured PDF level to assign
top cell margin overrides TblCellMargins
right cell margin overrides TblCellMargins
means width of bottom cell margin overrides TblCellMargins
ting properties from the source document. See page 78
marks; 0 indicates that the paragraph does not appear as a bookmark
cross-references, hypertext markers, or bookmarks (version 6.0 or
later)
to any paragraph that uses this format; for individual paragraphs, the
structured PDF level of the paragraph; 0 indicates no structure level
and 100 is the maximum value
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.
Paragraph placement across text columns and side heads
The PgfPlacementStyle statement specifies the placement of a paragraph across text columns and side heads in a text frame:
If a paragraph spans across all columns and side heads, the PgfPlacementStyle statement is set to
Straddle.
If a paragraph spans across all columns, but not across the side heads in a text frame, the PgfPlacement-
Style statement is set to StraddleNormal.
MIF Document Statements
Locked paragraphs and text insets
The PgfLocked statement does not correspond to any setting in the Paragraph Designer. The statement is used for text insets that retain formatting information from the source document.
If the <PgfLocked Yes> statem ent appears i n a specific paragraph , that paragraph is part of a text inse t that retains formatting information from the source document. The paragraph is not affected by global formatti ng performed on the document.
If the <PgfLocked No> statement appears in a specific paragraph, that paragraph is not part of a text inset, or is part of a text inset that reads formatting information from the current document. The paragraph is affected by global formatting per formed on the document.
For more information about text insets, see Text insets (text imported by reference) on page 140.

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.
78ADOBE FRAMEMAKER 6.0

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 66.
Syntax
<FontCatalog <Font> Defines a character format (see PgfFont and Font statements, next) <Font> Additional statements as needed > End of FontCatalog statement

PgfFont and Font statements

The PgfFont and Font statements both d e f ine character form at s. The PgfFont statement must appear in a Pgf statement. The Font statement must appear in a FontCatalog, Para, or TextLine statement.
New statements have been added to the PgfFont and Font statements to express combined fonts in FrameMaker documents. For more information, see Combined Fonts on page 214.
MIF Document Statements
Syntax
<PgfFont|Font <FTag tagstring> Character format tag name
Font name
<FFamily string> Name of font family <FAngle string> Name of angle, such as Oblique <FWeight string> Name of weight, such as Bold <FVar string> Name of variation, such as Narrow <FPostScriptName string> Name of font when sent to PostScript printer (see Font name on
page 82)
79ADOBE FRAMEMAKER 6.0
<FPlatformName string> Platform-specific font name, only read by Macintosh and Windows ver-
Font language
<FLanguage keyword> Language to use for spelling and hyphenation
Font encoding
sions (see page 82)
keyword can be one of:
NoLanguage USEnglish UKEnglish German SwissGerman French CanadianFrench Spanish Catalan Italian Portuguese Brazilian Danish Dutch Norwegian Nynorsk Finnish Swedish Japanese TraditionalChinese SimplifiedChinese Korean
<FEncoding keyword> Specifies the encoding for this font. This is to specify the encoding for
Font size, color, and width
<FSize dimension> Size, in points only (or in Q on a Japanese system)
a double-byte font. If not present, the default is Roman. keyword can be one of:
FrameRoman JISX0208.ShiftJIS BIG5 GB2312-80.EUC KSC5601-1992
MIF Document Statements
<FColor tagstring> Font color (see ColorCatalog statement on page 94) <FSeparation integer> Font color; no longer used, but written out by FrameMaker products for
backward-compatibility (see Color statements on page 264)
80ADOBE FRAMEMAKER 6.0
<FStretch percent> The amount to stretch or compress the font, where 100% means no
Font style
<FUnderlining keyword> Turns on underlining and specifies underlining style
<FOverline boolean> Turns on overline style <FStrike boolean> Turns on strikethrough style <FChangeBar boolean> Turns on the change bar <FPosition keyword> Specifies subscript and superscript characters; font size and position rel-
<FOutline boolean> Turns on outline style (Macintosh version only) <FShadow boolean> Turns on shadow style (Macintosh version only <FPairKern boolean> Turns on pair kerning <FCase keyword> Applies capitalization style to string
Kerning information
change
keyword can be one of:
FNoUnderlining FSingle FDouble FNumeric
ative to baseline determined by Document substatements (see page 105)
keyword can be one of:
FNormal FSuperscript FSubscript
keyword can be one of:
FAsTyped FSmallCaps FLowercase FUppercase
<FDX percent> Horizontal kern value for manual kerning expressed as percentage of an
<FDY percent> Vertical kern value for manual kerning expressed as percentage of an
<FDW percent> Spread value for space between characters expressed as percentage of
<FTsume boolean> Yes turns on Tsume (variable width rendering) for Asian characters
Filter statements
em; positive value moves characters right and negative value moves characters left
em; positive value moves characters down and negative value moves characters up
an em; positive value increases the space and negative value decreases the space
MIF Document Statements
<FPlain boolean> Used only by filters <FBold boolean> Used only by filters <FItalic boolean> Used only by filters
Miscellaneous information
<FLocked boolean> Yes means the font is part of a text inset that obtains its formatting
properties from the source document
> End of PgfFont or Font statement
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 for mat .
Substatements in the Font and PgfFont statements are optional. Like the Pgf substatements, Font substate­ments reset the current font.
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 substatements inherits the current font state for those properties not supplied.
81ADOBE FRAMEMAKER 6.0
For more information about creating and ap plying character formats in a MIF file , see Creating and applying character formats o n page 30. For more information abou t 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.
Locked fonts and text insets
The FLocked statement does not correspond to any setting in the Character Designer. The statement is used for text insets that retain formatting information from the source document.
If the <FLocked Yes> statement appears in a specific character format, that character format is part of a text inset that retains formatting information from the source document. The character format is not affected by global formatting per formed on the document.
If the <FLocked No> statement appears in a specific character format, either that character format is not part of a text inset, or that character format is part of a text inset that reads formatting information from the current d ocu ment. The char acte r for mat i s af fect ed b y glob al format ting perfo rmed o n the doc umen t.
For more information about text insets, see Text insets (text imported by reference) on page 140.
MIF Document Statements
Font name
When a PgfFont or Font statement includes all of the family, angle, weight, and variation properties, a FrameMaker product 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 a FrameMaker product stores font
information internally.
The statement FPostScriptName specifies the name given to a font when it is sent to a PostScript printer
(specifically, the name that would be passed to the PostScript FindFont operator before any font coordi­nation operations). 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, a FrameMaker product always writes the FFamily, FAngle, FWeight, FVar, and FPostScriptName statements. In addition, Macintosh and Windows versions of a FrameMaker product also write the FPlatformName statement. A UNIX version of a FrameMaker product ignores FPlatformName.
82ADOBE FRAMEMAKER 6.0
When a FrameMaker product 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.
This statement takes precedence over all other font attributes. For example, if the document includes a font with <FEncoding `JISX0208.ShiftJIS’>, but that font family is not available on the users 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.
Macintosh: The Macintosh platform name has the following syntax:
MIF Document Statements
83ADOBE FRAMEMAKER 6.0
<FPlatformName M.
M Platform designator FontName Macintosh Resource Manager font name (for more information, see your Macintosh documenta-
StyleFlags Macintosh font styles; use one or more of the following flags:
FontName.StyleFlags
tion)
B (Bold) I (Italic) C (Condensed) E (Extended) P (Plain, use if no other flags are set)
You cannot use the C and E flags for the same font. For Underline, Outline, and Shadow styles, use the MIF statements FUnderlining, FOutline, and FShadow (described on page 80 and page 80)
>
.
The following statements are valid representations of the Macintosh font Helvetica Narrow Bold Oblique:
<FPlatformName M.Helvetica.BIC> <FPlatformName M.B Helvetica Bold.IC> <FPlatformName M.NI Helvetica Narrow Oblique.B> <FPlatformName M.NBI Helvetica Narrow BoldObl.P>
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) ItalicFlag Whether font is italic; use one of the following flags:
I (Italic) R (Regular)
Weight Weight classification, for example 400 (regular) or 700 (bold) Variation Optional variation, for example Narrow
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>

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.
MIF Document Statements
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 T able 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 page66.
Syntax
<TblCatalog <TblFormat> Defines a table format (see TblFormat statement, next) <TblFormat> Additional statements as needed
> End of TblCatalog statement
84ADOBE FRAMEMAKER 6.0

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 <TblTag tagstring> Table format tag name <TblLIndent dimension> Left indent for the table relative to the tables containing text column;
<TblRIndent dimension> Right indent for the table relative to the tables containing text column;
<TblSpBefore dimension> Space above table <TblSpAfter dimension> Space below table <TblAlignment keyword> Horizontal alignment within text column or text frame
has no effect on right-aligned tables
has no effect on left-aligned tables
keyword can be one of:
Left Center Right Inside Outside
See page 87
MIF Document Statements
<TblPlacement keyword> Vertical placement of table within text column
keyword can be one of:
Anywhere Float ColumnTop PageTop LPageTop RPageTop
<TblBlockSize integer> Widow/orphan rows for body rows <TblCellMargins L T R B> Left, top, right, bottom default cell margins <TblTitlePlacement keyword> Table title placement
keyword can be one of:
InHeader InFooter None
<TblTitlePgf1 Paragraph format of title for a new table created with the table format <PgfTag tagstring> Applies format from Paragraph Catalog <Pgf> Overrides Paragraph Catalog format as needed (see page 73)
85ADOBE FRAMEMAKER 6.0
> End of TblTitlePgf1 statement <TblTitleGap dimension> Gap between title and top or bottom row <TblNumByColumn boolean> Autonumber paragraphs in cells; Yes numbers down each column and
Ruling properties
<TblColumnRuling tagstring> Ruling style for most columns; value must match a ruling style name
<TblXColumnNum integer> Number of colu mn w ith a ri gh t s i de t ha t us esthe TblXColumnRuling
<TblXColumnRuling tagstring> Ruling style for the right side of column TblXColumnNum <TblBodyRowRuling tagstring> Default ruling style for most body rows <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,
<TblLRuling tagstring> Left outside table ruling style <TblBRuling tagstring> Bottom outside table ruling style <TblRRuling tagstring> Right outside table ruling style <TblTRuling tagstring> Top outside table ruling style
No numbers across each row
specified in the RulingCatalog statement
statement
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
MIF Document Statements
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 94)
86ADOBE FRAMEMAKER 6.0
<TblHFSeparation integer> Default color for table heading and footing; no longer used, but written
<TblBodyFill integer> Default fill pattern for body cells (see page 113) <TblBodyColor tagstring> Default color for body cells (see page 94) <TblBodySeparation integer> Default color for body cells; no longer used, but written out by
<TblShadeByColumn boolean> Yes specifies column shading; No specifies body row shading <TblShadePeriod integer> Number of consecutive columns/rows that use TblBodyFill <TblXFill integer> Exception fill pattern for columns or body rows (see page 113) <TblXColor tagstring> Exception color for columns or body rows (see page 94) <TblXSeparation integer> Exception color for columns or body rows; no longer used, but written
<TblAltShadePeriod integer> Number of consecutive columns/rows that use TblXFill; exception col-
Column properties
<TblWidth dimension> Not generated by a FrameMaker product, but can be used by filters to
<TblColumn Each table must have at least one TblColumn statement; a column
<TblColumnNum integer> Column number; columns are numbered from left to right starting at 0
out by FrameMaker products for backward-compatibility (see “Color statements on page 264)
FrameMaker products for backward-compatibility (see Color state­ments on page 264)
out by FrameMaker products for backward-compatibility (see “Color statements on page 264)
umns/rows alternate with default body columns/rows to form a repeat­ing pattern
determine table width
without a statement uses the format of the rightmost column
<TblColumnWidth dimension> Width of column. See page 92 <TblColumnWidthP integer> Not generated by a FrameMaker product, but a temporary column
<TblColumnWidthA W W> Not generated by a FrameMaker product, but a width based on a cell
<TblColumnH Default paragraph format for the columns heading cells in new tables <PgfTag tagstring> Applies format from Paragraph Catalog <Pgf> Overrides Paragraph Catalog format as needed (see page 73) > End of TblColumnH statement <TblColumnBody Default paragraph format for the columns body cells in new tables
width when filtering proportionally-spaced tables from another applica­tion; converted to a fixed width when read in (see page 92)
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 92).
MIF Document Statements
<PgfTag tagstring> Applies format from Paragraph Catalog <Pgf> Overrides Paragraph Catalog format as needed (see page 73) > End of TblColumnBody statement <TblColumnF Default paragraph format for the columns footing cells in new tables
<PgfTag tagstring>
Applies format from Paragraph Catalog
87ADOBE FRAMEMAKER 6.0
<Pgf…>
> End of TblColumnF statement > End of TblColumn statement <TblColumn>More TblColumn statements as needed, one per column
New table properties
<TblInitNumColumns integer> Number of columns for new table <TblInitNumHRows integer> Number of heading rows for new table <TblInitNumBodyRows integer> Number of body rows for new tables <TblInitNumFRows integer> Number of footing rows for new tables
Miscellaneous properties
<TblLocked boolean> Yes means the table is part of a text inset that obtains its formatting
> End of TblFormat statement
Overrides Paragraph Catalog format as needed (see page 73)
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 93). The tagstring value specified in any color substatement (such as TblBodyColor) must match a color tag defined in the ColorCatalog statement (see page 94).
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.
MIF Document Statements
Locked tables and text insets
The TblLocked statement does not correspond to any setting in the Table Designer. The statement is for text insets that retain formatting information from the source document.
If the <TblLocked Yes> statement appears in a specific table, that table is part of a text inset that retains formatting information from the source document. The table is no t affected by global formatting performed on the document.
If the <TblLocked No> statement appears in a specific table, that table is not part of a text inset or is part of a text inset that reads formatting information from the current document. The table is affected by global formatti ng performed on the document.
For details about text insets, see Text insets (text imported by reference) on page140.

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 66.
88ADOBE FRAMEMAKER 6.0
Syntax
<Tbls Beginning of tables list <Tbl…> Defines a table instance (see “Tbl statement, next) <Tbl> Additional statements as needed
> End of Tbls statement

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 134.
Syntax
<Tbl <TblID ID> Table ID number <TblTag tagstring> Applies format from Table Catalog <TblFormat> Overrides Table Catalog format as needed (see page 84)
Table columns
<TblNumColumns integer> Number of columns in the table
<TblColumnWidth dimension> Width of first column <TblColumnWidth dimension> Width of second column Width of remaining columns as needed
MIF Document Statements
89ADOBE FRAMEMAKER 6.0
<EqualizeWidths Makes specified columns the same width as the widest column (for fil-
<TblColumnNum integer> First column <TblColumnNum integer> More columns as needed > End of EqualizeWidths statement
Table title
<TblTitle Begin definition of table title <TblTitleContent T able title’s content, represented in one or more Para statements <Notes> Footnotes for table title (see page 133) <Para> Title text (see page 133) <Para> Additional statements as needed
> End of TblTitleContent statement > End of TblTitle statement
Table rows
<TblH Table heading rows; omit if no table headings <Row…> See “Row statement, next <Row> Additional statements as needed
ters only, see page 92)
> End of TblH statement <TblBody Table body rows <Row…> See “Row statement, next <Row> Additional statements as needed
> End of TblBody statement <TblF Table footing rows; omit if no table footing <Row…> See “Row statement, next <Row> Additional statements as needed
> End of TblF statement > End of Tbl statement
MIF Document Statements
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
90ADOBE FRAMEMAKER 6.0
<Conditional> Specifies conditional row (row is unconditional if the statement is
<RowWithNext boolean> Keep with next body row <RowWithPrev boolean> Keep with previous body row <RowMinHeight dimension> Minimum row height <RowMaxHeight dimension> Maximum row height <RowHeight dimension> Row height <RowPlacement keyword> Row placement
<Cell> Each Row statement contains one Cell statement for each column
<Cell> Additional statements as needed
> End of Row statement
Usage
omitted)
keyword can be one of:
Anywhere
ColumnTop
LPageTop
RPageTop
PageTop
(see Cell statement, next)
Each Row statement contai ns 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.
A FrameMaker product 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.
MIF Document Statements

Cell statement

A Cell statement specifies a cells contents. It also includes format, straddle, and rotation information as needed. The statement must appear in a Row statement.
Syntax
<Cell <CellFill integer> F ill pattern for cell, 0–15 (see page 113) <CellColor tagstring> Color for cell (see ColorCatalog statement on page 94)
91ADOBE FRAMEMAKER 6.0
<CellSeparation integer> Color for cell; no longer used, but written out by FrameMaker prod-
<CellLRuling tagstring> Left edge ruling style (from Ruling Catalog) <CellBRuling tagstring> Bottom edge ruling style <CellRRuling tagstring> Right edge ruling style <CellTRuling tagstring> Top edge ruling style <CellColumns integer> Number of columns in a straddle cell <CellRows integer> Number of rows in a straddle cell <CellAffectsColumnWidthA
boolean> <CellAngle degrees> Angle of rotation in degrees: 0, 90, 180, or 270 <CellContent Cell’s content <Notes> Footnotes for cell (see page 133) <Para>Cell’s content, represented in one or more Para statements (see
<Para> Additional statements as needed
> End of CellContent statement
ucts for backward-compatibility (see Color statements on
page 264)
Yes restri cts column width to cell width
page 133)
> End of Cell statement
Usage
You can use the Rotate command on the Graphics menu to change the CellAngle, but it does not af fect 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 information about aligning text in a cell, see PgfCellAlignment on page 76.
MIF uses CellAffectsColumnWidthA only with the TblColumnWidthA statement. The MIF default for computing a cells width is TblColumnWidthA. Howeve r, if any cells in the column have <CellAffectsCol- umnWid thA 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.
MIF Document Statements
Determining table width
When a FrameMaker product writes MIF files, it uses TblColumnWidth in the Tbl statement to specify column width. However, filters that generate MIF files can use other statements to determine the table width.
This method Uses these statements To do this
Fixed width TblColumnWidth Give a fixed value for columns width (see page 86)
92ADOBE FRAMEMAKER 6.0
Shrink-wra p TblColumnWidthA Fit a column within minimum and maximum va lues (see
Restricted TblColumnWidthA and CellAffectsColumn-
WidthA
Proportional TblColumnWidthP Create a temporary value for a column width when filter-
Equalized EqualizeWidths and TblColumnNum Apply the width of the widest column to specified col-
page 86) Use particular cells to determine column width (see
page 91)
ing proportional-width columns from another applica­tion; the MIF interpreter converts the value to a fixed width (see page 86 and Calculating proportional-width columns, next)
umns in the same table (se e page 89)
The table example in Creating an entire table on page241 shows several ways to determine column width.
Calculating proportional-width columns
MIF uses this formula to calculate the width of proportional-width columns:
n
-----------------
PTotal
×
PWidth
The arguments have the following values:
n Value of TblColumnWidthP 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".
MIF Document Statements

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 66.
Syntax
<RulingCatalog <Ruling> Defines ruling style (see Ruling statement on page 93) <Ruling> Additional statements as needed
> End of RulingCatalog statement

Ruling statement

The Ruling statement defines the ruling styles used in table formats. It must appear within the Ruling­Catalog statement.
93ADOBE FRAMEMAKER 6.0
Syntax
<Ruling <RulingTag tagstring> Ruling style name; an empty string indicates no ruling style <RulingPenWidth dimension> Ruling line thickness <RulingGap dimension> Gap between double ruling lines <RulingColor tagstring> Color of ruling line (see ColorCatalog statement on page 94) <RulingSeparation integer> Color of ruling line; no longer used, but written out by FrameMaker
<RulingPen integer> Pen pattern 0 through 7, or 15 (see page 113) <RulingLines integer> 0 (none), 1 (single), or 2 (double) ruling lines > End of Ruling statement
products for backward-compatibility (see “Color statements” on page 264)

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.
MIF Document Statements
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 ColorCatalog statement, which must appear at the top level in the order given in MIF file layout on
page 66.
94ADOBE FRAMEMAKER 6.0
Syntax
<ColorCatalog <Color> Defines a color (see Color statement, next) <Color> Additional statements as needed > End of ColorCatalog statement

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 ColorFamilyName and ColorInkName statements.
MIF Document Statements
Syntax
<Color <ColorTag tagstring> Color tag name <ColorCyan percentage> Percentage of cyan (0–100) <ColorMagenta percentage> Percentage of magenta (0–100) <ColorYellow percentage> Percentage of yellow (0–100) <ColorBlack percentage> Percentage of black (0–100) <ColorLibraryFamilyName string> Color library name <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. <ColorAttribute keyword> Identifies a default FrameMaker document color
keyword can be one of:
ColorIsBlack
ColorIsWhite
ColorIsRed
ColorIsGreen
ColorIsBlue
ColorIsCyan
ColorIsMagenta
ColorIsYellow
ColorIsReserved
95ADOBE FRAMEMAKER 6.0
<ColorTint percentage> 100% indicates solid color; less than 100% indicates a reduced per-
<ColorTintBa seCo lor str ing The name of the colo r fr om whic h the ti nt is d eri ve d. If the bas e col or
<ColorOve rprint boolean> Yes indicates overprint is set for the color; No indicates knockout. > End of Color statement
centage of the color
does not exist in the document, black will be used.
Usage
In a MIF file, a ll c olor s ar e ex pre ssed a s a mi xtur e of cyan , mage nta, yell o w , and bl ack. T he ColorAttribute statement identifies a default FrameMaker document color; the default colors are all reserved (specified by the ColorIsReserved keyw ord) and cannot be modified or deleted by the user. A reserved default c olor 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 doesnt 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. T o modify the color values of a tint, modify the color value statements for the base color used by the tint.
MIF Document Statements

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 66.
Syntax
<Views <View> Defines a color view (see View statement, next) <View> Additional statements as needed
> End of Views statement

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 sta tement.
96ADOBE FRAMEMAKER 6.0
Syntax
<View <ViewNumber integer> View number (1–6) <ViewCutout tagstring> Name of color to print as cutout separation <ViewCutout> Additional statements as needed
<ViewInvisible tagstring> Name of color to hide <ViewInvisible> Additional statements as needed
> End of View st atement

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 page134).

VariableFormats and VariableFo rmat statements

The VariableFormats statement defines document variables to be used in document text flows. A MIF file can have only one VariableFormats statement, which must appear at the top level in the order given in MIF file layout on page 66.
MIF Document Statements
Each VariableFormat statement supplies a variable name and its definition. The statement must appear in a VariableFormats statement.
Syntax
<VariableFormats <VariableFormat <VariableName tagstring> Name of variable <VariableDef string> Variable definition > End of VariableFormat statement <VariableFormat> Additional statements as needed
> End of VariableFormats statement
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 var ia bles 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 .
97ADOBE FRAMEMAKER 6.0
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 users manual or the online Help system.

Cross-references

A FrameMaker document can contain cross-references that refer to other portions of the document or to other d o c u ments. A c ross-refe re n ce h a s a ma rker that i n dicates th e source (wh e re t h e c ros s-refere n ce 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 d efined by an XRefFormat statement. Within text, an XRef statement and a Marker statement indicate where each cross-reference appears.

XRefFormats and XRefFormat statements

The XRefFormats statement defines the formats of cross-references to be used in document text flows. A MIF file can have only one XRefF ormats statement, which must appear at the top level in the order given in MIF file layout on page 66.
MIF Document Statements
The XRefFormat statement supplies a cross-reference format name and its definition. The statement must appear in an XRefFormats statement.
Syntax
<XRefFormats <XRefFormat <XRefName string> Cross-reference name <XRefDef string> Cross-reference definition > End of XRefFormat statement <XRefFormat> More cross-reference definitions as needed > End of XRefFormats statement
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.
98ADOBE FRAMEMAKER 6.0
For more information about cross-references and their building blocks, see your users manual or the online Help system.

Global document properties

A FrameMaker document has properties that specify the document page size, pagination style, view options, current user preferences, and other global document information. The user sets these properties by using various commands, such as the Document command, the View command, the Normal Page Layout command, and others.
In a MIF file, global document properties are specified as substatements in a Document statement. If you do not provide these property statements, the MIF interpreter assumes the properties specified in NewTemplate. (For information on defaults specified in templates, see page 9.
The BookComponent stat ement 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 66.
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.”)
)
MIF Document Statements
PDF Docum ent Info
For version 6.0 and later, the FrameMaker product stores PDF Document Info in the document file. The FrameMaker product automatically supplies values for Creator, Creation Date and Modification Data; these Document Info fields do not appear in MIF. Via the user interface, a user can specify values for Author, Title, Subject, and Keywords; these values appear in MIF. A document can also contain arbitrary Document Info fields if they have been entered via an FDK client or by editing a MIF file. In MIF, each Document Info entry consists of one Key statement and at least one Value statement.
A Key statement contains a string of up to 255 ASCII characters. The Key names a Document Info field, and in PDF the name can be up to 126 characters long. You represent non-printable characters via #HH, where # identifies a hexadecimal representation of a character, and HH is the hexadecimal value for the character . For exampl e, use #23 t o represent the “#” ch aracte r. Zero -value hex- cod es (#00) are illegal. In PDF, these hexadecimal representations are interpreted as PDFDocEncoding (see Portable Document Format Reference Manual, Addison-Wesley, ISBN 0-201-62628-4).
Note that a a Document Info field name can be up to 126 characters long, and a MIF string can contain up to 255 characters. Some characters in the key string may be hexadecimal representations, and each hexadecimal representation uses three ASCII characters. For example, a Key of 126 non-printing characters would require 378 ASCII characters. However , since a valid MIF string can only hav e up to 255 ASCII characters, such a Key statement woud be invalid in MIF.
99ADOBE FRAMEMAKER 6.0
The contents of the Document Info field is represented by a series of Value statements. Each value statement can contain a string of up to 255 ASCII characters. The Document Info c ontents can c ontain up to 32765 Unicode characters. To accomodate this number of Unicode characters, the FrameMaker pr oduct generates MIF in the following ways:
It represents the Document Info contents as a series of Value statements, each one 255 ASCII characters
long, or less.
It uses special codes to indicate Unicode characters that are outside the standard ASCII range. Mif repre-
sents Unicode characters as &#xHHHH;, where &#x opens the character code, the “;” character closes the character code, and HHHH are as many hexadecimal values as are required to represent the character.
Note that each Unicode representation of a character uses up to seven ASCII characters. For example, a string of 255 Unicode characters could requ ire as many as 1785 ASCII charactrers.
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
MIF Document Statements
Syntax
<Document Document properties <DNextUnique ID> Refers to the next object with a <Unique ID> statement; generated by a
FrameMaker product and should not be used by filters
Window properties
100ADOBE FRAMEMAKER 6.0
<DViewRect X Y W H> Position and size of document window based on position and size of the
<DWindowRect X Y W H> Position and size of document window based on the containing window
<DViewScale percentage> Current zoom setting
Column properties
<DMargins L T R B> Not generated by a FrameMaker product, but used by filters to specify text
<DColumns integer> Not generated by a FrameMaker product, but used by filters to specify
<DColumnGap dimension> Not generated by a FrameMaker product, but used by filters to specify col-
<DPageSize W H> Documents default page size and orientation; if W is less than H, the doc-
Volume, chapter, and page numbering properties
Volume numbering
<VolumeNumStart integer> Starting volume number <VolumeNumStyle keyword> Style of volum e numb ering
document region within containing window; DViewRect takes prece­dence over DWindowRect
(including the title bar, etc.)
margins; ignored unless DColumns is specified
number of columns
umn gap
uments orientation is portrait; otherwise it is landscape
keyword can be one of:
Arabic UCRoman LCRoman UCAlpha LCAlpha KanjiNumeric ZenArabic ZenUCAlpha ZenLCAlpha Kanjikazu BusinessKazu Custom
<VolumeNumText string> When VolumeNumStyle is set to Custom, this is the string to use <VolNumComputeMethod keyword> Volume numbering
keyword can be one of:
StartNumbering (restart numbering) ContinueNumbering (continue numbering from previous document in
book) UseSameNumbering (use the same numbering as previous document in book)
Loading...