18 Tokens, Category Codes, Verbatim Modes.- 18.1 Tokens.- 18.1.1 The Basic Structure of the TEX Program.- 18.1.2 What Are Tokens?.- 18.1.3 Token Types.- 18.1.4 Spaces and Control Sequences.- 18.1.5 Character Codes.- 18.1.6 Category Codes, ?catcode.- 18.1.7 Experiments with Category Codes.- 18.1.8 Initial Category Codes.- 18.1.9 What Is a Letter in TEX?.- 18.1.10 string and Category Codes.- 18.1.11 the and Category Codes, DropPoints.- 18.1.12 The "At" Sign ("@").- 18.1.13 The Return Character, endlinechar.- 18.2 Active Characters.- 18.2.1 The Tilde Is Usually an Active Character.- 18.2.2 Making the Space Character Active, ?space, obeyspaces.- 18.2.3 The Definition of Macro ObeySpaces.- 18.2.4 Making the End-Of-Line Character Active, ?obeylines.- 18.2.5 The Definition of Macro Obeylines.- 18.2.6 Ignoring Active End-of-Line Characters.- 18.2.7 Undoing the Effect of the obey and 0bey Commands.- 18.2.8 Counting the Number of Lines in a File, NumberOfLinesInFile.- 18.2.9 Active Characters in Math Mode.- 18.3 Verbatim Modes.- 18.3.1 Auxiliary Macros for Verbatim Modes.- 18.3.2 A Simple Inline Verbatim Mode.- 18.3.3 Showing the Works of Verb.- 18.3.4 An Improved Inline Verbatim Mode, Verb.- 18.3.5 Display Verbatim Modes.- 18.3.6 BeginVerbatim EndVerbatim Enclose Verbatim Text.- 18.3.7 The Source Code of the Display Verbatim Mode.- 18.3.8 Verbatim Listings of External Files: ListVerb.- 18.3.9 The Definition of Macro ListVerbIf FileExists.- 18.3.10 The Definition of Macro ListVerbAndSource.- 18.3.11 An Example Using Macro ListVerbAndSource.- 18.3.12 Improving the Display Verbatim Mode.- 18.3.13 The Source Code of the New Verbatim Mode.- 18.3.14 The Verbatim Macros Used for this Series.- 18.3.15 Verbatim Macros for this Series.- 18.3.16 Input as Verbatim Text and IfeX Source.- 18.4 Uppercase and Lowercase Characters, uccode, lccode, uppercase, etc.- 18.5 Summary.- 19 More on Tokens.- 19.1 Converting Character Strings to Tokens, and Tokens Back to Character Strings.- 19.1.1 Token to String Conversions, string.- 19.1.2 escapechar.- 19.1.3 string, uppercase and Category Codes.- 19.1.4 Converting Strings to Tokens, csname endcsname.- 19.1.5 Overview of Applications of csname.- 19.1.6 csname... endcsname and relax.- 19.1.7 Macro Calls Inside a csname, endcsname Sequence.- 19.1.8 Macro Definitions Based on csname, NameDef, etc.- 19.1.9 Examples Using the Above Macros.- 19.1.10 An Associative Memory.- 19.2 Array Macros.- 19.2.1 Overview of the Provided Array Functions.- 19.2.2 Beginning of the Source Code.- 19.2.3 The Definition of CCreateArray to Create an Array.- 19.2.4 The Definition of Macro ConvertStringIntoArray.- 19.2.5 The Definition of Macro CCheckIndex.- 19.2.6 Retrieving an Array Element Value.- 19.2.7 Retrieving an Interval of Array Element Values.- 19.2.8 Loading an Array Element Value.- 19.2.9 Loading an Array Element Value Using edef.- 19.2.10 The Definition of Macro CShowArray.- 19.2.11 An Example of Using the Array Macros.- 19.3 Cross-Referencing Using csname...endcsname.- 19.3.1 Overview of the Cross-Reference Macros.- 19.3.2 General Overview of Processing a Document with Symbolic Cross-References.- 19.3.3 The Source Code of the Cross-Reference Macros.- 19.3.4 Defining a Label, QNewLabel, also Label.- 19.3.5 Referring to Entity Numbers and Page Numbers, Ref, PageRef.- 19.3.6 Defining A Label, Label.- 19.3.7 An Example Using the Cross-Reference Macros.- 19.3.8 Default Labels for Ref and PageRef.- 19.3.9 Testing for Duplicate Labels, a New NewLabel.- 19.3.10 Checking Whether Labels Changed, CheckLabels.- 19.3.11 Extending Cross-References.- 19.3.12 Is There An Alternative to a Two-Pass Approach?.- 19.4 Curly Braces.- 19.4.1 Overview.- 19.4.2 The Idea of Grouping.- 19.4.3 Nested Grouping.- 19.4.4 The Category Codes of Curly Braces.- 19.4.5 Empty Groups.- 19.4.6 bgroup and egroup.- 19.4.7 bgroup and egroup in Boxes, Insertions and Tables Built by haligns.- 19.4.8 Using Grouping to Keep Track of the Correct Nesting of Environments.- 19.4.9 Forming Groups Using begingroup and endgroup.- 19.4.10 Implicit Grouping.- 19.4.11 Global Assignments (global) and Global Definitions (gdef, xdef).- 19.4.12 Global Changes and globaldefs.- 19.4.13 Nested Groups and global.- 19.4.14 Grouping and Box Registers.- 19.4.15 aftergroup.- 19.4.16 What Does Not Follow Grouping in TEK?.- 19.4.17 Tracing Group Computations, tracingrestores.- 19.5 Summary.- 20 Token Registers, TfeX List Processing.- 20.1 Token Registers.- 20.1.1 toksdef, newtoks.- 20.1.2 Loading Token Registers.- 20.1.3 Token Parameters.- 20.1.4 Collecting Information with Token Registers, AddInf o, CollectTokens.- 20.1.5 List Processing with Token Registers, ForEachToken.- 20.2 TEX Lists.- 20.2.1 Executing a List.- 20.2.2 Overview List Macros.- 20.2.3 The Definition of Macro EmptyListConditional.- 20.2.4 The Definition of Macros LeftAppendElement, RightAppendElement.- 20.2.5 The Definitions of Macro Car0f List, Cdr0f List.- 20.2.6 The Definition of Macro DropFirstElementOf List.- 20.2.7 The Definition of Macro CarCar0f List.- 20.2.8 The Definition of Macro ForEveryListElement.- 20.2.9 The Definition of Macro Member0f ListConditional.- 20.2.10 Reversing a List.- 20.2.11 Accessing the Last Element of a List.- 20.2.12 Dropping the Last Element of a List.- 20.2.13 Determining the Number of List Elements.- 20.2.14 Combining Two Lists.- 20.2.15 TEK-List Processing Examples.- 20.2.16 A Macro to Convert a List of Arguments into a "TEX-List," ConvertArgsToListAndAppend.- 20.2.17 Converting a List of Words to a "TEX-List," WordsToTeXList.- 20.3 Using TfeK Lists for the Emulation of Arrays.- 20.3.1 The Definitions of Macros IndexLastElement and ArrayIndexCheck.- 20.3.2 Accessing and Modifying Array Elements.- 20.3.3 Modifying an ArrayElement.- 20.3.4 Inserting an Array Element.- 20.3.5 Deleting an Array Element, DeleteArrayElement.- 20.3.6 Deleting a Group of Array Elements, DeleteArrayEle-mentRange.- 20.3.7 Extracting a Subarray, ExtractSubArray.- 20.3.8 Sample Code.- 20.4 Summary.- 21 Macros.- 21.1 Assigning a Meaning to a Control Sequence.- 21.2 Primitive Control Sequences.- 21.2.1 Examples of Primitive Control Sequences.- 21.2.2 Characters and Primitives.- 21.2.3 Primitives Versus Macros.- 21.2.4 Redefining Primitive Control Sequences.- 21.2.5 show and meaning Used with Primitives.- 21.3 Macros.- 21.3.1 Why Use Macros?.- 21.3.2 The Main Token List.- 21.3.3 Macro Definitions: Macro Names and Replacement Text.- 21.3.4 Expansion, Macro Calls, Macro Invocations.- 21.4 Some Simple Macro Examples.- 21.4.1 A Simple Macro to Print a Letterhead, LetterHead.- 21.4.2 A Letterhead Macro with One Parameter, LetterHeadA.- 21.4.3 Another Letterhead Macro with Two Parameters, LetterHeadB.- 21.4.4 The Maximum Number of Parameters.- 21.4.5 Some Other Macro Examples.- 21.4.6 Printing Register Names and Values.- 21.4.7 Printing Multiple Spaces.- 21.4.8 mac, a Macro to Print Control Sequences.- 21.4.9 Printing Logos.- 21.4.10 Macros Can Be for Lazy People.- 21.4.11 Other Series-Related Macros.- 21.5 The Theory of Macro Definitions.- 21.5.1 Separating Macro Definition and Macro Call.- 21.5.2 The Replacement Text of Macros.- 21.5.3 The Replacement Text of a Macro Does Not Form a Group.- 21.5.4 Redefining Macros.- 21.5.5 Macro Definitions Inside Groups, gdef.- 21.5.6 Testing Whether a Token Is Defined, Def inedConditional.- 21.5.7 The Definition of Macro NewDef.- 21.5.8 The Definition of Macro ReDef.- 21.5.9 NewDef and ReDef Examples.- 21.5.10 Undefined Macros.- 21.5.11 show and meaning with Macro Definitions.- 21.6 Macro Definitions Using outer.- 21.6.1 outer-Based Definitions in the Plain Format.- 21.6.2 Redefining bye.- 21.7 Macros with Parameters.- 21.8 Macros with Undelimited Parameters.- 21.8.1 Macro Calls of Macros with Undelimited Parameters.- 21.8.2 The Curly Braces of Arguments of Undelimited Parameters.- 21.8.3 Empty Arguments.- 21.8.4 One More Look at Curly Braces of Arguments.- 21.8.5 Spaces and Undelimited Arguments.- 21.8.6 Gobbling Macros.- 21.9 Macros with Delimited Parameters.- 21.9.1 Some Initial Examples.- 21.9.2 Parameter Text Tokens Preceding the First Parameter.- 21.9.3 Choosing Delimiters of Delimited Parameters.- 21.9.4 Errors in Arguments with Delimited Parameters.- 21.9.5 Space, Return, and the Tab Character as Delimiters of Parameters.- 21.9.6 An Active End-Of-Line Character as a Delimiter.- 21.9.7 A Generic Macro for Defining Macros with a Parameter Delimited by an Active End-Of-Line Character, GenAeol.- 21.9.8 Curly Braces in Delimited Parameters.- 21.9.9 Empty Arguments of Delimited Parameters.- 21.9.10 Gobbling Macros with Delimited Parameters.- 21.9.11 A Generic Gobbling Macro, GobbleDoMore.- 21.9.12 More on Delimited Parameters.- 21.9.13 everydisplay and Delimited Parameters.- 21.9.14 A Special Delimiter for Delimited Parameters.- 21.10 Mixed Parameter Types.- 21.10.1 Some Simple Examples.- 21.10.2 Another Example of Mixing Parameter Types, ParFl.- 21.11 Spaces after Macro Calls, ignorespaces.- 21.12 Summary.- 22 Macros, Expansion Issues.- 22.1 Expanded Macro Definitions, edef.- 22.1.1 Some Initial edef Macro Examples.- 22.1.2 The Expansion is Pushed All the Way Through.- 22.1.3 Suppressing Expansion in edef-Based Macro Definitions with noexpand.- 22.1.4 Undefined Tokens in edef-Based Macro Definitions.- 22.1.5 the and edef-Based Macro Definitions.- 22.1.6 Comparing def and edef.- 22.1.7 Applications of edef.- 22.1.8 Collecting Information with edef.- 22.1.9 Conditionals Expanded in edef.- 22.1.10 edef and char.- 22.1.11 edef, uppercase and lowercase.- 22.1.12 edef, Counter Registers, the, number, etc.- 22.1.13 Repeated Expansion.- 22.1.14 Redefining Macros Based on edef.- 22.1.15 Global edefs: xdef.- 22.2 Macro Expansion.- 22.2.1 Tracing Macro Expansion, tracingmacros.- 22.2.2 Tracing Memory Use and Other Usage Values, tracingstats.- 22.2.3 Tracing Command Execution, tracingcommands.- 22.2.4 Controlling the Output Generated by tracing... Commands, tracingonline.- 22.3 Placement of Macro Calls and Arguments.- 22.3.1 Examples.- 22.3.2 Macros with More Than Nine Parameters.- 22.4 Category Codes and Parameters.- 22.5 Nested Macro Definitions.- 22.5.1 A Simple Macro Definition Inside Another Macro Definition.- 22.5.2 A Nested Macro Definition with Parameters.- 22.5.3 A Table Defined Inside a Macro Definition.- 22.5.4 Self-Redefining Macros.- 22.6.Defining "long"Macros.- 22.7.Organizing Your Own Macros.- 22.7.1 The Writing of Macros.- 22.7.2 Loading Macros from Separate Macro Source Files.- 22.7.3 The Dynamic Loading of Macros.- 22.7.4 Spurious Space in Macro Definitions.- 22.7.5 Compact Glue and Rule Specifications.- 22.8 Keyword Parameters.- 22.9 Summary.- 23 More on Macro-Related Items.- 23.1 afterassignment.- 23.1.1 magnificant Usesafterassignment.- 23.1.2 What Is afterassignment Good For?.- 23.1.3 The Lifetime of afterassignment.- 23.1.4 Multiple afterassignments.- 23.1.5 What Is an Assignment for afterassignment.- 23.1.6 afterassignment And Grouping.- 23.1.7 Using afterassignment to Gobble an Opening Curly Brace.- 23.1.8 Macros, Parameters, and afterassignment.- 23.2 Let: Making Control Sequences Equivalent.- 23.2.1 List of Application of let.- 23.2.2 let and Macro Tokens.- 23.2.3 let to Duplicate Primitives, endgraf.- 23.3. let and Undefined Tokens.- 23.3.1 let and Grouping.- 23.3.2 The Pitfalls of let: Spaces and Equal Signs.- 23.3.3 Recursively Picking Up One Token at a Time.- 23.3.4 Suppressing the Expansion of Tokens in edefs Using let.- 23.4 Looking Ahead with futurelet.- 23.4.1 Application Ahead with futurelet.- 23.4.2 Using futurelet in Macros with Optional Arguments.- 23.4.3 future-Related Macros, DoFuturelet, DoLongFuture.- 23.4.4 A Generic Macro for Macros with Optional Arguments DblArg.- 23.4.5 OptArgX, Another Macro for Generic Optional Argument Handling.- 23.4.6 A Generic Macro to Support Macros with "Modification Indicators," NextCharTest.- 23.4.7 Using futurelet in a Macro with a Variable Number of Parameters, VarArgs.- 23.4.8 Default Arguments, DefaultArg.- 23.4.9 Testing the Presence of an Opening Curly Brace: Another input Instruction.- 23.4.10 A Version of futurelet Skipping Spaces.- 23.4.11 Testing on the Presence of a Par, ParLookAhead.- 23.4.12 Ignoring Spaces and pars in futurelet.- 23.4.13 Avoiding Using futurelet.- 23.5 Summary.- Advanced Macro Concepts.- 24.1 Changing the Order of Expansion, expandafetr.- 24.1.1 A Simple First Example.- 24.1.2 Macro Calls and expandafetrr.- 24.1.3 expandafter and edef.- 24.1.4 Another expandafter Example Involving Macros.- 24.1.5 Solving the Same Problems Not Using expandfter.- 24.1.6 Another Example.- 24.1.7 Selecting Arguments.- 24.1.8 expandafter and Reading from Files.- 24.1.9 Primitives and expandafter.- 24.1.10 expandafter and Register Indices.- 24.1.11 Reversing the Expansion of More Than Two Tokens.- 24.1.12 Even More Multiple expandafters.- 24.1.13 expandafter to Temporarily Suppress an Opening Curly Brace.- 24.1.14 Extracting a Substring.- 24.1.15 Testing the Presence of a Substring, SubStringConditional.- 24.1.16 Replacing SubStrings, ReplaceSubStrings.- 24.1.17 Reversing a String, ReverseString.- 24.1.18 Prefixes of Strings.- 24.1.19 Testing Whether a Sting Has a Specific Suffix, SuffixConditional.- 24.1.20 The Removal of Leading and Trailing Spaces from a String.- 24.1.21 expandafter in Conditionals.- 24.2 Suppressing Expansion with noexpand.- 24.3 The Almighty the.- 24.3.1 the-Generating Character Tokens.- 24.3.2 the-Generating Non-character Tokens.- 24.4 When No Exoansion Takes Place.- 24.5 Summary.- Conditional and Their Applications.- 25.1 Conditionals.- 25.1.1 The First Example.- 25.1.2 Some More Remarks on Conditionals.- 25.1.3 TEX Has No Boolean Data Type.- 25.1.4 The List of TEX's Conditionals.- 25.1.5 Grouping and Conditionals.- 25.1.6 Skipping Text in Conditionals.- 25.1.7 newif Allows User-Defined Conditionals.- 25.1.8 The Application of ifnum in folio.- 25.1.9 The Definition of Macros CheckTange and CheckZeroOneRange.- 25.1.10 An if and ifcat Example.- 25.1.11 An ifcase Example, the Definition of PrintMonthQ.- 25.1.12 Another ifcase Example.- 25.1.13 Printing Dollar Amounts, PrintInDollar.- 25.1.14 An ifdim Example, MaxDimen, MinDimen.- 25.1.15 Another ifdim Example,CenterOrParagraph.- 25.1.16 An if Example Comparing Characters.- 25.1.17 Using ifx for String Comparison.- 25.1.18 Testings Whether a Token is a Control Sequence.- 25.1.19 A String-Based Switch Macro, StringSwitch.- 25.1.20 ifx to Compare Lists of Tokens.- 25.1.21 ifx and Underfined Tokens.- 25.1.22 Normalizing Arguments in Macro Calls.- 25.1.23 ifhmode, ifvmode, ifmmode and ifinner Examples.- 25.2 Conforming Conditionals.- 25.2.1 User-Defined Macros Expanding to Conditionals.- 25.2.2 Conditionals Defined In "TEX"in Practice.- 25.2.3 The Definition of NumberConditional.- 25.2.4 The Definition of LetterConditional.- 25.2.5 Conforming Conditionals with Macros Producing Numerical Values.- 25.3 Summary.- Date and Calendar Macros.- 26.1 The Earliest Date Accommodated by the Presented Macros.- 26.2 Copying Date, CopyDate.- 26.3 Codes for the Days of a Week.- 26.4 Print a Month, ProvideMonth.- 26.5 Check for the Legality of a Year: CheckLegalYear.- 26.6 Check for the Legality of Month: CheckLegalMonth.- 26.7 Compute the Number of Days in a Month, NumberOfDaysInMonth.- 26.8 Check for the Validity of a Date.- 26.9 Is a Year a Leap Year?.- 26.10 Compute the Number of Days in Year.- 26.11 Compute the Date of the Following Day.- 26.12 Compute the Date of the Previous Day.- 26.13 Compute the Same Day of the Week in the Next or Previous Week.- 26.14 Compute the Next Month.- 26.15 Compute the Previous Month.- 26.16 Compute the Day of the Week of an Arbitrary Date.- 26.17 Printing Today's Date.- 26.18 Compute The Monday of the Same Week of Some Given Date.- 26.19 Small Monthly Calendars.- 26.20 Printing a Group of Three Monthly Calendars.- 26.21 A Yearly Calendar Macro.- 26.22 Compute the Week Number of a Date Within a Year.- 26.23 Loading All Date-Related Macros.- 26.24 Summary.- Recursion, Loop Constructs, Modes, testing of TEX Code and Related Items.- 27.1 Recursive Macros and Loops in TEX.- 27.1.1 A First Example.- 27.1.2 A Generic Macro for Recursive Macros, Recursion-MacroEnd.- 27.1.3 A Generic Loop Macro of the Plain Format, Loop.- 27.1.4 Converting a NUmber to Hexadecimal or Octal Notation.- 27.1.5 A Numerical Expression While Loop Construct.- 27.1.6 A General While Loop Construct.- 27.1.7 Pickng Up Characters Recursively.- 27.1.8 A DO Loop Macro, Doloop.- 27.1.9 The Printing of Inverted Pyramids, InvertedPyramid.- 27.2. Enumeration Macro Definitions.- 27.3. Box Register Queue Macros.- 27.3.1 Indices and Counters for the folowing Macros.- 27.3.2 Some Auxiliary Macros.- 27.3.3 The Definition of SetUpBoxRegisterQueue.- 27.3.4 The Definitions of AddBoxToQueue.- 27.3.5 The Definition of CopyFirstBoxFromQueue.- 27.3.6 The Definition of DropFirstBoxOfQueue.- 27.3.7 The Definition of EmptyBoxRegisterQueueConditional.- 27.3.8 An Example Application.- 27.4 relax.- 27.5 jobname.- 27.6 Environments.- 27.6.1 Why the Idea of Environment Was Developed.- 27.6.2 Resulting Consistency When Using Environments.- 27.6.3 Nested Environment.- 27.6.4 Macros To Start and End Environments, B and E.- 27.6.5 Style Files.- 27.7 Modes.- 27.8 LATEX and the Plain Format.- 27.9 Debugging TEX MAcros and TEX Code in General.- 27.10 User Macro Error Messages, errmessage, errhelp.- 27.11 The Definition of Macro tracingall.- 27.12 Writing to the Log File and the Terminal, pausing.- 27.13 Summary.- Reading From and Writing To Files.- 28.1 File Names in TEX.- 28.1.1 File Names With and Without Extensions in TEX.- 28.1.2 jobname and File Names.- 28.2 Reading from a File on a Line-By-Line Basis.- 28.2.1 Input Streams Numbers.- 28.2.2 Commands to Read from a File, newread, openin, read, ifeof, closein.- 28.2.3 An Example for reading from a File.- 28.2.4 par Appended to the End of Every File.- 28.2.5 A Recursive Macro to Read from a file.- 28.2.6 An Example of Reading from a Terminal.- 28.2.7 An Example of Reading Numbers from a File.- 28.3 Reading-In a Complete File, input.- 28.3.1 Applications of input.- 28.3.2 The Syntax of input.- 28.3.3 Tracking Files Read-In by input in the Log File.- 28.3.4 Nested input.- 28.3.5 Line Numbers of Files Read-in Using input, inputlineno.- 28.3.6 Missing Files and input, File null. tex.- 28.3.7 The Definition of Macro InputAt.- 28.3.8 Premature Ending of Input, endinput.- 28.3.9 An Application of endinput.- 28.4 More input Related MAcros.- 28.4.1 Testing the Presence of a File, FileExistsConditional.- 28.4.2 Conditional Input Macro, InputC, InputCWithat.- 28.4.3 A Macro To Prevent Reading-In an Already Read-In File, InputD, ListInputD.- 28.5 Writing to a File.- 28.5.1 Stream Numbers Writing Files.- 28.5.2 Instructions to Write to Files, newwrite, openout, write, closeout.- 28.5.3 A Generic Output Stream Definition.- 28.5.4 An Immediate Write Example.- 28.5.5 Delayed and Immediate Write.- 28.5.6 Writing Control Sequences to a File.- 28.5.7 More on Writing Control Sequences to a File.- 28.5.8 Verbatim Writing of a Macro Argument.- 28.5.9 Writing and Reading Lines of Excessie Lengths.- 28.6 Summary.- More on Input and Output.- 29.1 Index File Writing.- 29.1.1 Debugging an Index.- 29.1.2 A Quick Look at makeindex.- 29.1.3 Composing an Index.- 29.1.4 An Overview over the Provided Index Macros.- 29.1.5 The Beginning of Index Macro Definitions.- 29.1.6 The Definitions of Macros OpenIndexFiles and CloseIndexFiles.- 29.1.7 Determining to Which Index File Output Goes.- 29.1.8 Writing to the Index File: Index.- 29.1.9 Additional Index Entry Generating Macros.- 29.1.10 Specialized Index Term Macros.- 29.1.11 Special Formatting for the Page Number in the Index.- 29.2 Writing Table of Contents Files.- 29.2.1 How to Organize the Writing of a Table of Contents File.- 29.2.2 A Two-Pass Approach.- 29.2.3 Details of Writing a Table of Contents File, WriteToc, TocEntry.- 29.2.4 Discussing WriteToc.- 29.2.5 Example of Writing a Table of Contents File.- 29.2.6 Writing Lists of Table Files.- 29.3 Verbatim Writing to Files.- 29.3.1 Writing Tab Characters to a File.- 29.3.2 General Macros for Verbatim Writing.- 29.3.3 Generating TEX Sources from Within Another TEX Sources.- 29.3.4 An Example for Verbatim Writing TEX Source.- 29.4 Macros to Write Endnotes.- 29.4.1 The Definition of StarEndNoteWriting.- 29.4.2 The Definition of BeginEndNote ... EndEndNOte.- 29.4.3 The Definition of EndEndNoteWriting.- 29.4.4 The Definition of ReadInEndNotes.- 29.4.5 An Example of EndNote Writing and Reading.- 29.5 Writing to the Log File and the Terminal.- 29.5.1 Commands to Show Registers, Definitions, etc., show, showthe.- 29.5.2 Writing to the Terminal, message.- 29.5.3 Forcing a New Line Inside message, newlinechar.- 29.5.4 The Definition of NewLineMessage.- 29.5.5 The Definition of wlog.- 29.5.6 message, wlog and show, etc., Looked At Together.- 29.6 Protocol File Writing.- 29.6.1 Initializations.- 29.6.2 The Definitions of InitProtWrite.- 29.6.3 The Definition of CloseProtWrite.- 29.6.4 The Definition of WriteProtocol.- 29.6.5 The Definition of Macro BoxToProtocol.- 29.6.6 An Example.- 29.7 Comparing Two Files.- 29.7.1 The Definition of CompareFilesConditional.- 29.7.2 An Example.- 29.8 shipout, tracingoutput, deadcycles, maxdeadcycles.- 29.9 special.- 29.10 Summary.- Partial Processing of a Document.- 30.1 A General Overview of the Macros of this Chapter.- 30.2 Main Document and Part Source Files, Auxiliary Files.- 30.3 Macros for the Partial Processing of a Document.- 30.3.1 Macros for the Main Document File.- 30.3.2 Organizing the Partial Processing of Documents.- 30.3.3 Macros for the Part Source Files.- 30.4 Administrative Files.- 30.4.1 The Main Temporary File.- 30.4.2 The Auxiliary Part Files.- 30.5 The Generation of a Table of Contents.- 30.6 Putting the Pieces Together.- 30.6.1 The Basic Setup.- 30.6.2 Hints of How to Use the Presented Macros Safely.- 30.7 Macros Source Files.- 30.7.1 The Top Level Macro Source File.- 30.7.2 Basic Definitions Source Code File.- 30.7.3 Macros Invoked in the Main Document File.- 30.7.4 Writing Invoked in the Main Document File.- 30.7.5 Table of Contents Files, etc., Processing.- 30.7.6 Robust Macros.- 30.7.7 Writing Comments to Part Auxiliary Files.- 30.7.8 Page Number Handling.- 30.8 Cross-Referencing Macros for Partial Processing Macros.- 30.8.1 The Beginning of the Cross-Reference Macro Source File.- 30.8.2 The Definition of @NewLabel.- 30.8.3 The Definition of Ref, PageRef, @ref.- 30.8.4 The Definition of Macro ref.- 30.8.5 A Different Definition of Pageref.- 30.8.6 Changing Pageref To Print "This, Previous or Next Page" Where Applicable.- 30.8.7 The Definition of @Label.- 30.8.8 The Definition of CheckLabels.- 30.8.9 The Definition of @NewCompare.- 30.8.10 The Definition of @StopCheckingLabels.- 30.9 Summary.- More on the Partial Processing of a Documents.- 31.1 An Example Application.- 31.1.1 Macros Specific to the Example.- 31.1.2 Additional Macro Definitions.- 31.1.3 Source Code of the Part Source Files.- 31.1.4 The Part Auxiliary Files as Generated by the Part Processing Macros.- 31.1.5 The Table of Contents File of the Complete Document.- 31.1.6 The Main Temporary File.- 31.1.7 Sample Output.- 31.2 The Partial Processing Macros Used to Typeset This Series.- 31.2.1 Steps in Processing This Series.- 31.2.2 Special Included Source Code Files.- 31.2.3 The Main Source File of this Series.- 31.2.4 "TEX in Practice" Related Dimensions.- 31.2.5 Loading All Heading-Generating Macros.- 31.2.6 Volume and Page Number-Related Set-up.- 31.2.7 The Chapter and Appendix Heading Macros, Chapter, Appendix.- 31.2.8 "Generating Notes" Macros.- 31.2.9 Section, Subsection, and Subsubsection Heading Macros.- 31.2.10 More Header-Related Macros.- 31.2.11 Cross-Referencing Macros for this Series.- 31.2.12 Version NUmber.- 31.2.13 The Macro Source Code File ts-set. tip.- 31.3 The TEXIP Format.- 31.4 Summary.