¼Ùé
¼Ùé
¼Ùé
¼Ùé
¼Ùé
ã¹
% sgmlcheck foo.sgml
3.1 ¡ÒÃ
¶éÒ
% sgml2txt -c latin foo.sgml
foo.txt
ã¹ä´à3.2 ¡ÒÃ
¶éÒ
% sgml2html foo.sgml
foo.html
áÅÐ foo-1.html, foo-2.html, ...
ã¹ä´à-c latin
, àÍ¡&LATIN_CHAR_NAME;
ãËécttex
ÁÒ
#!/usr/bin/perl
################################################################
# sgmlthtml:
# Run sgml2html and convert latin symbols to Thai characters.
# This program will change, for example, à to "\340".
#
# by Poonlap Veeratanabutr <poon-v@fedu.uec.ac.jp>
# $Id: sgmlthtml,v 1.1 1998/09/28 06:51:52 poon-v Exp poon-v $
################################################################
sub error {
print STDERR "usage: $0 [-c] file.sgml\n";
print STDERR " -c , use cttex to fill <WBR>\n";
exit;
}
# command line processing.
if( $#ARGV == -1 ){
&error;
} elsif ( $#ARGV == 0 && $ARGV[0] ne "-c"){
$file = $ARGV[0];
$cut = 0;
} elsif ( $#ARGV == 1 ){
if( $ARGV[0] eq "-c"){
$cut = 1;
$file = $ARGV[1];
} elsif( $ARGV[1] eq "-c"){
$cut = 1;
$file = $ARGV[0];
} else {
&error;
}
} else {
&error;
}
# run sgml2html
if( system( "sgml2html $file" ) != 0 ){
exit;
}
# lookup table for what to change and not to change
%lookuptbl = (quot, "quot",amp,"amp","lt","lt","gt","gt",copy,"\251",reg,"\256",
micro,"\265",Agrave,"\300",Aacute,"\301",Acirc,"\302",Atilde,"\303",
Auml,"\304",Aring,"\305",AElig,"\306",Ccedil,"\307",Egrave,"\310",
Eacute,"\311",Ecirc,"\312",Euml,"\313",Igrave,"\314",Iacute,"\315",
Icirc,"\316",Iduml,"\317",ETH,"\320",eth,"\320",Ntilde,"\321",
Ograve,"\322",Oacute,"\323",Ocirc,"\324",Otilde,"\325",Ouml,"\326",
Oslash,"\330",Ugrave,"\331",Uacute,"\332",THORN,"THORNÞ",Thorn,"Thron",
szlig,"\337",agrave,"\340",aacute,"\341",acirc,"\342",atilde,"\343",
auml,"\344",aring,"\345",aelig,"\346",ccedil,"\347",egrave,"\350",
eacute,"\351",ecirc,"\352",euml,"\353",igrave,"\354",iacute,"\355",
icirc,"\356",iuml,"\357",eth,"\360",ntilde,"\361",ograve,"\362",
oacute,"\363",ocirc,"\364",otilde,"\365",ouml,"\366",oslash,"\370",
ugrave,"\371",uacute,"\372",ucirc,"\373",uuml,"uuml",yacute,"yacute",
yuml,"yuml");
# separate directory and file name from the given file name
if( $file =~ /(.*)[\/](.+)$/ ){
$dir = $1;
$file = $2;
}
$file =~ s/(.+)\.sgml/$1/; # get rootname
if( length( $dir ) == 0 ){
opendir( DIR, ".");
} else {
opendir( DIR, "$dir" );
}
@html = grep {/$file.*\.html$/} readdir( DIR ); # get all related html files
closedir( DIR );
foreach $html_file (@html) {
print "Processing file $html_file\n";
open( INPUT, "$html_file");
open( OUTPUT,">$html_file.tmp" );
while( <INPUT> ){
$line = $_;
$beg = index( $line, "&");
$end = index( $line, ";");
while( $beg >= 0 && $end > $beg ){
$target = substr( $line, $beg+1, $end-$beg-1);
$thai = $lookuptbl{ $target };
if( $target eq $thai ){
$line = sprintf( "%s%s%s", substr( $line, 0, $beg), '&' . $thai . ';',
substr( $line, $end+1 ));
} else {
$line = sprintf( "%s%s%s", substr( $line, 0, $beg), $thai,
substr( $line, $end+1 ));
}
$beg = index( $line, "&", $beg+1);
$end = index( $line, ";", $beg);
}
print OUTPUT "$line";
}
close( INPUT );
close( OUTPUT );
if( $cut == 1 ){
system( "cttex 0 < $html_file.tmp > $html_file" );
system( "rm -f $html_file.tmp" );
} else {
rename( "$html_file.tmp", "$html_file");
}
}
# EOF
sgmlthtml
á·¹ sgml2html
ÊÓËÃѺ
¨Ò¡
% sgmlthtml foo.sgml -c
sgmlthtml
¨Ðsgml2html
«Öè§sgmlthtml
¨Ð&LATIN_CHAR_NAME;
ãËésgml2html
¨Ðcttex
ÁÒfoo.sgml
)
ãËécttex
ÍÂÙècttex
µÑ´-c
´Ñ§
% sgmlthtml foo.sgml
3.3 ¡ÒÃ