水木-Emacs 的 texinfo 模式 (二)
null ana
〖返回〗〖转发〗
来自ana的主页 http://ana.163.net/
-------------------------------------------
第一小节 Updating Commands 更新命令
你可以使用更新命令来做以下事情:
* 插入或更新节点的 `Next', `Previous', `Up' 指向。
* 插入或更新章节的目录。
* 建立 Texinfo 文件的主要目录。
当然你也可以使用这些命令来更新整个文件或文件的某一部分的所有节点和目录。
这些更新命令只适用于传统的 Texinfo 文件,它们的层次结构就象一本书。
在这些文件中,结构命令必须紧跟在 `@line' 行后面,除了那些 `Top' `@node' 行。( 一个节构命令行就是以 `@chapter', `@section' 以及类似命令开始的行)
你可以在一个 `@node' 行后面立即输入结构命令行,或者在一个单行的`@comment'命令行或一个单行的 `@ifinfo' 命令行后输入结构命令行。你不能在`@node' 行和结构命令行之间插入其他行。仅仅是 `@comment'行或`@ifinfo'行可以插入。
使用更新命令的文本必须有 `Top' 结点且后面跟着一个 `@chapter' 节点或者其他同等的命令行。注意如果文件仅仅有 `@chapter' 级别的节点,目录更新命令将不会产生主目录。目录更新命令仅仅能产生含有低级别节点的目录。要产生一个章节的目录,你必须提供一个 `Top' 结点。
目录更新命令将删除指向其他 Info 文件的目录条目。这是它的一个不足。一个变通的解决办法是使用交叉参考指向其他的文件。目录更新命令不会影响交叉参考。
Texinfo 模式主要用到的有五个更新命令:两个命令用来更新一个单行或者一部分区域中的节点指向或目录; 两个更新一个文件中所有节点指向或目录; 还有一个命令texinfo-master-menu' ,用来建立整个文件的主目录,或者,用来更新整个文件的所有节点和目录。
`texinfo-master-menu' 命令是一个主要命令:
`C-c C-u m' `M-x texinfo-master-menu'
建立或更新一个包括所有目录的主目录。(假如可能的话,合并已经存在目录中的描述)
使用参数 (前置参数, 用 `C-u'), 将在建立主目录前首先建立或更新所有的节点或常规目录。
使用 `texinfo-master-menu',Texinfo 文件必须有一个 `Top' 结点并且至少有一个子节点。
在编辑完 Texinfo 文件后,你可以输入:
C-u M-x texinfo-master-menu
或
C-u C-c C-u m
这将首先更新所有的节点和目录。
剩下的更新命令也用来做类似的更新节点或目录的工作。
这些命令是:
`C-c C-u C-n'
`M-x texinfo-update-node'
插入光标所在的节点的 `Next', `Previous', `Up' 指向,如果 `@node'行已经有了 `Next', `Previous', `Up' 节点指向,那么旧的指向将被删除,然后插入新的指向。使用参数 ( 前置参数,使用 `C-u' 命令 ),这个命令将会更新区域( 在标记点和光标之间的文本 ) 所有的 `@node' 行。
`C-c C-u C-m'
`M-x texinfo-make-menu'
建立或更新光标所在节点的目录。使用参数,这个命令将更新或建立区域中的目录。
当使用 `texinfo-make-menu' 更新或建立目录时,已有目录条目中的描述被拷贝到对应新目录中拥有相同节点名的目录条目中。假如节点名不同,描述不会被拷贝到新目录中去。
`C-c C-u C-e'
`M-x texinfo-every-node-update'
插入或更新当前缓冲区的所有节点的 `Next', `Previous', `Up' 指向。
`C-c C-u C-a'
`M-x texinfo-all-menus-update'
建立或更新当前缓冲区的所有目录。使用参数将在对目录进行操作前首先插入或更新所有的节点指向。
假如主目录已经存在,`texinfo-all-menus-update' 命令将更新它,但是假如主目录不存在,此命令将不会创建主目录。( 使用 `texinfo-master-menu'创建主目录 )
使用命令:
C-u C-c C-u C-a
或
C-u M-x texinfo-all-menu-update
更新所有的节点和目录。
变量 `texinfo-column-for-description' 定义了描述缩进的列数。缺省值是 32 ,尽管经常使用 24 。你可以设置这个变量通过使用 `M-xedit-options' 或者使用命令 `M-x set-variable' 。
使用命令 `texinfo-indent-menu-description' 可以定义已存在的目录条目的描述缩进值。假如需要,你可以使用命令 `texinfo-insert-node-lines' 来插入丢失的 `@node' 行。
更新时所要求的事项
在使用更新命令时,你必须把 Texinfo 文件分层组织好。当你手工组织文档结构的时候,不要向下跳级结构。你可以从 `Top'节点跳到章节,而不是段落;
你可以从章节跳到段落,但不能跳到子段。但是,你可以向上跳过任何层次,例如,从一个子段跳转到章节。
每一个 `@node' 行或结构命令行看起来就象这样:
@node Comments, Minimum, Conventions, Overview
@comment node-name, next, previous, up
@section Comments
或者象这样 ( 没有 `@comment' 行):
@node Comments, Minimum, Conventions, Overview
@section Comments
在这个例子中,`Comments' 是结点和段落的名字。下一个结点叫`Minimum',上一个结点叫 `Conventions'。`Comments' 段落定义在`Overview' 节点中,也就是 `Up' 指向的节点。( 可以用 `@ifinfo' 行代替`@comment' 行 )
假如文件有 `Top' 节点,它必须叫做 `top' 或 `Top' 并且是文件的第一个节点。
目录更新命令用来在章节中建立段落目录,或者是段落中的子段落目录。这也就意味着如果你要建立章节目录那么你必须有一个 `Top' 节点。
偶然的,`makeinfo' 命令将建立 Info 文件,这种情形通常是因为Texinfo 文件缺乏 `Next', `Previous', `Up' 指向。假如你能确认你的文件将被 `makeinfo' 格式化,那么你不需要使用这些更新命令。然而,`makeinfo'和 `texinfo-format-...' 命令都需要你在文件中插入目录。
其他的更新命令
除了五个常用的更新命令外,Texinfo 模式还提供了一些其他命令:
`M-x texinfo-insert-node-lines'
在 `@chapter', `section' 和其他段落命令前插入 `@node' 行。
使用参数 ( `C-u' 前置参数 ), `texinfo-insert-node-lines' 不仅仅插入`@node' 行,它还将以相应的节点名插入章节或段落标题。假如已经存在的节点行缺乏名字的话它将以标题插入。因为节点名字要比章节或段落标题简明得多,所以通常你得手工编辑插入的节点名。
例如,以下的命令把整个缓冲区标记为一个区域并且插入 `@node' 行和标题:
C-x h C-u M-x texinfo-insert-node-lines
( 注意这条命令将把标题作为节点名插入 `@node' 行;
`texinfo-start-menu-description' 命令把标题作为描述插入目录条目。然而,在多数情况下,你需要编辑插入的文本。)
`M-x texinfo-multiple-files-update'
在多个文件中更新文档的节点和目录。使用 `C-u' 作为前置参数,在外部文件中建立和插入一个主要的目录。使用带数字的前置参数,象 `C-u 2',在外部文件中建立和插入目录之前首先更新所有的目录和所有的 `Next',`Previous', `Up'指向。这条命令在 `@include' 文件有详尽描述。
`M-x texinfo-indent-menu-description'
以定义的列数缩进目录的描述。你可以使用这条命令定义更多的缩进。使用`C-u' 参数,这条命令缩进区域中的每个目录的每条描述。然而,这条命令不能缩进多行描述的第二行和其他行。
`M-x texinfo-sequential-node-update'
立即插入节点的名字。这意味着子段落的 `Next' 节点也许就是下一章。连续节点在小说和其他连续的文档中很有用。( 然而,在 Info 中,`g *'命令使你能够顺续浏览文件,所以顺续节点不是很需要 ) 使用前置参数,此命令将连续更新区域中的所有节点。
-------------------------------------------
iamafan@linuxaid.com.cn
责任编辑:知识库管理员(2001-01-03 16:34)