### AWK Script to Check the references ### inref is set to 1 when the current line is in the "reference" section BEGIN { # Default Years for the adass references year["i"] = 1992; year["ii"] = 1993; year["iii"] = 1994; year["iv"] = 1995; year["v"] = 1996; year["vi"] = 1997; year["vii"] = 1998; year["viii"] = 1999; year["ix"] = 2000; year["x"] = 2001; year["xi"] = 2002; year["xii"] = 2003; year["xiii"] = 2004; ## References for adassvi papers page["vi:P9-6"] = 147 ## References for adassxii papers page["xii:O1-2"] = 3 page["xii:O1-3"] = 13 page["xii:O1-4"] = 17 page["xii:O6-4"] = 21 page["xii:O6-5"] = 25 page["xii:O10-1"] = 31 page["xii:O10-2"] = 35 page["xii:O10-4"] = 39 page["xii:O10-5"] = 43 page["xii:O10-6"] = 47 page["xii:O8-5"] = 51 page["xii:P1-4"] = 55 page["xii:O8-4"] = 61 page["xii:D7"] = 65 page["xii:P1-1"] = 69 page["xii:P1-2"] = 73 page["xii:P1-3"] = 77 page["xii:P1-5"] = 81 page["xii:P1-6"] = 85 page["xii:P1-7"] = 89 page["xii:P1-10"] = 93 page["xii:P1-11"] = 96 page["xii:P1-12"] = 100 page["xii:O2-2"] = 107 page["xii:O2-3"] = 117 page["xii:O2-1"] = 121 page["xii:O3-1"] = 125 page["xii:O3-3"] = 135 page["xii:O4-4"] = 142 page["xii:O8-3"] = 152 page["xii:P6-1"] = 156 page["xii:P6-5"] = 160 page["xii:P6-6"] = 162 page["xii:P6-8"] = 166 page["xii:P6-9"] = 170 page["xii:P6-10"] = 174 page["xii:O9-2"] = 181 page["xii:P3-6"] = 191 page["xii:P3-11"] = 195 page["xii:P7-6"] = 199 page["xii:P7-7"] = 203 page["xii:O7-1"] = 209 page["xii:O7-3"] = 217 page["xii:O7-4"] = 221 page["xii:O4-3"] = 225 page["xii:P4-4"] = 229 page["xii:P3-12"] = 233 page["xii:P6-4"] = 237 page["xii:P7-1"] = 241 page["xii:P7-2"] = 245 page["xii:P7-3"] = 249 page["xii:P7-5"] = 253 page["xii:P7-8"] = 257 page["xii:P7-9"] = 261 page["xii:P7-10"] = 265 page["xii:P7-11"] = 269 page["xii:P5-1"] = 275 page["xii:P5-2"] = 279 page["xii:P5-3"] = 283 page["xii:P5-4"] = 287 page["xii:P5-7"] = 291 page["xii:P5-8"] = 295 page["xii:P99-1"] = 299 page["xii:P1-8"] = 305 page["xii:P2-1"] = 309 page["xii:P2-2"] = 313 page["xii:P2-3"] = 317 page["xii:P2-4"] = 321 page["xii:P2-5"] = 325 page["xii:P2-6"] = 328 page["xii:P2-7"] = 332 page["xii:O6-2"] = 339 page["xii:O6-3"] = 343 page["xii:P8-1"] = 347 page["xii:P8-4"] = 351 page["xii:P8-5"] = 355 page["xii:O8-2"] = 361 page["xii:D10"] = 365 page["xii:B5"] = 369 page["xii:B6"] = 370 page["xii:P8-2"] = 373 page["xii:P7-12"] = 377 page["xii:P7-13"] = 381 page["xii:P7-15"] = 385 page["xii:P4-1"] = 391 page["xii:P4-2"] = 395 page["xii:P4-3"] = 399 page["xii:P4-5"] = 403 page["xii:P4-7"] = 407 page["xii:P4-8"] = 411 page["xii:P4-9"] = 415 page["xii:P4-10"] = 419 page["xii:P4-12"] = 423 page["xii:P4-13"] = 427 page["xii:P4-14"] = 431 page["xii:P3-7"] = 435 page["xii:P3-8"] = 439 page["xii:D1"] = 445 page["xii:D3"] = 449 page["xii:D5"] = 453 page["xii:P3-1"] = 457 page["xii:P3-2"] = 461 page["xii:P3-4"] = 465 page["xii:P3-5"] = 469 page["xii:P3-9"] = 473 page["xii:P3-10"] = 477 page["xii:P3-13"] = 481 page["xii:P3-14"] = 485 page["xii:P3-16"] = 489 } function prerr(text) { print "***[ */" ID ".tex ] " text " --" > "/dev/stderr" printf " " > "/dev/stderr"; if (length($0) > 72) print substr($0,1,72) "..." > "/dev/stderr"; else print $0 > "/dev/stderr" } function prwarn(text) { print "+++[ */" ID ".tex ] " text " --" > "/dev/stderr" printf " " > "/dev/stderr" if (length($0) > 72) print substr($0,1,72) "..." > "/dev/stderr" else print $0 > "/dev/stderr" } /^[^%]*begin[{]reference/ { print; inref=1; next } /^[^%]*end[{]reference/ { print; inref=0; next } /^[^%]*paperID[{]/ { sub(/[.]/, "-"); print; ### Get the paperID for lavel / ref i = index($0, "{"); ID = substr($0,i+1); i = index(ID, "}"); ID = substr(ID,1,i-1); print "%%%% ID=" ID IDprefix = ID ":" ; next } /^\\paindex *[{]/ { if (match($0, /[{][^A-Z]*[}]/) >0) prerr("Bad index") paindex++ } /^\\aindex *[{]/ { if (match($0, /[{][^A-Z]*[}]/) >0) prerr("Bad index:") aindex++ } /^[^%]*[\\]adass[ivx]/ { ### Line with a reference if (inref != 1) { prerr("\\adass Not in reference section"); print; next } ### The \ok marker indicates reference was verified if (index($0, "\\ok") > 0) isok=1; for (w=1; w<=NF; w++) { if (index($w, "\\adass")>0) break } ## Here w = word with the adass macro w-1 = year vol = substr($w, 7); sub(/[,:]/, "", vol); y = w-1; yr = $y + 0; if (vol in year) the_year = year[vol]; else { prerr("Bad macro:" $w); print; next } # Print the beginning of reference, until the actual \adass -- macro if ($1 != "\\reference") printf " "; for (i=1; i" the_year); printf "%d, ", the_year; } else { if (yr != the_year) prerr("Bad year (" yr "), should be: " the_year); } # Take the rest of the line printf "%s", $w; rest = ""; for (++w; w<=NF; w++) rest = rest " " $w; # Look in the rest of the line i = index(rest, "\\paperref"); if (i == 0) { print rest; next} # Substitute e.g. \paperref{O1.1} by \paperref{O1-1} rest1 = substr(rest, 1, i); rest2 = substr(rest, i+1); j1 = index(rest2, "{"); j2 = index(rest2, "}"); ip = index(rest2, "."); if (ip < j2) sub(/[.]/, "-", rest2); rest = rest1 rest2; if (the_year == 2004) { print rest; next} # There is a \paperref in a previous volume printf "%s", substr(rest, 1, i-1); rest = substr(rest, i); i1 = index(rest, "{"); i2 = index(rest, "}"); paper = substr(rest, i1+1, i2-i1-1); ipage = vol ":" paper; if (ipage in page) { print "\\adassref{" ipage "}{" page[ipage] substr(rest, i2) } else { prerr("No such paper: " ipage); print rest; } next } { ### Change the References if ((match($0, /\\label[{][^BDOP]/)>0) || (match($0, /\\ref[{][^BDOP]/)>0)) { gsub(/\\label[{]/, "\\label{" IDprefix); gsub(/\\ref[{]/ , "\\ref{" IDprefix); } print } END { if (paindex != 1) prerr("paindex occurs " paindex " times") }