|
|
1.1 ! root 1: Info file ../info/texinfo, produced by Makeinfo, -*- Text -*- from ! 2: input file texinfo.texinfo. ! 3: ! 4: This file documents Texinfo, a documentation system that uses a ! 5: single source file to produce both on-line help and a printed manual. ! 6: ! 7: This is edition 1.1 of the Texinfo documentation, and is for the ! 8: Texinfo that is distributed as part of Version 18 of GNU Emacs. ! 9: ! 10: Copyright (C) 1988 Free Software Foundation, Inc. ! 11: ! 12: Permission is granted to make and distribute verbatim copies of this ! 13: manual provided the copyright notice and this permission notice are ! 14: preserved on all copies. ! 15: ! 16: Permission is granted to copy and distribute modified versions of ! 17: this manual under the conditions for verbatim copying, provided that ! 18: the entire resulting derived work is distributed under the terms of a ! 19: permission notice identical to this one. ! 20: ! 21: Permission is granted to copy and distribute translations of this ! 22: manual into another language, under the above conditions for modified ! 23: versions, except that this permission notice may be stated in a ! 24: translation approved by the Foundation. ! 25: ! 26: ! 27: ! 28: File: texinfo, Node: Breaks Blank-Lines Groups, Prev: Refilling & Noindent, Up: Formatting Paragraphs ! 29: ! 30: Breaks, Blank Lines and Groups ! 31: ============================== ! 32: ! 33: Texinfo has several commands for making blank lines, for forcing ! 34: paragraph and page breaks in the printed manual and for preventing ! 35: text from running from one page to the next. ! 36: ! 37: `@*' ! 38: Force a line break in the printed manual. This command has no ! 39: effect on the Info file. ! 40: ! 41: `@sp' ! 42: Generate blank lines in both the printed manual and in the Info ! 43: file. ! 44: ! 45: `@br' ! 46: Force a paragraph break in the printed manual. This command has ! 47: no effect on the Info file. ! 48: ! 49: `@w' ! 50: Prevent text from being split across two lines in the printed ! 51: manual. This command has no effect on the Info file. ! 52: ! 53: `@page' ! 54: Start a new page in the printed manual. This command has no ! 55: effect on the Info file. ! 56: ! 57: `@group' ! 58: Hold text together that must appear on one printed page. This ! 59: command has no effect on the Info file. ! 60: ! 61: `@need' ! 62: Start a new printed page if required space not on this one. ! 63: This command has no effect on the Info file. ! 64: ! 65: * Menu: ! 66: ! 67: * Line Breaks:: Force a line break in the printed manual. ! 68: * Sp:: Generate blank lines. ! 69: * Br:: Force a paragraph break in the printed manual. ! 70: * W:: Prevent a paragraph break in the printed manual. ! 71: * Page:: Start a new page in the printed manual. ! 72: * Group:: Hold text together that must appear on one printed page. ! 73: * Need:: Start a new printed page if required space not on this one. ! 74: ! 75: ! 76: ! 77: File: texinfo, Node: Line Breaks, Next: Sp, Prev: Breaks Blank-Lines Groups, Up: Breaks Blank-Lines Groups ! 78: ! 79: @* ! 80: -- ! 81: ! 82: `@*' forces a line break in the printed manual. It has no effect on ! 83: the Info file output, where line breaks follow those in the source ! 84: file. If you want a line break at a certain spot in both forms of ! 85: output, break the line there in the source file and put `@*' at the ! 86: end of the line. ! 87: ! 88: ! 89: ! 90: File: texinfo, Node: Sp, Next: Br, Prev: Line Breaks, Up: Breaks Blank-Lines Groups ! 91: ! 92: @sp ! 93: --- ! 94: ! 95: A line containing `@sp N' generates N blank lines of space in either ! 96: the printed manual or the Info file. For example, ! 97: ! 98: @sp 2 ! 99: ! 100: generates two blank lines. ! 101: ! 102: ! 103: ! 104: File: texinfo, Node: Br, Next: W, Prev: Sp, Up: Breaks Blank-Lines Groups ! 105: ! 106: @br ! 107: --- ! 108: ! 109: In a printed manual, a line containing `@br' forces a paragraph ! 110: break; in the Info file output, it does nothing (not even a blank ! 111: line results from it). ! 112: ! 113: ! 114: ! 115: File: texinfo, Node: W, Next: Page, Prev: Br, Up: Breaks Blank-Lines Groups ! 116: ! 117: @w ! 118: -- ! 119: ! 120: In a printed manual, `@w{TEXT}' outputs TEXT and prohibits line ! 121: breaks within TEXT. `@w' has no effect on the Info file output; it ! 122: is the same as would result from just TEXT. ! 123: ! 124: ! 125: ! 126: File: texinfo, Node: Page, Next: Group, Prev: W, Up: Breaks Blank-Lines Groups ! 127: ! 128: @page ! 129: ----- ! 130: ! 131: A line containing `@page' starts a new page in a printed manual. The ! 132: line has no effect on Info files since they are not paginated. ! 133: ! 134: ! 135: ! 136: File: texinfo, Node: Group, Next: Need, Prev: Page, Up: Breaks Blank-Lines Groups ! 137: ! 138: @group ! 139: ------ ! 140: ! 141: A line containing `@group' begins an unsplittable vertical group, ! 142: which must appear entirely on one page. The group is terminated by a ! 143: line containing `@end group'. These two lines produce no output of ! 144: their own, and in the Info file output they have no effect at all. ! 145: ! 146: If you forget to end a group, you may get strange and unfathomable ! 147: error messages when you run TeX. This is because TeX keeps trying to ! 148: put the rest of the Texinfo file into the group and error messages do ! 149: not start to get generated until TeX has gone a long way. It's a ! 150: good rule of thumb to look for a missing `@end group' if you get ! 151: incomprehensible error messages in TeX. ! 152: ! 153: ! 154: ! 155: File: texinfo, Node: Need, Prev: Group, Up: Breaks Blank-Lines Groups ! 156: ! 157: @need ! 158: ----- ! 159: ! 160: A line containing `@need N' starts a new page in a printed manual if ! 161: fewer than N mils (thousandths of an inch) remain on the current ! 162: page. The line has no effect on Info files since they are not ! 163: paginated. ! 164: ! 165: ! 166: ! 167: File: texinfo, Node: Marking Text, Next: Conditionals, Prev: Formatting Paragraphs, Up: Top ! 168: ! 169: Marking Text Within a Paragraph ! 170: ******************************* ! 171: ! 172: In Texinfo, text within a paragraph can be marked in a variety of ways. ! 173: The most important way is to specify whether a word or phrase is a ! 174: definition, a metasyntactic variable, a literal example of a program ! 175: or what not. ! 176: ! 177: In addition, there are special commands for inserting single ! 178: characters that have special meaning in Texinfo, such as braces, and ! 179: for inserting symbols with special handling, such as dots and ! 180: bullets. Finally, there are ways to emphasize words. ! 181: ! 182: * Menu: ! 183: ! 184: * Specifying:: Specifying commands, files and so on. ! 185: * Braces Atsigns Periods:: Inserting braces, `@' and periods. ! 186: * Dots Bullets Tex:: Inserting dots, bullets and the TeX logo ! 187: * Emphasis:: Emphasizing text. ! 188: ! 189: ! 190: ! 191: File: texinfo, Node: Specifying, Next: Braces Atsigns Periods, Up: Marking Text ! 192: ! 193: Specifying Definitions, Files, Commands etc. ! 194: ============================================ ! 195: ! 196: Texinfo has a variety of commands for specifying just what kind of ! 197: object a piece of text refers to. Metasyntactic variables, for ! 198: example, are marked by one @-command and code by another. Texinfo ! 199: uses this information to determine how to highlight the text. Since ! 200: the pieces of text are labelled by commands that tell what kind of ! 201: object they are, it is easy to change the way Texinfo formats and ! 202: typesets such text. For example, code is usually illustrated in a ! 203: typewriter font, but it would be easy to change the way Texinfo ! 204: highlights code to use another font. This change would not effect ! 205: how metasyntatic variables are highlighted. If straight typesetting ! 206: commands were used in the body of the file, you would have to check ! 207: every single occurrence to make sure that you were changing code and ! 208: not something else that should not be changed. ! 209: ! 210: In addition, the commands can be used to generate useful information ! 211: from the file, such as lists of functions or file names. It is ! 212: possible, for example, to write code in Emacs Lisp (or a keyboard ! 213: macro) to insert an index entry after every paragraph that contains ! 214: the text labelled by a specified command. You could do this to ! 215: construct an index of functions if you had not already made the ! 216: entries. ! 217: ! 218: The commands serve a variety of purposes: ! 219: ! 220: `@code' ! 221: Indicates text that is a literal example of a piece of a program. ! 222: ! 223: `@samp' ! 224: Indicates text that is a literal example of a sequence of ! 225: characters. ! 226: ! 227: `@file' ! 228: Indicates the name of a file. ! 229: ! 230: `@kbd' ! 231: Indicates the names of keys on the keyboard or characters you ! 232: type. ! 233: ! 234: `@key' ! 235: Used for the conventional name for a key on a keyboard. ! 236: ! 237: `@ctrl' ! 238: Indicates an ASCII control character. ! 239: ! 240: `@var' ! 241: Indicates a metasyntactic variable. ! 242: ! 243: `@dfn' ! 244: Indicates the introductory or defining use of a term. ! 245: ! 246: `@cite' ! 247: Indicates the name of a book. ! 248: ! 249: * Menu: ! 250: ! 251: * Code:: A literal example of a piece of a program. ! 252: * Samp:: A literal example of a sequence of characters. ! 253: * File:: The name of a file. ! 254: * Kbd:: The names of keys or else characters you type. ! 255: * Key:: The conventional name for a key on a keyboard. ! 256: * Ctrl:: Indicates the ASCII control character. ! 257: * Var:: A variable. ! 258: * Dfn:: The introductory or defining use of a term. ! 259: * Cite:: The name of a book. ! 260: ! 261: ! 262: ! 263: File: texinfo, Node: Code, Next: Samp, Up: Specifying ! 264: ! 265: @code ! 266: ----- ! 267: ! 268: `@code' is used to indicate text that is a piece of a program which ! 269: consists of entire syntactic tokens. The text follows, enclosed in ! 270: braces. ! 271: ! 272: For example, `@code' is used for an expression in a program, the name ! 273: of a variable or function used in a program, or a keyword. `@code' ! 274: is not used for a piece of a token, such as when speaking about the ! 275: characters used in a token; for example, when you are explaining what ! 276: letters or printable symbols can be used in the names of functions. ! 277: It is also not used for input to programs unless the input is written ! 278: in a language that is like a programming language. For example, it ! 279: is not used for the single character commands of GNU Emacs although ! 280: it is used for the names of Emacs Lisp functions that the keyboard ! 281: commands invoke. ! 282: ! 283: You should also `@code' for command names in command languages that ! 284: resemble programming languages, such as Texinfo or the shell. Note, ! 285: however, that `@code' is not used for options such as `-c' when such ! 286: options stand alone. There is some argument as to whether an entire ! 287: shell command incorporating an option should be written using `@code' ! 288: or `@samp'. ! 289: ! 290: It is an error to alter the case of a word inside an `@code' command. ! 291: This is a particularly insidious error if the language being ! 292: documented is case sensitive. If the command is `printf', then ! 293: `Printf' is a misspelling. If you do not like having such a command ! 294: with lower case at the beginning of a sentence, you may wish to ! 295: rearrange the sentence. ! 296: ! 297: In the printed manual, `@code' puts the argument in bold face. In ! 298: the Info file, it uses `...' quotation. For example: ! 299: ! 300: To compare two files, showing text inserted or removed, use @code{diff}. ! 301: ! 302: produces ! 303: ! 304: To compare two files, showing text inserted or removed, use ! 305: `diff'. ! 306: ! 307: ! 308: ! 309: File: texinfo, Node: Samp, Next: File, Prev: Code, Up: Specifying ! 310: ! 311: @samp ! 312: ----- ! 313: ! 314: `@samp' is used to indicate text that is a literal example of a ! 315: sequence of characters in a file, string, pattern, etc. The text ! 316: follows, enclosed in braces. The argument appears within `...' ! 317: quotation in both the Info file and the printed manual; in addition, ! 318: it is printed in a fixed-width font. ! 319: ! 320: To match @samp{foo} at the end of the line, use the regexp @samp{foo$}. ! 321: ! 322: produces ! 323: ! 324: To match `foo' at the end of the line, use the regexp `foo$'. ! 325: ! 326: Any time you are referring to single characters, you should use ! 327: `@samp' unless `@kbd' is more appropriate. Basically, `@samp' is a ! 328: catchall for whatever is not covered by `@code', `@file', `@kbd'. ! 329: ! 330: Punctuation marks that are part of the English text that surrounds ! 331: the strings you are specifying are *never* included within the ! 332: braces. In the following sentence, for example, the commas and ! 333: period are outside of the braces: ! 334: ! 335: A symbol name ends in @samp{a}, @samp{b}, or @samp{c}. ! 336: ! 337: ! 338: ! 339: File: texinfo, Node: File, Next: Kbd, Prev: Samp, Up: Specifying ! 340: ! 341: @file ! 342: ----- ! 343: ! 344: `@file' is used to indicate text that is the name of a file or ! 345: directory. Currently, it is equivalent to `@samp' in its effects on ! 346: the output. For example, ! 347: ! 348: The @file{.el} files are in ! 349: the @file{/gnu/emacs/lisp} directory. ! 350: ! 351: produces ! 352: ! 353: The `.el' files are in the `/gnu/emacs/lisp' directory. ! 354: ! 355: ! 356: ! 357: File: texinfo, Node: Kbd, Next: Key, Prev: File, Up: Specifying ! 358: ! 359: @kbd ! 360: ---- ! 361: ! 362: `@kbd' is used much like `@code'. The difference is that `@kbd' is ! 363: for names of keys on the keyboard, or of characters you can type. ! 364: For example, to refer to the command `M-a', you would use ! 365: ! 366: @kbd{M-a} ! 367: ! 368: and to refer to `M-x shell', you would use ! 369: ! 370: @kbd{M-x shell} ! 371: ! 372: The `@kbd' command has the same effect as `@code' in Info, but may ! 373: produce a different font in a printed manual. ! 374: ! 375: You can embed another @-command inside the braces of a `@kbd' ! 376: command. This is the way to describe a command that would be ! 377: described more verbosely as "press an `r' and then press the RET key": ! 378: ! 379: @kbd{r @key{RET}} ! 380: ! 381: This produces: `r RET' ! 382: ! 383: You also use the `@kbd' command if you are spelling out the letters ! 384: you type; for example: ! 385: ! 386: To give the @code{logout} command, ! 387: type the characters @kbd{l o g o u t @key{RET}}. ! 388: ! 389: This produces ! 390: ! 391: To give the `logout' command, type the characters `l o g o u t ! 392: RET'. ! 393: ! 394: ! 395: ! 396: File: texinfo, Node: Key, Next: Ctrl, Prev: Kbd, Up: Specifying ! 397: ! 398: @key ! 399: ---- ! 400: ! 401: `@key' is used for the conventional name for a key on a keyboard, as in ! 402: ! 403: @key{RET} ! 404: ! 405: Often, `@key' is used within the argument of a `@kbd' command, ! 406: whenever the sequence of characters to be typed includes one or more ! 407: keys that are described by name. ! 408: ! 409: For example, to produce `C-x ESC' you would use ! 410: ! 411: @kbd{C-x @key{ESC}} ! 412: ! 413: The recommended names to use for keys are in upper case and are ! 414: ! 415: SPC ! 416: Space. ! 417: ! 418: RET ! 419: Return. ! 420: ! 421: LFD ! 422: Linefeed. ! 423: ! 424: TAB ! 425: Tab. ! 426: ! 427: BS ! 428: Backspace. ! 429: ! 430: ESC ! 431: Escape. ! 432: ! 433: DEL ! 434: Delete. ! 435: ! 436: SFT ! 437: Shift. ! 438: ! 439: CTL ! 440: Control. ! 441: ! 442: META ! 443: Meta. ! 444: ! 445: There are subtleties to handling words like `meta' or `ctrl' which ! 446: are names of shift keys. When mentioning a character in which the ! 447: shift key is used, such as `Meta-a', use the `@kbd' command alone ! 448: without the `@key' command, but when you are referring to shift key ! 449: in isolation, use the `@key' command. For example, you would use ! 450: `@kbd{Meta-a}' to produce `Meta-a' and `@key{META}' to produce META. ! 451: ! 452: ! 453: ! 454: File: texinfo, Node: Ctrl, Next: Var, Prev: Key, Up: Specifying ! 455: ! 456: @ctrl ! 457: ----- ! 458: ! 459: `@ctrl' is used to describe an ASCII control character. The pattern ! 460: of usage is `@ctrl{CH}', where CH is an ASCII character whose ! 461: control-equivalent is wanted. Thus, you put in an `f' when you want ! 462: to indicate a `control-f' ! 463: ! 464: Thus, to specify `control-f', you would enter ! 465: ! 466: @ctrl{f} ! 467: ! 468: which produces ! 469: ! 470: f ! 471: ! 472: In the Info file, this generates the specified control character, ! 473: output literally into the file. This is done so a user can copy the ! 474: specified control character (along with whatever else he or she ! 475: wants) into another Emacs buffer and use it. Since the ! 476: `control-h',`control-i', and `control-j' characters are formatting ! 477: characters, they should not be indicated this way. ! 478: ! 479: In a printed manual, this generates text to describe or identify that ! 480: control character: an uparrow followed by the character CH. ! 481: ! 482: ! 483: ! 484: File: texinfo, Node: Var, Next: Dfn, Prev: Ctrl, Up: Specifying ! 485: ! 486: @var ! 487: ---- ! 488: ! 489: `@var' is used to indicate metasyntactic variables. A metasyntactic ! 490: variable is something that stands for another piece of text. You ! 491: would use a metasyntactic variable in the documentation of a function ! 492: to describe the arguments that are passed to that function. ! 493: ! 494: `@var' is not used for names of particular variables in programming ! 495: languages. For example, the Texinfo variable `texinfo-tex-command' ! 496: is not a metasyntactic variable. ! 497: ! 498: Its effect in the Info file is to upcase the argument; in the printed ! 499: manual, to italicize it. Example: ! 500: ! 501: To delete file @var{filename}, type @code{rm @var{filename}}. ! 502: ! 503: produces ! 504: ! 505: To delete file FILENAME, type `rm FILENAME'. ! 506: ! 507: In some documentation styles, metasyntactic variables are shown with ! 508: angle brackets, for example: ! 509: ! 510: ..., type rm <filename> ! 511: ! 512: ! 513: ! 514: File: texinfo, Node: Dfn, Next: Cite, Prev: Var, Up: Specifying ! 515: ! 516: @dfn ! 517: ---- ! 518: ! 519: `@dfn' is used to identify the introductory or defining use of a ! 520: technical term. The command should be used only in a passage whose ! 521: purpose is to introduce a term which will be used again or which the ! 522: reader ought to know. Mere passing mention of a term for the first ! 523: time doesn't deserve `@dfn'. It generates italics in the printed ! 524: manual, and double quotation marks in the Info file. Example: ! 525: ! 526: Getting rid of a file is called @dfn{deleting} it. ! 527: ! 528: produces ! 529: ! 530: Getting rid of a file is called "deleting" it. ! 531: ! 532: ! 533: ! 534: File: texinfo, Node: Cite, Prev: Dfn, Up: Specifying ! 535: ! 536: @cite ! 537: ----- ! 538: ! 539: `@cite' is used for the name of a book. It produces italics in the ! 540: printed manual, and quotation marks in the Info file. ! 541: ! 542: ! 543: ! 544: File: texinfo, Node: Braces Atsigns Periods, Next: Dots Bullets Tex, Prev: Specifying, Up: Marking Text ! 545: ! 546: Inserting Braces, `@' and Periods ! 547: ================================= ! 548: ! 549: `@' and curly braces are special characters in Texinfo. This means ! 550: that you have to put an `@' in front of these characters in order to ! 551: insert them into text. ! 552: ! 553: Periods are also special. Depending on whether the period is inside ! 554: of or at the end of a sentence, less or more space is inserted after ! 555: a period in a typeset manual. Since it is not always possible for ! 556: Texinfo to determine when a period ends a sentence and when it is ! 557: used in an abbreviation, special commands are needed. (Usually, ! 558: Texinfo figures out how to handle periods, so you don't have to use ! 559: the special commands; you just enter a period as you would if you ! 560: were using a typewriter, which means you put two spaces after the ! 561: period that ends a sentence and after a colon.) ! 562: ! 563: * Menu: ! 564: ! 565: * Inserting an Atsign:: inserting an atsign. ! 566: * Insert Left Brace:: Inserting a left brace. ! 567: * Insert Colon:: Preventing unintended additional whitespace. ! 568: * Insert Period:: Inserting a period that does end a sentence. ! 569: ! 570: ! 571: ! 572: File: texinfo, Node: Inserting An Atsign, Next: Insert Left Brace, Up: Braces Atsigns Periods ! 573: ! 574: @@ ! 575: -- ! 576: ! 577: `@@' stands for a single @ in either printed or Info output. ! 578: ! 579: ! 580: ! 581: File: texinfo, Node: Insert Left Brace, Next: Insert Colon, Prev: Inserting an Atsign, Up: Braces Atsigns Periods ! 582: ! 583: @{ ! 584: -- ! 585: ! 586: `@{' stands for a single { in either printed or Info output. ! 587: ! 588: @} ! 589: -- ! 590: ! 591: `@}' stands for a single } in either printed or Info output. ! 592: ! 593: ! 594: ! 595: File: texinfo, Node: Insert Colon, Next: Insert Period, Prev: Insert Left Brace, Up: Braces Atsigns Periods ! 596: ! 597: @: ! 598: -- ! 599: ! 600: `@:' is used after a character such as period or colon which normally ! 601: causes TeX to increase the width of the following whitespace, to ! 602: suppress that effect. For example, it can be used after periods that ! 603: end abbreviations and do not end sentences. `@:' has no effect on ! 604: the Info file output. ! 605: ! 606: It displays @code{Foo:}@: at that time. ! 607: ! 608: produces ! 609: ! 610: It displays `Foo:' at that time. ! 611: ! 612: The meanings of `@:' and `@.' in Texinfo are designed to work well ! 613: with the Emacs sentence motion commands. This means they are ! 614: different from their meanings in some other formatting systems that ! 615: use @-commands. ! 616: ! 617: ! 618: ! 619: File: texinfo, Node: Insert Period, Prev: Insert Colon, Up: Braces Atsigns Periods ! 620: ! 621: @. ! 622: -- ! 623: ! 624: `@.' stands for a period that really does end a sentence, useful when ! 625: TeX would otherwise assume by its heuristics that that is not so. ! 626: This happens when there is a single-capital-letter word at the end of ! 627: a sentence: TeX normally guesses that it is an abbreviation. ! 628: ! 629: In the Info file output, `@.' is equivalent to a simple `.'. The ! 630: Texinfo program preserves the amount of space that you use, so put ! 631: two spaces after a period if you intend it to be the end of a ! 632: sentence (as well as using `@.', if necessary, for the printed ! 633: manual's sake). ! 634: ! 635: Give it to X. Give it to X@. Give it to X@. ! 636: ! 637: produces ! 638: ! 639: Give it to X. Give it to X. Give it to X. ! 640: ! 641: ! 642: ! 643: File: texinfo, Node: Dots Bullets Tex, Next: Emphasis, Prev: Braces Atsigns Periods, Up: Marking Text ! 644: ! 645: Inserting Dots, Bullets and TeX ! 646: =============================== ! 647: ! 648: An ellipsis, a line of dots, is typeset differently than a string of ! 649: periods; more whitespace is put between the dots in the ellipsis than ! 650: is put between the periods. Because of this, a special command is ! 651: used in Texinfo for inserting dots. Also, the trademark, TeX, is ! 652: typeset in a special fashion and it needs an @-command, as does the ! 653: command for inserting the copyright symbol. The `@bullet' command is ! 654: special, too. Each of these commands is followed by a pair of ! 655: braces, `{}', without any whitespace between the name of the command ! 656: and the braces. ! 657: ! 658: * Menu: ! 659: ! 660: * Dots:: Inserting dots. ! 661: * Bullet:: Inserting bullets. ! 662: * Tex:: Inserting the TeX trademark. ! 663: ! 664: ! 665: ! 666: File: texinfo, Node: Dots, Next: Bullet, Up: Dots Bullets Tex ! 667: ! 668: @dots{} ! 669: ------- ! 670: ! 671: `@dots{}' generates an ellipsis which is three dots in a row, ! 672: appropriately spaced, like this: `...'. Do not simply write three ! 673: periods in the input file; that would work for the Info file output, ! 674: but would produce the wrong amount of space between the periods in ! 675: the printed manual. ! 676: ! 677: ! 678: ! 679: File: texinfo, Node: Bullet, Next: Tex, Prev: Dots, Up: Dots Bullets Tex ! 680: ! 681: @bullet{} ! 682: --------- ! 683: ! 684: `@bullet{}' generates a large round dot, or the closest possible ! 685: thing to one. ! 686: ! 687: Here is a bullet: * ! 688: ! 689: ! 690: ! 691: File: texinfo, Node: Tex, Prev: Bullet, Up: Dots Bullets Tex ! 692: ! 693: @TeX{} ! 694: ------ ! 695: ! 696: `@TeX{}' generates `TeX'. In a printed manual, this is a special ! 697: logo that is different from three ordinary letters. ! 698: ! 699: ! 700: ! 701: File: texinfo, Node: Emphasis, Prev: Dots Bullets Tex, Up: Marking Text ! 702: ! 703: Emphasizing Text ! 704: ================ ! 705: ! 706: Usually, Texinfo changes the font automatically to mark words in the ! 707: text according to what category the words belong to. The `@code' ! 708: command, for example, does this. Most often, this is the best way to ! 709: mark specified words. However, sometimes you will want to emphasize ! 710: text directly. Texinfo has two ways to do this: commands that tell ! 711: Texinfo to emphasize the text but leave the method to the program, ! 712: and commands that specify the font to use. The first method is ! 713: generally the best and it makes it possible to change the style of a ! 714: document without have to re-edit it line by line. ! 715: ! 716: * Menu: ! 717: ! 718: * Emph and Strong:: Emphasizing text. ! 719: * Fonts:: Selecting italic, bold or typewriter fonts. ! 720: ! 721: ! 722: ! 723: File: texinfo, Node: Emph and Strong, Next: Fonts, Up: Emphasis ! 724: ! 725: @emph and @strong ! 726: ----------------- ! 727: ! 728: `@emph' and `@strong' are two forms of emphasis. `@strong' is ! 729: stronger. ! 730: ! 731: In printed output, `@emph' produces *italics* and `@strong' produces ! 732: *bold*. ! 733: ! 734: In the Info file, both of these commands put asterisks around the ! 735: argument. ! 736: ! 737: ! 738: ! 739: File: texinfo, Node: Fonts, Prev: Emph and Strong, Up: Emphasis ! 740: ! 741: @i, @b and @t ! 742: -------------- ! 743: ! 744: These three commands specify font changes in the printed manual and ! 745: have no effect in the Info file. `@i' requests italic font (in some ! 746: versions of TeX, a slanted font is used), `@b' requests bold face, ! 747: and `@t' requests the fixed-width font used by `@kbd'. All three ! 748: commands apply to an argument that follows, surrounded by braces. ! 749: ! 750: If possible, you should avoid using these three commands. If you ! 751: find a need to use one, it probably indicates a lack in the Texinfo ! 752: language. ! 753: ! 754: ! 755: ! 756: File: texinfo, Node: Conditionals, Next: Printing Hardcopy, Prev: Marking Text, Up: Top ! 757: ! 758: Conditionals ! 759: ************ ! 760: ! 761: You may not always be able to use the same text for both the printed ! 762: manual and the on-line Info file. In this case, you can use the ! 763: conditional commands to specify which text is for the printed manual ! 764: and which is for the Info file. ! 765: ! 766: `@ifinfo' begins text that should be ignored by TeX when it typesets ! 767: the printed manual. The text appears only in the Info file. The ! 768: `@ifinfo' command should appear on a line by itself. End the ! 769: info-only text with a line containing `@end ifinfo' by itself. At ! 770: the beginning of a Texinfo file, the Info permissions are contained ! 771: within a region marked by `@ifinfo' and `@end ifinfo'. ! 772: ! 773: Likewise, `@iftex' and `@end iftex' lines delimit text that will not ! 774: appear in the Info file but will appear in the printed manual. ! 775: ! 776: For example, ! 777: ! 778: @iftex ! 779: This text will appear only in the printed manual. ! 780: @end iftex ! 781: ! 782: ! 783: @ifinfo ! 784: However, this text will appear only in the info manual. ! 785: @end ifinfo ! 786: ! 787: The preceding example produces the following. Note how you only see ! 788: one of the two lines, depending on whether you are reading the ! 789: on-line Info version or the printed version of this manual. ! 790: ! 791: However, this text will appear only in the info manual. ! 792: ! 793: The `@titlepage' command is a special variant of `@iftex' that is ! 794: used for making the title and copyright pages of the printed manual. ! 795: ! 796: * Menu: ! 797: ! 798: * Using Tex Commands:: Using commands from regular TeX. ! 799: ! 800: ! 801: ! 802: File: texinfo, Node: Using Tex Commands, Prev: Conditionals, Up: Conditionals ! 803: ! 804: Using TeX Commands ! 805: ================== ! 806: ! 807: Inside a region delineated by `@iftex' and `@end iftex', you can ! 808: embed ordinary TeX commands. Info will ignore these commands since ! 809: they are only in that part of the file that is seen by TeX. The TeX ! 810: commands are the same as any TeX commands except that an `@' replaces ! 811: the `\' used by TeX. For example, in the `@titlepage' section of a ! 812: Texinfo file, the TeX command `@vskip' is used to format the ! 813: copyright page. ! 814: ! 815: You can enter TeX completely, and use `\' in the TeX commands by ! 816: delineating a region with the `@tex' and `@end tex' commands. (These ! 817: commands automatically put the region inside of `@iftex' and `@end ! 818: iftex' commands.) For example, ! 819: ! 820: @tex ! 821: Here you would put text with TeX commands; ! 822: such as $\bigl(x\in A(n)\bigm|x\in B(n)\bigr)$ ! 823: that will appear only in the printed manual. ! 824: @end tex ! 825: ! 826: In the Info file, nothing between `@tex' and `@end tex' will appear. ! 827: ! 828: ! 829: ! 830: File: texinfo, Node: Printing Hardcopy, Next: Creating an Info File, Prev: Conditionals, Up: Top ! 831: ! 832: Printing Hardcopy ! 833: ***************** ! 834: ! 835: There are three shell commands for printing a hardcopy of a Texinfo ! 836: file. One is for formatting the file, the second is for sorting the ! 837: index and the third is for printing the formatted document. When you ! 838: use the shell commands, you can either work directly in the operating ! 839: system shell or work within a shell inside of GNU Emacs. ! 840: ! 841: The typesetting program TeX is used for formatting a Texinfo file. ! 842: TeX is a very powerful typesetting program and, if used right, does ! 843: an exceptionally good job. The @-commands in a Texinfo file are ! 844: translated by a file called `texinfo.tex' into commands that TeX ! 845: understands. (That is why the beginning of every Texinfo file starts ! 846: with the line that says `\input texinfo'; this command tells TeX to ! 847: use the `texinfo.tex' file in processing the Texinfo file. ! 848: Customarily, `texinfo.tex' is in a directory called ! 849: `/usr/lib/tex/macros'.) `texinfo-format-buffer' reads the very same ! 850: @-commands in the Texinfo file and processes them differently from ! 851: TeX to make an Info file. ! 852: ! 853: Usually, the TeX formatting command is the shell command `tex' ! 854: followed by the name of the Texinfo file. The TeX command produces a ! 855: formatted DVI file as well as several auxiliary files containing ! 856: indices, cross references, etc. The DVI file (for "DeVice ! 857: Independent" file) can be printed on a wide variety of printers. ! 858: ! 859: The TeX formatting command itself does not sort the indices. This is ! 860: a misfeature of TeX. Hence, to generate a printed index, you first ! 861: need a sorted index to work from. ! 862: ! 863: TeX outputs raw, unsorted index files under names that obey a ! 864: standard convention. These names are the name of your main input ! 865: file to TeX, with everything after the first period thrown away, and ! 866: the two letter names of indices added at the end. For example, the ! 867: raw index output files for the input file `foo.texinfo' would be ! 868: `foo.cp', `foo.vr', `foo.fn', `foo.tp', `foo.pg' and `foo.ky'. Those ! 869: are exactly the arguments to give to `texindex'. Or else, you can ! 870: use `??' as "wild-cards" and give the command in this form: ! 871: ! 872: texindex foo.?? ! 873: ! 874: For each file specified, `texindex' generates a sorted index file ! 875: whose name is made by appending `s' to the input file name. The ! 876: `@printindex' command knows to look for a file of that name. ! 877: `texindex' does not alter the raw index output file. After you have ! 878: sorted the indices, you need to rerun the TeX command on the Texinfo ! 879: file. This regenerates a formatted DVI file with the index entries ! 880: in the correct order. ! 881: ! 882: To summarize, this is a three step process: ! 883: ! 884: 1. Run the TeX command on the Texinfo file. This generates the ! 885: formatted DVI file as well as the raw index files with two ! 886: letter extensions. ! 887: ! 888: 2. Run the shell command `texindex' on the raw index files to sort ! 889: them. The arguments to `texindex' are the names of the raw ! 890: index files. `texindex' creates sorted index files whose names ! 891: are the names of the raw index files with an `s' appended. To ! 892: cause `texindex' to sort all the raw index files, append `??' to ! 893: the Texinfo file name in place of the `.texinfo' extension. ! 894: ! 895: 3. Rerun the TeX command on the Texinfo file. This regenerates a ! 896: formatted DVI file with the index entries in the correct order. ! 897: This second run also makes all the cross references correct as ! 898: well. (The tables of contents are always correct.) ! 899: ! 900: You need not run `texindex' after each TeX run. If you don't, the ! 901: next TeX run will use whatever sorted index files happen to exist ! 902: from the previous use of `texindex'. This is usually ok while you ! 903: are debugging. ! 904: ! 905: Finally, the document can be printed out with the DVI print command ! 906: (a shell command). Depending on the system used, the DVI print ! 907: command will be a command such as `lpr -d'. The DVI print command ! 908: may require a file name without any extension or with a `.dvi' ! 909: extension. ! 910: ! 911: The following commands, for example, sort the indices, format and ! 912: print the ``Bison Manual'' (where `%' is the shell prompt): ! 913: ! 914: % tex bison.texinfo ! 915: % texindex bison.?? ! 916: % tex bison.texinfo ! 917: % lpr -d bison.dvi ! 918: ! 919: (Remember that the words for the shell commands may be different at ! 920: your site; but these are commonly used versions.) ! 921: ! 922: It is often most convenient to give formatting and printing commands ! 923: from a shell within GNU Emacs. This way, you can easily keep track ! 924: of errors. To create a shell within Emacs, type `M-x shell'. In ! 925: this shell, you can format and print the document. You can switch to ! 926: and from this shell while it is running and do other things. If you ! 927: are formatting a very long document on a slow machine, this can be ! 928: very convenient; on a VAX 750, for example, formatting often takes 8 ! 929: seconds or more per page depending on how loaded the computer is. ! 930: Faster machines take correspondingly less time. ! 931: ! 932: * Menu: ! 933: ! 934: * Requirements:: Formatting requirements. ! 935: * Compile-Command:: Formatting with the compile command. ! 936: ! 937: ! 938: ! 939: File: texinfo, Node: Requirements, Next: Compile-Command, Up: Printing Hardcopy ! 940: ! 941: Formatting Requirements ! 942: ======================= ! 943: ! 944: Every Texinfo file that is to be input to TeX must begin with a line ! 945: that looks like ! 946: ! 947: \input texinfo @c -*-texinfo-*- ! 948: ! 949: This serves two functions. ! 950: ! 951: 1. When the file is processed by TeX, it loads the macros needed ! 952: for processing a Texinfo file. ! 953: ! 954: 2. When the file is edited in Emacs, it causes Texinfo mode to be ! 955: used. ! 956: ! 957: Every Texinfo file must end with a line saying ! 958: ! 959: @bye ! 960: ! 961: which terminates TeX processing and forces out unfinished pages. ! 962: ! 963: You also have to include two lines that specify the Info file name ! 964: and the title of the printed manual: ! 965: ! 966: @setfilename NAME-OF-TEXINFO-FILE ! 967: @settitle NAME OF MANUAL ! 968: ! 969: You might also want to include a line saying ! 970: ! 971: @setchapternewpage odd ! 972: ! 973: to cause each chapter to start on a fresh odd-numbered page. ! 974: ! 975: By default, TeX typesets pages for printing in an 8.5 by 11 inch ! 976: format. However, you can direct TeX to typeset a document in a 7 by ! 977: 9.25 inch format that is suitable for bound books by inserting the ! 978: following command on a line by itself at the beginning of the Texinfo ! 979: file, before the `@setchapternewpage' command: ! 980: ! 981: @smallbook ! 982: ! 983: The Free Software Foundation distributes printed copies of the ``GNU ! 984: Emacs Manual'' in this size. ! 985: ! 986: Finally, TeX sometimes is unable to typeset a line without extending ! 987: it into the right margin. This can occur when TeX comes upon what it ! 988: interprets as a long word that it cannot hyphenate, like a net ! 989: address, or a very long title. When this happens, TeX prints an ! 990: error message like this: ! 991: ! 992: Overfull \hbox (20.76302pt too wide) ! 993: ! 994: and gives the line number along with the text of the offending line ! 995: marked at all the places that TeX knows to hyphenate words. (In TeX ! 996: lines are in `horizontal boxes', hence the term, `hbox'.) ! 997: ! 998: If the Texinfo file has an overfull hbox, you can rewrite the ! 999: sentence so the overfull hbox does not occur or you can decide to ! 1000: leave it. A small excursion into the right margin often does not ! 1001: matter and may not even be noticable. However, unless told ! 1002: otherwise, TeX will print a large, ugly, black rectangle beside every ! 1003: line that is overfull. This is so you will notice the location of ! 1004: the problem if you are correcting a draft. To prevent such ! 1005: monstrosities from marring your final printout, put the following in ! 1006: the beginning of the Texinfo file on lines of their own, before the ! 1007: `@setchapternewpage' command: ! 1008: ! 1009: @iftex ! 1010: @finalout ! 1011: @end iftex ! 1012: ! 1013: *Note Titlepage::, for information about creating a title page. ! 1014: *Note Contents::, for information about creating a table of contents. ! 1015: ! 1016: ! 1017: ! 1018: File: texinfo, Node: Compile-Command, Prev: Requirements, Up: Printing Hardcopy ! 1019: ! 1020: Using Local Variables and the Compile Command ! 1021: ============================================= ! 1022: ! 1023: Another way to give the TeX formatting command to Texinfo is to put ! 1024: that command in a "local variables list" at the end of the Texinfo ! 1025: file. You can then specify the TeX formatting command as a ! 1026: `compile-command' and have Emacs run the TeX formatting command by ! 1027: giving the command `M-x compile'. This creates a special shell ! 1028: called the `*compilation buffer*'. For example, at the end of the ! 1029: `gdb.texinfo' file, after the `@bye', you would put the following: ! 1030: ! 1031: @c Local Variables: ! 1032: @c compile-command: "tex gdb.texinfo" ! 1033: @c End: ! 1034: ! 1035: This technique is most often used by programmers who compile programs ! 1036: this way. ! 1037: ! 1038: ! 1039: ! 1040: File: texinfo, Node: Creating an Info File, Next: Catching Mistakes, Prev: Printing Hardcopy, Up: Top ! 1041: ! 1042: Creating an On-line Info file ! 1043: ***************************** ! 1044: ! 1045: In GNU Emacs, using Texinfo mode, you can see what part or all of a ! 1046: Texinfo file will look like in Info by using the keyboard command ! 1047: `C-c C-f' (`texinfo-format-region'). This formats a region and ! 1048: displays in a temporary buffer called `*Info Region*'; however, this ! 1049: command does not turn on Info reading program--it just displays what ! 1050: the region will look like. The `texinfo-format-region' command is ! 1051: described more extensively in the chapter on using Texinfo mode. ! 1052: *Note Info on a Region::. ! 1053: ! 1054: In GNU Emacs, the way to create a working Info file is to visit the ! 1055: file and invoke ! 1056: ! 1057: `M-x texinfo-format-buffer' ! 1058: ! 1059: A new buffer is created and the Info file text is generated there. ! 1060: `C-x C-s' will save it under the name specified in the `@setfilename' ! 1061: command. ! 1062: ! 1063: If the Texinfo file has more than 30,000 bytes, ! 1064: `texinfo-format-buffer' will automatically create a "tag table" for ! 1065: it. With a tag table, Info can jump to new nodes more quickly than ! 1066: it can otherwise. In addition, if the file has more than 100,000 ! 1067: bytes in it, `texinfo-format-buffer' will split the file into shorter ! 1068: Indirect subfiles of about 50,000 bytes each. Files are split so ! 1069: that Info does not have to make a large buffer to hold the whole of a ! 1070: large Info file; instead, Info allocates just enough memory for the ! 1071: small, split off file that is needed at the time. This way, Emacs ! 1072: avoids wasting memory when you run Info. (Before splitting was ! 1073: implemented, Info files were always short and "include" files were ! 1074: designed as a way to create a single, large printed manual out of the ! 1075: smaller Info files. *Note Include Files::, for more information.) ! 1076: ! 1077: When the file is split, Info itself works through a shortened version ! 1078: of the original file that contains the tag table and references to ! 1079: the files that were split off. The split off files are called ! 1080: "indirect" files. ! 1081: ! 1082: The split off files have names that are created by appending `-1', ! 1083: `-2', `-3' and so on to the file names specified by the ! 1084: `@setfilename' command. The shortened version of the original file ! 1085: continues to have the name specified by `@setfilename'. ! 1086: ! 1087: At one stage in writing this document, for example, the Info file was ! 1088: saved as `test-texinfo' and that file looked like this: ! 1089: ! 1090: Info file: test-texinfo, -*-Text-*- ! 1091: produced by texinfo-format-buffer ! 1092: from file: new-texinfo-manual.texinfo ! 1093: ! 1094: ^_ ! 1095: Indirect: ! 1096: test-texinfo-1: 102 ! 1097: test-texinfo-2: 50422 ! 1098: test-texinfo-3: 101300 ! 1099: ^_^L ! 1100: Tag table: ! 1101: (Indirect) ! 1102: Node: overview^?104 ! 1103: Node: info file^?1271 ! 1104: Node: printed manual^?4853 ! 1105: Node: conventions^?6855 ! 1106: ... ! 1107: ! 1108: (But `test-texinfo' had far more nodes than are shown here.) Each of ! 1109: the split off, indirect files, `test-texinfo-1', `test-texinfo-2', ! 1110: and `test-texinfo-3', is listed in this file after the line that says ! 1111: `Indirect:'. The tag table is listed after the line that says `Tag ! 1112: table:'. ! 1113: ! 1114: You cannot run the `M-x Info-validate' node checking command on ! 1115: indirect files. For information on how to prevent files from being ! 1116: split and how to validate the structure of the nodes, *note ! 1117: Info-Validating a Large File::. ! 1118: ! 1119: * Menu: ! 1120: ! 1121: * Installing an Info File:: Putting the Info file in the info directory. ! 1122: ! 1123: ! 1124: ! 1125: File: texinfo, Node: Installing an Info File, Prev: Creating an Info File, Up: Creating an Info File ! 1126: ! 1127: Installing an Info file ! 1128: ======================= ! 1129: ! 1130: An Info file is usually installed in the GNU Emacs directory called ! 1131: `info'. For Info to work, this directory must contain all the Info ! 1132: files, including the split off files. In addition, the `info' ! 1133: directory must have a file that serves as a top level directory for ! 1134: the Info system. This file is called `dir'. ! 1135: ! 1136: For example, in the `info' directory, the file called `dir' has the ! 1137: top level menu for all the Info files in the system. This file has a ! 1138: master menu that looks like this: ! 1139: ! 1140: * Menu: ! 1141: ! 1142: * Info: (info). Documentation browsing system. ! 1143: * Emacs: (emacs). The extensible self-documenting text editor. ! 1144: * Texinfo: (texinfo). With one source file, make either a printed ! 1145: manual using TeX or an Info file using ! 1146: Texinfo. ! 1147: ! 1148: To add a new Info file, just add it to this menu. For example, if ! 1149: you were adding documentation for GDB, you would make the following ! 1150: entry: ! 1151: ! 1152: * GDB: (gdb). The source-level C debugger. ! 1153: ! 1154: The first item is the menu item name; it is followed by a colon. The ! 1155: second item is the name of the Info file, in parentheses; it is ! 1156: followed by a period. The third part of the entry is the description ! 1157: of the item. ! 1158: ! 1159: The top node of the file, named `top', should have as its parent the ! 1160: name of a node in another file, where there is a menu that leads to ! 1161: this file. Specify the file name in parentheses. If the file is to ! 1162: be installed directly in the Info directory file, use `(dir)' as the ! 1163: parent of the top node; this is short for `(dir)top', the node `top' ! 1164: in the file `dir', which is the main menu of Info. ! 1165: ! 1166: ! 1167: ! 1168: File: texinfo, Node: Catching Mistakes, Next: Command Syntax, Prev: Creating an Info File, Up: Top ! 1169: ! 1170: Catching Mistakes ! 1171: ***************** ! 1172: ! 1173: Besides mistakes with the content of what ever you are describing, ! 1174: there are two kinds of mistake you can make with Texinfo: you can ! 1175: make mistakes with @-commands, and you can make mistakes with the ! 1176: structure of the nodes and chapters. ! 1177: ! 1178: There are two tools for catching the first kind of mistake and two ! 1179: for catching the second. ! 1180: ! 1181: For finding problems with @-commands, your best action is to run `M-x ! 1182: texinfo-format-region' on regions of your file as you write it. In ! 1183: Texinfo mode, the `texinfo-format-region' command is bound to `C-c ! 1184: C-f'. In addition, you can run TeX on the whole file. ! 1185: ! 1186: For finding problems with the structure of nodes and chapters, you ! 1187: can use `C-c C-s' (`texinfo-show-structure') (and the related `occur' ! 1188: command) and you can use the `M-x Info-validate' command. ! 1189: ! 1190: * Menu: ! 1191: ! 1192: * Debugging with Info:: Catching errors with info formatting. ! 1193: * Debugging with Tex:: Catching errors with TeX formatting. ! 1194: * Using texinfo-show-structure:: Using `texinfo-show-structure' ! 1195: to catch mistakes. ! 1196: * Running Info-Validate:: Checking for unreferenced nodes. ! 1197: ! 1198: ! 1199: ! 1200: File: texinfo, Node: Debugging with Info, Next: Debugging with Tex, Up: Catching Mistakes ! 1201: ! 1202: Catching Errors with Info Formatting ! 1203: ==================================== ! 1204: ! 1205: After you have written part of a Texinfo file, you can use the `M-x ! 1206: texinfo-format-region' command to see whether the region formats ! 1207: properly. In Texinfo mode, this command is bound to the keyboard ! 1208: command `C-c C-f'. ! 1209: ! 1210: If you have made a mistake with an @-command, `M-x ! 1211: texinfo-format-region' will stop processing at or after the error and ! 1212: give an error message. To see where in the file the error occurred, ! 1213: switch to the `*Info Region*' buffer; the cursor will be in a ! 1214: position that is after the location of the error. Also, the text ! 1215: will not be formatted after the place the error occurred. ! 1216: ! 1217: For example, if you accidently end a menu with the command `@end ! 1218: menus' with an `s' on the end, instead of with `@end menu', you will ! 1219: get an error message that says: ! 1220: ! 1221: @end menus is not handled by texinfo. ! 1222: ! 1223: The cursor will stop at the point in the file where the error occurs, ! 1224: or not long after it. It will look like this: ! 1225: ! 1226: @menu ! 1227: * Using texinfo-show-structure:: Using `texinfo-show-structure' ! 1228: to catch mistakes. ! 1229: * Running Info-Validate:: Checking for unreferenced nodes. ! 1230: @end menus ! 1231: ! 1232: The `texinfo-format-region' command does not always recognize errors. ! 1233: For example, no errors were reported when `texinfo-format-region' was ! 1234: run on the whole itemized list of which the following is a part: ! 1235: ! 1236: name of the Texinfo file as an extension. The @samp{??} are `wildcards' ! 1237: that cause the shell to substitute all the raw index files. (@xref{sorting ! 1238: indices), for more information about sorting indices.) @refill ! 1239: @cindex Sorting indices ! 1240: @cindex Indices, sorting ! 1241: ! 1242: @item ! 1243: @emph{Third}, rerun the @TeX{} command on the Texinfo file. This ! 1244: regenerates a formatted DVI file with the index entries in the correct ! 1245: order. This second run also makes all the cross references and table of ! 1246: contents correct as well. ! 1247: ! 1248: Instead, `texinfo-format-region' ran without reporting the error, but ! 1249: it produced output with very long lines, containing some of the ! 1250: original `@cindex' commands mixed in. (It is not practical to ! 1251: display these over long lines here. ! 1252: ! 1253: However, when `texinfo-format-region' was run on part of the list ! 1254: that is shown, it did give an error message, `Search failed: "[{,}"'. ! 1255: (This error message is explained in the section on using the Emacs ! 1256: Lisp Debugger, *note Using the Emacs Lisp Debugger::.) ! 1257: ! 1258: Sometimes `texinfo-format-region' will stop long after the original ! 1259: error; this is because it does not discover the problem until then. ! 1260: In this case, you will have to backtrack. ! 1261: ! 1262: ! 1263: ! 1264: File: texinfo, Node: Using the Emacs Lisp Debugger, Up: Debugging with Info ! 1265: ! 1266: Using the Emacs Lisp Debugger ! 1267: ----------------------------- ! 1268: ! 1269: If an error is especially elusive, you can turn on the Emacs Lisp ! 1270: debugger and look at the backtrace; this tells you where in the ! 1271: `texinfo-format-region' function the problem occurred. You can turn ! 1272: on the debugger with the command: ! 1273: ! 1274: M-x set-variable RET debug-on-error RET t ! 1275: ! 1276: and turn it off with ! 1277: ! 1278: M-x set-variable RET debug-on-error RET nil ! 1279: ! 1280: Often, when you are using the debugger, it is easier to follow what ! 1281: is going on if you use the Emacs Lisp files that are not ! 1282: byte-compiled. The byte-compiled sources send octal numbers to the ! 1283: debugger that may look mysterious. To use the uncompiled source ! 1284: files, load `texinfmt.el' and `texinfo.el' with the `M-x load-file' ! 1285: command. ! 1286: ! 1287: The debugger will not catch an error if `texinfo-format-region' does ! 1288: not detect one. In the example shown above, `texinfo-format-region' ! 1289: did not find the error when the whole list was formatted, but only ! 1290: when part of the list was formatted. When `texinfo-format-region' ! 1291: did not find an error, the debugger did not find one either. ! 1292: ! 1293: However, when `texinfo-format-region' did report an error, it invoked ! 1294: the debugger. This is the backtrace it produced: ! 1295: ! 1296: Signalling: (search-failed "[},]") ! 1297: re-search-forward("[},]") ! 1298: (while ...) ! 1299: (let ...) ! 1300: texinfo-format-parse-args() ! 1301: (let ...) ! 1302: texinfo-format-xref() ! 1303: funcall(texinfo-format-xref) ! 1304: (if ...) ! 1305: (let ...) ! 1306: (if ...) ! 1307: (while ...) ! 1308: texinfo-format-scan() ! 1309: (save-excursion ...) ! 1310: (let ...) ! 1311: texinfo-format-region(103370 103631) ! 1312: * call-interactively(texinfo-format-region) ! 1313: ! 1314: The backtrace is read from the bottom up. `texinfo-format-region' ! 1315: was called interactively; and it, in turn, called various functions, ! 1316: including `texinfo-format-scan', `texinfo-format-xref' and ! 1317: `texinfo-format-parse-args'. Inside the function ! 1318: `texinfo-format-parse-args', the function `re-search-forward' was ! 1319: called; it was this function that could not find the missing right ! 1320: hand brace. ! 1321: ! 1322: *Note : (emacs)Lisp Debug, for more information. ! 1323: ! 1324: ! 1325: ! 1326: File: texinfo, Node: Debugging with Tex, Next: Using texinfo-show-structure, Prev: Debugging with Info, Up: Catching Mistakes ! 1327: ! 1328: Catching Errors with TeX Formatting ! 1329: =================================== ! 1330: ! 1331: You can also catch mistakes when you format a file with TeX. ! 1332: ! 1333: Usually, you will want to do this after you have run ! 1334: `texinfo-format-buffer' on the same file. `texinfo-format-buffer' is ! 1335: usually faster and sometimes gives error messages that make more ! 1336: sense. *Note Debugging with Info::, for more information. ! 1337: ! 1338: For example, TeX was run on the same itemized list discussed in the ! 1339: section on the use of `texinfo-format-region' (*note Debugging with ! 1340: Info::.); the fragment with the error looked like this: ! 1341: ! 1342: name of the texinfo file as an extension. The @samp{??} are `wildcards' ! 1343: that cause the shell to substitute all the raw index files. (@xref{sorting ! 1344: indices, for more information about sorting indices.) @refill ! 1345: ! 1346: This produced the following output, after which TeX stopped: ! 1347: ! 1348: Runaway argument? ! 1349: {sorting indices, for more information about sorting indices.) @refill @ETC. ! 1350: ! Paragraph ended before \xref was complete. ! 1351: <to be read again> ! 1352: \par ! 1353: l.27 ! 1354: ! 1355: ? ! 1356: ! 1357: In this case, TeX produced an accurate and understandable error ! 1358: message: `Paragraph ended before \xref was complete.' (Note, however, ! 1359: that TeX translated the `@' into a `\'.) Also, `\par' is an internal ! 1360: TeX command of no relevance to Texinfo.) ! 1361: ! 1362: Unfortunately, TeX is not always so helpful, and sometimes you have ! 1363: to be truly a Sherlock Holmes to discover what went wrong. ! 1364: ! 1365: In any case, if you run into a problem like this, you can do one of ! 1366: two things. ! 1367: ! 1368: 1. You can tell TeX to continue running and to ignore errors as ! 1369: best it can by typing `r RET' at the `?' prompt. ! 1370: ! 1371: This is often the best thing to do. However, beware: the one ! 1372: error may produce a cascade of additional error messages as it ! 1373: consequences are felt through the rest of the file. ! 1374: ! 1375: 2. You can tell TeX to stop this run by typing `x RET' at the `?' ! 1376: prompt. ! 1377: ! 1378: Sometimes TeX will format a file without producing error messages ! 1379: even though there is a problem. This usually occurs if a command is ! 1380: not ended but TeX is able to continue processing anyhow. For ! 1381: example, if you fail to end an itemized list with the `@end itemize' ! 1382: command, TeX will write a DVI file that you can print out. The only ! 1383: error message that TeX will give you is the somewhat mysterious ! 1384: comment that ! 1385: ! 1386: (\end occurred inside a group at level 1) ! 1387: ! 1388: However, if you print the DVI file, you will find that the text of ! 1389: the file that follows the itemized list is entirely indented as if it ! 1390: were part of the last item in the itemized list. The error message ! 1391: is the way TeX says that it expected to find an `@end' command ! 1392: somewhere in the file; but that it could not locate where it was ! 1393: needed. ! 1394: ! 1395: Another source of notoriously hard to find errors is a missing `@end ! 1396: group' command. If you ever are stumped by incomprehensible errors, ! 1397: look for a missing `@end group' command first. ! 1398: ! 1399: If you do not have the header lines in the file, TeX may stop in the ! 1400: beginning of its run and display output that looks like the following. ! 1401: The `*' indicates that TeX is waiting for input. ! 1402: ! 1403: This is TeX, Version 2.0 for Berkeley UNIX (preloaded format=plain-cm ! 1404: 87.10.25) (#tz-bar-a02987.tex [1]) ! 1405: * ! 1406: ! 1407: In this case, simply type `\end RET' after the asterisk. Then put ! 1408: the header lines into the Texinfo file and run the TeX command again. ! 1409: ! 1410:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.