水木-Emacs 的 texinfo 模式(一)
null ana
〖返回〗〖转发〗
来自ana的主页 http://ana.163.net/
-------------------------------------------
使用 Texinfo 模式
你可以以任何你喜欢的编辑器来编辑 Texinfo 文件。Texinfo 文件和其他的 ASII 文件没有任何不同。然而,GNU Emacs 有一个特殊的Texinfo 模式,它提供了许多命令和工具来改进你的工作。
这一章描述了 Emacs 的 Texinfo 模式的特征,但并不介绍 Texinfo 的格式化语言。也许你需要返回到开始目录阅读 Texinfo 格式化语言的详细介绍。
*目录:
*Texinfo Mode Overview:: Texinfo 模式有那些有用特性。
*Emacs Editing:: Texinfo 模式的编辑特征。
*Inserting:: 怎样插入经常使用的 @ 命令。
*Showing the Structure:: 怎样显示文件结构。
*Updating Nodes and Menus:: 怎样建立和更新节点和目录。
*Info Formatting:: 怎样格式化 Info 文件。
*Printing:: 怎样格式化文件的打印部分。
*Texinfo Mode Summary:: 简介所有的 Texinfo 模式命令。
第一节 Texinfo 模式概览
Texinfo 模式提供了许多有用的特性:
*插入经常使用的 @ 命令。
*自动建立 `@node' 行。
*显示 Texinfo 源文件的结构。
*自动建立或更新节点的 `Next', `Previous', `Up'的指向。
*自动建立或更新目录。
*自动的建立主要目录。
*为 Info 文档格式化部分或文件的整个部分。
*设置和打印文件的部分或整个部分。
也许最有用的两个特性是插入常用的 @ 命令和建立节点指向和目录。
常用的 GNU Emacs 编辑命令
在多数情况下,常用的编辑命令和文本模式下一样,Texinfo 模式仅仅是加入了一些新的命令和工具。主要的区别在于段落填充。在 Texinfo 模式下,段落分隔变量和符号表被重新定义,这样导致有一些行是孤立行。也就是说,`M-q'(`fill-paragrph')(段落填充--也就是段落重排)命令在重排段落的时候,不会把一个索引命令分隔到段落中的其他行去。
另外,Texinfo 模式设置变量 `page-delimiter' 值为
`texinfo-chapter-level-regexp'; 它缺省匹配关于章节等的等价的命令。通过这样设置,你可以从一个章节跳转到另一个章节通过使用命令 `C-x ]'(`forward-page')(向前一页)、`C-x ['(`backward-page')(向后一页)和`C-xp'(`narrow-to-page')(页间跳转)。
你可以给 Texinfo 随意起名,但是最好以以下几个后缀给文件命名:`.texinfo', `.texi', `.txi', `.tex'。尽管对于许多系统来说文件扩展名的长度有限制,我们仍然推荐使用长后缀。当你查看一个以 `.texinfo',`.texi',`.txi'为后缀的文件时,GNU Emacs 自动的进入 Texinfo 模式。当你查看的文件的第一行有文本 `-*-texinfo-*-' 时,Emacs 也会自动的转入Texinfo 模式。假如你在 Emacs 的其他模式中时,你可以用 `M-xtexinfo-mode' 进入 Texinfo 模式。
就象所有其他的 Emacs 特征,你可以自已定义 Texinfo 模式。它的定义非常容易改变,这儿所说的都是缺省值。
插入常用的命令
Texinfo 模式提供了许多命令来插入各种常用的 @ 命令。
用输入 `C-c' 两次再跟 @ 命令的第一个字母来插入命令。
`C-c C-c c'
`M-x texinfo-insert-@code'
插入 `@code{}' 并且把光标放在括号中间。
`C-c C-c d'
`M-x texinfo-insert-@dfn'
插入 `@dfn{}' 并且把光标放在括号中间。
`C-c C-c e'
`M-x texinfo-insert-@end'
插入 `@end' 并且试图插入正确的单词,就象 `example'或 `table'。(这条命令不能正确的处理嵌套列表,但是可以插入适当的单词)
`C-c C-c i'
`M-x texinfo-insert-@item'
插入 `@item' 并且把光标放在下一行的开始。
`C-c C-c k'
`M-x texinfo-insert-@kbd'
插入 `@kbd{}' 并把光标放在括号中间。
`C-c C-c n'
`M-x texinfo-insert-@node'
插入 `@node' 和一个注解行,后面列出 `Next', `Previous', `Up' 节点,
把光标放在 `@node' 后面。
`C-c C-c o'
`M-x texinfo-insert-@noindent'
插入 `@noindent' 并且把光标放在下一行的开始。
`C-c C-c s'
`M-x texinfo-insert-@samp'
插入 `@samp{}' 并把光标放在括号中间。
`C-c C-c t'
`M-x texinfo-insert-@table'
插入 `@table' 后面跟一个空格,光标放在空格后面。
`C-c C-c v'
`M-x texinfo-insert-@var'
插入 `@var{}' 并把光标放在括号中间。
`C-c C-c x'
`M-x texinfo-insert-@example'
插入 `@example' 并把光标放到下一行的开始。
`C-c C-c {'
`M-x texinfo-insert-braces'
插入 `{}' 并把光标放在括号中间。
`C-c C-c }'
`C-c C-c ]'
`M-x up-list'
从一括号对中向前移出到结束的括号后,因为输入 `C-c C-c ]' 比输入`C-c C-c }' 要容易,所以把这两个快捷键设置为同一功能。( 当然,你也可以用 `C-f' 向前移出 ),要将一个单词放入命令如 `@code{...}' 中时,把光标放在这个单词的前面,然后输入 `C-u 1 C-c C-c c'。前置参数的值告诉 Emacs 把多少个单词放入括号中间。 `1' 放入一个单词,`2' 放入二个单词,依次类推。使用负数做参数将嵌套上一个词组。假如你没有带数字参数,Emacs 插入命令字符串并把光标放在括号中间。这个特性只适用于那些在一行中对单词或词组进行操作的命令。如
`@kbd' 与 `@var'。
这些命令是在分析了 `GNU Emacs Manual' 和 `GDB Manual' 手册里常用的 @ 命令的不同来建立的。如果你想定义自已的插入命令,你可以给一个键绑定 一个快捷键,使用缩写,或者在 `texinfo.el' 加入代码。
`C-c C-c C-d' (`texinfo-start-menu-description') 插入命令与其他的插入命令工作方式不同。它在一个目录条的空白处插入节点部分或插入章节标题。
( 一个目录条有三部分,条目名,节点名,描述。只有节点名是必须的,但是描述可以帮助解释节点。)
使用时,把光标移动到目录条所在行键入 `C-c C-c d'。这个命令以节点名字来查找节点所在章节的标题,然后把标题做为描述插入条目中。光标放在所插入的文本的开始以便于编辑。假如当前目录条目已经有了描述,它不会把标题插入。
这个命令仅仅是写描述的一个辅助。它不能代替全部的工作。一个有用的描述并不是和节点名字完全一样的。
显示文件结构
你可以用 `C-c C-s' (`texinfo-show-structure') 命令显示 Texinfo 文件章节节构。它列出了以 `@chapter', `@section' 开头的 @ 命令所在行,以及相应的统计数字。这些行显示在另一个名叫做 `*Occur*' 的编辑窗口中。在这个窗口中,你可移动光标到其中的某一行上使用 `C-c C-c'
(`occur-mode-goto- occurrence') 跳转到 Texinfo 文件中对应位置去。
`C-c C-s'
`M-x texinfo-show-structure'
显示 `@chapter', `@section' 对应行。
`C-c C-c'
`M-x occur-mode-goto-occurrence'
对应于在 `*Occur*' 窗口中光标所在行,跳转到 Texinfo 文件中相应位置。
在使用 `texinfo-show-structure' 时,如果通过 `C-c C-c C-s'使用了前置参数,那么它不仅仅列出以 `@chapter', `section' 等 @ 命令所在行,而且将列出 `@node' 所在行。( 这是第一版 Texinfo 不带参数时的工作状态,因为`@node' 行弄乱了 `*Occur*' 窗口的显示而且不常用,所以在以后的版本改变了它的工作形式 ) 你可以通过用前置参数来检查 `@node' 所在行的 `Next',`Previous', `Up' 的指向是否正确。
当你在一个手册上工作时,也许只感兴趣于当前章节的结构。在这种情况下,你可以用命令 `C-x n n' 设置你感兴趣的部分,`texinfo-show-structure' 将只在这部分工作。想要恢复查看整个的文档,使用命令 `C-x n w '( `widen')。
对于 `texinfo-show-structure' 命令,Texinfo 模式重新设置了分页变量的值来适应章节的 @ 命令。这使得你可以使用 `C-x ]'(`forward-page')和`C-x ['(`backward-page') 命令在章节中向前或向后移动。使用 `C-x p '命令
(`narrow-to-page')限定章节。
更新节点和目录
Texinfo 模式提供了自动建立和更新目录及节点指向的命令。这些命令都归纳为 "update" 命令因为它们最常用在更新 Texinfo 文件。但是你也可以用它们在`@node'行插入 `Next', `Previous', `Up' 以及建立一个目录。
假如你没有用过这些命令,那么你必须手工输入目录和节点指向,这是一项沉闷的工作。
*Menu:
*Updating Commands:: 五个主要的更新命令。
*Updating Requirements:: 怎样组织 Texinfo 的文件结构以便于使用
更新命令。
*Other Updating Commands:: 怎样缩进描述,插入丢失的结点行,以及插
入结点。
-------------------------------------------
iamafan@linuxaid.com.cn
责任编辑:知识库管理员(2001-01-03 16:27)