阿九文本(a9text)介绍和演示 ^^^^^^^^^^^^^^^^^^^^^^^^^^ - 作者: 史荣久(trydofor.com) - 授权: 共同创作 - 创建: 2007-09-06 - 修改: 2007-09-06 \- 这个是info的转义,被解析成列表 ================================================== 0. 目录 ^^^^^^^^ [[<=$INDEX]] 1. 自述 ^^^^^^^ 1.1. 缘起 ^^^^^^^^^ 想了很久,也不知道怎么给a9text一个确切的定义,因为它本身就缘起于 比较另类的需求----个人的需求,就是为了写手册和文档,简单的, 方便阅读,修改和使用的,而且能适应cvs进行版本比较. 这样office不适合;wiki很简洁,但需要服务器支持;docbook就更不用说了... 有一些优秀的东西进入了我的视野,比如asciidoc,但是还不够个性化. 因为手册和文档,经常有命令,代码,最好能够标亮,而且如果有密码等,还需要加密. 在上面的特定环境下,便跌跌撞撞的有了a9text的想法. 目前,a9text支持了所有上面提到的内容,而且方便到只要有记事本,浏览器, 就可以轻松的读写你自己的手册 :D 1.2. 描述 ^^^^^^^^^ a9text是一组文本格式的定义,实现和工具,使text文档的阅读,书写和转换更加便利. 如果我不能够用非常简练的一句话来描述a9text,那么也就不能很好的让大家理解. 当然,a9text不是产品,只是希望和我有同样需求的人能更自由些. 1.3. 特点 ^^^^^^^^^ * 纯文本的,不依赖于平台和语言. * 编码是UTF-8的,否则可能出现乱码. * 保持text基本特征(如换行),即文本就是好的文档. * 绿色的,不需要安装程序和垃圾文件. 1.4. 功能 ^^^^^^^^^ * 文字修饰,加粗,倾斜,下划,删除等.[[=>#SECT:2.]] * 链入,用来合并文本,导入图片,动画等[[=>#SECT:2.2.]] * 链出/锚点,用来在文章内导航和指向外部链接[[=>#SECT:2.3.]] * 字典和提示,用来定义和解说[[=>#SECT:4.]] * 列表(无序)和步骤(有序).[[=>#SECT:6.]] * 段落和章节管理(目录生成).[[=>#SECT:3.]] * 区域扩展,目前支持表格,源代码,AES加密等.[[=>#SECT:8.]] 1.5. 补充 ^^^^^^^^^ 本文档只是一些演示和简单应用,更详细和精确的说明,请参考[[a9text3.2定义=>./a9text-spec_3.2.txt]] 其中,包括字符,空白,缩排,行,转义等都有明确说明. 2. 模式演示 ^^^^^^^^^^^ 2.1. 修饰模式 ^^^^^^^^^^^^^ \[![加粗]][![加粗]] \[/[倾斜]][/[倾斜]] \[_[下划]][_[下划]] \[-[删除]][-[删除]] \['[上标]]['[上标]] \[,[下标]][,[下标]] \[%150[放大150]][%150[放大150]] \[#FF0000[前景红色]][#FF0000[前景红色]] \[&00FF00[背景绿色]][&00FF00[背景绿色]] \[!/_%150#FF0000&00FF00[背景绿色前景红色加粗倾斜下划放大150]]\ [!/_%150#FF0000&00FF00[背景绿色前景红色加粗倾斜下划放大150]] 2.2. 链入模式 ^^^^^^^^^^^^^ 在下行插入todos.txt的内容 [[<=../../../impl_javascript/todos.txt]] 在下行插入图片(gif/png/jpg/bmp) [[<=../../../a9text.png]] [[<=../../../a9text.png]] <== 这个是文字环绕的图片, 当文字折行的时候,你可以看到效果,如果不折行, 就会和图片在同一行啦 :) 在下行插入flash(swf) [400*200[learn2earn<=../../../res/private/learn2earn.swf]] 链入的图片或flash如果有名字,将可以被作为锚点引用. 一般说法,就是"如xxxx图所示". 引入变量"作者":[[<=$作者]] 2.3. 链出模式 ^^^^^^^^^^^^^ 简化形式 http: http://a9text.sf.net ftp: ftp://admin@127.0.0.3/ mail: admin@trydofor.com 常规套路 \[[=>地址]][[=>地址]] \[[显示名=>地址]][[显示名=>地址]] 以图片链接到swf [[<=../../../a9text.png=>../../../res/private/learn2earn.swf]] 显示名和链接地址不同 [[a9text-spec_3.2=>./a9text-spec_3.2.txt]] [[home=>http://a9text.sf.net]] 锚点 定义锚点anchor [[anchor=>]] 使用章节名到"5.章节"的链接 [[=>#SECT:5.]] 使用"第5节"到"5.章节"的链接 [[第5节=>#SECT:5.]] 使用字典名到"多行字典"的链接 [[=>#DICT:多行字典]] 使用"字典"到"多行字典"的链接 [[字典=>#DICT:多行字典]] 使用区域名到"代码1"区域的链接 [[=>#AREA:代码1]] 使用"端口映射"到"代码1"区域的链接 [[端口映射=>#AREA:代码1]] 使用锚点名到"自定义锚点"的链接 [[=>#HASH:自定义锚点]] 使用"我的锚点"到"自定义锚点"的链接 [[我的锚点=>#HASH:自定义锚点]] 使用链入名到"learn2earn"的链接 [[=>#JOIN:learn2earn]] 使用"学与得"到"learn2earn"的链接 [[学与得=>#JOIN:learn2earn]] a9text元素的锚点链接,有一些规则. #SECT:章节序号 #DICT:字典关键字 #AREA:区域名字 #HASH:锚点名 #JOIN:链入图片或flash的名称 2.4. HTML模式 ^^^^^^^^^^^^ [*htm[]] 2.5. 混合模式 ^^^^^^^^^^^^^ [!/-%150#FF0000&00FF00[背景绿色前景红色加粗['[上标]]倾斜删除线]]普通文字,带]]的 ]]]]]]]]]]]]]][!/_%150#FF0000&00FF00[背景绿色前景红色加粗['[上标]]倾斜下划 ]]普通文字,带]]的 2.6. 综合 ^^^^^^^^^ 文本模式[!#FF0000[前景红色加粗[[显示名=> 地址]]]][[<= ./readme.txt]][!/_%150#FF0000&00FF00[ 背景绿色前景红色加粗倾斜下划]] 3. 段落演示 ^^^^^^^^^^^ 3.1. 物理行 ^^^^^^^^^^^ 这是一个物理行,没有' '和奇数个'\'在行尾 3.2. 空行和分割线 ^^^^^^^^^^^^^^^^^ -------------------- ==================== #################### 3.3. 软换行 ^^^^^^^^^^^ 以空格表示的软换行(1' ') 以空格表示的软换行(2' ') 以反斜线表示的软换行(1'\')\ 以反斜线表示的软换行(3'\')\\\ 以上会合成一个物理行. 这个不是软换行(2\)\\ 这个是物理行. 3.4. 综合 ^^^^^^^^^ 会自动合并软换行的综合段落:\ [![加粗显示名=> 地址]][[<= ./readme.txt]][!/_%150#FF0000&00FF00[ 背景绿色前景红色加粗倾斜下划]] [[自定义锚点=>]] 4. 字典演示 ^^^^^^^^^^^ 作者:: 臭豆腐[trydofor] 多行字典:: 对应的字典值 可以通过\[[<=$关键字]]引入到当前位置. 关键字中不能包":]". 换行字典:: 换行了的内容 [![还可以放加粗模式]] 这才是第二行. 带冒号的字典 ::: 能看到冒号吧. 4.1. 提示 ^^^^^^^^^ 提示是特殊的字典,不能被引用,不自动缩排. [NOTE]:: 单行提示. [WARN]:: 提示不支持自动缩排, 保留文本原来的缩进,这是考虑到作者的自由排版. [NOTE :: 这不是字典. NOTE] :: 这也不是字典. 5. 区域演示 ^^^^^^^^^^^ 区域是需要扩展支持的,通用格式如下, 其中name用来作为锚点引用,但不显示.结束线可以被转义. =========== text name : info ============== args: arg1; arg2=val2; arg3=val3 \================================================ 上面是转义的横线,下面才是真正的结束 ================================================= a9text所支持的区域演示,请参见[[=>#SECT:8.]] 6. 列表演示 ^^^^^^^^^^^ 6.1. 条目 ^^^^^^^^ *) 条目1条目1条目1条目1条目1条目1条目1条目1条目1条目1条目1条目1条目1条目1条目1条目1条目1条目1条目1条目1条目1条目1条目1条目1条目1条目1条目1条目1条目1 *) 条目2-1 条目2-2 *) 条目3 * 条目实心点 + 实心方块 - 空心圈 6.2. 步骤 ^^^^^^^^ 1. 步骤1 2) 步骤2 a. 步骤a b) 步骤b A. 步骤A B) 步骤B 6.3. 嵌套 ^^^^^^^^ 1) 步骤1 2) 步骤2 3) 步骤2-1 *) 二级条目1 *) 二级条目2 *) 二级条目3 a) 三级步骤a b) 三级步骤b c) 三级步骤c *) 条目1 1) 二级步骤1 2) 二级步骤2 3) 二级步骤3 7. 转义 ^^^^^^^ \------------------------------ \============================== \############################## \0.0. 转义章节 \[![=>转义链出]][![=>带括弧的链出\]]]] 段落的转义\\\ 应该显示成1个'\' *) 真条目列表1 *) 真条目列表2 \*) 转义条目列表 \*) 转义条目列表 *) 真条目列表3 \1) 转义步骤列表 转义字典\:: 转义的:) \=========== text : 一个转义的文本 ============== args: arg1; arg2=val2; arg3=val3 \================================================ 上面是转义的横线,下面才是真正的结束 \================================================= =========== text : 一个转义的文本 ============== \args: arg1; arg2=val2; arg3=val3 \================================================ 上面是转义的横线,下面才是真正的结束 ================================================= 8. 支持的区域 ^^^^^^^^^^^^^ 8.1. 简单文本 ^^^^^^^^^^^^^ ................. 简化文本[![加粗无效]] ................. 8.2. 简单表格 ^^^^^^^^^^^^^ ================ table: simple-table ================ 表头1 表头2 表头3 行1列1 行1列2 行1列3 行2列1 行2列2 行2列3 ===================================================== ============ table:bad-blank ============== head1 head2 head3 head4 col1 col2 col3 col4 col1 col3 col4 col2 col3 col4 col1 col2 col3 col4 ====================================== ========== table:standard-table ========== ! r1-c1 | r1-c2! r1-c3| |r2-c1 |r2-c2 |r2-c3 | || r3-c1&2 |+ r3&4-c3 | |r4-c1 | r4-c2 |+ r4&4-c3 | ========================================== 8.3. 控制台 ^^^^^^^^^^^ =============== tty 代码1:端口映射 ================= /* 加粗文字为标准输入 红色文字为错误输出 蓝色文字为标准输出 绿色文字为注释内容 */ iptables -L // 查看当前防火墙规则 > Chain INPUT (policy ACCEPT) > target prot opt source destination > REJECT all -- 10.0.172.0/24 anywhere reject-with icmp-port-unreachable > > Chain FORWARD (policy ACCEPT) > target prot opt source destination > > Chain OUTPUT (policy ACCEPT) > target prot opt source destination #清空防火墙,如果存在的话 /sbin/iptables -F -t nat /sbin/iptables -F INPUT # 执行一次就可以了 echo "1" > /proc/sys/net/ipv4/ip_forward #端口映射 /sbin/iptables -t nat -A POSTROUTING -j MASQUERADE /sbin/iptables -t nat -A PREROUTING -p tcp -m tcp --dport 55000 -j DNAT --to-destination 10.0.172.210:50000 /sbin/iptables -t nat -A PREROUTING -p tcp -m tcp --dport 55001 -j DNAT --to-destination 10.0.172.209:50000 ================================================ 8.4. c 代码 ^^^^^^^^^^^ ============== c : 7zAlloc.c ===================== /* 7zAlloc.c */ #include #include "7zAlloc.h" /* #define _SZ_ALLOC_DEBUG */ /* use _SZ_ALLOC_DEBUG to debug alloc/free operations */ #ifdef _SZ_ALLOC_DEBUG #ifdef _WIN32 #include #endif #include int g_allocCount = 0; int g_allocCountTemp = 0; #endif void *SzAlloc(size_t size) { if (size == 0) return 0; #ifdef _SZ_ALLOC_DEBUG fprintf(stderr, "\nAlloc %10d bytes; count = %10d", size, g_allocCount); g_allocCount++; #endif return malloc(size); } ================================================== 8.5. c++ 代码 ^^^^^^^^^^^^^ ============== cpp : ArchiveExports.cpp ===================== // ArchiveExports.cpp #include "StdAfx.h" #include "../../Common/ComTry.h" #include "../../Common/Types.h" #include "../../Windows/PropVariant.h" #include "../Common/RegisterArc.h" #include "IArchive.h" #include "../ICoder.h" #include "../IPassword.h" static const unsigned int kNumArcsMax = 32; static unsigned int g_NumArcs = 0; static const CArcInfo *g_Arcs[kNumArcsMax]; void RegisterArc(const CArcInfo *arcInfo) { if (g_NumArcs < kNumArcsMax) g_Arcs[g_NumArcs++] = arcInfo; } DEFINE_GUID(CLSID_CArchiveHandler, 0x23170F69, 0x40C1, 0x278A, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00); #define CLS_ARC_ID_ITEM(cls) ((cls).Data4[5]) static inline HRESULT SetPropString(const char *s, unsigned int size, PROPVARIANT *value) { if ((value->bstrVal = ::SysAllocStringByteLen(s, size)) != 0) value->vt = VT_BSTR; return S_OK; } ================================================== 8.6. bash 代码 ^^^^^^^^^^^^^^ ============== bash : test.sh ===================== #newgame function New_game () { kill -9 $displaypid >/dev/null 2>&1 if [[ "$1" == "over" ]] then exec $(dirname $0)/$(basename $0) else echo "$level $score $life $length $runtime" > $vartmp exec $(dirname $0)/$(basename $0) display fi } ================================================== 8.7. java 代码 ^^^^^^^^^^^^^^ ============== java : test ===================== package com.trydofor.a9text.test; /************************************************************ * @author : Shi Rongjiu (www.trydofor.com) * @version : 2008-2-18 / $Revision: 1.30 $ * @see : requires/documents * ====================== change-logs ======================= * $Log: not supported by cvs2svn $ * Revision 1.29 2008/03/23 13:25:05 trydofor * des->aes * * Revision 1.28 2008/03/21 03:36:31 trydofor * dict * * Revision 1.27 2008/03/21 03:03:09 trydofor * demo * * Revision 1.26 2008/03/20 14:14:40 trydofor * doc * * Revision 1.25 2008/03/20 05:34:37 trydofor * guide * * Revision 1.24 2008/03/19 12:48:50 trydofor * done * * Revision 1.23 2008/03/19 12:11:55 trydofor * check * * Revision 1.22 2008/03/18 12:37:17 trydofor * des * * Revision 1.21 2008/03/18 12:29:41 trydofor * des * * Revision 1.20 2008/03/17 12:19:29 trydofor * goo * * Revision 1.19 2008/03/12 06:30:50 trydofor * xx * * Revision 1.18 2008/03/11 12:58:07 trydofor * gogo * * Revision 1.17 2008/02/29 02:45:07 trydofor * a9text * * Revision 1.16 2008/02/18 06:27:12 trydofor * live in java * ************************************************************/ public abstract class Live { public abstract void health(); public abstract void happy(); public abstract void hope(); public abstract void work(); public abstract void earn(); public abstract void love(); public abstract void thank(); public abstract void think(Throwable t); public abstract void learn(); private volatile boolean live; public final void live() { while(live) { try { health(); happy(); hope(); work(); earn(); love(); thank(); } catch(Throwable t) { think(t); } finally { learn(); } } } } ================================================== 8.8. sql 代码 ^^^^^^^^^^^^^ ============== sql : test ===================== SELECT COUNT(*), 1+0.01 FROM USER -- comment1 GO INSERT INTO USER(`HOST`, USER, PASSWORD) /*comment2*/ VALUES('', '', NULL) // comment3 GO ================================================== 8.9. aes 加密域 ^^^^^^^^^^^^^^^ ================== aes : passwd is "没有密码" ================ YcOAwqzDmxgBITAhITAhLcOfw47DkyExMiHDmOaNpei+nxpvXcKSJXDChULCgi0/ UsKqw6McLGXCjxc9wrUkEE3mmZjkuYct57qL5pSa5p6X5qGb5b6055iG5ayD5LuP woflrZrnjaDlkrTltbDlhqBb5LyiLcObwpbDr8OO5paB5qK655mv6Zmk6K+Lw6jk uKDlhLzlkZHovInmjpLmmaUt5Yil5L+w5YmEKMORaR/DkWbDvkHDl8Kkw7HCssOt LeWlruadjeaJveS7huiAkuWmheeVlemcqOW4jeespue6geeaseS7j+WPv+iuieae hS3mjrfovqR5wrd0aMO7w7oZ6YGu5Lm65LiF5bKu5Lm96ICl5b+OLeWnu+earuis heWkluWtoOeSkOink8KHB8KmwpVrw5LCquW+m+eHui0TFAITLiPDpOS7j+aYl+S6 suWSsS/ljKvmmJvlu7fmnqEt5ZKg5omH5p6g5ZKf5qOT6Z2h5rCi55iw5LiG6IC8 5pqX6ISi55Sa5LqdFMK/LcK5wpzDkMKMwo3DpCExNjAhITEwISQxwoMw54m854Gj fMO2LcOLSmbDmMKZwpI2w5oOw5jCvMOnA3l0Ei0x57us5pW55p+v55qfw6jkuqXk vbTot4zku4/luqbljavlkLXorqDoqJPCpC3DlMK9w43CjUghOSHCgSExMyHnvoHn oJvmmbAlPV7Cl8O6LeeYr8K95ZOb5Yub5YyL6IKp5YaB546B5Lib56OFN8Kkw5LD nh/Doy0XYiE5IeS/geaNthDDp0bCjOWeveaduOeKouW9i8OO5aSz5o6QLeijmiEw IQPljLrml7rmn47lsYrmmJnlpYvnmYLml4zmoZ/DrcK1wq7Chy3Dr1vDpmbCt+e6 t+iLjueapwTkubzpnobopbXlrYnoo7jnq7/lu6Et5ZOP5Zym5Zyg5peT5Lihw7gW w4HDq1dMw7ESwoXDncOrLXIqwqzli5fogYshMTEhEcOqw64Xw7DDqMKfwqbCp8KH LTPCizdaSD/CrsOy5pWG5a6k5L+A6aanG+WIiuewnEQt5YC+5pewVuS6r+WKu8KT 5YiI6Zug562qwqE0eMKnw4I9w4EtITMzIcO+BsKyw5XCtUAFw78hMTAhRsOAw6vC rcOGw48t6ZKq5YeAVeeUvuacquWSgeW4suaUjuafqgPlrYHlhK3lmobniZlH5YmM LeeWouesgGxSITExIX4Hw7tXM3vCk1o/ek8tGMOSwr/DscOEwqxBWcK4QemTmeWH k3DplJbngb7CjC3nl6LmnLrln7rml6LnqZHlhrjlrJjoi7rlk67mjJLlk7zlpK7p gavpkJfmjJUYLTMVw7AlI8O8ITE2MCHCuMOUc8ORwrtqcMKYXC0Fw5dRwrFSwodc 5a+d5YSi5ZKf5o2556WNw4PnlKHmnLDlr60t5LuR5ZKw6KaV6K+kwoPDtGUYw4rD tXYlBsO2AyExMyEtwrbDhx3CkCEzOSEadsKWV8Kt5Yue6KCzf+aUtOW4oCExNjAh LeWQmeatrumojkDmnbbluKNHUsO0cAbCnkNCIH0twrNmD8KqOMODM8KawpLCqiEz OSFJEjTplJfngq8t5ZOY56q56ImM56+C55GfwpTnmZ/lvqfnl4jmibhVwowGw4zC psKQLcKmHMOITBZ1w4lgITM0IcOCwp3DtsOXwpJXw7otwrjClOWOjeWcsOaLuuWx oCvnmIPli4vmlIPmj53oo4DmobIX5rit5LqxLeeiiDTDjcOYQOWKn+Wvj+ets8OJ w5Y8wrDCjGAlIy0hMCFFwql6GcORD07CkA== ============================================================== 8.10. xml 域 ^^^^^^^^^^^^ ================== xml : ant-build ================ ==============================================================