|
|
1.1 ! root 1: sed ' ! 2: /^%A/ s/%A /%author / ! 3: /^%B/ s/%B /%booktitle / ! 4: /^%C/ s/%C /%address / ! 5: /^%d/ s/%d /%date / ! 6: /^%D/ s/%D /%date / ! 7: /^%E/ s/%E /%editor / ! 8: /^%G/ s/%G /%government / ! 9: /^%I/ s/%I /%publisher / ! 10: /^%J/ s/%J /%journal / ! 11: /^%K/ s/%K /%keyword / ! 12: /^%L/ s/%L /%label / ! 13: /^%M/ s/%M /%tm / ! 14: /^%N/ s/%N /%number / ! 15: /^%O/ s/%O /%other / ! 16: /^%P/ s/%P /%pages / ! 17: /^%r/ s/%r /%report / ! 18: /^%R/ s/%R /%report / ! 19: /^%T/ s/%T /%title / ! 20: /^%V/ s/%V /%volume / ! 21: ' $1 | sed ' ! 22: /\.\[/ N ! 23: /\.\[\n\$LIST\$/ N ! 24: /\.\[\n\$LIST\$\n\.\]/ c\ ! 25: |reference_placement ! 26: /^\.\[/ s/\.\[/|reference</ ! 27: /^\.\]/ s/\.\]/%type >/ ! 28: ' | awk ' ! 29: BEGIN {typestr = "%type"; edstr = "%editor"; reffields = 0;} ! 30: ! 31: ! 32: /^%/ { ! 33: if(($1 != "%author") && ($1 != "%publisher") && ($1 != "%type")) ! 34: print; ! 35: if($1 != "%editor") ! 36: ineditor = 0 ! 37: if($1 != "%type") reffields++; ! 38: } ! 39: ! 40: $1 == "%author" { ! 41: if ($NF ~ /\([Ee]d.*\)/) { ! 42: edited++; ! 43: $NF = ""; ! 44: } ! 45: print; ! 46: } ! 47: ! 48: $1 == "%publisher" { ! 49: publisher++ ; ! 50: if($2 == "PhD") { ! 51: phd++; ! 52: printf "%s", $1; ! 53: for (i=4; i <= NF; i++) ! 54: printf " %s", $i; ! 55: print ""; ! 56: } ! 57: else if($2 ~ /Master*/) { ! 58: masters++; ! 59: printf "%s",$1; ! 60: for (i=4; i <= NF; i++) ! 61: printf " %s", $i; ! 62: print ""; ! 63: } ! 64: else print; ! 65: } ! 66: ! 67: $1 == "%editor" { editor++; ineditor = 1;} ! 68: $1 == "%author" { author++ } ! 69: $1 == "%journal" { journal++ } ! 70: $1 == "%tm" { tm++ } ! 71: $1 == "%report" { report++ } ! 72: $1 == "%booktitle" { booktitle++ } ! 73: /[Pp]roc/ || /[Cc]onf/ { if ($1 == "%journal") inproceedings++;} ! 74: ! 75: /^[^%]/ { # handle multiple editors ! 76: if(ineditor) { ! 77: printf "%s ", edstr; ! 78: if($1 == "and") ! 79: print substr($0,length($1)+2); ! 80: else ! 81: print; ! 82: } ! 83: else print; ! 84: } ! 85: /^$/ {print} # blank lines ! 86: ! 87: # now infer document type ! 88: $1 == "%type" { ! 89: if(reffields) { ! 90: printf "%s ", typestr; ! 91: if(edited) print "editedbook"; ! 92: else if(masters) print "mastersthesis"; ! 93: else if(phd) print "phdthesis"; ! 94: else if(inproceedings) print "inproceedings"; ! 95: else if(journal) print "article"; ! 96: else if(booktitle) print "incollection"; ! 97: else if(tm) print "tm"; ! 98: else if(report) print "techreport"; ! 99: else if(publisher) print "book"; ! 100: else print "misc"; ! 101: } ! 102: print ">"; ! 103: ! 104: editor = 0; ! 105: author = 0; ! 106: journal = 0; ! 107: inproceedings = 0; ! 108: booktitle = 0; ! 109: publisher = 0; ! 110: tm = 0; ! 111: report = 0; ! 112: book = 0; ! 113: tflag = 0; ! 114: ineditor = 0; ! 115: phd = 0; ! 116: masters = 0; ! 117: edited = 0; ! 118: reffields = 0; ! 119: } ! 120: '
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.