version 1.17, 1997/12/30 17:22:38
|
version 1.18, 1998/04/03 10:40:51
|
Line 1
|
Line 1
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
<HTML> |
<html> |
<HEAD> |
<head> |
<TITLE>The Languages of Thot</TITLE> |
<title> |
</HEAD> |
The Languages of Thot</title> |
<BODY> |
</head> |
|
<body> |
<DIV class="frontmatter" align=center> |
|
<H1>The Languages of Thot</H1> |
<div class="frontmatter" align=center> |
|
|
<H3>Vincent Quint</H3> |
<h1>The Languages of Thot</h1> |
|
|
<H4>Translated from French by Ethan Munson</H4> |
<h3>Vincent Quint</h3> |
|
|
<H4>Version of December 29, 1997</H4> |
<h4>Translated from French by Ethan Munson</h4> |
|
|
<P>© 1996 INRIA |
<h4>Version of March, 1998</h4> |
|
<p> |
<HR> |
© 1996 INRIA</p> |
</DIV> |
<hr> |
|
</div> |
<DIV class="tableofcontents"> |
|
<H2><A href="languages.toc.html">Contents</A></H2> |
<div class="tableofcontents"> |
<UL> |
|
<LI><BIG><A href="#sect2">The document model of Thot</A></BIG> |
<h2><a href="languages.toc.html">Contents</a></h2> |
<UL> |
<ul> |
<LI><STRONG><A href="#sectb21">The logical structure of documents</A></STRONG> |
<li> |
<LI><STRONG><A href="#sectb22">Generic and specific structures</A></STRONG> |
<big><a href="#sect2">The document model of Thot</a></big> |
<LI><STRONG><A href="#sectb23">Logical structure and physical structure</A></STRONG> |
<ul> |
<LI><STRONG><A href="#sectb24">Document structures and object structures</A></STRONG> |
<li> |
</UL> |
<strong><a href="#sectb21">The logical structure of documents</a></strong> |
|
<li> |
<LI><BIG><A href="#sect3">The S language</A></BIG> |
<strong><a href="#sectb22">Generic and specific structures</a></strong> |
<UL> |
<li> |
<LI><STRONG><A href="#sectb31">Document meta-structure</A></STRONG> |
<strong><a href="#sectb23">Logical structure and physical |
<UL> |
structure</a></strong> |
<LI><A href="#sectc311">The basic types</A> |
<li> |
<LI><A href="#sectc312">Constructed elements</A> |
<strong><a href="#sectb24">Document structures and object |
<LI><A href="#sectc313">Logical structure constructors</A> |
structures</a></strong> |
<UL> |
</ul> |
<LI><SMALL><A href="#sectd3131">Aggregate and List</A></SMALL> |
<li> |
<LI><SMALL><A href="#sectd3132">Choice, Schema, and Unit</A></SMALL> |
<big><a href="#sect3">The S language</a></big> |
<LI><SMALL><A href="#sectd3133">Reference and Inclusion</A></SMALL> |
<ul> |
<LI><SMALL><A href="#sectd3134">Mark pairs</A></SMALL> |
<li> |
<LI><SMALL><A href="#sectd3135">Restrictions and Extensions</A></SMALL> |
<strong><a href="#sectb31">Document meta-structure</a></strong> |
<LI><SMALL><A href="#sectd3136">Summary</A></SMALL> |
<ul> |
</UL> |
<li> |
<LI><A href="#sectc314">Associated Elements</A> |
<a href="#sectc311">The basic types</a> |
<LI><A href="#sectc315">Attributes</A> |
<li> |
<LI><A href="#sectc316">Discussion of the model</A> |
<a href="#sectc312">Constructed elements</a> |
</UL> |
<li> |
<LI><STRONG><A href="#sectb32">The definition language for generic structures</A></STRONG> |
<a href="#sectc313">Logical structure constructors</a> |
<UL> |
<ul> |
<LI><A href="#sectc321">Writing Conventions</A> |
<li> |
<LI><A href="#sectc322">Extension schemas</A> |
<small><a href="#sectd3131">Aggregate and List</a></small> |
<LI><A href="#sectc323">The general organization of structure schemas</A> |
<li> |
<LI><A href="#sectc324">The default presentation</A> |
<small><a href="#sectd3132">Choice, Schema, and Unit</a></small> |
<LI><A href="#sectc325">Global Attributes</A> |
<li> |
<LI><A href="#sectc326">Parameters</A> |
<small><a href="#sectd3133">Reference and Inclusion</a></small> |
<LI><A href="#sectc327">Structured elements</A> |
<li> |
<LI><A href="#sectc328">Structure definitions</A> |
<small><a href="#sectd3134">Mark pairs</a></small> |
<UL> |
<li> |
<LI><SMALL><A href="#sectd3281">List</A></SMALL> |
<small><a href="#sectd3135">Restrictions and Extensions</a></small> |
<LI><SMALL><A href="#sectd3282">Aggregate</A></SMALL> |
<li> |
<LI><SMALL><A href="#sectd3283">Choice</A></SMALL> |
<small><a href="#sectd3136">Summary</a></small> |
<LI><SMALL><A href="#sectd3284">Reference</A></SMALL> |
</ul> |
<LI><SMALL><A href="#sectd3285">Mark pairs</A></SMALL> |
<li> |
</UL> |
<a href="#sectc314">Associated Elements</a> |
<LI><A href="#sectc329">Imports</A> |
<li> |
<LI><A href="#sectc3210">Extension rules</A> |
<a href="#sectc315">Attributes</a> |
<LI><A href="#sectc3211">Associated elements</A> |
<li> |
<LI><A href="#sectc3212">Units</A> |
<a href="#sectc316">Discussion of the model</a> |
<LI><A href="#sectc3213">Skeleton elements</A> |
</ul> |
<LI><A href="#sectc3214">Exceptions</A> |
<li> |
</UL> |
<strong><a href="#sectb32">The definition language for generic |
<LI><STRONG><A href="#sectb33">Some examples</A></STRONG> |
structures</a></strong> |
<UL> |
<ul> |
<LI><A href="#sectc331">A class of documents: articles</A> |
<li> |
<LI><A href="#sectc332">A class of objects: mathematical formulas</A> |
<a href="#sectc321">Writing Conventions</a> |
</UL> |
<li> |
</UL> |
<a href="#sectc322">Extension schemas</a> |
|
<li> |
<LI><BIG><A href="#sect4">The P language</A></BIG> |
<a href="#sectc323">The general organization of structure schemas</a> |
<UL> |
<li> |
<LI><STRONG><A href="#sectb41">Document presentation</A></STRONG> |
<a href="#sectc324">The default presentation</a> |
<UL> |
<li> |
<LI><A href="#sectc411">Two levels of presentation</A> |
<a href="#sectc325">Global Attributes</a> |
<LI><A href="#sectc412">Boxes</A> |
<li> |
<LI><A href="#sectc413">Views and visibility</A> |
<a href="#sectc326">Parameters</a> |
<LI><A href="#sectc414">Pages</A> |
<li> |
<LI><A href="#sectc415">Numbering</A> |
<a href="#sectc327">Structured elements</a> |
<LI><A href="#sectc416">Presentation parameters</A> |
<li> |
</UL> |
<a href="#sectc328">Structure definitions</a> |
<LI><STRONG><A href="#sectb42">Presentation description language</A></STRONG> |
<ul> |
<UL> |
<li> |
<LI><A href="#sectc421">The organization of a presentation schema</A> |
<small><a href="#sectd3281">List</a></small> |
<LI><A href="#sectc422">Views</A> |
<li> |
<LI><A href="#sectc423">Print Views</A> |
<small><a href="#sectd3282">Aggregate</a></small> |
<LI><A href="#sectc424">Counters</A> |
<li> |
<LI><A href="#sectc425">Presentation constants</A> |
<small><a href="#sectd3283">Choice</a></small> |
<LI><A href="#sectc426">Variables</A> |
<li> |
<LI><A href="#sectc427">Default presentation rules</A> |
<small><a href="#sectd3284">Reference</a></small> |
<LI><A href="#sectc428">Presentation and page layout boxes</A> |
<li> |
<LI><A href="#sectc429">Presentation of structured elements</A> |
<small><a href="#sectd3285">Mark pairs</a></small> |
<LI><A href="#sectc4210">Logical attribute presentation</A> |
</ul> |
<LI><A href="#sectc4212">Value transmission rules</A> |
<li> |
<LI><A href="#sectc4213">Presentation rules</A> |
<a href="#sectc329">Imports</a> |
<LI><A href="#sectc4214">Conditions applying to presentation rules</A> |
<li> |
<UL> |
<a href="#sectc3210">Extension rules</a> |
<LI><SMALL><A href="#sectd42141">Conditions based on the logical position of the element</A></SMALL> |
<li> |
<LI><SMALL><A href="#sectd42142">Conditions on references</A></SMALL> |
<a href="#sectc3211">Associated elements</a> |
<LI><SMALL><A href="#sectd42143">Conditions on logical attributes</A></SMALL> |
<li> |
<LI><SMALL><A href="#sectd42144">Conditions on page breaks</A></SMALL> |
<a href="#sectc3212">Units</a> |
<LI><SMALL><A href="#sectd42145">Conditions on the element's content</A></SMALL> |
<li> |
<LI><SMALL><A href="#sectd42146">Conditions on counters</A></SMALL> |
<a href="#sectc3213">Skeleton elements</a> |
</UL> |
<li> |
<LI><A href="#sectc4215">A presentation rule</A> |
<a href="#sectc3214">Exceptions</a> |
<LI><A href="#sectc4216">Box axes</A> |
</ul> |
<LI><A href="#sectc4217">Distance units</A> |
<li> |
<LI><A href="#sectc4218">Relative positions</A> |
<strong><a href="#sectb33">Some examples</a></strong> |
<LI><A href="#sectc4219">Box extents</A> |
<ul> |
<UL> |
<li> |
<LI><SMALL><A href="#sectd42191">Fixed extents</A></SMALL> |
<a href="#sectc331">A class of documents: articles</a> |
<LI><SMALL><A href="#sectd42192">Relative extents</A></SMALL> |
<li> |
<LI><SMALL><A href="#sectd42193">Elastic extents</A></SMALL> |
<a href="#sectc332">A class of objects: mathematical formulas</a> |
</UL> |
</ul> |
<LI><A href="#sectc4220">Overflow</A> |
</ul> |
<LI><A href="#sectc4221">Inheritance</A> |
<li> |
<LI><A href="#sectc4222">Line breaking</A> |
<big><a href="#sect4">The P language</a></big> |
<UL> |
<ul> |
<LI><SMALL><A href="#sectd42221">Line spacing</A></SMALL> |
<li> |
<LI><SMALL><A href="#sectd42222">First line indentation</A></SMALL> |
<strong><a href="#sectb41">Document presentation</a></strong> |
<LI><SMALL><A href="#sectd42223">Alignment</A></SMALL> |
<ul> |
<LI><SMALL><A href="#sectd42224">Justification</A></SMALL> |
<li> |
<LI><SMALL><A href="#sectd42225">Hyphenation</A></SMALL> |
<a href="#sectc411">Two levels of presentation</a> |
<LI><SMALL><A href="#sectd42226">Avoiding line breaking</A></SMALL> |
<li> |
</UL> |
<a href="#sectc412">Boxes</a> |
<LI><A href="#sectc4223">Page breaking and line breaking conditions</A> |
<li> |
<LI><A href="#sectc4224">Visibility</A> |
<a href="#sectc413">Views and visibility</a> |
<LI><A href="#sectc4225">Character style parameters</A> |
<li> |
<UL> |
<a href="#sectc414">Pages</a> |
<LI><SMALL><A href="#sectd42251">Character size</A></SMALL> |
<li> |
<LI><SMALL><A href="#sectd42252">Font and character style</A></SMALL> |
<a href="#sectc415">Numbering</a> |
<LI><SMALL><A href="#sectd42253">Underlining</A></SMALL> |
<li> |
</UL> |
<a href="#sectc416">Presentation parameters</a> |
<LI><A href="#sectc4226">Stacking order</A> |
</ul> |
<LI><A href="#sectc4227">Line style</A> |
<li> |
<LI><A href="#sectc4228">Line thickness</A> |
<strong><a href="#sectb42">Presentation description language</a></strong> |
<LI><A href="#sectc4229">Fill pattern</A> |
<ul> |
<LI><A href="#sectc4230">Colors</A> |
<li> |
<LI><A href="#sectc4230a">Background color and border</A> |
<a href="#sectc421">The organization of a presentation schema</a> |
<LI><A href="#sectc4230b">Background pictures</A> |
<li> |
<LI><A href="#sectc4231">Presentation box content</A> |
<a href="#sectc422">Views</a> |
<LI><A href="#sectc4232">Presentation box creation</A> |
<li> |
<LI><A href="#sectc4233">Page layout</A> |
<a href="#sectc423">Print Views</a> |
<LI><A href="#sectc4234">Box copies</A> |
<li> |
</UL> |
<a href="#sectc424">Counters</a> |
</UL> |
<li> |
|
<a href="#sectc425">Presentation constants</a> |
<LI><BIG><A href="#sect5">The T language</A></BIG> |
<li> |
<UL> |
<a href="#sectc426">Variables</a> |
<LI><STRONG><A href="#sectb51">Document translation</A></STRONG> |
<li> |
<UL> |
<a href="#sectc427">Default presentation rules</a> |
<LI><A href="#sectc511">Translation principles</A> |
<li> |
<LI><A href="#sectc512">Translation procedure</A> |
<a href="#sectc428">Presentation and page layout boxes</a> |
</UL> |
<li> |
<LI><STRONG><A href="#sectb52">Translation definition language</A></STRONG> |
<a href="#sectc429">Presentation of structured elements</a> |
<UL> |
<li> |
<LI><A href="#sectc521">Organization of a translation schema</A> |
<a href="#sectc4210">Logical attribute presentation</a> |
<LI><A href="#sectc522">Line length</A> |
<li> |
<LI><A href="#sectc523">Buffers</A> |
<a href="#sectc4212">Value transmission rules</a> |
<LI><A href="#sectc524">Counters</A> |
<li> |
<LI><A href="#sectc525">Constants</A> |
<a href="#sectc4213">Presentation rules</a> |
<LI><A href="#sectc526">Variables</A> |
<li> |
<LI><A href="#sectc527">Translating structure elements</A> |
<a href="#sectc4214">Conditions applying to presentation rules</a> |
<LI><A href="#sectc528">Conditional rules</A> |
<ul> |
<UL> |
<li> |
<LI><SMALL><A href="#sectd5281">Conditions based on the logical position of the element</A></SMALL> |
<small><a href="#sectd42141">Conditions based on the logical position of the |
<LI><SMALL><A href="#sectd5282">Conditions on references</A></SMALL> |
element</a></small> |
<LI><SMALL><A href="#sectd5283">Conditions on the parameters</A></SMALL> |
<li> |
<LI><SMALL><A href="#sectd5284">Conditions on the alphabets</A></SMALL> |
<small><a href="#sectd42142">Conditions on references</a></small> |
<LI><SMALL><A href="#sectd5285">Conditions on page breaks</A></SMALL> |
<li> |
<LI><SMALL><A href="#sectd5286">Conditions on the element's content</A></SMALL> |
<small><a href="#sectd42143">Conditions on logical attributes</a></small> |
<LI><SMALL><A href="#sectd5287">Conditions on the presence of comments</A></SMALL> |
<li> |
<LI><SMALL><A href="#sectd5288">Conditions on the presence of specific presentation rules</A></SMALL> |
<small><a href="#sectd42144">Conditions on page breaks</a></small> |
<LI><SMALL><A href="#sectd5289">Conditions on the presence of logical attributes</A></SMALL> |
<li> |
<LI><SMALL><A href="#sectd52810">Conditions on logical attributes</A></SMALL> |
<small><a href="#sectd42145">Conditions on the element's content</a></small> |
<LI><SMALL><A href="#sectd52811">Conditions on specific presentation rules</A></SMALL> |
<li> |
</UL> |
<small><a href="#sectd42146">Conditions on counters</a></small> |
<LI><A href="#sectc529">Translation rules</A> |
</ul> |
<LI><A href="#sectc5210">The <TT>Create</TT> rule</A> |
<li> |
<LI><A href="#sectc5211">The <TT>Write</TT> rule</A> |
<a href="#sectc4215">A presentation rule</a> |
<LI><A href="#sectc5212">The <TT>Read</TT> rule</A> |
<li> |
<LI><A href="#sectc5213">The <TT>Include</TT> rule</A> |
<a href="#sectc4216">Box axes</a> |
<LI><A href="#sectc5214">The <TT>Get</TT> rule</A> |
<li> |
<LI><A href="#sectc5215">The <TT>Copy</TT> rule</A> |
<a href="#sectc4217">Distance units</a> |
<LI><A href="#sectc5216">The <TT>Use</TT> rule</A> |
<li> |
<LI><A href="#sectc5217">The <TT>Remove</TT> rule</A> |
<a href="#sectc4218">Relative positions</a> |
<LI><A href="#sectc5218">The <TT>NoTranslation</TT> rule</A> |
<li> |
<LI><A href="#sectc5219">The <TT>NoLineBreak</TT> rule</A> |
<a href="#sectc4219">Box extents</a> |
<LI><A href="#sectc5220">The <TT>ChangeMainFile</TT> rule</A> |
<ul> |
<LI><A href="#sectc5220a">The <TT>RemoveFile</TT> rule</A> |
<li> |
<LI><A href="#sectc5221">The <TT>Set</TT> and <TT>Add</TT> rules</A> |
<small><a href="#sectd42191">Fixed extents</a></small> |
<LI><A href="#sectc5221a">The <TT>Indent</TT> rule</A> |
<li> |
<LI><A href="#sectc5222">Rule application order</A> |
<small><a href="#sectd42192">Relative extents</a></small> |
<LI><A href="#sectc5223">Translation of logical attributes</A> |
<li> |
<LI><A href="#sectc5224">Translation of specific presentations</A> |
<small><a href="#sectd42193">Elastic extents</a></small> |
<LI><A href="#sectc5225">Recoding of characters, symbols and graphics</A> |
</ul> |
</UL> |
<li> |
</UL> |
<a href="#sectc4220">Overflow</a> |
|
<li> |
<LI><BIG><A href="#sect6">Language grammars</A></BIG> |
<a href="#sectc4221">Inheritance</a> |
<UL> |
<li> |
<LI><STRONG><A href="#sectb61">The M meta-language</A></STRONG> |
<a href="#sectc4222">Line breaking</a> |
<LI><STRONG><A href="#sectb62">The S language</A></STRONG> |
<ul> |
<LI><STRONG><A href="#sectb63">The P language</A></STRONG> |
<li> |
<LI><STRONG><A href="#sectb64">The T language</A></STRONG> |
<small><a href="#sectd42221">Line spacing</a></small> |
</UL> |
<li> |
|
<small><a href="#sectd42222">First line indentation</a></small> |
<LI><BIG><A href="#sect7">Character coding</A></BIG> |
<li> |
<UL> |
<small><a href="#sectd42223">Alignment</a></small> |
<LI><STRONG><A href="#sectb71">Characters</A></STRONG> |
<li> |
<LI><STRONG><A href="#sectb72">Symbols</A></STRONG> |
<small><a href="#sectd42224">Justification</a></small> |
<LI><STRONG><A href="#sectb73">Graphical elements</A></STRONG> |
<li> |
</UL> |
<small><a href="#sectd42225">Hyphenation</a></small> |
</UL> |
<li> |
<HR> |
<small><a href="#sectd42226">Avoiding line breaking</a></small> |
</DIV> |
</ul> |
|
<li> |
|
<a href="#sectc4223">Page breaking and line breaking conditions</a> |
|
<li> |
|
<a href="#sectc4224">Visibility</a> |
|
<li> |
|
<a href="#sectc4225">Character style parameters</a> |
|
<ul> |
|
<li> |
|
<small><a href="#sectd42251">Character size</a></small> |
|
<li> |
|
<small><a href="#sectd42252">Font and character style</a></small> |
|
<li> |
|
<small><a href="#sectd42253">Underlining</a></small> |
|
</ul> |
|
<li> |
|
<a href="#sectc4226">Stacking order</a> |
|
<li> |
|
<a href="#sectc4227">Line style</a> |
|
<li> |
|
<a href="#sectc4228">Line thickness</a> |
|
<li> |
|
<a href="#sectc4229">Fill pattern</a> |
|
<li> |
|
<a href="#sectc4230">Colors</a> |
|
<li> |
|
<a href="#sectc4230a">Background color and border</a> |
|
<li> |
|
<a href="#sectc4230b">Background pictures</a> |
|
<li> |
|
<a href="#sectc4231">Presentation box content</a> |
|
<li> |
|
<a href="#sectc4232">Presentation box creation</a> |
|
<li> |
|
<a href="#sectc4233">Page layout</a> |
|
<li> |
|
<a href="#sectc4234">Box copies</a> |
|
</ul> |
|
</ul> |
|
<li> |
|
<big><a href="#sect5">The T language</a></big> |
|
<ul> |
|
<li> |
|
<strong><a href="#sectb51">Document translation</a></strong> |
|
<ul> |
|
<li> |
|
<a href="#sectc511">Translation principles</a> |
|
<li> |
|
<a href="#sectc512">Translation procedure</a> |
|
</ul> |
|
<li> |
|
<strong><a href="#sectb52">Translation definition language</a></strong> |
|
<ul> |
|
<li> |
|
<a href="#sectc521">Organization of a translation schema</a> |
|
<li> |
|
<a href="#sectc522">Line length</a> |
|
<li> |
|
<a href="#sectc523">Buffers</a> |
|
<li> |
|
<a href="#sectc524">Counters</a> |
|
<li> |
|
<a href="#sectc525">Constants</a> |
|
<li> |
|
<a href="#sectc526">Variables</a> |
|
<li> |
|
<a href="#sectc527">Translating structure elements</a> |
|
<li> |
|
<a href="#sectc528">Conditional rules</a> |
|
<ul> |
|
<li> |
|
<small><a href="#sectd5281">Conditions based on the logical position of the |
|
element</a></small> |
|
<li> |
|
<small><a href="#sectd5282">Conditions on references</a></small> |
|
<li> |
|
<small><a href="#sectd5283">Conditions on the parameters</a></small> |
|
<li> |
|
<small><a href="#sectd5284">Conditions on the alphabets</a></small> |
|
<li> |
|
<small><a href="#sectd5285">Conditions on page breaks</a></small> |
|
<li> |
|
<small><a href="#sectd5286">Conditions on the element's content</a></small> |
|
<li> |
|
<small><a href="#sectd5287">Conditions on the presence of comments</a></small> |
|
<li> |
|
<small><a href="#sectd5288">Conditions on the presence of specific |
|
presentation rules</a></small> |
|
<li> |
|
<small><a href="#sectd5289">Conditions on the presence of logical |
|
attributes</a></small> |
|
<li> |
|
<small><a href="#sectd52810">Conditions on logical attributes</a></small> |
|
<li> |
|
<small><a href="#sectd52811">Conditions on specific presentation |
|
rules</a></small> |
|
</ul> |
|
<li> |
|
<a href="#sectc529">Translation rules</a> |
|
<li> |
|
<a href="#sectc5210">The <tt>Create</tt> rule</a> |
|
<li> |
|
<a href="#sectc5211">The <tt>Write</tt> rule</a> |
|
<li> |
|
<a href="#sectc5212">The <tt>Read</tt> rule</a> |
|
<li> |
|
<a href="#sectc5213">The <tt>Include</tt> rule</a> |
|
<li> |
|
<a href="#sectc5214">The <tt>Get</tt> rule</a> |
|
<li> |
|
<a href="#sectc5215">The <tt>Copy</tt> rule</a> |
|
<li> |
|
<a href="#sectc5216">The <tt>Use</tt> rule</a> |
|
<li> |
|
<a href="#sectc5217">The <tt>Remove</tt> rule</a> |
|
<li> |
|
<a href="#sectc5218">The <tt>NoTranslation</tt> rule</a> |
|
<li> |
|
<a href="#sectc5219">The <tt>NoLineBreak</tt> rule</a> |
|
<li> |
|
<a href="#sectc5220">The <tt>ChangeMainFile</tt> rule</a> |
|
<li> |
|
<a href="#sectc5220a">The <tt>RemoveFile</tt> rule</a> |
|
<li> |
|
<a href="#sectc5221">The <tt>Set</tt> and <tt>Add</tt> rules</a> |
|
<li> |
|
<a href="#sectc5221a">The <tt>Indent</tt> rule</a> |
|
<li> |
|
<a href="#sectc5222">Rule application order</a> |
|
<li> |
|
<a href="#sectc5223">Translation of logical attributes</a> |
|
<li> |
|
<a href="#sectc5224">Translation of specific presentations</a> |
|
<li> |
|
<a href="#sectc5225">Recoding of characters, symbols and graphics</a> |
|
</ul> |
|
</ul> |
|
<li> |
|
<big><a href="#sect6">Language grammars</a></big> |
|
<ul> |
|
<li> |
|
<strong><a href="#sectb61">The M meta-language</a></strong> |
|
<li> |
|
<strong><a href="#sectb62">The S language</a></strong> |
|
<li> |
|
<strong><a href="#sectb63">The P language</a></strong> |
|
<li> |
|
<strong><a href="#sectb64">The T language</a></strong> |
|
</ul> |
|
<li> |
|
<big><a href="#sect7">Character coding</a></big> |
|
<ul> |
|
<li> |
|
<strong><a href="#sectb71">Characters</a></strong> |
|
<li> |
|
<strong><a href="#sectb72">Symbols</a></strong> |
|
<li> |
|
<strong><a href="#sectb73">Graphical elements</a></strong> |
|
</ul> |
|
</ul> |
|
<hr> |
|
</div> |
|
|
<DIV class="chapter"> |
<div class="chapter"> |
<H1><A name=sect2>The document model of Thot</A></H1> |
|
|
|
<P> |
<h1><a name="sect2">The document model of Thot</a></h1> |
|
<p> |
All of the services which Thot provides to the user are based on the system's |
All of the services which Thot provides to the user are based on the system's |
internal document representation. This representation is itself derived from |
internal document representation. This representation is itself derived from |
the document model which underlies Thot. The model is presented here, prior |
the document model which underlies Thot. The model is presented here, prior |
to the description of the languages which permit the generic specification of |
to the description of the languages which permit the generic specification of |
documents.</P> |
documents.</p> |
|
|
<DIV class="section"> |
<div class="section"> |
<H2><A name=sectb21>The logical structure of documents</A></H2> |
|
|
|
<P> |
<h2><a name="sectb21">The logical structure of documents</a></h2> |
|
<p> |
The document model of Thot is primarily designed to allow the user to operate |
The document model of Thot is primarily designed to allow the user to operate |
on those entities which s/he has in mind when s/he works on a document. The |
on those entities which s/he has in mind when s/he works on a document. The |
model makes no assumptions about the nature of these entities. It is |
model makes no assumptions about the nature of these entities. It is |
essentially these logical entities, such as paragraphs, sections, chapters, |
essentially these logical entities, such as paragraphs, sections, chapters, |
notes, titles, and cross-references which give a document its logical |
notes, titles, and cross-references which give a document its logical |
structure.</P> |
structure.</p> |
<P> |
<p> |
Because of this model, the author can divide the document into chapters, |
Because of this model, the author can divide the document into chapters, |
giving each one a title. The content of these chapters can be further divided |
giving each one a title. The content of these chapters can be further divided |
into sections, subsections, etc. The text is organized into successive |
into sections, subsections, etc. The text is organized into successive |
Line 255 paragraphs, according to the content. In
|
Line 416 paragraphs, according to the content. In
|
margins, spacing, fonts, and character styles are not very important. In fact, |
margins, spacing, fonts, and character styles are not very important. In fact, |
if the system requires documents to be written in these terms, it gets in the |
if the system requires documents to be written in these terms, it gets in the |
way. So, Thot's model is primarily based on the logical aspect of documents. |
way. So, Thot's model is primarily based on the logical aspect of documents. |
The creation of a model of this type essentially requires the definition :</P> |
The creation of a model of this type essentially requires the definition :</p> |
<UL> |
<ul> |
<LI>of the entities which can appear in the documents, |
<li> |
<LI>and the relations between these entities. |
of the entities which can appear in the documents, |
</UL> |
<li> |
<P> |
and the relations between these entities. |
|
</ul> |
|
<p> |
The choice of entities to include in the model can be subtle. Some documents |
The choice of entities to include in the model can be subtle. Some documents |
require chapters, while others only need various levels of sections. Certain |
require chapters, while others only need various levels of sections. Certain |
documents contain appendices, others don't. In different documents the same |
documents contain appendices, others don't. In different documents the same |
logical entity may go by different names (e.g. ``Conclusion'' and |
logical entity may go by different names (e.g. ``Conclusion'' and |
``Summary''). Certain entities which are absolutely necessary in some |
``Summary''). Certain entities which are absolutely necessary in some |
documents, such as clauses in a contract or the address of the recipient in a |
documents, such as clauses in a contract or the address of the recipient in a |
letter, are useless in most other cases.</P> |
letter, are useless in most other cases.</p> |
<P> |
<p> |
The differences between documents result from more than just the entities that |
The differences between documents result from more than just the entities that |
appear in them, but also from the relationships between these entities and the |
appear in them, but also from the relationships between these entities and the |
ways that they are linked. In certain documents, notes are spread throughout |
ways that they are linked. In certain documents, notes are spread throughout |
Line 277 cross-reference to them, while in other
|
Line 440 cross-reference to them, while in other
|
end of each chapter or even at the end of the work. As another example, the |
end of each chapter or even at the end of the work. As another example, the |
introduction of some documents can contain many sections, while in other |
introduction of some documents can contain many sections, while in other |
documents, the introduction is restricted to be a short sequence of |
documents, the introduction is restricted to be a short sequence of |
paragraphs.</P> |
paragraphs.</p> |
<P> |
<p> |
All of this makes it unlikely that a single model can describe any document at |
All of this makes it unlikely that a single model can describe any document at |
a relatively high level. It is obviously tempting to make up a list of widely |
a relatively high level. It is obviously tempting to make up a list of widely |
used entities, such as chapters, sections, paragraphs, and titles, and then |
used entities, such as chapters, sections, paragraphs, and titles, and then |
Line 294 include introductions in the list of sup
|
Line 457 include introductions in the list of sup
|
one distinguish those introductions which are allowed to have sections from |
one distinguish those introductions which are allowed to have sections from |
those which are not. Perhaps this could be done by defining two types of |
those which are not. Perhaps this could be done by defining two types of |
introduction. Clearly, this approach risks an infinite expansion of the list |
introduction. Clearly, this approach risks an infinite expansion of the list |
of widely used entities.</P> |
of widely used entities.</p> |
</DIV> |
</div> |
|
|
<DIV class="section"> |
<div class="section"> |
<H2><A name=sectb22>Generic and specific structures</A></H2> |
|
|
|
<P> |
<h2><a name="sectb22">Generic and specific structures</a></h2> |
|
<p> |
Thus, it is apparently impossible to construct an exhaustive inventory of all |
Thus, it is apparently impossible to construct an exhaustive inventory of all |
those entities which are necessary and sufficient to precisely describe any |
those entities which are necessary and sufficient to precisely describe any |
document. It also seems impossible to specify all possible arrangements of |
document. It also seems impossible to specify all possible arrangements of |
these entities in a document. This is why Thot uses a <EM>meta-model</EM> |
these entities in a document. This is why Thot uses a <em>meta-model</em> |
instead, which permits the description of numerous <EM>models</EM>, each one |
instead, which permits the description of numerous <em>models</em>, each one |
describing a <EM>class</EM> of documents.</P> |
describing a <em>class</em> of documents.</p> |
<P> |
<p> |
A <EM>class</EM> is a set of documents having very similar structure. Thus, |
A <em>class</em> is a set of documents having very similar structure. Thus, |
the collection of research reports published by a laboratory constitutes a |
the collection of research reports published by a laboratory constitutes a |
class; the set of commercial proposals by the sales department of a company |
class; the set of commercial proposals by the sales department of a company |
constitutes another class; the set of articles published by a journal |
constitutes another class; the set of articles published by a journal |
constitutes a third class. Clearly, it is not possible to enumerate every |
constitutes a third class. Clearly, it is not possible to enumerate every |
possible document class. It is also clear that new document classes must be |
possible document class. It is also clear that new document classes must be |
created to satisfy new needs and applications.</P> |
created to satisfy new needs and applications.</p> |
<P> |
<p> |
To give a more rigorous definition of classes, we must introduce the ideas of |
To give a more rigorous definition of classes, we must introduce the ideas of |
<EM>generic structure</EM> and <EM>specific structure</EM>. Each document has |
<em>generic structure</em> and <em>specific structure</em>. Each document has |
a <EM>specific structure</EM> which organizes the various parts which comprise |
a <em>specific structure</em> which organizes the various parts which comprise |
it. We illustrate this with the help of a simple example comparing two |
it. We illustrate this with the help of a simple example comparing two |
reports, A and B (<A href="#specstruct">see Figure</A>). The report A contains |
reports, A and B (<a href="#specstruct">see Figure</a>). The report A contains |
an introduction followed by three chapters and a conclusion. The first |
an introduction followed by three chapters and a conclusion. The first |
chapter contains two sections, the second, three sections. That is the |
chapter contains two sections, the second, three sections. That is the |
<EM>specific</EM> structure of document A. Similarly, the structure of |
<em>specific</em> structure of document A. Similarly, the structure of |
document B is: an introduction, two chapters, a conclusion; Chapter 1 has |
document B is: an introduction, two chapters, a conclusion; Chapter 1 has |
three sections while Chapter 2 has four. The specific structures of these two |
three sections while Chapter 2 has four. The specific structures of these two |
documents are thus different.</P> |
documents are thus different.</p> |
|
|
<DIV class="figure"> |
<div class="figure"> |
<HR> |
<hr> |
<PRE> |
<pre> Report A Report B |
Report A Report B |
|
Introduction Introduction |
Introduction Introduction |
Chapter 1 Chapter 1 |
Chapter 1 Chapter 1 |
Section 1.1 Section 1.1 |
Section 1.1 Section 1.1 |
Line 342 documents are thus different.</P>
|
Line 504 documents are thus different.</P>
|
Section 2.3 Section 2.2 |
Section 2.3 Section 2.2 |
Chapter 3 Section 2.3 |
Chapter 3 Section 2.3 |
Conclusion Section 2.4 |
Conclusion Section 2.4 |
Conclusion |
Conclusion</pre> |
</PRE> |
<p align=center> |
<P align=center> |
<em><a name="specstruct">Two specific structures</a></em></p> |
<EM><A name="specstruct">Two specific structures</A></EM></P> |
<hr> |
<HR> |
</div> |
</DIV> |
<p> |
<P> |
The <em>generic structure</em> defines the ways in which specific structures |
The <EM>generic structure</EM> defines the ways in which specific structures |
|
can be constructed. It specifies how to generate specific structures. The |
can be constructed. It specifies how to generate specific structures. The |
reports A and B, though different, are constructed in accordance with the same |
reports A and B, though different, are constructed in accordance with the same |
generic structure, which specifies that a report contains an introduction |
generic structure, which specifies that a report contains an introduction |
followed by a variable number of chapters and a conclusion, with each chapter |
followed by a variable number of chapters and a conclusion, with each chapter |
containing a variable number of sections.</P> |
containing a variable number of sections.</p> |
<P> |
<p> |
There is a one-to-one correspondence between a class and a generic structure: |
There is a one-to-one correspondence between a class and a generic structure: |
all the documents of a class are constructed in accordance with the same |
all the documents of a class are constructed in accordance with the same |
generic structure. Hence the definition of the class: a class is a set of |
generic structure. Hence the definition of the class: a class is a set of |
documents whose specific structure is constructed in accordance with the same |
documents whose specific structure is constructed in accordance with the same |
generic structure. A class is characterized by its generic structure.</P> |
generic structure. A class is characterized by its generic structure.</p> |
<P> |
<p> |
Thus, a generic structure can be considered to be a model at the level which |
Thus, a generic structure can be considered to be a model at the level which |
interests us, but only for one class of documents. When the definition is |
interests us, but only for one class of documents. When the definition is |
limited to a single class of documents, it is possible to define a model which |
limited to a single class of documents, it is possible to define a model which |
does a good job of representing the documents of the class, including the |
does a good job of representing the documents of the class, including the |
necessary entities and unencumbered by useless entities. The description of |
necessary entities and unencumbered by useless entities. The description of |
the organization of the documents in the class can then be sufficiently |
the organization of the documents in the class can then be sufficiently |
precise.</P> |
precise.</p> |
</DIV> |
</div> |
|
|
<DIV class="section"> |
<div class="section"> |
<H2><A name=sectb23>Logical structure and physical structure</A></H2> |
|
|
|
<P> |
<h2><a name="sectb23">Logical structure and physical structure</a></h2> |
Generic structures only describe the <EM>logical</EM> organization of |
<p> |
documents, not their <EM>physical</EM> presentation on a screen or on sheets |
Generic structures only describe the <em>logical</em> organization of |
|
documents, not their <em>physical</em> presentation on a screen or on sheets |
of paper. However, for a document to be displayed or printed, its graphic |
of paper. However, for a document to be displayed or printed, its graphic |
presentation must be taken into account.</P> |
presentation must be taken into account.</p> |
<P> |
<p> |
An examination of current printed documents shows that the details of |
An examination of current printed documents shows that the details of |
presentation essentially serve to bring out their logical structure. Outside |
presentation essentially serve to bring out their logical structure. Outside |
of some particular domains, notably advertising, the presentation is rarely |
of some particular domains, notably advertising, the presentation is rarely |
Line 393 text: vertical space, margin changes, pa
|
Line 554 text: vertical space, margin changes, pa
|
combined with the changes in the shapes or weight of the characters. These |
combined with the changes in the shapes or weight of the characters. These |
effects serve to indicate the transitions between paragraphs, sections, or |
effects serve to indicate the transitions between paragraphs, sections, or |
chapters: an object's level in the logical structure of the document is shown |
chapters: an object's level in the logical structure of the document is shown |
by the markedness of the effects.</P> |
by the markedness of the effects.</p> |
<P> |
<p> |
Since the model permits the description of all of the logical structure of the |
Since the model permits the description of all of the logical structure of the |
document, the presentation can be derived from the model without being |
document, the presentation can be derived from the model without being |
submerged in the document itself. It suffices to use the logical structure of |
submerged in the document itself. It suffices to use the logical structure of |
the document to make the desired changes in its presentation: changes in type |
the document to make the desired changes in its presentation: changes in type |
size, type style, spacing, margin, centering, etc.</P> |
size, type style, spacing, margin, centering, etc.</p> |
<P> |
<p> |
Just as one cannot define a unique generic logical structure for all document |
Just as one cannot define a unique generic logical structure for all document |
classes, one cannot define universal presentation rules which can be applied |
classes, one cannot define universal presentation rules which can be applied |
to all document classes. For certain types of documents the chapter titles |
to all document classes. For certain types of documents the chapter titles |
will be centered on the page and printed in large, bold type. For other |
will be centered on the page and printed in large, bold type. For other |
documents, the same chapter titles will be printed in small, italic type and |
documents, the same chapter titles will be printed in small, italic type and |
aligned on the left margin.</P> |
aligned on the left margin.</p> |
<P> |
<p> |
Therefore, it is necessary to base the presentation specifications for |
Therefore, it is necessary to base the presentation specifications for |
documents on their class. Such a specification can be very fine-grained, |
documents on their class. Such a specification can be very fine-grained, |
because the presentation is expressed in terms of the entities defined in the |
because the presentation is expressed in terms of the entities defined in the |
Line 415 generic logical structure of the class.
|
Line 576 generic logical structure of the class.
|
different presentation for the chapter titles and the section titles, and |
different presentation for the chapter titles and the section titles, and |
similarly to specify titles for the sections according to their level in the |
similarly to specify titles for the sections according to their level in the |
section hierarchy. The set of rules which specify the presentation of all the |
section hierarchy. The set of rules which specify the presentation of all the |
elements defined in a generic logical structure is called a <EM>generic |
elements defined in a generic logical structure is called a <em>generic |
presentation</EM>.</P> |
presentation</em>.</p> |
<P> |
<p> |
There are several advantages derived from having a presentation linked to the |
There are several advantages derived from having a presentation linked to the |
generic structure and described by a generic presentation. Homogeneity is the |
generic structure and described by a generic presentation. Homogeneity is the |
first. Since every document in a class corresponds to the same generic |
first. Since every document in a class corresponds to the same generic |
Line 426 same class can be assured by applying th
|
Line 587 same class can be assured by applying th
|
documents of the class. Homogeneity of presentation can also be found among |
documents of the class. Homogeneity of presentation can also be found among |
the entities of a single document: every section heading will be presented in |
the entities of a single document: every section heading will be presented in |
the same way, the first line of every paragraph of the same type will have the |
the same way, the first line of every paragraph of the same type will have the |
same indentation, etc.</P> |
same indentation, etc.</p> |
<P> |
<p> |
Another advantage of this approach to presentation is that it facilitates |
Another advantage of this approach to presentation is that it facilitates |
changes to the graphical aspect of documents. A change to the generic |
changes to the graphical aspect of documents. A change to the generic |
presentation rules attached to each type of entity will alter the presentation |
presentation rules attached to each type of entity will alter the presentation |
of the entire document, and will do so homogenously. In this case, the |
of the entire document, and will do so homogenously. In this case, the |
internal homogeneity of the class is no longer assured, but the way to control |
internal homogeneity of the class is no longer assured, but the way to control |
it is simple. It suffices to adopt a single generic presentation for the |
it is simple. It suffices to adopt a single generic presentation for the |
entire class.</P> |
entire class.</p> |
<P> |
<p> |
If the presentation of the class does not have to be homogenous, then the |
If the presentation of the class does not have to be homogenous, then the |
appearance of the document can be adapted to the way it will be used or to the |
appearance of the document can be adapted to the way it will be used or to the |
device used to render it. This quality is sufficient to allow the existence |
device used to render it. This quality is sufficient to allow the existence |
of <A name="mulpres">many generic presentations</A> for the same document |
of <a name="mulpres">many generic presentations</a> for the same document |
class. By applying one or the other of these presentations to it, the document |
class. By applying one or the other of these presentations to it, the document |
can be seen under different graphical aspects. It must be emphasized that |
can be seen under different graphical aspects. It must be emphasized that |
this type of modification of the presentation is not a change to the document |
this type of modification of the presentation is not a change to the document |
itself (in its specific logical structure or its content), but only in its |
itself (in its specific logical structure or its content), but only in its |
appearance at the time of editing or printing.</P> |
appearance at the time of editing or printing.</p> |
</DIV> |
</div> |
|
|
<DIV class="section"> |
<div class="section"> |
<H2><A name=sectb24>Document structures and object structures</A></H2> |
|
|
|
<P> |
<h2><a name="sectb24">Document structures and object structures</a></h2> |
|
<p> |
So far, we have only discussed the global structure of documents and have not |
So far, we have only discussed the global structure of documents and have not |
considered the contents found in that structure. We could limit ourselves to |
considered the contents found in that structure. We could limit ourselves to |
purely textual contents by assuming that a title or a paragraph contains a |
purely textual contents by assuming that a title or a paragraph contains a |
simple linear text. But this model would be too restrictive. In fact, |
simple linear text. But this model would be too restrictive. In fact, |
certain documents contain not only text, but also contain tables, diagrams, |
certain documents contain not only text, but also contain tables, diagrams, |
photographs, mathematical formulas, and program fragments. The model must |
photographs, mathematical formulas, and program fragments. The model must |
permit the representation of such <EM>objects</EM>.</P> |
permit the representation of such <em>objects</em>.</p> |
<P> |
<p> |
Just as with the whole of the document, the model takes into account the |
Just as with the whole of the document, the model takes into account the |
logical structure of objects of this type. Some are clearly structured, |
logical structure of objects of this type. Some are clearly structured, |
others are less so. Logical structure can be recognized in mathematical |
others are less so. Logical structure can be recognized in mathematical |
Line 468 in any case, it does not seem possible t
|
Line 629 in any case, it does not seem possible t
|
can represent every one of these types of objects. The approach taken in the |
can represent every one of these types of objects. The approach taken in the |
definition of meta-structure and document classes also applies to objects. |
definition of meta-structure and document classes also applies to objects. |
Object classes can be defined which put together objects of similar type, |
Object classes can be defined which put together objects of similar type, |
constructed from the same generic logical structure.</P> |
constructed from the same generic logical structure.</p> |
<P> |
<p> |
Thus, a mathematical class can be defined and have a generic logical structure |
Thus, a mathematical class can be defined and have a generic logical structure |
associated with it. But even if a single generic structure can represent a |
associated with it. But even if a single generic structure can represent a |
sufficient variety of mathematical formulas, for other objects with less |
sufficient variety of mathematical formulas, for other objects with less |
Line 478 multiple classes assures that the model
|
Line 639 multiple classes assures that the model
|
to be presented. It also permits the system to support objects which were not |
to be presented. It also permits the system to support objects which were not |
initially anticipated. Moreover, this comment applies equally to mathematics: |
initially anticipated. Moreover, this comment applies equally to mathematics: |
different classes of formulas can be described depending on the domain of |
different classes of formulas can be described depending on the domain of |
mathematics being described.</P> |
mathematics being described.</p> |
<P> |
<p> |
Since objects have the same level of logical representation as documents, they |
Since objects have the same level of logical representation as documents, they |
gain the same advantages. In particular, it is possible to define the |
gain the same advantages. In particular, it is possible to define the |
presentation separately from the objects themselves and attach it to the |
presentation separately from the objects themselves and attach it to the |
Line 488 presentation and the presentation of eve
|
Line 649 presentation and the presentation of eve
|
changed simply by changing the generic presentation of the class. Another |
changed simply by changing the generic presentation of the class. Another |
advantage of using this document model is that the system does not bother the |
advantage of using this document model is that the system does not bother the |
user with the details of presentation, but rather allows the user to |
user with the details of presentation, but rather allows the user to |
concentrate on the logical aspect of the document and the objects.</P> |
concentrate on the logical aspect of the document and the objects.</p> |
<P> |
<p> |
It is clear that the documents in a class do not necessarily use the same |
It is clear that the documents in a class do not necessarily use the same |
classes of objects: one technical report will contain tables while another |
classes of objects: one technical report will contain tables while another |
report will have no tables but will use mathematical formulas. The usable |
report will have no tables but will use mathematical formulas. The usable |
object classes are not always mentioned in a limiting way in the generic |
object classes are not always mentioned in a limiting way in the generic |
logical structure of documents. Rather, they can be chosen freely from a |
logical structure of documents. Rather, they can be chosen freely from a |
large set, independent of the document class.</P> |
large set, independent of the document class.</p> |
<P> |
<p> |
Thus, the object classes will be made commonplace and usable in every |
Thus, the object classes will be made commonplace and usable in every |
document. The notion of ``object'' can be enlarged to include not only |
document. The notion of ``object'' can be enlarged to include not only |
non-textual elements, but also certain types of textual elements which can |
non-textual elements, but also certain types of textual elements which can |
appear in practically every document, whatever their class. Among these |
appear in practically every document, whatever their class. Among these |
textual elements, one can mention enumerations, descriptions, examples, |
textual elements, one can mention enumerations, descriptions, examples, |
quotations, even paragraphs.</P> |
quotations, even paragraphs.</p> |
<P> |
<p> |
Thus, the document model is not a single, general model describing every type |
Thus, the document model is not a single, general model describing every type |
of document in one place. Rather, it is a meta-model which can be used to |
of document in one place. Rather, it is a meta-model which can be used to |
describe many different models each of which represents either a class of |
describe many different models each of which represents either a class of |
similar documents or a class of similar objects which every document can |
similar documents or a class of similar objects which every document can |
include.</P> |
include.</p> |
</DIV> |
</div> |
<HR> |
<hr> |
</DIV> |
</div> |
|
|
<DIV class="chapter"> |
<div class="chapter"> |
<H1><A name=sect3>The S language</A></H1> |
|
|
|
|
<h1><a name="sect3">The S language</a></h1> |
|
|
<DIV class="section"> |
<div class="section"> |
<H2><A name=sectb31>Document meta-structure</A></H2> |
|
|
|
<P> |
<h2><a name="sectb31">Document meta-structure</a></h2> |
|
<p> |
Since the concept of meta-structure is well suited to the task of describing |
Since the concept of meta-structure is well suited to the task of describing |
documents at a high level of abstraction, this meta-structure must be |
documents at a high level of abstraction, this meta-structure must be |
precisely defined. Toward that end this section first presents the basic |
precisely defined. Toward that end this section first presents the basic |
elements from which documents and structured objects are composed and then |
elements from which documents and structured objects are composed and then |
specifies the ways in which these basic elements are assembled into structures |
specifies the ways in which these basic elements are assembled into structures |
representing complete documents and objects.</P> |
representing complete documents and objects.</p> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc311>The basic types</A></H3> |
|
|
|
<P> |
<h3><a name="sectc311">The basic types</a></h3> |
|
<p> |
At the lowest level of a document's structure, the first atom considered is |
At the lowest level of a document's structure, the first atom considered is |
the character. However, since characters are seldom isolated, usually |
the character. However, since characters are seldom isolated, usually |
appearing as part of a linear sequence, and in order to reduce the complexity |
appearing as part of a linear sequence, and in order to reduce the complexity |
of the document structure, <EM>character strings</EM> are used as atoms and |
of the document structure, <em>character strings</em> are used as atoms and |
consecutive characters belonging to the same structural element are grouped in |
consecutive characters belonging to the same structural element are grouped in |
the same character string.</P> |
the same character string.</p> |
<P> |
<p> |
If the structure of a document is not refined to go down to the level of |
If the structure of a document is not refined to go down to the level of |
words or phrases, the contents of a simple paragraph can be considered to be a |
words or phrases, the contents of a simple paragraph can be considered to be a |
single character string. On the other hand, the title of a chapter, the title |
single character string. On the other hand, the title of a chapter, the title |
of the first section of that chapter, and the text of the first paragraph of |
of the first section of that chapter, and the text of the first paragraph of |
that section constitute three different character strings, because they belong |
that section constitute three different character strings, because they belong |
to distinct structural elements.</P> |
to distinct structural elements.</p> |
<P> |
<p> |
If, instead, a very fine-grained representation for the structure of a |
If, instead, a very fine-grained representation for the structure of a |
document is sought, character strings could be defined to contain only a |
document is sought, character strings could be defined to contain only a |
single word, or even just a single character. This is the case, for example, |
single word, or even just a single character. This is the case, for example, |
Line 553 in programs, for which one wants to ret
|
Line 714 in programs, for which one wants to ret
|
syntax of the programming language. In this case, an assignment statement |
syntax of the programming language. In this case, an assignment statement |
initializing a simple variable to zero would be composed of two structural |
initializing a simple variable to zero would be composed of two structural |
elements, the identifier of the variable (a short character string) and the |
elements, the identifier of the variable (a short character string) and the |
assigned value (a string of a single character, `0').</P> |
assigned value (a string of a single character, `0').</p> |
<P> |
<p> |
The character string is not the only atom necessary for representing those |
The character string is not the only atom necessary for representing those |
documents that interest us. It suffices for purely textual documents, but as |
documents that interest us. It suffices for purely textual documents, but as |
soon as the non-textual objects which we have considered arise, there must be |
soon as the non-textual objects which we have considered arise, there must be |
other atoms; the number of objects which are to be represented determines the |
other atoms; the number of objects which are to be represented determines the |
number of types of atoms that are necessary.</P> |
number of types of atoms that are necessary.</p> |
<P> |
<p> |
Primitive <EM>graphical elements</EM> are used for tables and figures of |
Primitive <em>graphical elements</em> are used for tables and figures of |
different types. These elements are simple geometric shapes like horizontal |
different types. These elements are simple geometric shapes like horizontal |
or vertical lines, which are sufficient for tables, or even oblique lines, |
or vertical lines, which are sufficient for tables, or even oblique lines, |
arrows, rectangles, circles, polygons, and curves for use in figures. From |
arrows, rectangles, circles, polygons, and curves for use in figures. From |
these elements and character strings, graphical objects and tables can be |
these elements and character strings, graphical objects and tables can be |
constructed.</P> |
constructed.</p> |
<P> |
<p> |
Photographs, though having very little structure, must still appear in |
Photographs, though having very little structure, must still appear in |
documents. They are supported by <EM>picture</EM> elements, which are |
documents. They are supported by <em>picture</em> elements, which are |
represented as matrices of pixels.</P> |
represented as matrices of pixels.</p> |
<P> |
<p> |
Finally, mathematical notations require certain elements which are |
Finally, mathematical notations require certain elements which are |
simultaneously characters and graphical elements, the <EM>symbols</EM>. By way |
simultaneously characters and graphical elements, the <em>symbols</em>. By way |
of example, radicals, integration signs, or even large parentheses are |
of example, radicals, integration signs, or even large parentheses are |
examples of this type of atom. The size of each of these symbols is |
examples of this type of atom. The size of each of these symbols is |
determined by its environment, that is to say, by the expression to which it |
determined by its environment, that is to say, by the expression to which it |
is attached.</P> |
is attached.</p> |
<P> |
<p> |
To summarize, the primitive elements which are used in the construction of |
To summarize, the primitive elements which are used in the construction of |
documents and structured objects are:</P> |
documents and structured objects are:</p> |
<UL> |
<ul> |
<LI>character strings, |
<li> |
<LI>graphical elements, |
character strings, |
<LI>pictures, |
<li> |
<LI>and mathematical symbols. |
graphical elements, |
</UL> |
<li> |
</DIV> |
pictures, |
|
<li> |
|
and mathematical symbols. |
|
</ul> |
|
</div> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc312>Constructed elements</A></H3> |
|
|
|
<P> |
<h3><a name="sectc312">Constructed elements</a></h3> |
|
<p> |
A document is evidently formed from primitive elements. But the model of Thot |
A document is evidently formed from primitive elements. But the model of Thot |
also proposes higher level elements. Thus, in a document composed of several |
also proposes higher level elements. Thus, in a document composed of several |
chapters, each chapter is an element, and in the chapters each section is also |
chapters, each chapter is an element, and in the chapters each section is also |
an element, and so on. A document is thus an organized set of elements.</P> |
an element, and so on. A document is thus an organized set of elements.</p> |
<P> |
<p> |
In a document there are different sorts of elements. Each element has a |
In a document there are different sorts of elements. Each element has a |
<EM>type</EM> which indicates the role of the element within the document as a |
<em>type</em> which indicates the role of the element within the document as a |
whole. Thus, we have, for example, the chapter and section types. The |
whole. Thus, we have, for example, the chapter and section types. The |
document is made up of typed elements: elements of the type chapter and |
document is made up of typed elements: elements of the type chapter and |
elements of the type section, among others, but also character string elements |
elements of the type section, among others, but also character string elements |
and graphical elements: the primitive elements are typed elements just as |
and graphical elements: the primitive elements are typed elements just as |
well. At the other extreme, the document itself is also considered to be a |
well. At the other extreme, the document itself is also considered to be a |
typed element.</P> |
typed element.</p> |
<P> |
<p> |
The important difference between the primitive elements and the other elements |
The important difference between the primitive elements and the other elements |
of the document is that the primitive elements are atoms (they cannot be |
of the document is that the primitive elements are atoms (they cannot be |
decomposed), whereas the others, called <EM>constructed elements</EM>, are |
decomposed), whereas the others, called <em>constructed elements</em>, are |
composed of other elements, which can either be primitive elements or |
composed of other elements, which can either be primitive elements or |
constructed elements. A constructed element of type chapter (or more simply, |
constructed elements. A constructed element of type chapter (or more simply, |
``a chapter'') is composed of sections, which are also constructed elements. A |
``a chapter'') is composed of sections, which are also constructed elements. A |
paragraph, a constructed element, can be made up of character strings, which |
paragraph, a constructed element, can be made up of character strings, which |
are primitive elements, and of equations, which are constructed elements.</P> |
are primitive elements, and of equations, which are constructed elements.</p> |
<P> |
<p> |
A document is also a constructed element. This is an important point. In |
A document is also a constructed element. This is an important point. In |
particular, it allows a document to be treated as part of another document, |
particular, it allows a document to be treated as part of another document, |
and conversely, permits a part of a document to be treated as a complete |
and conversely, permits a part of a document to be treated as a complete |
Line 623 document. Thus, an article presented in
|
Line 788 document. Thus, an article presented in
|
a document in itself, while the editor of the journal considers it to be part |
a document in itself, while the editor of the journal considers it to be part |
of an issue. A table or a figure appearing in a document can be extracted and |
of an issue. A table or a figure appearing in a document can be extracted and |
treated as a complete document, for example to prepare transparencies for a |
treated as a complete document, for example to prepare transparencies for a |
conference.</P> |
conference.</p> |
<P> |
<p> |
These thoughts about types and constructed elements apply just as well to |
These thoughts about types and constructed elements apply just as well to |
objects as they do to documents. A table is a constructed element made up of |
objects as they do to documents. A table is a constructed element made up of |
other constructed elements, rows and columns. A row is formed of cells, which |
other constructed elements, rows and columns. A row is formed of cells, which |
are also constructed elements which contain primitive elements (character |
are also constructed elements which contain primitive elements (character |
strings) and/or constructed elements like equations.</P> |
strings) and/or constructed elements like equations.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc313>Logical structure constructors</A></H3> |
|
|
|
<P> |
<h3><a name="sectc313">Logical structure constructors</a></h3> |
|
<p> |
Having defined the primitive elements and the constructed elements, it is now |
Having defined the primitive elements and the constructed elements, it is now |
time to define the types of organization which allow the building of |
time to define the types of organization which allow the building of |
structures. For this, we rely on the notion of the <EM>constructor</EM>. A |
structures. For this, we rely on the notion of the <em>constructor</em>. A |
constructor defines a way of assembling certain elements in a structure. It |
constructor defines a way of assembling certain elements in a structure. It |
resides at the level of the meta-structure: it does not describe the existing |
resides at the level of the meta-structure: it does not describe the existing |
relations in a given structure, but rather defines how elements are assembled |
relations in a given structure, but rather defines how elements are assembled |
to build a structure that conforms to a model.</P> |
to build a structure that conforms to a model.</p> |
<P> |
<p> |
In defining the overall organization of documents, the first two constructors |
In defining the overall organization of documents, the first two constructors |
considered are the aggregate and the list.</P> |
considered are the aggregate and the list.</p> |
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd3131>Aggregate and List</A></H4> |
|
|
|
<P> |
<h4><a name="sectd3131">Aggregate and List</a></h4> |
The <EM>aggregate</EM> constructor is used to define constructed element types |
<p> |
|
The <em>aggregate</em> constructor is used to define constructed element types |
which are collections of a given number of other elements. These collections |
which are collections of a given number of other elements. These collections |
may or may not be ordered. The elements may be either constructed or |
may or may not be ordered. The elements may be either constructed or |
primitive and are specified by their type. A report (that is, a constructed |
primitive and are specified by their type. A report (that is, a constructed |
element of the report type) has an aggregate structure. It is formed from a |
element of the report type) has an aggregate structure. It is formed from a |
title, an author's name, an introduction, a body, and a conclusion, making it |
title, an author's name, an introduction, a body, and a conclusion, making it |
a collection of five element types. This type of constructor is found in |
a collection of five element types. This type of constructor is found in |
practically every document, and generally at several levels in a document.</P> |
practically every document, and generally at several levels in a document.</p> |
<P> |
<p> |
The <EM>list</EM> constructor is used to define constructed elements which are |
The <em>list</em> constructor is used to define constructed elements which are |
ordered sequences of elements (constructed or primitive) having the same type. |
ordered sequences of elements (constructed or primitive) having the same type. |
The minimum and maximum numbers of elements for the sequence can be specified |
The minimum and maximum numbers of elements for the sequence can be specified |
in the list constructor or the number of elements can be left unconstrained. |
in the list constructor or the number of elements can be left unconstrained. |
Line 668 The body of a report is a list of chapte
|
Line 833 The body of a report is a list of chapte
|
contain a minimum of two chapters (is a chapter useful if it is the only one |
contain a minimum of two chapters (is a chapter useful if it is the only one |
in the report?) The chapter itself can contain a list of sections, each |
in the report?) The chapter itself can contain a list of sections, each |
section containing a list of paragraphs. In the same way as the aggregate, |
section containing a list of paragraphs. In the same way as the aggregate, |
the list is a very frequently used constructor in every type of document. |
the list is a very frequently used constructor in every type of document. |
However, these two constructors are not sufficient to describe every document |
However, these two constructors are not sufficient to describe every document |
structure; thus other constructors supplement them.</P> |
structure; thus other constructors supplement them.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd3132>Choice, Schema, and Unit</A></H4> |
|
|
|
<P> |
<h4><a name="sectd3132">Choice, Schema, and Unit</a></h4> |
The <EM>choice</EM> constructor is used to define the structure of an element |
<p> |
|
The <em>choice</em> constructor is used to define the structure of an element |
type for which one alternative is chosen from several possibilities. Thus, a |
type for which one alternative is chosen from several possibilities. Thus, a |
paragraph can be either a simple text paragraph, or an enumeration, or a |
paragraph can be either a simple text paragraph, or an enumeration, or a |
citation.</P> |
citation.</p> |
<P> |
<p> |
The choice constructor indicates the complete list of possible options, which |
The choice constructor indicates the complete list of possible options, which |
can be too restrictive in certain cases, the paragraph being one such case. |
can be too restrictive in certain cases, the paragraph being one such case. |
Two constructors, <EM>unit</EM> and <EM>schema</EM>, address this |
Two constructors, <em>unit</em> and <em>schema</em>, address this |
inconvenience. They allow more freedom in the choice of an element type. If |
inconvenience. They allow more freedom in the choice of an element type. If |
a paragraph is defined by a schema constructor, it is possible to put in the |
a paragraph is defined by a schema constructor, it is possible to put in the |
place of a paragraph a table, an equation, a drawing or any other object |
place of a paragraph a table, an equation, a drawing or any other object |
Line 692 defined by another generic logical struc
|
Line 857 defined by another generic logical struc
|
paragraph as a sequence of units, which could be character strings, symbols, |
paragraph as a sequence of units, which could be character strings, symbols, |
or pictures. The choice constructor alone defines a generic logical structure |
or pictures. The choice constructor alone defines a generic logical structure |
that is relatively constrained; in contrast, using units and schemas, a very |
that is relatively constrained; in contrast, using units and schemas, a very |
open structure can be defined.</P> |
open structure can be defined.</p> |
<P> |
<p> |
The <EM>schema</EM> constructor represents an object defined by a generic |
The <em>schema</em> constructor represents an object defined by a generic |
logical structure chosen freely from among those available.</P> |
logical structure chosen freely from among those available.</p> |
<P> |
<p> |
The <EM>unit</EM> constructor represents an element whose type can be either a |
The <em>unit</em> constructor represents an element whose type can be either a |
primitive type or an element type defined as a unit in the generic logical |
primitive type or an element type defined as a unit in the generic logical |
structure of the document, or in another generic logical structure used in the |
structure of the document, or in another generic logical structure used in the |
document. Such an element may be used in document objects constructed |
document. Such an element may be used in document objects constructed |
according to other generic structures.</P> |
according to other generic structures.</p> |
<P> |
<p> |
Thus, for example, if a cross-reference to a footnote is defined in the |
Thus, for example, if a cross-reference to a footnote is defined in the |
generic logical structure ``Article'' as a unit, a table (an object defined by |
generic logical structure ``Article'' as a unit, a table (an object defined by |
another generic structure) can contain cross-references to footnotes, when |
another generic structure) can contain cross-references to footnotes, when |
Line 712 the type of document into which the tabl
|
Line 877 the type of document into which the tabl
|
to declare, in the generic structure for tables, that the contents of cells |
to declare, in the generic structure for tables, that the contents of cells |
are units. In this way, the generic structure of objects is divided up |
are units. In this way, the generic structure of objects is divided up |
between different types of documents which are able to adapt themselves to the |
between different types of documents which are able to adapt themselves to the |
environment into which they are inserted.</P> |
environment into which they are inserted.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd3133>Reference and Inclusion</A></H4> |
|
|
|
<P> |
<h4><a name="sectd3133">Reference and Inclusion</a></h4> |
The <EM>reference</EM> is used to define document |
<p> |
elements that are cross-references to other elements, such as a section, a |
The <em>reference</em> is used to define document elements that are |
chapter, a bibliographic citation, or a figure. The reference is |
cross-references to other elements, such as a section, a chapter, a |
bi-directional. It can be used to access both the element being |
bibliographic citation, or a figure. The reference is bi-directional. It can |
cross-referenced and each of the elements which make use of the |
be used to access both the element being cross-referenced and each of the |
cross-reference.</P> |
elements which make use of the cross-reference.</p> |
<P> |
<p> |
References can be either <EM>internal</EM> or <EM>external</EM>. That is, |
References can be either <em>internal</em> or <em>external</em>. That is, |
they can designate elements which appear in the same document or in another |
they can designate elements which appear in the same document or in another |
document.</P> |
document.</p> |
<P> |
<p> |
The <EM><A name="inclusion">inclusion</A></EM> constructor is a special type |
The <em><a name="inclusion">inclusion</a></em> constructor is a special type |
of reference. Like the reference, it is an internal or external bidirectional |
of reference. Like the reference, it is an internal or external bidirectional |
link, but it is not a cross-reference. This link represents the ``live'' |
link, but it is not a cross-reference. This link represents the ``live'' |
inclusion of the designated element; it accesses the most recent version of |
inclusion of the designated element; it accesses the most recent version of |
that element and not a ``dead'' copy, fixed in the state in which it was found |
that element and not a ``dead'' copy, fixed in the state in which it was found |
at the moment the copy was made. As soon as an element is modified, all of |
at the moment the copy was made. As soon as an element is modified, all of |
its inclusions are automatically brought up to date. It must be noted that, |
its inclusions are automatically brought up to date. It must be noted that, |
in addition to inclusion, Thot permits the creation of ``dead'' copies.</P> |
in addition to inclusion, Thot permits the creation of ``dead'' copies.</p> |
<P> |
<p> |
There are three types of inclusions: inclusions with full expansion, |
There are three types of inclusions: inclusions with full expansion, |
inclusions with partial expansion, and inclusions without expansion. During |
inclusions with partial expansion, and inclusions without expansion. During |
editing, inclusions without expansion are represented on the screen by the |
editing, inclusions without expansion are represented on the screen by the |
name of the included document, in a special color, while inclusions with |
name of the included document, in a special color, while inclusions with |
expansion (full or partial) are represented by a copy (full or partial) of the |
expansion (full or partial) are represented by a copy (full or partial) of the |
included element (also in a special color). The on-screen representation of a |
included element (also in a special color). The on-screen representation of a |
partial inclusion is a <A href="#sectc3213">``skeleton''</A> image of the |
partial inclusion is a <a href="#sectc3213">``skeleton''</a> image of the |
included document.</P> |
included document.</p> |
<P> |
<p> |
Inclusion with complete expansion can be used to include parts of the same |
Inclusion with complete expansion can be used to include parts of the same |
document or of other documents. Thus, it can be either an internal or an |
document or of other documents. Thus, it can be either an internal or an |
external link. It can be used to include certain bibliographic entries of a |
external link. It can be used to include certain bibliographic entries of a |
scientific article in another article, or to copy part of a mathematical |
scientific article in another article, or to copy part of a mathematical |
formula into another formula of the same document, thus assuring that both |
formula into another formula of the same document, thus assuring that both |
copies will remain synchronized.</P> |
copies will remain synchronized.</p> |
<P> |
<p> |
Inclusion without expansion or with partial expansion is used to include |
Inclusion without expansion or with partial expansion is used to include |
complete documents. It is always an external link. It is used primarily to |
complete documents. It is always an external link. It is used primarily to |
divide very large documents into sub-documents that are easier to manipulate, |
divide very large documents into sub-documents that are easier to manipulate, |
Line 762 especially when there are many authors.
|
Line 926 especially when there are many authors.
|
where each chapter is a different document which can be edited separately. |
where each chapter is a different document which can be edited separately. |
When viewing the book on the screen, it might be desirable to see only the |
When viewing the book on the screen, it might be desirable to see only the |
titles of the chapters and sections. This can be achieved using inclusion |
titles of the chapters and sections. This can be achieved using inclusion |
with partial expansion.</P> |
with partial expansion.</p> |
<P> |
<p> |
During printing, inclusions without expansion or with partial expansion can be |
During printing, inclusions without expansion or with partial expansion can be |
represented either as they were shown on the screen or by a complete (and |
represented either as they were shown on the screen or by a complete (and |
up-to-date) copy of the included element or document.</P> |
up-to-date) copy of the included element or document.</p> |
<P> |
<p> |
The inclusion constructor, whatever its type, respects the generic structure: |
The inclusion constructor, whatever its type, respects the generic structure: |
only those elements authorized by the generic structure can be included at a |
only those elements authorized by the generic structure can be included at a |
given position in a document.</P> |
given position in a document.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd3134>Mark pairs</A></H4> |
|
|
|
<P> |
<h4><a name="sectd3134">Mark pairs</a></h4> |
|
<p> |
It is often useful to delimit certain parts of a document independently from |
It is often useful to delimit certain parts of a document independently from |
the logical structure. For example, one might wish to attach some information |
the logical structure. For example, one might wish to attach some information |
(in the form of an <A href="#sectc315">attribute</A>) or a particular |
(in the form of an <a href="#sectc315">attribute</a>) or a particular |
treatment to a group of words or a set of consecutive paragraphs. <EM>Mark |
treatment to a group of words or a set of consecutive paragraphs. <em>Mark |
pairs</EM> are used to do this.</P> |
pairs</em> are used to do this.</p> |
<P> |
<p> |
Mark pairs are elements which are always paired and are terminals in the |
Mark pairs are elements which are always paired and are terminals in the |
logical structure of the document. Their position in the structure of the |
logical structure of the document. Their position in the structure of the |
document is defined in the generic structure. It is important to note that |
document is defined in the generic structure. It is important to note that |
when the terminals of a mark pair are <EM>extensions</EM> (see the next |
when the terminals of a mark pair are <em>extensions</em> (see the next |
section), they can be used quite freely.</P> |
section), they can be used quite freely.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd3135>Restrictions and Extensions</A></H4> |
|
|
|
<P> |
<h4><a name="sectd3135">Restrictions and Extensions</a></h4> |
|
<p> |
The primitive types and the constructors presented so far permit the |
The primitive types and the constructors presented so far permit the |
definition of the logical structure of documents and objects in a rigorous |
definition of the logical structure of documents and objects in a rigorous |
way. But this definition can be very cumbersome in certain cases, notably |
way. But this definition can be very cumbersome in certain cases, notably |
when trying to constrain or extend the authorized element types in a |
when trying to constrain or extend the authorized element types in a |
particular context. <EM>Restrictions</EM> and <EM>extensions</EM> are used to |
particular context. <em>Restrictions</em> and <em>extensions</em> are used to |
cope with these cases.</P> |
cope with these cases.</p> |
<P> |
<p> |
A restriction associates with a particular element type <EM>A</EM>, a list of |
A restriction associates with a particular element type <em>A</em>, a list of |
those element types which elements of type <EM>A</EM> may not contain, even if |
those element types which elements of type <em>A</em> may not contain, even if |
the definition of type <EM>A</EM> and those of its components authorize them |
the definition of type <em>A</em> and those of its components authorize them |
otherwise. This simplifies the writing of generic logical structures and |
otherwise. This simplifies the writing of generic logical structures and |
allows limitations to be placed, when necessary, on the choices offered by the |
allows limitations to be placed, when necessary, on the choices offered by the |
schema and unit constructors.</P> |
schema and unit constructors.</p> |
<P> |
<p> |
Extensions are the inverse of restrictions. They identify a list of element |
Extensions are the inverse of restrictions. They identify a list of element |
types whose presence <EM>is</EM> permitted, even if its definition and those |
types whose presence <em>is</em> permitted, even if its definition and those |
of its components do not authorize them otherwise.</P> |
of its components do not authorize them otherwise.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd3136>Summary</A></H4> |
|
|
<h4><a name="sectd3136">Summary</a></h4> |
<P> |
<p> |
Thus, four constructors are used to construct a document:</P> |
Thus, four constructors are used to construct a document:</p> |
<UL> |
<ul> |
<LI>the aggregate constructor (ordered or not), |
<li> |
<LI>the list constructor, |
the aggregate constructor (ordered or not), |
<LI>the choice constructor and its extensions, the unit and schema |
<li> |
constructors, |
the list constructor, |
<LI>the reference constructor and its variant, the inclusion. |
<li> |
</UL> |
the choice constructor and its extensions, the unit and schema constructors, |
<P> |
<li> |
|
the reference constructor and its variant, the inclusion. |
|
</ul> |
|
<p> |
These constructors are also sufficient for objects. Thus, these constructors |
These constructors are also sufficient for objects. Thus, these constructors |
provide a homogenous meta-model which can describe both the organization of |
provide a homogenous meta-model which can describe both the organization of |
the document as a whole and that of the various types of objects which it |
the document as a whole and that of the various types of objects which it |
contains. After presenting the description language for generic structures, |
contains. After presenting the description language for generic structures, |
we will present several examples which illustrate the appropriateness of the |
we will present several examples which illustrate the appropriateness of the |
model.</P> |
model.</p> |
<P> |
<p> |
The first three constructors (aggregate, list and choice) lead to tree-like |
The first three constructors (aggregate, list and choice) lead to tree-like |
structures for documents and objects, the objects being simply the subtrees of |
structures for documents and objects, the objects being simply the subtrees of |
the tree of a document (or even of other objects' subtrees). The reference |
the tree of a document (or even of other objects' subtrees). The reference |
Line 840 constructor introduces other, non-hierar
|
Line 1007 constructor introduces other, non-hierar
|
of the tree: when a paragraph makes reference to a chapter or a section, that |
of the tree: when a paragraph makes reference to a chapter or a section, that |
relation leaves the purely tree-like structure. Moreover, external reference |
relation leaves the purely tree-like structure. Moreover, external reference |
and inclusion constructors permit the establishment of links between different |
and inclusion constructors permit the establishment of links between different |
documents, thus creating a hypertext structure.</P> |
documents, thus creating a hypertext structure.</p> |
</DIV> |
</div> |
</DIV> |
</div> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc314>Associated Elements</A></H3> |
|
|
|
<P> |
<h3><a name="sectc314">Associated Elements</a></h3> |
|
<p> |
Thanks to the list, aggregate and choice constructors, the organization of the |
Thanks to the list, aggregate and choice constructors, the organization of the |
document is specified rigorously, using constructed and primitive elements. |
document is specified rigorously, using constructed and primitive elements. |
But a document is made up of more than just its elements; it clearly also |
But a document is made up of more than just its elements; it clearly also |
Line 866 course, this brings up questions of the
|
Line 1033 course, this brings up questions of the
|
documents that are broken into pages, but this reflects the structural |
documents that are broken into pages, but this reflects the structural |
instability of these elements. They cannot be treated the same way as |
instability of these elements. They cannot be treated the same way as |
elements like paragraphs or sections, whose position in the structure is |
elements like paragraphs or sections, whose position in the structure is |
directly linked to the semantics of the document.</P> |
directly linked to the semantics of the document.</p> |
<P> |
<p> |
Those elements whose position in the structure of the document is not fixed, |
Those elements whose position in the structure of the document is not fixed, |
even though they are definitely part of the document, are called |
even though they are definitely part of the document, are called |
<EM>associated elements</EM>. Associated elements are themselves structures, |
<em>associated elements</em>. Associated elements are themselves structures, |
which is to say that their content can be organized logically by the |
which is to say that their content can be organized logically by the |
constructors from primitive and constructed elements.</P> |
constructors from primitive and constructed elements.</p> |
<P> |
<p> |
It can happen that the associated elements are totally disconnected from the |
It can happen that the associated elements are totally disconnected from the |
structure of the document, as in a commentary or appraisal of the entire work. |
structure of the document, as in a commentary or appraisal of the entire work. |
But more often, the associated elements are linked to the content of the |
But more often, the associated elements are linked to the content of the |
document by references. This is generally the case for notes and figures, |
document by references. This is generally the case for notes and figures, |
among others.</P> |
among others.</p> |
<P> |
<p> |
Thus, associated elements introduce a new use for the reference constructor. |
Thus, associated elements introduce a new use for the reference constructor. |
It not only serves to create links between elements of the principal structure |
It not only serves to create links between elements of the principal structure |
of the document, but also serves to link the associated elements to the |
of the document, but also serves to link the associated elements to the |
primary structure.</P> |
primary structure.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc315>Attributes</A></H3> |
|
|
|
<P> |
<h3><a name="sectc315">Attributes</a></h3> |
|
<p> |
There remain logical aspects of documents that are not entirely described by |
There remain logical aspects of documents that are not entirely described by |
the structure. Certain types of semantic information, which are not stated |
the structure. Certain types of semantic information, which are not stated |
explicitly in the text, must also be taken into account. In particular, such |
explicitly in the text, must also be taken into account. In particular, such |
Line 900 order to mark them as structurally disti
|
Line 1067 order to mark them as structurally disti
|
frequently appear in the middle of continuous text (e.g. in the interior of a |
frequently appear in the middle of continuous text (e.g. in the interior of a |
paragraph). In this case, there is no change between structural elements; the |
paragraph). In this case, there is no change between structural elements; the |
effect serves to highlight a word, expression, or phrase. The notion of an |
effect serves to highlight a word, expression, or phrase. The notion of an |
<EM>attribute</EM> is used to express this type of information.</P> |
<em>attribute</em> is used to express this type of information.</p> |
<P> |
<p> |
An attribute is a piece of information attached to a structural element which |
An attribute is a piece of information attached to a structural element which |
augments the type of the element and clarifies its function in the document. |
augments the type of the element and clarifies its function in the document. |
Keywords, foreign language words, and titles of other works can all be |
Keywords, foreign language words, and titles of other works can all be |
represented by character strings with attached attributes. Attributes may |
represented by character strings with attached attributes. Attributes may |
also be attached to constructed elements. Thus, an attribute indicating the |
also be attached to constructed elements. Thus, an attribute indicating the |
language can be attached to a single word or to a large part of a |
language can be attached to a single word or to a large part of a |
document.</P> |
document.</p> |
<P> |
<p> |
In fact, an attribute can be any piece of information which is linked to a |
In fact, an attribute can be any piece of information which is linked to a |
part of a document and which can be used by agents which work on the document. |
part of a document and which can be used by agents which work on the document. |
For example, the language in which the document is written determines the set |
For example, the language in which the document is written determines the set |
Line 917 of characters used by an editor or forma
|
Line 1084 of characters used by an editor or forma
|
algorithm or hyphenation dictionary to be used. The attribute ``keyword'' |
algorithm or hyphenation dictionary to be used. The attribute ``keyword'' |
facilitates the work of an information retrieval system. The attribute |
facilitates the work of an information retrieval system. The attribute |
``index word'' allows a formatter to automatically construct an index at the |
``index word'' allows a formatter to automatically construct an index at the |
end of the document.</P> |
end of the document.</p> |
<P> |
<p> |
As with the types of constructed elements, the attributes and the values they |
As with the types of constructed elements, the attributes and the values they |
can take are defined separately in each generic logical structure, not in the |
can take are defined separately in each generic logical structure, not in the |
meta-model, according to the needs of the document class or the nature of the |
meta-model, according to the needs of the document class or the nature of the |
object.</P> |
object.</p> |
<P> |
<p> |
Many types of attributes are offered: numeric, textual, references, and |
Many types of attributes are offered: numeric, textual, references, and |
enumerations:</P> |
enumerations:</p> |
<UL> |
<ul> |
<LI><EM>Numeric attributes</EM> can take integer values (negative, positive, |
<li> |
or null). |
<em>Numeric attributes</em> can take integer values (negative, positive, or |
<LI><EM>Textual attributes</EM> have as their values character strings. |
null). |
<LI><EM>Reference attributes</EM> designate an element of the logical |
<li> |
structure. |
<em>Textual attributes</em> have as their values character strings. |
<LI><EM>Enumeration attributes</EM> can take one value from a limited list of |
<li> |
|
<em>Reference attributes</em> designate an element of the logical structure. |
|
<li> |
|
<em>Enumeration attributes</em> can take one value from a limited list of |
possible values, each value being a name. |
possible values, each value being a name. |
</UL> |
</ul> |
<P> |
<p> |
In a generic structure, there is a distinction between <EM>global |
In a generic structure, there is a distinction between <em>global |
attributes</EM> and <EM>local attributes</EM>. A global attribute can be |
attributes</em> and <em>local attributes</em>. A global attribute can be |
applied to every element type defined in the generic structure where it is |
applied to every element type defined in the generic structure where it is |
specified. In contrast, a local attribute can only be applied to certain |
specified. In contrast, a local attribute can only be applied to certain |
types of elements, even only a single type. The ``language'' attribute |
types of elements, even only a single type. The ``language'' attribute |
presented above is an example of a global attribute. An example of a local |
presented above is an example of a global attribute. An example of a local |
attribute is the rank of an author (principal author of the document or |
attribute is the rank of an author (principal author of the document or |
secondary author): this attribute can only be applied sensibly to an element |
secondary author): this attribute can only be applied sensibly to an element |
of the ``author'' type.</P> |
of the ``author'' type.</p> |
<P> |
<p> |
Attributes can be assigned to the elements which make up the document in many |
Attributes can be assigned to the elements which make up the document in many |
different ways. The author can freely and dynamically place them on any part |
different ways. The author can freely and dynamically place them on any part |
of the document in order to attach supplementary information of his/her choice. |
of the document in order to attach supplementary information of his/her |
However, attributes may only be assigned in accordance with the rules of the |
choice. However, attributes may only be assigned in accordance with the rules |
generic structure; in particular, local attributes can only be assigned to |
of the generic structure; in particular, local attributes can only be assigned |
those element types for which they are defined.</P> |
to those element types for which they are defined.</p> |
<P> |
<p> |
In the generic structure, certain local attributes can be made mandatory for |
In the generic structure, certain local attributes can be made mandatory for |
certain element types. In this case, Thot automatically associates the |
certain element types. In this case, Thot automatically associates the |
attribute with the elements of this type and it requires the user to provide a |
attribute with the elements of this type and it requires the user to provide a |
value for this attribute.</P> |
value for this attribute.</p> |
<P> |
<p> |
Attributes can also be automatically assigned, with a given value, by every |
Attributes can also be automatically assigned, with a given value, by every |
application processing the document in order to systematically add a piece of |
application processing the document in order to systematically add a piece of |
information to certain predefined elements of the document. By way of |
information to certain predefined elements of the document. By way of |
example, in a report containing a French abstract and an English abstract, |
example, in a report containing a French abstract and an English abstract, |
each of the two abstracts is defined as a sequence of paragraphs. The first |
each of the two abstracts is defined as a sequence of paragraphs. The first |
abstract has a value of ``French'' for the ``language'' attribute while the |
abstract has a value of ``French'' for the ``language'' attribute while the |
second abstract's ``language'' attribute has a value of ``English''.</P> |
second abstract's ``language'' attribute has a value of ``English''.</p> |
<P> |
<p> |
In the case of mark pairs, attributes are logically associated with the pair |
In the case of mark pairs, attributes are logically associated with the pair |
as a whole, but are actually attached to the first mark.</P> |
as a whole, but are actually attached to the first mark.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc316>Discussion of the model</A></H3> |
|
|
|
<P> |
<h3><a name="sectc316">Discussion of the model</a></h3> |
|
<p> |
The notions of attribute, constructor, structured element, and associated |
The notions of attribute, constructor, structured element, and associated |
element are used in the definition of generic logical structures of documents |
element are used in the definition of generic logical structures of documents |
and objects. The problem is to assemble them to form generic structures. In |
and objects. The problem is to assemble them to form generic structures. In |
Line 987 considered here; it also arises for the
|
Line 1157 considered here; it also arises for the
|
many document classes. This is the reason why the notion of object is so |
many document classes. This is the reason why the notion of object is so |
broad and why paragraphs and enumerations are also considered to be objects. |
broad and why paragraphs and enumerations are also considered to be objects. |
These object classes not only permit the sharing of the structures of |
These object classes not only permit the sharing of the structures of |
elements, but also of the attributes defined in the generic structures.</P> |
elements, but also of the attributes defined in the generic structures.</p> |
<P> |
<p> |
Structure, such as that presented here, can appear very rigid, and it is |
Structure, such as that presented here, can appear very rigid, and it is |
possible to imagine that a document editing system based on this model could |
possible to imagine that a document editing system based on this model could |
prove very constraining to the user. This is, in fact, a common criticism of |
prove very constraining to the user. This is, in fact, a common criticism of |
syntax-directed editors. This defect can be avoided with Thot, primarily for |
syntax-directed editors. This defect can be avoided with Thot, primarily for |
three reasons:</P> |
three reasons:</p> |
<UL> |
<ul> |
<LI>the generic structures are not fixed in the model itself, |
<li> |
<LI>the model takes the dynamics of documents into account, |
the generic structures are not fixed in the model itself, |
<LI>the constructors offer great flexibility. |
<li> |
</UL> |
the model takes the dynamics of documents into account, |
<P> |
<li> |
|
the constructors offer great flexibility. |
|
</ul> |
|
<p> |
When the generic structure of a document is not predefined, but rather is |
When the generic structure of a document is not predefined, but rather is |
constructed specifically for each document class, it can be carefully adapted |
constructed specifically for each document class, it can be carefully adapted |
to the current needs. In cases where the generic structure is inadequate for |
to the current needs. In cases where the generic structure is inadequate for |
Line 1007 a particular document of the class, it i
|
Line 1180 a particular document of the class, it i
|
new class with a generic structure well suited to the new case or to extend |
new class with a generic structure well suited to the new case or to extend |
the generic structure of the existing class to take into account the specifics |
the generic structure of the existing class to take into account the specifics |
of the document which poses the problem. These two solutions can also be |
of the document which poses the problem. These two solutions can also be |
applied to objects whose structures prove to be poorly designed.</P> |
applied to objects whose structures prove to be poorly designed.</p> |
<P> |
<p> |
The model is sufficiently flexible to take into account all the phases of the |
The model is sufficiently flexible to take into account all the phases of the |
life of the document. When a generic structure specifies that a report must |
life of the document. When a generic structure specifies that a report must |
contain a title, an abstract, an introduction, at least two chapters, and a |
contain a title, an abstract, an introduction, at least two chapters, and a |
conclusion, this means only that a report, <EM>upon completion</EM>, will have |
conclusion, this means only that a report, <em>upon completion</em>, will have |
to contain all of these elements. When the author begins writing, none of |
to contain all of these elements. When the author begins writing, none of |
these elements is present. Thot uses this model. Therefore, it tolerates |
these elements is present. Thot uses this model. Therefore, it tolerates |
documents which do not conform strictly to the generic structure of their |
documents which do not conform strictly to the generic structure of their |
class; it also considers the generic logical structure to be a way of helping |
class; it also considers the generic logical structure to be a way of helping |
the user in the construction of a complex document.</P> |
the user in the construction of a complex document.</p> |
<P> |
<p> |
In contrast, other applications may reject a document which does not conform |
In contrast, other applications may reject a document which does not conform |
strictly to its generic structure. This is, for example, what is done by |
strictly to its generic structure. This is, for example, what is done by |
compilers which refuse to generate code for a program which is not |
compilers which refuse to generate code for a program which is not |
syntactically correct. This might also occur when using a document |
syntactically correct. This might also occur when using a document |
application for a report which does not have an abstract or title.</P> |
application for a report which does not have an abstract or title.</p> |
<P> |
<p> |
The constructors of the document model bring a great flexibility to the |
The constructors of the document model bring a great flexibility to the |
generic structures. A choice constructor (and even more, a unit or schema |
generic structures. A choice constructor (and even more, a unit or schema |
constructor) can represent several, very different elements. The list |
constructor) can represent several, very different elements. The list |
Line 1032 constructor permits the addition of more
|
Line 1205 constructor permits the addition of more
|
together, these two constructors permit any series of elements of different |
together, these two constructors permit any series of elements of different |
types. Of course, this flexibility can be reduced wherever necessary since a |
types. Of course, this flexibility can be reduced wherever necessary since a |
generic structure can limit the choices or the number of elements in a |
generic structure can limit the choices or the number of elements in a |
list.</P> |
list.</p> |
<P> |
<p> |
Another difficulty linked to the use of structure in the document model |
Another difficulty linked to the use of structure in the document model |
resides in the choice of the level of the structure. The structure of a |
resides in the choice of the level of the structure. The structure of a |
discussion could be extracted from the text itself via linguistic analysis. |
discussion could be extracted from the text itself via linguistic analysis. |
Some studies are exploring this approach, but the model of Thot excludes this |
Some studies are exploring this approach, but the model of Thot excludes this |
type of structure. It only takes into account the logical structure provided |
type of structure. It only takes into account the logical structure provided |
explicitly by the author.</P> |
explicitly by the author.</p> |
<P> |
<p> |
However, the level of structure of the model is not imposed. Each generic |
However, the level of structure of the model is not imposed. Each generic |
structure defines its own level of structure, adapted to the document class or |
structure defines its own level of structure, adapted to the document class or |
object and to the ways in which it will be processed. If it will only be |
object and to the ways in which it will be processed. If it will only be |
Line 1049 specialized processing will be applied t
|
Line 1222 specialized processing will be applied t
|
element types on which this processing must act. By way of example, a simple |
element types on which this processing must act. By way of example, a simple |
structure is sufficient for printing formulas, but a more complex structure is |
structure is sufficient for printing formulas, but a more complex structure is |
required to perform symbolic or numeric calculations on the mathematical |
required to perform symbolic or numeric calculations on the mathematical |
expressions. The document model of Thot allows both types of structure.</P> |
expressions. The document model of Thot allows both types of structure.</p> |
</DIV> |
</div> |
</DIV> |
</div> |
|
|
<DIV class="section"> |
<div class="section"> |
<H2><A name=sectb32>The definition language for generic structures</A></H2> |
|
|
|
<P> |
<h2><a name="sectb32">The definition language for generic structures</a></h2> |
|
<p> |
Generic structures, which form the basis of the document model of Thot, are |
Generic structures, which form the basis of the document model of Thot, are |
specified using a special language. This definition language, called S, is |
specified using a special language. This definition language, called S, is |
described in this section.</P> |
described in this section.</p> |
<P> |
<p> |
Each generic structure, which defines a class of documents or objects, is |
Each generic structure, which defines a class of documents or objects, is |
specified by a file, written in the S language, which is called a |
specified by a file, written in the S language, which is called a |
<EM>structure schema</EM>. Structure schemas are compiled into tables, called |
<em>structure schema</em>. Structure schemas are compiled into tables, called |
structure tables, which are used by Thot and which determine its behavior.</P> |
structure tables, which are used by Thot and which determine its behavior.</p> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc321>Writing Conventions</A></H3> |
|
|
|
<P> |
<h3><a name="sectc321">Writing Conventions</a></h3> |
|
<p> |
The grammar of S, like those of the languages P and T presented later, is |
The grammar of S, like those of the languages P and T presented later, is |
described using the meta-language M, derived from the Backus-Naur Form |
described using the meta-language M, derived from the Backus-Naur Form |
(BNF).</P> |
(BNF).</p> |
<P> |
<p> |
In this meta-language each rule of the grammar is composed of a grammar symbol |
In this meta-language each rule of the grammar is composed of a grammar symbol |
followed by an equals sign (`=') and the right part of the rule. The equals |
followed by an equals sign (`=') and the right part of the rule. The equals |
sign plays the same role as the traditional `::=' of BNF: it indicates that |
sign plays the same role as the traditional `::=' of BNF: it indicates that |
the right part defines the symbol of the left part. In the right part,</P> |
the right part defines the symbol of the left part. In the right part,</p> |
<DL> |
<dl> |
<DT>concatenation</DT> |
<dt>concatenation</dt> |
<DD>is shown by the juxtaposition of symbols; |
<dd> |
</DD> |
is shown by the juxtaposition of symbols; |
<DT>character strings</DT> |
</dd> |
<DD>between apostrophes ' represent terminal symbols, that is, keywords in the |
<dt>character strings</dt> |
|
<dd> |
|
between apostrophes ' represent terminal symbols, that is, keywords in the |
language defined. Keywords are written here in upper-case letters, but can be |
language defined. Keywords are written here in upper-case letters, but can be |
written in any combination of upper and lower-case letters. For example, the |
written in any combination of upper and lower-case letters. For example, the |
keyword <TT>DEFPRES</TT> of S can also be written as <TT>defpres</TT> or |
keyword <tt>DEFPRES</tt> of S can also be written as <tt>defpres</tt> or |
<TT>DefPres</TT>. |
<tt>DefPres</tt>. |
</DD> |
</dd> |
<DT>material between brackets</DT> |
<dt>material between brackets</dt> |
<DD>(`[' and `]') is optional; |
<dd> |
</DD> |
(`[' and `]') is optional; |
<DT>material between angle brackets</DT> |
</dd> |
<DD>(`<' and `>') can be repeated many times or omitted; |
<dt>material between angle brackets</dt> |
</DD> |
<dd> |
<DT>the slash</DT> |
(`<' and `>') can be repeated many times or omitted; |
<DD>(`/') indicates an alternative, a choice between the options separated by |
</dd> |
the slash character; |
<dt>the slash</dt> |
</DD> |
<dd> |
<DT>the period</DT> |
(`/') indicates an alternative, a choice between the options separated by the |
<DD>marks the end of a rule; |
slash character; |
</DD> |
</dd> |
<DT>text between braces</DT> |
<dt>the period</dt> |
<DD>(`{' and `}') is simply a comment. |
<dd> |
</DD> |
marks the end of a rule; |
</DL> |
</dd> |
<P> |
<dt>text between braces</dt> |
|
<dd> |
|
(`{' and `}') is simply a comment. |
|
</dd> |
|
</dl> |
|
<p> |
The M meta-language also uses the concepts of identifiers, strings, and |
The M meta-language also uses the concepts of identifiers, strings, and |
integers:</P> |
integers:</p> |
<DL> |
<dl> |
<DT><TT>NAME</TT></DT> |
<dt><tt>NAME</tt></dt> |
<DD>represents an identifier, a sequence of letters (upper or lower-case), |
<dd> |
digits, and underline characters (`_'), beginning with a letter. Also |
represents an identifier, a sequence of letters (upper or lower-case), digits, |
considered a letter is the sequence of characters `<TT>\nnn</TT>' where the |
and underline characters (`_'), beginning with a letter. Also considered a |
letter <TT>n</TT> represents the ISO Latin-1 code of the letter in octal. It |
letter is the sequence of characters `<tt>\nnn</tt>' where the letter |
is thus possible to use accented letters in identifiers. The maximum length |
<tt>n</tt> represents the ISO Latin-1 code of the letter in octal. It is thus |
of identifiers is fixed by the compiler. It is normally 31 characters. |
possible to use accented letters in identifiers. The maximum length of |
<P> |
identifiers is fixed by the compiler. It is normally 31 characters. |
|
<p> |
Unlike keywords, upper and lower-case letters are distinct in identifiers. |
Unlike keywords, upper and lower-case letters are distinct in identifiers. |
Thus, <TT>Title</TT>, <TT>TITLE</TT>, and <TT>title</TT> are considered |
Thus, <tt>Title</tt>, <tt>TITLE</tt>, and <tt>title</tt> are considered |
different identifiers.</P> |
different identifiers.</p> |
</DD> |
</dd> |
<DT><TT>STRING</TT></DT> |
<dt><tt>STRING</tt></dt> |
<DD>represents a string. This is a string of characters delimited by |
<dd> |
apostrophes. If an apostrophe must appear in a string, it is doubled. As |
represents a string. This is a string of characters delimited by apostrophes. |
with identifiers, strings can contain characters represented by their octal |
If an apostrophe must appear in a string, it is doubled. As with identifiers, |
code (after a backslash). As with apostrophes, if a backslash must appear in |
strings can contain characters represented by their octal code (after a |
a string, it is doubled. |
backslash). As with apostrophes, if a backslash must appear in a string, it |
</DD> |
is doubled. |
<DT><TT>NUMBER</TT></DT> |
</dd> |
<DD>represents a positive integer or zero (without a sign), or said another |
<dt><tt>NUMBER</tt></dt> |
way, a sequence of decimal digits. |
<dd> |
</DD> |
represents a positive integer or zero (without a sign), or said another way, a |
</DL> |
sequence of decimal digits. |
<P> |
</dd> |
The M language can be used to define itself as follows:</P> |
</dl> |
<PRE> |
<p> |
{ Any text between braces is a comment. } |
The M language can be used to define itself as follows:</p> |
|
<pre>{ Any text between braces is a comment. } |
Grammar = Rule < Rule > 'END' . |
Grammar = Rule < Rule > 'END' . |
{ The < and > signs indicate zero } |
{ The < and > signs indicate zero } |
{ or more repetitions. } |
{ or more repetitions. } |
Line 1159 Ident = NAME .
|
Line 1341 Ident = NAME .
|
{ Identifier, sequence of characters } |
{ Identifier, sequence of characters } |
KeyWord = STRING . |
KeyWord = STRING . |
{ Character string delimited by apostrophes } |
{ Character string delimited by apostrophes } |
END |
END</pre> |
</PRE> |
</div> |
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc322>Extension schemas</A></H3> |
|
|
|
<P> |
<h3><a name="sectc322">Extension schemas</a></h3> |
|
<p> |
A structure schema defines the generic logical structure of a class of |
A structure schema defines the generic logical structure of a class of |
documents or objects, independent of the operations which can be performed on |
documents or objects, independent of the operations which can be performed on |
the documents. However, certain applications may require particular |
the documents. However, certain applications may require particular |
Line 1174 information to be represented by the str
|
Line 1355 information to be represented by the str
|
operate on. Thus a document version manager will need to indicate in the |
operate on. Thus a document version manager will need to indicate in the |
document the parts which belong to one version or another. An indexing system |
document the parts which belong to one version or another. An indexing system |
will add highly-structured index tables as well as the links between these |
will add highly-structured index tables as well as the links between these |
tables and the rest of the document.</P> |
tables and the rest of the document.</p> |
<P> |
<p> |
Thus, many applications need to extend the generic structure of the documents |
Thus, many applications need to extend the generic structure of the documents |
on which they operate to introduce new attributes, associated elements or |
on which they operate to introduce new attributes, associated elements or |
element types. These additions are specific to each application and must be |
element types. These additions are specific to each application and must be |
Line 1184 versions or construct indices for many t
|
Line 1365 versions or construct indices for many t
|
fulfill this role: they define attributes, elements, associated elements, |
fulfill this role: they define attributes, elements, associated elements, |
units, etc., but they can only be used jointly with a structure schema that |
units, etc., but they can only be used jointly with a structure schema that |
they complete. Otherwise, structure schemas can always be used without these |
they complete. Otherwise, structure schemas can always be used without these |
extensions when the corresponding applications are not available.</P> |
extensions when the corresponding applications are not available.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc323>The general organization of structure schemas</A></H3> |
|
|
|
<P> |
<h3><a name="sectc323">The general organization of structure schemas</a></h3> |
Every structure schema begins with the keyword <TT>STRUCTURE</TT> and ends |
<p> |
with the keyword <TT>END</TT>. The keyword <TT>STRUCTURE</TT> is followed by |
Every structure schema begins with the keyword <tt>STRUCTURE</tt> and ends |
the keyword <TT>EXTENSION</TT> in the case where the schema defines an |
with the keyword <tt>END</tt>. The keyword <tt>STRUCTURE</tt> is followed by |
|
the keyword <tt>EXTENSION</tt> in the case where the schema defines an |
extension, then by the name of the generic structure which the schema defines |
extension, then by the name of the generic structure which the schema defines |
(the name of the document or object class). The name of the structure is |
(the name of the document or object class). The name of the structure is |
followed by a semicolon.</P> |
followed by a semicolon.</p> |
<P> |
<p> |
In the case of a complete schema (that is, a schema which is not an |
In the case of a complete schema (that is, a schema which is not an |
extension), the definition of the name of the structure is followed by the |
extension), the definition of the name of the structure is followed by the |
declarations of the default presentation schema, the global attributes, the |
declarations of the default presentation schema, the global attributes, the |
parameters, the structure rules, the associated elements, the units, the |
parameters, the structure rules, the associated elements, the units, the |
skeleton elements and the exceptions. Only the definition of the structure |
skeleton elements and the exceptions. Only the definition of the structure |
rules is required. Each series of declarations begins with a keyword: |
rules is required. Each series of declarations begins with a keyword: |
<TT>DEFPRES</TT>, <TT>ATTR</TT>, <TT>PARAM</TT>, <TT>STRUCT</TT>, |
<tt>DEFPRES</tt>, <tt>ATTR</tt>, <tt>PARAM</tt>, <tt>STRUCT</tt>, |
<TT>ASSOC</TT>, <TT>UNITS</TT>, <TT>EXPORT</TT>, <TT>EXCEPT</TT>.</P> |
<tt>ASSOC</tt>, <tt>UNITS</tt>, <tt>EXPORT</tt>, <tt>EXCEPT</tt>.</p> |
<P> |
<p> |
In the case of an extension schema, there are neither parameters nor skeleton |
In the case of an extension schema, there are neither parameters nor skeleton |
elements and the <TT>STRUCT</TT> section is optional, while that section is |
elements and the <tt>STRUCT</tt> section is optional, while that section is |
required in a schema that is not an extension. On the other hand, extension |
required in a schema that is not an extension. On the other hand, extension |
schemas can contain an <TT>EXTENS</TT> section, which must not appear in a |
schemas can contain an <tt>EXTENS</tt> section, which must not appear in a |
schema which is not an extension; this section defines the complements to |
schema which is not an extension; this section defines the complements to |
attach to the rules found in the schema to which the extension will be added. |
attach to the rules found in the schema to which the extension will be added. |
The sections <TT>ATTR</TT>, <TT>STRUCT</TT>, <TT>ASSOC</TT>, and |
The sections <tt>ATTR</tt>, <tt>STRUCT</tt>, <tt>ASSOC</tt>, and |
<TT>UNITS</TT> define new attributes, new elements, new associated elements, |
<tt>UNITS</tt> define new attributes, new elements, new associated elements, |
and new units which add their definitions to the principal schema.</P> |
and new units which add their definitions to the principal schema.</p> |
<PRE> |
<pre> StructSchema ='STRUCTURE' ElemID ';' |
StructSchema ='STRUCTURE' ElemID ';' |
|
'DEFPRES' PresID ';' |
'DEFPRES' PresID ';' |
[ 'ATTR' AttrSeq ] |
[ 'ATTR' AttrSeq ] |
[ 'PARAM' RulesSeq ] |
[ 'PARAM' RulesSeq ] |
Line 1227 and new units which add their definition
|
Line 1407 and new units which add their definition
|
[ 'EXPORT' SkeletonSeq ] |
[ 'EXPORT' SkeletonSeq ] |
[ 'EXCEPT' ExceptSeq ] |
[ 'EXCEPT' ExceptSeq ] |
'END' . |
'END' . |
ElemID = NAME . |
ElemID = NAME .</pre> |
</PRE> |
<p> |
<P> |
or</p> |
or</P> |
<pre> ExtensSchema ='STRUCTURE' 'EXTENSION' ElemID ';' |
<PRE> |
|
ExtensSchema ='STRUCTURE' 'EXTENSION' ElemID ';' |
|
'DEFPRES' PresID ';' |
'DEFPRES' PresID ';' |
[ 'ATTR' AttrSeq ] |
[ 'ATTR' AttrSeq ] |
[ 'STRUCT' RulesSeq ] |
[ 'STRUCT' RulesSeq ] |
Line 1241 or</P>
|
Line 1419 or</P>
|
[ 'UNITS' RulesSeq ] |
[ 'UNITS' RulesSeq ] |
[ 'EXCEPT' ExceptSeq ] |
[ 'EXCEPT' ExceptSeq ] |
'END' . |
'END' . |
ElemID = NAME . |
ElemID = NAME .</pre> |
</PRE> |
</div> |
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc324>The default presentation</A></H3> |
|
|
|
<P> |
<h3><a name="sectc324">The default presentation</a></h3> |
It was shown <A href="#mulpres">above</A> that many different presentations |
<p> |
|
It was shown <a href="#mulpres">above</a> that many different presentations |
are possible for documents and objects of the same class. The structure |
are possible for documents and objects of the same class. The structure |
schema defines a preferred presentation for the class, called the <EM>default |
schema defines a preferred presentation for the class, called the <em>default |
presentation</EM>. Like generic structures, presentations are described by |
presentation</em>. Like generic structures, presentations are described by |
programs, called <EM>presentation schemas</EM>, which are written in a |
programs, called <em>presentation schemas</em>, which are written in a |
specific language, P, presented <A href="#sectb42">later</A> in this document. |
specific language, P, presented <a href="#sectb42">later</a> in this document. |
The name appearing after the keyword <TT>DEFPRES</TT> is the name of the |
The name appearing after the keyword <tt>DEFPRES</tt> is the name of the |
default presentation schema. When a new document is created, Thot will use |
default presentation schema. When a new document is created, Thot will use |
this presentation schema by default, but the user remains free to choose |
this presentation schema by default, but the user remains free to choose |
another if s/he wishes.</P> |
another if s/he wishes.</p> |
<PRE> |
<pre> PresID = NAME .</pre> |
PresID = NAME . |
</div> |
</PRE> |
|
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc325>Global Attributes</A></H3> |
|
|
|
<P> |
<h3><a name="sectc325">Global Attributes</a></h3> |
|
<p> |
If the generic structure includes global attributes of its own, they are |
If the generic structure includes global attributes of its own, they are |
declared after the keyword <TT>ATTR</TT>. Each global attribute is defined by |
declared after the keyword <tt>ATTR</tt>. Each global attribute is defined by |
its name, followed by an equals sign and the definition of its type. The |
its name, followed by an equals sign and the definition of its type. The |
declaration of a global attribute is terminated by a semi-colon.</P> |
declaration of a global attribute is terminated by a semi-colon.</p> |
<P> |
<p> |
For attributes of the numeric, textual, or reference types, the type is |
For attributes of the numeric, textual, or reference types, the type is |
indicated by a keyword, <TT>INTEGER</TT>, <TT>TEXT</TT>, or <TT>REFERENCE</TT> |
indicated by a keyword, <tt>INTEGER</tt>, <tt>TEXT</tt>, or <tt>REFERENCE</tt> |
respectively.</P> |
respectively.</p> |
<P> |
<p> |
In the case of a reference attribute, the keyword <TT>REFERENCE</TT> is |
In the case of a reference attribute, the keyword <tt>REFERENCE</tt> is |
followed by the type of the referenced element in parentheses. It can refer |
followed by the type of the referenced element in parentheses. It can refer |
to any type at all, specified by using the keyword <TT>ANY</TT>, or to a |
to any type at all, specified by using the keyword <tt>ANY</tt>, or to a |
specific type. In the latter case, the element type designated by the |
specific type. In the latter case, the element type designated by the |
reference can be defined either in the <A href="#sectc327"><TT>STRUCT</TT> |
reference can be defined either in the <a href="#sectc327"><tt>STRUCT</tt> |
section</A> of the same structure schema or in the <TT>STRUCT</TT> section of |
section</a> of the same structure schema or in the <tt>STRUCT</tt> section of |
another structure schema. When the type is defined in another schema, the |
another structure schema. When the type is defined in another schema, the |
element type is followed by the name of the structure schema (within |
element type is followed by the name of the structure schema (within |
parentheses) in which it is defined. The name of the designated element type |
parentheses) in which it is defined. The name of the designated element type |
can be preceded by the keyword <TT>First</TT> or <TT>Second</TT>, but only in |
can be preceded by the keyword <tt>First</tt> or <tt>Second</tt>, but only in |
the case where the type is defined as <A href="#sectd3285">a pair</A>. These |
the case where the type is defined as <a href="#sectd3285">a pair</a>. These |
keywords indicate whether the attribute must designate the first mark of the |
keywords indicate whether the attribute must designate the first mark of the |
pair or the second. If the reference refers to a pair and neither of these |
pair or the second. If the reference refers to a pair and neither of these |
two keywords is present, then the first mark is used.</P> |
two keywords is present, then the first mark is used.</p> |
<P> |
<p> |
In the case of an enumeration attribute, the equals sign is followed by the |
In the case of an enumeration attribute, the equals sign is followed by the |
list of names representing the possible values of the attribute, the names |
list of names representing the possible values of the attribute, the names |
being separated from each other by commas. An enumeration attribute has at |
being separated from each other by commas. An enumeration attribute has at |
least one possible value; the maximum number of values is defined by the |
least one possible value; the maximum number of values is defined by the |
compiler for the S language.</P> |
compiler for the S language.</p> |
<PRE> |
<pre> AttrSeq = Attribute < Attribute > . |
AttrSeq = Attribute < Attribute > . |
|
Attribute = AttrID '=' AttrType ';' . |
Attribute = AttrID '=' AttrType ';' . |
AttrType = 'INTEGER' / 'TEXT' / |
AttrType = 'INTEGER' / 'TEXT' / |
'REFERENCE' '(' RefType ')' / |
'REFERENCE' '(' RefType ')' / |
Line 1308 compiler for the S language.</P>
|
Line 1482 compiler for the S language.</P>
|
ExtStruct = '(' ElemID ')' . |
ExtStruct = '(' ElemID ')' . |
ValueSeq = AttrVal < ',' AttrVal > . |
ValueSeq = AttrVal < ',' AttrVal > . |
AttrID = NAME . |
AttrID = NAME . |
AttrVal = NAME . |
AttrVal = NAME .</pre> |
</PRE> |
<p> |
<P> |
There is a predefined global text attribute, the <em>language</em>, which is |
There is a predefined global text attribute, the <EM>language</EM>, which is |
|
automatically added to every Thot structure schema. This attribute allows |
automatically added to every Thot structure schema. This attribute allows |
Thot to perform certain actions, such as hyphenation and spell-checking, which |
Thot to perform certain actions, such as hyphenation and spell-checking, which |
cannot be performed without knowing the language in which each part of the |
cannot be performed without knowing the language in which each part of the |
document is written. This attribute can be used just like any explicitly |
document is written. This attribute can be used just like any explicitly |
declared attribute: the system acts as if every structure schema contains</P> |
declared attribute: the system acts as if every structure schema contains</p> |
<PRE> |
<pre>ATTR |
ATTR |
Language = TEXT;</pre> |
Language = TEXT; |
<blockquote class="example"> |
</PRE> |
<p> |
<BLOCKQUOTE class="example"> |
<strong>Example:</strong></p> |
<P> |
<p> |
<STRONG>Example:</STRONG></P> |
|
<P> |
|
The following specification defines the global enumeration attribute |
The following specification defines the global enumeration attribute |
WordType.</P> |
WordType.</p> |
<PRE> |
<pre>ATTR |
ATTR |
WordType = Definition, IndexWord, DocumentTitle;</pre> |
WordType = Definition, IndexWord, DocumentTitle; |
</blockquote> |
</PRE> |
</div> |
</BLOCKQUOTE> |
|
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc326>Parameters</A></H3> |
|
|
|
<P> |
<h3><a name="sectc326">Parameters</a></h3> |
|
<p> |
A parameter is a document element which can appear many times in the document, |
A parameter is a document element which can appear many times in the document, |
but always has the same value. This value can only be modified in a |
but always has the same value. This value can only be modified in a |
controlled way by certain applications. For example, in an advertising |
controlled way by certain applications. For example, in an advertising |
circular, the name of the recipient may appear in the address part and in the |
circular, the name of the recipient may appear in the address part and in the |
text of the circular. If the recipient's name were a parameter, it might only |
text of the circular. If the recipient's name were a parameter, it might only |
be able to be changed by a ``mail-merge'' application.</P> |
be able to be changed by a ``mail-merge'' application.</p> |
<P> |
<p> |
Parameters are not needed for every document class, but if the schema includes |
Parameters are not needed for every document class, but if the schema includes |
parameters they are declared after the keyword <TT>PARAM</TT>. Each parameter |
parameters they are declared after the keyword <tt>PARAM</tt>. Each parameter |
declaration is made in the same way as a <A href="#sectc327">structure |
declaration is made in the same way as a <a href="#sectc327">structure element |
element declaration</A>.</P> |
declaration</a>.</p> |
<P> |
<p> |
During editing, Thot permits the insertion of parameters wherever the |
During editing, Thot permits the insertion of parameters wherever the |
structure schema allows; it also permits the removal of parameters which are |
structure schema allows; it also permits the removal of parameters which are |
already in the document but does not allow the modification of the parameter's |
already in the document but does not allow the modification of the parameter's |
content in any way. The content is generated automatically by Thot during the |
content in any way. The content is generated automatically by Thot during the |
creation of the parameter, based on the value of the parameter in the |
creation of the parameter, based on the value of the parameter in the |
document.</P> |
document.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc327>Structured elements</A></H3> |
|
|
|
<P> |
<h3><a name="sectc327">Structured elements</a></h3> |
|
<p> |
The rules for defining structured elements are required, except in an |
The rules for defining structured elements are required, except in an |
extension schema: they constitute the core of a structure schema, since they |
extension schema: they constitute the core of a structure schema, since they |
define the structure of the different types of elements that occur in a |
define the structure of the different types of elements that occur in a |
document or object of the class defined by the schema.</P> |
document or object of the class defined by the schema.</p> |
<P> |
<p> |
The first structure rule after the keyword <TT>STRUCT</TT> must define the |
The first structure rule after the keyword <tt>STRUCT</tt> must define the |
structure of the class whose name appears in the first instruction |
structure of the class whose name appears in the first instruction |
(<TT>STRUCTURE</TT>) of the schema. This is the root rule of the schema, |
(<tt>STRUCTURE</tt>) of the schema. This is the root rule of the schema, |
defining the root of the document tree or object tree.</P> |
defining the root of the document tree or object tree.</p> |
<P> |
<p> |
The remaining rules may be placed in any order, since the language permits the |
The remaining rules may be placed in any order, since the language permits the |
definition of element types before or after their use, or even in the same |
definition of element types before or after their use, or even in the same |
instruction in which they are used. This last case allows the definition of |
instruction in which they are used. This last case allows the definition of |
recursive structures.</P> |
recursive structures.</p> |
<P> |
<p> |
Each rule is composed of a name (the name of the element type whose structure |
Each rule is composed of a name (the name of the element type whose structure |
is being defined) followed by an equals sign and a structure definition.</P> |
is being defined) followed by an equals sign and a structure definition.</p> |
<P> |
<p> |
If any local attributes are associated with the element type defined by the |
If any local attributes are associated with the element type defined by the |
rule, they appear between parentheses after the type name and before the |
rule, they appear between parentheses after the type name and before the |
equals sign. The parentheses contain, first, the keyword <TT>ATTR</TT>, then |
equals sign. The parentheses contain, first, the keyword <tt>ATTR</tt>, then |
the list of local attributes, separated by commas. Each local attribute is |
the list of local attributes, separated by commas. Each local attribute is |
composed of the name of the attribute followed by an equals sign and the |
composed of the name of the attribute followed by an equals sign and the |
definition of the attribute's type, just as in the definition of <A |
definition of the attribute's type, just as in the definition of <a |
href="#sectc325">global attributes</A>. The name of the attribute can be |
href="#sectc325">global attributes</a>. The name of the attribute can be |
preceded by an exclamation point to indicate that the attribute must always be |
preceded by an exclamation point to indicate that the attribute must always be |
present for this element type. The same attribute, identified by its name, |
present for this element type. The same attribute, identified by its name, |
can be defined as a local attribute for multiple element types. In this |
can be defined as a local attribute for multiple element types. In this |
case, the equals sign and definition of the attribute type need only appear in |
case, the equals sign and definition of the attribute type need only appear in |
the first occurrence of the attribute. It should be noted that global |
the first occurrence of the attribute. It should be noted that global |
attributes cannot also be defined as local attributes.</P> |
attributes cannot also be defined as local attributes.</p> |
<P> |
<p> |
If any <A href="#sectd3135">extensions</A> are defined for this |
If any <a href="#sectd3135">extensions</a> are defined for this element type, |
element type, a plus sign follows the structure definition and the names of |
a plus sign follows the structure definition and the names of the extension |
the extension element types appear between parentheses after the plus. If |
element types appear between parentheses after the plus. If there are |
there are multiple extensions, they are separated by commas. These types can |
multiple extensions, they are separated by commas. These types can either be |
either be defined in the same schema, defined in other schemas, or they may be |
defined in the same schema, defined in other schemas, or they may be base |
base types identified by the keywords <TT>TEXT</TT>, <TT>GRAPHICS</TT>, |
types identified by the keywords <tt>TEXT</tt>, <tt>GRAPHICS</tt>, |
<TT>SYMBOL</TT>, or <TT>PICTURE</TT>.</P> |
<tt>SYMBOL</tt>, or <tt>PICTURE</tt>.</p> |
<P> |
<p> |
<A href="#sectd3135">Restrictions</A> are indicated in the same |
<a href="#sectd3135">Restrictions</a> are indicated in the same manner as |
manner as extensions, but they are introduced by a minus sign and they come |
extensions, but they are introduced by a minus sign and they come after the |
after the extensions, or if there are no extensions, after the structure |
extensions, or if there are no extensions, after the structure definition.</p> |
definition.</P> |
<p> |
<P> |
|
If the values of attributes must be attached systematically to this element |
If the values of attributes must be attached systematically to this element |
type, they are introduced by the keyword <TT>WITH</TT> and declared in the |
type, they are introduced by the keyword <tt>WITH</tt> and declared in the |
form of a list of fixed-value attributes. When such definitions of fixed |
form of a list of fixed-value attributes. When such definitions of fixed |
attribute values appear, they are always the last part of the rule.</P> |
attribute values appear, they are always the last part of the rule.</p> |
<P> |
<p> |
The rule is terminated by a semicolon.</P> |
The rule is terminated by a semicolon.</p> |
<PRE> |
<pre> RuleSeq = Rule < Rule > . |
RuleSeq = Rule < Rule > . |
|
Rule = ElemID [ LocAttrSeq ] '=' DefWithAttr ';'. |
Rule = ElemID [ LocAttrSeq ] '=' DefWithAttr ';'. |
LocAttrSeq = '(' 'ATTR' LocAttr < ';' LocAttr > ')' . |
LocAttrSeq = '(' 'ATTR' LocAttr < ';' LocAttr > ')' . |
LocAttr = [ '!' ] AttrID [ '=' AttrType ] . |
LocAttr = [ '!' ] AttrID [ '=' AttrType ] . |
Line 1427 The rule is terminated by a semicolon.</
|
Line 1594 The rule is terminated by a semicolon.</
|
'SYMBOL' / 'PICTURE' . |
'SYMBOL' / 'PICTURE' . |
RestrictSeq = RestrictElem < ',' RestrictElem > . |
RestrictSeq = RestrictElem < ',' RestrictElem > . |
RestrictElem = ElemID / 'TEXT' / 'GRAPHICS' / |
RestrictElem = ElemID / 'TEXT' / 'GRAPHICS' / |
'SYMBOL' / 'PICTURE' . |
'SYMBOL' / 'PICTURE' .</pre> |
</PRE> |
<p> |
<P> |
|
The list of fixed-value attributes is composed of a sequence of |
The list of fixed-value attributes is composed of a sequence of |
attribute-value pairs separated by commas. Each pair contains the name of the |
attribute-value pairs separated by commas. Each pair contains the name of the |
attribute and the fixed value for this element type, the two being separated |
attribute and the fixed value for this element type, the two being separated |
Line 1440 cannot be assigned a fixed value, but wh
|
Line 1606 cannot be assigned a fixed value, but wh
|
appears this indicates that this element type must have a valid value for the |
appears this indicates that this element type must have a valid value for the |
attribute. For the other attribute types, the fixed value is indicated by a |
attribute. For the other attribute types, the fixed value is indicated by a |
signed integer (numeric attributes), a character string between apostrophes |
signed integer (numeric attributes), a character string between apostrophes |
(textual attributes) or the name of a value (enumeration attributes).</P> |
(textual attributes) or the name of a value (enumeration attributes).</p> |
<P> |
<p> |
Fixed-value attributes can either be <A href="#sectc325">global</A> or local |
Fixed-value attributes can either be <a href="#sectc325">global</a> or local |
to the element type for which they are fixed, but they must be declared before |
to the element type for which they are fixed, but they must be declared before |
they are used.</P> |
they are used.</p> |
<PRE> |
<pre> FixedAttrSeq = FixedAttr < ',' FixedAttr > . |
FixedAttrSeq = FixedAttr < ',' FixedAttr > . |
|
FixedAttr = AttrID [ FixedOrModifVal ] . |
FixedAttr = AttrID [ FixedOrModifVal ] . |
FixedOrModifVal = [ '?' ] '=' FixedValue . |
FixedOrModifVal = [ '?' ] '=' FixedValue . |
FixedValue = [ '-' ] NumValue / TextVal / AttrVal . |
FixedValue = [ '-' ] NumValue / TextVal / AttrVal . |
NumValue = NUMBER . |
NumValue = NUMBER . |
TextVal = STRING . |
TextVal = STRING .</pre> |
</PRE> |
</div> |
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc328>Structure definitions</A></H3> |
|
|
|
<P> |
<h3><a name="sectc328">Structure definitions</a></h3> |
|
<p> |
The structure of an element type can be a simple base type or a constructed |
The structure of an element type can be a simple base type or a constructed |
type.</P> |
type.</p> |
<P> |
<p> |
For constructed types, it is frequently the case that similar structures |
For constructed types, it is frequently the case that similar structures |
appear in many places in a document. For example the contents of the |
appear in many places in a document. For example the contents of the |
abstract, of the introduction, and of a section can have the same structure, |
abstract, of the introduction, and of a section can have the same structure, |
that of a sequence of paragraphs. In this case, a single, common structure |
that of a sequence of paragraphs. In this case, a single, common structure |
can be defined (the paragraph sequence in this example), and the schema is |
can be defined (the paragraph sequence in this example), and the schema is |
written to indicate that each element type possesses this structure, as |
written to indicate that each element type possesses this structure, as |
follows:</P> |
follows:</p> |
<PRE> |
<pre> Abstract = Paragraph_sequence; |
Abstract = Paragraph_sequence; |
|
Introduction = Paragraph_sequence; |
Introduction = Paragraph_sequence; |
Section_contents = Paragraph_sequence; |
Section_contents = Paragraph_sequence;</pre> |
</PRE> |
<p> |
<P> |
The equals sign means ``has the same structure as''.</p> |
The equals sign means ``has the same structure as''.</P> |
<p> |
<P> |
|
If the element type defined is a simple base type, this is indicated by one of |
If the element type defined is a simple base type, this is indicated by one of |
the keywords <TT>TEXT</TT>, <TT>GRAPHICS</TT>, <TT>SYMBOL</TT>, or |
the keywords <tt>TEXT</tt>, <tt>GRAPHICS</tt>, <tt>SYMBOL</tt>, or |
<TT>PICTURE</TT>. If some local attributes must be associated with a base |
<tt>PICTURE</tt>. If some local attributes must be associated with a base |
type, the keyword of the base type is followed by the declaration of the local |
type, the keyword of the base type is followed by the declaration of the local |
attributes using the syntax <A href="#sectc327">presented above.</A></P> |
attributes using the syntax <a href="#sectc327">presented above.</a></p> |
<P> |
<p> |
In the case of an open choice, the type is indicated by the keyword |
In the case of an open choice, the type is indicated by the keyword |
<TT>UNIT</TT> for units or the keyword <TT>NATURE</TT> for objects having a |
<tt>UNIT</tt> for units or the keyword <tt>NATURE</tt> for objects having a |
structure defined by any other schema.</P> |
structure defined by any other schema.</p> |
<P> |
<p> |
A unit represents one of the two following categories:</P> |
A unit represents one of the two following categories:</p> |
<UL> |
<ul> |
<LI>a base type: text, graphical element, symbol, picture, |
<li> |
<LI>an element whose type is chosen from among the types defined as units in |
a base type: text, graphical element, symbol, picture, |
the <TT>UNITS</TT> section of the document's structure schema. It can also be |
<li> |
chosen from among the types defined as <A href="#sectd3132">units</A> in |
an element whose type is chosen from among the types defined as units in the |
the <A href="#sectc3212"><TT>UNITS</TT> section</A> of the structure schemas that |
<tt>UNITS</tt> section of the document's structure schema. It can also be |
|
chosen from among the types defined as <a href="#sectd3132">units</a> in the |
|
<a href="#sectc3212"><tt>UNITS</tt> section</a> of the structure schemas that |
defines the ancestors of the element to which the rule is applied. |
defines the ancestors of the element to which the rule is applied. |
</UL> |
</ul> |
<P> |
<p> |
Before the creation of an element defined as a unit, Thot asks the user to |
Before the creation of an element defined as a unit, Thot asks the user to |
choose between the categories of elements.</P> |
choose between the categories of elements.</p> |
<P> |
<p> |
Thus, the contents of a paragraph can be specified as a sequence of units, |
Thus, the contents of a paragraph can be specified as a sequence of units, |
which will permit the inclusion in the paragraphs of character strings, |
which will permit the inclusion in the paragraphs of character strings, |
symbols, and various elements, such as cross-references, if these are defined |
symbols, and various elements, such as cross-references, if these are defined |
as units.</P> |
as units.</p> |
<P> |
<p> |
A schema object (keyword <TT>NATURE</TT>) represents an object defined by a |
A schema object (keyword <tt>NATURE</tt>) represents an object defined by a |
structure schema freely chosen from among the available schemas; in the case |
structure schema freely chosen from among the available schemas; in the case |
the element type is defined by the first rule (the root rule) of the chosen |
the element type is defined by the first rule (the root rule) of the chosen |
schema.</P> |
schema.</p> |
<P> |
<p> |
If the element type defined is a constructed type, the list, aggregate, |
If the element type defined is a constructed type, the list, aggregate, |
choice, and reference constructors are used. In this case the definition |
choice, and reference constructors are used. In this case the definition |
begins with a keyword identifying the constructor. This keyword is followed |
begins with a keyword identifying the constructor. This keyword is followed |
by a syntax specific to each constructor.</P> |
by a syntax specific to each constructor.</p> |
<P> |
<p> |
The local attribute definitions appear after the name of the element type |
The local attribute definitions appear after the name of the element type |
being defined, if this element type has <A href="#sectc327">local |
being defined, if this element type has <a href="#sectc327">local |
attributes</A>.</P> |
attributes</a>.</p> |
<PRE> |
<pre> Definition = BaseType [ LocAttrSeq ] / Constr / Element . |
Definition = BaseType [ LocAttrSeq ] / Constr / Element . |
|
BaseType = 'TEXT' / 'GRAPHICS' / 'SYMBOL' / 'PICTURE' / |
BaseType = 'TEXT' / 'GRAPHICS' / 'SYMBOL' / 'PICTURE' / |
'UNIT' / 'NATURE' . |
'UNIT' / 'NATURE' . |
Element = ElemID [ ExtOrDef ] . |
Element = ElemID [ ExtOrDef ] . |
Line 1531 attributes</A>.</P>
|
Line 1694 attributes</A>.</P>
|
'AGGREGATE' DefOptSeq 'END' / |
'AGGREGATE' DefOptSeq 'END' / |
'CASE' 'OF' DefSeq 'END' / |
'CASE' 'OF' DefSeq 'END' / |
'REFERENCE' '(' RefType ')' / |
'REFERENCE' '(' RefType ')' / |
'PAIR' . |
'PAIR' .</pre> |
</PRE> |
|
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd3281>List</A></H4> |
|
|
|
<P> |
<h4><a name="sectd3281">List</a></h4> |
|
<p> |
The list constructor permits the definition of an element type composed of a |
The list constructor permits the definition of an element type composed of a |
list of elements, all of the same type. A list definition begins with the |
list of elements, all of the same type. A list definition begins with the |
<TT>LIST</TT> keyword followed by an optional range, the keyword <TT>OF</TT>, |
<tt>LIST</tt> keyword followed by an optional range, the keyword <tt>OF</tt>, |
and the definition, between parentheses, of the element type which must |
and the definition, between parentheses, of the element type which must |
compose the list. The optional range is composed of the minimum and maximum |
compose the list. The optional range is composed of the minimum and maximum |
number of elements for the list separated by two periods and enclosed by |
number of elements for the list separated by two periods and enclosed by |
brackets. If the range is not present, the number of list elements is |
brackets. If the range is not present, the number of list elements is |
unconstrained. When only one of the two bounds of the range is unconstrained, |
unconstrained. When only one of the two bounds of the range is unconstrained, |
it is represented by a star ('*') character. Even when both bounds are |
it is represented by a star ('*') character. Even when both bounds are |
unconstrained, they can be specified by <TT>[*..*]</TT>, but it is simpler not |
unconstrained, they can be specified by <tt>[*..*]</tt>, but it is simpler not |
to specify any bound.</P> |
to specify any bound.</p> |
<PRE> |
<pre> 'LIST' [ '[' min '..' max ']' ] |
'LIST' [ '[' min '..' max ']' ] |
|
'OF' '(' DefWithAttr ')' |
'OF' '(' DefWithAttr ')' |
min = Integer / '*' . |
min = Integer / '*' . |
max = Integer / '*' . |
max = Integer / '*' . |
Integer = NUMBER . |
Integer = NUMBER .</pre> |
</PRE> |
<p> |
<P> |
|
Before the document is edited, Thot creates the minimum number of elements for |
Before the document is edited, Thot creates the minimum number of elements for |
the list. If no minimum was given, it creates a single element. If a maximum |
the list. If no minimum was given, it creates a single element. If a maximum |
number of elements is given and that number is attained, the editor refuses to |
number of elements is given and that number is attained, the editor refuses to |
create new elements for the list.</P> |
create new elements for the list.</p> |
<BLOCKQUOTE class="example"> |
<blockquote class="example"> |
<P> |
<p> |
<STRONG>Example:</STRONG></P> |
<strong>Example:</strong></p> |
<P> |
<p> |
The following two instructions define the body of a document as a sequence of |
The following two instructions define the body of a document as a sequence of |
at least two chapters and the contents of a section as a sequence of |
at least two chapters and the contents of a section as a sequence of |
paragraphs. A single paragraph can be the entire contents of a section.</P> |
paragraphs. A single paragraph can be the entire contents of a section.</p> |
<PRE> |
<pre>Body = LIST [2..*] OF (Chapter); |
Body = LIST [2..*] OF (Chapter); |
Section_contents = LIST OF (Paragraph);</pre> |
Section_contents = LIST OF (Paragraph); |
</blockquote> |
</PRE> |
</div> |
</BLOCKQUOTE> |
|
</DIV> |
|
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd3282>Aggregate</A></H4> |
|
|
|
<P> |
<h4><a name="sectd3282">Aggregate</a></h4> |
|
<p> |
The aggregate constructor is used to define an element type as a collection of |
The aggregate constructor is used to define an element type as a collection of |
sub-elements, each having a fixed type. The collection may be ordered or |
sub-elements, each having a fixed type. The collection may be ordered or |
unordered. The elements composing the collection are called |
unordered. The elements composing the collection are called |
<EM>components</EM>. In the definition of an aggregate, a keyword indicates |
<em>components</em>. In the definition of an aggregate, a keyword indicates |
whether or not the aggregate is ordered: <TT>BEGIN</TT> for an ordered |
whether or not the aggregate is ordered: <tt>BEGIN</tt> for an ordered |
aggregate, <TT>AGGREGATE</TT> for an unordered aggregate. This keyword is |
aggregate, <tt>AGGREGATE</tt> for an unordered aggregate. This keyword is |
followed by the list of component type definitions which is terminated by the |
followed by the list of component type definitions which is terminated by the |
<TT>END</TT> keyword. The component type definitions are separated by |
<tt>END</tt> keyword. The component type definitions are separated by |
commas.</P> |
commas.</p> |
<P> |
<p> |
Before creating an aggregate, the Thot editor creates all the aggregate's |
Before creating an aggregate, the Thot editor creates all the aggregate's |
components in the order they appear in the structure schema, even for |
components in the order they appear in the structure schema, even for |
unordered aggregates. However, unlike ordered aggregates, the components of |
unordered aggregates. However, unlike ordered aggregates, the components of |
Line 1596 an unordered aggregate may be rearranged
|
Line 1754 an unordered aggregate may be rearranged
|
The exceptions to the rule are any components whose name was preceded by a |
The exceptions to the rule are any components whose name was preceded by a |
question mark character ('?'). These components, which are optional, can be |
question mark character ('?'). These components, which are optional, can be |
created by explicit request, possibly at the time the aggregate is created, |
created by explicit request, possibly at the time the aggregate is created, |
but they are not created automatically <EM>prior</EM> to the creation of the |
but they are not created automatically <em>prior</em> to the creation of the |
aggregate.</P> |
aggregate.</p> |
<PRE> |
<pre> 'BEGIN' DefOptSeq 'END' |
'BEGIN' DefOptSeq 'END' |
|
DefOptSeq = DefOpt ';' < DefOpt ';' > . |
DefOptSeq = DefOpt ';' < DefOpt ';' > . |
DefOpt = [ '?' ] DefWithAttr . |
DefOpt = [ '?' ] DefWithAttr .</pre> |
</PRE> |
<blockquote class="example"> |
<BLOCKQUOTE class="example"> |
<p> |
<P> |
<strong>Example:</strong></p> |
<STRONG>Example:</STRONG></P> |
<p> |
<P> |
|
In a bilingual document, each paragraph has an English version and a French |
In a bilingual document, each paragraph has an English version and a French |
version. In certain cases, the translator wants to add a marginal note, but |
version. In certain cases, the translator wants to add a marginal note, but |
this note is present in very few paragraphs. Thus, it must not be created |
this note is present in very few paragraphs. Thus, it must not be created |
systematically for every paragraph. A bilingual paragraph of this type is |
systematically for every paragraph. A bilingual paragraph of this type is |
declared:</P> |
declared:</p> |
<PRE> |
<pre>Bilingual_paragraph = BEGIN |
Bilingual_paragraph = BEGIN |
|
French_paragraph = TEXT; |
French_paragraph = TEXT; |
English_paragraph = TEXT; |
English_paragraph = TEXT; |
? Note = TEXT; |
? Note = TEXT; |
END; |
END;</pre> |
</PRE> |
</blockquote> |
</BLOCKQUOTE> |
</div> |
</DIV> |
|
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd3283>Choice</A></H4> |
|
|
|
<P> |
<h4><a name="sectd3283">Choice</a></h4> |
|
<p> |
The choice constructor permits the definition of an element type which is |
The choice constructor permits the definition of an element type which is |
chosen from among a set of possible types. The keywords <TT>CASE</TT> and |
chosen from among a set of possible types. The keywords <tt>CASE</tt> and |
<TT>OF</TT> are followed by a list of definitions of possible types, which are |
<tt>OF</tt> are followed by a list of definitions of possible types, which are |
separated by semicolons and terminated by the <TT>END</TT> keyword.</P> |
separated by semicolons and terminated by the <tt>END</tt> keyword.</p> |
<PRE> |
<pre> 'CASE' 'OF' DefSeq 'END' |
'CASE' 'OF' DefSeq 'END' |
DefSeq = DefWithAttr ';' < DefWithAttr ';' > .</pre> |
DefSeq = DefWithAttr ';' < DefWithAttr ';' > . |
<p> |
</PRE> |
|
<P> |
|
Before the creation of an element defined as a choice, the Thot editor |
Before the creation of an element defined as a choice, the Thot editor |
presents the list of possible types for the element to the user. The user has |
presents the list of possible types for the element to the user. The user has |
only to select the element type that s/he wants to create from this list.</P> |
only to select the element type that s/he wants to create from this list.</p> |
<P> |
<p> |
The order of the type declarations is important. It determines the order of |
The order of the type declarations is important. It determines the order of |
the list presented to the user before the creation of the element. Also, when |
the list presented to the user before the creation of the element. Also, when |
a Choice element is being created automatically, the first type in the list is |
a Choice element is being created automatically, the first type in the list is |
used. In fact, using the Thot editor, when an empty Choice element is |
used. In fact, using the Thot editor, when an empty Choice element is |
selected, it is possible to select this element and to enter its text from |
selected, it is possible to select this element and to enter its text from |
keyboard. In this case, the editor uses the first element type which can |
keyboard. In this case, the editor uses the first element type which can |
contain an atom of the character string type.</P> |
contain an atom of the character string type.</p> |
<P> |
<p> |
The two special cases of the choice constructor, the <A |
The two special cases of the choice constructor, the <a |
href="#sectc328"><EM>schema</EM></A> and the <A |
href="#sectc328"><em>schema</em></a> and the <a |
href="#sectc3212"><EM>unit</EM></A> are discussed elsewhere.</P> |
href="#sectc3212"><em>unit</em></a> are discussed elsewhere.</p> |
<BLOCKQUOTE class="example"> |
<blockquote class="example"> |
<P> |
<p> |
<STRONG>Example:</STRONG></P> |
<strong>Example:</strong></p> |
<P> |
<p> |
It is common in documents to treat a variety of objects as if they were |
It is common in documents to treat a variety of objects as if they were |
ordinary paragraphs. Thus, a ``Paragraph'' might actually be composed of a |
ordinary paragraphs. Thus, a ``Paragraph'' might actually be composed of a |
block of text (an ordinary paragraph), or a mathematical formula whose |
block of text (an ordinary paragraph), or a mathematical formula whose |
structure is defined by another structure schema named Math, or a table, also |
structure is defined by another structure schema named Math, or a table, also |
defined by another structure schema. Here is a definition of such a |
defined by another structure schema. Here is a definition of such a |
paragraph:</P> |
paragraph:</p> |
<PRE> |
<pre>Paragraph = CASE OF |
Paragraph = CASE OF |
|
Simple_text = TEXT; |
Simple_text = TEXT; |
Formula = Math; |
Formula = Math; |
Table_para = Table; |
Table_para = Table; |
END; |
END;</pre> |
</PRE> |
</blockquote> |
</BLOCKQUOTE> |
</div> |
</DIV> |
|
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd3284>Reference</A></H4> |
|
|
|
<P> |
<h4><a name="sectd3284">Reference</a></h4> |
|
<p> |
Like all elements in Thot, references are typed. An element type defined as a |
Like all elements in Thot, references are typed. An element type defined as a |
reference is a cross-reference to an element of some other given type. The |
reference is a cross-reference to an element of some other given type. The |
keyword <TT>REFERENCE</TT> is followed by the name of a type enclosed in |
keyword <tt>REFERENCE</tt> is followed by the name of a type enclosed in |
parentheses. When the type which is being cross-referenced is defined in |
parentheses. When the type which is being cross-referenced is defined in |
another structure schema, the type name is itself followed by the name of the |
another structure schema, the type name is itself followed by the name of the |
external structure schema in which it is defined.</P> |
external structure schema in which it is defined.</p> |
<P> |
<p> |
When the designated element type is a <A href="#sectd3285">mark pair</A>, it can |
When the designated element type is a <a href="#sectd3285">mark pair</a>, it |
be preceded by a <TT>FIRST</TT> or <TT>SECOND</TT> keyword. These keywords |
can be preceded by a <tt>FIRST</tt> or <tt>SECOND</tt> keyword. These |
indicate whether the reference points to the first or second mark of the pair. |
keywords indicate whether the reference points to the first or second mark of |
If the reference points to a pair and neither of these two keywords is |
the pair. If the reference points to a pair and neither of these two keywords |
present, the reference is considered to point to the first mark of the |
is present, the reference is considered to point to the first mark of the |
pair.</P> |
pair.</p> |
<P> |
<p> |
There is an exception to the principle of typed references: it is possible to |
There is an exception to the principle of typed references: it is possible to |
define a reference which designates an element of any type, which can either |
define a reference which designates an element of any type, which can either |
be in the same document or another document. In this case, it suffices to put |
be in the same document or another document. In this case, it suffices to put |
the keyword <TT>ANY</TT> in the parentheses which indicate the referenced |
the keyword <tt>ANY</tt> in the parentheses which indicate the referenced |
element type.</P> |
element type.</p> |
<PRE> |
<pre> 'REFERENCE' '(' RefType ')' |
'REFERENCE' '(' RefType ')' |
RefType = 'ANY' / [ FirstSec ] ElemID [ ExtStruct ] .</pre> |
RefType = 'ANY' / [ FirstSec ] ElemID [ ExtStruct ] . |
<p> |
</PRE> |
When defining an inclusion, the <tt>REFERENCE</tt> keyword is not used. |
<P> |
|
When defining an inclusion, the <TT>REFERENCE</TT> keyword is not used. |
|
Inclusions with complete expansion are not declared as such in the structure |
Inclusions with complete expansion are not declared as such in the structure |
schemas, since any element defined in a structure schema can be replaced by an |
schemas, since any element defined in a structure schema can be replaced by an |
element of the same type. Instead, inclusions without expansion or with |
element of the same type. Instead, inclusions without expansion or with |
partial expansion must be declared explicitly whenever they will include a |
partial expansion must be declared explicitly whenever they will include a |
complete object ( and not a part of an object). In this case, the object type |
complete object ( and not a part of an object). In this case, the object type |
to be included (that is, the name of its structure schema) is followed by a |
to be included (that is, the name of its structure schema) is followed by a |
keyword: <TT>EXTERN</TT> for inclusion without expansion and <TT>INCLUDED</TT> |
keyword: <tt>EXTERN</tt> for inclusion without expansion and <tt>INCLUDED</tt> |
for partial expansion.</P> |
for partial expansion.</p> |
<P> |
<p> |
Before creating a cross-reference or an inclusion, the Thot editor asks the |
Before creating a cross-reference or an inclusion, the Thot editor asks the |
user to choose, from the document images displayed, the referenced or included |
user to choose, from the document images displayed, the referenced or included |
element.</P> |
element.</p> |
<BLOCKQUOTE class="example"> |
<blockquote class="example"> |
<P> |
<p> |
<STRONG>Example:</STRONG></P> |
<strong>Example:</strong></p> |
<P> |
<p> |
If the types Note and Section are defined in the Article structure schema, it |
If the types Note and Section are defined in the Article structure schema, it |
is possible to define, in the same structure schema, a reference to a note and |
is possible to define, in the same structure schema, a reference to a note and |
a reference to a section in this manner:</P> |
a reference to a section in this manner:</p> |
<PRE> |
<pre>Ref_note = REFERENCE (Note); |
Ref_note = REFERENCE (Note); |
Ref_section = REFERENCE (Section);</pre> |
Ref_section = REFERENCE (Section); |
<p> |
</PRE> |
|
<P> |
|
It is also possible to define the generic structure of a collection of |
It is also possible to define the generic structure of a collection of |
articles, which include (with partial expansion) objects of the Article class |
articles, which include (with partial expansion) objects of the Article class |
and which possess an introduction which may include cross-references to |
and which possess an introduction which may include cross-references to |
sections of the included articles. In the Collection structure schema, the |
sections of the included articles. In the Collection structure schema, the |
definitions are:</P> |
definitions are:</p> |
<PRE> |
<pre>Collection = BEGIN |
Collection = BEGIN |
|
Collection_title = TEXT; |
Collection_title = TEXT; |
Introduction = LIST OF (Elem = CASE OF |
Introduction = LIST OF (Elem = CASE OF |
TEXT; |
TEXT; |
Line 1737 Collection = BEGIN
|
Line 1882 Collection = BEGIN
|
END); |
END); |
Body = LIST OF (Article INCLUDED); |
Body = LIST OF (Article INCLUDED); |
END; |
END; |
Ref_sect = REFERENCE (Section (Article)); |
Ref_sect = REFERENCE (Section (Article));</pre> |
</PRE> |
<p> |
<P> |
|
Here we define a Folder document class which has a title and includes |
Here we define a Folder document class which has a title and includes |
documents of different types, particularly Folders:</P> |
documents of different types, particularly Folders:</p> |
<PRE> |
<pre>Folder = BEGIN |
Folder = BEGIN |
|
Folder_title = TEXT; |
Folder_title = TEXT; |
Folder_contents = LIST OF (Document); |
Folder_contents = LIST OF (Document); |
END; |
END; |
Line 1752 Document = CASE OF
|
Line 1895 Document = CASE OF
|
Article EXTERN; |
Article EXTERN; |
Collection EXTERN; |
Collection EXTERN; |
Folder EXTERN; |
Folder EXTERN; |
END; |
END;</pre> |
</PRE> |
<p> |
<P> |
|
Under this definition, Folder represents either an aggregate which contains a |
Under this definition, Folder represents either an aggregate which contains a |
folder title and the list of included documents or an included folder. To |
folder title and the list of included documents or an included folder. To |
resolve this ambiguity, in the P language, the placement of a star character |
resolve this ambiguity, in the P language, the placement of a star character |
in front of the type name (here, Folder) indicates an included document.</P> |
in front of the type name (here, Folder) indicates an included document.</p> |
</BLOCKQUOTE> |
</blockquote> |
</DIV> |
</div> |
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd3285>Mark pairs</A></H4> |
|
|
|
<P> |
<h4><a name="sectd3285">Mark pairs</a></h4> |
|
<p> |
Like other elements, mark pairs are typed. The two marks of the pair have the |
Like other elements, mark pairs are typed. The two marks of the pair have the |
same type, but there exist two predefined subtypes which apply to all mark |
same type, but there exist two predefined subtypes which apply to all mark |
pairs: the first mark of the pair (called <TT>First</TT> in the P and T |
pairs: the first mark of the pair (called <tt>First</tt> in the P and T |
languages) and the second mark (called <TT>Second</TT>).</P> |
languages) and the second mark (called <tt>Second</tt>).</p> |
<P> |
<p> |
In the S language, a mark pair is noted simply by the <TT>PAIR</TT> |
In the S language, a mark pair is noted simply by the <tt>PAIR</tt> |
keyword.</P> |
keyword.</p> |
<P> |
<p> |
In the Thot editor, marks are always moved or destroyed together. The two |
In the Thot editor, marks are always moved or destroyed together. The two |
marks of a pair have the same identifier, unique within the document, which |
marks of a pair have the same identifier, unique within the document, which |
permits intertwining mark pairs without risk of ambiguity.</P> |
permits intertwining mark pairs without risk of ambiguity.</p> |
</DIV> |
</div> |
</DIV> |
</div> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc329>Imports</A></H3> |
|
|
|
<P> |
<h3><a name="sectc329">Imports</a></h3> |
|
<p> |
Because of schema constructors, it is possible, before editing a document, to |
Because of schema constructors, it is possible, before editing a document, to |
use classes defined by other structure schemas whenever they are needed. It is |
use classes defined by other structure schemas whenever they are needed. It is |
also possible to assign specific document classes to certain element types. In |
also possible to assign specific document classes to certain element types. In |
this case, these classes are simply designated by their name. In fact, if a |
this case, these classes are simply designated by their name. In fact, if a |
type name is not defined in the structure schema, it is assumed that it |
type name is not defined in the structure schema, it is assumed that it |
specifies a structure defined by another structure schema.</P> |
specifies a structure defined by another structure schema.</p> |
<BLOCKQUOTE class="example"> |
<blockquote class="example"> |
<P> |
<p> |
<STRONG>Example:</STRONG></P> |
<strong>Example:</strong></p> |
<P> |
<p> |
If the types Math and Table don't appear in the left part of a structure rule |
If the types Math and Table don't appear in the left part of a structure rule |
in the schema, the following two rules indicate that a formula has the |
in the schema, the following two rules indicate that a formula has the |
structure of an object defined by the structure schema Math and that a table |
structure of an object defined by the structure schema Math and that a table |
element has the structure of an object defined by the Table schema.</P> |
element has the structure of an object defined by the Table schema.</p> |
<PRE> |
<pre>Formula = Math; |
Formula = Math; |
Table_elem = Table;</pre> |
Table_elem = Table; |
</blockquote> |
</PRE> |
</div> |
</BLOCKQUOTE> |
|
</DIV> |
<div class="subsection"> |
|
|
<DIV class="subsection"> |
<h3><a name="sectc3210">Extension rules</a></h3> |
<H3><A name=sectc3210>Extension rules</A></H3> |
<p> |
|
The <tt>EXTENS</tt> section, which can only appear in an extension schema, |
<P> |
|
The <TT>EXTENS</TT> section, which can only appear in an extension schema, |
|
defines complements to the rules in the primary schema (i.e. the structure |
defines complements to the rules in the primary schema (i.e. the structure |
schema to which the extension schema will be applied). More precisely, this |
schema to which the extension schema will be applied). More precisely, this |
section permits the addition to an existing type of local attributes, |
section permits the addition to an existing type of local attributes, |
extensions, restrictions and fixed-value attributes.</P> |
extensions, restrictions and fixed-value attributes.</p> |
<P> |
<p> |
These additions can be applied to the root rule of the primary schema, |
These additions can be applied to the root rule of the primary schema, |
designated by the keyword <TT>Root</TT>, or to any other explicitly named |
designated by the keyword <tt>Root</tt>, or to any other explicitly named |
rule.</P> |
rule.</p> |
<P> |
<p> |
Extension rules are separated from each other by a semicolon and each |
Extension rules are separated from each other by a semicolon and each |
extension rule has the same syntax as a <A href="#sectc327">structure |
extension rule has the same syntax as a <a href="#sectc327">structure |
rule</A>, but the part which defines the constructor is absent.</P> |
rule</a>, but the part which defines the constructor is absent.</p> |
<PRE> |
<pre> ExtenRuleSeq = ExtensRule ';' < ExtensRule ';' > . |
ExtenRuleSeq = ExtensRule ';' < ExtensRule ';' > . |
|
ExtensRule = RootOrElem [ LocAttrSeq ] |
ExtensRule = RootOrElem [ LocAttrSeq ] |
[ '+' '(' ExtensionSeq ')' ] |
[ '+' '(' ExtensionSeq ')' ] |
[ '-' '(' RestrictSeq ')' ] |
[ '-' '(' RestrictSeq ')' ] |
[ 'WITH' FixedAttrSeq ] . |
[ 'WITH' FixedAttrSeq ] . |
RootOrElem = 'Root' / ElemID . |
RootOrElem = 'Root' / ElemID .</pre> |
</PRE> |
</div> |
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc3211>Associated elements</A></H3> |
|
|
|
<P> |
<h3><a name="sectc3211">Associated elements</a></h3> |
|
<p> |
If associated elements are necessary, they must be declared in a specific |
If associated elements are necessary, they must be declared in a specific |
section of the structure schema, introduced by the keyword <TT>ASSOC</TT>. |
section of the structure schema, introduced by the keyword <tt>ASSOC</tt>. |
Each associated element type is specified like any other structured element. |
Each associated element type is specified like any other structured element. |
However, these types must not appear in any other element types of the schema, |
However, these types must not appear in any other element types of the schema, |
except in <TT>REFERENCE</TT> rules.</P> |
except in <tt>REFERENCE</tt> rules.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc3212>Units</A></H3> |
|
|
|
<P> |
<h3><a name="sectc3212">Units</a></h3> |
The <TT>UNITS</TT> section of the structure schema contains the declarations |
<p> |
|
The <tt>UNITS</tt> section of the structure schema contains the declarations |
of the element types which can be used in the external objects making up parts |
of the element types which can be used in the external objects making up parts |
of the document or in objects of the class defined by the schema. As with |
of the document or in objects of the class defined by the schema. As with |
associated elements, these element types are defined just like other |
associated elements, these element types are defined just like other |
structured element types. They can be used in the other element types of the |
structured element types. They can be used in the other element types of the |
schema, but they can also be used in any other rule of the schema.</P> |
schema, but they can also be used in any other rule of the schema.</p> |
<BLOCKQUOTE class="example"> |
<blockquote class="example"> |
<P> |
<p> |
<STRONG>Example:</STRONG></P> |
<strong>Example:</strong></p> |
<P> |
<p> |
If references to notes are declared as units:</P> |
If references to notes are declared as units:</p> |
<PRE> |
<pre>UNITS |
UNITS |
Ref_note = REFERENCE (Note);</pre> |
Ref_note = REFERENCE (Note); |
<p> |
</PRE> |
|
<P> |
|
then it is possible to use references to notes in a cell of a table, even when |
then it is possible to use references to notes in a cell of a table, even when |
<TT>Table</TT> is an external structure schema. The <TT>Table</TT> schema must |
<tt>Table</tt> is an external structure schema. The <tt>Table</tt> schema |
declare a cell to be a sequence of units, which can then be base element types |
must declare a cell to be a sequence of units, which can then be base element |
(text, for example) or references to notes in the document.</P> |
types (text, for example) or references to notes in the document.</p> |
<PRE> |
<pre>Cell = LIST OF (UNITS);</pre> |
Cell = LIST OF (UNITS); |
</blockquote> |
</PRE> |
</div> |
</BLOCKQUOTE> |
|
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc3213>Skeleton elements</A></H3> |
|
|
|
<P> |
<h3><a name="sectc3213">Skeleton elements</a></h3> |
|
<p> |
When editing a document which contains or must contain external references to |
When editing a document which contains or must contain external references to |
several other documents, it may be necessary to load a large number of |
several other documents, it may be necessary to load a large number of |
documents, simply to see the parts designated by the external references of |
documents, simply to see the parts designated by the external references of |
Line 1885 this case, the external documents are no
|
Line 2019 this case, the external documents are no
|
see the elements of these documents which could be referenced. Because of |
see the elements of these documents which could be referenced. Because of |
this, the editor will suggest that the documents be loaded in ``skeleton'' |
this, the editor will suggest that the documents be loaded in ``skeleton'' |
form. This form contains only the elements of the document explicitly |
form. This form contains only the elements of the document explicitly |
mentioned in the <TT>EXPORT</TT> section of their structure schema and, for |
mentioned in the <tt>EXPORT</tt> section of their structure schema and, for |
these elements, only the part of the contents specified in that section. This |
these elements, only the part of the contents specified in that section. This |
form has the advantage of being very compact, thus requiring very few |
form has the advantage of being very compact, thus requiring very few |
resources from the editor. This is also the skeleton form which constitutes |
resources from the editor. This is also the skeleton form which constitutes |
the expanded form of <A href="#inclusion">inclusions</A> with partial |
the expanded form of <a href="#inclusion">inclusions</a> with partial |
expansion.</P> |
expansion.</p> |
<P> |
<p> |
Skeleton elements must be declared explicitly in the <TT>EXPORT</TT> section |
Skeleton elements must be declared explicitly in the <tt>EXPORT</tt> section |
of the structure schema that defines them. This section begins with the |
of the structure schema that defines them. This section begins with the |
keyword <TT>EXPORT</TT> followed by a comma-separated list of the element |
keyword <tt>EXPORT</tt> followed by a comma-separated list of the element |
types which must appear in the skeleton form and ending with a semicolon. |
types which must appear in the skeleton form and ending with a semicolon. |
These types must have been previously declared in the schema.</P> |
These types must have been previously declared in the schema.</p> |
<P> |
<p> |
For each skeleton element type, the part of the contents which is loaded by |
For each skeleton element type, the part of the contents which is loaded by |
the editor, and therefore displayable, can be specified by putting the keyword |
the editor, and therefore displayable, can be specified by putting the keyword |
<TT>WITH</TT> and the name of the contained element type to be loaded after |
<tt>WITH</tt> and the name of the contained element type to be loaded after |
the name of the skeleton element type. In this case only that named element, |
the name of the skeleton element type. In this case only that named element, |
among all the elements contained in the exportable element type, will be |
among all the elements contained in the exportable element type, will be |
loaded. If the <TT>WITH</TT> is absent, the entire contents of the skeleton |
loaded. If the <tt>WITH</tt> is absent, the entire contents of the skeleton |
element will be loaded by the editor. If instead, it is better that the |
element will be loaded by the editor. If instead, it is better that the |
skeleton form not load the contents of a particular element type, the keyword |
skeleton form not load the contents of a particular element type, the keyword |
<TT>WITH</TT> must be followed by the word <TT>Nothing</TT>.</P> |
<tt>WITH</tt> must be followed by the word <tt>Nothing</tt>.</p> |
<PRE> |
<pre> [ 'EXPORT' SkeletonSeq ] |
[ 'EXPORT' SkeletonSeq ] |
|
|
|
SkeletonSeq = SkelElem < ',' SkelElem > ';' . |
SkeletonSeq = SkelElem < ',' SkelElem > ';' . |
SkelElem = ElemID [ 'WITH' Contents ] . |
SkelElem = ElemID [ 'WITH' Contents ] . |
Contents = 'Nothing' / ElemID [ ExtStruct ] . |
Contents = 'Nothing' / ElemID [ ExtStruct ] .</pre> |
</PRE> |
<blockquote class="example"> |
<BLOCKQUOTE class="example"> |
<p> |
<P> |
<strong>Example:</strong></p> |
<STRONG>Example:</STRONG></P> |
<p> |
<P> |
|
Suppose that, in documents of the article class, the element types |
Suppose that, in documents of the article class, the element types |
Article_title, Figure, Section, Paragraph, and Biblio should appear in the |
Article_title, Figure, Section, Paragraph, and Biblio should appear in the |
skeleton form in order to make it easier to create external references to them |
skeleton form in order to make it easier to create external references to them |
from other documents. When loading an article in its skeleton form, all of |
from other documents. When loading an article in its skeleton form, all of |
these element types will be loaded except for paragraphs, but only the article |
these element types will be loaded except for paragraphs, but only the article |
title will be loaded in its entirety. For figures, the caption will be loaded, |
title will be loaded in its entirety. For figures, the caption will be |
while for sections, the title will be loaded, and for bibliographic entries, |
loaded, while for sections, the title will be loaded, and for bibliographic |
only the title that they contain will be loaded. Note that |
entries, only the title that they contain will be loaded. Note that |
bibliographic elements are defined in another structure schema, RefBib. To |
bibliographic elements are defined in another structure schema, RefBib. To |
produce this result, the following declarations should be placed in the |
produce this result, the following declarations should be placed in the |
Article structure schema:</P> |
Article structure schema:</p> |
<PRE> |
<pre>EXPORT |
EXPORT |
|
Article_title, |
Article_title, |
Figure With Caption, |
Figure With Caption, |
Section With Section_title, |
Section With Section_title, |
Paragraph With Nothing, |
Paragraph With Nothing, |
Biblio With Biblio_title(RefBib); |
Biblio With Biblio_title(RefBib);</pre> |
</PRE> |
</blockquote> |
</BLOCKQUOTE> |
</div> |
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc3214>Exceptions</A></H3> |
|
|
|
<P> |
<h3><a name="sectc3214">Exceptions</a></h3> |
|
<p> |
The behavior of the Thot editor and the actions that it performs are |
The behavior of the Thot editor and the actions that it performs are |
determined by the structure schemas. These actions are applied to all |
determined by the structure schemas. These actions are applied to all |
document and object types in accordance with their generic structure. For |
document and object types in accordance with their generic structure. For |
certain object types, such as tables and graphics, these actions are not |
certain object types, such as tables and graphics, these actions are not |
sufficient or are poorly adapted and some special actions must be added to or |
sufficient or are poorly adapted and some special actions must be added to or |
substituted for certain standard actions. These special actions are called |
substituted for certain standard actions. These special actions are called |
<EM>exceptions</EM>.</P> |
<em>exceptions</em>.</p> |
<P> |
<p> |
Exceptions only inhibit or modify certain standard actions, but they can be |
Exceptions only inhibit or modify certain standard actions, but they can be |
used freely in every structure schema.</P> |
used freely in every structure schema.</p> |
<P> |
<p> |
Each structure schema can contain a section defining exceptions. It begins |
Each structure schema can contain a section defining exceptions. It begins |
with the keyword <TT>EXCEPT</TT> and is composed of a sequence of exception |
with the keyword <tt>EXCEPT</tt> and is composed of a sequence of exception |
declarations, separated by semicolons. Each declaration of an exception |
declarations, separated by semicolons. Each declaration of an exception |
begins with the name of an element type or attribute followed by a colon. This |
begins with the name of an element type or attribute followed by a colon. This |
indicates the element type or attribute to which the following exceptions |
indicates the element type or attribute to which the following exceptions |
apply. When the given element type name is a <A href="#sectd3285">mark pair</A>, |
apply. When the given element type name is a <a href="#sectd3285">mark |
and only in this case, the type name can be preceded by the keyword |
pair</a>, and only in this case, the type name can be preceded by the keyword |
<TT>First</TT> or <TT>Second</TT>, to indicate if the exceptions which follow |
<tt>First</tt> or <tt>Second</tt>, to indicate if the exceptions which follow |
are associated with the first mark of the pair or the second. In the absence |
are associated with the first mark of the pair or the second. In the absence |
of this keyword, the first mark is used.</P> |
of this keyword, the first mark is used.</p> |
<P> |
<p> |
When placed in an <A href="#sectc322">extension schema</A>, the keyword |
When placed in an <a href="#sectc322">extension schema</a>, the keyword |
<TT>EXTERN</TT> indicates that the type name which follows is found in the |
<tt>EXTERN</tt> indicates that the type name which follows is found in the |
principal schema (the schema being extended by the extension schema). The |
principal schema (the schema being extended by the extension schema). The |
exceptions are indicated by a name. They are separated by semicolons.</P> |
exceptions are indicated by a name. They are separated by semicolons.</p> |
<PRE> |
<pre> [ 'EXCEPT' ExceptSeq ] |
[ 'EXCEPT' ExceptSeq ] |
|
|
|
ExceptSeq = Except ';' < Except ';' > . |
ExceptSeq = Except ';' < Except ';' > . |
Except = [ 'EXTERN' ] [ FirstSec ] ExcTypeOrAttr |
Except = [ 'EXTERN' ] [ FirstSec ] ExcTypeOrAttr |
Line 1981 exceptions are indicated by a name. The
|
Line 2110 exceptions are indicated by a name. The
|
ExcValue ='NoCut' / 'NoCreate' / |
ExcValue ='NoCut' / 'NoCreate' / |
'NoHMove' / 'NoVMove' / 'NoMove' / |
'NoHMove' / 'NoVMove' / 'NoMove' / |
'NoHResize' / 'NoVResize' / 'NoResize' / |
'NoHResize' / 'NoVResize' / 'NoResize' / |
'MoveResize' / |
'MoveResize' / |
'NewWidth' / 'NewHeight' / |
'NewWidth' / 'NewHeight' / |
'NewHPos' / 'NewVPos' / |
'NewHPos' / 'NewVPos' / |
'Invisible' / 'NoSelect' / |
'Invisible' / 'NoSelect' / |
Line 1989 exceptions are indicated by a name. The
|
Line 2118 exceptions are indicated by a name. The
|
'ImportLine' / 'ImportParagraph' / |
'ImportLine' / 'ImportParagraph' / |
'NoPaginate' / 'ParagraphBreak' / |
'NoPaginate' / 'ParagraphBreak' / |
'HighlightChildren' / 'ExtendedSelection' / |
'HighlightChildren' / 'ExtendedSelection' / |
'ReturnCreateNL' . |
'ReturnCreateNL' .</pre> |
</PRE> |
<p> |
<P> |
The following are the available exceptions:</p> |
The following are the available exceptions:</P> |
<dl> |
<DL> |
<dt><tt>NoCut</tt></dt> |
<DT><TT>NoCut</TT></DT> |
<dd> |
<DD>This exception can only be applied to element types. Elements of a type to |
This exception can only be applied to element types. Elements of a type to |
which this exception is applied cannot be deleted by the editor. |
which this exception is applied cannot be deleted by the editor. |
</DD> |
</dd> |
<DT><TT>NoCreate</TT></DT> |
<dt><tt>NoCreate</tt></dt> |
<DD>This exception can only be applied to element types. Elements of a type to |
<dd> |
|
This exception can only be applied to element types. Elements of a type to |
which this exception is applied cannot be created by ordinary commands for |
which this exception is applied cannot be created by ordinary commands for |
creating new elements. These elements are usually created by special actions |
creating new elements. These elements are usually created by special actions |
associated with other exceptions. |
associated with other exceptions. |
</DD> |
</dd> |
<DT><TT>NoHMove</TT></DT> |
<dt><tt>NoHMove</tt></dt> |
<DD>This exception can only be applied to element types. Elements of a type to |
<dd> |
which this exception is applied cannot be moved horizontally with the |
This exception can only be applied to element types. Elements of a type to |
mouse. Their children elements cannot be moved either. |
which this exception is applied cannot be moved horizontally with the mouse. |
</DD> |
Their children elements cannot be moved either. |
<DT><TT>NoVMove</TT></DT> |
</dd> |
<DD>This exception can only be applied to element types. Elements of a type to |
<dt><tt>NoVMove</tt></dt> |
which this exception is applied cannot be moved vertically with the |
<dd> |
mouse. Their children elements cannot be moved either. |
This exception can only be applied to element types. Elements of a type to |
</DD> |
which this exception is applied cannot be moved vertically with the mouse. |
<DT><TT>NoMove</TT></DT> |
Their children elements cannot be moved either. |
<DD>This exception can only be applied to element types. Elements of a type to |
</dd> |
|
<dt><tt>NoMove</tt></dt> |
|
<dd> |
|
This exception can only be applied to element types. Elements of a type to |
which this exception is applied cannot be moved in any direction with the |
which this exception is applied cannot be moved in any direction with the |
mouse. Their children elements cannot be moved either. |
mouse. Their children elements cannot be moved either. |
</DD> |
</dd> |
<DT><TT>NoHResize</TT></DT> |
<dt><tt>NoHResize</tt></dt> |
<DD>This exception can only be applied to element types. Elements of a type to |
<dd> |
which this exception is applied cannot be resized horizontally with the |
This exception can only be applied to element types. Elements of a type to |
mouse. Their children elements cannot be resized either. |
which this exception is applied cannot be resized horizontally with the mouse. |
</DD> |
Their children elements cannot be resized either. |
<DT><TT>NoVResize</TT></DT> |
</dd> |
<DD>This exception can only be applied to element types. Elements of a type to |
<dt><tt>NoVResize</tt></dt> |
which this exception is applied cannot be resized vertically with the |
<dd> |
mouse. Their children elements cannot be resized either. |
This exception can only be applied to element types. Elements of a type to |
</DD> |
which this exception is applied cannot be resized vertically with the mouse. |
<DT><TT>NoResize</TT></DT> |
Their children elements cannot be resized either. |
<DD>This exception can only be applied to element types. Elements of a type to |
</dd> |
|
<dt><tt>NoResize</tt></dt> |
|
<dd> |
|
This exception can only be applied to element types. Elements of a type to |
which this exception is applied cannot be resized in any direction with the |
which this exception is applied cannot be resized in any direction with the |
mouse. Their children elements cannot be resized either. |
mouse. Their children elements cannot be resized either. |
</DD> |
</dd> |
<DT><TT>MoveResize</TT></DT> |
<dt><tt>MoveResize</tt></dt> |
<DD>This exception can only be applied to element types. Elements of a type to |
<dd> |
which this exception is applied can be moved and resized in any direction |
This exception can only be applied to element types. Elements of a type to |
with the mouse, even if one of their ancestor element has an exception that |
which this exception is applied can be moved and resized in any direction with |
|
the mouse, even if one of their ancestor element has an exception that |
prevents moving or resizing. Their children elements can also be resized or |
prevents moving or resizing. Their children elements can also be resized or |
moved. |
moved. |
</DD> |
</dd> |
<DT><TT>NoSelect</TT></DT> |
<dt><tt>NoSelect</tt></dt> |
<DD>This exception can only be applied to element types. Elements of a type to |
<dd> |
which this exception is applied cannot be selected directly with the mouse, but |
This exception can only be applied to element types. Elements of a type to |
they can be selected by other methods provided by the editor. |
which this exception is applied cannot be selected directly with the mouse, |
</DD> |
but they can be selected by other methods provided by the editor. |
<DT><TT>NewWidth</TT></DT> |
</dd> |
<DD>This exception can only be applied to numeric attributes. If the width of |
<dt><tt>NewWidth</tt></dt> |
an element which has this attribute is modified with the mouse, the value of |
<dd> |
the new width will be assigned to the attribute. |
This exception can only be applied to numeric attributes. If the width of an |
</DD> |
element which has this attribute is modified with the mouse, the value of the |
<DT><TT>NewHeight</TT></DT> |
new width will be assigned to the attribute. |
<DD>This exception can only be applied to numeric attributes. If the height of |
</dd> |
an element which has this attribute is modified with the mouse, the value of |
<dt><tt>NewHeight</tt></dt> |
the new height will be assigned to the attribute. |
<dd> |
</DD> |
This exception can only be applied to numeric attributes. If the height of an |
<DT><TT>NewHPos</TT></DT> |
element which has this attribute is modified with the mouse, the value of the |
<DD>This exception can only be applied to numeric attributes. If the |
new height will be assigned to the attribute. |
horizontal position of an element which has this attribute is modified with the |
</dd> |
mouse, the value of the new horizontal position will be assigned to the |
<dt><tt>NewHPos</tt></dt> |
attribute. |
<dd> |
</DD> |
This exception can only be applied to numeric attributes. If the horizontal |
<DT><TT>NewVPos</TT></DT> |
position of an element which has this attribute is modified with the mouse, |
<DD>This exception can only be applied to numeric attributes. If the vertical |
the value of the new horizontal position will be assigned to the attribute. |
position of an element which has this attribute is modified with the mouse, the |
</dd> |
value of the new vertical position will be assigned to the attribute. |
<dt><tt>NewVPos</tt></dt> |
</DD> |
<dd> |
<DT><TT>Invisible</TT></DT> |
This exception can only be applied to numeric attributes. If the vertical |
<DD>This exception can only be applied to attributes, but can be applied to all |
position of an element which has this attribute is modified with the mouse, |
|
the value of the new vertical position will be assigned to the attribute. |
|
</dd> |
|
<dt><tt>Invisible</tt></dt> |
|
<dd> |
|
This exception can only be applied to attributes, but can be applied to all |
attribute types. It indicates that the attribute must not be seen by the user |
attribute types. It indicates that the attribute must not be seen by the user |
and that its value must not be changed directly. This exception is usually |
and that its value must not be changed directly. This exception is usually |
used when another exception manipulates the value of an attribute. |
used when another exception manipulates the value of an attribute. |
</DD> |
</dd> |
<DT><TT>Hidden</TT></DT> |
<dt><tt>Hidden</tt></dt> |
<DD>This exception can only be applied to element types. It indicates that |
<dd> |
|
This exception can only be applied to element types. It indicates that |
elements of this type, although present in the document's structure, must not |
elements of this type, although present in the document's structure, must not |
be shown to the user of the editor. In particular, the creation menus must not |
be shown to the user of the editor. In particular, the creation menus must |
propose this type and the selection message must not pick it. |
not propose this type and the selection message must not pick it. |
</DD> |
</dd> |
<DT><TT>ActiveRef</TT></DT> |
<dt><tt>ActiveRef</tt></dt> |
<DD>This exception can only be applied to attributes of the reference type. It |
<dd> |
|
This exception can only be applied to attributes of the reference type. It |
indicates that when the user of the editor makes a double click on an element |
indicates that when the user of the editor makes a double click on an element |
which possesses a reference attribute having this exception, the element |
which possesses a reference attribute having this exception, the element |
designated by the reference attribute will be selected. |
designated by the reference attribute will be selected. |
</DD> |
</dd> |
<DT><TT>ImportLine</TT></DT> |
<dt><tt>ImportLine</tt></dt> |
<DD>This exception can only be applied to element types. It indicates that |
<dd> |
|
This exception can only be applied to element types. It indicates that |
elements of this type should receive the content of imported text files. An |
elements of this type should receive the content of imported text files. An |
element is created for each line of the imported file. A structure schema |
element is created for each line of the imported file. A structure schema |
cannot contain several exceptions <TT>ImportLine</TT> and, if it contains one, |
cannot contain several exceptions <tt>ImportLine</tt> and, if it contains one, |
it should not contain any exception <TT>ImportParagraph</TT>. |
it should not contain any exception <tt>ImportParagraph</tt>. |
</DD> |
</dd> |
<DT><TT>ImportParagraph</TT></DT> |
<dt><tt>ImportParagraph</tt></dt> |
<DD>This exception can only be applied to element types. It indicates that |
<dd> |
|
This exception can only be applied to element types. It indicates that |
elements of this type should receive the content of imported text files. An |
elements of this type should receive the content of imported text files. An |
element is created for each paragraph of the imported file. A paragraph is a |
element is created for each paragraph of the imported file. A paragraph is a |
sequence of lines without any empty line. A structure schema cannot contain |
sequence of lines without any empty line. A structure schema cannot contain |
several exceptions <TT>ImportParagraph</TT> and, if it contains one, it should |
several exceptions <tt>ImportParagraph</tt> and, if it contains one, it should |
not contain any exception <TT>ImportLine</TT>. |
not contain any exception <tt>ImportLine</tt>. |
</DD> |
</dd> |
<DT><TT>NoPaginate</TT></DT> |
<dt><tt>NoPaginate</tt></dt> |
<DD>This exception can only be applied to the root element, i.e. the name that |
<dd> |
appear after the keyword <TT>STRUCTURE</TT> at the beginning of the structure |
This exception can only be applied to the root element, i.e. the name that |
|
appear after the keyword <tt>STRUCTURE</tt> at the beginning of the structure |
schema. It indicates that the editor should not allow the user to paginate |
schema. It indicates that the editor should not allow the user to paginate |
documents of that type. |
documents of that type. |
</DD> |
</dd> |
<DT><TT>ParagraphBreak</TT></DT> |
<dt><tt>ParagraphBreak</tt></dt> |
<DD>This exception can only be applied to element types. When the caret is |
<dd> |
within an element of a type to which this exception is applied, it is that |
This exception can only be applied to element types. When the caret is within |
element that will be split when the user hits the Return key. |
an element of a type to which this exception is applied, it is that element |
</DD> |
that will be split when the user hits the Return key. |
<DT><TT>ReturnCreateNL</TT></DT> |
</dd> |
<DD>This exception can only be applied to element types. When the caret is |
<dt><tt>ReturnCreateNL</tt></dt> |
within an element of a type to which this exception is applied, the Return |
<dd> |
key simply inserts a New line character (code \212) at the current position. |
This exception can only be applied to element types. When the caret is within |
The Return key does not create a new element; it does not split the current |
an element of a type to which this exception is applied, the Return key simply |
element either. |
inserts a New line character (code \212) at the current position. The Return |
</DD> |
key does not create a new element; it does not split the current element |
<DT><TT>HighlightChildren</TT></DT> |
either. |
<DD>This exception can only be applied to element types. Elements of a type to |
</dd> |
|
<dt><tt>HighlightChildren</tt></dt> |
|
<dd> |
|
This exception can only be applied to element types. Elements of a type to |
which this exception is applied are not highlighted themselves when they are |
which this exception is applied are not highlighted themselves when they are |
selected, but all their children are highlighted instead. |
selected, but all their children are highlighted instead. |
</DD> |
</dd> |
<DT><TT>ExtendedSelection</TT></DT> |
<dt><tt>ExtendedSelection</tt></dt> |
<DD>This exception can only be applied to element types. The selection |
<dd> |
extension command (middle button of the mouse) only add the clicked element (if |
This exception can only be applied to element types. The selection extension |
it has that exception) to the current selection, without selecting other |
command (middle button of the mouse) only add the clicked element (if it has |
elements between the current selection and the clicked element. |
that exception) to the current selection, without selecting other elements |
</DD> |
between the current selection and the clicked element. |
</DL> |
</dd> |
<BLOCKQUOTE class="example"> |
</dl> |
<P> |
<blockquote class="example"> |
<STRONG>Example:</STRONG></P> |
<p> |
<P> |
<strong>Example:</strong></p> |
|
<p> |
Consider a structure schema for object-style graphics which defines the |
Consider a structure schema for object-style graphics which defines the |
Graphic_object element type with the associated Height and Weight |
Graphic_object element type with the associated Height and Weight numeric |
numeric attributes. Suppose that we want documents of this class to have |
attributes. Suppose that we want documents of this class to have the |
the following qualities:</P> |
following qualities:</p> |
<UL> |
<ul> |
<LI>Whenever the width or height of an object is changed using the mouse, the |
<li> |
new values are stored in the object's Width and Height attributes. |
Whenever the width or height of an object is changed using the mouse, the new |
<LI>The user should not be able to change the values of the Width and Height |
values are stored in the object's Width and Height attributes. |
|
<li> |
|
The user should not be able to change the values of the Width and Height |
attributes via the Attributes menu of the Thot editor. |
attributes via the Attributes menu of the Thot editor. |
</UL> |
</ul> |
<P> |
<p> |
The following exceptions will produce this effect.</P> |
The following exceptions will produce this effect.</p> |
<PRE> |
<pre>STRUCT |
STRUCT |
|
... |
... |
Graphics_object (ATTR Height = Integer; Width = Integer) |
Graphics_object (ATTR Height = Integer; Width = Integer) |
= GRAPHICS with Height ?= 10, Width ?= 10; |
= GRAPHICS with Height ?= 10, Width ?= 10; |
... |
... |
EXCEPT |
EXCEPT |
Height: NewHeight, Invisible; |
Height: NewHeight, Invisible; |
Width: NewWidth, Invisible; |
Width: NewWidth, Invisible;</pre> |
</PRE> |
</blockquote> |
</BLOCKQUOTE> |
</div> |
</DIV> |
</div> |
</DIV> |
|
|
|
<DIV class="section"> |
<div class="section"> |
<H2><A name=sectb33>Some examples</A></H2> |
|
|
|
<P> |
<h2><a name="sectb33">Some examples</a></h2> |
|
<p> |
In order to illustrate the principles of the document model and the syntax of |
In order to illustrate the principles of the document model and the syntax of |
the S language, this section presents two examples of structure schemas. One |
the S language, this section presents two examples of structure schemas. One |
defines a class of documents, the other defines a class of objects.</P> |
defines a class of documents, the other defines a class of objects.</p> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc331>A class of documents: articles</A></H3> |
|
|
|
<P> |
<h3><a name="sectc331">A class of documents: articles</a></h3> |
|
<p> |
This example shows a possible structure for articles published in a journal. |
This example shows a possible structure for articles published in a journal. |
Text between braces is comments.</P> |
Text between braces is comments.</p> |
<PRE> |
<pre>STRUCTURE Article; { This schema defines the Article class } |
STRUCTURE Article; { This schema defines the Article class } |
|
DEFPRES ArticleP; { The default presentation schema is |
DEFPRES ArticleP; { The default presentation schema is |
ArticleP } |
ArticleP } |
ATTR { Global attribute definitions } |
ATTR { Global attribute definitions } |
Line 2284 EXPORT { Skeleton elements }
|
Line 2434 EXPORT { Skeleton elements }
|
Figure with Figure_caption, |
Figure with Figure_caption, |
Section With Section_title; |
Section With Section_title; |
|
|
END { End of the structure schema } |
END { End of the structure schema }</pre> |
</PRE> |
<p> |
<P> |
|
This schema is very complete since it defines both paragraphs and |
This schema is very complete since it defines both paragraphs and |
bibliographic citations. These element types could just as well be defined in |
bibliographic citations. These element types could just as well be defined in |
other structure schemas, as is the case with the <TT>Formula</TT> class. All |
other structure schemas, as is the case with the <tt>Formula</tt> class. All |
sorts of other elements can be inserted into an article, since a paragraph can |
sorts of other elements can be inserted into an article, since a paragraph can |
contain any type of unit. Similarly, figures can be any class of document or |
contain any type of unit. Similarly, figures can be any class of document or |
object that the user chooses.</P> |
object that the user chooses.</p> |
<P> |
<p> |
Generally, an article doesn't contain appendices, but it is possible to add |
Generally, an article doesn't contain appendices, but it is possible to add |
them on explicit request: this is the effect of the question mark before the |
them on explicit request: this is the effect of the question mark before the |
word Appendices.</P> |
word Appendices.</p> |
<P> |
<p> |
The Figure, Biblio_citation and Note elements are associated elements. Thus, |
The Figure, Biblio_citation and Note elements are associated elements. Thus, |
they are only used in <TT>REFERENCE</TT> statements.</P> |
they are only used in <tt>REFERENCE</tt> statements.</p> |
<P> |
<p> |
Various types of cross-references can be put in paragraphs. They can also be |
Various types of cross-references can be put in paragraphs. They can also be |
placed the objects which are part of the article, since the cross-references |
placed the objects which are part of the article, since the cross-references |
are defined as units (<TT>UNITS</TT>).</P> |
are defined as units (<tt>UNITS</tt>).</p> |
<P> |
<p> |
There is a single restriction to prevent the creation of Ref_note elements |
There is a single restriction to prevent the creation of Ref_note elements |
within notes.</P> |
within notes.</p> |
<P> |
<p> |
It is worth noting that the S language permits the definition of recursive |
It is worth noting that the S language permits the definition of recursive |
structures like sections: a section can contain other sections (which are thus |
structures like sections: a section can contain other sections (which are thus |
at the next lower level of the document tree). Paragraphs are also recursive |
at the next lower level of the document tree). Paragraphs are also recursive |
elements, since a paragraph can contain an enumeration in which each element |
elements, since a paragraph can contain an enumeration in which each element |
(<TT>Item</TT>) is composed of paragraphs.</P> |
(<tt>Item</tt>) is composed of paragraphs.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc332>A class of objects: mathematical formulas</A></H3> |
|
|
|
<P> |
<h3><a name="sectc332">A class of objects: mathematical formulas</a></h3> |
The example below defines the <TT>Formula</TT> class which is used in Article |
<p> |
|
The example below defines the <tt>Formula</tt> class which is used in Article |
documents. This class represents mathematical formulas with a rather simple |
documents. This class represents mathematical formulas with a rather simple |
structure, but sufficient to produce a correct rendition on the screen or |
structure, but sufficient to produce a correct rendition on the screen or |
printer. To support more elaborate operations (formal or numeric |
printer. To support more elaborate operations (formal or numeric |
calculations), a finer structure should be defined. This class doesn't use any |
calculations), a finer structure should be defined. This class doesn't use any |
other class and doesn't define any associated elements or units.</P> |
other class and doesn't define any associated elements or units.</p> |
<PRE> |
<pre>STRUCTURE Formula; |
STRUCTURE Formula; |
|
DEFPRES FormulaP; |
DEFPRES FormulaP; |
|
|
ATTR |
ATTR |
Line 2370 STRUCT
|
Line 2518 STRUCT
|
Closing = SYMBOL; |
Closing = SYMBOL; |
END; |
END; |
END; { End of Choice Constructor } |
END; { End of Choice Constructor } |
END { End of Structure Schema } |
END { End of Structure Schema }</pre> |
</PRE> |
<p> |
<P> |
|
This schema defines a single global attribute which allows functions and |
This schema defines a single global attribute which allows functions and |
variables to be distinguished. In the presentation schema, this attribute can |
variables to be distinguished. In the presentation schema, this attribute can |
be used to choose between roman (for functions) and italic characters (for |
be used to choose between roman (for functions) and italic characters (for |
variables).</P> |
variables).</p> |
<P> |
<p> |
A formula's structure is that of a mathematical expression, which is itself a |
A formula's structure is that of a mathematical expression, which is itself a |
sequence of mathematical constructions. A mathematical construction can be |
sequence of mathematical constructions. A mathematical construction can be |
either a simple character string, an index, an exponent, a fraction, a root, |
either a simple character string, an index, an exponent, a fraction, a root, |
etc. Each of these mathematical constructions has a sensible structure which |
etc. Each of these mathematical constructions has a sensible structure which |
generally includes one or more expressions, thus making the formula class's |
generally includes one or more expressions, thus making the formula class's |
structure definition recursive.</P> |
structure definition recursive.</p> |
<P> |
<p> |
In most cases, the roots which appear in the formulas are square roots and |
In most cases, the roots which appear in the formulas are square roots and |
their order (2) is not specified. This is why the Order component is marked |
their order (2) is not specified. This is why the Order component is marked |
optional by a question mark. When explicitly requested, it is possible to add |
optional by a question mark. When explicitly requested, it is possible to add |
an order to a root, for example for cube roots (order = 3).</P> |
an order to a root, for example for cube roots (order = 3).</p> |
<P> |
<p> |
An integral is formed by an integration symbol, chosen by the user (simple |
An integral is formed by an integration symbol, chosen by the user (simple |
integral, double, curvilinear, etc.), and two bounds. A more fine-grained |
integral, double, curvilinear, etc.), and two bounds. A more fine-grained |
schema would add components for the integrand and the integration variable. |
schema would add components for the integrand and the integration variable. |
Similarly, the Block_Parentheses construction leaves the choice of opening and |
Similarly, the Block_Parentheses construction leaves the choice of opening and |
closing symbols to the user. They can be brackets, braces, parentheses, |
closing symbols to the user. They can be brackets, braces, parentheses, |
etc.</P> |
etc.</p> |
</DIV> |
</div> |
</DIV> |
</div> |
<HR> |
<hr> |
</DIV> |
</div> |
|
|
<DIV class="chapter"> |
<div class="chapter"> |
<H1><A name=sect4>The P Language</A></H1> |
|
|
|
|
<h1><a name="sect4">The P Language</a></h1> |
|
|
<DIV class="section"> |
<div class="section"> |
<H2><A name=sectb41>Document presentation</A></H2> |
|
|
|
<P> |
<h2><a name="sectb41">Document presentation</a></h2> |
|
<p> |
Because of the model adopted for Thot, the presentation of documents is |
Because of the model adopted for Thot, the presentation of documents is |
clearly separated from their structure and content. After having presented |
clearly separated from their structure and content. After having presented |
the logical structure of documents, we now detail the principles implemented |
the logical structure of documents, we now detail the principles implemented |
for their presentation. The concept of <EM>presentation</EM> encompasses what |
for their presentation. The concept of <em>presentation</em> encompasses what |
is often called the page layout, the composition, or the document style. It |
is often called the page layout, the composition, or the document style. It |
is the set of operations which display the document on the screen or print |
is the set of operations which display the document on the screen or print it |
it on paper. Like logical structure, document presentation is defined |
on paper. Like logical structure, document presentation is defined |
generically with the help of a language, called P.</P> |
generically with the help of a language, called P.</p> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc411>Two levels of presentation</A></H3> |
|
|
|
<P> |
<h3><a name="sectc411">Two levels of presentation</a></h3> |
|
<p> |
The link between structure and presentation is clear: the logical organization |
The link between structure and presentation is clear: the logical organization |
of a document is used to carry out its presentation, since the purpose of the |
of a document is used to carry out its presentation, since the purpose of the |
presentation is to make evident the organization of the document. But the |
presentation is to make evident the organization of the document. But the |
Line 2430 Certain presentation effects, notably ch
|
Line 2577 Certain presentation effects, notably ch
|
be performed on all printers or on all screens. This is why Thot uses a |
be performed on all printers or on all screens. This is why Thot uses a |
two-level approach, where the presentation is first described in abstract |
two-level approach, where the presentation is first described in abstract |
terms, without taking into account each particular device, and then the |
terms, without taking into account each particular device, and then the |
presentation is realized within the constraints of a given device.</P> |
presentation is realized within the constraints of a given device.</p> |
<P> |
<p> |
Thus, presentation is only described as a function of the structure of the |
Thus, presentation is only described as a function of the structure of the |
documents and the image that would be produced on an idealized device. For |
documents and the image that would be produced on an idealized device. For |
this reason, presentation descriptions do not refer to any device |
this reason, presentation descriptions do not refer to any device |
characteristics: they describe <EM>abstract presentations</EM> which can be |
characteristics: they describe <em>abstract presentations</em> which can be |
concretized on different devices.</P> |
concretized on different devices.</p> |
<P> |
<p> |
A presentation description also defines a <EM>generic presentation</EM>, since |
A presentation description also defines a <em>generic presentation</em>, since |
it describes the appearance of a class of documents or objects. This generic |
it describes the appearance of a class of documents or objects. This generic |
presentation must also be applied to document and object instances, each |
presentation must also be applied to document and object instances, each |
conforming to its generic logical structure, but with all the allowances that |
conforming to its generic logical structure, but with all the allowances that |
were called to mind above: missing elements, constructed elements with other |
were called to mind above: missing elements, constructed elements with other |
logical structures, etc.</P> |
logical structures, etc.</p> |
<P> |
<p> |
In order to preserve the homogeneity between documents and objects, |
In order to preserve the homogeneity between documents and objects, |
presentation is described with a single set of tools which support the layout |
presentation is described with a single set of tools which support the layout |
of a large document as well as the composition of objects like a graphical |
of a large document as well as the composition of objects like a graphical |
Line 2452 figure or mathematical formula. This un
|
Line 2599 figure or mathematical formula. This un
|
contrasts with the traditional approach, which focuses more on documents than |
contrasts with the traditional approach, which focuses more on documents than |
objects and thus is based on the usual typographic conventions, such as the |
objects and thus is based on the usual typographic conventions, such as the |
placement of margins, indentations, vertical spaces, line lengths, |
placement of margins, indentations, vertical spaces, line lengths, |
justification, font changes, etc.</P> |
justification, font changes, etc.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc412>Boxes</A></H3> |
|
|
|
<P> |
<h3><a name="sectc412">Boxes</a></h3> |
|
<p> |
To assure the homogeneity of tools, all presentation in Thot, for documents as |
To assure the homogeneity of tools, all presentation in Thot, for documents as |
well as for the objects which they contain, is based on the notion of the |
well as for the objects which they contain, is based on the notion of the |
<EM>box</EM>, such as was implemented in T<SUB><BIG>E</BIG></SUB>X.</P> |
<em>box</em>, such as was implemented in T<sub><big>E</big></sub>X.</p> |
<P> |
<p> |
Corresponding to each element of the document is a box, which is the |
Corresponding to each element of the document is a box, which is the |
rectangle enclosing the element on the display device (screen or sheet of |
rectangle enclosing the element on the display device (screen or sheet of |
paper); the outline of this rectangle is not visible, except when a |
paper); the outline of this rectangle is not visible, except when a <a |
<A href="#sectc4230a"><TT>ShowBox</TT> rule</A> applies to the element. The |
href="#sectc4230a"><tt>ShowBox</tt> rule</a> applies to the element. The sides |
sides of |
of the box are parallel to the sides of the screen or the sheet of paper. By |
the box are parallel to the sides of the screen or the sheet of paper. By way |
way of example, a box is associated with a character string, a line of text, a |
of example, a box is associated with a character string, a line of text, a |
page, a paragraph, a title, a mathematical formula, or a table cell.</p> |
page, a paragraph, a title, a mathematical formula, or a table cell.</P> |
<p> |
<P> |
|
Whatever element it corresponds to, each box possesses four sides and four |
Whatever element it corresponds to, each box possesses four sides and four |
axes, which we designate as follows (<A href="#boxes">see figure</A>):</P> |
axes, which we designate as follows (<a href="#boxes">see figure</a>):</p> |
<DL> |
<dl> |
<DT><TT> Top</TT></DT> |
<dt><tt>Top</tt></dt> |
<DD>the upper side, |
<dd> |
</DD> |
the upper side, |
<DT><TT> Bottom</TT></DT> |
</dd> |
<DD>the lower side, |
<dt><tt>Bottom</tt></dt> |
</DD> |
<dd> |
<DT><TT> Left</TT></DT> |
the lower side, |
<DD>the left side, |
</dd> |
</DD> |
<dt><tt>Left</tt></dt> |
<DT><TT> Right</TT></DT> |
<dd> |
<DD>the right side, |
the left side, |
</DD> |
</dd> |
<DT><TT> VMiddle</TT></DT> |
<dt><tt>Right</tt></dt> |
<DD>the vertical axis passing through the center of the box, |
<dd> |
</DD> |
the right side, |
<DT><TT> HMiddle</TT></DT> |
</dd> |
<DD>the horizontal axis passing through the center of the box, |
<dt><tt>VMiddle</tt></dt> |
</DD> |
<dd> |
<DT><TT> VRef</TT></DT> |
the vertical axis passing through the center of the box, |
<DD>the vertical reference axis, |
</dd> |
</DD> |
<dt><tt>HMiddle</tt></dt> |
<DT><TT> HRef</TT></DT> |
<dd> |
<DD>the horizontal reference axis. |
the horizontal axis passing through the center of the box, |
</DD> |
</dd> |
</DL> |
<dt><tt>VRef</tt></dt> |
|
<dd> |
<DIV class="figure"> |
the vertical reference axis, |
<HR> |
</dd> |
<PRE> |
<dt><tt>HRef</tt></dt> |
Left VRef VMiddle Right |
<dd> |
|
the horizontal reference axis. |
|
</dd> |
|
</dl> |
|
|
|
<div class="figure"> |
|
<hr> |
|
<pre> Left VRef VMiddle Right |
: : |
: : |
Top ----------------------------- |
Top ----------------------------- |
| : : | |
| : : | |
Line 2519 HMiddle ..|...........................|.
|
Line 2672 HMiddle ..|...........................|.
|
| : : | |
| : : | |
| : : | |
| : : | |
Bottom ----------------------------- |
Bottom ----------------------------- |
: : |
: :</pre> |
</PRE> |
<p align=center> |
<P align=center> |
<em><a name="boxes">The sides and axes of boxes</a><em></em></em></p> |
<EM><A name="boxes">The sides and axes of boxes</A><EM></EM></EM></P> |
<hr> |
<HR> |
</div> |
</DIV> |
<p> |
<P> |
|
The principal role of boxes is to set the extent and position of the images of |
The principal role of boxes is to set the extent and position of the images of |
the different elements of a document with respect to each other on the |
the different elements of a document with respect to each other on the |
reproduction device. This is done by defining relations between the boxes of |
reproduction device. This is done by defining relations between the boxes of |
different elements which give relative extents and positions to these |
different elements which give relative extents and positions to these |
boxes.</P> |
boxes.</p> |
<P> |
<p> |
There are three types of boxes:</P> |
There are three types of boxes:</p> |
<UL> |
<ul> |
<LI>boxes corresponding to structural elements of the document, |
<li> |
<LI>presentation boxes, |
boxes corresponding to structural elements of the document, |
<LI>page layout boxes. |
<li> |
</UL> |
presentation boxes, |
<P> |
<li> |
<STRONG>Boxes corresponding to structural elements of the document</STRONG> |
page layout boxes. |
|
</ul> |
|
<p> |
|
<strong>Boxes corresponding to structural elements of the document</strong> |
are those which linked to each of the elements (base or structured) of the |
are those which linked to each of the elements (base or structured) of the |
logical structure of the document. Such a box contains all the contents of |
logical structure of the document. Such a box contains all the contents of |
the element to which it corresponds (there is an exception: see |
the element to which it corresponds (there is an exception: see <a |
<A href="#sectc4220">rules <TT>VertOverflow</TT> and |
href="#sectc4220">rules <tt>VertOverflow</tt> and <tt>HorizOverflow</tt></a>). |
<TT>HorizOverflow</TT></A>). These boxes form a |
These boxes form a tree-like structure, identical to that of the structural |
tree-like structure, identical to that of the structural elements to which |
elements to which they correspond. This tree expresses the inclusion |
they correspond. This tree expresses the inclusion relationships between the |
relationships between the boxes: a box includes all the boxes of its subtree. |
boxes: a box includes all the boxes of its subtree. On the other hand, there |
On the other hand, there are no predefined rules for the relative positions of |
are no predefined rules for the relative positions of the included boxes. If |
the included boxes. If they are at the same level, they can overlap, be |
they are at the same level, they can overlap, be contiguous, or be disjoint. |
contiguous, or be disjoint. The rules expressed in the generic presentation |
The rules expressed in the generic presentation specify their relative |
specify their relative positions.</p> |
positions.</P> |
<p> |
<P> |
<strong>Presentation boxes</strong> represent elements which are not found in |
<STRONG>Presentation boxes</STRONG> represent elements which are not found in |
|
the logical structure of the document but which are added to meet the needs of |
the logical structure of the document but which are added to meet the needs of |
presentation. These boxes are linked to the elements of the logical structure |
presentation. These boxes are linked to the elements of the logical structure |
that are best suited to bringing them out. For example, they are used to add |
that are best suited to bringing them out. For example, they are used to add |
Line 2570 editor. This is why they must appear in
|
Line 2724 editor. This is why they must appear in
|
generic presentation which specifies the presentation boxes to add by |
generic presentation which specifies the presentation boxes to add by |
indicating their content (a base element for which the value is specified) and |
indicating their content (a base element for which the value is specified) and |
the position that they must take in the tree of boxes. During editing, these |
the position that they must take in the tree of boxes. During editing, these |
boxes cannot be modified by the user.</P> |
boxes cannot be modified by the user.</p> |
<P> |
<p> |
<STRONG>Page layout boxes</STRONG> are boxes created implicitly by the page |
<strong>Page layout boxes</strong> are boxes created implicitly by the page |
layout rules. These rules indicate how the contents of a structured element |
layout rules. These rules indicate how the contents of a structured element |
must be broken into lines and pages. In contrast to presentation boxes, these |
must be broken into lines and pages. In contrast to presentation boxes, these |
line and page boxes do not depend on the logical structure of the document, |
line and page boxes do not depend on the logical structure of the document, |
but rather on the physical constraints of the output devices: character |
but rather on the physical constraints of the output devices: character size, |
size, height and width of the window on the screen or of the sheet of |
height and width of the window on the screen or of the sheet of paper.</p> |
paper.</P> |
</div> |
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc413>Views and visibility</A></H3> |
|
|
|
<P> |
<h3><a name="sectc413">Views and visibility</a></h3> |
|
<p> |
One of the operations that one might wish to perform on a document is to view |
One of the operations that one might wish to perform on a document is to view |
it is different ways. For this reason, it is possible to define several |
it is different ways. For this reason, it is possible to define several |
<EM>views</EM> for the same document, or better yet, for all documents of the |
<em>views</em> for the same document, or better yet, for all documents of the |
same class. A view is not a different presentation of the document, but |
same class. A view is not a different presentation of the document, but |
rather a filter which only allows the display of certain parts of the |
rather a filter which only allows the display of certain parts of the |
document. For example, it might be desirable to see only the titles of |
document. For example, it might be desirable to see only the titles of |
Line 2595 chapters and sections in order to be abl
|
Line 2748 chapters and sections in order to be abl
|
document. Such a view could be called a ``table of contents''. It might also |
document. Such a view could be called a ``table of contents''. It might also |
be desirable to see only the mathematical formulas of a document in order to |
be desirable to see only the mathematical formulas of a document in order to |
avoid being distracted by the non-mathematical aspects of the document. A |
avoid being distracted by the non-mathematical aspects of the document. A |
``mathematics'' view could provide this service.</P> |
``mathematics'' view could provide this service.</p> |
<P> |
<p> |
Views, like presentation, are based on the generic logical structure. Each |
Views, like presentation, are based on the generic logical structure. Each |
document class, and each generic presentation, can be provided with views |
document class, and each generic presentation, can be provided with views |
which are particularly useful for that class or presentation. For each view, |
which are particularly useful for that class or presentation. For each view, |
the <EM>visibility</EM> of elements is defined, indicated whether or not the |
the <em>visibility</em> of elements is defined, indicated whether or not the |
elements must be presented to the user. The visibility is calculated as a |
elements must be presented to the user. The visibility is calculated as a |
function of the type of the elements or their hierarchical position in the |
function of the type of the elements or their hierarchical position in the |
structure of the document. Thus, for a table of contents, all the ``Chapter |
structure of the document. Thus, for a table of contents, all the ``Chapter |
Line 2608 Title'' and ``Section Title'' elements a
|
Line 2761 Title'' and ``Section Title'' elements a
|
hierarchical level could be used to make the section titles invisible below a |
hierarchical level could be used to make the section titles invisible below a |
certain threshold level. By varying this threshold, the granularity of the |
certain threshold level. By varying this threshold, the granularity of the |
view can be varied. In the ``mathematics'' view, only Formula elements would |
view can be varied. In the ``mathematics'' view, only Formula elements would |
be made visible, no matter what their hierarchical level.</P> |
be made visible, no matter what their hierarchical level.</p> |
<P> |
<p> |
Because views are especially useful for producing a synthetic image of the |
Because views are especially useful for producing a synthetic image of the |
document, it is necessary to adapt the presentation of the elements to the |
document, it is necessary to adapt the presentation of the elements to the |
view in which they appear. For example, it is inappropriate to have a page |
view in which they appear. For example, it is inappropriate to have a page |
break before every chapter title in the table of contents. Thus, generic |
break before every chapter title in the table of contents. Thus, generic |
presentations take into account the possible views and permit each element |
presentations take into account the possible views and permit each element |
type's presentation to vary according the view in which its image appears.</P> |
type's presentation to vary according the view in which its image appears.</p> |
<P> |
<p> |
<A name="views">Views</A> are also used, when editing documents, to display |
<a name="views">Views</a> are also used, when editing documents, to display |
the associated elements. So, in addition to the primary view of the document, |
the associated elements. So, in addition to the primary view of the document, |
there can be a ``notes'' view and a ``figures'' view which contain, |
there can be a ``notes'' view and a ``figures'' view which contain, |
respectively, the associated elements of the Note and Figure types. In this |
respectively, the associated elements of the Note and Figure types. In this |
way, it is possible to see simultaneously the text which refers to these |
way, it is possible to see simultaneously the text which refers to these |
elements and the elements themselves, even if they will be separated when |
elements and the elements themselves, even if they will be separated when |
printed.</P> |
printed.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc414>Pages</A></H3> |
|
|
|
<P> |
<h3><a name="sectc414">Pages</a></h3> |
|
<p> |
Presentation schemas can be defined which display the document as a long |
Presentation schemas can be defined which display the document as a long |
scroll, without page breaks. This type of schema is particularly well-suited |
scroll, without page breaks. This type of schema is particularly well-suited |
to the initial phase of work on a document, where jumps from page to page |
to the initial phase of work on a document, where jumps from page to page |
Line 2638 the associated elements (such as notes),
|
Line 2791 the associated elements (such as notes),
|
page footer, are presented in a separate window. But, once the document is |
page footer, are presented in a separate window. But, once the document is |
written, it may be desirable to display the document on the screen in the same |
written, it may be desirable to display the document on the screen in the same |
manner in which it will be printed. So, the presentation schema must define |
manner in which it will be printed. So, the presentation schema must define |
pages.</P> |
pages.</p> |
<P> |
<p> |
The P language permits the specification of the dimensions of pages as well as |
The P language permits the specification of the dimensions of pages as well as |
their composition. It is possible to generate running titles, page numbers, |
their composition. It is possible to generate running titles, page numbers, |
zones at the bottom of the page for notes, etc. The editor follows this model |
zones at the bottom of the page for notes, etc. The editor follows this model |
and inserts page break marks in the document which are used during printing, |
and inserts page break marks in the document which are used during printing, |
insuring that the pages on paper are the same as on the screen.</P> |
insuring that the pages on paper are the same as on the screen.</p> |
<P> |
<p> |
Once a document has been edited with a presentation schema defining pages, it |
Once a document has been edited with a presentation schema defining pages, it |
contains page marks. But it is always possible to edit the document using a |
contains page marks. But it is always possible to edit the document using a |
schema without pages. In this case, the page marks are simply ignored by the |
schema without pages. In this case, the page marks are simply ignored by the |
editor. They are considered again as soon as a schema with pages is used. |
editor. They are considered again as soon as a schema with pages is used. |
Thus, the user is free to choose between schemas with and without pages.</P> |
Thus, the user is free to choose between schemas with and without pages.</p> |
<P> |
<p> |
Thot treats the page break, rather than the page itself, as a box. This page |
Thot treats the page break, rather than the page itself, as a box. This page |
break box contains all the elements of one page's footer, a rule marking the |
break box contains all the elements of one page's footer, a rule marking the |
edge of this page, and all the elements of the next page's header. The |
edge of this page, and all the elements of the next page's header. The |
elements of the header and footer can be running titles, page number, |
elements of the header and footer can be running titles, page number, |
associated elements (notes, for example), etc. All these elements, as well as |
associated elements (notes, for example), etc. All these elements, as well as |
their content and graphical appearance, are defined by the generic |
their content and graphical appearance, are defined by the generic |
presentation.</P> |
presentation.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc415>Numbering</A></H3> |
|
|
|
<P> |
<h3><a name="sectc415">Numbering</a></h3> |
|
<p> |
Many elements are numbered in documents: pages, chapters, sections, formulas, |
Many elements are numbered in documents: pages, chapters, sections, formulas, |
theorems, notes, figures, bibliographic references, exercises, examples, |
theorems, notes, figures, bibliographic references, exercises, examples, |
lemmas, etc. Because Thot has a notion of logical structure, all of these |
lemmas, etc. Because Thot has a notion of logical structure, all of these |
Line 2674 make the structure of the document more
|
Line 2827 make the structure of the document more
|
document's presentation and are calculated by the editor from the logical |
document's presentation and are calculated by the editor from the logical |
structure. The structure does not contain numbers as such; it only defines |
structure. The structure does not contain numbers as such; it only defines |
relative structural positions between elements, which serve as ordering |
relative structural positions between elements, which serve as ordering |
relations on these elements.</P> |
relations on these elements.</p> |
<P> |
<p> |
If the structure schema defines the body of a document as a sequence of at |
If the structure schema defines the body of a document as a sequence of at |
least two chapters:</P> |
least two chapters:</p> |
<PRE> |
<pre>Body = LIST [2..*] OF Chapter;</pre> |
Body = LIST [2..*] OF Chapter; |
<p> |
</PRE> |
the sequence defined by the list constructor is ordered and each chapter can |
<P> |
be assigned a number based on its rank in the Body list. Therefore, all |
the sequence defined by the list constructor is ordered and each chapter can be |
elements contained in lists a the structure of a document can be numbered, but |
assigned a number based on its rank in the Body list. Therefore, all elements |
they are not the only ones. The tree structure induced by the aggregate, |
contained in lists a the structure of a document can be numbered, but they are |
list, and choice constructors (excluding references) defines a total order on |
not the only ones. The tree structure induced by the aggregate, list, and |
the elements of the document's primary structure. So, it is possible to |
choice constructors (excluding references) defines a total order on the |
define a numbering which uses this order, filtering elements according to |
elements of the document's primary structure. So, it is possible to define |
their type so that only certain element types are taken into account in the |
a numbering which uses this order, filtering elements according to their type |
numbering. In this way, it possible to number all the theorems and lemmas of |
so that only certain element types are taken into account in the numbering. In |
a chapter in the same sequence of numbers, even when they are not part of the |
this way, it possible to number all the theorems and lemmas of a chapter in the |
same list constructor and appear at different levels of the document's tree. |
same sequence of numbers, even when they are not part of the same list |
By changing the filter, they can be numbered separately: one sequence of |
constructor and appear at different levels of the document's tree. By changing |
numbers for theorems, another for the lemmas.</p> |
the filter, they can be numbered separately: one sequence of numbers for |
<p> |
theorems, another for the lemmas.</P> |
|
<P> |
|
Associated elements pose a special problem, since they are not part of the |
Associated elements pose a special problem, since they are not part of the |
document's primary structure, but are attached only by references, which |
document's primary structure, but are attached only by references, which |
violate the total order of the document. Then, these associated elements are |
violate the total order of the document. Then, these associated elements are |
Line 2703 frequently numbered, precisely because t
|
Line 2854 frequently numbered, precisely because t
|
visualize the reference. In order to resolve this problem, Thot implicitly |
visualize the reference. In order to resolve this problem, Thot implicitly |
defines a list constructor for each type of associated element, gathering |
defines a list constructor for each type of associated element, gathering |
together (and ordering) these elements. Thus, the associated elements can be |
together (and ordering) these elements. Thus, the associated elements can be |
numbered by type.</P> |
numbered by type.</p> |
<P> |
<p> |
Since they are calculated from the document's logical structure and only for |
Since they are calculated from the document's logical structure and only for |
the needs of the presentation, numbers are presentation elements, described by |
the needs of the presentation, numbers are presentation elements, described by |
presentation boxes, just like the fraction bar or the word ``Summary''. |
presentation boxes, just like the fraction bar or the word ``Summary''. |
Nevertheless, numbers differ from these other boxes because their content |
Nevertheless, numbers differ from these other boxes because their content |
varies from instance to instance, even though they are of the same type, |
varies from instance to instance, even though they are of the same type, |
whereas all fraction bars are horizontal lines and the same word ``Summary'' |
whereas all fraction bars are horizontal lines and the same word ``Summary'' |
appears at the head of every document's summary.</P> |
appears at the head of every document's summary.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc416>Presentation parameters</A></H3> |
|
|
|
<P> |
<h3><a name="sectc416">Presentation parameters</a></h3> |
|
<p> |
The principal parameters which determine document presentation are the |
The principal parameters which determine document presentation are the |
<EM>positions</EM> and <EM>dimensions</EM> of boxes, the <EM>font</EM>, the |
<em>positions</em> and <em>dimensions</em> of boxes, the <em>font</em>, the |
<EM>style</EM>, the <EM>size</EM>, the <EM>underlining</EM> and the |
<em>style</em>, the <em>size</em>, the <em>underlining</em> and the |
<EM>color</EM> of their content. From these parameters, and some others of |
<em>color</em> of their content. From these parameters, and some others of |
less importance, it is possible to represent the usual typographic parameters |
less importance, it is possible to represent the usual typographic parameters |
for the textual parts of the document. These same parameters can be used to |
for the textual parts of the document. These same parameters can be used to |
describe the geometry of the non-textual elements, even though they are |
describe the geometry of the non-textual elements, even though they are |
two-dimensional elements unlike the text, which is linear.</P> |
two-dimensional elements unlike the text, which is linear.</p> |
<P> |
<p> |
As we have already seen, the positions of the boxes always respect the rule |
As we have already seen, the positions of the boxes always respect the rule |
of enclosure: a box in the tree encloses all the boxes of the next lower level |
of enclosure: a box in the tree encloses all the boxes of the next lower level |
which are attached to it. The positional parameters permit the specification |
which are attached to it. The positional parameters permit the specification |
of the position of each box in relation to the enclosing box or to its sibling |
of the position of each box in relation to the enclosing box or to its sibling |
boxes (boxes directly attached to the same enclosing box in the tree of |
boxes (boxes directly attached to the same enclosing box in the tree of |
boxes).</P> |
boxes).</p> |
<P> |
<p> |
The presentation parameters also provide control over the dimensions of the |
The presentation parameters also provide control over the dimensions of the |
boxes. The dimensions of a box can depend either on its content or on its |
boxes. The dimensions of a box can depend either on its content or on its |
context (its sibling boxes and the enclosing box). Each dimension (height or |
context (its sibling boxes and the enclosing box). Each dimension (height or |
width) can be defined independently of the other.</P> |
width) can be defined independently of the other.</p> |
<P> |
<p> |
Because of the position and dimension parameters, it is possible to do the |
Because of the position and dimension parameters, it is possible to do the |
same things that are normally done in typography by changing margins, line |
same things that are normally done in typography by changing margins, line |
lengths, and vertical or horizontal skips. This approach can also align or |
lengths, and vertical or horizontal skips. This approach can also align or |
center elements and groups of elements.</P> |
center elements and groups of elements.</p> |
<P> |
<p> |
In contrast to the position and dimension parameters, the font, style, size, |
In contrast to the position and dimension parameters, the font, style, size, |
underlining, and color do not concern the box itself (the rectangle delimiting |
underlining, and color do not concern the box itself (the rectangle delimiting |
the element), but its content. These parameters indicate the typographic |
the element), but its content. These parameters indicate the typographic |
attributes which must be applied to the text contained in the box, and by |
attributes which must be applied to the text contained in the box, and by |
extension, to all base elements.</P> |
extension, to all base elements.</p> |
<P> |
<p> |
For text, the font parameter is used to change the family of characters |
For text, the font parameter is used to change the family of characters |
(Times, Helvetica, Courier, etc.); the style is used to obtain italic or |
(Times, Helvetica, Courier, etc.); the style is used to obtain italic or |
roman, bold or light characters; the size determines the point size of the |
roman, bold or light characters; the size determines the point size of the |
characters; underlining defines the type and thickness of the lines drawn |
characters; underlining defines the type and thickness of the lines drawn |
above, below, or through the characters.</P> |
above, below, or through the characters.</p> |
<P> |
<p> |
For graphics, the line style parameter can be either solid, dotted, or dashed; |
For graphics, the line style parameter can be either solid, dotted, or dashed; |
the line thickness parameter controls the width of the lines; the fill pattern |
the line thickness parameter controls the width of the lines; the fill pattern |
parameter determines how closed geometric figures must be filled.</P> |
parameter determines how closed geometric figures must be filled.</p> |
<P> |
<p> |
While some of the parameters which determine the appearance of a box's |
While some of the parameters which determine the appearance of a box's |
contents make sense only for one content type (text or graphic), other |
contents make sense only for one content type (text or graphic), other |
parameters apply to all content types: these are the color parameters. These |
parameters apply to all content types: these are the color parameters. These |
indicate the color of lines and the background color.</P> |
indicate the color of lines and the background color.</p> |
</DIV> |
</div> |
</DIV> |
</div> |
|
|
<DIV class="section"> |
<div class="section"> |
<H2><A name=sectb42>Presentation description language</A></H2> |
|
|
|
<P> |
<h2><a name="sectb42">Presentation description language</a></h2> |
|
<p> |
A generic presentation defines the values of presentation parameters (or the |
A generic presentation defines the values of presentation parameters (or the |
way to calculate those values) for a generic structure, or more precisely, for |
way to calculate those values) for a generic structure, or more precisely, for |
all the element types and all the global and local attributes defined in that |
all the element types and all the global and local attributes defined in that |
generic structure. This definition of the presentation parameters is made |
generic structure. This definition of the presentation parameters is made |
with the P language. A program written in this language, that is a generic |
with the P language. A program written in this language, that is a generic |
presentation expressed in P, is call a <EM>presentation schema</EM>. This |
presentation expressed in P, is call a <em>presentation schema</em>. This |
section describes the syntax and semantics of the language, using the same <A |
section describes the syntax and semantics of the language, using the same <a |
href="#sectc321">meta-language</A> as was used for the definition of the S |
href="#sectc321">meta-language</a> as was used for the definition of the S |
language.</P> |
language.</p> |
<P> |
<p> |
Recall that it is possible to write many different presentation schemas for |
Recall that it is possible to write many different presentation schemas for |
the same class of documents or objects. This allows users to choose for a |
the same class of documents or objects. This allows users to choose for a |
document the graphical appearance which best suits their type of work or |
document the graphical appearance which best suits their type of work or |
their personal taste.</P> |
their personal taste.</p> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc421>The organization of a presentation schema</A></H3> |
|
|
|
<P> |
<h3><a name="sectc421">The organization of a presentation schema</a></h3> |
A presentation schema begins with the word <TT>PRESENTATION</TT> and ends with |
<p> |
the word <TT>END</TT>. The word <TT>PRESENTATION</TT> is followed by the name |
A presentation schema begins with the word <tt>PRESENTATION</tt> and ends with |
|
the word <tt>END</tt>. The word <tt>PRESENTATION</tt> is followed by the name |
of the generic structure to which the presentation will be applied. This name |
of the generic structure to which the presentation will be applied. This name |
must be the same as that which follows the keyword <TT>STRUCTURE</TT> in the |
must be the same as that which follows the keyword <tt>STRUCTURE</tt> in the |
structure schema associated with the presentation schema.</P> |
structure schema associated with the presentation schema.</p> |
<P> |
<p> |
After this declaration of the name of the structure, the following sections |
After this declaration of the name of the structure, the following sections |
appear (in order):</P> |
appear (in order):</p> |
<UL> |
<ul> |
<LI>Declarations of |
<li> |
<UL> |
Declarations of |
<LI>all views, |
<ul> |
<LI>printed views, |
<li> |
<LI>counters, |
all views, |
<LI>presentation constants, |
<li> |
<LI>variables, |
printed views, |
</UL> |
<li> |
<LI>default presentation rules, |
counters, |
<LI>presentation box and page layout box definitions, |
<li> |
<LI>presentation rules for structured elements, |
presentation constants, |
<LI>presentation rules for attributes, |
<li> |
<LI>rules for transmitting values to attributes of included documents. |
variables, |
</UL> |
</ul> |
<P> |
<li> |
|
default presentation rules, |
|
<li> |
|
presentation box and page layout box definitions, |
|
<li> |
|
presentation rules for structured elements, |
|
<li> |
|
presentation rules for attributes, |
|
<li> |
|
rules for transmitting values to attributes of included documents. |
|
</ul> |
|
<p> |
Each of these sections is introduced by a keyword which is followed by a |
Each of these sections is introduced by a keyword which is followed by a |
sequence of declarations. Every section is optional.</P> |
sequence of declarations. Every section is optional.</p> |
<PRE> |
<pre> SchemaPres ='PRESENTATION' ElemID ';' |
SchemaPres ='PRESENTATION' ElemID ';' |
|
[ 'VIEWS' ViewSeq ] |
[ 'VIEWS' ViewSeq ] |
[ 'PRINT' PrintViewSeq ] |
[ 'PRINT' PrintViewSeq ] |
[ 'COUNTERS' CounterSeq ] |
[ 'COUNTERS' CounterSeq ] |
Line 2829 sequence of declarations. Every section
|
Line 2990 sequence of declarations. Every section
|
[ 'ATTRIBUTES' PresAttrSeq ] |
[ 'ATTRIBUTES' PresAttrSeq ] |
[ 'TRANSMIT' TransmitSeq ] |
[ 'TRANSMIT' TransmitSeq ] |
'END' . |
'END' . |
ElemID = NAME . |
ElemID = NAME .</pre> |
</PRE> |
</div> |
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc422>Views</A></H3> |
|
|
|
<P> |
<h3><a name="sectc422">Views</a></h3> |
|
<p> |
Each of the possible views must be declared in the presentation schema. As |
Each of the possible views must be declared in the presentation schema. As |
has <A href="#views">already been described</A>, the presentation rules for an |
has <a href="#views">already been described</a>, the presentation rules for an |
element type can vary according to the view in which the element appears. The |
element type can vary according to the view in which the element appears. The |
name of the view is used to designate the view to which the presentation rules |
name of the view is used to designate the view to which the presentation rules |
apply (see the <A href="#inkeyword"><TT>IN</TT> instruction</A>). The |
apply (see the <a href="#inkeyword"><tt>IN</tt> instruction</a>). The |
definition of the view's contents are dispersed throughout the presentation |
definition of the view's contents are dispersed throughout the presentation |
rules attached to the different element types and attributes. The |
rules attached to the different element types and attributes. The |
<TT>VIEWS</TT> section is simply a sequence of view names separated by commas |
<tt>VIEWS</tt> section is simply a sequence of view names separated by commas |
and terminated by a semi-colon.</P> |
and terminated by a semi-colon.</p> |
<P> |
<p> |
One of the view names (and only one) can be followed by the keyword |
One of the view names (and only one) can be followed by the keyword |
<TT>EXPORT</TT>. This keyword identifies the view which presents the members |
<tt>EXPORT</tt>. This keyword identifies the view which presents the members |
of the document class in <A href="#sectc3213">skeleton form</A>. The graphical |
of the document class in <a href="#sectc3213">skeleton form</a>. The |
appearance and the content of this view is defined just as with other views, |
graphical appearance and the content of this view is defined just as with |
but it is useless to specify presentation rules concerning this view for the |
other views, but it is useless to specify presentation rules concerning this |
elements which are not loaded in the skeleton form.</P> |
view for the elements which are not loaded in the skeleton form.</p> |
<P> |
<p> |
It is not necessary to declare any views; in this case there is a single |
It is not necessary to declare any views; in this case there is a single |
unnamed view. If many views are declared, the first view listed is considered |
unnamed view. If many views are declared, the first view listed is considered |
the principal view. The principal view is the one to which all rules that are |
the principal view. The principal view is the one to which all rules that are |
not preceded by an indication of a view will apply (see the <A |
not preceded by an indication of a view will apply (see the <a |
href="#inkeyword">instruction <TT>IN</TT></A>).</P> |
href="#inkeyword">instruction <tt>IN</tt></a>).</p> |
<P> |
<p> |
The principal view is the the one which the editor presents on the screen when |
The principal view is the the one which the editor presents on the screen when |
the user asks to create or edit a document. Thus, it makes sense to put the |
the user asks to create or edit a document. Thus, it makes sense to put the |
most frequently used view at the head of the list. But if the structure |
most frequently used view at the head of the list. But if the structure |
schema contains <A href="#sectc3213">skeleton elements</A> and is loaded in its |
schema contains <a href="#sectc3213">skeleton elements</a> and is loaded in |
skeleton form, the view whose name is followed by the keyword <TT>EXPORT</TT> |
its skeleton form, the view whose name is followed by the keyword |
will be opened and no other views can be opened.</P> |
<tt>EXPORT</tt> will be opened and no other views can be opened.</p> |
<PRE> |
<pre> 'VIEWS' ViewSeq |
'VIEWS' ViewSeq |
|
ViewSeq = ViewDeclaration |
ViewSeq = ViewDeclaration |
< ',' ViewDeclaration > ';' . |
< ',' ViewDeclaration > ';' . |
ViewDeclaration = ViewID [ 'EXPORT' ] . |
ViewDeclaration = ViewID [ 'EXPORT' ] . |
ViewID = NAME . |
ViewID = NAME .</pre> |
</PRE> |
<blockquote class="example"> |
<BLOCKQUOTE class="example"> |
<p> |
<P> |
<strong>Example:</strong></p> |
<STRONG>Example:</STRONG></P> |
<p> |
<P> |
|
When editing a report, it might be useful have views of the table of contents |
When editing a report, it might be useful have views of the table of contents |
and of the mathematical formulas, in addition to the principal view which shows |
and of the mathematical formulas, in addition to the principal view which |
the document in its entirety. To achieve this, a presentation schema for the |
shows the document in its entirety. To achieve this, a presentation schema |
Report class would have the following <TT>VIEWS</TT> section:</P> |
for the Report class would have the following <tt>VIEWS</tt> section:</p> |
<PRE> |
<pre>VIEWS |
VIEWS |
Full_text, Table_of_contents, Formulas;</pre> |
Full_text, Table_of_contents, Formulas; |
<p> |
</PRE> |
|
<P> |
|
The contents of these views are specified in the presentation rules of the |
The contents of these views are specified in the presentation rules of the |
schema.</P> |
schema.</p> |
</BLOCKQUOTE> |
</blockquote> |
</DIV> |
</div> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc423>Print Views</A></H3> |
|
|
|
<P> |
<h3><a name="sectc423">Print Views</a></h3> |
|
<p> |
When editing a document, each view is presented in a different window. In |
When editing a document, each view is presented in a different window. In |
addition to the views specified by the <TT>VIEWS</TT> instruction, the user |
addition to the views specified by the <tt>VIEWS</tt> instruction, the user |
can display the associated elements with one window for each type of |
can display the associated elements with one window for each type of |
associated element.</P> |
associated element.</p> |
<P> |
<p> |
When printing a document, it is possible to print any number of views, chosen |
When printing a document, it is possible to print any number of views, chosen |
from among all the views which the editor can display (views in the strict |
from among all the views which the editor can display (views in the strict |
sense or associated elements). Print views, as well as the order in which |
sense or associated elements). Print views, as well as the order in which |
they must be printed, are indicated by the <TT>PRINT</TT> instruction. It |
they must be printed, are indicated by the <tt>PRINT</tt> instruction. It |
appears after the <TT>VIEWS</TT> instruction and is formed of the keyword |
appears after the <tt>VIEWS</tt> instruction and is formed of the keyword |
<TT>PRINT</TT> followed by the ordered list of print view names. The print |
<tt>PRINT</tt> followed by the ordered list of print view names. The print |
view names are separated by commas and followed by a semi-colon. A print view |
view names are separated by commas and followed by a semi-colon. A print view |
name is either a view name declared in the <TT>VIEWS</TT> instruction or the |
name is either a view name declared in the <tt>VIEWS</tt> instruction or the |
name of an associated element type (with an ``s'' added to the end). The |
name of an associated element type (with an ``s'' added to the end). The |
associated element must have been declared in the <TT>ASSOC</TT> section of |
associated element must have been declared in the <tt>ASSOC</tt> section of |
the structure schema.</P> |
the structure schema.</p> |
<PRE> |
<pre> 'PRINT' PrintViewSeq |
'PRINT' PrintViewSeq |
|
PrintViewSeq = PrintView < ',' PrintView > ';' . |
PrintViewSeq = PrintView < ',' PrintView > ';' . |
PrintView = ViewID / ElemID . |
PrintView = ViewID / ElemID .</pre> |
</PRE> |
<p> |
<P> |
If the <tt>PRINT</tt> instruction is absent, the printing program will print |
If the <TT>PRINT</TT> instruction is absent, the printing program will print |
only the principal view (the first view specified by the <tt>VIEWS</tt> |
only the principal view (the first view specified by the <TT>VIEWS</TT> |
instruction or the single, unnamed view when there is no <tt>VIEWS</tt> |
instruction or the single, unnamed view when there is no <TT>VIEWS</TT> |
instruction).</p> |
instruction).</P> |
<blockquote class="example"> |
<BLOCKQUOTE class="example"> |
<p> |
<P> |
<strong>Example:</strong></p> |
<STRONG>Example:</STRONG></P> |
<p> |
<P> |
|
Consider a Report presentation using the view declarations from the preceding |
Consider a Report presentation using the view declarations from the preceding |
example. Suppose we want to print the full text and table of contents views, |
example. Suppose we want to print the full text and table of contents views, |
but not the Formulas view, which is only useful when editing. In addition, |
but not the Formulas view, which is only useful when editing. In addition, |
suppose that we also want to print the bibliographic citations, which are |
suppose that we also want to print the bibliographic citations, which are |
associated elements (of type <TT>Citation</TT>). A sensible printing order |
associated elements (of type <tt>Citation</tt>). A sensible printing order |
would be to print the full text then the bibliography and finally the table of |
would be to print the full text then the bibliography and finally the table of |
contents. To obtain this result when printing, the presentation schema would |
contents. To obtain this result when printing, the presentation schema would |
say:</P> |
say:</p> |
<PRE> |
<pre>PRINT |
PRINT |
Full_text, Citations, Table_of_contents;</pre> |
Full_text, Citations, Table_of_contents; |
</blockquote> |
</PRE> |
</div> |
</BLOCKQUOTE> |
|
</DIV> |
<div class="subsection"> |
|
|
<DIV class="subsection"> |
<h3><a name="sectc424">Counters</a></h3> |
<H3><A name=sectc424>Counters</A></H3> |
<p> |
|
A presentation has a <em>counter</em> for each type of number in the |
<P> |
|
A presentation has a <EM>counter</EM> for each type of number in the |
|
presentation. All counters, and therefore all types of numbers, used in the |
presentation. All counters, and therefore all types of numbers, used in the |
schema must be declared after the <TT>COUNTERS</TT> keyword.</P> |
schema must be declared after the <tt>COUNTERS</tt> keyword.</p> |
<P> |
<p> |
Each counter declaration is composed of a name identifying the counter |
Each counter declaration is composed of a name identifying the counter |
followed by a colon and the counting function to be applied to the counter. |
followed by a colon and the counting function to be applied to the counter. |
The counter declaration ends with a semi-colon.</P> |
The counter declaration ends with a semi-colon.</p> |
<P> |
<p> |
The counting function indicates how the counter values will be calculated. |
The counting function indicates how the counter values will be calculated. |
Three types of counting functions are available. The first type is used to |
Three types of counting functions are available. The first type is used to |
count the elements of a list or aggregate: it assigns to the counter the rank |
count the elements of a list or aggregate: it assigns to the counter the rank |
of the element in the list or aggregate. More precisely, the function</P> |
of the element in the list or aggregate. More precisely, the function</p> |
<PRE> |
<pre>RANK OF ElemID [ LevelAsc ] [ INIT AttrID ] |
RANK OF ElemID [ LevelAsc ] [ INIT AttrID ] |
[ 'REINIT' AttrID ]</pre> |
[ 'REINIT' AttrID ] |
<p> |
</PRE> |
indicates that when an element creates, by a creation rule (see the <a |
<P> |
href="#sectc4232"><tt>Create</tt> instructions</a>), a presentation box |
indicates that when an element creates, by a creation rule (see the <A |
|
href="#sectc4232"><TT>Create</TT> instructions</A>), a presentation box |
|
containing the counter value, this value is the rank of the creating element, |
containing the counter value, this value is the rank of the creating element, |
if it is of type <TT>ElemID</TT>, otherwise the rank of the first element of |
if it is of type <tt>ElemID</tt>, otherwise the rank of the first element of |
type <TT>ElemID</TT> which encloses the creating element in the logical |
type <tt>ElemID</tt> which encloses the creating element in the logical |
structure of the document.</P> |
structure of the document.</p> |
<P> |
<p> |
The type name can be preceded by a star in the special case where the |
The type name can be preceded by a star in the special case where the |
structure schema defines an element of whose <TT>ElemID</TT> is the same as |
structure schema defines an element of whose <tt>ElemID</tt> is the same as |
that of an <A href="#sectd3284">inclusion</A> without expansion or with |
that of an <a href="#sectd3284">inclusion</a> without expansion or with |
partial expansion. To resolve this ambiguity, the <TT>ElemID</TT> alone |
partial expansion. To resolve this ambiguity, the <tt>ElemID</tt> alone |
refers to the type defined in the structure schema while the <TT>ElemID</TT> |
refers to the type defined in the structure schema while the <tt>ElemID</tt> |
preceded by a star refers to the included type.</P> |
preceded by a star refers to the included type.</p> |
<P> |
<p> |
The type name <TT>ElemID</TT> can be followed by an integer. That number |
The type name <tt>ElemID</tt> can be followed by an integer. That number |
represents the relative level, among the ancestors of the creating element, of |
represents the relative level, among the ancestors of the creating element, of |
the element whose rank is asked. If that relative level <I>n</I> is unsigned, |
the element whose rank is asked. If that relative level <i>n</i> is unsigned, |
the <I>n</I><SUP>th</SUP> element of type <TT>ElemID</TT> encountered when |
the <i>n</i><sup>th</sup> element of type <tt>ElemID</tt> encountered when |
travelling the logical structure from the root to the creating element is |
travelling the logical structure from the root to the creating element is |
taken into account. If the relative level is negative, the logical structure |
taken into account. If the relative level is negative, the logical structure |
is travelled in the other direction, from the creating element to the |
is travelled in the other direction, from the creating element to the |
root.</P> |
root.</p> |
<P> |
<p> |
The function can end with the keyword <TT>INIT</TT> followed by the name of a |
The function can end with the keyword <tt>INIT</tt> followed by the name of a |
numeric attribute (and only a numeric attribute). Then, the rank of the first |
numeric attribute (and only a numeric attribute). Then, the rank of the first |
element of the list or aggregate is considered to be the value of this |
element of the list or aggregate is considered to be the value of this |
attribute, rather than the default value of 1, and the rank of the other |
attribute, rather than the default value of 1, and the rank of the other |
elements is shifted accordingly. The attribute which determines the initial |
elements is shifted accordingly. The attribute which determines the initial |
value is searched on the element itself and on its ancestors.</P> |
value is searched on the element itself and on its ancestors.</p> |
<P> |
<p> |
The function can end with the keyword <TT>REINIT</TT> followed by the name of |
The function can end with the keyword <tt>REINIT</tt> followed by the name of |
a numeric attribute (and only a numeric attribute). Then, if an element to be |
a numeric attribute (and only a numeric attribute). Then, if an element to be |
counted has this attribute, the counter value for this element is the |
counted has this attribute, the counter value for this element is the |
attribute value and the following elements are numbered starting from this |
attribute value and the following elements are numbered starting from this |
value.</P> |
value.</p> |
<P> |
<p> |
When the <TT>RANK</TT> function is written</P> |
When the <tt>RANK</tt> function is written</p> |
<PRE> |
<pre>RANK OF Page [ ViewID ] [ INIT AttrID ]</pre> |
RANK OF Page [ ViewID ] [ INIT AttrID ] |
<p> |
</PRE> |
(<tt>Page</tt>is a keyword of the P language), the counter takes as its value |
<P> |
|
(<TT>Page</TT>is a keyword of the P language), the counter takes as its value |
|
the number of the page on which the element which creates the presentation box |
the number of the page on which the element which creates the presentation box |
containing the number appears. This is done as if the pages of the document |
containing the number appears. This is done as if the pages of the document |
form a list for each view. The counter only takes into account the pages of |
form a list for each view. The counter only takes into account the pages of |
the relevant view, that is the view displaying the presentation box whose |
the relevant view, that is the view displaying the presentation box whose |
contents take the value of the number. However, if the keyword <TT>Page</TT> |
contents take the value of the number. However, if the keyword <tt>Page</tt> |
is followed by the name of a view (between parentheses), it is the pages of |
is followed by the name of a view (between parentheses), it is the pages of |
that view that are taken into account. As in the preceding form, the |
that view that are taken into account. As in the preceding form, the |
<TT>RANK</TT> function applied to pages can end with the <TT>INIT</TT> keyword |
<tt>RANK</tt> function applied to pages can end with the <tt>INIT</tt> keyword |
followed by the name of a numeric attribute which sets the value of the first |
followed by the name of a numeric attribute which sets the value of the first |
page's number. This attribute must be a local attribute of the document |
page's number. This attribute must be a local attribute of the document |
itself, and not of one of its components.</P> |
itself, and not of one of its components.</p> |
<P> |
<p> |
The second counting function is used to count the occurrences of a certain |
The second counting function is used to count the occurrences of a certain |
element type in a specified context. The instruction</P> |
element type in a specified context. The instruction</p> |
<PRE> |
<pre>SET n ON Type1 ADD m ON Type2 [ INIT AttrID ]</pre> |
SET n ON Type1 ADD m ON Type2 [ INIT AttrID ] |
<p> |
</PRE> |
|
<P> |
|
says that when the document is traversed from beginning to end (in the order |
says that when the document is traversed from beginning to end (in the order |
induced by the logical structure), the counter is assigned the value <TT>n</TT> |
induced by the logical structure), the counter is assigned the value |
each time an element of type <TT>Type1</TT> is encountered, no matter |
<tt>n</tt> each time an element of type <tt>Type1</tt> is encountered, no |
what the current value of the counter, and the value <TT>m</TT> is added to the |
matter what the current value of the counter, and the value <tt>m</tt> is |
current value of the counter each time an element of type <TT>Type2</TT> is |
added to the current value of the counter each time an element of type |
encountered.</P> |
<tt>Type2</tt> is encountered.</p> |
<P> |
<p> |
As with the <TT>RANK</TT> function, the type names can be preceded by a star |
As with the <tt>RANK</tt> function, the type names can be preceded by a star |
to resolve the ambiguity of included elements.</P> |
to resolve the ambiguity of included elements.</p> |
<P> |
<p> |
If the function ends with the keyword <TT>INIT</TT> followed by the name of an |
If the function ends with the keyword <tt>INIT</tt> followed by the name of an |
attribute and if the document possesses this attribute, the value of this |
attribute and if the document possesses this attribute, the value of this |
attribute is used in place of <TT>n</TT>. The attribute must be numeric. It |
attribute is used in place of <tt>n</tt>. The attribute must be numeric. It |
is searched on the element itself and on its ancestors.</P> |
is searched on the element itself and on its ancestors.</p> |
<P> |
<p> |
This function can also be used with the <TT>Page</TT> keyword in the place of |
This function can also be used with the <tt>Page</tt> keyword in the place of |
<TT>Type1</TT> or <TT>Type2</TT>. In the first case, the counter is |
<tt>Type1</tt> or <tt>Type2</tt>. In the first case, the counter is |
reinitialized on each page with the value <TT>n</TT>, while in the second |
reinitialized on each page with the value <tt>n</tt>, while in the second |
case, it is incremented by <TT>m</TT> on each page. As with the preceding |
case, it is incremented by <tt>m</tt> on each page. As with the preceding |
counting function, the word <TT>Page</TT> can be followed by a name between |
counting function, the word <tt>Page</tt> can be followed by a name between |
parentheses. In this case, the name specifies a view whose pages are taken |
parentheses. In this case, the name specifies a view whose pages are taken |
into account.</P> |
into account.</p> |
<P> |
<p> |
The definition of a counter can contain several <TT>SET</TT> functions and |
The definition of a counter can contain several <tt>SET</tt> functions and |
several <TT>ADD</TT> functions, each with a different value. The total number |
several <tt>ADD</tt> functions, each with a different value. The total number |
of counting functions must not be greater than 6.</P> |
of counting functions must not be greater than 6.</p> |
<P> |
<p> |
The third counting function is used to count the elements of a certain type |
The third counting function is used to count the elements of a certain type |
encountered when travelling from the creating element to the root of the |
encountered when travelling from the creating element to the root of the |
logical structure. The creating element is included if it is of that type. |
logical structure. The creating element is included if it is of that type. |
That function is written</P> |
That function is written</p> |
<PRE> |
<pre>RLEVEL OF Type</pre> |
RLEVEL OF Type |
<p> |
</PRE> |
where <tt>Type</tt> represents the type of the elements to be counted.</p> |
<P> |
<p> |
where <TT>Type</TT> represents the type of the elements to be counted.</P> |
The formal definition of counter declarations is:</p> |
<P> |
<pre> 'COUNTERS' CounterSeq |
The formal definition of counter declarations is:</P> |
|
<PRE> |
|
'COUNTERS' CounterSeq |
|
CounterSeq = Counter < Counter > . |
CounterSeq = Counter < Counter > . |
Counter = CounterID ':' CounterFunc ';' . |
Counter = CounterID ':' CounterFunc ';' . |
CounterID = NAME . |
CounterID = NAME . |
Line 3076 The formal definition of counter declara
|
Line 3219 The formal definition of counter declara
|
AddFunction = 'ADD' CounterValue 'ON' TypeOrPage . |
AddFunction = 'ADD' CounterValue 'ON' TypeOrPage . |
TypeOrPage = 'Page' [ '(' ViewID ')' ] / |
TypeOrPage = 'Page' [ '(' ViewID ')' ] / |
[ '*' ] ElemID . |
[ '*' ] ElemID . |
CounterValue = NUMBER . |
CounterValue = NUMBER .</pre> |
</PRE> |
<blockquote class="example"> |
<BLOCKQUOTE class="example"> |
<p> |
<P> |
<strong>Example:</strong></p> |
<STRONG>Example:</STRONG></P> |
<p> |
<P> |
|
If the body of a chapter is defined as a sequence of sections in the structure |
If the body of a chapter is defined as a sequence of sections in the structure |
schema:</P> |
schema:</p> |
<PRE> |
<pre>Chapter_body = LIST OF (Section = |
Chapter_body = LIST OF (Section = |
|
BEGIN |
BEGIN |
Section_Title = Text; |
Section_Title = Text; |
Section_Body = Paragraphs; |
Section_Body = Paragraphs; |
END |
END |
); |
);</pre> |
</PRE> |
<p> |
<P> |
the section counter is declared:</p> |
the section counter is declared:</P> |
<pre>SectionCtr : RANK OF Section;</pre> |
<PRE> |
<p> |
SectionCtr : RANK OF Section; |
and the display of the section number before the section title is obtained by |
</PRE> |
a <a href="#sectc4232"><tt>CreateBefore</tt> rule</a> attached the |
<P> |
<tt>Section_Title</tt> type, which creates a presentation box whose content is |
and the display of the section number before the section title is obtained by a |
the value of the <tt>SectionCtr</tt> counter (see the <a |
<A href="#sectc4232"><TT>CreateBefore</TT> rule</A> attached the |
href="#sectc4231"><tt>Content</tt> instruction</a>).</p> |
<TT>Section_Title</TT> type, which creates a presentation box whose content is |
<p> |
the value of the <TT>SectionCtr</TT> counter (see the <A |
|
href="#sectc4231"><TT>Content</TT> instruction</A>).</P> |
|
<P> |
|
In order to number the formulas separately within each chapter, the formula |
In order to number the formulas separately within each chapter, the formula |
counter is declared:</P> |
counter is declared:</p> |
<PRE> |
<pre>FormulaCtr : SET 0 ON Chapter ADD 1 ON Formula;</pre> |
FormulaCtr : SET 0 ON Chapter ADD 1 ON Formula; |
<p> |
</PRE> |
|
<P> |
|
and the display of the formula number in the right margin, alongside each |
and the display of the formula number in the right margin, alongside each |
formula, is obtained by a <TT>CreateAfter</TT> instruction attached to the |
formula, is obtained by a <tt>CreateAfter</tt> instruction attached to the |
<TT>Formula</TT> type, which creates a presentation box whose content is the |
<tt>Formula</tt> type, which creates a presentation box whose content is the |
value of the <TT>FormulaCtr</TT> counter.</P> |
value of the <tt>FormulaCtr</tt> counter.</p> |
<P> |
<p> |
To number the page chapter by chapter, with the first page of each chapter |
To number the page chapter by chapter, with the first page of each chapter |
having the number 1, the counter definition would be</P> |
having the number 1, the counter definition would be</p> |
<PRE> |
<pre>ChapterPageCtr : SET 0 ON Chapter ADD 1 ON Page;</pre> |
ChapterPageCtr : SET 0 ON Chapter ADD 1 ON Page; |
<p> |
</PRE> |
If there is also a chapter counter</p> |
<P> |
<pre>ChapterCtr : RANK OF Chapter;</pre> |
If there is also a chapter counter</P> |
<p> |
<PRE> |
the <a href="#sectc4231">content</a> of a presentation box created at the top |
ChapterCtr : RANK OF Chapter; |
of each page could be defined as:</p> |
</PRE> |
<pre>Content : (VALUE(ChapterCtr, URoman) TEXT '-' |
<P> |
VALUE(ChapterPageCtr, Arabic));</pre> |
the <A href="#sectc4231">content</A> of a presentation box created at the top of |
<p> |
each page could be defined as:</P> |
|
<PRE> |
|
Content : (VALUE(ChapterCtr, URoman) TEXT '-' |
|
VALUE(ChapterPageCtr, Arabic)); |
|
</PRE> |
|
<P> |
|
Thus, the presentation box contains the number of the chapter in upper-case |
Thus, the presentation box contains the number of the chapter in upper-case |
roman numerals followed by a hyphen and the number of the page within |
roman numerals followed by a hyphen and the number of the page within the |
the chapter in arabic numerals.</P> |
chapter in arabic numerals.</p> |
</BLOCKQUOTE> |
</blockquote> |
<BLOCKQUOTE class="example"> |
<blockquote class="example"> |
<P> |
<p> |
<STRONG>Example:</STRONG></P> |
<strong>Example:</strong></p> |
<P> |
<p> |
To count tables and figures together in a document of the chapter type, a |
To count tables and figures together in a document of the chapter type, a |
counter could be defined using:</P> |
counter could be defined using:</p> |
<PRE> |
<pre>CommonCtr : SET 0 ON Chapter ADD 1 ON Table |
CommonCtr : SET 0 ON Chapter ADD 1 ON Table |
ADD 1 ON Figure;</pre> |
ADD 1 ON Figure; |
</blockquote> |
</PRE> |
</div> |
</BLOCKQUOTE> |
|
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc425>Presentation constants</A></H3> |
|
|
|
<P> |
<h3><a name="sectc425">Presentation constants</a></h3> |
|
<p> |
Presentation constants are used in the definition of the content of |
Presentation constants are used in the definition of the content of |
presentation boxes. This content is used in <A href="#sectc426">variable |
presentation boxes. This content is used in <a href="#sectc426">variable |
definitions</A> and in the <A href="#sectc4231"><TT>Content</TT> rule</A>. The |
definitions</a> and in the <a href="#sectc4231"><tt>Content</tt> rule</a>. The |
only presentation constants which can be used are character strings, |
only presentation constants which can be used are character strings, |
mathematical symbols, graphical elements, and pictures, that is to say, base |
mathematical symbols, graphical elements, and pictures, that is to say, base |
elements.</P> |
elements.</p> |
<P> |
<p> |
Constants can be defined directly in the variables or presentation boxes |
Constants can be defined directly in the variables or presentation boxes |
(<TT>Content</TT> rule) which use them. But it is only necessary them to |
(<tt>Content</tt> rule) which use them. But it is only necessary them to |
declare once, in the constant declaration section, even though they are used |
declare once, in the constant declaration section, even though they are used |
in many variables or boxes. Thus, each declared constant has a name, which |
in many variables or boxes. Thus, each declared constant has a name, which |
allows it to be designated whenever it is used, a type (one of the four base |
allows it to be designated whenever it is used, a type (one of the four base |
types) and a value (a character string or a single character for mathematical |
types) and a value (a character string or a single character for mathematical |
symbols and graphical elements).</P> |
symbols and graphical elements).</p> |
<P> |
<p> |
The constant declarations appear after the keyword <TT>CONST</TT>. Each |
The constant declarations appear after the keyword <tt>CONST</tt>. Each |
declaration is composed of the name of the constant, an equals sign, a keyword |
declaration is composed of the name of the constant, an equals sign, a keyword |
representing its type (<TT>Text</TT>, <TT>Symbol</TT>, <TT>Graphics</TT> or |
representing its type (<tt>Text</tt>, <tt>Symbol</tt>, <tt>Graphics</tt> or |
<TT>Picture</TT>) and the string representing its value. A semi-colon |
<tt>Picture</tt>) and the string representing its value. A semi-colon |
terminates each declaration.</P> |
terminates each declaration.</p> |
<P> |
<p> |
In the case of a character string, the keyword <TT>Text</TT> can be followed |
In the case of a character string, the keyword <tt>Text</tt> can be followed |
by the name of an alphabet (for example, <TT>Greek</TT> or <TT>Latin</TT>) in |
by the name of an alphabet (for example, <tt>Greek</tt> or <tt>Latin</tt>) in |
which the constant's text should be expressed. If the alphabet name is |
which the constant's text should be expressed. If the alphabet name is |
absent, the Latin alphabet is used. When the alphabet name is present, only |
absent, the Latin alphabet is used. When the alphabet name is present, only |
the first letter of the alphabet name is interpreted. Thus, the words |
the first letter of the alphabet name is interpreted. Thus, the words |
<TT>Greek</TT> and <TT>Grec</TT> designate the same alphabet. In current |
<tt>Greek</tt> and <tt>Grec</tt> designate the same alphabet. In current |
versions of Thot, only the Greek and Latin alphabets are available.</P> |
versions of Thot, only the Greek and Latin alphabets are available.</p> |
<PRE> |
<pre> 'CONST' ConstSeq |
'CONST' ConstSeq |
|
ConstSeq = Const < Const > . |
ConstSeq = Const < Const > . |
Const = ConstID '=' ConstType ConstValue ';' . |
Const = ConstID '=' ConstType ConstValue ';' . |
ConstID = NAME . |
ConstID = NAME . |
ConstType ='Text' [ Alphabet ] / 'Symbol' / |
ConstType ='Text' [ Alphabet ] / 'Symbol' / |
'Graphics' / 'Picture' . |
'Graphics' / 'Picture' . |
ConstValue = STRING . |
ConstValue = STRING . |
Alphabet = NAME . |
Alphabet = NAME .</pre> |
</PRE> |
<p> |
<P> |
|
For character strings in the Latin alphabet (ISO Latin-1 character set), |
For character strings in the Latin alphabet (ISO Latin-1 character set), |
characters having codes higher than 127 (decimal) are represented by their |
characters having codes higher than 127 (decimal) are represented by their |
code in octal.</P> |
code in octal.</p> |
<P> |
<p> |
In the case of a symbol or graphical element, the value only contains a single |
In the case of a symbol or graphical element, the value only contains a single |
character, between apostrophes, which indicates the form of the element which |
character, between apostrophes, which indicates the form of the element which |
must be drawn in the box whose content is the constant. The symbol or |
must be drawn in the box whose content is the constant. The symbol or |
graphical element takes the dimensions of the box, which are determined by the |
graphical element takes the dimensions of the box, which are determined by the |
<TT>Height</TT> and <TT>Width</TT> rules. See <A href="#sectb72">table of |
<tt>Height</tt> and <tt>Width</tt> rules. See <a href="#sectb72">table of |
codes</A> for the symbols and graphical elements.</P> |
codes</a> for the symbols and graphical elements.</p> |
<BLOCKQUOTE class="example"> |
<blockquote class="example"> |
<P> |
<p> |
<STRONG>Example:</STRONG></P> |
<strong>Example:</strong></p> |
<P> |
<p> |
The constants ``Summary:'' and fraction bar, which were described earlier, are |
The constants ``Summary:'' and fraction bar, which were described earlier, are |
declared:</P> |
declared:</p> |
<PRE> |
<pre>CONST |
CONST |
|
SummaryConst = Text 'Summary:'; |
SummaryConst = Text 'Summary:'; |
Bar = Graphics 'h'; |
Bar = Graphics 'h';</pre> |
</PRE> |
</blockquote> |
</BLOCKQUOTE> |
</div> |
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc426>Variables</A></H3> |
|
|
|
<P> |
<h3><a name="sectc426">Variables</a></h3> |
|
<p> |
Variables permit the definition of computed content for presentation boxes. A |
Variables permit the definition of computed content for presentation boxes. A |
variable is associated with a presentation box by a <TT>Content</TT> rule; but |
variable is associated with a presentation box by a <tt>Content</tt> rule; but |
before being used in a <TT>Content</TT> rule, a variable can be defined in the |
before being used in a <tt>Content</tt> rule, a variable can be defined in the |
<TT>VAR</TT> section. It is also possible to define a variable at the time of |
<tt>VAR</tt> section. It is also possible to define a variable at the time of |
its use in a <TT>Content</TT> rule, as can be done with a constant.</P> |
its use in a <tt>Content</tt> rule, as can be done with a constant.</p> |
<P> |
<p> |
A variable has a name and a value which is a character string resulting from |
A variable has a name and a value which is a character string resulting from |
the concatenation of the values of a sequence of functions. Each variable |
the concatenation of the values of a sequence of functions. Each variable |
declaration is composed of the variable name followed by a colon and the |
declaration is composed of the variable name followed by a colon and the |
sequence of functions which produces its value, separated by spaces. Each |
sequence of functions which produces its value, separated by spaces. Each |
declaration is terminated by a semi-colon.</P> |
declaration is terminated by a semi-colon.</p> |
<PRE> |
<pre> 'VAR' VarSeq |
'VAR' VarSeq |
|
VarSeq = Variable < Variable > . |
VarSeq = Variable < Variable > . |
Variable = VarID ':' FunctionSeq ';' . |
Variable = VarID ':' FunctionSeq ';' . |
VarID = NAME . |
VarID = NAME . |
FunctionSeq = Function < Function > . |
FunctionSeq = Function < Function > .</pre> |
</PRE> |
<p> |
<P> |
|
Several functions are available. The first two return, in the form of a |
Several functions are available. The first two return, in the form of a |
character string, the current date. <TT>DATE</TT> returns the date in |
character string, the current date. <tt>DATE</tt> returns the date in |
English, while <TT>FDATE</TT> returns the date in french.</P> |
English, while <tt>FDATE</tt> returns the date in french.</p> |
<P> |
<p> |
Two other functions, <TT>DocName</TT> and <TT>DirName</TT>, return the |
Two other functions, <tt>DocName</tt> and <tt>DirName</tt>, return the |
document name and the directory where the document is stored.</P> |
document name and the directory where the document is stored.</p> |
<P> |
<p> |
Function <TT>ElemName</TT> returns the type of the element which created the |
Function <tt>ElemName</tt> returns the type of the element which created the |
presentation box whose contents are the variable.</P> |
presentation box whose contents are the variable.</p> |
<P> |
<p> |
Another function simply returns the value of a presentation constant. For any |
Another function simply returns the value of a presentation constant. For any |
constant declared in the <TT>CONST</TT> section, it is sufficient to give the |
constant declared in the <tt>CONST</tt> section, it is sufficient to give the |
name of the constant. Otherwise, the type and value of the constant must be |
name of the constant. Otherwise, the type and value of the constant must be |
given, using the same form as in a <A href="#sectc425">constant |
given, using the same form as in a <a href="#sectc425">constant |
declaration</A>. If the constant is not of type text, (types <TT>Symbol</TT>, |
declaration</a>. If the constant is not of type text, (types <tt>Symbol</tt>, |
<TT>Graphics</TT> or <TT>Picture</TT>), it must be alone in the variable |
<tt>Graphics</tt> or <tt>Picture</tt>), it must be alone in the variable |
definition; only constants of type <TT>Text</TT> can be mixed with other |
definition; only constants of type <tt>Text</tt> can be mixed with other |
functions.</P> |
functions.</p> |
<P> |
<p> |
It is also possible to obtain the value of an attribute, simply by mentioning |
It is also possible to obtain the value of an attribute, simply by mentioning |
the attribute's name. The value of this function is the value of the |
the attribute's name. The value of this function is the value of the |
attribute for the element which created the presentation box whose contents |
attribute for the element which created the presentation box whose contents |
are the variable. If the creating element does not have the indicated |
are the variable. If the creating element does not have the indicated |
attribute, the value is an empty string. In the case of a numeric attribute, |
attribute, the value is an empty string. In the case of a numeric attribute, |
the attribute is translated into a decimal number in arabic numerals. If |
the attribute is translated into a decimal number in arabic numerals. If |
another form is desired, the <TT>VALUE</TT> function must be used.</P> |
another form is desired, the <tt>VALUE</tt> function must be used.</p> |
<P> |
<p> |
The last available function returns, as a character string, the value of a |
The last available function returns, as a character string, the value of a |
counter, an attribute or a page number. This value can be presented in |
counter, an attribute or a page number. This value can be presented in |
different styles. The keyword <TT>VALUE</TT> is followed (between |
different styles. The keyword <tt>VALUE</tt> is followed (between |
parentheses) by the name of the counter, the name of the attribute, or the |
parentheses) by the name of the counter, the name of the attribute, or the |
keyword <TT>PageNumber</TT> and the desired style, the two parameters being |
keyword <tt>PageNumber</tt> and the desired style, the two parameters being |
separated by a comma. The style is a keyword which indicates whether the |
separated by a comma. The style is a keyword which indicates whether the |
value should be presented in arabic numerals (<TT>Arabic</TT>), lower-case |
value should be presented in arabic numerals (<tt>Arabic</tt>), lower-case |
roman numerals (<TT>LRoman</TT>), or upper-case roman numerals |
roman numerals (<tt>LRoman</tt>), or upper-case roman numerals |
(<TT>URoman</TT>), or by an upper-case letter (<TT>Uppercase</TT>) or |
(<tt>URoman</tt>), or by an upper-case letter (<tt>Uppercase</tt>) or |
lower-case letter (<TT>Lowercase</TT>).</P> |
lower-case letter (<tt>Lowercase</tt>).</p> |
<P> |
<p> |
For a page counter, the keyword <TT>PageNumber</TT> can be followed, between |
For a page counter, the keyword <tt>PageNumber</tt> can be followed, between |
parentheses, by the name of the view from which to obtain the page number. By |
parentheses, by the name of the view from which to obtain the page number. By |
default, the first view declared in the <TT>VIEWS</TT> section is used. The |
default, the first view declared in the <tt>VIEWS</tt> section is used. The |
value obtained is the number of the page on which is found the element that is |
value obtained is the number of the page on which is found the element that is |
using the variable in a <TT>Content</TT> rule.</P> |
using the variable in a <tt>Content</tt> rule.</p> |
<P> |
<p> |
For an ordinary counter, the name of the counter can be preceded by the |
For an ordinary counter, the name of the counter can be preceded by the |
keyword <TT>MaxRangeVal</TT> or <TT>MinRangeVal</TT>. These keywords mean |
keyword <tt>MaxRangeVal</tt> or <tt>MinRangeVal</tt>. These keywords mean |
that the value returned by the function is the maximum (minimum resp.) value |
that the value returned by the function is the maximum (minimum resp.) value |
taken by the counter in the whole document, not the value for the element |
taken by the counter in the whole document, not the value for the element |
concerned by the function.</P> |
concerned by the function.</p> |
<PRE> |
<pre> Function = 'DATE' / 'FDATE' / |
Function = 'DATE' / 'FDATE' / |
|
'DocName' / 'DirName' / |
'DocName' / 'DirName' / |
'ElemName' / 'AttributeName' / |
'ElemName' / 'AttributeName' / |
ConstID / ConstType ConstValue / |
ConstID / ConstType ConstValue / |
Line 3301 concerned by the function.</P>
|
Line 3422 concerned by the function.</P>
|
[ MinMax ] CounterID / AttrID . |
[ MinMax ] CounterID / AttrID . |
CounterStyle = 'Arabic' / 'LRoman' / 'URoman' / |
CounterStyle = 'Arabic' / 'LRoman' / 'URoman' / |
'Uppercase' / 'Lowercase' . |
'Uppercase' / 'Lowercase' . |
MinMax = 'MaxRangeVal' / 'MinRangeVal' . |
MinMax = 'MaxRangeVal' / 'MinRangeVal' .</pre> |
</PRE> |
<blockquote class="example"> |
<BLOCKQUOTE class="example"> |
<p> |
<P> |
<strong>Example:</strong></p> |
<STRONG>Example:</STRONG></P> |
<p> |
<P> |
To make today's date appear at the top of the first page of a report, a <a |
To make today's date appear at the top of the first page of a report, a <A |
href="#sectc4232"><tt>CREATE</tt> rule</a> associated with the Report_Title |
href="#sectc4232"><TT>CREATE</TT> rule</A> associated with the Report_Title |
|
element type generates a presentation box whose content (specified by the |
element type generates a presentation box whose content (specified by the |
<TT>Content</TT> rule of that presentation box) is the variable:</P> |
<tt>Content</tt> rule of that presentation box) is the variable:</p> |
<PRE> |
<pre>VAR |
VAR |
Todays_date : TEXT 'Version of ' DATE;</pre> |
Todays_date : TEXT 'Version of ' DATE; |
<p> |
</PRE> |
|
<P> |
|
To produce, before each section title, the chapter number (in upper-case roman |
To produce, before each section title, the chapter number (in upper-case roman |
numerals) followed by the section number (in arabic numerals), two counters |
numerals) followed by the section number (in arabic numerals), two counters |
must be defined:</P> |
must be defined:</p> |
<PRE> |
<pre>COUNTERS |
COUNTERS |
|
ChapterCtr : RANK OF Chapter; |
ChapterCtr : RANK OF Chapter; |
SectionCtr : RANK OF Section; |
SectionCtr : RANK OF Section;</pre> |
</PRE> |
<p> |
<P> |
|
and the Section_Title element must create a presentation box whose content is |
and the Section_Title element must create a presentation box whose content is |
the variable</P> |
the variable</p> |
<PRE> |
<pre>VAR |
VAR |
|
SectionNum : VALUE (ChapterCtr, URoman) TEXT '-' |
SectionNum : VALUE (ChapterCtr, URoman) TEXT '-' |
VALUE (SectionCtr, Arabic); |
VALUE (SectionCtr, Arabic);</pre> |
</PRE> |
<p> |
<P> |
|
In order to make the page number on which each section begins appear in the |
In order to make the page number on which each section begins appear in the |
table of contents view next to the section title, each Section_Title element |
table of contents view next to the section title, each Section_Title element |
must create a presentation box, visible only in the table of contents view, |
must create a presentation box, visible only in the table of contents view, |
whose content is the variable:</P> |
whose content is the variable:</p> |
<PRE> |
<pre>VAR |
VAR |
|
TitlePageNume : |
TitlePageNume : |
VALUE (PageNumber(Full_text), Arabic); |
VALUE (PageNumber(Full_text), Arabic);</pre> |
</PRE> |
</blockquote> |
</BLOCKQUOTE> |
</div> |
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc427>Default presentation rules</A></H3> |
|
|
|
<P> |
<h3><a name="sectc427">Default presentation rules</a></h3> |
|
<p> |
In order to avoid having to specify, for each element type defined in the |
In order to avoid having to specify, for each element type defined in the |
structure schema, values for every one of the numerous presentation |
structure schema, values for every one of the numerous presentation |
parameters, the presentation schema allows the definition of a set of default |
parameters, the presentation schema allows the definition of a set of default |
presentation rules. These rules apply to all the boxes of the elements |
presentation rules. These rules apply to all the boxes of the elements |
defined in the structure schema and to the presentation boxes and page layout |
defined in the structure schema and to the presentation boxes and page layout |
boxes defined in the presentation schema. Only rules which differ from these |
boxes defined in the presentation schema. Only rules which differ from these |
default need to be specified in other sections of the presentation schema.</P> |
default need to be specified in other sections of the presentation schema.</p> |
<P> |
<p> |
For the primary view, the default rules can define every presentation |
For the primary view, the default rules can define every presentation |
parameter, but not the <A href="#presfunct">presentation functions</A> or the |
parameter, but not the <a href="#presfunct">presentation functions</a> or the |
<A href="#sectc4223">linebreaking conditions</A> (the <TT>NoBreak1</TT>, |
<a href="#sectc4223">linebreaking conditions</a> (the <tt>NoBreak1</tt>, |
<TT>NoBreak2</TT>, and <TT>Gather</TT> rules).</P> |
<tt>NoBreak2</tt>, and <tt>Gather</tt> rules).</p> |
<P> |
<p> |
In a presentation schema, the default presentation rules section is optional; |
In a presentation schema, the default presentation rules section is optional; |
in this case, the <TT>DEFAULT</TT> keyword is also absent and the following |
in this case, the <tt>DEFAULT</tt> keyword is also absent and the following |
rules are considered to be the default rules:</P> |
rules are considered to be the default rules:</p> |
<PRE> |
<pre> Visibility: Enclosing =; |
Visibility: Enclosing =; |
|
VertRef: * . Left; |
VertRef: * . Left; |
HorizRef: Enclosed . HRef; |
HorizRef: Enclosed . HRef; |
Height: Enclosed . Height; |
Height: Enclosed . Height; |
Line 3393 rules are considered to be the default r
|
Line 3504 rules are considered to be the default r
|
LineWeight: Enclosing =; |
LineWeight: Enclosing =; |
FillPattern: Enclosing =; |
FillPattern: Enclosing =; |
Background: Enclosing =; |
Background: Enclosing =; |
Foreground: Enclosing =; |
Foreground: Enclosing =;</pre> |
</PRE> |
<p> |
<P> |
|
If other values are desired for the default rules, they must be defined |
If other values are desired for the default rules, they must be defined |
explicitly in the default rules section. In fact, it is only necessary to |
explicitly in the default rules section. In fact, it is only necessary to |
define those default rules which differ from the ones above, since the rules |
define those default rules which differ from the ones above, since the rules |
above will be used whenever a rule is not explicitly named.</P> |
above will be used whenever a rule is not explicitly named.</p> |
<P> |
<p> |
Default rules for views other than the primary view can also be specified. |
Default rules for views other than the primary view can also be specified. |
Otherwise, the default rules for the primary views are applied to the other |
Otherwise, the default rules for the primary views are applied to the other |
views.</P> |
views.</p> |
<P> |
<p> |
Default rules are expressed in the same way as <A href="#sectc4215">explicit |
Default rules are expressed in the same way as <a href="#sectc4215">explicit |
rules for document elements</A>.</P> |
rules for document elements</a>.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc428>Presentation and page layout boxes</A></H3> |
|
|
|
<P> |
<h3><a name="sectc428">Presentation and page layout boxes</a></h3> |
|
<p> |
The presentation process uses elements which are not part of the logical |
The presentation process uses elements which are not part of the logical |
structure of the document, such as pages (which are the page layout boxes) or |
structure of the document, such as pages (which are the page layout boxes) or |
alternatively, rules, numbers, or words introducing certain parts of the |
alternatively, rules, numbers, or words introducing certain parts of the |
document, such as ``Summary'', ``Appendices'', ``Bibliography'', etc. (which |
document, such as ``Summary'', ``Appendices'', ``Bibliography'', etc. (which |
are presentation boxes).</P> |
are presentation boxes).</p> |
<P> |
<p> |
After the word <TT>BOXES</TT>, each presentation or page layout box is defined |
After the word <tt>BOXES</tt>, each presentation or page layout box is defined |
by its name and a sequence of presentation rules which indicate how they must |
by its name and a sequence of presentation rules which indicate how they must |
be displayed. These rules are the same as those which define the boxes |
be displayed. These rules are the same as those which define the boxes |
associated with element of the logical structure of the document, with a |
associated with element of the logical structure of the document, with a |
single exception, the <A href="#sectc4231"><TT>Content</TT> rule</A> which is |
single exception, the <a href="#sectc4231"><tt>Content</tt> rule</a> which is |
used only to specify the content of presentation boxes. The content of boxes |
used only to specify the content of presentation boxes. The content of boxes |
associated with elements of the document structure is defined in each document |
associated with elements of the document structure is defined in each document |
or object and thus is not specified in the presentation schema, which applies |
or object and thus is not specified in the presentation schema, which applies |
to all documents or objects of a class.</P> |
to all documents or objects of a class.</p> |
<P> |
<p> |
Among the rules which define a presentation box, certain ones can refer to |
Among the rules which define a presentation box, certain ones can refer to |
another presentation box (for example, in their positional rules). If the |
another presentation box (for example, in their positional rules). If the |
designated box is defined after the box which designates it, a |
designated box is defined after the box which designates it, a |
<TT>FORWARD</TT> instruction followed by the name of the designated box must |
<tt>FORWARD</tt> instruction followed by the name of the designated box must |
appear before the designation.</P> |
appear before the designation.</p> |
<PRE> |
<pre> 'BOXES' BoxSeq |
'BOXES' BoxSeq |
|
BoxSeq = Box < Box > . |
BoxSeq = Box < Box > . |
Box ='FORWARD' BoxID ';' / |
Box ='FORWARD' BoxID ';' / |
BoxID ':' ViewRuleSeq . |
BoxID ':' ViewRuleSeq . |
BoxID = NAME . |
BoxID = NAME .</pre> |
</PRE> |
</div> |
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc429>Presentation of structured elements</A></H3> |
|
|
|
<P> |
<h3><a name="sectc429">Presentation of structured elements</a></h3> |
After the words <TT>RULES</TT>, the presentation schema gives the presentation |
<p> |
|
After the words <tt>RULES</tt>, the presentation schema gives the presentation |
rules that apply to the elements whose types are defined in the structure |
rules that apply to the elements whose types are defined in the structure |
schema. Only those rules which differ from the <A |
schema. Only those rules which differ from the <a |
href="#sectc427">default</A> must be specified in the <TT>RULES</TT> |
href="#sectc427">default</a> must be specified in the <tt>RULES</tt> |
section.</P> |
section.</p> |
<P> |
<p> |
The rule definitions for each element type are composed of the name of the |
The rule definitions for each element type are composed of the name of the |
element type (as specified in the structure schema) followed by a colon and |
element type (as specified in the structure schema) followed by a colon and |
the set of rules specific to that type.</P> |
the set of rules specific to that type.</p> |
<P> |
<p> |
The type name can be preceded by a star in the special case where the |
The type name can be preceded by a star in the special case where the |
structure schema defines an <A href="#sectd3284">inclusion</A> without |
structure schema defines an <a href="#sectd3284">inclusion</a> without |
expansion (or with partial expansion) of a type with the same name as an |
expansion (or with partial expansion) of a type with the same name as an |
element of defined in the structure schema.</P> |
element of defined in the structure schema.</p> |
<P> |
<p> |
In the case where the element is a <A href="#sectd3285">mark pair</A>, but only in |
In the case where the element is a <a href="#sectd3285">mark pair</a>, but |
this case, the type name can be preceded by the keywords <TT>First</TT> or |
only in this case, the type name can be preceded by the keywords |
<TT>Second</TT>. These keywords indicate whether the rules that follow apply |
<tt>First</tt> or <tt>Second</tt>. These keywords indicate whether the rules |
to the first or second mark of the pair.</P> |
that follow apply to the first or second mark of the pair.</p> |
<PRE> |
<pre> 'RULES' PresentSeq |
'RULES' PresentSeq |
|
PresentSeq = Present < Present > . |
PresentSeq = Present < Present > . |
Present = [ '*' ] [ FirstSec ] ElemID ':' |
Present = [ '*' ] [ FirstSec ] ElemID ':' |
ViewRuleSeq . |
ViewRuleSeq . |
FirstSec = 'First' / 'Second' . |
FirstSec = 'First' / 'Second' .</pre> |
</PRE> |
<p> |
<P> |
|
A presentation schema can define presentation rules for base elements, which |
A presentation schema can define presentation rules for base elements, which |
are defined implicitly in the structure schemas. In the English version of |
are defined implicitly in the structure schemas. In the English version of |
the presentation schema compiler, the base type names are the same as in the S |
the presentation schema compiler, the base type names are the same as in the S |
language, but they are terminated by the <TT>_UNIT</TT> suffix: |
language, but they are terminated by the <tt>_UNIT</tt> suffix: |
<TT>TEXT_UNIT</TT>, <TT>PICTURE_UNIT</TT>, <TT>SYMBOL_UNIT</TT>, |
<tt>TEXT_UNIT</tt>, <tt>PICTURE_UNIT</tt>, <tt>SYMBOL_UNIT</tt>, |
<TT>GRAPHICS_UNIT</TT>. The base type names are written in upper-case |
<tt>GRAPHICS_UNIT</tt>. The base type names are written in upper-case |
letters.</P> |
letters.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc4210>Logical attribute presentation</A></H3> |
|
|
<h3><a name="sectc4210">Logical attribute presentation</a></h3> |
<P> |
<p> |
After the keyword <TT>ATTRIBUTES</TT>, all attributes which are to have some |
After the keyword <tt>ATTRIBUTES</tt>, all attributes which are to have some |
effect on the presentation of the element to which they are attached must be |
effect on the presentation of the element to which they are attached must be |
mentioned, along with the corresponding presentation rules. This is true for |
mentioned, along with the corresponding presentation rules. This is true for |
both global attributes (which can be attached to all element types) and local |
both global attributes (which can be attached to all element types) and local |
attributes (which can only be attached to certain element types).</P> |
attributes (which can only be attached to certain element types).</p> |
<P> |
<p> |
Also mentioned in this section are attributes which imply an effect on |
Also mentioned in this section are attributes which imply an effect on |
elements in the subtree of the element to which they are attached. The |
elements in the subtree of the element to which they are attached. The |
presentation of these descendants can be modified as a function of the value |
presentation of these descendants can be modified as a function of the value |
of the attribute which they inherit, just as if it was attached to them |
of the attribute which they inherit, just as if it was attached to them |
directly.</P> |
directly.</p> |
<P> |
<p> |
The specification for each attribute includes the attribute's name, followed |
The specification for each attribute includes the attribute's name, followed |
by an optional value specification and, after a colon, a set of rules. The |
by an optional value specification and, after a colon, a set of rules. The |
set of rules must contain at least one rule.</P> |
set of rules must contain at least one rule.</p> |
<P> |
<p> |
When there is no value specification, the rules are applied to all elements |
When there is no value specification, the rules are applied to all elements |
which carry the attribute, no matter what their value. When the rules must |
which carry the attribute, no matter what their value. When the rules must |
only apply when the attribute has certain values, these values must be |
only apply when the attribute has certain values, these values must be |
specified. Thus, the same attribute can appear in the <TT>ATTRIBUTES</TT> |
specified. Thus, the same attribute can appear in the <tt>ATTRIBUTES</tt> |
section several times, with each appearance having a different value |
section several times, with each appearance having a different value |
specification. However, reference attributes never have a value specification |
specification. However, reference attributes never have a value specification |
and, as a result, can only appear once in the <TT>ATTRIBUTES</TT> section.</P> |
and, as a result, can only appear once in the <tt>ATTRIBUTES</tt> section.</p> |
<P> |
<p> |
To specify that the presentation rules apply to some of the descendants of the |
To specify that the presentation rules apply to some of the descendants of the |
element having the attribute, the name of the affected element type is given, |
element having the attribute, the name of the affected element type is given, |
between parentheses, after the attribute name. This way, the presentation |
between parentheses, after the attribute name. This way, the presentation |
rules for the attribute will be applied to the element having the attribute, |
rules for the attribute will be applied to the element having the attribute, |
if it is of the given type, and to all of its descendants of the given type. |
if it is of the given type, and to all of its descendants of the given type. |
In the case where this type is a <A href="#sectd3285">mark pair</A>, but only in |
In the case where this type is a <a href="#sectd3285">mark pair</a>, but only |
this case, the type name can be preceded by the keywords <TT>First</TT> or |
in this case, the type name can be preceded by the keywords <tt>First</tt> or |
<TT>Second</TT>. These keywords indicate whether the rules that follow apply |
<tt>Second</tt>. These keywords indicate whether the rules that follow apply |
to the first or second mark of the pair. If the rule must apply to several |
to the first or second mark of the pair. If the rule must apply to several |
different element types, the specification must be repeated for each element |
different element types, the specification must be repeated for each element |
type.</P> |
type.</p> |
<P> |
<p> |
The specification of values for which the presentation rules will be applied |
The specification of values for which the presentation rules will be applied |
varies according to the type of the attribute:</P> |
varies according to the type of the attribute:</p> |
<DL> |
<dl> |
<DT>numeric attribute</DT> |
<dt>numeric attribute</dt> |
<DD>If the rules are to apply for one value of the attribute, then the |
<dd> |
attribute name is followed by an equals sign and this value. If the rules are |
If the rules are to apply for one value of the attribute, then the attribute |
to apply for all values less than (or greater than) a threshold value, |
name is followed by an equals sign and this value. If the rules are to apply |
non-inclusive, the attribute name followed by a '<' sign (or a '>' sign, |
for all values less than (or greater than) a threshold value, non-inclusive, |
respectively) and the threshold value. If the rules must apply to a range of |
the attribute name followed by a '<' sign (or a '>' sign, respectively) and |
values, the attribute name is followed by the word '<TT>IN</TT>' and the |
the threshold value. If the rules must apply to a range of values, the |
two bounds of the range, enclosed in brackets and separated by two |
attribute name is followed by the word '<tt>IN</tt>' and the two bounds of the |
periods ('<TT>..</TT>'). In the case of ranges, the values of the bounds |
range, enclosed in brackets and separated by two periods ('<tt>..</tt>'). In |
are included in the range. |
the case of ranges, the values of the bounds are included in the range. |
<P> |
<p> |
The threshold value in the comparisons can be the value of an attribute |
The threshold value in the comparisons can be the value of an attribute |
attached to an ancestor element. In this case, the attribute name is given |
attached to an ancestor element. In this case, the attribute name is given |
instead of a constant value.</P> |
instead of a constant value.</p> |
<P> |
<p> |
It is also possible to write rules which apply only when a comparison between |
It is also possible to write rules which apply only when a comparison between |
two different attributes of the element's ancestors is true. In this case, the |
two different attributes of the element's ancestors is true. In this case, the |
first attribute name is followed by a comparison keyword and the name of the |
first attribute name is followed by a comparison keyword and the name of the |
second attribute. The comparison keywords are <TT>EQUAL</TT> (simple |
second attribute. The comparison keywords are <tt>EQUAL</tt> (simple |
equality), <TT>LESS</TT> (non-inclusive less than), and <TT>GREATER</TT> |
equality), <tt>LESS</tt> (non-inclusive less than), and <tt>GREATER</tt> |
(non-inclusive greater than).</P> |
(non-inclusive greater than).</p> |
</DD> |
</dd> |
<DT>text attribute</DT> |
<dt>text attribute</dt> |
<DD>If the rules are to apply for one value of the attribute, then the |
<dd> |
attribute name is followed by an equals sign and this value. |
If the rules are to apply for one value of the attribute, then the attribute |
</DD> |
name is followed by an equals sign and this value. |
<DT>reference attribute</DT> |
</dd> |
<DD>There is never a value specification; the rules apply no matter what |
<dt>reference attribute</dt> |
element is designated by the attribute. |
<dd> |
</DD> |
There is never a value specification; the rules apply no matter what element |
<DT>enumerated attribute</DT> |
is designated by the attribute. |
<DD>If the rules are to apply for one value of the attribute, then the |
</dd> |
attribute name is followed by an equals sign and this value. |
<dt>enumerated attribute</dt> |
</DD> |
<dd> |
</DL> |
If the rules are to apply for one value of the attribute, then the attribute |
<P> |
name is followed by an equals sign and this value. |
|
</dd> |
|
</dl> |
|
<p> |
The order in which the rules associated with a numeric attribute are defined |
The order in which the rules associated with a numeric attribute are defined |
is important. When multiple sets of rules can be applied, the first set |
is important. When multiple sets of rules can be applied, the first set |
declared is the one used.</P> |
declared is the one used.</p> |
<P> |
<p> |
Rules for attributes have priority over both default rules and rules |
Rules for attributes have priority over both default rules and rules |
associated with element types. The attribute rules apply to the element to |
associated with element types. The attribute rules apply to the element to |
which the attribute is attached. It is the rules which apply to the |
which the attribute is attached. It is the rules which apply to the |
surrounding elements (and especially to the descendants) which determine the |
surrounding elements (and especially to the descendants) which determine the |
effect of the attribute rules on the environment ( and especially on the |
effect of the attribute rules on the environment ( and especially on the |
terminal elements of the structure).</P> |
terminal elements of the structure).</p> |
<PRE> |
<pre> 'ATTRIBUTES' PresAttrSeq |
'ATTRIBUTES' PresAttrSeq |
|
PresAttrSeq = PresAttr < PresAttr > . |
PresAttrSeq = PresAttr < PresAttr > . |
PresAttr = AttrID [ '(' [ FirstSec ] ElemID ')' ] |
PresAttr = AttrID [ '(' [ FirstSec ] ElemID ')' ] |
[ AttrRelation ] ':' ViewRuleSeq . |
[ AttrRelation ] ':' ViewRuleSeq . |
Line 3594 terminal elements of the structure).</P>
|
Line 3702 terminal elements of the structure).</P>
|
UpperBound = NUMBER. |
UpperBound = NUMBER. |
EqualNum = NUMBER . |
EqualNum = NUMBER . |
EqualText = STRING . |
EqualText = STRING . |
AttrValue = NAME . |
AttrValue = NAME .</pre> |
</PRE> |
<p> |
<P> |
|
In presentation rules associated with a numeric attribute (and only in such |
In presentation rules associated with a numeric attribute (and only in such |
rules), the attribute name can be used in place of a numeric value. In this |
rules), the attribute name can be used in place of a numeric value. In this |
case, the value of the attribute is used in the application of the rule. Thus, |
case, the value of the attribute is used in the application of the rule. Thus, |
Line 3604 the attribute can represent a relation b
|
Line 3711 the attribute can represent a relation b
|
height and width of a box, the height of an area where page breaks are |
height and width of a box, the height of an area where page breaks are |
prohibited, the distance between two boxes, the position of the reference axis |
prohibited, the distance between two boxes, the position of the reference axis |
of a box, the interline spacing, the indentation of the first line, the |
of a box, the interline spacing, the indentation of the first line, the |
visibility, the depth (z-order), or the character set.</P> |
visibility, the depth (z-order), or the character set.</p> |
<P> |
<p> |
The presentation rules associated with reference attributes, it is possible to |
The presentation rules associated with reference attributes, it is possible to |
use the element designated by the attribute as a reference box in a positional |
use the element designated by the attribute as a reference box in a positional |
or extent rule. This element is represented in the <A |
or extent rule. This element is represented in the <a |
href="#sectc4218">position</A> or <A href="#sectc4219">extent</A> rule by the |
href="#sectc4218">position</a> or <a href="#sectc4219">extent</a> rule by the |
keyword <TT>Referred</TT>.</P> |
keyword <tt>Referred</tt>.</p> |
<BLOCKQUOTE class="example"> |
<blockquote class="example"> |
<P> |
<p> |
<STRONG>Example:</STRONG></P> |
<strong>Example:</strong></p> |
<P> |
<p> |
In all structure schemas, there is a global Language attribute defined as |
In all structure schemas, there is a global Language attribute defined as |
follows:</P> |
follows:</p> |
<PRE> |
<pre>ATTR |
ATTR |
Language = TEXT;</pre> |
Language = TEXT; |
<p> |
</PRE> |
The following rules would make French text be displayed in roman characters |
<P> |
and English text be displayed in italics:</p> |
The following rules would make French text be displayed in roman characters and |
<pre>ATTRIBUTES |
English text be displayed in italics:</P> |
|
<PRE> |
|
ATTRIBUTES |
|
Language = 'French' : |
Language = 'French' : |
Style : Roman; |
Style : Roman; |
Language = 'English' : |
Language = 'English' : |
Style : Italics; |
Style : Italics;</pre> |
</PRE> |
<p> |
<P> |
|
Using these rules, when the user puts the Language attribute with the value |
Using these rules, when the user puts the Language attribute with the value |
'English' on the summary of a document, every character string (terminal |
'English' on the summary of a document, every character string (terminal |
elements) contained in the summary are displayed in italics. See the <A |
elements) contained in the summary are displayed in italics. See the <a |
href="#sectd42252"><TT>Style</TT> rule</A>.</P> |
href="#sectd42252"><tt>Style</tt> rule</a>.</p> |
</BLOCKQUOTE> |
</blockquote> |
<BLOCKQUOTE class="example"> |
<blockquote class="example"> |
<P> |
<p> |
<STRONG>Example:</STRONG></P> |
<strong>Example:</strong></p> |
<P> |
<p> |
A numeric attribute representing the importance of the part of the document to |
A numeric attribute representing the importance of the part of the document to |
which it is attached can be defined:</P> |
which it is attached can be defined:</p> |
<PRE> |
<pre>ATTR |
ATTR |
Importance = INTEGER;</pre> |
Importance = INTEGER; |
<p> |
</PRE> |
|
<P> |
|
In the presentation schema, the importance of an element is reflected in the |
In the presentation schema, the importance of an element is reflected in the |
choice of character size, using the following rules.</P> |
choice of character size, using the following rules.</p> |
<PRE> |
<pre>ATTRIBUTES |
ATTRIBUTES |
|
Importance < 2 : |
Importance < 2 : |
Size : 1; |
Size : 1; |
Importance IN [2..4] : |
Importance IN [2..4] : |
Line 3659 ATTRIBUTES
|
Line 3759 ATTRIBUTES
|
Importance = 10 : |
Importance = 10 : |
Size : 5; |
Size : 5; |
Importance > 4 : |
Importance > 4 : |
Size : 4; |
Size : 4;</pre> |
</PRE> |
<p> |
<P> |
|
Thus, the character size corresponds to the value of the Importance attribute; |
Thus, the character size corresponds to the value of the Importance attribute; |
its value is</P> |
its value is</p> |
<UL> |
<ul> |
<LI>the value of the Importance attribute when the value is between 2 and 4 |
<li> |
|
the value of the Importance attribute when the value is between 2 and 4 |
(inclusive), |
(inclusive), |
<LI>1, when the value of the Importance attribute is less than 2, |
<li> |
<LI>4, when the value of the Importance attribute is greater than 4, |
1, when the value of the Importance attribute is less than 2, |
<LI>5, when the value of the Importance attribute is 10. |
<li> |
</UL> |
4, when the value of the Importance attribute is greater than 4, |
<P> |
<li> |
|
5, when the value of the Importance attribute is 10. |
|
</ul> |
|
<p> |
The last case (value 5) must be defined before the case which handles all |
The last case (value 5) must be defined before the case which handles all |
Importance values greater than 4, because the two rules are not disjoint and |
Importance values greater than 4, because the two rules are not disjoint and |
the first one defined will have priority. Otherwise, when the Importance |
the first one defined will have priority. Otherwise, when the Importance |
attribute has value 10, the font size will be 4.</P> |
attribute has value 10, the font size will be 4.</p> |
</BLOCKQUOTE> |
</blockquote> |
<BLOCKQUOTE class="example"> |
<blockquote class="example"> |
<P> |
<p> |
<STRONG>Example:</STRONG></P> |
<strong>Example:</strong></p> |
<P> |
<p> |
Suppose the structure defines a list element which can have an attribute |
Suppose the structure defines a list element which can have an attribute |
defining the type of list (numbered or not):</P> |
defining the type of list (numbered or not):</p> |
<PRE> |
<pre>STRUCT |
STRUCT |
|
list (ATTR list_type = enumeration, dash) |
list (ATTR list_type = enumeration, dash) |
= LIST OF (list_item = TEXT); |
= LIST OF (list_item = TEXT);</pre> |
</PRE> |
<p> |
<P> |
|
Then, the presentation schema could use the attribute placed on the list |
Then, the presentation schema could use the attribute placed on the list |
element to put either a dash or a number before the each element of the |
element to put either a dash or a number before the each element of the |
list:</P> |
list:</p> |
<PRE> |
<pre>ATTRIBUTES |
ATTRIBUTES |
|
list_type (list_item) = enumeration : |
list_type (list_item) = enumeration : |
CreateBefore (NumberBox); |
CreateBefore (NumberBox); |
list_type (list_item) = dash : |
list_type (list_item) = dash : |
CreateBefore (DashBox); |
CreateBefore (DashBox);</pre> |
</PRE> |
</blockquote> |
</BLOCKQUOTE> |
<blockquote class="example"> |
<BLOCKQUOTE class="example"> |
<p> |
<P> |
<strong>Example:</strong></p> |
<STRONG>Example:</STRONG></P> |
<p> |
<P> |
|
Suppose that two attributes are defined in the structure schema. The first is |
Suppose that two attributes are defined in the structure schema. The first is |
a numeric global attribute called ``version''. The other is a local attribute |
a numeric global attribute called ``version''. The other is a local attribute |
defined on the root of the document called ``Document_version'':</P> |
defined on the root of the document called ``Document_version'':</p> |
<PRE> |
<pre>STRUCTURE Document |
STRUCTURE Document |
|
ATTR |
ATTR |
version = INTEGER; |
version = INTEGER; |
STRUCT |
STRUCT |
Line 3718 STRUCT
|
Line 3816 STRUCT
|
... |
... |
SomeOtherElement ; |
SomeOtherElement ; |
END ; |
END ; |
... |
...</pre> |
</PRE> |
<p> |
<P> |
These attributes can be used in the presentation schema to place change bars |
These attributes can be used in the presentation schema to place change bars in |
in the margin next to elements whose version attribute has a value equal to |
the margin next to elements whose version attribute has a value equal to the |
the Document_version attribute of the root and to place a star in margin of |
Document_version attribute of the root and to place a star in margin of |
|
elements whose version attribute is less than the value of the root's |
elements whose version attribute is less than the value of the root's |
Document_version attribute:</P> |
Document_version attribute:</p> |
<PRE> |
<pre>ATTRIBUTES |
ATTRIBUTES |
|
version EQUAL Document_version : |
version EQUAL Document_version : |
CreateBefore (ChangeBarBox) ; |
CreateBefore (ChangeBarBox) ; |
version LESS Document_version : |
version LESS Document_version : |
CreateBefore (StarBox) ; |
CreateBefore (StarBox) ;</pre> |
</PRE> |
</blockquote> |
</BLOCKQUOTE> |
</div> |
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc4212>Value transmission rules</A></H3> |
|
|
|
<P> |
<h3><a name="sectc4212">Value transmission rules</a></h3> |
|
<p> |
The last section of a presentation schema, which is optional, serves to |
The last section of a presentation schema, which is optional, serves to |
defines the way in which a document transmits certain values to its |
defines the way in which a document transmits certain values to its |
sub-documents. A sub-document is an document <A |
sub-documents. A sub-document is an document <a |
href="#inclusion">included</A> without expansion or with partial expansion. |
href="#inclusion">included</a> without expansion or with partial expansion. |
The primary document can transmit to its sub-documents the values of certain |
The primary document can transmit to its sub-documents the values of certain |
counters or the textual content of certain of its elements, as a function of |
counters or the textual content of certain of its elements, as a function of |
their type.</P> |
their type.</p> |
<P> |
<p> |
The sub-documents receive these values in attributes which must be defined in |
The sub-documents receive these values in attributes which must be defined in |
their structure schema as local attributes of the root element. The types of |
their structure schema as local attributes of the root element. The types of |
these attributes must correspond to the type of the value which they receive: |
these attributes must correspond to the type of the value which they receive: |
numeric attributes for receiving the value of a counter, textual attributes |
numeric attributes for receiving the value of a counter, textual attributes |
for receiving the content of an element.</P> |
for receiving the content of an element.</p> |
<P> |
<p> |
In the structure schema of the primary document, there appears at the end, |
In the structure schema of the primary document, there appears at the end, |
after the <TT>TRANSMIT</TT> keyword, a sequence of transmission rules. Each |
after the <tt>TRANSMIT</tt> keyword, a sequence of transmission rules. Each |
rule begins with the name of the counter to transmit or of the element type |
rule begins with the name of the counter to transmit or of the element type |
whose textual content will be transmitted. This name is followed by the |
whose textual content will be transmitted. This name is followed by the |
keyword <TT>To</TT> and the name of the attribute of the sub-document to which |
keyword <tt>To</tt> and the name of the attribute of the sub-document to which |
the value is transmitted. The sub-document class is indicated between |
the value is transmitted. The sub-document class is indicated between |
parentheses after the name of the attribute. The transmission rule ends with |
parentheses after the name of the attribute. The transmission rule ends with |
a semicolon.</P> |
a semicolon.</p> |
<PRE> |
<pre> TransmitSeq = Transmit < Transmit > . |
TransmitSeq = Transmit < Transmit > . |
|
Transmit = TypeOrCounter 'To' ExternAttr |
Transmit = TypeOrCounter 'To' ExternAttr |
'(' ElemID ')' ';' . |
'(' ElemID ')' ';' . |
TypeOrCounter = CounterID / ElemID . |
TypeOrCounter = CounterID / ElemID . |
ExternAttr = NAME . |
ExternAttr = NAME .</pre> |
</PRE> |
<blockquote class="example"> |
<BLOCKQUOTE class="example"> |
<p> |
<P> |
<strong>Example:</strong></p> |
<STRONG>Example:</STRONG></P> |
<p> |
<P> |
Consider a Book document class which includes instances of the Chapter |
Consider a Book document class which includes instances of the Chapter document |
document class. These classes might have the following schemas:</p> |
class. These classes might have the following schemas:</P> |
<pre>STRUCTURE Book |
<PRE> |
|
STRUCTURE Book |
|
STRUCT |
STRUCT |
Book = BEGIN |
Book = BEGIN |
Title = Text; |
Title = Text; |
Line 3793 STRUCT
|
Line 3885 STRUCT
|
ChapterTitle = Text; |
ChapterTitle = Text; |
... |
... |
END; |
END; |
... |
...</pre> |
</PRE> |
<p> |
<P> |
|
Then the presentation schema for books could define chapter and page counters. |
Then the presentation schema for books could define chapter and page counters. |
The following transmission rules in the book presentation schema would |
The following transmission rules in the book presentation schema would |
transmit values for the three attributes defined at the root of each chapter |
transmit values for the three attributes defined at the root of each chapter |
sub-document.</P> |
sub-document.</p> |
<PRE> |
<pre>PRESENTATION Book; |
PRESENTATION Book; |
|
VIEWS |
VIEWS |
Full_text; |
Full_text; |
COUNTERS |
COUNTERS |
Line 3812 TRANSMIT
|
Line 3902 TRANSMIT
|
PageCtr TO FirstPageNum(Chapter); |
PageCtr TO FirstPageNum(Chapter); |
ChapterCtr TO ChapterNum(Chapter); |
ChapterCtr TO ChapterNum(Chapter); |
Title TO CurrentTitle(Chapter); |
Title TO CurrentTitle(Chapter); |
END |
END</pre> |
</PRE> |
<p> |
<P> |
|
Thus, each chapter included in a book can number its pages as a function of |
Thus, each chapter included in a book can number its pages as a function of |
the number of pages preceding it in the book, can make the chapter's number |
the number of pages preceding it in the book, can make the chapter's number |
appear before the number of each of its sections, or can place the title of |
appear before the number of each of its sections, or can place the title of |
the book at the top of each page.</P> |
the book at the top of each page.</p> |
</BLOCKQUOTE> |
</blockquote> |
</DIV> |
</div> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc4213>Presentation rules</A></H3> |
|
|
|
<P> |
<h3><a name="sectc4213">Presentation rules</a></h3> |
|
<p> |
Whether defining the appearance of a presentation or page layout box, an |
Whether defining the appearance of a presentation or page layout box, an |
element type, or an attribute value, the set of presentation rules that apply |
element type, or an attribute value, the set of presentation rules that apply |
is always defined in the same way.</P> |
is always defined in the same way.</p> |
<P> |
<p> |
Normally, a set of presentation rules is placed between the keywords |
Normally, a set of presentation rules is placed between the keywords |
<TT>BEGIN</TT> and <TT>END</TT>, the keyword <TT>END</TT> being followed by a |
<tt>BEGIN</tt> and <tt>END</tt>, the keyword <tt>END</tt> being followed by a |
semicolon. The first section of this block defines the rules that apply to |
semicolon. The first section of this block defines the rules that apply to |
the primary view, if the <A href="#sectc427">default rules</A> are not |
the primary view, if the <a href="#sectc427">default rules</a> are not |
completely suitable. Next comes the rules which apply to specific other |
completely suitable. Next comes the rules which apply to specific other |
views, with a rule sequence for each view for which the default rules are not |
views, with a rule sequence for each view for which the default rules are not |
satisfactory. If the default rules are suitable for the non-primary views, |
satisfactory. If the default rules are suitable for the non-primary views, |
there will not be any specific rules for these views. If there is only one |
there will not be any specific rules for these views. If there is only one |
rule which applies to all views then the keywords <TT>BEGIN</TT> and |
rule which applies to all views then the keywords <tt>BEGIN</tt> and |
<TT>END</TT> need not appear.</P> |
<tt>END</tt> need not appear.</p> |
<P> |
<p> |
For each view, it is only necessary to specify those rules which differ from |
For each view, it is only necessary to specify those rules which differ from |
the default rules for the view, so that for certain views (or even all views), |
the default rules for the view, so that for certain views (or even all views), |
there may be no specific rules.</P> |
there may be no specific rules.</p> |
<P> |
<p> |
The specific rules for a non-primary view are introduced by the <A |
The specific rules for a non-primary view are introduced by the <a |
name="inkeyword"><TT>IN</TT> keyword</A>, followed by the view name. The |
name="inkeyword"><tt>IN</tt> keyword</a>, followed by the view name. The |
rules for that view follow, delimited by the keywords <TT>BEGIN</TT> and |
rules for that view follow, delimited by the keywords <tt>BEGIN</tt> and |
<TT>END</TT>, or without these two keywords when there is only one rule.</P> |
<tt>END</tt>, or without these two keywords when there is only one rule.</p> |
<P> |
<p> |
<STRONG>Note:</STRONG> the view name which follows the <TT>IN</TT> keyword |
<strong>Note:</strong> the view name which follows the <tt>IN</tt> keyword |
must not be the name of the primary view, since the rules for that view are |
must not be the name of the primary view, since the rules for that view are |
found before the rules for the other views.</P> |
found before the rules for the other views.</p> |
<P> |
<p> |
Within each block concerning a view, other blocks can appear, delimited by the |
Within each block concerning a view, other blocks can appear, delimited by the |
same keywords <TT>BEGIN</TT> and <TT>END</TT>. Each of these blocks gathers |
same keywords <tt>BEGIN</tt> and <tt>END</tt>. Each of these blocks gathers |
the presentation rules that apply, for a given view, only when a given |
the presentation rules that apply, for a given view, only when a given |
condition is satisfied. Each block is preceded by a condition introduced by |
condition is satisfied. Each block is preceded by a condition introduced by |
the <TT>IF</TT> keyword. If such a conditional block contains only one rule, |
the <tt>IF</tt> keyword. If such a conditional block contains only one rule, |
the keywords <TT>BEGIN</TT> and <TT>END</TT> can be omitted.</P> |
the keywords <tt>BEGIN</tt> and <tt>END</tt> can be omitted.</p> |
<P> |
<p> |
Although the syntax allows any presentation rule to appear in a conditional |
Although the syntax allows any presentation rule to appear in a conditional |
block, only <A href="#sectc4232">creation rules</A> are allowed after any |
block, only <a href="#sectc4232">creation rules</a> are allowed after any |
condition; other rules are allowed only after conditions <TT>Within</TT> and |
condition; other rules are allowed only after conditions <tt>Within</tt> and |
ElemID. In addition, the following rules cannot be conditional: |
ElemID. In addition, the following rules cannot be conditional: |
<TT>PageBreak, LineBreak, Inline, Gather</TT>.</P> |
<tt>PageBreak, LineBreak, Inline, Gather</tt>.</p> |
<P> |
<p> |
For a given view, the rules that apply without any condition must appear |
For a given view, the rules that apply without any condition must appear |
before the first conditional block. If some rules apply only when none of the |
before the first conditional block. If some rules apply only when none of the |
specified condition holds, they are grouped in a block preceded by the keyword |
specified condition holds, they are grouped in a block preceded by the keyword |
<TT>Otherwise</TT>, and that block must appear after the last conditionnal |
<tt>Otherwise</tt>, and that block must appear after the last conditionnal |
block concerning the same view.</P> |
block concerning the same view.</p> |
<PRE> |
<pre> ViewRuleSeq = 'BEGIN' < RulesAndCond > < ViewRules > |
ViewRuleSeq = 'BEGIN' < RulesAndCond > < ViewRules > |
|
'END' ';' / |
'END' ';' / |
ViewRules / CondRules / Rule . |
ViewRules / CondRules / Rule . |
RulesAndCond = CondRules / Rule . |
RulesAndCond = CondRules / Rule . |
Line 3884 block concerning the same view.</P>
|
Line 3972 block concerning the same view.</P>
|
[ 'Otherwise' RuleSeq ] . |
[ 'Otherwise' RuleSeq ] . |
CondRule = 'IF' ConditionSeq RuleSeq . |
CondRule = 'IF' ConditionSeq RuleSeq . |
RulesSeq = 'BEGIN' Rule < Rule > 'END' ';' / |
RulesSeq = 'BEGIN' Rule < Rule > 'END' ';' / |
Rule . |
Rule .</pre> |
</PRE> |
<blockquote class="example"> |
<BLOCKQUOTE class="example"> |
<p> |
<P> |
<strong>Example:</strong></p> |
<STRONG>Example:</STRONG></P> |
<p> |
<P> |
|
The following rules for a report's title make the title visible in the primary |
The following rules for a report's title make the title visible in the primary |
view and invisible in the table of contents and in the formula views (see the |
view and invisible in the table of contents and in the formula views (see the |
<A href="#sectc4224"><TT>Visibility</TT> rule</A>).</P> |
<a href="#sectc4224"><tt>Visibility</tt> rule</a>).</p> |
<PRE> |
<pre>Title : BEGIN |
Title : BEGIN |
|
Visibility : 1; |
Visibility : 1; |
... {Other rules for the primary view} |
... {Other rules for the primary view} |
IN Table_of_contents |
IN Table_of_contents |
Visibility : 0; |
Visibility : 0; |
IN Formulas |
IN Formulas |
Visibility : 0; |
Visibility : 0; |
END; |
END;</pre> |
</PRE> |
</blockquote> |
</BLOCKQUOTE> |
</div> |
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc4214>Conditions applying to presentation rules</A></H3> |
|
|
|
<P> |
<h3><a name="sectc4214">Conditions applying to presentation rules</a></h3> |
|
<p> |
Many conditions can be applied to presentation rules. Conditions allow |
Many conditions can be applied to presentation rules. Conditions allow |
certain presentation rules to apply only in certain cases. These conditions |
certain presentation rules to apply only in certain cases. These conditions |
can be based on the structural position of the element. They can be based on |
can be based on the structural position of the element. They can be based on |
whether the element has references, and what type of references, whether the |
whether the element has references, and what type of references, whether the |
element has attributes, whether the element is empty or not. They can also be |
element has attributes, whether the element is empty or not. They can also be |
based on the value of a counter.</P> |
based on the value of a counter.</p> |
<P> |
<p> |
It is possible to specify several conditions which must all be true for the |
It is possible to specify several conditions which must all be true for the |
rules to apply.</P> |
rules to apply.</p> |
<P> |
<p> |
A set of conditions is specified by the <TT>IF</TT> keyword. This keyword is |
A set of conditions is specified by the <tt>IF</tt> keyword. This keyword is |
followed by the sequence of conditions, separated by the <TT>AND</TT> keyword. |
followed by the sequence of conditions, separated by the <tt>AND</tt> keyword. |
Each condition is specified by a keyword which defines the condition type. In |
Each condition is specified by a keyword which defines the condition type. In |
some cases, the keyword is followed by other data, which specify the condition |
some cases, the keyword is followed by other data, which specify the condition |
more precisely.</P> |
more precisely.</p> |
<P> |
<p> |
An elementary condition can be negative; it is then preceded by the |
An elementary condition can be negative; it is then preceded by the |
<TT>NOT</TT> keyword.</P> |
<tt>NOT</tt> keyword.</p> |
<P> |
<p> |
When the presentation rule(s) controlled by the condition apply to a reference |
When the presentation rule(s) controlled by the condition apply to a reference |
element or a reference attribute, an elementary condition can also apply to |
element or a reference attribute, an elementary condition can also apply to |
element referred by this reference. The <TT>Target</TT> keyword is used for |
element referred by this reference. The <tt>Target</tt> keyword is used for |
that purpose. It must appear before the keyword defining the condition |
that purpose. It must appear before the keyword defining the condition |
type.</P> |
type.</p> |
<PRE> |
<pre> CondRule ='IF' ConditionSeq RuleSeq . |
CondRule ='IF' ConditionSeq RuleSeq . |
|
ConditionSeq = Condition < 'AND' Condition > . |
ConditionSeq = Condition < 'AND' Condition > . |
Condition = [ 'NOT' ] [ 'Target' ] ConditionElem . |
Condition = [ 'NOT' ] [ 'Target' ] ConditionElem . |
ConditionElem ='First' / 'Last' / |
ConditionElem ='First' / 'Last' / |
Line 3962 type.</P>
|
Line 4046 type.</P>
|
MinCtrVal = NUMBER . |
MinCtrVal = NUMBER . |
EqCtrVal = NUMBER . |
EqCtrVal = NUMBER . |
MaxCtrBound = NUMBER . |
MaxCtrBound = NUMBER . |
MinCtrBound = NUMBER . |
MinCtrBound = NUMBER .</pre> |
</PRE> |
|
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd42141>Conditions based on the logical position of the element</A></H4> |
|
|
|
<P> |
<h4><a name="sectd42141">Conditions based on the logical position of the |
|
element</a></h4> |
|
<p> |
The condition can be on the position of the element in the document's logical |
The condition can be on the position of the element in the document's logical |
structure tree. It is possible to test whether the element is the first |
structure tree. It is possible to test whether the element is the first |
(<TT>First</TT>) or last (<TT>Last</TT>) among its siblings or if it is not |
(<tt>First</tt>) or last (<tt>Last</tt>) among its siblings or if it is not |
the first (<TT>NOT First</TT>) or not the last (<TT>NOT Last</TT>). These |
the first (<tt>NOT First</tt>) or not the last (<tt>NOT Last</tt>). These |
conditions can be associated only with <A href="#sectc4232">creation |
conditions can be associated only with <a href="#sectc4232">creation |
rules</A>.</P> |
rules</a>.</p> |
<P> |
<p> |
It is also possible to test if the element is contained in an element of a |
It is also possible to test if the element is contained in an element of a |
given type (<TT>Within</TT>) or if it is not (<TT>NOT Within</TT>). The type |
given type (<tt>Within</tt>) or if it is not (<tt>NOT Within</tt>). The type |
is indicated after the keyword <TT>Within</TT>. If that element type is |
is indicated after the keyword <tt>Within</tt>. If that element type is |
defined in a structure schema which is not the one which corresponds to the |
defined in a structure schema which is not the one which corresponds to the |
presentation schema, the type name of this element must be followed, between |
presentation schema, the type name of this element must be followed, between |
parentheses, by the name of the structure schema which defines it.</P> |
parentheses, by the name of the structure schema which defines it.</p> |
<P> |
<p> |
If the keyword <TT>Within</TT> is preceded by <TT>Immediately</TT>, the |
If the keyword <tt>Within</tt> is preceded by <tt>Immediately</tt>, the |
condition is satisfied only if the <EM>parent</EM> element has the type |
condition is satisfied only if the <em>parent</em> element has the type |
indicated. If the word <TT>Immediately</TT> is missing, the condition is |
indicated. If the word <tt>Immediately</tt> is missing, the condition is |
satisfied if any <EM>ancestor</EM> has the type indicated.</P> |
satisfied if any <em>ancestor</em> has the type indicated.</p> |
<P> |
<p> |
An integer <I>n</I> can appear between the keyword <TT>Within</TT> and the |
An integer <i>n</i> can appear between the keyword <tt>Within</tt> and the |
type. It specifies the number of ancestors of the indicated type that must be |
type. It specifies the number of ancestors of the indicated type that must be |
present for the condition to be satisfied. If the keyword |
present for the condition to be satisfied. If the keyword |
<TT>Immediately</TT> is also present, the <I>n</I> immediate ancestors of the |
<tt>Immediately</tt> is also present, the <i>n</i> immediate ancestors of the |
element must have the indicated type. The integer <I>n</I> must be positive |
element must have the indicated type. The integer <i>n</i> must be positive |
or zero. It can be preceded by <TT><</TT> or <TT>></TT> to indicate a |
or zero. It can be preceded by <tt><</tt> or <tt>></tt> to indicate a |
maximum or minimum number of ancestors. If these symbols are missing, the |
maximum or minimum number of ancestors. If these symbols are missing, the |
condition is satisfied only if it exists exactly <I>n</I> ancestors. When |
condition is satisfied only if it exists exactly <i>n</i> ancestors. When |
this number is missing, it is equivalent to > 0.</P> |
this number is missing, it is equivalent to > 0.</p> |
<P> |
<p> |
If the condition applies to presentation rules associated with an attribute, |
If the condition applies to presentation rules associated with an attribute, |
in the <TT>ATTRIBUTES</TT> section of the presentation schema, the condition |
in the <tt>ATTRIBUTES</tt> section of the presentation schema, the condition |
can be simply an element name. Presentation rules are then executed only if |
can be simply an element name. Presentation rules are then executed only if |
the attribute is attached to an element of that type. The keyword <TT>NOT</TT> |
the attribute is attached to an element of that type. The keyword <tt>NOT</tt> |
before the element name indicates that the presentation rules must be executed |
before the element name indicates that the presentation rules must be executed |
only if the element is not of the type indicated.</P> |
only if the element is not of the type indicated.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd42142>Conditions on references</A></H4> |
|
|
|
<P> |
<h4><a name="sectd42142">Conditions on references</a></h4> |
|
<p> |
References may be taken into account in conditions, which can be based on the |
References may be taken into account in conditions, which can be based on the |
fact that the element, or one of its ancestors, is designated by a at least |
fact that the element, or one of its ancestors, is designated by a at least |
one reference (<TT>Referred</TT>) or by none (<TT>NOT Referred</TT>).</P> |
one reference (<tt>Referred</tt>) or by none (<tt>NOT Referred</tt>).</p> |
<P> |
<p> |
If the element or attribute to which the condition is attached is a reference, |
If the element or attribute to which the condition is attached is a reference, |
the condition can be based on the fact that it acts as the first reference to |
the condition can be based on the fact that it acts as the first reference to |
the designated element (<TT>FirstRef</TT>), or as the last (<TT>LastRef</TT>), |
the designated element (<tt>FirstRef</tt>), or as the last (<tt>LastRef</tt>), |
or as a reference to an element located in another document |
or as a reference to an element located in another document |
(<TT>ExternalRef</TT>) or in the same document (<TT>InternalRef</TT>).</P> |
(<tt>ExternalRef</tt>) or in the same document (<tt>InternalRef</tt>).</p> |
<P> |
<p> |
The condition can also be based on the fact that the element is an <A |
The condition can also be based on the fact that the element is an <a |
href="#inclusion">inclusion</A>. This is noted (<TT>CopyRef</TT>).</P> |
href="#inclusion">inclusion</a>. This is noted (<tt>CopyRef</tt>).</p> |
<P> |
<p> |
Like all conditions, conditions on references can be inverted by the |
Like all conditions, conditions on references can be inverted by the |
<TT>NOT</TT> keyword. These conditions can be associated only with <A |
<tt>NOT</tt> keyword. These conditions can be associated only with <a |
href="#sectc4232">creation rules</A>.</P> |
href="#sectc4232">creation rules</a>.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd42143>Conditions on logical attributes</A></H4> |
|
|
|
<P> |
<h4><a name="sectd42143">Conditions on logical attributes</a></h4> |
|
<p> |
The condition can be based on the presence or absence of attributes associated |
The condition can be based on the presence or absence of attributes associated |
with the element, no matter what the attributes or their values. The |
with the element, no matter what the attributes or their values. The |
<TT>AnyAttributes</TT> keyword expresses this condition.</P> |
<tt>AnyAttributes</tt> keyword expresses this condition.</p> |
<P> |
<p> |
If the condition appears in the presentation rules of an attribute, the |
If the condition appears in the presentation rules of an attribute, the |
<TT>FirstAttr</TT> and <TT>LastAttr</TT> keywords can be used to indicate that |
<tt>FirstAttr</tt> and <tt>LastAttr</tt> keywords can be used to indicate that |
the rules must only be applied if this attribute is the first attribute for |
the rules must only be applied if this attribute is the first attribute for |
the element or if it is the last (respectively). These conditions can also be |
the element or if it is the last (respectively). These conditions can also be |
inverted by the <TT>NOT</TT> keyword. These conditions can be associated only |
inverted by the <tt>NOT</tt> keyword. These conditions can be associated only |
with <A href="#sectc4232">creation rules</A>.</P> |
with <a href="#sectc4232">creation rules</a>.</p> |
<P> |
<p> |
It is also possible to apply certain presentation rules only when the element |
It is also possible to apply certain presentation rules only when the element |
being processed or one of its ancestors has a certain attribute, perhaps with |
being processed or one of its ancestors has a certain attribute, perhaps with |
a certain value. This can be done in the <A |
a certain value. This can be done in the <a |
href="#sectc4210"><TT>ATTRIBUTES</TT> section</A>.</P> |
href="#sectc4210"><tt>ATTRIBUTES</tt> section</a>.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd42144>Conditions on page breaks</A></H4> |
|
|
|
<P> |
<h4><a name="sectd42144">Conditions on page breaks</a></h4> |
|
<p> |
The page break base type (and only this type) can use the following |
The page break base type (and only this type) can use the following |
conditions: <TT>ComputedPage</TT>, <TT>StartPage</TT>, and <TT>UserPage</TT>. |
conditions: <tt>ComputedPage</tt>, <tt>StartPage</tt>, and <tt>UserPage</tt>. |
The <TT>ComputedPage</TT> condition indicates that the presentation rule(s) |
The <tt>ComputedPage</tt> condition indicates that the presentation rule(s) |
should apply if the page break was created automatically by Thot; the |
should apply if the page break was created automatically by Thot; the |
<TT>StartPage</TT> condition is true if the page break is generated before the |
<tt>StartPage</tt> condition is true if the page break is generated before the |
element by the <TT>Page</TT> rule; and the <TT>UserPage</TT> condition applies |
element by the <tt>Page</tt> rule; and the <tt>UserPage</tt> condition applies |
if the page break was inserted by the user.</P> |
if the page break was inserted by the user.</p> |
<P> |
<p> |
These conditions can be associated only with <A href="#sectc4232">creation |
These conditions can be associated only with <a href="#sectc4232">creation |
rules</A>.</P> |
rules</a>.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd42145>Conditions on the element's content</A></H4> |
|
|
|
<P> |
<h4><a name="sectd42145">Conditions on the element's content</a></h4> |
|
<p> |
The condition can be based on whether or not the element is empty. An element |
The condition can be based on whether or not the element is empty. An element |
which has no children or whose leaves are all empty is considered to be empty |
which has no children or whose leaves are all empty is considered to be empty |
itself. This condition is expressed by the <TT>Empty</TT> keyword, optionally |
itself. This condition is expressed by the <tt>Empty</tt> keyword, optionally |
preceded by the <TT>NOT</TT> keyword. This condition can be associated only |
preceded by the <tt>NOT</tt> keyword. This condition can be associated only |
with <A href="#sectc4232">creation rules</A>.</P> |
with <a href="#sectc4232">creation rules</a>.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd42146>Conditions on counters</A></H4> |
|
|
|
<P> |
<h4><a name="sectd42146">Conditions on counters</a></h4> |
|
<p> |
Presentation rules can apply when the counter's value is one, is even or odd, |
Presentation rules can apply when the counter's value is one, is even or odd, |
is equal, greater than or less than a given value or falls in a range of |
is equal, greater than or less than a given value or falls in a range of |
values. This is particularly useful for creating header and footer boxes. |
values. This is particularly useful for creating header and footer boxes. |
These conditions can be associated only with <A href="#sectc4232">creation |
These conditions can be associated only with <a href="#sectc4232">creation |
rules</A>.</P> |
rules</a>.</p> |
<P> |
<p> |
To compare the value of a counter to a given value, a comparison is given |
To compare the value of a counter to a given value, a comparison is given |
between parentheses. The comparison is composed of the counter name followed |
between parentheses. The comparison is composed of the counter name followed |
by an equals, greater than, or less than sign and the value to which the |
by an equals, greater than, or less than sign and the value to which the |
counter will be compared. A test for whether or not a counter's value falls |
counter will be compared. A test for whether or not a counter's value falls |
in a range also appears within parentheses. In this case, the counter name is |
in a range also appears within parentheses. In this case, the counter name is |
followed by the <TT>IN</TT> keyword and the range definition within brackets. |
followed by the <tt>IN</tt> keyword and the range definition within brackets. |
The <TT>Even</TT>, <TT>Odd</TT> and <TT>One</TT> are used to test a counter's |
The <tt>Even</tt>, <tt>Odd</tt> and <tt>One</tt> are used to test a counter's |
value and are followed by the counter name between parentheses.</P> |
value and are followed by the counter name between parentheses.</p> |
<P> |
<p> |
The list of possible conditions on counters is:</P> |
The list of possible conditions on counters is:</p> |
<DL> |
<dl> |
<DT><TT>Even (Counter)</TT></DT> |
<dt><tt>Even (Counter)</tt></dt> |
<DD>the box is created only if the counter has an even value. |
<dd> |
</DD> |
the box is created only if the counter has an even value. |
<DT><TT>Odd (Counter)</TT></DT> |
</dd> |
<DD>the box is created only if the counter has an odd value. |
<dt><tt>Odd (Counter)</tt></dt> |
</DD> |
<dd> |
<DT><TT>One (Counter)</TT></DT> |
the box is created only if the counter has an odd value. |
<DD>the box is created only the counter's value is 1. |
</dd> |
</DD> |
<dt><tt>One (Counter)</tt></dt> |
<DT><TT>NOT One (Counter)</TT></DT> |
<dd> |
<DD>the box is created, unless the counter's value is 1. |
the box is created only the counter's value is 1. |
</DD> |
</dd> |
<DT><TT>(Counter < Value)</TT></DT> |
<dt><tt>NOT One (Counter)</tt></dt> |
<DD>the box is created only if the counter's value is less than Value. |
<dd> |
</DD> |
the box is created, unless the counter's value is 1. |
<DT><TT>(Counter > Value)</TT></DT> |
</dd> |
<DD>the box is created only if the counter's value is greater than Value. |
<dt><tt>(Counter < Value)</tt></dt> |
</DD> |
<dd> |
<DT><TT>(Counter = Value)</TT></DT> |
the box is created only if the counter's value is less than Value. |
<DD>the box is created only if the counter's value is equal to Value. |
</dd> |
</DD> |
<dt><tt>(Counter > Value)</tt></dt> |
<DT><TT>NOT (Counter = Value)</TT></DT> |
<dd> |
<DD>the is created only if the counter's value is different than Value. |
the box is created only if the counter's value is greater than Value. |
</DD> |
</dd> |
<DT><TT>(Counter IN [MinValue..MaxValue])</TT></DT> |
<dt><tt>(Counter = Value)</tt></dt> |
<DD>the box is created only if the counter's value falls in the range bounded |
<dd> |
by MinValue and MaxValue (inclusive). |
the box is created only if the counter's value is equal to Value. |
</DD> |
</dd> |
<DT><TT>NOT (Counter IN [MinValue..MaxValue])</TT></DT> |
<dt><tt>NOT (Counter = Value)</tt></dt> |
<DD>the box is created only if the value of the counter does not fall in the |
<dd> |
range bounded by MinValue and MaxValue (inclusive). |
the is created only if the counter's value is different than Value. |
</DD> |
</dd> |
</DL> |
<dt><tt>(Counter IN [MinValue..MaxValue])</tt></dt> |
<P> |
<dd> |
<STRONG>Note:</STRONG> the <TT>NOT Even</TT> and <TT>NOT Odd</TT> conditions |
the box is created only if the counter's value falls in the range bounded by |
are syntactically correct but can be expressed more simply by <TT>Odd</TT> and |
MinValue and MaxValue (inclusive). |
<TT>Even</TT>, respectively.</P> |
</dd> |
</DIV> |
<dt><tt>NOT (Counter IN [MinValue..MaxValue])</tt></dt> |
</DIV> |
<dd> |
|
the box is created only if the value of the counter does not fall in the range |
|
bounded by MinValue and MaxValue (inclusive). |
|
</dd> |
|
</dl> |
|
<p> |
|
<strong>Note:</strong> the <tt>NOT Even</tt> and <tt>NOT Odd</tt> conditions |
|
are syntactically correct but can be expressed more simply by <tt>Odd</tt> and |
|
<tt>Even</tt>, respectively.</p> |
|
</div> |
|
</div> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc4215>A presentation rule</A></H3> |
|
|
|
<P> |
<h3><a name="sectc4215">A presentation rule</a></h3> |
|
<p> |
A presentation rule defines either a presentation parameter or presentation |
A presentation rule defines either a presentation parameter or presentation |
function. The parameters are:</P> |
function. The parameters are:</p> |
<UL> |
<ul> |
<LI>the position of the vertical and horizontal reference axes of the box, |
<li> |
<LI>the position of the box in relation to other boxes, |
the position of the vertical and horizontal reference axes of the box, |
<LI>the height or width of the box, with overflow exceptions, |
<li> |
<LI>the characteristics of the lines contained in the box: linespacing, |
the position of the box in relation to other boxes, |
|
<li> |
|
the height or width of the box, with overflow exceptions, |
|
<li> |
|
the characteristics of the lines contained in the box: linespacing, |
indentation of the first line, justification, hyphenation, |
indentation of the first line, justification, hyphenation, |
<LI>the conditions for breaking the box across pages, |
<li> |
<LI>the characteristics of the characters contained in the box: size, font, |
the conditions for breaking the box across pages, |
style, underlining, |
<li> |
<LI>the depth of the box among overlapping boxes (often called stacking |
the characteristics of the characters contained in the box: size, font, style, |
order), |
underlining, |
<LI>the characteristics of graphic elements contained in the box: style and |
<li> |
|
the depth of the box among overlapping boxes (often called stacking order), |
|
<li> |
|
the characteristics of graphic elements contained in the box: style and |
thickness of lines, fill pattern for closed objects, |
thickness of lines, fill pattern for closed objects, |
<LI>the colors in text, graphics, pictures, and symbols contained in the box |
<li> |
are displayed or printed, |
the colors in text, graphics, pictures, and symbols contained in the box are |
<LI>for presentation boxes only, the contents of the box. |
displayed or printed, |
</UL> |
<li> |
<P> |
for presentation boxes only, the contents of the box. |
The <A name="presfunct">presentation functions</A> are:</P> |
</ul> |
<UL> |
<p> |
<LI>the creation of a presentation box |
The <a name="presfunct">presentation functions</a> are:</p> |
<LI>the line-breaking or page-breaking style, |
<ul> |
<LI>the copying of another box, |
<li> |
<LI>the display of the box background and border, |
the creation of a presentation box |
<LI>the display of a background picture and its aspect. |
<li> |
</UL> |
the line-breaking or page-breaking style, |
<P> |
<li> |
|
the copying of another box, |
|
<li> |
|
the display of the box background and border, |
|
<li> |
|
the display of a background picture and its aspect. |
|
</ul> |
|
<p> |
For each box and each view, every presentation parameter is defined once and |
For each box and each view, every presentation parameter is defined once and |
only once, either explicitly or by the <A href="#sectc427">default |
only once, either explicitly or by the <a href="#sectc427">default rules</a>. |
rules</A>. In contrast, presentation functions are not obligatory and can |
In contrast, presentation functions are not obligatory and can appear many |
appear many times for the same element. for example an element can create |
times for the same element. for example an element can create many |
many presentation boxes. Another element may not use any presentation |
presentation boxes. Another element may not use any presentation |
functions.</P> |
functions.</p> |
<P> |
<p> |
Each rule defining a presentation parameter begins with a keyword followed by |
Each rule defining a presentation parameter begins with a keyword followed by |
a colon. The keyword indicates the parameter which is the subject of the rule. |
a colon. The keyword indicates the parameter which is the subject of the |
After the keyword and the colon, the remainder of the rule varies. All rules |
rule. After the keyword and the colon, the remainder of the rule varies. All |
are terminated by a semicolon.</P> |
rules are terminated by a semicolon.</p> |
<PRE> |
<pre> Rule = PresParam ';' / PresFunc ';' . |
Rule = PresParam ';' / PresFunc ';' . |
|
PresParam ='VertRef' ':' PositionHoriz / |
PresParam ='VertRef' ':' PositionHoriz / |
'HorizRef' ':' PositionVert / |
'HorizRef' ':' PositionVert / |
'VertPos' ':' VPos / |
'VertPos' ':' VPos / |
Line 4221 are terminated by a semicolon.</P>
|
Line 4328 are terminated by a semicolon.</P>
|
'Page' '(' BoxID ')' / |
'Page' '(' BoxID ')' / |
'Copy' '(' BoxTypeToCopy ')' / |
'Copy' '(' BoxTypeToCopy ')' / |
'ShowBox' / |
'ShowBox' / |
'BackgroundPicture' ':' FileName / |
'BackgroundPicture' ':' FileName / |
'PictureMode' ':' PictMode / |
'PictureMode' ':' PictMode /</pre> |
</PRE> |
</div> |
</DIV> |
|
|
<div class="subsection"> |
<DIV class="subsection"> |
|
<H3><A name=sectc4216>Box axes</A></H3> |
<h3><a name="sectc4216">Box axes</a></h3> |
|
<p> |
<P> |
The position of the middle axes <tt>VMiddle</tt> and <tt>HMiddle</tt> in |
The position of the middle axes <TT>VMiddle</TT> and <TT>HMiddle</TT> in |
|
relation to their box is always calculated automatically as a function of the |
relation to their box is always calculated automatically as a function of the |
height and width of the box and is not specified by the presentation rules. In |
height and width of the box and is not specified by the presentation rules. In |
the presentation schema, these middle axes are used only to position their box |
the presentation schema, these middle axes are used only to position their box |
with respect to another by specifying the distance between the middle axis and |
with respect to another by specifying the distance between the middle axis and |
an axis or a side of another box (see the <A href="#sectc4218">relative |
an axis or a side of another box (see the <a href="#sectc4218">relative |
position</A>).</P> |
position</a>).</p> |
<P> |
<p> |
The reference axes of a box are also used to position their box in relation to |
The reference axes of a box are also used to position their box in relation to |
another, but in contrast to the middle axes, the presentation schema must make |
another, but in contrast to the middle axes, the presentation schema must make |
their position explicit, either in relation to a side or the middle axis of |
their position explicit, either in relation to a side or the middle axis of |
the box itself, or in relation to an axis of an enclosed box.</P> |
the box itself, or in relation to an axis of an enclosed box.</p> |
<P> |
<p> |
Only boxes of base elements have predefined reference axes. For character |
Only boxes of base elements have predefined reference axes. For character |
string boxes, the horizontal reference axis is the baseline of the characters |
string boxes, the horizontal reference axis is the baseline of the characters |
(the line which passes immediately under the upper-case letters, ignoring the |
(the line which passes immediately under the upper-case letters, ignoring the |
letter Q) and the vertical reference axis is at the left edge of the first |
letter Q) and the vertical reference axis is at the left edge of the first |
character of the string.</P> |
character of the string.</p> |
<P> |
<p> |
The positions of a box's reference axes are defined by the <TT>VertRef</TT> |
The positions of a box's reference axes are defined by the <tt>VertRef</tt> |
and <TT>HorizRef</TT> rules which specify the <A href="#distance">distance</A> |
and <tt>HorizRef</tt> rules which specify the <a href="#distance">distance</a> |
between the reference axis and an axis or parallel side of the same box or of |
between the reference axis and an axis or parallel side of the same box or of |
an enclosed box.</P> |
an enclosed box.</p> |
<PRE> |
<pre> 'VertRef' ':' PositionHoriz |
'VertRef' ':' PositionHoriz |
'HorizRef' ':' PositionVert</pre> |
'HorizRef' ':' PositionVert |
<blockquote class="example"> |
</PRE> |
<p> |
<BLOCKQUOTE class="example"> |
<strong>Example:</strong></p> |
<P> |
<p> |
<STRONG>Example:</STRONG></P> |
|
<P> |
|
If, in the structure schema for mathematical formulas, the fraction element is |
If, in the structure schema for mathematical formulas, the fraction element is |
defined by</P> |
defined by</p> |
<PRE> |
<pre>Fraction = BEGIN |
Fraction = BEGIN |
|
Numerator = Expression; |
Numerator = Expression; |
Denominator = Expression; |
Denominator = Expression; |
END; |
END;</pre> |
</PRE> |
<p> |
<P> |
|
then the horizontal reference axis of the fraction can be positioned on top of |
then the horizontal reference axis of the fraction can be positioned on top of |
the denominator by the rule:</P> |
the denominator by the rule:</p> |
<PRE> |
<pre>Fraction : |
Fraction : |
|
BEGIN |
BEGIN |
HorizRef : Enclosed Denominator . Top; |
HorizRef : Enclosed Denominator . Top; |
... |
... |
END; |
END;</pre> |
</PRE> |
<p> |
<P> |
To put the horizontal reference axis of a column at its middle:</p> |
To put the horizontal reference axis of a column at its middle:</P> |
<pre>Column : |
<PRE> |
|
Column : |
|
BEGIN |
BEGIN |
HorizRef : * . HMiddle; |
HorizRef : * . HMiddle; |
... |
... |
END; |
END;</pre> |
</PRE> |
</blockquote> |
</BLOCKQUOTE> |
</div> |
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc4217>Distance units</A></H3> |
|
|
|
<P> |
<h3><a name="sectc4217">Distance units</a></h3> |
|
<p> |
Some distances and dimensions appear in many rules of a presentation schema, |
Some distances and dimensions appear in many rules of a presentation schema, |
especially in position rules (<TT>VertPos, HorizPos</TT>), in extent rules for |
especially in position rules (<tt>VertPos, HorizPos</tt>), in extent rules for |
boxes (<TT>Height, Width</TT>), in rules defining lines (<TT>LineSpacing, |
boxes (<tt>Height, Width</tt>), in rules defining lines (<tt>LineSpacing, |
Indent</TT>), in rules controlling pagination (<TT>NoBreak1, NoBreak2</TT>) |
Indent</tt>), in rules controlling pagination (<tt>NoBreak1, NoBreak2</tt>) |
and in rules specifying the thickness of strokes (<TT>LineWeight</TT>).</P> |
and in rules specifying the thickness of strokes (<tt>LineWeight</tt>).</p> |
<P> |
<p> |
In all these rules, the distance or extent can be expressed</P> |
In all these rules, the distance or extent can be expressed</p> |
<UL> |
<ul> |
<LI>either in relative units, which depend on the size of the characters in |
<li> |
the current font: height of the element's font or height of the letter 'x', |
either in relative units, which depend on the size of the characters in the |
<LI>or in absolute units: centimeter, millimeter, inch, typographer's point, |
current font: height of the element's font or height of the letter 'x', |
pica or pixel. |
<li> |
</UL> |
or in absolute units: centimeter, millimeter, inch, typographer's point, pica |
<P> |
or pixel. |
|
</ul> |
|
<p> |
Units can be chosen freely. Thus, it is possible to use relative units in one |
Units can be chosen freely. Thus, it is possible to use relative units in one |
rule, centimeters in the next rule, and typographer's points in another.</P> |
rule, centimeters in the next rule, and typographer's points in another.</p> |
<P> |
<p> |
Absolute units are used to set rigid rules for the appearance of documents. In |
Absolute units are used to set rigid rules for the appearance of documents. In |
contrast, relative units allow changes of scale. The editor lets the value of |
contrast, relative units allow changes of scale. The editor lets the value of |
relative units be changed dynamically. Such changes affect every box using |
relative units be changed dynamically. Such changes affect every box using |
relative units simultaneously and in the same proportion. Changing the value |
relative units simultaneously and in the same proportion. Changing the value |
of the relative units affects the size of the characters and graphical |
of the relative units affects the size of the characters and graphical |
elements, and the size of the boxes and the distances between them.</P> |
elements, and the size of the boxes and the distances between them.</p> |
<P> |
<p> |
A <A name="distance">distance</A> or extent is specified by a number, which |
A <a name="distance">distance</a> or extent is specified by a number, which |
may be followed by one or more spaces and a units keyword. When there is no |
may be followed by one or more spaces and a units keyword. When there is no |
units keyword, the number specifies the number of relative units, where a |
units keyword, the number specifies the number of relative units, where a |
relative unit is the height of a character in the current font (an em). When |
relative unit is the height of a character in the current font (an em). When |
the number is followed by a units keyword, the keyword indicates the type of |
the number is followed by a units keyword, the keyword indicates the type of |
absolute units:</P> |
absolute units:</p> |
<UL> |
<ul> |
<LI><TT>em</TT>: height of the element's font, |
<li> |
<LI><TT>ex</TT>: height of the letter 'x', |
<tt>em</tt>: height of the element's font, |
<LI><TT>cm</TT>: centimeter, |
<li> |
<LI><TT>mm</TT>: millimeter, |
<tt>ex</tt>: height of the letter 'x', |
<LI><TT>in</TT>: inch (1 in = 2.54 cm), |
<li> |
<LI><TT>pt</TT>: point (1 pt = 1/72 in), |
<tt>cm</tt>: centimeter, |
<LI><TT>pc</TT>: pica (1 pc = 12 pt), |
<li> |
<LI><TT>px</TT>: pixel. |
<tt>mm</tt>: millimeter, |
</UL> |
<li> |
<P> |
<tt>in</tt>: inch (1 in = 2.54 cm), |
|
<li> |
|
<tt>pt</tt>: point (1 pt = 1/72 in), |
|
<li> |
|
<tt>pc</tt>: pica (1 pc = 12 pt), |
|
<li> |
|
<tt>px</tt>: pixel. |
|
</ul> |
|
<p> |
Whatever the chosen unit, relative or absolute, the number is not necessarily |
Whatever the chosen unit, relative or absolute, the number is not necessarily |
an integer and may be expressed in fixed point notation (using the American |
an integer and may be expressed in fixed point notation (using the American |
convention of a period to express the decimal point).</P> |
convention of a period to express the decimal point).</p> |
<P> |
<p> |
If the distance appears in a presentation rule for a numeric attribute, the |
If the distance appears in a presentation rule for a numeric attribute, the |
number can be replaced by the name of an attribute. In this case, the value |
number can be replaced by the name of an attribute. In this case, the value |
of the attribute is used. Obviously, the attribute name cannot be followed by |
of the attribute is used. Obviously, the attribute name cannot be followed by |
a decimal point and a fractional part, but it can be followed a units keyword. |
a decimal point and a fractional part, but it can be followed a units keyword. |
However, the choice of units is limited to em, ex, pt and px.</P> |
However, the choice of units is limited to em, ex, pt and px.</p> |
<PRE> |
<pre> Distance = [ Sign ] AbsDist . |
Distance = [ Sign ] AbsDist . |
|
Sign ='+' / '-' . |
Sign ='+' / '-' . |
AbsDist = IntegerOrAttr [ '.' DecimalPart ] |
AbsDist = IntegerOrAttr [ '.' DecimalPart ] |
[ Unit ]. |
[ Unit ]. |
Line 4354 However, the choice of units is limited
|
Line 4461 However, the choice of units is limited
|
IntegerPart = NUMBER . |
IntegerPart = NUMBER . |
DecimalPart = NUMBER . |
DecimalPart = NUMBER . |
Unit ='em' / 'ex' / 'cm' / 'mm' / 'in' / 'pt' / |
Unit ='em' / 'ex' / 'cm' / 'mm' / 'in' / 'pt' / |
'pc' / 'px' / '%' . |
'pc' / 'px' / '%' .</pre> |
</PRE> |
<blockquote class="example"> |
<BLOCKQUOTE class="example"> |
<p> |
<P> |
<strong>Example:</strong></p> |
<STRONG>Example:</STRONG></P> |
<p> |
<P> |
|
The following rules specify that a box has a height of 10.5 centimeters and a |
The following rules specify that a box has a height of 10.5 centimeters and a |
width of 5.3 ems:</P> |
width of 5.3 ems:</p> |
<PRE> |
<pre>Height : 10.5 cm; |
Height : 10.5 cm; |
Width : 5.3;</pre> |
Width : 5.3; |
</blockquote> |
</PRE> |
</div> |
</BLOCKQUOTE> |
|
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc4218>Relative positions</A></H3> |
|
|
|
<P> |
<h3><a name="sectc4218">Relative positions</a></h3> |
|
<p> |
The positioning of boxes uses the eight axes and sides, the sides generally |
The positioning of boxes uses the eight axes and sides, the sides generally |
being used to define the juxtapositioning (vertical or horizontal) of boxes, |
being used to define the juxtapositioning (vertical or horizontal) of boxes, |
the middle axes being used to define centering, and the reference axes being |
the middle axes being used to define centering, and the reference axes being |
used for alignment.</P> |
used for alignment.</p> |
<P> |
<p> |
Two rules allow a box to be placed relative to other boxes. The <TT>VertPos</TT> |
Two rules allow a box to be placed relative to other boxes. The |
rule positions the box vertically. The <TT>HorizPos</TT> rule positions the |
<tt>VertPos</tt> rule positions the box vertically. The <tt>HorizPos</tt> |
box horizontally. It is possible that a box's position could be entirely |
rule positions the box horizontally. It is possible that a box's position |
determined by other boxes positioned relative to it. In this case, the |
could be entirely determined by other boxes positioned relative to it. In this |
position is implicit and the word <TT>nil</TT> can be used to specify that no |
case, the position is implicit and the word <tt>nil</tt> can be used to |
position rule is needed. Otherwise, an explicit rule must be given by |
specify that no position rule is needed. Otherwise, an explicit rule must be |
indicating the axis or side which defines the position of the box, followed by |
given by indicating the axis or side which defines the position of the box, |
an equals sign and the distance between between this axis or side and a |
followed by an equals sign and the distance between between this axis or side |
parallel axis or side of another box, called the reference box. The box for |
and a parallel axis or side of another box, called the reference box. The box |
which the rule is written will be positioned relative to the reference |
for which the rule is written will be positioned relative to the reference |
box.</P> |
box.</p> |
<PRE> |
<pre> 'VertPos' ':' VPos |
'VertPos' ':' VPos |
|
'HorizPos' ':' HPos |
'HorizPos' ':' HPos |
HPos = 'nil' / VertAxis '=' HorizPosition |
HPos = 'nil' / VertAxis '=' HorizPosition |
[ 'UserSpecified' ]. |
[ 'UserSpecified' ]. |
VPos = 'nil' / HorizAxis '=' VertPosition |
VPos = 'nil' / HorizAxis '=' VertPosition |
[ 'UserSpecified' ]. |
[ 'UserSpecified' ]. |
VertAxis = 'Left' / 'VMiddle' / 'VRef' / 'Right' . |
VertAxis = 'Left' / 'VMiddle' / 'VRef' / 'Right' . |
HorizAxis = 'Top' / 'HMiddle' / 'HRef' / 'Bottom' . |
HorizAxis = 'Top' / 'HMiddle' / 'HRef' / 'Bottom' .</pre> |
</PRE> |
<p> |
<P> |
|
The reference box is an adjacent box: enclosing, enclosed or adjacent. When a |
The reference box is an adjacent box: enclosing, enclosed or adjacent. When a |
rule is associated with a reference type attribute (and only in this case), it |
rule is associated with a reference type attribute (and only in this case), it |
can be a box of the element designated by the attribute. The reference box |
can be a box of the element designated by the attribute. The reference box |
can be either a presentation box previously defined in the <TT>BOXES</TT> |
can be either a presentation box previously defined in the <tt>BOXES</tt> |
section of the schema and created by a creation function, or the box |
section of the schema and created by a creation function, or the box |
associated with a structured element.</P> |
associated with a structured element.</p> |
<P> |
<p> |
The structural position of the reference box (relative to the box for which |
The structural position of the reference box (relative to the box for which |
the rule is being written) is indicated by a keyword: <TT>Enclosing</TT>, |
the rule is being written) is indicated by a keyword: <tt>Enclosing</tt>, |
<TT>Enclosed</TT>, or, for sibling boxes, <TT>Previous</TT> or <TT>Next</TT>. |
<tt>Enclosed</tt>, or, for sibling boxes, <tt>Previous</tt> or <tt>Next</tt>. |
The reference attributes, or presentation boxes created by a reference |
The reference attributes, or presentation boxes created by a reference |
attribute, the <TT>Referred</TT> keyword may be used to designate the element |
attribute, the <tt>Referred</tt> keyword may be used to designate the element |
which the reference points to. The keyword <TT>Creator</TT> can be used in |
which the reference points to. The keyword <tt>Creator</tt> can be used in |
rules for presentation boxes to designate the box of the element which created |
rules for presentation boxes to designate the box of the element which created |
the presentation box. Finally, the <TT>Root</TT> keyword can be used to |
the presentation box. Finally, the <tt>Root</tt> keyword can be used to |
designate the root of the document.</P> |
designate the root of the document.</p> |
<P> |
<p> |
When the keyword is ambiguous, it is followed by the name of an element type or |
When the keyword is ambiguous, it is followed by the name of an element type |
presentation box which resolves the ambiguity (the <TT>Creator</TT> and |
or presentation box which resolves the ambiguity (the <tt>Creator</tt> and |
<TT>Root</TT> keywords are never ambiguous). If this name is not given, then |
<tt>Root</tt> keywords are never ambiguous). If this name is not given, then |
the first box encountered is used as the reference box. It is also possible to |
the first box encountered is used as the reference box. It is also possible to |
use just the name of an element type or presentation box without an initial keyword. In |
use just the name of an element type or presentation box without an initial |
this case, a sibling having that name will be used. If the name is preceded |
keyword. In this case, a sibling having that name will be used. If the name |
by the keyword <TT>NOT</TT>, then the reference box will be the first box |
is preceded by the keyword <tt>NOT</tt>, then the reference box will be the |
whose type is not the named one. |
first box whose type is not the named one.</p> |
<P> |
<p> |
In place of the box or type name, the keywords <TT>AnyElem</TT>, |
In place of the box or type name, the keywords <tt>AnyElem</tt>, |
<TT>AnyBox</TT> and <TT>ElemWithAttr</TT> can be used, representing |
<tt>AnyBox</tt> and <tt>ElemWithAttr</tt> can be used, representing |
respectively, any structured element box, any presentation box, and the box |
respectively, any structured element box, any presentation box, and the box |
corresponding to any structured element having a particular attribute, |
corresponding to any structured element having a particular attribute, |
whatever its value; the name of this attribute must follow the keyword |
whatever its value; the name of this attribute must follow the keyword |
<TT>ElemWithAttr</TT>. |
<tt>ElemWithAttr</tt>.</p> |
<P> |
<p> |
A type name may be preceded by a star in order to resolve the ambiguity in the |
A type name may be preceded by a star in order to resolve the ambiguity in the |
special case where the structure schema defines an <A |
special case where the structure schema defines an <a |
href="#sectd3284">inclusion</A> without expansion (or with partial expansion) |
href="#sectd3284">inclusion</a> without expansion (or with partial expansion) |
of the same type as an element of the scheme. For mark pairs (and only for <A |
of the same type as an element of the scheme. For mark pairs (and only for <a |
href="#sectd3285">mark pairs</A>) the type name <EM>must</EM> be preceded by the |
href="#sectd3285">mark pairs</a>) the type name <em>must</em> be preceded by |
<TT>First</TT> or <TT>Second</TT> keyword, which indicates which of the two |
the <tt>First</tt> or <tt>Second</tt> keyword, which indicates which of the |
marks of the pair should be used as the reference box.</P> |
two marks of the pair should be used as the reference box.</p> |
<P> |
<p> |
The star character ('<TT>*</TT>') used alone designates the box to which the |
The star character ('<tt>*</tt>') used alone designates the box to which the |
rule applies (in this case, it is obviously useless to specify the type of the |
rule applies (in this case, it is obviously useless to specify the type of the |
reference box).</P> |
reference box).</p> |
<P> |
<p> |
The keywords <TT>Enclosing</TT> and <TT>Enclosed</TT> can be used no matter |
The keywords <tt>Enclosing</tt> and <tt>Enclosed</tt> can be used no matter |
what constructor defines the type to which the rule applies. When applied to |
what constructor defines the type to which the rule applies. When applied to |
the element which represents the entire document, <TT>Enclosing</TT> |
the element which represents the entire document, <tt>Enclosing</tt> |
designates the window or page in which the document's image is displayed for |
designates the window or page in which the document's image is displayed for |
the view to which the rule applies. A box or type name without a keyword is |
the view to which the rule applies. A box or type name without a keyword is |
used for aggregate elements and designates another element of the same |
used for aggregate elements and designates another element of the same |
aggregate. It can also be used to designate a presentation or page layout |
aggregate. It can also be used to designate a presentation or page layout |
box. The keywords <TT>Previous</TT> and <TT>Next</TT> are primarily used to |
box. The keywords <tt>Previous</tt> and <tt>Next</tt> are primarily used to |
denote list elements, but can also be used to denote elements of an |
denote list elements, but can also be used to denote elements of an |
aggregate.</P> |
aggregate.</p> |
<P> |
<p> |
In the position rule, the structural position relative to the reference box is |
In the position rule, the structural position relative to the reference box is |
followed, after a period, by the name of an axis or side. The rule specifies |
followed, after a period, by the name of an axis or side. The rule specifies |
its node's position as being some distance from this axis or side of the |
its node's position as being some distance from this axis or side of the |
Line 4465 sign is required for negative numbers).
|
Line 4567 sign is required for negative numbers).
|
orientation of the coordinate axes: for top to bottom for the vertical axis |
orientation of the coordinate axes: for top to bottom for the vertical axis |
and from left to right for the horizontal axis. Thus, a negative distance in |
and from left to right for the horizontal axis. Thus, a negative distance in |
a vertical position indicates that the side or axis specified in the rule is |
a vertical position indicates that the side or axis specified in the rule is |
above the side or axis of the reference box.</P> |
above the side or axis of the reference box.</p> |
<P> |
<p> |
The distance can be followed by the <TT>UserSpecified</TT> keyword (even if |
The distance can be followed by the <tt>UserSpecified</tt> keyword (even if |
the distance is nil and does not appear, the <TT>UserSpecified</TT> keyword |
the distance is nil and does not appear, the <tt>UserSpecified</tt> keyword |
can be used). It indicates that when the element to which the rule applies is |
can be used). It indicates that when the element to which the rule applies is |
being created, the editor will ask the user to specify the distance himself, |
being created, the editor will ask the user to specify the distance himself, |
using the mouse. In this case, the distance specified in the rule is a |
using the mouse. In this case, the distance specified in the rule is a |
default distance which is suggested to the user but can be modified. The |
default distance which is suggested to the user but can be modified. The |
<TT>UserSpecified</TT> keyword can be used either in the vertical position |
<tt>UserSpecified</tt> keyword can be used either in the vertical position |
rule, the horizontal position rule, or both.</P> |
rule, the horizontal position rule, or both.</p> |
<PRE> |
<pre> VertPosition = Reference '.' HorizAxis [ Distance ] . |
VertPosition = Reference '.' HorizAxis [ Distance ] . |
|
HorizPosition = Reference '.' VertAxis [ Distance ] . |
HorizPosition = Reference '.' VertAxis [ Distance ] . |
Reference ='Enclosing' [ BoxTypeNot ] / |
Reference ='Enclosing' [ BoxTypeNot ] / |
'Enclosed' [ BoxTypeNot ] / |
'Enclosed' [ BoxTypeNot ] / |
Line 4491 rule, the horizontal position rule, or b
|
Line 4592 rule, the horizontal position rule, or b
|
[ '*' ] [ FirstSec ] ElemID / |
[ '*' ] [ FirstSec ] ElemID / |
'AnyElem' / 'AnyBox' / |
'AnyElem' / 'AnyBox' / |
'ElemWithAttr' AttrID . |
'ElemWithAttr' AttrID . |
BoxTypeNot = [ 'NOT' ] BoxOrType . |
BoxTypeNot = [ 'NOT' ] BoxOrType .</pre> |
</PRE> |
<blockquote class="example"> |
<BLOCKQUOTE class="example"> |
<p> |
<P> |
<strong>Example:</strong></p> |
<STRONG>Example:</STRONG></P> |
<p> |
<P> |
If a <a name="expos1">report</a> is defined by the following structure |
If a <A name="expos1">report</A> is defined by the following |
schema:</p> |
structure schema:</P> |
<pre>Report = BEGIN |
<PRE> |
|
Report = BEGIN |
|
Title = Text; |
Title = Text; |
Summary = Text; |
Summary = Text; |
Keywords = Text; |
Keywords = Text; |
... |
... |
END; |
END;</pre> |
</PRE> |
<p> |
<P> |
then the presentation schema could contain the rules:</p> |
then the presentation schema could contain the rules:</P> |
<pre>Report : BEGIN |
<PRE> |
|
Report : BEGIN |
|
VertPos : Top = Enclosing . Top; |
VertPos : Top = Enclosing . Top; |
HorizPos : Left = Enclosing . Left; |
HorizPos : Left = Enclosing . Left; |
... |
... |
END; |
END;</pre> |
</PRE> |
<p> |
<P> |
These rules place the <a name="reportexample">report</a> in the upper left |
These rules place the <A name="reportexample">report</A> in the upper left |
corner of the enclosing box, which is the window in which the document is |
corner of the enclosing box, which is the window in which the document is being |
being edited.</p> |
edited.</P> |
<pre>Title : BEGIN |
<PRE> |
|
Title : BEGIN |
|
VertPos : Top = Enclosing . Top + 1; |
VertPos : Top = Enclosing . Top + 1; |
HorizPos : VMiddle = Enclosing . VMiddle; |
HorizPos : VMiddle = Enclosing . VMiddle; |
... |
... |
END; |
END;</pre> |
</PRE> |
<p> |
<P> |
|
The top of the title is one line (a line has the height of the characters of |
The top of the title is one line (a line has the height of the characters of |
the title) from the top of the report, which is also the top of the editing |
the title) from the top of the report, which is also the top of the editing |
window. The title is centered horizontally in the window (see <A |
window. The title is centered horizontally in the window (see <a |
href="#posdim">figure</A>).</P> |
href="#posdim">figure</a>).</p> |
<PRE> |
<pre>Summary : BEGIN |
Summary : BEGIN |
|
VertPos : Top = Title . Bottom + 1.5; |
VertPos : Top = Title . Bottom + 1.5; |
HorizPos : Left = Enclosing . Left + 2 cm; |
HorizPos : Left = Enclosing . Left + 2 cm; |
... |
... |
END; |
END;</pre> |
</PRE> |
<p> |
<P> |
The top of the summary is place a line and a half below the bottom of the |
The top of the summary is place a line and a half below the bottom of the title |
title and is shifted two centimeters from the side of the window.</p> |
and is shifted two centimeters from the side of the window.</P> |
</blockquote> |
</BLOCKQUOTE> |
<blockquote class="example"> |
<BLOCKQUOTE class="example"> |
<p> |
<P> |
<strong>Example:</strong></p> |
<STRONG>Example:</STRONG></P> |
<p> |
<P> |
Suppose there is a <a name="expos2">Design</a> logical structure which |
Suppose there is a <A name="expos2">Design</A> logical structure which contains |
contains graphical elements:</p> |
graphical elements:</P> |
<pre>Design = LIST OF (ElemGraph = GRAPHICS);</pre> |
<PRE> |
<p> |
Design = LIST OF (ElemGraph = GRAPHICS); |
|
</PRE> |
|
<P> |
|
The following rules allow the user to freely choose the position of each |
The following rules allow the user to freely choose the position of each |
element when it is created:</P> |
element when it is created:</p> |
<PRE> |
<pre>ElemGraph = |
ElemGraph = |
|
BEGIN |
BEGIN |
VertPos : Top = Enclosing . Top + 1 cm UserSpecified; |
VertPos : Top = Enclosing . Top + 1 cm UserSpecified; |
HorizPos: Left = Enclosing . Left UserSpecified; |
HorizPos: Left = Enclosing . Left UserSpecified; |
... |
... |
END; |
END;</pre> |
</PRE> |
<p> |
<P> |
Thus, when a graphical element is created, its default placement is at the |
Thus, when a graphical element is created, its default placement is at the left |
left of the window and 1 cm from the top, but the user can move it |
of the window and 1 cm from the top, but the user can move it immediately, |
immediately, simply by moving the mouse.</p> |
simply by moving the mouse.</P> |
</blockquote> |
</BLOCKQUOTE> |
</div> |
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc4219>Box extents</A></H3> |
|
|
|
<P> |
<h3><a name="sectc4219">Box extents</a></h3> |
|
<p> |
The extents (height and width) of each box are defined by the two rules |
The extents (height and width) of each box are defined by the two rules |
<TT>Height</TT> and <TT>Width</TT>. There are three types of extents: fixed, |
<tt>Height</tt> and <tt>Width</tt>. There are three types of extents: fixed, |
relative, and elastic.</P> |
relative, and elastic.</p> |
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd42191>Fixed extents</A></H4> |
|
|
|
<P> |
<h4><a name="sectd42191">Fixed extents</a></h4> |
|
<p> |
A fixed dimension sets the height or width of the box independently of all |
A fixed dimension sets the height or width of the box independently of all |
other boxes. It is expressed in <A href="#sectc4217">distance units</A>. The |
other boxes. It is expressed in <a href="#sectc4217">distance units</a>. The |
extent can be followed by the <TT>UserSpecified</TT> keyword which indicates |
extent can be followed by the <tt>UserSpecified</tt> keyword which indicates |
that when the element to which the rule applies is being created, the editor |
that when the element to which the rule applies is being created, the editor |
will ask the user to specify the extent himself, using the mouse. In this |
will ask the user to specify the extent himself, using the mouse. In this |
case, the extent specified in the rule is a default extent which is suggested |
case, the extent specified in the rule is a default extent which is suggested |
to the user but can be modified. The <TT>UserSpecified</TT> keyword can be |
to the user but can be modified. The <tt>UserSpecified</tt> keyword can be |
used either in the <TT>Height</TT> rule, the <TT>Width</TT> rule, or both.</P> |
used either in the <tt>Height</tt> rule, the <tt>Width</tt> rule, or both.</p> |
<P> |
<p> |
A fixed extent rule can be ended by the <TT>Min</TT> keyword, which signifies |
A fixed extent rule can be ended by the <tt>Min</tt> keyword, which signifies |
that the indicated value is a minimum, and that, if the contents of the box |
that the indicated value is a minimum, and that, if the contents of the box |
require it, a larger extent is possible.</P> |
require it, a larger extent is possible.</p> |
<PRE> |
<pre> 'Height' ':' Dimension |
'Height' ':' Dimension |
|
'Width' ':' Dimension |
'Width' ':' Dimension |
Dimension = AbsDist [ 'UserSpecified' ] [ 'Min' ] / |
Dimension = AbsDist [ 'UserSpecified' ] [ 'Min' ] / |
... |
...</pre> |
</PRE> |
<blockquote class="example"> |
<BLOCKQUOTE class="example"> |
<p> |
<P> |
<strong>Example:</strong></p> |
<STRONG>Example:</STRONG></P> |
<p> |
<P> |
Continuing with the <a href="#expos2">previous example</a>, it is possible to |
Continuing with the <A href="#expos2">previous example</A>, it is possible to |
|
allow the user to choose the size of each graphical element as it is |
allow the user to choose the size of each graphical element as it is |
created:</P> |
created:</p> |
<PRE> |
<pre>ElemGraph : BEGIN |
ElemGraph : BEGIN |
|
Width : 2 cm UserSpecified; |
Width : 2 cm UserSpecified; |
Height : 1 cm UserSpecified; |
Height : 1 cm UserSpecified; |
... |
... |
END; |
END;</pre> |
</PRE> |
<p> |
<P> |
|
Thus, when a graphical element is create, it is drawn by default with a width |
Thus, when a graphical element is create, it is drawn by default with a width |
of 2 cm and a height of 1 cm, but the user is free to resize it immediately |
of 2 cm and a height of 1 cm, but the user is free to resize it immediately |
with the mouse.</P> |
with the mouse.</p> |
<PRE> |
<pre>Summary : BEGIN |
Summary : BEGIN |
|
Height : 5 cm Min; |
Height : 5 cm Min; |
... |
... |
END; |
END; |
Keywords : BEGIN |
Keywords : BEGIN |
VertPos : Top = Summary . Bottom; |
VertPos : Top = Summary . Bottom; |
... |
... |
END; |
END;</pre> |
</PRE> |
</blockquote> |
</BLOCKQUOTE> |
</div> |
</DIV> |
|
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd42192>Relative extents</A></H4> |
|
|
|
<P> |
<h4><a name="sectd42192">Relative extents</a></h4> |
|
<p> |
A relative extent determines the extent as a function of the extent of another |
A relative extent determines the extent as a function of the extent of another |
box, just as a relative position places a box in relation to another. The |
box, just as a relative position places a box in relation to another. The |
reference box in an extent rule is designated using the same syntax as is used |
reference box in an extent rule is designated using the same syntax as is used |
in a relative position rule. It is followed by a period and a <TT>Height</TT> |
in a relative position rule. It is followed by a period and a <tt>Height</tt> |
or <TT>Width</TT> keyword, depending on the extent being referred to. Next |
or <tt>Width</tt> keyword, depending on the extent being referred to. Next |
comes the relation between the extent being defined and the extent of the |
comes the relation between the extent being defined and the extent of the |
reference box. This relation can be either a percentage or a difference.</P> |
reference box. This relation can be either a percentage or a difference.</p> |
<P> |
<p> |
A percentage is indicated by a star (the multiplication symbol) followed by |
A percentage is indicated by a star (the multiplication symbol) followed by |
the numeric percentage value (which may be greater than or less than 100) and |
the numeric percentage value (which may be greater than or less than 100) and |
the percent (`%') character. A difference is simply indicated by a signed |
the percent (`%') character. A difference is simply indicated by a signed |
difference.</P> |
difference.</p> |
<P> |
<p> |
If the rule appears in the presentation rules of a numeric attribute, the |
If the rule appears in the presentation rules of a numeric attribute, the |
percentage value can be replaced by the name of the attribute. This attribute |
percentage value can be replaced by the name of the attribute. This attribute |
is then used as a percentage. The attribute can also be used as part of a <A |
is then used as a percentage. The attribute can also be used as part of a <a |
href="#distance">difference</A>.</P> |
href="#distance">difference</a>.</p> |
<P> |
<p> |
Just as with a fixed extent, a relative extent rule can end with the |
Just as with a fixed extent, a relative extent rule can end with the |
<TT>Min</TT> keyword, which signifies that the extent is a minimum and that, |
<tt>Min</tt> keyword, which signifies that the extent is a minimum and that, |
if the contents of the box require it, a larger extent is possible.</P> |
if the contents of the box require it, a larger extent is possible.</p> |
<P> |
<p> |
A special case of relative extent rules is:</P> |
A special case of relative extent rules is:</p> |
<PRE> |
<pre>Height : Enclosed . Height;</pre> |
Height : Enclosed . Height; |
<p> |
</PRE> |
or</p> |
<P> |
<pre>Width : Enclosed . Width;</pre> |
or</P> |
<p> |
<PRE> |
|
Width : Enclosed . Width; |
|
</PRE> |
|
<P> |
|
which specifies that the box has a height (or width) such that it encloses all |
which specifies that the box has a height (or width) such that it encloses all |
the boxes which it contains, excluding boxes having a rule <TT>VertOverflow: |
the boxes which it contains, excluding boxes having a rule <tt>VertOverflow: |
Yes;</TT> or <TT>HorizOverflow: Yes;</TT>.</P> |
Yes;</tt> or <tt>HorizOverflow: Yes;</tt>.</p> |
<P> |
<p> |
<STRONG>Note:</STRONG> character strings (type <TT>TEXT_UNIT</TT>) generally |
<strong>Note:</strong> character strings (type <tt>TEXT_UNIT</tt>) generally |
must use the sum of the widths of the characters which compose them as their |
must use the sum of the widths of the characters which compose them as their |
width, which is expressed by the rule:</P> |
width, which is expressed by the rule:</p> |
<PRE> |
<pre>TEXT_UNIT : |
TEXT_UNIT : |
Width : Enclosed . Width;</pre> |
Width : Enclosed . Width; |
<p> |
</PRE> |
If this rule is not the default <tt>Width</tt> rule, it must be given |
<P> |
explicitly in the <tt>RULES</tt> section which defines the presentation rules |
If this rule is not the default <TT>Width</TT> rule, it must be given |
of the logical elements.</p> |
explicitly in the <TT>RULES</TT> section which defines the presentation rules |
<pre> 'Height' ':' Extent |
of the logical elements.</P> |
|
<PRE> |
|
'Height' ':' Extent |
|
'Width' ':' Extent |
'Width' ':' Extent |
Extent = Reference '.' HeightWidth [ Relation ] |
Extent = Reference '.' HeightWidth [ Relation ] |
[ 'Min' ] / ... |
[ 'Min' ] / ... |
HeightWidth ='Height' / 'Width' . |
HeightWidth ='Height' / 'Width' . |
Relation ='*' ExtentAttr '%' / Distance . |
Relation ='*' ExtentAttr '%' / Distance . |
ExtentAttr = ExtentVal / AttrID . |
ExtentAttr = ExtentVal / AttrID . |
ExtentVal = NUMBER . |
ExtentVal = NUMBER .</pre> |
</PRE> |
<blockquote class="example"> |
<BLOCKQUOTE class="example"> |
<p> |
<P> |
<strong>Example:</strong></p> |
<STRONG>Example:</STRONG></P> |
<p> |
<P> |
Completing the <a href="#expos1">above example</a>, it is possible to specify |
Completing the <A href="#expos1">above example</A>, it is possible to specify |
that the report takes its width from the editing window and its height from |
that the report takes its width from the editing window and its height from the |
the size of its contents (this can obviously be greater than that of the |
size of its contents (this can obviously be greater than that of the |
window):</p> |
window):</P> |
<pre>Report : BEGIN |
<PRE> |
|
Report : BEGIN |
|
Width : Enclosing . Width; |
Width : Enclosing . Width; |
Height : Enclosed . Height; |
Height : Enclosed . Height; |
... |
... |
END; |
END;</pre> |
</PRE> |
<p> |
<P> |
|
Then, the following rules make the title occupy 60% of the width of the report |
Then, the following rules make the title occupy 60% of the width of the report |
(which is that of the window) and is broken into centered lines of this width |
(which is that of the window) and is broken into centered lines of this width |
(see the <A href="#sectc4222"><TT>Line</TT> rule</A>).</P> |
(see the <a href="#sectc4222"><tt>Line</tt> rule</a>).</p> |
<PRE> |
<pre>Title : BEGIN |
Title : BEGIN |
|
Width : Enclosing . Width * 60%; |
Width : Enclosing . Width * 60%; |
Height : Enclosed . Height; |
Height : Enclosed . Height; |
Line; |
Line; |
Adjust : VMiddle; |
Adjust : VMiddle; |
... |
... |
END; |
END;</pre> |
</PRE> |
<p> |
<P> |
The summary occupy the entire width of the window, with the exception of a 2 |
The summary occupy the entire width of the window, with the exception of a 2 cm |
cm margin reserved by the horizontal position rule:</p> |
margin reserved by the horizontal position rule:</P> |
<pre>Summary : BEGIN |
<PRE> |
|
Summary : BEGIN |
|
Width : Enclosing . Width - 2 cm; |
Width : Enclosing . Width - 2 cm; |
Height : Enclosed . Height; |
Height : Enclosed . Height; |
... |
... |
END; |
END;</pre> |
</PRE> |
<p> |
<P> |
This set of rules, plus the <a href="#reportexample">position rules given |
This set of rules, plus the <A href="#reportexample">position rules given |
above</a>, produce the layout of boxes shown in the following<a |
above</A>, produce the layout of boxes shown in the following<A |
href="#posdim">figure</a>.</p> |
href="#posdim">figure</A>.</P> |
|
|
<div class="figure"> |
<DIV class="figure"> |
<hr> |
<HR> |
<pre>------------------------------------------------------------- |
<PRE> |
|
------------------------------------------------------------- |
|
| Window and Report ^ | |
| Window and Report ^ | |
| | 1 line | |
| | 1 line | |
| v | |
| v | |
Line 4757 href="#posdim">figure</A>.</P>
|
Line 4824 href="#posdim">figure</A>.</P>
|
| ---------------------------------------------------| |
| ---------------------------------------------------| |
| 2 cm | | |
| 2 cm | | |
|<------>| Summary | |
|<------>| Summary | |
: : : |
: : :</pre> |
</PRE> |
<p align=center> |
<P align=center> |
<em><a name="posdim">Box position and extent</a><em></em></em></p> |
<EM><A name="posdim">Box position and extent</A><EM></EM></EM></P> |
<hr> |
<HR> |
</div> |
</DIV> |
</blockquote> |
</BLOCKQUOTE> |
</div> |
</DIV> |
|
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd42193>Elastic extents</A></H4> |
|
|
|
<P> |
<h4><a name="sectd42193">Elastic extents</a></h4> |
|
<p> |
The last type of extent is the elastic extent. Either one or both extents can |
The last type of extent is the elastic extent. Either one or both extents can |
be elastic. A box has an elastic extent when two opposite sides are linked by |
be elastic. A box has an elastic extent when two opposite sides are linked by |
distance constraints to two sides or axes of other boxes.</P> |
distance constraints to two sides or axes of other boxes.</p> |
<P> |
<p> |
One of the sides of the elastic box is linked by a position rule |
One of the sides of the elastic box is linked by a position rule |
(<TT>VertPos</TT> or <TT>HorizPos</TT>) to a neighboring box. The other side |
(<tt>VertPos</tt> or <tt>HorizPos</tt>) to a neighboring box. The other side |
is link to another box by a <TT>Height</TT> or <TT>Width</TT> rule, which |
is link to another box by a <tt>Height</tt> or <tt>Width</tt> rule, which |
takes the same form as the position rule. For the elastic box itself, the |
takes the same form as the position rule. For the elastic box itself, the |
notions of sides (left or right, top or bottom) are fuzzy, since the movement |
notions of sides (left or right, top or bottom) are fuzzy, since the movement |
of either one of the two reference boxes can, for example, make the left side |
of either one of the two reference boxes can, for example, make the left side |
of the elastic box move to the right of its right side. This is not |
of the elastic box move to the right of its right side. This is not |
important. The only requirement is that the two sides of the elastic box used |
important. The only requirement is that the two sides of the elastic box used |
in the position and extent rule are opposite sides of the box.</P> |
in the position and extent rule are opposite sides of the box.</p> |
<PRE> |
<pre> 'Height' ':' Extent |
'Height' ':' Extent |
|
'Width' ':' Extent |
'Width' ':' Extent |
Extent = HPos / VPos / ... |
Extent = HPos / VPos / ...</pre> |
</PRE> |
<blockquote class="example"> |
<BLOCKQUOTE class="example"> |
<p> |
<P> |
<strong>Example:</strong></p> |
<STRONG>Example:</STRONG></P> |
<p> |
<P> |
|
Suppose we want to draw an elastic arrow or line between the middle of the |
Suppose we want to draw an elastic arrow or line between the middle of the |
bottom side of box A and the upper left corner of box B. To do this, we would |
bottom side of box A and the upper left corner of box B. To do this, we would |
define a graphics box whose upper left corner coincides with the middle of the |
define a graphics box whose upper left corner coincides with the middle of the |
bottom side of A (a position rule) and whose lower right corner coincides with |
bottom side of A (a position rule) and whose lower right corner coincides with |
with the upper left corner of B (dimension rules):</P> |
with the upper left corner of B (dimension rules):</p> |
<PRE> |
<pre>LinkedBox : |
LinkedBox : |
|
BEGIN |
BEGIN |
VertPos : Top = A .Bottom; |
VertPos : Top = A .Bottom; |
HorizPos : Left = A . VMiddle; |
HorizPos : Left = A . VMiddle; |
Height : Bottom = B . Top; |
Height : Bottom = B . Top; |
Width : Right = B . Left; |
Width : Right = B . Left; |
END; |
END;</pre> |
</PRE> |
</blockquote> |
</BLOCKQUOTE> |
<blockquote class="example"> |
<BLOCKQUOTE class="example"> |
<p> |
<P> |
<strong>Example:</strong></p> |
<STRONG>Example:</STRONG></P> |
<p> |
<P> |
|
The element SectionTitle creates a presentation box called SectionNum which |
The element SectionTitle creates a presentation box called SectionNum which |
contains the number of the section. Suppose we want to align the SectionNum |
contains the number of the section. Suppose we want to align the SectionNum |
and SectionTitle horizontally, have the SectionNum take its width from its |
and SectionTitle horizontally, have the SectionNum take its width from its |
contents (the section number), have the SectionTitle box begin 0.5 cm to the |
contents (the section number), have the SectionTitle box begin 0.5 cm to the |
right of the SectionNum box and end at the right edge of its enclosing box. |
right of the SectionNum box and end at the right edge of its enclosing box. |
This would make the SectionTitle box elastic, since its width is defined by the |
This would make the SectionTitle box elastic, since its width is defined by |
position of its left and right sides. The following rules produce this |
the position of its left and right sides. The following rules produce this |
effect:</P> |
effect:</p> |
<PRE> |
<pre>SectionNum : |
SectionNum : |
|
BEGIN |
BEGIN |
HorizPos : Left = Enclosing . Left; |
HorizPos : Left = Enclosing . Left; |
Width : Enclosed . Width; |
Width : Enclosed . Width; |
Line 4832 SectionTitle :
|
Line 4893 SectionTitle :
|
HorizPos : Left = SectionNum . Right + 0.5 cm; |
HorizPos : Left = SectionNum . Right + 0.5 cm; |
Width : Right = Enclosing . Right; |
Width : Right = Enclosing . Right; |
... |
... |
END; |
END;</pre> |
</PRE> |
</blockquote> |
</BLOCKQUOTE> |
</div> |
</DIV> |
</div> |
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name="sectc4220">Overflow</A></H3> |
|
|
|
<P> |
<h3><a name="sectc4220">Overflow</a></h3> |
|
<p> |
A boxes corresponding to a structural element normally contain all boxes |
A boxes corresponding to a structural element normally contain all boxes |
corresponding to the elements of its subtree. However, in some cases, it |
corresponding to the elements of its subtree. However, in some cases, it |
could be necessary to allow a box to jut out from its parent box. Two |
could be necessary to allow a box to jut out from its parent box. Two |
presentation rules indicate that such an overflow is allowed, one for |
presentation rules indicate that such an overflow is allowed, one for |
horizontal overflow, one for vertical overflow.</P> |
horizontal overflow, one for vertical overflow.</p> |
<P> |
<p> |
Each of these rules is expressed by a keyword followed by a colon and the |
Each of these rules is expressed by a keyword followed by a colon and the |
keyword <TT>Yes</TT> or <TT>No</TT>.</P> |
keyword <tt>Yes</tt> or <tt>No</tt>.</p> |
<PRE> |
<pre> 'VertOverflow' ':' Boolean / |
'VertOverflow' ':' Boolean / |
|
'HorizOverflow' ':' Boolean . |
'HorizOverflow' ':' Boolean . |
Boolean = 'Yes' / 'No' . |
Boolean = 'Yes' / 'No' .</pre> |
</PRE> |
</div> |
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc4221>Inheritance</A></H3> |
|
|
|
<P> |
<h3><a name="sectc4221">Inheritance</a></h3> |
|
<p> |
A presentation parameter can be defined by reference to the same parameter of |
A presentation parameter can be defined by reference to the same parameter of |
another box in the tree of boxes. These structural links are expressed by |
another box in the tree of boxes. These structural links are expressed by |
kinship. The reference box can be that of the element immediately above in |
kinship. The reference box can be that of the element immediately above in |
the structure (<TT>Enclosing</TT>), two levels above (<TT>GrandFather</TT>), |
the structure (<tt>Enclosing</tt>), two levels above (<tt>GrandFather</tt>), |
immediately below (<TT>Enclosed</TT>) or immediately before |
immediately below (<tt>Enclosed</tt>) or immediately before |
(<TT>Previous</TT>). In the case of a presentation box, and only in that |
(<tt>Previous</tt>). In the case of a presentation box, and only in that |
case, the reference box may be the element which created the presentation box |
case, the reference box may be the element which created the presentation box |
(<TT>Creator</TT>).</P> |
(<tt>Creator</tt>).</p> |
<P> |
<p> |
Kinship is expressed in terms of the logical structure of the document and not |
Kinship is expressed in terms of the logical structure of the document and not |
in terms of the tree of boxes. The presentation box cannot transmit any of |
in terms of the tree of boxes. The presentation box cannot transmit any of |
their parameters by inheritance; only structured element boxes can do so. As |
their parameters by inheritance; only structured element boxes can do so. As |
an example, consider an element B which follows an element A in the logical |
an example, consider an element B which follows an element A in the logical |
structure. The element B creates a presentation box P in front of itself, |
structure. The element B creates a presentation box P in front of itself, |
using the <TT>CreateBefore</TT> rule (see the <A href="#sectc4232">creation |
using the <tt>CreateBefore</tt> rule (see the <a href="#sectc4232">creation |
rules</A>). If element B's box inherits its character style using the |
rules</a>). If element B's box inherits its character style using the |
<TT>Previous</TT> kinship operation, it gets its character style from A's box, |
<tt>Previous</tt> kinship operation, it gets its character style from A's box, |
not from P's box. Inheritance works differently for positions and extents, |
not from P's box. Inheritance works differently for positions and extents, |
which can refer to presentation boxes.</P> |
which can refer to presentation boxes.</p> |
<P> |
<p> |
The inherited parameter value can be the same as that of the reference box. |
The inherited parameter value can be the same as that of the reference box. |
This is indicated by an equals sign. However, for numeric parameters, a |
This is indicated by an equals sign. However, for numeric parameters, a |
different value can be obtained by adding or subtracting a number from the |
different value can be obtained by adding or subtracting a number from the |
reference box's parameter value. Addition is indicated by a plus sign before |
reference box's parameter value. Addition is indicated by a plus sign before |
the number, while subtraction is specified with a minus sign. The value of a |
the number, while subtraction is specified with a minus sign. The value of a |
parameter can also be given a maximum (if the sign is a plus) or minimum (if |
parameter can also be given a maximum (if the sign is a plus) or minimum (if |
the sign is a minus).</P> |
the sign is a minus).</p> |
<P> |
<p> |
If the rule is being applied to a numeric attribute, the number to add or |
If the rule is being applied to a numeric attribute, the number to add or |
subtract can be replaced by the attribute name. The value of a maximum or |
subtract can be replaced by the attribute name. The value of a maximum or |
minimum may also be replaced by an attribute name. In these cases, the value |
minimum may also be replaced by an attribute name. In these cases, the value |
of the attribute is used.</P> |
of the attribute is used.</p> |
<PRE> |
<pre> Inheritance = Kinship InheritedValue . |
Inheritance = Kinship InheritedValue . |
|
Kinship ='Enclosing' / 'GrandFather' / 'Enclosed' / |
Kinship ='Enclosing' / 'GrandFather' / 'Enclosed' / |
'Previous' / 'Creator' . |
'Previous' / 'Creator' . |
InheritedValue ='+' PosIntAttr [ 'Max' maximumA ] / |
InheritedValue ='+' PosIntAttr [ 'Max' maximumA ] / |
Line 4907 of the attribute is used.</P>
|
Line 4964 of the attribute is used.</P>
|
maximumA = maximum / AttrID . |
maximumA = maximum / AttrID . |
maximum = NUMBER . |
maximum = NUMBER . |
minimumA = minimum / AttrID . |
minimumA = minimum / AttrID . |
minimum = NUMBER . |
minimum = NUMBER .</pre> |
</PRE> |
<p> |
<P> |
|
The parameters which can be obtained by inheritance are justification, |
The parameters which can be obtained by inheritance are justification, |
hyphenation, interline spacing, character font (font family), font style, font |
hyphenation, interline spacing, character font (font family), font style, font |
size, visibility, indentation, underlining, alignment of text, stacking order |
size, visibility, indentation, underlining, alignment of text, stacking order |
of objects, the style and thickness of lines, fill pattern and the colors of |
of objects, the style and thickness of lines, fill pattern and the colors of |
lines and characters.</P> |
lines and characters.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc4222>Line breaking</A></H3> |
|
|
|
<P> |
<h3><a name="sectc4222">Line breaking</a></h3> |
The <TT>Line</TT> rule specifies that the contents of the box should be broken |
<p> |
|
The <tt>Line</tt> rule specifies that the contents of the box should be broken |
into lines: the boxes included in the box to which this rule is attached are |
into lines: the boxes included in the box to which this rule is attached are |
displayed one after the other, from left to right, with their horizontal |
displayed one after the other, from left to right, with their horizontal |
reference axes aligned so that they form a series of lines. The length of |
reference axes aligned so that they form a series of lines. The length of |
these lines is equal to the width of the box to which the <TT>Line</TT> rule |
these lines is equal to the width of the box to which the <tt>Line</tt> rule |
is attached.</P> |
is attached.</p> |
<P> |
<p> |
When an included box overflows the current line, it is either carried forward |
When an included box overflows the current line, it is either carried forward |
to the next line, cur, or left the way it is. The <A |
to the next line, cur, or left the way it is. The <a |
href="#sectc4223"><TT>LineBreak</TT> rule</A> is used to allow or prevent the |
href="#sectc4223"><tt>LineBreak</tt> rule</a> is used to allow or prevent the |
breaking of included boxes. If the included box is not breakable but is |
breaking of included boxes. If the included box is not breakable but is |
longer than the space remaining on the line, it is left as is. When a |
longer than the space remaining on the line, it is left as is. When a |
character string box is breakable, the line is broken between words or, if |
character string box is breakable, the line is broken between words or, if |
necessary, by <A href="#sectd42225">hyphenating a word</A>. When a |
necessary, by <a href="#sectd42225">hyphenating a word</a>. When a compound |
compound box is breakable, the box is transparent in regard to line breaking. |
box is breakable, the box is transparent in regard to line breaking. The boxes |
The boxes included in the compound box are treated just like included boxes |
included in the compound box are treated just like included boxes which have |
which have the <TT>LineBreak</TT> rule. Thus, it is possible to traverse a |
the <tt>LineBreak</tt> rule. Thus, it is possible to traverse a complete |
complete subtree of boxes to line break the text leaves of a complex |
subtree of boxes to line break the text leaves of a complex structure.</p> |
structure.</P> |
<p> |
<P> |
|
The relative position rules of the included boxes are ignored, since the boxes |
The relative position rules of the included boxes are ignored, since the boxes |
will be placed according to the line breaking rules.</P> |
will be placed according to the line breaking rules.</p> |
<P> |
<p> |
The <TT>Line</TT> rule does not have a parameter. The characteristics of the |
The <tt>Line</tt> rule does not have a parameter. The characteristics of the |
lines that will be constructed are determined by the <TT>LineSpacing</TT>, |
lines that will be constructed are determined by the <tt>LineSpacing</tt>, |
<TT>Indent</TT>, <TT>Adjust</TT>, <TT>Justify</TT>, and <TT>Hyphenate</TT> |
<tt>Indent</tt>, <tt>Adjust</tt>, <tt>Justify</tt>, and <tt>Hyphenate</tt> |
rules. Moreover, the <A href="#insectd42226"><TT>Inline</TT> rule</A> permits |
rules. Moreover, the <a href="#insectd42226"><tt>Inline</tt> rule</a> permits |
the exclusion of certain elements from the line breaking process.</P> |
the exclusion of certain elements from the line breaking process.</p> |
<P> |
<p> |
When the <TT>Line</TT> rule appears in the rules sequence of a non-primary |
When the <tt>Line</tt> rule appears in the rules sequence of a non-primary |
view, it applies only to that view, but when the <TT>Line</TT> rule appears in |
view, it applies only to that view, but when the <tt>Line</tt> rule appears in |
the rules sequence of the primary view, it also applies to the other views by |
the rules sequence of the primary view, it also applies to the other views by |
default, except for those views which explicitly invoke the <TT>NoLine</TT> |
default, except for those views which explicitly invoke the <tt>NoLine</tt> |
rule. Thus, the <TT>NoLine</TT> rule can be used in a non-primary view to |
rule. Thus, the <tt>NoLine</tt> rule can be used in a non-primary view to |
override the primary view's <TT>Line</TT> rule. The <TT>NoLine</TT> rule must |
override the primary view's <tt>Line</tt> rule. The <tt>NoLine</tt> rule must |
not be used with the primary view because the absence of the <TT>Line</TT> |
not be used with the primary view because the absence of the <tt>Line</tt> |
rule has the same effect. Like the <TT>Line</TT> rule, the <TT>NoLine</TT> |
rule has the same effect. Like the <tt>Line</tt> rule, the <tt>NoLine</tt> |
rule does not take any parameters.</P> |
rule does not take any parameters.</p> |
<PRE> |
<pre> 'Line' |
'Line' |
'NoLine'</pre> |
'NoLine' |
|
</PRE> |
<div class="subsubsection"> |
|
|
<DIV class="subsubsection"> |
<h4><a name="sectd42221">Line spacing</a></h4> |
<H4><A name=sectd42221>Line spacing</A></H4> |
<p> |
|
The <tt>LineSpacing</tt> rule defines the line spacing to be used in the line |
<P> |
|
The <TT>LineSpacing</TT> rule defines the line spacing to be used in the line |
|
breaking process. The line spacing is the distance between the baselines |
breaking process. The line spacing is the distance between the baselines |
(horizontal reference axis) of the successive lines produced by the |
(horizontal reference axis) of the successive lines produced by the |
<TT>Line</TT> rule. The value of the line spacing can be specified as a |
<tt>Line</tt> rule. The value of the line spacing can be specified as a |
constant or by inheritance. It is expressed in any of the available <A |
constant or by inheritance. It is expressed in any of the available <a |
href="#sectc4217">distance units</A>.</P> |
href="#sectc4217">distance units</a>.</p> |
<P> |
<p> |
Inheritance allows the value to be obtained from a relative in the structure |
Inheritance allows the value to be obtained from a relative in the structure |
tree, either without change (an equals sign appears after the inheritance |
tree, either without change (an equals sign appears after the inheritance |
keyword), with a positive difference (a plus sign), or a negative difference |
keyword), with a positive difference (a plus sign), or a negative difference |
(a minus sign). When the rule uses a difference, the value of the difference |
(a minus sign). When the rule uses a difference, the value of the difference |
follows the sign and is expressed as a <A href="#sectc4217">distance</A>.</P> |
follows the sign and is expressed as a <a href="#sectc4217">distance</a>.</p> |
<PRE> |
<pre> 'LineSpacing' ':' DistOrInherit |
'LineSpacing' ':' DistOrInherit |
|
DistOrInherit = Kinship InheritedDist / Distance . |
DistOrInherit = Kinship InheritedDist / Distance . |
InheritedDist = '=' / '+' AbsDist / '-' AbsDist . |
InheritedDist = '=' / '+' AbsDist / '-' AbsDist .</pre> |
</PRE> |
<p> |
<P> |
|
When the line spacing value (or its difference from another element) is |
When the line spacing value (or its difference from another element) is |
expressed in relative units, it changes with the size of the characters. Thus, |
expressed in relative units, it changes with the size of the characters. Thus, |
when a larger font is chosen for a part of the document, the line spacing of |
when a larger font is chosen for a part of the document, the line spacing of |
Line 4993 that part expands proportionally. In co
|
Line 5044 that part expands proportionally. In co
|
expressed in absolute units (centimeters, inches, typographer's points), it is |
expressed in absolute units (centimeters, inches, typographer's points), it is |
independent of the characters, which permits the maintenance of a consistent |
independent of the characters, which permits the maintenance of a consistent |
line spacing, whatever the character font. Either approach can be taken, |
line spacing, whatever the character font. Either approach can be taken, |
depending on the desired effect.</P> |
depending on the desired effect.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd42222>First line indentation</A></H4> |
|
|
|
<P> |
<h4><a name="sectd42222">First line indentation</a></h4> |
The <TT>Indent</TT> rule is used to specify the indentation of the first line |
<p> |
of the elements broken into lines by the <TT>Line</TT> function. The |
The <tt>Indent</tt> rule is used to specify the indentation of the first line |
|
of the elements broken into lines by the <tt>Line</tt> function. The |
indentation determines how far the first line of the element is shifted with |
indentation determines how far the first line of the element is shifted with |
respect to the other lines of the same element. It can be specified as a |
respect to the other lines of the same element. It can be specified as a |
constant or by inheritance. The constant value is a positive integer (shifted |
constant or by inheritance. The constant value is a positive integer (shifted |
to the right; the sign is optional), a negative integer (shifted to the left) |
to the right; the sign is optional), a negative integer (shifted to the left) |
or zero (no shift). All available <A href="#sectc4217">units</A> can be |
or zero (no shift). All available <a href="#sectc4217">units</a> can be |
used.</P> |
used.</p> |
<P> |
<p> |
Indentation can be defined for any box, regardless of whether the box is line |
Indentation can be defined for any box, regardless of whether the box is line |
broken, and transmitted by inheritance to elements that are line broken. The |
broken, and transmitted by inheritance to elements that are line broken. The |
size of the indentation is specified in the same manner as the <A |
size of the indentation is specified in the same manner as the <a |
href="#sectd42221">line spacing</A>.</P> |
href="#sectd42221">line spacing</a>.</p> |
<PRE> |
<pre> 'Indent' ':' DistOrInherit</pre> |
'Indent' ':' DistOrInherit |
</div> |
</PRE> |
|
</DIV> |
|
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd42223>Alignment</A></H4> |
|
|
|
<P> |
<h4><a name="sectd42223">Alignment</a></h4> |
|
<p> |
The alignment style of the lines constructed during line breaking is defined |
The alignment style of the lines constructed during line breaking is defined |
by the <TT>Adjust</TT> rule. The alignment value can be a constant or |
by the <tt>Adjust</tt> rule. The alignment value can be a constant or |
inherited. A constant value is specified by a keyword:</P> |
inherited. A constant value is specified by a keyword:</p> |
<UL> |
<ul> |
<LI><TT>Left</TT>: at the left edge, |
<li> |
<LI><TT>Right</TT>: at the right edge, |
<tt>Left</tt>: at the left edge, |
<LI><TT>VMiddle</TT>: centered |
<li> |
<LI><TT>LeftWithDots</TT>: at the left edge with a dotted line filling out the |
<tt>Right</tt>: at the right edge, |
|
<li> |
|
<tt>VMiddle</tt>: centered |
|
<li> |
|
<tt>LeftWithDots</tt>: at the left edge with a dotted line filling out the |
last line up to the right edge of the line breaking box. |
last line up to the right edge of the line breaking box. |
</UL> |
</ul> |
<P> |
<p> |
An inherited value can only be the same as that of the reference box and is |
An inherited value can only be the same as that of the reference box and is |
specified by a kinship keyword followed by an equals sign.</P> |
specified by a kinship keyword followed by an equals sign.</p> |
<PRE> |
<pre> 'Adjust' ':' AlignOrInherit |
'Adjust' ':' AlignOrInherit |
|
AlignOrInherit = Kinship '=' / Alignment . |
AlignOrInherit = Kinship '=' / Alignment . |
Alignment = 'Left' / 'Right' / 'VMiddle' / |
Alignment = 'Left' / 'Right' / 'VMiddle' / |
'LeftWithDots' . |
'LeftWithDots' .</pre> |
</PRE> |
</div> |
</DIV> |
|
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd42224>Justification</A></H4> |
|
|
|
<P> |
<h4><a name="sectd42224">Justification</a></h4> |
The <TT>Justify</TT> rule indicates whether the lines contained in the box and |
<p> |
produced by a <TT>Line</TT> rule should be extended horizontally to occupy the |
The <tt>Justify</tt> rule indicates whether the lines contained in the box and |
|
produced by a <tt>Line</tt> rule should be extended horizontally to occupy the |
entire width of their enclosing box. The first and last lines are treated |
entire width of their enclosing box. The first and last lines are treated |
specially: the position of the beginning of the first line is fixed by the |
specially: the position of the beginning of the first line is fixed by the |
<TT>Indent</TT> rule and last line is not extended. The justification |
<tt>Indent</tt> rule and last line is not extended. The justification |
parameter defined by this rule takes a boolean value, which can be a constant |
parameter defined by this rule takes a boolean value, which can be a constant |
or inherited. A constant boolean value is expressed by either the |
or inherited. A constant boolean value is expressed by either the |
<TT>Yes</TT> or the <TT>No</TT> keyword. An inherited value can only be the |
<tt>Yes</tt> or the <tt>No</tt> keyword. An inherited value can only be the |
same as that of the reference box and is specified by a kinship keyword |
same as that of the reference box and is specified by a kinship keyword |
followed by an equals sign.</P> |
followed by an equals sign.</p> |
<PRE> |
<pre> 'Justify' ':' BoolInherit |
'Justify' ':' BoolInherit |
|
BoolInherit = Boolean / Kinship '=' . |
BoolInherit = Boolean / Kinship '=' . |
Boolean ='Yes' / 'No' . |
Boolean ='Yes' / 'No' .</pre> |
</PRE> |
<p> |
<P> |
|
When the lines are justified, the alignment parameter specified in the |
When the lines are justified, the alignment parameter specified in the |
<TT>Adjust</TT> rule has no influence, other than on the last line produced. |
<tt>Adjust</tt> rule has no influence, other than on the last line produced. |
This occurs because, when the other are extended to the limits of the box, the |
This occurs because, when the other are extended to the limits of the box, the |
alignment style is no longer perceptible.</P> |
alignment style is no longer perceptible.</p> |
<BLOCKQUOTE class="example"> |
<blockquote class="example"> |
<P> |
<p> |
<STRONG>Example:</STRONG></P> |
<strong>Example:</strong></p> |
<P> |
<p> |
An important use of inheritance is to vary the characteristics of lines for an |
An important use of inheritance is to vary the characteristics of lines for an |
element type (for example, Paragraph) according to the enclosing environment |
element type (for example, Paragraph) according to the enclosing environment |
(for example, Summary or Section), and thus obtain different line breaking |
(for example, Summary or Section), and thus obtain different line breaking |
styles for the same elements when they appear in different environments. The |
styles for the same elements when they appear in different environments. The |
following rules specify that paragraphs inherit their alignment, justification, |
following rules specify that paragraphs inherit their alignment, |
and line spacing:</P> |
justification, and line spacing:</p> |
<PRE> |
<pre>Paragraph : |
Paragraph : |
|
BEGIN |
BEGIN |
Justify : Enclosing = ; |
Justify : Enclosing = ; |
LineSpacing : Enclosing = ; |
LineSpacing : Enclosing = ; |
Adjust : Enclosing =; |
Adjust : Enclosing =; |
Line; |
Line; |
END; |
END;</pre> |
</PRE> |
<p> |
<P> |
|
If the alignment, justification, and line spacing of the Section and Summary |
If the alignment, justification, and line spacing of the Section and Summary |
elements is fixed:</P> |
elements is fixed:</p> |
<PRE> |
<pre>Section : |
Section : |
|
BEGIN |
BEGIN |
Adjust : Left; |
Adjust : Left; |
Justify : Yes; |
Justify : Yes; |
Line 5101 Summary :
|
Line 5147 Summary :
|
Adjust : VMiddle; |
Adjust : VMiddle; |
Justify : No; |
Justify : No; |
LineSpacing : 1.3; |
LineSpacing : 1.3; |
END; |
END;</pre> |
</PRE> |
<p> |
<P> |
|
then the paragraphs appearing in sections are justified with a simple line |
then the paragraphs appearing in sections are justified with a simple line |
spacing while those appearing in summaries are centered and not justified and |
spacing while those appearing in summaries are centered and not justified and |
have a larger line spacing. These are nevertheless the very same type of |
have a larger line spacing. These are nevertheless the very same type of |
paragraph defined in the logical structure schema.</P> |
paragraph defined in the logical structure schema.</p> |
</BLOCKQUOTE> |
</blockquote> |
</DIV> |
</div> |
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd42225>Hyphenation</A></H4> |
|
|
<h4><a name="sectd42225">Hyphenation</a></h4> |
<P> |
<p> |
The <TT>Hyphenate</TT> rule indicates whether or not words should be broken by |
The <tt>Hyphenate</tt> rule indicates whether or not words should be broken by |
hyphenation at the end of lines. It affects the lines produced by the |
hyphenation at the end of lines. It affects the lines produced by the |
<TT>Line</TT> rule and contained in the box carrying the <TT>Hyphenate</TT> |
<tt>Line</tt> rule and contained in the box carrying the <tt>Hyphenate</tt> |
rule.</P> |
rule.</p> |
<P> |
<p> |
The hyphenation parameter takes a boolean value, which can be either constant |
The hyphenation parameter takes a boolean value, which can be either constant |
or inherited. A constant boolean value is expressed by either the |
or inherited. A constant boolean value is expressed by either the |
<TT>Yes</TT> or the <TT>No</TT> keyword. An inherited value can only be the |
<tt>Yes</tt> or the <tt>No</tt> keyword. An inherited value can only be the |
same as that of the reference box and is specified by a kinship keyword |
same as that of the reference box and is specified by a kinship keyword |
followed by an equals sign.</P> |
followed by an equals sign.</p> |
<PRE> |
<pre> 'Hyphenate' ':' BoolInherit |
'Hyphenate' ':' BoolInherit |
|
BoolInherit = Boolean / Kinship '=' . |
BoolInherit = Boolean / Kinship '=' . |
Boolean = 'Yes' / 'No' . |
Boolean = 'Yes' / 'No' .</pre> |
</PRE> |
</div> |
</DIV> |
|
|
<div class="subsubsection"> |
<DIV class="subsubsection"> |
|
<H4><A name=sectd42226>Avoiding line breaking</A></H4> |
<h4><a name="sectd42226">Avoiding line breaking</a></h4> |
|
<p> |
<P> |
The <tt>InLine</tt> rule is used to specify that a box that would otherwise |
The <TT>InLine</TT> rule is used to specify that a box that would otherwise |
participate in line breaking asked for by the <tt>Line</tt> rule of an |
participate in line breaking asked for by the <TT>Line</TT> rule of an |
|
enclosing box, instead avoids the line breaking process and positions itself |
enclosing box, instead avoids the line breaking process and positions itself |
according to the <TT>HorizPos</TT> and <TT>VertPos</TT> rules that apply to |
according to the <tt>HorizPos</tt> and <tt>VertPos</tt> rules that apply to |
it. When the <TT>InLine</TT> rule applies to a box which would not be line |
it. When the <tt>InLine</tt> rule applies to a box which would not be line |
broken, it has no effect.</P> |
broken, it has no effect.</p> |
<P> |
<p> |
The rule is expressed by the <TT>InLine</TT> keyword followed by a colon and |
The rule is expressed by the <tt>InLine</tt> keyword followed by a colon and |
the keyword <TT>Yes</TT>, if the box should participate in line breaking, or |
the keyword <tt>Yes</tt>, if the box should participate in line breaking, or |
the keyword <TT>No</TT>, if it should not. This is the only form possible: |
the keyword <tt>No</tt>, if it should not. This is the only form possible: |
this rule cannot be inherited. Moreover, it can only appear in the rules of |
this rule cannot be inherited. Moreover, it can only appear in the rules of |
the primary view and applies to all views defined in the presentation |
the primary view and applies to all views defined in the presentation |
schema.</P> |
schema.</p> |
<PRE> |
<pre> 'InLine' ':' Boolean . |
'InLine' ':' Boolean . |
Boolean = 'Yes' / 'No' .</pre> |
Boolean = 'Yes' / 'No' . |
<blockquote class="example"> |
</PRE> |
<p> |
<BLOCKQUOTE class="example"> |
<strong>Example:</strong></p> |
<P> |
<p> |
<STRONG>Example:</STRONG></P> |
Suppose the structure schema defines a logical attribute called <tt>New</tt> |
<P> |
which is used to identify the passages in a document which were recently |
Suppose the structure schema defines a logical attribute |
modified. It would be nice to have the presentation schema make a bar appear |
called <TT>New</TT> which is used to identify the passages in a document which |
in the left margin next to each passage having the <tt>New</tt> attribute. A |
were recently modified. It would be nice to have the presentation schema make |
new passage can be an entire element, such as a paragraph or section, or it |
a bar appear in the left margin next to each passage having |
can be some words in the middle of a paragraph. To produce the desired |
the <TT>New</TT> attribute. A new passage can be an entire element, such as a |
effect, the <tt>New</tt> attribute is given a creation rule which generates a |
paragraph or section, or it can be some words in the middle of a paragraph. To |
<tt>VerticalBar</tt> presentation box.</p> |
produce the desired effect, the <TT>New</TT> attribute is given a creation rule |
<p> |
which generates a <TT>VerticalBar</TT> presentation box.</P> |
When the <tt>New</tt> attribute is attached to a character string which is |
<P> |
|
When the <TT>New</TT> attribute is attached to a character string which is |
|
inside a line broken element (inside a paragraph, for example), the bar is one |
inside a line broken element (inside a paragraph, for example), the bar is one |
of the elements which participates in line breaking and it is placed normally |
of the elements which participates in line breaking and it is placed normally |
in the current line, at the end of the character string which has the |
in the current line, at the end of the character string which has the |
attribute. To avoid this, the <TT>InLine</TT> rule is used in the following |
attribute. To avoid this, the <tt>InLine</tt> rule is used in the following |
way:</P> |
way:</p> |
<PRE> |
<pre>BOXES |
BOXES |
|
VerticalBar: |
VerticalBar: |
BEGIN |
BEGIN |
Content: Graphics 'l'; |
Content: Graphics 'l'; |
Line 5189 ATTRIBUTES
|
Line 5229 ATTRIBUTES
|
Nouveau: |
Nouveau: |
BEGIN |
BEGIN |
CreateAfter(VerticalBar); |
CreateAfter(VerticalBar); |
END; |
END;</pre> |
</PRE> |
</blockquote> |
</BLOCKQUOTE> |
</div> |
</DIV> |
</div> |
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc4223>Page breaking and line breaking conditions</A></H3> |
|
|
|
<P> |
<h3><a name="sectc4223">Page breaking and line breaking conditions</a></h3> |
|
<p> |
Pages are constructed by the editor in accordance with the model specified by |
Pages are constructed by the editor in accordance with the model specified by |
a <A href="#sectc4233"><TT>Page</TT> rule</A>. The page model describes only the |
a <a href="#sectc4233"><tt>Page</tt> rule</a>. The page model describes only |
composition of the pages but does not give any rules for breaking different |
the composition of the pages but does not give any rules for breaking |
element types across pages. Now, it is possible that certain elements must |
different element types across pages. Now, it is possible that certain |
not be cut by page breaks, while others can be cut anywhere. The |
elements must not be cut by page breaks, while others can be cut anywhere. The |
<TT>PageBreak</TT>, <TT>NoBreak1</TT>, and <TT>NoBreak2</TT> rules are used to |
<tt>PageBreak</tt>, <tt>NoBreak1</tt>, and <tt>NoBreak2</tt> rules are used to |
specify the conditions under which each element type can be cut.</P> |
specify the conditions under which each element type can be cut.</p> |
<P> |
<p> |
The <TT>PageBreak</TT> rule is used to indicate whether or not the box can be |
The <tt>PageBreak</tt> rule is used to indicate whether or not the box can be |
cut during the construction of pages. If cutting is authorized, the box can |
cut during the construction of pages. If cutting is authorized, the box can |
be cut, with one part appearing at the bottom of a page and the other part |
be cut, with one part appearing at the bottom of a page and the other part |
appearing at the top of the next page. The rule is formed by the |
appearing at the top of the next page. The rule is formed by the |
<TT>PageBreak</TT> keyword followed by a colon and a constant boolean value |
<tt>PageBreak</tt> keyword followed by a colon and a constant boolean value |
(<TT>Yes</TT> or <TT>No</TT>). This is the only form possible: this rule |
(<tt>Yes</tt> or <tt>No</tt>). This is the only form possible: this rule |
cannot be inherited. Moreover, it can only appear in the rules of the primary |
cannot be inherited. Moreover, it can only appear in the rules of the primary |
view and applies to all views defined in the presentation schema.</P> |
view and applies to all views defined in the presentation schema.</p> |
<P> |
<p> |
Whether objects can be cut by line breaks can be controlled in a similar way |
Whether objects can be cut by line breaks can be controlled in a similar way |
using the <TT>LineBreak</TT> rule. This rule allows the specification of |
using the <tt>LineBreak</tt> rule. This rule allows the specification of |
whether or not the box can be cut during the construction of lines. If |
whether or not the box can be cut during the construction of lines. If |
cutting is authorized, the box can be cut, with one part appearing at the end |
cutting is authorized, the box can be cut, with one part appearing at the end |
of a line and the other part appearing at the beginning of the next line. The |
of a line and the other part appearing at the beginning of the next line. The |
rule is formed by the <TT>LineBreak</TT> keyword followed by a colon and a |
rule is formed by the <tt>LineBreak</tt> keyword followed by a colon and a |
constant boolean value (<TT>Yes</TT> or <TT>No</TT>). This is the only form |
constant boolean value (<tt>Yes</tt> or <tt>No</tt>). This is the only form |
possible: this rule cannot be inherited. Moreover, it can only appear in the |
possible: this rule cannot be inherited. Moreover, it can only appear in the |
rules of the primary view and applies to all views defined in the presentation |
rules of the primary view and applies to all views defined in the presentation |
schema.</P> |
schema.</p> |
<PRE> |
<pre> 'PageBreak' ':' Boolean . |
'PageBreak' ':' Boolean . |
|
'LineBreak' ':' Boolean . |
'LineBreak' ':' Boolean . |
Boolean = 'Yes' / 'No' . |
Boolean = 'Yes' / 'No' .</pre> |
</PRE> |
<p> |
<P> |
|
When a box can be cut by a page break, it is possible that a page break will |
When a box can be cut by a page break, it is possible that a page break will |
fall an inappropriate spot, creating, for example, a widow or orphan, or |
fall an inappropriate spot, creating, for example, a widow or orphan, or |
separating the title of a section from the first paragraph of the section. The |
separating the title of a section from the first paragraph of the section. The |
<TT>NoBreak1</TT> and <TT>NoBreak2</TT> rules are used to avoid this. They |
<tt>NoBreak1</tt> and <tt>NoBreak2</tt> rules are used to avoid this. They |
specify that the box of the element to which they apply cannot be cut within |
specify that the box of the element to which they apply cannot be cut within a |
a certain zone at the top (<TT>NoBreak1</TT> rule) or at the bottom |
certain zone at the top (<tt>NoBreak1</tt> rule) or at the bottom |
(<TT>NoBreak2</TT> rule). These two rules specify the height of the zones in |
(<tt>NoBreak2</tt> rule). These two rules specify the height of the zones in |
which page breaks are prohibited.</P> |
which page breaks are prohibited.</p> |
<P> |
<p> |
The <TT>NoBreak1</TT> and <TT>NoBreak2</TT> rules give the height of the zone |
The <tt>NoBreak1</tt> and <tt>NoBreak2</tt> rules give the height of the zone |
in which page breaking is prohibited. The height is given as a constant value |
in which page breaking is prohibited. The height is given as a constant value |
using any of the <A href="#sectc4217">available units</A>, absolute or |
using any of the <a href="#sectc4217">available units</a>, absolute or |
relative. The value may not be inherited.</P> |
relative. The value may not be inherited.</p> |
<PRE> |
<pre> 'NoBreak1' ':' AbsDist . |
'NoBreak1' ':' AbsDist . |
'NoBreak2' ':' AbsDist .</pre> |
'NoBreak2' ':' AbsDist . |
<blockquote class="example"> |
</PRE> |
<p> |
<BLOCKQUOTE class="example"> |
<strong>Example:</strong></p> |
<P> |
<p> |
<STRONG>Example:</STRONG></P> |
The following rules prevent widows and orphans in a paragraph:</p> |
<P> |
<pre>Paragraph : |
The following rules prevent widows and orphans in a paragraph:</P> |
|
<PRE> |
|
Paragraph : |
|
BEGIN |
BEGIN |
NoBreak1 : 2; |
NoBreak1 : 2; |
NoBreak2 : 2; |
NoBreak2 : 2; |
END; |
END;</pre> |
</PRE> |
<p> |
<P> |
|
This rule prevents a section title from becoming separated from the first |
This rule prevents a section title from becoming separated from the first |
paragraph of the section by prohibiting page breaks at the beginning of the |
paragraph of the section by prohibiting page breaks at the beginning of the |
section rule:</P> |
section rule:</p> |
<PRE> |
<pre>Section : |
Section : |
NoBreak1 : 1.5 cm;</pre> |
NoBreak1 : 1.5 cm; |
<p> |
</PRE> |
Finally, this rule prevents a figure from being page broken in any way:</p> |
<P> |
<pre>Figure : |
Finally, this rule prevents a figure from being page broken in any way:</P> |
PageBreak : No;</pre> |
<PRE> |
</blockquote> |
Figure : |
<p> |
PageBreak : No; |
|
</PRE> |
|
</BLOCKQUOTE> |
|
<P> |
|
The Thot editor constructs the document images displayed on the screen |
The Thot editor constructs the document images displayed on the screen |
dynamically. As the user moves in the document or makes the document scroll |
dynamically. As the user moves in the document or makes the document scroll |
in a window, the editor constructs the image to be displayed in little bits, |
in a window, the editor constructs the image to be displayed in little bits, |
Line 5287 possible that the image in incomplete, e
|
Line 5316 possible that the image in incomplete, e
|
reached. For example, an element might need to be presented to the side of |
reached. For example, an element might need to be presented to the side of |
the last element displayed, but its image was not constructed. The user will |
the last element displayed, but its image was not constructed. The user will |
not know whether the element is really absent or if its image has simply not |
not know whether the element is really absent or if its image has simply not |
been constructed.</P> |
been constructed.</p> |
<P> |
<p> |
The <TT>Gather</TT> rule is used to remedy this problem. When the rule |
The <tt>Gather</tt> rule is used to remedy this problem. When the rule |
<TT>Gather : Yes;</TT> is associated with an element type, the image of such |
<tt>Gather : Yes;</tt> is associated with an element type, the image of such |
elements is constructed as a block by the editor: it is never split up.</P> |
elements is constructed as a block by the editor: it is never split up.</p> |
<P> |
<p> |
The <TT>Gather</TT> rule may not appear in the <A |
The <tt>Gather</tt> rule may not appear in the <a href="#sectc427">default |
href="#sectc427">default rules</A>. Elements which do not have the |
rules</a>. Elements which do not have the <tt>Gather</tt> rule are considered |
<TT>Gather</TT> rule are considered susceptible to being split up during |
susceptible to being split up during display. Thus, it is not necessary to |
display. Thus, it is not necessary to use the <TT>Gather : No;</TT> form. |
use the <tt>Gather : No;</tt> form. This rule must be used prudently and only |
This rule must be used prudently and only for those elements which truly need |
for those elements which truly need it. If used incorrectly, it can |
it. If used incorrectly, it can pointlessly increase the size of the image |
pointlessly increase the size of the image constructed by the editor and lead |
constructed by the editor and lead to excessive memory consumption by the |
to excessive memory consumption by the editor.</p> |
editor.</P> |
<p> |
<P> |
Like the <tt>PageBreak</tt> and <tt>LineBreak</tt> rules, the <tt>Gather</tt> |
Like the <TT>PageBreak</TT> and <TT>LineBreak</TT> rules, the <TT>Gather</TT> |
|
rule can only appear in rules of the primary view and applies to all views |
rule can only appear in rules of the primary view and applies to all views |
defined in the presentation schema.</P> |
defined in the presentation schema.</p> |
<PRE> |
<pre> 'Gather' ':' Boolean .</pre> |
'Gather' ':' Boolean . |
</div> |
</PRE> |
|
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc4224>Visibility</A></H3> |
|
|
|
<P> |
<h3><a name="sectc4224">Visibility</a></h3> |
|
<p> |
The visibility parameter is used to control which elements should or should |
The visibility parameter is used to control which elements should or should |
not be displayed, based on context. An element can have different |
not be displayed, based on context. An element can have different |
visibilities in different views. If an element's visibility is zero for a |
visibilities in different views. If an element's visibility is zero for a |
view, that element is not displayed in that view and does not occupy any space |
view, that element is not displayed in that view and does not occupy any space |
(its extents are zero).</P> |
(its extents are zero).</p> |
<P> |
<p> |
Visibility takes non-negative integer values (positive or zero). If values |
Visibility takes non-negative integer values (positive or zero). If values |
greater than 1 are used, they allow the user to choose a degree of visibility |
greater than 1 are used, they allow the user to choose a degree of visibility |
and, thus, to see only those boxes whose visibility parameter exceeds a |
and, thus, to see only those boxes whose visibility parameter exceeds a |
certain threshold. This gives the user control over the granularity of the |
certain threshold. This gives the user control over the granularity of the |
displayed pictures.</P> |
displayed pictures.</p> |
<P> |
<p> |
The visibility parameter can be defined as a constant or by inheritance. If |
The visibility parameter can be defined as a constant or by inheritance. If |
defined by inheritance, it cannot be based on the value of the next or |
defined by inheritance, it cannot be based on the value of the next or |
previous box. Visibility can only be inherited from above.</P> |
previous box. Visibility can only be inherited from above.</p> |
<P> |
<p> |
If it is a numeric attribute's presentation rule, the visibility can be |
If it is a numeric attribute's presentation rule, the visibility can be |
specified by the attribute's name, in which case the value of the attribute is |
specified by the attribute's name, in which case the value of the attribute is |
used.</P> |
used.</p> |
<PRE> |
<pre> 'Visibility' ':' NumberInherit |
'Visibility' ':' NumberInherit |
|
NumberInherit = Integer / AttrID / Inheritance . |
NumberInherit = Integer / AttrID / Inheritance . |
Integer = NUMBER . |
Integer = NUMBER .</pre> |
</PRE> |
<blockquote class="example"> |
<BLOCKQUOTE class="example"> |
<p> |
<P> |
<strong>Example:</strong></p> |
<STRONG>Example:</STRONG></P> |
<p> |
<P> |
Suppose that only <tt>Formula</tt> elements should be displayed in the |
Suppose that only <TT>Formula</TT> elements should be displayed in |
<tt>MathView</tt> view. Then, the default rules should include:</p> |
the <TT>MathView</TT> view. Then, the default rules should include:</P> |
<pre>DEFAULT |
<PRE> |
IN MathView Visibility:0;</pre> |
DEFAULT |
<p> |
IN MathView Visibility:0; |
which makes all elements invisible in the <tt>MathView</tt> view. However, |
</PRE> |
the <tt>Formula</tt> element also has a <tt>Visibility</tt> rule:</p> |
<P> |
<pre>Formula : |
which makes all elements invisible in the <TT>MathView</TT> view. However, the |
IN MathView Visibility:5;</pre> |
<TT>Formula</TT> element also has a <TT>Visibility</TT> rule:</P> |
<p> |
<PRE> |
which makes formulas, and only formulas, visible.</p> |
Formula : |
</blockquote> |
IN MathView Visibility:5; |
</div> |
</PRE> |
|
<P> |
|
which makes formulas, and only formulas, visible.</P> |
|
</BLOCKQUOTE> |
|
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc4225>Character style parameters</A></H3> |
|
|
|
<P> |
<h3><a name="sectc4225">Character style parameters</a></h3> |
|
<p> |
Four parameters are used to determine which characters are used to display |
Four parameters are used to determine which characters are used to display |
text. They are size, font, style, and underlining.</P> |
text. They are size, font, style, and underlining.</p> |
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd42251>Character size</A></H4> |
|
|
|
<P> |
<h4><a name="sectd42251">Character size</a></h4> |
|
<p> |
The size parameter has two effects. First, it is used to specify the actual |
The size parameter has two effects. First, it is used to specify the actual |
size and distance units for boxes defined in <A href="#sectc4217">relative |
size and distance units for boxes defined in <a href="#sectc4217">relative |
units</A>. Second, it defines the size of the characters contained in the |
units</a>. Second, it defines the size of the characters contained in the |
box.</P> |
box.</p> |
<P> |
<p> |
As a distance or length, the size can be expressed in abstract or absolute |
As a distance or length, the size can be expressed in abstract or absolute |
units. It can also be inherited. If it is not inherited, it is expressed |
units. It can also be inherited. If it is not inherited, it is expressed |
simply as an integer followed by the <TT>pt</TT> keyword, which indicates that |
simply as an integer followed by the <tt>pt</tt> keyword, which indicates that |
the size is expressed in typographer's points. The absence of the <TT>pt</TT> |
the size is expressed in typographer's points. The absence of the <tt>pt</tt> |
keyword indicates that it is in abstract units in which the value 1 represents |
keyword indicates that it is in abstract units in which the value 1 represents |
the smallest size while the value 16 is the largest size. The relationship |
the smallest size while the value 16 is the largest size. The relationship |
between these abstract sizes and the real character sizes is controlled by a |
between these abstract sizes and the real character sizes is controlled by a |
table which can be modified statically or even dynamically during the |
table which can be modified statically or even dynamically during the |
execution of the Thot editor.</P> |
execution of the Thot editor.</p> |
<P> |
<p> |
If it is a numeric attribute's presentation rule, the value of the size |
If it is a numeric attribute's presentation rule, the value of the size |
parameter can be specified by the attribute's name, in which case the value of |
parameter can be specified by the attribute's name, in which case the value of |
the attribute is used.</P> |
the attribute is used.</p> |
<P> |
<p> |
<STRONG>Note:</STRONG> the only unit available for defining an absolute size |
<strong>Note:</strong> the only unit available for defining an absolute size |
is the typographer's point. Centimeters and inches may not be used.</P> |
is the typographer's point. Centimeters and inches may not be used.</p> |
<P> |
<p> |
If the size is inherited, the rule must specify the relative from which to |
If the size is inherited, the rule must specify the relative from which to |
inherit and any difference from that relative's value. The difference can be |
inherit and any difference from that relative's value. The difference can be |
expressed in either typographer's points or in abstract units. The maximum or |
expressed in either typographer's points or in abstract units. The maximum or |
minimum size can also be specified, but without specifying the type of unit: |
minimum size can also be specified, but without specifying the type of unit: |
it is the same as was specified for the difference.</P> |
it is the same as was specified for the difference.</p> |
<P> |
<p> |
In a numeric attribute's presentation rule, the difference in size can be |
In a numeric attribute's presentation rule, the difference in size can be |
indicated by the attribute's name, which means that the attribute's value |
indicated by the attribute's name, which means that the attribute's value |
should be used as the difference. The attribute can also be used as the |
should be used as the difference. The attribute can also be used as the |
minimum or maximum size.</P> |
minimum or maximum size.</p> |
<PRE> |
<pre> 'Size' ':' SizeInherit |
'Size' ':' SizeInherit |
|
SizeInherit = SizeAttr [ 'pt' ] / |
SizeInherit = SizeAttr [ 'pt' ] / |
Kinship InheritedSize . |
Kinship InheritedSize . |
InheritedSize ='+' SizeAttr [ 'pt' ] |
InheritedSize ='+' SizeAttr [ 'pt' ] |
Line 5417 minimum or maximum size.</P>
|
Line 5436 minimum or maximum size.</P>
|
MaxSizeAttr = MaxSize / AttrID . |
MaxSizeAttr = MaxSize / AttrID . |
MaxSize = NUMBER . |
MaxSize = NUMBER . |
MinSizeAttr = MinSize / AttrID . |
MinSizeAttr = MinSize / AttrID . |
MinSize = NUMBER . |
MinSize = NUMBER .</pre> |
</PRE> |
<blockquote class="example"> |
<BLOCKQUOTE class="example"> |
<p> |
<P> |
<strong>Example:</strong></p> |
<STRONG>Example:</STRONG></P> |
<p> |
<P> |
The rule</p> |
The rule</P> |
<pre>Size : Enclosing - 2 pt Min 7;</pre> |
<PRE> |
<p> |
Size : Enclosing - 2 pt Min 7; |
states that the character size is 2 points less than that of the enclosing |
</PRE> |
box, but that it may not be less than 7 points, whatever the enclosing box's |
<P> |
value.</p> |
states that the character size is 2 points less than that of the enclosing box, |
<p> |
but that it may not be less than 7 points, whatever the enclosing box's |
|
value.</P> |
|
<P> |
|
The following rules make the text of a report be displayed with medium-sized |
The following rules make the text of a report be displayed with medium-sized |
characters (for example, size 5), while the title is displayed with larger |
characters (for example, size 5), while the title is displayed with larger |
characters and the summary is displayed with smaller characters:</P> |
characters and the summary is displayed with smaller characters:</p> |
<PRE> |
<pre>Report : |
Report : |
|
Size : 5; |
Size : 5; |
Title : |
Title : |
Size : Enclosing + 2; |
Size : Enclosing + 2; |
Summary : |
Summary : |
Size : Enclosing - 1; |
Size : Enclosing - 1;</pre> |
</PRE> |
<p> |
<P> |
Thus, the character sizes in the entire document can be changed by changing |
Thus, the character sizes in the entire document can be changed by changing the |
the size parameter of the Report element, while preserving the relationships |
size parameter of the Report element, while preserving the relationships |
between the sizes of the different elements.</p> |
between the sizes of the different elements.</P> |
</blockquote> |
</BLOCKQUOTE> |
</div> |
</DIV> |
|
|
<div class="subsubsection"> |
<DIV class="subsubsection"> |
|
<H4><A name=sectd42252>Font and character style</A></H4> |
<h4><a name="sectd42252">Font and character style</a></h4> |
|
<p> |
<P> |
The <tt>Font</tt> rule determines the font family to be used to display the |
The <TT>Font</TT> rule determines the font family to be used to display the |
characters contained in the box, while the <tt>Style</tt> rule determines |
characters contained in the box, while the <TT>Style</TT> rule determines |
|
their style. Thot recognizes three character fonts (Times, Helvetica, and |
their style. Thot recognizes three character fonts (Times, Helvetica, and |
Courier) and six styles: Roman, Italics, Bold, BoldItalics, Oblique, and |
Courier) and six styles: Roman, Italics, Bold, BoldItalics, Oblique, and |
BoldOblique.</P> |
BoldOblique.</p> |
<P> |
<p> |
The font family and style can specified by a named constant or can be |
The font family and style can specified by a named constant or can be |
inherited. For the name of the font family only the first character is |
inherited. For the name of the font family only the first character is |
used.</P> |
used.</p> |
<P> |
<p> |
Only identical inheritance is allowed: the box takes the same font or style as |
Only identical inheritance is allowed: the box takes the same font or style as |
the box from which it inherits. This is indicated by an equals sign after the |
the box from which it inherits. This is indicated by an equals sign after the |
kinship specification.</P> |
kinship specification.</p> |
<BLOCKQUOTE class="example"> |
<blockquote class="example"> |
<P> |
<p> |
<STRONG>Example:</STRONG></P> |
<strong>Example:</strong></p> |
<P> |
<p> |
To specify that the summary uses the font family of the rest of the document, |
To specify that the summary uses the font family of the rest of the document, |
but in the italic style, the following rules are used:</P> |
but in the italic style, the following rules are used:</p> |
<PRE> |
<pre>Summary : |
Summary : |
|
BEGIN |
BEGIN |
Font : Enclosing =; |
Font : Enclosing =; |
Style : Italics; |
Style : Italics; |
END; |
END;</pre> |
</PRE> |
</blockquote> |
</BLOCKQUOTE> |
</div> |
</DIV> |
|
|
<div class="subsubsection"> |
<DIV class="subsubsection"> |
|
<H4><A name=sectd42253>Underlining</A></H4> |
<h4><a name="sectd42253">Underlining</a></h4> |
|
<p> |
<P> |
The <tt>Underline</tt> rule is used to specify if the characters contained in |
The <TT>Underline</TT> rule is used to specify if the characters contained in |
|
a box should have lines drawn on or near them. There are four underlining |
a box should have lines drawn on or near them. There are four underlining |
styles: <TT>Underlined</TT>, <TT>Overlined</TT>, <TT>CrossedOut</TT>, and |
styles: <tt>Underlined</tt>, <tt>Overlined</tt>, <tt>CrossedOut</tt>, and |
<TT>NoUnderline</TT>. The <TT>Thickness</TT> rule specifies the thickness of |
<tt>NoUnderline</tt>. The <tt>Thickness</tt> rule specifies the thickness of |
the line, <TT>Thin</TT> or <TT>Thick</TT>.</P> |
the line, <tt>Thin</tt> or <tt>Thick</tt>.</p> |
<P> |
<p> |
As with font family and style, only identical inheritance is allowed: the box |
As with font family and style, only identical inheritance is allowed: the box |
has the same underlining type as the box from which it inherits the value. |
has the same underlining type as the box from which it inherits the value. |
This is indicated by an equals sign after the kinship specification.</P> |
This is indicated by an equals sign after the kinship specification.</p> |
<PRE> |
<pre> 'Underline' ':' UnderLineInherit / |
'Underline' ':' UnderLineInherit / |
|
'Thickness' ':' ThicknessInherit / |
'Thickness' ':' ThicknessInherit / |
|
|
UnderLineInherit = Kinship '=' / 'NoUnderline' / |
UnderLineInherit = Kinship '=' / 'NoUnderline' / |
'Underlined' / |
'Underlined' / |
'Overlined' / 'CrossedOut' . |
'Overlined' / 'CrossedOut' . |
ThicknessInherit = Kinship '=' / 'Thick' / 'Thin' . |
ThicknessInherit = Kinship '=' / 'Thick' / 'Thin' .</pre> |
</PRE> |
</div> |
</DIV> |
</div> |
</DIV> |
|
|
<div class="subsection"> |
<DIV class="subsection"> |
|
<H3><A name=sectc4226>Stacking order</A></H3> |
<h3><a name="sectc4226">Stacking order</a></h3> |
|
<p> |
<P> |
The <tt>Depth</tt> rule is used to define the stacking order of terminal boxes |
The <TT>Depth</TT> rule is used to define the stacking order of terminal boxes |
|
when multiple boxes at least partially overlap. This rule defines how the |
when multiple boxes at least partially overlap. This rule defines how the |
depth parameter, which is zero or a positive integer, is calculated. The |
depth parameter, which is zero or a positive integer, is calculated. The |
depth parameter has a value for all boxes. For terminal boxes in the |
depth parameter has a value for all boxes. For terminal boxes in the |
structure and for presentation boxes, the depth value is used during display |
structure and for presentation boxes, the depth value is used during display |
and printing: the boxes with the lowest value overlap those with higher |
and printing: the boxes with the lowest value overlap those with higher |
depths. For non-terminal boxes, the depth is not interpreted during display, |
depths. For non-terminal boxes, the depth is not interpreted during display, |
but it is used to calculate the depth of terminal boxes by inheritance.</P> |
but it is used to calculate the depth of terminal boxes by inheritance.</p> |
<P> |
<p> |
Like most other rules, the depth rule is defined in the <A |
Like most other rules, the depth rule is defined in the <a |
href="#sectc427">default rules</A> of each presentation schema. Thus, |
href="#sectc427">default rules</a> of each presentation schema. Thus, there |
there is always a depth value, even when it is not necessary because there is |
is always a depth value, even when it is not necessary because there is no |
no overlapping. To avoid useless operations, a zero value can be given to the |
overlapping. To avoid useless operations, a zero value can be given to the |
depth parameter, which signifies that overlapping is never a problem.</P> |
depth parameter, which signifies that overlapping is never a problem.</p> |
<P> |
<p> |
The depth rule has the same form as the <A href="#sectc4224">visibility rule</A>. |
The depth rule has the same form as the <a href="#sectc4224">visibility |
It can be defined by inheritance or by a constant numeric value. When the rule |
rule</a>. It can be defined by inheritance or by a constant numeric value. |
is attached to a numeric attribute, it can take the value of that |
When the rule is attached to a numeric attribute, it can take the value of |
attribute.</P> |
that attribute.</p> |
<PRE> |
<pre> 'Depth' ':' NumberInherit</pre> |
'Depth' ':' NumberInherit |
<blockquote class="example"> |
</PRE> |
<p> |
<BLOCKQUOTE class="example"> |
<strong>Example:</strong></p> |
<P> |
<p> |
<STRONG>Example:</STRONG></P> |
|
<P> |
|
For a purely textual document, in which overlapping never poses a problem, a |
For a purely textual document, in which overlapping never poses a problem, a |
single default <TT>Depth</TT> rule in the presentation schema is |
single default <tt>Depth</tt> rule in the presentation schema is |
sufficient:</P> |
sufficient:</p> |
<PRE> |
<pre>DEFAULT |
DEFAULT |
|
Depth : 0; |
Depth : 0; |
... |
...</pre> |
</PRE> |
<p> |
<P> |
|
To make the text of examples appear on a light blue background, a presentation |
To make the text of examples appear on a light blue background, a presentation |
box is defined:</P> |
box is defined:</p> |
<PRE> |
<pre>BOXES |
BOXES |
|
BlueBG : |
BlueBG : |
BEGIN |
BEGIN |
Content : Graphics 'R'; |
Content : Graphics 'R'; |
Line 5558 BOXES
|
Line 5563 BOXES
|
FillPattern: backgroundcolor; |
FillPattern: backgroundcolor; |
Depth : 2; |
Depth : 2; |
... |
... |
END; |
END;</pre> |
</PRE> |
<p> |
<P> |
and is created by the <tt>Example</tt> element, which has the rules:</p> |
and is created by the <TT>Example</TT> element, which has the rules:</P> |
<pre>RULES |
<PRE> |
|
RULES |
|
Example : |
Example : |
BEGIN |
BEGIN |
CreateFirst (BlueBG); |
CreateFirst (BlueBG); |
Depth : 1; |
Depth : 1; |
... |
... |
END; |
END;</pre> |
</PRE> |
<p> |
<P> |
In this way, the text of an example (if it inherits its depth from its |
In this way, the text of an example (if it inherits its depth from |
ancestor) will be superimposed on a light blue background, and not the |
its ancestor) will be superimposed on a light blue background, and not |
reverse).</p> |
the reverse).</P> |
</blockquote> |
</BLOCKQUOTE> |
</div> |
</DIV> |
|
|
<div class="subsection"> |
<DIV class="subsection"> |
|
<H3><A name=sectc4227>Line style</A></H3> |
<h3><a name="sectc4227">Line style</a></h3> |
|
<p> |
<P> |
The <tt>LineStyle</tt> rule determines the style of line which should be used |
The <TT>LineStyle</TT> rule determines the style of line which should be used |
to draw all the elements contained in the box and the box itself, if it has a |
to draw all the elements contained in the box and the box itself, if it has |
<a href="#sectc4230a"><tt>ShowBox</tt> rule</a>. The line style can be |
a <A href="#sectc4230a"><TT>ShowBox</TT> rule</A>. The line style can be |
indicated by a name (<tt>Solid</tt>, <tt>Dashed</tt>, <tt>Dotted</tt>) or it |
indicated by a name (<TT>Solid</TT>, <TT>Dashed</TT>, <TT>Dotted</TT>) or it |
|
can be inherited. All elements of the graphic base type are affected by this |
can be inherited. All elements of the graphic base type are affected by this |
rule, but it can be attached to any box and transmitted by inheritance to the |
rule, but it can be attached to any box and transmitted by inheritance to the |
graphic elements. The border of elements having a |
graphic elements. The border of elements having a <a |
<A href="#sectc4230a"><TT>ShowBox</TT> rule</A> |
href="#sectc4230a"><tt>ShowBox</tt> rule</a> is drawn according to the line |
is drawn according to the line style specified by this rule.<P> |
style specified by this rule.</p> |
|
<p> |
Only identical inheritance is allowed: the box takes the same line style as |
Only identical inheritance is allowed: the box takes the same line style as |
the box from which it inherits. This is indicated by an equals sign after the |
the box from which it inherits. This is indicated by an equals sign after the |
kinship specification.</P> |
kinship specification.</p> |
<PRE> |
<pre> 'LineStyle' ':' LineStyleInherit |
'LineStyle' ':' LineStyleInherit |
|
LineStyleInherit = Kinship '=' / |
LineStyleInherit = Kinship '=' / |
'Solid' / 'Dashed' / 'Dotted' . |
'Solid' / 'Dashed' / 'Dotted' .</pre> |
</PRE> |
<blockquote class="example"> |
<BLOCKQUOTE class="example"> |
<p> |
<P> |
<strong>Example:</strong></p> |
<STRONG>Example:</STRONG></P> |
<p> |
<P> |
|
To specify that, in Figures, the graphical parts should be drawn in solid |
To specify that, in Figures, the graphical parts should be drawn in solid |
lines, the Figure element is given a rule using the <TT>Solid</TT> name:</P> |
lines, the Figure element is given a rule using the <tt>Solid</tt> name:</p> |
<PRE> |
<pre>Figure : |
Figure : |
LineStyle : Solid;</pre> |
LineStyle : Solid; |
<p> |
</PRE> |
and the elements composing figures are given an inheritance rule:</p> |
<P> |
<pre> LineStyle : Enclosing =;</pre> |
and the elements composing figures are given an inheritance rule:</P> |
</blockquote> |
<PRE> |
</div> |
LineStyle : Enclosing =; |
|
</PRE> |
<div class="subsection"> |
</BLOCKQUOTE> |
|
</DIV> |
<h3><a name="sectc4228">Line thickness</a></h3> |
|
<p> |
<DIV class="subsection"> |
The <tt>LineWeight</tt> rule determines the thickness of the lines of all |
<H3><A name=sectc4228>Line thickness</A></H3> |
|
|
|
<P> |
|
The <TT>LineWeight</TT> rule determines the thickness of the lines of all |
|
graphical elements which appear in the box, no matter what their line style. |
graphical elements which appear in the box, no matter what their line style. |
Line thickness can be specified by a constant value or by inheritance. A |
Line thickness can be specified by a constant value or by inheritance. A |
constant value is a positive number followed by an optional unit specification |
constant value is a positive number followed by an optional unit specification |
(which is absent when using relative units). All available <A |
(which is absent when using relative units). All available <a |
href="#sectc4217">distance units</A> can be used. Line thickness is expressed |
href="#sectc4217">distance units</a> can be used. Line thickness is expressed |
in the same way as <A href="#sectd42221">line spacing</A>.</P> |
in the same way as <a href="#sectd42221">line spacing</a>.</p> |
<PRE> |
<pre> 'LineWeight' ':' DistOrInherit</pre> |
'LineWeight' ':' DistOrInherit |
<p> |
</PRE> |
All elements of the graphic base type are affected by this rule, but it can be |
<P> |
attached to any box and transmitted by inheritance to the graphic elements. |
All elements of the graphic base type are affected by this rule, but it can |
The border of element having a <a href="#sectc4230a"><tt>ShowBox</tt> rule</a> |
be attached to any box and transmitted by inheritance to the graphic |
is also drawn according to the thickness specified by this rule.</p> |
elements. The border of element having a <A href="#sectc4230a"><TT>ShowBox</TT> |
<blockquote class="example"> |
rule</A> is also drawn according to the thickness specified by this rule.</P> |
<p> |
<BLOCKQUOTE class="example"> |
<strong>Example:</strong></p> |
<P> |
<p> |
<STRONG>Example:</STRONG></P> |
To specify that, in Figures, the graphical parts should be drawn with lines |
<P> |
0.3 pt thick, the Figure element is given this rule:</p> |
To specify that, in Figures, the graphical parts should be drawn with lines 0.3 |
<pre>Figure : |
pt thick, the Figure element is given this rule:</P> |
LineWeight : 0.3 pt;</pre> |
<PRE> |
<p> |
Figure : |
and the elements composing figures are given an inheritance rule:</p> |
LineWeight : 0.3 pt; |
<pre> LineWeight : Enclosing =;</pre> |
</PRE> |
</blockquote> |
<P> |
</div> |
and the elements composing figures are given an inheritance rule:</P> |
|
<PRE> |
<div class="subsection"> |
LineWeight : Enclosing =; |
|
</PRE> |
<h3><a name="sectc4229">Fill pattern</a></h3> |
</BLOCKQUOTE> |
<p> |
</DIV> |
The <tt>FillPattern</tt> rule determines the pattern used to fill closed |
|
|
<DIV class="subsection"> |
|
<H3><A name=sectc4229>Fill pattern</A></H3> |
|
|
|
<P> |
|
The <TT>FillPattern</TT> rule determines the pattern used to fill closed |
|
graphical elements (circles, rectangles, etc.) which appear in the box. This |
graphical elements (circles, rectangles, etc.) which appear in the box. This |
rule also specifies the pattern used to fill the box associated with |
rule also specifies the pattern used to fill the box associated with elements |
elements having a <A href="#sectc4230a"><TT>ShowBox</TT> rule<A>. This |
having a <a href="#sectc4230a"><tt>ShowBox</tt> rule</a><a>. This pattern can |
pattern can be indicated by a named constant or by inheritance. The named |
be indicated by a named constant or by inheritance. The named constant |
constant identifies one of the patterns available in Thot. The names of the |
identifies one of the patterns available in Thot. The names of the available |
available patterns are: nopattern, foregroundcolor, backgroundcolor, gray1, |
patterns are: nopattern, foregroundcolor, backgroundcolor, gray1, gray2, |
gray2, gray3, gray4, gray5, gray6, gray7, horiz1, horiz2, horiz3, vert1, |
gray3, gray4, gray5, gray6, gray7, horiz1, horiz2, horiz3, vert1, vert2, |
vert2, vert3, left1, left2, left3, right1, right2, right3, square1, square2, |
vert3, left1, left2, left3, right1, right2, right3, square1, square2, square3, |
square3, lozenge, brick, tile, sea, basket.</P> |
lozenge, brick, tile, sea, basket.</a></p> |
<P> |
<p> |
Like the other rules peculiar to graphics, <TT>LineStyle</TT> and |
Like the other rules peculiar to graphics, <tt>LineStyle</tt> and |
<TT>LineWeight</TT>, only elements of the graphic base type are affected by |
<tt>LineWeight</tt>, only elements of the graphic base type are affected by |
the <TT>FillPattern</TT> rule, but the rule can be attached to any box and |
the <tt>FillPattern</tt> rule, but the rule can be attached to any box and |
transmitted by inheritance to the graphic elements. As with the other rules |
transmitted by inheritance to the graphic elements. As with the other rules |
specific to graphics, only identical inheritance is allowed.</P> |
specific to graphics, only identical inheritance is allowed.</p> |
<P> |
<p> |
The <TT>FillPattern</TT> rule can also be used to determine whether or not |
The <tt>FillPattern</tt> rule can also be used to determine whether or not |
text characters, symbols and pictures should be colored. For these element |
text characters, symbols and pictures should be colored. For these element |
types (text, symbols, and pictures), the only valid values are |
types (text, symbols, and pictures), the only valid values are |
<TT>nopattern</TT>, <TT>foregroundcolor</TT>, and |
<tt>nopattern</tt>, <tt>foregroundcolor</tt>, and <tt>backgroundcolor</tt>. |
<TT>backgroundcolor</TT>. When <TT>FillPattern</TT> has the value |
When <tt>FillPattern</tt> has the value <tt>backgroundcolor</tt>, text |
<TT>backgroundcolor</TT>, text characters, symbols, and bitmaps are given the |
characters, symbols, and bitmaps are given the color specified by the <a |
color specified by the <A href="#sectc4230"><TT>Background</TT> rule</A> which |
href="#sectc4230"><tt>Background</tt> rule</a> which applies to these |
applies to these elements. When <TT>FillPattern</TT> has the value |
elements. When <tt>FillPattern</tt> has the value <tt>foregroundcolor</tt>, |
<TT>foregroundcolor</TT>, these same elements are given the color specified by |
these same elements are given the color specified by the <a |
the <A href="#sectc4230"><TT>Foreground</TT> rule</A> which applies to these |
href="#sectc4230"><tt>Foreground</tt> rule</a> which applies to these |
elements. In all other case, text characters are not colored.</P> |
elements. In all other case, text characters are not colored.</p> |
<PRE> |
<pre> 'FillPattern' ':' NameInherit</pre> |
'FillPattern' ':' NameInherit |
<blockquote class="example"> |
</PRE> |
<p> |
<BLOCKQUOTE class="example"> |
<strong>Example:</strong></p> |
<P> |
<p> |
<STRONG>Example:</STRONG></P> |
|
<P> |
|
To specify that, in Figures, the closed graphical elements should be filled |
To specify that, in Figures, the closed graphical elements should be filled |
with a pattern resembling a brick wall, the Figure element is given this |
with a pattern resembling a brick wall, the Figure element is given this |
rule:</P> |
rule:</p> |
<PRE> |
<pre>Figure : |
Figure : |
FillPattern : brick;</pre> |
FillPattern : brick; |
<p> |
</PRE> |
and the elements composing figures are given an inheritance rule:</p> |
<P> |
<pre> FillPattern : Enclosing =;</pre> |
and the elements composing figures are given an inheritance rule:</P> |
</blockquote> |
<PRE> |
</div> |
FillPattern : Enclosing =; |
|
</PRE> |
<div class="subsection"> |
</BLOCKQUOTE> |
|
</DIV> |
<h3><a name="sectc4230">Colors</a></h3> |
|
<p> |
<DIV class="subsection"> |
The <tt>Foreground</tt> and <tt>Background</tt> rules determine the foreground |
<H3><A name=sectc4230>Colors</A></H3> |
|
|
|
<P> |
|
The <TT>Foreground</TT> and <TT>Background</TT> rules determine the foreground |
|
and background colors of the base elements which appear in the box. They also |
and background colors of the base elements which appear in the box. They also |
control the color of boxes associated with elements having a |
control the color of boxes associated with elements having a <a |
<A href="#sectc4230a"><TT>ShowBox</TT> rule</A>. These |
href="#sectc4230a"><tt>ShowBox</tt> rule</a>. These colors can be specified |
colors can be specified with a named constant or by inheritance. The named |
with a named constant or by inheritance. The named constants specify one of |
constants specify one of the available colors in Thot. The available color |
the available colors in Thot. The available color names can be found in the |
names can be found in the file <TT>thot.color</TT>.</P> |
file <tt>thot.color</tt>.</p> |
<P> |
<p> |
The color rules affect the same way all base elements and elements having a |
The color rules affect the same way all base elements and elements having a <a |
<A href="#sectc4230a"><TT>ShowBox</TT> rule</A>, |
href="#sectc4230a"><tt>ShowBox</tt> rule</a>, no matter what their type (text, |
no matter what their type (text, graphics, pictures, |
graphics, pictures, symbols). The color rules can be associated with any box |
symbols). The color rules can be associated with any box and can be |
and can be transmitted by inheritance to the base elements or the elements |
transmitted by inheritance to the base elements or the elements having |
having a <a href="#sectc4230a"><tt>ShowBox</tt> rule</a>. Like the preceding |
a <A href="#sectc4230a"><TT>ShowBox</TT> rule</A>. Like the preceding rules, |
rules, only inheritance of the same value is allowed.</p> |
only inheritance of the same value is allowed.</P> |
<pre> 'Foreground' ':' NameInherit |
<PRE> |
'Background' ':' NameInherit</pre> |
'Foreground' ':' NameInherit |
<p> |
'Background' ':' NameInherit |
<strong>Note:</strong> text colors only appear for text elements whose <a |
</PRE> |
href="#sectc4229">fill pattern</a> does not prevent the use of color.</p> |
<P> |
<blockquote class="example"> |
<STRONG>Note:</STRONG> text colors only appear for text elements whose <A |
<p> |
href="#sectc4229">fill pattern</A> does not prevent the use of color.</P> |
<strong>Example:</strong></p> |
<BLOCKQUOTE class="example"> |
<p> |
<P> |
|
<STRONG>Example:</STRONG></P> |
|
<P> |
|
To specify that, in Figures, everything must be drawn in blue on a background |
To specify that, in Figures, everything must be drawn in blue on a background |
of yellow, the Figure element is given these rules:</P> |
of yellow, the Figure element is given these rules:</p> |
<PRE> |
<pre>Figure : |
Figure : |
|
BEGIN |
BEGIN |
Foreground : Blue; |
Foreground : Blue; |
Background : Yellow; |
Background : Yellow; |
Fillpattern : backgroundcolor; |
Fillpattern : backgroundcolor; |
END; |
END;</pre> |
</PRE> |
<p> |
<P> |
and the elements composing figures are given inheritance rules:</p> |
and the elements composing figures are given inheritance rules:</P> |
<pre> Foreground : Enclosing =; |
<PRE> |
|
Foreground : Enclosing =; |
|
Background : Enclosing =; |
Background : Enclosing =; |
FillPattern : Enclosing =; |
FillPattern : Enclosing =;</pre> |
</PRE> |
</blockquote> |
</BLOCKQUOTE> |
</div> |
</DIV> |
|
|
<div class="subsection"> |
<DIV class="subsection"> |
|
<H3><A name=sectc4230a>Background color and border</A></H3> |
<h3><a name="sectc4230a">Background color and border</a></h3> |
|
<p> |
<P> |
Boxes associated with structural elements are normally not visible, but it is |
Boxes associated with structural elements are normally not visible, but it |
possible to draw their border and/or to paint their area when it is needed. |
is possible to draw their border and/or to paint their area when it is needed. |
This is achieved by associating the <tt>ShowBox</tt> rule with the concerned |
This is achieved by associating the <TT>ShowBox</TT> rule with the concerned |
|
element. This rule has no parameter and no value. It is simply written |
element. This rule has no parameter and no value. It is simply written |
<TT>Showbox;</TT>. It is not inherited nor transmitted to any other element. |
<tt>Showbox;</tt>. It is not inherited nor transmitted to any other element. |
It applies only to the element with which it is associated.</P> |
It applies only to the element with which it is associated.</p> |
<PRE> |
<pre> 'ShowBox'</pre> |
'ShowBox' |
<p> |
</PRE> |
When an element has a <tt>ShowBox</tt> rule, the border is drawn only if the |
<P> |
<tt>LineWeight</tt> rule that applies to that element has a non-zero value |
When an element has a <TT>ShowBox</TT> rule, the border is drawn only if |
(this value can be inherited). The color, style and thickness of the border |
the <TT>LineWeight</TT> rule that applies to that element has a non-zero |
are defined by the <tt>Foreground</tt>, <tt>LineStyle</tt>, and |
value (this value can be inherited). The color, style and thickness of the |
<tt>LineWeight</tt> rules that apply to the element.</p> |
border are defined by the <TT>Foreground</TT>, <TT>LineStyle</TT>, and |
<p> |
<TT>LineWeight</TT> rules that apply to the element.</P> |
When an element has a <tt>ShowBox</tt> rule, the background of this element is |
<P> |
paint only if the value of the <tt>FillPattern</tt> rule that applies to that |
When an element has a <TT>ShowBox</TT> rule, the background of this element |
element is not <tt>nopattern</tt>. The pattern and color(s) of the background |
is paint only if the value of the <TT>FillPattern</TT> rule that applies to |
are defined by the <tt>FillPattern</tt>, <tt>Background</tt>, and |
that element is not <TT>nopattern</TT>. The pattern and color(s) of the |
<tt>Foreground</tt> rules that apply to the element.</p> |
background are defined by the <TT>FillPattern</TT>, <TT>Background</TT>, and |
</div> |
<TT>Foreground</TT> rules that apply to the element.</P> |
|
</DIV> |
<div class="subsection"> |
|
|
<DIV class="subsection"> |
<h3><a name="sectc4230b">Background pictures</a></h3> |
<H3><A name=sectc4230b>Background pictures</A></H3> |
<p> |
|
The <tt>BackgroundPicture</tt> rule allows to display a picture as the |
<P> |
|
The <TT>BackgroundPicture</TT> rule allows to display a picture as the |
|
background of an element. It has a single parameter, the file name of the |
background of an element. It has a single parameter, the file name of the |
picture. This is a string delimited by single quotes. If the first |
picture. This is a string delimited by single quotes. If the first character |
character in this string is '/', it is considered as an absolute path, |
in this string is '/', it is considered as an absolute path, otherwise the |
otherwise the file is searched for along the schema directory |
file is searched for along the schema directory path. This file may contain a |
path. This file may contain a picture in any format accepted by |
picture in any format accepted by Thot (xbm, xpm, gif, jpeg, png, etc.)</p> |
Thot (xbm, xpm, gif, jpeg, png, etc.)</P> |
<p> |
<P> |
The <tt>BackgroundPicture</tt> and <tt>PictureMode</tt> rules apply only to |
The <TT>BackgroundPicture</TT> and <TT>PictureMode</TT> rules apply only to |
|
the element with which they are associated. They are not inherited nor |
the element with which they are associated. They are not inherited nor |
transmitted to children elements.</P> |
transmitted to children elements.</p> |
<P> |
<p> |
The background picture has not always the same size as the element's box. |
The background picture has not always the same size as the element's box. |
There are diffrent ways to fill the element box with the picture. This is |
There are diffrent ways to fill the element box with the picture. This is |
specified by the <TT>PictureMode</TT> rule, which should be associated to |
specified by the <tt>PictureMode</tt> rule, which should be associated to the |
the same element. This rule may take one of the following values:</P> |
same element. This rule may take one of the following values:</p> |
<DL> |
<dl> |
<DT><TT>NormalSize</TT> |
<dt><tt>NormalSize</tt></dt> |
<DD>The picture is centered in the box, and clipped if it is too large. |
<dd> |
|
The picture is centered in the box, and clipped if it is too large. |
<DT><TT>Scale</TT> |
</dd> |
<DD>The picture is zoomed to fit the box size. |
<dt><tt>Scale</tt></dt> |
|
<dd> |
<DT><TT>RepeatX</TT> |
The picture is zoomed to fit the box size. |
<DD>The picture is repeated horizontally to fit the box width. |
</dd> |
|
<dt><tt>RepeatX</tt></dt> |
<DT><TT>RepeatY</TT> |
<dd> |
<DD>The picture is repeated vertically to fit the box height. |
The picture is repeated horizontally to fit the box width. |
|
</dd> |
<DT><TT>RepeatXY</TT> |
<dt><tt>RepeatY</tt></dt> |
<DD>The picture is repeated both horizontally and vertically to fill the box. |
<dd> |
</DL> |
The picture is repeated vertically to fit the box height. |
<P> |
</dd> |
If an element has a <TT>BackgroundPicture</TT> rule and no <TT>PictureMode</TT> |
<dt><tt>RepeatXY</tt></dt> |
rule, the <TT>NormalSize</TT> value is assumed.</P> |
<dd> |
<PRE> |
The picture is repeated both horizontally and vertically to fill the box. |
'BackgroundPicture' ':' FileName / |
</dd> |
|
</dl> |
|
<p> |
|
If an element has a <tt>BackgroundPicture</tt> rule and no |
|
<tt>PictureMode</tt> rule, the <tt>NormalSize</tt> value is assumed.</p> |
|
<pre> 'BackgroundPicture' ':' FileName / |
'PictureMode' ':' PictMode . |
'PictureMode' ':' PictMode . |
|
|
FileName = STRING . |
FileName = STRING . |
PictMode = 'NormalSize' / 'Scale' / 'RepeatXY' / 'RepeatX' / 'RepeatY' . |
PictMode = 'NormalSize' / 'Scale' / 'RepeatXY' / 'RepeatX' / 'RepeatY' .</pre> |
</PRE> |
<p> |
<P> |
The <tt>BackgroundPicture</tt> and <tt>PictureMode</tt> rules apply only to |
The <TT>BackgroundPicture</TT> and <TT>PictureMode</TT> rules apply only to |
|
the element with which they are associated. They are not inherited nor |
the element with which they are associated. They are not inherited nor |
transmitted to children elements.</P> |
transmitted to children elements.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc4231>Presentation box content</A></H3> |
|
|
|
<P> |
<h3><a name="sectc4231">Presentation box content</a></h3> |
The <TT>Content</TT> rule applies to presentation boxes. It indicates the |
<p> |
|
The <tt>Content</tt> rule applies to presentation boxes. It indicates the |
content given to a box. This content is either a variable's value or a |
content given to a box. This content is either a variable's value or a |
constant value. In the special case of <A href="#sectc4233">header or footer |
constant value. In the special case of <a href="#sectc4233">header or footer |
boxes</A>, the content can also be a structured element type.</P> |
boxes</a>, the content can also be a structured element type.</p> |
<P> |
<p> |
If the content is a constant, it can be specified, as in a variable |
If the content is a constant, it can be specified, as in a variable |
declaration, either by the name of a constant declared in the <TT>CONST</TT> |
declaration, either by the name of a constant declared in the <tt>CONST</tt> |
section or by direct specification of the type and value of the box's |
section or by direct specification of the type and value of the box's |
content.</P> |
content.</p> |
<P> |
<p> |
Similarly, if it is a variable, the name of a variable declared in |
Similarly, if it is a variable, the name of a variable declared in |
<TT>VAR</TT> section can be given or the variable may be defined within |
<tt>VAR</tt> section can be given or the variable may be defined within |
parentheses. The content inside the parentheses has the same syntax as a <A |
parentheses. The content inside the parentheses has the same syntax as a <a |
href="#sectc426">variable declaration</A>.</P> |
href="#sectc426">variable declaration</a>.</p> |
<P> |
<p> |
When the content is a structured element type, the name of the element type is |
When the content is a structured element type, the name of the element type is |
given after the colon. In this case, the box's content is all elements of |
given after the colon. In this case, the box's content is all elements of |
the named type which are designated by references which are part of the page |
the named type which are designated by references which are part of the page |
on which the header or footer with this <TT>Content</TT> rule appears. Only |
on which the header or footer with this <tt>Content</tt> rule appears. Only |
associated elements can appear in a <TT>Content</TT> rule and the structure |
associated elements can appear in a <tt>Content</tt> rule and the structure |
must provide references to these elements. Moreover, the box whose content |
must provide references to these elements. Moreover, the box whose content |
they are must be a header or footer box generated by a page box of the primary |
they are must be a header or footer box generated by a page box of the primary |
view.</P> |
view.</p> |
<PRE> |
<pre> 'Content' ':' VarConst |
'Content' ':' VarConst |
|
VarConst = ConstID / ConstType ConstValue / |
VarConst = ConstID / ConstType ConstValue / |
VarID / '(' FunctionSeq ')' / |
VarID / '(' FunctionSeq ')' / |
ElemID . |
ElemID .</pre> |
</PRE> |
<p> |
<P> |
A presentation box can have only one <tt>Content</tt> rule, which means that |
A presentation box can have only one <TT>Content</TT> rule, which means that |
|
the content of a presentation box cannot vary from view to view. However, such |
the content of a presentation box cannot vary from view to view. However, such |
an effect can be achieved by creating several presentation boxes, each with |
an effect can be achieved by creating several presentation boxes, each with |
different content and visible in different views.</P> |
different content and visible in different views.</p> |
<P> |
<p> |
The <TT>Content</TT> rule also applies to elements defined as references in |
The <tt>Content</tt> rule also applies to elements defined as references in |
the structure schema. In this case, the content defined by the rule must be |
the structure schema. In this case, the content defined by the rule must be |
a constant. It is this content which appears on the screen or paper to |
a constant. It is this content which appears on the screen or paper to |
represent references of the type to which the rule applies. A reference can |
represent references of the type to which the rule applies. A reference can |
have a <TT>Content</TT> rule or a <A href="#sectc4234"><TT>Copy</TT> rule</A> |
have a <tt>Content</tt> rule or a <a href="#sectc4234"><tt>Copy</tt> rule</a> |
for each view. If neither of these rules appears, the reference is displayed |
for each view. If neither of these rules appears, the reference is displayed |
as <TT>[*]</TT>, which is equivalent to the rule:</P> |
as <tt>[*]</tt>, which is equivalent to the rule:</p> |
<PRE> |
<pre> Content: Text '[*]';</pre> |
Content: Text '[*]'; |
<blockquote class="example"> |
</PRE> |
<p> |
<BLOCKQUOTE class="example"> |
<strong>Example:</strong></p> |
<P> |
<p> |
<STRONG>Example:</STRONG></P> |
|
<P> |
|
The content of the presentation box created to make the chapter number and |
The content of the presentation box created to make the chapter number and |
section number appear before each section title can be defined by:</P> |
section number appear before each section title can be defined by:</p> |
<PRE> |
<pre>BOXES |
BOXES |
|
SectionNumBox : |
SectionNumBox : |
BEGIN |
BEGIN |
Content : NumSection; |
Content : NumSection; |
... |
... |
END; |
END;</pre> |
</PRE> |
<p> |
<P> |
if the <tt>NumSection</tt> variable has been defined in the variable |
if the <TT>NumSection</TT> variable has been defined in the variable definition |
definition section of the presentation schema. Otherwise the <tt>Content</tt> |
section of the presentation schema. Otherwise the <TT>Content</TT> would be |
would be written:</p> |
written:</P> |
<pre>BOXES |
<PRE> |
|
BOXES |
|
SectionNumBox : |
SectionNumBox : |
BEGIN |
BEGIN |
Content : (VALUE (ChapterCtr, Roman) TEXT '.' |
Content : (VALUE (ChapterCtr, Roman) TEXT '.' |
VALUE (SectionCtr, Arabic)); |
VALUE (SectionCtr, Arabic)); |
... |
... |
END; |
END;</pre> |
</PRE> |
<p> |
<P> |
To specify that a page footer should contain all elements of the <tt>Note</tt> |
To specify that a page footer should contain all elements of the <TT>Note</TT> |
type are referred to in the page, the following rule is written:</p> |
type are referred to in the page, the following rule is written:</P> |
<pre>BOXES |
<PRE> |
|
BOXES |
|
NotesFooterBox : |
NotesFooterBox : |
BEGIN |
BEGIN |
Content : Note; |
Content : Note; |
... |
... |
END; |
END;</pre> |
</PRE> |
<p> |
<P> |
<tt>Note</tt> is defined as an associated element in the structure schema and |
<TT>Note</TT> is defined as an associated element in the structure schema and |
NotesFooterBox is created by a page box of the primary view.</p> |
NotesFooterBox is created by a page box of the primary view.</P> |
</blockquote> |
</BLOCKQUOTE> |
</div> |
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc4232>Presentation box creation</A></H3> |
|
|
|
<P> |
<h3><a name="sectc4232">Presentation box creation</a></h3> |
|
<p> |
A creation rule specifies that a presentation box should be created when an |
A creation rule specifies that a presentation box should be created when an |
element of the type to which the rule is attached appears in the document.</P> |
element of the type to which the rule is attached appears in the document.</p> |
<P> |
<p> |
A keyword specifies the position, relative to the creating box, at which the |
A keyword specifies the position, relative to the creating box, at which the |
created box will be placed in the structure:</P> |
created box will be placed in the structure:</p> |
<DL> |
<dl> |
<DT><TT>CreateFirst</TT></DT> |
<dt><tt>CreateFirst</tt></dt> |
<DD>specifies that the box should be created as the first box of the next lower |
<dd> |
|
specifies that the box should be created as the first box of the next lower |
level, before any already existing boxes, and only if the beginning of the |
level, before any already existing boxes, and only if the beginning of the |
creating element is visible; |
creating element is visible; |
</DD> |
</dd> |
<DT><TT>CreateLast</TT></DT> |
<dt><tt>CreateLast</tt></dt> |
<DD>specifies that the box should be created as the last box of the next lower |
<dd> |
level, after any existing boxes, and only if the end of the creating element is |
specifies that the box should be created as the last box of the next lower |
visible; |
level, after any existing boxes, and only if the end of the creating element |
</DD> |
is visible; |
<DT><TT>CreateBefore</TT></DT> |
</dd> |
<DD>specifies that the box should be created before the creating box, on the |
<dt><tt>CreateBefore</tt></dt> |
same level as the creating box, and only if the beginning of the creating |
<dd> |
element is visible; |
specifies that the box should be created before the creating box, on the same |
</DD> |
level as the creating box, and only if the beginning of the creating element |
<DT><TT>CreateAfter</TT></DT> |
is visible; |
<DD>specifies that the box should be created after the creating box, on the |
</dd> |
same level as the creating box, and only if the beginning of the creating |
<dt><tt>CreateAfter</tt></dt> |
element is visible; |
<dd> |
</DD> |
specifies that the box should be created after the creating box, on the same |
<DT><TT>CreateEnclosing</TT></DT> |
level as the creating box, and only if the beginning of the creating element |
<DD>specifies that the box should be created at the upper level relatively to |
is visible; |
the creating box, and that it must contain that creating box and all |
</dd> |
presentation boxes created by the same creating box. |
<dt><tt>CreateEnclosing</tt></dt> |
</DD> |
<dd> |
</DL> |
specifies that the box should be created at the upper level relatively to the |
<P> |
creating box, and that it must contain that creating box and all presentation |
This keyword can be followed by the <TT>Repeated</TT> keyword to indicate that |
boxes created by the same creating box. |
|
</dd> |
|
</dl> |
|
<p> |
|
This keyword can be followed by the <tt>Repeated</tt> keyword to indicate that |
the box must be created for each part of the creating element. These parts |
the box must be created for each part of the creating element. These parts |
result from the division of the element by page breaks or column changes. If |
result from the division of the element by page breaks or column changes. If |
the <TT>Repeated</TT> keyword is missing, the box is only created for the |
the <tt>Repeated</tt> keyword is missing, the box is only created for the |
first part of the creating element (<TT>CreateFirst</TT> and |
first part of the creating element (<tt>CreateFirst</tt> and |
<TT>CreateBefore</TT> rules) or for the last part (<TT>CreateLast</TT> and |
<tt>CreateBefore</tt> rules) or for the last part (<tt>CreateLast</tt> and |
<TT>CreateAfter</TT> rules).</P> |
<tt>CreateAfter</tt> rules).</p> |
<P> |
<p> |
The type of presentation to be created is specified at the end of the rule |
The type of presentation to be created is specified at the end of the rule |
between parentheses.</P> |
between parentheses.</p> |
<P> |
<p> |
Creation rules cannot appear in the <A href="#sectc427">default |
Creation rules cannot appear in the <a href="#sectc427">default presentation |
presentation rules</A>. The boxes being created should have a |
rules</a>. The boxes being created should have a <tt>Content</tt> rule which |
<TT>Content</TT> rule which indicates their <A |
indicates their <a href="#sectc4231">content</a>.</p> |
href="#sectc4231">content</A>.</P> |
<p> |
<P> |
|
Creation rules can only appear in the block of rules for the primary view; |
Creation rules can only appear in the block of rules for the primary view; |
creation is provoked by a document element for all views. However, for each |
creation is provoked by a document element for all views. However, for each |
view, the presentation box is only created if the creating element is itself a |
view, the presentation box is only created if the creating element is itself a |
box in the view. Moreover, the visibility parameter of the presentation box |
box in the view. Moreover, the visibility parameter of the presentation box |
can be adjusted to control the creation of the box on a view-by-view |
can be adjusted to control the creation of the box on a view-by-view |
basis.</P> |
basis.</p> |
<PRE> |
<pre> Creation '(' BoxID ')' |
Creation '(' BoxID ')' |
|
Creation = Create [ 'Repeated' ] . |
Creation = Create [ 'Repeated' ] . |
Create ='CreateFirst' / 'CreateLast' / |
Create ='CreateFirst' / 'CreateLast' / |
'CreateBefore' / 'CreateAfter' / |
'CreateBefore' / 'CreateAfter' / |
'CreateEnclosing' . |
'CreateEnclosing' .</pre> |
</PRE> |
<blockquote class="example"> |
<BLOCKQUOTE class="example"> |
<p> |
<P> |
<strong>Example:</strong></p> |
<STRONG>Example:</STRONG></P> |
<p> |
<P> |
|
Let us define an object type, called Table, which is composed of a sequence of |
Let us define an object type, called Table, which is composed of a sequence of |
columns, all having the same fixed width, where the columns are separated by |
columns, all having the same fixed width, where the columns are separated by |
vertical lines. There is a line to the left of the first column and one to the |
vertical lines. There is a line to the left of the first column and one to |
right of the last. Each column has a variable number of cells, placed one on |
the right of the last. Each column has a variable number of cells, placed one |
top of the other and separated by horizontal lines. There are no horizontal |
on top of the other and separated by horizontal lines. There are no |
lines above the first cell or below the last cell. The text contained in |
horizontal lines above the first cell or below the last cell. The text |
each cell is broken into lines and these lines are centered horizontally in |
contained in each cell is broken into lines and these lines are centered |
the cell. The logical structure of this object is defined by:</P> |
horizontally in the cell. The logical structure of this object is defined |
<PRE> |
by:</p> |
Table = LIST OF (Column); |
<pre>Table = LIST OF (Column); |
Column = LIST OF (Cell = Text); |
Column = LIST OF (Cell = Text);</pre> |
</PRE> |
|
|
<div class="figure"> |
<DIV class="figure"> |
<hr> |
<HR> |
<pre>| | | | |
<PRE> |
|
| | | | |
|
| xx xxxx xxxx |x xxxx xxx xxxxx| x xxx x xxx | |
| xx xxxx xxxx |x xxxx xxx xxxxx| x xxx x xxx | |
| xxx xxx xxxx x | x xx x xxx | xxxxx xxxx xx | |
| xxx xxx xxxx x | x xx x xxx | xxxxx xxxx xx | |
| xxxxx xxxx |----------------| xxx xxxxx x | |
| xxxxx xxxx |----------------| xxx xxxxx x | |
Line 6027 Column = LIST OF (Cell = Text);
|
Line 5996 Column = LIST OF (Cell = Text);
|
| xxxx xxxx xx | xxxx xx x xx | xxx xx x xx | |
| xxxx xxxx xx | xxxx xx x xx | xxx xx x xx | |
|----------------| xxx xxxxx xxxx | xxxx xxxx xxx | |
|----------------| xxx xxxxx xxxx | xxxx xxxx xxx | |
| xxxxx xxx xxxx | xxxx xx x xx | xxxxx xxx | |
| xxxxx xxx xxxx | xxxx xx x xx | xxxxx xxx | |
|xxxx xx x xxxxxx| xxxx xx xxxxxx | xxxxx xxxxx | |
|xxxx xx x xxxxxx| xxxx xx xxxxxx | xxxxx xxxxx |</pre> |
</PRE> |
<p align=center> |
<P align=center> |
<em><a name="table">The design of a table</a></em></p> |
<EM><A name="table">The design of a table</A></EM></P> |
<hr> |
<HR> |
</div> |
</DIV> |
<p> |
<P> |
The presentation of the table should resemble the design of the above <a |
The presentation of the table should resemble the design of the above <A |
href="#table">figure</a>. It is defined by the following presentation schema |
href="#table">figure</A>. It is defined by the following presentation schema |
fragment:</p> |
fragment:</P> |
<pre>BOXES |
<PRE> |
|
BOXES |
|
VertLine : BEGIN |
VertLine : BEGIN |
Width : 0.3 cm; |
Width : 0.3 cm; |
Height : Enclosing . Height; |
Height : Enclosing . Height; |
Line 6073 RULES
|
Line 6040 RULES
|
HorizPos : Left = Enclosing . Left; |
HorizPos : Left = Enclosing . Left; |
Line; |
Line; |
Adjust : VMiddle; |
Adjust : VMiddle; |
END; |
END;</pre> |
</PRE> |
<p> |
<P> |
|
It is useful to note that the horizontal position rule of the first vertical |
It is useful to note that the horizontal position rule of the first vertical |
line will not be applied, since there is no preceding box. In this case, the |
line will not be applied, since there is no preceding box. In this case, the |
box is simply placed on the left side of the enclosing box.</P> |
box is simply placed on the left side of the enclosing box.</p> |
</BLOCKQUOTE> |
</blockquote> |
</DIV> |
</div> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc4233>Page layout</A></H3> |
|
|
<h3><a name="sectc4233">Page layout</a></h3> |
<P> |
<p> |
The page models specified in the <TT>Page</TT> rule are defined by boxes |
The page models specified in the <tt>Page</tt> rule are defined by boxes |
declared in the <TT>BOXES</TT> section of the presentation schema. Pages are |
declared in the <tt>BOXES</tt> section of the presentation schema. Pages are |
not described as frames which will be filled by the document's text, but as |
not described as frames which will be filled by the document's text, but as |
element are inserted in the flow of the document and which mark the page |
element are inserted in the flow of the document and which mark the page |
breaks. Each of these page break elements contains presentation boxes which |
breaks. Each of these page break elements contains presentation boxes which |
Line 6095 represent the footer boxes of a page fol
|
Line 6061 represent the footer boxes of a page fol
|
page. The page box itself is the simple line which separates two pages on the |
page. The page box itself is the simple line which separates two pages on the |
screen. Both the footer and header boxes placed themselves with respect to |
screen. Both the footer and header boxes placed themselves with respect to |
this page box, with the footer being placed above it and the header boxes |
this page box, with the footer being placed above it and the header boxes |
being placed above it.</P> |
being placed above it.</p> |
<P> |
<p> |
The boxes created by a page box are headers and footers and can only place |
The boxes created by a page box are headers and footers and can only place |
themselves vertically with respect to the page box itself (which is in fact |
themselves vertically with respect to the page box itself (which is in fact |
the separation between two pages). Besides, it is their vertical position |
the separation between two pages). Besides, it is their vertical position |
rule which determines whether they are header or footer boxes. Header and |
rule which determines whether they are header or footer boxes. Header and |
footer boxes must have an explicit vertical position rule (they must not use |
footer boxes must have an explicit vertical position rule (they must not use |
the default rule).</P> |
the default rule).</p> |
<P> |
<p> |
Footer boxes must have an absolute height or inherit the height of their |
Footer boxes must have an absolute height or inherit the height of their |
contents:</P> |
contents:</p> |
<PRE> |
<pre>Height : Enclosed . Height;</pre> |
Height : Enclosed . Height; |
<p> |
</PRE> |
|
<P> |
|
A page box must have height and width rules and these two rules must be |
A page box must have height and width rules and these two rules must be |
specified with constant values, expressed in centimeters, inches, or |
specified with constant values, expressed in centimeters, inches, or |
typographer's points. These two rules are interpreted in a special way for |
typographer's points. These two rules are interpreted in a special way for |
page boxes: they determine the width of the page and the vertical distance |
page boxes: they determine the width of the page and the vertical distance |
between two page separators, which is the height of the page and its header |
between two page separators, which is the height of the page and its header |
and footer together.</P> |
and footer together.</p> |
<P> |
<p> |
A page box should also have vertical and horizontal position rules and these |
A page box should also have vertical and horizontal position rules and these |
two rules should specify the position on the sheet of paper of the rectangle |
two rules should specify the position on the sheet of paper of the rectangle |
enclosing the page's contents. These two rules must position the upper left |
enclosing the page's contents. These two rules must position the upper left |
corner of the enclosing rectangle in relation to the upper left corner of the |
corner of the enclosing rectangle in relation to the upper left corner of the |
sheet of paper, considered to be the enclosing element. In both rules, |
sheet of paper, considered to be the enclosing element. In both rules, |
distances must be expressed in fixed units: centimeters (<TT>cm</TT>), inches |
distances must be expressed in fixed units: centimeters (<tt>cm</tt>), inches |
(<TT>in</TT>), or typographer's points (<TT>pt</TT>). Thus, rules similar to |
(<tt>in</tt>), or typographer's points (<tt>pt</tt>). Thus, rules similar to |
the following should be found in the rules for a page box:</P> |
the following should be found in the rules for a page box:</p> |
<PRE> |
<pre>BOXES |
BOXES |
|
ThePage : |
ThePage : |
BEGIN |
BEGIN |
VertPos : Top = Enclosing . Top + 3 cm; |
VertPos : Top = Enclosing . Top + 3 cm; |
HorizPos : Left = Enclosing . Left + 2.5 cm; |
HorizPos : Left = Enclosing . Left + 2.5 cm; |
Width : 16 cm; |
Width : 16 cm; |
Height : 22.5 cm; |
Height : 22.5 cm; |
END; |
END;</pre> |
</PRE> |
<p> |
<P> |
|
When a document must be page broken, the page models to be constructed are |
When a document must be page broken, the page models to be constructed are |
defined in the <TT>BOXES</TT> section of the presentation schema by declaring |
defined in the <tt>BOXES</tt> section of the presentation schema by declaring |
page boxes and header and footer boxes. Also, the <TT>Page</TT> rule is used |
page boxes and header and footer boxes. Also, the <tt>Page</tt> rule is used |
to specify to which parts of the document and to which views each model should |
to specify to which parts of the document and to which views each model should |
be applied.</P> |
be applied.</p> |
<P> |
<p> |
The <TT>Page</TT> rule has only one parameter, given between parentheses after |
The <tt>Page</tt> rule has only one parameter, given between parentheses after |
the <TT>Page</TT> keyword. This parameter is the name of the box which must |
the <tt>Page</tt> keyword. This parameter is the name of the box which must |
serve as the model for page construction. When a <TT>Page</TT> rule is |
serve as the model for page construction. When a <tt>Page</tt> rule is |
attached to an element type, each time such an element appears in a document, |
attached to an element type, each time such an element appears in a document, |
a page break takes place and the page model indicated in the rule is applied |
a page break takes place and the page model indicated in the rule is applied |
to all following pages, until reaching the next element which has a |
to all following pages, until reaching the next element which has a |
<TT>Page</TT> rule.</P> |
<tt>Page</tt> rule.</p> |
<P> |
<p> |
The <TT>Page</TT> rule applies to only one view; if it appears in the primary |
The <tt>Page</tt> rule applies to only one view; if it appears in the primary |
view's block of rules, a <TT>Page</TT> rule applies only to that view. Thus, |
view's block of rules, a <tt>Page</tt> rule applies only to that view. Thus, |
different page models can be defined for the full document and for its table |
different page models can be defined for the full document and for its table |
of contents, which is another view of the same document. Some views can be |
of contents, which is another view of the same document. Some views can be |
specified with pages, and other views of the same document can be specified |
specified with pages, and other views of the same document can be specified |
without pages.</P> |
without pages.</p> |
<PRE> |
<pre> 'Page' '(' BoxID ')'</pre> |
'Page' '(' BoxID ')' |
</div> |
</PRE> |
|
</DIV> |
<div class="subsection"> |
|
|
<DIV class="subsection"> |
<h3><a name="sectc4234">Box copies</a></h3> |
<H3><A name=sectc4234>Box copies</A></H3> |
<p> |
|
The <tt>Copy</tt> rule can be used for an element which is defined as a |
<P> |
|
The <TT>Copy</TT> rule can be used for an element which is defined as a |
|
reference in the structure schema. In this case, the rule specifies, between |
reference in the structure schema. In this case, the rule specifies, between |
parenthesis, the name of the box (declared in the <TT>BOXES</TT> section) |
parenthesis, the name of the box (declared in the <tt>BOXES</tt> section) |
which must be produced when this reference appears in the structure of a |
which must be produced when this reference appears in the structure of a |
document. The box produced is a copy (same contents, but possible different |
document. The box produced is a copy (same contents, but possible different |
presentation) of the box type indicated by the parameter between parentheses, |
presentation) of the box type indicated by the parameter between parentheses, |
and which is in the element designated by the reference. The name of a box |
and which is in the element designated by the reference. The name of a box |
can be replaced by type name. Then what is copied is the contents of the |
can be replaced by type name. Then what is copied is the contents of the |
element of this type which is inside the referenced element.</P> |
element of this type which is inside the referenced element.</p> |
<P> |
<p> |
Whether a box name or type name is given, it may be followed by the name of a |
Whether a box name or type name is given, it may be followed by the name of a |
structure schema between parentheses. This signifies that the box or type is |
structure schema between parentheses. This signifies that the box or type is |
defined in the indicated structure schema and not in the structure schema with |
defined in the indicated structure schema and not in the structure schema with |
which the rule's presentation schema is associated.</P> |
which the rule's presentation schema is associated.</p> |
<P> |
<p> |
The <TT>Copy</TT> rule can also be applied to a presentation box. If the |
The <tt>Copy</tt> rule can also be applied to a presentation box. If the |
presentation box was created by a reference attribute, the rule is applied as |
presentation box was created by a reference attribute, the rule is applied as |
in the case of a reference element: the contents of the box having the |
in the case of a reference element: the contents of the box having the |
<TT>Copy</TT> rule are based on the element designated by the reference |
<tt>Copy</tt> rule are based on the element designated by the reference |
attribute. For other presentation boxes, the <TT>Copy</TT> rule takes a type |
attribute. For other presentation boxes, the <tt>Copy</tt> rule takes a type |
name parameter which can be followed, between parentheses, by the name of the |
name parameter which can be followed, between parentheses, by the name of the |
structure schema in which the type is defined, if it is not defined in the |
structure schema in which the type is defined, if it is not defined in the |
same schema. The contents of the box which has this rule are a copy of the |
same schema. The contents of the box which has this rule are a copy of the |
element of this type which is in the element creating the presentation box, or |
element of this type which is in the element creating the presentation box, or |
by default, the box of this type which precedes the presentation box. This |
by default, the box of this type which precedes the presentation box. This |
last facility is used, for example, to define the running titles in headers or |
last facility is used, for example, to define the running titles in headers or |
footers.</P> |
footers.</p> |
<PRE> |
<pre> 'Copy' '(' BoxTypeToCopy ')' . |
'Copy' '(' BoxTypeToCopy ')' . |
|
BoxTypeToCopy = BoxID [ ExtStruct ] / |
BoxTypeToCopy = BoxID [ ExtStruct ] / |
ElemID [ ExtStruct ] . |
ElemID [ ExtStruct ] . |
ExtStruct = '(' ElemID ')' . |
ExtStruct = '(' ElemID ')' .</pre> |
</PRE> |
<p> |
<P> |
Like the creation rules, the <tt>Copy</tt> rule cannot appear in the <a |
Like the creation rules, the <TT>Copy</TT> rule cannot appear in the <A |
href="#sectc427">default presentation rules</a>. Moreover, this rule can only |
href="#sectc427">default presentation rules</A>. Moreover, this rule |
appear in the primary view's block of rules; the copy rule is applied to all |
can only appear in the primary view's block of rules; the copy rule is applied |
views.</p> |
to all views.</P> |
<blockquote class="example"> |
<BLOCKQUOTE class="example"> |
<p> |
<P> |
<strong>Example:</strong></p> |
<STRONG>Example:</STRONG></P> |
<p> |
<P> |
If the following definitions are in the structure schema:</p> |
If the following definitions are in the structure schema:</P> |
<pre>Body = LIST OF (Chapter = |
<PRE> |
|
Body = LIST OF (Chapter = |
|
BEGIN |
BEGIN |
ChapterTitle = Text; |
ChapterTitle = Text; |
ChapterBody = SectionSeq; |
ChapterBody = SectionSeq; |
END); |
END); |
RefChapter = REFERENCE (Chapter); |
RefChapter = REFERENCE (Chapter);</pre> |
</PRE> |
<p> |
<P> |
then the following presentation rules (among many other rules in the |
then the following presentation rules (among many other rules in |
presentation schema) can be specified:</p> |
the presentation schema) can be specified:</P> |
<pre>COUNTERS |
<PRE> |
|
COUNTERS |
|
ChapterCtr : RANK OF Chapter; |
ChapterCtr : RANK OF Chapter; |
BOXES |
BOXES |
ChapterNumber : |
ChapterNumber : |
Line 6238 RULES
|
Line 6193 RULES
|
BEGIN |
BEGIN |
Copy (ChapterNumber); |
Copy (ChapterNumber); |
... |
... |
END; |
END;</pre> |
</PRE> |
<p> |
<P> |
|
which makes the number of the chapter designated by the reference appear in |
which makes the number of the chapter designated by the reference appear in |
uppercase roman numerals, in place of the reference to a chapter itself. |
uppercase roman numerals, in place of the reference to a chapter itself. |
Alternatively, the chapter title can be made to appear in place of the |
Alternatively, the chapter title can be made to appear in place of the |
reference by writing this <TT>Copy</TT>rule:</P> |
reference by writing this <tt>Copy</tt>rule:</p> |
<PRE> |
<pre> Copy (ChapterTitle);</pre> |
Copy (ChapterTitle); |
<p> |
</PRE> |
To define a header box, named <tt>RunningTitle</tt>, which contains the title |
<P> |
of the current chapter, the box's contents are defined in this way:</p> |
To define a header box, named <TT>RunningTitle</TT>, which contains the title |
<pre>BOXES |
of the current chapter, the box's contents are defined in this way:</P> |
|
<PRE> |
|
BOXES |
|
RunningTitle : |
RunningTitle : |
Copy (ChapterTitle); |
Copy (ChapterTitle);</pre> |
</PRE> |
</blockquote> |
</BLOCKQUOTE> |
</div> |
</DIV> |
</div> |
</DIV> |
<hr> |
<HR> |
</div> |
</DIV> |
|
|
|
<DIV class="chapter"> |
<div class="chapter"> |
<H1><A name=sect5>The T language</A></H1> |
|
|
|
|
<h1><a name="sect5">The T language</a></h1> |
|
|
<DIV class="section"> |
<div class="section"> |
<H2><A name=sectb51>Document translation</A></H2> |
|
|
|
<P> |
<h2><a name="sectb51">Document translation</a></h2> |
|
<p> |
Because of its document model, Thot can produce documents in a high-level |
Because of its document model, Thot can produce documents in a high-level |
abstract form. This form, called the <EM>canonical form</EM> is specific to |
abstract form. This form, called the <em>canonical form</em> is specific to |
Thot; it is well suited to the editor's manipulations, but it does not |
Thot; it is well suited to the editor's manipulations, but it does not |
necessarily suit other operations which might be applied to documents. Because |
necessarily suit other operations which might be applied to documents. Because |
of this, the Thot editor offers the choice of saving documents in its own form |
of this, the Thot editor offers the choice of saving documents in its own form |
(the canonical form) or a format defined by the user. In the latter case, the |
(the canonical form) or a format defined by the user. In the latter case, the |
Thot document is transformed by the translation program. This facility can |
Thot document is transformed by the translation program. This facility can |
also be used to export documents from Thot to systems using other |
also be used to export documents from Thot to systems using other |
formalisms.</P> |
formalisms.</p> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc511>Translation principles</A></H3> |
|
|
|
<P> |
<h3><a name="sectc511">Translation principles</a></h3> |
|
<p> |
Document translation allows the export of documents to other systems which do |
Document translation allows the export of documents to other systems which do |
not accept Thot's canonical form. Translation can be used to export document |
not accept Thot's canonical form. Translation can be used to export document |
to source-based formatters like T<SUB><BIG>E</BIG></SUB>X, |
to source-based formatters like T<sub><big>E</big></sub>X, |
L<SUP>A</SUP>T<SUB><BIG>E</BIG></SUB>X, and <TT>troff</TT>. It can also be |
L<sup>A</sup>T<sub><big>E</big></sub>X, and <tt>troff</tt>. It can also be |
used to translate documents into interchange formats like SGML or HTML. To |
used to translate documents into interchange formats like SGML or HTML. To |
allow the widest range of possible exports, Thot does not limit the choice of |
allow the widest range of possible exports, Thot does not limit the choice of |
translations, but rather allows the user to define the formalisms into which |
translations, but rather allows the user to define the formalisms into which |
documents can be translated.</P> |
documents can be translated.</p> |
<P> |
<p> |
For each document or object class, a set of translation rules can be defined, |
For each document or object class, a set of translation rules can be defined, |
specifying how the canonical form should be transformed into a given |
specifying how the canonical form should be transformed into a given |
formalism. These translation rules are grouped into <EM>translation |
formalism. These translation rules are grouped into <em>translation |
schemas</EM>, each schema containing the rules necessary to translate a |
schemas</em>, each schema containing the rules necessary to translate a |
generic logical structure (document or object structure) into a particular |
generic logical structure (document or object structure) into a particular |
formalism. The same generic logical structure can have several different |
formalism. The same generic logical structure can have several different |
translation schemas, each defining translation rules for a different |
translation schemas, each defining translation rules for a different |
formalism.</P> |
formalism.</p> |
<P> |
<p> |
Like presentation schemas, translation schemas are generic. Thus, they apply |
Like presentation schemas, translation schemas are generic. Thus, they apply |
to an entire object or document class and permit translation of all documents |
to an entire object or document class and permit translation of all documents |
or objects of that class.</P> |
or objects of that class.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc512>Translation procedure</A></H3> |
|
|
|
<P> |
<h3><a name="sectc512">Translation procedure</a></h3> |
|
<p> |
The translator works on the specific logical structure of the document being |
The translator works on the specific logical structure of the document being |
translated. It traverses the primary tree of this logical structure in |
translated. It traverses the primary tree of this logical structure in |
pre-order and, at each node encountered, it applies the corresponding |
pre-order and, at each node encountered, it applies the corresponding |
translation rules defined in the translation schema. Translation can be |
translation rules defined in the translation schema. Translation can be |
associated:</P> |
associated:</p> |
<UL> |
<ul> |
<LI>with element types defined in the structure schema, |
<li> |
<LI>with global or local attributes defined in the structure schema, |
with element types defined in the structure schema, |
<LI>with specific presentation rules, |
<li> |
<LI>with the content of the leaves of the structure (characters, symbols and |
with global or local attributes defined in the structure schema, |
|
<li> |
|
with specific presentation rules, |
|
<li> |
|
with the content of the leaves of the structure (characters, symbols and |
graphical elements) |
graphical elements) |
</UL> |
</ul> |
<P> |
<p> |
Thus, for each node, the translator applies all rules associated with the |
Thus, for each node, the translator applies all rules associated with the |
element type, all rules associated with each attribute (local or global) |
element type, all rules associated with each attribute (local or global) |
carried by the element, and if the element is a leaf of the tree, it also |
carried by the element, and if the element is a leaf of the tree, it also |
applies translation rules for characters, symbols, or graphical elements, |
applies translation rules for characters, symbols, or graphical elements, |
depending on the type of the leaf.</P> |
depending on the type of the leaf.</p> |
<P> |
<p> |
Rules associated with the content of leaves are different from all other |
Rules associated with the content of leaves are different from all other |
rules: they specify only how to translate character strings, symbols, and |
rules: they specify only how to translate character strings, symbols, and |
graphical elements. All other rules, whether associated with element types, |
graphical elements. All other rules, whether associated with element types, |
with specific presentation rules or with attributes, are treated similarly. |
with specific presentation rules or with attributes, are treated similarly. |
These rules primarily allow:</P> |
These rules primarily allow:</p> |
<UL> |
<ul> |
<LI>generation of a text constant or variable before or after the contents of |
<li> |
an element, |
generation of a text constant or variable before or after the contents of an |
<LI>modification of the order in which elements appear after translation, |
element, |
<LI>removal of an element in the translated document, |
<li> |
<LI>and writing messages on the user's terminal during translation. |
modification of the order in which elements appear after translation, |
</UL> |
<li> |
</DIV> |
removal of an element in the translated document, |
</DIV> |
<li> |
|
and writing messages on the user's terminal during translation. |
|
</ul> |
|
</div> |
|
</div> |
|
|
<DIV class="section"> |
<div class="section"> |
<H2><A name=sectb52>Translation definition language</A></H2> |
|
|
|
<P> |
<h2><a name="sectb52">Translation definition language</a></h2> |
|
<p> |
Translation schemas are written in a custom language, called T, which is |
Translation schemas are written in a custom language, called T, which is |
described in the rest of this chapter. The grammar of T is specified using |
described in the rest of this chapter. The grammar of T is specified using |
the same <A href="#sectc321">meta-language</A> as was used for the S and P |
the same <a href="#sectc321">meta-language</a> as was used for the S and P |
languages and the translation schemas are written using the same conventions |
languages and the translation schemas are written using the same conventions |
as the structure and presentation schemas. In particular, the keywords of the |
as the structure and presentation schemas. In particular, the keywords of the |
T language (the stings between apostrophes in the following syntax rules) can |
T language (the stings between apostrophes in the following syntax rules) can |
be written in any combination of upper-case and lower-case letters, but |
be written in any combination of upper-case and lower-case letters, but |
identifiers created by the programmer must always be written in the same |
identifiers created by the programmer must always be written in the same |
way.</P> |
way.</p> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc521>Organization of a translation schema</A></H3> |
|
|
|
<P> |
<h3><a name="sectc521">Organization of a translation schema</a></h3> |
A translation schema is begun by the <TT>TRANSLATION</TT> keyword and is |
<p> |
terminated by the <TT>END</TT> keyword. The <TT>TRANSLATION</TT> keyword is |
A translation schema is begun by the <tt>TRANSLATION</tt> keyword and is |
|
terminated by the <tt>END</tt> keyword. The <tt>TRANSLATION</tt> keyword is |
followed by the name of the generic structure for which a translation is being |
followed by the name of the generic structure for which a translation is being |
defined and a semicolon. This name must be identical to the name which |
defined and a semicolon. This name must be identical to the name which |
appears after the <TT>STRUCTURE</TT> keyword in the corresponding structure |
appears after the <tt>STRUCTURE</tt> keyword in the corresponding structure |
schema.</P> |
schema.</p> |
<P> |
<p> |
After this declaration of the structure, the following material appears in |
After this declaration of the structure, the following material appears in |
order:</P> |
order:</p> |
<UL> |
<ul> |
<LI>the length of lines produced by the translation, |
<li> |
<LI>the character delimiting the end of the line, |
the length of lines produced by the translation, |
<LI>the character string which the translator will insert if it must |
<li> |
line-break the translated text, |
the character delimiting the end of the line, |
<LI>declarations of |
<li> |
<UL> |
the character string which the translator will insert if it must line-break |
<LI>buffers, |
the translated text, |
<LI>counters, |
<li> |
<LI>constants, |
declarations of |
<LI>variables, |
<ul> |
</UL> |
<li> |
<LI>translation rules associated with element types, |
buffers, |
<LI>translation rules associated with attributes, |
<li> |
<LI>translation rules associated with specific presentation rules, |
counters, |
<LI>translation rules associated with characters strings, symbols and |
<li> |
graphical elements. |
constants, |
</UL> |
<li> |
<P> |
variables, |
|
</ul> |
|
<li> |
|
translation rules associated with element types, |
|
<li> |
|
translation rules associated with attributes, |
|
<li> |
|
translation rules associated with specific presentation rules, |
|
<li> |
|
translation rules associated with characters strings, symbols and graphical |
|
elements. |
|
</ul> |
|
<p> |
Each of these sections is introduced by a keyword followed by a sequence of |
Each of these sections is introduced by a keyword followed by a sequence of |
declarations. All of these sections are optional, expect for the translation |
declarations. All of these sections are optional, expect for the translation |
rules associated with element types. Many <TT>TEXTTRANSLATE</TT> sections can |
rules associated with element types. Many <tt>TEXTTRANSLATE</tt> sections can |
appear, each defining the rules for translating character strings of a |
appear, each defining the rules for translating character strings of a |
particular alphabet.</P> |
particular alphabet.</p> |
<PRE> |
<pre> TransSchema ='TRANSLATION' ElemID ';' |
TransSchema ='TRANSLATION' ElemID ';' |
|
[ 'LINELENGTH' LineLength ';' ] |
[ 'LINELENGTH' LineLength ';' ] |
[ 'LINEEND' CHARACTER ';' ] |
[ 'LINEEND' CHARACTER ';' ] |
[ 'LINEENDINSERT' STRING ';' ] |
[ 'LINEENDINSERT' STRING ';' ] |
Line 6411 particular alphabet.</P>
|
Line 6380 particular alphabet.</P>
|
< 'TEXTTRANSLATE' TextTransSeq > |
< 'TEXTTRANSLATE' TextTransSeq > |
[ 'SYMBTRANSLATE' TransSeq ] |
[ 'SYMBTRANSLATE' TransSeq ] |
[ 'GRAPHTRANSLATE' TransSeq ] |
[ 'GRAPHTRANSLATE' TransSeq ] |
'END' . |
'END' .</pre> |
</PRE> |
</div> |
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc522>Line length</A></H3> |
|
|
|
<P> |
<h3><a name="sectc522">Line length</a></h3> |
If a <TT>LINELENGTH</TT> instruction is present after the structure |
<p> |
|
If a <tt>LINELENGTH</tt> instruction is present after the structure |
declaration, the translator divides the text it produces into lines, each line |
declaration, the translator divides the text it produces into lines, each line |
having a length less than or equal to the integer which follows the |
having a length less than or equal to the integer which follows the |
<TT>LINELENGTH</TT> keyword. This maximum line length is expressed as a |
<tt>LINELENGTH</tt> keyword. This maximum line length is expressed as a |
number of characters. The end of the line is marked by the character defined |
number of characters. The end of the line is marked by the character defined |
by the <TT>LINEEND</TT> instruction. When the translator breaks the lines on |
by the <tt>LINEEND</tt> instruction. When the translator breaks the lines on |
a space character in generated text, this space will be replaced by the |
a space character in generated text, this space will be replaced by the |
character string defined by the <TT>LINEENDINSERT</TT> instruction.</P> |
character string defined by the <tt>LINEENDINSERT</tt> instruction.</p> |
<P> |
<p> |
If the <TT>LINEEND</TT> instruction is not defined then the linefeed character |
If the <tt>LINEEND</tt> instruction is not defined then the linefeed character |
(octal code 12) is used as the default line end character. If the |
(octal code 12) is used as the default line end character. If the |
<TT>LINEENDINSERT</TT> instruction is not defined, the linefeed character is |
<tt>LINEENDINSERT</tt> instruction is not defined, the linefeed character is |
inserted at the end of the produced lines. If there is no <TT>LINELENGTH</TT> |
inserted at the end of the produced lines. If there is no <tt>LINELENGTH</tt> |
instruction, the translated text is not divided into lines. Otherwise, if the |
instruction, the translated text is not divided into lines. Otherwise, if the |
translation rules generate line end marks, these marks remain in the |
translation rules generate line end marks, these marks remain in the |
translated text, but the length of the lines is not controlled by the |
translated text, but the length of the lines is not controlled by the |
translator.</P> |
translator.</p> |
<PRE> |
<pre> LineLength = NUMBER .</pre> |
LineLength = NUMBER . |
<blockquote class="example"> |
</PRE> |
<p> |
<BLOCKQUOTE class="example"> |
<strong>Example:</strong></p> |
<P> |
<p> |
<STRONG>Example:</STRONG></P> |
To limit the lines produced by the translator to a length of 80 characters, |
<P> |
the following rule is written at the beginning of the translation schema.</p> |
To limit the lines produced by the translator to a length of 80 characters, the |
<pre>LineLength 80;</pre> |
following rule is written at the beginning of the translation schema.</P> |
</blockquote> |
<PRE> |
</div> |
LineLength 80; |
|
</PRE> |
|
</BLOCKQUOTE> |
|
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc523>Buffers</A></H3> |
|
|
|
<P> |
<h3><a name="sectc523">Buffers</a></h3> |
|
<p> |
A buffer is a unit of memory managed by the translator, which can either |
A buffer is a unit of memory managed by the translator, which can either |
contain text read from the terminal during the translation (see the <A |
contain text read from the terminal during the translation (see the <a |
href="#sectc5212"><TT>Read</TT> rule</A>), or the name of the last picture |
href="#sectc5212"><tt>Read</tt> rule</a>), or the name of the last picture |
(bit-map) encountered by the translator in its traversal of the document. |
(bit-map) encountered by the translator in its traversal of the document. |
Remember the pictures are stored in files that are separate for the document |
Remember the pictures are stored in files that are separate for the document |
files and that the canonical form contains only the names of the files in |
files and that the canonical form contains only the names of the files in |
which the pictures are found.</P> |
which the pictures are found.</p> |
<P> |
<p> |
Thus, there are two types of buffers: buffers for reading from the terminal |
Thus, there are two types of buffers: buffers for reading from the terminal |
(filled by the <TT>Read</TT> rule) and the buffer of picture names (containing |
(filled by the <tt>Read</tt> rule) and the buffer of picture names (containing |
the name of the last picture encountered). A translation schema can use |
the name of the last picture encountered). A translation schema can use |
either type, one or several read buffers and one (and only one) picture name |
either type, one or several read buffers and one (and only one) picture name |
buffer.</P> |
buffer.</p> |
<P> |
<p> |
If any buffers are used, the <TT>BUFFERS</TT> keyword must be present, |
If any buffers are used, the <tt>BUFFERS</tt> keyword must be present, |
followed by declarations of every buffer used in the translation schema. Each |
followed by declarations of every buffer used in the translation schema. Each |
buffer declaration is composed only of the name of the buffer, chosen freely |
buffer declaration is composed only of the name of the buffer, chosen freely |
by the programmer. The picture name buffer is identified by the |
by the programmer. The picture name buffer is identified by the |
<TT>Picture</TT> keyword, between parentheses, following the buffer name. The |
<tt>Picture</tt> keyword, between parentheses, following the buffer name. The |
<TT>Picture</TT> keyword may only appear once. Each buffer declaration is |
<tt>Picture</tt> keyword may only appear once. Each buffer declaration is |
terminated by a semicolon.</P> |
terminated by a semicolon.</p> |
<PRE> |
<pre> BufferSeq = Buffer < Buffer > . |
BufferSeq = Buffer < Buffer > . |
|
Buffer = BufferID [ '(' 'Picture' ')' ] ';' . |
Buffer = BufferID [ '(' 'Picture' ')' ] ';' . |
BufferID = NAME . |
BufferID = NAME .</pre> |
</PRE> |
<blockquote class="example"> |
<BLOCKQUOTE class="example"> |
<p> |
<P> |
<strong>Example:</strong></p> |
<STRONG>Example:</STRONG></P> |
<p> |
<P> |
|
The following buffer declarations create a picture name buffer named |
The following buffer declarations create a picture name buffer named |
<TT>pictureName</TT> and a read buffer named <A |
<tt>pictureName</tt> and a read buffer named <a |
name="destname"><TT>DestName</TT></A>:</P> |
name="destname"><tt>DestName</tt></a>:</p> |
<PRE> |
<pre>BUFFERS |
BUFFERS |
pictureName (Picture); DestName;</pre> |
pictureName (Picture); DestName; |
</blockquote> |
</PRE> |
</div> |
</BLOCKQUOTE> |
|
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc524>Counters</A></H3> |
|
|
|
<P> |
<h3><a name="sectc524">Counters</a></h3> |
|
<p> |
Certain translation rules generate text that varies according to the context |
Certain translation rules generate text that varies according to the context |
of the element to which the rules apply. Variable text is defined either in |
of the element to which the rules apply. Variable text is defined either in |
the <A href="#sectc526"><TT>VAR</TT> section</A> of the translation schema or |
the <a href="#sectc526"><tt>VAR</tt> section</a> of the translation schema or |
in the rule itself (see the <TT>Create</TT> and <TT>Write</TT> rules). Both |
in the rule itself (see the <tt>Create</tt> and <tt>Write</tt> rules). Both |
types of definition rely on counters for the calculation of variable |
types of definition rely on counters for the calculation of variable |
material.</P> |
material.</p> |
<P> |
<p> |
There are two types of counter: counters whose value is explicitely computed |
There are two types of counter: counters whose value is explicitely computed |
by applying <A href="#sectc5221"><TT>Set</TT> and <TT>Add</TT> rules</A>, and |
by applying <a href="#sectc5221"><tt>Set</tt> and <tt>Add</tt> rules</a>, and |
counters whose value is computed by a function associated with the counter. |
counters whose value is computed by a function associated with the counter. |
Those functions allow the same calculations as can be used in presentation |
Those functions allow the same calculations as can be used in presentation |
schemas. As in a presentation schema, counters must be defined in the |
schemas. As in a presentation schema, counters must be defined in the |
<TT>COUNTERS</TT> section of the translation schema before they are used.</P> |
<tt>COUNTERS</tt> section of the translation schema before they are used.</p> |
<P> |
<p> |
When counters are used in a translation schema, the <TT>COUNTERS</TT> keyword |
When counters are used in a translation schema, the <tt>COUNTERS</tt> keyword |
is followed by the declarations of every counter used. Each declaration is |
is followed by the declarations of every counter used. Each declaration is |
composed of the counter's name possibly followed by a colon and the counting |
composed of the counter's name possibly followed by a colon and the counting |
function to be used for the counter. The declaration is terminated by a |
function to be used for the counter. The declaration is terminated by a |
semi-colon. If the counter is explicitely computed by <TT>Set</TT> and |
semi-colon. If the counter is explicitely computed by <tt>Set</tt> and |
<TT>Add</TT> rules, no counting function is indicated. If a counting function |
<tt>Add</tt> rules, no counting function is indicated. If a counting function |
is indicated, <TT>Set</TT> and <TT>Add</TT> rules cannot be applied to that |
is indicated, <tt>Set</tt> and <tt>Add</tt> rules cannot be applied to that |
counter.</P> |
counter.</p> |
<P> |
<p> |
The counting function indicates how the counter's value will be computed. |
The counting function indicates how the counter's value will be computed. |
Three functions are available: <TT>Rank</TT>, <TT>Rlevel</TT>, and |
Three functions are available: <tt>Rank</tt>, <tt>Rlevel</tt>, and |
<TT>Set</TT>.</P> |
<tt>Set</tt>.</p> |
<UL> |
<ul> |
<LI><TT>Rank of ElemID</TT> indicates that the counter's value is the rank of |
<li> |
the element of type <TT>ElemID</TT> which encloses the element for which the |
<tt>Rank of ElemID</tt> indicates that the counter's value is the rank of the |
|
element of type <tt>ElemID</tt> which encloses the element for which the |
counter is being evaluated. For the purposes of this function, an element of |
counter is being evaluated. For the purposes of this function, an element of |
type <TT>ElemID</TT> is considered to enclose itself. This function is |
type <tt>ElemID</tt> is considered to enclose itself. This function is |
primarily used when the element of type <TT>ElemID</TT> is part of an |
primarily used when the element of type <tt>ElemID</tt> is part of an |
aggregate or list, in which case the counter's value is the element's rank in |
aggregate or list, in which case the counter's value is the element's rank in |
its list or aggregate. Note that, unlike the <TT>Rank</TT> function for |
its list or aggregate. Note that, unlike the <tt>Rank</tt> function for |
presentation schemas, the <TT>Page</TT> keyword cannot be used in place of the |
presentation schemas, the <tt>Page</tt> keyword cannot be used in place of the |
<TT>ElemID</TT>. |
<tt>ElemID</tt>. |
<P> |
<p> |
The type name <TT>ElemID</TT> can be followed by an integer. That number |
The type name <tt>ElemID</tt> can be followed by an integer. That number |
represents the relative level, among the ancestors of the concerned element, |
represents the relative level, among the ancestors of the concerned element, |
of the element whose rank is asked. If that relative level <I>n</I> is |
of the element whose rank is asked. If that relative level <i>n</i> is |
unsigned, the <I>n<SUP>th</SUP></I> element of type <TT>ElemID</TT> encountered |
unsigned, the <i>n<sup>th</sup></i> element of type <tt>ElemID</tt> |
when travelling the logical structure from the root to the concerned element is |
encountered when travelling the logical structure from the root to the |
taken into account. If the relative level is negative, the logical structure |
concerned element is taken into account. If the relative level is negative, |
is travelled in the other direction, from the concerned element to the |
the logical structure is travelled in the other direction, from the concerned |
root.</P> |
element to the root.</p> |
<LI><TT>Rlevel of ElemID</TT> indicates that the counter's values is the |
<li> |
relative level in the tree of the element for which the counter is being |
<tt>Rlevel of ElemID</tt> indicates that the counter's values is the relative |
evaluated. The counter counts the number of elements of type <TT>ElemID</TT> |
level in the tree of the element for which the counter is being evaluated. The |
which are found on the path between the root of the document's logical |
counter counts the number of elements of type <tt>ElemID</tt> which are found |
structure tree and the element (inclusive). |
on the path between the root of the document's logical structure tree and the |
<LI><TT>Set n on Type1 Add m on Type2</TT> indicates that the counter's value |
element (inclusive). |
is calculated as follows: in traversing the document from the beginning to |
<li> |
the element for which the counter is being evaluated, the counter is set to |
<tt>Set n on Type1 Add m on Type2</tt> indicates that the counter's value is |
the value <TT>n</TT> each time a <TT>Type1</TT> element is encountered and is |
calculated as follows: in traversing the document from the beginning to the |
incremented by the amount <TT>m</TT> each time a <TT>Type2</TT> element is |
element for which the counter is being evaluated, the counter is set to the |
encountered. The initial value <TT>n</TT> and the increment <TT>m</TT> are |
value <tt>n</tt> each time a <tt>Type1</tt> element is encountered and is |
|
incremented by the amount <tt>m</tt> each time a <tt>Type2</tt> element is |
|
encountered. The initial value <tt>n</tt> and the increment <tt>m</tt> are |
integers. |
integers. |
</UL> |
</ul> |
<P> |
<p> |
As in a presentation schema, the <TT>Rank</TT> and <TT>Set</TT> functions can |
As in a presentation schema, the <tt>Rank</tt> and <tt>Set</tt> functions can |
be modified by a numeric attribute which changes their initial value. This is |
be modified by a numeric attribute which changes their initial value. This is |
indicated by the <TT>Init</TT> keyword followed by the numeric attribute's |
indicated by the <tt>Init</tt> keyword followed by the numeric attribute's |
name. The <TT>Set</TT> function takes the value of the attribute instead of |
name. The <tt>Set</tt> function takes the value of the attribute instead of |
the <TT>InitValue</TT> (<TT>n</TT>). For the <TT>Rank</TT> function, the |
the <tt>InitValue</tt> (<tt>n</tt>). For the <tt>Rank</tt> function, the |
value of the attribute is considered to be the rank of the first element of |
value of the attribute is considered to be the rank of the first element of |
the list (rather than the normal value of 1). Subsequent items in the list |
the list (rather than the normal value of 1). Subsequent items in the list |
have their ranks shifted accordingly. In both cases, the attribute must be |
have their ranks shifted accordingly. In both cases, the attribute must be |
numeric and must be a local attribute of the root of the document itself.</P> |
numeric and must be a local attribute of the root of the document itself.</p> |
<PRE> |
<pre> CounterSeq = Counter < Counter > . |
CounterSeq = Counter < Counter > . |
|
Counter = CounterID [ ':' CounterFunc ] ';' . |
Counter = CounterID [ ':' CounterFunc ] ';' . |
CounterID = NAME . |
CounterID = NAME . |
CounterFunc = 'Rank' 'of' ElemID [ SLevelAsc ] |
CounterFunc = 'Rank' 'of' ElemID [ SLevelAsc ] |
Line 6582 numeric and must be a local attribute of
|
Line 6544 numeric and must be a local attribute of
|
InitValue = NUMBER . |
InitValue = NUMBER . |
Increment = NUMBER . |
Increment = NUMBER . |
ElemID = NAME . |
ElemID = NAME . |
AttrID = NAME . |
AttrID = NAME .</pre> |
</PRE> |
<blockquote class="example"> |
<BLOCKQUOTE class="example"> |
<p> |
<P> |
<strong>Example:</strong></p> |
<STRONG>Example:</STRONG></P> |
<p> |
<P> |
If the body of a chapter is defined in the structure schema by:</p> |
If the body of a chapter is defined in the structure schema by:</P> |
<pre>Chapter_Body = LIST OF |
<PRE> |
|
Chapter_Body = LIST OF |
|
(Section = BEGIN |
(Section = BEGIN |
Section_Title = Text; |
Section_Title = Text; |
Section_Body = BEGIN |
Section_Body = BEGIN |
Line 6598 Chapter_Body = LIST OF
|
Line 6558 Chapter_Body = LIST OF
|
Section; |
Section; |
END; |
END; |
END |
END |
); |
);</pre> |
</PRE> |
<p> |
<P> |
(sections are defined recursively), a counter can be defined giving the <a |
(sections are defined recursively), a counter can be defined giving the <A |
name="sectnum">number of a section</a> within its level in the hierarchy:</p> |
name="sectnum">number of a section</A> within its level in the hierarchy:</P> |
<pre>COUNTERS |
<PRE> |
SectionNumber : Rank of Section;</pre> |
COUNTERS |
<p> |
SectionNumber : Rank of Section; |
A counter holding the hierarchic level of a section:</p> |
</PRE> |
<pre> SectionLevel : Rlevel of Section;</pre> |
<P> |
<p> |
A counter holding the hierarchic level of a section:</P> |
A <a name="uniquenum">counter</a> which sequentially numbers all the |
<PRE> |
document's sections, whatever their hierarchic level:</p> |
SectionLevel : Rlevel of Section; |
<pre> UniqueSectNum : Set 0 on Document Add 1 on Section;</pre> |
</PRE> |
</blockquote> |
<P> |
</div> |
A <A name="uniquenum">counter</A> which sequentially numbers all the document's |
|
sections, whatever their hierarchic level:</P> |
|
<PRE> |
|
UniqueSectNum : Set 0 on Document Add 1 on Section; |
|
</PRE> |
|
</BLOCKQUOTE> |
|
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc525>Constants</A></H3> |
|
|
|
<P> |
<h3><a name="sectc525">Constants</a></h3> |
|
<p> |
A common feature of translation rules is the generation of constant text. This |
A common feature of translation rules is the generation of constant text. This |
text can be defined in the rule that generates it (see for example the <A |
text can be defined in the rule that generates it (see for example the <a |
href="#sectc5210"><TT>Create</TT></A> and <A href="#sectc5211"><TT>Write</TT></A> |
href="#sectc5210"><tt>Create</tt></a> and <a |
rules); but it can also be defined once in the constant declaration section |
href="#sectc5211"><tt>Write</tt></a> rules); but it can also be defined once |
and used many times in different rules. The latter option is preferable when |
in the constant declaration section and used many times in different rules. |
the same text is used in several rules or several <A |
The latter option is preferable when the same text is used in several rules or |
href="#sectc526">variables</A>.</P> |
several <a href="#sectc526">variables</a>.</p> |
<P> |
<p> |
The <TT>CONST</TT> keyword begins the constant declaration section of the |
The <tt>CONST</tt> keyword begins the constant declaration section of the |
translation schema. It must be omitted if no constants are declared. Each |
translation schema. It must be omitted if no constants are declared. Each |
constant declaration is composed of the constant name, an equals sign, and the |
constant declaration is composed of the constant name, an equals sign, and the |
constant's value, which is a character string between apostrophes. A constant |
constant's value, which is a character string between apostrophes. A constant |
declaration is terminated by a semicolon.</P> |
declaration is terminated by a semicolon.</p> |
<PRE> |
<pre> ConstSeq = Const < Const > . |
ConstSeq = Const < Const > . |
|
Const = ConstID '=' ConstValue ';' . |
Const = ConstID '=' ConstValue ';' . |
ConstID = NAME . |
ConstID = NAME . |
ConstValue = STRING . |
ConstValue = STRING .</pre> |
</PRE> |
<blockquote class="example"> |
<BLOCKQUOTE class="example"> |
<p> |
<P> |
<strong><a name="levelexample">Example:</a></strong></p> |
<STRONG><A name="levelexample">Example:</A></STRONG></P> |
<p> |
<P> |
The following rule assigns the name <tt>TxtLevel</tt> to the character string |
The following rule assigns the name <TT>TxtLevel</TT> to the character string |
``Level'':</p> |
``Level'':</P> |
<pre>CONST |
<PRE> |
TxtLevel = 'Level';</pre> |
CONST |
</blockquote> |
TxtLevel = 'Level'; |
</div> |
</PRE> |
|
</BLOCKQUOTE> |
|
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc526>Variables</A></H3> |
|
|
|
<P> |
<h3><a name="sectc526">Variables</a></h3> |
|
<p> |
Variables allow to define variable text which is generated by the |
Variables allow to define variable text which is generated by the |
<TT>Create</TT> and <TT>Write</TT> rules. They are also used to define |
<tt>Create</tt> and <tt>Write</tt> rules. They are also used to define file |
file names which are used in the <TT>Create</TT>, <TT>ChangeMainFile</TT>, |
names which are used in the <tt>Create</tt>, <tt>ChangeMainFile</tt>, |
<TT>RemoveFile</TT>, and <TT>Indent</TT> rules. Variables can be defined either |
<tt>RemoveFile</tt>, and <tt>Indent</tt> rules. Variables can be defined |
in the <TT>VAR</TT> section of the translation schema or directly in the rules |
either in the <tt>VAR</tt> section of the translation schema or directly in |
which use them. Variables that define file names must be declared in the |
the rules which use them. Variables that define file names must be declared |
<TT>VAR</TT> section, and when the same variable is used several times in the |
in the <tt>VAR</tt> section, and when the same variable is used several times |
translation schema, it makes sense to define it globally in the <TT>VAR</TT> |
in the translation schema, it makes sense to define it globally in the |
section. This section is only present if at least one variable is defined |
<tt>VAR</tt> section. This section is only present if at least one variable |
globally.</P> |
is defined globally.</p> |
<P> |
<p> |
After the <TT>VAR</TT> keyword, each global variable is defined by its name, a |
After the <tt>VAR</tt> keyword, each global variable is defined by its name, a |
colon separator and a sequence of functions (at least one function). Each |
colon separator and a sequence of functions (at least one function). Each |
variable definition is terminated by a semicolon. Functions determine the |
variable definition is terminated by a semicolon. Functions determine the |
different parts which together give the value of the variable. The value is |
different parts which together give the value of the variable. The value is |
obtained by concatenating the strings produced by each of the functions. Seven |
obtained by concatenating the strings produced by each of the functions. Seven |
types of functions are available. Each variable definition may use any number |
types of functions are available. Each variable definition may use any number |
of functions of each type.</P> |
of functions of each type.</p> |
<UL> |
<ul> |
<LI>The function <TT>Value(Counter)</TT>returns a string representing the |
<li> |
value taken by the counter when it is evaluated for the element in whose rule |
The function <tt>Value(Counter)</tt>returns a string representing the value |
the variable is used. The counter must have been declared in the |
taken by the counter when it is evaluated for the element in whose rule the |
<TT>COUNTERS</TT> section of the translation schema. When the counter is |
variable is used. The counter must have been declared in the |
|
<tt>COUNTERS</tt> section of the translation schema. When the counter is |
expressed in arabic numerals, the counter name can be followed by a colon and |
expressed in arabic numerals, the counter name can be followed by a colon and |
an integer indicating a minimum length (number of characters) for the string; |
an integer indicating a minimum length (number of characters) for the string; |
if the counter's value is normally expressed with fewer characters than the |
if the counter's value is normally expressed with fewer characters than the |
required minimum, zeroes are added to the front of the string to achieve the |
required minimum, zeroes are added to the front of the string to achieve the |
minimum length. |
minimum length. |
<P> |
<p> |
By default, the counter value is written in arabic digits. If another |
By default, the counter value is written in arabic digits. If another |
representation of that value is needed, the counter name must be followed by a |
representation of that value is needed, the counter name must be followed by a |
comma and one of the following keywords:</P> |
comma and one of the following keywords:</p> |
<UL> |
<ul> |
<LI><TT>Arabic</TT>: arabic numerals (default value), |
<li> |
<LI><TT>LRoman</TT>: lower-case roman numerals, |
<tt>Arabic</tt>: arabic numerals (default value), |
<LI><TT>URoman</TT>: upper-case roman numerals, |
<li> |
<LI><TT>Uppercase</TT>: upper-case letter, |
<tt>LRoman</tt>: lower-case roman numerals, |
<LI><TT>Lowercase</TT>: lower-case letter. |
<li> |
</UL> |
<tt>URoman</tt>: upper-case roman numerals, |
<LI>The function <TT>FileDir</TT>, without parameter, returns a string |
<li> |
|
<tt>Uppercase</tt>: upper-case letter, |
|
<li> |
|
<tt>Lowercase</tt>: lower-case letter. |
|
</ul> |
|
<li> |
|
The function <tt>FileDir</tt>, without parameter, returns a string |
representing the name of the directory of the output file that has been given |
representing the name of the directory of the output file that has been given |
as a parameter to the translation program. The string includes a character '/' |
as a parameter to the translation program. The string includes a character '/' |
at the end. |
at the end. |
<LI>The function <TT>FileName</TT>, without parameter, returns a string |
<li> |
|
The function <tt>FileName</tt>, without parameter, returns a string |
representing the name of the output file that has been given as a parameter to |
representing the name of the output file that has been given as a parameter to |
the translation program. The file extension (the character string that |
the translation program. The file extension (the character string that |
terminate the file name, after a dot) is not part of that string. |
terminate the file name, after a dot) is not part of that string. |
<LI>The function <TT>Extension</TT>, without parameter, returns a string |
<li> |
|
The function <tt>Extension</tt>, without parameter, returns a string |
representing the extension of the file name. That string is empty if the file |
representing the extension of the file name. That string is empty if the file |
name that has been given as a parameter to the translation program has no |
name that has been given as a parameter to the translation program has no |
extension. If there is an extension, its first character is a dot. |
extension. If there is an extension, its first character is a dot. |
<LI>The function <TT>DocumentName</TT>, without parameter, returns a string |
<li> |
|
The function <tt>DocumentName</tt>, without parameter, returns a string |
representing the name of the document being translated. |
representing the name of the document being translated. |
<LI>The function <TT>DocumentDir</TT>, without parameter, returns a string |
<li> |
|
The function <tt>DocumentDir</tt>, without parameter, returns a string |
representing the directory containing the document being translated. |
representing the directory containing the document being translated. |
<LI>The function formed by the name of a constant returns that constant's |
<li> |
value. |
The function formed by the name of a constant returns that constant's value. |
<LI>The function formed by a character string between apostrophes returns that |
<li> |
|
The function formed by a character string between apostrophes returns that |
string. |
string. |
<LI>The function formed by the name of a buffer returns the contents of that |
<li> |
|
The function formed by the name of a buffer returns the contents of that |
buffer. If the named buffer is the picture buffer, then the name of the last |
buffer. If the named buffer is the picture buffer, then the name of the last |
picture encountered is returned. Otherwise, the buffer is a read buffer and |
picture encountered is returned. Otherwise, the buffer is a read buffer and |
the value returned is text previously read from the terminal. If the buffer |
the value returned is text previously read from the terminal. If the buffer |
is empty (no picture has been encountered or the <TT>Read</TT> rule has not |
is empty (no picture has been encountered or the <tt>Read</tt> rule has not |
been executed for the buffer), then the empty string is returned. |
been executed for the buffer), then the empty string is returned. |
<LI>The function formed by an attribute name takes the value of the indicated |
<li> |
|
The function formed by an attribute name takes the value of the indicated |
attribute for the element to which the variable applies. If the element does |
attribute for the element to which the variable applies. If the element does |
not have that attribute, then the element's ancestor are searched toward the |
not have that attribute, then the element's ancestor are searched toward the |
root of the tree. If one of the ancestors does have the attribute then its |
root of the tree. If one of the ancestors does have the attribute then its |
value is used. If no ancestors have the attribute, then the value of the |
value is used. If no ancestors have the attribute, then the value of the |
function is the empty string. |
function is the empty string. |
</UL> |
</ul> |
<PRE> |
<pre> VariableSeq = Variable < Variable > . |
VariableSeq = Variable < Variable > . |
|
Variable = VarID ':' Function < Function > ';' . |
Variable = VarID ':' Function < Function > ';' . |
VarID = NAME . |
VarID = NAME . |
Function ='Value' '(' CounterID [ ':' Length ] |
Function ='Value' '(' CounterID [ ':' Length ] |
Line 6746 function is the empty string.
|
Line 6708 function is the empty string.
|
Length = NUMBER . |
Length = NUMBER . |
CounterStyle= 'Arabic' / 'LRoman' / 'URoman' / |
CounterStyle= 'Arabic' / 'LRoman' / 'URoman' / |
'Uppercase' / 'Lowercase' . |
'Uppercase' / 'Lowercase' . |
CharString = STRING . |
CharString = STRING .</pre> |
</PRE> |
<blockquote class="example"> |
<BLOCKQUOTE class="example"> |
<p> |
<P> |
<strong>Example:</strong></p> |
<STRONG>Example:</STRONG></P> |
<p> |
<P> |
|
To create, at the beginning of each section of the translated document, text |
To create, at the beginning of each section of the translated document, text |
composed of the string ``Section'' followed by the section number, the |
composed of the string ``Section'' followed by the section number, the |
following <A name="varsectexample">variable definition</A> might be used:</P> |
following <a name="varsectexample">variable definition</a> might be used:</p> |
<PRE> |
<pre>VAR |
VAR |
SectionVar : 'Section' Value(SectionNumber);</pre> |
SectionVar : 'Section' Value(SectionNumber); |
<p> |
</PRE> |
(see the definition of <a href="#sectnum"><tt>SectionNumber</tt></a>).</p> |
<P> |
<p> |
(see the definition of <A href="#sectnum"><TT>SectionNumber</TT></A>).</P> |
|
<P> |
|
The following variable definition can be used to create, at the beginning of |
The following variable definition can be used to create, at the beginning of |
each section, the text ``Level'' followed by the hierarchical level of the |
each section, the text ``Level'' followed by the hierarchical level of the |
section. It used the constant defined above.</P> |
section. It used the constant defined above.</p> |
<PRE> |
<pre> LevelVar : TxtLevel Value(SectionLevel);</pre> |
LevelVar : TxtLevel Value(SectionLevel); |
<p> |
</PRE> |
(see the definitions of <a href="#sectnum"><tt>SectionLevel</tt></a> and of <a |
<P> |
href="#levelexample"><tt>TxtLevel</tt></a>).</p> |
(see the definitions of <A href="#sectnum"><TT>SectionLevel</TT></A> and of |
<p> |
<A href="#levelexample"><TT>TxtLevel</TT></A>).</P> |
To generate the translation of each section in a different file (see <a |
<P> |
href="#sectc5220">rule <tt>ChangeMainFile</tt></a>), the name of these files |
To generate the translation of each section in a different file (see |
might be defined by the following variable:</p> |
<A href="#sectc5220">rule <TT>ChangeMainFile</TT></A>), the name of these |
<pre> VarOutpuFile : FileName Value(SectionNumber) |
files might be defined by the following variable:</P> |
Extension;</pre> |
<PRE> |
<p> |
VarOutpuFile : FileName Value(SectionNumber) |
If <tt>output.txt</tt> is the name of the <a name="varoutputfile">output |
Extension; |
file</a> specified when starting the translation program, translated sections |
</PRE> |
are written in files <tt>output1.txt</tt>, <tt>output2.txt</tt>, etc.</p> |
<P> |
</blockquote> |
If <TT>output.txt</TT> is the name of the <A name="varoutputfile">output |
</div> |
file</A> specified when starting the translation program, translated sections |
|
are written in files <TT>output1.txt</TT>, <TT>output2.txt</TT>, etc.</P> |
<div class="subsection"> |
</BLOCKQUOTE> |
|
</DIV> |
<h3><a name="sectc527">Translating structure elements</a></h3> |
|
<p> |
<DIV class="subsection"> |
The <tt>RULES</tt> keyword introduces the translation rules which will be |
<H3><A name=sectc527>Translating structure elements</A></H3> |
|
|
|
<P> |
|
The <TT>RULES</TT> keyword introduces the translation rules which will be |
|
applied to the various structured element types. Translation rules can be |
applied to the various structured element types. Translation rules can be |
specified for each element type defined in the structure schema, including the |
specified for each element type defined in the structure schema, including the |
base types defined implicitly, whose names are <TT>TEXT_UNIT</TT>, |
base types defined implicitly, whose names are <tt>TEXT_UNIT</tt>, |
<TT>PICTURE_UNIT</TT>, <TT>SYMBOL_UNIT</TT>, <TT>GRAPHIC_UNIT</TT> and |
<tt>PICTURE_UNIT</tt>, <tt>SYMBOL_UNIT</tt>, <tt>GRAPHIC_UNIT</tt> and |
<TT>PAGE_UNIT</TT>. But it is not necessary to specify rules for every |
<tt>PAGE_UNIT</tt>. But it is not necessary to specify rules for every |
defined type.</P> |
defined type.</p> |
<P> |
<p> |
If there are no translation rules for an element type, the elements that it |
If there are no translation rules for an element type, the elements that it |
contains (and which may have rules themselves) will still be translated, but |
contains (and which may have rules themselves) will still be translated, but |
the translator will produce nothing for the element itself. To make the |
the translator will produce nothing for the element itself. To make the |
translator completely ignore the content of an element the <A |
translator completely ignore the content of an element the <a |
href="#sectc5217"><TT>Remove</TT> rule</A> must be used.</P> |
href="#sectc5217"><tt>Remove</tt> rule</a> must be used.</p> |
<P> |
<p> |
The translation rules for an element type defined in the structure schema are |
The translation rules for an element type defined in the structure schema are |
written using the name of the type followed by a colon and the list of |
written using the name of the type followed by a colon and the list of |
applicable rules. When the element type is a <A href="#sectd3285">mark pair</A>, |
applicable rules. When the element type is a <a href="#sectd3285">mark |
but only in this case, the type name must be preceded by the <TT>First</TT> or |
pair</a>, but only in this case, the type name must be preceded by the |
<TT>Second</TT> keyword. This keyword indicates whether the rules that follow |
<tt>First</tt> or <tt>Second</tt> keyword. This keyword indicates whether the |
apply to the first or second mark of the pair.</P> |
rules that follow apply to the first or second mark of the pair.</p> |
<P> |
<p> |
The list of rules can take several forms. It may be a simple non-conditional |
The list of rules can take several forms. It may be a simple non-conditional |
rule. It can also be formed by a condition followed by one or more simple |
rule. It can also be formed by a condition followed by one or more simple |
rules. Or it can be a block of rules beginning with the <TT>BEGIN</TT> |
rules. Or it can be a block of rules beginning with the <tt>BEGIN</tt> |
keyword and ending with the <TT>END</TT> keyword and a semicolon. This block |
keyword and ending with the <tt>END</tt> keyword and a semicolon. This block |
of rules can contain one or more simple rules and/or one or more conditions, |
of rules can contain one or more simple rules and/or one or more conditions, |
each followed by one or more simple rules.</P> |
each followed by one or more simple rules.</p> |
<PRE> |
<pre> ElemSeq = TransType < TransType > . |
ElemSeq = TransType < TransType > . |
|
TransType = [ FirstSec ] ElemID ':' RuleSeq . |
TransType = [ FirstSec ] ElemID ':' RuleSeq . |
FirstSec = 'First' / 'Second' . |
FirstSec = 'First' / 'Second' . |
RuleSeq = Rule / 'BEGIN' < Rule > 'END' ';' . |
RuleSeq = Rule / 'BEGIN' < Rule > 'END' ';' . |
Rule = SimpleRule / ConditionBlock . |
Rule = SimpleRule / ConditionBlock . |
ConditionBlock = 'IF' ConditionSeq SimpleRuleSeq . |
ConditionBlock = 'IF' ConditionSeq SimpleRuleSeq . |
SimpleRuleSeq = 'BEGIN' < SimpleRule > 'END' ';' / |
SimpleRuleSeq = 'BEGIN' < SimpleRule > 'END' ';' / |
SimpleRule . |
SimpleRule .</pre> |
</PRE> |
</div> |
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc528>Conditional rules</A></H3> |
|
|
|
<P> |
<h3><a name="sectc528">Conditional rules</a></h3> |
|
<p> |
In a translation schema, the translation rules are either associated with |
In a translation schema, the translation rules are either associated with |
element types or with attribute values or with a specific presentation. They |
element types or with attribute values or with a specific presentation. They |
are applied by the translator each time an element of the corresponding type |
are applied by the translator each time an element of the corresponding type |
Line 6840 is encountered in the translated documen
|
Line 6793 is encountered in the translated documen
|
carried by an element or also, each time the specific translation is attached |
carried by an element or also, each time the specific translation is attached |
to an element. This systematic application of the rules can be relaxed: it is |
to an element. This systematic application of the rules can be relaxed: it is |
possible to add a condition to one or more rules, so that these rules are only |
possible to add a condition to one or more rules, so that these rules are only |
applied when the condition is true.</P> |
applied when the condition is true.</p> |
<P> |
<p> |
A condition begins with the keyword <TT>IF</TT>, followed by a sequence of |
A condition begins with the keyword <tt>IF</tt>, followed by a sequence of |
elementary conditions. Elementary conditions are separated from each other by |
elementary conditions. Elementary conditions are separated from each other by |
the <TT>AND</TT> keyword. If there is only one elementary condition, this |
the <tt>AND</tt> keyword. If there is only one elementary condition, this |
keyword is absent. The rules are only applied if all the elementary |
keyword is absent. The rules are only applied if all the elementary |
conditions are true. The elementary condition can be negative; it is then |
conditions are true. The elementary condition can be negative; it is then |
preceded by the <TT>NOT</TT> keyword.</P> |
preceded by the <tt>NOT</tt> keyword.</p> |
<P> |
<p> |
When the translation rule(s) controlled by the condition apply to a reference |
When the translation rule(s) controlled by the condition apply to a reference |
element or a reference attribute, an elementary condition can also apply to |
element or a reference attribute, an elementary condition can also apply to |
element referred by this reference. The <TT>Target</TT> keyword is used for |
element referred by this reference. The <tt>Target</tt> keyword is used for |
that purpose. It must appear before the keyword defining the condition |
that purpose. It must appear before the keyword defining the condition |
type.</P> |
type.</p> |
<P> |
<p> |
Depending on their type, some conditions may apply either to the element with |
Depending on their type, some conditions may apply either to the element with |
which they are associated, or to one of its ancestor. In the case of an |
which they are associated, or to one of its ancestor. In the case of an |
ancestor, the key word <TT>Ancestor</TT> must be used, followed by</P> |
ancestor, the key word <tt>Ancestor</tt> must be used, followed by</p> |
<UL> |
<ul> |
<LI>either an integer which represents the number of levels in the tree |
<li> |
between the element and the ancestor of interest, |
either an integer which represents the number of levels in the tree between |
<LI>or the type name of the ancestor of interest. If that type is defined in |
the element and the ancestor of interest, |
a separate structure schema, the name of that schema must follow between |
<li> |
|
or the type name of the ancestor of interest. If that type is defined in a |
|
separate structure schema, the name of that schema must follow between |
parentheses. |
parentheses. |
</UL> |
</ul> |
<P> |
<p> |
There is a special case for the parent element, which can be simply written |
There is a special case for the parent element, which can be simply written |
<TT>Parent</TT> instead of <TT>Ancestor 1</TT>.</P> |
<tt>Parent</tt> instead of <tt>Ancestor 1</tt>.</p> |
<P> |
<p> |
Only conditions <TT>First</TT>, <TT>Last</TT>, <TT>Referred</TT>, |
Only conditions <tt>First</tt>, <tt>Last</tt>, <tt>Referred</tt>, |
<TT>Within</TT>, <TT>Attributes</TT>, <TT>Presentation</TT>, <TT>Comment</TT> |
<tt>Within</tt>, <tt>Attributes</tt>, <tt>Presentation</tt>, <tt>Comment</tt> |
and those concerning an attribute or a specific presentation can apply to an |
and those concerning an attribute or a specific presentation can apply to an |
ancestor. Conditions <TT>Defined</TT>, <TT>FirstRef</TT>, <TT>LastRef</TT>, |
ancestor. Conditions <tt>Defined</tt>, <tt>FirstRef</tt>, <tt>LastRef</tt>, |
<TT>ExternalRef</TT>, <TT>Alphabet</TT>, <TT>FirstAttr</TT>, |
<tt>ExternalRef</tt>, <tt>Alphabet</tt>, <tt>FirstAttr</tt>, |
<TT>LastAttr</TT>, <TT>ComputedPage</TT>, <TT>StartPage</TT>, |
<tt>LastAttr</tt>, <tt>ComputedPage</tt>, <tt>StartPage</tt>, |
<TT>UserPage</TT>, <TT>ReminderPage</TT>, <TT>Empty</TT> cannot be preceded by |
<tt>UserPage</tt>, <tt>ReminderPage</tt>, <tt>Empty</tt> cannot be preceded by |
keywords <TT>Parent</TT> or <TT>Ancestor</TT>.</P> |
keywords <tt>Parent</tt> or <tt>Ancestor</tt>.</p> |
<P> |
<p> |
In condition <TT>Referred</TT> and in the condition that applies to a named |
In condition <tt>Referred</tt> and in the condition that applies to a named |
attribute, a symbol '<TT>*</TT>' can indicate that the condition is related |
attribute, a symbol '<tt>*</tt>' can indicate that the condition is related |
only to the element itself. If this symbol is not present, not only the |
only to the element itself. If this symbol is not present, not only the |
element is considered, but also its ancestor, at any level.</P> |
element is considered, but also its ancestor, at any level.</p> |
<P> |
<p> |
The form of an elementary condition varies according to the type of |
The form of an elementary condition varies according to the type of |
condition.</P> |
condition.</p> |
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd5281>Conditions based on the logical position of the element</A></H4> |
|
|
|
<P> |
<h4><a name="sectd5281">Conditions based on the logical position of the |
|
element</a></h4> |
|
<p> |
The condition can be on the position of the element in the document's logical |
The condition can be on the position of the element in the document's logical |
structure tree. It is possible to test whether the element is the first |
structure tree. It is possible to test whether the element is the first |
(<TT>First</TT>) or last (<TT>Last</TT>) among its siblings or if it is not |
(<tt>First</tt>) or last (<tt>Last</tt>) among its siblings or if it is not |
the first (<TT>NOT First</TT>) or not the last (<TT>NOT Last</TT>).</P> |
the first (<tt>NOT First</tt>) or not the last (<tt>NOT Last</tt>).</p> |
<P> |
<p> |
It is also possible to test if the element is contained in an element of a |
It is also possible to test if the element is contained in an element of a |
given type (<TT>Within</TT>) or if it is not (<TT>NOT Within</TT>). If that |
given type (<tt>Within</tt>) or if it is not (<tt>NOT Within</tt>). If that |
element type is defined in a structure schema which is not the one which |
element type is defined in a structure schema which is not the one which |
corresponds to the translation schema, the type name of this element must be |
corresponds to the translation schema, the type name of this element must be |
followed, between parentheses, by the name of the structure schema which |
followed, between parentheses, by the name of the structure schema which |
defines it.</P> |
defines it.</p> |
<P> |
<p> |
If the keyword <TT>Within</TT> is preceded by <TT>Immediately</TT>, the |
If the keyword <tt>Within</tt> is preceded by <tt>Immediately</tt>, the |
condition is satisfied only if the <EM>parent</EM> element has the type |
condition is satisfied only if the <em>parent</em> element has the type |
indicated. If the word <TT>Immediately</TT> is missing, the condition is |
indicated. If the word <tt>Immediately</tt> is missing, the condition is |
satisfied if any <EM>ancestor</EM> has the type indicated.</P> |
satisfied if any <em>ancestor</em> has the type indicated.</p> |
<P> |
<p> |
An integer <I>n</I> can appear between the keyword <TT>Within</TT> and the |
An integer <i>n</i> can appear between the keyword <tt>Within</tt> and the |
type. It specifies the number of ancestors of the indicated type that must be |
type. It specifies the number of ancestors of the indicated type that must be |
present for the condition to be satisfied. If the keyword |
present for the condition to be satisfied. If the keyword |
<TT>Immediately</TT> is also present, the <I>n</I> immediate ancestors of the |
<tt>Immediately</tt> is also present, the <i>n</i> immediate ancestors of the |
element must have the indicated type. The integer <I>n</I> must be positive |
element must have the indicated type. The integer <i>n</i> must be positive |
or zero. It can be preceded by <TT><</TT> or <TT>></TT> to indicate a |
or zero. It can be preceded by <tt><</tt> or <tt>></tt> to indicate a |
maximum or minimum number of ancestors. If these symbols are missing, the |
maximum or minimum number of ancestors. If these symbols are missing, the |
condition is satisfied only if it exists exactly <I>n</I> ancestors. When |
condition is satisfied only if it exists exactly <i>n</i> ancestors. When |
this number is missing, it is equivalent to > 0.</P> |
this number is missing, it is equivalent to > 0.</p> |
<P> |
<p> |
If the condition applies to translation rules associated with an attribute, |
If the condition applies to translation rules associated with an attribute, |
i.e. if it is in the <TT>ATTRIBUTES</TT> section of the presentation schema, |
i.e. if it is in the <tt>ATTRIBUTES</tt> section of the presentation schema, |
the condition can be simply an element name. Translation rules are then |
the condition can be simply an element name. Translation rules are then |
executed only if the attribute is attached to an element of that type. |
executed only if the attribute is attached to an element of that type. The |
The keyword <TT>NOT</TT> before the element name indicates that the |
keyword <tt>NOT</tt> before the element name indicates that the translation |
translation rules must be executed only if the element is not of the type |
rules must be executed only if the element is not of the type indicated.</p> |
indicated.</P> |
</div> |
</DIV> |
|
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd5282>Conditions on references</A></H4> |
|
|
|
<P> |
<h4><a name="sectd5282">Conditions on references</a></h4> |
|
<p> |
References may be taken into account in conditions, which can be based on the |
References may be taken into account in conditions, which can be based on the |
fact that the element, or one of its ancestors (unless symbol <TT>*</TT> is |
fact that the element, or one of its ancestors (unless symbol <tt>*</tt> is |
present), is designated by a at least one reference (<TT>Referred</TT>) or by |
present), is designated by a at least one reference (<tt>Referred</tt>) or by |
none (<TT>NOT Referred</TT>). If the element or attribute to which the |
none (<tt>NOT Referred</tt>). If the element or attribute to which the |
condition is attached is a reference, the condition can be based on the fact |
condition is attached is a reference, the condition can be based on the fact |
that it acts as the first reference to the designated element |
that it acts as the first reference to the designated element |
(<TT>FirstRef</TT>), or as the last (<TT>LastRef</TT>), or as a reference to |
(<tt>FirstRef</tt>), or as the last (<tt>LastRef</tt>), or as a reference to |
an element located in another document (<TT>ExternalRef</TT>). Like all |
an element located in another document (<tt>ExternalRef</tt>). Like all |
conditions, conditions on references can be inverted by the <TT>NOT</TT> |
conditions, conditions on references can be inverted by the <tt>NOT</tt> |
keyword.</P> |
keyword.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd5283>Conditions on the parameters</A></H4> |
|
|
<h4><a name="sectd5283">Conditions on the parameters</a></h4> |
<P> |
<p> |
Elements which are <A href="#sectc326">parameters</A> can be given a particular |
Elements which are <a href="#sectc326">parameters</a> can be given a |
condition which is based on whether or not the parameter is given a value in |
particular condition which is based on whether or not the parameter is given a |
the document (<TT>Defined</TT> or <TT>NOT Defined</TT>, respectively).</P> |
value in the document (<tt>Defined</tt> or <tt>NOT Defined</tt>, |
</DIV> |
respectively).</p> |
|
</div> |
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd5284>Conditions on the alphabets</A></H4> |
|
|
|
<P> |
<h4><a name="sectd5284">Conditions on the alphabets</a></h4> |
|
<p> |
The character string base type (and only this type) can use the condition |
The character string base type (and only this type) can use the condition |
<TT>Alphabet = a</TT> which indicates that the translation rule(s) should only |
<tt>Alphabet = a</tt> which indicates that the translation rule(s) should only |
apply if the alphabet of the character string is the one whose name appears |
apply if the alphabet of the character string is the one whose name appears |
after the equals sign (or is not, if there is a preceding <TT>NOT</TT> |
after the equals sign (or is not, if there is a preceding <tt>NOT</tt> |
keyword). This condition cannot be applied to translation rules of an |
keyword). This condition cannot be applied to translation rules of an |
attribute.</P> |
attribute.</p> |
<P> |
<p> |
In the current implementation of Thot, the available alphabets are the |
In the current implementation of Thot, the available alphabets are the |
<TT>Latin</TT> alphabet and the <TT>Greek</TT> alphabet.</P> |
<tt>Latin</tt> alphabet and the <tt>Greek</tt> alphabet.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd5285>Conditions on page breaks</A></H4> |
|
|
|
<P> |
<h4><a name="sectd5285">Conditions on page breaks</a></h4> |
|
<p> |
The page break base type (and only this type) can use the following |
The page break base type (and only this type) can use the following |
conditions: <TT>ComputedPage</TT>, <TT>StartPage</TT>, <TT>UserPage</TT>, and |
conditions: <tt>ComputedPage</tt>, <tt>StartPage</tt>, <tt>UserPage</tt>, and |
<TT>ReminderPage</TT>. The <TT>ComputedPage</TT> condition indicates that the |
<tt>ReminderPage</tt>. The <tt>ComputedPage</tt> condition indicates that the |
translation rule(s) should apply if the page break was created automatically |
translation rule(s) should apply if the page break was created automatically |
by Thot; the <TT>StartPage</TT> condition is true if the page break is |
by Thot; the <tt>StartPage</tt> condition is true if the page break is |
generated before the element by the <TT>Page</TT> rule of the P language; the |
generated before the element by the <tt>Page</tt> rule of the P language; the |
<TT>UserPage</TT> condition applies if the page break was inserted by the |
<tt>UserPage</tt> condition applies if the page break was inserted by the |
user; and the <TT>ReminderPage</TT> is applied if the page break is a reminder |
user; and the <tt>ReminderPage</tt> is applied if the page break is a reminder |
of page breaking.</P> |
of page breaking.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd5286>Conditions on the element's content</A></H4> |
|
|
|
<P> |
<h4><a name="sectd5286">Conditions on the element's content</a></h4> |
|
<p> |
The condition can be based on whether or not the element is empty. An element |
The condition can be based on whether or not the element is empty. An element |
which has no children or whose leaves are all empty is considered to be empty |
which has no children or whose leaves are all empty is considered to be empty |
itself. This condition is expressed by the <TT>Empty</TT> keyword, optionally |
itself. This condition is expressed by the <tt>Empty</tt> keyword, optionally |
preceded by the <TT>NOT</TT> keyword.</P> |
preceded by the <tt>NOT</tt> keyword.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd5287>Conditions on the presence of comments</A></H4> |
|
|
|
<P> |
<h4><a name="sectd5287">Conditions on the presence of comments</a></h4> |
|
<p> |
The condition can be based on the presence or absence of comments associated |
The condition can be based on the presence or absence of comments associated |
with the translated element. This condition is expressed by the keyword |
with the translated element. This condition is expressed by the keyword |
<TT>Comment</TT>, optionally preceded by the keyword <TT>NOT</TT>.</P> |
<tt>Comment</tt>, optionally preceded by the keyword <tt>NOT</tt>.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd5288>Conditions on the presence of specific presentation rules</A></H4> |
|
|
|
<P> |
<h4><a name="sectd5288">Conditions on the presence of specific presentation |
|
rules</a></h4> |
|
<p> |
The condition can be based on the presence or absence of specific presentation |
The condition can be based on the presence or absence of specific presentation |
rules associated with the translated element, whatever the rules, their value |
rules associated with the translated element, whatever the rules, their value |
or their number. This condition is expressed by the keyword |
or their number. This condition is expressed by the keyword |
<TT>Presentation</TT>, optionally preceded by the <TT>NOT</TT> keyword.</P> |
<tt>Presentation</tt>, optionally preceded by the <tt>NOT</tt> keyword.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd5289>Conditions on the presence of logical attributes</A></H4> |
|
|
|
<P> |
<h4><a name="sectd5289">Conditions on the presence of logical |
|
attributes</a></h4> |
|
<p> |
In the same way, the condition can be based on the presence or absence of |
In the same way, the condition can be based on the presence or absence of |
attributes associated with the translated elements, no matter what the |
attributes associated with the translated elements, no matter what the |
attributes or their values. The <TT>Attributes</TT> keyword expresses this |
attributes or their values. The <tt>Attributes</tt> keyword expresses this |
condition.</P> |
condition.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd52810>Conditions on logical attributes</A></H4> |
|
|
|
<P> |
<h4><a name="sectd52810">Conditions on logical attributes</a></h4> |
|
<p> |
If the condition appears in the translation rules of an attribute, the |
If the condition appears in the translation rules of an attribute, the |
<TT>FirstAttr</TT> and <TT>LastAttr</TT> keywords can be used to indicate that |
<tt>FirstAttr</tt> and <tt>LastAttr</tt> keywords can be used to indicate that |
the rules must only be applied if this attribute is the first attribute for |
the rules must only be applied if this attribute is the first attribute for |
the translated element or if it is the last (respectively). These conditions |
the translated element or if it is the last (respectively). These conditions |
can also be inverted by the <TT>NOT</TT> keyword.</P> |
can also be inverted by the <tt>NOT</tt> keyword.</p> |
<P> |
<p> |
Another type of condition can only be applied to the translation rules when |
Another type of condition can only be applied to the translation rules when |
the element being processed (or one of its ancestors if symbol <TT>*</TT> is |
the element being processed (or one of its ancestors if symbol <tt>*</tt> is |
missing) has a certain attribute, perhaps with a certain value or, in |
missing) has a certain attribute, perhaps with a certain value or, in |
contrast, when the element does not have this attribute with this value. The |
contrast, when the element does not have this attribute with this value. The |
condition is specified by writing the name of the attribute after the keyword |
condition is specified by writing the name of the attribute after the keyword |
<TT>IF</TT> or <TT>AND</TT>. The <TT>NOT</TT> keyword can be used to invert |
<tt>IF</tt> or <tt>AND</tt>. The <tt>NOT</tt> keyword can be used to invert |
the condition. If the translation rules must be applied to any element which |
the condition. If the translation rules must be applied to any element which |
has this attribute (or does not have it, if the condition is inverted) no |
has this attribute (or does not have it, if the condition is inverted) no |
matter what the attribute's value, the condition is complete. If, in |
matter what the attribute's value, the condition is complete. If, in |
contrast, the condition applies to one or more values of the attribute, these |
contrast, the condition applies to one or more values of the attribute, these |
are indicated after the name of the attribute, except for reference attributes |
are indicated after the name of the attribute, except for reference attributes |
which do not have values.</P> |
which do not have values.</p> |
<P> |
<p> |
The representation of the values of an <A name="relattr">attribute</A> in a |
The representation of the values of an <a name="relattr">attribute</a> in a |
condition depends on the attribute's type. For attributes with enumerated or |
condition depends on the attribute's type. For attributes with enumerated or |
textual types, the value (a name or character string between apostrophes, |
textual types, the value (a name or character string between apostrophes, |
respectively) is simply preceded by an equals sign. For numeric attributes, |
respectively) is simply preceded by an equals sign. For numeric attributes, |
the condition can be based on a single value or on a range of values. In the |
the condition can be based on a single value or on a range of values. In the |
case of a unique value, this value (an integer) is simply preceded by an |
case of a unique value, this value (an integer) is simply preceded by an |
equals sign. Conditions based on ranges of values have several forms:</P> |
equals sign. Conditions based on ranges of values have several forms:</p> |
<UL> |
<ul> |
<LI>all values less than a given value (the value is preceded by a ``less |
<li> |
|
all values less than a given value (the value is preceded by a ``less than'' |
|
sign). |
|
<li> |
|
all values greater than a given value (the value is preceded by a ``greater |
than'' sign). |
than'' sign). |
<LI>all values greater than a given value (the value is preceded by a |
<li> |
``greater than'' sign). |
all values falling in an interval, bounds included. The range of values is |
<LI>all values falling in an interval, bounds included. The range of values |
then specified <tt>IN [</tt>Minimum <tt>..</tt>Maximum<tt>]</tt>, where |
is then specified <TT>IN [</TT>Minimum <TT>..</TT>Maximum<TT>]</TT>, where |
|
Minimum and Maximum are integers. |
Minimum and Maximum are integers. |
</UL> |
</ul> |
<P> |
<p> |
All numeric values may be negative. The integer is simply preceded by a minus |
All numeric values may be negative. The integer is simply preceded by a minus |
sign.</P> |
sign.</p> |
<P> |
<p> |
Both local and global attributes can be used in conditions.</P> |
Both local and global attributes can be used in conditions.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsubsection"> |
<div class="subsubsection"> |
<H4><A name=sectd52811>Conditions on specific presentation rules</A></H4> |
|
|
|
<P> |
<h4><a name="sectd52811">Conditions on specific presentation rules</a></h4> |
|
<p> |
It is possible to apply translation rules only when the element being |
It is possible to apply translation rules only when the element being |
processed has or does not have a specific presentation rule, possibly with a |
processed has or does not have a specific presentation rule, possibly with a |
certain value. The condition is specified by writing the name of the |
certain value. The condition is specified by writing the name of the |
presentation rule after the keyword <TT>IF</TT> or <TT>AND</TT>. The |
presentation rule after the keyword <tt>IF</tt> or <tt>AND</tt>. The |
<TT>NOT</TT> keyword can be used to invert the condition. If the translation |
<tt>NOT</tt> keyword can be used to invert the condition. If the translation |
rules must be applied to any element which has this presentation rule (or does |
rules must be applied to any element which has this presentation rule (or does |
not have it, if the condition is inverted) no matter what the rule's value, |
not have it, if the condition is inverted) no matter what the rule's value, |
the condition is complete. If, in contrast, the condition applies to one or |
the condition is complete. If, in contrast, the condition applies to one or |
more values of the rule, these are indicated after the name of the |
more values of the rule, these are indicated after the name of the |
attribute.</P> |
attribute.</p> |
<P> |
<p> |
The representation of presentation rule values in a condition is similar to |
The representation of presentation rule values in a condition is similar to |
that for attribute values. The representation of these values depend on the |
that for attribute values. The representation of these values depend on the |
type of the presentation rule. There are three categories of presentation |
type of the presentation rule. There are three categories of presentation |
rules:</P> |
rules:</p> |
<UL> |
<ul> |
<LI>those taking numeric values (<TT>Size, Indent, LineSpacing, |
<li> |
LineWeight</TT>), |
those taking numeric values (<tt>Size, Indent, LineSpacing, LineWeight</tt>), |
<LI>those with values taken from a predefined list (<TT>Adjust, Justify, |
<li> |
Hyphenate, Style, Font, UnderLine, Thickness, LineStyle</TT>), |
those with values taken from a predefined list (<tt>Adjust, Justify, |
<LI>those whose value is a name (<TT>FillPattern, Background, |
Hyphenate, Style, Font, UnderLine, Thickness, LineStyle</tt>), |
Foreground</TT>). |
<li> |
</UL> |
those whose value is a name (<tt>FillPattern, Background, Foreground</tt>). |
<P> |
</ul> |
|
<p> |
For presentation rules which take numeric values, the condition can take a |
For presentation rules which take numeric values, the condition can take a |
unique value or a range of values. In the case of a unique value, this value |
unique value or a range of values. In the case of a unique value, this value |
(an integer) is simply preceded by an equals sign. Conditions based on ranges |
(an integer) is simply preceded by an equals sign. Conditions based on ranges |
of values have several forms:</P> |
of values have several forms:</p> |
<UL> |
<ul> |
<LI>all values less than a given value (the value is preceded by a ``less |
<li> |
|
all values less than a given value (the value is preceded by a ``less than'' |
|
sign). |
|
<li> |
|
all values greater than a given value (the value is preceded by a ``greater |
than'' sign). |
than'' sign). |
<LI>all values greater than a given value (the value is preceded by a |
<li> |
``greater than'' sign). |
all values falling in an interval, bounds included. The range of values is |
<LI>all values falling in an interval, bounds included. The range of values |
then specified <tt>IN [</tt>Minimum <tt>..</tt>Maximum<tt>]</tt>, where |
is then specified <TT>IN [</TT>Minimum <TT>..</TT>Maximum<TT>]</TT>, where |
|
Minimum and Maximum are integers. |
Minimum and Maximum are integers. |
</UL> |
</ul> |
<P> |
<p> |
Values for the <TT>Indent</TT>rule may be negative. The integer is then |
Values for the <tt>Indent</tt>rule may be negative. The integer is then |
simply preceded by a minus sign and represents how far the first line starts |
simply preceded by a minus sign and represents how far the first line starts |
to the left of the other lines.</P> |
to the left of the other lines.</p> |
<P> |
<p> |
For presentation rules whose values are taken from predefined lists, the value |
For presentation rules whose values are taken from predefined lists, the value |
which satisfies the condition is indicated by an equals sign followed by the |
which satisfies the condition is indicated by an equals sign followed by the |
name of the value.</P> |
name of the value.</p> |
<P> |
<p> |
For presentation rule whose values are names, the value which satisfies the |
For presentation rule whose values are names, the value which satisfies the |
condition is indicated by the equals sign followed by the value's name. The |
condition is indicated by the equals sign followed by the value's name. The |
names of fill patterns (the <TT>FillPattern</TT> rule) and of colors (the |
names of fill patterns (the <tt>FillPattern</tt> rule) and of colors (the |
<TT>Foreground</TT> and <TT>Background</TT> rules) known to Thot are the same |
<tt>Foreground</tt> and <tt>Background</tt> rules) known to Thot are the same |
as in the P language.</P> |
as in the P language.</p> |
<P> |
<p> |
The syntax of conditions based on the specific presentation is the same as the |
The syntax of conditions based on the specific presentation is the same as the |
syntax used to express the <A href="#sectc5224">translation of specific |
syntax used to express the <a href="#sectc5224">translation of specific |
presentation rules</A>.</P> |
presentation rules</a>.</p> |
<P> |
<p> |
When a condition has only one rule, the condition is simply followed by that |
When a condition has only one rule, the condition is simply followed by that |
rule. If it has several rules, they are placed after the condition between |
rule. If it has several rules, they are placed after the condition between |
the keywords <TT>BEGIN</TT> and <TT>END</TT>.</P> |
the keywords <tt>BEGIN</tt> and <tt>END</tt>.</p> |
<PRE> |
<pre> ConditionSeq = Condition [ 'AND' Condition ] . |
ConditionSeq = Condition [ 'AND' Condition ] . |
|
Condition = [ 'NOT' ] [ 'Target' ] Cond . |
Condition = [ 'NOT' ] [ 'Target' ] Cond . |
Cond = CondElem / CondAscend . |
Cond = CondElem / CondAscend . |
CondElem ='FirstRef' / 'LastRef' / |
CondElem ='FirstRef' / 'LastRef' / |
Line 7172 the keywords <TT>BEGIN</TT> and <TT>END<
|
Line 7136 the keywords <TT>BEGIN</TT> and <TT>END<
|
MaxInterval = NUMBER . |
MaxInterval = NUMBER . |
IntegerVal = NUMBER . |
IntegerVal = NUMBER . |
TextVal = STRING . |
TextVal = STRING . |
AttrValue = NAME . |
AttrValue = NAME .</pre> |
</PRE> |
<blockquote class="example"> |
<BLOCKQUOTE class="example"> |
<p> |
<P> |
<strong>Example:</strong></p> |
<STRONG>Example:</STRONG></P> |
<p> |
<P> |
|
Suppose that after each element of type Section_Title it is useful to produce |
Suppose that after each element of type Section_Title it is useful to produce |
the text <TT>\label{SectX}</TT> where <TT>X</TT> represents the section number, |
the text <tt>\label{SectX}</tt> where <tt>X</tt> represents the section |
but only if the section is designated by one or more references in the |
number, but only if the section is designated by one or more references in the |
document. The following conditional rule produces this effect:</P> |
document. The following conditional rule produces this effect:</p> |
<PRE> |
<pre>RULES |
RULES |
|
Section_Title : |
Section_Title : |
IF Referred |
IF Referred |
Create ('\label{Sect' Value(UniqueSectNum) '}\12') After; |
Create ('\label{Sect' Value(UniqueSectNum) '}\12') After;</pre> |
</PRE> |
<p> |
<P> |
(the declaration of the <a href="#sectc5224"><tt>UniqueSectNum</tt> |
(the declaration of the <A href="#sectc5224"><TT>UniqueSectNum</TT> |
counter</a> is given above). The string <tt>\12</tt> represents a line |
counter</A> is given above). The string <TT>\12</TT> represents a line |
break.</p> |
break.</P> |
</blockquote> |
</BLOCKQUOTE> |
<blockquote class="example"> |
<BLOCKQUOTE class="example"> |
<p> |
<P> |
<strong>Example:</strong></p> |
<STRONG>Example:</STRONG></P> |
<p> |
<P> |
|
Suppose that for elements of the Elmnt type it would be useful to produce a |
Suppose that for elements of the Elmnt type it would be useful to produce a |
character indicating the value of the numeric attribute Level associated with |
character indicating the value of the numeric attribute Level associated with |
the element: an ``A'' for all values of Level less than 3, a ``B'' for values |
the element: an ``A'' for all values of Level less than 3, a ``B'' for values |
between 3 and 10 and a ``C'' for values greater than 10. This can be achieved |
between 3 and 10 and a ``C'' for values greater than 10. This can be achieved |
by writing the following rules for the Elmnt type:</P> |
by writing the following rules for the Elmnt type:</p> |
<PRE> |
<pre>RULES |
RULES |
|
Elmnt : |
Elmnt : |
BEGIN |
BEGIN |
IF Level < 3 |
IF Level < 3 |
Line 7212 RULES
|
Line 7172 RULES
|
Create 'B'; |
Create 'B'; |
IF Level > 10 |
IF Level > 10 |
Create 'C'; |
Create 'C'; |
END; |
END;</pre> |
</PRE> |
</blockquote> |
</BLOCKQUOTE> |
</div> |
</DIV> |
</div> |
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc529>Translation rules</A></H3> |
|
|
|
<P> |
<h3><a name="sectc529">Translation rules</a></h3> |
|
<p> |
Fifteen types of translation rules can be associated with element types and |
Fifteen types of translation rules can be associated with element types and |
attribute values. They are the <TT>Create</TT>, <TT>Write</TT>, |
attribute values. They are the <tt>Create</tt>, <tt>Write</tt>, |
<TT>Read</TT>, <TT>Include</TT>, <TT>Get</TT>, <TT>Copy</TT>, <TT>Use</TT>, |
<tt>Read</tt>, <tt>Include</tt>, <tt>Get</tt>, <tt>Copy</tt>, <tt>Use</tt>, |
<TT>Remove</TT>, <TT>NoTranslation</TT>, <TT>NoLineBreak</TT>, |
<tt>Remove</tt>, <tt>NoTranslation</tt>, <tt>NoLineBreak</tt>, |
<TT>ChangeMainFile</TT>, <TT>RemoveFile</TT>, <TT>Set</TT>, <TT>Add</TT>, |
<tt>ChangeMainFile</tt>, <tt>RemoveFile</tt>, <tt>Set</tt>, <tt>Add</tt>, |
<TT>Indent</TT>, rules. Each rule has its own syntax, although they are |
<tt>Indent</tt>, rules. Each rule has its own syntax, although they are all |
all based on very similar models.</P> |
based on very similar models.</p> |
<PRE> |
<pre> SimpleRule = 'Create' [ 'IN' VarID ] Object |
SimpleRule = 'Create' [ 'IN' VarID ] Object |
|
[ Position ] ';' / |
[ Position ] ';' / |
'Write' Object [ Position ] ';' / |
'Write' Object [ Position ] ';' / |
'Read' BufferID [ Position ] ';' / |
'Read' BufferID [ Position ] ';' / |
Line 7250 all based on very similar models.</P>
|
Line 7208 all based on very similar models.</P>
|
'Set' CounterID InitValue [ Position ] ';' / |
'Set' CounterID InitValue [ Position ] ';' / |
'Add' CounterID Increment [ Position ] ';' / |
'Add' CounterID Increment [ Position ] ';' / |
'Indent' [ 'IN' VarID ] [ IndentSign ] |
'Indent' [ 'IN' VarID ] [ IndentSign ] |
IndentValue [ Position ] ';' . |
IndentValue [ Position ] ';' .</pre> |
</PRE> |
</div> |
</DIV> |
|
|
<div class="subsection"> |
<DIV class="subsection"> |
|
<H3><A name=sectc5210>The <TT>Create</TT> rule</A></H3> |
<h3><a name="sectc5210">The <tt>Create</tt> rule</a></h3> |
|
<p> |
<P> |
The most frequently used rule is undoubtedly the <tt>Create</tt> rule, which |
The most frequently used rule is undoubtedly the <TT>Create</TT> rule, which |
generates fixed or variable text (called an <em>object</em>) in the output |
generates fixed or variable text (called an <EM>object</EM>) in the output |
|
file. The generated text can be made to appear either before or after the |
file. The generated text can be made to appear either before or after the |
content of the element to which the rule applies. The rule begins with the |
content of the element to which the rule applies. The rule begins with the |
<TT>Create</TT> keyword, followed by a specifier for the object and a keyword |
<tt>Create</tt> keyword, followed by a specifier for the object and a keyword |
(<TT>Before</TT> or <TT>After</TT>) indicating the position of the generated |
(<tt>Before</tt> or <tt>After</tt>) indicating the position of the generated |
text (<A href="#sectc5222">before or after</A> the element's content). If the |
text (<a href="#sectc5222">before or after</a> the element's content). If the |
position is not indicated, the object will be generated before the element's |
position is not indicated, the object will be generated before the element's |
content. This rule, like all translation rules, is terminated by a |
content. This rule, like all translation rules, is terminated by a |
semicolon.</P> |
semicolon.</p> |
<P> |
<p> |
The <TT>Create</TT> keyword can be followed by the <TT>IN</TT> keyword and by |
The <tt>Create</tt> keyword can be followed by the <tt>IN</tt> keyword and by |
the name of a variable. This means that the text generated by the rule must |
the name of a variable. This means that the text generated by the rule must |
not be written in the main output file, but in the file whose name is |
not be written in the main output file, but in the file whose name is |
specified by the variable.</P> |
specified by the variable.</p> |
<P> |
<p> |
This allows the translation program to generate text in different files during |
This allows the translation program to generate text in different files during |
the same run. These files do not need to be explicitely declared or opened. |
the same run. These files do not need to be explicitely declared or opened. |
They do not need to be closed either, but if they contain temporary data, |
They do not need to be closed either, but if they contain temporary data, they |
they can be removed (see the <A href="#sectc5220a"><TT>RemoveFile</TT> |
can be removed (see the <a href="#sectc5220a"><tt>RemoveFile</tt> rule</a>). |
rule</A>). As soon as the translation program |
As soon as the translation program executes a <tt>Create</tt> rule for a file |
executes a <TT>Create</TT> rule for a file that is not yet open, it opens the |
that is not yet open, it opens the file. These files are closed when the |
file. These files are closed when the translation is finished.</P> |
translation is finished.</p> |
<PRE> |
<pre> 'Create' [ 'IN' VarID ] Object |
'Create' [ 'IN' VarID ] Object |
|
[ Position ] ';' |
[ Position ] ';' |
Object = ConstID / CharString / |
Object = ConstID / CharString / |
BufferID / |
BufferID / |
Line 7308 file. These files are closed when the tr
|
Line 7264 file. These files are closed when the tr
|
ElemID [ ExtStruct ] / |
ElemID [ ExtStruct ] / |
'RefId' / |
'RefId' / |
'DocumentName' / |
'DocumentName' / |
'DocumentDir' . |
'DocumentDir' .</pre> |
</PRE> |
<p> |
<P> |
The object to be generated can be:</p> |
The object to be generated can be:</P> |
<ul> |
<UL> |
<li> |
<LI>a constant string, specified by its name if it is declared in the schema's |
a constant string, specified by its name if it is declared in the schema's |
<TT>CONST</TT> section, or given directly as a value between apostrophes; |
<tt>CONST</tt> section, or given directly as a value between apostrophes; |
<LI>the contents of a buffer, designated by the name of the buffer; |
<li> |
<LI>a variable, designated by its name if it is declared in the translation |
the contents of a buffer, designated by the name of the buffer; |
schema's <TT>VAR</TT> section, or given directly between parentheses. The text |
<li> |
generated is the value of that variable evaluated for the element to which the |
a variable, designated by its name if it is declared in the translation |
rule applies. |
schema's <tt>VAR</tt> section, or given directly between parentheses. The |
<LI>the value of an attribute, if the element being translated has this |
text generated is the value of that variable evaluated for the element to |
attribute. The attribute is specified by its name; |
which the rule applies. |
<LI>the value of a specific presentation rule. This object can only be |
<li> |
generated if the translation rule is for a <A href="#prestransl">specific |
the value of an attribute, if the element being translated has this attribute. |
presentation rule</A>. It is specified by the <TT>Value</TT> keyword; |
The attribute is specified by its name; |
<LI>the element's content. That is, the content of the leaves of the subtree |
<li> |
of the translated element. This is specified by the <TT>Content</TT> keyword; |
the value of a specific presentation rule. This object can only be generated |
<LI>the comment attached to the element. When the element doesn't have a |
if the translation rule is for a <a href="#prestransl">specific presentation |
comment, nothing is generated. This is indicated by the <TT>Comment</TT> |
rule</a>. It is specified by the <tt>Value</tt> keyword; |
keyword; |
<li> |
<LI>the translation of all attributes of the element (which is primarily used |
the element's content. That is, the content of the leaves of the subtree of |
to apply the attribute translation rules <A href="#sectc5222">before</A> those of |
the translated element. This is specified by the <tt>Content</tt> keyword; |
the element type). This is specified by the <TT>Attributes</TT> keyword. |
<li> |
<LI>the translation of all of the element's specific presentation rules (which |
the comment attached to the element. When the element doesn't have a comment, |
is primarily used to apply the translation rules for the specific presentation |
nothing is generated. This is indicated by the <tt>Comment</tt> keyword; |
rules <A href="#sectc5222">before</A> those of the element or its attributes). |
<li> |
This option is specified by the <TT>Presentation</TT> keyword; |
the translation of all attributes of the element (which is primarily used to |
<LI>The value of the reference's identifier.<BR>Thot associates a unique |
apply the attribute translation rules <a href="#sectc5222">before</a> those of |
identifier with each element in a document. This identifier (called |
the element type). This is specified by the <tt>Attributes</tt> keyword. |
<EM>reference's identifier</EM> or <EM>label</EM>) is a character string |
<li> |
containing the letter `L' followed by digits. Thot uses it in references for |
the translation of all of the element's specific presentation rules (which is |
identifying the referred element.<BR>The <TT>RefId</TT> keyword produces the |
primarily used to apply the translation rules for the specific presentation |
reference's identifier of the element to which the translation rule is |
rules <a href="#sectc5222">before</a> those of the element or its attributes). |
applied, or the reference's identifier of its first ancestor that is referred |
This option is specified by the <tt>Presentation</tt> keyword; |
by a reference or that can be referred by a reference. |
<li> |
<LI>the value of a mark pair's unique identifier. This may only be used for |
The value of the reference's identifier.<br> |
<A href="#sectd3285">mark pairs</A> and is indicated by the <TT>PairId</TT> |
Thot associates a unique identifier with each element in a document. This |
keyword. |
identifier (called <em>reference's identifier</em> or <em>label</em>) is a |
<LI>the directory containing the file being generated (this string includes an |
character string containing the letter `L' followed by digits. Thot uses it |
ending '/', if it is not empty). This is indicated by the <TT>FileDir</TT> |
in references for identifying the referred element.<br> |
|
The <tt>RefId</tt> keyword produces the reference's identifier of the element |
|
to which the translation rule is applied, or the reference's identifier of its |
|
first ancestor that is referred by a reference or that can be referred by a |
|
reference. |
|
<li> |
|
the value of a mark pair's unique identifier. This may only be used for <a |
|
href="#sectd3285">mark pairs</a> and is indicated by the <tt>PairId</tt> |
keyword. |
keyword. |
<LI>the name of the file being generated (only the name, without the directory |
<li> |
and without the extension). This is indicated by the <TT>FileName</TT> |
the directory containing the file being generated (this string includes an |
|
ending '/', if it is not empty). This is indicated by the <tt>FileDir</tt> |
keyword. |
keyword. |
<LI>the extension of the file being generated (this string starts with a dot, |
<li> |
if it is not empty). This is indicated by the <TT>Extension</TT> keyword. |
the name of the file being generated (only the name, without the directory and |
<LI>the name of the document being translated. This is indicated by the |
without the extension). This is indicated by the <tt>FileName</tt> keyword. |
<TT>DocumentName</TT> keyword. |
<li> |
<LI>the directory containing the document being translated. This is indicated |
the extension of the file being generated (this string starts with a dot, if |
by the <TT>DocumentDir</TT> keyword. |
it is not empty). This is indicated by the <tt>Extension</tt> keyword. |
</UL> |
<li> |
<P> |
the name of the document being translated. This is indicated by the |
|
<tt>DocumentName</tt> keyword. |
|
<li> |
|
the directory containing the document being translated. This is indicated by |
|
the <tt>DocumentDir</tt> keyword. |
|
</ul> |
|
<p> |
When the rule applies to a reference (an element or an attribute defined as a |
When the rule applies to a reference (an element or an attribute defined as a |
reference in the structure schema), it can generate a text related to the |
reference in the structure schema), it can generate a text related to the |
element referred by that reference. The rule name is then followed the |
element referred by that reference. The rule name is then followed the |
<TT>Referred</TT> keyword and a specification of the object to be generated |
<tt>Referred</tt> keyword and a specification of the object to be generated |
for the referred element. This specification can be:</P> |
for the referred element. This specification can be:</p> |
<UL> |
<ul> |
<LI>the name of a variable. The rule generates the value of that variable, |
<li> |
|
the name of a variable. The rule generates the value of that variable, |
computed for the referred element. |
computed for the referred element. |
<LI>an element type. The rule generates the translation of the element of |
<li> |
that type, which is in the subtree of the referred element. If this element |
an element type. The rule generates the translation of the element of that |
is not defined in the structure schema which corresponds to the translation |
type, which is in the subtree of the referred element. If this element is not |
schema (that is, an object defined in another schema), the element's type name |
defined in the structure schema which corresponds to the translation schema |
must be followed by the name of its structure schema between parentheses. |
(that is, an object defined in another schema), the element's type name must |
<LI>the <TT>RefId</TT> keyword. The rule generates the reference's identifier |
be followed by the name of its structure schema between parentheses. |
of the referred element. |
<li> |
<LI>the <TT>DocumentName</TT> keyword. The rule generates the name of the |
the <tt>RefId</tt> keyword. The rule generates the reference's identifier of |
|
the referred element. |
|
<li> |
|
the <tt>DocumentName</tt> keyword. The rule generates the name of the |
document to which the referred element belongs. |
document to which the referred element belongs. |
<LI>the <TT>DocumentDir</TT> keyword. The rule generates the name of the |
<li> |
|
the <tt>DocumentDir</tt> keyword. The rule generates the name of the |
directory that contains the document of the referred element. |
directory that contains the document of the referred element. |
</UL> |
</ul> |
</DIV> |
</div> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc5211>The <TT>Write</TT> rule</A></H3> |
|
|
|
<P> |
<h3><a name="sectc5211">The <tt>Write</tt> rule</a></h3> |
The <TT>Write</TT> has the same syntax as the <TT>Create</TT> rule. It also |
<p> |
|
The <tt>Write</tt> has the same syntax as the <tt>Create</tt> rule. It also |
produces the same effect, but the generated text is displayed on the user's |
produces the same effect, but the generated text is displayed on the user's |
terminal during the translation of the document, instead of being produced in |
terminal during the translation of the document, instead of being produced in |
the translated document. This is useful for helping the user keep track of |
the translated document. This is useful for helping the user keep track of |
the progress of the translation and for prompting the user on the terminal for |
the progress of the translation and for prompting the user on the terminal for |
input required by the <TT>Read</TT> rule.</P> |
input required by the <tt>Read</tt> rule.</p> |
<PRE> |
<pre> 'Write' Object [ Position ] ';'</pre> |
'Write' Object [ Position ] ';' |
<p> |
</PRE> |
|
<P> |
|
Notice: if the translator is launched by the editor (by the ``Save as'' |
Notice: if the translator is launched by the editor (by the ``Save as'' |
command), messages produced by the <TT>Write</TT> rule are not displayed.</P> |
command), messages produced by the <tt>Write</tt> rule are not displayed.</p> |
<BLOCKQUOTE class="example"> |
<blockquote class="example"> |
<P> |
<p> |
<STRONG>Example:</STRONG></P> |
<strong>Example:</strong></p> |
<P> |
<p> |
To make the translator display the number of each section being translated on |
To make the translator display the number of each section being translated on |
the user's terminal, the following rule is specified for the |
the user's terminal, the following rule is specified for the <tt>Section</tt> |
<TT>Section</TT> element type:</P> |
element type:</p> |
<PRE> |
<pre>Section : BEGIN |
Section : BEGIN |
|
Write VarSection; |
Write VarSection; |
... |
... |
END; |
END;</pre> |
</PRE> |
<p> |
<P> |
(see <a href="#varsectexample">above</a> for the definition of the |
(see <A href="#varsectexample">above</A> for the definition of |
<tt>VarSection</tt> variable).</p> |
the <TT>VarSection</TT> variable).</P> |
<p> |
<P> |
|
To display text on the terminal before issuing a read operation with the |
To display text on the terminal before issuing a read operation with the |
<TT>Read</TT> rule, the following rule is used:</P> |
<tt>Read</tt> rule, the following rule is used:</p> |
<PRE> |
<pre>BEGIN |
BEGIN |
|
Write 'Enter the name of the destination: '; |
Write 'Enter the name of the destination: '; |
... |
... |
END; |
END;</pre> |
</PRE> |
</blockquote> |
</BLOCKQUOTE> |
</div> |
</DIV> |
|
|
<div class="subsection"> |
<DIV class="subsection"> |
|
<H3><A name=sectc5212>The <TT>Read</TT> rule</A></H3> |
<h3><a name="sectc5212">The <tt>Read</tt> rule</a></h3> |
|
<p> |
<P> |
The <tt>Read</tt> rule reads text from the terminal during the translation of |
The <TT>Read</TT> rule reads text from the terminal during the translation of |
|
the document and saves the text read in one of the buffers declared in the |
the document and saves the text read in one of the buffers declared in the |
<TT>BUFFERS</TT> section of the schema. The buffer to be used is indicated by |
<tt>BUFFERS</tt> section of the schema. The buffer to be used is indicated by |
its name, after the <TT>READ</TT> keyword. This name can be followed, as in |
its name, after the <tt>READ</tt> keyword. This name can be followed, as in |
the <TT>Create</TT> and <TT>Write</TT> rules, by a keyword indicating if the |
the <tt>Create</tt> and <tt>Write</tt> rules, by a keyword indicating if the |
read operation must be performed <TT>Before</TT> or <TT>After</TT> the |
read operation must be performed <tt>Before</tt> or <tt>After</tt> the |
translation of the element's content. If this keyword is absent, the read |
translation of the element's content. If this keyword is absent, the read |
operation is done beforehand. The text is read into the buffer and remains |
operation is done beforehand. The text is read into the buffer and remains |
there until a rule using the same buffer - possibly the same rule - is |
there until a rule using the same buffer - possibly the same rule - is |
applied.</P> |
applied.</p> |
<PRE> |
<pre> 'Read' BufferID [ Position ] ';'</pre> |
'Read' BufferID [ Position ] ';' |
<blockquote class="example"> |
</PRE> |
<p> |
<BLOCKQUOTE class="example"> |
<strong>Example:</strong></p> |
<P> |
<p> |
<STRONG>Example:</STRONG></P> |
|
<P> |
|
The following set of rules tells the user that the translator is waiting for |
The following set of rules tells the user that the translator is waiting for |
the entry of some text, reads this text into a buffer and copies the text into |
the entry of some text, reads this text into a buffer and copies the text into |
the translated document.</P> |
the translated document.</p> |
<PRE> |
<pre>BEGIN |
BEGIN |
|
Write 'Enter the name of the destination: '; |
Write 'Enter the name of the destination: '; |
Read DestName; |
Read DestName; |
Create DestName; |
Create DestName; |
... |
... |
END; |
END;</pre> |
</PRE> |
<p> |
<P> |
(see <a href="#destname">above</a> the definition of <tt>DestName</tt>).</p> |
(see <A href="#destname">above</A> the definition of <TT>DestName</TT>).</P> |
</blockquote> |
</BLOCKQUOTE> |
</div> |
</DIV> |
|
|
<div class="subsection"> |
<DIV class="subsection"> |
|
<H3><A name=sectc5213>The <TT>Include</TT> rule</A></H3> |
<h3><a name="sectc5213">The <tt>Include</tt> rule</a></h3> |
|
<p> |
<P> |
The <tt>Include</tt> rule, like the <tt>Create</tt> rule, is used to produce |
The <TT>Include</TT> rule, like the <TT>Create</TT> rule, is used to produce |
|
text in the translated document. It inserts constant text which is not |
text in the translated document. It inserts constant text which is not |
defined in the translation schema, but is instead taken from a file. The |
defined in the translation schema, but is instead taken from a file. The |
file's name is specified after the <TT>Include</TT> keyword, either directly |
file's name is specified after the <tt>Include</tt> keyword, either directly |
as a character string between apostrophes or as the name of one of the buffers |
as a character string between apostrophes or as the name of one of the buffers |
declared in the <TT>BUFFERS</TT> section of the schema. In the latter case, |
declared in the <tt>BUFFERS</tt> section of the schema. In the latter case, |
the buffer is assumed to contain the file's name. This can be used when the |
the buffer is assumed to contain the file's name. This can be used when the |
included file's name is known only at the moment of translation. This only |
included file's name is known only at the moment of translation. This only |
requires that the <TT>Include</TT> rule is preceded by a <TT>Read</TT> rule |
requires that the <tt>Include</tt> rule is preceded by a <tt>Read</tt> rule |
which puts the name of the file desired by the user into the buffer.</P> |
which puts the name of the file desired by the user into the buffer.</p> |
<P> |
<p> |
Like the other rules, it is possible to specify whether the inclusion will |
Like the other rules, it is possible to specify whether the inclusion will |
occur before or after the element's content, with the default being before. |
occur before or after the element's content, with the default being before. |
The file inclusion is only done at the moment of translation, not during the |
The file inclusion is only done at the moment of translation, not during the |
Line 7487 compilation of the translation schema. T
|
Line 7452 compilation of the translation schema. T
|
exist during the compilation, but it must be accessible at the time of |
exist during the compilation, but it must be accessible at the time of |
translation. Its contents can also be modified between two translations, thus |
translation. Its contents can also be modified between two translations, thus |
producing different results, even if neither the document or the translation |
producing different results, even if neither the document or the translation |
schema are modified.</P> |
schema are modified.</p> |
<P> |
<p> |
During translation, the file to be included is searched for along the schema |
During translation, the file to be included is searched for along the schema |
directory path (indicated by the environment variable <TT>THOTSCH</TT>). The |
directory path (indicated by the environment variable <tt>THOTSCH</tt>). The |
file name is normally only composed of a simple name, without specification of |
file name is normally only composed of a simple name, without specification of |
a complete file path. However, if the filename starts with a '/', it is |
a complete file path. However, if the filename starts with a '/', it is |
considered as an absolute path.</P> |
considered as an absolute path.</p> |
<PRE> |
<pre> 'Include' File [ Position ] ';' |
'Include' File [ Position ] ';' |
|
File = FileName / BufferID . |
File = FileName / BufferID . |
FileName = STRING . |
FileName = STRING .</pre> |
</PRE> |
<blockquote class="example"> |
<BLOCKQUOTE class="example"> |
<p> |
<P> |
<strong>Example:</strong></p> |
<STRONG>Example:</STRONG></P> |
<p> |
<P> |
|
Suppose that it is desirable to print documents of the Article class with a |
Suppose that it is desirable to print documents of the Article class with a |
formatter which requires a number of declarations and definitions at the |
formatter which requires a number of declarations and definitions at the |
beginning of the file. The <TT>Include</TT>rule can be used to achieve this. |
beginning of the file. The <tt>Include</tt>rule can be used to achieve this. |
All the declarations and definitions a replaced in a file called |
All the declarations and definitions a replaced in a file called |
<TT>DeclarArt</TT> and then the <TT>Article</TT> element type is given the |
<tt>DeclarArt</tt> and then the <tt>Article</tt> element type is given the |
following rule:</P> |
following rule:</p> |
<PRE> |
<pre>Article : BEGIN |
Article : BEGIN |
|
Include 'DeclarArt' Before; |
Include 'DeclarArt' Before; |
... |
... |
END; |
END;</pre> |
</PRE> |
</blockquote> |
</BLOCKQUOTE> |
</div> |
</DIV> |
|
|
<div class="subsection"> |
<DIV class="subsection"> |
|
<H3><A name=sectc5214>The <TT>Get</TT> rule</A></H3> |
<h3><a name="sectc5214">The <tt>Get</tt> rule</a></h3> |
|
<p> |
<P> |
The <tt>Get</tt> rule is used to change the order in which the elements appear |
The <TT>Get</TT> rule is used to change the order in which the elements appear |
|
in the translated document. More precisely, it produces the translation of a |
in the translated document. More precisely, it produces the translation of a |
specified element before or after the translation of the content of the |
specified element before or after the translation of the content of the |
element to which the rule applies. The <TT>Before</TT> and <TT>After</TT> |
element to which the rule applies. The <tt>Before</tt> and <tt>After</tt> |
keywords are placed at the end of the rule to specify whether the operation |
keywords are placed at the end of the rule to specify whether the operation |
should be performed before or after translation of the rule's element (the |
should be performed before or after translation of the rule's element (the |
default is before). The type of the element to be moved must be specified |
default is before). The type of the element to be moved must be specified |
after the <TT>Get</TT> keyword, optionally preceded by a keyword indicating |
after the <tt>Get</tt> keyword, optionally preceded by a keyword indicating |
where the element will be found in the logical structure of the document:</P> |
where the element will be found in the logical structure of the document:</p> |
<DL> |
<dl> |
<DT><TT>Included</TT></DT> |
<dt><tt>Included</tt></dt> |
<DD>The element to be moved is the first element of the indicated type which is |
<dd> |
|
The element to be moved is the first element of the indicated type which is |
found inside the element to which the rule applies. |
found inside the element to which the rule applies. |
</DD> |
</dd> |
<DT><TT>Referred</TT></DT> |
<dt><tt>Referred</tt></dt> |
<DD>This keyword can only be used if the rule applies to a reference element. |
<dd> |
The element to be moved is either the element designated by the reference (if |
This keyword can only be used if the rule applies to a reference element. The |
that element is of the specified type), or the first element of the desired |
element to be moved is either the element designated by the reference (if that |
type contained within the element designated by the reference. |
element is of the specified type), or the first element of the desired type |
</DD> |
contained within the element designated by the reference. |
<DT>no keyword</DT> |
</dd> |
<DD>If the element to be moved is an associated element, defined in the <A |
<dt>no keyword</dt> |
href="#sectc314"><TT>ASSOC</TT> section</A> of the structure schema, all |
<dd> |
|
If the element to be moved is an associated element, defined in the <a |
|
href="#sectc314"><tt>ASSOC</tt> section</a> of the structure schema, all |
associated elements of this type which have not been translated yet are then |
associated elements of this type which have not been translated yet are then |
translated. Certain elements may in fact have already been translated by a |
translated. Certain elements may in fact have already been translated by a |
<TT>Get Referred</TT> rule. |
<tt>Get Referred</tt> rule. |
<P> |
<p> |
If the element to be moved is not an associated element, the translator takes |
If the element to be moved is not an associated element, the translator takes |
the first element of the indicated type from among the siblings of the rule's |
the first element of the indicated type from among the siblings of the rule's |
element. This is primarily used to change the order of the components of an |
element. This is primarily used to change the order of the components of an |
aggregate.</P> |
aggregate.</p> |
</DD> |
</dd> |
</DL> |
</dl> |
<P> |
<p> |
If the element to be moved is defined in a structure schema which is not the |
If the element to be moved is defined in a structure schema which is not the |
one which corresponds to the translation schema (in the case of an included |
one which corresponds to the translation schema (in the case of an included |
object with a different schema), the type name of this element must be |
object with a different schema), the type name of this element must be |
followed, between parentheses, by the name of the structure schema which |
followed, between parentheses, by the name of the structure schema which |
defines it.</P> |
defines it.</p> |
<PRE> |
<pre> 'Get' [ RelPosition ] ElemID |
'Get' [ RelPosition ] ElemID |
|
[ ExtStruct ] |
[ ExtStruct ] |
[ Position ] ';' / |
[ Position ] ';' / |
RelPosition = 'Included' / 'Referred' . |
RelPosition = 'Included' / 'Referred' . |
ExtStruct = '(' ElemID ')' . |
ExtStruct = '(' ElemID ')' .</pre> |
</PRE> |
<p> |
<P> |
The <tt>Get</tt> rule has no effect if the element which it is supposed to |
The <TT>Get</TT> rule has no effect if the element which it is supposed to |
|
move has already been translated. Thus, the element will not be duplicated. |
move has already been translated. Thus, the element will not be duplicated. |
It is generally best to associate the rule with the first element which will |
It is generally best to associate the rule with the first element which will |
be encountered by the translator in its traversal of the document. Suppose an |
be encountered by the translator in its traversal of the document. Suppose an |
aggregate has two elements <TT>A</TT> and <TT>B</TT>, with <TT>A</TT> |
aggregate has two elements <tt>A</tt> and <tt>B</tt>, with <tt>A</tt> |
appearing first in the logical structure. To permute these two elements, a |
appearing first in the logical structure. To permute these two elements, a |
<TT>Get B before</TT> rule should be associated with the <TT>A</TT> element |
<tt>Get B before</tt> rule should be associated with the <tt>A</tt> element |
type, not the inverse. Similarly, a rule of the form <TT>Get Included X |
type, not the inverse. Similarly, a rule of the form <tt>Get Included X |
After</TT>, even though syntactically correct, makes no sense since, by the |
After</tt>, even though syntactically correct, makes no sense since, by the |
time it will be applied, after the translation of the contents of the element |
time it will be applied, after the translation of the contents of the element |
to which it is attached, the <TT>X</TT> element will already have been |
to which it is attached, the <tt>X</tt> element will already have been |
translated.</P> |
translated.</p> |
<P> |
<p> |
The <TT>Get</TT> rule is the only way to obtain the translation of the |
The <tt>Get</tt> rule is the only way to obtain the translation of the |
associated elements. In fact, the translator only traverses the primary tree |
associated elements. In fact, the translator only traverses the primary tree |
of the document and thus does not translate the associated elements, except |
of the document and thus does not translate the associated elements, except |
when the translation is explicitly required by a <TT>Get Referred Type</TT> or |
when the translation is explicitly required by a <tt>Get Referred Type</tt> or |
<TT>Get Type</TT> rule where <TT>Type</TT> is an associated element type.</P> |
<tt>Get Type</tt> rule where <tt>Type</tt> is an associated element type.</p> |
<BLOCKQUOTE class="example"> |
<blockquote class="example"> |
<P> |
<p> |
<STRONG>Example:</STRONG></P> |
<strong>Example:</strong></p> |
<P> |
<p> |
The structure schema defined figures as associated element which are composed |
The structure schema defined figures as associated element which are composed |
of some content and a caption. Moreover, it is possible to make references to |
of some content and a caption. Moreover, it is possible to make references to |
figures, using elements of the <TT>RefFigure</TT> type:</P> |
figures, using elements of the <tt>RefFigure</tt> type:</p> |
<PRE> |
<pre> ... |
... |
|
RefFigure = REFERENCE(Figure); |
RefFigure = REFERENCE(Figure); |
ASSOC |
ASSOC |
Figure = BEGIN |
Figure = BEGIN |
Content = NATURE; |
Content = NATURE; |
Caption = Text; |
Caption = Text; |
END; |
END; |
... |
...</pre> |
</PRE> |
<p> |
<P> |
|
Suppose it would be useful to make a figure appear in the translated document |
Suppose it would be useful to make a figure appear in the translated document |
at the place in the text where the first reference to the figure is made. If |
at the place in the text where the first reference to the figure is made. If |
some figures are not referenced, then they would appear at the end of the |
some figures are not referenced, then they would appear at the end of the |
document. Also, each figure's caption should appear before the content. The |
document. Also, each figure's caption should appear before the content. The |
following rules in the translation schema will produce this result:</P> |
following rules in the translation schema will produce this result:</p> |
<PRE> |
<pre>Article : BEGIN |
Article : BEGIN |
|
... |
... |
Get Figures After; |
Get Figures After; |
END; |
END; |
Line 7622 RefFigure : BEGIN
|
Line 7581 RefFigure : BEGIN
|
Content : BEGIN |
Content : BEGIN |
Get Caption Before; |
Get Caption Before; |
... |
... |
END; |
END;</pre> |
</PRE> |
</blockquote> |
</BLOCKQUOTE> |
</div> |
</DIV> |
|
|
<div class="subsection"> |
<DIV class="subsection"> |
|
<H3><A name=sectc5215>The <TT>Copy</TT> rule</A></H3> |
<h3><a name="sectc5215">The <tt>Copy</tt> rule</a></h3> |
|
<p> |
<P> |
Like the <tt>Get</tt> rule, the <tt>Copy</tt> rule generates the translation |
Like the <TT>Get</TT> rule, the <TT>Copy</TT> rule generates the translation |
|
of a specified element, but it acts even if the element has already been |
of a specified element, but it acts even if the element has already been |
translated and it allows to copy it or to translate it later. Both rules have |
translated and it allows to copy it or to translate it later. Both rules have |
the same syntax.</P> |
the same syntax.</p> |
<PRE> |
<pre> 'Copy' [ RelPosition ] ElemID |
'Copy' [ RelPosition ] ElemID |
[ ExtStruct ] [ Position ] ';'</pre> |
[ ExtStruct ] [ Position ] ';' |
</div> |
</PRE> |
|
</DIV> |
<div class="subsection"> |
|
|
<DIV class="subsection"> |
<h3><a name="sectc5216">The <tt>Use</tt> rule</a></h3> |
<H3><A name=sectc5216>The <TT>Use</TT> rule</A></H3> |
<p> |
|
The <tt>Use</tt> rule specifies the translation schema to be applied to |
<P> |
|
The <TT>Use</TT> rule specifies the translation schema to be applied to |
|
objects of a certain class that are part of the document. This rule only |
objects of a certain class that are part of the document. This rule only |
appears in the rules for the root element of the document (the first type |
appears in the rules for the root element of the document (the first type |
defined after the <TT>STRUCT</TT> keyword in the structure schema) or the |
defined after the <tt>STRUCT</tt> keyword in the structure schema) or the |
rules of an element defined by an external structure (by another structure |
rules of an element defined by an external structure (by another structure |
schema). Also, the <TT>Use</TT> rule cannot be conditional.</P> |
schema). Also, the <tt>Use</tt> rule cannot be conditional.</p> |
<P> |
<p> |
If the rule is applied to an element defined by an external structure, the |
If the rule is applied to an element defined by an external structure, the |
<TT>Use</TT> keyword is simply followed by the name of the translation schema |
<tt>Use</tt> keyword is simply followed by the name of the translation schema |
to be used for element constructed according to that external structure. If |
to be used for element constructed according to that external structure. If |
the rule is applied to the document's root element, it is formed by the |
the rule is applied to the document's root element, it is formed by the |
<TT>Use</TT> keyword followed by the translation schema's name, the |
<tt>Use</tt> keyword followed by the translation schema's name, the |
<TT>For</TT> keyword and the name of the external structure to which the |
<tt>For</tt> keyword and the name of the external structure to which the |
indicated translation schema should be applied.</P> |
indicated translation schema should be applied.</p> |
<PRE> |
<pre> 'Use' TrSchema [ 'For' ElemID ] ';' |
'Use' TrSchema [ 'For' ElemID ] ';' |
TrSchema = NAME .</pre> |
TrSchema = NAME . |
<p> |
</PRE> |
If no <tt>Use</tt> rule defines the translation schema to be used for an |
<P> |
|
If no <TT>Use</TT> rule defines the translation schema to be used for an |
|
external structure which appears in a document, the translator asks the user, |
external structure which appears in a document, the translator asks the user, |
during the translation process, which schema should be used. Thus, it is not |
during the translation process, which schema should be used. Thus, it is not |
necessary to give the translation schema a <TT>Use</TT> rule for every |
necessary to give the translation schema a <tt>Use</tt> rule for every |
external structure used, especially when the choice of translation schemas is |
external structure used, especially when the choice of translation schemas is |
to be left to the user.</P> |
to be left to the user.</p> |
<P> |
<p> |
Notice: if the translator is launched by the editor (by the ``Save as'' |
Notice: if the translator is launched by the editor (by the ``Save as'' |
command), prompts are not displayed.</P> |
command), prompts are not displayed.</p> |
<BLOCKQUOTE class="example"> |
<blockquote class="example"> |
<P> |
<p> |
<STRONG>Example:</STRONG></P> |
<strong>Example:</strong></p> |
<P> |
<p> |
The <TT>Article</TT> structure schema uses the |
The <tt>Article</tt> structure schema uses the <tt>Formula</tt> external |
<TT>Formula</TT> external structure, defined by another structure schema, for |
structure, defined by another structure schema, for mathematical formulas:</p> |
mathematical formulas:</P> |
<pre>STRUCTURE Article; |
<PRE> |
|
STRUCTURE Article; |
|
... |
... |
STRUCT |
STRUCT |
Article = ... |
Article = ... |
Line 7689 STRUCT
|
Line 7641 STRUCT
|
Formula_in_text = Formula; |
Formula_in_text = Formula; |
Isolated_formula = Formula; |
Isolated_formula = Formula; |
... |
... |
END |
END</pre> |
</PRE> |
<p> |
<P> |
Suppose that it would be useful to use the <tt>FormulaT</tt> translation |
Suppose that it would be useful to use the <TT>FormulaT</TT> translation schema |
schema for the formulas of an article. This can be expressed in two different |
for the formulas of an article. This can be expressed in two different ways in |
ways in the <tt>Article</tt> class translation schema, using the rules:</p> |
the <TT>Article</TT> class translation schema, using the rules:</P> |
<pre>RULES |
<PRE> |
|
RULES |
|
Article : |
Article : |
Use FormulaT for Formula; |
Use FormulaT for Formula;</pre> |
</PRE> |
<p> |
<P> |
or:</p> |
or:</P> |
<pre>RULES |
<PRE> |
|
RULES |
|
... |
... |
Formula : |
Formula : |
Use FormulaT; |
Use FormulaT;</pre> |
</PRE> |
</blockquote> |
</BLOCKQUOTE> |
</div> |
</DIV> |
|
|
<div class="subsection"> |
<DIV class="subsection"> |
|
<H3><A name=sectc5217>The <TT>Remove</TT> rule</A></H3> |
<h3><a name="sectc5217">The <tt>Remove</tt> rule</a></h3> |
|
<p> |
<P> |
The <tt>Remove</tt> rule indicates that nothing should be generated, in the |
The <TT>Remove</TT> rule indicates that nothing should be generated, in the |
|
translated document, for the content of the element to which the rule applies. |
translated document, for the content of the element to which the rule applies. |
The content of that element is simply ignored by the translator. This does |
The content of that element is simply ignored by the translator. This does |
not prevent the generation of text for the element itself, using the |
not prevent the generation of text for the element itself, using the |
<TT>Create</TT> or <TT>Include</TT> rules, for example.</P> |
<tt>Create</tt> or <tt>Include</tt> rules, for example.</p> |
<P> |
<p> |
The <TT>Remove</TT> rule is simply written with the <TT>Remove</TT> keyword. |
The <tt>Remove</tt> rule is simply written with the <tt>Remove</tt> keyword. |
It is terminated, like all rules, by a semicolon.</P> |
It is terminated, like all rules, by a semicolon.</p> |
<PRE> |
<pre> 'Remove' ';'</pre> |
'Remove' ';' |
</div> |
</PRE> |
|
</DIV> |
<div class="subsection"> |
|
|
<DIV class="subsection"> |
<h3><a name="sectc5218">The <tt>NoTranslation</tt> rule</a></h3> |
<H3><A name=sectc5218>The <TT>NoTranslation</TT> rule</A></H3> |
<p> |
|
The <tt>NoTranslation</tt> rule indicates to the translator that it must not |
<P> |
|
The <TT>NoTranslation</TT> rule indicates to the translator that it must not |
|
translate the content of the leaves of the element to which it applies. In |
translate the content of the leaves of the element to which it applies. In |
contrast to the <TT>Remove</TT> rule, it does not suppress the content of the |
contrast to the <tt>Remove</tt> rule, it does not suppress the content of the |
element, but it inhibits the translation of character strings, symbols, and |
element, but it inhibits the translation of character strings, symbols, and |
graphical elements contained in the element. These are retrieved so that |
graphical elements contained in the element. These are retrieved so that |
after the translation of the document, the rules of the <A |
after the translation of the document, the rules of the <a |
href="#sectc5225"><TT>TEXTTRANSLATE</TT>, <TT>SYMBTRANSLATE</TT> and |
href="#sectc5225"><tt>TEXTTRANSLATE</tt>, <tt>SYMBTRANSLATE</tt> and |
<TT>GRAPHTRANSLATE</TT> sections</A> will not be applied to them.</P> |
<tt>GRAPHTRANSLATE</tt> sections</a> will not be applied to them.</p> |
<P> |
<p> |
The <TT>NoTranslation</TT> rule is written with the <TT>NoTranslation</TT> |
The <tt>NoTranslation</tt> rule is written with the <tt>NoTranslation</tt> |
keyword followed by a semicolon.</P> |
keyword followed by a semicolon.</p> |
<PRE> |
<pre> 'NoTranslation' ';'</pre> |
'NoTranslation' ';' |
</div> |
</PRE> |
|
</DIV> |
<div class="subsection"> |
|
|
<DIV class="subsection"> |
<h3><a name="sectc5219">The <tt>NoLineBreak</tt> rule</a></h3> |
<H3><A name=sectc5219>The <TT>NoLineBreak</TT> rule</A></H3> |
<p> |
|
The <tt>NoLineBreak</tt> rule indicates to the translator that it must not |
<P> |
|
The <TT>NoLineBreak</TT> rule indicates to the translator that it must not |
|
generate additional line breaks in the output produced for the element to |
generate additional line breaks in the output produced for the element to |
which it applies. This is as if it was an <A href="#sectc522">instruction |
which it applies. This is as if it was an <a href="#sectc522">instruction |
<TT>LINELENGTH 0;</TT></A> at the beginning of the translation schema, but |
<tt>LINELENGTH 0;</tt></a> at the beginning of the translation schema, but |
only for the current element.</P> |
only for the current element.</p> |
<P> |
<p> |
The <TT>NoLineBreak</TT> rule is written with the <TT>NoLineBreak</TT> keyword |
The <tt>NoLineBreak</tt> rule is written with the <tt>NoLineBreak</tt> keyword |
followed by a semicolon.</P> |
followed by a semicolon.</p> |
<PRE> |
<pre> 'NoLineBreak' ';'</pre> |
'NoLineBreak' ';' |
</div> |
</PRE> |
|
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc5220>The <TT>ChangeMainFile</TT> rule</A></H3> |
|
|
|
<P> |
<h3><a name="sectc5220">The <tt>ChangeMainFile</tt> rule</a></h3> |
|
<p> |
When the translation program starts, it opens a main output file, whose name |
When the translation program starts, it opens a main output file, whose name |
is given as a parameter of the translator. All <A |
is given as a parameter of the translator. All <a |
href="#sectc5210"><TT>Create</TT> rules</A> without explicit indication of |
href="#sectc5210"><tt>Create</tt> rules</a> without explicit indication of the |
the output file write sequentially in this file. When a |
output file write sequentially in this file. When a <tt>ChangeMainFile</tt> |
<TT>ChangeMainFile</TT> rule is executed, the main output file is closed and |
rule is executed, the main output file is closed and it is replaced by a new |
it is replaced by a new one, whose name is specified in the |
one, whose name is specified in the <tt>ChangeMainFile</tt> rule. The |
<TT>ChangeMainFile</TT> rule. The <TT>Create</TT> rules without indication of |
<tt>Create</tt> rules without indication of the output file that are then |
the output file that are then executed write in this new file. Several |
executed write in this new file. Several <tt>ChangeMainFile</tt> rules can be |
<TT>ChangeMainFile</TT> rules can be executed during the same translation, for |
executed during the same translation, for dividing the main output into |
dividing the main output into several files.</P> |
several files.</p> |
<P> |
<p> |
This rule is written with the <TT>ChangeMainFile</TT> keyword followed by the |
This rule is written with the <tt>ChangeMainFile</tt> keyword followed by the |
name of a variable that specifies the name of the new main file. The keyword |
name of a variable that specifies the name of the new main file. The keyword |
<TT>Before</TT> or <TT>After</TT> can be placed at the end of the rule to |
<tt>Before</tt> or <tt>After</tt> can be placed at the end of the rule to |
specify whether the operation should be performed before or after translation |
specify whether the operation should be performed before or after translation |
of the rule's element (the default is before). This rule, like all translation |
of the rule's element (the default is before). This rule, like all translation |
rules, is terminated by a semicolon.</P> |
rules, is terminated by a semicolon.</p> |
<PRE> |
<pre> 'ChangeMainFile' VarID [ Position ] ';'</pre> |
'ChangeMainFile' VarID [ Position ] ';' |
<blockquote class="example"> |
</PRE> |
<p> |
<BLOCKQUOTE class="example"> |
<strong>Example:</strong></p> |
<P> |
<p> |
<STRONG>Example:</STRONG></P> |
|
<P> |
|
To generate the translation of each section in a different file, the following |
To generate the translation of each section in a different file, the following |
rule can be associated with type <TT>Section</TT>. That rule uses the <A |
rule can be associated with type <tt>Section</tt>. That rule uses the <a |
href="#varoutputfile"><TT>VarOutpuFile</TT> variable</A> defined above.</P> |
href="#varoutputfile"><tt>VarOutpuFile</tt> variable</a> defined above.</p> |
<PRE> |
<pre> Section: |
Section: |
ChangeMainFile VarOutpuFile Before;</pre> |
ChangeMainFile VarOutpuFile Before; |
<p> |
</PRE> |
If <tt>output.txt</tt> is the name of the output file specified when starting |
<P> |
|
If <TT>output.txt</TT> is the name of the output file specified when starting |
|
the translation program, translated sections are written in files |
the translation program, translated sections are written in files |
<TT>output1.txt</TT>, <TT>output2.txt</TT>, etc.</P> |
<tt>output1.txt</tt>, <tt>output2.txt</tt>, etc.</p> |
</BLOCKQUOTE> |
</blockquote> |
</DIV> |
</div> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc5220a>The <TT>RemoveFile</TT> rule</A></H3> |
|
|
|
<P> |
<h3><a name="sectc5220a">The <tt>RemoveFile</tt> rule</a></h3> |
|
<p> |
Files may be used for storing temporary data that are no longer needed when |
Files may be used for storing temporary data that are no longer needed when |
the translation of a document is complete. These files may be removed by |
the translation of a document is complete. These files may be removed by the |
the <TT>RemoveFile</TT> rule.</P> |
<tt>RemoveFile</tt> rule.</p> |
<P> |
<p> |
This rule is written with the <TT>RemoveFile</TT> keyword followed by the |
This rule is written with the <tt>RemoveFile</tt> keyword followed by the name |
name of a variable that specifies the name of the file to be |
of a variable that specifies the name of the file to be removed. The keyword |
removed. The keyword <TT>Before</TT> or <TT>After</TT> can be placed at the |
<tt>Before</tt> or <tt>After</tt> can be placed at the end of the rule to |
end of the rule to specify whether the operation should be performed before |
specify whether the operation should be performed before or after translation |
or after translation of the rule's element (the default is before). This |
of the rule's element (the default is before). This rule, like all |
rule, like all translation rules, is terminated by a semicolon.</P> |
translation rules, is terminated by a semicolon.</p> |
<PRE> |
<pre> 'RemoveFile' VarID [ Position ] ';'</pre> |
'RemoveFile' VarID [ Position ] ';' |
</div> |
</PRE> |
|
</DIV> |
<div class="subsection"> |
|
|
<DIV class="subsection"> |
<h3><a name="sectc5221">The <tt>Set</tt> and <tt>Add</tt> rules</a></h3> |
<H3><A name=sectc5221>The <TT>Set</TT> and <TT>Add</TT> rules</A></H3> |
<p> |
|
The <tt>Set</tt> and <tt>Add</tt> rules are used for modifying the value of |
<P> |
counters that have no <a href="#sectc524">counting function</a>. Only this |
The <TT>Set</TT> and <TT>Add</TT> rules are used for modifying the value of |
type of counter can be used in the <tt>Set</tt> and <tt>Add</tt> rules.</p> |
counters that have no <A href="#sectc524">counting function</A>. Only this |
<p> |
type of counter can be used in the <TT>Set</TT> and <TT>Add</TT> rules.</P> |
Both rules have the same syntax: after the keyword <tt>Set</tt> or |
<P> |
<tt>Add</tt> appear the counter name and the value to assign to the counter |
Both rules have the same syntax: after the keyword <TT>Set</TT> or |
(<tt>Set</tt> rule) or the value to be added to the counter (<tt>Add</tt> |
<TT>Add</TT> appear the counter name and the value to assign to the counter |
rule). The keyword <tt>Before</tt> or <tt>After</tt> can follow that value to |
(<TT>Set</TT> rule) or the value to be added to the counter (<TT>Add</TT> |
|
rule). The keyword <TT>Before</TT> or <TT>After</TT> can follow that value to |
|
indicate when the rule must be applied: before or after the element's content |
indicate when the rule must be applied: before or after the element's content |
is translated. By default, <TT>Before</TT> is assumed. A semicolon terminates |
is translated. By default, <tt>Before</tt> is assumed. A semicolon terminates |
the rule.</P> |
the rule.</p> |
<PRE> |
<pre> 'Set' CounterID InitValue [ Position ] ';' / |
'Set' CounterID InitValue [ Position ] ';' / |
'Add' CounterID Increment [ Position ] ';'</pre> |
'Add' CounterID Increment [ Position ] ';' |
</div> |
</PRE> |
|
</DIV> |
<div class="subsection"> |
|
|
<DIV class="subsection"> |
<h3><a name="sectc5221a">The <tt>Indent</tt> rule</a></h3> |
<H3><A name=sectc5221a>The <TT>Indent</TT> rule</A></H3> |
<p> |
|
The <tt>Indent</tt> rule is used to modify the value of text indentation in |
<P> |
the output files.</p> |
The <TT>Indent</TT> rule is used to modify the value of text indentation |
<p> |
in the output files.</P> |
Each time the translator creates a new line in an output file, it generates a |
<P> |
variable number of space characters at the beginning of the new line. By |
Each time the translator creates a new line in an output file, it generates |
|
a variable number of space characters at the beginning of the new line. By |
|
default, the number of these characters (the indentation) is 0. It can be |
default, the number of these characters (the indentation) is 0. It can be |
changed with the <TT>Indent</TT> rule.</P> |
changed with the <tt>Indent</tt> rule.</p> |
<P> |
<p> |
The rule begins with the <TT>Indent</TT> keyword, followed by the indentation |
The rule begins with the <tt>Indent</tt> keyword, followed by the indentation |
sign (optional) and value and a keyword <TT>Before</TT> or <TT>After</TT> |
sign (optional) and value and a keyword <tt>Before</tt> or <tt>After</tt> |
indicating that the indentation should be changed <A href="#sectc5222">before |
indicating that the indentation should be changed <a href="#sectc5222">before |
or after</A> the element's content is generated. If the position is not |
or after</a> the element's content is generated. If the position is not |
indicated, the indentation is changed before the element's content is |
indicated, the indentation is changed before the element's content is |
generated. This rule, like all translation rules, is terminated by a |
generated. This rule, like all translation rules, is terminated by a |
semicolon.</P> |
semicolon.</p> |
<P> |
<p> |
The indentation value is indicated by an integer, which is the number of |
The indentation value is indicated by an integer, which is the number of space |
space characters to be generated at the beginning of each new line. |
characters to be generated at the beginning of each new line. A sign |
A sign (<TT>+</TT> or <TT>-</TT>) can appear before the integer to indicate |
(<tt>+</tt> or <tt>-</tt>) can appear before the integer to indicate that the |
that the value is relative: the current value of indentation is incremented |
value is relative: the current value of indentation is incremented (if sign is |
(if sign is <TT>+</TT>) or decremented (if sign is <TT>-</TT>) by the |
<tt>+</tt>) or decremented (if sign is <tt>-</tt>) by the specified value.</p> |
specified value. |
<p> |
<P> |
Like the <a href="#sectc5210"><tt>Create</tt> rule</a>, the <tt>Indent</tt> |
Like the <A href="#sectc5210"><TT>Create</TT> rule</A>, the <TT>Indent</TT> |
keyword can be followed by the <tt>IN</tt> keyword and by the name of a <a |
keyword can be followed by the <TT>IN</TT> keyword and by the name of a |
href="#sectc526">variable</a>. This means that the rule must not change |
<A href="#sectc526">variable</A>. This means that the rule must not change |
|
indentation in the main output file, but in the file whose name is specified |
indentation in the main output file, but in the file whose name is specified |
by the variable (by default, indentation is changed in the main output |
by the variable (by default, indentation is changed in the main output |
file).</P> |
file).</p> |
<PRE> |
<pre> 'Indent' [ 'IN' VarID ] [ IndentSign ] |
'Indent' [ 'IN' VarID ] [ IndentSign ] |
|
IndentValue [ Position ] ';' . |
IndentValue [ Position ] ';' . |
|
|
IndentSign = '+' / '-' . |
IndentSign = '+' / '-' . |
IndentValue = NUMBER . |
IndentValue = NUMBER .</pre> |
</PRE> |
</div> |
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc5222>Rule application order</A></H3> |
|
|
|
<P> |
<h3><a name="sectc5222">Rule application order</a></h3> |
|
<p> |
The translator translates the elements which comprise the document in the |
The translator translates the elements which comprise the document in the |
order induced by the tree structure, except when the <TT>Get</TT> rule is used |
order induced by the tree structure, except when the <tt>Get</tt> rule is used |
to change the order of translation. For each element, the translator first |
to change the order of translation. For each element, the translator first |
applies the rules specified for the element's type that must be applied before |
applies the rules specified for the element's type that must be applied before |
translation of the element's content (rules ending with the <TT>Before</TT> |
translation of the element's content (rules ending with the <tt>Before</tt> |
keyword or which have no position keyword). If several rules meet these |
keyword or which have no position keyword). If several rules meet these |
criteria, the translator applies them in the order in where they appear in the |
criteria, the translator applies them in the order in where they appear in the |
translation schema.</P> |
translation schema.</p> |
<P> |
<p> |
It then applies all <A href="#sectc5223">rules for the attributes</A> which |
It then applies all <a href="#sectc5223">rules for the attributes</a> which |
the element has and which must be applied before the translation of the |
the element has and which must be applied before the translation of the |
element's content (rules ending with the <TT>Before</TT> keyword or which have |
element's content (rules ending with the <tt>Before</tt> keyword or which have |
no position keyword). For one attribute value, the translator applies the |
no position keyword). For one attribute value, the translator applies the |
rules in the order in which they are defined in the translation schema.</P> |
rules in the order in which they are defined in the translation schema.</p> |
<P> |
<p> |
The same procedure is followed with translation rules for specific |
The same procedure is followed with translation rules for specific |
presentations.</P> |
presentations.</p> |
<P> |
<p> |
Next, the element's content is translated, as long as a <TT>Remove</TT> rule |
Next, the element's content is translated, as long as a <tt>Remove</tt> rule |
does not apply.</P> |
does not apply.</p> |
<P> |
<p> |
In the next step, the translator applies rules for the specific presentation |
In the next step, the translator applies rules for the specific presentation |
of the element that are to be applied after translation of the content (rules |
of the element that are to be applied after translation of the content (rules |
which end with the <TT>After</TT> keyword). The rules for each type of |
which end with the <tt>After</tt> keyword). The rules for each type of |
presentation rule or each value are applied in the order in which the |
presentation rule or each value are applied in the order in which the |
translation appear in the schema.</P> |
translation appear in the schema.</p> |
<P> |
<p> |
Then, the same procedure is followed for translation rules for attributes of |
Then, the same procedure is followed for translation rules for attributes of |
the element.</P> |
the element.</p> |
<P> |
<p> |
Finally, the translator applies rules for the element which must be applied |
Finally, the translator applies rules for the element which must be applied |
after translation of the element's content. These rules are applied in the |
after translation of the element's content. These rules are applied in the |
order that they appear in the translation schema. When the translation of an |
order that they appear in the translation schema. When the translation of an |
element is done, the translator procedes to translate the following |
element is done, the translator procedes to translate the following |
element.</P> |
element.</p> |
<P> |
<p> |
This order can be changed with the <TT>Attributes</TT> and |
This order can be changed with the <tt>Attributes</tt> and |
<TT>Presentation</TT> options of the <A href="#sectc5210"><TT>Create</TT> |
<tt>Presentation</tt> options of the <a href="#sectc5210"><tt>Create</tt> |
rule</A>.</P> |
rule</a>.</p> |
</DIV> |
</div> |
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc5223>Translation of logical attributes</A></H3> |
|
|
|
<P> |
<h3><a name="sectc5223">Translation of logical attributes</a></h3> |
|
<p> |
After the rules for the element types, the translation schema defines rules |
After the rules for the element types, the translation schema defines rules |
for attribute values. This section begins with the <TT>ATTRIBUTES</TT> |
for attribute values. This section begins with the <tt>ATTRIBUTES</tt> |
keyword and is composed of a sequence of rule blocks each preceded by an |
keyword and is composed of a sequence of rule blocks each preceded by an |
attribute name and an optional value or value range.</P> |
attribute name and an optional value or value range.</p> |
<P> |
<p> |
If the attribute's name appears alone before the rule block, the rule are |
If the attribute's name appears alone before the rule block, the rule are |
applied to all element which have the attribute, no matter what value the |
applied to all element which have the attribute, no matter what value the |
attribute has. In this case, the attribute name is followed by a colon before |
attribute has. In this case, the attribute name is followed by a colon before |
the beginning of the rule block.</P> |
the beginning of the rule block.</p> |
<P> |
<p> |
The attribute's name can be followed by the name of an element type between |
The attribute's name can be followed by the name of an element type between |
parentheses. This says, as in presentation schemas, that the rule block which |
parentheses. This says, as in presentation schemas, that the rule block which |
follows applies not to the element which has the attribute, but to its |
follows applies not to the element which has the attribute, but to its |
descendants of the type indicated between the parentheses.</P> |
descendants of the type indicated between the parentheses.</p> |
<P> |
<p> |
If values are given after the attribute name (or after the name of the element |
If values are given after the attribute name (or after the name of the element |
type), the rules are applied only when the attribute has the indicated values. |
type), the rules are applied only when the attribute has the indicated values. |
The same attribute can appear several times, with different values and |
The same attribute can appear several times, with different values and |
different translation rules. Attribute values are indicated in the same way |
different translation rules. Attribute values are indicated in the same way |
as in <A href="#sectc528">conditions</A> and are followed by a colon before |
as in <a href="#sectc528">conditions</a> and are followed by a colon before |
the block of rules.</P> |
the block of rules.</p> |
<P> |
<p> |
The rule block associated with an attribute is either a simple rule or a |
The rule block associated with an attribute is either a simple rule or a |
sequence of rules delimited by the <TT>BEGIN</TT> and <TT>END</TT> keywords. |
sequence of rules delimited by the <tt>BEGIN</tt> and <tt>END</tt> keywords. |
Note that rules associated with attribute values cannot be conditional.</P> |
Note that rules associated with attribute values cannot be conditional.</p> |
<P> |
<p> |
Translation rules are not required for all attributes (or their values) |
Translation rules are not required for all attributes (or their values) |
defined in a structure schema. Only those attributes for which a particular |
defined in a structure schema. Only those attributes for which a particular |
action must be performed by the translator must have such rules. The rules |
action must be performed by the translator must have such rules. The rules |
that can be used are those described above, from <A |
that can be used are those described above, from <a |
href="#sectc5210"><TT>Create</TT></A> to <A |
href="#sectc5210"><tt>Create</tt></a> to <a |
href="#sectc5218"><TT>NoTranslation</TT></A>.</P> |
href="#sectc5218"><tt>NoTranslation</tt></a>.</p> |
<PRE> |
<pre> AttrSeq = TransAttr < TransAttr > . |
AttrSeq = TransAttr < TransAttr > . |
|
TransAttr = AttrID [ '(' ElemID ')' ] |
TransAttr = AttrID [ '(' ElemID ')' ] |
[ RelatAttr ] ':' RuleSeq . |
[ RelatAttr ] ':' RuleSeq . |
AttrID = NAME . |
AttrID = NAME . |
ElemID = NAME . |
ElemID = NAME .</pre> |
</PRE> |
<blockquote class="example"> |
<BLOCKQUOTE class="example"> |
<p> |
<P> |
<strong>Example:</strong></p> |
<STRONG>Example:</STRONG></P> |
<p> |
<P> |
|
The structure defined the ``Language'' attribute which can take the values |
The structure defined the ``Language'' attribute which can take the values |
``French'' and ``English''. To have the French parts of the original document |
``French'' and ``English''. To have the French parts of the original document |
removed and prevent the translation of the leaves of the English parts, the |
removed and prevent the translation of the leaves of the English parts, the |
following rules would be used:</P> |
following rules would be used:</p> |
<PRE> |
<pre>ATTRIBUTES |
ATTRIBUTES |
|
Language=French : |
Language=French : |
Remove; |
Remove; |
Language=English : |
Language=English : |
NoTranslation; |
NoTranslation;</pre> |
</PRE> |
</blockquote> |
</BLOCKQUOTE> |
</div> |
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc5224>Translation of specific presentations</A></H3> |
|
|
|
<P> |
<h3><a name="sectc5224">Translation of specific presentations</a></h3> |
|
<p> |
After the rules for attributes, the translation schema defines rules for the |
After the rules for attributes, the translation schema defines rules for the |
specific presentation. This section begins with the <TT>PRESENTATION</TT> |
specific presentation. This section begins with the <tt>PRESENTATION</tt> |
keyword and is composed of a sequence of translation rule blocks each preceded |
keyword and is composed of a sequence of translation rule blocks each preceded |
by a presentation rule name, optionally accompanied by a part which depends on |
by a presentation rule name, optionally accompanied by a part which depends on |
the particular presentation rule.</P> |
the particular presentation rule.</p> |
<P> |
<p> |
Each of these translation rule blocks is applied when the translator operates |
Each of these translation rule blocks is applied when the translator operates |
on an element which has a specific presentation rule of the type indicated at |
on an element which has a specific presentation rule of the type indicated at |
the head of the block. Depending on the type of the specific presentation |
the head of the block. Depending on the type of the specific presentation |
rule, it is possible to specify values of the presentation rule for which the |
rule, it is possible to specify values of the presentation rule for which the |
translation rule block should be applied.</P> |
translation rule block should be applied.</p> |
<P> |
<p> |
There are three categories of the presentation rules:</P> |
There are three categories of the presentation rules:</p> |
<UL> |
<ul> |
<LI>rules taking numeric values: <TT>Size</TT>, <TT>Indent</TT>, |
<li> |
<TT>LineSpacing</TT>, <TT>LineWeight</TT>, |
rules taking numeric values: <tt>Size</tt>, <tt>Indent</tt>, |
<LI>rules whose values are taken from a predefined list (i.e. whose type is an |
<tt>LineSpacing</tt>, <tt>LineWeight</tt>, |
enumeration): <TT>Adjust</TT>, <TT>Justify</TT>, <TT>Hyphenate,/TT>, |
<li> |
<TT>Style</TT>, <TT>Font</TT>, <TT>UnderLine</TT>, <TT>Thickness</TT>, |
rules whose values are taken from a predefined list (i.e. whose type is an |
<TT>LineStyle</TT>,</TT> |
enumeration): <tt>Adjust</tt>, <tt>Justify</tt>, <tt>Hyphenate,/TT>, |
<LI>rules whose value is a name: <TT>FillPattern</TT>, <TT>Background</TT>, |
<tt>Style</tt>, <tt>Font</tt>, <tt>UnderLine</tt>, <tt>Thickness</tt>, |
<TT>Foreground</TT>. |
<tt>LineStyle</tt>,</tt> |
</UL> |
<li> |
<P> |
rules whose value is a name: <tt>FillPattern</tt>, <tt>Background</tt>, |
|
<tt>Foreground</tt>. |
|
</ul> |
|
<p> |
For presentation rules of the first category, the values which provoke |
For presentation rules of the first category, the values which provoke |
application of the translation rules are indicated in the same manner as for |
application of the translation rules are indicated in the same manner as for |
<A href="#relattr">numeric attributes</A>. This can be either a unique value |
<a href="#relattr">numeric attributes</a>. This can be either a unique value |
or range of values. For a unique value, the value (an integer) is simply |
or range of values. For a unique value, the value (an integer) is simply |
preceded by an equals sign. Value ranges can be specified in one of three |
preceded by an equals sign. Value ranges can be specified in one of three |
ways:</P> |
ways:</p> |
<UL> |
<ul> |
<LI>all values less than a given value (this value is preceded by a ``less |
<li> |
than'' sign '<TT><</TT>'), |
all values less than a given value (this value is preceded by a ``less than'' |
<LI>all values greater than a given value (this value is preceded by a` |
sign '<tt><</tt>'), |
`greater than'' sign '<TT>></TT>'), |
<li> |
<LI>all values falling in an interval, bounds included. The range of values |
all values greater than a given value (this value is preceded by a` `greater |
is then specified <TT>IN [</TT>Minimum<TT>..</TT>Maximum<TT>]</TT>, where |
than'' sign '<tt>></tt>'), |
Minimum and Maximum are integers. |
<li> |
</UL> |
all values falling in an interval, bounds included. The range of values is |
<P> |
then specified <tt>IN [</tt>Minimum<tt>..</tt>Maximum<tt>]</tt>, where Minimum |
|
and Maximum are integers. |
|
</ul> |
|
<p> |
All numeric values can be negative, in which case the integer is preceded by a |
All numeric values can be negative, in which case the integer is preceded by a |
minus sign. All values must be given in typographers points.</P> |
minus sign. All values must be given in typographers points.</p> |
<P> |
<p> |
For presentation rules whose values are taken from a predefined list, the |
For presentation rules whose values are taken from a predefined list, the |
value which provokes application of the translation rules is simply indicated |
value which provokes application of the translation rules is simply indicated |
by the equals sign followed by the name of the value.</P> |
by the equals sign followed by the name of the value.</p> |
<P> |
<p> |
For presentation rules whose values are names, the value which provokes the |
For presentation rules whose values are names, the value which provokes the |
application of translation rules is simply indicated by the equals sign |
application of translation rules is simply indicated by the equals sign |
followed by the name of the value. The names of the fill patterns (the |
followed by the name of the value. The names of the fill patterns (the |
<TT>FillPattern</TT> rule) and of the colors (the <TT>Foreground</TT> and |
<tt>FillPattern</tt> rule) and of the colors (the <tt>Foreground</tt> and |
<TT>Background</TT> rules) used in Thot are the same as in the P language.</P> |
<tt>Background</tt> rules) used in Thot are the same as in the P language.</p> |
<PRE> |
<pre> PresSeq = PresTrans < PresTrans > . |
PresSeq = PresTrans < PresTrans > . |
|
PresTrans = PresRule ':' RuleSeq . |
PresTrans = PresRule ':' RuleSeq . |
PresRule = 'Size' [ PresRelation ] / |
PresRule = 'Size' [ PresRelation ] / |
'Indent' [ PresRelation ] / |
'Indent' [ PresRelation ] / |
Line 8093 followed by the name of the value. The
|
Line 8024 followed by the name of the value. The
|
PresIntervalMin= NUMBER . |
PresIntervalMin= NUMBER . |
PresIntervalMax= NUMBER . |
PresIntervalMax= NUMBER . |
PresValue = [ '-' ] PresVal . |
PresValue = [ '-' ] PresVal . |
PresVal = NUMBER . |
PresVal = NUMBER .</pre> |
</PRE> |
<p> |
<P> |
The <a name="prestransl">translation rules associated with specific |
The <A name="prestransl">translation rules associated with specific |
presentation rules</a> can use the value of the specific presentation rule |
presentation rules</A> can use the value of the specific presentation rule |
|
that causes them to be applied. This behavior is designated by the keyword |
that causes them to be applied. This behavior is designated by the keyword |
<TT>Value</TT>. For numerically-valued presentation rules, the numeric value |
<tt>Value</tt>. For numerically-valued presentation rules, the numeric value |
is produced. For other presentation rules, the name of the value is |
is produced. For other presentation rules, the name of the value is |
produced.</P> |
produced.</p> |
<P> |
<p> |
It should be noted that modifications to the layout of the document's elements |
It should be noted that modifications to the layout of the document's elements |
that are made using the combination of the control key and a mouse button will |
that are made using the combination of the control key and a mouse button will |
have no effect on the translation of the document.</P> |
have no effect on the translation of the document.</p> |
<BLOCKQUOTE class="example"> |
<blockquote class="example"> |
<P> |
<p> |
<STRONG>Example:</STRONG></P> |
<strong>Example:</strong></p> |
<P> |
<p> |
Suppose that it is desirable to use the same font sizes as in the specific |
Suppose that it is desirable to use the same font sizes as in the specific |
presentation, but the font size must be between 10 and 18 typographer's points. |
presentation, but the font size must be between 10 and 18 typographer's |
If font size is set in the translated document by the string |
points. If font size is set in the translated document by the string |
<TT>pointsize=n</TT> where <TT>n</TT> is the font size in typographer's points |
<tt>pointsize=n</tt> where <tt>n</tt> is the font size in typographer's points |
then the following rules will suffice:</P> |
then the following rules will suffice:</p> |
<PRE> |
<pre>PRESENTATION |
PRESENTATION |
|
Size < 10 : |
Size < 10 : |
Create 'pointsize=10'; |
Create 'pointsize=10'; |
Size in [10..18] : |
Size in [10..18] : |
Line 8125 PRESENTATION
|
Line 8054 PRESENTATION
|
Create Value; |
Create Value; |
END; |
END; |
Size > 18 : |
Size > 18 : |
Create 'pointsize=18'; |
Create 'pointsize=18';</pre> |
</PRE> |
</blockquote> |
</BLOCKQUOTE> |
</div> |
</DIV> |
|
|
|
<DIV class="subsection"> |
<div class="subsection"> |
<H3><A name=sectc5225>Recoding of characters, symbols and graphics</A></H3> |
|
|
|
<P> |
<h3><a name="sectc5225">Recoding of characters, symbols and graphics</a></h3> |
|
<p> |
The coding of characters, graphical elements and symbols as defined in Thot |
The coding of characters, graphical elements and symbols as defined in Thot |
does not necessarily correspond to what is required by an application to which |
does not necessarily correspond to what is required by an application to which |
a Thot document must be exported. Because of this the translator can recode |
a Thot document must be exported. Because of this the translator can recode |
these terminal elements of the documents structure. The last sections of a |
these terminal elements of the documents structure. The last sections of a |
translation schema are intended for this purpose, each specifying the recoding |
translation schema are intended for this purpose, each specifying the recoding |
rules for one type of terminal element.</P> |
rules for one type of terminal element.</p> |
<P> |
<p> |
The recoding rules for character strings are grouped by alphabets. There is a |
The recoding rules for character strings are grouped by alphabets. There is a |
group of rules for each alphabet of the Thot document that must be translated. |
group of rules for each alphabet of the Thot document that must be translated. |
Each such group of rules begins with the <TT>TEXTTRANSLATE</TT> keyword, |
Each such group of rules begins with the <tt>TEXTTRANSLATE</tt> keyword, |
followed by the specification of the alphabet to translate and the recoding |
followed by the specification of the alphabet to translate and the recoding |
rules, between the <TT>BEGIN</TT> and <TT>END</TT> keywords unless there is |
rules, between the <tt>BEGIN</tt> and <tt>END</tt> keywords unless there is |
only one recoding rule for the alphabet. The specification of the alphabet is |
only one recoding rule for the alphabet. The specification of the alphabet is |
not required: by default it is assumed to the Latin alphabet (the ISO Latin-1 |
not required: by default it is assumed to the Latin alphabet (the ISO Latin-1 |
character set).</P> |
character set).</p> |
<P> |
<p> |
Each recoding rule is formed by a source string between apostrophes and a |
Each recoding rule is formed by a source string between apostrophes and a |
target string, also between apostrophes, the two strings being separated by |
target string, also between apostrophes, the two strings being separated by |
the arrow symbol (<TT>-></TT>), formed by the ``minus'' and ``greater than'' |
the arrow symbol (<tt>-></tt>), formed by the ``minus'' and ``greater than'' |
characters. The rule is terminated by a semi-colon.</P> |
characters. The rule is terminated by a semi-colon.</p> |
<PRE> |
<pre> TextTransSeq = [ Alphabet ] TransSeq . |
TextTransSeq = [ Alphabet ] TransSeq . |
|
Alphabet = NAME . |
Alphabet = NAME . |
TransSeq ='BEGIN' < Translation > 'END' ';' / |
TransSeq ='BEGIN' < Translation > 'END' ';' / |
Translation . |
Translation . |
Translation = Source [ '->' Target ] ';' . |
Translation = Source [ '->' Target ] ';' . |
Source = STRING . |
Source = STRING . |
Target = STRING . |
Target = STRING .</pre> |
</PRE> |
<p> |
<P> |
|
One such rule signifies that when the source string appears in a text leaf of |
One such rule signifies that when the source string appears in a text leaf of |
the document being translated, the translator must replace it, in the |
the document being translated, the translator must replace it, in the |
translated document, with the target string. The source string and the target |
translated document, with the target string. The source string and the target |
string can have different lengths and the target string can be empty. In this |
string can have different lengths and the target string can be empty. In this |
last case, the translator simply suppresses every occurrence of the source |
last case, the translator simply suppresses every occurrence of the source |
string in the translated document.</P> |
string in the translated document.</p> |
<P> |
<p> |
For a given alphabet, the order of the rules is not important and has no |
For a given alphabet, the order of the rules is not important and has no |
significance because the T language compiler reorders the rules in ways that |
significance because the T language compiler reorders the rules in ways that |
speed up the translator's work. The total number of recoding rules is limited |
speed up the translator's work. The total number of recoding rules is limited |
by the compiler as is the maximum length of the source and target strings.</P> |
by the compiler as is the maximum length of the source and target strings.</p> |
<P> |
<p> |
The recoding rules for symbols and graphical elements are written in the same |
The recoding rules for symbols and graphical elements are written in the same |
manner as the recoding rules for character strings. They are preceded, |
manner as the recoding rules for character strings. They are preceded, |
respectively, by the <TT>SYMBTRANSLATE</TT> and <TT>GRAPHTRANSLATE</TT> and so |
respectively, by the <tt>SYMBTRANSLATE</tt> and <tt>GRAPHTRANSLATE</tt> and so |
not require a specification of the alphabet. Their source string is limited to |
not require a specification of the alphabet. Their source string is limited to |
one character, since, in Thot, each symbol and each graphical element is |
one character, since, in Thot, each symbol and each graphical element is |
represented by a single character. The symbol and graphical element codes are |
represented by a single character. The symbol and graphical element codes are |
defined along with the <A href="#sect7">non-standard character |
defined along with the <a href="#sect7">non-standard character codes</a>.</p> |
codes</A>.</P> |
<blockquote class="example"> |
<BLOCKQUOTE class="example"> |
<p> |
<P> |
<strong>Example:</strong></p> |
<STRONG>Example:</STRONG></P> |
<p> |
<P> |
In a translation schema producing documents destined for use with the |
In a translation schema producing documents destined for use with |
L<sup>A</sup>T<sub><big>E</big></sub>X formatter, the Latin |
the L<SUP>A</SUP>T<SUB><BIG>E</BIG></SUB>X formatter, the Latin |
|
characters``é'' (octal code 351 in Thot) and ``è'' (octal code |
characters``é'' (octal code 351 in Thot) and ``è'' (octal code |
350 in Thot) must be converted to their representation |
350 in Thot) must be converted to their representation in |
in L<SUP>A</SUP>T<SUB><BIG>E</BIG></SUB>X:</P> |
L<sup>A</sup>T<sub><big>E</big></sub>X:</p> |
<PRE> |
<pre>TEXTTRANSLATE Latin |
TEXTTRANSLATE Latin |
|
BEGIN |
BEGIN |
'\350' -> '\`{e}'; { e grave } |
'\350' -> '\`{e}'; { e grave } |
'\351' -> '\''{e}'; { e acute } |
'\351' -> '\''{e}'; { e acute } |
END; |
END;</pre> |
</PRE> |
</blockquote> |
</BLOCKQUOTE> |
</div> |
</DIV> |
</div> |
</DIV> |
<hr> |
<HR> |
</div> |
</DIV> |
|
|
|
<DIV class="chapter"> |
<div class="chapter"> |
<H1><A name=sect6>Language grammars</A></H1> |
|
|
|
<P> |
<h1><a name="sect6">Language grammars</a></h1> |
|
<p> |
This chapter gives the complete grammars of the languages of Thot. The |
This chapter gives the complete grammars of the languages of Thot. The |
grammars were presented and described in the preceding chapters, which also |
grammars were presented and described in the preceding chapters, which also |
specify the semantics of the languages. This section gives only the |
specify the semantics of the languages. This section gives only the |
syntax.</P> |
syntax.</p> |
|
|
<DIV class="section"> |
<div class="section"> |
<H2><A name=sectb61>The M meta-language</A></H2> |
|
|
|
<P> |
<h2><a name="sectb61">The M meta-language</a></h2> |
|
<p> |
The language grammars are all expressed in the same formalism, the M |
The language grammars are all expressed in the same formalism, the M |
meta-language, which is defined in this section.</P> |
meta-language, which is defined in this section.</p> |
<PRE> |
<pre>{ Any text between braces is a comment. } |
{ Any text between braces is a comment. } |
|
Grammar = Rule < Rule > 'END' . |
Grammar = Rule < Rule > 'END' . |
{ The < and > signs indicate zero } |
{ The < and > signs indicate zero } |
{ or more repetitions. } |
{ or more repetitions. } |
Line 8244 Ident = NAME .
|
Line 8166 Ident = NAME .
|
{ Identifier, sequence of characters |
{ Identifier, sequence of characters |
KeyWord = STRING . |
KeyWord = STRING . |
{ Character string delimited by apostrophes } |
{ Character string delimited by apostrophes } |
END |
END</pre> |
</PRE> |
</div> |
</DIV> |
|
|
|
<DIV class="section"> |
<div class="section"> |
<H2><A name=sectb62>The S language</A></H2> |
|
|
|
<P> |
<h2><a name="sectb62">The S language</a></h2> |
|
<p> |
The S language is used to write structure schemas, which contain the generic |
The S language is used to write structure schemas, which contain the generic |
logical structures of document and object classes. It is described here in |
logical structures of document and object classes. It is described here in |
the M meta-language.</P> |
the M meta-language.</p> |
<PRE> |
<pre>StructSchema = 'STRUCTURE' [ 'EXTENSION' ] ElemID ';' |
StructSchema = 'STRUCTURE' [ 'EXTENSION' ] ElemID ';' |
|
'DEFPRES' PresID ';' |
'DEFPRES' PresID ';' |
[ 'ATTR' AttrSeq ] |
[ 'ATTR' AttrSeq ] |
[ 'PARAM' RulesSeq ] |
[ 'PARAM' RulesSeq ] |
Line 8344 ExcValSeq = ExcValue < ',' ExcVa
|
Line 8264 ExcValSeq = ExcValue < ',' ExcVa
|
ExcValue = 'NoCut' / 'NoCreate' / |
ExcValue = 'NoCut' / 'NoCreate' / |
'NoHMove' / 'NoVMove' / 'NoMove' / |
'NoHMove' / 'NoVMove' / 'NoMove' / |
'NoHResize' / 'NoVResize' / 'NoResize' / |
'NoHResize' / 'NoVResize' / 'NoResize' / |
'MoveResize' / |
'MoveResize' / |
'NewWidth' / 'NewHeight' / |
'NewWidth' / 'NewHeight' / |
'NewHPos' / 'NewVPos' / |
'NewHPos' / 'NewVPos' / |
'Invisible' / 'NoSelect' / |
'Invisible' / 'NoSelect' / |
Line 8361 ExtensRule = RootOrElem [ LocAttrSeq
|
Line 8281 ExtensRule = RootOrElem [ LocAttrSeq
|
[ 'WITH' FixedAttrSeq ] . |
[ 'WITH' FixedAttrSeq ] . |
RootOrElem = 'Root' / ElemID . |
RootOrElem = 'Root' / ElemID . |
|
|
END |
END</pre> |
</PRE> |
</div> |
</DIV> |
|
|
|
<DIV class="section"> |
<div class="section"> |
<H2><A name=sectb63>The P language</A></H2> |
|
|
|
<P> |
<h2><a name="sectb63">The P language</a></h2> |
|
<p> |
The P language is used to write presentation schemas, which define the |
The P language is used to write presentation schemas, which define the |
graphical presentation rules to be applied to different classes of documents |
graphical presentation rules to be applied to different classes of documents |
and objects. It is described here in the M meta-language.</P> |
and objects. It is described here in the M meta-language.</p> |
<PRE> |
<pre>PresSchema = 'PRESENTATION' ElemID ';' |
PresSchema = 'PRESENTATION' ElemID ';' |
|
[ 'VIEWS' ViewSeq ] |
[ 'VIEWS' ViewSeq ] |
[ 'PRINT' PrintViewSeq ] |
[ 'PRINT' PrintViewSeq ] |
[ 'COUNTERS' CounterSeq ] |
[ 'COUNTERS' CounterSeq ] |
Line 8547 PresFunc = Creation '(' BoxID ')'
|
Line 8465 PresFunc = Creation '(' BoxID ')'
|
'Page' '(' BoxID ')' / |
'Page' '(' BoxID ')' / |
'Copy' '(' BoxTypeToCopy ')' / |
'Copy' '(' BoxTypeToCopy ')' / |
'ShowBox' / |
'ShowBox' / |
'BackgroundPicture' ':' FileName / |
'BackgroundPicture' ':' FileName / |
'PictureMode' ':' PictMode . |
'PictureMode' ':' PictMode . |
|
|
BoxTypeToCopy = BoxID [ ExtStruct ] / |
BoxTypeToCopy = BoxID [ ExtStruct ] / |
ElemID [ ExtStruct ] . |
ElemID [ ExtStruct ] . |
Line 8670 Transmit = TypeOrCounter 'To' Ext
|
Line 8588 Transmit = TypeOrCounter 'To' Ext
|
TypeOrCounter = CounterID / ElemID . |
TypeOrCounter = CounterID / ElemID . |
ExternAttr = NAME . |
ExternAttr = NAME . |
|
|
END |
END</pre> |
</PRE> |
</div> |
</DIV> |
|
|
|
<DIV class="section"> |
<div class="section"> |
<H2><A name=sectb64>The T language</A></H2> |
|
|
|
<PRE> |
<h2><a name="sectb64">The T language</a></h2> |
TransSchema = 'TRANSLATION' ElemID ';' |
<pre>TransSchema = 'TRANSLATION' ElemID ';' |
[ 'LINELENGTH' LineLength ';' ] |
[ 'LINELENGTH' LineLength ';' ] |
[ 'LINEEND' CHARACTER ';' ] |
[ 'LINEEND' CHARACTER ';' ] |
[ 'LINEENDINSERT' STRING ';' ] |
[ 'LINEENDINSERT' STRING ';' ] |
Line 8754 CondElem = 'FirstRef' / 'LastRef' /
|
Line 8670 CondElem = 'FirstRef' / 'LastRef' /
|
'ComputedPage' / 'StartPage' / |
'ComputedPage' / 'StartPage' / |
'UserPage' / 'ReminderPage' / |
'UserPage' / 'ReminderPage' / |
'Empty' / |
'Empty' / |
ElemID / |
ElemID / |
'FirstAttr' / 'LastAttr' . |
'FirstAttr' / 'LastAttr' . |
CondAscend = [ Ascend ] CondOnAscend . |
CondAscend = [ Ascend ] CondOnAscend . |
Ascend = '*' / 'Parent' / 'Ancestor' LevelOrType . |
Ascend = '*' / 'Parent' / 'Ancestor' LevelOrType . |
Line 8895 TransSeq = 'BEGIN' < Translation
|
Line 8811 TransSeq = 'BEGIN' < Translation
|
Translation . |
Translation . |
Translation = Source [ '->' Target ] ';' . |
Translation = Source [ '->' Target ] ';' . |
Source = STRING . |
Source = STRING . |
Target = STRING . |
Target = STRING .</pre> |
</PRE> |
</div> |
</DIV> |
<hr> |
<HR> |
</div> |
</DIV> |
|
|
|
<DIV class="chapter"> |
<div class="chapter"> |
<H1><A name=sect7>Character coding</A></H1> |
|
|
|
|
<h1><a name="sect7">Character coding</a></h1> |
|
|
<DIV class="section"> |
<div class="section"> |
<H2><A name=sectb71>Characters</A></H2> |
|
|
|
<P> |
<h2><a name="sectb71">Characters</a></h2> |
|
<p> |
The characters of the Latin alphabet follow the encoding defined in the ISO |
The characters of the Latin alphabet follow the encoding defined in the ISO |
8859-1 (ISO Latin-1) standard. The characters of the Greek alphabet follow |
8859-1 (ISO Latin-1) standard. The characters of the Greek alphabet follow |
the encoding defined by Adobe for its Symbol font (Adobe FontSpecific).</P> |
the encoding defined by Adobe for its Symbol font (Adobe FontSpecific).</p> |
<P> |
<p> |
Characters whose octal code is greater than 0200 are written in the form of |
Characters whose octal code is greater than 0200 are written in the form of |
their octal code preceded by a backslash character (``\''). For example, the |
their octal code preceded by a backslash character (``\''). For example, the |
French word 'Résumé' is written <TT>R\351sum\351</TT>.</P> |
French word 'Résumé' is written <tt>R\351sum\351</tt>.</p> |
<P> |
<p> |
To the ISO 8859-1 encoding four characters with the following codes have been |
To the ISO 8859-1 encoding four characters with the following codes have been |
added:<BR><TT>212</TT>: line break<BR><TT>240</TT>: sticky |
added:<br> |
space<BR><TT>201</TT>: thin space<BR><TT>202</TT>: en space</P> |
<tt>212</tt>: line break<br> |
<P> |
<tt>240</tt>: sticky space<br> |
The <TT>212</TT> character is a ``line break'' character which forces a line |
<tt>201</tt>: thin space<br> |
break. The <TT>240</TT> character is a ``sticky space'', which cannot be |
<tt>202</tt>: en space</p> |
replaced by a line break.</P> |
<p> |
</DIV> |
The <tt>212</tt> character is a ``line break'' character which forces a line |
|
break. The <tt>240</tt> character is a ``sticky space'', which cannot be |
|
replaced by a line break.</p> |
|
</div> |
|
|
<DIV class="section"> |
<div class="section"> |
<H2><A name=sectb72>Symbols</A></H2> |
|
|
|
<P> |
<h2><a name="sectb72">Symbols</a></h2> |
|
<p> |
The table below gives the codes for the symbols of Thot. Symbols can be used |
The table below gives the codes for the symbols of Thot. Symbols can be used |
in presentation schemas constants and in transcoding rules of translation |
in presentation schemas constants and in transcoding rules of translation |
schemas. Each symbol is represented by a single character.</P> |
schemas. Each symbol is represented by a single character.</p> |
<UL> |
<ul> |
<LI><TT>r</TT>: a radical |
<li> |
<LI><TT>i</TT>: a simple integral |
<tt>r</tt>: a radical |
<LI><TT>c</TT>: a curvilinear integral |
<li> |
<LI><TT>d</TT>: a double integral |
<tt>i</tt>: a simple integral |
<LI><TT>t</TT>: a triple integral |
<li> |
<LI><TT>S</TT>: the summation symbol |
<tt>c</tt>: a curvilinear integral |
<LI><TT>P</TT>: the product symbol |
<li> |
<LI><TT>U</TT>: the union symbol |
<tt>d</tt>: a double integral |
<LI><TT>I</TT>: the intersection symbol |
<li> |
<LI><TT>></TT>: a right arrow |
<tt>t</tt>: a triple integral |
<LI><TT><</TT>: a left arrow |
<li> |
<LI><TT>^</TT>: an up arrow |
<tt>S</tt>: the summation symbol |
<LI><TT>V</TT>: a down arrow |
<li> |
<LI><TT>(</TT>: an opening parenthesis |
<tt>P</tt>: the product symbol |
<LI><TT>)</TT>: a closing parenthesis |
<li> |
<LI><TT>{</TT>: an opening brace |
<tt>U</tt>: the union symbol |
<LI><TT>}</TT>: a closing brace |
<li> |
<LI><TT>[</TT>: an opening bracket |
<tt>I</tt>: the intersection symbol |
<LI><TT>]</TT>: a closing bracket |
<li> |
</UL> |
<tt>></tt>: a right arrow |
</DIV> |
<li> |
|
<tt><</tt>: a left arrow |
|
<li> |
|
<tt>^</tt>: an up arrow |
|
<li> |
|
<tt>V</tt>: a down arrow |
|
<li> |
|
<tt>(</tt>: an opening parenthesis |
|
<li> |
|
<tt>)</tt>: a closing parenthesis |
|
<li> |
|
<tt>{</tt>: an opening brace |
|
<li> |
|
<tt>}</tt>: a closing brace |
|
<li> |
|
<tt>[</tt>: an opening bracket |
|
<li> |
|
<tt>]</tt>: a closing bracket |
|
</ul> |
|
</div> |
|
|
<DIV class="section"> |
<div class="section"> |
<H2><A name=sectb73>Graphical elements</A></H2> |
|
|
|
<P> |
<h2><a name="sectb73">Graphical elements</a></h2> |
|
<p> |
The table below gives the codes for the graphical elements of Thot. These |
The table below gives the codes for the graphical elements of Thot. These |
elements can be used in presentation schemas constants and in transcoding |
elements can be used in presentation schemas constants and in transcoding |
rules of translation schemas. Each graphical element is represented by a |
rules of translation schemas. Each graphical element is represented by a |
single character.</P> |
single character.</p> |
<UL> |
<ul> |
<LI><TT>c</TT>: an ellipse inscribed in the box |
<li> |
<LI><TT>R</TT>: a rectangle which is the shape of the box |
a: a circle |
<LI><TT>C</TT>: a rectangle with rounded corners |
<li><p> |
<LI><TT>t</TT>: a horizontal line along the upper side of the box |
<tt>A</tt>: an open curve with an arrow head at the end</p> |
<LI><TT>h</TT>: a horizontal line as wide as the box and placed in its middle |
<li> |
<LI><TT>b</TT>: a horizontal line along the lower side of the box |
<tt>b</tt>: a horizontal line along the lower side of the box |
<LI><TT>></TT>: a right arrow as long as the box's width and in its middle |
<li> |
<LI><TT>></TT>: a left arrow as long as the box's width and in its middle |
<tt>B</tt>: an open curve |
<LI><TT>l</TT>: a vertical line on the left side of the box |
<li> |
<LI><TT>v</TT>: a vertical line as tall as the box and placed in its middle |
<tt>c</tt>: an ellipse inscribed in the box |
<LI><TT>r</TT>: a vertical line on the right side of the box |
<li> |
<LI><TT>^</TT>: an up arrow as tall as the box and in its middle |
<tt>C</tt>: a rectangle with rounded corners |
<LI><TT>V</TT>: a down arrow as tall as the box and in its middle |
<li> |
<LI><TT>/</TT>: The southwest/northeast diagonal of the box |
<tt>D</tt>: an open curve with two arrow heads |
<LI><TT>\</TT>: the northwest/southeast diagonal of the box |
<li> |
<LI><TT>O</TT>: The northwest/southeast diagonal of the box with an arrowhead |
<tt>e</tt>: The northwest/southeast diagonal of the box with an arrowhead at |
at the top |
the bottom |
<LI><TT>e</TT>: The northwest/southeast diagonal of the box with an arrowhead |
<li> |
at the bottom |
<tt>E</tt>: The southwest/northeast diagonal of the box with an arrowhead at |
<LI><TT>E</TT>: The southwest/northeast diagonal of the box with an arrowhead |
the top |
at the top |
<li> |
<LI><TT>o</TT>: The southwest/northeast diagonal of the box with an arrowhead |
<tt>F</tt>: an open curve with an arrow head at start |
at the bottom |
<li> |
<LI><TT>space</TT>: a transparent element |
<tt>h</tt>: a horizontal line as wide as the box and placed in its middle |
<LI><TT>P</TT>: a rectangle with round corners and a horizontal bar at the top |
<li> |
<LI><TT>Q</TT>: an ellipse with a horizontal bar at the top |
<tt>l</tt>: a vertical line on the left side of the box |
<LI><TT>L</TT>: a lozenge |
<li> |
<LI><TT>W</TT>: the upper right corner |
<tt>L</tt>: a lozenge |
<LI><TT>X</TT>: the lower right corner |
<li> |
<LI><TT>Y</TT>: the lower left corner |
<tt>M</tt>: an open broken line with two arrow heads |
<LI><TT>Z</TT>: the upper left corner |
<li> |
<LI><TT>p</TT>: a polygon |
<tt>N</tt>: an open broken line with an arrow head at start |
<LI><TT>S</TT>: an open broken line |
<li> |
<LI><TT>N</TT>: an open broken line with an arrow head at start |
<tt>o</tt>: The southwest/northeast diagonal of the box with an arrowhead at |
<LI><TT>U</TT>: an open broken line with an arrow head at the end |
the bottom |
<LI><TT>M</TT>: an open broken line with two arrow heads |
<li> |
<LI><TT>s</TT>: a closed curve |
<tt>O</tt>: The northwest/southeast diagonal of the box with an arrowhead at |
<LI><TT>B</TT>: an open curve |
the top |
<LI><TT>F</TT>: an open curve with an arrow head at start |
<li> |
<LI><TT>A</TT>: an open curve with an arrow head at the end |
<tt>p</tt>: a polygon |
<LI><TT>D</TT>: an open curve with two arrow heads |
<li> |
</UL> |
<tt>P</tt>: a rectangle with round corners and a horizontal bar at the top |
<HR> |
<li> |
</DIV> |
<tt>Q</tt>: an ellipse with a horizontal bar at the top |
</DIV> |
<li> |
</BODY> |
<tt>r</tt>: a vertical line on the right side of the box |
</HTML> |
<li> |
|
<tt>R</tt>: a rectangle which is the shape of the box |
|
<li> |
|
<tt>s</tt>: a closed curve |
|
<li> |
|
<tt>S</tt>: an open broken line |
|
<li> |
|
<tt>t</tt>: a horizontal line along the upper side of the box |
|
<li> |
|
<tt>U</tt>: an open broken line with an arrow head at the end |
|
<li> |
|
<tt>v</tt>: a vertical line as tall as the box and placed in its middle |
|
<li> |
|
<tt>V</tt>: a down arrow as tall as the box and in its middle |
|
<li> |
|
w: a segment (2 points) |
|
<li> |
|
<tt>W</tt>: the upper right corner |
|
<li> |
|
x: a segment (2 points) with an arrow head at the end |
|
<li> |
|
<tt>X</tt>: the lower right corner |
|
<li> |
|
y: a segment (2 points) with an arrow head at the end |
|
<li> |
|
<tt>Y</tt>: the lower left corner |
|
<li> |
|
z: a segment (2 points) with an arrow head at the end |
|
<li> |
|
<tt>Z</tt>: the upper left corner |
|
<li> |
|
<tt>space</tt>: a transparent element |
|
<li> |
|
<tt>^</tt>: an up arrow as tall as the box and in its middle |
|
<li> |
|
<tt>></tt>: a right arrow as long as the box's width and in its middle |
|
<li> |
|
<tt>></tt>: a left arrow as long as the box's width and in its middle |
|
<li> |
|
<tt>/</tt>: The southwest/northeast diagonal of the box |
|
<li> |
|
<tt>\</tt>: the northwest/southeast diagonal of the box |
|
</ul> |
|
<hr> |
|
</div> |
|
</div> |
|
</body> |
|
</html> |