diff options
Diffstat (limited to 'doc/user/typ_book')
-rw-r--r-- | doc/user/typ_book | 420 |
1 files changed, 420 insertions, 0 deletions
diff --git a/doc/user/typ_book b/doc/user/typ_book new file mode 100644 index 0000000..34abde2 --- /dev/null +++ b/doc/user/typ_book @@ -0,0 +1,420 @@ +@Section + @Title { Books } + @Tag { books } +@Begin +@PP +To produce a book, start off with the @Code book setup file and the +books. @Index { books } +book. @Index @Code "@Book" +@Code "@Book" symbol: +@ID @OneRow @Code { +"@SysInclude { book }" +"@Book" +" @Title {}" +" @Author {}" +" @Edition {}" +" @Publisher {}" +" @BeforeTitlePage {}" +" @OnTitlePage {}" +" @AfterTitlePage {}" +" @AtEnd {}" +" @InitialFont { Times Base 12p }" +" @InitialBreak { adjust 1.2fx hyphen }" +" @InitialSpace { lout }" +" @InitialLanguage { English }" +" @PageOrientation { Portrait }" +" @PageHeaders { Titles }" +" @ColumnNumber { 1 }" +" @FirstPageNumber { 1 }" +" @IntroFirstPageNumber { 1 }" +" @OptimizePages { No }" +"//" +} +This shows all the options of @Code "@Book" with their default values. As +usual, these options may be given in any order, and only those +to be changed need be given at all. The meaning of the +@Code "//" symbol after the last option is beyond our scope, but total +disaster will ensue if it is forgotten. +@PP +The {@Code "@Title"}, {@Code "@Author"}, and {@Code "@Edition"} options +will appear on the title page, in the @Code "clines" paragraph breaking +style which centres each line (Section {@NumberOf paras}). The +@Code "@Publisher" option will appear at the foot of the title page. +@PP +The {@Code "@BeforeTitlePage"} option will come out on the page (or +pages) preceding the title page. This is where publishers +advertise other books of a similar kind, perhaps from a series. +@PP +If {@Code "@OnTitlePage"} is given it will replace the title page +that usually appears, superseding the {@Code "@Title"}, {@Code "@Author"}, +{@Code "@Edition"}, and @Code "@Publisher" options in the process. +@PP +The {@Code "@AfterTitlePage"} option will come out on the page +(or pages) following the title page. This is where publishers +traditionally put copyright notices, information about production, +and cataloguing-in-publication data. If this option is empty or +omitted, there will be no such pages. +@PP +The {@Code "@AtEnd"} option will come out on a single unnumbered page +with no page headers or footers, and using the same margins as for even +pages, after the very last page of the book; even after the index if +there is one. It is intended to make it possible to include a back +cover, so @Code "@PageOf last.page" (Section {@NumberOf cross}) does +not take account of any @Code "@AtEnd" page. +@PP +The remaining options are a selection of setup file options (Section +{@NumberOf setup}) that frequently need to be changed. If your changes +to the overall formatting are confined to these options, you can change +them here and avoid having your own setup file. If you already have +your own setup file, change them in either place and omit them in +the other. +@PP +@Code "@InitialFont" is the font of the bulk of the book, +and should contain a family, a face, and a size. The default +value selects the Times family, the Base face, and the 12 point size. +@PP +@Code "@InitialBreak" controls the behaviour of paragraph breaking in +the bulk of the book. It should have three parts: a paragraph +breaking style ({@Code adjust}, {@Code ragged}, etc.), an inter-line +spacing ({@Code "1.2fx"} for single spacing, {@Code "2.4fx"} for +double spacing, and so on), and either @Code "hyphen" or +@Code "nohyphen" for turning hyphenation on or off. It may also +have @Code "nobreakfirst" or @Code "nobreaklast" (or both), meaning +to disallow a page break after the first line of a paragraph, or +before the last, respectively. +@PP +@Code "@InitialSpace" determines how Lout treats white space +between two objects, as described in Section +{@NumberOf white}. @Code "@InitialLanguage" determines the +language of the bulk of the book. +@PP +@Code "@PageOrientation" determines the orientation of the page. Its +value may be {@Code Portrait} (the default), {@Code Landscape}, +{@Code ReversePortrait}, or {@Code ReverseLandscape}. See +Section {@NumberOf pagesize} for further details. +@PP +@Code "@PageHeaders" determines the appearance of page headers and +footers. Its value may be {@Code None}, +{@Code Simple}, {@Code Titles}, or {@Code NoTitles}. Section +{@NumberOf headers} has the details, but just briefly, {@Code None} +and {@Code Simple} are not really suitable for books, @Code Titles +produces full running titles as in the present document, and +@Code "NoTitles" is like @Code "Titles" with the running titles +omitted, leaving just the page numbers. +@PP +@Code "@ColumnNumber" is the number of columns per page in the bulk of +the book, and may be anything from {@Code 1} (the default value) to +{@Code 10}. Irrespective of its value, all prefatory material, all +chapter and appendix headings, and all figures and tables will be +printed full width. There is a separate @Code "@IndexColumnNumber" +option in the setup file which determines the number of columns in +the index (Section {@NumberOf indexes}). +@PP +@Code "@FirstPageNumber" is the page number to be given to the first +non-introductory page. @Code "@IntroFirstPageNumber" is the +page number of the first introductory page; it will usually appear +in Roman but must be given in Arabic. +@PP +Lout ordinarily places lines onto a page until space runs out, then moves +to the next page and so on. This often produces ugly empty spaces at +the bottoms of pages preceding large unbreakable displays. Setting the +@Code "@OptimizePages" option to {@Code "Yes"} causes Lout to examine the +overall situation and try to minimize the ugliness, using the @TeX +optimal paragraph breaking algorithm. It takes two runs to do this, +with intermediate results stored in Lout's cross reference database +(Section {@NumberOf cross}); so deleting file {@Code lout.li} will reset +it, which might be wise after major changes. It is possible for the +optimizer to cycle, never settling on a single final best version; this +is usually caused by footnotes or floating figures inserted at points +which end up near page boundaries. +@PP +After the compulsory @Code "//" comes an optional preface: +preface. @Index @Code "@Preface" +@ID @OneRow @Code { +"@Preface" +" @Title { About this book }" +"@Begin" +"@PP" +"..." +"@End @Preface" +} +Since the title of most prefaces is simply Preface, that is the default +value in English of the @Code "@Title" option. After the preface there +will automatically appear a table of contents listing the introduction, +chapters, sections, subsections, appendices, sub-appendices, bibliography, +and index as appropriate. +@PP +The pages up to this point will be numbered in lower case Roman +numerals; subsequent pages will be numbered in Arabic starting from +the @Code "@FirstPageNumber" option of {@Code "@Book"}. There is +a setup file option for changing this to a single numbering sequence +(see below). +@PP +Next comes an optional abbreviations sections, exactly like the +preface except that its name is @Code "@Abbreviations" and the +abbreviations. @Index @Code "@Abbreviations" +default title in English is Abbreviation. There is no support for +what goes inside; you need to use a list or table to lay out the +abbreviations, in the usual way. +@PP +Next comes an optional introduction, exactly like the preface except that +its name is @Code "@Introduction" and the default title in English is +introduction. @Index @Code "@Introduction" +Introduction: +@ID @OneRow @Code { +"@Introduction" +"@Begin" +"@PP" +"..." +"@End @Introduction" +} +After that comes a sequence of chapters in the usual style: +chapter. @Index @Code "@Chapter" +@ID @OneRow @Code { +"@Chapter" +" @Title { Australian Native Plants }" +"@Begin" +"@PP" +"..." +"@End @Chapter" +} +No @Code "@BeginChapters" or @Code "@EndChapters" symbols are +beginchapters. @Index @Code "@BeginChapters" +endchapters. @Index @Code "@EndChapters" +needed, because these chapters are not inside any other large-scale +structure symbol. Within a chapter, there may be a sequence of sections, +each introduced by {@Code "@Section"}, all bracketed +section.books @SubIndex { in books } +by @Code "@BeginSections" and {@Code "@EndSections"}: +beginsections.books @SubIndex { in books } +endsections.books @SubIndex { in books } +@ID @OneRow @Code { +"preceding text" +"@BeginSections" +"@Section ... @End @Section" +"@Section ... @End @Section" +"..." +"@Section ... @End @Section" +"@EndSections" +} +Within each section there may be subsections, each introduced by +{@Code "@SubSection"}, and the sequence as a whole bracketed by +@Code "@BeginSubSections" and {@Code "@EndSubSections"}: +subsection.books @SubIndex { in books } +beginsubsections.books @SubIndex { in books } +endsubsections.books @SubIndex { in books } +@ID @OneRow @Code { +"preceding text" +"@BeginSubSections" +"@SubSection ... @End @SubSection" +"@SubSection ... @End @SubSection" +"..." +"@SubSection ... @End @SubSection" +"@EndSubSections" +} +The subsections may contain sub-subsections, but +subsubsection.books @SubIndex { in books } +beginsubsubsections.books @SubIndex { in books } +endsubsubsections.books @SubIndex { in books } +there are no sub-sub-subsections. +@PP +After the chapters comes an optional sequence of appendices. Each +is introduced by @Code "@Appendix" in the usual way: +appendix.books @SubIndex { in books } +@ID @OneRow @Code { +"@Appendix" +" @Title { Climatic Regions of Australia }" +"@Begin" +"@PP" +"..." +"@End @Appendix" +} +No @Code "@BeginAppendices" or @Code "@EndAppendices" symbols are +beginappendices.books @SubIndex { in books } +endappendices.books @SubIndex { in books } +needed, because (like chapters) these appendices do not lie inside +any other large-scale structure symbol. The appendices are numbered +A, B, C, etc., as is conventional for them. Within each appendix +there may be a sequence of subappendices, obtained with the +@Code "@SubAppendix" symbol and bracketed by +subappendix.books @SubIndex { in books } +@Code "@BeginSubAppendices" and {@Code "@EndSubAppendices"}: +beginsubappendices.books @SubIndex { in books } +endsubappendices.books @SubIndex { in books } +@ID @OneRow @Code { +"preceding text" +"@BeginSubAppendices" +"@SubAppendix ... @End @SubAppendix" +"@SubAppendix ... @End @SubAppendix" +"..." +"@SubAppendix ... @End @SubAppendix" +"@EndSubAppendices" +} +There are sub-subappendices following the same pattern, but no +subsubappendix.books @SubIndex { in books } +beginsubsubappendices.books @SubIndex { in books } +endsubsubappendices.books @SubIndex { in books } +sub-sub-subappendices. +@PP +The book ends with the last chapter or appendix; any reference list or +index will be appended automatically. Although we have described how to +create books as though everything was in one large file, in practice it +is much better to divide the book into multiple files, following the +method given in Section {@NumberOf organizing}. +@PP +In addition to the {@Code "@Title"} option, each large-scale structure +symbol (i.e. {@Code "@Preface"}, {@Code "@Introduction"}, {@Code "@Chapter"}, +{@Code "@Section"}, {@Code "@SubSection"}, {@Code "@SubSubSection"}, +{@Code "@Appendix"}, {@Code "@SubAppendix"}, and {@Code "@SubSubAppendix"}) +has a @Code "@Tag" option for cross referencing (Section {@NumberOf cross}), +an @Code "@InitialLanguage" option for changing the language of that +part of the document, and a @Code "@RunningTitle" option which will be +used in place of @Code "@Title" in running headers if given. This last +is useful when the full title is rather long. +@PP +The @Code "@Chapter" symbol has three additional options for dividing +parts. @Index { parts of books } +the book into parts: +part.number @Index @Code "@PartNumber" +part.title @Index @Code "@PartTitle" +part.text @Index @Code "@PartText" +@ID @OneRow @Code { +"@Chapter" +" @PartNumber { Part A }" +" @PartTitle { The Ancient World }" +" @PartText { ... }" +} +Any chapter with a non-empty @Code "@PartTitle" option will become the +first chapter of a part. It will be preceded by two pages containing the +part number, title, and text, and there will also be an entry +made in the table of contents. @Code "@PartNumber" and @Code "@PartText" +may be omitted. Parts are @I not numbered automatically: you +have to supply your own numbers or letters as shown above. +@PP +The features described in other chapters are all available within +books. A table of contents and index will appear automatically, and +you will need to change the setup file to avoid them. Endnotes will +appear at the end of the enclosing preface, introduction, chapter, or +appendix. The numbering of figures and tables includes a chapter or +appendix number: the first figure of Appendix C will be Figure C.1, +and so on. Figures and tables within the preface or introduction are +numbered 1, 2, 3, etc. A figure or table will never appear on the +same page as the beginning of a chapter or appendix. References work +as described in Chapter {@NumberOf biblio}. As explained there, it is +possible to have a list of references at the end of each chapter as well +as at the end of the book. +@PP +Within the @Code "book" setup file there is a @Code "@BookSetup" +booksetup. @Index @Code "@BookSetup" +symbol whose options control the appearance of features specific to books +(in other words, the features described in this section). Here is a +representative sample of these options, showing their default values: +@ID @OneRow @Code { +"@Use { @BookSetup" +" # @TitlePageFont { Helvetica Base }" +" # @SeparateIntroNumbering { Yes }" +" # @PrefaceAfterContents { No }" +" # @ReferencesBeforeAppendices { No }" +" # @ChapterStartPages { Any }" +" # @ChapterWord { chapter }" +" # @ChapterNumbers { Arabic }" +" # @ChapterHeadingFont { Bold 2.00f }" +" # @ChapterHeadingBreak { ragged 1.2fx nohyphen }" +" # @ChapterHeadingFormat { number @DotSep title }" +" # @AboveChapterGap { 3.00f }" +" # @ChapterInContents { Yes }" +"}" +} +Section {@NumberOf setup} explains how to make your own setup file and +change its options. @Code "@TitlePageFont" is the font used on the title +title.page.font. @Index @Code "@TitlePageFont" +page of the book, not including a size. @Code "@ChapterStartPages" +determines what kinds of pages chapters and other major components of the +book may begin on, and may be {@Code Any}, {@Code Odd}, or {@Code Even}, +meaning any page, odd-numbered pages only, or even-numbered pages +only. @Code "@SeparateIntroNumbering" +separate.intro.numbering @Index @Code "@SeparateIntroNumbering" +determines whether the introductory part of the book is to have a +separate numbering sequence or not. @Code "@ReferencesBeforeAppendices" +references.before.appendices @Index @Code "@ReferencesBeforeAppendices" +determines whether any final list of references appears before or +after any appendices. @Code "@ChapterWord" determines +the word used in chapter titles; its default value, {@Code "chapter"}, +produces `Chapter' in the current language. The other six options control +the appearance of chapters, and there are similar options for controlling +the other large-scale structure symbols. +@PP +@Code "@ChapterNumbers" determines how chapters will be numbered, and may +be @Code { None }, @Code { Arabic }, @Code { Roman }, @Code { UCRoman }, +@Code { Alpha }, or @Code { UCAlpha }. The default value is @Code Arabic +for chapters and also for all large-scale structure symbols except +appendices, for which it is {@Code UCAlpha}. This produces the appendices +numbered in upper-case letters (A, B, C, etc.) that were mentioned earlier. +@PP +@Code "@ChapterHeadingFont" is the font used for chapter headings. The +default value shown above produces the bold face of the initial font +family, at twice the initial size. A family name is acceptable +here as well. @Code "@ChapterHeadingBreak" is the break style for +chapter headings. +@PP +@Code "@ChapterHeadingFormat" allows you to change +the format of the heading. The symbol @Code "number" within it will +be replaced by the number of the chapter (actually including the word +Chapter as well in the current language, e.g. {@Code "Chapter 12"}); the +symbol @Code "title" within it will be replaced by the title. So you could +write, say, +@ID @Code +"@ChapterHeadingFormat { @Box paint { lightgrey } { number @DP title } }" +to get the title below the number, both enclosed in a box. The default +value uses the @Code "@DotSep" symbol from Section {@NumberOf headers} +to produce the number and title separated by a dot and two spaces, roughly +the same as +@ID @Code "@ChapterHeadingFormat { number. title }" +except when there is no number. This option is applied +to other major headings, in the preface, introduction, table of +contents, appendices, reference list, and index. In all these other +cases, @Code "number" is an empty object, except for appendices, when it +contains @Code "Appendix A" or whatever. +@PP +There is a @Code "@PartHeadingFormat" option for determining the +format of part headings. It works in the same way as +{@Code "@ChapterHeadingFormat"}, with @Code "number" and @Code "title" +symbols standing for the relevant @Code "@PartNumber" and @Code "@PartTitle" +options. The default value is +@ID @Code "@PartHeadingFormat { @CD number @DP @CD title }" +which centres the number and title. The default paragraph breaking +style is {@Code "clines"}, but you may place a @Code "@Break" symbol +within @Code "@PartHeadingFormat" to change this. +@PP +The example of boxed titles for chapters given above suffers from two +practical deficiencies. First, the box won't extend right across the +page, and second, when there is no @Code "number" we don't want the +@Code "@DP" either. Here is a value for @Code "@ChapterHeadingFormat" +that solves both of these problems and looks good in practice: +@ID @OneCol @Code { +"@ChapterHeadingFormat {" +" number @Case {" +" {} @Yield @Box paint { lightgrey } @HExpand { title }" +" else @Yield @Box paint { lightgrey } @HExpand { number @DP title }" +" }" +"}" +} +The @Code "@Case" symbol (Expert's Guide @Cite { $kingston1995lout.expert }) +distinguishes between the cases where @Code "number" is empty and non-empty; +the @Code "@HExpand" symbol expands the horizontal space occupied by the +heading to the maximum possible, so that when the box is drawn around it +it will occupy the full page width. The format can be as +complicated as you like, and there is no need to squeeze it all onto +one line; as always, the end of a line is the same as one space. +@PP +Every chapter and appendix begins on a new page. @Code "@AboveChapterGap" +determines how much space is left blank above the chapter title; the +default value is three times the initial font size. There are similar +options for other large-scale structure symbols, which determine how +much space is left before each one. +@PP +@Code "@ChapterInContents" determines whether or not an entry is made in +the table of contents for each chapter; it may be @Code Yes or {@Code No}, +but would always be {@Code Yes}. The default value of the corresponding +options for sub-subsections and sub-subappendices, however, is {@Code No}. +@End @Section |