主页 | ChineseShupai介绍 | 最新发布Latest Release | 效果展示/作者网志 | 帮助手册&FAQ | 回报Feedback&Contact | 下载/Downloads | Join&Help us | 推荐的链接 | Google Translate(En)

 特殊页面:
Google To Translate into English
 
Google翻译为繁体中文
Google翻译为简体中文
***
访问指南

另一官站镜像

技术详情
作者的信
SourceForge.net Logo

 chineseShupai 极限竖排 官方网站

技术详情
chineseShupai (极限竖排),不只是假古文的竖排转换!--Phoeagon
Not Just shupai of Chinese.

主页
ChineseShupai介绍
最新发布Latest Release
效果展示/作者网志
帮助手册&FAQ
回报Feedback&Contact
下载/Downloads
Join&Help us
推荐的链接
Google Translate(En)

介绍:

chineseShupai 极限竖排 可以使一篇中文写成的文章按照20世纪早期的竖排的排版风格编排

chineseShupai can help one typeset a Chinese paragraph in a  vertical (Shupai) way, for web space, in well-compatible plain text.

chineseShupai 极限竖排,不只是假古文竖排。
------------------------------

版权:
chineseShupai是中文竖排软件
这是一个自由软件,遵循GNU协议,绝无担保。
版权所有(C)作者:Phoeagon

支持维基媒体的projects!
本软件专用官站:http://chShupai.sf.net
SF.net上项目名:chineseShupai

-------------------------------

 

注意:

There're no Ads on this site! If you see any, they're very unlikely to be owned by this project or SF.net.

本站不会有任何商业性质的广告,例如Google Adsense等。
如果您浏览本网站看到此类广告,很可能因为您利用在线代理访问被添加了广告,
其他情况包括您的PC被安装了广告程序、您的ISP强制广告或劫持本页。
如果您确信广告来自服务器,且不是某种范例,在本project或SF.net上没有任何说明的广告,请联系我(Phoeagon#Gmail.com)或者SF.net。
您需要知道,即使出现此类广告,点击它们不会帮助您支持GNU计划或SF或本站。

 

 

技术详情

本程序用Delphi编写。

2.1.8版本以前,GUI只是完成简单的文件写入,核心内容都封装在exe核心文件中。在最新的版本中,所有内容都编译在程序文件中。

exe核心文件的内容可以在下载处找到。

Full Code Here (CVS)

{Code}

Const
   head:  array[1..19] Of string[2] =  ('(','[','{','·','‘'...);
   tl:  array[1..47] Of string[2] =  (chr(39),'!...'…');
常量(code部分省略)分别定义了行首和行末的标点。

Var
   data:  array[0..120,0..120] Of string[2];{最新版本改为string[4]}
   b:  ansistring;
   btw:  string;
   f1,f2:  string;
   kk:  text;
   x,y,page,webf,enc,mode:  integer;
   outt,inn:  text;
data记录 了每页的内容。B:ansistring用于读入文件。btw是分隔符。接下来的二个字符串是文件名变量。kk是文件变量,x,y记录行数,page记录页数,enc表示是否转换半角,mode是缩进模式。接下来两个也是文件变量。

uses dos; Procedure cmd(command:String); 这里用于执行命令。实际上dos单元和cmd过程的加入只是完成了2个很鸡肋的功能,即改变cmd的代码页和去掉输出文件的只读属性。如果用于linux,完全可以去掉。

uses crt;

crt单元也只是用来改善用户手感(Dos版)

uses sysutils

sysutils用来检测文件.

precedure sec;
procedure sec2;

sec和sec2过程都只是输出界面和读入自动配置文件。

io过程:设置输入输出文件。

ui过程,读入设置。

conv:半角转换

closs:关闭时的界面

outp:把一页输出到文件

eng函数判断英文字母。

nott、nof:判断前置、后置标点。

punc:标点替换。

sp智能的缩进。

ed:传统的缩进

work1:主程序

work:旧版主程序(注释)

以下列举一下可能您有兴趣的过程或函数:

typ:返回以字符串第一个字节为开始的UTF8/GBK/Big5字符的长度

 

  function typ(a:string[4]):integer; //GB 18030 Edition
{GB18030 四字节支持结构
字节结构
    * 单字节,其值从0到0x7F。
    * 双字节,第一个字节的值从0x81到0xFE,第二个字节的值从0x40到0xFE(不包括0x7F)。
    * 四字节,第一个字节的值从0x81到0xFE,第二个字节的值从0x30到0x39,第三个字节从0x81到0xFE,第四个字节从0x30到0x39。
}
    begin     if Length(a)=0 then Exit(0);
        if (Ord(a[1])<=$7F)and(Ord(a[1])>=$0)then Exit(1)
        else if (ord(a[1])>=$81)and(Ord(a[1])<=$FE)and(Ord(a[2])>=$40)
        and(ord(a[2])<=$FE)then
          exit(2)
          else if (Ord(a[1])>=$81)and(Ord(a[1])<=$FE)
          and(Ord(a[2])>=$30)and(Ord(a[2])<=$39)
          and(Ord(a[3])>=$81)and(Ord(a[3])<=$FE)
          and(ord(a[4])>=$30)and(Ord(a[4])<=$39)then
            Exit(4);
            Exit(1);
    end;
//------------------
     function typ(a:string[4]):integer; //Big5
{0x40-0x7Eの0xA1-0xFE}
    begin     if Length(a)=0 then Exit(0);
        if (ord(a[1])>=0)and(ord(a[1])<=$7F)then exit(1)
else if (ord(a[1])>=$81)and(ord(a[1])<=$FE)and
         (((ord(a[2])>=$40)and(ord(a[2])<=$7E))or
((ord(a[2])>=$A1)and(ord(a[2])<=$FE)))then exit(2);
            Exit(1);
    end;

//-------------------------
function typ(a:string[4]):integer;
begin//Unicode UTF-8
if length(a)=0 then Exit(0);
if(Ord(a[1])>=$0)and(Ord(a[1])<=$7F) then Exit(1)
else if(Ord(a[1])>=$C2)and(Ord(a[1])<=$DF)
and(Ord(a[2])>=$80)and(Ord(a[2])<=$BF)then Exit(2)
else if(ord(a[1])>=$E0)and(ord(a[1])<=$EF)and
(Ord(a[2])>=$80)and(ord(a[2])<=$BF)
and(Ord(a[3])>=$80)and(ord(a[3])<=$BF)then Exit(3)
else if(Ord(a[1])>=$F0)and(Ord(a[1])<=$F4)and
(Ord(a[2])>=$80)and(ord(a[2])<=$BF)and
(Ord(a[3])>=$80)and(ord(a[3])<=$BF)
and(Ord(a[4])>=$80)and(ord(a[4])<=$BF)then
Exit(4);
Exit(1);
end;

Conv:全角半角转化

 

Function conv(k:string[4]):  string[4]; //UTF8
var a:longint;
Begin
   If enc=0 Then exit(k);
   if length(k)>1 then exit(k);
   if k=' 'then exit(' ')
   else
    begin
       a:=ord(k[1])+65281-33;
       exit(chr(224 or(a shr 12))+chr(128 or ((a shr 6)and 63))+chr(128 or (a and 63)));
    end;
exit(k);
end;
//---------------------
Function conv(k:string[4]):  string[4]; //GB 18030
var a:longint;
Begin
   If enc=0 Then exit(k);
   if length(k)>1 then exit(k);
   if k=' 'then exit(' ')
   else begin
      a:=($A3A1)+ord(k[1])-ord('!');
      exit(chr(a shr 8)+chr(a and 255));
   end;
 exit(k);

End;


//读一读第一版本的代码,或许让你了解什么是核心什么不是,以及程序的principle。

//very first edition, only for principle
var
  data:array[1..80,1..100]of string[2];
  b:ansistring;{b:string;}
  x,y:integer;
  procedure outp;
    var
      i,j:integer;
    begin
        for i:=1 to y do
         begin
           for j:=1 to x do
             if data[j,i]<>''then write(data[j,i])
               else write('  ');
             writeln;
         end;
         writeln;
         for i:=1 to x do
           for j:=1 to y do
             data[i,j]:='';
    end;
  procedure work;
    var
      i,j,k:integer;
    begin
        readln(x,y);
       { readln(b);  }
        i:=x;j:=1;
        while not(eof(input))do begin
        readln(b);
        for k:=1 to length(b)div 2 do
          begin
              data[i,j]:=copy(b,k*2-1,2);
              inc(j);
              if (j>y)and(i>1)then
                begin dec(i);j:=1;end
                else if (j>y)and(i=1)then
                  begin
                  outp;i:=x;j:=1;
                  end;
          end;
              dec(i);
              j:=1;
          end;
    end;
  begin
    work;
    outp;
end.

//Code ends


chineseShupai 极限竖排
本软件叫 chineseShupai极限竖排.

chineseShupai Version 2.1.7
Copyright (c) 2005-2008 Phoeagon 版权所有
---------------------------------------
chineseShupai 软件不包含任何担保; 详见 "Gpl.txt" 的GUN软件说明(英文)
这是一个Free Software,自由软件;在一定的情况下,欢迎你修改或发布;详见 "Gpl.txt
@@支持维基百科!支持Wikimedia的相关产品@@

 


主页 | ChineseShupai介绍 | 最新发布Latest Release | 效果展示/作者网志 | 帮助手册&FAQ | 回报Feedback&Contact | 下载/Downloads | Join&Help us | 推荐的链接 | Google Translate(En)

 
版权所有(C) 2005-2008 [Phoeagon]。
遵循GNU协议