=================================================================== RCS file: /home/cvs/OpenXM/src/kxx/Attic/oxweave.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- OpenXM/src/kxx/Attic/oxweave.c 1999/12/13 07:55:23 1.3 +++ OpenXM/src/kxx/Attic/oxweave.c 1999/12/13 14:47:41 1.4 @@ -6,7 +6,7 @@ \maketitle \section{前書き} */ -/* $OpenXM: OpenXM/src/kxx/oxweave.c,v 1.2 1999/11/16 11:48:12 takayama Exp $ */ +/* $OpenXM: OpenXM/src/kxx/oxweave.c,v 1.3 1999/12/13 07:55:23 takayama Exp $ */ #include /* Modify here to change the begin tag and EndComment. Less than 9 characters. @@ -19,6 +19,7 @@ char *EndComment1="\n"; #define BSIZE 256 #define VSIZE 256 static int Debug = 0; +static int Plain = 0; /*&jp \noindent {\tt Buf} は標準出力よりのデータを一時格納しておく領域. {\tt Head} が最初の文字をさし, {\tt Tail} は最後の文字をさす. @@ -30,9 +31,9 @@ int Head = 0; int Tail = 0; char *Tag = NULL; /*&jp \noindent {\tt OutputNoTaggedSegment = 1} - なら コメント記号の外は verbatim を用いて出力. - {\tt --source} オプションでこの変数を1にできる. -*/ + なら コメント記号の外は verbatim を用いて出力. + {\tt --source} オプションでこの変数を1にできる. + */ int OutputNoTaggedSegment = 0; /*&jp \noindent 1 ならタグのついた場所を出力中. */ int OutputtingTaggedSegment = 0; @@ -44,6 +45,7 @@ main(int argc,char *argv[]) { extern char *BeginTag; extern char *EndComment0; extern char *EndComment1; + extern int Plain; int c; int tagc,i; char *tagv[VSIZE]; @@ -52,7 +54,9 @@ main(int argc,char *argv[]) { int pos; Head = Tail = 0; Buf[0] = ' '; /* initialize */ - /*&jp {\tt tagv[]} にタグのあつまりをいれる. */ + /*&jp {\tt tagv[]} にタグのあつまりをいれる. + {\tt tagv2[]} に対応するタグのおわりの記号をいれる. + */ tagc = tagc2 = 0; if (argc <= 1 || argc >= VSIZE) { usage(); @@ -60,61 +64,65 @@ main(int argc,char *argv[]) { }else{ for (i=1; i< argc ; i++) { if (strcmp(argv[i],"--source") == 0) { - OutputNoTaggedSegment = 1; + OutputNoTaggedSegment = 1; + }else if (strcmp(argv[i],"--plain") == 0) { + Plain = 1; OutputNoTaggedSegment = 1; } else{ - tagv[tagc] = (char *) malloc(sizeof(char)*(strlen(argv[i])+10)); - tagv2[tagc2] = (char *) malloc(sizeof(char)*10); - strcpy(tagv[tagc],BeginTag0); - strcat(tagv[tagc],argv[i]); - tagv2[tagc] = EndComment0; - /* コメントのおわりの記号. sm1 なら 0xa である. */ - tagc2++; - tagc++; + tagv[tagc] = (char *) malloc(sizeof(char)*(strlen(argv[i])+10)); + tagv2[tagc2] = (char *) malloc(sizeof(char)*10); + strcpy(tagv[tagc],BeginTag0); + strcat(tagv[tagc],argv[i]); + tagv2[tagc] = EndComment0; + /* コメントのおわりの記号. */ + tagc2++; + tagc++; - tagv[tagc] = (char *) malloc(sizeof(char)*(strlen(argv[i])+10)); - tagv2[tagc2] = (char *) malloc(sizeof(char)*10); - strcpy(tagv[tagc],BeginTag1); - strcat(tagv[tagc],argv[i]); - tagv2[tagc] = EndComment1; + tagv[tagc] = (char *) malloc(sizeof(char)*(strlen(argv[i])+10)); + tagv2[tagc2] = (char *) malloc(sizeof(char)*10); + strcpy(tagv[tagc],BeginTag1); + strcat(tagv[tagc],argv[i]); + tagv2[tagc] = EndComment1; tagc2++; - tagc++; + tagc++; } } } /*&jp プログラムは3つの状態を持つ. 状態 0 はタグ付きコメント記号の外. - 状態 1 は指定されたタグの付いたコメントの中. - 状態 2 は指定されていないタグの付いたコメントの中 - (状態2にあるときは印刷されない.) */ + 状態 1 は指定されたタグの付いたコメントの中. + 状態 2 は指定されていないタグの付いたコメントの中 + (状態2にあるときは印刷されない.) */ /* - state 0 -- / * & jp ---> state 1 - if ( BeginVerbatim & OutputNoTaggedSegment ) end-verbatim - <--- * / --- state 1 - if ( OutputNoTaggedSegment ) begin-verbatim + state 0 -- / * & jp ---> state 1 + if ( BeginVerbatim & OutputNoTaggedSegment ) end-verbatim + <--- * / --- state 1 + if ( OutputNoTaggedSegment ) begin-verbatim - state 0 -- / * & unknown ---> state 2 - <--- * / --- state 2 + state 0 -- / * & unknown ---> state 2 + <--- * / --- state 2 - state 0 & OutputNoTaggedSegment ==> putchar() - state 1 ==> putchar() - state 2 ==> skip - */ + state 0 & OutputNoTaggedSegment ==> putchar() + state 1 ==> putchar() + state 2 ==> skip + */ while (notEOF()) { /* We are in the state 0. */ pos = findNextTag(tagc,tagv,tagc2,tagv2); + /* printf(" ===pos=%d=== ",pos); */ /* We are in the state 1. */ findEndTag(tagc2,tagv2,pos); } if (BeginVerbatim) { - printf("\n\\end{verbatim\x07d}\n"); + if (!Plain) printf("\n\\end{verbatim\x07d}\n"); } exit(0); } /*&jp \noindent 次の関数は利用法を表示する. */ usage() { - fprintf(stderr,"oxweave [--source] [key1 key2 ...]\n"); + fprintf(stderr,"oxweave [--plain] [--source] [key1 key2 ...]\n"); fprintf(stderr,"Example 1: oxweave --source jp t.tex\n"); fprintf(stderr,"Example 2: oxweave jp t.tex\n"); + fprintf(stderr,"Example 2: oxweave --plain t.tex\n"); } #define inc(a) ((a+1) % BSIZE) @@ -172,14 +180,14 @@ findNextTag(int tagc, char *tagv[],int tagc2,char *tag for (i=0; i