PageRenderTime 70ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 1ms

/doc/Chinese/userguide-zh/userguide-zh.html

http://txt2tags.googlecode.com/
HTML | 2813 lines | 2732 code | 79 blank | 2 comment | 0 complexity | fc33aa706d608a5d3c0aff828ca50b83 MD5 | raw file
Possible License(s): GPL-2.0, GPL-3.0, WTFPL
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <HTML>
  3. <HEAD>
  4. <META NAME="generator" CONTENT="http://txt2tags.org">
  5. <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
  6. <LINK REL="stylesheet" TYPE="text/css" HREF="userguide.css">
  7. <TITLE>Txt2tags用户指南</TITLE>
  8. </HEAD>
  9. <BODY>
  10. <DIV CLASS="header" ID="header">
  11. <H1>Txt2tags用户指南</H1>
  12. <H2><I>原著Aurelio Jargas &lt;verde (at) aurelio.net&gt;</I></H2>
  13. <H2>翻译Chris Leng &lt;rookie999.ly (at) gmail.com&gt;</H2>
  14. <H3>2009-03-24</H3>
  15. </DIV>
  16. <DIV CLASS="body" ID="body">
  17. <HR NOSHADE SIZE=5>
  18. <P></P>
  19. <DIV CLASS="toc" ID="toc">
  20. <UL>
  21. <LI><A HREF="#about">关于本文</A>
  22. <LI><A HREF="#chap1-intro">1. 第一部分 初识txt2tags</A>
  23. <UL>
  24. <LI><A HREF="#1st-question">1.1. 第一个可能的问题</A>
  25. <LI><A HREF="#formats">1.2. 支持的文档结构</A>
  26. <LI><A HREF="#targets">1.3. 支持的目标文件格式</A>
  27. <LI><A HREF="#struct-support">1.4. 目标文件结构支持一览</A>
  28. <LI><A HREF="#interfaces">1.5. 三种用户接口GUI网页和命令行</A>
  29. </UL>
  30. <LI><A HREF="#install">2. 第二部分 如何开始</A>
  31. <UL>
  32. <LI><A HREF="#download-python">2.1. 下载安装Python</A>
  33. <LI><A HREF="#download-txt2tags">2.2. 下载txt2tags</A>
  34. <LI><A HREF="#install-txt2tags">2.3. 安装txt2tags</A>
  35. <LI><A HREF="#toc12">2.4. 安装编辑器的语法高亮文件</A>
  36. </UL>
  37. <LI><A HREF="#your-1st-doc">3. 第三部分 第一个文档</A>
  38. <UL>
  39. <LI><A HREF="#toc14">3.1. 先利其器</A>
  40. <LI><A HREF="#toc15">3.2. 编写文档头部</A>
  41. <LI><A HREF="#toc16">3.3. 第一次转换图形界面操作</A>
  42. <LI><A HREF="#toc17">3.4. 第一次转换命令行方式</A>
  43. <LI><A HREF="#toc18">3.5. 查看结果</A>
  44. <LI><A HREF="#toc19">3.6. 编写文档体</A>
  45. </UL>
  46. <LI><A HREF="#concepts">4. 第四部分 掌握txt2tags的结构</A>
  47. <UL>
  48. <LI><A HREF="#areas">4.1. 文档的各个部分</A>
  49. <LI><A HREF="#headers-area">4.2. 头部域</A>
  50. <LI><A HREF="#config-area">4.3. 设置域</A>
  51. <LI><A HREF="#body-area">4.4. 主体域</A>
  52. <LI><A HREF="#settings-overview">4.5. 设定</A>
  53. <LI><A HREF="#cmd-options">4.6. 命令行选项</A>
  54. <LI><A HREF="#rc">4.7. 用户配置文件RC文件</A>
  55. <LI><A HREF="#config-loading">4.8. 配置的优先级和加载顺序</A>
  56. <LI><A HREF="#include">4.9. %!include 指令</A>
  57. <LI><A HREF="#includeconf">4.10. %!includeconf 指令</A>
  58. </UL>
  59. <LI><A HREF="#marks">5. 第五部分 掌握标记</A>
  60. <UL>
  61. <LI><A HREF="#mark-headers">5.1. 头部</A>
  62. <LI><A HREF="#mark-title">5.2. 标题与编号的标题</A>
  63. <LI><A HREF="#mark-par">5.3. 段落</A>
  64. <LI><A HREF="#mark-comment">5.4. 注释</A>
  65. <LI><A HREF="#mark-beautifiers">5.5. 粗体斜体下划线和删除线</A>
  66. <LI><A HREF="#mark-monospaced">5.6. 等宽字体</A>
  67. <LI><A HREF="#mark-verbatim">5.7. 完全引用行和完全引用域</A>
  68. <LI><A HREF="#mark-seperator">5.8. 隔离行和粗隔离行</A>
  69. <LI><A HREF="#mark-link">5.9. 链接和命名链接</A>
  70. <LI><A HREF="#mark-quote">5.10. 引用</A>
  71. <LI><A HREF="#mark-list">5.11. 列表编号列表和定义列表</A>
  72. <LI><A HREF="#mark-image">5.12. 图片</A>
  73. <LI><A HREF="#mark-table">5.13. 表格</A>
  74. <LI><A HREF="#mark-raw">5.14. 原始文原文行和原文域</A>
  75. </UL>
  76. <LI><A HREF="#macro">6. 第六部分 </A>
  77. <UL>
  78. <LI><A HREF="#macro-date">6.1. %%date</A>
  79. <LI><A HREF="#macro-mtime">6.2. %%mtime</A>
  80. <LI><A HREF="#macro-infile">6.3. %%infile</A>
  81. <LI><A HREF="#macro-outfile">6.4. %%outfile</A>
  82. <LI><A HREF="#macro-toc">6.5. %%toc</A>
  83. </UL>
  84. <LI><A HREF="#settings">7. 第七部分 设定</A>
  85. <UL>
  86. <LI><A HREF="#setting-target">7.1. %!Target</A>
  87. <LI><A HREF="#setting-options">7.2. %!Options</A>
  88. <LI><A HREF="#setting-encoding">7.3. %!Encoding</A>
  89. <LI><A HREF="#setting-preproc">7.4. %!PreProc</A>
  90. <LI><A HREF="#setting-postproc">7.5. %!PostProc</A>
  91. <LI><A HREF="#setting-style">7.6. %!Style</A>
  92. <LI><A HREF="#setting-specific">7.7. 针对特定的目标格式进行设定</A>
  93. <LI><A HREF="#setting-filter-details">7.8. 关于PreProc和PostProc过滤器的一些细节</A>
  94. </UL>
  95. <LI><A HREF="#black-magic">8. 第八部分 黑魔法</A>
  96. <UL>
  97. <LI><A HREF="#postproc-multiline">8.1. 使用%!PostProc插入多行文本比如CSS规则</A>
  98. <LI><A HREF="#preproc-specific">8.2. 使用%!PreProc创建特定目标类型的内容</A>
  99. <LI><A HREF="#creating-marks">8.3. 使用%!PreProc改变txt2tags标记</A>
  100. </UL>
  101. <LI><A HREF="#history">9. 第九部分 软件历史</A>
  102. <UL>
  103. <LI><A HREF="#toc66">9.1. 1999年1月史前历史</A>
  104. <LI><A HREF="#toc67">9.2. 1999年6月依然是史前历史</A>
  105. <LI><A HREF="#toc68">9.3. 2000年8月不再是史前历史了</A>
  106. <LI><A HREF="#toc69">9.4. 2001年5月Python化和多目标格式的想法</A>
  107. <LI><A HREF="#toc70">9.5. 2001年7月0.x系列txt2tags的处女秀公开发布</A>
  108. <LI><A HREF="#toc71">9.6. 2002年9月1.x系列成长</A>
  109. <LI><A HREF="#toc72">9.7. 2004月7月2.x系列成熟</A>
  110. </UL>
  111. </UL>
  112. </DIV>
  113. <P></P>
  114. <HR NOSHADE SIZE=5>
  115. <P></P>
  116. <A NAME="about"></A>
  117. <H1>关于本文</H1>
  118. <P>
  119. 本文根据<A HREF="http://txt2tags.org/">txt2tags</A>当前版本为2.5<B>用户指南</B>英文版翻译而来读者可通过以下途径获得用户指南的英文原版
  120. </P>
  121. <UL>
  122. <LI>用户指南官方网址<A HREF="http://txt2tags.org/userguide">http://txt2tags.org/userguide</A>
  123. <LI>用户指南的PDF版本<A HREF="http://txt2tags.org/userguide/userguide.pdf">http://txt2tags.org/userguide/userguide.pdf</A>
  124. </UL>
  125. <P>
  126. 本译文依照<A HREF="http://creativecommons.org/licenses/by-nc-sa/3.0">创作共用约定署名-非商业性使用-相同方式共享3.0</A>发布
  127. </P>
  128. <HR NOSHADE SIZE=5>
  129. <P></P>
  130. <A NAME="chap1-intro"></A>
  131. <H1>1. 第一部分 初识txt2tags</H1>
  132. <P>
  133. 本章为概述介绍txt2tags程序的用途和特色
  134. </P>
  135. <A NAME="1st-question"></A>
  136. <H2>1.1. 第一个可能的问题</H2>
  137. <H3>1.1.1. txt2tags是什么</H3>
  138. <P>
  139. txt2tags是一个文本格式化和转换工具能够将带有特定标记的纯文本文件转换为支持的任意一种目标格式包括
  140. </P>
  141. <UL>
  142. <LI>HTML文档
  143. <LI>XHTML文档
  144. <LI>SGML文档
  145. <LI>LaTeX源文件
  146. <LI>Unix手册页man page
  147. <LI>MagicPoint演示文稿
  148. <LI>Wikipedia维基百科页面
  149. <LI>Google Wiki 页面
  150. <LI>DokuWiki页面
  151. <LI>MoinMoin页面
  152. <LI>PageMaker 6.0 文档
  153. <LI>纯文本文件
  154. </UL>
  155. <H3>1.1.2. 为什么使用txt2tags</H3>
  156. <P>
  157. 你会发现txt2tags十分有用如果你
  158. </P>
  159. <UL>
  160. <LI>需要将文档以不同格式发布
  161. <LI>需要以不同格式维护文档的更新
  162. <LI>撰写技术文档或者手册
  163. <LI>需要用你不熟悉的某种格式撰写文档
  164. <LI>对于某种文档格式缺少一个专门的编辑器
  165. <LI>想用一个简单的文本编辑器维护和更新你的文档
  166. </UL>
  167. <P>
  168. 而最大的诱人之处在于
  169. </P>
  170. <UL>
  171. <LI>节省时间专注于 <B>内容</B>抛开 <B>格式</B>
  172. </UL>
  173. <H3>1.1.3. 相较于其他工具txt2tags有哪些优点</H3>
  174. <TABLE>
  175. <TR>
  176. <TD><B>源文件可读性好</B></TD>
  177. <TD>txt2tags的标记非常简单使得源文件几乎是自然语言</TD>
  178. </TR>
  179. <TR>
  180. <TD><B>目标文件可读性好</B></TD>
  181. <TD>与源文件一样生成的目标文件带有缩进和较短的行长度可读性好</TD>
  182. </TR>
  183. <TR>
  184. <TD><B>一致的标记</B></TD>
  185. <TD>txt2tags的标记是独特的足以适应各种文档而不至于与文档内容产生混淆</TD>
  186. </TR>
  187. <TR>
  188. <TD><B>一致的规则</B></TD>
  189. <TD>每种标记与其对应的规则是一一对应的不存在例外特殊情形</TD>
  190. </TR>
  191. <TR>
  192. <TD><B>结构简单</B></TD>
  193. <TD>所有支持的格式都是<B>简单的</B>不带有附加选项或者复杂的修饰标记只是标记而已没有任何选项</TD>
  194. </TR>
  195. <TR>
  196. <TD><B>易于学习</B></TD>
  197. <TD>由于简单的标记和可读的源文件txt2tags的学习曲线非常的用户友好</TD>
  198. </TR>
  199. <TR>
  200. <TD><B>漂亮的示例</B></TD>
  201. <TD>无论用txt2tags编写简单还是复杂的文档包含在软件包中的<B>示例文件</B>都给出了生动实用的例子</TD>
  202. </TR>
  203. <TR>
  204. <TD><B>有用的工具</B></TD>
  205. <TD>包含于软件包中的<B>语法规则文件</B>帮助你写出没有语法错误的文档适用于vim, emacs, nano和kate</TD>
  206. </TR>
  207. <TR>
  208. <TD><B>三种用户接口</B></TD>
  209. <TD><I>Tk</I>编写的<B>图形接口</B>可供远程和内部网使用的<B>网页接口</B>以及共高级用户和脚本使用的<B>命令行接口</B></TD>
  210. </TR>
  211. <TR>
  212. <TD><B>脚本</B></TD>
  213. <TD>有经验的用户能够通过完全的命令行模式进行<B>自动任务</B>以及对转换后的文件进行<B>后编辑</B></TD>
  214. </TR>
  215. <TR>
  216. <TD><B>下载运行和跨平台</B></TD>
  217. <TD>txt2tags只是一个简单的<B>Python 脚本</B>毋需编译或下载额外的模块因此在各种*NIXLinuxWindows和Macintosh主机上均能完美运行</TD>
  218. </TR>
  219. <TR>
  220. <TD><B>时常更新</B></TD>
  221. <TD>活跃的邮件列表有用户提供修正和改进作者本人在工作和业余也在使用txt2tags因此开发不会无故终止</TD>
  222. </TR>
  223. </TABLE>
  224. <H3>1.1.4. 我需要为此付费吗</H3>
  225. <TABLE ALIGN="center" BORDER="1">
  226. <TR>
  227. <TH>当然不需要</TH>
  228. </TR>
  229. </TABLE>
  230. <P>
  231. txt2tags在GPL许可证下发布并且完全免费
  232. </P>
  233. <A NAME="formats"></A>
  234. <H2>1.2. 支持的文档结构</H2>
  235. <P>
  236. 以下列出了txt2tags支持的文档结构
  237. </P>
  238. <UL>
  239. <LI>头部文档标题作者日期
  240. <LI>章节标题带有/不带编号
  241. <LI>段落
  242. <LI>字体美化
  243. <UL>
  244. <LI>粗体
  245. <LI>斜体
  246. <LI>下划线
  247. <LI>删除线
  248. </UL>
  249. <LI>等宽字体完全引用
  250. <UL>
  251. <LI>段落内的等宽字体
  252. <LI>等宽的行
  253. <LI>等宽的区域多行
  254. </UL>
  255. <LI>引用
  256. <LI>链接
  257. <UL>
  258. <LI>URL/Internet链接
  259. <LI>e-mail链接
  260. <LI>本地链接
  261. <LI>命名的链接
  262. </UL>
  263. <LI>列表
  264. <UL>
  265. <LI>以符号引导的列表
  266. <LI>编号的列表
  267. <LI>定义列表
  268. </UL>
  269. <LI>水平分隔线
  270. <LI>图片智能对齐
  271. <LI>表格/不带边框智能对齐列贯穿
  272. <LI>针对原文域的特殊标记不解析
  273. <LI>对当前日期的特殊宏定义能灵活的改变格式
  274. <LI>注释作者备注TODOFIXME
  275. </UL>
  276. <A NAME="targets"></A>
  277. <H2>1.3. 支持的目标文件格式</H2>
  278. <DL>
  279. <DT><B>HTML</B></DT><DD>
  280. HTML是众所周知的格式提示Internet
  281. <P></P>
  282. Txt2tags能生成干净漂亮源文件可读的HTML文档不使用JavaScript框架或是其他无效的简洁的技术文档所不需要的格式化技术但是可以使用独立的CSS文件txt2tags生成的代码符合<I>HTML 4.0 Transitional</I>标准
  283. <P></P>
  284. 自2.0版起txt2tags生成的HTML代码100%通过<A HREF="validator.w3.org">w3c validator</A>的校验
  285. <P></P>
  286. <DT><B>XHTML</B></DT><DD>
  287. 新一代的HTML具有更严格的语法所有的标记都必须闭合这使得代码更易理解和解析大体上来说可以将其看做HTMLTxt2tags生成的代码符合<I>XHTML 1.0 Transitional</I>标准
  288. <P></P>
  289. 自2.0版起txt2tags生成的XHTML代码100%通过<A HREF="validator.w3.org">w3c validator</A>的校验
  290. <P></P>
  291. <DT><B>SGML</B></DT><DD>
  292. 格式转换软件<A HREF="http://www.sgmltools.org">SGML工具</A>的通用格式单一的SGML文件能转换为HTMLPDFPSinfoLaTeXLyxrtf以及XML格式的文档SGML2* 工具还能自动生成目录表以及按照章节将文件分割为子页sgml2html
  293. <P></P>
  294. Txt2tags生成的SGML文件为Linux系统文档格式通过SGML2*工具能够直接转换而毋需任何额外的目录文件或是SGML那些恼人的要求
  295. <P></P>
  296. <DT><B>LATEX</B></DT><DD>
  297. 超出你想象的强大格式学术论文的通用格式用它能生成整本的书复杂的公式以及任何复杂的文字格式然而如果你打算手写那些标记就准备掉头发吧
  298. <P></P>
  299. Txt2tags将为你处理所有的细节和例外情形完成能够直接使用的LaTeX文档你只需考虑文字内容
  300. <P></P>
  301. <DT><B>LOUT</B></DT><DD>
  302. 与LaTeX非常相似但是以@代替\作为命令引导符同时尽量避免使用括号一切皆对象的处理方式使得标记更加健壮
  303. <P></P>
  304. Txt2tags能生成可以直接使用的文件通过lout命令即可转换为PDF或PS文件
  305. <P></P>
  306. <DT><B>MAN</B></DT><DD>
  307. UNIX手册页
  308. <P></P>
  309. 文档格式产生消亡来来去去UNIX手册页却存活多年始终坚挺
  310. <P></P>
  311. 有各种工具可以生成手册页文档但是txt2tags自有其优势一个源文件多种产出物因此手册页的内容还能转换为HTMLMagicPoint演示文稿等等
  312. <P></P>
  313. <DT><B>MGP</B></DT><DD>
  314. <A HREF="http://www.mew.org/mgp">MagicPoint</A>是一个非常方便的幻灯片工具就如同Microsoft PowerPoint它使用标记语言来定义每一屏显示因此你可以使用 vi/emacs/记事本 这样的文本编辑器来完成复杂的幻灯片
  315. <P></P>
  316. Txt2tags为你完成所有被ISO-8859标准所支持的字体和外观的定义生成的.mgp文件能够直接使用
  317. <P></P>
  318. <B>HOTSPOT 1:</B> txt2tags在生成的.mgp文件中使用XFree86 Type1字体因此你的幻灯片毋需额外配合TrueType字体
  319. <P></P>
  320. <B>HOTSPOT 2:</B> 字体颜色的定义简洁即使在只有简陋调色板的系统中比如<CODE>startx -- -bpp 8</CODE>幻灯片依然美观
  321. <P></P>
  322. 你需要做的只是转换然后使用毋需任何修复或是其他额外的工作
  323. <P></P>
  324. <DT><B>WIKI</B></DT><DD>
  325. 想必你一定听说过<A HREF="wikipedia.org">维基百科(Wikipedia)</A>现在你不必另外学习一种新的标记语法txt2tags将为你把标记文本转换为维基百科的格式
  326. <P></P>
  327. <DT><B>GWIKI</B></DT><DD>
  328. 使你能轻松的将项目文档粘贴到<A HREF="code.google.com">Google Code</A> Wiki
  329. <P></P>
  330. <DT><B>DOKU</B></DT><DD>
  331. <A HREF="http://wiki.splitbrain.org/wiki:dokuwiki">DokuWiki</A>是一种遵从标准并且易于使用的Wiki被设计来创建各种类型的文档其目标群体包括开发团队工作组以及小型公司其语法简洁而强大确保数据文件脱离Wiki仍然保有可读性同时简化结构化文本的创建所有的数据都以纯文本文件格式存储毋需数据库
  332. <P></P>
  333. <DT><B>MOIN</B></DT><DD>
  334. <A HREF="moinmo.in">MoinMoin</A>是什么它是一种<A HREF="http://www.c2.com/cgi/wiki">WikiWiki</A>
  335. <P></P>
  336. Moin的语法是有些乏味儿的你必须不断的<CODE>{{{'''''adding braces and quotes'''''}}}</CODE>Txt2tags为你带来简单的标记和统一的解决方案一个源文件多种产出物
  337. <P></P>
  338. <DT><B>PM6</B></DT><DD>
  339. 我估猜你不会知道这是 Adobe PageMaker 6.0 独有的标记语言它包含了样式颜色表美化以及绝大部分PageMaker中的鼠标点击特性你可以通过Import Tagged text菜单项来使用它从记录上来看它具有类HTML的标记格式
  340. <P></P>
  341. Txt2tags能生成所有的标记并且定义好丰富而有效的导言以设置段落样式和格式这个部分通常是让人头疼的<B>特别提醒</B>不能有断行每个段落必须是单独一行
  342. <P></P>
  343. 作者按<I>笔者的<A HREF="http://guia-er.sf.net">regular expression's book</A>》这本书的葡萄牙语版就是用VI编辑,再用txt2tags转换为PageMaker格式然后付印的。</I>)
  344. <P></P>
  345. <DT><B>TXT</B></DT><DD>
  346. 纯文本唯一的真实格式
  347. <P></P>
  348. 尽管txt2tags的标记非常直观而且不显眼你仍然可以选择移除它们只需将文件转换为纯文本即可
  349. <P></P>
  350. 在源文件中标题添加下划线而文本则是左对齐的
  351. </DL>
  352. <A NAME="struct-support"></A>
  353. <H2>1.4. 目标文件结构支持一览</H2>
  354. <TABLE ALIGN="center" BORDER="1">
  355. <TR>
  356. <TH>结构</TH>
  357. <TH>html</TH>
  358. <TH>xhtml</TH>
  359. <TH>sgml</TH>
  360. <TH>tex</TH>
  361. <TH>lout</TH>
  362. <TH>man</TH>
  363. <TH>mgp</TH>
  364. <TH>wiki</TH>
  365. <TH>gwiki</TH>
  366. <TH>doku</TH>
  367. <TH>moin</TH>
  368. <TH>pm6</TH>
  369. <TH>txt</TH>
  370. </TR>
  371. <TR>
  372. <TD>头部</TD>
  373. <TD ALIGN="center">Y</TD>
  374. <TD ALIGN="center">Y</TD>
  375. <TD ALIGN="center">Y</TD>
  376. <TD ALIGN="center">Y</TD>
  377. <TD ALIGN="center">Y</TD>
  378. <TD ALIGN="center">Y</TD>
  379. <TD ALIGN="center">Y</TD>
  380. <TD ALIGN="center">-</TD>
  381. <TD ALIGN="center">-</TD>
  382. <TD ALIGN="center">-</TD>
  383. <TD ALIGN="center">-</TD>
  384. <TD ALIGN="center">N</TD>
  385. <TD ALIGN="center">Y</TD>
  386. </TR>
  387. <TR>
  388. <TD>章节标题</TD>
  389. <TD ALIGN="center">Y</TD>
  390. <TD ALIGN="center">Y</TD>
  391. <TD ALIGN="center">Y</TD>
  392. <TD ALIGN="center">Y</TD>
  393. <TD ALIGN="center">Y</TD>
  394. <TD ALIGN="center">Y</TD>
  395. <TD ALIGN="center">Y</TD>
  396. <TD ALIGN="center">Y</TD>
  397. <TD ALIGN="center">Y</TD>
  398. <TD ALIGN="center">Y</TD>
  399. <TD ALIGN="center">Y</TD>
  400. <TD ALIGN="center">Y</TD>
  401. <TD ALIGN="center">Y</TD>
  402. </TR>
  403. <TR>
  404. <TD>段落</TD>
  405. <TD ALIGN="center">Y</TD>
  406. <TD ALIGN="center">Y</TD>
  407. <TD ALIGN="center">Y</TD>
  408. <TD ALIGN="center">Y</TD>
  409. <TD ALIGN="center">Y</TD>
  410. <TD ALIGN="center">Y</TD>
  411. <TD ALIGN="center">Y</TD>
  412. <TD ALIGN="center">Y</TD>
  413. <TD ALIGN="center">Y</TD>
  414. <TD ALIGN="center">Y</TD>
  415. <TD ALIGN="center">Y</TD>
  416. <TD ALIGN="center">Y</TD>
  417. <TD ALIGN="center">Y</TD>
  418. </TR>
  419. <TR>
  420. <TD>粗体字</TD>
  421. <TD ALIGN="center">Y</TD>
  422. <TD ALIGN="center">Y</TD>
  423. <TD ALIGN="center">Y</TD>
  424. <TD ALIGN="center">Y</TD>
  425. <TD ALIGN="center">Y</TD>
  426. <TD ALIGN="center">Y</TD>
  427. <TD ALIGN="center">Y</TD>
  428. <TD ALIGN="center">Y</TD>
  429. <TD ALIGN="center">Y</TD>
  430. <TD ALIGN="center">Y</TD>
  431. <TD ALIGN="center">Y</TD>
  432. <TD ALIGN="center">Y</TD>
  433. <TD ALIGN="center">-</TD>
  434. </TR>
  435. <TR>
  436. <TD>斜体字</TD>
  437. <TD ALIGN="center">Y</TD>
  438. <TD ALIGN="center">Y</TD>
  439. <TD ALIGN="center">Y</TD>
  440. <TD ALIGN="center">Y</TD>
  441. <TD ALIGN="center">Y</TD>
  442. <TD ALIGN="center">Y</TD>
  443. <TD ALIGN="center">Y</TD>
  444. <TD ALIGN="center">Y</TD>
  445. <TD ALIGN="center">Y</TD>
  446. <TD ALIGN="center">Y</TD>
  447. <TD ALIGN="center">Y</TD>
  448. <TD ALIGN="center">Y</TD>
  449. <TD ALIGN="center">-</TD>
  450. </TR>
  451. <TR>
  452. <TD>下划线字体</TD>
  453. <TD ALIGN="center">Y</TD>
  454. <TD ALIGN="center">Y</TD>
  455. <TD ALIGN="center">-</TD>
  456. <TD ALIGN="center">Y</TD>
  457. <TD ALIGN="center">Y</TD>
  458. <TD ALIGN="center">-</TD>
  459. <TD ALIGN="center">Y</TD>
  460. <TD ALIGN="center">Y</TD>
  461. <TD ALIGN="center">-</TD>
  462. <TD ALIGN="center">Y</TD>
  463. <TD ALIGN="center">Y</TD>
  464. <TD ALIGN="center">Y</TD>
  465. <TD ALIGN="center">-</TD>
  466. </TR>
  467. <TR>
  468. <TD>删除线字体</TD>
  469. <TD ALIGN="center">Y</TD>
  470. <TD ALIGN="center">Y</TD>
  471. <TD ALIGN="center">N</TD>
  472. <TD ALIGN="center">Y</TD>
  473. <TD ALIGN="center">-</TD>
  474. <TD ALIGN="center">-</TD>
  475. <TD ALIGN="center">-</TD>
  476. <TD ALIGN="center">Y</TD>
  477. <TD ALIGN="center">Y</TD>
  478. <TD ALIGN="center">Y</TD>
  479. <TD ALIGN="center">Y</TD>
  480. <TD ALIGN="center">N</TD>
  481. <TD ALIGN="center">-</TD>
  482. </TR>
  483. <TR>
  484. <TD>等宽字体</TD>
  485. <TD ALIGN="center">Y</TD>
  486. <TD ALIGN="center">Y</TD>
  487. <TD ALIGN="center">Y</TD>
  488. <TD ALIGN="center">Y</TD>
  489. <TD ALIGN="center">Y</TD>
  490. <TD ALIGN="center">-</TD>
  491. <TD ALIGN="center">Y</TD>
  492. <TD ALIGN="center">Y</TD>
  493. <TD ALIGN="center">Y</TD>
  494. <TD ALIGN="center">Y</TD>
  495. <TD ALIGN="center">Y</TD>
  496. <TD ALIGN="center">Y</TD>
  497. <TD ALIGN="center">-</TD>
  498. </TR>
  499. <TR>
  500. <TD>未格式化行</TD>
  501. <TD ALIGN="center">Y</TD>
  502. <TD ALIGN="center">Y</TD>
  503. <TD ALIGN="center">Y</TD>
  504. <TD ALIGN="center">Y</TD>
  505. <TD ALIGN="center">Y</TD>
  506. <TD ALIGN="center">Y</TD>
  507. <TD ALIGN="center">Y</TD>
  508. <TD ALIGN="center">Y</TD>
  509. <TD ALIGN="center">Y</TD>
  510. <TD ALIGN="center">Y</TD>
  511. <TD ALIGN="center">Y</TD>
  512. <TD ALIGN="center">Y</TD>
  513. <TD ALIGN="center">-</TD>
  514. </TR>
  515. <TR>
  516. <TD>未格式化区域</TD>
  517. <TD ALIGN="center">Y</TD>
  518. <TD ALIGN="center">Y</TD>
  519. <TD ALIGN="center">Y</TD>
  520. <TD ALIGN="center">Y</TD>
  521. <TD ALIGN="center">Y</TD>
  522. <TD ALIGN="center">Y</TD>
  523. <TD ALIGN="center">Y</TD>
  524. <TD ALIGN="center">Y</TD>
  525. <TD ALIGN="center">Y</TD>
  526. <TD ALIGN="center">Y</TD>
  527. <TD ALIGN="center">Y</TD>
  528. <TD ALIGN="center">Y</TD>
  529. <TD ALIGN="center">-</TD>
  530. </TR>
  531. <TR>
  532. <TD>引用区域</TD>
  533. <TD ALIGN="center">Y</TD>
  534. <TD ALIGN="center">Y</TD>
  535. <TD ALIGN="center">Y</TD>
  536. <TD ALIGN="center">Y</TD>
  537. <TD ALIGN="center">Y</TD>
  538. <TD ALIGN="center">Y</TD>
  539. <TD ALIGN="center">Y</TD>
  540. <TD ALIGN="center">Y</TD>
  541. <TD ALIGN="center">Y</TD>
  542. <TD ALIGN="center">Y</TD>
  543. <TD ALIGN="center">Y</TD>
  544. <TD ALIGN="center">Y</TD>
  545. <TD ALIGN="center">Y</TD>
  546. </TR>
  547. <TR>
  548. <TD>超链接</TD>
  549. <TD ALIGN="center">Y</TD>
  550. <TD ALIGN="center">Y</TD>
  551. <TD ALIGN="center">Y</TD>
  552. <TD ALIGN="center">-</TD>
  553. <TD ALIGN="center">-</TD>
  554. <TD ALIGN="center">-</TD>
  555. <TD ALIGN="center">-</TD>
  556. <TD ALIGN="center">Y</TD>
  557. <TD ALIGN="center">Y</TD>
  558. <TD ALIGN="center">Y</TD>
  559. <TD ALIGN="center">Y</TD>
  560. <TD ALIGN="center">-</TD>
  561. <TD ALIGN="center">-</TD>
  562. </TR>
  563. <TR>
  564. <TD>e-mail链接</TD>
  565. <TD ALIGN="center">Y</TD>
  566. <TD ALIGN="center">Y</TD>
  567. <TD ALIGN="center">Y</TD>
  568. <TD ALIGN="center">-</TD>
  569. <TD ALIGN="center">-</TD>
  570. <TD ALIGN="center">-</TD>
  571. <TD ALIGN="center">-</TD>
  572. <TD ALIGN="center">Y</TD>
  573. <TD ALIGN="center">Y</TD>
  574. <TD ALIGN="center">Y</TD>
  575. <TD ALIGN="center">Y</TD>
  576. <TD ALIGN="center">-</TD>
  577. <TD ALIGN="center">-</TD>
  578. </TR>
  579. <TR>
  580. <TD>本机链接</TD>
  581. <TD ALIGN="center">Y</TD>
  582. <TD ALIGN="center">Y</TD>
  583. <TD ALIGN="center">Y</TD>
  584. <TD ALIGN="center">N</TD>
  585. <TD ALIGN="center">N</TD>
  586. <TD ALIGN="center">-</TD>
  587. <TD ALIGN="center">-</TD>
  588. <TD ALIGN="center">N</TD>
  589. <TD ALIGN="center">N</TD>
  590. <TD ALIGN="center">Y</TD>
  591. <TD ALIGN="center">Y</TD>
  592. <TD ALIGN="center">-</TD>
  593. <TD ALIGN="center">-</TD>
  594. </TR>
  595. <TR>
  596. <TD>命名链接</TD>
  597. <TD ALIGN="center">Y</TD>
  598. <TD ALIGN="center">Y</TD>
  599. <TD ALIGN="center">Y</TD>
  600. <TD ALIGN="center">-</TD>
  601. <TD ALIGN="center">-</TD>
  602. <TD ALIGN="center">-</TD>
  603. <TD ALIGN="center">-</TD>
  604. <TD ALIGN="center">Y</TD>
  605. <TD ALIGN="center">Y</TD>
  606. <TD ALIGN="center">Y</TD>
  607. <TD ALIGN="center">Y</TD>
  608. <TD ALIGN="center">-</TD>
  609. <TD ALIGN="center">-</TD>
  610. </TR>
  611. <TR>
  612. <TD>列表</TD>
  613. <TD ALIGN="center">Y</TD>
  614. <TD ALIGN="center">Y</TD>
  615. <TD ALIGN="center">Y</TD>
  616. <TD ALIGN="center">Y</TD>
  617. <TD ALIGN="center">Y</TD>
  618. <TD ALIGN="center">Y</TD>
  619. <TD ALIGN="center">Y</TD>
  620. <TD ALIGN="center">Y</TD>
  621. <TD ALIGN="center">Y</TD>
  622. <TD ALIGN="center">Y</TD>
  623. <TD ALIGN="center">Y</TD>
  624. <TD ALIGN="center">Y</TD>
  625. <TD ALIGN="center">Y</TD>
  626. </TR>
  627. <TR>
  628. <TD>计数列表</TD>
  629. <TD ALIGN="center">Y</TD>
  630. <TD ALIGN="center">Y</TD>
  631. <TD ALIGN="center">Y</TD>
  632. <TD ALIGN="center">Y</TD>
  633. <TD ALIGN="center">Y</TD>
  634. <TD ALIGN="center">Y</TD>
  635. <TD ALIGN="center">Y</TD>
  636. <TD ALIGN="center">Y</TD>
  637. <TD ALIGN="center">Y</TD>
  638. <TD ALIGN="center">Y</TD>
  639. <TD ALIGN="center">Y</TD>
  640. <TD ALIGN="center">Y</TD>
  641. <TD ALIGN="center">Y</TD>
  642. </TR>
  643. <TR>
  644. <TD>定义列表</TD>
  645. <TD ALIGN="center">Y</TD>
  646. <TD ALIGN="center">Y</TD>
  647. <TD ALIGN="center">Y</TD>
  648. <TD ALIGN="center">Y</TD>
  649. <TD ALIGN="center">Y</TD>
  650. <TD ALIGN="center">Y</TD>
  651. <TD ALIGN="center">N</TD>
  652. <TD ALIGN="center">Y</TD>
  653. <TD ALIGN="center">-</TD>
  654. <TD ALIGN="center">-</TD>
  655. <TD ALIGN="center">Y</TD>
  656. <TD ALIGN="center">N</TD>
  657. <TD ALIGN="center">Y</TD>
  658. </TR>
  659. <TR>
  660. <TD>水平线</TD>
  661. <TD ALIGN="center">Y</TD>
  662. <TD ALIGN="center">Y</TD>
  663. <TD ALIGN="center">-</TD>
  664. <TD ALIGN="center">Y</TD>
  665. <TD ALIGN="center">Y</TD>
  666. <TD ALIGN="center">-</TD>
  667. <TD ALIGN="center">Y</TD>
  668. <TD ALIGN="center">Y</TD>
  669. <TD ALIGN="center">-</TD>
  670. <TD ALIGN="center">Y</TD>
  671. <TD ALIGN="center">Y</TD>
  672. <TD ALIGN="center">N</TD>
  673. <TD ALIGN="center">Y</TD>
  674. </TR>
  675. <TR>
  676. <TD>图片</TD>
  677. <TD ALIGN="center">Y</TD>
  678. <TD ALIGN="center">Y</TD>
  679. <TD ALIGN="center">Y</TD>
  680. <TD ALIGN="center">Y</TD>
  681. <TD ALIGN="center">Y</TD>
  682. <TD ALIGN="center">-</TD>
  683. <TD ALIGN="center">Y</TD>
  684. <TD ALIGN="center">Y</TD>
  685. <TD ALIGN="center">Y</TD>
  686. <TD ALIGN="center">Y</TD>
  687. <TD ALIGN="center">Y</TD>
  688. <TD ALIGN="center">N</TD>
  689. <TD ALIGN="center">-</TD>
  690. </TR>
  691. <TR>
  692. <TD>表格</TD>
  693. <TD ALIGN="center">Y</TD>
  694. <TD ALIGN="center">Y</TD>
  695. <TD ALIGN="center">Y</TD>
  696. <TD ALIGN="center">Y</TD>
  697. <TD ALIGN="center">N</TD>
  698. <TD ALIGN="center">Y</TD>
  699. <TD ALIGN="center">N</TD>
  700. <TD ALIGN="center">Y</TD>
  701. <TD ALIGN="center">Y</TD>
  702. <TD ALIGN="center">Y</TD>
  703. <TD ALIGN="center">Y</TD>
  704. <TD ALIGN="center">N</TD>
  705. <TD ALIGN="center">N</TD>
  706. </TR>
  707. <TR>
  708. <TH>附加结构</TH>
  709. <TH>html</TH>
  710. <TH>xhtml</TH>
  711. <TH>sgml</TH>
  712. <TH>tex</TH>
  713. <TH>lout</TH>
  714. <TH>man</TH>
  715. <TH>mgp</TH>
  716. <TH>wiki</TH>
  717. <TH>gwiki</TH>
  718. <TH>doku</TH>
  719. <TH>moin</TH>
  720. <TH>pm6</TH>
  721. <TH>txt</TH>
  722. </TR>
  723. <TR>
  724. <TD>图片对齐</TD>
  725. <TD ALIGN="center">Y</TD>
  726. <TD ALIGN="center">Y</TD>
  727. <TD ALIGN="center">N</TD>
  728. <TD ALIGN="center">N</TD>
  729. <TD ALIGN="center">Y</TD>
  730. <TD ALIGN="center">-</TD>
  731. <TD ALIGN="center">Y</TD>
  732. <TD ALIGN="center">Y</TD>
  733. <TD ALIGN="center">-</TD>
  734. <TD ALIGN="center">Y</TD>
  735. <TD ALIGN="center">N</TD>
  736. <TD ALIGN="center">N</TD>
  737. <TD ALIGN="center">-</TD>
  738. </TR>
  739. <TR>
  740. <TD>单元格对齐</TD>
  741. <TD ALIGN="center">Y</TD>
  742. <TD ALIGN="center">Y</TD>
  743. <TD ALIGN="center">Y</TD>
  744. <TD ALIGN="center">Y</TD>
  745. <TD ALIGN="center">N</TD>
  746. <TD ALIGN="center">Y</TD>
  747. <TD ALIGN="center">N</TD>
  748. <TD ALIGN="center">N</TD>
  749. <TD ALIGN="center">-</TD>
  750. <TD ALIGN="center">-</TD>
  751. <TD ALIGN="center">Y</TD>
  752. <TD ALIGN="center">N</TD>
  753. <TD ALIGN="center">N</TD>
  754. </TR>
  755. <TR>
  756. <TD>跨列单元格</TD>
  757. <TD ALIGN="center">Y</TD>
  758. <TD ALIGN="center">Y</TD>
  759. <TD ALIGN="center">N</TD>
  760. <TD ALIGN="center">N</TD>
  761. <TD ALIGN="center">N</TD>
  762. <TD ALIGN="center">N</TD>
  763. <TD ALIGN="center">N</TD>
  764. <TD ALIGN="center">N</TD>
  765. <TD ALIGN="center">-</TD>
  766. <TD ALIGN="center">-</TD>
  767. <TD ALIGN="center">N</TD>
  768. <TD ALIGN="center">N</TD>
  769. <TD ALIGN="center">N</TD>
  770. </TR>
  771. </TABLE>
  772. <TABLE ALIGN="center">
  773. <TR>
  774. <TH></TH>
  775. <TH>图例</TH>
  776. </TR>
  777. <TR>
  778. <TD><B>Y</B></TD>
  779. <TD>支持</TD>
  780. </TR>
  781. <TR>
  782. <TD><B>N</B></TD>
  783. <TD>不支持后续版本可能会支持</TD>
  784. </TR>
  785. <TR>
  786. <TD><B>-</B></TD>
  787. <TD>不支持在该目标格式中不存在</TD>
  788. </TR>
  789. </TABLE>
  790. <A NAME="interfaces"></A>
  791. <H2>1.5. 三种用户接口GUI网页和命令行</H2>
  792. <P>
  793. 不同用户的需求和使用环境不同txt2tags相应的也具有灵活的执行方式
  794. </P>
  795. <P>
  796. 程序有三种用户接口每一种各有其目标和特性
  797. </P>
  798. <UL>
  799. <LI><B>图形用户接口GUI</B>使用Tk写成支持窗口环境和鼠标点击
  800. <LI><B>网页</B>使用PHP开发支持通过浏览器运行txt2tags而毋需安装任何客户端程序
  801. <LI><B>命令行</B>程序的核心使用Python开发所有的特性都包含于命令行选项之中
  802. </UL>
  803. <A NAME="tk-interface"></A>
  804. <H3>1.5.1. 基于Tk的图形用户接口</H3>
  805. <P>
  806. 自1.0版本开始txt2tags就有一个能工作于LinuxWindowsMac以及其他操作系统之上的图形用户接口
  807. </P>
  808. <P>
  809. 程序能自动检测你的系统能否显示图形如果可以则不带任何参数的命令调用时运行图形接口你也可以通过命令行参数 <CODE>--gui</CODE> 强制运行图形接口当某些资源缺失时程序给出错误信息
  810. </P>
  811. <BLOCKQUOTE>
  812. 提示Tkinter是必须的因为Python的标准发布总是包含它实际上
  813. 你的系统中应该已经有了
  814. </BLOCKQUOTE>
  815. <P></P>
  816. <P>
  817. 图形界面的使用相当的简洁和直观
  818. </P>
  819. <center><IMG ALIGN="middle" SRC="./img/gui.png" BORDER="0" ALT=""></center>
  820. <OL>
  821. <LI>加载本机的.t2t文件其内部定义的选项将自动识别
  822. <LI>如果目标格式为空必须在此处指定
  823. <LI>此外还有一些选项可以附加选择但并非必须
  824. <LI>最后点击Convert!按钮
  825. <P></P>
  826. 一个有用的选项是<I>Dump to screen</I>输出结果不会写到文件而是显示于屏幕上以便检查确认无误之后再输出到文件存储
  827. <P></P>
  828. 界面的默认颜色可以通过修改 <CODE>~/.txt2tagsrc</CODE> 文件的 <CODE>%!guicolors</CODE> 设定来更改比如
  829. <P></P>
  830. <PRE>
  831. % set my own colors for the graphical interface (bg1, fg1, bg2, fg2)
  832. %!guicolors: blue white brown yellow
  833. </PRE>
  834. </OL>
  835. <H3>1.5.2. 在线方式</H3>
  836. <P>
  837. 基于Web的界面可以通过互联网地址<A HREF="http://txt2tags.org/online.php">http://txt2tags.org/online.php</A>来访问,你可以在下载之前先试用txt2tags。
  838. </P>
  839. <center><IMG ALIGN="middle" SRC="./img/web.png" BORDER="0" ALT=""></center>
  840. <P>
  841. Web接口也可以部署于本地局域网intranet免去在每台机器上安装txt2tags的麻烦
  842. </P>
  843. <H3>1.5.3. 命令行</H3>
  844. <P>
  845. 对于有经验的命令行用户来说<CODE>--help</CODE> 选项提供的帮助信息应该足够了
  846. </P>
  847. <PRE>
  848. Usage: txt2tags [OPTIONS] [infile.t2t ...]
  849. -t, --target=TYPE set target document type. currently supported:
  850. html, xhtml, sgml, tex, lout, man, mgp, wiki,
  851. gwiki, doku, moin, pm6, txt
  852. -i, --infile=FILE set FILE as the input file name ('-' for STDIN)
  853. -o, --outfile=FILE set FILE as the output file name ('-' for STDOUT)
  854. -n, --enum-title enumerate all title lines as 1, 1.1, 1.1.1, etc
  855. -H, --no-headers suppress header, title and footer contents
  856. --headers show header, title and footer contents (default ON)
  857. --encoding set target file encoding (utf-8, iso-8859-1, etc)
  858. --style=FILE use FILE as the document style (like HTML CSS)
  859. --css-sugar insert CSS-friendly tags for HTML and XHTML targets
  860. --css-inside insert CSS file contents inside HTML/XHTML headers
  861. --mask-email hide email from spam robots. x@y.z turns &lt;x (a) y z&gt;
  862. --toc add TOC (Table of Contents) to target document
  863. --toc-only print document TOC and exit
  864. --toc-level=N set maximum TOC level (depth) to N
  865. --rc read user config file ~/.txt2tagsrc (default ON)
  866. --gui invoke Graphical Tk Interface
  867. -q, --quiet quiet mode, suppress all output (except errors)
  868. -v, --verbose print informative messages during conversion
  869. -h, --help print this help information and exit
  870. -V, --version print program version and exit
  871. --dump-config print all the config found and exit
  872. Turn OFF options:
  873. --no-outfile, --no-infile, --no-style, --no-encoding, --no-headers
  874. --no-toc, --no-toc-only, --no-mask-email, --no-enum-title, --no-rc
  875. --no-css-sugar, --no-css-inside, --no-quiet
  876. Example:
  877. txt2tags -t html --toc myfile.t2t
  878. By default, converted output is saved to 'infile.&lt;target&gt;'.
  879. Use --outfile to force an output file name.
  880. If input file is '-', reads from STDIN.
  881. If output file is '-', dumps output to STDOUT.
  882. </PRE>
  883. <P></P>
  884. <H4>1.5.3.1. 示例</H4>
  885. <P>
  886. 假设你已经编写好一个正确标记的文件 <CODE>file.t2t</CODE>现在我们来尝试一些转换
  887. </P>
  888. <TABLE>
  889. <TR>
  890. <TD><B>转换为HTML</B></TD>
  891. <TD><CODE>$ txt2tags -t html file.t2t</CODE></TD>
  892. </TR>
  893. <TR>
  894. <TD><B>转换为HTML使用输出重定向</B></TD>
  895. <TD><CODE>$ txt2tags -t html -o - file.t2t &gt; file.html</CODE></TD>
  896. </TR>
  897. <TR>
  898. <TD></TD>
  899. <TD>.</TD>
  900. </TR>
  901. <TR>
  902. <TD><B>包含目录表</B></TD>
  903. <TD><CODE>$ txt2tags -t html --toc file.t2t</CODE></TD>
  904. </TR>
  905. <TR>
  906. <TD><B>带数字编号的目录表</B></TD>
  907. <TD><CODE>$ txt2tags -t html --toc --enum-title file.t2t</CODE></TD>
  908. </TR>
  909. <TR>
  910. <TD></TD>
  911. <TD>.</TD>
  912. </TR>
  913. <TR>
  914. <TD><B>内容概览</B></TD>
  915. <TD><CODE>$ txt2tags --toc-only file.t2t</CODE></TD>
  916. </TR>
  917. <TR>
  918. <TD><B>编号的概览</B></TD>
  919. <TD><CODE>$ txt2tags --toc-only --enum-title file.t2t</CODE></TD>
  920. </TR>
  921. <TR>
  922. <TD></TD>
  923. <TD>.</TD>
  924. </TR>
  925. <TR>
  926. <TD><B>从标准输入读取一行</B></TD>
  927. <TD><CODE>$ echo -e "\n**bold**" | txt2tags -t html --no-headers -</CODE></TD>
  928. </TR>
  929. <TR>
  930. <TD><B>Email地址识别测试</B></TD>
  931. <TD><CODE>$ echo -e "\njohn.wayne@farwest.com" | txt2tags -t txt --mask-email --no-headers -</CODE></TD>
  932. </TR>
  933. <TR>
  934. <TD><B>转换后编辑</B></TD>
  935. <TD><CODE>$ txt2tags -t html -o- file.t2t | sed "s/&lt;BODY .*/&lt;BODY BGCOLOR=green&gt;/" &gt; file.html</CODE></TD>
  936. </TR>
  937. </TABLE>
  938. <BLOCKQUOTE>
  939. 提示从1.6版本起前处理和后处理可以通过 <CODE>%!preproc</CODE>
  940. <CODE>%!postproc</CODE> 宏来完成
  941. </BLOCKQUOTE>
  942. <P></P>
  943. <HR NOSHADE SIZE=1>
  944. <P></P>
  945. <A NAME="install"></A>
  946. <H1>2. 第二部分 如何开始</H1>
  947. <P>
  948. 下载然后运行一切就是这么简单
  949. </P>
  950. <A NAME="download-python"></A>
  951. <H2>2.1. 下载安装Python</H2>
  952. <P>
  953. 首先你必须下载安装Python解释器如果你的系统已经安装过Python请跳过本节
  954. </P>
  955. <P>
  956. Python是一种极好的编程语言能够跨平台的在WindowsLinuxUNIXMacintosh以及其他的操作系统上运行你可以从<A HREF="http://www.python.org/">Python主页</A>找到安装文件以及安装指南Txt2tags运行要求Python 2.0以后的版本
  957. </P>
  958. <P>
  959. 如果你不确定是否已经安装过Python请打开一个控制台ttyxtermMSDOS输入命令 <CODE>python</CODE>如果Python并未安装系统会给出错误信息
  960. </P>
  961. <A NAME="download-txt2tags"></A>
  962. <H2>2.2. 下载txt2tags</H2>
  963. <P>
  964. Txt2tags的项目主页是<A HREF="http://txt2tags.org">http://txt2tags.org</A>。全部程序文件打包成一个tarball压缩文件(.tgz 文件),你可以使用大多数的压缩工具来提取(包括WinZip)。请下载<B>最新</B>的版本,早期版本仅仅作为历史存档之用。
  965. </P>
  966. <A NAME="install-txt2tags"></A>
  967. <H2>2.3. 安装txt2tags</H2>
  968. <P>
  969. 事实上txt2tags只是一个单文件的Python脚本毋需安装
  970. </P>
  971. <P>
  972. 运行程序需要的唯一一个文件是脚本 <CODE>txt2tags</CODE>压缩包内的其他文件是软件的文档示例以及一些工具
  973. </P>
  974. <P>
  975. 最低级的使用txt2tags的方法是直接通过Python来调用
  976. </P>
  977. <PRE>
  978. prompt$ python txt2tags
  979. </PRE>
  980. <P></P>
  981. <P>
  982. 如果想将 txt2tags 作为一个能够直接运行的程序安装到系统请将 txt2tags 脚本复制或者创建一个链接到系统 PATH 变量定义的目录并且确认系统能够运行它
  983. </P>
  984. <DL>
  985. <DT>UNIX/Linux/Mac</DT><DD>
  986. 将脚本文件赋予执行权限<CODE>chmod +x txt2tags</CODE>然后复制到 $PATH 变量定义的目录下比如<CODE>cp txt2tags /usr/local/bin</CODE>
  987. <P></P>
  988. <DT>Windows</DT><DD>
  989. 重命名脚本文件添加 .py 作为扩展名命令行下执行<CODE>ren txt2tags txt2tags.py</CODE>然后复制到系统 PATH 环境变量定义的路径下比如<CODE>copy txt2tags.py C:\WINNT</CODE>
  990. </DL>
  991. <P>
  992. 如果想要使用图形用户接口你可以创建一个桌面启动器快捷方式
  993. </P>
  994. <H3>2.3.1. 为Windows用户专门打包的安装程序</H3>
  995. <P>
  996. 对于Windows用户txt2tags还有两个打包好的安装程序你只需点击鼠标即可完成安装
  997. </P>
  998. <UL>
  999. <LI>单独的txt2tags脚本针对已经安装过Python解释器的系统
  1000. <LI>独立运行的版本毋需另外安装Python解释器包含一个嵌入的版本
  1001. </UL>
  1002. <P>
  1003. 你可以访问 <I>Txt2tags-Win</I> 主页下载安装包<A HREF="http://txt2tags-win.sf.net/">http://txt2tags-win.sf.net/</A>
  1004. </P>
  1005. <A NAME="toc12"></A>
  1006. <H2>2.4. 安装编辑器的语法高亮文件</H2>
  1007. <P>
  1008. Txt2tags提供适合以下编辑器使用的语法高亮文件
  1009. </P>
  1010. <UL>
  1011. <LI>Vim (<A HREF="http://www.vim.org">www.vim.org</A>)
  1012. <LI>Emacs (<A HREF="http://www.emacs.org">www.emacs.org</A>)
  1013. <LI>Nano (<A HREF="http://www.nano-editor.org">www.nano-editor.org</A>)
  1014. <LI>Kate (<A HREF="http://kate.kde.org">http://kate.kde.org</A>)
  1015. <LI>gedit ( <A HREF="http://www.gnome.org/projects/gedit/">http://www.gnome.org/projects/gedit/</A>)
  1016. <LI>TextMate (<A HREF="http://macromates.com/">http://macromates.com/</A> )
  1017. </UL>
  1018. <P>
  1019. 语法高亮文件包含全部txt2tags标记和规则以帮助用户编写出无误的文档正确书写的标记将以彩色显示
  1020. </P>
  1021. <TABLE ALIGN="center">
  1022. <TR>
  1023. <TD ALIGN="center"><center><IMG ALIGN="middle" SRC="./img/vim.png" BORDER="0" ALT=""></center></TD>
  1024. </TR>
  1025. <TR>
  1026. <TD ALIGN="center">用Vim打开示例文件</TD>
  1027. </TR>
  1028. </TABLE>
  1029. <P>
  1030. 语法文件对于不同的编辑器有不同的安装过程请参考语法文件的头部说明和编辑器的文档
  1031. </P>
  1032. <HR NOSHADE SIZE=1>
  1033. <P></P>
  1034. <A NAME="your-1st-doc"></A>
  1035. <H1>3. 第三部分 第一个文档</H1>
  1036. <A NAME="toc14"></A>
  1037. <H2>3.1. 先利其器</H2>
  1038. <P>
  1039. 你需要三件工具来完成你的第一次转换尝试txt2tags一个文本编辑器和一个网络浏览器
  1040. </P>
  1041. <OL>
  1042. <LI>确认一下txt2tags是否已经安装并且能够正确运行
  1043. <UL>
  1044. <LI><B>命令行方式</B>执行<CODE>txt2tags</CODE>命令程序会返回一个缺少输入文件Missing input file的信息如果不能正确运行尝试使用<CODE>python /path/to/txt2tags</CODE>甚至<CODE>/path/to/python /path/to/txt2tags</CODE>以防止Python不在环境变量定义的路径中
  1045. <LI><B>图形化操作</B>点击程序图标启动图形界面
  1046. </UL>
  1047. <LI>开启你喜欢的文本编辑器任何一个都行无论是古老的 VI还是 M$ Word乃至 OpenOffice.org用编辑器创建一个空文档作为你的第一个txt2tags源文件
  1048. <LI>启动你偏爱的浏览器用来查看转换得到的HTML网页
  1049. </OL>
  1050. <A NAME="toc15"></A>
  1051. <H2>3.2. 编写文档头部</H2>
  1052. <OL>
  1053. <LI>在编辑器中在第一行写上文档的主标题<I>我的第一个文档</I>
  1054. <LI>在第二行写上子标题<I>txt2tags测试</I>
  1055. <LI>然后在第三行写上时间比如<I>星期日2009</I>
  1056. </OL>
  1057. <P>
  1058. 如果一切正常现在你可以看到一个包含三行内容的文档
  1059. </P>
  1060. <PRE>
  1061. 我的第一个文档
  1062. txt2tags测试
  1063. 星期日2009
  1064. </PRE>
  1065. <P></P>
  1066. <P>
  1067. 这只是一般文档的一部分但是我们已经可以用它来尝试一下转换工作了
  1068. </P>
  1069. <P>
  1070. 将文档以文件名 <CODE>test.txt</CODE> 保存记得要记住保存的路径因为一会儿你要用到它
  1071. </P>
  1072. <A NAME="toc16"></A>
  1073. <H2>3.3. 第一次转换图形界面操作</H2>
  1074. <P>
  1075. 如果你使用命令行请跳过本节直接阅读下一节
  1076. </P>
  1077. <P>
  1078. 如果你使用图形界面请跟着我做
  1079. </P>
  1080. <center><IMG ALIGN="middle" SRC="./img/firstdoc.png" BORDER="0" ALT=""></center>
  1081. <OL>
  1082. <LI>点击Browse按钮选择你刚才保存的 <CODE>test.txt</CODE> 文件
  1083. <LI>回到第一个窗口Target document type下拉菜单中选择HTML page
  1084. <LI>点击Convert!按钮
  1085. </OL>
  1086. <center><IMG ALIGN="middle" SRC="./img/firstdoc-done.png" BORDER="0" ALT=""></center>
  1087. <P>
  1088. 这时会弹出一个对话框告诉你文件已经成功的转换了生成的HTML文件与源文件在同一个文件夹下html为扩展名
  1089. </P>
  1090. <A NAME="toc17"></A>
  1091. <H2>3.4. 第一次转换命令行方式</H2>
  1092. <P>
  1093. 如果你使用图形界面请跳过本节直接阅读下一节
  1094. </P>
  1095. <P>
  1096. 如果你使用命令行方式请切换到源文件所在的目录执行
  1097. </P>
  1098. <PRE>
  1099. txt2tags --target html test.txt
  1100. </PRE>
  1101. <P></P>
  1102. <P>
  1103. 请注意在命令的各部分中间以空格分隔但是在选项字符串<CODE>--target</CODE>内部不能有空格这个选项后面紧跟着字符串<CODE>html</CODE>告诉程序你想要的目标文件格式最后一部分是源文件的文件名
  1104. </P>
  1105. <P>
  1106. 如果转换正常完成结果会存储到文件 <CODE>test.html</CODE> 同时给出<I>txt2tags wrote test.html</I>的信息如果不是这样程序会报错提示你可能出错了请仔细检查一下
  1107. </P>
  1108. <P>
  1109. 一个示例
  1110. </P>
  1111. <PRE>
  1112. prompt$ txt2tags --target html test.txt
  1113. txt2tags wrote test.html
  1114. prompt$
  1115. </PRE>
  1116. <P></P>
  1117. <A NAME="toc18"></A>
  1118. <H2>3.5. 查看结果</H2>
  1119. <P>
  1120. 用浏览器打开文件 <CODE>test.html</CODE> 以检查是否正常
  1121. </P>
  1122. <center><IMG ALIGN="middle" SRC="./img/firstdoc-html.png" BORDER="0" ALT=""></center>
  1123. <P>
  1124. 看见结果了吗你只是简单的输入了三行文字txt2tags则为你完成了所有设置HTML文件头部信息的工作对齐方式大小间隔以及外观文档的主标题同时也出现在了浏览器的标题栏中
  1125. </P>
  1126. <TABLE ALIGN="center" BORDER="1">
  1127. <TR>
  1128. <TH>你只需输入文本txt2tags帮你搞定一切 ;)</TH>
  1129. </TR>
  1130. </TABLE>
  1131. <P>
  1132. 提示txt2tags生成的HTML页还能使用外部CSS以实现对页面外观100%的定制
  1133. </P>
  1134. <A NAME="toc19"></A>
  1135. <H2>3.6. 编写文档体</H2>
  1136. <P>
  1137. 现在返回文本编辑器进行下一步撰写文档的内容你可以像平日里撰写电子邮件一样的输入文字毋需特别的标记txt2tags会自动识别出段落和列表
  1138. </P>
  1139. <P>
  1140. 然后再一次保存转换再查看结果这就是txt2tags文档的编写流程你可以把精力放在内容上更快的完成文件的编写毋需点鼠标毋需菜单没有窗口没有什么来分散你的注意力
  1141. </P>
  1142. <P>
  1143. 假设文件 <CODE>test.txt</CODE> 中写上了如下的内容完全的纯文本将它们跟生成的HTML文件做一个对比
  1144. </P>
  1145. <PRE>
  1146. 我的第一个文档
  1147. txt2tags测试
  1148. 星期日2009
  1149. 现在我们来试一试txt2tags好了我也不晓得该写点啥
  1150. 好吧列一下我马上该去做的事情
  1151. - 洗个澡
  1152. - 吃块批萨
  1153. - 去睡觉
  1154. </PRE>
  1155. <P></P>
  1156. <center><IMG ALIGN="middle" SRC="./img/firstdoc-fullhtml.png" BORDER="0" ALT=""></center>
  1157. <P>
  1158. 你毋需任何HTML语言的准备知识就能够编写出完整的主页不必插入任何标记进一步同一个源文件还可以转换为其他任何txt2tags所支持的格式
  1159. </P>
  1160. <P>
  1161. 除了纯文本之外txt2tags有一些非常简单的标记来实现其他的格式和文档结构比如<B>粗体</B><I>斜体</I>标题图片表格等等举个简单的例子<CODE>**产生粗体**</CODE><CODE>== 得到标题 ==</CODE>详情请参阅<A HREF="http://txt2tags.sourceforge.net/zh/markup-zh.html">标记示例Txt2tags Markup Demo</A>
  1162. </P>
  1163. <HR NOSHADE SIZE=1>
  1164. <P></P>
  1165. <A NAME="concepts"></A>
  1166. <H1>4. 第四部分 掌握txt2tags的结构</H1>
  1167. <A NAME="areas"></A>
  1168. <H2>4.1. 文档的各个部分</H2>
  1169. <P>
  1170. Txt2tags的标记文本可以分为三个部分每个部分各自的规则实现不同的功能包括
  1171. </P>
  1172. <DL>
  1173. <DT><I>头部域Header Area</I></DT><DD>
  1174. 放置文档标题作者版本号以及日期信息可选区域
  1175. <DT><I>设置域Config Area</I></DT><DD>
  1176. 定义全局设定修改解析时行为Place for general Document Settings and Parser behavior modifiers.可选区域
  1177. <DT><I>主体域Body Area</I></DT><DD>
  1178. 文件内容必须的区域
  1179. </DL>
  1180. <P>
  1181. 前两个区域是可选的只有 <I>主体域</I> 是必须的
  1182. </P>
  1183. <P>
  1184. 各个区域之间的分隔方式比较特别下一章会详细描述现在我们给出一个直观的图形化的描述
  1185. </P>
  1186. <PRE>
  1187. ____________
  1188. | |
  1189. | HEADERS | 1. First, the Headers
  1190. | |
  1191. | CONFIG | 2. Then the Settings
  1192. | |
  1193. | BODY | 3. And finally the Document Body,
  1194. | |
  1195. | ... | which goes until the end
  1196. | ... |
  1197. |____________|
  1198. </PRE>
  1199. <P></P>
  1200. <P>
  1201. 简单的说各个部分是这样定义的
  1202. </P>
  1203. <TABLE ALIGN="center">
  1204. <TR>
  1205. <TD ALIGN="center"><B>头部域</B></TD>
  1206. <TD>文件内容的前三行或者第一行是空白行表示没有头部</TD>
  1207. </TR>
  1208. <TR>
  1209. <TD ALIGN="center"><B>设置域</B></TD>
  1210. <TD>紧接着头部第四行或者第二行开始结束于<I>主体域</I>的开始</TD>
  1211. </TR>
  1212. <TR>
  1213. <TD><B>主体域</B></TD>
  1214. <TD><I>头部</I>区域之后的第一个有效的行非注释或设置开始</TD>
  1215. </TR>
  1216. </TABLE>
  1217. <H3>4.1.1. 完整的示例</H3>
  1218. <PRE>
  1219. My nice doc Title
  1220. Mr. John Doe
  1221. Last Updated: %%mtime(%c)
  1222. %! Target : html
  1223. %! Style : fancy.css
  1224. %! Encoding: iso-8859-1
  1225. %! Options : --toc --enum-title
  1226. Hi! This is my test document.
  1227. Its content will end here.
  1228. </PRE>
  1229. <P></P>
  1230. <A NAME="headers-area"></A>
  1231. <H2>4.2. 头部域</H2>
  1232. <P>
  1233. 位置
  1234. </P>
  1235. <UL>
  1236. <LI>固定位置文件的<B>头三行</B>
  1237. <LI>固定位置文件的<B>第一行</B>并且为空白行这意味着没有头部
  1238. </UL>
  1239. <P>
  1240. 头部是唯一固定位置和行数的区域总是出现在源文件的头三行各行的内容可以随意并没有特别的要求不过对于大多数的文档推荐以下的内容作为头部
  1241. </P>
  1242. <UL>
  1243. <LI><I>第一行</I>文档标题
  1244. <LI><I>第二行</I>作者姓名和邮件地址
  1245. <LI><I>第三行</I>文档的编写日期和版本号推荐使用宏 <CODE>%%date</CODE>
  1246. </UL>
  1247. <P>
  1248. 请记住源文件的头三行将会是目标文件的头三行在目标文件中会以高的对比与文档内容相区分比如大号字体粗体如果允许分页头部将会单独的在第一页居中显示
  1249. </P>
  1250. <H4>较少或无头部</H4>
  1251. <P>
  1252. 有些时候作者会希望少于三行的头部仅仅给出文档标题和日期信息这时只需将第二行和第三行留为空行这部份就不会在目标文件中显示但是请切记即使是留为空白这些行仍然是头部的一部分主体域总是在这三行之后开始
  1253. </P>
  1254. <P>
  1255. 只有标题第一行是必须的但是你也可以把它留白这意味着文档<B>没有头部</B>而主体域就紧接着从第二行开始如果你打算在完成转换之后再来定制头部信息那么没有头部的选择是很有用的命令行选项 <CODE>--no-headers</CODE> 通常用来完成这一操作
  1256. </P>
  1257. <H4>总结</H4>
  1258. <P>
  1259. 简而言之<B>头部只是<U>位置</U>而非内容</B>
  1260. </P>
  1261. <P>
  1262. 源文件的第一行会出现在目标文件的第一行二三行同样
  1263. </P>
  1264. <A NAME="config-area"></A>
  1265. <H2>4.3. 设置域</H2>
  1266. <P>
  1267. 位置
  1268. </P>
  1269. <UL>
  1270. <LI>紧接着头部区域之后开始
  1271. <UL>
  1272. <LI>如果定义了<B>头部</B>则从<B>第四行</B>开始
  1273. <LI>如果<B>无头部</B>则从<B>第二行</B>开始
  1274. </UL>
  1275. <LI>结束于主体域开始
  1276. <UL>
  1277. <LI>结束于一个非属性设定空白或者注释行
  1278. </UL>
  1279. </UL>
  1280. <P>
  1281. 设置域是可选的普通用户甚至可以编写出许多txt2tags文档却不知道这个区域的存在但是有经验的用户往往受益于它提供的有效的控制功能设置域用来记录具体文档的设置这样就省略了转换时繁杂的命令行选项比如说你可以设定好缺省的目标文件类型和字符编码<A HREF="#settings">设定</A>一节中对此有详细的叙述
  1282. </P>
  1283. <A NAME="body-area"></A>
  1284. <H2>4.4. 主体域</H2>
  1285. <P>
  1286. 位置
  1287. </P>
  1288. <UL>
  1289. <LI>开始于第一个有效行
  1290. <UL>
  1291. <LI>头部设置域以及注释都<B>不是</B>有效的行
  1292. </UL>
  1293. <LI>结束于文件的末尾EOF
  1294. </UL>
  1295. <P>
  1296. 除了头部和设置域以外的所有内容都是主体域主体域包含来了文件的内容以及txt2tags支持的所有格式和文档结构的信息在主体域内你也可以放置注释作为 <I>TODOs</I> 和自提示
  1297. </P>
  1298. <P>
  1299. 命令行选项 <CODE>--no-headers</CODE> 会忽略头部只转换主体域的内容这是很有用的你可以用单独的文件来定义头部然后与转换后的主体域连接起来
  1300. </P>
  1301. <A NAME="settings-overview"></A>
  1302. <H2>4.5. 设定</H2>
  1303. <P>
  1304. 设定Settings是特殊的配置选项位于文档的设置域内用以控制转换的过程设定的语法如
  1305. </P>
  1306. <PRE>
  1307. $! 关键词 : 设定值
  1308. </PRE>
  1309. <P></P>
  1310. <P>
  1311. 以下是有效的关键词列表
  1312. </P>
  1313. <TABLE ALIGN="center" BORDER="1">
  1314. <TR>
  1315. <TH>关键词</TH>
  1316. <TH>描述</TH>
  1317. </TR>
  1318. <TR>
  1319. <TD ALIGN="center">target</TD>
  1320. <TD>设定缺省的目标文件格式</TD>
  1321. </TR>
  1322. <TR>
  1323. <TD ALIGN="center">options</TD>
  1324. <TD>设定缺省的转换选项格式与命令行选项相同</TD>
  1325. </TR>
  1326. <TR>
  1327. <TD ALIGN="center">style</TD>
  1328. <TD>设定文档样式主要用作为HTML/XHTML文档定义外联的CSS样式表以及为LaTeX文档加载宏包</TD>
  1329. </TR>
  1330. <TR>
  1331. <TD ALIGN="center">encoding</TD>
  1332. <TD>设定字符编码当文档包含国际化字符和非ASCII字符时需要指定编码</TD>
  1333. </TR>
  1334. <TR>
  1335. <TD ALIGN="center">preproc</TD>
  1336. <TD>输入文件处理设定应用于源文件的主体域中的查找/替换规则</TD>
  1337. </TR>
  1338. <TR>
  1339. <TD ALIGN="center">postproc</TD>
  1340. <TD>输出文件处理设定应用与输出文件中的查找/替换规则</TD>
  1341. </TR>
  1342. </TABLE>
  1343. <P>
  1344. 示例
  1345. </P>
  1346. <PRE>
  1347. %! Target : html
  1348. %! Options : --toc --toc-level 3
  1349. %! Style : fancy.css
  1350. %! Encoding: iso-8859-1
  1351. %! PreProc : "AMJ" "Aurelio Marinho Jargas"
  1352. %! PostProc: '&lt;BODY.*?&gt;' '&lt;BODY bgcolor="yellow"&gt;'
  1353. </PRE>
  1354. <P></P>
  1355. <A NAME="cmd-options"></A>
  1356. <H2>4.6. 命令行选项</H2>
  1357. <P>
  1358. 改变txt2tags默认行为最快捷的方式是使用命令行选项顾名思义这些选项只能应用于命令行方式不适用于GUI和Web界面
  1359. </P>
  1360. <P>
  1361. 与其他工具一样程序接受一串预定义的选项每个选项都是由一个单连字符引导的字母或者两个连续的连字符引导的一个或多个单词比如 <CODE>-t</CODE> <CODE>--target</CODE>target选项是唯一的一个必须的选项其他的都是可省略的选项
  1362. </P>
  1363. <P>
  1364. 常用的选项包括<CODE>--outfile</CODE>指定输出文件名<CODE>--toc</CODE>自动生成目录表<CODE>--encoding</CODE>设定文档的字符编码大多数的选项可以通过前缀一个<CODE>no-</CODE>来关闭比如<CODE>--no-encoding</CODE> <CODE>--no-toc</CODE>
  1365. </P>
  1366. <P>
  1367. 使用 <CODE>%!options</CODE> 的格式你可以在源文件的设置域设定需要的选项这样在命令行中就可以省略掉这些选项了比如<CODE>%!options: --toc -o mydoc.html</CODE>目标文件格式的指定是个例外它有自己的格式<CODE>%!target: html</CODE>
  1368. </P>
  1369. <P>
  1370. 使用 <CODE>--help</CODE> 选项能获得完整的选项列表
  1371. </P>
  1372. <A NAME="rc"></A>
  1373. <H2>4.7. 用户配置文件RC文件</H2>
  1374. <P>
  1375. 通用的设定存储于用户配置文件又称为RC文件对于在每一个源文件中反复使用的设定你可以把它们写到RC文件中以便于所有的源文件使用这个文件的缺省位置取决于你使用的操作系统你也可以通过定义环境变量来指定其位置
  1376. </P>
  1377. <TABLE ALIGN="center" BORDER="1">
  1378. <TR>
  1379. <TH COLSPAN="2">RC 文件的位置</TH>
  1380. </TR>
  1381. <TR>
  1382. <TD ALIGN="right">Windows</TD>
  1383. <TD><CODE>%HOMEPATH%\_t2trc</CODE></TD>
  1384. </TR>
  1385. <TR>
  1386. <TD ALIGN="right">Linux and other</TD>
  1387. <TD><CODE>$HOME/.txt2tagsrc</CODE></TD>
  1388. </TR>
  1389. <TR>
  1390. <TD ALIGN="right">User defined</TD>
  1391. <TD><CODE>T2TCONFIG</CODE> 环境变量</TD>
  1392. </TR>
  1393. </TABLE>
  1394. <P>
  1395. 设定的格式与源文件设置域中使用的选项格式完全相同以下是包含在程序包的 <CODE>doc/txt2tagsrc</CODE> 的示例文件
  1396. </P>
  1397. <PRE>
  1398. % my configs
  1399. %%% Always use CSS-friendly tags in HTML
  1400. %!options(html): --css-sugar
  1401. %%% Change the default TOC depth for all targets
  1402. %!options: --toc-level 4
  1403. %%% Set the default encoding for all documents
  1404. %!options: --encoding iso-8859-1
  1405. </PRE>
  1406. <P></P>
  1407. <P>
  1408. 除去空白行注释行和有效配置行之外的任何一个多余的行都会使得txt2tags在运行时产生错误因此编辑这个文件时请尽量小心
  1409. </P>
  1410. <P>
  1411. 在执行转换时程序自动将RC文件的内容应用于源文件如果你想要关闭这一行为则可使用命令行选项 <CODE>--no-rc</CODE>
  1412. </P>
  1413. <A NAME="config-loading"></A>
  1414. <H2>4.8. 配置的优先级和加载顺序</H2>
  1415. <P>
  1416. 有三种方式告诉txt2tags需要使用的选项和设定其读取和应用的顺序是
  1417. </P>
  1418. <OL>
  1419. <LI>用户配置文件的设定
  1420. <LI>源文件设置域的设定
  1421. <LI>命令行选项
  1422. </OL>
  1423. <P>
  1424. 程序首先读取RC文件的内容如果存在的话并将相应的设置应用于当前源文件然后它检查源文件的设置域的设定如果找到应用之并且覆盖掉RC文件的设定以壁面冲突最后是命令行选项它的效力比前两者都高
  1425. </P>
  1426. <P>
  1427. 这即是说如果文档的字符编码同时用三种方式来设定最终被应用的是命令行选项的设定
  1428. </P>
  1429. <A NAME="include"></A>
  1430. <H2>4.9. %!include 指令</H2>
  1431. <P>
  1432. <CODE>include</CODE> 命令用于将外部文件的内容包含进源文件中它不是一个配置选项而是一个命令对于主体域区域来说则是一个有效的行
  1433. </P>
  1434. <P>
  1435. <CODE>include</CODE> 命令可用来将大型的文档分割为较小的片段比如整本书中的章节或者是将外部文件的全部内容包含进源文件中比如
  1436. </P>
  1437. <PRE>
  1438. My first book
  1439. Dr. John Doe
  1440. 1st Edition
  1441. %!include: intro.t2t
  1442. %!include: chapter1.t2t
  1443. %!include: chapter2.t2t
  1444. ...
  1445. %!include: chapter9.t2t
  1446. %!include: ending.t2t
  1447. </PRE>
  1448. <P></P>
  1449. <P>
  1450. 文件名接在字符串 <CODE>%!include</CODE> 后面支持可选的target选项因此下面的格式也是合法的
  1451. </P>
  1452. <PRE>
  1453. %!include(html): file.t2t
  1454. </PRE>
  1455. <P></P>
  1456. <P>
  1457. 注意include 命令将被包含文件的主体域区域读入源文件中而头部和设置域则被忽略所以你可以单独转换这个文件或者将它包含进主文档中一同转换
  1458. </P>
  1459. <P>
  1460. 此外还有另外三种形式的包含
  1461. </P>
  1462. <UL>
  1463. <LI>完全引用Verbatim包含
  1464. <LI>原文Raw包含
  1465. <LI>带标记Tagged包含
  1466. </UL>
  1467. <P>
  1468. <B>完全引用Verbatim</B>包含会保留读入文件原始的空格和格式就像是txt2tags文件的完全引用VERB域一样要实现这种类型的包含请将文件名置于反引号中
  1469. </P>
  1470. <PRE>
  1471. %!include: ``/etc/fstab``
  1472. </PRE>
  1473. <P></P>
  1474. <P>
  1475. <B>原文Raw</B>包含会照原样包含读入文件不会寻找和解析其中的任何标记就像之余原文RAW域中一样要实现这种类型的包含请将文件名置于双引号中
  1476. </P>
  1477. <PRE>
  1478. %!include: ""nice_text.txt""
  1479. </PRE>
  1480. <P></P>
  1481. <P>
  1482. <B>带标记Tagged</B>包含会将读入文件内容直接传递给目标文件txt2tags不会进行任何解析和控制这种方式适用于在文档中包含额外的带标记的内容对于缺省的头部或脚注信息以及txt2tags不支持的复杂标记十分有用
  1483. </P>
  1484. <PRE>
  1485. %!include: ''footer.html''
  1486. </PRE>
  1487. <P></P>
  1488. <P>
  1489. 注意请将文件名置于两个单引号中间由于插入的内容是已经格式化的你必须确认目标文件格式以防止出错
  1490. </P>
  1491. <A NAME="includeconf"></A>
  1492. <H2>4.10. %!includeconf 指令</H2>
  1493. <P>
  1494. <CODE>includeconf</CODE> 命令用于将外部配置文件读入当前文件中这个命令仅在源文件的设置域内出现才是合法而有效的
  1495. </P>
  1496. <P>
  1497. 当多个文件共享同样的配置时你可以将这些配置集中放置然后用这个指令来读入请在每个需要读入外部集中配置的文件中使用 <CODE>includeconf</CODE> 命令比如
  1498. </P>
  1499. <PRE>
  1500. My First Document
  1501. John Doe
  1502. July, 2004
  1503. %!includeconf: config.t2t
  1504. Hi, this is my first document.
  1505. </PRE>
  1506. <P></P>
  1507. <P>
  1508. 外部配置文件使用的格式与RC文件相同
  1509. </P>
  1510. <HR NOSHADE SIZE=1>
  1511. <P></P>
  1512. <A NAME="marks"></A>
  1513. <H1>5. 第五部分 掌握标记</H1>
  1514. <P>
  1515. txt2tags的全部标记概览
  1516. </P>
  1517. <TABLE ALIGN="center" BORDER="1">
  1518. <TR>
  1519. <TH COLSPAN="2">基本</TH>
  1520. <TH COLSPAN="2">美化</TH>
  1521. </TR>
  1522. <TR>
  1523. <TD ALIGN="right"><I>头部</I></TD>
  1524. <TD ALIGN="center">First 3 lines</TD>
  1525. <TD ALIGN="right"><I>粗体</I></TD>
  1526. <TD ALIGN="center">**words**</TD>
  1527. </TR>
  1528. <TR>
  1529. <TD ALIGN="right"><I>标题</I></TD>
  1530. <TD ALIGN="center">= words =</TD>
  1531. <TD ALIGN="right"><I>斜体</I></TD>
  1532. <TD ALIGN="center">//words//</TD>
  1533. </TR>
  1534. <TR>
  1535. <TD ALIGN="right"><I>带编号的标题</I></TD>
  1536. <TD ALIGN="center">+ words +</TD>
  1537. <TD ALIGN="right"><I>下划线</I></TD>
  1538. <TD ALIGN="center">__words__</TD>
  1539. </TR>
  1540. <TR>
  1541. <TD ALIGN="right"><I>段落</I></TD>
  1542. <TD ALIGN="center">words</TD>
  1543. <TD ALIGN="right"><I>删除线</I></TD>
  1544. <TD ALIGN="center">--words--</TD>
  1545. </TR>
  1546. <TR>
  1547. <TD ALIGN="right"><I>链接</I></TD>
  1548. <TD ALIGN="center">[label url]</TD>
  1549. <TD ALIGN="right"><I>等宽</I></TD>
  1550. <TD ALIGN="center">``words``</TD>
  1551. </TR>
  1552. <TR>
  1553. <TD ALIGN="right"><I>图片</I></TD>
  1554. <TD ALIGN="center">[filename.jpg]</TD>
  1555. <TD ALIGN="right"><I>原始文字</I></TD>
  1556. <TD ALIGN="center">""words""</TD>
  1557. </TR>
  1558. <TR>
  1559. <TH COLSPAN="4">其他</TH>
  1560. </TR>
  1561. <TR>
  1562. <TD ALIGN="right"><I>引用</I></TD>
  1563. <TD ALIGN="center">&lt;TAB&gt;words</TD>
  1564. <TD ALIGN="right"><I>分隔线</I></TD>
  1565. <TD ALIGN="center"><S>--------</S>...</TD>
  1566. </TR>
  1567. <TR>
  1568. <TD ALIGN="right"><I>列表</I></TD>
  1569. <TD ALIGN="center">- words</TD>
  1570. <TD ALIGN="right"><I>粗分隔线</I></TD>
  1571. <TD ALIGN="center">============...</TD>
  1572. </TR>
  1573. <TR>
  1574. <TD ALIGN="right"><I>编号列表</I></TD>
  1575. <TD ALIGN="center">+ words</TD>
  1576. <TD ALIGN="right"><I>表格</I></TD>
  1577. <TD ALIGN="center">| cell1 | cell2 | cell3...</TD>
  1578. </TR>
  1579. <TR>
  1580. <TD ALIGN="right"><I>定义列表</I></TD>
  1581. <TD ALIGN="center">: words</TD>
  1582. <TD ALIGN="right"><I>锚点标签</I></TD>
  1583. <TD ALIGN="center">= title =[anchor]</TD>
  1584. </TR>
  1585. <TR>
  1586. <TD ALIGN="right"><I>注释行</I></TD>
  1587. <TD ALIGN="center">% comments</TD>
  1588. <TD ALIGN="right"><I>注释域</I></TD>
  1589. <TD ALIGN="center">%%%\n comments \n%%%</TD>
  1590. </TR>
  1591. <TR>
  1592. <TD ALIGN="right"><I>完全引用行</I></TD>
  1593. <TD ALIGN="center">``` word</TD>
  1594. <TD ALIGN="right"><I>完全引用域</I></TD>
  1595. <TD ALIGN="center">```\n lines \n```</TD>
  1596. </TR>
  1597. <TR>
  1598. <TD ALIGN="right"><I>原文行</I></TD>
  1599. <TD ALIGN="center">""" words</TD>
  1600. <TD ALIGN="right"><I>原文域</I></TD>
  1601. <TD ALIGN="center">"""\n lines \n"""</TD>
  1602. </TR>
  1603. </TABLE>
  1604. <P>
  1605. 通用规则:
  1606. </P>
  1607. <UL>
  1608. <LI><B>头部</B>是文档的头三行,其中的标记不会解析。
  1609. <LI><B>标题</B>是包围标题文字的对称的“=”或“+”字符。字符越多,标题级数越深。
  1610. <LI><B>美化符</B>会忽略标记与其中的内容之间的空格。
  1611. <LI><B>注释</B>符号“%”必须位于每一行的开头(第一列)。
  1612. <LI><B>图片</B>文件名必须以GIF、JPG、PNG或者类似的扩展名结束。
  1613. <LI>完全引用(Verbatim)和原文(Raw)中的标记不会被解析。
  1614. <LI><B>分隔线/粗分隔线</B>必须是连续20个字符以上。
  1615. <LI>引用和列表的<B>嵌套/解嵌套</B>通过缩进来定义。
  1616. <LI><B>表格标题</B>行通过位于行首的双管道符“||”来定义。
  1617. </UL>
  1618. <A NAME="mark-headers"></A>
  1619. <H2>5.1. 头部</H2>
  1620. <UL>
  1621. <LI><B>描述</B>:确定文档头部
  1622. <LI><B>属性</B>:多行,空格自由(可自由包含空格,下同。原文:FreeSpace),无对齐,无嵌套
  1623. <LI><B>可包含</B>:宏
  1624. <LI><B>语法</B>:
  1625. <UL>
  1626. <LI>源文件的头三行
  1627. <LI>第一行留空则表示无头部。适合于用户定制的头部(原文:Nice for command line oneliners or customized headers)。
  1628. <LI>第二行和/或第三行留空,将忽略头部的部分内容。
  1629. </UL>
  1630. <LI><B>细节</B>:
  1631. <UL>
  1632. <LI>头部域的标记<B>不会</B>被解析
  1633. <LI>源文件的头三行也是目标文件的头三行,在目标文件中与主体域以高对比来显示,或者置于单独的第一页上(如果允许分页的话)。
  1634. <LI>头部的内容可以随意,没有硬性规定的信息,然而推荐使用下面的写法:
  1635. <UL>
  1636. <LI>第一行:文件标题
  1637. <LI>第二行:作者姓名和/或电子邮件
  1638. <LI>第三行:文档日期和/或版本号(建议使用 <CODE>%%mtime</CODE> 宏)
  1639. </UL>
  1640. </UL>
  1641. </UL>
  1642. <A NAME="mark-title"></A>
  1643. <H2>5.2. 标题与编号的标题</H2>
  1644. <UL>
  1645. <LI><B>描述</B>:确定一个编号或者不编号的章节标题
  1646. <LI><B>属性</B>:非多行,空格自由,无对齐,无嵌套
  1647. <LI><B>可包含</B>:原始文本(Raw)
  1648. <LI><B>语法</B>:
  1649. <UL>
  1650. <LI>对于所有的规则,用“+”替代“=”可得到编号的标题
  1651. <LI>包围文字的符号数目保持对称,<CODE>=像这样=</CODE>
  1652. <LI>符号数目增加,章节深度随之增加:<CODE>=title=, ==subtitle==, ===subsubtitle===, ...</CODE>
  1653. <LI>最大深度为5级标题,<CODE>=====像这样=====</CODE>
  1654. <LI>数目不对称的标记不构成标题,<CODE>=像这样===</CODE>
  1655. <LI>标记包围的内部可以自由添加空格,<CODE>= 像 这 样 =</CODE>
  1656. <LI>标题可以有锚点(anchor),<CODE>=像这样=[anchor]</CODE>。可以创建一个到此锚点的链接,形如 <CODE>[本地链接 #anchor]</CODE>
  1657. <LI>锚点名称只能由字母、数字、下划线和连字符构成(A-Za-z0-9_-)
  1658. </UL>
  1659. <LI><B>细节</B>:
  1660. <UL>
  1661. <LI>标题中的其他标记不会解析
  1662. <LI>标题中的宏不会解析
  1663. </UL>
  1664. </UL>
  1665. <A NAME="mark-par"></A>
  1666. <H2>5.3. 段落</H2>
  1667. <UL>
  1668. <LI><B>描述</B>:确定一个自然段
  1669. <LI><B>属性</B>:多行,空格自由,无对齐,无嵌套
  1670. <LI><B>可包含</B>:宏,美化符,原始文(Raw),链接,图片,注释
  1671. <LI><B>语法</B>:
  1672. <UL>
  1673. <LI>由空行分隔的多行文本构成段落
  1674. <LI>其他的块,如列表、引用域、表格或完全引用域等,也可作为段落的结束
  1675. </UL>
  1676. </UL>
  1677. <A NAME="mark-comment"></A>
  1678. <H2>5.4. 注释</H2>
  1679. <UL>
  1680. <LI><B>描述</B>:用于插入不会写入目标文件的文本
  1681. <LI><B>属性</B>:非多行,非空格自由,无对齐,无嵌套
  1682. <LI><B>可包含</B>:无
  1683. <LI><B>语法</B>:
  1684. <UL>
  1685. <LI>以一个百分号 % 起始的行(%位于第一列)构成一个注释行,<CODE>%像这样</CODE>
  1686. <LI><B>不能</B>有前导空格(按:这就是所谓“非空格自由”)
  1687. </UL>
  1688. <LI><B>细节</B>:
  1689. <UL>
  1690. <LI>注释文本不会写入转换后的文件
  1691. <LI>注释是非块状的,因此每一个注释行都必须以 % 作为前导
  1692. <LI>可用于 TODO 和 FIXME 提示,以及作者自提示
  1693. </UL>
  1694. </UL>
  1695. <A NAME="mark-beautifiers"></A>
  1696. <H2>5.5. 粗体,斜体,下划线和删除线</H2>
  1697. <UL>
  1698. <LI><B>描述</B>:用于在段落、表格、列表和引用域内插入 粗体/斜体/下划线/删除线 字体
  1699. <LI><B>属性</B>:非多行,非空格自由,无对齐,可嵌套
  1700. <LI><B>可包含</B>:宏,美化符,原始文(Raw),链接,图片
  1701. <LI><B>语法</B>:
  1702. <UL>
  1703. <LI>双星号包围的文字产生<B>粗体</B>,<CODE>**像这样**</CODE>
  1704. <LI>双斜杠包围的文字产生<I>斜体</I>,<CODE>//像这样//</CODE>
  1705. <LI>双下划线包围的文字产生<U>下划线</U>字体,<CODE>__像这样__</CODE>
  1706. <LI>双连字符包围的文字产生<S>删除线</S>字体,<CODE>--像这样--</CODE>
  1707. <LI>标记必须与内部的文字紧密贴合(不能有空格):<CODE>** 像这样 ** 是非法的</CODE>
  1708. </UL>
  1709. <LI><B>细节</B>::
  1710. <UL>
  1711. <LI>源文件中每一对美化符都必须位于同一行,中间不能有换行符
  1712. <LI>美化符内可以包含宏,比如:<CODE>**%%date**</CODE>
  1713. <LI>美化符可以混合使用,如:<CODE>**__like__ //this//**</CODE>
  1714. </UL>
  1715. </UL>
  1716. <A NAME="mark-monospaced"></A>
  1717. <H2>5.6. 等宽字体</H2>
  1718. <UL>
  1719. <LI><B>描述</B>:用于在段落、表格、列表和引用域内插入等宽字体的文本
  1720. <LI><B>属性</B>:非多行,非空格自由,无对齐,无嵌套
  1721. <LI><B>可包含</B>:无
  1722. <LI><B>语法</B>:
  1723. <UL>
  1724. <LI>用双反引号包围文字,<CODE>``像这样``</CODE>
  1725. <LI>标记必须与内部文字紧密贴合(不能有空格):<CODE>`` 像这样 `` 是非法的</CODE>
  1726. </UL>
  1727. <LI><B>细节</B>:
  1728. <UL>
  1729. <LI>内部的标记不会解析
  1730. <LI>内部的宏不会解析
  1731. <LI>所有的等宽文字必须位于单一行内,不能有换行符
  1732. <LI>在部分目标文件中,内部的空格会被保留下来;在其他的目标格式中,连续的空格则被压缩为一个。
  1733. <LI>还可以得到粗体的等宽字体,只需放置于粗体标记内部:``**monobold**``。这一规则对其他的美化符同样适用,比如:``//italic//``,``__underline__``。
  1734. </UL>
  1735. </UL>
  1736. <A NAME="mark-verbatim"></A>
  1737. <H2>5.7. 完全引用行和完全引用域</H2>
  1738. <UL>
  1739. <LI><B>描述</B>:用于插入程序源代码或者其他预格式化的文本,保留空格和换行符,并以等宽字体显示
  1740. <LI><B>属性</B>:多行,非空格自由,无对齐,无嵌套
  1741. <LI><B>可包含</B>:无
  1742. <LI><B>语法 - 完全引用行</B>:
  1743. <UL>
  1744. <LI>以三个相继的反引号加一个空格引导,后接文字,``` 像这样
  1745. <LI>反引号必须位于每行的第一列不能有前导空格
  1746. </UL>
  1747. <LI><B>语法 - 完全引用域</B>
  1748. <UL>
  1749. <LI>第一行为三个相继的反引号 ```,从下一行开始为单行或多行文本,最后一行为三个相继的反引号 ```
  1750. <LI>标记不能有前导空格也不能有后随的空格
  1751. </UL>
  1752. <LI><B>细节</B>
  1753. <UL>
  1754. <LI>内部的标记不会解析
  1755. <LI>内部的宏不会解析
  1756. <LI>如果到达源文件末尾EOF尚未闭合的完全引用域将自动关闭
  1757. </UL>
  1758. </UL>
  1759. <A NAME="mark-seperator"></A>
  1760. <H2>5.8. 隔离行和粗隔离行</H2>
  1761. <UL>
  1762. <LI><B>描述</B>生成水平线隔离行或者粗隔离行
  1763. <LI><B>属性</B>非多行空格自由无对齐无嵌套
  1764. <LI><B>可包含</B>
  1765. <LI><B>语法</B>
  1766. <UL>
  1767. <LI>隔离行由多个虚线-或者下划线_构成
  1768. <LI>粗隔离行由多个等号=组成
  1769. <LI>至少包括20个相应的字符
  1770. <LI>线可以有前导和后随的空格
  1771. <LI>在同一行的任何其他字符将破坏标记
  1772. </UL>
  1773. <LI><B>细节</B>
  1774. <UL>
  1775. <LI>如果目标格式不支持水平线自动转化为一个注释行
  1776. <LI>粗隔离行在某些目标格式中可能有不同的作用
  1777. <UL>
  1778. <LI>更粗的隔离行
  1779. <LI>放映暂停比如在 MagicPoint
  1780. <LI>分页比如在 LaTeX
  1781. </UL>
  1782. </UL>
  1783. </UL>
  1784. <A NAME="mark-link"></A>
  1785. <H2>5.9. 链接和命名链接</H2>
  1786. <UL>
  1787. <LI><B>描述</B>确定一个指向互联网或本地的链接
  1788. <LI><B>属性</B>非多行非空格自由无对齐无嵌套
  1789. <LI><B>可包含</B>原始文Raw图片
  1790. <LI><B>语法</B>
  1791. <UL>
  1792. <LI>合法的URLftp新闻组或电子邮件地址能被程序自动识别并转换为超链接
  1793. <LI>协议httphttpsftp等可省略<CODE>www.likethis.com</CODE>
  1794. <LI>可以为链接命名<CODE>[click here www.url.com]</CODE>
  1795. <LI>可以创建图片链接<CODE>[[image.jpg] www.url.com]</CODE>
  1796. <LI>链接地址允许宏替换<CODE>[see source %%infile]</CODE>
  1797. <LI>链接名字允许宏替换<CODE>[mirror of %%outfile www.url.com]</CODE>
  1798. <LI>全部链接标识符必须位于源文件的同一行内不能有换行符
  1799. </UL>
  1800. <LI><B>细节</B>
  1801. <UL>
  1802. <LI>如果目标格式不支持链接则链接文字仅仅加上下划线
  1803. </UL>
  1804. </UL>
  1805. <A NAME="mark-quote"></A>
  1806. <H2>5.10. 引用</H2>
  1807. <UL>
  1808. <LI><B>描述</B>确定一个引用缩进
  1809. <LI><B>属性</B>多行非空格自由无对齐可嵌套
  1810. <LI><B>可包含</B>美化符引用原始文Bars链接图片注释
  1811. <LI><B>语法</B>
  1812. <UL>
  1813. <LI>以一个制表符TAB开始的一行
  1814. <LI>更多的制表符则增加引用缩进的深度
  1815. <LI>引用行能不允许列表和表格
  1816. </UL>
  1817. <LI><B>细节</B>
  1818. <UL>
  1819. <LI>如果到达文件末尾EOF尚未闭合的引用自动关闭
  1820. <LI>某些目标格式不支持引用嵌套则子嵌套自动外移到与外层嵌套同级
  1821. <LI>引用深度原则上没有限制但某些目标格式可能会有限制则超过最大深度的子嵌套自动外移
  1822. </UL>
  1823. </UL>
  1824. <A NAME="mark-list"></A>
  1825. <H2>5.11. 列表编号列表和定义列表</H2>
  1826. <UL>
  1827. <LI><B>描述</B>确定列表项开始
  1828. <LI><B>属性</B>多行非空格自由无对齐可嵌套
  1829. <LI><B>可包含</B>美化符列表表格完全引用原始文Bars链接图片注释
  1830. <LI><B>语法</B>
  1831. <UL>
  1832. <LI>以单个 虚线-/加号+/冒号: 紧接单个空格开始一行
  1833. <LI>列表项的第一个字符不能是空格定义列表除外
  1834. <LI>可选的前导空格普通空格非制表符将开始一个子列表列表嵌套
  1835. <LI>子列表以较少深度的表项或者空表项结束
  1836. <LI>所有开放的列表以两个相继的空行结束
  1837. </UL>
  1838. <LI><B>细节</B>
  1839. <UL>
  1840. <LI>如果到达文件末尾EOF所有尚未闭合的列表自动关闭
  1841. <LI>列表可以混合使用比如编号列表内部可以嵌套定义列表
  1842. <LI>某些目标格式可能不支持列表嵌套则子列表自动外移到与外层列表同级
  1843. <LI>嵌套深度原则上没有限制但是某些目标格式可能会有限制则超过最大深度的子列表自动外移
  1844. </UL>
  1845. </UL>
  1846. <A NAME="mark-image"></A>
  1847. <H2>5.12. 图片</H2>
  1848. <UL>
  1849. <LI><B>描述</B>插入一副图片
  1850. <LI><B>属性</B>非多行非空格自由可对齐无嵌套
  1851. <LI><B>可包含</B>
  1852. <LI><B>语法</B>
  1853. <UL>
  1854. <LI>将图片的文件名放在一对方括号中<CODE>[likethis.jpg]</CODE>
  1855. <LI>文件名必须以 PNGJPGGIF 等图形格式扩展名结束不区分大小写
  1856. <LI>文件名可以含有符号原文Symbols are allowed on the filename<CODE>[likethis!~1.jpg]</CODE>
  1857. <LI>文件名允许宏替换比如<CODE>[report-%%date(%Y-%m-%d).png]</CODE>
  1858. <LI>文件名不能包含空格<CODE>[like this.jpg]</CODE>
  1859. <LI>文件名与方括号之间不能有空格<CODE>[ likethis.jpg ]</CODE>
  1860. </UL>
  1861. <LI><B>细节</B>
  1862. <UL>
  1863. <LI>如果目标格式不支持插入图片图片名称将置于一对圆括号中显示
  1864. <LI>插入图片标记在一行中的位置定义了图形的对齐方式
  1865. <UL>
  1866. <LI><CODE>[LEFT.jpg]</CODE> 左对齐左对齐左对齐
  1867. <LI>居中居中居中 <CODE>[CENTER.jpg]</CODE> 居中居中居中
  1868. <LI>右对齐右对齐右对齐 <CODE>[RIGHT.jpg]</CODE>
  1869. </UL>
  1870. </UL>
  1871. </UL>
  1872. <A NAME="mark-table"></A>
  1873. <H2>5.13. 表格</H2>
  1874. <UL>
  1875. <LI><B>描述</B>限定有任意列的表格行
  1876. <LI><B>属性</B>多行空格自由可对齐无嵌套
  1877. <LI><B>可包含</B>美化符原始文链接图片注释
  1878. <LI><B>语法</B>
  1879. <UL>
  1880. <LI>一个前导的管道符|确定一个表格行
  1881. <LI>一对前导的管道符||确定一个表格的标题行
  1882. <LI>首个管道符前的前导空格确定表格居中
  1883. <LI>单元格以管道符间隔形如空格|空格
  1884. <LI>表格第一行以一个管道符结束表示边框可见
  1885. <LI>其余行结尾的管道符可以忽略仅作装饰用
  1886. <LI>单元格以多余一个管道符结束获得跨列效果||跨两列|||跨三列以此类推
  1887. <LI>单元格内的空格决定内部的对齐方式
  1888. <LI>示例<CODE>| 包含 | 5 | | 表格 | |</CODE>
  1889. </UL>
  1890. <LI><B>细节</B>
  1891. <UL>
  1892. <LI>每一个表格行的内容必须在源文件内的同一行内不能有换行符
  1893. <LI>带列对齐的目标格式比如SGML和LaTeX以第一行的对齐方式作为所有行的缺省对齐方式
  1894. <LI>任意的非表格行将结束一个表格注释行除外
  1895. <LI>单元格数目没有限定不同的行可以包含不同数目的单元格
  1896. <LI>目前尚无法实现行跨越
  1897. <LI>如果目标格式不支持表格则表格域视为完全引用域
  1898. </UL>
  1899. </UL>
  1900. <A NAME="mark-raw"></A>
  1901. <H2>5.14. 原始文原文行和原文域</H2>
  1902. <UL>
  1903. <LI><B>描述</B>用以保护某些文字不被解析其内部的标记和宏均不会处理
  1904. <LI><B>属性</B>非多行非空格自由无对齐无嵌套
  1905. <LI><B>可包含</B>
  1906. <LI><B>语法 - 原始文</B>
  1907. <UL>
  1908. <LI>连续的两个双引号包围文字<CODE>""like this""</CODE>
  1909. <LI>标记必须与内容紧密详解不能有空格
  1910. </UL>
  1911. <LI><B>语法 - 原文行</B>
  1912. <UL>
  1913. <LI>以3个相继的双引号开始的行<CODE>""" like this</CODE>
  1914. <LI>双引号必须位于行的第一列不能有前导空格
  1915. <LI>双引号后接一个空格以分隔开标记与文本
  1916. </UL>
  1917. <LI><B>语法 - 原文域</B>
  1918. <UL>
  1919. <LI>第一行为3个相继的双引号下一行开始为单行或多行文本最后一行为3个相继的双引号作为结束
  1920. <LI>标记不能有前导和后继空格
  1921. </UL>
  1922. <LI><B>细节</B>
  1923. <UL>
  1924. <LI>内部的标记不会解析
  1925. <LI>内部的宏不会解析
  1926. <LI>如果到达源文件末尾EOF尚未闭合的原文域自动关闭
  1927. </UL>
  1928. </UL>
  1929. <HR NOSHADE SIZE=1>
  1930. <P></P>
  1931. <A NAME="macro"></A>
  1932. <H1>6. 第六部分 </H1>
  1933. <P>
  1934. 宏是一些特殊的关键词在转换的时候进行展开和替换宏可以用来插入动态的信息比如源文件的编辑日期或其他信息
  1935. </P>
  1936. <P>
  1937. 宏的格式为双百分号%%引导后面紧跟着宏名<CODE>%%date</CODE>某些宏可以后接一对圆括号里面是可选的格式选项字符串诸如<CODE>%%date(%Y-%m-%d)</CODE>格式选项字符串由百分号%后接一个字符构成如果未给出格式选项则使用缺省的格式
  1938. </P>
  1939. <TABLE ALIGN="center" BORDER="1">
  1940. <TR>
  1941. <TH>宏名</TH>
  1942. <TH>展开为</TH>
  1943. <TH>默认格式</TH>
  1944. </TR>
  1945. <TR>
  1946. <TD><CODE>%%date</CODE></TD>
  1947. <TD>当前日期</TD>
  1948. <TD ALIGN="center"><CODE>%Y%m%d</CODE></TD>
  1949. </TR>
  1950. <TR>
  1951. <TD><CODE>%%mtime</CODE></TD>
  1952. <TD>源文件修改时间</TD>
  1953. <TD ALIGN="center"><CODE>%Y%m%d</CODE></TD>
  1954. </TR>
  1955. <TR>
  1956. <TD><CODE>%%infile</CODE></TD>
  1957. <TD>源文件路径</TD>
  1958. <TD ALIGN="center"><CODE>%f</CODE></TD>
  1959. </TR>
  1960. <TR>
  1961. <TD><CODE>%%outfile</CODE></TD>
  1962. <TD>输出文件路径</TD>
  1963. <TD ALIGN="center"><CODE>%f</CODE></TD>
  1964. </TR>
  1965. <TR>
  1966. <TD><CODE>%%toc</CODE></TD>
  1967. <TD>展开为目录表</TD>
  1968. <TD ALIGN="center">-</TD>
  1969. </TR>
  1970. </TABLE>
  1971. <P>
  1972. 一般规则
  1973. </P>
  1974. <UL>
  1975. <LI>宏名不区分大小写所以 <CODE>%%date</CODE><CODE>%%DaTe</CODE> <CODE>%%DATE</CODE> 完全等效
  1976. <LI>宏放置于文档的头部和体区域都是有效的只有 <CODE>%%toc</CODE> 例外它只能放在主体域区域
  1977. <LI>在设置域内的宏意味着设置域结束体区域开始
  1978. <LI>宏可以位于一行的任何位置同一行可以包含各种不同的宏<CODE>%%toc</CODE> 除外它必须独占一行
  1979. <LI>链接和插图标记也可以使用宏<CODE>%%toc</CODE> 除外
  1980. <LI>标题完全引用和原文域内的宏不会解析
  1981. </UL>
  1982. <P>
  1983. 一个完整的例子粗体部分由宏展开得到
  1984. </P>
  1985. <P>
  1986. 本文是Txt2tags用户指南由源文件 <B>txt2tags-userguide-zh.t2t</B> 通过Txt2tags转换得到输出文件名 <B>html</B>转换完成于 <B>2009-03-24 13:07:11</B>而最后一次修改则是在 <B>2009-03-24 13:06:52</B>源文件和目标文件均位于目录 <B>t2t-userguide-cn</B>
  1987. </P>
  1988. <P>
  1989. 译者按<CODE>%%infile</CODE><CODE>%%outfile</CODE>再Windows下无法正常展开
  1990. </P>
  1991. <A NAME="macro-date"></A>
  1992. <H2>6.1. %%date</H2>
  1993. <P>
  1994. <CODE>%%date</CODE> 将被替换为当前的日期和时间可以用于在文档的头部或尾部注明生成的时间如果要得到源文件最近一次编辑的时间请参见 <A HREF="#macro-mtime"><CODE>%mtime</CODE> </A>一节
  1995. </P>
  1996. <P>
  1997. 宏展开时可以有若干不同的显示格式完整的列表请参看 <A HREF="http://www.python.org/doc/current/lib/module-time.html">Python主页</A>以下是其中最常用的几种
  1998. </P>
  1999. <TABLE ALIGN="center" BORDER="1">
  2000. <TR>
  2001. <TH>格式</TH>
  2002. <TH>描述</TH>
  2003. </TR>
  2004. <TR>
  2005. <TD ALIGN="center"><CODE>%a</CODE></TD>
  2006. <TD>星期名的缩写</TD>
  2007. </TR>
  2008. <TR>
  2009. <TD ALIGN="center"><CODE>%A</CODE></TD>
  2010. <TD>星期名的全称</TD>
  2011. </TR>
  2012. <TR>
  2013. <TD ALIGN="center"><CODE>%b</CODE></TD>
  2014. <TD>月份名的缩写</TD>
  2015. </TR>
  2016. <TR>
  2017. <TD ALIGN="center"><CODE>%B</CODE></TD>
  2018. <TD>月份名的全程</TD>
  2019. </TR>
  2020. <TR>
  2021. <TD ALIGN="center"><CODE>%c</CODE></TD>
  2022. <TD>日期和时间</TD>
  2023. </TR>
  2024. <TR>
  2025. <TD ALIGN="center"><CODE>%d</CODE></TD>
  2026. <TD>一个月中的第几天01-31的十进制数</TD>
  2027. </TR>
  2028. <TR>
  2029. <TD ALIGN="center"><CODE>%H</CODE></TD>
  2030. <TD>24小时制的小时数00-23的十进制数</TD>
  2031. </TR>
  2032. <TR>
  2033. <TD ALIGN="center"><CODE>%I</CODE></TD>
  2034. <TD>12小时制的小时数01-12的十进制数</TD>
  2035. </TR>
  2036. <TR>
  2037. <TD ALIGN="center"><CODE>%m</CODE></TD>
  2038. <TD>一年中的第几个月01-12的十进制数</TD>
  2039. </TR>
  2040. <TR>
  2041. <TD ALIGN="center"><CODE>%M</CODE></TD>
  2042. <TD>分钟数01-59的十进制数</TD>
  2043. </TR>
  2044. <TR>
  2045. <TD ALIGN="center"><CODE>%p</CODE></TD>
  2046. <TD>本地格式的 上午 或者 下午</TD>
  2047. </TR>
  2048. <TR>
  2049. <TD ALIGN="center"><CODE>%S</CODE></TD>
  2050. <TD>秒数01-59的十进制数</TD>
  2051. </TR>
  2052. <TR>
  2053. <TD ALIGN="center"><CODE>%x</CODE></TD>
  2054. <TD>本地的日期代称原文Locale's appropriate date representation)</TD>
  2055. </TR>
  2056. <TR>
  2057. <TD ALIGN="center"><CODE>%X</CODE></TD>
  2058. <TD>本地的时间代称</TD>
  2059. </TR>
  2060. <TR>
  2061. <TD ALIGN="center"><CODE>%y</CODE></TD>
  2062. <TD>两位数的年份表示00-99的十进制数</TD>
  2063. </TR>
  2064. <TR>
  2065. <TD ALIGN="center"><CODE>%Y</CODE></TD>
  2066. <TD>完整的年份表示</TD>
  2067. </TR>
  2068. <TR>
  2069. <TD ALIGN="center"><CODE>%%</CODE></TD>
  2070. <TD>百分号%</TD>
  2071. </TR>
  2072. </TABLE>
  2073. <P>
  2074. 示例
  2075. </P>
  2076. <TABLE ALIGN="center" BORDER="1">
  2077. <TR>
  2078. <TH></TH>
  2079. <TH>--&gt;</TH>
  2080. <TH> 2009, Mar 24 at 13:07 的展开效果</TH>
  2081. </TR>
  2082. <TR>
  2083. <TD>%%date(Converted on: %c)</TD>
  2084. <TD ALIGN="center">--&gt;</TD>
  2085. <TD>Converted on: Tue Mar 24 13:07:11 2009</TD>
  2086. </TR>
  2087. <TR>
  2088. <TD>%%date(%Y-%m-%d)</TD>
  2089. <TD ALIGN="center">--&gt;</TD>
  2090. <TD>2009-03-24</TD>
  2091. </TR>
  2092. <TR>
  2093. <TD>%%date(%I:%M %p)</TD>
  2094. <TD ALIGN="center">--&gt;</TD>
  2095. <TD>01:07 PM</TD>
  2096. </TR>
  2097. <TR>
  2098. <TD>%%date(Today is %A, on %B.)</TD>
  2099. <TD ALIGN="center">--&gt;</TD>
  2100. <TD>Today is Tuesday, on March.</TD>
  2101. </TR>
  2102. </TABLE>
  2103. <A NAME="macro-mtime"></A>
  2104. <H2>6.2. %%mtime</H2>
  2105. <P>
  2106. <CODE>%%mtime</CODE> 将被展开为源文件最近一次修改的时间它可算作是<A HREF="#macro-date">%%date</A>姊妹篇其格式指令与之完全相同
  2107. </P>
  2108. <P>
  2109. 举一个例子本文的源文件最近一次修改是在 Tue Mar 24 13:06:52 2009 这一日期由<CODE>%%mtime(%c)</CODE>展开而来
  2110. </P>
  2111. <A NAME="macro-infile"></A>
  2112. <H2>6.3. %%infile</H2>
  2113. <P>
  2114. <CODE>%%infile</CODE>展开为源文件在系统中的路径信息可用于生成html中<I>查看本页面源文件</I>的链接
  2115. </P>
  2116. <P>
  2117. 该宏支持的格式指令如下
  2118. </P>
  2119. <TABLE ALIGN="center" BORDER="1">
  2120. <TR>
  2121. <TH>指令</TH>
  2122. <TH>描述</TH>
  2123. <TH>本文源文件的宏展开输出</TH>
  2124. </TR>
  2125. <TR>
  2126. <TD ALIGN="center"><CODE>%f</CODE></TD>
  2127. <TD>文件名</TD>
  2128. <TD>txt2tags-userguide-zh.t2t</TD>
  2129. </TR>
  2130. <TR>
  2131. <TD ALIGN="center"><CODE>%F</CODE></TD>
  2132. <TD>文件名不含扩展名</TD>
  2133. <TD>txt2tags-userguide-zh</TD>
  2134. </TR>
  2135. <TR>
  2136. <TD ALIGN="center"><CODE>%e</CODE></TD>
  2137. <TD>文件扩展名</TD>
  2138. <TD>t2t</TD>
  2139. </TR>
  2140. <TR>
  2141. <TD ALIGN="center"><CODE>%p</CODE></TD>
  2142. <TD>文件绝对路径</TD>
  2143. <TD>/home/rookie/tmp/editing/t2t-userguide-cn/txt2tags-userguide-zh.t2t</TD>
  2144. </TR>
  2145. <TR>
  2146. <TD ALIGN="center"><CODE>%d</CODE></TD>
  2147. <TD>文件所在目录</TD>
  2148. <TD>/home/rookie/tmp/editing/t2t-userguide-cn</TD>
  2149. </TR>
  2150. <TR>
  2151. <TD ALIGN="center"><CODE>%D</CODE></TD>
  2152. <TD>文件父目录</TD>
  2153. <TD>t2t-userguide-cn</TD>
  2154. </TR>
  2155. <TR>
  2156. <TD ALIGN="center"><CODE>%%</CODE></TD>
  2157. <TD>百分号</TD>
  2158. <TD>%</TD>
  2159. </TR>
  2160. </TABLE>
  2161. <P>
  2162. 示例
  2163. </P>
  2164. <TABLE ALIGN="center" BORDER="1">
  2165. <TR>
  2166. <TH>源代码</TH>
  2167. <TH>--&gt;</TH>
  2168. <TH>展开结果</TH>
  2169. </TR>
  2170. <TR>
  2171. <TD>This Guide parent dir is %%infile(%D).</TD>
  2172. <TD ALIGN="center">--&gt;</TD>
  2173. <TD>This Guide parent dir is t2t-userguide-cn.</TD>
  2174. </TR>
  2175. <TR>
  2176. <TD>I do use the %%infile(%e) file extension.</TD>
  2177. <TD ALIGN="center">--&gt;</TD>
  2178. <TD>I do use the t2t file extension.</TD>
  2179. </TR>
  2180. <TR>
  2181. <TD>[See the source %%infile]</TD>
  2182. <TD ALIGN="center">--&gt;</TD>
  2183. <TD><A HREF="txt2tags-userguide-zh.t2t">See the source</A></TD>
  2184. </TR>
  2185. <TR>
  2186. <TD>Converted to XHTML, I'll be %%infile(%F).xhtml</TD>
  2187. <TD ALIGN="center">--&gt;</TD>
  2188. <TD>Converted to XHTML, I'll be txt2tags-userguide-zh.xhtml</TD>
  2189. </TR>
  2190. </TABLE>
  2191. <BLOCKQUOTE>
  2192. 若源文件为标准输入STDIN则宏展开为-
  2193. </BLOCKQUOTE>
  2194. <P></P>
  2195. <A NAME="macro-outfile"></A>
  2196. <H2>6.4. %%outfile</H2>
  2197. <P>
  2198. <CODE>%%outfile</CODE>将展开为目标文件的路径可用于将文件名包含于文档的头部和主体内它可算作是<A HREF="#macro-infile">%%infile</A>姊妹篇格式指令也完全相同
  2199. </P>
  2200. <P>
  2201. 示例
  2202. </P>
  2203. <TABLE ALIGN="center" BORDER="1">
  2204. <TR>
  2205. <TH>源代码</TH>
  2206. <TH>--&gt;</TH>
  2207. <TH>展开结果</TH>
  2208. </TR>
  2209. <TR>
  2210. <TD>You are reading the %%outfile file.</TD>
  2211. <TD ALIGN="center">--&gt;</TD>
  2212. <TD>You are reading the txt2tags-userguide-zh.html file.</TD>
  2213. </TR>
  2214. <TR>
  2215. <TD>txt2tags -t %%outfile(%e) -i %%infile -o %%outfile</TD>
  2216. <TD ALIGN="center">--&gt;</TD>
  2217. <TD>txt2tags -t html -i txt2tags-userguide-zh.t2t -o txt2tags-userguide-zh.html</TD>
  2218. </TR>
  2219. </TABLE>
  2220. <BLOCKQUOTE>
  2221. 若输出为标准输出STDOUT则宏展开为-
  2222. </BLOCKQUOTE>
  2223. <P></P>
  2224. <A NAME="macro-toc"></A>
  2225. <H2>6.5. %%toc</H2>
  2226. <P>
  2227. <CODE>%%toc</CODE>将展开为目录表你可以把它放在文档主体域内的任何地方甚至不止使用一次比如你可以把它放在文档的末尾本指南就是使用这个宏来放置了目录表
  2228. </P>
  2229. <P>
  2230. 与其他的宏不同<CODE>%%toc</CODE>没有格式字串而使用规则也有不同
  2231. </P>
  2232. <UL>
  2233. <LI>只在文档主体域中可用
  2234. <LI>必须独占一行前后可以有空格
  2235. <LI>必须与命令行选项<CODE>--toc</CODE>配合使用否则将被忽略
  2236. <LI>如果使用了<CODE>%%toc</CODE>缺省的目录表位置和格式将被覆盖
  2237. <P></P>
  2238. <HR NOSHADE SIZE=1>
  2239. </UL>
  2240. <A NAME="settings"></A>
  2241. <H1>7. 第七部分 设定</H1>
  2242. <P>
  2243. 设定项位于文档的设置域内在转换执行时生效设定项均为可选的普通用户完全可以不使用它们而完成所有工作然而一旦你学会使用设定项我打赌你一定会上瘾因为它们实在太好用了
  2244. </P>
  2245. <P>
  2246. 设定行是特殊的注释行由一个!引导以此区别于普通的注释行设定项的语法很简单由关键词和值构成二者由一个冒号:分隔
  2247. </P>
  2248. <TABLE ALIGN="center" BORDER="1">
  2249. <TR>
  2250. <TH>%! keyword : value</TH>
  2251. </TR>
  2252. </TABLE>
  2253. <P>
  2254. 语法细节
  2255. </P>
  2256. <UL>
  2257. <LI>%!要写在一起中间不能有空格且置于行首
  2258. <LI>关键词和分隔符之间可以有空格
  2259. <LI>关键词和值均不区分大小写
  2260. </UL>
  2261. <P>
  2262. 规则
  2263. </P>
  2264. <UL>
  2265. <LI>只有位于设置域内的设定项才生效而位于主体域内的设定项将被视为普通的注释文本
  2266. <LI>若相同关键词的设定项在设置域内出现多次则使用最后一次的设定例外options, preproc和 postproc这三个设定是累积的
  2267. <LI>关键词写错的设定被视为普通注释文本
  2268. <LI>设定项的优先级高于RC文件但低于命令行选项
  2269. </UL>
  2270. <A NAME="setting-target"></A>
  2271. <H2>7.1. %!Target</H2>
  2272. <P>
  2273. 用来定义缺省的目标文件格式
  2274. </P>
  2275. <PRE>
  2276. %!target: html
  2277. </PRE>
  2278. <P>
  2279. 此时用户只需调用命令
  2280. </P>
  2281. <PRE>
  2282. $ txt2tags file.t2t
  2283. </PRE>
  2284. <P>
  2285. 即可将文档转换为预设的目标格式
  2286. </P>
  2287. <P>
  2288. 本设定不支持指定可选的特定目标格式原文optional target specification比如<CODE>%!target(tex): html</CODE> 是无效的
  2289. </P>
  2290. <A NAME="setting-options"></A>
  2291. <H2>7.2. %!Options</H2>
  2292. <P>
  2293. 每次都输入冗长的命令行选项既累人又容易出错使用Options设定项用户可将转换选项与源文件放在一起这同时也利于确保文档总能以相同的选项和相同的方式转换
  2294. </P>
  2295. <P>
  2296. 书写这些选项时请确保不要有语法错误就像使用命令行方式一样当然对程序txt2tags的调用目标格式的指定和源文件名就不必写进来了
  2297. </P>
  2298. <P>
  2299. 比如假设你在命令行进行如下的转换
  2300. </P>
  2301. <PRE>
  2302. $ txt2tags -t html --toc --toc-level 2 --enum-title file.t2t
  2303. </PRE>
  2304. <P>
  2305. 把这些选项写入源文件
  2306. </P>
  2307. <PRE>
  2308. %!target: html
  2309. %!options(html): --toc --toc-level 2 --enum-title
  2310. </PRE>
  2311. <P>
  2312. 现在你只需简单的使用命令``txt2tags file.t2t即可达到同样的目的这样也便于你在编辑器中执行转换比如在Vi里面可以这样调用
  2313. </P>
  2314. <PRE>
  2315. :!txt2tags %
  2316. </PRE>
  2317. <P></P>
  2318. <A NAME="setting-encoding"></A>
  2319. <H2>7.3. %!Encoding</H2>
  2320. <P>
  2321. Encoding选项为非英语用户所需因为他们需要使用本地语言的某些特殊字符以及细节因此目标文件的<B>字符集</B>需要自行指定如果允许的话
  2322. </P>
  2323. <P>
  2324. 有效的Encoding值与HTML所使用的<B>字符集</B>名称相同比如<I>iso-8859-1koi8-r</I>如果你对此不确定可以参见<A HREF="http://www.iana.org/assignments/character-sets">完整的字符集列表</A>
  2325. </P>
  2326. <P>
  2327. LaTeX使用的是字符集的别名这对于用户来说并不是问题因为txt2tags会替你完成名称的转换比如
  2328. </P>
  2329. <TABLE ALIGN="center" BORDER="1">
  2330. <TR>
  2331. <TH>txt2tags/HTML</TH>
  2332. <TH>&gt;</TH>
  2333. <TH>LaTeX</TH>
  2334. </TR>
  2335. <TR>
  2336. <TD>windows-1250</TD>
  2337. <TD>&gt;&gt;&gt;</TD>
  2338. <TD>cp1250</TD>
  2339. </TR>
  2340. <TR>
  2341. <TD>windows-1252</TD>
  2342. <TD>&gt;&gt;&gt;</TD>
  2343. <TD>cp1252</TD>
  2344. </TR>
  2345. <TR>
  2346. <TD>ibm850</TD>
  2347. <TD>&gt;&gt;&gt;</TD>
  2348. <TD>cp850</TD>
  2349. </TR>
  2350. <TR>
  2351. <TD>ibm852</TD>
  2352. <TD>&gt;&gt;&gt;</TD>
  2353. <TD>cp852</TD>
  2354. </TR>
  2355. <TR>
  2356. <TD>iso-8859-1</TD>
  2357. <TD>&gt;&gt;&gt;</TD>
  2358. <TD>latin1</TD>
  2359. </TR>
  2360. <TR>
  2361. <TD>iso-8859-2</TD>
  2362. <TD>&gt;&gt;&gt;</TD>
  2363. <TD>latin2</TD>
  2364. </TR>
  2365. <TR>
  2366. <TD>koi8-r</TD>
  2367. <TD>&gt;&gt;&gt;</TD>
  2368. <TD>koi8-r</TD>
  2369. </TR>
  2370. </TABLE>
  2371. <P>
  2372. 就算设定的值txt2tags无法识别也可以通过反正由用户自行定制
  2373. </P>
  2374. <A NAME="setting-preproc"></A>
  2375. <H2>7.4. %!PreProc</H2>
  2376. <P>
  2377. PreProc选项在源文件读入后还没解析前进行查找和替换的工作
  2378. </P>
  2379. <P>
  2380. 可以用来定义一些常用词的缩写
  2381. </P>
  2382. <PRE>
  2383. %!preproc JJS "John J. Smith"
  2384. %!preproc RELEASE_DATE "2003-05-01"
  2385. %!preproc BULLET "[images/tiny/bullet_blue.png]"
  2386. </PRE>
  2387. <P></P>
  2388. <P>
  2389. 源文档中的一行
  2390. </P>
  2391. <PRE>
  2392. Hi, I'm JJS. Today is RELEASE_DATE.
  2393. </PRE>
  2394. <P>
  2395. txt2tags在进行转换时会将其视为
  2396. </P>
  2397. <PRE>
  2398. Hi, I'm John J. Smith. Today is 2003-05-01.
  2399. </PRE>
  2400. <P></P>
  2401. <P>
  2402. 这相当于对源文件调用外部Sed/Perl进行过滤然后传给txt2tags
  2403. </P>
  2404. <PRE>
  2405. $ cat file.t2t | preproc-script.sh | txt2tags -
  2406. </PRE>
  2407. <P>
  2408. txt2tags在PreProc处理结束后开始对源文件进行解析
  2409. </P>
  2410. <BLOCKQUOTE>
  2411. 预处理仅仅对主体域进行不会包含头部域和设置域
  2412. </BLOCKQUOTE>
  2413. <P></P>
  2414. <A NAME="setting-postproc"></A>
  2415. <H2>7.5. %!PostProc</H2>
  2416. <P>
  2417. PostProc选项在txt2tags进行解析和处理结束后对于转换后的内容进行查找和替换的工作
  2418. </P>
  2419. <P>
  2420. 可以用来对生成的文档进行进一步加工和微调比如修改标记添加额外的文本和标记等等比如
  2421. </P>
  2422. <PRE>
  2423. %!postproc(html): '&lt;BODY.*?&gt;' '&lt;BODY BGCOLOR="green"&gt;'
  2424. %!postproc(tex) : "\\newpage" ""
  2425. </PRE>
  2426. <P>
  2427. 作用是讲HTML文件的背景颜色改为绿色以及移除LaTeX文件里的分页符
  2428. </P>
  2429. <P>
  2430. 这相当于对转换后的内容调用外部Sed/Perl进行过滤再生成目标文件
  2431. </P>
  2432. <PRE>
  2433. $ txt2tags -t html -o- file.t2t | postproc-script.sh &gt; file.html
  2434. </PRE>
  2435. <P></P>
  2436. <P>
  2437. 在引入这一特性前我们往往得使用一些小脚本来调整txt2tags处理的结果这些脚本实际上多是大量的sed或类似工具替换命令现在这些繁琐的替换字符串可以放在文件中并使用Python强大的正则表达式机制来进行匹配和处理
  2438. </P>
  2439. <A NAME="setting-style"></A>
  2440. <H2>7.6. %!Style</H2>
  2441. <UL>
  2442. <LI>用于在HTML和XHTML目标文件中指定样式表文件
  2443. <LI>用于在LaTeX目标文件中使用<CODE>\usepackage</CODE>加载宏包
  2444. <LI>效果等同于命令行选项 <CODE>--style</CODE>
  2445. <LI>命令行选项 <CODE>--style</CODE> 优先级高于设定项 <CODE>%!style</CODE>
  2446. </UL>
  2447. <A NAME="setting-specific"></A>
  2448. <H2>7.7. 针对特定的目标格式进行设定</H2>
  2449. <P>
  2450. 除了<CODE>%!target</CODE>之外的所有设定项均可作用于某一特定的目标格式语法如<CODE>%!key(target): value</CODE>这使得用户可以针对不同的目标格式进行不同的设置
  2451. </P>
  2452. <P>
  2453. 这一特性对所有支持它的设定项都有效只不过在Pre/PostProc过滤器中显得尤其有用举个例子你可以对HTML和LaTeX文件设定不同的样式
  2454. </P>
  2455. <PRE>
  2456. %!style(html): fancy.css
  2457. %!style(tex) : amssymb
  2458. </PRE>
  2459. <P></P>
  2460. <P>
  2461. 这一特性使得用户便于对转换后的文件进行微调
  2462. </P>
  2463. <PRE>
  2464. %!target: sgml
  2465. %!options(sgml): --toc
  2466. %!options(html): --style foo.css
  2467. %!options(txt ): --toc-only --toc-level 2
  2468. </PRE>
  2469. <P>
  2470. 在这个例子中缺省的目标格式为SGML并且生成目录表如果用户调用命令``txt2tags -t html file.t2t则仅仅使用针对HTML定义的选项生成的文件会使用外联的样式表foo.css并且不生成目录表
  2471. </P>
  2472. <A NAME="setting-filter-details"></A>
  2473. <H2>7.8. 关于PreProc和PostProc过滤器的一些细节</H2>
  2474. <UL>
  2475. <LI>按行进行查找和替换类似与Sed
  2476. <LI>后定义的过滤器不会覆盖先定义的过滤器而是累加的因此你可以定义许多过滤器它们会按照定义的顺序依次执行
  2477. <LI>与其他的设定项不同一般的和针对特定目标格式的过滤器均会被执行在下面这个例子中两个过滤器均会作用于HTML目标文件上
  2478. <PRE>
  2479. %!postproc : this that
  2480. %!postproc(html): that other
  2481. </PRE>
  2482. <LI>过滤器必须指定<B>两个</B>参数
  2483. <LI>特定的转义字符如换行符<CODE>\n</CODE>和制表符<CODE>\t</CODE>均将被解释
  2484. <LI>利用空字符进行替换实现删除文本的功能
  2485. <PRE>
  2486. %!postproc: "undesired string" ""
  2487. </PRE>
  2488. <LI>使用PostProc替换标签时最好总是指明对应的目标格式以避免出现问题``%!PostProc(target): &lt;thsi&gt; &lt;that&gt;
  2489. <LI>PreProc在行读入后立即起作用而PostProc则是在所有的解析和处理过程结束后起作用他们起作用的位置相当于
  2490. <PRE>
  2491. $ cat file.t2t | preproc.sh | txt2tags | postproc.sh
  2492. </PRE>
  2493. <LI>过滤器的查找过程使用正则表达式而不是常规字符串不理解什么是正则表达式也没关系你只需记得某些特殊字符要使用反斜线\来进行转义就够了这些特殊字符包括
  2494. <PRE>
  2495. \* \+ \. \^ \$ \? \( \) \{ \[ \| \\
  2496. </PRE>
  2497. <LI>支持Python的正则表达式与Perl的正则表达式相似比如在HTML中把标签B都替换为标签STRONG
  2498. <PRE>
  2499. %!postproc(html): '(&lt;/?)B&gt;' '\1STRONG&gt;'
  2500. </PRE>
  2501. <LI>过滤器参数有3种方式进行传递
  2502. <OL>
  2503. <LI>单个未加引号的单词诸如FOO不含空格
  2504. <LI>放在双引号中的字符串诸如"FOO"
  2505. <LI>放在单引号中的字符串诸如'FOO'
  2506. </OL>
  2507. <LI>如果模式表达式包含双引号将它放在一对单引号中保护起来反之亦然一些合法的模式表达式示例
  2508. <PRE>
  2509. %!postproc: PATT REPLACEMENT
  2510. %!postproc: "PATT" "REPLACEMENT"
  2511. %!postproc: 'PATT' 'REPLACEMENT'
  2512. %!postproc: PATT "REPLACEMENT"
  2513. %!postproc: "PATT" 'REPLACEMENT'
  2514. </PRE>
  2515. </UL>
  2516. <A NAME="black-magic"></A>
  2517. <H1>8. 第八部分 黑魔法</H1>
  2518. <P>
  2519. 本章不推荐初级用户阅读我们将在txt2tags的过滤器中使用一些复杂的模式和正则表达式以此来实现一些奇怪的功能
  2520. </P>
  2521. <BLOCKQUOTE>
  2522. <B>请注意</B>执行以下过程前建议谨慎它们可能坏事甚至于源文件中的某些文本在转换中会丢失而不会出现在目标文件中请在仅当你确实需要并且明白自己在干什么的情况下才使用这些技巧
  2523. </BLOCKQUOTE>
  2524. <P></P>
  2525. <BLOCKQUOTE>
  2526. <B></B>过滤器是强大却也危险的特性
  2527. 错误的过滤器会差生意想不到的结果
  2528. </BLOCKQUOTE>
  2529. <P></P>
  2530. <P>
  2531. 请切记
  2532. </P>
  2533. <A NAME="postproc-multiline"></A>
  2534. <H2>8.1. 使用%!PostProc插入多行文本比如CSS规则</H2>
  2535. <P>
  2536. 过滤器中用于替换的模式表达式可以包含多行 <CODE>\n</CODE> 作为换行符
  2537. 这便于在HTML目标文件中插入少量几行CSS规则而毋需创建一个独立的外联样式表
  2538. </P>
  2539. <PRE>
  2540. %!postproc: &lt;HEAD&gt; '&lt;HEAD&gt;\n&lt;STYLE TYPE="text/css"&gt;\n&lt;/STYLE&gt;'
  2541. %!postproc: (&lt;/STYLE&gt;) 'body { margin:3em ;} \n\1'
  2542. %!postproc: (&lt;/STYLE&gt;) 'a { text-decoration:none ;} \n\1'
  2543. %!postproc: (&lt;/STYLE&gt;) 'pre,code { background-color:#ffffcc ;} \n\1'
  2544. %!postproc: (&lt;/STYLE&gt;) 'th { background-color:yellow ;} \n\1'
  2545. </PRE>
  2546. <P>
  2547. 如此其余的过滤器通过替换一个插入的字符串而与第一个过滤器联系起来现在原来简单的一个&lt;HEAD&gt;变成了
  2548. </P>
  2549. <PRE>
  2550. &lt;HEAD&gt;
  2551. &lt;STYLE TYPE="text/css"&gt;
  2552. body { margin:3em ;}
  2553. a { text-decoration:none ;}
  2554. pre,code { background-color:#ffffcc ;}
  2555. th { background-color:yellow ;}
  2556. &lt;/STYLE&gt;
  2557. </PRE>
  2558. <P></P>
  2559. <A NAME="preproc-specific"></A>
  2560. <H2>8.2. 使用%!PreProc创建特定目标类型的内容</H2>
  2561. <P>
  2562. 有时候你打算在某一特定格式的目标文件中插入一些文本而其他的格式则不作改变这一目标可以通过PreProc的一些小技巧来实现
  2563. </P>
  2564. <P>
  2565. 方法是将这些文本作为注释插入源文件中做上一些标记而使用针对特定目标格式的过滤器将它们反注释
  2566. </P>
  2567. <P>
  2568. 举个例子来说我们想要在HTML输出中加入一个额外的段落于是把这些文本写成特殊的注释行比如
  2569. </P>
  2570. <PRE>
  2571. %html% This HTML page is Powered by [txt2tags http://txt2tags.org].
  2572. %html% See the source TXT file [here source.t2t].
  2573. </PRE>
  2574. <P></P>
  2575. <P>
  2576. 这些行以%开头属于普通的注释行在转换时被忽略掉但是当你添加一个过滤器之后
  2577. </P>
  2578. <PRE>
  2579. %!preproc(html): '^%html% ' ''
  2580. </PRE>
  2581. <P></P>
  2582. <P>
  2583. 通过显示的声明这一过滤器仅仅在HTML作为目标格式时被应用于是开头的百分号被移除这些行被激活不再是注释
  2584. </P>
  2585. <A NAME="creating-marks"></A>
  2586. <H2>8.3. 使用%!PreProc改变txt2tags标记</H2>
  2587. <P>
  2588. 对于某些正则表达式控来说他可以自行定制源文件的语法将txt2tags的默认标记修改为自己喜欢的标记
  2589. </P>
  2590. <P>
  2591. 举个例子位于行首的制表符是默认的引用标记如果用户不喜欢或者其编辑器关于制表符有奇怪的设定他可以定义一个新的标记来标记引用域比如他选择用用位于行首的&gt;&gt;&gt;来作为引用标记那么他只需定义一个简单的过滤器
  2592. </P>
  2593. <PRE>
  2594. %!PreProc: '&gt;&gt;&gt; ' '\t'
  2595. </PRE>
  2596. <P></P>
  2597. <P>
  2598. 源文件里面的引用文本形如
  2599. </P>
  2600. <PRE>
  2601. &gt;&gt;&gt; This is a quoted text.
  2602. &gt;&gt;&gt; The user defined this strange mark.
  2603. &gt;&gt;&gt; But they will be converted to TABs by PreProc.
  2604. </PRE>
  2605. <P></P>
  2606. <P>
  2607. 在解析之前这些诡异的&gt;&gt;&gt;符号会被自动的替换为制表符txt2tags则识别出引用标记
  2608. </P>
  2609. <BLOCKQUOTE>
  2610. <B>请注意</B>极端的PreProc规则会改变整个标记语法甚至会在标记之前产生冲突因此在使用前务必小心谨慎
  2611. </BLOCKQUOTE>
  2612. <P></P>
  2613. <HR NOSHADE SIZE=1>
  2614. <P></P>
  2615. <A NAME="history"></A>
  2616. <H1>9. 第九部分 软件历史</H1>
  2617. <P>
  2618. Txt2tags的第一个公开发布的版本 version 0.1 是在2001年7月然而其原型则比这个时间早上至少一年
  2619. </P>
  2620. <P>
  2621. 本章将带领你纵览软件从最初的原型到当前版本的发展过程
  2622. </P>
  2623. <A NAME="toc66"></A>
  2624. <H2>9.1. 1999年1月史前历史</H2>
  2625. <DL>
  2626. <DT>作者曰</DT><DD>
  2627. 我最初关于编写一个文本转换工具的尝试始于1999年起初只是一个简单的功能有限的Bourne Shell脚本用来将标记文本转换为HTML页哦是的不过是又一个txt2html的工具已经有无数人干过这个事情了简单的说它只能识别简单的标记比如 <CODE>*bold*</CODE><CODE>/italic/</CODE><CODE>_under_</CODE>以及转义典型的HTML特殊字符如 <CODE>&lt; &amp; &gt;</CODE>不怎样对吧但是我还年轻呢;)
  2628. </DL>
  2629. <A NAME="toc67"></A>
  2630. <H2>9.2. 1999年6月依然是史前历史</H2>
  2631. <DL>
  2632. <DT>作者还想说</DT><DD>
  2633. 几个月过后关于SGML的宣传铺天盖地的淹没了我所任职的 Conectiva 公司于是原来的txt2html变成了txt2sgml脚本那时我正在学习SED因此txt2sgml就成了一个110行的Bourne Shell脚本其中包含了许多SED命令
  2634. </DL>
  2635. <BLOCKQUOTE>
  2636. SED是UNIX下的流编辑器用来进行文本的自动化编辑
  2637. </BLOCKQUOTE>
  2638. <P></P>
  2639. <P>
  2640. 这一改进后的SGML版本支持更多的文档结构比如列表完全引用域等在下面这个示例中已经可以看到txt2tags标记的雏形了
  2641. </P>
  2642. <PRE>
  2643. * This was a bold line (BOLD line oriented? Well...)
  2644. --
  2645. - bullet list was very similar to txt2tags list
  2646. - but with these -- to begin and close a list
  2647. --
  2648. =----------------------
  2649. Verbatim text was delimited by the =-- pattern.
  2650. The other ------- were just cosmetic.
  2651. =----------------------
  2652. </PRE>
  2653. <P></P>
  2654. <P>
  2655. 依然不怎样对吧但是接下来就是划时代的一步了
  2656. </P>
  2657. <A NAME="toc68"></A>
  2658. <H2>9.3. 2000年8月不再是史前历史了</H2>
  2659. <DL>
  2660. <DT>作者又说</DT><DD>
  2661. 一年以后那时我完全爱上了SED于是我将 txt2sgml.sh 脚本重写变成了一个包含350行的纯粹的SED脚本一些激动人心的特性被加入进来比如subsectionURL识别和子列表列表嵌套我用了将近一整年的时间来使用和改进这个脚本
  2662. </DL>
  2663. <P>
  2664. 一个txt2sgml.sed的示例文件
  2665. </P>
  2666. <PRE>
  2667. * Hey, here are the first 3 magic lines
  2668. * The document title / author / date
  2669. * But they required those asterisks at the beginning
  2670. MAIN TITLE
  2671. Titles were made by uppercase-only lines. Subtitles were identified by
  2672. leading spaces. Each space denoted a new sublevel. The beautifiers:
  2673. *bold*, **strong**, "italic" and `typewriter`.
  2674. - lists
  2675. + sublists
  2676. = and subsublists (by identifier, not indentation)
  2677. Two blank lines to close lists. Links as www.example.com and e-mails
  2678. were recognized automagically by regular expressions. And there was a
  2679. strange image mark:
  2680. %%image: path/to/image.jpg
  2681. </PRE>
  2682. <P></P>
  2683. <A NAME="toc69"></A>
  2684. <H2>9.4. 2001年5月Python化和多目标格式的想法</H2>
  2685. <DL>
  2686. <DT>现在是谁在说话呢</DT><DD>
  2687. 那时我开始动笔写<A HREF="http://guia-er.sf.net/">Regular Expression book</A>这本书我仍然使用txt2sgml.sed的标记文本格式将文件转换为SGML格式然后用sgml2html工具转换为HTML再在浏览器中快速的检查结果因为快速sgml2html并不相符我将自己的SED脚本修改为txt2html.sed工具用来直接产生HTML文档可是出版商使用Adobe PageMaker来排版书籍这可苦了我这样的Linux用户幸好我发现PageMaker使用的是一种类似于HTML的标记语言于是最后我写了三个相似的SED脚本用来将文本转换为SGMLHTML和PageMaker此外还用一些Shell脚本来生成目录表以及进行一些后处理书写到一半的时候我产生了将这些单一小工具合并起来的想法并且选择用Python来完成这一工作于是TXT2TAGS诞生了
  2688. </DL>
  2689. <A NAME="toc70"></A>
  2690. <H2>9.5. 2001年7月0.x系列txt2tags的处女秀公开发布</H2>
  2691. <DL>
  2692. <DT>是的就是他在说</DT><DD>
  2693. 我的那本书的发行时间7月31日与txt2tags的第一个版本0.1版的发布时间7月26日只相隔几天其中一个依赖于另一个却是一起成长的除了SGMLHTML和PageMaker之外其他的目标格式也一并实现了MoinMoinMagicPoint以及纯文本接下去的一年多时间里0.x系列的更多版本发布了程序也逐渐长大新的目标格式 UNIX手册页<CODE>%%date</CODE>表格支持基于网页的使用接口图片智能对齐和生成目录表这些功能一一实现在0.2版本中一个Shell脚本被添加进来作为外包进行文件操作和命令行选项的处理这样做的原因无非是因为我是个Shell老手却是一个Python菜鸟一直到0.9版本txt2tags才又回到100%的Python代码
  2694. </DL>
  2695. <A NAME="toc71"></A>
  2696. <H2>9.6. 2002年9月1.x系列成长</H2>
  2697. <DL>
  2698. <DT>你是否已经没耐心听下去了</DT><DD>
  2699. txt2tags的设想被证明是好的我决定认真的来对待之需要进行的下一步是散发程序将它告诉全世界我需要文档于是程序的网站上线了邮件列表英语和葡萄牙语建立起来用户指南也诞生了用户群成长起来并且为项目作出许多贡献是的我想这证明这玩意儿是有用的1.x版本添加的新特性包括图形用户接口GUIWindows和Mac系统的移植LaTeX目标格式<CODE>%!style</CODE>设定项<CODE>include</CODE>命令和强大的Pre/Post过滤器
  2700. </DL>
  2701. <A NAME="toc72"></A>
  2702. <H2>9.7. 2004月7月2.x系列成熟</H2>
  2703. <DL>
  2704. <DT>好吧我也说得口干舌燥了</DT><DD>
  2705. 成长是奇特而又艰难的我说过我是个Python菜鸟对吧现在我变强了然而过往的错误累积起来于是无可避免的源代码必须动一次大手术这一次重写使得一些标记的兼容性变差了于是我得创建一个升级脚本这一次耗费了很长的时间但是2.0版本终于还是发布了它带来了数不清的新特性诸如XHTML目标格式W3C验证码i18n以及RC文件翻译团队将程序本身以及文档翻译成多种语言LOUT目标格式被添加进来此外还有新的宏<CODE>%%mtime</CODE><CODE>%%infile</CODE><CODE>%%outfile</CODE>以及<CODE>%%toc</CODE>未完待续
  2706. </DL>
  2707. <P>
  2708. The End
  2709. (<A HREF="txt2tags-userguide-zh.t2t">查看源文件</A>)
  2710. <IMG ALIGN="middle" SRC="./img/t2tpowered.png" BORDER="0" ALT="">
  2711. </P>
  2712. <HR NOSHADE SIZE=5>
  2713. <P>
  2714. 译文最后一次修订于2009-03-24 13:06:52
  2715. </P>
  2716. </DIV>
  2717. <!-- html code generated by txt2tags 2.5 (http://txt2tags.org) -->
  2718. <!-- cmdline: txt2tags tmp/editing/t2t-userguide-cn/txt2tags-userguide-zh.t2t -->
  2719. </BODY></HTML>