20px - +
wrap
zh en
-
发信人: SuperSS (SS), 信区: ANSI 标 题: 特殊qmd的制作-4:彩色发信人等 发信站: 日月光华 (2003年09月15日15:44:36 星期一), 站内信件 每篇文章开头都会有些特定的信息: 发信人: 用户id (昵称), 信区: xxxx 标 题: xxxx 发信站: 日月光华 (xxxx年xx月xx日xx:xx:xx 星期□), 站内信件 (直接投条时头上几行略有不同) 想要"修改"这部分的内容的话也是有办法的,主要原理是利用光标定位*[H用新的内 容覆盖掉原先的内容 例如用户id是从第一行第九个字符处开始的, 于是可以用*[1;9H将光标定位到那里 然后用自己想要的内容覆盖掉原先的,如用加了色彩代码的彩色id代替原来的纯白色id, 其他内容也可以用同样的方法覆盖 这里会有几个常见问题: 一是后面内容随同上移问题,所以不能简单的用"*[1;9Hxxxx"了事,应该在覆盖完 了之后将光标恢复到定位前的位置,这就要用到光标位置的存储与恢复了(*[s与*[u), 也就是说,应该写为"*[s*[1;9Hxxxx*[u" 二是长度不一致问题,覆盖上去的内容比原先的内容短,就会留下一点没被覆盖掉, 如果恰巧留下半个汉字则有可能造成乱码; 覆盖的内容比原先的长,则会影响到其后面 的文字(如果有的话)。所以一般应该算好长度。还有用空格补齐或者用*[K删除行中光标 之后的内容等方法来消除影响 三是长文中的错误覆盖问题,这是没有办法的,一屏只显示23行内容, 如果覆盖语 句不在23行之内(包括本来发信人那几行也要计算在内),那么无法覆盖掉原先内容。 这 还是小事,关键是滚动屏幕,解释到这行代码时,屏幕上面第1行已经不是发信人,但是 代码*[1;9H依旧会起作用,照样会覆盖那里的内容,这就有可能覆盖掉正文中的某些字, 给别人阅读带来麻烦,所以发长文时不要用这种qmd 四是当别人带qmd引用你的文章时,照样会覆盖,可能会因为看到的发信人是你的id 而造成麻烦。这个没有办法,好在默认是不引用qmd的 另外,Web下没有光标控制,所以无法照顾到Web用户 注:Unix下不支持*[s和*[u控制符,而是使用*7和*8,因此这类qmd在Unix系统下的用户 来看会有问题。有建议用*7*[s和*8*[u来存储和恢复光标位置,使通用性更好。 我不用 Unix,无法测试 这种qmd毕竟问题太多,慎用 -- ※ 来源:·日月光华 bbs.fudan.edu.cn·[FROM: 6张J]