diff options
| author | Jari Aalto <jari.aalto@cante.net> | 1997-09-22 20:22:27 +0000 |
|---|---|---|
| committer | Jari Aalto <jari.aalto@cante.net> | 2009-09-12 16:46:51 +0000 |
| commit | e8ce775db824de329b81293b4e5d8fbd65624528 (patch) | |
| tree | 4b20c4dc766f5172b65ca1bc16ae1b6d48920fa1 /doc | |
| parent | d166f048818e10cf3799aa24a174fb22835f1acc (diff) | |
| download | android_external_bash-e8ce775db824de329b81293b4e5d8fbd65624528.tar.gz android_external_bash-e8ce775db824de329b81293b4e5d8fbd65624528.tar.bz2 android_external_bash-e8ce775db824de329b81293b4e5d8fbd65624528.zip | |
Imported from ../bash-2.01.1.tar.gz.
Diffstat (limited to 'doc')
| -rw-r--r-- | doc/Makefile.in | 3 | ||||
| -rw-r--r-- | doc/bashref.info | 996 | ||||
| -rw-r--r-- | doc/bashref.texi | 5 | ||||
| -rw-r--r-- | doc/texinfo.tex | 1205 |
4 files changed, 1246 insertions, 963 deletions
diff --git a/doc/Makefile.in b/doc/Makefile.in index 3f4ee98..98f76b0 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -142,7 +142,8 @@ maintainer-clean: clean installdirs: -test -d $(man1dir) || $(SHELL) ${MKDIRS} $(man1dir) - -test -d $(man3dir) || $(SHELL) ${MKDIRS} $(man3dir) +# uncomment the next line to create the directory for the readline man page +# -test -d $(man3dir) || $(SHELL) ${MKDIRS} $(man3dir) -test -d $(infodir) || $(SHELL) ${MKDIRS} $(infodir) install: info installdirs diff --git a/doc/bashref.info b/doc/bashref.info index 974c2ce..4707a20 100644 --- a/doc/bashref.info +++ b/doc/bashref.info @@ -1,5 +1,10 @@ -This is Info file bashref.info, produced by Makeinfo-1.64 from the -input file ./bashref.texi. +This is Info file bashref.info, produced by Makeinfo version 1.67 from +the input file /usr/homes/chet/src/bash/bash-2.01.1/doc/bashref.texi. + +INFO-DIR-SECTION Utilities +START-INFO-DIR-ENTRY +* Bash: (bash). GNU Bourne-Again SHell +END-INFO-DIR-ENTRY This text is a brief description of the features that are present in the Bash shell. @@ -2412,7 +2417,7 @@ the `alias' and `unalias' builtin commands. has an alias. If so, that word is replaced by the text of the alias. The alias name and the replacement text may contain any valid shell input, including shell metacharacters, with the exception that the -alias name may not contain =. The first word of the replacement text +alias name may not contain <=>. The first word of the replacement text is tested for aliases, but a word that is identical to an alias being expanded is not expanded a second time. This means that one may alias `ls' to `"ls -F"', for instance, and Bash does not try to recursively @@ -4464,7 +4469,7 @@ history list. `!' Start a history substitution, except when followed by a space, tab, - the end of the line, = or (. + the end of the line, <=> or <(>. `!N' Refer to command line N. @@ -4610,21 +4615,22 @@ Introduction to Line Editing The following paragraphs describe the notation used to represent keystrokes. - The text C-k is read as `Control-K' and describes the character -produced when the k key is pressed while the Control key is depressed. + The text <C-k> is read as `Control-K' and describes the character +produced when the <k> key is pressed while the Control key is depressed. - The text M-k is read as `Meta-K' and describes the character -produced when the meta key (if you have one) is depressed, and the k + The text <M-k> is read as `Meta-K' and describes the character +produced when the meta key (if you have one) is depressed, and the <k> key is pressed. If you do not have a meta key, the identical keystroke -can be generated by typing ESC first, and then typing k. Either -process is known as "metafying" the k key. +can be generated by typing <ESC> first, and then typing <k>. Either +process is known as "metafying" the <k> key. - The text M-C-k is read as `Meta-Control-k' and describes the -character produced by "metafying" C-k. + The text <M-C-k> is read as `Meta-Control-k' and describes the +character produced by "metafying" <C-k>. - In addition, several keys have their own names. Specifically, DEL, -ESC, LFD, SPC, RET, and TAB all stand for themselves when seen in this -text, or in an init file (*note Readline Init File::.). + In addition, several keys have their own names. Specifically, +<DEL>, <ESC>, <LFD>, <SPC>, <RET>, and <TAB> all stand for themselves +when seen in this text, or in an init file (*note Readline Init +File::.). File: bashref.info, Node: Readline Interaction, Next: Readline Init File, Prev: Introduction and Notation, Up: Command Line Editing @@ -4639,9 +4645,9 @@ as you type it in, allowing you to just fix your typo, and not forcing you to retype the majority of the line. Using these editing commands, you move the cursor to the place that needs correction, and delete or insert the text of the corrections. Then, when you are satisfied with -the line, you simply press RETURN. You do not have to be at the end of -the line to press RETURN; the entire line is accepted regardless of the -location of the cursor within the line. +the line, you simply press <RETURN>. You do not have to be at the end +of the line to press <RETURN>; the entire line is accepted regardless +of the location of the cursor within the line. * Menu: @@ -4664,9 +4670,9 @@ erase character to back up and delete the mistyped character. Sometimes you may miss typing a character that you wanted to type, and not notice your error until you have typed several other -characters. In that case, you can type C-b to move the cursor to the +characters. In that case, you can type <C-b> to move the cursor to the left, and then correct your mistake. Afterwards, you can move the -cursor to the right with C-f. +cursor to the right with <C-f>. When you add text in the middle of a line, you will notice that characters to the right of the cursor are `pushed over' to make room @@ -4676,22 +4682,22 @@ back' to fill in the blank space created by the removal of the text. A list of the basic bare essentials for editing the text of an input line follows. -C-b +<C-b> Move back one character. -C-f +<C-f> Move forward one character. -DEL +<DEL> Delete the character to the left of the cursor. -C-d +<C-d> Delete the character underneath the cursor. Printing characters Insert the character into the line at the cursor. -C-_ +<C-_> Undo the last thing that you did. You can undo all the way back to an empty line. @@ -4703,28 +4709,28 @@ Readline Movement Commands The above table describes the most basic possible keystrokes that you need in order to do editing of the input line. For your -convenience, many other commands have been added in addition to C-b, -C-f, C-d, and DEL. Here are some commands for moving more rapidly +convenience, many other commands have been added in addition to <C-b>, +<C-f>, <C-d>, and <DEL>. Here are some commands for moving more rapidly about the line. -C-a +<C-a> Move to the start of the line. -C-e +<C-e> Move to the end of the line. -M-f +<M-f> Move forward a word. -M-b +<M-b> Move backward a word. -C-l +<C-l> Clear the screen, reprinting the current line at the top. - Notice how C-f moves forward a character, while M-f moves forward a -word. It is a loose convention that control keystrokes operate on -characters while meta keystrokes operate on words. + Notice how <C-f> moves forward a character, while <M-f> moves +forward a word. It is a loose convention that control keystrokes +operate on characters while meta keystrokes operate on words. File: bashref.info, Node: Readline Killing Commands, Next: Readline Arguments, Prev: Readline Movement Commands, Up: Readline Interaction @@ -4746,32 +4752,32 @@ available to be yanked back later, when you are typing another line. Here is the list of commands for killing text. -C-k +<C-k> Kill the text from the current cursor position to the end of the line. -M-d +<M-d> Kill from the cursor to the end of the current word, or if between words, to the end of the next word. -M-DEL +<M-DEL> Kill from the cursor the start of the previous word, or if between words, to the start of the previous word. -C-w +<C-w> Kill from the cursor to the previous whitespace. This is - different than M-DEL because the word boundaries differ. + different than <M-DEL> because the word boundaries differ. And, here is how to "yank" the text back into the line. Yanking means to copy the most-recently-killed text from the kill buffer. -C-y +<C-y> Yank the most recently killed text back into the buffer at the cursor. -M-y +<M-y> Rotate the kill-ring, and yank the new top. You can only do this - if the prior command is C-y or M-y. + if the prior command is <C-y> or <M-y>. File: bashref.info, Node: Readline Arguments, Next: Searching, Prev: Readline Killing Commands, Up: Readline Interaction @@ -4788,10 +4794,10 @@ start of the line, you might type `M-- C-k'. The general way to pass numeric arguments to a command is to type meta digits before the command. If the first `digit' you type is a -minus sign (-), then the sign of the argument will be negative. Once +minus sign (<->), then the sign of the argument will be negative. Once you have typed one meta digit to get the argument started, you can type the remainder of the digits, and then the command. For example, to give -the C-d command an argument of 10, you could type `M-1 0 C-d'. +the <C-d> command an argument of 10, you could type `M-1 0 C-d'. File: bashref.info, Node: Searching, Prev: Readline Arguments, Up: Readline Interaction @@ -4897,7 +4903,7 @@ Variable Settings `convert-meta' If set to `on', Readline will convert characters with the eigth bit set to an ASCII key sequence by stripping the eigth - bit and prepending an ESC character, converting them to a + bit and prepending an <ESC> character, converting them to a meta-prefixed key sequence. The default value is `on'. `disable-completion' @@ -5011,23 +5017,23 @@ Key Bindings The following escape sequences are available when specifying key sequences: - ``\C-'' + `\C-' control prefix - ``\M-'' + `\M-' meta prefix - ``\e'' + `\e' an escape character - ``\\'' + `\\' backslash - ``\"'' - " + `\"' + <"> - ``\''' - ' + `\'' + <'> When entering the text of a macro, single or double quotes should be used to indicate a macro definition. Unquoted text @@ -5331,7 +5337,7 @@ Commands For Changing Text `quoted-insert (C-q, C-v)' Add the next character that you type to the line verbatim. This is - how to insert key sequences like C-q, for example. + how to insert key sequences like <C-q>, for example. `tab-insert (M-TAB)' Insert a tab character. @@ -5432,7 +5438,7 @@ Specifying Numeric Arguments `digit-argument (M-0, M-1, ... M--)' Add this digit to the argument already accumulating, or start a new - argument. M- starts a negative argument. + argument. <M-> starts a negative argument. `universal-argument ()' This is another way to specify an argument. If this command is @@ -5672,7 +5678,7 @@ modes, use the `set -o emacs' and `set -o vi' commands (*note The Set Builtin::.). The Readline default is `emacs' mode. When you enter a line in `vi' mode, you are already placed in -`insertion' mode, as if you had typed an `i'. Pressing ESC switches +`insertion' mode, as if you had typed an `i'. Pressing <ESC> switches you into `command' mode, where you can edit the text of the line with the standard `vi' movement keys, move to previous history lines with `k' and subsequent lines with `j', and so forth. @@ -6082,60 +6088,60 @@ Index of Shell Builtin Commands * Menu: -* .: Bourne Shell Builtins. -* :: Bourne Shell Builtins. -* [: Bourne Shell Builtins. -* alias: Alias Builtins. -* bg: Job Control Builtins. -* bind: Bash Builtins. -* break: Bourne Shell Builtins. -* builtin: Bash Builtins. -* cd: Bourne Shell Builtins. -* command: Bash Builtins. -* continue: Bourne Shell Builtins. -* declare: Bash Builtins. -* dirs: C Shell Builtins. -* disown: Job Control Builtins. -* echo: Bash Builtins. -* enable: Bash Builtins. -* eval: Bourne Shell Builtins. -* exec: Bourne Shell Builtins. -* exit: Bourne Shell Builtins. -* export: Bourne Shell Builtins. -* fc: Korn Shell Builtins. -* fg: Job Control Builtins. -* getopts: Bourne Shell Builtins. -* hash: Bourne Shell Builtins. -* help: Bash Builtins. -* history: C Shell Builtins. -* jobs: Job Control Builtins. -* kill: Job Control Builtins. -* let <1>: Arithmetic Builtins. -* let: Korn Shell Builtins. -* local: Bash Builtins. -* logout <1>: Bash Builtins. -* logout: C Shell Builtins. -* popd: C Shell Builtins. -* pushd: C Shell Builtins. -* pwd: Bourne Shell Builtins. -* read: Bash Builtins. -* readonly: Bourne Shell Builtins. -* return: Bourne Shell Builtins. -* set: The Set Builtin. -* shift: Bourne Shell Builtins. -* shopt: Bash Builtins. -* source: C Shell Builtins. -* suspend: Job Control Builtins. -* test: Bourne Shell Builtins. -* times: Bourne Shell Builtins. -* trap: Bourne Shell Builtins. -* type: Bash Builtins. -* typeset: Korn Shell Builtins. -* ulimit: Bash Builtins. -* umask: Bourne Shell Builtins. -* unalias: Alias Builtins. -* unset: Bourne Shell Builtins. -* wait: Job Control Builtins. +* .: Bourne Shell Builtins. +* :: Bourne Shell Builtins. +* [: Bourne Shell Builtins. +* alias: Alias Builtins. +* bg: Job Control Builtins. +* bind: Bash Builtins. +* break: Bourne Shell Builtins. +* builtin: Bash Builtins. +* cd: Bourne Shell Builtins. +* command: Bash Builtins. +* continue: Bourne Shell Builtins. +* declare: Bash Builtins. +* dirs: C Shell Builtins. +* disown: Job Control Builtins. +* echo: Bash Builtins. +* enable: Bash Builtins. +* eval: Bourne Shell Builtins. +* exec: Bourne Shell Builtins. +* exit: Bourne Shell Builtins. +* export: Bourne Shell Builtins. +* fc: Korn Shell Builtins. +* fg: Job Control Builtins. +* getopts: Bourne Shell Builtins. +* hash: Bourne Shell Builtins. +* help: Bash Builtins. +* history: C Shell Builtins. +* jobs: Job Control Builtins. +* kill: Job Control Builtins. +* let <1>: Arithmetic Builtins. +* let: Korn Shell Builtins. +* local: Bash Builtins. +* logout <1>: Bash Builtins. +* logout: C Shell Builtins. +* popd: C Shell Builtins. +* pushd: C Shell Builtins. +* pwd: Bourne Shell Builtins. +* read: Bash Builtins. +* readonly: Bourne Shell Builtins. +* return: Bourne Shell Builtins. +* set: The Set Builtin. +* shift: Bourne Shell Builtins. +* shopt: Bash Builtins. +* source: C Shell Builtins. +* suspend: Job Control Builtins. +* test: Bourne Shell Builtins. +* times: Bourne Shell Builtins. +* trap: Bourne Shell Builtins. +* type: Bash Builtins. +* typeset: Korn Shell Builtins. +* ulimit: Bash Builtins. +* umask: Bourne Shell Builtins. +* unalias: Alias Builtins. +* unset: Bourne Shell Builtins. +* wait: Job Control Builtins. File: bashref.info, Node: Reserved Word Index, Next: Variable Index, Prev: Builtin Index, Up: Top @@ -6145,25 +6151,25 @@ Shell Reserved Words * Menu: -* !: Pipelines. -* {: Command Grouping. -* }: Command Grouping. -* case: Conditional Constructs. -* do: Looping Constructs. -* done: Looping Constructs. -* elif: Conditional Constructs. -* else: Conditional Constructs. -* esac: Conditional Constructs. -* fi: Conditional Constructs. -* for: Looping Constructs. -* function: Shell Functions. -* if: Conditional Constructs. -* in: Conditional Constructs. -* select: Korn Shell Constructs. -* then: Conditional Constructs. -* time: Pipelines. -* until: Looping Constructs. -* while: Looping Constructs. +* !: Pipelines. +* case: Conditional Constructs. +* do: Looping Constructs. +* done: Looping Constructs. +* elif: Conditional Constructs. +* else: Conditional Constructs. +* esac: Conditional Constructs. +* fi: Conditional Constructs. +* for: Looping Constructs. +* function: Shell Functions. +* if: Conditional Constructs. +* in: Conditional Constructs. +* select: Korn Shell Constructs. +* then: Conditional Constructs. +* time: Pipelines. +* until: Looping Constructs. +* while: Looping Constructs. +* {: Command Grouping. +* }: Command Grouping. File: bashref.info, Node: Variable Index, Next: Function Index, Prev: Reserved Word Index, Up: Top @@ -6173,89 +6179,89 @@ Parameter and Variable Index * Menu: -* !: Special Parameters. -* #: Special Parameters. -* $: Special Parameters. -* *: Special Parameters. -* -: Special Parameters. -* 0: Special Parameters. -* ?: Special Parameters. -* @: Special Parameters. -* _: Special Parameters. -* auto_resume: Job Control Variables. -* BASH: Bash Variables. -* BASH_ENV: Bash Variables. -* BASH_VERSINFO: Bash Variables. -* BASH_VERSION: Bash Variables. -* bell-style: Readline Init File Syntax. -* CDPATH: Bourne Shell Variables. -* comment-begin: Readline Init File Syntax. -* completion-query-items: Readline Init File Syntax. -* convert-meta: Readline Init File Syntax. -* DIRSTACK: Bash Variables. -* disable-completion: Readline Init File Syntax. -* editing-mode: Readline Init File Syntax. -* enable-keypad: Readline Init File Syntax. -* EUID: Bash Variables. -* expand-tilde: Readline Init File Syntax. -* FCEDIT: Korn Shell Variables. -* FIGNORE: Bash Variables. -* GLOBIGNORE: Bash Variables. -* GROUPS: Bash Variables. -* histchars: Bash Variables. -* HISTCMD: Bash Variables. -* HISTCONTROL: Bash Variables. -* HISTFILE: Bash Variables. -* HISTFILESIZE: Bash Variables. -* HISTIGNORE: Bash Variables. -* HISTSIZE: Bash Variables. -* HOME: Bourne Shell Variables. -* horizontal-scroll-mode: Readline Init File Syntax. -* HOSTFILE: Bash Variables. -* HOSTNAME: Bash Variables. -* HOSTTYPE: Bash Variables. -* IFS: Bourne Shell Variables. -* IGNOREEOF <1>: Bash Variables. -* IGNOREEOF: C Shell Variables. -* input-meta: Readline Init File Syntax. -* INPUTRC: Bash Variables. -* keymap: Readline Init File Syntax. -* LANG: Bash Variables. -* LC_ALL: Bash Variables. -* LC_COLLATE: Bash Variables. -* LC_MESSAGES: Bash Variables. -* LINENO: Korn Shell Variables. -* MACHTYPE: Bash Variables. -* MAIL: Bourne Shell Variables. -* MAILCHECK: Bash Variables. -* MAILPATH: Bourne Shell Variables. -* mark-modified-lines: Readline Init File Syntax. -* meta-flag: Readline Init File Syntax. -* OLDPWD: Korn Shell Variables. -* OPTARG: Bourne Shell Variables. -* OPTERR: Bash Variables. -* OPTIND: Bourne Shell Variables. -* OSTYPE: Bash Variables. -* output-meta: Readline Init File Syntax. -* PATH: Bourne Shell Variables. -* PIPESTATUS: Bash Variables. -* PPID: Bash Variables. -* PROMPT_COMMAND: Bash Variables. -* PS1: Bourne Shell Variables. -* PS2: Bourne Shell Variables. -* PS3: Korn Shell Variables. -* PS4: Korn Shell Variables. -* PWD: Korn Shell Variables. -* RANDOM: Korn Shell Variables. -* REPLY: Korn Shell Variables. -* SECONDS: Korn Shell Variables. -* SHELLOPTS: Bash Variables. -* SHLVL: Bash Variables. -* show-all-if-ambiguous: Readline Init File Syntax. -* TIMEFORMAT: Bash Variables. -* TMOUT: Korn Shell Variables. -* UID: Bash Variables. -* visible-stats: Readline Init File Syntax. +* !: Special Parameters. +* #: Special Parameters. +* $: Special Parameters. +* *: Special Parameters. +* -: Special Parameters. +* 0: Special Parameters. +* ?: Special Parameters. +* @: Special Parameters. +* _: Special Parameters. +* auto_resume: Job Control Variables. +* BASH: Bash Variables. +* BASH_ENV: Bash Variables. +* BASH_VERSINFO: Bash Variables. +* BASH_VERSION: Bash Variables. +* bell-style: Readline Init File Syntax. +* CDPATH: Bourne Shell Variables. +* comment-begin: Readline Init File Syntax. +* completion-query-items: Readline Init File Syntax. +* convert-meta: Readline Init File Syntax. +* DIRSTACK: Bash Variables. +* disable-completion: Readline Init File Syntax. +* editing-mode: Readline Init File Syntax. +* enable-keypad: Readline Init File Syntax. +* EUID: Bash Variables. +* expand-tilde: Readline Init File Syntax. +* FCEDIT: Korn Shell Variables. +* FIGNORE: Bash Variables. +* GLOBIGNORE: Bash Variables. +* GROUPS: Bash Variables. +* histchars: Bash Variables. +* HISTCMD: Bash Variables. +* HISTCONTROL: Bash Variables. +* HISTFILE: Bash Variables. +* HISTFILESIZE: Bash Variables. +* HISTIGNORE: Bash Variables. +* HISTSIZE: Bash Variables. +* HOME: Bourne Shell Variables. +* horizontal-scroll-mode: Readline Init File Syntax. +* HOSTFILE: Bash Variables. +* HOSTNAME: Bash Variables. +* HOSTTYPE: Bash Variables. +* IFS: Bourne Shell Variables. +* IGNOREEOF <1>: Bash Variables. +* IGNOREEOF: C Shell Variables. +* input-meta: Readline Init File Syntax. +* INPUTRC: Bash Variables. +* keymap: Readline Init File Syntax. +* LANG: Bash Variables. +* LC_ALL: Bash Variables. +* LC_COLLATE: Bash Variables. +* LC_MESSAGES: Bash Variables. +* LINENO: Korn Shell Variables. +* MACHTYPE: Bash Variables. +* MAIL: Bourne Shell Variables. +* MAILCHECK: Bash Variables. +* MAILPATH: Bourne Shell Variables. +* mark-modified-lines: Readline Init File Syntax. +* meta-flag: Readline Init File Syntax. +* OLDPWD: Korn Shell Variables. +* OPTARG: Bourne Shell Variables. +* OPTERR: Bash Variables. +* OPTIND: Bourne Shell Variables. +* OSTYPE: Bash Variables. +* output-meta: Readline Init File Syntax. +* PATH: Bourne Shell Variables. +* PIPESTATUS: Bash Variables. +* PPID: Bash Variables. +* PROMPT_COMMAND: Bash Variables. +* PS1: Bourne Shell Variables. +* PS2: Bourne Shell Variables. +* PS3: Korn Shell Variables. +* PS4: Korn Shell Variables. +* PWD: Korn Shell Variables. +* RANDOM: Korn Shell Variables. +* REPLY: Korn Shell Variables. +* SECONDS: Korn Shell Variables. +* SHELLOPTS: Bash Variables. +* SHLVL: Bash Variables. +* show-all-if-ambiguous: Readline Init File Syntax. +* TIMEFORMAT: Bash Variables. +* TMOUT: Korn Shell Variables. +* UID: Bash Variables. +* visible-stats: Readline Init File Syntax. File: bashref.info, Node: Function Index, Next: Concept Index, Prev: Variable Index, Up: Top @@ -6265,74 +6271,74 @@ Function Index * Menu: -* abort (C-g): Miscellaneous Commands. -* accept-line (Newline, Return): Commands For History. -* backward-char (C-b): Commands For Moving. -* backward-delete-char (Rubout): Commands For Text. -* backward-kill-line (C-x Rubout): Commands For Killing. -* backward-kill-word (M-DEL): Commands For Killing. -* backward-word (M-b): Commands For Moving. -* beginning-of-history (M-<): Commands For History. -* beginning-of-line (C-a): Commands For Moving. -* call-last-kbd-macro (C-x e): Keyboard Macros. -* capitalize-word (M-c): Commands For Text. -* character-search (C-]): Miscellaneous Commands. -* character-search-backward (M-C-]): Miscellaneous Commands. -* clear-screen (C-l): Commands For Moving. -* complete (TAB): Commands For Completion. -* copy-backward-word (): Commands For Killing. -* copy-forward-word (): Commands For Killing. -* copy-region-as-kill (): Commands For Killing. -* delete-char (C-d): Commands For Text. -* delete-horizontal-space (): Commands For Killing. -* digit-argument (M-0, M-1, ... M-): Numeric Arguments. +* abort (C-g): Miscellaneous Commands. +* accept-line (Newline, Return): Commands For History. +* backward-char (C-b): Commands For Moving. +* backward-delete-char (Rubout): Commands For Text. +* backward-kill-line (C-x Rubout): Commands For Killing. +* backward-kill-word (M-DEL): Commands For Killing. +* backward-word (M-b): Commands For Moving. +* beginning-of-history (M-<): Commands For History. +* beginning-of-line (C-a): Commands For Moving. +* call-last-kbd-macro (C-x e): Keyboard Macros. +* capitalize-word (M-c): Commands For Text. +* character-search (C-]): Miscellaneous Commands. +* character-search-backward (M-C-]): Miscellaneous Commands. +* clear-screen (C-l): Commands For Moving. +* complete (TAB): Commands For Completion. +* copy-backward-word (): Commands For Killing. +* copy-forward-word (): Commands For Killing. +* copy-region-as-kill (): Commands For Killing. +* delete-char (C-d): Commands For Text. +* delete-horizontal-space (): Commands For Killing. +* digit-argument (M-0, M-1, ... M--): Numeric Arguments. * do-uppercase-version (M-a, M-b, M-X, ...): Miscellaneous Commands. -* downcase-word (M-l): Commands For Text. -* dump-functions (): Miscellaneous Commands. -* dump-macros (): Miscellaneous Commands. -* dump-variables (): Miscellaneous Commands. -* end-kbd-macro (C-x )): Keyboard Macros. -* end-of-history (M->): Commands For History. -* end-of-line (C-e): Commands For Moving. -* exchange-point-and-mark (C-x C-x): Miscellaneous Commands. -* forward-char (C-f): Commands For Moving. -* forward-search-history (C-s): Commands For History. -* forward-word (M-f): Commands For Moving. -* history-search-backward (): Commands For History. -* history-search-forward (): Commands For History. -* insert-comment (M-#): Miscellaneous Commands. -* insert-completions (M-*): Commands For Completion. -* kill-line (C-k): Commands For Killing. -* kill-region (): Commands For Killing. -* kill-whole-line (): Commands For Killing. -* kill-word (M-d): Commands For Killing. -* next-history (C-n): Commands For History. +* downcase-word (M-l): Commands For Text. +* dump-functions (): Miscellaneous Commands. +* dump-macros (): Miscellaneous Commands. +* dump-variables (): Miscellaneous Commands. +* end-kbd-macro (C-x )): Keyboard Macros. +* end-of-history (M->): Commands For History. +* end-of-line (C-e): Commands For Moving. +* exchange-point-and-mark (C-x C-x): Miscellaneous Commands. +* forward-char (C-f): Commands For Moving. +* forward-search-history (C-s): Commands For History. +* forward-word (M-f): Commands For Moving. +* history-search-backward (): Commands For History. +* history-search-forward (): Commands For History. +* insert-comment (M-#): Miscellaneous Commands. +* insert-completions (M-*): Commands For Completion. +* kill-line (C-k): Commands For Killing. +* kill-region (): Commands For Killing. +* kill-whole-line (): Commands For Killing. +* kill-word (M-d): Commands For Killing. +* next-history (C-n): Commands For History. * non-incremental-forward-search-history (M-n): Commands For History. * non-incremental-reverse-search-history (M-p): Commands For History. -* possible-completions (M-?): Commands For Completion. -* prefix-meta (ESC): Miscellaneous Commands. -* previous-history (C-p): Commands For History. -* quoted-insert (C-q, C-v): Commands For Text. -* re-read-init-file (C-x C-r): Miscellaneous Commands. -* redraw-current-line (): Commands For Moving. -* reverse-search-history (C-r): Commands For History. -* revert-line (M-r): Miscellaneous Commands. -* self-insert (a, b, A, 1, !, ...): Commands For Text. -* set-mark (C-@): Miscellaneous Commands. -* start-kbd-macro (C-x (): Keyboard Macros. -* tab-insert (M-TAB): Commands For Text. -* tilde-expand (M-~): Miscellaneous Commands. -* transpose-chars (C-t): Commands For Text. -* transpose-words (M-t): Commands For Text. -* undo (C-_, C-x C-u): Miscellaneous Commands. -* universal-argument (): Numeric Arguments. -* unix-line-discard (C-u): Commands For Killing. -* unix-word-rubout (C-w): Commands For Killing. -* upcase-word (M-u): Commands For Text. -* yank (C-y): Commands For Killing. -* yank-last-arg (M-., M-_): Commands For History. -* yank-nth-arg (M-C-y): Commands For History. -* yank-pop (M-y): Commands For Killing. +* possible-completions (M-?): Commands For Completion. +* prefix-meta (ESC): Miscellaneous Commands. +* previous-history (C-p): Commands For History. +* quoted-insert (C-q, C-v): Commands For Text. +* re-read-init-file (C-x C-r): Miscellaneous Commands. +* redraw-current-line (): Commands For Moving. +* reverse-search-history (C-r): Commands For History. +* revert-line (M-r): Miscellaneous Commands. +* self-insert (a, b, A, 1, !, ...): Commands For Text. +* set-mark (C-@): Miscellaneous Commands. +* start-kbd-macro (C-x (): Keyboard Macros. +* tab-insert (M-TAB): Commands For Text. +* tilde-expand (M-~): Miscellaneous Commands. +* transpose-chars (C-t): Commands For Text. +* transpose-words (M-t): Commands For Text. +* undo (C-_, C-x C-u): Miscellaneous Commands. +* universal-argument (): Numeric Arguments. +* unix-line-discard (C-u): Commands For Killing. +* unix-word-rubout (C-w): Commands For Killing. +* upcase-word (M-u): Commands For Text. +* yank (C-y): Commands For Killing. +* yank-last-arg (M-., M-_): Commands For History. +* yank-nth-arg (M-C-y): Commands For History. +* yank-pop (M-y): Commands For Killing. File: bashref.info, Node: Concept Index, Prev: Function Index, Up: Top @@ -6342,226 +6348,226 @@ Concept Index * Menu: -* alias expansion: Aliases. -* arithmetic evaluation: Arithmetic Evaluation. -* arithmetic expansion: Arithmetic Expansion. -* arithmetic, shell: Shell Arithmetic. -* arrays: Arrays. -* background: Job Control Basics. -* Bash configuration: Basic Installation. -* Bash installation: Basic Installation. -* Bourne shell: Basic Shell Features. -* brace expansion: Brace Expansion. -* builtin: Definitions. -* command editing: Readline Bare Essentials. -* command execution: Command Search and Execution. -* command history: Bash History Facilities. -* command search: Command Search and Execution. -* command substitution: Command Substitution. -* command timing: Pipelines. -* commands, conditional: Conditional Constructs. -* commands, grouping: Command Grouping. -* commands, lists: Lists. -* commands, looping: Looping Constructs. -* commands, pipelines: Pipelines. -* commands, simple: Simple Commands. -* comments, shell: Comments. -* configuration: Basic Installation. -* control operator: Definitions. -* editing command lines: Readline Bare Essentials. -* environment: Environment. -* evaluation, arithmetic: Arithmetic Evaluation. -* event designators: Event Designators. -* exit status <1>: Definitions. -* exit status: Exit Status. -* expansion: Shell Expansions. -* expansion, arithmetic: Arithmetic Expansion. -* expansion, brace: Brace Expansion. -* expansion, filename: Filename Expansion. -* expansion, parameter: Shell Parameter Expansion. -* expansion, pathname: Filename Expansion. -* expansion, tilde: Tilde Expansion. -* expressions, arithmetic: Arithmetic Evaluation. -* expressions, conditional: Bash Conditional Expressions. -* field: Definitions. -* filename: Definitions. -* filename expansion: Filename Expansion. -* foreground: Job Control Basics. -* functions, shell: Shell Functions. -* history events: Event Designators. -* history expansion: History Interaction. -* history list: Bash History Facilities. -* History, how to use: Job Control Variables. -* identifier: Definitions. -* initialization file, readline: Readline Init File. -* installation: Basic Installation. -* interaction, readline: Readline Interaction. -* interactive shell <1>: Is This Shell Interactive?. -* interactive shell: Invoking Bash. -* job: Definitions. -* job control <1>: Definitions. -* job control: Job Control Basics. -* kill ring: Readline Killing Commands. -* killing text: Readline Killing Commands. -* localization: Locale Translation. -* metacharacter: Definitions. -* name: Definitions. -* notation, readline: Readline Bare Essentials. -* operator, shell: Definitions. -* parameter expansion: Shell Parameter Expansion. -* parameters: Shell Parameters. -* parameters, positional: Positional Parameters. -* parameters, special: Special Parameters. -* pathname expansion: Filename Expansion. -* pipeline: Pipelines. -* POSIX: Definitions. -* POSIX Mode: Bash POSIX Mode. -* process group: Definitions. -* process group ID: Definitions. -* process substitution: Process Substitution. -* prompting: Printing a Prompt. -* quoting: Quoting. -* quoting, ANSI: ANSI-C Quoting. -* Readline, how to use: Modifiers. -* redirection: Redirections. -* reserved word: Definitions. -* restricted shell: The Restricted Shell. -* return status: Definitions. -* shell function: Shell Functions. -* shell script: Shell Scripts. -* shell variable: Shell Parameters. -* signal: Definitions. -* signal handling: Signals. -* special builtin: Definitions. -* startup files: Bash Startup Files. -* suspending jobs: Job Control Basics. -* tilde expansion: Tilde Expansion. -* token: Definitions. -* variable, shell: Shell Parameters. -* word: Definitions. -* word splitting: Word Splitting. -* yanking text: Readline Killing Commands. +* alias expansion: Aliases. +* arithmetic evaluation: Arithmetic Evaluation. +* arithmetic expansion: Arithmetic Expansion. +* arithmetic, shell: Shell Arithmetic. +* arrays: Arrays. +* background: Job Control Basics. +* Bash configuration: Basic Installation. +* Bash installation: Basic Installation. +* Bourne shell: Basic Shell Features. +* brace expansion: Brace Expansion. +* builtin: Definitions. +* command editing: Readline Bare Essentials. +* command execution: Command Search and Execution. +* command history: Bash History Facilities. +* command search: Command Search and Execution. +* command substitution: Command Substitution. +* command timing: Pipelines. +* commands, conditional: Conditional Constructs. +* commands, grouping: Command Grouping. +* commands, lists: Lists. +* commands, looping: Looping Constructs. +* commands, pipelines: Pipelines. +* commands, simple: Simple Commands. +* comments, shell: Comments. +* configuration: Basic Installation. +* control operator: Definitions. +* editing command lines: Readline Bare Essentials. +* environment: Environment. +* evaluation, arithmetic: Arithmetic Evaluation. +* event designators: Event Designators. +* exit status <1>: Definitions. +* exit status: Exit Status. +* expansion: Shell Expansions. +* expansion, arithmetic: Arithmetic Expansion. +* expansion, brace: Brace Expansion. +* expansion, filename: Filename Expansion. +* expansion, parameter: Shell Parameter Expansion. +* expansion, pathname: Filename Expansion. +* expansion, tilde: Tilde Expansion. +* expressions, arithmetic: Arithmetic Evaluation. +* expressions, conditional: Bash Conditional Expressions. +* field: Definitions. +* filename: Definitions. +* filename expansion: Filename Expansion. +* foreground: Job Control Basics. +* functions, shell: Shell Functions. +* history events: Event Designators. +* history expansion: History Interaction. +* history list: Bash History Facilities. +* History, how to use: Job Control Variables. +* identifier: Definitions. +* initialization file, readline: Readline Init File. +* installation: Basic Installation. +* interaction, readline: Readline Interaction. +* interactive shell <1>: Is This Shell Interactive?. +* interactive shell: Invoking Bash. +* job: Definitions. +* job control <1>: Definitions. +* job control: Job Control Basics. +* kill ring: Readline Killing Commands. +* killing text: Readline Killing Commands. +* localization: Locale Translation. +* metacharacter: Definitions. +* name: Definitions. +* notation, readline: Readline Bare Essentials. +* operator, shell: Definitions. +* parameter expansion: Shell Parameter Expansion. +* parameters: Shell Parameters. +* parameters, positional: Positional Parameters. +* parameters, special: Special Parameters. +* pathname expansion: Filename Expansion. +* pipeline: Pipelines. +* POSIX: Definitions. +* POSIX Mode: Bash POSIX Mode. +* process group: Definitions. +* process group ID: Definitions. +* process substitution: Process Substitution. +* prompting: Printing a Prompt. +* quoting: Quoting. +* quoting, ANSI: ANSI-C Quoting. +* Readline, how to use: Modifiers. +* redirection: Redirections. +* reserved word: Definitions. +* restricted shell: The Restricted Shell. +* return status: Definitions. +* shell function: Shell Functions. +* shell script: Shell Scripts. +* shell variable: Shell Parameters. +* signal: Definitions. +* signal handling: Signals. +* special builtin: Definitions. +* startup files: Bash Startup Files. +* suspending jobs: Job Control Basics. +* tilde expansion: Tilde Expansion. +* token: Definitions. +* variable, shell: Shell Parameters. +* word: Definitions. +* word splitting: Word Splitting. +* yanking text: Readline Killing Commands. Tag Table: -Node: Top1005 -Node: Introduction3109 -Node: What is Bash?3334 -Node: What is a shell?4418 -Node: Definitions6299 -Node: Basic Shell Features8960 -Node: Shell Syntax10481 -Node: Shell Operation10771 -Node: Quoting12005 -Node: Escape Character13040 -Node: Single Quotes13471 -Node: Double Quotes13800 -Node: ANSI-C Quoting14496 -Node: Locale Translation15228 -Node: Comments15649 -Node: Simple Commands16173 -Node: Pipelines16762 -Node: Lists17833 -Node: Looping Constructs19108 -Node: Conditional Constructs20285 -Node: Command Grouping22352 -Node: Shell Functions23738 -Node: Shell Parameters25511 -Node: Positional Parameters26834 -Node: Special Parameters27528 -Node: Shell Expansions30094 -Node: Shell Parameter Expansion32098 -Node: Command Substitution38106 -Node: Process Substitution39106 -Node: Word Splitting40012 -Node: Filename Expansion41464 -Node: Quote Removal43830 -Node: Redirections44116 -Node: Executing Commands49857 -Node: Command Search and Execution50312 -Node: Environment52046 -Node: Exit Status53682 -Node: Signals54699 -Node: Shell Scripts55910 -Node: Bourne Shell Features57779 -Node: Bourne Shell Builtins58449 -Node: Bourne Shell Variables66803 -Node: Other Bourne Shell Features68340 -Node: Major Differences From The Bourne Shell69097 -Node: Csh Features79457 -Node: Brace Expansion80375 -Node: Tilde Expansion81930 -Node: C Shell Builtins82562 -Node: C Shell Variables87118 -Node: Korn Shell Features87526 -Node: Korn Shell Constructs88254 -Node: Korn Shell Builtins89969 -Node: Korn Shell Variables92127 -Node: Aliases93686 -Node: Alias Builtins96150 -Node: Bash Features96766 -Node: Invoking Bash97757 -Node: Bash Startup Files101622 -Node: Is This Shell Interactive?105197 -Node: Bash Builtins106180 -Node: The Set Builtin122035 -Node: Bash Conditional Expressions127410 -Node: Bash Variables132061 -Node: Shell Arithmetic142095 -Node: Arithmetic Evaluation142563 -Node: Arithmetic Expansion144593 -Node: Arithmetic Builtins145397 -Node: Arrays145868 -Node: Printing a Prompt148895 -Node: The Restricted Shell150493 -Node: Bash POSIX Mode151723 -Node: Job Control155407 -Node: Job Control Basics155872 -Node: Job Control Builtins160015 -Node: Job Control Variables162938 -Node: Using History Interactively164085 -Node: Bash History Facilities164674 -Node: History Interaction167072 -Node: Event Designators169634 -Node: Word Designators170557 -Node: Modifiers171806 -Node: Command Line Editing173123 -Node: Introduction and Notation173783 -Node: Readline Interaction174791 -Node: Readline Bare Essentials175979 -Node: Readline Movement Commands177508 -Node: Readline Killing Commands178398 -Node: Readline Arguments180100 -Node: Searching181073 -Node: Readline Init File182709 -Node: Readline Init File Syntax183765 -Node: Conditional Init Constructs191554 -Node: Sample Init File193835 -Node: Bindable Readline Commands196868 -Node: Commands For Moving197618 -Node: Commands For History198465 -Node: Commands For Text201138 -Node: Commands For Killing202880 -Node: Numeric Arguments204906 -Node: Commands For Completion206030 -Node: Keyboard Macros208992 -Node: Miscellaneous Commands209550 -Node: Readline vi Mode213766 -Node: Installing Bash214642 -Node: Basic Installation215711 -Node: Compilers and Options218636 -Node: Compiling For Multiple Architectures219370 -Node: Installation Names221027 -Node: Specifying the System Type221749 -Node: Sharing Defaults222460 -Node: Operation Controls223125 -Node: Optional Features224030 -Node: Reporting Bugs228913 -Node: Builtin Index229993 -Node: Reserved Word Index233406 -Node: Variable Index234714 -Node: Function Index239899 -Node: Concept Index244257 +Node: Top1179 +Node: Introduction3283 +Node: What is Bash?3508 +Node: What is a shell?4592 +Node: Definitions6473 +Node: Basic Shell Features9134 +Node: Shell Syntax10655 +Node: Shell Operation10945 +Node: Quoting12179 +Node: Escape Character13214 +Node: Single Quotes13645 +Node: Double Quotes13974 +Node: ANSI-C Quoting14670 +Node: Locale Translation15402 +Node: Comments15823 +Node: Simple Commands16347 +Node: Pipelines16936 +Node: Lists18007 +Node: Looping Constructs19282 +Node: Conditional Constructs20459 +Node: Command Grouping22526 +Node: Shell Functions23912 +Node: Shell Parameters25685 +Node: Positional Parameters27008 +Node: Special Parameters27702 +Node: Shell Expansions30268 +Node: Shell Parameter Expansion32272 +Node: Command Substitution38280 +Node: Process Substitution39280 +Node: Word Splitting40186 +Node: Filename Expansion41638 +Node: Quote Removal44004 +Node: Redirections44290 +Node: Executing Commands50031 +Node: Command Search and Execution50486 +Node: Environment52220 +Node: Exit Status53856 +Node: Signals54873 +Node: Shell Scripts56084 +Node: Bourne Shell Features57953 +Node: Bourne Shell Builtins58623 +Node: Bourne Shell Variables66977 +Node: Other Bourne Shell Features68514 +Node: Major Differences From The Bourne Shell69271 +Node: Csh Features79631 +Node: Brace Expansion80549 +Node: Tilde Expansion82104 +Node: C Shell Builtins82736 +Node: C Shell Variables87292 +Node: Korn Shell Features87700 +Node: Korn Shell Constructs88428 +Node: Korn Shell Builtins90143 +Node: Korn Shell Variables92301 +Node: Aliases93860 +Node: Alias Builtins96326 +Node: Bash Features96942 +Node: Invoking Bash97933 +Node: Bash Startup Files101798 +Node: Is This Shell Interactive?105373 +Node: Bash Builtins106356 +Node: The Set Builtin122211 +Node: Bash Conditional Expressions127586 +Node: Bash Variables132237 +Node: Shell Arithmetic142271 +Node: Arithmetic Evaluation142739 +Node: Arithmetic Expansion144769 +Node: Arithmetic Builtins145573 +Node: Arrays146044 +Node: Printing a Prompt149071 +Node: The Restricted Shell150669 +Node: Bash POSIX Mode151899 +Node: Job Control155583 +Node: Job Control Basics156048 +Node: Job Control Builtins160191 +Node: Job Control Variables163114 +Node: Using History Interactively164261 +Node: Bash History Facilities164850 +Node: History Interaction167248 +Node: Event Designators169810 +Node: Word Designators170737 +Node: Modifiers171986 +Node: Command Line Editing173303 +Node: Introduction and Notation173963 +Node: Readline Interaction175001 +Node: Readline Bare Essentials176193 +Node: Readline Movement Commands177736 +Node: Readline Killing Commands178648 +Node: Readline Arguments180368 +Node: Searching181345 +Node: Readline Init File182981 +Node: Readline Init File Syntax184037 +Node: Conditional Init Constructs191820 +Node: Sample Init File194101 +Node: Bindable Readline Commands197134 +Node: Commands For Moving197884 +Node: Commands For History198731 +Node: Commands For Text201404 +Node: Commands For Killing203148 +Node: Numeric Arguments205174 +Node: Commands For Completion206300 +Node: Keyboard Macros209262 +Node: Miscellaneous Commands209820 +Node: Readline vi Mode214036 +Node: Installing Bash214914 +Node: Basic Installation215983 +Node: Compilers and Options218908 +Node: Compiling For Multiple Architectures219642 +Node: Installation Names221299 +Node: Specifying the System Type222021 +Node: Sharing Defaults222732 +Node: Operation Controls223397 +Node: Optional Features224302 +Node: Reporting Bugs229185 +Node: Builtin Index230265 +Node: Reserved Word Index233732 +Node: Variable Index235059 +Node: Function Index240327 +Node: Concept Index244750 End Tag Table diff --git a/doc/bashref.texi b/doc/bashref.texi index 6d1719f..2d1717d 100644 --- a/doc/bashref.texi +++ b/doc/bashref.texi @@ -22,6 +22,11 @@ last change: Mon May 19 12:55:22 EDT 1997 @defcodeindex rw @set BashFeatures +@dircategory Utilities +@direntry +* Bash: (bash). GNU Bourne-Again SHell +@end direntry + @ifinfo @format This text is a brief description of the features that are present in diff --git a/doc/texinfo.tex b/doc/texinfo.tex index fb7cfe5..e8375a3 100644 --- a/doc/texinfo.tex +++ b/doc/texinfo.tex @@ -1,6 +1,7 @@ %% TeX macros to handle texinfo files -% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 1994 Free Software Foundation, Inc. +% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, +% 94, 95, 1996 Free Software Foundation, Inc. %This texinfo.tex file is free software; you can redistribute it and/or %modify it under the terms of the GNU General Public License as @@ -14,8 +15,8 @@ %You should have received a copy of the GNU General Public License %along with this texinfo.tex file; see the file COPYING. If not, write -%to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, -%USA. +%to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +%Boston, MA 02111-1307, USA. %In other words, you are welcome to use, share and improve this program. @@ -34,7 +35,7 @@ % This automatically updates the version number based on RCS. \def\deftexinfoversion$#1: #2 ${\def\texinfoversion{#2}} -\deftexinfoversion$Revision: 2.145 $ +\deftexinfoversion$Revision: 2.185 $ \message{Loading texinfo package [Version \texinfoversion]:} % If in a .fmt file, print the version number @@ -45,20 +46,20 @@ % Save some parts of plain tex whose names we will redefine. -\let\ptextilde=\~ -\let\ptexlbrace=\{ -\let\ptexrbrace=\} -\let\ptexdots=\dots -\let\ptexdot=\. -\let\ptexstar=\* -\let\ptexend=\end -\let\ptexbullet=\bullet \let\ptexb=\b +\let\ptexbullet=\bullet \let\ptexc=\c +\let\ptexcomma=\, +\let\ptexdot=\. +\let\ptexdots=\dots +\let\ptexend=\end +\let\ptexequiv = \equiv \let\ptexi=\i +\let\ptexlbrace=\{ +\let\ptexrbrace=\} +\let\ptexstar=\* \let\ptext=\t -\let\ptexl=\l -\let\ptexL=\L +\let\ptextilde=\~ % Be sure we're in horizontal mode when doing a tie, since we make space % equivalent to this in @example-like environments. Otherwise, a space @@ -66,10 +67,14 @@ % since \penalty is valid in vertical mode, we'd end up putting the % penalty on the vertical list instead of in the new paragraph. {\catcode`@ = 11 - \gdef\tie{\leavevmode\penalty\@M\ } + % Avoid using \@M directly, because that causes trouble + % if the definition is written into an index file. + \global\let\tiepenalty = \@M + \gdef\tie{\leavevmode\penalty\tiepenalty\ } } \let\~ = \tie % And make it available as @~. + \message{Basics,} \chardef\other=12 @@ -99,10 +104,9 @@ \hyphenation{eshell} % Margin to add to right of even pages, to left of odd pages. -\newdimen \bindingoffset \bindingoffset=0pt -\newdimen \normaloffset \normaloffset=\hoffset +\newdimen \bindingoffset +\newdimen \normaloffset \newdimen\pagewidth \newdimen\pageheight -\pagewidth=\hsize \pageheight=\vsize % Sometimes it is convenient to have everything in the transcript file % and nothing on the terminal. We don't just call \tracingall here, @@ -123,7 +127,7 @@ \newdimen\cornerlong \newdimen\cornerthick \newdimen \topandbottommargin \newdimen \outerhsize \newdimen \outervsize -\cornerlong=1pc\cornerthick=.3pt % These set size of cropmarks +\cornerlong=1pc\cornerthick=.3pt % These set size of cropmarks \outerhsize=7in %\outervsize=9.5in % Alternative @smallbook page size is 9.25in @@ -133,15 +137,24 @@ %---------------------End change----------------------- % \onepageout takes a vbox as an argument. Note that \pagecontents -% does insertions itself, but you have to call it yourself. +% does insertions, but you have to call it yourself. \chardef\PAGE=255 \output={\onepageout{\pagecontents\PAGE}} -\def\onepageout#1{\hoffset=\normaloffset -\ifodd\pageno \advance\hoffset by \bindingoffset -\else \advance\hoffset by -\bindingoffset\fi -{\escapechar=`\\\relax % makes sure backslash is used in output files. -\shipout\vbox{{\let\hsize=\pagewidth \makeheadline} \pagebody{#1}% -{\let\hsize=\pagewidth \makefootline}}}% -\advancepageno \ifnum\outputpenalty>-20000 \else\dosupereject\fi} +\def\onepageout#1{% + \hoffset=\normaloffset + \ifodd\pageno \advance\hoffset by \bindingoffset + \else \advance\hoffset by -\bindingoffset\fi + {% + \escapechar = `\\ % use backslash in output files. + \indexdummies + \shipout\vbox{% + {\let\hsize=\pagewidth \makeheadline}% + \pagebody{#1}% + {\let\hsize=\pagewidth \makefootline}% + }% + }% + \advancepageno + \ifnum\outputpenalty>-20000 \else\dosupereject\fi +} %%%% For @cropmarks command %%%% @@ -153,8 +166,8 @@ % \def\croppageout#1{\hoffset=0pt % make sure this doesn't mess things up {\escapechar=`\\\relax % makes sure backslash is used in output files. - \shipout - \vbox to \outervsize{\hsize=\outerhsize + \shipout + \vbox to \outervsize{\hsize=\outerhsize \vbox{\line{\ewtop\hfill\ewtop}} \nointerlineskip \line{\vbox{\moveleft\cornerthick\nstop} @@ -162,19 +175,19 @@ \vbox{\moveright\cornerthick\nstop}} \vskip \topandbottommargin \centerline{\ifodd\pageno\hskip\bindingoffset\fi - \vbox{ - {\let\hsize=\pagewidth \makeheadline} - \pagebody{#1} - {\let\hsize=\pagewidth \makefootline}} - \ifodd\pageno\else\hskip\bindingoffset\fi} - \vskip \topandbottommargin plus1fill minus1fill + \vbox{ + {\let\hsize=\pagewidth \makeheadline} + \pagebody{#1} + {\let\hsize=\pagewidth \makefootline}} + \ifodd\pageno\else\hskip\bindingoffset\fi} + \vskip \topandbottommargin plus1fill minus1fill \boxmaxdepth\cornerthick \line{\vbox{\moveleft\cornerthick\nsbot} \hfill \vbox{\moveright\cornerthick\nsbot}} \nointerlineskip \vbox{\line{\ewbot\hfill\ewbot}} - }} + }} \advancepageno \ifnum\outputpenalty>-20000 \else\dosupereject\fi} % @@ -362,11 +375,43 @@ %\def\'{{'}} % Used to generate quoted braces. - \def\mylbrace {{\tt \char '173}} \def\myrbrace {{\tt \char '175}} \let\{=\mylbrace \let\}=\myrbrace +\begingroup + % Definitions to produce actual \{ & \} command in an index. + \catcode`\{ = 12 \catcode`\} = 12 + \catcode`\[ = 1 \catcode`\] = 2 + \catcode`\@ = 0 \catcode`\\ = 12 + @gdef@lbracecmd[\{]% + @gdef@rbracecmd[\}]% +@endgroup + +% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent +% Others are defined by plain TeX: @` @' @" @^ @~ @= @v @H. +\let\, = \c +\let\dotaccent = \. +\def\ringaccent#1{{\accent23 #1}} +\let\tieaccent = \t +\let\ubaraccent = \b +\let\udotaccent = \d + +% Other special characters: @questiondown @exclamdown +% Plain TeX defines: @AA @AE @O @OE @L (and lowercase versions) @ss. +\def\questiondown{?`} +\def\exclamdown{!`} + +% Dotless i and dotless j, used for accents. +\def\imacro{i} +\def\jmacro{j} +\def\dotless#1{% + \def\temp{#1}% + \ifx\temp\imacro \ptexi + \else\ifx\temp\jmacro \j + \else \errmessage{@dotless can be used only with i or j}% + \fi\fi +} % @: forces normal size whitespace following. \def\:{\spacefactor=1000 } @@ -533,17 +578,34 @@ where each line of input produces a line of output.} \def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount \leftline{\hskip\leftskip{\rm#1}}}} +% @inmargin{TEXT} puts TEXT in the margin next to the current paragraph. + +\def\inmargin#1{% +\strut\vadjust{\nobreak\kern-\strutdepth + \vtop to \strutdepth{\baselineskip\strutdepth\vss + \llap{\rightskip=\inmarginspacing \vbox{\noindent #1}}\null}}} +\newskip\inmarginspacing \inmarginspacing=1cm +\def\strutdepth{\dp\strutbox} + %\hbox{{\rm#1}}\hfil\break}} % @include file insert text of that file as input. - -\def\include{\parsearg\includezzz} -%Use \input\thisfile to avoid blank after \input, which may be an active -%char (in which case the blank would become the \input argument). -%The grouping keeps the value of \thisfile correct even when @include -%is nested. -\def\includezzz #1{\begingroup -\def\thisfile{#1}\input\thisfile +% Allow normal characters that we make active in the argument (a file name). +\def\include{\begingroup + \catcode`\\=12 + \catcode`~=12 + \catcode`^=12 + \catcode`_=12 + \catcode`|=12 + \catcode`<=12 + \catcode`>=12 + \catcode`+=12 + \parsearg\includezzz} +% Restore active chars for included file. +\def\includezzz#1{\endgroup\begingroup + % Read the included file in a group so nested @include's work. + \def\thisfile{#1}% + \input\thisfile \endgroup} \def\thisfile{} @@ -558,7 +620,7 @@ where each line of input produces a line of output.} % @sp n outputs n lines of vertical space \def\sp{\parsearg\spxxx} -\def\spxxx #1{\par \vskip #1\baselineskip} +\def\spxxx #1{\vskip #1\baselineskip} % @comment ...line which is ignored... % @c is the same as @comment @@ -571,6 +633,9 @@ where each line of input produces a line of output.} \let\c=\comment +% @paragraphindent is defined for the Info formatting commands only. +\let\paragraphindent=\comment + % Prevent errors for section commands. % Used in @ignore and in failing conditionals. \def\ignoresections{% @@ -605,6 +670,7 @@ where each line of input produces a line of output.} % incorrectly. % \def\ignoremorecommands{% + \let\defcodeindex = \relax \let\defcv = \relax \let\deffn = \relax \let\deffnx = \relax @@ -628,6 +694,15 @@ where each line of input produces a line of output.} \let\printindex = \relax \let\pxref = \relax \let\settitle = \relax + \let\setchapternewpage = \relax + \let\setchapterstyle = \relax + \let\everyheading = \relax + \let\evenheading = \relax + \let\oddheading = \relax + \let\everyfooting = \relax + \let\evenfooting = \relax + \let\oddfooting = \relax + \let\headings = \relax \let\include = \relax \let\lowersections = \relax \let\down = \relax @@ -636,7 +711,6 @@ where each line of input produces a line of output.} \let\set = \relax \let\clear = \relax \let\item = \relax - \let\message = \relax } % Ignore @ignore ... @end ignore. @@ -651,6 +725,16 @@ where each line of input produces a line of output.} \def\menu{\doignore{menu}} \def\direntry{\doignore{direntry}} +% Also ignore @macro ... @end macro. The user must run texi2dvi, +% which runs makeinfo to do macro expansion. Ignore @unmacro, too. +\def\macro{\doignore{macro}} +\let\unmacro = \comment + + +% @dircategory CATEGORY -- specify a category of the dir file +% which this file should belong to. Ignore this in TeX. +\let\dircategory = \comment + % Ignore text until a line `@end #1'. % \def\doignore#1{\begingroup @@ -682,11 +766,12 @@ where each line of input produces a line of output.} \immediate\write16{If you are running another version of TeX, relax.} \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.} \immediate\write16{ Then upgrade your TeX installation if you can.} + \immediate\write16{ (See ftp://ftp.gnu.ai.mit.edu/pub/gnu/TeX.README.)} \immediate\write16{If you are stuck with version 3.0, run the} \immediate\write16{ script ``tex3patch'' from the Texinfo distribution} \immediate\write16{ to use a workaround.} \immediate\write16{} - \warnedobstrue + \global\warnedobstrue \fi } @@ -762,15 +847,17 @@ where each line of input produces a line of output.} % Since we want to separate VAR from REST-OF-LINE (which might be % empty), we can't just use \parsearg; we have to insert a space of our % own to delimit the rest of the line, and then take it out again if we -% didn't need it. +% didn't need it. Make sure the catcode of space is correct to avoid +% losing inside @example, for instance. % -\def\set{\parsearg\setxxx} +\def\set{\begingroup\catcode` =10 \parsearg\setxxx} \def\setxxx#1{\setyyy#1 \endsetyyy} \def\setyyy#1 #2\endsetyyy{% \def\temp{#2}% \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted. \fi + \endgroup } % Can't use \xdef to pre-expand #2 and save some time, since \temp or % \next or other control sequences that we've defined might get us into @@ -785,9 +872,9 @@ where each line of input produces a line of output.} % @value{foo} gets the text saved in variable foo. % \def\value#1{\expandafter - \ifx\csname SET#1\endcsname\relax - {\{No value for ``#1''\}} - \else \csname SET#1\endcsname \fi} + \ifx\csname SET#1\endcsname\relax + {\{No value for ``#1''\}} + \else \csname SET#1\endcsname \fi} % @ifset VAR ... @end ifset reads the `...' iff VAR has been defined % with @set. @@ -887,6 +974,7 @@ where each line of input produces a line of output.} \expandafter\expandafter\expandafter\appendixsetref{\lastnode}\fi \global\let\lastnode=\relax} +% @refill is a no-op. \let\refill=\relax % @setfilename is done at the beginning of every texinfo file. @@ -901,11 +989,24 @@ where each line of input produces a line of output.} \comment % Ignore the actual filename. } +% @bye. \outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} -\def\inforef #1{\inforefzzz #1,,,,**} -\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, - node \samp{\ignorespaces#1{}}} +% \def\macro#1{\begingroup\ignoresections\catcode`\#=6\def\macrotemp{#1}\parsearg\macroxxx} +% \def\macroxxx#1#2 \end macro{% +% \expandafter\gdef\macrotemp#1{#2}% +% \endgroup} + +%\def\linemacro#1{\begingroup\ignoresections\catcode`\#=6\def\macrotemp{#1}\parsearg\linemacroxxx} +%\def\linemacroxxx#1#2 \end linemacro{% +%\let\parsearg=\relax +%\edef\macrotempx{\csname M\butfirst\expandafter\string\macrotemp\endcsname}% +%\expandafter\xdef\macrotemp{\parsearg\macrotempx}% +%\expandafter\gdef\macrotempx#1{#2}% +%\endgroup} + +%\def\butfirst#1{} + \message{fonts,} @@ -917,12 +1018,16 @@ where each line of input produces a line of output.} \def\sf{\fam=\sffam \tensf} \let\li = \sf % Sometimes we call it \li, not \sf. +% We don't need math for this one. +\def\ttsl{\tenttsl} + %% Try out Computer Modern fonts at \magstephalf \let\mainmagstep=\magstephalf % Set the font macro #1 to the font named #2, adding on the % specified font prefix (normally `cm'). -\def\setfont#1#2{\font#1=\fontprefix#2} +% #3 is the font's design size, #4 is a scale factor +\def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4} % Use cm as the default font prefix. % To specify the font prefix, you must define \fontprefix @@ -930,96 +1035,119 @@ where each line of input produces a line of output.} \ifx\fontprefix\undefined \def\fontprefix{cm} \fi +% Support font families that don't use the same naming scheme as CM. +\def\rmshape{r} +\def\rmbshape{bx} %where the normal face is bold +\def\bfshape{b} +\def\bxshape{bx} +\def\ttshape{tt} +\def\ttbshape{tt} +\def\ttslshape{sltt} +\def\itshape{ti} +\def\itbshape{bxti} +\def\slshape{sl} +\def\slbshape{bxsl} +\def\sfshape{ss} +\def\sfbshape{ss} +\def\scshape{csc} +\def\scbshape{csc} \ifx\bigger\relax \let\mainmagstep=\magstep1 -\setfont\textrm{r12} -\setfont\texttt{tt12} +\setfont\textrm\rmshape{12}{1000} +\setfont\texttt\ttshape{12}{1000} \else -\setfont\textrm{r10 scaled \mainmagstep} -\setfont\texttt{tt10 scaled \mainmagstep} +\setfont\textrm\rmshape{10}{\mainmagstep} +\setfont\texttt\ttshape{10}{\mainmagstep} \fi % Instead of cmb10, you many want to use cmbx10. % cmbx10 is a prettier font on its own, but cmb10 % looks better when embedded in a line with cmr10. -\setfont\textbf{b10 scaled \mainmagstep} -\setfont\textit{ti10 scaled \mainmagstep} -\setfont\textsl{sl10 scaled \mainmagstep} -\setfont\textsf{ss10 scaled \mainmagstep} -\setfont\textsc{csc10 scaled \mainmagstep} +\setfont\textbf\bfshape{10}{\mainmagstep} +\setfont\textit\itshape{10}{\mainmagstep} +\setfont\textsl\slshape{10}{\mainmagstep} +\setfont\textsf\sfshape{10}{\mainmagstep} +\setfont\textsc\scshape{10}{\mainmagstep} +\setfont\textttsl\ttslshape{10}{\mainmagstep} \font\texti=cmmi10 scaled \mainmagstep \font\textsy=cmsy10 scaled \mainmagstep % A few fonts for @defun, etc. -\setfont\defbf{bx10 scaled \magstep1} %was 1314 -\setfont\deftt{tt10 scaled \magstep1} +\setfont\defbf\bxshape{10}{\magstep1} %was 1314 +\setfont\deftt\ttshape{10}{\magstep1} \def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf} -% Fonts for indices and small examples. +% Fonts for indices and small examples (9pt). % We actually use the slanted font rather than the italic, % because texinfo normally uses the slanted fonts for that. % Do not make many font distinctions in general in the index, since they % aren't very useful. -\setfont\ninett{tt9} -\setfont\indrm{r9} -\setfont\indit{sl9} +\setfont\ninett\ttshape{9}{1000} +\setfont\indrm\rmshape{9}{1000} +\setfont\indit\slshape{9}{1000} \let\indsl=\indit \let\indtt=\ninett +\let\indttsl=\ninett \let\indsf=\indrm \let\indbf=\indrm -\setfont\indsc{csc10 at 9pt} +\setfont\indsc\scshape{10}{900} \font\indi=cmmi9 \font\indsy=cmsy9 -% Fonts for headings -\setfont\chaprm{bx12 scaled \magstep2} -\setfont\chapit{ti12 scaled \magstep2} -\setfont\chapsl{sl12 scaled \magstep2} -\setfont\chaptt{tt12 scaled \magstep2} -\setfont\chapsf{ss12 scaled \magstep2} +% Chapter (and unnumbered) fonts (17.28pt). +\setfont\chaprm\rmbshape{12}{\magstep2} +\setfont\chapit\itbshape{10}{\magstep3} +\setfont\chapsl\slbshape{10}{\magstep3} +\setfont\chaptt\ttbshape{12}{\magstep2} +\setfont\chapttsl\ttslshape{10}{\magstep3} +\setfont\chapsf\sfbshape{12}{\magstep2} \let\chapbf=\chaprm -\setfont\chapsc{csc10 scaled\magstep3} +\setfont\chapsc\scbshape{10}{\magstep3} \font\chapi=cmmi12 scaled \magstep2 \font\chapsy=cmsy10 scaled \magstep3 -\setfont\secrm{bx12 scaled \magstep1} -\setfont\secit{ti12 scaled \magstep1} -\setfont\secsl{sl12 scaled \magstep1} -\setfont\sectt{tt12 scaled \magstep1} -\setfont\secsf{ss12 scaled \magstep1} -\setfont\secbf{bx12 scaled \magstep1} -\setfont\secsc{csc10 scaled\magstep2} +% Section fonts (14.4pt). +\setfont\secrm\rmbshape{12}{\magstep1} +\setfont\secit\itbshape{10}{\magstep2} +\setfont\secsl\slbshape{10}{\magstep2} +\setfont\sectt\ttbshape{12}{\magstep1} +\setfont\secttsl\ttslshape{10}{\magstep2} +\setfont\secsf\sfbshape{12}{\magstep1} +\let\secbf\secrm +\setfont\secsc\scbshape{10}{\magstep2} \font\seci=cmmi12 scaled \magstep1 \font\secsy=cmsy10 scaled \magstep2 -% \setfont\ssecrm{bx10 scaled \magstep1} % This size an font looked bad. -% \setfont\ssecit{cmti10 scaled \magstep1} % The letters were too crowded. -% \setfont\ssecsl{sl10 scaled \magstep1} -% \setfont\ssectt{tt10 scaled \magstep1} -% \setfont\ssecsf{ss10 scaled \magstep1} +% \setfont\ssecrm\bxshape{10}{\magstep1} % This size an font looked bad. +% \setfont\ssecit\itshape{10}{\magstep1} % The letters were too crowded. +% \setfont\ssecsl\slshape{10}{\magstep1} +% \setfont\ssectt\ttshape{10}{\magstep1} +% \setfont\ssecsf\sfshape{10}{\magstep1} -%\setfont\ssecrm{b10 scaled 1315} % Note the use of cmb rather than cmbx. -%\setfont\ssecit{ti10 scaled 1315} % Also, the size is a little larger than -%\setfont\ssecsl{sl10 scaled 1315} % being scaled magstep1. -%\setfont\ssectt{tt10 scaled 1315} -%\setfont\ssecsf{ss10 scaled 1315} +%\setfont\ssecrm\bfshape{10}{1315} % Note the use of cmb rather than cmbx. +%\setfont\ssecit\itshape{10}{1315} % Also, the size is a little larger than +%\setfont\ssecsl\slshape{10}{1315} % being scaled magstep1. +%\setfont\ssectt\ttshape{10}{1315} +%\setfont\ssecsf\sfshape{10}{1315} %\let\ssecbf=\ssecrm -\setfont\ssecrm{bx12 scaled \magstephalf} -\setfont\ssecit{ti12 scaled \magstephalf} -\setfont\ssecsl{sl12 scaled \magstephalf} -\setfont\ssectt{tt12 scaled \magstephalf} -\setfont\ssecsf{ss12 scaled \magstephalf} -\setfont\ssecbf{bx12 scaled \magstephalf} -\setfont\ssecsc{csc10 scaled \magstep1} +% Subsection fonts (13.15pt). +\setfont\ssecrm\rmbshape{12}{\magstephalf} +\setfont\ssecit\itbshape{10}{1315} +\setfont\ssecsl\slbshape{10}{1315} +\setfont\ssectt\ttbshape{12}{\magstephalf} +\setfont\ssecttsl\ttslshape{10}{\magstep1} +\setfont\ssecsf\sfbshape{12}{\magstephalf} +\let\ssecbf\ssecrm +\setfont\ssecsc\scbshape{10}{\magstep1} \font\sseci=cmmi12 scaled \magstephalf \font\ssecsy=cmsy10 scaled \magstep1 % The smallcaps and symbol fonts should actually be scaled \magstep1.5, % but that is not a standard magnification. % Fonts for title page: -\setfont\titlerm{bx12 scaled \magstep3} +\setfont\titlerm\rmbshape{12}{\magstep3} \let\authorrm = \secrm % In order for the font changes to affect most math symbols and letters, @@ -1038,34 +1166,35 @@ where each line of input produces a line of output.} % The font-changing commands redefine the meanings of \tenSTYLE, instead % of just \STYLE. We do this so that font changes will continue to work % in math mode, where it is the current \fam that is relevant in most -% cases, not the current. Plain TeX does, for example, -% \def\bf{\fam=\bffam \tenbf} By redefining \tenbf, we obviate the need -% to redefine \bf itself. +% cases, not the current font. Plain TeX does \def\bf{\fam=\bffam +% \tenbf}, for example. By redefining \tenbf, we obviate the need to +% redefine \bf itself. \def\textfonts{% \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc - \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy + \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl \resetmathfonts} \def\chapfonts{% \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc - \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy - \resetmathfonts} + \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy \let\tenttsl=\chapttsl + \resetmathfonts \setleading{19pt}} \def\secfonts{% \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc - \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy - \resetmathfonts} + \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy \let\tenttsl=\secttsl + \resetmathfonts \setleading{16pt}} \def\subsecfonts{% \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc - \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy - \resetmathfonts} + \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy \let\tenttsl=\ssecttsl + \resetmathfonts \setleading{15pt}} +\let\subsubsecfonts = \subsecfonts % Maybe make sssec fonts scaled magstephalf? \def\indexfonts{% \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc - \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy - \resetmathfonts} + \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy \let\tenttsl=\indttsl + \resetmathfonts \setleading{12pt}} % Set up the default fonts, so we can use them for creating boxes. % @@ -1075,9 +1204,9 @@ where each line of input produces a line of output.} \newcount\fontdepth \fontdepth=0 % Fonts for short table of contents. -\setfont\shortcontrm{r12} -\setfont\shortcontbf{bx12} -\setfont\shortcontsl{sl12} +\setfont\shortcontrm\rmshape{12}{1000} +\setfont\shortcontbf\bxshape{12}{1000} +\setfont\shortcontsl\slshape{12}{1000} %% Add scribe-like font environments, plus @l for inline lisp (usually sans %% serif) and @ii for TeX italic @@ -1104,16 +1233,26 @@ where each line of input produces a line of output.} \def\restorehyphenation{\hyphenchar\font = `- } \def\t#1{% - {\tt \nohyphenation \rawbackslash \frenchspacing #1}% + {\tt \rawbackslash \frenchspacing #1}% \null } -\let\ttfont = \t -%\def\samp #1{`{\tt \rawbackslash \frenchspacing #1}'\null} +\let\ttfont=\t \def\samp #1{`\tclose{#1}'\null} -\def\key #1{{\tt \nohyphenation \uppercase{#1}}\null} +\setfont\smallrm\rmshape{8}{1000} +\font\smallsy=cmsy9 +\def\key#1{{\smallrm\textfont2=\smallsy \leavevmode\hbox{% + \raise0.4pt\hbox{$\langle$}\kern-.08em\vtop{% + \vbox{\hrule\kern-0.4pt + \hbox{\raise0.4pt\hbox{\vphantom{$\langle$}}#1}}% + \kern-0.4pt\hrule}% + \kern-.06em\raise0.4pt\hbox{$\rangle$}}}} +% The old definition, with no lozenge: +%\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null} \def\ctrl #1{{\tt \rawbackslash \hat}#1} \let\file=\samp +\let\url=\samp % perhaps include a hypertex \special eventually +\def\email#1{$\langle${\tt #1}$\rangle$} % @code is a modification of @t, % which makes spaces the same size as normal in the surrounding text. @@ -1139,13 +1278,13 @@ where each line of input produces a line of output.} } % We *must* turn on hyphenation at `-' and `_' in \code. -% Otherwise, it is too hard to avoid overful hboxes +% Otherwise, it is too hard to avoid overfull hboxes % in the Emacs manual, the Library manual, etc. % Unfortunately, TeX uses one parameter (\hyphenchar) to control % both hyphenation at - and hyphenation within words. % We must therefore turn them both off (\tclose does that) -% and arrange explicitly to hyphenate an a dash. +% and arrange explicitly to hyphenate at a dash. % -- rms. { \catcode`\-=\active @@ -1157,6 +1296,7 @@ where each line of input produces a line of output.} % ever called. -- mycroft \global\def\indexbreaks{\catcode`\-=\active \let-\realdash \catcode`\_=\active \let_\realunder} } + \def\realdash{-} \def\realunder{_} \def\codedash{-\discretionary{}{}{}} @@ -1167,12 +1307,19 @@ where each line of input produces a line of output.} % @kbd is like @code, except that if the argument is just one @key command, % then @kbd has no effect. - +% \def\xkey{\key} \def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}% \ifx\one\xkey\ifx\threex\three \key{#2}% -\else\tclose{\look}\fi -\else\tclose{\look}\fi} +\else{\tclose{\ttsl\look}}\fi +\else{\tclose{\ttsl\look}}\fi} + +% Check if we are currently using a typewriter font. Since all the +% Computer Modern typewriter fonts have zero interword stretch (and +% shrink), and it is reasonable to expect all typewriter fonts to have +% this property, we can check that font parameter. +% +\def\ifmonospace{\ifdim\fontdimen3\font=0pt } % Typeset a dimension, e.g., `in' or `pt'. The only reason for the % argument is to make the input look right: @dmn{pt} instead of @@ -1182,12 +1329,19 @@ where each line of input produces a line of output.} \def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par} -\def\l#1{{\li #1}\null} % +% @l was never documented to mean ``switch to the Lisp font'', +% and it is not used as such in any manual I can find. We need it for +% Polish suppressed-l. --karl, 22sep96. +%\def\l#1{{\li #1}\null} -\def\r#1{{\rm #1}} % roman font +\def\r#1{{\rm #1}} % roman font % Use of \lowercase was suggested. -\def\sc#1{{\smallcaps#1}} % smallcaps font -\def\ii#1{{\it #1}} % italic font +\def\sc#1{{\smallcaps#1}} % smallcaps font +\def\ii#1{{\it #1}} % italic font + +% @pounds{} is a sterling sign. +\def\pounds{{\it\$}} + \message{page headings,} @@ -1202,7 +1356,7 @@ where each line of input produces a line of output.} \def\shorttitlepage{\parsearg\shorttitlepagezzz} \def\shorttitlepagezzz #1{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}% - \endgroup\page\hbox{}\page} + \endgroup\page\hbox{}\page} \def\titlepage{\begingroup \parindent=0pt \textfonts \let\subtitlerm=\tenrm @@ -1219,9 +1373,9 @@ where each line of input produces a line of output.} % Now you can print the title using @title. \def\title{\parsearg\titlezzz}% \def\titlezzz##1{\leftline{\titlefont{##1}} - % print a rule at the page bottom also. - \finishedtitlepagefalse - \vskip4pt \hrule height 4pt width \hsize \vskip4pt}% + % print a rule at the page bottom also. + \finishedtitlepagefalse + \vskip4pt \hrule height 4pt width \hsize \vskip4pt}% % No rule at page bottom unless we print one at the top with @title. \finishedtitlepagetrue % @@ -1239,7 +1393,7 @@ where each line of input produces a line of output.} \let\oldpage = \page \def\page{% \iffinishedtitlepage\else - \finishtitlepage + \finishtitlepage \fi \oldpage \let\page = \oldpage @@ -1327,14 +1481,15 @@ where each line of input produces a line of output.} % }% unbind the catcode of @. -% @headings double turns headings on for double-sided printing. -% @headings single turns headings on for single-sided printing. -% @headings off turns them off. -% @headings on same as @headings double, retained for compatibility. -% @headings after turns on double-sided headings after this page. -% @headings doubleafter turns on double-sided headings after this page. +% @headings double turns headings on for double-sided printing. +% @headings single turns headings on for single-sided printing. +% @headings off turns them off. +% @headings on same as @headings double, retained for compatibility. +% @headings after turns on double-sided headings after this page. +% @headings doubleafter turns on double-sided headings after this page. % @headings singleafter turns on single-sided headings after this page. -% By default, they are off. +% By default, they are off at the start of a document, +% and turned `on' after @end titlepage. \def\headings #1 {\csname HEADINGS#1\endcsname} @@ -1348,22 +1503,24 @@ where each line of input produces a line of output.} % title on inside top of left hand pages, and page numbers on outside top % edge of all pages. \def\HEADINGSdouble{ -%\pagealignmacro \global\pageno=1 \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\folio\hfil\thistitle}} \global\oddheadline={\line{\thischapter\hfil\folio}} +\global\let\contentsalignmacro = \chapoddpage } +\let\contentsalignmacro = \chappager + % For single-sided printing, chapter title goes across top left of page, % page number on top right. \def\HEADINGSsingle{ -%\pagealignmacro \global\pageno=1 \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\thischapter\hfil\folio}} \global\oddheadline={\line{\thischapter\hfil\folio}} +\global\let\contentsalignmacro = \chappager } \def\HEADINGSon{\HEADINGSdouble} @@ -1374,6 +1531,7 @@ where each line of input produces a line of output.} \global\oddfootline={\hfil} \global\evenheadline={\line{\folio\hfil\thistitle}} \global\oddheadline={\line{\thischapter\hfil\folio}} +\global\let\contentsalignmacro = \chapoddpage } \def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex} @@ -1382,6 +1540,7 @@ where each line of input produces a line of output.} \global\oddfootline={\hfil} \global\evenheadline={\line{\thischapter\hfil\folio}} \global\oddheadline={\line{\thischapter\hfil\folio}} +\global\let\contentsalignmacro = \chappager } % Subroutines used in generating headings @@ -1405,6 +1564,7 @@ July\or August\or September\or October\or November\or December\fi \def\settitle{\parsearg\settitlezzz} \def\settitlezzz #1{\gdef\thistitle{#1}} + \message{tables,} % @tabs -- simple alignment @@ -1437,7 +1597,7 @@ July\or August\or September\or October\or November\or December\fi \newif\ifitemxneedsnegativevskip -\def\itemxpar{\par\ifitemxneedsnegativevskip\vskip-\parskip\nobreak\fi} +\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi} \def\internalBitem{\smallbreak \parsearg\itemzzz} \def\internalBitemx{\itemxpar \parsearg\itemzzz} @@ -1544,7 +1704,7 @@ July\or August\or September\or October\or November\or December\fi \def\tablez #1#2#3#4#5#6{% \aboveenvbreak % \begingroup % -\def\Edescription{\Etable}% Neccessary kludge. +\def\Edescription{\Etable}% Necessary kludge. \let\itemindex=#1% \ifnum 0#3>0 \advance \leftskip by #3\mil \fi % \ifnum 0#4>0 \tableindent=#4\mil \fi % @@ -1708,10 +1868,10 @@ July\or August\or September\or October\or November\or December\fi \flushcr} % @multitable macros -% Amy Hendrickson, 8/18/94 +% Amy Hendrickson, 8/18/94, 3/6/96 % -% @multitable ... @endmultitable will make as many columns as desired. -% Contents of each column will wrap at width given in preamble. Width +% @multitable ... @end multitable will make as many columns as desired. +% Contents of each column will wrap at width given in preamble. Width % can be specified either with sample text given in a template line, % or in percent of \hsize, the current width of text on page. @@ -1720,25 +1880,35 @@ July\or August\or September\or October\or November\or December\fi % To make preamble: % % Either define widths of columns in terms of percent of \hsize: -% @multitable @percentofhsize .2 .3 .5 +% @multitable @columnfractions .25 .3 .45 % @item ... % -% Numbers following @percentofhsize are the percent of the total +% Numbers following @columnfractions are the percent of the total % current hsize to be used for each column. You may use as many % columns as desired. + % Or use a template: % @multitable {Column 1 template} {Column 2 template} {Column 3 template} % @item ... % using the widest term desired in each column. - +% +% For those who want to use more than one line's worth of words in +% the preamble, break the line within one argument and it +% will parse correctly, i.e., +% +% @multitable {Column 1 template} {Column 2 template} {Column 3 +% template} +% Not: +% @multitable {Column 1 template} {Column 2 template} +% {Column 3 template} % Each new table line starts with @item, each subsequent new column % starts with @tab. Empty columns may be produced by supplying @tab's % with nothing between them for as many times as empty columns are needed, % ie, @tab@tab@tab will produce two empty columns. -% @item, @tab, @multicolumn or @endmulticolumn do not need to be on their +% @item, @tab, @multitable or @end multitable do not need to be on their % own lines, but it will not hurt if they are. % Sample multitable: @@ -1756,71 +1926,86 @@ July\or August\or September\or October\or November\or December\fi % % They will wrap at the width determined by the template. % @item@tab@tab This will be in third column. -% @endmultitable +% @end multitable % Default dimensions may be reset by user. -% @intableparskip will set vertical space between paragraphs in table. -% @intableparindent will set paragraph indent in table. -% @spacebetweencols will set horizontal space to be left between columns. -% @spacebetweenlines will set vertical space to be left between lines. +% @multitableparskip is vertical space between paragraphs in table. +% @multitableparindent is paragraph indent in table. +% @multitablecolmargin is horizontal space to be left between columns. +% @multitablelinespace is space to leave between table items, baseline +% to baseline. +% 0pt means it depends on current normal line spacing. %%%% % Dimensions -\newdimen\intableparskip -\newdimen\intableparindent -\newdimen\spacebetweencols -\newdimen\spacebetweenlines -\intableparskip=0pt -\intableparindent=6pt -\spacebetweencols=12pt -\spacebetweenlines=12pt +\newskip\multitableparskip +\newskip\multitableparindent +\newdimen\multitablecolspace +\newskip\multitablelinespace +\multitableparskip=0pt +\multitableparindent=6pt +\multitablecolspace=12pt +\multitablelinespace=0pt %%%% % Macros used to set up halign preamble: \let\endsetuptable\relax \def\xendsetuptable{\endsetuptable} -\let\percentofhsize\relax -\def\xpercentofhsize{\percentofhsize} +\let\columnfractions\relax +\def\xcolumnfractions{\columnfractions} \newif\ifsetpercent +%% 2/1/96, to allow fractions to be given with more than one digit. +\def\pickupwholefraction#1 {\global\advance\colcount by1 % +\expandafter\xdef\csname col\the\colcount\endcsname{.#1\hsize}% +\setuptable} + \newcount\colcount \def\setuptable#1{\def\firstarg{#1}% \ifx\firstarg\xendsetuptable\let\go\relax% \else - \ifx\firstarg\xpercentofhsize\global\setpercenttrue% + \ifx\firstarg\xcolumnfractions\global\setpercenttrue% \else \ifsetpercent - \if#1.\else% - \global\advance\colcount by1 % - \expandafter\xdef\csname col\the\colcount\endcsname{.#1\hsize}% - \fi + \let\go\pickupwholefraction % In this case arg of setuptable + % is the decimal point before the + % number given in percent of hsize. + % We don't need this so we don't use it. \else \global\advance\colcount by1 - \setbox0=\hbox{#1}% + \setbox0=\hbox{#1 }% Add a normal word space as a separator; + % typically that is always in the input, anyway. \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% \fi% \fi% - \let\go\setuptable% +\ifx\go\pickupwholefraction\else\let\go\setuptable\fi% \fi\go} + %%%% % multitable syntax -\def\tab{&} +\def\tab{&\hskip1sp\relax} % 2/2/96 + % tiny skip here makes sure this column space is + % maintained, even if it is never used. + %%%% -% @multitable ... @endmultitable definitions: +% @multitable ... @end multitable definitions: -\def\multitable#1\item{\bgroup +\def\multitable{\parsearg\dotable} + +\def\dotable#1{\bgroup \let\item\cr \tolerance=9500 \hbadness=9500 -\parskip=\intableparskip -\parindent=\intableparindent +\setmultitablespacing +\parskip=\multitableparskip +\parindent=\multitableparindent \overfullrule=0pt \global\colcount=0\relax% \def\Emultitable{\global\setpercentfalse\global\everycr{}\cr\egroup\egroup}% % To parse everything between @multitable and @item : -\def\one{#1}\expandafter\setuptable\one\endsetuptable +\setuptable#1 \endsetuptable % Need to reset this to 0 after \setuptable. \global\colcount=0\relax% % @@ -1829,11 +2014,11 @@ July\or August\or September\or October\or November\or December\fi % \vtop will set a single line and will also let text wrap and % continue for many paragraphs if desired. \halign\bgroup&\global\advance\colcount by 1\relax% -\vtop{\hsize=\expandafter\csname col\the\colcount\endcsname +\multistrut\vtop{\hsize=\expandafter\csname col\the\colcount\endcsname % In order to keep entries from bumping into each other - % we will add a \leftskip of \spacebetweencols to all columns after + % we will add a \leftskip of \multitablecolspace to all columns after % the first one. - % If a template has been used, we will add \spacebetweencols + % If a template has been used, we will add \multitablecolspace % to the width of each template entry. % If user has set preamble in terms of percent of \hsize % we will use that dimension as the width of the column, and @@ -1845,20 +2030,46 @@ July\or August\or September\or October\or November\or December\fi \ifsetpercent \else % If user has <not> set preamble in terms of percent of \hsize - % we will advance \hsize by \spacebetweencols - \advance\hsize by \spacebetweencols + % we will advance \hsize by \multitablecolspace + \advance\hsize by \multitablecolspace \fi - % In either case we will make \leftskip=\spacebetweencols: -\leftskip=\spacebetweencols + % In either case we will make \leftskip=\multitablecolspace: +\leftskip=\multitablecolspace \fi -\noindent##}\cr% +\noindent##\multistrut}\cr% % \everycr will reset column counter, \colcount, at the end of % each line. Every column entry will cause \colcount to advance by one. % The table preamble % looks at the current \colcount to find the correct column width. -\global\everycr{\noalign{\nointerlineskip\vskip\spacebetweenlines +\global\everycr{\noalign{% \filbreak%% keeps underfull box messages off when table breaks over pages. -\global\colcount=0\relax}}} +\global\colcount=0\relax}} +} + +\def\setmultitablespacing{% test to see if user has set \multitablelinespace. +% If so, do nothing. If not, give it an appropriate dimension based on +% current baselineskip. +\ifdim\multitablelinespace=0pt +%% strut to put in table in case some entry doesn't have descenders, +%% to keep lines equally spaced +\let\multistrut = \strut +%% Test to see if parskip is larger than space between lines of +%% table. If not, do nothing. +%% If so, set to same dimension as multitablelinespace. +\else +\gdef\multistrut{\vrule height\multitablelinespace depth\dp0 +width0pt\relax} \fi +\ifdim\multitableparskip>\multitablelinespace +\global\multitableparskip=\multitablelinespace +\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller + %% than skip between lines in the table. +\fi% +\ifdim\multitableparskip=0pt +\global\multitableparskip=\multitablelinespace +\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller + %% than skip between lines in the table. +\fi} + \message{indexing,} % Index generation facilities @@ -1872,14 +2083,14 @@ July\or August\or September\or October\or November\or December\fi % It automatically defines \fooindex such that % \fooindex ...rest of line... puts an entry in the index foo. % It also defines \fooindfile to be the number of the output channel for -% the file that accumulates this index. The file's extension is foo. +% the file that accumulates this index. The file's extension is foo. % The name of an index should be no more than 2 characters long % for the sake of vms. \def\newindex #1{ \expandafter\newwrite \csname#1indfile\endcsname% Define number for output file -\openout \csname#1indfile\endcsname \jobname.#1 % Open the file -\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex +\openout \csname#1indfile\endcsname \jobname.#1 % Open the file +\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex \noexpand\doindex {#1}} } @@ -1891,8 +2102,8 @@ July\or August\or September\or October\or November\or December\fi \def\newcodeindex #1{ \expandafter\newwrite \csname#1indfile\endcsname% Define number for output file -\openout \csname#1indfile\endcsname \jobname.#1 % Open the file -\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex +\openout \csname#1indfile\endcsname \jobname.#1 % Open the file +\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex \noexpand\docodeindex {#1}} } @@ -1903,7 +2114,7 @@ July\or August\or September\or October\or November\or December\fi \def\synindex #1 #2 {% \expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname \expandafter\let\csname#1indfile\endcsname=\synindexfoo -\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex +\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex \noexpand\doindex {#2}}% } @@ -1912,7 +2123,7 @@ July\or August\or September\or October\or November\or December\fi \def\syncodeindex #1 #2 {% \expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname \expandafter\let\csname#1indfile\endcsname=\synindexfoo -\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex +\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex \noexpand\docodeindex {#2}}% } @@ -1960,24 +2171,31 @@ July\or August\or September\or October\or November\or December\fi \def\L{\realbackslash L}% \def\ss{\realbackslash ss}% % Take care of texinfo commands likely to appear in an index entry. +% (Must be a way to avoid doing expansion at all, and thus not have to +% laboriously list every single command here.) +\def\@{@}% will be @@ when we switch to @ as escape char. +%\let\{ = \lbracecmd +%\let\} = \rbracecmd \def\_{{\realbackslash _}}% \def\w{\realbackslash w }% \def\bf{\realbackslash bf }% -\def\rm{\realbackslash rm }% +%\def\rm{\realbackslash rm }% \def\sl{\realbackslash sl }% \def\sf{\realbackslash sf}% \def\tt{\realbackslash tt}% \def\gtr{\realbackslash gtr}% \def\less{\realbackslash less}% \def\hat{\realbackslash hat}% -\def\char{\realbackslash char}% +%\def\char{\realbackslash char}% \def\TeX{\realbackslash TeX}% \def\dots{\realbackslash dots }% \def\copyright{\realbackslash copyright }% \def\tclose##1{\realbackslash tclose {##1}}% \def\code##1{\realbackslash code {##1}}% +\def\dotless##1{\realbackslash dotless {##1}}% \def\samp##1{\realbackslash samp {##1}}% -\def\t##1{\realbackslash r {##1}}% +\def\,##1{\realbackslash ,{##1}}% +\def\t##1{\realbackslash t {##1}}% \def\r##1{\realbackslash r {##1}}% \def\i##1{\realbackslash i {##1}}% \def\b##1{\realbackslash b {##1}}% @@ -1988,8 +2206,15 @@ July\or August\or September\or October\or November\or December\fi \def\kbd##1{\realbackslash kbd {##1}}% \def\dfn##1{\realbackslash dfn {##1}}% \def\emph##1{\realbackslash emph {##1}}% +\unsepspaces } +% If an index command is used in an @example environment, any spaces +% therein should become regular spaces in the raw index file, not the +% expansion of \tie (\\leavevmode \penalty \@M \ ). +{\obeyspaces + \gdef\unsepspaces{\obeyspaces\let =\space}} + % \indexnofonts no-ops all font-change commands. % This is used when outputting the strings to sort the index by. \def\indexdummyfont#1{#1} @@ -1998,6 +2223,7 @@ July\or August\or September\or October\or November\or December\fi \def\indexnofonts{% % Just ignore accents. +\let\,=\indexdummyfont \let\"=\indexdummyfont \let\`=\indexdummyfont \let\'=\indexdummyfont @@ -2010,6 +2236,7 @@ July\or August\or September\or October\or November\or December\fi \let\u=\indexdummyfont \let\v=\indexdummyfont \let\H=\indexdummyfont +\let\dotless=\indexdummyfont % Take care of the plain tex special European modified letters. \def\oe{oe}% \def\ae{ae}% @@ -2043,6 +2270,7 @@ July\or August\or September\or October\or November\or December\fi \let\var=\indexdummyfont \let\TeX=\indexdummytex \let\dots=\indexdummydots +\def\@{@}% } % To define \realbackslash, we must make \ not be an escape. @@ -2058,29 +2286,37 @@ July\or August\or September\or October\or November\or December\fi % workhorse for all \fooindexes % #1 is name of index, #2 is stuff to put there \def\doind #1#2{% -% Put the index entry in the margin if desired. -\ifx\SETmarginindex\relax\else% -\insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}% -\fi% -{\count10=\lastpenalty % -{\indexdummies % Must do this here, since \bf, etc expand at this stage -\escapechar=`\\% -{\let\folio=0% Expand all macros now EXCEPT \folio -\def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now -% so it will be output as is; and it will print as backslash in the indx. -% -% Now process the index-string once, with all font commands turned off, -% to get the string to sort the index by. -{\indexnofonts -\xdef\temp1{#2}% -}% -% Now produce the complete index entry. We process the index-string again, -% this time with font commands expanded, to get what to print in the index. -\edef\temp{% -\write \csname#1indfile\endcsname{% -\realbackslash entry {\temp1}{\folio}{#2}}}% -\temp }% -}\penalty\count10}} + % Put the index entry in the margin if desired. + \ifx\SETmarginindex\relax\else + \insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}% + \fi + {% + \count255=\lastpenalty + {% + \indexdummies % Must do this here, since \bf, etc expand at this stage + \escapechar=`\\ + {% + \let\folio=0 % We will expand all macros now EXCEPT \folio. + \def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now + % so it will be output as is; and it will print as backslash. + % + % First process the index-string with all font commands turned off + % to get the string to sort by. + {\indexnofonts \xdef\indexsorttmp{#2}}% + % + % Now produce the complete index entry, with both the sort key and the + % original text, including any font commands. + \toks0 = {#2}% + \edef\temp{% + \write\csname#1indfile\endcsname{% + \realbackslash entry{\indexsorttmp}{\folio}{\the\toks0}}% + }% + \temp + }% + }% + \penalty\count255 + }% +} \def\dosubind #1#2#3{% {\count10=\lastpenalty % @@ -2141,26 +2377,19 @@ July\or August\or September\or October\or November\or December\fi \def\printindex{\parsearg\doprintindex} -\def\doprintindex#1{% - \tex - \dobreak \chapheadingskip {10000} - \catcode`\%=\other\catcode`\&=\other\catcode`\#=\other - \catcode`\$=\other - \catcode`\~=\other - \indexbreaks +\def\doprintindex#1{\begingroup + \dobreak \chapheadingskip{10000}% % - % The following don't help, since the chars were translated - % when the raw index was written, and their fonts were discarded - % due to \indexnofonts. - %\catcode`\"=\active - %\catcode`\^=\active - %\catcode`\_=\active - %\catcode`\|=\active - %\catcode`\<=\active - %\catcode`\>=\active - % % - \def\indexbackslash{\rawbackslashxx} - \indexfonts\rm \tolerance=9500 \advance\baselineskip -1pt + \indexfonts \rm + \tolerance = 9500 + \indexbreaks + \def\indexbackslash{\rawbackslashxx}% + % Index files are almost Texinfo source, but we use \ as the escape + % character. It would be better to use @, but that's too big a change + % to make right now. + \catcode`\\ = 0 + \catcode`\@ = 11 + \escapechar = `\\ \begindoublecolumns % % See if the index file exists and is nonempty. @@ -2171,7 +2400,7 @@ July\or August\or September\or October\or November\or December\fi % index. The easiest way to prevent this problem is to make sure % there is some text. (Index is nonexistent) - \else + \else % % If the index file exists but is empty, then \openin leaves \ifeof % false. We have to make TeX try to read something from the file, so @@ -2185,8 +2414,7 @@ July\or August\or September\or October\or November\or December\fi \fi \closein 1 \enddoublecolumns - \Etex -} +\endgroup} % These macros are used by the sorted index file itself. % Change them to control the appearance of the index. @@ -2240,7 +2468,7 @@ July\or August\or September\or October\or November\or December\fi % % Insert the text of the index entry. TeX will do line-breaking on it. #1% - % The following is kluged to not output a line of dots in the index if + % The following is kludged to not output a line of dots in the index if % there are no page numbers. The next person who breaks this will be % cursed by a Unix daemon. \def\tempa{{\rm }}% @@ -2277,15 +2505,15 @@ July\or August\or September\or October\or November\or December\fi \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par }} -%% Define two-column mode, which is used in indexes. -%% Adapted from the TeXbook, page 416. -\catcode `\@=11 +% Define two-column mode, which we use to typeset indexes. +% Adapted from the TeXbook, page 416, which is to say, +% the manmac.tex format used to print the TeXbook itself. +\catcode`\@=11 \newbox\partialpage - \newdimen\doublecolumnhsize -\def\begindoublecolumns{\begingroup +\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns % Grab any single-column material above us. \output = {\global\setbox\partialpage =\vbox{\unvbox255\kern -\topskip \kern \baselineskip}}% @@ -2318,51 +2546,51 @@ July\or August\or September\or October\or November\or December\fi % Double the \vsize as well. (We don't need a separate register here, % since nobody clobbers \vsize.) \vsize = 2\vsize - \doublecolumnpagegoal } - -\def\enddoublecolumns{\eject \endgroup \pagegoal=\vsize \unvbox\partialpage} - -\def\doublecolumnsplit{\splittopskip=\topskip \splitmaxdepth=\maxdepth - \global\dimen@=\pageheight \global\advance\dimen@ by-\ht\partialpage - \global\setbox1=\vsplit255 to\dimen@ \global\setbox0=\vbox{\unvbox1} - \global\setbox3=\vsplit255 to\dimen@ \global\setbox2=\vbox{\unvbox3} - \ifdim\ht0>\dimen@ \setbox255=\vbox{\unvbox0\unvbox2} \global\setbox255=\copy5 \fi - \ifdim\ht2>\dimen@ \setbox255=\vbox{\unvbox0\unvbox2} \global\setbox255=\copy5 \fi +\def\doublecolumnout{% + \splittopskip=\topskip \splitmaxdepth=\maxdepth + % Get the available space for the double columns -- the normal + % (undoubled) page height minus any material left over from the + % previous page. + \dimen@=\pageheight \advance\dimen@ by-\ht\partialpage + % box0 will be the left-hand column, box1 the right. + \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ + \onepageout\pagesofar + \unvbox255 \penalty\outputpenalty } -\def\doublecolumnpagegoal{% - \dimen@=\vsize \advance\dimen@ by-2\ht\partialpage \global\pagegoal=\dimen@ +\def\pagesofar{% + % The contents of the output page -- any previous material, + % followed by the two boxes we just split. + \unvbox\partialpage + \hsize = \doublecolumnhsize + \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}% } -\def\pagesofar{\unvbox\partialpage % - \hsize=\doublecolumnhsize % have to restore this since output routine - \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}} -\def\doublecolumnout{% - \setbox5=\copy255 - {\vbadness=10000 \doublecolumnsplit} - \ifvbox255 - \setbox0=\vtop to\dimen@{\unvbox0} - \setbox2=\vtop to\dimen@{\unvbox2} - \onepageout\pagesofar \unvbox255 \penalty\outputpenalty - \else - \setbox0=\vbox{\unvbox5} - \ifvbox0 - \dimen@=\ht0 \advance\dimen@ by\topskip \advance\dimen@ by-\baselineskip - \divide\dimen@ by2 \splittopskip=\topskip \splitmaxdepth=\maxdepth - {\vbadness=10000 - \loop \global\setbox5=\copy0 - \setbox1=\vsplit5 to\dimen@ - \setbox3=\vsplit5 to\dimen@ - \ifvbox5 \global\advance\dimen@ by1pt \repeat - \setbox0=\vbox to\dimen@{\unvbox1} - \setbox2=\vbox to\dimen@{\unvbox3} - \global\setbox\partialpage=\vbox{\pagesofar} - \doublecolumnpagegoal - } - \fi - \fi +\def\enddoublecolumns{% + \output={\balancecolumns}\eject % split what we have + \endgroup + % Back to normal single-column typesetting, but take account of the + % fact that we just accumulated some stuff on the output page. + \pagegoal=\vsize +} +\def\balancecolumns{% + % Called on the last page of the double column material. + \setbox0=\vbox{\unvbox255}% + \dimen@ = \ht0 + \advance\dimen@ by \topskip + \advance\dimen@ by-\baselineskip + \divide\dimen@ by 2 + \splittopskip = \topskip + % Loop until we get a decent breakpoint. + {\vbadness=10000 \loop \global\setbox3=\copy0 + \global\setbox1=\vsplit3 to\dimen@ + \ifdim\ht3>\dimen@ \global\advance\dimen@ by1pt \repeat}% + \setbox0=\vbox to\dimen@{\unvbox1}% + \setbox2=\vbox to\dimen@{\unvbox3}% + \pagesofar } - \catcode `\@=\other + + \message{sectioning,} % Define chapters, sections, etc. @@ -2534,6 +2762,10 @@ July\or August\or September\or October\or November\or December\fi \global\let\subsubsection = \appendixsubsubsec }} +% @centerchap is like @unnumbered, but the heading is centered. +\outer\def\centerchap{\parsearg\centerchapyyy} +\def\centerchapyyy #1{{\let\unnumbchapmacro=\centerchapmacro \unnumberedyyy{#1}}} + \outer\def\top{\parsearg\unnumberedyyy} \outer\def\unnumbered{\parsearg\unnumberedyyy} \def\unnumberedyyy #1{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz @@ -2578,7 +2810,7 @@ July\or August\or September\or October\or November\or December\fi \penalty 10000 % }} -\outer\def\appenixsection{\parsearg\appendixsecyyy} +\outer\def\appendixsection{\parsearg\appendixsecyyy} \outer\def\appendixsec{\parsearg\appendixsecyyy} \def\appendixsecyyy #1{\apphead1{#1}} % normally calls appendixsectionzzz \def\appendixsectionzzz #1{\seccheck{appendixsection}% @@ -2636,7 +2868,7 @@ July\or August\or September\or October\or November\or December\fi \outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy} \def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz \def\unnumberedsubseczzz #1{\seccheck{unnumberedsubsec}% -\plainsecheading {#1}\gdef\thissection{#1}% +\plainsubsecheading {#1}\gdef\thissection{#1}% {\chapternofonts% \edef\temp{{\realbackslash unnumbsubsecentry{#1}{\noexpand\folio}}}% \escapechar=`\\% @@ -2681,7 +2913,7 @@ July\or August\or September\or October\or November\or December\fi \outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy} \def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz \def\unnumberedsubsubseczzz #1{\seccheck{unnumberedsubsubsec}% -\plainsecheading {#1}\gdef\thissection{#1}% +\plainsubsubsecheading {#1}\gdef\thissection{#1}% {\chapternofonts% \edef\temp{{\realbackslash unnumbsubsubsecentry{#1}{\noexpand\folio}}}% \escapechar=`\\% @@ -2719,10 +2951,10 @@ July\or August\or September\or October\or November\or December\fi % NOTE on use of \vbox for chapter headings, section headings, and % such: -% 1) We use \vbox rather than the earlier \line to permit -% overlong headings to fold. -% 2) \hyphenpenalty is set to 10000 because hyphenation in a -% heading is obnoxious; this forbids it. +% 1) We use \vbox rather than the earlier \line to permit +% overlong headings to fold. +% 2) \hyphenpenalty is set to 10000 because hyphenation in a +% heading is obnoxious; this forbids it. % 3) Likewise, headings look best if no \parindent is used, and % if justification is not attempted. Hence \raggedright. @@ -2740,11 +2972,10 @@ July\or August\or September\or October\or November\or December\fi \parindent=0pt\raggedright \rm #1\hfill}}\bigskip \par\penalty 200} -\def\heading{\parsearg\secheadingi} - -\def\subheading{\parsearg\subsecheadingi} - -\def\subsubheading{\parsearg\subsubsecheadingi} +% @heading, @subheading, @subsubheading. +\def\heading{\parsearg\plainsecheading} +\def\subheading{\parsearg\plainsubsecheading} +\def\subsubheading{\parsearg\plainsubsubsecheading} % These macros generate a chapter, section, etc. heading only % (including whitespace, linebreaking, etc. around it), @@ -2758,7 +2989,7 @@ July\or August\or September\or October\or November\or December\fi %%% Define plain chapter starts, and page on/off switching for it % Parameter controlling skip before chapter headings (if needed) -\newskip \chapheadingskip \chapheadingskip = 30pt plus 8pt minus 4pt +\newskip\chapheadingskip \def\chapbreak{\dobreak \chapheadingskip {-4000}} \def\chappager{\par\vfill\supereject} @@ -2767,15 +2998,18 @@ July\or August\or September\or October\or November\or December\fi \def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname} \def\CHAPPAGoff{ +\global\let\contentsalignmacro = \chappager \global\let\pchapsepmacro=\chapbreak \global\let\pagealignmacro=\chappager} \def\CHAPPAGon{ +\global\let\contentsalignmacro = \chappager \global\let\pchapsepmacro=\chappager \global\let\pagealignmacro=\chappager \global\def\HEADINGSon{\HEADINGSsingle}} \def\CHAPPAGodd{ +\global\let\contentsalignmacro = \chapoddpage \global\let\pchapsepmacro=\chapoddpage \global\let\pagealignmacro=\chapoddpage \global\def\HEADINGSon{\HEADINGSdouble}} @@ -2784,25 +3018,39 @@ July\or August\or September\or October\or November\or December\fi \def\CHAPFplain{ \global\let\chapmacro=\chfplain -\global\let\unnumbchapmacro=\unnchfplain} +\global\let\unnumbchapmacro=\unnchfplain +\global\let\centerchapmacro=\centerchfplain} -\def\chfplain #1#2{% +% Plain chapter opening. +% #1 is the text, #2 the chapter number or empty if unnumbered. +\def\chfplain#1#2{% \pchapsepmacro {% - \chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt\raggedright - \rm #2\enspace #1}% + \chapfonts \rm + \def\chapnum{#2}% + \setbox0 = \hbox{#2\ifx\chapnum\empty\else\enspace\fi}% + \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright + \hangindent = \wd0 \centerparametersmaybe + \unhbox0 #1\par}% }% - \bigskip - \penalty5000 + \nobreak\bigskip % no page break after a chapter title + \nobreak } -\def\unnchfplain #1{% -\pchapsepmacro % -{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt\raggedright - \rm #1\hfill}}\bigskip \par\penalty 10000 % -} +% Plain opening for unnumbered. +\def\unnchfplain#1{\chfplain{#1}{}} + +% @centerchap -- centered and unnumbered. +\let\centerparametersmaybe = \relax +\def\centerchfplain#1{{% + \def\centerparametersmaybe{% + \advance\rightskip by 3\rightskip + \leftskip = \rightskip + \parfillskip = 0pt + }% + \chfplain{#1}{}% +}} + \CHAPFplain % The default \def\unnchfopen #1{% @@ -2816,73 +3064,81 @@ July\or August\or September\or October\or November\or December\fi \par\penalty 5000 % } +\def\centerchfopen #1{% +\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 + \parindent=0pt + \hfill {\rm #1}\hfill}}\bigskip \par\penalty 10000 % +} + \def\CHAPFopen{ \global\let\chapmacro=\chfopen -\global\let\unnumbchapmacro=\unnchfopen} +\global\let\unnumbchapmacro=\unnchfopen +\global\let\centerchapmacro=\centerchfopen} -% Parameter controlling skip before section headings. -\newskip \subsecheadingskip \subsecheadingskip = 17pt plus 8pt minus 4pt +% Section titles. +\newskip\secheadingskip +\def\secheadingbreak{\dobreak \secheadingskip {-1000}} +\def\secheading#1#2#3{\sectionheading{sec}{#2.#3}{#1}} +\def\plainsecheading#1{\sectionheading{sec}{}{#1}} + +% Subsection titles. +\newskip \subsecheadingskip \def\subsecheadingbreak{\dobreak \subsecheadingskip {-500}} +\def\subsecheading#1#2#3#4{\sectionheading{subsec}{#2.#3.#4}{#1}} +\def\plainsubsecheading#1{\sectionheading{subsec}{}{#1}} -\newskip \secheadingskip \secheadingskip = 21pt plus 8pt minus 4pt -\def\secheadingbreak{\dobreak \secheadingskip {-1000}} +% Subsubsection titles. +\let\subsubsecheadingskip = \subsecheadingskip +\let\subsubsecheadingbreak = \subsecheadingbreak +\def\subsubsecheading#1#2#3#4#5{\sectionheading{subsubsec}{#2.#3.#4.#5}{#1}} +\def\plainsubsubsecheading#1{\sectionheading{subsubsec}{}{#1}} -% @paragraphindent is defined for the Info formatting commands only. -\let\paragraphindent=\comment -% Section fonts are the base font at magstep2, which produces -% a size a bit more than 14 points in the default situation. - -\def\secheading #1#2#3{\secheadingi {#2.#3\enspace #1}} -\def\plainsecheading #1{\secheadingi {#1}} -\def\secheadingi #1{{\advance \secheadingskip by \parskip % -\secheadingbreak}% -{\secfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt\raggedright - \rm #1\hfill}}% -\ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000 } - - -% Subsection fonts are the base font at magstep1, -% which produces a size of 12 points. - -\def\subsecheading #1#2#3#4{\subsecheadingi {#2.#3.#4\enspace #1}} -\def\subsecheadingi #1{{\advance \subsecheadingskip by \parskip % -\subsecheadingbreak}% -{\subsecfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt\raggedright - \rm #1\hfill}}% -\ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000 } - -\def\subsubsecfonts{\subsecfonts} % Maybe this should change: - % Perhaps make sssec fonts scaled - % magstep half -\def\subsubsecheading #1#2#3#4#5{\subsubsecheadingi {#2.#3.#4.#5\enspace #1}} -\def\subsubsecheadingi #1{{\advance \subsecheadingskip by \parskip % -\subsecheadingbreak}% -{\subsubsecfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt\raggedright - \rm #1\hfill}}% -\ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000} +% Print any size section title. +% +% #1 is the section type (sec/subsec/subsubsec), #2 is the section +% number (maybe empty), #3 the text. +\def\sectionheading#1#2#3{% + {% + \expandafter\advance\csname #1headingskip\endcsname by \parskip + \csname #1headingbreak\endcsname + }% + {% + % Switch to the right set of fonts. + \csname #1fonts\endcsname \rm + % + % Only insert the separating space if we have a section number. + \def\secnum{#2}% + \setbox0 = \hbox{#2\ifx\secnum\empty\else\enspace\fi}% + % + \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright + \hangindent = \wd0 % zero if no section number + \unhbox0 #3}% + }% + \ifdim\parskip<10pt \nobreak\kern10pt\nobreak\kern-\parskip\fi \nobreak +} \message{toc printing,} - % Finish up the main text and prepare to read what we've written % to \contentsfile. \newskip\contentsrightmargin \contentsrightmargin=1in \def\startcontents#1{% - \pagealignmacro + % If @setchapternewpage on, and @headings double, the contents should + % start on an odd page, unlike chapters. Thus, we maintain + % \contentsalignmacro in parallel with \pagealignmacro. + % From: Torbjorn Granlund <tege@matematik.su.se> + \contentsalignmacro \immediate\closeout \contentsfile \ifnum \pageno>0 - \pageno = -1 % Request roman numbered pages. + \pageno = -1 % Request roman numbered pages. \fi % Don't need to put `Contents' or `Short Contents' in the headline. % It is abundantly clear what they are. \unnumbchapmacro{#1}\def\thischapter{}% - \begingroup % Set up to handle contents files properly. + \begingroup % Set up to handle contents files properly. \catcode`\\=0 \catcode`\{=1 \catcode`\}=2 \catcode`\@=11 \catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi \raggedbottom % Worry more about breakpoints than the bottom. @@ -2908,6 +3164,7 @@ July\or August\or September\or October\or November\or December\fi \secfonts \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl \rm + \hyphenpenalty = 10000 \advance\baselineskip by 1pt % Open it up a little. \def\secentry ##1##2##3##4{} \def\unnumbsecentry ##1##2{} @@ -2951,7 +3208,7 @@ July\or August\or September\or October\or November\or December\fi % This space should be plenty, since a single number is .5em, and the % widest letter (M) is 1em, at least in the Computer Modern fonts. % (This space doesn't include the extra space that gets added after - % the label; that gets put in in \shortchapentry above.) + % the label; that gets put in by \shortchapentry above.) \advance\dimen0 by 1.1em \hbox to \dimen0{#1\hfil}% } @@ -2972,22 +3229,21 @@ July\or August\or September\or October\or November\or December\fi \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}} \def\unnumbsubsubsecentry#1#2{\dosubsubsecentry{#1}{#2}} - % This parameter controls the indentation of the various levels. \newdimen\tocindent \tocindent = 3pc % Now for the actual typesetting. In all these, #1 is the text and #2 is the % page number. % -% If the toc has to be broken over pages, we would want to be at chapters +% If the toc has to be broken over pages, we want it to be at chapters % if at all possible; hence the \penalty. \def\dochapentry#1#2{% - \penalty-300 \vskip\baselineskip + \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip \begingroup \chapentryfonts \tocentry{#1}{\dopageno{#2}}% \endgroup - \nobreak\vskip .25\baselineskip + \nobreak\vskip .25\baselineskip plus.1\baselineskip } \def\dosecentry#1#2{\begingroup @@ -3010,9 +3266,10 @@ July\or August\or September\or October\or November\or December\fi % can't do that in the \entry macro, since index entries might consist % of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.) % +% \turnoffactive is for the sake of @" used for umlauts. \def\tocentry#1#2{\begingroup - \hyphenpenalty = 10000 - \entry{#1}{#2}% + \vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks + \entry{\turnoffactive #1}{\turnoffactive #2}% \endgroup} % Space between chapter (or whatever) number and the title. @@ -3036,8 +3293,6 @@ July\or August\or September\or October\or November\or December\fi \newbox\pushcharbox \newbox\bullbox \newbox\equivbox \newbox\errorbox -\let\ptexequiv = \equiv - %{\tentt %\global\setbox\dblarrowbox = \hbox to 1em{\hfil$\Rightarrow$\hfil} %\global\setbox\longdblarrowbox = \hbox to 1em{\hfil$\mapsto$\hfil} @@ -3048,12 +3303,11 @@ July\or August\or September\or October\or November\or December\fi % depth .1ex\hfil} %} +% @point{}, @result{}, @expansion{}, @print{}, @equiv{}. \def\point{$\star$} - \def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} \def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}} \def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} - \def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}} % Adapted from the TeXbook's \boxit. @@ -3085,7 +3339,7 @@ July\or August\or September\or October\or November\or December\fi \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 \catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie \catcode `\%=14 -\catcode 43=12 +\catcode 43=12 % plus \catcode`\"=12 \catcode`\==12 \catcode`\|=12 @@ -3093,16 +3347,18 @@ July\or August\or September\or October\or November\or December\fi \catcode`\>=12 \escapechar=`\\ % +\let\,=\ptexcomma \let\~=\ptextilde \let\{=\ptexlbrace \let\}=\ptexrbrace \let\.=\ptexdot \let\*=\ptexstar \let\dots=\ptexdots +\def\endldots{\mathinner{\ldots\ldots\ldots\ldots}} +\def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi} \def\@{@}% \let\bullet=\ptexbullet -\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl -\let\L=\ptexL +\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext % \let\Etex=\endgroup} @@ -3161,50 +3417,50 @@ July\or August\or September\or October\or November\or December\fi \def\cbl{{\circle\char'012\hskip -6pt}} \def\cbr{{\hskip 6pt\circle\char'011}} \def\carttop{\hbox to \cartouter{\hskip\lskip - \ctl\leaders\hrule height\circthick\hfil\ctr - \hskip\rskip}} + \ctl\leaders\hrule height\circthick\hfil\ctr + \hskip\rskip}} \def\cartbot{\hbox to \cartouter{\hskip\lskip - \cbl\leaders\hrule height\circthick\hfil\cbr - \hskip\rskip}} + \cbl\leaders\hrule height\circthick\hfil\cbr + \hskip\rskip}} % \newskip\lskip\newskip\rskip \long\def\cartouche{% \begingroup - \lskip=\leftskip \rskip=\rightskip - \leftskip=0pt\rightskip=0pt %we want these *outside*. - \cartinner=\hsize \advance\cartinner by-\lskip - \advance\cartinner by-\rskip - \cartouter=\hsize - \advance\cartouter by 18pt % allow for 3pt kerns on either -% side, and for 6pt waste from -% each corner char - \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip - % Flag to tell @lisp, etc., not to narrow margin. - \let\nonarrowing=\comment - \vbox\bgroup - \baselineskip=0pt\parskip=0pt\lineskip=0pt - \carttop - \hbox\bgroup - \hskip\lskip - \vrule\kern3pt - \vbox\bgroup - \hsize=\cartinner - \kern3pt - \begingroup - \baselineskip=\normbskip - \lineskip=\normlskip - \parskip=\normpskip - \vskip -\parskip + \lskip=\leftskip \rskip=\rightskip + \leftskip=0pt\rightskip=0pt %we want these *outside*. + \cartinner=\hsize \advance\cartinner by-\lskip + \advance\cartinner by-\rskip + \cartouter=\hsize + \advance\cartouter by 18pt % allow for 3pt kerns on either +% side, and for 6pt waste from +% each corner char + \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip + % Flag to tell @lisp, etc., not to narrow margin. + \let\nonarrowing=\comment + \vbox\bgroup + \baselineskip=0pt\parskip=0pt\lineskip=0pt + \carttop + \hbox\bgroup + \hskip\lskip + \vrule\kern3pt + \vbox\bgroup + \hsize=\cartinner + \kern3pt + \begingroup + \baselineskip=\normbskip + \lineskip=\normlskip + \parskip=\normpskip + \vskip -\parskip \def\Ecartouche{% - \endgroup - \kern3pt - \egroup - \kern3pt\vrule - \hskip\rskip - \egroup - \cartbot - \egroup + \endgroup + \kern3pt + \egroup + \kern3pt\vrule + \hskip\rskip + \egroup + \cartbot + \egroup \endgroup }} @@ -3267,8 +3523,7 @@ July\or August\or September\or October\or November\or December\fi \let\Esmalllisp = \nonfillfinish \let\Esmallexample = \nonfillfinish % - % Smaller interline space and fonts for small examples. - \setleading{10pt}% + % Smaller fonts for small examples. \indexfonts \tt \rawbackslash % make \ output the \ character from the current font (tt) \gobble @@ -3796,6 +4051,7 @@ July\or August\or September\or October\or November\or December\fi \def\deftpx #1 {\errmessage{@deftpx in invalid context}} + \message{cross reference,} % Define cross-reference macros \newwrite \auxfile @@ -3803,6 +4059,11 @@ July\or August\or September\or October\or November\or December\fi \newif\ifhavexrefs % True if xref values are known. \newif\ifwarnedxrefs % True if we warned once that they aren't known. +% @inforef is simple. +\def\inforef #1{\inforefzzz #1,,,,**} +\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, + node \samp{\ignorespaces#1{}}} + % \setref{foo} defines a cross-reference point named foo. \def\setref#1{% @@ -3836,7 +4097,10 @@ July\or August\or September\or October\or November\or December\fi \setbox0=\hbox{\printednodename}% \ifdim \wd0 = 0pt % No printed node name was explicitly given. - \ifx\SETxref-automatic-section-title\relax % + \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax + % Use the node name inside the square brackets. + \def\printednodename{\ignorespaces #1}% + \else % Use the actual chapter/section title appear inside % the square brackets. Use the real section title if we have it. \ifdim \wd1>0pt% @@ -3845,16 +4109,12 @@ July\or August\or September\or October\or November\or December\fi \else \ifhavexrefs % We know the real title if we have the xref values. - \def\printednodename{\refx{#1-title}}% + \def\printednodename{\refx{#1-title}{}}% \else % Otherwise just copy the Info node name. \def\printednodename{\ignorespaces #1}% \fi% \fi - \def\printednodename{#1-title}% - \else - % Use the node name inside the square brackets. - \def\printednodename{\ignorespaces #1}% \fi \fi % @@ -4039,7 +4299,8 @@ July\or August\or September\or October\or November\or December\fi % The trailing space in the following definition for supereject is % vital for proper filling; pages come out unaligned when you do a % pagealignmacro call if that space before the closing brace is -% removed. +% removed. (Generally, numeric constants should always be followed by a +% space to prevent strange expansion errors.) \def\supereject{\par\penalty -20000\footnoteno =0 } % @footnotestyle is meaningful for info output only.. @@ -4164,13 +4425,18 @@ July\or August\or September\or October\or November\or December\fi % Set some numeric style parameters, for 8.5 x 11 format. -%\hsize = 6.5in +\hsize = 6in +\hoffset = .25in \newdimen\defaultparindent \defaultparindent = 15pt \parindent = \defaultparindent -\parskip 18pt plus 1pt -\setleading{15pt} +\parskip 3pt plus 2pt minus 1pt +\setleading{13.2pt} \advance\topskip by 1.2cm +\chapheadingskip = 15pt plus 4pt minus 2pt +\secheadingskip = 12pt plus 3pt minus 2pt +\subsecheadingskip = 9pt plus 2pt minus 2pt + % Prevent underfull vbox error messages. \vbadness=10000 @@ -4193,30 +4459,28 @@ July\or August\or September\or October\or November\or December\fi % Use @smallbook to reset parameters for 7x9.5 format (or else 7x9.25) \def\smallbook{ - -% These values for secheadingskip and subsecheadingskip are -% experiments. RJC 7 Aug 1992 -\global\secheadingskip = 17pt plus 6pt minus 3pt -\global\subsecheadingskip = 14pt plus 6pt minus 3pt - -\global\lispnarrowing = 0.3in -\setleading{12pt} -\advance\topskip by -1cm -\global\parskip 3pt plus 1pt -\global\hsize = 5in -\global\vsize=7.5in -\global\tolerance=700 -\global\hfuzz=1pt -\global\contentsrightmargin=0pt -\global\deftypemargin=0pt -\global\defbodyindent=.5cm - -\global\pagewidth=\hsize -\global\pageheight=\vsize - -\global\let\smalllisp=\smalllispx -\global\let\smallexample=\smalllispx -\global\def\Esmallexample{\Esmalllisp} + \global\chapheadingskip = 15pt plus 4pt minus 2pt + \global\secheadingskip = 12pt plus 3pt minus 2pt + \global\subsecheadingskip = 9pt plus 2pt minus 2pt + % + \global\lispnarrowing = 0.3in + \setleading{12pt} + \advance\topskip by -1cm + \global\parskip 2pt plus 1pt + \global\hsize = 5in + \global\vsize=7.5in + \global\tolerance=700 + \global\hfuzz=1pt + \global\contentsrightmargin=0pt + \global\deftypemargin=0pt + \global\defbodyindent=.5cm + % + \global\pagewidth=\hsize + \global\pageheight=\vsize + % + \global\let\smalllisp=\smalllispx + \global\let\smallexample=\smalllispx + \global\def\Esmallexample{\Esmalllisp} } % Use @afourpaper to print on European A4 paper. @@ -4239,12 +4503,19 @@ July\or August\or September\or October\or November\or December\fi \global\pageheight=\vsize } +\bindingoffset=0pt +\normaloffset=\hoffset +\pagewidth=\hsize +\pageheight=\vsize + % Allow control of the text dimensions. Parameters in order: textheight; -% textwidth; \voffset; \hoffset (!); binding offset. All require a dimension; +% textwidth; voffset; hoffset; binding offset; topskip. +% All require a dimension; % header is additional; added length extends the bottom of the page. -\def\changepagesizes#1#2#3#4#5{ +\def\changepagesizes#1#2#3#4#5#6{ \global\vsize= #1 + \global\topskip= #6 \advance\vsize by \topskip \global\voffset= #3 \global\hsize= #2 @@ -4257,13 +4528,20 @@ July\or August\or September\or October\or November\or December\fi \global\normaloffset= #4 \global\bindingoffset= #5} -% This layout is compatible with Latex on A4 paper. - -\def\afourlatex{\changepagesizes{22cm}{15cm}{7mm}{4.6mm}{5mm}} +% A specific text layout, 24x15cm overall, intended for A4 paper. Top margin +% 29mm, hence bottom margin 28mm, nominal side margin 3cm. +\def\afourlatex + {\global\tolerance=700 + \global\hfuzz=1pt + \setleading{12pt} + \global\parskip 15pt plus 1pt + \advance\baselineskip by 1.6pt + \changepagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm} + } % Use @afourwide to print on European A4 paper in wide format. \def\afourwide{\afourpaper -\changepagesizes{9.5in}{6.5in}{\hoffset}{\normaloffset}{\bindingoffset}} +\changepagesizes{9.5in}{6.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}} % Define macros to output various characters with catcode for normal text. \catcode`\"=\other @@ -4312,14 +4590,7 @@ July\or August\or September\or October\or November\or December\fi \catcode`\_=\active \def_{\ifusingtt\normalunderscore\_} % Subroutine for the previous macro. -\def\_{\lvvmode \kern.06em \vbox{\hrule width.3em height.1ex}} - -% \lvvmode is equivalent in function to \leavevmode. -% Using \leavevmode runs into trouble when written out to -% an index file due to the expansion of \leavevmode into ``\unhbox -% \voidb@x'' ---which looks to TeX like ``\unhbox \voidb\x'' due to our -% magic tricks with @. -\def\lvvmode{\vbox to 0pt{}} +\def\_{\leavevmode \kern.06em \vbox{\hrule width.3em height.1ex}} \catcode`\|=\active \def|{{\tt \char '174}} |
