|
The OpenJade MIF backend
Created by Kathleen
Marszalek and Paul Prescod
Sponsored by ISOGEN International Corp
Contents
Supported Flow Objects
character
|
Inherited
characteristics |
Non-inherited
characteristics |
- font-weight
- font-posture
- font-name
- font-size
- input-whitespace-treatment
- position-point-shift
- language
- country
- color
|
Back to top
display-group
|
Inherited
characteristics |
Non-inherited
characteristics |
|
- space-before
- space-after
- keep-with-previous?
- keep-with-next?
- break-before (#f, page)
- break-after (#f, page)
- keep (#f, page)
- may-violate-keep-before?
- may-violate-keep-after?
|
Back to top
rule |
Inherited
characteristics |
Non-inherited
characteristics |
- line-cap
- line-thickness
- line-repeat
- line-sep
- position-point-shift
- display-alignment (start, end, center)
- start-indent
- end-indent
- span (spans all columns if > 1)
- color
|
- orientation (horizontal, escapement)
- length
- space-before
- space-after
- keep-with-previous?
- keep-with-next?
- break-before (#f, page)
- break-after (#f, page)
- keep (#f, page)
- may-violate-keep-before?
- may-violate-keep-after?
|
Back to top
score |
Inherited
characteristics |
Non-inherited
characteristics |
- line-repeat (1 for type of before and
through, 1 or 2 for after)
|
- type (before, through, after)
|
Back to top
line-field* |
Inherited
characteristics |
Non-inherited
characteristics |
|
|
*
At the beginning of paragraph only. |
Back to top
leader* |
Inherited
characteristics |
Non-inherited
characteristics |
|
|
*
On the last line of paragraph only. The principal
port (the leader string itself) can contain
characters only.
The content of the flow object is ignored:
a dotted leader will always be used. The specified length is ignored:
it always fills out the line. |
Back to top
link |
Inherited
characteristics |
Non-inherited
characteristics |
|
- destination [#f, objects returned by (idref-address
...) and (current-node-address ...)]
|
Back to top
index-entry |
Inherited
characteristics |
Non-inherited
characteristics |
|
- components
- page-number?
- sort-string
- starts-page-range?
- ends-page-range?
|
- components
- is a list of strings that represent index
entry levels. This characteristic is not
inherited and shall be specified.
- page-number?
- is a boolean specifying whether this
index entry should contain page number
information. This characteristic is not
inherited. The default is #t.
- sort-string
- is either #f, specifying that this index
entry's components should be used for
sorting the index, or a string that
should be used for sorting. This
characteristic is not inherited. The
default is #f.
- starts-page-range?
- is a boolean specifying whether the index
entry starts a page range. This
characteristic is not inherited. The
default is #f.
- ends-page-range?
- is a boolean specifying whether the index
entry starts a page range. This
characteristic is not inherited. The
default is #f.
|
Here's how to
enable the above extension:
(declare-flow-object-class index-entry
"UNREGISTERED::ISOGEN//Flow
Object Class::index-entry")
|
Back to top
external-graphic |
Inherited
characteristics |
Non-inherited
characteristics |
|
- display?
- scale (max)
- max-width
- max-height
- entity-system-id
- display-alignment
- start-indent
- end-indent
- span (spans all columns if > 1)
- space-before
- space-after
- keep-with-previous?
- keep-with-next?
- break-before (#f, page)
- break-after (#f, page)
- keep (#f, page)
- may-violate-keep-before?
- may-violate-keep-after?
|
Back to top
paragraph |
Inherited
characteristics |
Non-inherited
characteristics |
- lines (wrap, asis-wrap)
- hyphenation-ladder-count
- hyphenation-remain-char-count
- hyphenation-push-char-count
- font-weight
- font-posture
- font-name
- font-size
- quadding
- widow-count
- orphan-count
- language
- country
|
- span (spans all columns if > 1)
- space-before
- space-after
- keep-with-previous?
- keep-with-next?
- break-before (#f, page)
- break-after (#f, page)
- keep (#f, page)
- may-violate-keep-before?
- may-violate-keep-after?
- line-spacing
- min-leading (#f or 0 for proportional
line spacing)
- first-line-start-indent
|
Back to top
simple-page-sequence |
Inherited
characteristics |
Non-inherited
characteristics |
- page-width
- page-height
- left-margin
- right-margin
- top-margin
- bottom-margin
- header-margin
- footer-margin
|
- left-header
- center-header
- right-header
- left-footer
- center-footer
- right-footer
|
- (page-number-sosofo)
- (current-node-page-number-sosofo)
- "UNREGISTERED::James Clark//Procedure::if-first-page"
- This can be used only in the
specification of the value of one of the
header/footer characteristics of simple-page-sequence.
It returns a sosofo that will display as
sosofo1 if the page is the first page of
the simple-page-sequence and as sosofo2
otherwise.
- "UNREGISTERED::James Clark//Procedure::if-front-page"
- This can be used only in the
specification of the value of one of the
header/footer characteristics of simple-page-sequence.
It returns a sosofo that will display as
sosofo1 if the page is a front (ie recto,
odd-numbered) page and as sosofo2 if it
is a back (i.e. verso, even-numbered)
page.
- "UNREGISTERED::James Clark//Characteristic::page-n-columns"
- Value is a strictly positive integer,
specifying the number of columns. The
initial value is 1.
- "UNREGISTERED::James Clark//Characteristic::page-column-sep"
- Value is a length, specifying the
separation between columns. The initial
value is .5in.
- "UNREGISTERED::James Clark//Characteristic::page-balance-columns?"
- Value is a boolean. If true, the columns
on the final page of the page-sequence
should be balanced. The initial value is
#f.
|
Here's how to
enable the above extensions:
(define if-first-page (external-procedure
"UNREGISTERED::James
Clark//Procedure::if-first-page"))
(define if-front-page (external-procedure
"UNREGISTERED::James
Clark//Procedure::if-front-page"))
(declare-characteristic page-n-columns
"UNREGISTERED::James
Clark//Characteristic::page-n-columns" 1)
(declare-characteristic page-n-columns
"UNREGISTERED::James
Clark//Characteristic::page-column-gap" (*
36 1pt))
(declare-characteristic page-balance-columns?
"UNREGISTERED::James
Clark//Characteristic::page-balance-columns?"
#f)
|
Back to top
table |
Inherited
characteristics |
Non-inherited
characteristics |
- table-border
- display-alignment
- start-indent
- end-indent
|
- table-width
- before-row-border
- after-row-border
- before-column-border
- after-column-border
- span (spans all columns if > 1)
- space-before
- space-after
- keep-with-previous?
- keep-with-next?
- break-before (#f, page)
- break-after (#f, page)
- keep (#f, page)
- may-violate-keep-before?
- may-violate-keep-after?
|
Back to top
table-part |
Inherited
characteristics |
Non-inherited
characteristics |
|
- space-before
- space-after
- keep-with-previous?
- keep-with-next?
- break-before (#f, page)
- break-after (#f, page)
- keep (#f, page)
- may-violate-keep-before?
- may-violate-keep-after?
|
|
Back to top
table-column |
Inherited
characteristics |
Non-inherited
characteristics |
|
- column-number
- n-columns-spanned
- width
|
|
Back to top
table-cell |
Inherited
characteristics |
Non-inherited
characteristics |
- cell-before-row-margin
- cell-after-row-margin
- cell-before-column-margin
- cell-after-column-margin
- cell-row-alignment
- cell-before-row-border
- cell-after-row-border
- cell-before-column-border
- cell-after-column-border
- cell-background?
- background-color
|
- column-number
- n-columns-spanned
- n-rows-spanned
- starts-row?
- ends-row?
|
Back to top
table-border |
Inherited
characteristics |
Non-inherited
characteristics |
- border-present?
- line-thickness
- line-repeat (0, 1, or 2)
- line-sep
- color
|
|
Back to top
Problems & Limitations
Table border resolution
It's not clear how to predictably enforce cell borders
that have mixed line styles. I've posted a question about
this to comp.text.frame, but there were no responses so
far.
External graphic width and height
In order to place external graphics inside a text flow
one must use an anchored frame containing the <ImportObject...>
statement. The ImportObject within the frame can shrink-wrap
the referenced graphics, however the anchored frame
itself cannot - in general the size of an anchored frame
has to be specified explicitly. I've asked about this in
comp.text.frame, but the only solutions involved using
external programs to read the graphic size from graphic
files.
Space before non-paragraph displayed objects
Flow objects like external-graphic need to be anchored
to empty paragraphs so that that frame can determine
their position on the page automatically. Since the
smallest paragraph height is 2pt (smallest font size that
can be used), the total space before such objects should
be larger than that. This does not apply to the paragraph
flow objects themselves, and to the rule flow object. The
rule flow object has the placement direction display size
of 0 and it's possible to use negative PgfLeading to let
the next paragraph move up if necessary.
The vertical positioning of the displayed rule
flow object
Since the rule is position using inlined anchored
frame, the placement is relative to the font baseline. It's
assumed that the baseline is 1/3 the font size from the
bottom.
The box flow object
Not sure how to implement it since anchored frames
must have fixed height. Maybe using tables would work
here(?)
Tips
Creating hypertext documents
You must decide on the filename extension you'll use
at the stage when you run jade. If you don't want the .mif
extension for your final document, feel free to use other
extension when specifying the file name using the -o
option.
- Open the book file.
- While holding SHIFT, select File->Open
All Files in Book from the menu.
- Save each file using View Only format -
make sure you use original filenames.
Updating page numbering
- Open the book file.
- While holding SHIFT, select File->Open
All Files in Book from the menu.
- Select File->Generate/Update... and
then press Update.
Specifying colors
OpenJade supports all color spaces specified in DSSSL.
The following example uses the RGB color space to create
a red rule:
(make rule
color: (color (color-space
"ISO/IEC 10179:1996//Color-Space Family::Device
RGB")
1 0 0)
...
) |
|