[Date Prev][Date Next]
[Thread Prev][Thread Next]
[Date Index]
[Thread Index]
[New search]
Subject: Re: Illustrations in FrameMaker+SGML
From: Dan Emory <danemory@xxxxxxxxxxxx>
Date: Thu, 29 Nov 2001 01:32:02 -0800
Sender: owner-framers@xxxxxxxxx
At 03:49 PM 11/28/01 -0800, Simon Bate wrote:
>Over the years, we've become quite comfortable with building illustrations
>in plain ol' FrameMaker. We have many illustrations that contain one or
>more screenshots (imported by reference), callouts in text frames, and
>leader lines from the callouts to the areas of the screenshot to which they
>refer.
>
>We're now investigating FrameMaker+SGML, but I notice that the
>FrameMaker+SGML documentation says "for best results put only one graphic in
>each (anchored) frame." The doc goes on to say that text in a frame is not
>maintained as part of a document's structure. Thus I presume, the text
>doesn't get exported to SGML.
The statement is correct as far as it goes, but that doesn't mean that such
text (as well as other graphic objects you add with the Graphic Tool) don't
get exported. Let's say, for instance, you have imported graphic XYZ by
reference into an anchored frame, and then use the FrameMaker graphic tool
to add objects (e.g., leader lines, test frames) that are all within the
same anchored frame as the imported graphic. This, in FM+SGML parlance,
becomes a multi-faceted graphic. Following the creation of such a
multi-faceted graphic, the next time thereafter that you export the
document to SGML, FM+SGML will write out a new graphic which is a composite
of the imported graphic and the objects you created with the Graphic tool.
This action converts the multi-faceted graphic to a single-faceted graphic
file that is in the graphic format you specify in a read/write rule.
Here is the relevant extract from the FM+SGML Developer's Guide:
-================================================
For example, assume you use the Graphic element for all graphic elements.
If the graphic contains any single facet, you assume the graphic was
imported as an entity and you want the default behavior. However, if the
author used FrameMaker+SGML graphic tools to create the objects in the
graphic element, and you want the file written in QuickDraw PICT format.
To accomplish all this, you would use this read/write rule:
element "graphic" {
is fm graphic element;
writer anchored frame export to file "$(entity).pic" as
"PICT";
}
========================================================
Of course, if you prefer instead of PICT to write out the new graphic in
some other format supported by FM+SGML, the read/write rule above would be
modified to specify that format, and the corresponding filename extension.
Note however, that this read/write rule will be used for exporting
multi-faceted graphics to SGML from ALL FM+SGML documents which use the
SGML application definition where that read/write rule is included.
Remember this, because it is important.
The result of this rule is that, on export to SGML, an entity declaration
for the new graphic will be written out in the internal DTD subset of the
SGML document instance, and the entity name in that entity declaration will
be written into the entity attribute of the exported SGML graphic element
instance. You may find that some graphic formats are better than others in
replicating, with minimal degradation, the original graphic. You may have
to experiment by trying several different formats in order to determine
which format is the best one to use for exporting such multi-faceted
graphics. Remember, however, that the graphic format you finally decide to
use in that read/write rule will be used to write out on export ALL
multi-faceted graphics in ALL FM+SGML documents that use the SGML
application definition in which that read/write rule is specified.
Now, let's examine some of the effects, most of them bad, of this approach:
EFFECT 1. Once you export a multi-facet graphic to SGML, the graphic that
you originally imported by reference into FM+SGML still exists in the
FM+SGML document, but, in the exported SGML document instance, it is
replaced by a new graphic file that was produced by FM+SGML according to
the above read/write rule. But let's assume that the original graphic
subsequently gets updated. For example, suppose the original graphic is a
screenshot of a dialog box in some software program being documented. Each
time that dialog box gets changed, you must create a new screen shot and
save it out under the same filename as the original screenshot. (i.e., you
overwrite the old version with the new version in the same file. Now, the
next time you open the FM+SGML document, the new version of the graphic
will be imported by reference. The difference may be subtle, and it may not
be apparent that there has been a change (you get no warning from
FrameMaker that the graphic has changed).
To understand the implications of this, go to EFFECT 2 below.
EFFECT 21: Each time you execute an export to SGML action, all multi-facet
graphics must be written out again, regardless of whether or not they have
changed since the last SGML export.
Now, go to EFFECT 3 to understand the implications of this.
EFFECT 3. In the original version of FM+SGML, you had access to the entity
attribute in the graphic element. Thus, you had the option of assigning an
unique value to the entity attribute in each graphic element, and a
read/write rule was provided in that initial version of FM+SGML which
assured that each time a multi-facet graphic was written out on export to
SGML, it would be written out to the same graphic file, overwriting the
previous version. In later versions (beginning with V5.5) Adobe, for some
inexplicable reason, removed that capability. That is, you are denied
access to the entity attribute. This leaves you with two options:
OPTION 1. Specify in the read/write rule that the graphic filename will
have, as its stemname, the name of the FM+SGML graphic element, followed by
an unique number assigned by FM+SGML identifying the particular graphic.
That stemname also becomes the value of the entity attribute in the
exported graphic element instance
OPTION 2. Specify in the read/write rule that the graphic filename will
have, as its stemname, the name of the FM+SGML graphic element, followed by
an unique number assigned by FM+SGML identifying the particular graphic.
That stemname also becomes the value of the entity attribute in the
exported graphic element instance.
Now, go to EFFECT 4 to see what this means.
EFFECT 4. Each time you export an FM+SGML document to SGML, FM+SGML looks
in the target directory where exported graphics are written out (by
default, this is the same directory that contains the FM+SGML document
instance). Let's say you have an FM+SGML document in which there are 5
multi-faceted graphics which must be written out each time you export to
SGML, and that the read/write rule specifies that each graphic filename
will consist of the graphic element name (let's say the name of the graphic
element is "Graphic"), followed by an FM+SGML-assigned unique number. So
the first time you export to SGML there are no graphic files having a
stemname of GraphixNN (where NN is an unique number assigned by FM+SGML).
Consequently, FM+SGML will write out the 5 graphics with filenames
Gaphic1.eee thru Graphic2.eee (where eee is the extension that identifies
the graphic format specified in the read/write rule. But then, the second
time you export to SGML, FM+SGML recognizes that stemnames Graphic1 thru
Graphic5 are already taken, so this time FM+SGML will write out the same 5
graphics (whether or not they've changed since the last SGML export action)
with new filenames Graphic6.eee thru Graphic10.eee.. Thus, the
corresponding entity names (written into the entity attribute of the
Graphic element for each of those 5 exported graphics) will change to
Graphic5 thru Graphic10, and those same new names will appear in the new
entity declarations written into the SGML instance's internal DTD subset.
Now, go to EFFECT 5 to understand the implications
EFFECT 5. Each time you export to SGML, the old exported graphic files
don't get overwritten. They remain in the target directory where those
graphics are being written out. Multiple export actions for a document with
many multi-faceted graphics that must be written out each time you export
to SGML will quickly fill the directory with old versions of the graphics,
which are no longer valid. The obvious answer is to wipe out all the old
graphics before each new export action. But suppose (as will normally be
the case) that there are multiple FM+SGML document files (all using the
same SGML application definition) that all use the same target directory
for writing out multi-faceted graphics? If some or all of those files have
multi-faceted graphics which must be written out each time an export to
SGML action is performed, they will all use the same read/write rule, thus
all the graphics for all of those FM+SGML files will have filenames of the
form GraphicNN.eee.
How, then do you determine which ones should be deleted and which ones must
be retained? The answer is you can't if Option 1 (under EFFECT 3, in which
the graphic element name is used in the stemname for exported graphic
files). Instead, ALWAYS use Option 2 under EFFECT 3 (stemname of the
FM+SGML document file is used in the stemname for exported graphic files).
This, at least, will let you determine which graphics to delete (i.e., all
of the graphics having filenames whose stemname includes the stemname of
the FM+SGML document file which is to be re-exported to SGML.. Even though
Option 2 provides a way out of the dilemma, it is still inferior to the
method that was available in the original version of FM+SGML (see EFFECT 3
above). When I discovered that this original capability had been removed
from V5.5, I yelled long and loud at Adobe, to no avail. They just didn't
seem to get it. They should have at least added the kind of explanation
I've given above to the Developer's Guide so that everyone would understand
what had to be done, and they should have never provided Option 1, which is
a deathtrap.
====================
| Nullius in Verba |
====================
Dan Emory, Dan Emory & Associates
FrameMaker/FrameMaker+SGML Document Design & Database Publishing
Voice/Fax: 949-722-8971 E-Mail: danemory@primenet.com
177 Riverside Ave., STE F, #1151, Newport Beach, CA 92663
** To unsubscribe, send a message to majordomo@omsys.com **
** with "unsubscribe framers" (no quotes) in the body. **