/newlib/metod-old.awk
AWK | 336 lines | 136 code | 170 blank | 30 comment | 0 complexity | 44f58f13885ec7df88f114707a8f1b0d MD5 | raw file
- ## Prefix="##{"
- ## Suffix="}"
- ## Enc="1251"
- ## End
-
-
-
-
-
-
-
- ##{A}
-
- ##{}
-
-
-
-
-
-
-
- function WriteTo(l){
-
- print(l) >> OutTex
-
- }
-
-
- function PrintOutPatch(InpF,Bl,El, line,i,lineCount,IgnoreRead){
-
- lineCount=0
-
-
- while ( (getline line <InpF) >0) {
-
- lineCount++;
-
- if (lineCount == Bl) WriteTo("%: "InpF":"Bl"-"El);
-
- if (lineCount >= Bl && lineCount <= El) WriteTo(line)
-
- }
-
- close(InpF);
-
- }
-
-
- # Печатает результат. (Файл, список начал, список концов)
- #
- function PrintOut(InpFile,ActBeginLine,ActEndLine, i,line,lineCount,IgnoreRead){
-
- IgnoreRead=1;
- lineCount=0
-
- while ( (getline line <InpFile) >0) {
-
- lineCount++;
-
- if (lineCount in ActBeginLine) if (ActBeginLine[lineCount] != 2){
-
-
- IgnoreRead = 0;
- WriteTo("%: "InpFile ":" lineCount)
- }
-
- if (lineCount in ActBeginLine) if (ActBeginLine[lineCount] == 2){
-
- PrintOutPatch(InpPatchFile,5,9);
-
- }
-
- if (lineCount in ActEndLine) IgnoreRead = 1;
-
-
-
- if (IgnoreRead) { continue; } ############
-
- WriteTo(line);
-
- }
-
- close(InpFile);
-
- }
-
-
- #
- # Читает файл. Делает списки ссылок и номеров блоков
- #
- function MkLabelAndRef(InpFile,LabelToNom,NomToArefList,NomToBrefList,NomToCrefList,NtoBb,NtoBe,\
- line,lineCount,IgnoreRead ) {
-
-
- #BlokCount=0;
-
- IgnoreRead=1;
-
- lineCount=0
-
-
- while ( (getline line <InpFile) >0) {
-
- lineCount++;
-
- if (line ~ /^%%B/ ) {
- IgnoreRead=0;
- BlokCount++;
- NtoBb[BlokCount]=lineCount;
- continue;
- }
-
-
- if (line ~ /^%%E/ ) {
- IgnoreRead=1;
- NtoBe[BlokCount]=lineCount;
- continue;
- }
-
-
- if (IgnoreRead) { continue; } ############
-
-
- #if (line ~ /%/ ) { sub(/%.*$/,"",line) } #!!
-
-
- if (line ~ "\\label{") {
-
- sub(/^.*\\label{[ \t]*/,"",line);
- sub(/[ \t]*}.*$/,"",line);
-
-
- ############################\/\/
- if (line in LabelToNom) LabelToOldNom[line]=LabelToNom[line]; #######!!!
-
- LabelToNom[line] = BlokCount;
-
- continue;
- }
-
-
-
- #if (line ~ "A") { print("222") }
-
-
- if (line ~ /\\aref{/) {
-
- sub(/^.*\\aref{[ \t]*/,"",line);
- sub(/[ \t]*}.*$/,"",line);
-
- NomToArefList[BlokCount] = NomToArefList[BlokCount] " " line;
-
- continue;
- }
-
-
- if (line ~ /\\bref{/) {
-
- sub(/^.*\\bref{[ \t]*/,"",line);
- sub(/[ \t]*}.*$/,"",line);
-
- NomToBrefList[BlokCount] = NomToBrefList[BlokCount] " " line;
-
- continue;
- }
-
- if (line ~ /\\cref{/) {
-
- sub(/^.*\\cref{[ \t]*/,"",line);
- sub(/[ \t]*}.*$/,"",line);
-
- NomToCrefList[BlokCount] = NomToCrefList[BlokCount] " " line;
-
- continue;
- }
-
-
-
- }
-
- close(InpFile);
-
-
-
- }#function
-
-
- #
- # делает список актуальных ссылок ?
- #
-
- function MkActualLabel(Aref,Bref,ActLabel,ltoA,ltoB, i,Empty,tmpList,tmpArr,l,tmp){
-
- do{
-
- # Очистим A и B
- for ( i in Aref) if ( i in ActLabel ) delete Aref[i] ;
- for ( i in Bref) if ( i in ActLabel ) delete Bref[i] ;
-
- for ( i in Bref) if ( i in Aref ) delete Bref[i] ;
-
- # Добавим в общий список
-
- for ( i in Aref ) ActLabel[i]=1 ;
- for ( i in Bref ) ActLabel[i]=1 ;
-
- # Проверим на пустоту
-
- Empty=1;
-
- for (i in Aref) if (Aref[i] != "") Empty=0;
- for (i in Bref) if (Bref[i] != "") Empty=0;
-
- if (Empty) break;
-
- #
-
- delete tmpList;
- for (i in Aref) tmpList[i]=1;
-
-
-
- for (l in tmpList ){
-
- # A+A=A
- split( ltoA[l] , tmpArr) ;
- for ( i in tmpArr) Aref[tmpArr[i]]=1
-
-
- #A+B=B
- split( ltoB[l] , tmpArr) ;
- for ( i in tmpArr) Bref[tmpArr[i]]=1
-
- }
- #
-
- delete tmpList;
- for (i in Bref) tmpList[i]=1;
-
- for (l in tmpList ){
-
- #B+A=B
- split( ltoA[l] , tmpArr) ;
- for ( i in tmpArr) Bref[tmpArr[i]]=1
-
- }
-
-
- }while(1)
-
-
- }
-
-
- BEGIN{
-
-
- InpFile="text.tex"
- InpPatchFile="text2.tex"
- OutTex="out.tex"
-
- print("")>OutTex;
-
-
- BlokCount=0;
-
- MkLabelAndRef(InpFile,LabelToNom,NomToArefList,NomToBrefList,NomToCrefList,NomToBeginLine,NomToEndLine)
-
- LastNormalBlock=BlokCount;
-
- MkLabelAndRef(InpPatchFile,LabelToNom,NomToArefList,NomToBrefList,NomToCrefList,NomToBeginLine,NomToEndLine)
-
- # прямые ссылки
-
- for (i in LabelToNom) {
-
- tmp=LabelToNom[i];
-
- if (tmp in NomToArefList) LabelToAreflist[i]=NomToArefList[tmp]
- if (tmp in NomToBrefList) LabelToBreflist[i]=NomToBrefList[tmp]
- #if (tmp in NomToCrefList) LabelToCreflist[i]=NomToCrefList[tmp]
-
- }
-
-
- # Стартовые метки
-
- Aref["Integr"]=1;
- Aref["GeoIII"]=1;
- delete ActLabel;
-
-
-
-
- MkActualLabel(Aref,Bref,ActLabel,LabelToAreflist,LabelToBreflist)
-
- # Номера строк
- for ( i in ActLabel) ActBeginLine[NomToBeginLine[LabelToNom[i]]]=1
- for ( i in ActLabel) ActEndLine[NomToEndLine[LabelToNom[i]]]=1
-
-
-
-
- ActBeginLine[15]=2;
-
- PrintOut(InpFile,ActBeginLine,ActEndLine)
-
-
-
-
- for (i in LabelToNom) print("LabelToNom", i, LabelToNom[i])
-
- for (i in NomToArefList) print("NomToArefList", i, NomToArefList[i])
- for (i in NomToBrefList) print("NomToBrefList", i, NomToBrefList[i])
- for (i in NomToCrefList) print("NomToCrefList", i, NomToCrefList[i])
-
- for (i in NomToCrefList) print("NomToCrefList", i, NomToCrefList[i])
-
-
- for (i in LabelToAreflist) print("LabelToAreflist", i, LabelToAreflist[i])
- for (i in LabelToBreflist) print("LabelToBreflist", i, LabelToBreflist[i])
-
-
- for (i in ActLabel) print("ActLabel", i, ActLabel[i])
-
- for (i in ActBeginLine) print("ActBeginLine", i, ActBeginLine[i])
- for (i in ActEndLine) print("ActEndLine", i, ActEndLine[i])
-
-
-
-
-
- }
-
-
-