@make[manual] @device[x2700] @style{indent 0} @counter[WizardsNote, Within Section, titleform "@begin[hd3]Wizard's Note @parm[numbered] @parm[title]@end[hd3]", numbered [@#@:.@1], referenced [@#@:.@1], incrementedby use] @equate[mylabel=comment] @define[bt=r, facecode t, overstruck 1] @define[kosmos10p=r, facecode r] @define[kosmos8p=r, facecode c] @define[kosmos10bp=r, facecode b] @define[titan12p=r, facecode t] @define[greek10=r, facecode g] @define[maths10=r, facecode m] @define[kosmos12bp=r, facecode k] @define[kosmos14p=r, facecode l] @define[kosmos10ip=r, facecode i] @define[compmodroman11=r, facecode d] @define[compmoditalic11=r, facecode e] @comment{@define[GothicBold12=r, facecode a] @define[GothicBoldPS=r, facecode b] @define[GothicBold10=r, facecode d] @define[Courier10=r, facecode e] @define[Courier12=r, facecode f] @define[GreekPS=r, facecode g] @define[CourierPS=r, facecode h] @define[GothicItalicPS=r, facecode i] @define[Micro10=r, facecode j] @define[Micro15=r, facecode k] @define[Orator12=r, facecode l] @define[MathsPS=r, facecode m] @define[Orator10=r, facecode n] @define[OratorPS=r, facecode o] @define[GothicItalic12=r, facecode p] @define[Data10=r, facecode q] @define[GothicPS=r, facecode r] @define[Micro12=r, facecode s] @define[Gothic10=r, facecode t] @define[Gothic12=r, facecode u] @define[GothicItalic10=r, facecode v] @define[Greek12=r, facecode w] @define[Greek10=r, facecode x] @define[Maths12=r, facecode y] @define[Maths10=r, facecode z]} @equate[remark=comment] @comment[ This sets up a second form of comment which can be output for 'wizards' by changing the 'comment' in the 'equate' instruction to 'text' ] @modify[description, afterentry "@tabclear"] @comment<@modify[p, facecode b, underline off]> @modify[t, facecode t] @modify{enumerate, leftmargin +4, rightmargin 0, indent -4, spread 0} @modify{itemize, leftmargin +4, rightmargin 0, indent -4, spread 0} @comment<@modify[verbatim, facecode t]> @modify{Verse, above 1, below 1, facecode t, leftmargin +1, rightmargin 0, blanklines kept, indent -1} @define[eVerse=Verse, below 0] @set{page=0} @pageheading{left "@value", even} @pageheading{right "SCRIBE Reference Manual", odd} @pagefooting[right "67-@value", odd] @pagefooting[left "67-@value", even] @comment(@pagefooting{centre "DRAFT @value "}) @flushright[@value @value] @begin[centre] @b[A SCRIBE REFERENCE MANUAL] @end[centre] @begin[format] @tabclear @tabset[3.3inches, 5.7inches, 6.24inches] @=R.J.Hare, C.D.McArthur, A.McKendrick@\@=Advisory Service@\@=D @end[format] @blankspace[1inch] @begin[centre] @b @end[centre] This document describes the facilities available in version @value(scribeversion) of the local implementation of the SCRIBE document preparation program. It is effectively a continuation of, and should be read in conjunction with the locally produced SCRIBE primer @cite[ERCC84b] which serves to introduce the user to the basic philosophy and mode of operation of SCRIBE and which describes briefly the use of SCRIBE at a simple level. The local implementation of SCRIBE described here is available on both EMAS and BUSH machines, and is designed to aid the preparation and production of various types of document. Its command structure is compatible with that of the similarly named documentation suite marketed by Unilogic (available locally on the SERC DECsystem-10, and ERCC @comment[and Computer Science ]VAX/VMS machines). A significant sub-set of Unilogic SCRIBE facilities has been implemented, and demanding users will eventually find that the manual for Unilogic SCRIBE @cite[UNILOGIC84] will be required reading. @begin[centre] Document prepared using SCRIBE and printed on a Xerox X2700 laser printer Diagrams prepared using NOTICE. @end[centre] @begin[centre] @b @end[centre] Document Formatting, SCRIBE, Text Formatting @newpage @begin[text] @section(Introduction) @mylabel[Introduction] This document describes the facilities available within the SCRIBE text processing system available on ICL 2900 series machines at ERCC (EMAS and BUSH). The document is effectively a continuation of the locally produced SCRIBE 'primer' @cite[ERCC84b], and users should be familiar with the contents of that document before proceeding to read this reference manual. In particular, the primer contains a brief description of SCRIBE, its underlying design philosophy, the adoption of its command format by ERCC and the instructions for running SCRIBE on both the EMAS and BUSH machines. Users wishing to find out more about SCRIBE than is contained here or in the primer should consult in the first place the Unilogic manual @cite[UNILOGIC84], and the review article @cite[FURUTA82]. Be warned however that not all of Unilogic SCRIBE's functionality has been implemented locally, and facilities described in the Unilogic manual may not be available in the local implementation. This manual is to be regarded as the definitive guide to what is available on the EMAS and BUSH implementations of SCRIBE. The article @cite[BROWNING84] is a brief overview of some of the problems associated with computerised document preparation, and a statement of 'what is required' from document preparation software, though it is directed more towards the micro/mini computer solution, and SCRIBE is not discussed. @section{SCRIBE's Language and Basic Terminology} @label[ScribeTerminology] In order that no confusion arise, the convention adopted in this manual is that EMAS commands are referred to as 'commands', and SCRIBE commands are referred to as 'instructions'. SCRIBE instructions are the formatting directives entered into the input (manuscript) file and ultimately to be processed by SCRIBE to produce the output (document) file. SCRIBE instructions will generally adhere to one of the following formats: @Verse{@@@b[instruction] @@@b[instruction](@b{text}) @@@b[instruction](@b{argument}) @@@b[instruction](@b{argument},@b{keyword@-[1]/value@-[1]},..,@b{keyword@-[n]/value@-[n]}) @@@b[instruction](@b{argument@-[1]}=@b{argument@-[2]},@b{keyword@-[1]=value@-[1]},..,@b{keyword@-[n]/value@-[n]}) @@@b[instruction](@b{keyword@-[1] value@-[1]},..,@b{keyword@-[n] value@-[n]})} All @b[instruction]s are prefixed by the @t[@@] character and may be followed by some @b[text] on which the instruction operates, some @b[argument] which may be a named environment, and perhaps a list of SCRIBE @b[keyword]s and @b[value]s all enclosed within bracketing delimiters, in this case "(" and ")". For example the instruction, @t[@@DEVICE(LPT)] instructs SCRIBE to prepare the current manuscript for printing using a standard line printer as the output device. Note that there must be no space between the @t[@@] character and the instruction since the string @w<"@t[@@@!b@//]"> (ie: @t[@@] followed by a space) has a special meaning of its own (see section @ref(1characterinstructions)). SCRIBE allows any of the following matched pairs of delimiters: @t{[} and @t{]}, @t[(] and @t[)], @t[{] and @t[}], @t[<] and @t[>], @t['] and @t['], @t["] and @t["] For example, @t[@@MAKE"REPORT"] is equivalent to @t[@@MAKE(REPORT)]. In this document, the different pairs of delimiters are extensively used for illustrative purposes. Upper and lower case can be mixed in all SCRIBE instructions. For example, @t[@@DeViCe(LpT)] is exactly equivalent to @t[@@dEvIcE(LpT)]. Note that in this document, all SCRIBE instructions, keywords etc. are shown in upper case for the sake of clarity. @b[text], @b[argument] and @b[keyword]/@b[value] pairs are separated from one another with commas (,). The @b[keyword] and @b[value] pairs are used to further modify or control either an instruction or the overall document style. As indicated above, they may be separated by either a space ( ), an equals sign (=) or a slash (/). @b[keyword] specifies some named attribute or property of an environment or instruction, and @b[value] specifies the value of that attribute. In the event that @b[value] specifies some parameter which has units, if the units are specifed, either of the forms shown below may be used: @begin[Verse] SPACING 3INCH SPACING 3 INCH @end[Verse] Allowable units of distance for use with @b[keyword]/@b[value] pairs are; @t[IN], @t[INCH], @t[INCHES]; @t[CM], @t[CENTIMETRES]; @t[MM], @t[MILLIMETRES]; @t[PT], @t[POINT], @t[POINTS]; @t[PICA], @t[PICAS]; @t[EM], @t[EMS]; @t[QUAD], @t[QUADS]; @t[CHAR], @t[CHARS], @t[CHARACTER], @t[CHARACTERS]; @t[EN], @t[ENS]; @t[LINE] and @t[LINES]. The default unit for vertical distances is @t[LINE] or @t[LINES], and for horizontal distances; @t[CHAR], @t[CHARS], @t[CHARACTER] or @t[CHARACTERS]. SCRIBE's basic function is to format text 'objects' such as letters, words, sentences, paragraphs, etc., into a pleasing printed layout, for example by indenting paragraphs or by separating sentences with more than one space. SCRIBE has to be able to recognise these objects and to do so applies the following basic rules to the manuscript text: @begin{itemize} 'words' must be separated by spaces or 'end of line' 'sentences' must be terminated by a full stop character, (ie; ".", "?" or "!") and have at least 2 spaces or a 'newline' after them 'paragraphs' must be separated by at least one blank line (ie: 2 adjacent 'newline' characters) @end{itemize} In addition, there will be at any time a large number of further rules in effect, governing for example: @begin{itemize, need 7} what to do with multiple spaces what to do with multiple blank lines what the margins should be which font to use what if anything to underline what the vertical spacing should be, etc. @end{itemize} Such a set of rules defines an @b{environment} which has a name. For each rule or @b{attribute} that can be specified there is a corresponding environment @b{keyword}: for example @t["BLANKLINES"] or @t["SPACING"]. Many of these keywords have associated with them a @b[value] word which specifies precisely the value of that particular attribute. There are many predefined text environments (see sections @ref(StandardEnvironments) and @ref(DocumentTypes)) which can be used as they stand or with modifications (see sections @ref(InstructionsForChangingThings) and @ref{ModifyInstruction}), and new environments can be defined easily (see section @ref{InstructionsForChangingThings}), by assigning new attribute values with the appropriate @b[keyword=value] pairs. SCRIBE recognises several types of document and holds a database of environments for each of these document types. SCRIBE instructions themselves fall into two general classes: @begin{itemize} instructions which produce an immediate one-off effect at the place they appear, for example "take a new page" or "tab to the next tab stop" instructions which cause an environment change, thus affecting an arbitrary number of factors for an arbitrary duration. @end{itemize} @section{SCRIBE Instructions} @mylabel[ScribeInstructions] @index[Instructions] SCRIBE recognises the following instructions, which have been gathered together by similarity of function as far as possible. Any Unilogic SCRIBE instruction or facility which is @b[not] described in the remainder of this document may be assumed not to have been implemented in the local version of SCRIBE. @subsection{Basic Instructions} @mylabel[BasicInstructions] @index[General instructions] @begin{description} @t[@@BEGIN<@b{environment}>]@\specifies that subsequent text is to be interpreted in the context of a new environment. The old environment is not lost (environments may be nested and the new one may inherit some or even most of the old one's rules if they have not been respecified), eg: @remark{ @remark{@heading[Wizard's Note]} When nesting environments and two @t[@@END] instructions occur together, eg: @begin[verbatim] @@END[environment1] @@END[environment2] blank line 1st line of new paragraph @end[verbatim] there is a possibility that SCRIBE will get confused as it tries to deal with two consecutive newlines. The effect may be that the first line of the next paragraph may be interpreted as being a continuation of the previous paragraph. There seem to be two empirical ways to get around this: @begin[enumerate] insert two blank lines after the two @@END instructions thus: @begin[verbatim] @@END[@b(environment1)] @@END[@b(environment2)] 1st blank line 2nd blank line 1st line of new paragraph @end[verbatim] or: insert a 'spurious' blank character at the end of the line on which the first @t[@@END] instruction appears, thus: @begin[verbatim] @@END[@b(environment1)]# @@END[@b(environment2)] blank line 1st line of new paragraph @end[verbatim] @end[enumerate] } @Verse(@@BEGIN[DESCRIPTION]) Details of the environments which are generally available are given in section @ref{StandardEnvironments}. Some document types (eg: @t[LETTER]) allow the use of special environments within that document type only, these are described under the relevant document type in section @ref[documenttypes]. @index[@@Begin instruction] @index[BEGIN instruction] @remark{@heading[Wizard's Note] Actually, the COMMENT facility has been implemented as an instruction, not an environment. This means that the form: @begin[verbatim] @@BEGIN . . @@END @end[verbatim] will not work, and the: @begin[verbatim] @@COMMENT<.....> @end[verbatim] form must be used. } @t[@@COMMENT{@b(comment text)}]@\specifies text in the manuscript which SCRIBE is to ignore in producing the output file, eg: @index[@@Comment instruction] @index[COMMENT instruction] @need[3] @eVerse[@@COMMENT{Comments do not appear in SCRIBE output}] @t[@@DEVICE"@b{device name}"]@\specifies the device type for which SCRIBE has @index[@@Device instruction] @index[DEVICE instruction] to prepare the document file, eg: @Verse(@@DEVICE{GP300}) Further details of the device types known to SCRIBE are given in section @ref{Devicetypes}. @t(@@END[@b{environment}])@\specifies the end of an excursion into the @index[@@End instruction] @index[END instruction] named environment, eg: @Verse(@@END"VERSE") @t[@@INCLUDE(@b[file])]@\specifies that the text of @b[file] is to be @index[INCLUDE instruction] @index[@@Include Instruction] processed exactly as if it had been encountered in the manuscript file at that point. @b[file] may contain text, SCRIBE instructions (except @t[@@DEVICE] and @t[@@MAKE] instructions), or both, eg: @Verse[@@INCLUDE(ERCY02.NOTEFORMAT)] This instruction is particularly useful for setting up (say) departmental document formats in a file which is made available to all departmental users via the EMAS @t[PERMIT] command (see ref @cite[ERCC82]), thus the example above could well illustrate the use of a standard departmental file for defining a format for lecture notes. @remark{@heading[Wizard's Note] Actually, the @T[@@DECLARE] instruction is also ignored in @t[@@INCLUDE] files, but the users are not told about this instruction anyway.} @index[@@Make instruction] @index[MAKE instruction] @t[@@MAKE<@b{document type}>]@\specifies which of the document types held in SCRIBEs internal database is to be used for this manuscript, eg: @Verse(@@MAKE{MANUAL}) Details of all document types known to SCRIBE are given in section @ref{DocumentTypes}. @t[@@MESSAGE{]@b(message text)@t[}]@\specifies text to be displayed at the user's terminal. @index[@@Message instruction] @index[MESSAGE instruction] @end{description} @subsection{Spacing Control Instructions} @mylabel[SpacingControlInstructions] @index[Spacing control instructions] @begin{description} @t[@@BLANKPAGE"]@b{n}@t["]@\inserts @b{n} blank pages into the document file once the current output page has been filled - it does not leave a partially filled page as @t[@@NEWPAGE] (see below) does, eg: @index[@@Blankpage instruction] @index[BLANKPAGE instruction] @eVerse[@@BLANKPAGE{2}] @t[@@BLANKSPACE']@b{vertical distance}@t[']@\@>inserts blank space of the @index[@@Blankspace instruction] @index[BLANKSPACE instruction] specified depth in the document file at this point (to leave space for a small figure perhaps), eg: @Verse{@@BLANKSPACE'4 INCHES'} Units may be any suitable units from the list given in section @ref[ScribeTerminology]. @need[6 lines] @t[@@HSP{]@b{horizontal distance}@t[}]@\causes blank space of the specified @index[@@Hsp instruction] @index[HSP instruction] width to be placed in the document file, eg: @eVerse{@@HSP<1.75 INCH>} @t(@@NEED[)@b(vertical distance)@t(])@\if less than @b[vertical @index(@@Need instruction) @index[NEED instruction] distance] is left on the current page, skips to the next page, eg: @Verse[@@NEED(12) @@NEED{4.6 INCHES}] The @t[NEED] instruction is for use with 'blocks' of text of known length which are required to be entirely on the same page on the output (document) file (The @t[@@NEED] instruction is supplied as an alternative to the Unilogic SCRIBE @t[GROUP] environment, and may be superseded by this environment in future releases of SCRIBE). @t(@@NEWPAGE[)@b(n)@t(])@\causes SCRIBE to skip immediately to the start of the @index(@@Newpage instruction) @index[NEWPAGE instruction] next page, and then leave @b[n] blank pages before resuming the output of processed text. @end{description} @subsection{Tab Control Instructions} @label[TabControlInstructions] @index[Tab control instructions] @begin{description} @t[@@TABCLEAR]@\clears all existing tab stop settings. @index[@@Tabclear instruction] @index[TABCLEAR instruction] @t[@@TABDIVIDE(]@b{n}@t[)]@\divides the available formatting area into @b{n} @index[@@Tabdivide instruction] @index[TABDIVIDE instruction] equal width columns. Thus: @Verse{@@TABDIVIDE[6]} sets 5 tab stops each 1/6th of the way across the available width, with the right margin being treated as the final tab stop. @t[@@TABSET<]@b{stop1},..,@b{stopn}@t[>]@\sets a series of @b[n] tabs at @index[@@Tabset instruction] @index[TABSET instruction] the specified horizontal positions and does not erase existing tab settings. Horizontal distances are calculated with respect to the currently prevailing left margin, not relative to the edge of the paper, eg: @eVerse{@@TABSET(1.0 INCH, 2 INCHES, 3.5 INCHES)} @end{description} @subsection{Page Footing and Heading Instructions} @mylabel[PageFootingsAndHeadings] @index[Page headings] @index[Page footings] The text printed at the top (or bottom) of a page is called a page heading (or footing). The default page heading is a page number centred at the top of every page after the first, but this format may be changed if required. The heading and footing areas are each subdivided into three parts, a left part, a centre part and a right part, and control of these six areas is provided through the following two instructions. @begin{description} @w<@t[@@PAGEFOOTING(]@t[LEFT] = @b{"text"}, @t[CENTRE] = @b{"text"}, @t[RIGHT] = @b{"text"}, @t[ODD/EVEN]@t[)]>@\ @index[@@Pagefooting instruction] @index[PAGEFOOTING instruction] allows you to specify a footing to be placed at the bottom of a page. Only those keywords required need be specified. @t[ODD] or @t[EVEN] allows different footings to be specified for alternating pages in a double-sided document, eg: @Verse[@@PAGEFOOTING{RIGHT "@@VALUE", ODD} @@PAGEFOOTING{LEFT "@@VALUE(PAGE)", EVEN}] @remark{@heading[Wizard's Note] @label[WizardsNote1] If you are using a @t[@@VALUE(@)] string in either a page footing or heading, and, the section title has a bracket in it, you may find that the left-most bracket acts as an end-of-title as far as the page footing or heading is concerned, thus putting the part of the title on a second line! Haven't sorted this one out yet, but ensuring that the type of bracket used in the section title is not used in the @t[@@PAGEFOOTING] or @t[@@PAGEHEADING] instruction does not seem to work! } @t[@@PAGEHEADING]@\takes the same keyword parameters as above but of course @index[@@Pageheading instruction] @index[PAGEHEADING instruction] is used to specify the format of a page heading to be placed at the bottom of every page, eg: @Verse[@@PAGEHEADING{CENTRE "DRAFT", LEFT "SCRIBE Reference Manual", EVEN}] The default page heading is a centred page number. This will be automatically 'turned off' the first time a @t[@@PAGEHEADING] instruction is used, so care must be taken to set up a new page number field if this is required (in either a @t[@@PAGEHEADING] or @t[@@PAGEFOOTING] instruction). @end{description} @subsection{Sectioning Instructions} @label[SectioningInstructions] @index[Sectioning instructions] SCRIBE allows the insertion of sectioning instructions into the appropriate document types. SCRIBE will then automatically keep a count of these sections and will make use of them when preparing a table of contents. The arguments to the sectioning instructions are used as section titles when the table of contents is generated. It is important to realise that the sectioning instructions described below are different from the heading environments described in section @ref[miscellaneousenvironments] below in the sense that they appear in the table of contents. The instructions are: @begin[description] @t[@@APPENDIX(@b)]@\produces a section title for an @index[@@Appendix instruction] @index[APPENDIX instruction] Appendix, eg: @eVerse[@@APPENDIX(Use of EMAS for FORTRAN Programmers)] @t[@@APPENDIXSECTION<@b(@w"appendix section title")>]@\produces an @index[@@Appendixsection instruction] @index[APPENDIXSECTION instruction] Appendix section title, eg: @Verse[@@APPENDIXSECTION"Logging In"] @t[@@CHAPTER'@b(chapter title)']@\produces a Chapter title, eg: @index[@@Chapter instruction] @index[CHAPTER instruction] @eVerse[@@CHAPTER] @t[@@PREFACESECTION"@b(preface title)"]@\produces an unnumbered title for a @index[@@Prefacesection instruction] @index[PREFACESECTION instruction] preface section, eg: @Verse[@@PREFACESECTION] @t<@@PARAGRAPH[@b(paragraph title)]>@\produces a paragraph title, eg: @index[@@Paragraph instruction] @index[PARAGRAPH instruction] @eVerse[@@PARAGRAPH{A Paragraph Title}] @t[@@SECTION<@b(section title)>]@\produces a section title, eg: @index[@@Section instruction] @index[SECTION instruction] @eVerse<@@SECTION[Standard Environments]> @t(@@SUBSECTION[@b{subsection title}])@\produces a subsection title, eg: @index[@@Subsection instruction] @index[SUBSECTION instruction] @eVerse[@@SUBSECTION(Information on Current SCRIBE Run)] @t[@@UNNUMBERED{@b(@w"unnumbered section title")}]@\produces an unnumbered @index[@@Unnumbered instruction] @index[UNNUMBERED instruction] section title, eg: @eVerse[@@UNNUMBERED(References and Further Reading)] @end[description] The sectioning instructions are used by SCRIBE to set up a section numbering system when used in document types which allow this. These section numbers are used by SCRIBE when generating a table of contents in documents which allow this. The table below summarises the numbering heirarchy used by SCRIBE when this is done. @begin[format] @tabclear @tabdivide(4) @=Textual@\@=@t[ARTICLE]@\@=@t[REPORT] and @t[MANUAL]@\@=Normal @=Level@\@=Instructions@\@=Instructions@\@=Numbering Format @=1@\@t[@@PREFACESECTION]@\@t[@@PREFACESECTION]@\unnumbered @index[@@Prefacesection instruction] @index[PREFACESECTION instruction] @=1@\@t[@@SECTION]@\@t[@@CHAPTER]@\n. @index[@@Section instruction] @index[SECTION instruction] @=2@\@t[@@SUBSECTION]@\@t[@@SECTION]@\n.n. @index[@@Subsection instruction] @index[SUBSECTION instruction] @=3@\@t[@@PARAGRAPH]@\@t[@@SUBSECTION]@\n.n.n. @index[@@Paragraph instruction] @index[PARAGRAPH instruction] @=4@\@=-@\@t[@@PARAGRAPH]@\n.n.n.n. @index[@@Chapter instruction] @index[CHAPTER instruction] @=1@\@t[@@UNNUMBERED]@\@t[@@UNNUMBERED]@\unnumbered @index[@@Unnumbered instruction] @index[UNNUMBERED instruction] @=1@\@t[@@APPENDIX]@\@t[@@APPENDIX]@\x. @index[@@Appendix instruction] @index[APPENDIX instruction] @=2@\@t[@@APPENDIXSECTION]@\@t[@@APPENDIXSECTION]@\x.n. @index[@@Appendixsection instruction] @index[APPENDIXSECTION instruction] @end{format} @subsection{String and Counter Handling Instructions} @mylabel[StringAndCounterInstructions] @index[String handling instructions] @index[Counter handling instructions] @begin{description} @t[@@SET(@b{counter}=@b{value})]@\sets the value of @b[counter] to @b[value]. @index[@@Set instruction] @index[SET instruction] Allowable counters are page and section numbers, (see section @ref{SectioningInstructions} above). Values may be absolute, incremental or decremental, eg: @eVerse{@@SET(PAGE=29) @@SET @@SET[SECTION=-4]} @t[@@STRING<]@b{name}=@b{"value"}@t[>]@\provides a method of setting up @Index{@@String instruction} @index[STRING instruction] @indexsecondary[primary="Strings", secondary="user-defined"] @index[User defined strings] frequently used long text strings, by defining a name for the string which is given within quotes, eg: @Verse{@@STRING(ERCC = "Edinburgh Regional Computing Centre")} The current content of a string can be recalled using the @t[@@VALUE] instruction described below. @t[@@VALUE(]@b{name}@t[)]@\causes the value of the specified @index[@@Value instruction] @index[VALUE instruction] string @b[name] to be inserted in the document file at this point, eg: @Verse{@@VALUE(ERCC)} In addition to strings defined by the user with @t[@@STRING], the @t[@@VALUE] instruction may also access the values of certain predefined strings. These are described in section @ref{PredefinedStrings}. @end{description} @subsection{Instructions for Changing Things} @label[InstructionsForChangingThings] @begin{description} @comment{ @t[@@COUNTER]@\allows the user to set up new counters. @index[@@Counter instruction] @index[COUNTER instruction] Please consult the SCRIBE User Manual @cite[UNILOGIC84] for full details. @t[@@DECLARE]@\TO BE INSERTED LATER @index[@@Declare instruction] @index[DECLARE instruction] } @t(@@DEFINE{@b[environment],@b[keyword value],..})@\allows new environments @index[@@Define instruction] @index[DEFINE instruction] @seealso[primary="@@Define instruction",other="Environment keywords"] @seealso[primary="DEFINE instruction",other="Environment keywords"] to be defined by specifying an environment name and a list of keyword-value pairs which describe the layout of the environment, eg: @Verse"@@DEFINE(RAGGEDTEXT, FILL, JUSTIFICATION OFF, SPACING 1)" For a fuller description of the @t[@@DEFINE] instruction and a description of its associated keywords and their values, please see sections @ref[ModifyInstruction] and @ref[EnvironmentKeywords]. @comment{ @t[@@DEFINEFONT]@\TO BE INSERTED LATER @index[@@Definefont instruction] @index[DEFINEFONT instruction] } @t[@@EQUATE(]@b[newenvironment]@t[=]@b[oldenvironment]@t[)]@\allows @index[@@Equate instruction] @index[EQUATE instruction] 'aliases' to be given to any other SCRIBE environments, for example in the case where a long environment name is to be used many times, or perhaps when a different spelling is desired, eg: @Verse(@@EQUATE{PE=PROGRAMEXAMPLE} @@EQUATE[ITEMISE=ITEMIZE]) The @t[@@EQUATE] instruction may also be used to give aliases to instructions, eg: @eVerse[@@EQUATE] @comment{ @t[@@FORM]@\TO BE INSERTED LATER @index[@@Form instruction] @index[FORM instruction] } @t(@@MODIFY[@b{environment},@b{keyword value},..])@\allows the once and @index[@@Modify instruction] @index[MODIFY instruction] @seealso[primary="@@Modify instruction",other="Environment keywords"] @seealso[primary="MODIFY instruction",other="Environment keywords"] for all modification of an existing environment at the beginning of the manuscript file. The general form is; @Verse{@@MODIFY(DRAFTTEXT=TEXT, SPACING 2)} For full details of the @t[@@MODIFY] instruction, and its associated @b[keyword=value] pairs, please see sections @ref[ModifyInstruction] and @ref[EnvironmentKeywords]. @W"@t[@@STYLE(@b,..,@b)]"@\ specifies @index[@@Style instruction] @index[STYLE instruction] (usually) a global style for the whole document. The @t[STYLE] setting will affect the appearance of the whole document, not just individual environments. Changes in individual environments may be effected with the @t[@@MODIFY] instruction (see above), eg: @Verse{@@STYLE(JUSTIFICATION OFF)} For a full description of the @t[STYLE] instruction and its associated keywords please see sections @ref{StyleInstruction} and @ref[StyleKeywords]. @comment{ @t[@@TEXTFORM]@\TO BE INSERTED LATER @index[@@Textform instruction] @index[TEXTFORM instruction] } @end{description} @subsection{Indexing Instructions} @label[IndexingInstructions] @index[Indexing instructions] SCRIBE has sophisticated facilities for indexing. There are five indexing instructions which allow for: @begin{itemize} simple indexing, with a topic keyed to a page number. as above with a bold page number to indicate an entry of major significance. secondary indexing; that is, a major topic with a subsidiary list of topics included under the main heading. as above with a bold page number to indicate an entry of major significance. tertiary indexing whereby a related (indexed) topic is pointed to with an entry of the "see also topicname" type entered under a selected major topic (if secondary indexing is also included under that major topic, the "see also" reference is placed after the secondary index). @end{itemize} Indexing is achieved merely by inserting the desired indexing instruction at the appropriate point in the manuscript. The index is generated automatically in document types which allow an index, and is sorted on an ASCII based key with upper and lower case letters being equivalenced. @begin{description} @need[5] @t[@@INDEX<]@b{text}@t[>]@\simple primary indexing of the entry @b{text}, sorted @index[@@Index instruction] @index[INDEX instruction] alphabetically, eg: @eVerse(@@INDEX) @t[@@INDEXMAIN(]@b{text}@t[)]@\as above, but with a boldface page number, eg: @index[@@Indexmain instruction] @index[INDEX instruction] @Verse[@@INDEXMAIN{Indexmain instruction}] @W<@t[@@INDEXSECONDARY[]@t[PRIMARY=]"@b{primaryentry}", @t[SECONDARY=]"@b(secondaryentry")@t(])>@\ @index[@@Indexsecondary instruction] @index[INDEXSECONDARY instruction] secondary indexing of @b{secondaryentry} under @b{primaryentry}. @b{primaryentry} is sorted alphabetically in the context of all the other primary index entries, and @b{secondaryentry} is sorted alphabetically in the context of all secondary entries under the relevant primary entry, eg: @eVerse{@@INDEXSECONDARY[PRIMARY="Instructions", SECONDARY="Indexsecondary instruction"]} @w<@t[@@INDEXSECONDARYMAIN{]@t[PRIMARY=]"@b(primaryentry)", @t[SECONDARY=]"@b(secondaryentry)"@t[}]>@\ @index[@@Indexsecondarymain instruction] @index[INDEXSECONDARYMAIN instruction] as above but with a boldface page number, eg: @eVerse{@@INDEXSECONDARYMAIN[PRIMARY="Instructions", SECONDARY="Indexsecondarymain instruction"]} @w<@t[@@SEEALSO{]@t[PRIMARY=]"@b(primaryentry)", @t[OTHER=]"@b(otherentry)"@t[}]>@\ @index[@@Seealso instruction] @index[SEEALSO instruction] inserts a subsidiary entry of the "see also @b{otherentry}" form subordinate to the top level index entry @b{primaryentry}, eg: @eVerse[@@SEEALSO{PRIMARY="Modify instruction", OTHER="Define instruction"}] @end{description} The index to this document has been constructed using the @t[@@INDEX] and @t[@@INDEXSECONDARY] instructions. @subsection{Cross-referencing Instructions} @mylabel[CrossReferencingInstructions] @index[Cross-referencing instructions] SCRIBE allows you to refer to other parts of your document by means of four cross referencing instructions: @begin{description,leftmargin +12, indent -12} @t[@@LABEL<]@b{label}@t[>]@\marks a selected point in @index[@@Label instruction] @index[LABEL instruction] the text which may be referred to with the @t[@@PAGEREF] and @t[@@REF] instructions. @b{label} is the string which identifies the labelled point, eg: @Verse[@@LABEL{CROSSREFERENCINGCOMMANDS}] @t[@@LABEL] is used to label parts of the text which are going to be referred to on a section number or page number basis. @t[@@PAGEREF"]@b{label}@t["]@\is used to refer forwards or backwards to @index[@@Pageref instruction] @index[PAGEREF instruction] a @t[LABEL]led or @t[TAG]ged item in the text. @b{label} is the label part of the relevant @t[@@TAG] instruction. The reference is to the page number on which the item is found in the processed document, eg: @eVerse{@@PAGEREF(CROSSREFERENCINGCOMMANDS)} @t[@@REF(]@b{label}@t[)]@\is used to insert a forward or backward @index[@@Ref instruction] @index[REF instruction] reference to a previously @t[TAG]ged or @t[LABEL]led point in the manuscript file. @b{label} is the label inserted at the appropriate point of the manuscript file, eg: @Verse[@@REF{CROSSREFERENCINGCOMMANDS} @@REF{TAGPARAGRAPH}] The reference is to the current section number, so the document type being used must be one of the sectioned document types (see section @ref[sectioneddocumenttypes]), and, the sectioning instructions must be in use. @t[@@TAG[]@b{label}@t(])@\is used to label parts of the @index[@@Tag instruction] @index[TAG instruction] text which are to be referred to on a 'text object' basis, eg: the third item in an @t[ITEMIZE]d list. @b{label} is the label used by the @t[@@REF] instruction to refer to the appropriate part of the text, eg: @eVerse[@@TAG"TAGPARAGRAPH"] @end{description} @section{Single Character Instructions} @label[1characterinstructions] @index[Single character instructions] Many of the non alphanumeric characters, used singly, are also defined as SCRIBE instructions, mainly for use with tab control. They are gathered together in this section for convenience, but also should be considered along with the relevant tab control instructions described in section @ref[tabcontrolinstructions]. @comment[@subsection{Format Control} @label[FormatControl1characterinstructions] @index[Format control] @begin{description}] @comment[@t[@@*]@\forces SCRIBE to begin a new line without justifying the current one. @index[@@* instruction] ] @comment[@t[@@:]@\forces a sentence break even if the last punctuation character was not a "full stop character" @index[@@: instruction] ] @comment[@t[@@|]@\specifies the position within a word where a line break is to be allowed. @index[@@| instruction] ] @comment[@t[@@~]@\requests that SCRIBE should ignore everything in the manuscript between the ~ and the next printing character. This is useful for putting non-significant line breaks in an environment where end-of-line is significant. @index{@@~ instruction}] @comment[@end{description}] @subsection{Tab Control} @mylabel[TabControl] @index[Tab control] @begin{description,leftmargin +4,indent -4} @t[@@^]@\sets a tab stop at the current position. @index[@@^ instruction] @t[@@\]@\is the tab instruction for moving the notional "cursor" (printing @index[@@\ instruction] position) to the next tab stop. It also marks the right hand end of the text being "centred" "flushed right" or replicated (see below). @t[@@=]@\marks the left hand end (beginning) of text to be centred @index[@@= instruction] between tab stops. It should not be used in a "filled" environment. @t[@@>]@\marks the left hand end (beginning) of text to be flushed right @comment(@index[@@> instruction]) against the next tab stop. It should not be used in a "filled" environment. @t[@@$]@\sets the left margin for the current environment to the current @index[@@$ instruction] position on the line. @t[@@!]@\sets the return marker to the current position on the line. @index[@@! instruction] @t[@@/]@\moves the cursor to the return marker position. @index[@@/ instruction] @t[@@&]@\causes the characters between the @t[&] and the next tab instruction @index[@@& instruction] in the manuscript to be replicated (ie: duplicated as often as is necessary) in the output from the current cursor position up until the next tab stop. @t[@@)]@\is similar to @t[@@&] but the replicated pattern is positioned @comment[@index{@@) instruction}] such that all such filling patterns given subsequently will line up underneath each other. @end{description} @subsection{Miscellaneous Single Character Instructions} @mylabel[other1characterinstructions] @begin{description,leftmargin +4,indent -4} @t[@@@@]@\generates the @t[@@] character itself in the document. @index[@@@@ instruction] @comment[@t[@@ ]@\The @t[@@] instruction character followed by a space (rather than an instruction or environment name) requests a literal space to be inserted at this point and to be treated as a character, rather than as a word separator. @index[@@\ instruction] ] @comment[@t[@@.]@\causes a "period" not serving as the end of a sentence to be generated in the document. @index{@@. instruction}] @end{description} @section{Standard Environments} @label[StandardEnvironments] @index[Standard environments] @index[Environments] This section describes the predefined standard environments. They can be specified in one of two forms normally depending on the length of text to be formatted. The short form of an environment instruction has the general form: @Verse{@@@b{environment}(text to be formatted)} The long form is bracketed by the @t[@@BEGIN] and @t[@@END] instructions: @begin[Verse, need 6] @@BEGIN(@b{environment}) . text to be formatted . @@END(@b{environment}) @end[Verse] The long form allows modifications to be made to the environment, just for this one use of it; eg: @Verse{@@BEGIN(@b{environment}, SPACING 3)} would enter the new environment with @t"SPACING 3" overruling the default spacing for @b{environment}. For full details of the environment keywords see section @ref{ModifyInstruction}. One environment may be embedded inside another one. There are two main classes of formatting environments, referred to as "filled environments" and "unfilled environments". In a filled environment, SCRIBE pays no attention to the line breaks in the manuscript file, and fills each line in the document file with words from the manuscript file until that line is full. Note that the filling of lines should not be confused with justification (where the words are positioned on lines such that the ends of the lines are all aligned). However, in practice the SCRIBE database is set up such that all filled environments will be justified unless this is overridden (by use of the @t[@@STYLE] or @t[@@MODIFY] instructions). @index[@@Style instruction] @index[STYLE instruction] In an unfilled environment, line breaks are significant and SCRIBE does not fill lines in the document file by adding more words until the output line is full. Each line in the manuscript file produces one equivalent line in the document file (although this is not necessarily true with blank lines). It should be noted that if a line in the manuscript file exceeds the specified line length for the document file, an error message is produced, but no other action is taken. @subsection[Filled Environments] @mylabel[FilledEnvironments] @index[Filled Environments] @begin{description,leftmargin +8,indent -8} @t[TEXT]@\is the default environment for running text but it is @indexsecondary{primary="Environments", secondary="Text"} @index[@@Text environment] @index[TEXT environment] occasionally necessary to specify it to get text inside (say) an unfilled environment, for example. The bulk of this manual is set in the @t[TEXT] environment. @t[QUOTATION]@\highlights prose quotations in running text by @indexsecondary{primary="Environments", secondary="Quotation"} @index[@@Quotation environment] @index[QUOTATION environment] insetting the text with wider margins and vertical spacing, eg: @begin[eVerse, need 5] @@BEGIN Speak not about what you have read but about what you have understood. @@END @end[eVerse] @t[VERSE]@\is similar to @t[QUOTATION] except that a new line @indexsecondary{primary="Environments", secondary="Verse"} @index[@@Verse environment] @index[VERSE environment] is started in the document file for each line break in the manuscript file. Long lines are not truncated but are wrapped round and indented slightly more than the prevailing left margin. Thus the @t[VERSE] environment would be more accurately labelled as "semi-filled", eg: @begin[eVerse, need 5] @@VERSE{Give me a spirit that on this life's rough sea Loves t'have his sails filled with a lusty wind Even till his sail-yards tremble, his masts crack, And his rapt ship runs on her side so low That she drinks water and her keel plows air.} @end[eVerse] @end{description} @subsection{Unfilled Environments} @mylabel[UnfilledEnvironments] @index[Unfilled environments] @begin{description,leftmargin +8,indent -8} @t[FORMAT]@\reproduces the contents of the manuscript file exactly as encountered. @indexsecondary{primary="Environments", secondary="Format"} @index[@@Format environment] @index[FORMAT environment] A variable-width font is used (if the output device type supports it). This means that for tabular output it is essential to use tab control instructions within the body of the text - otherwise the columns won't in general line up, eg: @Verse[@@FORMAT'FORMAT prints text exactly as encountered in the manuscript file using a variable width typeface.'] @t[VERBATIM]@\is rather like @t[FORMAT], the only difference being that a fixed @indexsecondary{primary="Environments", secondary="Verse"} @index[@@Verse environment] @index[VERBATIM environment] width typeface is used. @t[VERBATIM] is ideal for the reproduction of short tables and does not require the use of tabbing controls in such circumstances, eg: @Verse[@@BEGIN(VERBATIM) This text is printed exactly as encountered in a fixed width typeface. @@END(VERBATIM)] A variant of the @t[VERBATIM] environment is @t[PROGRAMEXAMPLE] which uses a fixed width typeface other than the default one. This is useful for highlighting examples of computer input and output. @indexsecondary{primary="Environments", secondary="Programexample"} @index[@@Programexample environment] @index[PROGRAMEXAMPLE environment] @t[DISPLAY]@\is similar to @t[VERBATIM] except that SCRIBE indents both left @indexsecondary{primary="Environments", secondary="Display"} @index[@@Display environment] @index[DISPLAY environment] and right margins. It also separates the displayed text from the document body using vertical spacing, eg: @begin[Verse, need 5] @@BEGIN[DISPLAY] This is a bit like VERBATIM except that the margins are widened. @@END[DISPLAY] @end[Verse] @t[EXAMPLE]@\is similar to @t[DISPLAY] except that it uses a different @indexsecondary{primary="Environments", secondary="Example"} @index[@@Example environment] @index[EXAMPLE environment] typeface to highlight the text. It is particularly useful for setting off examples from surrounding descriptive material, eg: @begin[eVerse, need 4] @@EXAMPLE(This is like DISPLAY except that a different typeface is used.) @end[eVerse] @end{description} @subsection{Itemising Environments} @mylabel[ItemizingEnvironmemts] @index[Itemizing environments] The itemising environments are all filled. @begin{description,leftmargin +10,indent -10} @t[DESCRIPTION]@\highlights paragraphs with a header word at the left margin. @indexsecondary{primary="Environments", secondary="Description"} @index[@@Description environment] @index[DESCRIPTION environment] Subsequently lines of the paragraph are indented significantly to cause the header word to stand out. Where necessary the tab instruction (@t[@@\]) should be used to separate the heading word from the rest of the text (see section @ref{TabControlInstructions}). The descriptions of most of the SCRIBE instructions described in this manual are set using the @t[DESCRIPTION] environment. @t[ENUMERATE]@\produces paragraphs which are numbered (outer level 1,2,3 etc. @indexsecondary{primary="Environments", secondary="Enumerate"} @index[@@Enumerate environment] @index[ENUMERATE environment] nested inner level a,b,c etc.), eg: @Verse{@@BEGIN(ENUMERATE) first item second item last item @@END[ENUMERATE]} @t[ENUMERATE]d lists may be nested to as deep a level as required, but the style of numbering will start to repeat at the fourth and subsequent levels. @t[ITEMIZE]@\is rather like @t[ENUMERATE], except that instead of being @indexsecondary{primary="Environments", secondary="Itemize"} @index[@@Itemize environment] @index[ITEMIZE environment] numbered, paragraphs are flagged with a special character (such as an asterisk (@t[*]) or dash (@t[-])). The paragraphs are set off from the rest of the text by vertical spacing and wider margins, eg: @begin[Verse, need 7] @@BEGIN first item second item last item @@END @end[Verse] @comment'@t[MULTIPLE]@\is used in conjunction with the other three environments @indexsecondary{primary="Environments", secondary="Multiple"} @index[@@Multiple environment] @index[MULTIPLE environment] in this section in order to allow more than one paragraph within one item (normally each paragraph starts a new item), eg: @eVerse{@@BEGIN First paragraph of multiple paragraph item. Next paragraph of multiple paragraph item. Last paragraph of multiple paragraph item. @@END}' @end{description} @subsection{Positioning Environments} @mylabel[PositioningEnvironments] @index[Positioning environments] The positioning environments are all unfilled. @begin{description,leftmargin +10,indent -10} @t[CENTRE]@\requests that each line in the body of the environment be @indexsecondary{primary="Environments", secondary="Centre"} @index[CENTRE environment] centred between the global margins, eg: @eVerse{@@CENTRE(SCRIBE USERS GUIDE)} @t[FLUSHLEFT]@\forces the first character in each of the manuscript @indexsecondary{primary="Environments", secondary="Flushleft"} @index[@@Flushleft environment] @index[FLUSHLEFT environment] lines to be aligned with the global left margin, eg: @begin[eVerse, need 3] @@BEGIN(FLUSHLEFT) This text is to be flushed left. @@END(FLUSHLEFT) @end[eVerse] @t[FLUSHRIGHT]@\forces the last character in each manuscript line to be aligned with the global right margin, eg: @Verse{@@FLUSHRIGHT} @indexsecondary{primary="Environments", secondary="Flushright"} @index[@@Flushright environment] @index[FLUSHRIGHT environment] @end{description} @subsection{Facecode Environments} @label[FacecodeEnvironments] @index[Facecode environments] The following paragraphs describe the predefined facecode environments. these instructions select a new 'typeface', thus affecting the appearance of the processed text at the level of individual characters. In particular, the spacing of characters will generally be affected. This is one of the situations where SCRIBE may have to give the nearest equivalent to what is requested, for example if the selected output device does not support the special character font desired; eg: a line printer would not have a Greek letter font. The instructions are shown without an @t"@@" prefix as they may be used in either the @t[@@]@b[facecode] or @t[@@BEGIN(@b{facecode})......@@END(@b{facecode})] form. @begin{description,leftmargin +4, indent -4} @t[B]@\requests @b(boldface) printing, which is normally achieved by repetitive overprinting, eg: @eVerse[@@B{boldface}] @indexsecondary{primary="Facecodes", secondary="Bold"} @index[@@B instruction] @index[B instruction] @t[C]@\requests @c(SMALL CAPITAL) printing, eg: @eVerse[@@C'small capital'] @indexsecondary{Primary="Facecodes", secondary="Small capitals"} @index[@@C instruction] @index[C instruction] @t[G]@\specifies that the bracketed text is to be printed in @g(GREEK) letters, eg: @eVerse(@@G[greek]) @indexsecondary{primary="Facecodes", secondary="Greek"} @index[@@G instruction] @index[G instruction] @t[R]@\requests that printing revert to the ordinary Roman typeface which is the default. This is required to produce ordinary letters inside one of the other facecode environments. @indexsecondary{primary="Facecodes", secondary="Roman"} @index[@@R instruction] @index[R instruction] @t@\requests that the bracketed text be output in a @t{typewriter} @indexsecondary{primary="Facecodes", secondary="Typewriter"} @index[@@T instruction] @index[T instruction] font, eg: @Verse[@@T(typewriter)] @t[I]@\requests @i(italic) printing, eg: @indexsecondary{primary="Facecodes", secondary="Italic"} @index[@@I instruction] @index[I instruction] @Verse[@@I"italic"] SCRIBE will use underlining on devices that do not support italics. @t[P]@\combines bold and italic, requesting @p(boldface italics), eg: @indexsecondary{primary="Facecodes", secondary="Bold italic"} @index[@@P instruction] @index[P instruction] @eVerse[@@P(boldface italics)] @t[U]@\requests that each "non-blank" character in the bracketed text be @indexsecondary{primary="Facecodes", secondary="Underline"} @index[@@U instruction] @index[U instruction] underlined, eg: @eVerse(@@U{This text will be underlined}) @t[UN]@\requests that only letters and digits within the bracketed text @indexsecondary{primary="Facecodes", secondary="Underline"} @index[@@UN instruction] @index[UN instruction] be underlined, eg: @eVerse[@@UN] @t[UX]@\requests that all characters in the bracketed text be @indexsecondary{primary="Facecodes", secondary="Underline"} @index[@@UX instruction] @index[UX instruction] underlined, eg: @eVerse[@@UX"Here, everything will be underlined"] @t[+]@\causes the enclosed text to be printed as a @+(super)script at the @index[@@+ instruction] @index[Superscripts] current position, eg: @eVerse{@@+(super)script} @t[-]@\causes the enclosed text to be printed as a @-(sub)script at the @index[@@- instruction] @index[Subscripts] current position, eg: @eVerse[@@-{sub}script] @end{description} @subsection{Heading Environments} @mylabel[HeadingEnvironments] @index[Heading environments] @begin{description,leftmargin +12, indent -12} @comment[@t[GROUP]@\tells SCRIBE to ensure that the enclosed text all appears on the same page and that therefore a new page must be started if there is not enough space on the current page for the enclosed text. @indexsecondary{primary="Environments", secondary="Group"} @index[@@Group environment] @index[GROUP environment] ] @t[HEADING]@\produces a normal heading which is centred on a line and @index[@@Heading instruction] @index[HEADING instruction] printed where possible in medium-sized letters. It is used in simple non-sectioned document types, eg: @eVerse[@@HEADING{This is a heading}] @t[MAJORHEADING]@\produces a major page heading, printed in large letters @index[@@Majorheading instruction] @index[MAJORHEADING instruction] (where possible) and positioned in the centre of the line. It is used for simple non-sectioned document types and is neither numbered nor entered in a table of contents, eg: @eVerse[@@MAJORHEADING] @t[SUBHEADING]@\produces a sub-heading flush to the left margin. @index[@@Subheading instruction] @index[SUBHEADING instruction] It is printed in normal sized letters and underlined. As with the above two environments, it is not numbered, eg: @eVerse(@@SUBHEADING[This is a subheading]) @end{description} @subsection{Miscellaneous Environments} @label[MiscellaneousEnvironments] @index[Miscellaneous environments] @begin{description,leftmargin +4,indent -4} @t[W]@\tells SCRIBE to treat the enclosed text as one word. @index[@@W instruction] @index[W instruction] This is very useful in technical sequences such as equations where there are many significant blank spaces and which you don't want to have split over two lines. @end{description} @section(Changing Things - @t[@@MODIFY], @t[@@DEFINE] and @t[@@STYLE]) @mylabel[ChangingThings] The environment attributes (or properties) described briefly in section @ref[ScribeTerminology] above may altered by specifying them in the appropriate instructions as follows: @Verse[@@@b[instruction]{..,@b,..}] where @b[keyword] and @b[value] are respectively the name of the attribute to be changed, and @b[value] is its value. This mechanism allows the user to effect changes to the SCRIBE database formats which would ordinarily be imposed by SCRIBE. There are several levels at which changes can be effected by appropriate use of the @t[STYLE], @t[@@MODIFY] or @t[@@DEFINE] instructions, or by altering environment definitions as and when used by employing a modified form of the @t[@@BEGIN] instruction. The method of effecting these changes is now described along with the appropriate sets of keywords and their values. There is a different set of keywords for use with the @t[@@DEFINE] and @t[@@MODIFY] instructions and the @t[@@STYLE] instruction. Accordingly, the descriptions are split into two groups. In the case of the @t[@@STYLE] instruction, those keywords which may be used only at the beginning of an input file are so indicated. @subsection{The @t[@@STYLE] Instruction} @label[StyleInstruction] @index[@@Style instruction] @index[STYLE instruction] The simplest way of overriding the document formats specified in the SCRIBE database is to do so on a global basis, that is, specify some change which affects the format of the processed document as a whole, for example, specify double spacing where ordinarily single spacing would be the norm, or turn off justification where ordinarily it would be turned on, etc. Such changes are effected with the @t[@@STYLE] instruction which has the form: @Verse[@@STYLE(..,@b,..)] where the @b[keyword] @b[value] pairs are respectively the overall document style attribute which is to be changed, and the value to which the attribute is to be changed, eg: @begin[Verse] @@STYLE[SPACING 2, INDENT 0, JUSTIFICATION OFF] @end[Verse] As the @t[@@STYLE] instruction affects the overall document appearance, the @t[@@STYLE] instruction must usually be used at the beginning of the manuscript file before any text to be processed. There is a large set of @b[keyword] @b[value] pairs which may be specified with the @t[@@STYLE] instruction, these are now described: @subsection(@t[STYLE] Keywords) @label[StyleKeywords] @index[STYLE keywords] @seealso[primary="STYLE keywords",other="Environment keywords"] @begin{description,leftmargin +12,indent -12} @t[BOTTOMMARGIN]@\specifies the vertical distance to be left between the last @indexsecondary{primary="STYLE keywords", secondary="Bottommargin keyword"} @index[BOTTOMMARGIN keyword] line of printing and the physical bottom of paper (beginning only), eg: @eVerse[..,BOTTOMMARGIN 0.75 INCHES,..] @t[DOUBLESIDED]@\if @b[value] is set to @t[YES], forces major headings and @indexsecondary{primary="STYLE keywords", secondary="Doublesided keyword"} @index[DOUBLESIDED keyword] section titles onto odd pages if this option is available in the document type, eg: @Verse[..,DOUBLESIDED YES,..] If set, @t[DOUBLESIDED] activates the @t[PAGEBREAK UNTILODD] or @t[PAGEBREAK UNTILEVEN] attribute when encountered in a @t[@@DEFINE] or @t[@@MODIFY] instruction. If @t[DOUBLESIDED] is not set, @t[PAGEBREAK BEFORE] is assumed. @t[INDENT]@\specifies by how much to indent the first line of each paragraph in @indexsecondary{primary="STYLE keywords", secondary="Indent keyword"} @index[INDENT keyword] the text (beginning only). For example, to indent by 5 spaces give: @eVerse[..,INDENT 5,..] @t[INDENTATION]@\same as @t[INDENT]. @indexsecondary{primary="STYLE keywords", secondary="Indentation keyword"} @index[INDENTATION keyword] @t[JUSTIFICATION]@\specifies whether text is to be aligned along the right @indexsecondary{primary="STYLE keywords", secondary="Justification keyword"} @index[JUSTIFICATION keyword] margin (@t[YES] or @t[ON]) or left unaligned (@t[NO] or @t[OFF]), eg: @Verse{..,JUSTIFICATION OFF,..} The @t[JUSTIFICATION] keyword may be used at the beginning of the manuscript file only. @t[LEFTMARGIN]@\specifies the width of the left margin - the horizontal @indexsecondary{primary="STYLE keywords", secondary="Leftmargin keyword"} @index[LEFTMARGIN keyword] distance between the physical edge of paper and the global left margin (beginning only), eg: @eVerse{..,LEFTMARGIN 1 INCH,..} @t[LINEWIDTH]@\specifies the width of a print line - the horizontal distance @indexsecondary{primary="STYLE keywords", secondary="Linewidth keyword"} @index[LINEWIDTH keyword] between the global left margin and the end of the line (beginning only), eg: @eVerse[..,LINEWIDTH 60,..] @t[PAGENUMBER]@\allows the page number style to be specified, eg: @indexsecondary{primary="STYLE keywords", secondary="Pagenumber keyword"} @index[PAGENUMBER keyword] @Verse(..,PAGENUMBER "-@@1-",..) The string @t["@@1"] in this context is known as a @b[template]. @index[Numbering templates] @index[Templates] Briefly, templates may be used to control the style of numbering of any numbered environment or counter etc. The templates available are: @begin[description, spread 0,leftmargin +4,indent -4] @t[@@1]@\Arabic cardinal numerals @t[@@A]@\upper case letters @t[@@a]@\lower case letters @t[@@I]@\upper case Roman numerals (1-20 only) @t[@@i]@\lower case Roman numerals (1-20 only) @t[@@*]@\sequence of asterisks (1-10 only) @end[description] Do not confuse the @t[@@I] template used in the @t[@@STYLE] instruction with the @t[@@I] facecode instruction - although the form is the same, one is a keyword, one is an instruction and they are used in different situations. @blankspace[2] For a fuller discussion of templates and the way in which they may be used to modify the way in which the enumerated environments and counters are numbered, please consult the SCRIBE User Manual @cite[UNILOGIC84]. @t[PAPERLENGTH]@\a vertical distance specifying the paper length. @indexsecondary{primary="STYLE keywords", secondary="Paperlength keyword"} @index[PAPERLENGTH keyword] Only meaningful for those devices with different paper sizes (beginning only), eg: @eVerse[..,PAPERLENGTH 11.5 INCHES,..] @t[PAPERWIDTH]@\a horizontal distance specifying the paper width. @indexsecondary{primary="STYLE keywords", secondary="Paperwidth keyword"} @index[PAPERWIDTH keyword] Only meaningful for those devices with different paper widths (beginning only), eg: @eVerse[..,PAPERWIDTH 9.25 INCHES,..] @t[RIGHTMARGIN]@\specifies the width of the right margin - the horizontal @indexsecondary{primary="STYLE keywords", secondary="Rightmargin keyword"} @index[RIGHTMARGIN keyword] distance between the global right margin and the physical edge of paper, (beginning only), eg: @eVerse[..,RIGHTMARGIN 4 INCHES,..] @t[SINGLESIDED]@\turns off @t[DOUBLESIDED] if set. @indexsecondary{primary="STYLE keywords", secondary="Singlesided keyword"} @index[SINGLESIDED keyword] @t[SINGLESIDED] takes no @b[value] keyword. @t[SPACING]@\specifies the vertical distance from the base of one line @indexsecondary{primary="STYLE keywords", secondary="Spacing keyword"} @index[SPACING keyword] to the base of the next line (beginning only). For example, to get double spacing rather than the default single spacing, give: @eVerse[..,SPACING 2,..] @t[SPREAD]@\a vertical distance, added to @t[SPACING] to increase the @indexsecondary{primary="STYLE keywords", secondary="Spread keyword"} @index[SPREAD keyword] inter-paragraph spacing (beginning only), eg: @eVerse{..,SPREAD 0,..} @t[STRINGMAX]@\the maximum number of characters allowed in a delimited string @indexsecondary{primary="STYLE keywords", secondary="Stringmax keyword"} @index[STRINGMAX keyword] in the manuscript file, eg: @Verse{..,STRINGMAX 100,..} The default value of @t[STRINGMAX] is 1024. @t[TOPMARGIN]@\specifies the amount of white space between the physical top of @indexsecondary{primary="STYLE keywords", secondary="Topmargin keyword"} @index[TOPMARGIN keyword] paper and the first line of printing on the page. @end{description} @comment{The Unilogic @t[STYLE] keywords @t[BIBSELECT], @t[BINDINGMARGIN], @t[DATE], @t[ENDNOTES], @t[FILEDATE], @t[FONT], @t[FONTSIZE], @t[FOOTNOTES], @t[NOTES], @t[REFERENCES], @t[SCRIPTPUSH], @t[TIME], @t[TIMESTAMP], @t[TYPEWHEEL], @t[UNDERSCORECHARACTER] and @t[WIDOWACTION] have not been implemented.} Any Unilogic @t[STYLE] keywords not described here may be assumed not to have been implemented in the local version of SCRIBE. @subsection{The @t[@@MODIFY] Instruction} @label[ModifyInstruction] @index[@@Modify instruction] @index[MODIFY instruction] The next level at which changes to a document format may be effected is by changing the appearance of a named environment. This is achieved by using the @t[@@MODIFY] instruction which has the form: @Verse(@@MODIFY[@b{environment},..@b{keyword value},..]) where @b[environment] is the name of the environment to be modified, and the @b[keyword value] pairs are the attributes of the environment which are to be modified and their modified values eg: @begin[Verse] @@MODIFY(TEXT, JUSTIFICATION OFF, LEFTMARGIN 2 INCH, RIGHTMARGIN 2 INCH) @end[Verse] The effect of the @t[@@MODIFY] instruction is to alter the appearance of the named environment as specified in the list of @b[keyword value] pairs. This effect will apply during the whole processing of that particular manuscript file (unless further overridden by another modifying instruction). As with the @t[@@STYLE] instruction, the environment keywords specify a particular attribute or property of the environment, and the associated value word defines the value of that property. In some cases, there is a default value for a keyword if it is not mentioned, and another, different value if it is mentioned in a @t[@@MODIFY] etc. instruction. @subsection(Modification with the @t[@@BEGIN] Instruction) @mylabel[ModificationWithBegin] Additionally, environments may be modified by the inclusion of keyword-value pairs in the @t[@@BEGIN] instruction when the environment is used in the form: @Verse{@@BEGIN(@b[environment]) . . @@END(@b[environment])} This is done by modifying the @t[@@BEGIN] instruction by inserting @b[keyword=value] pairs after the environment name, thus: @Verse{@@BEGIN(@b[environment],@b[keyword value],..)} Such a modification will last for the duration of that particular excursion into the environment only, eg: @begin[Verse] @@BEGIN . . @@END[FLUSHLEFT] @end[Verse] @subsection(The @t[@@DEFINE] Instruction) @label[DefineInstruction] @index[DEFINE instruction] @index[@@Define instruction] The final way of effecting changes to the finished document is to define and use totally new environments. This type of change is achieved by using the @t[@@DEFINE] instruction which may take one of two forms: @begin[Verse] @@DEFINE{@b[newenvironment],..,@b[keyword] @b[value],..} @@DEFINE"@b[newenvironment]=@b[oldenvironment],..@b[keyword] @b[value],.." @end[Verse] where @b[keyword] and @b[value] have their usual meanings, @b[newenvironment] is the name of the environment being defined, and @b[oldenvironment] is the name of an existing environment. The effect of the first form is to define a totally new environment according to the attributes specified in the @b[keyword value] list, eg: @begin[Verse] @@DEFINE'RAGGEDTEXT, FILL, JUSTIFICATION OFF, SPACING 1' @end[Verse] The effect of the second form is to equate @b[newenvironment] to @b[oldenvironment] and then to modify @b[newenvironment] as specified in the @b[keyword value] list, eg: @begin[Verse] @@DEFINE[RAGGEDTEXT=TEXT, JUSTIFICATION OFF] @end[Verse] @subsection[Environment Keywords] @label[EnvironmentKeywords] @index[Environment keywords] @seealso[primary="Environment keywords",other="STYLE keywords"] The set of keywords and values for use with the @t[@@MODIFY], modified @t[@@BEGIN] and @t[@@DEFINE] instructions is different from the set for use with the @t[@@STYLE] instruction (though there is some duplication). These keywords are now described. @begin{description,leftmargin +12,indent -12} @t[ABOVE]@\specifies the amount of blank space left above an environment. @index[ABOVE keyword] @indexsecondary{primary="Environment keywords", secondary="Above"} Units should be a vertical distance, eg: @Verse{..,ABOVE 3,.. ..,ABOVE 0.5 INCHES,..} If a unit 'name' (eg: @t[INCHES]) is omitted, @t[LINES] is assumed. @t[AFTERENTRY]@\takes a quoted instruction or string as its value. @index[AFTERENTRY keyword] @indexsecondary{primary="Environment keywords", secondary="Afterentry"} This instruction is evaluated and inserted into the input on entry to the environment, eg: @eVerse{..,AFTERENTRY "@@TABCLEAR",..} @remark{@heading[Wizard's Note] If more than one instruction is to be inserted in an afterentry string, the instructions must be separated by spaces, thus: "@TABCLEAR @TABDIVIDE(2)". } @t[BELOW]@\specifies the amount of blankspace left below an environment. @index[BELOW keyword] @indexsecondary{primary="Environment keywords", secondary="Below"} Units are as for @t[ABOVE], eg: @eVerse{..,BELOW 2 CM,.. ..,BELOW 4 LINES,..} @t[BLANKLINES]@\specifies what is to be done with blanklines found in an @index[BLANKLINES keyword] @indexsecondary{primary="Environment keywords", secondary="Blanklines"} environment. @b{value} may take the value @t[IGNORED], @t[BREAK] or @t[KEPT,] eg: @eVerse[..,BLANKLINES KEPT,..] @t[BREAK]@\controls the output of line breaks at the start and finish of @index[BREAK keyword] @indexsecondary{primary="Environment keywords", secondary="Break"} environments. @b{value} may be one of @t[BEFORE], @t[AFTER], @t[AROUND] or @t[OFF], eg: @verbatim[..,BREAK AROUND,..] If the @t[BREAK] keyword is not present, @t[BREAK OFF] is assumed, if the @t[BREAK] keyword is present, the default value is @t[AROUND]. @t[CAPITALIZED]@\controls whether output text is in upper case. @index[CAPITALIZED keyword] @indexsecondary{primary="Environment keywords", secondary="Capitalized"} @b{value} should be one of @t[ON], @t[YES], @t[OFF], @t[NO], eg: @eVerse{..,CAPITALIZED NO,.. ..,CAPITALIZED ON,..} @t[CENTRED]@\specifies that text be placed centrally between the prevailing @index[CENTRED keyword] @indexsecondary{primary="Environment keywords", secondary="Centred"} margins. @t[CENTRED] does not take a value word, eg: @Verse{..,CENTRED,..} @t[CENTRED] is one of a group of mutually exclusive environment attributes - @t[CENTRED], @t[FILL], @t[FLUSHLEFT] and @t[FLUSHRIGHT]. @t[CONTINUE]@\if @W(@t[BREAK AROUND]) or @W(@t[BREAK AFTER]) is set, determines @index[CONTINUE keyword] @indexsecondary{primary="Environment keywords", secondary="Continue"} whether the line following an excursion into another environment resumes the previous paragraph or starts a new one. @b{value} may be any of @t[ALLOWED], @t[FORCE] or @t[OFF], eg: @eVerse{..,CONTINUE ALLOWED,..} @t[COUNTER]@\specifies which counter applies to the environment, and which @index[COUNTER keyword] @indexsecondary{primary="Environment keywords", secondary="Counter"} counter is found by @t[@@TAG]. @b{value} should be one of the counter names, eg: @eVerse{..,COUNTER CHAPTER,..} @t[FACECODE]@\controls the facecode in which the environment is printed, eg: @index[FACECODE keyword] @indexsecondary{primary="Environment keywords", secondary="Facecode"} @Verse[..,FACECODE B,..] For a list of the facecodes supported by the various devices accessible to SCRIBE, please see section @ref[DeviceFaceCodes]. @t[FILL]@\forces line filling. @index[FILL keyword] @indexsecondary{primary="Environment keywords", secondary="Fill"} @t[FILL] takes no value word. @t[CENTRED], @t[FILL], @t[FLUSHLEFT] and @t[FLUSHRIGHT] are mutually exclusive attributes, eg: @eVerse{..,FILL,..} @t[FLUSHLEFT]@\forces each line of text to the current left margin. @index[FLUSHLEFT keyword] @indexsecondary{primary="Environment keywords", secondary="Flushleft"} @t[FLUSHLEFT] takes no value word, and @t[CENTRED], @t[FILL], @t[FLUSHLEFT] and @t[FLUSHRIGHT] are mutually exclusive attributes, eg: @eVerse{..,FLUSHLEFT,..} @t[FLUSHRIGHT]@\forces each line of text to the current right margin. @index[FLUSHRIGHT keyword] @indexsecondary{primary="Environment keywords", secondary="Flushright"} @t[FLUSHRIGHT] takes no value word, and @t[CENTRED], @t[FILL], @t[FLUSHLEFT] and @t[FLUSHRIGHT] are mutually exclusive attributes, eg; @eVerse{..,FLUSHRIGHT,..} @comment{@t[FONT]@\TO BE INSERTED LATER @index[FONT keyword] @indexsecondary[primary="Environment keywords", secondary="Font"] } @t[INDENT]@\controls 'start of paragraph' indentation with respect to the current @index[INDENT keyword] @indexsecondary{primary="Environment keywords", secondary="Indent"} left margin. @b{value} should be a horizontal distance, eg: @Verse{..,INDENT 0.25 INCH,.. ..,INDENT 6,..} If no unit is specified, @t[CHARS] is assumed. @t[INDENTATION]@\same as @t[INDENT]. @indexsecondary{primary="Environment keywords", secondary="Indentation keyword"} @index[INDENTATION keyword] @t[INITIALIZE]@\same as @t[AFTERENTRY]. @index[INITIALIZE keyword] @indexsecondary{primary="Environment keywords", secondary="Initialize"} @t[JUSTIFICATION]@\controls right justification of the output, and may only be @index[JUSTIFICATION keyword] @indexsecondary{primary="Environment keywords", secondary="Justification"} used in a filled environment. @b{value} should be one of @t[ON], @t[OFF], @t[YES] or @t[NO], eg: @eVerse{..,JUSTIFICATION YES,.. ..,JUSTIFICATION OFF,..} @t[LEADINGSPACES]@\controls what is done with leading spaces in manuscript file @index[LEADINGSPACES keyword] @indexsecondary{primary="Environment keywords", secondary="Leadingspaces"} lines. @b{value} should be one of @t[IGNORED], @t[COMPACT] or @t[KEPT], eg: @eVerse{..,LEADINGSPACES KEPT,..} @t[LEFTMARGIN]@\sets the width of the left margin. @index[LEFTMARGIN keyword] @indexsecondary{primary="Environment keywords", secondary="Leftmargin"} @b{value} should be a horizontal distance, eg: @Verse[..,LEFTMARGIN 5,.. ..,LEFTMARGIN +0.5 INCHES,..] Signed distances are effected with respect to the prevailing left margin; unsigned distances are effected with respect to the left hand edge of the output file 'page' (and thus will produce a left margin of that size when the output file is printed). @t[LEFTMARGIN], @t[LINEWIDTH] and @t[RIGHTMARGIN] are related keywords, and only two of them may be specified at any one time. @t[LINEWIDTH]@\specifies the distance between the left and right margins. @index[LINEWIDTH keyword] @indexsecondary{primary="Environment keywords", secondary="Linewidth"} A horizontal distance should be used, eg: @Verse{..,LINEWIDTH 65 EMS,.. ..,LINEWIDTH 7 INCHES,..} @t[LEFTMARGIN], @t[LINEWIDTH] and @t[RIGHTMARGIN] are related keywords, and only two of them may be specified at any one time. @t[NEED]@\enables a test for sufficient space remaining on the current page to @index[NEED keyword] @indexsecondary{primary="Environment keywords", secondary="Need"} be made. @b{value} should be a vertical distance, eg: @Verse[..,NEED 4 LINES,.. ..,NEED 3.5 INCHES,..] If there is not enough space remaining on the current page, a page throw will be inserted in the output file. @t[NUMBERED]@\specifies a template for numbering paragraphs in the environment. @index[NUMBERED keyword] @indexsecondary{primary="Environment keywords", secondary="Numbered"} Please consult the SCRIBE User Manual @cite[UNILOGIC84] for further details. @t[NUMBERFROM]@\gives the initial value for the numbering of paragraphs in an @index[NUMBERFROM keyword] @indexsecondary[primary="Environment keywords", secondary="Numberfrom"] environment, eg: @eVerse(..,NUMBERFROM 4,..) @t[PAGEBREAK]@\controls whether the start or end of an environment causes a page @index[PAGEBREAK keyword] @indexsecondary[primary="Environment keywords", secondary="Pagebreak"] break. @b[value] may be any of the set; @t[OFF], @t[BEFORE], @t[AFTER], @t[AROUND], @t[UNTILODD] or @t[UNTILEVEN], eg: @Verse[..,PAGEBREAK UNTILODD,..] The setting of the @t[DOUBLESIDED] keyword with a @t[@@STYLE] instruction may have a bearing on the effect of a @t[PAGEBREAK] keyword. Please see section @ref[StyleInstruction] below for details. @t[REFERENCED]@\is like @t[NUMBERED] but provides a template for @index[REFERENCED keyword] @indexsecondary[primary="Environment keywords", secondary="Referenced"] cross-references to the paragraph number. Please consult the SCRIBE User Manual @cite[UNILOGIC84] for further details. @t[RIGHTMARGIN]@\sets the width of the right margin. @index[RIGHTMARGIN keyword] @indexsecondary{primary="Environment keywords", secondary="Rightmargin"} @b{value} should be a horizontal distance, eg: @Verse[..,RIGHTMARGIN -5,.. ..,RIGHTMARGIN 0.5 INCHES,..] Signed distances are effected with respect to the prevailing right margin; unsigned distances are effected with respect to the right hand edge of the output file 'page' (and thus will produce a margin of that size when the output file is printed). @t[LEFTMARGIN], @t[LINEWIDTH] and @t[RIGHTMARGIN] are related keywords, and only two of them may be specified at any one time. @t[SCRIPT]@\specifies whether text is to be placed above or below the global @index[SCRIPT keyword] @indexsecondary{primary="Environment keywords", secondary="Script"} baseline. @b[value] may be either +1 or -1, eg: @eVerse[..,SCRIPT +1,.. ..,SCRIPT -1,..] @comment{ @t[SINK]@\TO BE INSERTED LATER @index[SINK keyword] @indexsecondary{primary="Environment keywords", secondary="Spaces"} } @t[SPACES]@\specifies how multiple spaces in the manuscript file are treated. @index[SPACES keyword] @indexsecondary{primary="Environment keywords", secondary="Spaces"} @b{value} should be one of @t[KEPT], @t[COMPACT], @t[IGNORED] or @t[NORMALIZED], eg: @eVerse[..,SPACES COMPACT,..] @t[SPACING]@\sets the line spacing. @index[SPACING keyword] @indexsecondary{primary="Environment keywords", secondary="Spacing"} @b{value} should be a vertical distance, eg: @eVerse[..,SPACING 2,.. ..,SPACING 0.25 INCHES,..] @t[SPREAD]@\specifies the additional vertical space to be added to @t[SPACING] @index[SPREAD keyword] @indexsecondary{primary="Environment keywords", secondary="Spread"} when setting up the inter-paragraph spacing. @b{value} should be a vertical distance, eg: @eVerse[..,SPREAD 1,..] @t[UNDERLINE]@\specifies which characters are to be underlined in the document @index[UNDERLINE keyword] @indexsecondary{primary="Environment keywords", secondary="Underline"} file. @b{value} should be one of @t[OFF], @t[ALPHANUMERICS], @t[NONBLANK] or @t[ALL], eg: @eVerse[..,UNDERLINE ALL,..] @t[UNNUMBERED]@\states that an environment is to have unnumbered paragraphs. @index[UNNUMBERED keyword] @indexsecondary{primary="Environment keywords", secondary="Unnumbered"} @t[UNNUMBERED] does not take a value word, eg: @eVerse[..,UNNUMBERED,..] @t[USE]@\allows one environment definition to be used within another. @index[USE keyword] @indexsecondary{primary="Environment keywords", secondary="Use"} Please see the SCRIBE User Manual @cite[UNILOGIC84] for further details. @end{description} @comment{The Unilogic SCRIBE environment keywords @t[FLOAT], @t[FLOATPAGE], @t[FONT], @t[FREE], @t[GROUP], @t[OVERSTRUCK], @t[SIZE] and @t[WITHIN] have not been implemented.} Any Unilogic environment keywords not described here may be assumed not to have been implemented in the local version of SCRIBE. @subsection[Page Layout] @mylabel[PageLayout] Figure @value[sectionnumber] shows the notional page layout used by SCRIBE in formatting the standard environments described in section @ref[StandardEnvironments] in terms of those keywords which affect the overall page layout. The use or effect of many keywords which produce only a slightly 'visible' effect on overall page layout is not illustrated. The capitalized words in this figure are SCRIBE keywords which are described in the appropriate sections above (sections @ref[StyleKeywords] and @ref[EnvironmentKeywords]). The instruction used to set the value of any given @b[keyword] is given in brackets after the keyword, according to the following scheme: @t[D - @@DEFINE] instruction; @t[M - @@MODIFY] instruction; @t[S - @@STYLE] instruction. These three instructions are described in detail in sections @ref[StyleInstruction], @ref[ModifyInstruction] and @ref[DefineInstruction] above. @newpage @blankspace[9.2inch] @centre(Figure @value[sectionnumber]: Nominal Page layout used by SCRIBE) @newpage @section{Predefined Strings} @label[PredefinedStrings] @index[Predefined strings] @indexsecondary{primary="Strings", secondary="Predefined"} The @t[@@VALUE] instruction retrieves the contents of strings and outputs them to the document file. @index[@@Value instruction] @index[VALUE instruction] These strings can either have been defined by the user, using the @t[@@STRING] instruction or can be one of a number of strings predefined and known to SCRIBE. @index[@@String instruction] @index[STRING instruction] The form of the @t[@@VALUE] instruction is: @Verse{@@VALUE(@b[stringname])} and the following predefined stringnames yield the specified results: @subsection{Site Information} @mylabel[SiteInformation] @index[Site information] @begin{description,leftmargin +12, indent -12} @t[SCRIBEVERSION]@\The current SCRIBE version number. @indexsecondary{primary="Predefined strings", secondary="Scribeversion"} @index[SCRIBEVERSION string] @eVerse[@value{scribeversion}] @t[SITE]@\The name of the institution running SCRIBE; for example: @indexsecondary{primary="Predefined strings", secondary="Site"} @index[SITE string] @eVerse[@Value{site}] @end{description} @subsection{Calendar Information} @mylabel[CalendarInformation] @index[Calendar information] @begin{description,leftmargin +8,indent -8} @t[DATE]@\The current calendar date; for example @eVerse[@value{date}] @t[DAY]@\The day of the month; for example: @indexsecondary{primary="Predefined strings", secondary="Day"} @index[DAY string] @eVerse[@value{day}] @t[MONTH]@\The name of the current month of the year; for example: @indexsecondary{primary="Predefined strings", secondary="Month"} @index[MONTH string] @eVerse[@value{month}] @t[TIME]@\The time when the current SCRIBE run began; for example: @indexsecondary{primary="Predefined strings", secondary="Time"} @index[TIME string] @eVerse[@value{time}] @t[WEEKDAY]@\The name of the current day of the week; for example: @indexsecondary{primary="Predefined strings", secondary="Weekday"} @index[WEEKDAY string] @eVerse{@value[weekday]} @t[YEAR]@\The current year; for example: @indexsecondary{primary="Predefined strings", secondary="Year"} @index[YEAR string] @eVerse[@value{year}] @end{description} @subsection{Information on Current SCRIBE Run} @mylabel[RunTimeInformation] @index[Run time information] @begin{description,leftmargin +10,indent -10} @t[DEVICENAME]@\The name of the output device requested for this run; for @indexsecondary{primary="Predefined strings", secondary="Devicename"} @index[DEVICENAME string] example: @eVerse[@value(devicename)] @t[MANUSCRIPT]@\The name of the manuscript file currently being processed; @indexsecondary{primary="Predefined strings", secondary="Manuscript"} @index[MANUSCRIPT string] for example: @eVerse[@value{manuscript}] @t[PAGE]@\The current page number in this document; for example: @indexsecondary{primary="Predefined strings", secondary="Page"} @index[PAGE string] @eVerse[@value{page}] @t[SECTIONTITLE]@\The section title specified in the last sectioning @indexsecondary{primary="Predefined strings", secondary="Sectiontitle"} @index[SECTIONTITLE string] instruction; for example: @Verse[@value{sectiontitle}] In an unsectioned document a null value is returned. @remark{@heading[Wizard's Note] Warning, if the section title has bracketed portion, and is used in a page heading or footing, the bracketed portion of the title will cause an error in the actual page heading or footing printed - see Wizard's Note on page @pageref[wizardsnote1] } @t[SECTIONNUMBER]@\The section number of the last sectioning instruction given; @indexsecondary{primary="Predefined strings", secondary="Sectionnumber"} @index[SECTIONNUMBER string] for example: @Verse[@value{sectionnumber}] In an unsectioned document a null value is returned. @t[TIMESTAMP]@\The date and time when the current SCRIBE run began; for example: @indexsecondary{primary="Predefined strings", secondary="Timestamp"} @index[TIMESTAMP string] @eVerse[@value{timestamp}] @t[USERNAME]@\The user account (or job) code is given; for example: @indexsecondary{primary="Predefined strings", secondary="Username"} @index[USERNAME string] @eVerse[@value{username}] @end{description} @comment{The Unilogic SCRIBE predefined strings, @t[SOURCEFILE], @t[FILEDATE] and @t[ROOTFILEDATE] have not been implemented.} Any Unilogic predefined strings not described here may be assumed not to have been implemented in the local version of SCRIBE. @section{Document Types} @label[DocumentTypes] @index[Document types] @subsection{Introduction} The standard environments described above are always available as is the automatic counting and numbering of pages. Depending on the @b(documenttype) specified in the @t"@@MAKE" instruction: @Verse[@@MAKE(@b{documenttype})] there may be additional document-specific environments, counters, cross-referencing and indexing facilities available. For example, document type @t[LETTER] has an environment defined for each of the parts of a personal letter - the address, the greeting, the body, etc.; (there is no requirement that these environments be used in a sensible order, or indeed at all). Other document types provide: @begin{itemize} automatic counting and numbering of sections, and of subsections within sections, etc., to a variety of levels according to document type cross referencing within the text to preceding or following sections automatic contents page generation in sectioned documents automatic counting and numbering of theorems, equations etc., within sections automatic indexing in several styles @end[itemize] The following are the document types available in SCRIBE: @subsection[Unsectioned Document Types] @mylabel[UnsectionedDocumentTypes] @begin{description,leftmargin +8,indent -8} @t[LETTER]@\produces a personal letter. @index[LETTER] @indexsecondary[primary="Document types",secondary="Letter"] The following additional environments are defined: @begin{itemize} @t[RETURNADDRESS] @t[ADDRESS] @t[GREETING] @t[BODY] @t[NOTATIONS] (closings or initials) @t[POSTSCRIPT] @end{itemize} The @t"RETURNADDRESS" environment is entered automatically at the start of the manuscript. @t[TEXT]@\is the default document type (ie, the one SCRIBE uses if there is no @t[@@MAKE] @index[TEXT] @indexsecondary[primary="Document types",secondary="Text"] instruction in the manuscript file). It has no facilities beyond the standard ones. At the start of the manuscript it enters the @t[TEXT] environment mentioned earlier, which has filled, justified paragraphs. @t[TEXT] is the only document type which is also an environment and it is both the default environment and the default document type. That is, if no instructions indicate otherwise, SCRIBE will behave as if it had encountered the three instructions: @Verse{@@MAKE(TEXT) @@BEGIN(TEXT) . . @@END(TEXT)} whenever it processes a manuscript file. @end[description] @subsection[Sectioned Document Types] @label[SectionedDocumentTypes] @begin[description,leftmargin +8,indent -8] @t[ARTICLE]@\is the simplest of the sectioned document types. @index[ARTICLE] @indexsecondary[primary="Document types",secondary="Article"] The following sections are defined (please see section @ref{Sectioning Instructions} for full details): @begin{itemize} @need[7] @t[SECTION] @t[SUBSECTION] within @t[SECTION] @t[PARAGRAPH] within @t[SUBSECTION] @t[APPENDIX] @t[APPENDIXSECTION] within @t[APPENDIX] @t[PREFACESECTION] (un-numbered) @t[UNNNUMBERED] section (un-numbered) @end{itemize} All sections are automatically numbered except where indicated. @t[ARTICLE] has an automatically generated table of contents but no index. @t[REPORT]@\is a sectioned document type similar to @t[ARTICLE] but which has @index[REPORT] @indexsecondary[primary="Document types",secondary="Report"] numbered @t[CHAPTER]s in addition to the sections available in @t[ARTICLE]. @t[MANUAL]@\is a sectioned document type which recognises the same sectioning @index[MANUAL] @indexsecondary[primary="Document types",secondary="Manual"] instructions as @t[REPORT] but also has indexing facilities (see section @ref{indexingInstructions}). @end{description} Other document types familiar to the experienced SCRIBE user, @t[THESIS], @t[BROCHURE], @t[GUIDE], @t[REFERENCECARD] and @t[SLIDES] are not yet available with SCRIBE. It is intended that there will be a local EMAS document type called @t[VIEW] which will produce a document file suitable for "Viewing" on-line. @section{Device Types} @label[DeviceTypes] @index[Device types] @index[Output devices] The device to which the user wants his document file to be listed is specified by the @t[@@DEVICE(]@b{devicename}@t[)] instruction. If none is specified SCRIBE prepares the output for the normal computer line printer. The characteristics of the various devices recognised by SCRIBE are as follows: @subsection{Computer Line Printer} @mylabel[LinePrinter] @index[Line printer] @indexsecondary[primary="Device types",secondary="Line Printer"] @begin{format} @tabclear @tabset(2.5inches) SCRIBE device type@\LPT Page length@\66 lines Page width@\132 characters Devices available on EdNet@\.LP25, .LP15, all 'standard' lineprinters @end{format} No special fonts are available with this device. Boldfacing is achieved by overprinting, and sub- and super-scripting are achieved by using a full line for the sub- or super-script. @subsection{Unpaged Terminal File} @mylabel[UnpagedTerminalFile] @index[Unpaged file] @indexsecondary[primary="Device types",secondary="Unpaged file"] @begin{format} @tabclear @tabset(2.5inches) SCRIBE device type@\FILE Page length@\Unpaged Page width@\80 characters Devices available on EdNet@\all 'standard' terminals @end{format} No special fonts are available with this device. Underlining, overprinting, sub- and super-scripting are not possible with this device. @subsection{Philips GP300 Dot Matrix Printer} @mylabel[GP300] @index[Phillips GP300 printer] @indexsecondary[primary="Device types",secondary="Philips GP300 printer"] @begin{format} @tabclear @tabset{2.5inches} SCRIBE device type@\GP300 Page length@\11.6inches Page width@\8.25inches Devices available on EdNet@\.DP15, .DP25 @end{format} The typefaces (facecodes) available with this printer are described briefly in section @ref[GP300FaceCodes] below. For a full description, please consult ERCC User Note 50 @cite[ERCC84a]. There is an irreducible hardware topmargin of 0.5 inches, and hardware left margin of 0.75 inches associated with this device. These values must be taken into account whenever any modification is being considered. The line spacing may only be set in integral multiples of 0.25 lines. Line spacings not conforming to this requirement will be rounded down to the next line spacing which does satisfy this condition; thus @t[SPACING 1.26] will be rounded to @t[SPACING 1.25], and @t[SPACING 1.24] to @t[SPACING 1.00]. Warning: A real money charge is made on a per sheet basis for using this device. For details of current charges, please consult the Advisory Service. @subsection{Xerox X2700 Laser Printer} @mylabel[X2700] @index[Xerox X2700 printer] @indexsecondary[primary="Device types",secondary="Xerox X2700 printer"] @begin{format} @tabclear @tabset{2.5inches} SCRIBE device type@\X2700 Page length@\11.6inches Page width@\8.25inches Devices available on EdNet@\.DP23 @end{format} The typefaces (facecodes) available with this printer are described briefly in section @ref[X2700FaceCodes] below. Line spacing on this device is a function of the typeface being used - thus changing to a different typeface should not require the line spacing to be reset; this will happen automatically. Warning: A real money charge is made on a per sheet basis for using this device. For details of current charges, please consult the Advisory Service. @section[Device Facecodes] @label[DeviceFaceCodes] @index[Facecodes] @subsection[Line Printer Facecodes] @mylabel[LPTFaceCodes] The line printer (device @t[LPT]) has only one fixed width typeface. Use of the @t[FACECODE] environment attribute will therefore generally result in a warning message being output by SCRIBE (see section @ref[NonFatalErrorMessages]). @subsection[Philips GP300 Facecodes] @label[GP300FaceCodes] The Philips GP300 dot-matrix printer has a total of 30 facecodes, of which 25 are available via SCRIBE at the moment. The different facecodes are assigned a 'name' consisting of a letter of the alphabet on an arbitrary basis, except that those facecodes which are produced by SCRIBE's standard facecode environments (see section @ref[FacecodeEnvironments] are assigned the same letter. The available facecodes are: @blankspace[1.0inch] @blankspace[1.0inch] @blankspace[0.5 inch] @blankspace[1.0inch] @blankspace[1.0inch] @blankspace[1.0inch] The full character set for each font is listed in ERCC User Note 50 @cite[ERCC84a]. @comment{@begin[description, spacing 1.0, spread 0.0] @t[A]@\@gothicbold12[Letter Gothic Bold 12pitch.] @t[B]@\@gothicboldps[Letter Gothic Bold proportionally spaced.] @t[C]@\Not used. @t[D]@\@gothicbold10[Letter Gothic Bold 10 pitch.] @t[E]@\@courier10[Courier 10 pitch.] @t[F]@\@courier12[Courier 12 pitch.] @t[G]@\@greekps[Greek proportionally spaced @r[(Greek proportionally spaced).]] @t[H]@\@courierps[Courier proportionally spaced.] @t[I]@\@gothicitalicps[Letter Gothic Italic proportionally spaced.] @t[J]@\@micro10[Micro 10 pitch.] @t[K]@\@micro15[Micro 15 pitch.] @t[L]@\@orator12[Orator 12 pitch.] @t[M]@\@mathsps[Mathematical/Scientific proportionally spaced @r[(Mathematical/Scientific proportionally spaced).]] @t[N]@\@orator10[Orator 10 pitch.] @t[O]@\@oratorps[Orator proportionally spaced.] @t[P]@\@gothicitalic12[Letter Gothic Italic 12 pitch.] @t[Q]@\@data10[Data 10 pitch.] @t[R]@\@gothicps[Letter Gothic proportionally spaced.] @t[S]@\@micro12[Micro 12 pitch.] @t[T]@\@gothic10[Letter Gothic 10 pitch.] @t[U]@\@gothic12[Letter Gothic 12 pitch.] @t[V]@\@gothicitalic10[Letter Gothic Italic 10 pitch.] @t[W]@\@greek12[Greek 12 pitch @r[(Greek 12 pitch).]] @t[X]@\@greek10[Greek 10 pitch @r[(Greek 10 pitch).]] @t[Y]@\@maths12[Mathematical/Scientific 12 pitch @r[(Mathematical/Scientific 12 pitch).]] @t[Z]@\@maths10[Mathematical/Scientific 10 pitch @r[(Mathematical/Scientific 10 pitch).]] @end[description]} @subsection[Xerox X2700 Facecodes] @label[X2700FaceCodes] The Xerox X2700 laser printer has a total of 11 facecodes, all of which are available within SCRIBE. The different facecodes are assigned a 'name' consisting of a letter of the alphabet on an arbitrary basis, except that those facecodes which are produced by SCRIBE's standard facecode environments (see section @ref[FacecodeEnvironments]) are assigned the same letter. @need[13lines] The available facecodes are: @begin[description, spacing 1.0, spread 0.0,leftmargin +4,indent -4] @t[B]@\@kosmos10bp[Kosmos 10 point bold, proportionally spaced.] @t[D]@\@compmodroman11[Computer Modern Roman 11 point, proportionally spaced.] @t[E]@\@compmoditalic11[Computer Modern Italic 11 point, proportionally spaced.] @t[F]@\@titan12p[Titan 12 pitch, fixed width.] @t[G]@\@greek10[Greek 10 point], (Greek 10 point). @t[I]@\@kosmos10ip[Kosmos Italic 12 point, proportionally spaced.] @t[K]@\@kosmos12bp[Kosmos 12 point bold, proportionally spaced.] @t[L]@\@kosmos14p[Kosmos 14 point, proportionally spaced.] @t[M]@\@maths10[Maths 10 point], (Maths 10 point). @t[R]@\@kosmos10p[Kosmos 10 point, proportionally spaced.] @t[S]@\@kosmos8p[Kosmos 8 point, proportionally spaced.] @end[description] @section[Messages from SCRIBE] @mylabel[MessagesFromScribe] SCRIBE has sophisticated error handling routines and is capable of producing messages to cover a wide range of occurrences. Error messages are displayed on the terminal at run time and are also stored in a file called @t[@b#ERR] where @b[manuscript] is the name of the manuscript file, or the first six characters of the manuscript file name if it is greater than six characters long. This file is stored on the user's process and may be inspected at leisure with any suitable editing facility. If no errors are detected, no error file is produced. The messages are split very broadly into three types; fatal errors which will result in the job being abandoned, non-fatal errors which will result in the run being completed but which may result in unpredictable results in the output file, and information messages. These are now described: @subsection[Fatal Error messages] @mylabel[FatalErrorMessages] These messages are produced when fatal errors are encountered. SCRIBE will abandon processing and no output will be produced. @begin[verbatim, below 0.5] disaster in generated text arising from line @b[n] of file @b[manuscript] :- ran off text in directive processing, missing terminator? run abandoned. @end[verbatim] A missing closing delimiter has been detected in one of the SCRIBE instructions which generates text (eg: @t[STRING]). Check for missing delimiters. @begin[verbatim, below 0.5] disaster in line @b[n] of file @b[manuscript] :- no string space for codewords. run abandoned. @end[verbatim] The total space available for @t[@@REF] codewords has been exhausted. You should either remove or shorten some of your codewords, or contact the Advisory service to report the problem. @begin[verbatim, below 0.5] no string space for string names run abandoned. @end[verbatim] The total space available for @t[@@STRING] names has been exhausted. You should either remove or shorten some of your string names, or contact the Advisory Service to report the problem. @begin[verbatim, below 0.5] disaster in line @b[n] of file @b[manuscript] :- page frame overflow run abandoned. @end[verbatim] A too large page size has been selected in a @t[@@DEFINE], @t[@@STYLE] or @t[@@MODIFY] instruction. @begin[verbatim, below 0.5] disaster in line @b[n] of file @b[manuscript] :- ran off text in directive processing. missing terminator? run abandoned. @end[verbatim] An instruction has been encountered which is incomplete in some unspecified way - often this will be a missing closing bracket. @begin[verbatim, below 0.5] disaster in line @b[n] of file @b[manuscript] :- string too large. run abandoned @end[verbatim] A delimited (quoted) string contained in (say) a @t[@@STRING] instruction contains too many characters. The default is 1024 characters, and this value may be increased by using the @t[@@STYLE] instruction and the @t[STRINGMAX] keyword to increase this value. @begin[verbatim, below 0.5] disaster in line @b[n] of file @b[manuscript] :- too many input files. run abandoned. @end[verbatim] Too many files have been inserted in the manuscript file with the @t[@@INCLUDE] instruction. The limit is 8. @begin[verbatim, below 0.5] failed to locate entry for @b[device] in library file. @end[verbatim] You have attempted to specify an unknown device in a @t[@@DEVICE] instruction. @begin[verbatim, below 0.5] failed to locate entry for @b[document] in library file. @end[verbatim] You have attempted to use an unknown document type in a @t[@@MAKE] instruction. @begin[verbatim, below 0.5] failed to locate typecase @b[typecase] in library file. run abandoned. @end[verbatim] Reference has been made to a @b[typecase] (font) for which there is no entry in the database file. Check for incorrectly spelled typecase (font) names in the manuscript file, if these are all correct, please consult the Advisory service. @begin[verbatim, below 0.5] NEWSMFILE fails - File already exists. @end[verbatim] This message is produced when a previous SCRIBE run has been aborted in the middle of the run, and appears because the temporary work file created by SCRIBE (@b[manuscript]#MS) is still in existence in your process. If the current job attempts to produce a larger temporary file than the one already existing, the run will fail. It is recommended therefore that if this message is encountered, the run is aborted and the file @b[manuscript]#MS @t[DESTROY]ed before recommencing the run. If the current SCRIBE run attempts to produce a smaller temporary file than the one already existing, the message will be produced, but the run will continue to completion. @begin[verbatim, below 0.5] the output file @b[document] is (one of) the input file(s) :- run abandoned @end[verbatim] The document file specified will over-write one of the manuscript files as SCRIBE processes the job. This is not allowed. @subsection[Non-Fatal and Warning Messages] @label[NonFatalErrorMessages] These messages are produced when non-fatal errors are encountered. SCRIBE will continue processing and will produce an output file, but the contents will be unpredictable due to the error. @begin[verbatim, below 0.5] error in generated text arising from line @b[n] of file @b[manuscript] :- unknown directive - @b[directive] @end[verbatim] SCRIBE has encountered an inconsistency when generating text internally. This is probably due to an invalid, incorrect or missing closing delimiter in a sectioning instruction. @begin[verbatim, below 0.5] error in generated text arising from page heading/footing on page @p[n] :- line too long. @end[verbatim] SCRIBE has encountered an inconsistency when generating text internally. This is due to a too long page heading or footing. @begin[verbatim, below 0.5] error in index buffer. unknown directive - @b[directive] @end[verbatim] An unknown instruction has been encountered when processing the index. Please check your indexing instructions for the correctness of any embedded instructions. If these are all correct, there may be a problem with the database entries controlling the index format, please report the problem to the Advisory service. @begin[verbatim, below 0.5] error in line @b[n] of file @b[manuscript] :- bad RH side at @b[text] in TEXTFORM command @end[verbatim] The text form of the right hand side of a database @t[@@TEXTFORM] instruction is in error in some way - probably due to a missing opening or closing delimiter. Please consult the Advisory Service. @begin[verbatim, below 0.5] error in line @b[n] of file @b[manuscript] :- illegal codeword - @b[codeword] for command @b[command] @end[verbatim] An illegally long value has been provided for a @t[@@LABEL] or @t[@@TAG] instruction - the maximum length allowed is 31 characters. @begin[verbatim, below 0.5] error in line @b[n] of file @b[manuscript] :- invalid dynamic LHM setting. @end[verbatim] An erroneous left hand margin has been set with the @t[@@$] instruction, probably due to a tab boundary being exceeded. @begin[verbatim, below 0.5] error in line @b[n] of file @b[manuscript] :- misplaced DEVICE command ignored. @end[verbatim] The @t[DEVICE] instruction has not been placed before the text to be processed, or an additional @t[DEVICE] instruction has been encountered. @begin[verbatim, below 0.5] error in line @b[n] of file @b[manuscript] :- misplaced MAKE command ignored. @end[verbatim] The @t[MAKE] instruction has not been placed before the text to be processed, or an additional @t[MAKE] instruction has been encountered. @begin[verbatim, below 0.5] error in line @b[n] of file @b[manuscript] :- no 'referenced' template for counter @end[verbatim] An attempt has been made to use @t[@@TAG] within either @t[@@ITEMISE] or @t[@@DESCRIPTION]. @t[@@TAG] may only be used within @t[@@ENUMERATE]. @begin[verbatim, below 0.5] error in line @b[n] of file @b[manuscript] :- no value defined for LABEL @b[label] @end[verbatim] The numeric section value required for the @t[@@LABEL], @t[@@PAGEREF] and @t[@@REF] instructions to interact correctly has not been assigned a value - probably because an unsectioned document type is being used. @begin[verbatim, below 0.5] error in line @b[n] of file @b[manuscript] :- opening delimiter missing after form @b[textform] @end[verbatim] A textform has been used without a delimited argument after the textform name. Please consult the Advisory Service. @begin[verbatim, below 0.5] error in line @b[n] of file @b[manuscript] :- return marker has not been set. @end[verbatim] A return to marker instruction (@t[@@/]) has been encountered when no return marker (@t[@@!]) has been set. This is almost certainly because a return to marker (@t[@@/]) instruction has been typed where a tab instruction (@t[@@\]) was intended. @begin[verbatim, below 0.5] error in line @b[n] of file @b[manuscript] :- tab set beyond right margin ignored. @end[verbatim] A tab setting has been encountered which occurs beyond the current right margin. The setting will be ignored and the right margin itself will be used as a tab stop. @begin[verbatim, below 0.5] error in line @b[n] of file @b[manuscript] :- no value defined for TAG @b[tag] @end[verbatim] An attempt has been made to use @t[@@TAG] outwith an itemising environment. @t[@@TAG] may only be used within @t[ENUMERATE]. @begin[verbatim, below 0.5] error in line @b[n] of file @b[manuscript] :- unknown counter template code '@b[c]'. @end[verbatim] an unknown counter template (@b[c]) has been used when specifying the counter to be used in a numbered environment. Probable cause is an incorrect counter specification in an @t[@@DEFINE], @t[@@STYLE] or @t[@@MODIFY] instruction. @begin[verbatim, below 0.5] error in line @b[n] of file @b[manuscript] :- unknown directive - @b[directive] @end[verbatim] An attempt has been made to use an instruction which is not recognised by SCRIBE. This error can arise in a number of ways: @begin[itemize] a genuinely erroneous instruction has been used a SCRIBE instruction which is inappropriate to the document type has been used, eg: counters and indexing instructions in document type @t[TEXT] @end[itemize] @begin[verbatim, below 0.5] error in line @b[n] of file @b[manuscript] :- unknown @b[command] keyword - @b[keyword] @end[verbatim] An incorrect keyword has been used in a @t[@@STYLE], @t[@@DEFINE], @t[@@MODIFY], @t[@@BEGIN], @t[@@PAGEHEADING] or @t[@@PAGEFOOTING] instruction. @begin[verbatim, below 0.5] error in line @b[n] of file @b[manuscript] END @b[environment] misplaced. @end[verbatim] This message arises either because: @begin[itemize] An @t[@@END[@b[environment]]] has been found which does not have a matching @t[@@BEGIN[@b[environment]]], or because: A 'nested' environment has been encountered which does not have a closing @t[@@END[@b[environment]]] instruction, thus making it appear that the @t[@@END] instruction of the nesting environment is misplaced. @end[itemize] @begin[verbatim, below 0.5] error in line @b[n] of file @b[manuscript] :- line too long. @end[verbatim] Line @b[n] of the file @b[manuscript] occurs in an unfilled environment and is too long to fit onto the defined page width. The line will however override the defined page width, and an attempt will be made to format the line for the output file with unpredictable results. @begin[verbatim, below 0.5] error in line @b[n] of file @b[manuscript] :- undefined environment for @b[command] command. @end[verbatim] An attempt has been made to use an undefined environment in either a @t[@@BEGIN] or an @t[@@END] instruction. @begin[verbatim, below 0.5] error in line @b[n] of file @b[manuscript] :- missing separator at @b[keyword] in @b[command] command @end[verbatim] A keyword and its attribute are incorrectly separated in a @t[@@DEFINE], @t[@@MODIFY] or @t[@@STYLE] instruction. @comment[ eg: @@EQUATE(REMARK=COMMENT, FACECODE P) ] @begin[verbatim, below 0.5] error in line @b[n] of file @b[manuscript] :- right hand environment of @b[newenvironment]=@b[oldenvironment] is not defined. @end[verbatim] @comment[ eg: @@DEFINE(REMARK=COMMENT) ] A @t[@@DEFINE] instruction is attempting to use a non-existent old environment in an attempt to set up a new environment. @begin[verbatim, below 0.5] error in line @b[n] of file @b[manuscript] :- the name - @b[name] in @b[command] codeword. @end[verbatim] An attempt has been made to use the same @b[codeword] to label two (or more) @t[@@TAG] and/or @t[@@LABEL] instructions. This is not allowed, labels in @t[@@TAG] and @t[@@LABEL] instructions must be unique. @begin[verbatim, below 0.5] error in line @b[n] of file @b[manuscript] :- the name - @b[environment] in command @b[command] is already defined as an environment. @end[verbatim] You have attempted to redefine an already existing environment in a @t[@@DEFINE] instruction, or equate one existing environment to another existing environment in an @t[@@EQUATE] instruction. These operations are forbidden. @begin[verbatim, below 0.5] error in line @b[n] of file @b[manuscript] :- undefined string name for VALUE - @b[stringname] @end[verbatim] An undefined @t[STRING] name has been used in a @t[@@VALUE] instruction. @begin[verbatim, below 0.5] error in line @b[n] of file @b[manuscript] :- unnecessary, missing or bad value for @b[command] keyword - @b[keywordinerror] @end[verbatim] An attempt has been made to use an incorrect keyword or value in a @t[@@DEFINE], @t[@@MODIFY] or @t[@@STYLE] instruction. @begin[verbatim, below 0.5] error in page heading/footing on page @p[n] :- @end[verbatim] The page heading or footing for page number @p[n] is too long. Check that the combined width of the three page heading/footing fields does not exceed tha available line width. @begin[verbatim, below 0.5] error in table of contents buffer. END @b[string] misplaced. @end[verbatim] An error has arisen while generating section titles for the contents table. This is almost certainly because the section title concerned contains two similar closing delimiters. One of the pairs of delimiters should be changed to another type. @begin[verbatim, below 0.5] error in table of contents buffer. unknown directive - @b[directive] @end[verbatim] SCRIBE has encountered an inconsistency in a section title when generating the table of contents (in valid document types). This is probably due to an invalid, incorrect or missing closing delimiter in a sectioning instruction. @begin[verbatim, below 0.5] error. the following codewords were referenced but not defined:- Codeword Type Value used Line numbers(file) @end[verbatim] Use has been made of a codeword in a @t[@@REF] or @t[@@PAGEREF] instruction which has not been defined in a @t[@@LABEL] or @t[@@TAG] instruction. @begin[verbatim, below 0.5] facecode @b[x] not defined in font @b[y] base environment font and facecode used. @end[verbatim] The specified facecode is not defined in the database for the selected device. This may be due to the fact that the device concerned is incapable of providing the facecode requested (eg: bold italic on a line printer. In any case, SCRIBE will 'do the best it can' with the text and will produce some form of output (eg: underlining instead of bold italic). @begin[verbatim, below 0.5] warning. a further run is required to obtain correct values for the following forward references:- Codeword Type Value used Line numbers (file) @end[verbatim] Either, @t[@@REF] and @t[@@TAG] codewords have been incorrectly counted due to a change in the file, or, on the first run with the manuscript file concerned, SCRIBE has not been able to correctly assign section values to all codewords - usually because of forward references to sections not yet processed. The solution is to process the manuscript file again. @begin[verbatim, below 0.5] warning. the following codewords were defined but not referenced:- @b @end[verbatim] The listed codewords were defined in either a @t[@@LABEL] or @t[@@TAG] instruction, but never referenced in a @t[@@REF] or @t[@@PAGEREF] instruction. @subsection[Information Messages] @mylabel[InformationMessages] These messages are for information only and some of them at least will be produced during any SCRIBE run. @begin[verbatim, below 0.5] counter @b[counter]=@b[n] @end[verbatim] In sectioned documents, 'announces' which section is being processed. This is useful for monitoring the progress of a job. Counters so announced are, @t[CHAPTER], @t[SECTION], @t[APPENDIX] and @t[APPENDIXSECTION]. @begin[verbatim, below 0.5] document produced in @b[document] @end[verbatim] SCRIBE has completed processing and stored the output in file @b[document]. @begin[verbatim, below 0.5] phase @b[n] processing MS @end[verbatim] The manuscript file is being processed - either the initial instructions are being digested (@b[n]=1), or the main text is being processed (@b[n]=3). @begin[verbatim, below 0.5] phase @b[n] processing library entry for @b[device] @end[verbatim] The database entry for the appropriate output device is being read. @begin[verbatim, below 0.5] phase @b[n] processing library entry for @b[documenttype] @end[verbatim] The database entry for the appropriate document type is being read. @comment"@begin[verbatim, below 0.5] previous value used for forward references to codeword - @b[label] @end[verbatim] A reference (@t[@@REF] or @t[@@PAGEREF]) to a labelled (@t[@@LABEL] or @t[@@TAG]) portion of the manuscript has been successfully processed." @begin[verbatim, below 0.5] phase @b[n] processing index. @end[verbatim] The index is being prepared in document types which allow this. @begin[verbatim, below 0.5] phase @b[n] processing table of contents. @end[verbatim] the contents page is being processed in appropriate document types. @begin[verbatim, below 0.5] the following forward references were undefined:- line @b[n] @b[label] @end[verbatim] Reference has been made (in a @t[@@REF] or @t[@@PAGEREF] instruction) to a label which has not been defined with a @t[@@LABEL] or @t[@@TAG] instruction. @section[Additional Facilities] @mylabel[AdditionalFacilities] @subsection[Extensions to the Basic @t(SCRIBE) Command] @mylabel[ExtensionsToScribe] The basic SCRIBE command may be extended in several ways: @begin[enumerate, leftmargin +4, indent -4, numberlocation lfl] The manuscript file may be a member of a partitioned file, thus, the command: @tag[pdfile] @begin[verbatim] Command:SCRIBE @b[pdfile]_@b[member],@b[document] @end[verbatim] where @b[pdfile]_@b[member] is the partitioned file member containing the input to SCRIBE is valid. Manuscript files may be concatenated in a SCRIBE command to give one @tag[concat] output file thus, the command: @begin[verbatim] Command:SCRIBE @b[manuscript1]+@b[manuscript2]+...+@b[manuscriptn],@b[document] @end[verbatim] is valid, where the @b[manuscript]s are the manuscript files to be processed with SCRIBE. The output device may be specified at run time if a SCRIBE command of the form: @begin[verbatim] Command:SCRIBE @b[manuscript],@b[document],@b[devicetype] @end[verbatim] is given, where @b[devicetype] is one of the device types known to SCRIBE (see section @ref[devicetypes]). If a device type has been specified with a @t[@@MAKE] instruction in the manuscript file, this device is overridden by that specified at run time. @index[PersonalDatabases] Personal databases may be referenced by a SCRIBE manuscript file if a modified form of the SCRIBE command is used: @begin[verbatim] Command:SCRIBE @b[manuscript],@b[document],,@b[database] @end[verbatim] where @b[manuscript] and @b[document] have any of the meanings assigned to them in the SCRIBE primer @cite[ERCC84b] or at items @ref[pdfile] and @ref[concat] above, and @b[database] is the user's (or departmental, or whatever) personal database. A SCRIBE database is a pdfile with four members named DEVICE, MAKE, TYPECASE and WIDTH. It is envisaged that eventually, departments may wish to set up their own databases containing formatting information satisfying departmental requirements for certain types of documents. Setting up such databases is @b[not] a trivial task, and anyone intending to do this is recommended to contact in the first instance the Advisory staff. @end[enumerate] @subsection[Remote Access to the ERCC VAX/VMS] @mylabel[RemoteAccessToERCVAX] Remote access to Unilogic SCRIBE running on the ERCC VAX/VMS is available (from EMAS only) via the VSCRIBE command. Before using the VSCRIBE command, you must INSERT the library ERCC17.VAXSCRIBE into your search directory, thus, the command: @begin[verbatim] Command:INSERT ERCC17.VAXSCRIBE @end[verbatim] You may then use the VSCRIBE command in the form: @begin[verbatim] Command:VSCRIBE @b[manuscript],@b[document] @end[verbatim] or: @begin[verbatim] Command:VSCRIBE INPUT:@b[manuscript] OUTPUT:@b[document] @end[verbatim] where @b[manuscript] and @b[document] have the meanings assigned to them in the SCRIBE primer @cite[ERCC84b]. In both cases, your background password will be prompted for in the form: @begin[verbatim] BACKPASS: @end[verbatim] @b[manuscript] will be processed with Unilogic SCRIBE on the VAX and the output returned to @b[document]. In addition, a file @b[file]#ERR may be returned to the submitting process. This file will contain details of any errors which have occurred in the processing of the file with Unilogic SCRIBE on the VAX. Remember that if you are using Unilogic SCRIBE, your @b[manuscript] must contain Unilogic SCRIBE instructions only. There are one or two Edinburgh SCRIBE instructions which either do not exist in Unilogic SCRIBE (eg: @t[@@INDEXMAIN], @t[@@INDEXSECONDARYMAIN]), have a slightly different format (eg: @t[@@INDEXSECONDARY]) or are spelt differently (eg: Edinburgh SCRIBE - @t[CENTRE]; Unilogic SCRIBE - @t[CENTER]). In all cases of dubiety, the Unilogic SCRIBE User Manual @cite[UNILOGIC84] should be regarded as giving the correct information, though @b[most] of what is available in Edinburgh SCRIBE can in fact be processed with Unilogic SCRIBE without any change. @subsection[Remote Access to the SERC DECsystem-10] @mylabel[RemoteAccessToDEC10] Remote access to the SERC DECsystem-10 is via a further incantation of the SCRIBE command: @begin[verbatim] Command:SCRIBE @b[manuscript],@b[document],DEC10 @end[verbatim] where @b[manuscript] and @b[document] have the meanings assigned to them in the SCRIBE primer @cite[ERCC84b]. @b[manuscript] will be processed on the DECsystem-10 and the output returned to @b[document]. Processing will be notified via a MAIL message sent to the submitting process from the DECsystem-10. In the event of any errors occurring, this will be indicated in the MAIL message referred to above, and details of the errors will be contained in another MAIL message, also sent to the submitting process. For full details of use of the MAIL command, please see @cite[ERCC85]. @subsection[Direct Access to the DECSystem-10 and VAX] @mylabel[DirectAccessToERCVAX+DEC10] Under certain circumstances, demanding users requiring to process very large multiple input file SCRIBE jobs may need direct access to the VAX (or the DECsystem-10). Details of how to run SCRIBE 'live' on these machines is outwith the scope of this document. For details of how to gain direct access to these machines, please contact in the first instance the Advisory service. @subsection[Keeping up-to-date] @mylabel[keepinguptodate] It is intended that both this reference manual and the SCRIBE primer @cite[ERCC84b] be maintained in as up-to-date a state as is practicable. However, for the most recent additions/corrections/bug reports/bug fixes/etc. please see the electronic bulletin board SCRIBE. Bulletin boards are an EMAS MAIL facility which are fully described in reference @cite[ERCC85]. @remark{ @section[Wizard's Workshop] @subsection[Line numbered Verse] @counter(linecounter, numbered <@1.>, referenced <@1.>, incrementedby use, init 0) @define(linenumber, use r, afterentry "@set(linecounter=+5) @b[@ref(linecounter)] ", counter linecounter) @begin[verse, afterentry "tabclear"] A smile because the nights are short!@>@^ And every morning brings such pleasure Of sweet love-making, harmless sport: Love that makes and finds its treasure; Love, treasure without measure.@\@linenumber[] A sigh because the days are long! Long long these days that pass in sighing, A burden saddens every song: While time lags which should be flying, We live who should be dying.@\@linenumber[] @end[verse] @counter(linecounter, numbered <@1>, referenced <@1>, incrementedby use, init 0) @form[linenumber="@set(linecounter=+5) @> @ref(linecounter)"] @begin[verse, afterentry "@tabclear"] A smile because the nights are short!@>@^ And every morning brings such pleasure Of sweet love-making, harmless sport: Love that makes and finds its treasure; Love, treasure without measure.@\@linenumber[] A sigh because the days are long! Long long these days that pass in sighing, A burden saddens every song: While time lags which should be flying, We live who should be dying.@\@linenumber[] @end[verse] This section is devoted to all those little goodies (and gremlins!) which have been collected and made their appearance since SCRIBE first hit the streets (perhaps I should say hit he fan?!). It also includes descriptions in for committed SCRIBE hackers of how to do all sorts of things which are implemented in SCRIBE, but which we don't talk about in the manual or on the course because we don't want to frighten the horses. @begin[centre] WARNING SOME OF THE FOLLOWING CONTAINS EXPLICIT MATERIAL. IF YOU ARE OF A NERVOUS DISPOSITION, DO NOT READ ANY FURTHER! @end[centre] @subsection[Fancy Lists - I] Suppose that you want to set up a list whose numbering scheme is maintained, even though you are continually leaving the list environment to do boring things like start new sections and put actual text into the file. As things stand, you can't do this because every time you leave the list environment, the list counter is reset to zero, so every time you re-enter it, it starts counting at 1 again. You can't actually get around this by staying in the list environment, and escaping to other environments/instructions by using the @@BEGIN/@@END or @@environment or @@instruction constructs within the list, because SCRIBE then merely treats all these little escapades as 'paragraphs' or items within the list, and stuffs a number on them! This is not good medicine, particularly when you end up with (say) a section title which has not only the (correct) section number at the front, but also the (correct but unwanted) item number as held by the list environment. To get around this problem, Colin McArthur has made a few passes with his wand, and come up with the following construct: @begin[verbatim] @@COUNTER(MYCOUNTER, NUMBERED <@@1.>, REFERENCED <@@1.>, INCREMENTEDBY REFERENCE, INIT 0) @@DEFINE(MYLIST, USE DESCRIPTION, AFTERENTRY "@@B[@REF(MYCOUNTER)] ", COUNTER MYCOUNTER) @@SECTION(First Section) @@MYLIST(first item in the list) This is part of the actual text which is to be interspersed between the items in the list - for the purposes of this little example, it is of course merely so much guff. @@MYLIST(and this is the second item in the list) Followed by more text, which is also just a load of old garbage. @@SECTION(Section Two) Now, we've introduced a new section, so we'll be able to see what happens when we really put this lot to the test. @@MYLIST(this is the third item in the list) @@SET[MYCOUNTER=0] @@MYLIST(and this is the fourth which shows that the numbering scheme works OK after being re-set) @@SECTION[The Next Section] And so on it goes, ad nauseam. Clever init!? @end[verbatim] Try it and see if it works (it does!). Perhaps a little explanation of some of the new SCRIBE bits is in order, These include the @t[@@COUNTER] instruction, the @t[INCREMENTEDBY], @t[INIT] keywords to this instruction. If you are really smart, you can use two such list environments to maintain two concurrently numbered lists which run right through your text. Look at the following: @begin[verbatim] @@COUNTER(QCOUNTER, NUMBERED <@@1>, REFERENCED <@@1>, INCREMENTEDBY REFERENCE, INIT 0) @@COUNTER(ACOUNTER, NUMBERED <@@1>, REFERENCED <@@1>, INCREMENTEDBY REFERENCE, INIT 0) @@DEFINE(QUESTION, USE DESCRIPTION, AFTERENTRY "@@B[@@REF(QCOUNTER) Q: ]", COUNTER QCOUNTER) @@DEFINE(ANSWER, USE DESCRIPTION, AFTERENTRY "@@B[@@REF(ACOUNTER) A: ]", COUNTER ACOUNTER) @@SECTION(first section) @@QUESTION(Your name please) @@ANSWER(What's it to do with you) This is an example of an extremely ill-disposed candidate who resents what he considers to be intrusion into his personal space. @@QUESTION(And your chosen subject) @@ANSWER(Bugger off, Jimmy) Which tends to confirm our view as to this candidates suitability for inclusion as a Mastermind contestant. @@SECTION(section two) You have two minutes on 'Buggerof Jimmy' starting.....NOW @@QUESTION(who was Jimmy's closest confidante) @@ANSWER(Eskimo Nell) Correct. @@QUESTION(who got kicked up the Khyber) @@ANSWER(Pass) Correct. @@SECTION(final) And so on and so on. @@QUESTION(Beep, beep, beep) @@QUESTION(I've started, so what will I do) @@ANSWER(finish) Correct. the end @end[verbatim] @subsection[Fancy Lists - II] Quite often, a list is required which looks a bit like this: @begin[verbatim] xxxx xxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxx xxxx xxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxx xxxx xxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx xxxxxxx @end[verbatim] that is, with two aligned 'keywords' in the hanging indent. This is possible using @t[DESCRIPTION] in Unilogic SCRIBE because negative tabs may be set - this however is not allowed in ERCC SCRIBE, so how do we get around it? Like this: @begin[verbatim] @@TABCLEAR @@TABSET[10 20] @@TEXT[xxxx@@\xxxx@@\@@$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx @@TEXT[xxxx@@\xxxx@@\@@$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxx] @@TEXT[xxxx@@\xxxx@@\@@$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxx] @end[verbatim] This is arguably less convenient than using @t[DESCRIPTION] with a negative tabstop, but it is pretty marginal. } @section{References and Further Reading} @begin[bibliography] Browning@tag[browning84] G.K.S., Automatic Typesetting, University Computing, Vol @b[6] No 2, pp 95-98, June 1984. Hamilton-Smith@tag[ercc82] N., Murison J.M. (editors), EMAS 2900: User's Guide, ERCC, October 1982. Murison,@tag[ercc84a] J.M., Philips GP300 Printer: Character Sets, ERCC User Note 50, October 1984. Hare@tag[ercc84b] R.J., A SCRIBE Primer, ERCC User Note 66, February 1985. Shaw@tag[ercc85] S., Electronic Mail on EMAS, ERCC, February 1985. Furuta@tag[furuta82] R., Scofield J., Shaw A., Document Formatting Systems: Survey, Concepts and Issues, ACM Computing Surveys, Vol @b[14], No 3, pp 417-472, September 1982. Reid. Brian K., SCRIBE@tag[unilogic84] Document Production System - User Manual, Unilogic Ltd., April 1984. @end[bibliography] @end{text}