bibclean-2.11.4.1.orig/0000755000175200017520000000000011415344135013667 5ustar debiandebianbibclean-2.11.4.1.orig/testcodn.org0000644000175200017520000011517006140704075016232 0ustar debiandebian%% /u/sy/beebe/tex/bibclean/2-11/testcodn.org, Sun Apr 28 09:01:10 1996 %% Edit by Nelson H. F. Beebe @Article{good-CODEN, comment = "The following CODEN values are valid", CODEN = "AAAAE6", CODEN = "AACRAT", CODEN = "AAFMAT", CODEN = "AAICAE", CODEN = "AALEE5", CODEN = "AAMADV", CODEN = "AAPBBD", CODEN = "AARIA9", CODEN = "AASTAD", CODEN = "ABACEJ", CODEN = "ABBIA4", CODEN = "ABBPAP", CODEN = "ABMECF", CODEN = "ACACBN", CODEN = "ACACEQ", CODEN = "ACCSCE", CODEN = "ACCYDX", CODEN = "ACMAA8", CODEN = "ACMJB2", CODEN = "ACMSCU", CODEN = "ACMTAV", CODEN = "ACNRCW", CODEN = "ACPZAU", CODEN = "ACRABY", CODEN = "ACVMAL", CODEN = "ADIMEZ", CODEN = "ADMOAN", CODEN = "ADMTA4", CODEN = "ADVBAT", CODEN = "ADVMEW", CODEN = "AEDEER", CODEN = "AEDSAV", CODEN = "AEMABN", CODEN = "AEMIDF", CODEN = "AERAAD", CODEN = "AESODT", CODEN = "AESWEK", CODEN = "AHCOE5", CODEN = "AHPBAR", CODEN = "AHSUAV", CODEN = "AIAJAH", CODEN = "AIFUA7", CODEN = "AINFA2", CODEN = "AINTBB", CODEN = "AISJB6", CODEN = "AJAEBA", CODEN = "AJCLD9", CODEN = "AJCPAI", CODEN = "AJMAAN", CODEN = "AJPCAA", CODEN = "AJPHAP", CODEN = "AJPIAS", CODEN = "AJSOAR", CODEN = "ALGOBG", CODEN = "ALGOEJ", CODEN = "ALLCB5", CODEN = "ALNBAB", CODEN = "ALPSE8", CODEN = "ALSHAK", CODEN = "AMACCQ", CODEN = "AMEAE8", CODEN = "AMHCBQ", CODEN = "AMICCW", CODEN = "AMLEEL", CODEN = "AMMYAE", CODEN = "AMNOAN", CODEN = "AMNTA4", CODEN = "AMOMBN", CODEN = "AMPSAB", CODEN = "AMREAD", CODEN = "AMSCAC", CODEN = "ANBCA2", CODEN = "ANCHAM", CODEN = "ANJOAA", CODEN = "ANMAAH", CODEN = "ANMAEL", CODEN = "ANMBCM", CODEN = "ANNSA8", CODEN = "ANYAA9", CODEN = "AOREEV", CODEN = "APANCC", CODEN = "APBYAE", CODEN = "APITE4", CODEN = "APLQD9", CODEN = "APMTAK", CODEN = "APOPAI", CODEN = "APPHE3", CODEN = "APPLAB", CODEN = "APSSBE", CODEN = "APSTAG", CODEN = "ARBOAW", CODEN = "ARCBE2", CODEN = "AREDEI", CODEN = "AREOAD", CODEN = "ARGSB2", CODEN = "ARITBF", CODEN = "ARMSCX", CODEN = "ARNSD5", CODEN = "ARPHAD", CODEN = "ASFPDV", CODEN = "ASJOAB", CODEN = "ASLPAO", CODEN = "ASNAAN", CODEN = "ASRSDW", CODEN = "ASTAAJ", CODEN = "ASTSC7", CODEN = "ASTTA8", CODEN = "ATCAA9", CODEN = "ATDSD3", CODEN = "ATENBP", CODEN = "ATGRDF", CODEN = "ATISET", CODEN = "ATOSDO", CODEN = "ATPSDT", CODEN = "AUJPAS", CODEN = "AURCAT", CODEN = "AVRMAW", CODEN = "AWIFA7", CODEN = "AWREDI", CODEN = "BAMOAD", CODEN = "BASICR", CODEN = "BBACAQ", CODEN = "BBIADT", CODEN = "BBPCAX", CODEN = "BBRCA9", CODEN = "BCBIEQ", CODEN = "BCHSEI", CODEN = "BCPCA6", CODEN = "BCSTB5", CODEN = "BECTA6", CODEN = "BEITD5", CODEN = "BEVEDP", CODEN = "BGDQAG", CODEN = "BIBUBX", CODEN = "BICHAW", CODEN = "BICIAZ", CODEN = "BICMBE", CODEN = "BICYAF", CODEN = "BIINDF", CODEN = "BIJOAK", CODEN = "BIJODN", CODEN = "BIOEEJ", CODEN = "BIOJAU", CODEN = "BIOKAX", CODEN = "BIOMB6", CODEN = "BIOPAE", CODEN = "BIORAK", CODEN = "BISNAS", CODEN = "BITTEL", CODEN = "BIZBAR", CODEN = "BIZEB3", CODEN = "BJCAAI", CODEN = "BJMRDK", CODEN = "BJMSAK", CODEN = "BLCEDD", CODEN = "BLOOAW", CODEN = "BLRRDP", CODEN = "BMBIES", CODEN = "BMFRA3", CODEN = "BMSSB4", CODEN = "BMTBAP", CODEN = "BOMBB5", CODEN = "BOMIET", CODEN = "BRCPAH", CODEN = "BRHLAU", CODEN = "BRMCEW", CODEN = "BRPTDT", CODEN = "BSECBU", CODEN = "BSMFAA", CODEN = "BSMHBH", CODEN = "BSMSAF", CODEN = "BSSYAT", CODEN = "BSTJAN", CODEN = "BSYMBO", CODEN = "BTCHDA", CODEN = "BUWEA3", CODEN = "BYTEDJ", CODEN = "CACMA2", CODEN = "CAIDA5", CODEN = "CAMRE3", CODEN = "CANED2", CODEN = "CANMER", CODEN = "CASSI6", CODEN = "CBIIEV", CODEN = "CBIODE", CODEN = "CBMDAW", CODEN = "CBMRB7", CODEN = "CBPBB8", CODEN = "CBPCEE", CODEN = "CBRPDS", CODEN = "CCCTD6", CODEN = "CCEJEL", CODEN = "CCENDW", CODEN = "CCOMDB", CODEN = "CCRED2", CODEN = "CCROAT", CODEN = "CCUJEX", CODEN = "CDDEE8", CODEN = "CDWOEV", CODEN = "CECADV", CODEN = "CEJOE7", CODEN = "CELLB5", CODEN = "CELREQ", CODEN = "CENGAX", CODEN = "CESIEY", CODEN = "CEXIAL", CODEN = "CFSBEK", CODEN = "CGFODY", CODEN = "CGISES", CODEN = "CGMPE5", CODEN = "CGOSDN", CODEN = "CGRADI", CODEN = "CGTNAU", CODEN = "CGWODH", CODEN = "CHASAP", CODEN = "CHEDAY", CODEN = "CHKWEN", CODEN = "CHMBAY", CODEN = "CHPLBC", CODEN = "CHRLEP", CODEN = "CILSEN", CODEN = "CINDDL", CODEN = "CINUD4", CODEN = "CIRUAL", CODEN = "CIUNEJ", CODEN = "CJBBDU", CODEN = "CJEEEL", CODEN = "CJISDE", CODEN = "CJMAAB", CODEN = "CJMIAZ", CODEN = "CJPHAD", CODEN = "CLDFAT", CODEN = "CLHAD3", CODEN = "CLMCAV", CODEN = "CLSRE8", CODEN = "CMAPDK", CODEN = "CMBUA9", CODEN = "CMCYEO", CODEN = "CMENEZ", CODEN = "CMERA9", CODEN = "CMMECC", CODEN = "CMMEEE", CODEN = "CMMPA9", CODEN = "CMORAP", CODEN = "CMOTDY", CODEN = "CMPBEK", CODEN = "CMPDAM", CODEN = "CMPHAY", CODEN = "CMPHC2", CODEN = "CMPJA6", CODEN = "CMPMAF", CODEN = "CMPWAB", CODEN = "CMRED4", CODEN = "CMSTCJ", CODEN = "CMSVAN", CODEN = "CMSYE2", CODEN = "CMUCAA", CODEN = "CMUJDY", CODEN = "CNEVEW", CODEN = "CNISE9", CODEN = "CNOMEL", CODEN = "COABER", CODEN = "COATBA", CODEN = "COBUAH", CODEN = "COCBE3", CODEN = "COCHDK", CODEN = "COCOD7", CODEN = "COGDET", CODEN = "COGRD2", CODEN = "COHUAD", CODEN = "COLADA", CODEN = "COLAEB", CODEN = "COLJD3", CODEN = "COMBDI", CODEN = "COMEDR", CODEN = "COMGDX", CODEN = "COMHAX", CODEN = "COMIE6", CODEN = "COMLEF", CODEN = "COMPER", CODEN = "COMSE2", CODEN = "COPIEL", CODEN = "COSEEO", CODEN = "COSPDM", CODEN = "COSTCX", CODEN = "CPAUAJ", CODEN = "CPBTAL", CODEN = "CPCIBS", CODEN = "CPCLE6", CODEN = "CPCPAI", CODEN = "CPDIDZ", CODEN = "CPEXEI", CODEN = "CPFLBI", CODEN = "CPGRA6", CODEN = "CPHCBZ", CODEN = "CPHREF", CODEN = "CPHYE2", CODEN = "CPLIE8", CODEN = "CPMAMV", CODEN = "CPMTA8", CODEN = "CPPNB6", CODEN = "CPSEDU", CODEN = "CPTRB4", CODEN = "CQGRDG", CODEN = "CQMAAQ", CODEN = "CRASEV", CODEN = "CRBRAT", CODEN = "CRCHE8", CODEN = "CRGRDN", CODEN = "CRLIAI", CODEN = "CRPFEX", CODEN = "CRVMAC", CODEN = "CRYPE6", CODEN = "CSCIAE", CODEN = "CSDADW", CODEN = "CSFUDY", CODEN = "CSHSAZ", CODEN = "CSINET", CODEN = "CSMNEF", CODEN = "CSPLEO", CODEN = "CSSCDB", CODEN = "CSSEEI", CODEN = "CSTAEB", CODEN = "CSTIEZ", CODEN = "CSYND6", CODEN = "CTCRAE", CODEN = "CTDBA5", CODEN = "CTMEET", CODEN = "CTPHDI", CODEN = "CTRAA4", CODEN = "CUBLE2", CODEN = "CUGED5", CODEN = "CUMIDD", CODEN = "CUOBE3", CODEN = "CUSCAM", CODEN = "CVGPDB", CODEN = "CVIUF4", CODEN = "CWLJDP", CODEN = "CYBNAW", CODEN = "CYTOAN", CODEN = "CYTODQ", CODEN = "CYTZAM", CODEN = "CZMJAE", CODEN = "DACODM", CODEN = "DAMADU", CODEN = "DANKAS", CODEN = "DBANAD", CODEN = "DBMSEO", CODEN = "DCEBE8", CODEN = "DCGEER", CODEN = "DDJOEB", CODEN = "DEBIAO", CODEN = "DEMADO", CODEN = "DESUED", CODEN = "DEVPED", CODEN = "DFFNAW", CODEN = "DGDFA5", CODEN = "DGNTDW", CODEN = "DHSTEV", CODEN = "DHWHAB", CODEN = "DIEQAN", CODEN = "DIGNAO", CODEN = "DIRVE5", CODEN = "DJTGEB", CODEN = "DKENEW", CODEN = "DNAADR", CODEN = "DNSEES", CODEN = "DPCOEQ", CODEN = "DSINE6", CODEN = "DSJOEE", CODEN = "DSMHA4", CODEN = "DSSYDK", CODEN = "DTBSDQ", CODEN = "DTGDE7", CODEN = "DTMNAT", CODEN = "DUMJAO", CODEN = "EAPPEY", CODEN = "ECJSER", CODEN = "ECMTA7", CODEN = "ECREAL", CODEN = "EDNSBH", CODEN = "EDNSBM", CODEN = "EFMEAH", CODEN = "EIVKAX", CODEN = "EJABDD", CODEN = "EJBCAI", CODEN = "EJCBDN", CODEN = "EJCBEO", CODEN = "EJNMEA", CODEN = "EJOCDI", CODEN = "EJORDT", CODEN = "EJPREZ", CODEN = "EKRKAR", CODEN = "ELCTDN", CODEN = "ELEADA", CODEN = "ELLEAK", CODEN = "ELLIDZ", CODEN = "ELMMAF", CODEN = "ELNEAU", CODEN = "ELNTA7", CODEN = "ELODAW", CODEN = "ELRAA4", CODEN = "EMIREL", CODEN = "EMJODG", CODEN = "ENDEAS", CODEN = "ENMAAR", CODEN = "ENPOEK", CODEN = "EOCMEO", CODEN = "EONLE8", CODEN = "EPEBD7", CODEN = "EPMEAJ", CODEN = "EPODEU", CODEN = "ERGOAX", CODEN = "ERMGB6", CODEN = "ESBIAV", CODEN = "ESTHAG", CODEN = "ETTIEU", CODEN = "ETTTET", CODEN = "EWWWE6", CODEN = "EXEEE5", CODEN = "EXMYD2", CODEN = "EXPEAM", CODEN = "EXPSAU", CODEN = "EXSEE7", CODEN = "EYPRE4", CODEN = "FAJOEC", CODEN = "FASRDV", CODEN = "FEADEU", CODEN = "FEBLAL", CODEN = "FEBPBY", CODEN = "FEPRA7", CODEN = "FIBQAU", CODEN = "FMLED7", CODEN = "FMREE4", CODEN = "FODMD5", CODEN = "FORBA5", CODEN = "FORTAP", CODEN = "FSSYD8", CODEN = "FUJTAR", CODEN = "FUMAAJ", CODEN = "GAMOE4", CODEN = "GEDEEP", CODEN = "GENED6", CODEN = "GENTAE", CODEN = "GLSEED", CODEN = "GLYCE3", CODEN = "GNMCEP", CODEN = "GPYSA7", CODEN = "GRGVA8", CODEN = "GRWAAP", CODEN = "HABRAX", CODEN = "HAEMAX", CODEN = "HALEAA", CODEN = "HALRAF", CODEN = "HAMAA3", CODEN = "HCMYAL", CODEN = "HIMADS", CODEN = "HJICAI", CODEN = "HJKHDC", CODEN = "HLTPAO", CODEN = "HPJOAX", CODEN = "HUBIAA", CODEN = "HUFAA6", CODEN = "HUHEAS", CODEN = "HUNEDR", CODEN = "HVERAP", CODEN = "HYPRAX", CODEN = "IAPMEZ", CODEN = "IBMBES", CODEN = "IBMJAE", CODEN = "IBMSA7", CODEN = "IBMTAA", CODEN = "ICCBAF", CODEN = "ICGADZ", CODEN = "ICHPCG", CODEN = "ICOEEK", CODEN = "ICOMD9", CODEN = "ICSAES", CODEN = "ICSYBT", CODEN = "IDXRA5", CODEN = "IEANEP", CODEN = "IEARAX", CODEN = "IEBEAX", CODEN = "IECMBT", CODEN = "IECTAF", CODEN = "IEEDAB", CODEN = "IEEDEF", CODEN = "IEEECA", CODEN = "IEEPAD", CODEN = "IEERAJ", CODEN = "IEESAM", CODEN = "IEEWAY", CODEN = "IEITEF", CODEN = "IEJQA7", CODEN = "IEMGAQ", CODEN = "IEMIDZ", CODEN = "IEPCBU", CODEN = "IERNE8", CODEN = "IESEDJ", CODEN = "IESOEG", CODEN = "IETAA9", CODEN = "IETABA", CODEN = "IETDAI", CODEN = "IETIAX", CODEN = "IETMAB", CODEN = "IETPAK", CODEN = "IETTAW", CODEN = "IFCAE3", CODEN = "IFCEBC", CODEN = "IFCNA4", CODEN = "IFCSEN", CODEN = "IFDBEB", CODEN = "IFESEX", CODEN = "IFPLAT", CODEN = "IFSRAS", CODEN = "IGRSD2", CODEN = "IHPRBS", CODEN = "IHSCEZ", CODEN = "IICOEW", CODEN = "IIOMEI", CODEN = "IJAEDW", CODEN = "IJANDP", CODEN = "IJARE4", CODEN = "IJAUED", CODEN = "IJBBBQ", CODEN = "IJBBFU", CODEN = "IJBOBV", CODEN = "IJCIAH", CODEN = "IJCMAT", CODEN = "IJCOAZ", CODEN = "IJCTEK", CODEN = "IJCVEQ", CODEN = "IJDBE5", CODEN = "IJEBA6", CODEN = "IJEEAF", CODEN = "IJHMAK", CODEN = "IJHYEQ", CODEN = "IJISED", CODEN = "IJMEBM", CODEN = "IJMMBC", CODEN = "IJMPDN", CODEN = "IJMPEO", CODEN = "IJMTAW", CODEN = "IJNADH", CODEN = "IJNFDW", CODEN = "IJNMBH", CODEN = "IJPBEV", CODEN = "IJPPE5", CODEN = "IJQBDZ", CODEN = "IJQCB2", CODEN = "IJQSAF", CODEN = "IJQSDI", CODEN = "IJRAE4", CODEN = "IJRBE7", CODEN = "IJSAE9", CODEN = "IJSCBC", CODEN = "IJSYA9", CODEN = "IJSZEG", CODEN = "IJTPBM", CODEN = "IMCSE4", CODEN = "IMPAEF", CODEN = "IMPDEO", CODEN = "IMPEER", CODEN = "IMSIEK", CODEN = "IMTHAI", CODEN = "IMTHBJ", CODEN = "INFAC4", CODEN = "INFCDB", CODEN = "INFCEC", CODEN = "INFRCL", CODEN = "INFTCR", CODEN = "INFWE4", CODEN = "INPEEY", CODEN = "INSKDW", CODEN = "INSYD6", CODEN = "INWODU", CODEN = "IPDAD9", CODEN = "IPDTEX", CODEN = "IPETD3", CODEN = "IPJIEI", CODEN = "IPMADK", CODEN = "IPPADZ", CODEN = "IPPDDA", CODEN = "IPPRDI", CODEN = "IPRODJ", CODEN = "IRAMEB", CODEN = "IRCYAJ", CODEN = "IRELAO", CODEN = "IRITAY", CODEN = "IRLAAQ", CODEN = "IRMGBG", CODEN = "ISACEM", CODEN = "ISIJBC", CODEN = "ISISA4", CODEN = "ISJMAP", CODEN = "ISOTE7", CODEN = "ISUDX8", CODEN = "ISYMAW", CODEN = "ISYSDJ", CODEN = "ITADAS", CODEN = "ITBTEH", CODEN = "ITCEDA", CODEN = "ITCOB4", CODEN = "ITCSDI", CODEN = "ITDSEO", CODEN = "ITKEEH", CODEN = "ITLBDC", comment = "These CODEN are correct, except that they have been converted to lower case", coden = "itmeer", coden = "itmgex", coden = "itmid4", coden = "itnnep", coden = "itpidj", coden = "itpred", coden = "itpseg", coden = "itrdde", coden = "iumjab", coden = "ivjodl", coden = "iweea4", coden = "izamat", coden = "jacgar", coden = "jacoah", coden = "jacsat", coden = "jactaw", coden = "jaecet", coden = "jahsak", coden = "jalga4", coden = "jalsa6", coden = "jamaap", coden = "jamads", coden = "jamcav", coden = "jammdu", coden = "japgbp", coden = "japiau", coden = "jareew", coden = "jasman", coden = "jatsdf", coden = "jaumax", coden = "jaxtaz", coden = "jbbmdg", coden = "jbcha3", coden = "jbditd", coden = "jbmrej", coden = "jbsdd6", coden = "jcaleg", coden = "jcamdi", coden = "jcatd5", coden = "jcbta7", coden = "jcbtb8", coden = "jccee5", coden = "jcchdd", coden = "jcebd5", coden = "jcinao", coden = "jcisd8", coden = "jcise9", coden = "jclba3", coden = "jcllax", coden = "jcmbdb", coden = "jcmiex", coden = "jcmmeb", coden = "jcmtdv", coden = "jcnrev", coden = "jcoid8", coden = "jcpadn", coden = "jcpsa6", coden = "jcrgae", coden = "jcssbm", coden = "jcssep", coden = "jcteem", coden = "jcthar", coden = "jctpah", coden = "jdadex", coden = "jdeqak", coden = "jdgeas", coden = "jdimew", coden = "jdocas", coden = "jdsmaa", coden = "jeaiel", coden = "jebiam", coden = "jeclb3", coden = "jecmb6", coden = "jedrap", coden = "jeemaf", coden = "jemied", coden = "jemsa5", coden = "jenmdt", coden = "jepcea", coden = "jezoao", coden = "jflsa7", coden = "jfuaaw", coden = "jganeg", coden = "jgmian", coden = "jgopeo", coden = "jgplad", coden = "jgrea2", coden = "jgthdo", coden = "jhaddq", coden = "jicye5", coden = "jietau", coden = "jipea6", coden = "jiprde", coden = "jirral", coden = "jiscdi", coden = "jjatdk", coden = "jjgpd4", coden = "jjind8", coden = "jlcmak", coden = "jllien", coden = "jlmsak", coden = "jlpre2", coden = "jmanak", coden = "jmapaq", coden = "jmbbbo", coden = "jmblaj", coden = "jmdeec", coden = "jmevau", coden = "jmiado", coden = "jmivek", coden = "jmkyaz", coden = "jmobak", coden = "jmopew", coden = "jmpaam", coden = "jmpha9", coden = "jmrae2", coden = "jmrmd3", coden = "jmtaa8", coden = "jmvaai", coden = "jnbbau", coden = "jnbcax", coden = "jnbraa", coden = "jnciam", coden = "jncieq", coden = "jncme4", coden = "jncsai", coden = "jnrsds", coden = "jnuta9", coden = "joaldv", coden = "joamav", coden = "joaod6", coden = "jobaay", coden = "jobiao", coden = "jobpde", coden = "jobsdn", coden = "jocma7", coden = "jocreq", coden = "johea8", coden = "jomman", coden = "jomra4", coden = "jonea4", coden = "jonra9", coden = "joopec", coden = "jopad5", coden = "jophan", coden = "josaah", coden = "josha4", coden = "josmar", coden = "josued", coden = "jotabn", coden = "joviam", coden = "jpama4", coden = "jpbpdl", coden = "jpchd2", coden = "jpdcer", coden = "jpepe3", coden = "jpetab", coden = "jpgedd", coden = "jphac5", coden = "jphnb9", coden = "jphya7", coden = "jpiedn", coden = "jqsrae", coden = "jqutau", coden = "jrarax", coden = "jrcee8", coden = "jrcpa3", coden = "jrmaa8", coden = "jrmab9", coden = "jrnaad", coden = "jrnbag", coden = "jsbiem", coden = "jscsaj", coden = "jsimav", coden = "jsinay", coden = "jsirac", coden = "jsomar", coden = "jspueq", coden = "jssaef", coden = "jssie5", coden = "jssodm", coden = "jstbaj", coden = "jstnal", coden = "jstpsb", coden = "jsyceh", coden = "jsyla6", coden = "jsyma9", coden = "jtbiap", coden = "jtpedi", coden = "jvcaeo", coden = "jvcre7", coden = "jvlce7", coden = "jvsped", coden = "jwssap", coden = "jyceaj", coden = "kbrna5", coden = "keree3", coden = "kerneu", coden = "kesea4", coden = "kybeap", coden = "laapaw", coden = "latedt", coden = "lcrcao", coden = "lcsrea", coden = "lfwoe8", coden = "linmec", coden = "llcoei", coden = "lmicdi", coden = "lmphdy", coden = "lmsbbt", coden = "lnbmah", coden = "lncsd9", coden = "lnmaa2", coden = "lnmlaz", coden = "lnpha4", coden = "lscoex", coden = "lssad2", coden = "maana3", coden = "mabiar", coden = "macwea", coden = "madeap", coden = "magaas", coden = "magda3", coden = "maindc", coden = "maioeg", coden = "mamcau", coden = "mamga8", coden = "marear", coden = "mastba", coden = "masyes", coden = "matged", coden = "mazeax", coden = "mbceev", coden = "mbeveo", coden = "mbipdp", coden = "mbred3", coden = "mcbia7", coden = "mcbib8", coden = "mcblag", coden = "mcebd4", coden = "mcedda", coden = "mcend6", coden = "mcene7", coden = "mcmoeg", coden = "mcmpaf", coden = "mcrlas", coden = "mcsidr", coden = "mcsye8", coden = "mcusey", coden = "mdawah", coden = "meacbx", coden = "medve6", coden = "meenah", coden = "menzau", coden = "mesbel", coden = "metaaj", coden = "mfkaaf", coden = "mggeae", coden = "mibldr", coden = "mimcai", coden = "mimid5", coden = "mimja5", coden = "miscei", coden = "mkscas", coden = "mlbb", coden = "mmbied", coden = "mmbybo", coden = "mmdeeb", coden = "mmicdt", coden = "mmpha8", coden = "mmscdb", coden = "mnmta2", coden = "moeceo", coden = "momiee", coden = "mopma3", coden = "moredq", coden = "mosiea", coden = "mpcpco", coden = "mpevek", coden = "mpstdf", coden = "mpysa5", coden = "mrcod2", coden = "mrobeo", coden = "msciam", coden = "mstmbi", coden = "mthca2", coden = "mthnb2", coden = "mtkaab", coden = "mtmnaq", coden = "mtscan", coden = "mtseat", coden = "mttcas", coden = "mureav", coden = "musbbs", coden = "mvbrav", coden = "mweeei", coden = "mwreab", coden = "mycgao", coden = "nadoaw", coden = "narhad", coden = "nasbd3", coden = "nasfeg", coden = "natuas", coden = "natway", coden = "nawia7", coden = "nbitab", coden = "nebie2", coden = "nejmag", coden = "neredz", coden = "nessef", coden = "neuceb", coden = "nfaddl", coden = "nimaer", coden = "nnbya7", coden = "nneteb", coden = "nnobe7", coden = "noandd", coden = "nrloep", coden = "nrlqar", coden = "nstbat", coden = "ntelap", coden = "ntroav", coden = "ntwkaa", coden = "nualeg", coden = "numma7", coden = "nupabl", coden = "nupbbo", coden = "nusaaz", coden = "nwscal", coden = "nytiao", coden = "nzmab7", coden = "ocamd5", coden = "ocmiek", coden = "ocnsdk", coden = "ofsyeh", coden = "oigjav", coden = "omega6", coden = "omsoe2", coden = "oncnes", coden = "onlidn", coden = "opacat", coden = "opcob8", coden = "opcoeb", coden = "opegar", coden = "opledp", coden = "oprea1", coden = "oprqak", coden = "optzdq", coden = "oqeldi", coden = "ordyam", coden = "orled5", coden = "otikaj", coden = "pacoej", coden = "paisdq", coden = "pamyar", coden = "papcaa", coden = "pbimac", coden = "pbliej", coden = "pbmea8", coden = "pcaua3", coden = "pcbrd2", coden = "pcmpei", coden = "pcpsa4", coden = "pcsoda", coden = "pcwddv", coden = "pcwodu", coden = "pdnpdt", coden = "peevd9", coden = "pemsa3", coden = "pepsbj", coden = "peredn", coden = "pfecdr", coden = "pflabk", coden = "pharat", coden = "phblag", coden = "phcbap", coden = "phfle6", coden = "phjrd9", coden = "phmaa4", coden = "phrea7", coden = "phrvao", coden = "phstbo", coden = "phtoad", coden = "phwoew", coden = "physag", coden = "pireae", coden = "pjmaai", coden = "planab", coden = "plcmdl", coden = "pljued", coden = "plmtal", coden = "plraan", coden = "plrbaq", coden = "plsmdx", coden = "pmbidb", coden = "pmfaa4", coden = "pmhaa4", coden = "pmosaz", coden = "pnasa6", coden = "pnende", coden = "pnmbaf", coden = "podie2", coden = "ppexep", coden = "ppltee", coden = "ppsoau", coden = "preaay", coden = "preba3", coden = "prerel", coden = "prgmbd", coden = "prgrdu", coden = "pricdt", coden = "prlaaz", coden = "prlba4", coden = "prledg", coden = "prltao", coden = "progd3", coden = "prota5", coden = "prowae", coden = "prplcm", coden = "prseae", coden = "prslaz", coden = "prssdp", coden = "prvcan", coden = "prvdaq", coden = "psdae6", coden = "psfgey", coden = "psisdg", coden = "psmiax", coden = "psyma7", coden = "ptnra8", coden = "ptrbae", coden = "ptrdeo", coden = "ptrfeu", coden = "ptrsav", coden = "pwoqdy", coden = "pylaag", coden = "pylbaj", coden = "qamaay", coden = "qcbuen", coden = "qjmaat", coden = "qjmmav", coden = "qjmsaf", coden = "qjrmam", coden = "qrbudp", coden = "qsardi", coden = "radbe7", coden = "rascad", coden = "rcmmar", coden = "rcmtae", coden = "rctjdm", coden = "rdigau", coden = "refias", coden = "reltan", coden = "rfaadn", coden = "rfands", coden = "rfdedg", coden = "rjcldq", coden = "rmhpbe", coden = "rmjmae", coden = "rmmaev", coden = "rmmgab", coden = "rmphat", coden = "roagd2", coden = "rptwad", coden = "rsalfd", coden = "rsrod3", coden = "rtdvaq", coden = "rveebt", coden = "saapda", coden = "sacje3", coden = "samcas", coden = "samsec", coden = "sanabs", coden = "sanbbv", coden = "sapmb6", coden = "scamac", coden = "scebe3", coden = "scieas", coden = "scipev", coden = "scise6", coden = "scjaep", coden = "scledc", coden = "scnebk", coden = "scomdh", coden = "scpgd4", coden = "sejoed", coden = "selid4", coden = "semybl", coden = "sepsbi", coden = "sewoea", coden = "sfendp", coden = "sgbud4", coden = "sgnwd2", coden = "sidpaa", coden = "sigbel", coden = "sigmdj", coden = "signdm", coden = "sigsbz", coden = "sigsd3", coden = "sijcd4", coden = "simua2", coden = "simud5", coden = "sinodq", coden = "siread", coden = "sjamdu", coden = "sjcodc", coden = "sjcsep", coden = "sjdba9", coden = "sjmaah", coden = "sjmael", coden = "sjnaam", coden = "sjoce3", coden = "sjope8", coden = "smataz", coden = "smcpax", coden = "smeped", coden = "smjcat", coden = "smjmap", coden = "smster", coden = "snewd6", coden = "somadl", coden = "soriax", coden = "spcoel", coden = "spexbl", coden = "sphda9", coden = "splban", coden = "sprodr", coden = "sproes", coden = "spvieu", coden = "srdfed", coden = "srecd8", coden = "sroldh", coden = "srpsd9", coden = "ssbde4", coden = "sseba9", coden = "ssmaac", coden = "sssaa8", coden = "sstrey", coden = "stace3", coden = "stopb7", coden = "strue6", coden = "stscep", coden = "sunwdw", coden = "surveg", coden = "svmda8", coden = "sycna9", coden = "syine9", coden = "taeea5", coden = "tamtam", coden = "tansao", coden = "tbscdb", coden = "tbsrdm", coden = "tchaam", coden = "tcmta2", coden = "tcmte6", coden = "tcscdi", coden = "tereau", coden = "tetref", coden = "thejd4", coden = "tlcmbt", coden = "tmisaf", coden = "tplgaf", coden = "tprbau", coden = "trgee2", coden = "trmiea", coden = "trrebk", coden = "trscbj", coden = "tsaea9", coden = "tsica9", coden = "twasde", coden = "tymea9", coden = "ulccdc", coden = "ultrd6", coden = "uncoet", coden = "unred5", coden = "utmada", coden = "vaxpen", coden = "vicoe5", coden = "visram", coden = "vslgao", coden = "vuese9", coden = "wewefp", coden = "wiine9", coden = "wpklao", coden = "wredem", coden = "wreraq", coden = "wsjoaf", coden = "wstee5", coden = "wzhlde", coden = "wztkay", coden = "wztuau", coden = "xjouea", coden = "xresea", coden = "yeasa8", coden = "yeste3", coden = "zammax", coden = "zampdb", coden = "zdace2", coden = "zmlgaq", coden = "zmrrep", coden = "zncbda", coden = "zoscex", coden = "zpaadb", coden = "zpbbdj", coden = "zpcfd2", coden = "zpcmdn", coden = "ztvram", coden = "zwvgaa", } @Article{check-digit-less-CODEN, comment = "The following CODEN are valid, except that they are missing their final check digits (this is common in some library catalogs", CODEN = "AALEE", CODEN = "AASTA", CODEN = "ABACE", CODEN = "ACMSC", CODEN = "ADMOA", CODEN = "AINFA", CODEN = "AINTB", CODEN = "AISJB", CODEN = "AJSOA", CODEN = "ALGOE", CODEN = "ALSHA", CODEN = "AMHCB", CODEN = "ANMAA", CODEN = "ANMAE", CODEN = "AOREE", CODEN = "APLQD", CODEN = "AREOA", CODEN = "ARGSB", CODEN = "ARITB", CODEN = "ASLPA", CODEN = "AURCA", CODEN = "AVTEA", CODEN = "BASIC", CODEN = "BCPCA", CODEN = "BEVED", CODEN = "BITTE", CODEN = "BIZBA", CODEN = "BJMSA", CODEN = "BMFRA", CODEN = "BMSSB", CODEN = "BSMSA", CODEN = "BYTED", CODEN = "CACMA", CODEN = "CAGDE", CODEN = "CAIDA", CODEN = "CCEND", CODEN = "CGFOD", CODEN = "CGRAD", CODEN = "CHKWE", CODEN = "CJISD", CODEN = "CMAPD", CODEN = "CMORA", CODEN = "CMPJA", CODEN = "CMPTA", CODEN = "CMSYE", CODEN = "CNISE", CODEN = "CNOME", CODEN = "COATB", CODEN = "COCOD", CODEN = "COGRD", CODEN = "COHUA", CODEN = "COMHA", CODEN = "COSPD", CODEN = "COSTC", CODEN = "CPAMA", CODEN = "CPHCB", CODEN = "CPLIE", CODEN = "CPTRB", CODEN = "CQMAA", CODEN = "CSAEE", CODEN = "CSTIE", CODEN = "DDJSD", CODEN = "DGRCD", CODEN = "DJTAE", CODEN = "DJTGE", CODEN = "DPCOE", CODEN = "DSINE", CODEN = "DTJOE", CODEN = "DTMNA", CODEN = "ECJSE", CODEN = "ECREA", CODEN = "EKRKA", CODEN = "ELLEA", CODEN = "ELLID", CODEN = "EMODD", CODEN = "EONLE", CODEN = "EPODE", CODEN = "ERMGB", CODEN = "ETTIE", CODEN = "FASRD", CODEN = "FSSYD", CODEN = "FUJTA", CODEN = "GLSEE", CODEN = "HAMAA", CODEN = "HJKHD", CODEN = "HUHEA", CODEN = "IAIEE", CODEN = "ICCBA", CODEN = "ICGAD", CODEN = "ICSAE", CODEN = "ICSYB", CODEN = "IEPCB", CODEN = "IESOE", CODEN = "IFDBE", CODEN = "IFESE", CODEN = "IJARE", CODEN = "IJBOB", CODEN = "IJISE", CODEN = "IJMPE", CODEN = "INFAC", CODEN = "INFTC", CODEN = "INSKD", CODEN = "IPMAD", CODEN = "IRCYA", CODEN = "IRELA", CODEN = "IRLAA", CODEN = "ISIJB", CODEN = "ISUDX", CODEN = "ISYSD", CODEN = "ITBTE", CODEN = "ITMEE", CODEN = "ITPRE", CODEN = "ITPSE", CODEN = "IZAMA", CODEN = "JAUMA", CODEN = "JCAMD", CODEN = "JCTHA", CODEN = "JCTPA", CODEN = "JDOCA", CODEN = "JIRRA", CODEN = "JISCD", CODEN = "JLPRE", CODEN = "JMPHA", CODEN = "JNBRA", CODEN = "JOMMA", CODEN = "JOSHA", CODEN = "JOTAB", CODEN = "JRNBA", CODEN = "JSIMA", CODEN = "JSINA", CODEN = "JSSOD", CODEN = "JSYCE", CODEN = "JVLCE", CODEN = "JWSSA", CODEN = "KESEA", CODEN = "LLCOE", CODEN = "LMICD", CODEN = "MCENE", CODEN = "MCMPA", CODEN = "MCRLA", CODEN = "MCSID", CODEN = "MDMZD", CODEN = "MEORD", CODEN = "MICOE", CODEN = "MIMCA", CODEN = "MIMJA", CODEN = "MKSCA", CODEN = "MMPHA", CODEN = "MOPMA", CODEN = "MSTMB", CODEN = "MTHNB", CODEN = "MTSEA", CODEN = "MTTCA", CODEN = "NADOA", CODEN = "NAWIA", CODEN = "NRLOE", CODEN = "NSTBA", CODEN = "NTROA", CODEN = "NZMAB", CODEN = "OCMIE", CODEN = "ORDYA", CODEN = "OTIKA", CODEN = "PACOE", CODEN = "PCAUA", CODEN = "PNMBA", CODEN = "PPSOA", CODEN = "PRGMB", CODEN = "PROGD", CODEN = "PROWA", CODEN = "PRSEA", CODEN = "PRSLA", CODEN = "PSISD", CODEN = "PSYMA", CODEN = "PTRSA", CODEN = "RDIGA", CODEN = "RMMGA", CODEN = "SAMCA", CODEN = "SEPSB", CODEN = "SGNWD", CODEN = "SIGBE", CODEN = "SIGSB", CODEN = "SINOD", CODEN = "SJCOD", CODEN = "SMJCA", CODEN = "SMSTE", CODEN = "SNEWD", CODEN = "SRDFE", CODEN = "SRECD", CODEN = "SRPSD", CODEN = "SSEJE", CODEN = "STPGE", CODEN = "SVMDA", CODEN = "TAEEA", CODEN = "TANSA", CODEN = "TCSCD", CODEN = "TMISA", CODEN = "TSCSE", CODEN = "TSICA", CODEN = "UNCOE", CODEN = "VICOE", CODEN = "WIINE", CODEN = "WZTUA", CODEN = "YEASA", CODEN = "ZAMMA", CODEN = "ZMRRE", } @Article{bad-CODEN, comment = "These CODEN have incorrect check digits.", CODEN = "ITDSEP", CODEN = "ITKEEI", CODEN = "ITLBDD", coden = "itmees", coden = "itmgey", coden = "itmid5", comment = "This is the British Dental Journal CODEN, but the assigned check digit in library catalogs is wrong.", CODEN = "BDJOHJ", } @Article{short-CODEN, comment = "These CODEN values are short", CODEN = "I", CODEN = "IT", CODEN = "ITD", CODEN = "ITDS", CODEN = "ITDSE", } @Article{long-CODEN, comment = "These CODEN have too many characters", CODEN = "AITDSEO", CODEN = "ABITDSEO", CODEN = "ABCITDSEO", CODEN = "ABCDITDSEO", CODEN = "ABCDEITDSEO", CODEN = "ABCDEFITDSEO", } bibclean-2.11.4.1.orig/Makefile.in0000644000175200017520000010070307133432573015743 0ustar debiandebian#======================================================================= # Makefile for BibTeX .bib file prettyprinter # # Current target list: (these include all GNU Project standard targets) # all build bibclean # bclproto obsolete; build an early prototype of bibclean # bibclean executable for bibclean # bibclean.h documentation strings for help() function # bibclean.hlp VAX VMS help file (automatically converted # from bibclean.txt) # bibclean.html HTML version of formatted manual pages # bibclean.i C preprocessor output from bibclean.c # bibclean.pdf Adobe Portable Document Format version # of bibclean.man # bibclean.ps PostScript version of bibclean.man # bibclean.tar tar archive file for ftp distribution # bibclean.txt nroff'ed bibclean.man manual page file # bibclean.zip Info-zip archive file for ftp distribution # bibclean.zoo zoo archive file for ftp distribution # check same as test (see below) # clean clean up all but executables and time stamps # clobber clean up everything # distclean remove everything make can rebuild at remote site # docs make bibclean.txt, bibclean.hlp, and bibclean.ps # install install executable and man pages # install.time internal target for install # install-exe install executable # install-man install man pages # install-ftp install .tar, .zip, and .zoo files in ftp tree # install-ftp.time internal target for install-ftp # lint check for code problems # mostlyclean same as clean # maintainer-clean for program author only: remove everything # make can rebuild at author's site # romtol build and run test program for romtol() # TAGS GNU Emacs tags file # test test bibclean on BibTeX and Scribe # bibliographies # test-bibtex test 1,2,3 bibclean on BibTeX bibliographies # test-bibtex-1 test 1 bibclean on BibTeX bibliographies # test-bibtex-2 test 2 bibclean on BibTeX bibliographies # test-bibtex-3 test 3 ISBN and ISSN verification # test-scribe test 1,2,3 bibclean on Scribe bibliographies # test-scribe-1 test 1 bibclean on Scribe bibliographies # test-scribe-2 test 2 bibclean on Scribe bibliographies # test-scribe-3 test 3 bibclean on Scribe bibliographies # test-version test extraction of version number # uninstall remove files installed by "make install" # uninstall-ftp remove installed files in anonymous ftp # directory # # [01-Jul-1996] -- add targets bibclean.pdf and DISTILL macro, and update # DIST-FILES list # [03-May-1996] -- add targets match, romtol, test-match, and test-romtol, # and update DIST-FILES list for version 2.11.3 release # [25-Apr-1996] -- add target for bibclean.html, with associated # support Makefile variables # [20-Sep-1995] -- revise to use GNU autoconf and configure # [08-Mar-1995] -- Change TARGET to TARGETS to avoid conflict with # built-in macro on Cray systems. Add -D_POSIX_SOURCE # to dec-alpha-osf1-c++ CC definition to work around # bug in C++ signal.h header file on OSF/1 3.x. # [21-Nov-1994] -- add cray-el94 target # [11-Nov-1994] -- add sun-sparc-solaris2-lcc and sun-sparc-sunos5-lcc # targets # [18-Oct-1994] -- add isbn.[co] to file lists # [16-Oct-1994] -- add strist.[co] to file lists # [04-Jun-1994] -- update for version 2.10 # add lint target # [31-Dec-1993] -- final polishing of Makefile for public release # after TUGboat publication # [24-Sep-1993] #======================================================================= #### Start of system configuration section. #### prefix = /usr/local exec_prefix = $(prefix) bindir = $(exec_prefix)/bin datadir = $(prefix)/lib infodir = $(prefix)/info libdir = $(prefix)/lib srcdir = @srcdir@ # This setting is specific to the developer's site, and not needed elsewhere FTPDIR = /u/ftp/pub/tex/bib # Need new awk (nawk) or gawk here: AWK = @AWK@ CC = @CC@ CXX = @CXX@ CFLAGS = @CFLAGS@ $(OPT) CHARSET = @CHARSET@ CXXFLAGS = @CXXFLAGS@ $(OPT) DEFS = @DEFS@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ LDFLAGS = $(OPT) LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ OPT = VPATH = @srcdir@ # Where to install the manual pages. mandir = $(prefix)/man/man1 # Extension (not including `.') for the installed manual page filenames. manext = 1 #### End of system configuration section. #### # For testing purposes, make sure we always have the same # initialization file BIBCLEAN = ./bibclean -init-file bibclean.ini BIBTEX = bibtex BIBTEX-TESTS = testbib1.org testbib2.org testbib3.org testbib4.org \ testbib5.org testbib6.org testisxn.org testcodn.org # This program is freely available at ftp://ftp.math.utah.edu/pub/misc/checksum-x-y.* CHECKSUM = checksum CHMOD = chmod COMPRESS = compress # Use the -p flag where available to preserve file time stamps # All known UNIX implementations have an rcp that supports -p, # but not all have similar support in cp. CP = /bin/cp -p CP = /bin/cp CP = rcp -p DIST-FILES = ChangeLog README Makefile Makefile.in bibclean.c \ bibclean.h bibclean.hlp bibclean.html bibclean.ini \ bibclean.man bibclean.pdf bibclean.ps bibclean.reg \ bibclean.txt build-all.sh ch.h chek.c config.h \ config.hin configure configure.in configure.sed \ custom.h delete.h do.c fix.c fndfil.c isbn.c \ keybrd.c keybrd.h match.c match.dat match.h \ match.lok option.c pattern.h rofvms.awk romtol.c \ romtol.dat romtol.lok strist.c strtol.c token.h \ toklst.h vaxvms.c vmswild.c xctype.h xerrno.h \ xlimits.h xpwd.h xstat.h xstdlib.h xstring.h \ xtypes.h xunistd.h yesorno.h $(BIBTEX-TESTS) \ $(BIBTEX-TESTS:.org=.bok) $(BIBTEX-TESTS:.org=.eok) \ testbib2.ltx $(SCRIBE-TESTS) \ $(SCRIBE-TESTS:.org=.bok) $(SCRIBE-TESTS:.org=.eok) \ testscr2.bo2 testscr2.eo2 doc/Makefile \ doc/bibclean.aux doc/bibclean.bbl doc/bibclean.bib \ doc/bibclean.blg doc/bibclean.dvi doc/bibclean.idx \ doc/bibclean.ilg doc/bibclean.ind doc/bibclean.log \ doc/bibclean.lot doc/bibclean.ltx doc/bibclean.sok \ doc/bibclean.sty doc/bibclean.toc doc/is-plain.bst \ doc/ltugboat.sty doc/path.sty doc/texnames.sty \ doc/tugboat.cmn ibmpc/dos/README \ ibmpc/dos/msc5p1/bibclean.exe \ ibmpc/dos/msc5p1/config.h \ ibmpc/dos/msc5p1/ibmclean.bat \ ibmpc/dos/msc5p1/ibmtest.bat \ ibmpc/dos/msc5p1/msc51bld.bat \ ibmpc/dos/msc5p1/msc51pth.bat \ ibmpc/dos/msc6p0/bibclean.exe \ ibmpc/dos/msc6p0/bibclean.map \ ibmpc/dos/msc6p0/config.h \ ibmpc/dos/msc6p0/ibmclean.bat \ ibmpc/dos/msc6p0/ibmtest.bat \ ibmpc/dos/msc6p0/msc60bld.bat \ ibmpc/dos/msc6p0/msc60pth.bat \ ibmpc/dos/msc7p0/config.h \ ibmpc/dos/msc7p0/ibmclean.bat \ ibmpc/dos/msc7p0/ibmtest.bat \ ibmpc/dos/msc7p0/msc70bld.bat \ ibmpc/dos/msc7p0/msc70pth.bat \ ibmpc/dos/tcc2p0/bibclean.exe \ ibmpc/dos/tcc2p0/config.h \ ibmpc/dos/tcc2p0/ibmclean.bat \ ibmpc/dos/tcc2p0/ibmtest.bat \ ibmpc/dos/tcc2p0/tcc20bld.bat \ ibmpc/dos/tcc2p0/tcc20pth.bat \ ibmpc/dos/tcc3p0/bibclean.exe \ ibmpc/dos/tcc3p0/config.h \ ibmpc/dos/tcc3p0/ibmclean.bat \ ibmpc/dos/tcc3p0/ibmtest.bat \ ibmpc/dos/tcc3p0/tcc30bld.bat \ ibmpc/dos/tcc3p0/tcc30pth.bat \ ibmpc/dos/tpp3p0/bibclean.exe \ ibmpc/dos/tpp3p0/config.h \ ibmpc/dos/tpp3p0/ibmclean.bat \ ibmpc/dos/tpp3p0/ibmtest.bat \ ibmpc/dos/tpp3p0/tcc30pth.bat \ ibmpc/dos/tpp3p0/tpp30bld.bat \ ibmpc/dos/wat10/wcc/bibclean.exe \ ibmpc/dos/wat10/wcc/bibclean.map \ ibmpc/dos/wat10/wcc/config.h \ ibmpc/dos/wat10/wcc/ibmclean.bat \ ibmpc/dos/wat10/wcc/ibmtest.bat \ ibmpc/dos/wat10/wcc/watcpp.bat \ ibmpc/dos/wat10/wcc/watpath.bat \ ibmpc/dos/wat10/wcc/watwcc.bat \ ibmpc/dos/wat10/wcc386/bibclean.exe \ ibmpc/dos/wat10/wcc386/config.h \ ibmpc/dos/wat10/wcc386/dos4gw.doc \ ibmpc/dos/wat10/wcc386/dos4gw.exe \ ibmpc/dos/wat10/wcc386/ibmclean.bat \ ibmpc/dos/wat10/wcc386/ibmtest.bat \ ibmpc/dos/wat10/wcc386/wat10bld.bat \ ibmpc/dos/wat10/wcc386/watpath.bat \ ibmpc/dos/wat10/wpp386/bibclean.exe \ ibmpc/dos/wat10/wpp386/config.h \ ibmpc/dos/wat10/wpp386/dos4gw.doc \ ibmpc/dos/wat10/wpp386/dos4gw.exe \ ibmpc/dos/wat10/wpp386/ibmclean.bat \ ibmpc/dos/wat10/wpp386/ibmtest.bat \ ibmpc/dos/wat10/wpp386/w386cpp.bat \ ibmpc/dos/wat10/wpp386/watpath.bat ibmpc/linux/bibclean \ save/Makefile save/config.h save/configure \ vms/alpha/recomp.com vms/alpha/vmsclean.com \ vms/alpha/vmsmake.com vms/alpha/vmstest.com vms/vax/README \ vms/vax/bibclean.exe vms/vax/bibclean.obj vms/vax/chek.obj \ vms/vax/config.h vms/vax/do.obj vms/vax/fix.obj \ vms/vax/fndfil.obj vms/vax/getoneheader.com \ vms/vax/getvmsheaders.com vms/vax/isbn.obj \ vms/vax/keybrd.obj vms/vax/match.obj vms/vax/option.obj \ vms/vax/recomp.com vms/vax/romtol.obj vms/vax/strist.obj \ vms/vax/vaxvms.obj vms/vax/vmsclean.com vms/vax/vmsmake.com \ vms/vax/vmstest.com vms/vax/vmswild.obj DISTILL = distill DITROFF = ditroff ## AT&T DITROFF = groff ## GNU # Some systems define HOST or HOSTNAME, but others don't, so we # generate it at compile time with the hostname utility. HOST = `hostname` # This program is freely available at ftp://ftp.math.utah.edu/pub/sgml/sp-* HTML-NCHECK = html-ncheck # This program is freely available at ftp://ftp.math.utah.edu/pub/sgml/htmlpty-x.y.* HTML-PRETTY = html-pretty LATEX = latex LINT = lint LINTFLAGS = -bchx -I. LN = ln # This program will not likely be available at other than the author's # site, so the .html file is preserved unless a "make maintainer-clean" # is done. It may be freely distributed at some point, so if you want # it, ask the author about its status. MAN2HTML = $(AWK) -f $$HOME/public_html/support/myman2html/man2html.awk MV = /bin/mv NROFF = nroff RM = /bin/rm -f SCRIBE-TESTS-1 = testscr1.org testscr2.org # Do NOT use SCRIBE-TESTS-1 in this list, because MIPS 6280 RISCos 5.0 # make then fails to correctly expand $(SCRIBE-TESTS:.org=.xyz). SCRIBE-TESTS = testscr1.org testscr2.org testscr3.org SED = /bin/sed SHELL = /bin/sh SRC = bibclean.c chek.c do.c fix.c fndfil.c isbn.c \ keybrd.c match.c option.c romtol.c strist.c strtol.c STRIP = strip # Only the subdirectories with Makefiles are listed here SUBDIRS = doc TAGS-FILES = bibclean.c bibclean.h ch.h chek.c config.h custom.h \ delete.h do.c fix.c fndfil.c isbn.c keybrd.c \ keybrd.h match.c match.h option.c pattern.h romtol.c \ strist.c strtol.c token.h toklst.h vaxvms.c \ vmswild.c xctype.h xerrno.h xlimits.h xpwd.h xstat.h \ xstdlib.h xstring.h xtypes.h xunistd.h yesorno.h UNZIP = unzip VERSION = `$(AWK) '/^[ \t]*version *= *"[0-9.]+", *$$/ \ { gsub(/[^0-9.]/,"",$$3); print $$3 }' bibclean.c` ZIP = zip ZOO = zoo #======================================================================= .SUFFIXES: .SUFFIXES: .o .i .c .bib-new .bib-old .bib .bib.bib-new: -$(BIBCLEAN) <$< >$@ .bib.bib-old: ./bclproto <$< >$@ .c.i: $(CC) -E -I. -I$(srcdir) $(DEFS) $(CPPFLAGS) $(CFLAGS) $< 2>&1 | \ grep -v '^[ ]*$$' >$@ .c.o: $(CC) -c -I. -I$(srcdir) $(DEFS) $(CPPFLAGS) $(CFLAGS) $< #======================================================================= all: bibclean ### bibclean-specific building targets ### bibclean.dvi: bibclean.texi cd $(srcdir); texi2dvi bibclean.texi bibclean.html: bibclean.man -$(CHMOD) u+w $@ $(MAN2HTML) $$PWD/$< | $(HTML-PRETTY) -f $$PWD/$@ | $(CHECKSUM) >$@ $(CHMOD) a-w $@ $(HTML-NCHECK) $@ bibclean.info: bibclean.texi cd $(srcdir); makeinfo bibclean.texi BIBCLEAN-OBJS = bibclean.o chek.o do.o fix.o fndfil.o isbn.o \ keybrd.o match.o option.o romtol.o strist.o \ $(LIBOBJS) bibclean: $(BIBCLEAN-OBJS) $(CC) -o bibclean $(CFLAGS) $(BIBCLEAN-OBJS) $(LIBS) # This target converts the option descriptions from the manual pages # to C code for inclusion in bibclean.c. The first awk command # augments the bibclean.man file in a pipe with some small changes # after the .TH line (which sets page dimensions) to get longer # unhyphenated ragged-right lines without page headers, and reduces # the option description indentation. # # Here are the magic nroff incantations: # # .pl 100i set page length to 100in # .nr LL 7.2i set LL register (page width) to 7.2in # .nh no hyphenation # .na no right-adjusting # # That output feeds into nroff for formatting, col for removal of # underlining and escape sequences, expand for tab removal, sed to # backslash all quotes, and a final awk step to select the lines # between OPTIONS and ERROR headers for conversion to C code. bibclean.h: bibclean.man -$(RM) $@ echo '/* WARNING: Do NOT edit this file. It was created automatically'\ >$@ echo ' with the command "make bibclean.h" by '$$USER@`hostname` \ >>$@ echo ' in '$$PWD' on '`date`' */' >>$@ echo >>$@ $(AWK) '{ if ($$0 ~ /^.TH/) \ printf("%s\n.pl 100i\n.nr LL 7.2i\n.nh\n.na",$$0); \ else if ($$0 ~ /^.TP .*remove-OPT-prefixes.*/) \ print ".TP 1in"; \ else \ print $$0}' >$@ echo ' (const char*)NULL,' >>$@ # VAX VMS help file format from bibclean.txt bibclean.hlp: bibclean.txt rofvms.awk $(AWK) -f rofvms.awk bibclean.hlp bibclean.i: bibclean.c ch.h config.h custom.h delete.h keybrd.h \ match.h pattern.h token.h toklst.h xctype.h \ xlimits.h xstdlib.h xstring.h xtypes.h xunistd.h \ Makefile bibclean.o: bibclean.c ch.h config.h custom.h delete.h keybrd.h \ match.h pattern.h token.h toklst.h xctype.h \ xlimits.h xstdlib.h xstring.h xtypes.h xunistd.h bibclean.pdf: bibclean.ps $(DISTILL) bibclean.ps bibclean.ps: bibclean.man $(DITROFF) -Tps -man $? >$@ bibclean.tar: subdist $(DIST-FILES) -$(RM) bibclean.tar bibclean.tar-lst tar chf bibclean.tar $(DIST-FILES) -mkdir bibclean-$(VERSION) cd bibclean-$(VERSION); tar xf ../bibclean.tar tar cf bibclean-$(VERSION).tar bibclean-$(VERSION) -$(RM) -r bibclean-$(VERSION) -$(RM) bibclean.tar $(LN) bibclean-$(VERSION).tar bibclean.tar bibclean.txt: bibclean.man $(NROFF) -man bibclean.man | col -b | expand >$@ bibclean.zip: subdist $(DIST-FILES) -$(RM) bibclean*.zip -$(RM) bibclean*.zip-lst $(ZIP) bibclean-$(VERSION).zip $(DIST-FILES) $(UNZIP) -v bibclean-$(VERSION).zip >bibclean-$(VERSION).zip-lst $(LN) bibclean-$(VERSION).zip bibclean.zip bibclean.zoo: subdist $(DIST-FILES) -$(RM) bibclean*.zoo -$(RM) bibclean*.zoo-lst $(ZOO) a bibclean-$(VERSION).zoo $(DIST-FILES) $(ZOO) v bibclean-$(VERSION).zoo >bibclean-$(VERSION).zoo-lst $(LN) bibclean-$(VERSION).zoo bibclean.zoo clean: -$(RM) $(BIBTEX-TESTS:.org=.bib) -$(RM) $(SCRIBE-TESTS:.org=.bib) -$(RM) *.aux -$(RM) *.bbl -$(RM) *.blg -$(RM) *.dvi -$(RM) *.err -$(RM) *.i -$(RM) *.log -$(RM) *.o -$(RM) *~ -$(RM) \#* -$(RM) bibclean.tar bibclean-?.??.tar -$(RM) bibclean.tar-lst -$(RM) bibclean-$(VERSION).tar -$(RM) bibclean.zip bibclean-?.??.zip -$(RM) bibclean.zip-lst bibclean-?.??.zip-lst -$(RM) bibclean.zoo bibclean-?.??.zoo -$(RM) bibclean.zoo-lst bibclean-?.??.zoo-lst -$(RM) configure.tmp -$(RM) core -$(RM) match match.lst -$(RM) romtol romtol.lst -$(RM) testcodn.bib -$(RM) testisxn.bib -$(RM) testscr2.bi2 testscr2.er2 -for d in $(SUBDIRS) ; do (cd $$d ; make clean ) ; done clobber: clean -$(RM) bclproto bibclean match -$(RM) bibclean.hlp -$(RM) bibclean.ps -$(RM) bibclean.txt -$(RM) install.time install-ftp.time -for d in $(SUBDIRS) ; do (cd $$d ; make clobber ) ; done docs: bibclean.txt bibclean.hlp bibclean.ps chek.i: chek.c config.h custom.h match.h token.h xctype.h \ xstat.h xstring.h yesorno.h Makefile chek.o: chek.c config.h custom.h match.h token.h xctype.h \ xstat.h xstring.h yesorno.h do.i: do.c ch.h config.h custom.h delete.h keybrd.h \ match.h pattern.h token.h toklst.h xctype.h \ xstdlib.h xstring.h xunistd.h yesorno.h Makefile do.o: do.c ch.h config.h custom.h delete.h keybrd.h \ match.h pattern.h token.h toklst.h xctype.h \ xstdlib.h xstring.h xunistd.h yesorno.h fix.i: fix.c config.h custom.h token.h xctype.h xstring.h \ yesorno.h Makefile fix.o: fix.c config.h custom.h token.h xctype.h xstring.h \ yesorno.h fndfil.i: fndfil.c config.h custom.h xctype.h xpwd.h xstdlib.h \ xstring.h xunistd.h Makefile fndfil.o: fndfil.c config.h custom.h xpwd.h xstdlib.h \ xstring.h xunistd.h isbn.i: isbn.c config.h custom.h xctype.h xstring.h xstdlib.h \ Makefile isbn.o: isbn.c config.h custom.h xctype.h xstring.h xstdlib.h keybrd.i: ch.h config.h custom.h xstring.h xunistd.h yesorno.h \ Makefile keybrd.o: ch.h config.h custom.h xctype.h xstring.h xunistd.h yesorno.h # Build a test program for match() match: match.c romtol.o -$(RM) match.O if [ -f match.o ] ; then $(MV) match.o match.O ; fi -$(RM) match.o $(CC) -I. -I$(srcdir) $(DEFS) $(CPPFLAGS) $(CFLAGS) -DTEST -o match \ match.c romtol.o -$(RM) match.o if [ -f match.O ] ; then $(MV) match.O match.o ; fi match.i: match.c config.h custom.h match.h xctype.h xstdlib.h \ xstring.h Makefile match.o: match.c config.h custom.h match.h xctype.h xstdlib.h \ xstring.h mostlyclean: clean -for d in $(SUBDIRS) ; do (cd $$d ; make mostlyclean ) ; done option.i: option.c bibclean.h ch.h config.h custom.h xstdlib.h \ xstring.h yesorno.h Makefile # When HOST, USER, __DATE__, and __TIME__ are available, # bibclean preserves them for its version output option.o: option.c bibclean.h ch.h config.h custom.h xstdlib.h \ xstring.h yesorno.h $(CC) -I. -I$(srcdir) $(CFLAGS) -c -DHOST=\"$(HOST)\" -DUSER=\"$(USER)\" option.c # Build a test program for romtol() romtol: romtol.c -$(RM) romtol.O if [ -f romtol.o ] ; then $(MV) romtol.o romtol.O ; fi -$(RM) romtol.o $(CC) -I. -I$(srcdir) $(DEFS) $(CPPFLAGS) $(CFLAGS) -DTEST -o romtol romtol.c -$(RM) romtol.o if [ -f romtol.O ] ; then $(MV) romtol.O romtol.o ; fi romtol.i: romtol.c config.h custom.h xctype.h xstring.h xstdlib.h \ Makefile romtol.o: romtol.c config.h custom.h xctype.h xstring.h xstdlib.h strist.i: strist.c config.h custom.h xctype.h xstring.h Makefile strist.o: strist.c config.h custom.h xctype.h xstring.h strtol.i: strtol.c config.h custom.h xctype.h xstdlib.h xstring.h \ Makefile strtol.o: strtol.c config.h custom.h xctype.h xstdlib.h xstring.h # Subdirectory makes needed for distribution file creation subdist: -for d in $(SUBDIRS) ; do (cd $$d ; make ) ; done #======================================================================= ### targets required by GNU Coding standards ### Makefile: Makefile.in config.status ./config.status config.status: configure $(srcdir)/configure --srcdir=$(srcdir) --no-create configure: configure.in configure.sed cd $(srcdir); autoconf # Apply needed fixup for C++ with configure mv configure configure.tmp $(SED) -f configure.sed configure -$(RM) configure.tmp $(CHMOD) +x configure distclean: clobber -$(RM) Makefile -$(RM) config.status -$(RM) config.cache -for d in $(SUBDIRS) ; do (cd $$d ; make distclean ) ; done maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." -$(CHMOD) u+w bibclean.html -$(RM) bibclean.html -$(RM) bibclean.pdf -$(RM) TAGS -$(RM) configure -for d in $(SUBDIRS) ; do (cd $$d ; make maintainer-clean ) ; done TAGS: Makefile $(TAGS-FILES) cd $(srcdir); etags $(TAGS-FILES) #======================================================================= install: install.time install.time: install-exe install-man touch install.time install-exe: bibclean if test -f $(bindir)/bibclean ; \ then \ $(MV) $(bindir)/bibclean $(bindir)/bibclean.old ; \ fi -$(RM) $(bindir)/bibclean-$(VERSION) $(CP) bibclean $(bindir)/bibclean -$(STRIP) $(bindir)/bibclean $(LN) $(bindir)/bibclean $(bindir)/bibclean-$(VERSION) $(CHMOD) 775 $(bindir)/bibclean $(CP) bibclean.ini $(bindir)/.bibcleanrc $(CHMOD) 664 $(bindir)/.bibcleanrc install-man: bibclean.man if test -f $(mandir)/bibclean.$(manext) ; \ then \ $(MV) $(mandir)/bibclean.$(manext) $(mandir)/bibclean.old.$(manext) ; \ fi $(CP) bibclean.man $(mandir)/bibclean.$(manext) -$(RM) $(mandir)/../cat$(manext)/bibclean.$(manext) -$(RM) $(mandir)/bibclean-$(VERSION).$(manext) $(LN) $(mandir)/bibclean.$(manext) $(mandir)/bibclean-$(VERSION).$(manext) $(CHMOD) 664 $(mandir)/bibclean.$(manext) install-ftp: install-ftp.time install-ftp.time: bibclean.tar bibclean.zip bibclean.zoo tar tvf bibclean-$(VERSION).tar >$(FTPDIR)/bibclean-$(VERSION).tar-lst $(COMPRESS) $(FTPDIR)/bibclean-$(VERSION).tar.gz $(CP) bibclean-$(VERSION).zip $(FTPDIR) $(CP) bibclean-$(VERSION).zip-lst $(FTPDIR) $(CP) bibclean-$(VERSION).zoo $(FTPDIR) $(CP) bibclean-$(VERSION).zoo-lst $(FTPDIR) ls -l $(FTPDIR)/bibclean* date >install-ftp.time lint: $(LINT) $(LINTFLAGS) $(SRC) test check: test-match test-romtol test-bibtex test-scribe # Test bibclean on Part 1 of the Reduce bibliography, testbib2.org. The # output file, testbib2.bib, is compared against a correct output file, # testbib2.bok, from the author's site, and then the bibliography is # additionally tested by LaTeX and BibTeX. test-bibtex: bibclean test-bibtex-1 test-bibtex-2 test-bibtex-3 \ test-bibtex-4 test-bibtex-5 test-bibtex-6 test-bibtex-7 \ test-bibtex-8 test-bibtex-1: bibclean testbib1.org @echo @echo "==================== begin BibTeX test 1 =====================" @echo -@$(RM) testbib1.err testbib1.bib @echo -$(BIBCLEAN) testbib1.org >testbib1.bib 2>testbib1.err @echo @echo "There should be no differences found:" @echo "diff testbib1.bok testbib1.bib" -@if diff testbib1.bok testbib1.bib ; then $(RM) testbib1.bib ; fi @echo @echo "There should be no differences found:" @echo "diff testbib1.eok testbib1.err" -@if diff testbib1.eok testbib1.err ; then $(RM) testbib1.err ; fi @echo @echo "===================== end BibTeX test 1 ======================" @echo test-bibtex-2: bibclean testbib2.org @echo @echo "==================== begin BibTeX test 2 =====================" @echo @-$(RM) testbib2.aux testbib2.bbl testbib2.bib testbib2.blg \ testbib2.dvi testbib2.log @echo -$(BIBCLEAN) -no-check-values testbib2.org >testbib2.bib 2>testbib2.err @echo @echo "There should be no differences found:" -diff testbib2.bok testbib2.bib @echo @echo "There should be no differences found:" @echo "diff testbib2.eok testbib2.err" -@if diff testbib2.eok testbib2.err ; then $(RM) testbib2.err ; fi @echo $(LATEX) testbib2.ltx >/dev/null @echo @echo "Expect 6 BibTeX warnings:" -$(BIBTEX) testbib2 @if cmp testbib2.bok testbib2.bib 2>/dev/null ; \ then $(RM) testbib2.bib ; fi @echo $(LATEX) testbib2.ltx >/dev/null @echo $(LATEX) testbib2.ltx @echo @echo "===================== end BibTeX test 2 ======================" @echo test-bibtex-3: bibclean testbib3.org @echo @echo "==================== begin BibTeX test 3 =====================" @echo @-$(RM) testbib3.bib testbib3.err @echo -$(BIBCLEAN) -fix-font-change testbib3.org >testbib3.bib 2>testbib3.err @echo @echo "There should be no differences found:" -@if diff testbib3.bok testbib3.bib ; then $(RM) testbib3.bib ; fi @echo @echo "There should be no differences found:" @echo "diff testbib3.eok testbib3.err" -@if diff testbib3.eok testbib3.err ; then $(RM) testbib3.err ; fi @echo @echo "===================== end BibTeX test 3 ======================" @echo test-bibtex-4: bibclean testbib4.org @echo @echo "==================== begin BibTeX test 4 =====================" @echo @-$(RM) testbib4.bib testbib4.err @echo -$(BIBCLEAN) -fix-font-change testbib4.org >testbib4.bib 2>testbib4.err @echo @echo "There should be no differences found:" -@if diff testbib4.bok testbib4.bib ; then $(RM) testbib4.bib ; fi @echo @echo "There should be no differences found:" @echo "diff testbib4.eok testbib4.err" -@if diff testbib4.eok testbib4.err ; then $(RM) testbib4.err ; fi @echo @echo "===================== end BibTeX test 4 ======================" @echo test-bibtex-5: bibclean testbib5.org @echo @echo "==================== begin BibTeX test 5 =====================" @echo @-$(RM) testbib5.bib testbib5.err @echo -$(BIBCLEAN) -German-style testbib5.org >testbib5.bib 2>testbib5.err @echo @echo "There should be no differences found:" -@if diff testbib5.bok testbib5.bib ; then $(RM) testbib5.bib ; fi @echo @echo "There should be no differences found:" @echo "diff testbib5.eok testbib5.err" -@if diff testbib5.eok testbib5.err ; then $(RM) testbib5.err ; fi @echo @echo "===================== end BibTeX test 5 ======================" @echo test-bibtex-6: bibclean testbib6.org @echo @echo "==================== begin BibTeX test 6 =====================" @echo -$(BIBCLEAN) testbib6.org >testbib6.bib 2>testbib6.err @echo @echo "There should be no differences found:" @echo "diff testbib6.bok testbib6.bib" -@if diff testbib6.bok testbib6.bib ; then $(RM) testbib6.bib ; fi @echo @echo "There should be no differences found:" @echo "diff testbib6.eok testbib6.err" -@if diff testbib6.eok testbib6.err ; then $(RM) testbib6.err ; fi @echo @echo "===================== end BibTeX test 6 ======================" @echo # Test bibclean verification of ISBN and ISSN values. The test file, # testisxn.org, contains several hundred correct values, and also # several hundred erroneous values. We therefore discard error and # warning messages, we ignore the return code, and we don't try to use # the output with LaTeX or BibTeX. test-bibtex-7: bibclean testisxn.org @echo @echo "==================== begin BibTeX test 7 =====================" @echo -$(BIBCLEAN) testisxn.org >testisxn.bib 2>testisxn.err @echo @echo "There should be no differences found:" @echo "diff testisxn.bok testisxn.bib" -@if diff testisxn.bok testisxn.bib ; then $(RM) testisxn.bib ; fi @echo @echo "There should be no differences found:" @echo "diff testisxn.eok testisxn.err" -@if diff testisxn.eok testisxn.err ; then $(RM) testisxn.err ; fi @echo @echo "===================== end BibTeX test 7 ======================" @echo # Test bibclean verification of CODEN values. The test file, # testcodn.org, contains about 1200 correct values, and also several # hundred erroneous values. We therefore discard error and warning # messages, we ignore the return code, and we don't try to use the # output with LaTeX or BibTeX. test-bibtex-8: bibclean testcodn.org @echo @echo "==================== begin BibTeX test 8 =====================" @echo -$(BIBCLEAN) testcodn.org >testcodn.bib 2>testcodn.err @echo @echo "There should be no differences found:" @echo "diff testcodn.bok testcodn.bib" -@if diff testcodn.bok testcodn.bib ; then $(RM) testcodn.bib ; fi @echo @echo "There should be no differences found:" @echo "diff testcodn.eok testcodn.err" -@if diff testcodn.eok testcodn.err ; then $(RM) testcodn.err ; fi @echo @echo "===================== end BibTeX test 8 ======================" @echo test-match: match @echo @echo "===================== begin match test =======================" @echo ./match match.lst @echo "There should be no differences found:" diff match.lok match.lst @if cmp match.lok match.lst 2>/dev/null ; then $(RM) match.lst ; fi @echo @echo "====================== end match test ========================" @echo test-romtol: romtol @echo @echo "===================== begin romtol test ======================" @echo ./romtol romtol.lst @echo "There should be no differences found:" diff romtol.lok romtol.lst @if cmp romtol.lok romtol.lst 2>/dev/null ; then $(RM) romtol.lst ; fi @echo @echo "====================== end romtol test =======================" @echo # Test bibclean on a collection of Scribe bibliographies containing # test cases to exhibit variations in Scribe bibliography syntax. test-scribe: bibclean test-scribe-1 test-scribe-2 test-scribe-3 # The peculiar step using tr to prepare the .aux files is needed to # overcome inconsistencies in the handling of backslashes by the IBM # RS/6000 shell. The documented behavior in the SunOS 4.1.1 manual # pages is (emphasis mine): # All characters enclosed between a pair of single quote marks # (''), except a single quote, are quoted by the shell. BACKSLASH # HAS NO SPECIAL MEANING INSIDE A PAIR OF SINGLE QUOTES. A single # quote may be quoted inside a pair of double quote marks (for # example, "'"). # On SunOS, HP UX, IBM 3090 AIX, NeXT Mach, and SGI IRIX, the shells # csh, sh, bash, and ksh agree with this. However, on IBM RS/6000 # AIX 3.2, backslashes in single quotes are untouched by csh, but # expanded by sh and ksh. This is clearly a bug, because the INFO # hypertext node on bsh/rsh says: # All characters, except the enclosing single quotation marks, are # taken literally, with any special meaning removed. # test-scribe-1: bibclean $(SCRIBE-TESTS-1) @echo @echo "==================== begin Scribe test 1 =====================" @echo -@for f in $(SCRIBE-TESTS-1) ; \ do \ BASENAME=`basename $$f .org` ; \ echo ; \ echo "----------------------------------------------------" ; \ echo ; \ echo "$(BIBCLEAN) -scribe -no-check $$f >$$BASENAME.bib" ; \ $(BIBCLEAN) -scribe -no-check $$f >$$BASENAME.bib \ 2>$$BASENAME.err; \ echo ; \ echo "There should be no differences found:" ; \ echo "diff $$BASENAME.bok $$BASENAME.bib" ; \ diff $$BASENAME.bok $$BASENAME.bib ; \ echo ; \ echo "There should be no differences found:" ; \ echo "diff $$BASENAME.eok $$BASENAME.err" ; \ if diff $$BASENAME.eok $$BASENAME.err ; \ then $(RM) $$BASENAME.err ; fi ; \ echo ; \ echo 'Bbibstyle{plain}NBcitation{*}NBbibdata{'$$BASENAME'}' | \ tr BN '\134\012' >$$BASENAME.aux ; \ if [ "$$BASENAME" = "testscr1" ] ; \ then echo "Expect 5 BibTeX warnings" ; fi ; \ if [ "$$BASENAME" = "testscr2" ] ; \ then echo "There should be no BibTeX warnings:" ; fi ; \ echo "$(BIBTEX) $$BASENAME" ; \ $(BIBTEX) $$BASENAME; \ if cmp $$BASENAME.bok $$BASENAME.bib 2>/dev/null ; \ then $(RM) $$BASENAME.bib ; fi ; \ done @echo "===================== end Scribe test 1 ======================" @echo test-scribe-2: bibclean testscr2.org @echo @echo "==================== begin Scribe test 2 =====================" @echo -$(BIBCLEAN) -scribe -file -no-check testscr2.org \ >testscr2.bib 2>testscr2.err @echo @echo "There should be no differences found:" @echo "diff testscr2.bok testscr2.bib" -@if diff testscr2.bok testscr2.bib ; then $(RM) testscr2.bib ; fi @echo @echo "There should be no differences found:" @echo "diff testscr2.eok testscr2.err" -@if diff testscr2.eok testscr2.err ; then $(RM) testscr2.err ; fi @echo @echo -$(BIBCLEAN) -scribe -file -no-check -no-par testscr2.org \ >testscr2.bi2 2>testscr2.er2 @echo @echo "There should be no differences found:" @echo "diff testscr2.bo2 testscr2.bi2" -@if diff testscr2.bo2 testscr2.bi2 ; then $(RM) testscr2.bi2 ; fi @echo @echo "There should be no differences found:" @echo "diff testscr2.eo2 testscr2.er2" -@if diff testscr2.eo2 testscr2.er2 ; then $(RM) testscr2.er2 ; fi @echo @echo "===================== end Scribe test 2 ======================" @echo test-scribe-3: bibclean testscr3.org @echo @echo "==================== begin Scribe test 3 =====================" @echo -$(BIBCLEAN) -scribe -no-check testscr3.org >testscr3.bib 2>testscr3.err @echo @echo "There should be no differences found:" @echo "diff testscr3.bok testscr3.bib" -@if diff testscr3.bok testscr3.bib ; then $(RM) testscr3.bib ; fi @echo @echo "There should be no differences found:" @echo "diff testscr3.eok testscr3.err" -@if diff testscr3.eok testscr3.err ; then $(RM) testscr3.err ; fi @echo @echo "===================== end Scribe test 3 ======================" @echo test-version: Makefile @echo "Version number is ""'"$(VERSION)"'" uninstall: -$(RM) $(bindir)/bibclean $(bindir)/bibclean-$(VERSION) \ $(bindir)/.bibcleanrc \ $(mandir)/bibclean.$(manext) \ $(mandir)/bibclean-$(VERSION).$(manext) \ $(mandir)/../cat$(manext)/bibclean.$(manext) \ $(mandir)/../cat$(manext)/bibclean-$(VERSION).$(manext) -$(RM) install.time uninstall-ftp: -$(RM) $(FTPDIR)/bibclean-$(VERSION).tar -$(RM) $(FTPDIR)/bibclean-$(VERSION).tar-lst -$(RM) $(FTPDIR)/bibclean-$(VERSION).zip -$(RM) $(FTPDIR)/bibclean-$(VERSION).zip-lst -$(RM) $(FTPDIR)/bibclean-$(VERSION).zoo -$(RM) $(FTPDIR)/bibclean-$(VERSION).zoo-lst -$(RM) install-ftp.time # Prevent GNU make v3 from overflowing arg limit on SysV. .NOEXPORT: bibclean-2.11.4.1.orig/match.dat0000644000175200017520000044031606142407604015467 0ustar debiandebian%% /u/sy/beebe/tex/bibclean/2-11/match.dat, Fri May 3 07:05:42 1996 %% Edit by Nelson H. F. Beebe %% This is a test file for match month = "", month = "02 " # apr, month = "03 " # apr, month = "03 " # jul, month = "05 " # apr, month = "05 " # dec, month = "05 " # feb, month = "05 " # jan, month = "05 " # jul, month = "05 " # jun, month = "05 " # mar, month = "05 " # may, month = "05 " # nov, month = "05 " # oct, month = "05 " # sep, month = "07 " # nov, month = "08 " # apr, month = "08 " # mar, month = "08 " # nov, month = "09 " # dec, month = "09 " # jul, month = "09 " # jun, month = "09 " # may, month = "09 " # nov, month = "1-3,", month = "10 " # aug, month = "10 " # dec, month = "10 " # feb, month = "10 " # jun, month = "10 " # mar, month = "10 " # nov, month = "10--11 " # mar, month = "11 " # feb, month = "11 " # jun, month = "11 " # mar, month = "11 " # may, month = "11 " # nov, month = "11--12~" # sep, month = "11-12 " # jan, month = "12 " # dec, month = "12 " # jul, month = "12 " # may, month = "12 " # sep, month = "12--13~" # nov, month = "13 " # dec, month = "13 " # oct, month = "14 " # apr, month = "14 " # feb, month = "14 " # jan, month = "14 " # sep, month = "15 " # apr, month = "15 " # feb, month = "15 " # jan, month = "15 " # jul, month = "15 " # jun, month = "15 " # may, month = "15 " # oct, month = "15~" # sep, month = "16 " # apr, month = "16~" # nov, month = "17 " # apr, month = "17 " # dec, month = "17 " # may, month = "17--21" # jun, month = "18 " # mar, month = "18 " # oct, month = "19 " # jun, month = "19 " # nov, month = "19 " # oct, month = "1988 3 vol. xxxix+", month = "1988", month = "1990-", month = "1991 2 vol. xxi+", month = "1992 2 vol. xlix+", month = "1992 3 vol. lvii+", month = "1992 3 vol. xlviii+", month = "1993 2 vol. xxxv+", month = "1993 2 vol.", month = "1~" # jul, month = "20 " # aug, month = "20 " # dec, month = "20 " # jan, month = "20--24~" # mar, month = "21 " # dec, month = "21 " # jan, month = "21--25 " # jun, month = "21--25 " # oct, month = "22 " # mar, month = "23 " # dec, month = "23 " # feb, month = "23--24~" # nov, month = "24 " # aug, month = "24 " # feb, month = "24 " # jul, month = "24 " # mar, month = "24--28~" # jul, month = "24--29 " # jul, month = "24~" # aug, month = "25 " # feb, month = "25 " # jan, month = "25 " # jun, month = "25 " # may, month = "26 " # feb, month = "26 " # jul, month = "26 " # may, month = "26 " # sep, month = "26~" # jun # "--" # "2~" # jul, month = "27 " # apr, month = "27 " # jan, month = "27 " # jun, month = "27 " # sep, month = "27--29 " # jul, month = "27~" # nov # "--" # "1~" # dec, month = "28 " # dec, month = "28 " # feb, month = "28 " # jan, month = "28 " # may, month = "28 " # oct, month = "28 " # sep, month = "29 " # apr, month = "29 " # may, month = "29 " # nov, month = "2~" # dec, month = "30 " # apr, month = "30 " # aug, month = "30 " # dec, month = "30 " # nov, month = "30 " # sep, month = "31 " # aug, month = "31~" # aug # "--" # "2~" # sep, month = "4--6~" # mar, month = "5--8 " # apr, month = "6 " # nov, month = "7--10~" # sep, month = "9 " # may, month = "??", month = "????", month = "August and November", month = "Autumn", month = "December 1,", month = "December 3,", month = "December 6,", month = "Fall", month = "February and May", month = "January", month = "January/February", month = "June and July", month = "March 27,", month = "March~5,", month = "May \& July", month = "May/June", month = "November 19, ", month = "November and February", month = "Spring", month = "Summer", month = "Winter 1992-", month = "Winter", month = "avril", month = "decembre", month = "d{\'{e}}cembre", month = "juillet", month = "lipiec", month = "mai", month = "mars", month = "may", month = "novembre", month = "octobre", month = "septembre", month = Aug, month = Mar, month = Oct, month = apr # " 1", month = apr # " 11-14", month = apr # " 15", month = apr # " 16", month = apr # " 19-22", month = apr # " 19-23", month = apr # " 23", month = apr # "-" # may, month = apr # "--" # jun, month = apr # "/" # jul, month = apr # "/" # may, month = apr # "\slash " # jun, month = apr, month = aug # " 12", month = aug # " 15", month = aug # " 20", month = aug # " 22", month = aug # " 23", month = aug # " 25", month = aug # " 27-" # sep # " 2", month = aug # " 28-31, 1989", month = aug # " 3", month = aug # " 31", month = aug # " 5", month = aug # " 8", month = aug # " 9--11", month = aug # "-" # sep, month = aug # "--" # sep, month = aug # "/" # nov, month = aug # "\slash " # nov, month = aug # "\slash " # sep, month = aug, month = dec # " 10", month = dec # " 14", month = dec # " 15", month = dec # " 23", month = dec # " 3", month = dec # " 5", month = dec # "13-18", month = dec # "\slash " # jan, month = dec, month = feb # " 04", month = feb # " 07", month = feb # " 11", month = feb # " 12", month = feb # " 14", month = feb # " 15", month = feb # " 16", month = feb # " 17", month = feb # " 2-6", month = feb # " 27", month = feb # " 5", month = feb # " 8", month = feb # "/" # mar, month = feb # "/" # may, month = feb # "\slash " # mar, month = feb # "\slash " # may, month = feb # "~14", month = feb # "~6", month = feb, month = jan # " -- " # mar, month = jan # " 11", month = jan # " 13", month = jan # " 16", month = jan # " 17", month = jan # " 22", month = jan # " 23 -- " # feb # " 2", month = jan # " 25", month = jan # "-" # feb, month = jan # "--" # feb, month = jan # "/" # feb , month = jan # "/" # feb, month = jan # "\slash " # feb # ",", month = jan # "\slash " # feb, month = jan # "\slash " # mar, month = jan, month = jul # " (?? or " # sep # ")", month = jul # " 1", month = jul # " 13", month = jul # " 1969 to " # dec # " 1970", month = jul # " 20", month = jul # " 25", month = jul # " 25--27", month = jul # " 26", month = jul # " 28-29", month = jul # " 3", month = jul # " 4-6", month = jul # " 4-8", month = jul # " 9", month = jul # "-" # aug, month = jul # "-" # oct, month = jul # "--" # aug, month = jul # "--" # sep, month = jul # "/" # aug, month = jul # "\emdash " # aug, month = jul # "\slash " # aug, month = jul # "\slash " # sep, month = jul # "\slash{}" # aug, month = jul, month = jun # " 04", month = jun # " 10", month = jun # " 12", month = jun # " 12--15", month = jun # " 14", month = jun # " 2-6", month = jun # " 20--24", month = jun # " 21-23", month = jun # " 26-29", month = jun # " 28", month = jun # " 30", month = jun # " 4", month = jun # " 5", month = jun # "\slash " # jul, month = jun # "~5", month = jun, month = mar # " 13", month = mar # " 15", month = mar # " 18", month = mar # " 21", month = mar # " 23", month = mar # " 25--28", month = mar # " 27", month = mar # " 29", month = mar # " 3", month = mar # " 4", month = mar # " 7--10", month = mar # " 9", month = mar # "-" # apr, month = mar # "-" # dec, month = mar # "--" # apr, month = mar # "--" # dec, month = mar # "/" # apr, month = mar # "\slash " # apr, month = mar # "\slash " # may, month = mar, month = may # " -- " # jun, month = may # " 10-12", month = may # " 11", month = may # " 13", month = may # " 14", month = may # " 15", month = may # " 17", month = may # " 18", month = may # " 22", month = may # " 23", month = may # " 28", month = may # " 3", month = may # " 4-8", month = may # " 5", month = may # " 7", month = may # " 8-12", month = may # " 9", month = may # "-" # jun # " (or March??)", month = may # "-" # jun, month = may # "--" # june, month = may # "/" # jul, month = may # "/" # jun, month = may # "\slash " # jun # ",", month = may # "\slash " # jun, month = may, month = nov # " 15", month = nov # " 24", month = nov # " 3", month = nov # " 30", month = nov # " 4", month = nov # " 8", month = nov # " 9-11", month = nov # " and " # feb, month = nov # "-" # dec, month = nov # "/" # dec, month = nov # "\slash " # dec, month = nov # "\slash " # feb, month = nov, month = oct # " 07", month = oct # " 1", month = oct # " 10", month = oct # " 15", month = oct # " 16", month = oct # " 2", month = oct # " 28", month = oct # " 31", month = oct # "-" # dec, month = oct # "-" # nov, month = oct # "--" # dec, month = oct # "/" # nov, month = oct # "\slash " # dec, month = oct # "\slash " # nov, month = oct # "~28", month = oct, month = sep # " 1", month = sep # " 18", month = sep # " 21", month = sep # " 23", month = sep # " 24", month = sep # " 25-" # oct # " 1", month = sep # " 27", month = sep # " 28", month = sep # " 28-29", month = sep # " 4", month = sep # " 6", month = sep # " or " # jun # "??", month = sep # "-" # dec, month = sep # "-" # nov, month = sep # "-" # oct, month = sep # "--" # oct, month = sep # "/" # oct, month = sep # "\slash " # oct, month = sep, number = "", number = "(1-2)", number = "(89/7)", number = "(XIII) 6", number = "(in preparation)", number = "(to appear)", number = "0", number = "001", number = "0236", number = "027.07.1988", number = "07-11-81", number = "07-27-76", number = "07-28-76", number = "07-30-79", number = "07.95", number = "1 \& 2", number = "1 and 2", number = "1", number = "1(1)", number = "1+8", number = "1, (part 2)", number = "1, 3", number = "1,2", number = "1,2,3", number = "1--2", number = "1--3", number = "1--4", number = "1--5", number = "1--ABR/86", number = "1-2", number = "1-23-84", number = "1-3", number = "1-4", number = "1-5", number = "1-6", number = "1.0", number = "1.3", number = "1/2", number = "1/89", number = "10", number = "10--11", number = "10-11", number = "10-12", number = "100", number = "1000", number = "1004", number = "1005", number = "101", number = "1012", number = "10159", number = "101614", number = "102", number = "1020", number = "1025", number = "1029", number = "103", number = "1033", number = "104", number = "104237", number = "104612", number = "1048", number = "105", number = "1054", number = "1055", number = "106", number = "1065", number = "107", number = "108", number = "1084", number = "1088", number = "109", number = "1097", number = "10A", number = "11 and 12", number = "11", number = "11-12", number = "11/12", number = "11/145", number = "110", number = "1100", number = "1103", number = "1105", number = "111", number = "112", number = "1123", number = "113", number = "1136", number = "114", number = "1140", number = "1141", number = "11483", number = "115", number = "116", number = "116, SSA 11-11500", number = "1168", number = "117", number = "118", number = "118-87", number = "119", number = "12 (9119)", number = "12", number = "12-83", number = "12-93", number = "12.2.6", number = "120", number = "1200", number = "121-5", number = "121-6", number = "1210", number = "1212", number = "1213", number = "1215", number = "122", number = "1225/1225a", number = "123", number = "124", number = "1242", number = "125", number = "1259", number = "126", number = "1268", number = "127", number = "1274", number = "1278", number = "128", number = "129", number = "12A", number = "12B", number = "13", number = "13, section B", number = "130", number = "1302", number = "1307", number = "131", number = "131M", number = "132", number = "1328", number = "133", number = "1332", number = "1333", number = "1334", number = "1343", number = "1344", number = "1346", number = "135", number = "1356", number = "136", number = "1366", number = "137", number = "138", number = "14", number = "14.2.2", number = "14/92", number = "141", number = "142", number = "1420", number = "1428", number = "143", number = "144", number = "145", number = "1454", number = "1458", number = "1460", number = "1469", number = "147", number = "1470", number = "1471", number = "1474", number = "148", number = "149", number = "14A", number = "14B", number = "15", number = "150", number = "1505", number = "1506", number = "151", number = "1518", number = "152", number = "1532", number = "1545", number = "1548", number = "155", number = "1555", number = "1556", number = "156", number = "1563", number = "157", number = "158", number = "1585", number = "1586", number = "159", number = "16", number = "16-92", number = "16/92", number = "160", number = "161", number = "161/84", number = "162", number = "163", number = "165", number = "166", number = "167", number = "168", number = "1680", number = "1686", number = "169", number = "1690", number = "1697", number = "17", number = "17-92", number = "170", number = "1704", number = "1705", number = "171", number = "171.2R", number = "172", number = "172205", number = "1729", number = "173", number = "1731", number = "1732", number = "174", number = "17414 JSC", number = "17477", number = "175", number = "1755", number = "1758/92", number = "176", number = "1769", number = "178", number = "1782", number = "179", number = "1796", number = "18", number = "18-26", number = "18-94", number = "180", number = "1807", number = "181", number = "182", number = "1825", number = "1838", number = "1846-79", number = "1846-98", number = "1846-99", number = "1848-1854", number = "185", number = "186", number = "1860", number = "1868", number = "187", number = "187590 4004291034", number = "188", number = "189", number = "1892", number = "19", number = "19-94", number = "190", number = "1901", number = "1907", number = "1908", number = "191", number = "1923", number = "193", number = "194", number = "194-82 GJBX", number = "1944", number = "195", number = "1958", number = "196", number = "1967-2", number = "1969-42", number = "197", number = "1972-43", number = "1973/2", number = "1976", number = "1977-1", number = "1979-18", number = "1979-3", number = "1979-4", number = "1979-5", number = "1980-02-20", number = "1982/IE/1", number = "1985/OR/2", number = "1985/OR/5", number = "1986/11-524", number = "199", number = "1991-01", number = "1992/35", number = "1993-08", number = "1993-09", number = "1994-02", number = "1A", number = "2 ", number = "2 (or 3??)", number = "2 107-", number = "2 123-", number = "2 199-", number = "2 and 3", number = "2", number = "2,", number = "2--3", number = "2-3", number = "2-4", number = "2-94", number = "2-94*", number = "2.2", number = "2.3.1", number = "2/3", number = "2/RT/81", number = "20", number = "20/93", number = "200", number = "2009", number = "201", number = "202", number = "2022", number = "203", number = "2030", number = "204", number = "2049--88", number = "205", number = "2050--88", number = "2057", number = "206", number = "207", number = "208", number = "2083", number = "209", number = "2095", number = "21", number = "21/93", number = "210", number = "2100--89", number = "212", number = "213", number = "2136", number = "215-227", number = "216", number = "217", number = "218", number = "2181", number = "2184", number = "2190", number = "22 0714-1181", number = "22", number = "22/81", number = "220", number = "222", number = "2240207", number = "225", number = "226", number = "2268", number = "2271", number = "228", number = "2286", number = "2287", number = "229", number = "23", number = "23-92", number = "230", number = "233", number = "235", number = "236", number = "2367", number = "237", number = "2374", number = "238", number = "239", number = "23905", number = "24 ", number = "24", number = "24-81", number = "24-92", number = "2400", number = "241", number = "24155", number = "242", number = "243", number = "244", number = "244-260", number = "2445", number = "245", number = "2452", number = "246", number = "247", number = "248", number = "2481", number = "249", number = "2497", number = "25", number = "25-81", number = "25-92", number = "251", number = "25134", number = "252", number = "254", number = "255", number = "257", number = "258", number = "2583", number = "2590", number = "26", number = "26/94", number = "260", number = "264", number = "2644", number = "265", number = "266", number = "267", number = "2688", number = "27", number = "27-94", number = "27/28", number = "272", number = "273", number = "275", number = "276", number = "2768", number = "28", number = "28-94", number = "28/94", number = "2815", number = "2835", number = "285", number = "289", number = "29", number = "29-94", number = "2908", number = "2913", number = "294 (AD 207929)", number = "294", number = "2957", number = "296", number = "298", number = "29e ann{\'e}e", number = "2??", number = "3 (or 11??)", number = "3 (or 2??)", number = "3 (or 4??)", number = "3 0723-2187", number = "3 Pt 2", number = "3 \& 4", number = "3 and 4", number = "3 or 5??", number = "3", number = "3+4", number = "3, 4", number = "3--4", number = "3-30", number = "3-31-84", number = "3-4", number = "3/4", number = "3/6", number = "3/79", number = "30", number = "30(2)", number = "3048", number = "3071", number = "3079--89--MS", number = "30G-0009", number = "31", number = "31-89", number = "3106", number = "314", number = "315", number = "32", number = "320 -- 2956", number = "3229-3234", number = "323", number = "3237", number = "33", number = "33-78-2", number = "330", number = "331", number = "332", number = "337", number = "339, also Ultracomputer Note 131", number = "34", number = "342/10/92 A", number = "342/10/93 A/ I-9319", number = "342/11/92 A", number = "342/13/93 A", number = "342/17/90", number = "342/26/92 A", number = "3430", number = "3459", number = "346", number = "3462", number = "3467", number = "349", number = "35", number = "3507", number = "3509", number = "353", number = "355", number = "3560", number = "358-364", number = "359", number = "36", number = "361", number = "3619", number = "367", number = "368", number = "369", number = "37", number = "37--82", number = "370", number = "373", number = "377", number = "3776", number = "38", number = "3833", number = "3885", number = "389", number = "39 (or 4??)", number = "39", number = "390", number = "391", number = "398", number = "399", number = "3B", number = "3\&4", number = "4 (or 5??)", number = "4 Pt 1", number = "4 and 1", number = "4 or 5?", number = "4", number = "4, 5", number = "4, Part II", number = "4--5", number = "4-10", number = "4-22-66-1", number = "4-5", number = "4-6", number = "4-94", number = "4/1", number = "40", number = "400-63", number = "400-75 SeF", number = "400-75", number = "400-85", number = "401", number = "405", number = "406 0723-0508", number = "408", number = "409", number = "41", number = "412", number = "418", number = "42", number = "421", number = "424", number = "428", number = "4287:TR:81", number = "43", number = "430", number = "431-014", number = "434", number = "4356", number = "439", number = "44", number = "443", number = "449", number = "45", number = "4543", number = "456", number = "458", number = "46", number = "466", number = "468", number = "47", number = "473-499", number = "476-029-4 (re-released as Rice COMP TR84-9)", number = "4776", number = "478", number = "48", number = "4805", number = "4816", number = "486", number = "4872", number = "49", number = "4911", number = "4922", number = "4930", number = "495", number = "5 (or 15??)", number = "5", number = "5-6", number = "5-93", number = "5/6", number = "5/92", number = "50", number = "500-32", number = "5054", number = "507", number = "51", number = "51--52", number = "511", number = "5118", number = "5121", number = "5123", number = "522", number = "523-538", number = "527", number = "53", number = "530", number = "539", number = "54", number = "541", number = "5419", number = "543", number = "5470", number = "55", number = "5504", number = "555", number = "5573", number = "56", number = "560", number = "56038", number = "562", number = "562M2-169. UCS II.", number = "564", number = "5656", number = "567", number = "568", number = "57", number = "570", number = "572", number = "574", number = "577", number = "579", number = "58", number = "580", number = "581", number = "582", number = "583T", number = "584", number = "589", number = "59", number = "590", number = "591", number = "595", number = "596", number = "5B", number = "5a", number = "6 Pt 1", number = "6 Pt 2", number = "6", number = "6--7", number = "6-7", number = "6-93", number = "6/7", number = "6/80", number = "60", number = "6003", number = "60174900A", number = "602", number = "60457040", number = "606", number = "6062", number = "607", number = "6086", number = "609", number = "61", number = "611", number = "612", number = "6133", number = "6158.", number = "616", number = "62", number = "623", number = "6240", number = "625", number = "626", number = "629", number = "6292", number = "63", number = "634", number = "6368", number = "6370", number = "640-M", number = "645", number = "65", number = "652", number = "657", number = "659", number = "66", number = "66-10", number = "661", number = "663", number = "664", number = "665", number = "666", number = "668", number = "67", number = "671", number = "676", number = "679", number = "68", number = "68-1", number = "68/5", number = "68/6", number = "68/8", number = "6824", number = "684", number = "685", number = "689", number = "69", number = "69-05", number = "69-1", number = "69-18", number = "69-19", number = "69-3", number = "69-5", number = "69/1", number = "69/11", number = "69/2", number = "69/3", number = "69/4", number = "69/5", number = "69/6", number = "69/7", number = "69/9", number = "690", number = "6905", number = "6A", number = "6B", number = "7", number = "7-14", number = "7-8", number = "7-93", number = "7/8", number = "70", number = "70/10", number = "70/15", number = "70/17", number = "70/18", number = "70/2", number = "70/3", number = "70/5", number = "70/7", number = "70/8", number = "700", number = "7002", number = "7041", number = "705", number = "707", number = "71", number = "71-20", number = "71-51", number = "71/6", number = "71/7", number = "72", number = "72-08", number = "72/2", number = "722", number = "726", number = "73/2", number = "73/3", number = "73/4", number = "73/6", number = "7304", number = "731", number = "734", number = "74", number = "74-1 NML/GSO", number = "74-1", number = "74-5", number = "74/1", number = "74/2", number = "74/3", number = "74/4", number = "741", number = "75", number = "75-01", number = "75-1", number = "75-159", number = "75-2", number = "75-47", number = "75-Aut-J", number = "75/1", number = "75/3", number = "75/5", number = "75/7", number = "751", number = "757", number = "76", number = "76-05", number = "76-1", number = "76-13", number = "76-22", number = "76-3", number = "76-67", number = "76/4", number = "76/86", number = "7640", number = "768", number = "77", number = "77-14", number = "77-17", number = "77-459", number = "77-671", number = "77-671.", number = "776", number = "777", number = "78 0458-2128", number = "78", number = "78- 1069", number = "78-1", number = "78-12", number = "78-160", number = "78-287", number = "78-3", number = "78-669", number = "78/1", number = "78/10", number = "78/2", number = "78/3", number = "78/5", number = "78/6", number = "78/7", number = "78/8", number = "78/P.1019", number = "781", number = "786", number = "79", number = "79-0276", number = "79-07", number = "79-1", number = "79-282", number = "79-3", number = "79-9", number = "79/1", number = "79/10", number = "79/2", number = "79/3", number = "79/5", number = "79/6", number = "79/7", number = "79/8", number = "790", number = "794", number = "797", number = "7994", number = "7997", number = "8 (??)", number = "8", number = "8, Part 2", number = "8--9", number = "8-9", number = "80", number = "80- 004", number = "80-03", number = "80-1274", number = "80-2", number = "80-3", number = "80-34", number = "80-411", number = "80-844", number = "80/1", number = "80/10", number = "80/2", number = "80/3", number = "80/4", number = "80/5", number = "80/6", number = "80/7", number = "80/9", number = "80192", number = "80205", number = "807", number = "809", number = "81", number = "81-02", number = "81-1020", number = "81-1091", number = "81-158", number = "81-19", number = "81-29", number = "81-574", number = "81/1", number = "81/10", number = "81/2", number = "81/3", number = "81/4", number = "81/5", number = "81/6", number = "81/7", number = "81/8", number = "81/9", number = "816", number = "818", number = "819", number = "82", number = "82-11-03", number = "82-308", number = "82-831", number = "82/1", number = "82/10", number = "82/2", number = "82/3", number = "82/4", number = "82/5", number = "82/6", number = "82/7", number = "82/9", number = "82448-9", number = "83-01-01", number = "83-0223", number = "83-0372", number = "83-0421", number = "83-0500", number = "83-155", number = "83-1893", number = "83-3", number = "83-4", number = "83-4051", number = "83-47", number = "83-5", number = "83-713", number = "83-883", number = "83-97", number = "83/09", number = "83/1", number = "83/10", number = "83/2", number = "83/4", number = "83/5", number = "83/7", number = "83/9", number = "830", number = "832", number = "83304", number = "836", number = "83CRD054 (Technical information series)", number = "84", number = "84-0162", number = "84-21", number = "84-2156", number = "84-501", number = "84-637", number = "84-651", number = "84-690", number = "84-777", number = "84-777.", number = "84-827", number = "84.2", number = "84/10", number = "84/154/12", number = "84/162/20", number = "84/2", number = "84/3", number = "84/4", number = "84/5", number = "84/6", number = "84/7", number = "84/8", number = "84/9", number = "84/R", number = "8428", number = "843", number = "849", number = "85", number = "85--01", number = "85--105", number = "85--12", number = "85--14", number = "85--18", number = "85--23", number = "85--B--1", number = "85--OR--3", number = "85-0366", number = "85-1", number = "85-122", number = "85-257", number = "85-279", number = "85-29", number = "85-45", number = "85-48", number = "85-5", number = "85-739", number = "85/10", number = "85/2", number = "85/212", number = "85/3", number = "85/4", number = "85/8", number = "85/9", number = "851", number = "852", number = "854", number = "856", number = "86", number = "86--10", number = "86--128", number = "86-06", number = "86-1-5", number = "86-123", number = "86-17", number = "86-21", number = "86-268", number = "86-3055", number = "86-32", number = "86-3473", number = "86-4", number = "86-437", number = "86-451", number = "86-46", number = "86-475", number = "86-54", number = "86-55", number = "86-85", number = "86.7", number = "86/10", number = "86/1292", number = "86/2", number = "86/230/4", number = "86/235/9", number = "86/5", number = "86/6", number = "86/7", number = "86/8", number = "860", number = "861", number = "8610", number = "862", number = "86392", number = "86407", number = "866", number = "86750", number = "869", number = "8696", number = "87 869", number = "87", number = "87--2", number = "87--41", number = "87--53", number = "87--87", number = "87-0004-A-B", number = "87-002", number = "87-02, I1-I50", number = "87-04", number = "87-1-1", number = "87-10", number = "87-11", number = "87-118", number = "87-14", number = "87-16", number = "87-20", number = "87-21", number = "87-22", number = "87-25", number = "87-34", number = "87-37", number = "87-39", number = "87-4", number = "87-41", number = "87-49", number = "87-5", number = "87-50", number = "87-51", number = "87-52", number = "87-58", number = "87-641", number = "87-65", number = "87-75", number = "87-82", number = "87/347", number = "87/7", number = "87/88-5-2", number = "87001", number = "87002", number = "87003", number = "871", number = "873", number = "8744", number = "877", number = "878", number = "879", number = "88--101", number = "88--13", number = "88--17", number = "88--44", number = "88--68", number = "88--74", number = "88-10", number = "88-11", number = "88-115", number = "88-12", number = "88-136", number = "88-14", number = "88-140", number = "88-15", number = "88-16", number = "88-19", number = "88-2", number = "88-20", number = "88-234", number = "88-258-A", number = "88-29/50", number = "88-3", number = "88-49/70", number = "88-5", number = "88-6", number = "88-60-20", number = "88-942", number = "88-95", number = "88/304", number = "88/322/34", number = "882", number = "88288", number = "88293", number = "88363", number = "888", number = "89", number = "89--04", number = "89--13", number = "89--15", number = "89--2", number = "89--29", number = "89--3", number = "89--65", number = "89--7", number = "89--85", number = "89--92", number = "89--B--5", number = "89-09", number = "89-1", number = "89-11", number = "89-12", number = "89-2", number = "89-260", number = "89-3", number = "89-313", number = "89-57", number = "89-984", number = "89/20", number = "89/204", number = "89/26", number = "89/3", number = "890", number = "8917/A", number = "893", number = "8939", number = "8971", number = "9", number = "9--12", number = "9-10", number = "9/10", number = "90", number = "90--01", number = "90--03", number = "90--07", number = "90--12", number = "90--14", number = "90--22", number = "90--28", number = "90--53", number = "90--83", number = "90-09", number = "90-1", number = "90-10", number = "90-2", number = "90-20", number = "90-4", number = "90-6", number = "90-83", number = "90/302", number = "901", number = "903", number = "9030", number = "9035", number = "907", number = "91", number = "91--04", number = "91--05", number = "91--06", number = "91--10", number = "91--13", number = "91--27", number = "91--47", number = "91--7", number = "91-03", number = "91-04", number = "91-044", number = "91-14", number = "91-2", number = "91-279", number = "91-294", number = "91-311", number = "91-328", number = "91-72", number = "91-80", number = "91-CSE-6", number = "91/10", number = "91/447/31", number = "91/8", number = "9140", number = "917", number = "919", number = "92", number = "92-067", number = "92-068", number = "92-069", number = "92-075", number = "92-084", number = "92-09", number = "92-1", number = "92-126", number = "92-16", number = "92-161", number = "92-24", number = "92-241", number = "92-28", number = "92-28d", number = "92-31", number = "92-35", number = "92-36", number = "92-38", number = "92-421", number = "92-5-A", number = "92/15", number = "92/302", number = "92/4", number = "921", number = "922", number = "9236", number = "93", number = "93--96", number = "93-021", number = "93-027", number = "93-093", number = "93-102", number = "93-107", number = "93-13", number = "93-17", number = "93-21b", number = "93-31", number = "93-42", number = "93-8", number = "93-9", number = "934", number = "936", number = "937", number = "93NO00009", number = "94", number = "94---", number = "94-008", number = "94-03a", number = "94-069", number = "94-16", number = "94-18a", number = "94-21", number = "94-3", number = "94-4168", number = "94-501", number = "94-8", number = "94/5", number = "9406", number = "944", number = "949", number = "95", number = "95-08", number = "95-19", number = "95-20", number = "95-29", number = "950", number = "951", number = "952", number = "952144", number = "956", number = "96", number = "963", number = "964", number = "9649", number = "966", number = "967", number = "97", number = "97--100", number = "970", number = "971", number = "974", number = "978", number = "98", number = "987", number = "99 00 04", number = "99 90 12", number = "99 90 62", number = "99", number = "?", number = "??", number = "??-??", number = "????", number = "A-18", number = "A-48", number = "A. I. MEMO 421", number = "A. I. MEMO 70 and MAC-M-165", number = "A.E.R.E. 8781", number = "A68 8", number = "AA61641-00A", number = "AAEC/E190", number = "AAEC/E488", number = "AAEC/TM 366", number = "AAEC/TM 370", number = "AAEC/TM 544", number = "AAEC/TM455", number = "AAEC/TM470", number = "ACM--91--3", number = "ACPC/TR 92-3", number = "ACPC/TR 92-4", number = "AD 702 910", number = "AD 769-124", number = "AD 779 841", number = "AD-A050135", number = "AD/A-039 741", number = "AECL-7614", number = "AECL-7794", number = "AERE -- R 9444", number = "AERE M3057", number = "AERE R10533", number = "AERE R10555", number = "AERE R11009", number = "AERE R11432", number = "AERE R11948", number = "AERE R8730", number = "AERE-R 12329", number = "AERE-R 12393", number = "AERE-R. 4599 (pt. 1)", number = "AFFDL-TR-66-207", number = "AGESS810528", number = "AIM-106", number = "AM--87--11", number = "AM--88--08", number = "ANL AMD 328", number = "ANL AMD 71", number = "ANL--80--68", number = "ANL--80--74", number = "ANL--82--48", number = "ANL-7231", number = "ANL-80-68", number = "ANL-80-74", number = "ANL-81-43", number = "ANL-83-97", number = "ANL-84-83", number = "ANL-85-70", number = "ANL-8579", number = "ANL-86-10", number = "ANL-87-23", number = "ANL-87-40", number = "ANL-88-38", number = "ANL-89/2 Rev. 1", number = "ANL-91/1", number = "ANL-91/14", number = "ANL-MCS-TM 99", number = "ANL-MCS-TM-119", number = "ANL-MCS-TM-57 (Revision 1)", number = "ANL-MCS-TM-86", number = "ANL-MCS-TM-88", number = "ANL/MCS--TM--148", number = "ANL/MCS--TM--158", number = "ANL/MCS--TM--159", number = "ANL/MCS--TM--16", number = "ANL/MCS-TM-15", number = "ANL/MCS-TM-150", number = "ANL/MCS-TM-157", number = "ANL/MCS-TM-27", number = "ANL/MCS-TM-84", number = "ANL/MCS-TM-97", number = "ANL/MCS/TM-33", number = "ANL/MLS-TM-63", number = "ANL84-51, Rev.1", number = "ANS-12", number = "ANS-13", number = "ANS-16", number = "ANS-20", number = "ANS-22", number = "ANS-23", number = "ANS-24", number = "ANS-7", number = "ANS/MCS-TM-37", number = "APL-UW TM-4-83", number = "AR-92-2", number = "ARE TM (N1) 86501", number = "ARE-TM (N1) 86501", number = "ARL 69-0005", number = "ARL 69-0017", number = "ARL 69-0054", number = "ARL 70-0066", number = "ARRL TR 1018", number = "ASRL TR 1020", number = "ASRL TR 1021", number = "Arbeitspapiere der GMD, Nr. 588 0723-0508", number = "B--180", number = "B--239", number = "B--243", number = "B12", number = "B57-01a", number = "B9", number = "BESSY TB Nr. 158", number = "BNL 25680.", number = "BSC 88/15", number = "BU-660-M", number = "BU-784-M", number = "BUCSTR 79-01", number = "B\#84", number = "British Library R and D report 6155", number = "C 2504-E5. N74-13290", number = "C.S.S. 52", number = "C2", number = "CAM 14", number = "CAM 7", number = "CAM 88-16", number = "CAM 88-21", number = "CAM 89-28", number = "CAM 92-07", number = "CAP-3 837", number = "CBPF-NT-001/88", number = "CC-147", number = "CC-151", number = "CC-152", number = "CC-153", number = "CC-154", number = "CC-156", number = "CC-158", number = "CC-161", number = "CC-163", number = "CC-164-4", number = "CC-200-2", number = "CC-60", number = "CC-71", number = "CC-93", number = "CCRL-3", number = "CCRL-8", number = "CCS 206", number = "CCS 86/10", number = "CCS~501", number = "CCUM 7", number = "CDC 14.2.6", number = "CES-88-24", number = "CES-94-??", number = "CFDL-TR-87-11", number = "CICS--P--169", number = "CIS-83-34", number = "CIS-TR-88-16", number = "CLNS-197", number = "CLNS-209", number = "CM--286", number = "CMI 88/45052-1", number = "CMPT TR 81-6", number = "CMPT TR 83-4", number = "CMU-CS-78-125", number = "CMU-CS-78-141", number = "CMU-CS-80-125", number = "CMU-CS-80-131", number = "CMU-CS-84-141", number = "CMU-CS-85-187", number = "CMU-CS-86-168", number = "CMU-CS-87-109", number = "CMU-CS-88-135", number = "CMU-CS-89-111", number = "CMU-CS-89-129", number = "CMU-CS-89-207", number = "CMU-CS-89-209", number = "CMU-CS-90-102", number = "CMU-CS-90-137", number = "CMU-CS-90-139", number = "CMU-CS-90-184", number = "CMU-CS-91-106", number = "CMU-CS-91-111", number = "CMU-CS-91-161", number = "CMU-CS-91-205", number = "CMU-CS-92-163", number = "CMU-CS-93-124", number = "CMU-CS-93-151", number = "CMU-CS-93-164", number = "CMU-CS-94-125", number = "CMU-CS-94-200", number = "CMU-SEI-92-34", number = "CN -28/F-14", number = "CN-22", number = "CN-22.2", number = "CNA--126", number = "CNA--139", number = "CNA--150", number = "CNA--164", number = "CNA--173", number = "CNA--18", number = "CNA--189", number = "CNA--191", number = "CNA--200", number = "CNA--216", number = "CNA--220", number = "CNA--222", number = "CNA--228", number = "CNA--23", number = "CNA--232", number = "CNA--24", number = "CNA--240", number = "CNA--244", number = "CNA--249", number = "CNA--250", number = "CNA--255", number = "CNA--26", number = "CNA--33", number = "CNA--52", number = "CNA--90", number = "CNA-139", number = "CNA-150", number = "CNA-164", number = "CNA-173", number = "CNA-189", number = "CNA-191", number = "CNA-198", number = "CNA-199", number = "CNA-202", number = "CNA-208", number = "CNA-222", number = "CNA-232", number = "CNA-244", number = "CNA-250", number = "CNA-26", number = "CNA-33", number = "CNA-52", number = "CNC/1993/028", number = "COINS 87-134", number = "COINS TR 91-13", number = "COMP TR85-16", number = "COMP TR86-38", number = "COMP TR90-14", number = "COMP TR91-149", number = "COMP TR91-15", number = "COMP TR91-154", number = "COMP TR91-160", number = "COMP TR91-169", number = "COMP TR91-170", number = "COMP TR92-178", number = "COMP TR92-198", number = "COMP TR93-203", number = "COMP TR93-213", number = "COMP TR93-918", number = "CORR 83-11", number = "CORR 83-2", number = "CORR 84-1", number = "CORR 86-23", number = "CORR 86-29", number = "CORR 93-18", number = "CORR Report 94-32", number = "CP 74028", number = "CP 78", number = "CP-2012", number = "CP-390", number = "CP-391", number = "CP-700011", number = "CP-72009", number = "CP-72017", number = "CP-72022", number = "CPT-88", number = "CR-2032", number = "CR-R; 84009", number = "CRHC-91-21", number = "CRL 91/1 (Revised)", number = "CRPC-TR90079", number = "CRSC-TR94-10", number = "CRSC-TR95-12", number = "CRT-750", number = "CRT-794", number = "CRT-807", number = "CRT-866", number = "CRT-867", number = "CRT-920", number = "CS 142", number = "CS 150", number = "CS 157", number = "CS 252", number = "CS 367A", number = "CS 59", number = "CS 60", number = "CS 7708", number = "CS 7714", number = "CS 7808", number = "CS TR 1144", number = "CS TR 708", number = "CS--90--32", number = "CS--91--02", number = "CS--91--04", number = "CS--TR--303--91", number = "CS-142", number = "CS-186", number = "CS-1984-13", number = "CS-72-270", number = "CS-78-19", number = "CS-80-13", number = "CS-81-25", number = "CS-82-40", number = "CS-83-06", number = "CS-83-10", number = "CS-83-16", number = "CS-83-41", number = "CS-84-04", number = "CS-84-13", number = "CS-84-2", number = "CS-84-22", number = "CS-85-01", number = "CS-85-56", number = "CS-86-11", number = "CS-86-14", number = "CS-87-01", number = "CS-87-02", number = "CS-87-08", number = "CS-87-17", number = "CS-87-24", number = "CS-87-27", number = "CS-88-10", number = "CS-88-13", number = "CS-88-19", number = "CS-88-33", number = "CS-88-35", number = "CS-89-61", number = "CS-89-85", number = "CS-89-87", number = "CS-89-89", number = "CS-89-90", number = "CS-89-92", number = "CS-90-103", number = "CS-90-105", number = "CS-90-115", number = "CS-90-116", number = "CS-90-117", number = "CS-90-118", number = "CS-90-23", number = "CS-9003-09", number = "CS-91-130 and ORNL/TM-12006", number = "CS-91-134", number = "CS-91-137", number = "CS-91-138", number = "CS-91-139", number = "CS-91-142", number = "CS-91-146", number = "CS-92-01, revised", number = "CS-92-167", number = "CS-92-168", number = "CS-92-181", number = "CS-92-21", number = "CS-92-33", number = "CS-92-55", number = "CS-93-01", number = "CS-93-02", number = "CS-93-2", number = "CS-93-214", number = "CS-93-27", number = "CS-94-228", number = "CS-94-233", number = "CS-94-236", number = "CS-94-239", number = "CS-94-244", number = "CS-94-250", number = "CS-94-257", number = "CS-95-290", number = "CS-95-291", number = "CS-95-301", number = "CS-TR 2539", number = "CS-TR 2626", number = "CS-TR 3045", number = "CS-TR-1705", number = "CS-TR-2030", number = "CS-TR-2305", number = "CS-TR-2403, UMIACS-TR-90-16", number = "CS-TR-2908", number = "CS-TR-310-91", number = "CS-TR-3268", number = "CS-TR-3268.1", number = "CS-TR-351-91", number = "CS-TR-412-93", number = "CS-TR-750", number = "CS-TR2907 (UMIACS-TR-92-60)", number = "CS-xx-yyy", number = "CS/82/5", number = "CS81-1 (Revised)", number = "CS81-1", number = "CSD 92/693", number = "CSD-890044", number = "CSD-TR 516", number = "CSD-TR-408", number = "CSD-TR-433", number = "CSD-TR-576", number = "CSD-TR-612", number = "CSD-TR-661", number = "CSD-TR-688", number = "CSD-TR-735", number = "CSD-TR-745", number = "CSD-TR-93-059", number = "CSDG 78-2", number = "CSDG 81-1", number = "CSDG", number = "CSDG-80-1", number = "CSDG-83-3", number = "CSE 7910", number = "CSE-93-19", number = "CSE89-91", number = "CSL-79-3", number = "CSL-81-12", number = "CSL-89-9", number = "CSL-93-3", number = "CSL-TR-93-554", number = "CSR-94-81", number = "CSRC 966", number = "CSRD 1041", number = "CSRD 601", number = "CSRD 624", number = "CSRD 665", number = "CSRD 731", number = "CSRD 785", number = "CSRD 983", number = "CSRD No. 860, UILU-ENG-89-8003", number = "CSS 155, 1984", number = "CSS 171", number = "CSS 214", number = "CSS-210", number = "CSS-211", number = "CSS-229", number = "CSS213", number = "CSTR 89-7", number = "CTC 90 TR26", number = "CTC 91 TR85", number = "CTC 92 TR115", number = "CTC 93 TR126", number = "CTC 94 TR172", number = "CTC92TR100", number = "CTS WN 26", number = "CU-CS-420-89", number = "CU-CS-534-91", number = "CU-CS-579-92", number = "CU-CS-623-92", number = "CU-CS-682-93", number = "CUED/F-CAMS/TR.241", number = "CUED/F-CAMS/TR.242", number = "CUED/F-CAMS/TR.248", number = "Computer Science Report 100", number = "Computer Science Report 91", number = "Computer Science Technical Report 89", number = "Contract no. AD/A-056 839CU-CS-129-78", number = "D 889778", number = "D--134, Rev. B", number = "D-6545", number = "D-6734", number = "D-6959", number = "D-7329", number = "D-8020", number = "D-91-13", number = "D-92-08", number = "D-93-05", number = "DAIMI FN-19", number = "DAIMI PB - 345", number = "DAIMI PB - 355", number = "DAIMI PB - 357", number = "DAIMI-PB - 318", number = "DCS/RR-783", number = "DCS/RR-826", number = "DD 84-14", number = "DD/85/18", number = "DEC-TR-566", number = "DEC-TR-593", number = "DECUS No. 10-21", number = "DITC 12/82", number = "DITC 192/91", number = "DITC 200/92", number = "DITC 203/92", number = "DITC 214/93", number = "DITC 23/83", number = "DITC 8/82", number = "DKBS-TR-94-5", number = "DMS-618-IR", number = "DMS-646-IR", number = "DNACS 10/78", number = "DNACS 13/79", number = "DNACS 30/80", number = "DNACS 34/80", number = "DPh-T/78-75", number = "Dep. Report STA", number = "DpH-T 43/78", number = "E-2637", number = "E-2700", number = "E-2779", number = "E11-87-10", number = "E11-89-755", number = "E2-89-286", number = "E251", number = "E253", number = "E4-85-262", number = "E4-85-263", number = "E4-85-264", number = "E5-85-39", number = "E5-89-141", number = "E5-91-401", number = "ECS-LFCS-86-14", number = "ECS-LFCS-86-2", number = "ECS-LFCS-89-73 (also CSR-290-89)", number = "ECS-LFCS-92-226", number = "ECS-LFCS-93-275", number = "ECS-LFCS-94-280", number = "ECS-LFCS-94-303", number = "EDFB-IBP 74-6", number = "EE-CEG-85-2", number = "EE-CEG-85-7", number = "EE-CEG-86-1", number = "EE-CEG-86-2", number = "EE-CEG-86-5", number = "EE-CEG-86-7", number = "EP-78-E-23", number = "EPA-600/4-78-001", number = "EPM/RT-84-6", number = "ER/25026--30", number = "ERL 269-APCL 28", number = "ERL SEL-32", number = "ERL-0545-RR", number = "ERL-M467", number = "ERL-M481", number = "ERLTM-SDL 14", number = "ES--227/90", number = "ES--230/90", number = "ES--238/90", number = "ES--246/91", number = "ESAT-KUL-88/3", number = "ETA-TR-43", number = "ETA-TR-49", number = "ETA-TR-51", number = "ETA-TR-52", number = "ETA-TR-53", number = "ETA-TR-57", number = "ETA-TR-60", number = "ETA-TR-61", number = "ETA-TR-85", number = "ETA-TR-90", number = "ETR 7/91", number = "F4 Bound", number = "FA-STS-991324", number = "FAO-2", number = "FAO-70-L", number = "FCVS66-VSR205. ADA040385", number = "FCVS66-VSR210. ADA040392", number = "FCVS78-VSR806", number = "FF-X-6", number = "FHWA-IP-79-5", number = "FHWA-TS-79-222", number = "FMR-X-23", number = "FMR-X-42", number = "FMR-X-7", number = "FMR-X-78", number = "FN--535", number = "FR/PA/93/19", number = "FRA-ORD and D-74-6", number = "FS-81-2", number = "FS81-2", number = "FSU-SCRI-87-30", number = "FSU-SCRI-87-43", number = "FSU-SCRI-90-91", number = "FSU-SCRI-94-06", number = "FTD-HC-23-897-74", number = "G--89--25", number = "G1/1", number = "G2/1", number = "G320-3490", number = "G4550-CM-39", number = "GAO/IMTEC-92-26", number = "GAS/OP/MCL; TM-248", number = "GER-16109", number = "GG24-3611-00", number = "GIT-ICS; 82/10", number = "GIT-SERC-86/02, GIT-ICS-85/06", number = "GJBX 10(81)", number = "GJBX 11(81)", number = "GJBX 192-82", number = "GJBX 193-82", number = "GJBX 246(80)", number = "GJBX 247(80)", number = "GJBX 248(80)", number = "GMR-5174", number = "GMR-5299", number = "GN33-9342", number = "GS1976/236", number = "GU TPA 88/12-1", number = "GUTPA 88/04-01", number = "GWU-IIST-82-20", number = "HDL-TR-1942", number = "HPL-90-22", number = "HPL-91-50", number = "HPL-93-42", number = "HPL-94-??", number = "HTKK-TKO-B59", number = "Habilitationsschrift", number = "Heft 17", number = "Hm-97", number = "I-140", number = "I-3", number = "I-8525", number = "I-8607", number = "I-8701", number = "I-8712", number = "I-8801", number = "I-8810", number = "I-8814", number = "I-9135", number = "I-9136", number = "I-9215", number = "I-9217", number = "I-9220", number = "I-9304", number = "IB 262-82 RO1", number = "IBM-E-148/8, NSF-E-872", number = "IBM-Form GC33-6163, GN33-9342", number = "IBM-Form Gc33-6163", number = "IBM-Form SA22-7093", number = "IBM-Form Sc33-6164", number = "IC/85/205", number = "ICMA-83-66", number = "ICMA-87-105", number = "IFI-B-66/80", number = "II/13", number = "IMMR82/067", number = "INF-85-11", number = "INF-85-12", number = "INF-87-4", number = "INF-88-36", number = "INFN/TC-92/05", number = "INP 90-42", number = "INP 90-62", number = "INP 90-71", number = "INP 91-46", number = "INP 91-56", number = "INS-REP.-487", number = "INT 273", number = "INTT-12", number = "INTT-17", number = "INTT-19", number = "INTT-20", number = "INTT-21", number = "INTT-28", number = "IPP 6/143", number = "IRCS 92 - 24", number = "ISA-S61.1", number = "ISI/RS-86-169", number = "ISIS-RR-93-17E", number = "ISL-85-8", number = "ISO 1539 (norme NF Z 65-110)", number = "ISO/IEC TR 9573", number = "ISO/IEC TR 9573-13", number = "IX", number = "IfI-HH-B-71/80", number = "IfI-HH-M34/76", number = "IfI-HH-M36/76", number = "IfI-HH-M65/79", number = "Informatica 89-40", number = "J--91--07", number = "J530-82-020", number = "JHU-EE 84/14", number = "JPL Section 366 Internal Computing Memorandum 437", number = "J~88--4", number = "K-39/67", number = "K-73-1", number = "K/CSD/INF-81/25", number = "K/CSD/TM-20", number = "K/CSD/TM-27", number = "K34", number = "KFA-ZAM-IB-9322", number = "KFA-ZAM-IB-9401", number = "KFA-ZAM-IB-9404", number = "KFA-ZAM-IB-9410", number = "KFA-ZAM-IB-9414", number = "KFA-ZAM-IB-9415", number = "KFA-ZAM-IB-9417", number = "KFKI-1982-19", number = "KFKI-1984-115", number = "KFKI-1986-33/B", number = "KGN-137", number = "KGN-184", number = "KGN-190", number = "KGN-209", number = "KGN-216", number = "KGN-217", number = "KGN-219", number = "KUL-TF-79/032", number = "LA 7196-MS", number = "LA 7467-MS", number = "LA-10005", number = "LA-10284-MS, US-32", number = "LA-4531", number = "LA-6774", number = "LA-7524-MS", number = "LA-8609-MS", number = "LA-8849-MS", number = "LA-UR-83-1392", number = "LA-UR-83-1676", number = "LA-UR-84-2004", number = "LA-UR-85-2393", number = "LA-UR-85-3597", number = "LA-UR-85-3967", number = "LA-UR-86-2080", number = "LA-UR-86-2890", number = "LA-UR-86-3773", number = "LA-UR-86-4218", number = "LA-UR-86-4219", number = "LA-UR-87-1522", number = "LA-UR-87-2163", number = "LA-UR-87-2164", number = "LA-UR-87-2879", number = "LA-UR-87-3136", number = "LA-UR-87-3635", number = "LA-UR-87-659", number = "LA-UR-88-901", number = "LBL 5283", number = "LBL-22584", number = "LCSR--TR--121", number = "LCSR--TR--130", number = "LCSR--TR--91", number = "LMSC 4-22-66-3", number = "LMSD-285875", number = "LMSD-703073", number = "LPS4004", number = "LPS5004", number = "LPS5006", number = "LPS5047", number = "LPS5086", number = "LUFTD2\slash (TFRT-7333)\slash 1040\slash (1986)", number = "Lawrence Livermore UCRL-87522", number = "LiTH--MAT--R--1985--10", number = "LiTH--MAT--R--1990--02", number = "LiTH-IDA-R-93-34", number = "LiTH-MAT-R-1990-11", number = "LiTH-MAT-R-1992-05", number = "LiTH-MAT-R-1992-49", number = "LiTH-MAT-R-1993-39", number = "LiTH-MAT-R-1994-19", number = "LiTh Mat R 1988-02", number = "M33", number = "M78/40", number = "MA/17/1024", number = "MAS2-CT920022", number = "MASC-TR82-6", number = "MCA-TM-23", number = "MCS--P162--0790", number = "MCS--P180--1190", number = "MCS--P204--0191", number = "MCS--P228--0491", number = "MCS--P246-0691", number = "MCS--P263--0991", number = "MCS--TM--140", number = "MCS-P153-0692", number = "MCS-P179-0990", number = "MCS-P189-1090", number = "MCS-P218-0391", number = "MCS-P250-0791", number = "MCS-P268-1091", number = "MCS-P273-1191", number = "MCS-P286-0192", number = "MCS-P308-0592", number = "MCS-P330-1092", number = "MCS-P356-0393", number = "MCS-P379-0893", number = "MCS-P61-0289", number = "MCS-P69-0389", number = "MCS-P90-0789", number = "MCS-TM-129", number = "MCS-TM-138", number = "MCS-TM-68", number = "MCS-TM-78", number = "MCS-TM-80", number = "MIT/LCS/TM-73", number = "MLM-3635", number = "MM 69-1374-26", number = "MM 69-1374-29", number = "MPI H-1985-V21", number = "MR 128", number = "MR 134", number = "MSSU-EIRS-ERC 94-2", number = "MSUCL -- 751", number = "MSUCL -- 755", number = "MSUCL -- 771", number = "MTP 288", number = "M\&A-5", number = "Math./91/1", number = "Math./91/2", number = "Math: 062090-051", number = "Memorandum INF-85-12", number = "N/89/16", number = "N75-12657", number = "N78-32751 NASA TM-7877", number = "NA 87-07", number = "NA-91-05", number = "NA/131", number = "NA/154", number = "NAC 55", number = "NAC 69", number = "NAC 73", number = "NAC 82", number = "NAM 03", number = "NAS2-9896", number = "NAS2-9897", number = "NASA CR 189664; ICASE report 92-22", number = "NASA CR-1478", number = "NASA CR-177410", number = "NASA CR-177462", number = "NASA CR-177985", number = "NASA CR-178364, ICASE interim report 178364", number = "NASA CR-182806", number = "NASA CR-187590", number = "NASA CR-189623. ICASE report 92-9", number = "NASA CR-189629", number = "NASA CR-191425", number = "NASA CR-191451; ICASE report 93-17", number = "NASA CR-191575; ICASE report 93-92", number = "NASA CR-194913; ICASE report no. 94-34", number = "NASA CR-194943; ICASE report no. 94-54", number = "NASA CR-2821", number = "NASA CR-2901", number = "NASA CR-3980", number = "NASA CR-3980.", number = "NASA CR-426", number = "NASA CR-4265", number = "NASA SP-347", number = "NASA TM X-2967", number = "NASA TM100217", number = "NASA TN D-2579", number = "NASA TN D-6020", number = "NASA TN D-7056", number = "NASA TN D-734", number = "NASA TN D-7385", number = "NASA TN D-739", number = "NASA TN D-7391", number = "NASA TN D-7487", number = "NASA TN D-7545", number = "NASA TN D-7831", number = "NASA TN D-8063", number = "NASA TN D-8132", number = "NASA TN D-843", number = "NASA TN D-8430, D-8431", number = "NASA TN D-8509 NASA", number = "NASA TT-20317", number = "NASA Technical Paper 1200", number = "NASA technical memorandum NASA-TM-108019 4004232378", number = "NASA-CR 172518", number = "NASA-CR 180299", number = "NASA-TM-89082", number = "NASA-TM-89119", number = "NI-80-07", number = "NISTIR 5287", number = "NISTIR 5381", number = "NISTIR~89--4225", number = "NM-8518", number = "NM-9017", number = "NM-9018", number = "NM-N8801", number = "NM-R8501", number = "NM-R8702", number = "NM-R8719", number = "NM-R8903", number = "NM-R8915", number = "NM-R9004", number = "NM-R9014", number = "NM-R9015", number = "NM-R9107", number = "NM-R9301", number = "NM-R9414", number = "NM-R9421", number = "NN 24", number = "NOC TR170", number = "NOC TR176", number = "NOC TR177", number = "NOC TR205", number = "NOC TR209", number = "NOC TR210", number = "NOC TR224", number = "NOC TR228", number = "NP 1201", number = "NP1168", number = "NPS-53-86-012", number = "NPS-MA-88-009", number = "NPS-MA-89-001", number = "NPS-MA-89-014", number = "NPS-MA-90-004", number = "NPS-MA-91-009", number = "NPS-MA-92-004", number = "NPS-MA-92-010", number = "NPS-MA-93-014", number = "NPS-MA-94-001", number = "NPS-MA-94-003", number = "NPS012-81-005", number = "NR 15", number = "NSWC TR 85-54", number = "NUREG/CR-3624, SAND83-2365", number = "NUREG/CR-4478, ORNL/TDMC-4, NRC FIN A9100", number = "NW 11", number = "NW 18", number = "NW 24", number = "NW 3", number = "NW 6", number = "NW 66", number = "NW 7", number = "NW 8", number = "NW 9", number = "NW 93", number = "NW 98", number = "NYO-9083", number = "NYU Report No. DOE/ER/03077-277", number = "Ni-80-03", number = "No. 1008", number = "No. 103B", number = "No. 105", number = "No. 108", number = "No. 1168", number = "No. 139", number = "No. 1428", number = "No. 1469", number = "No. 1470", number = "No. 149", number = "No. 17", number = "No. 171", number = "No. 172", number = "No. 175", number = "No. 176", number = "No. 180", number = "No. 182", number = "No. 210", number = "No. 22", number = "No. 223", number = "No. 237", number = "No. 239", number = "No. 241", number = "No. 242", number = "No. 254", number = "No. 26", number = "No. 265", number = "No. 276", number = "No. 277", number = "No. 279", number = "No. 28", number = "No. 2832", number = "No. 289", number = "No. 2xx", number = "No. 32", number = "No. 45", number = "No. 49", number = "No. 619", number = "No. 67", number = "No. 791", number = "No. 8201", number = "No. 830", number = "No. 86", number = "No. 880", number = "No. 881", number = "No. 89", number = "No. 90-32", number = "No. 91", number = "No. 97", number = "No. CS41", number = "No. G320-3558x", number = "No. UCB/ERL M77/21", number = "No. UCB/ERL M77/23", number = "Nr. 70/17", number = "Nr. 70/8", number = "Number SR-2081, Version 5.0", number = "Numerical Analysis Manuscript 90-10", number = "O-79-1", number = "ORC~87--4", number = "ORNL 6190", number = "ORNL-1574", number = "ORNL-5532", number = "ORNL-5970", number = "ORNL-6150", number = "ORNL-6190", number = "ORNL-6211", number = "ORNL-6335", number = "ORNL-NSF-EATC-7", number = "ORNL/CSD-48", number = "ORNL/CSD-59", number = "ORNL/CSD/TM-265", number = "ORNL/TM 10835", number = "ORNL/TM 11261", number = "ORNL/TM 11373", number = "ORNL/TM 11407", number = "ORNL/TM 12050", number = "ORNL/TM 7051", number = "ORNL/TM-10367", number = "ORNL/TM-10400", number = "ORNL/TM-10581", number = "ORNL/TM-10691", number = "ORNL/TM-10865", number = "ORNL/TM-10866", number = "ORNL/TM-10881", number = "ORNL/TM-10937", number = "ORNL/TM-10938", number = "ORNL/TM-10945", number = "ORNL/TM-11375", number = "ORNL/TM-11655", number = "ORNL/TM-11669", number = "ORNL/TM-11760", number = "ORNL/TM-11826", number = "ORNL/TM-11847", number = "ORNL/TM-12003", number = "ORNL/TM-12006", number = "ORNL/TM-12126", number = "ORNL/TM-12231", number = "ORNL/TM-12318", number = "ORNL/TM-12404", number = "ORNL/TM-12470", number = "ORNL/TM-12680", number = "ORNL/TM-12999", number = "ORNL/TM-8776", number = "OR~3186--90--MS", number = "OSD/FCTC-82/017", number = "OSD/FSTC-82/021 (FCVS 78)", number = "OSU-CISRC-4\slash 87-TR9", number = "OSU-CISRC-7/88-TR22", number = "OSU-CISRC-7/90-TR18", number = "OU-PPI, TR-85-02", number = "OU-PPI-TR-85-05", number = "P-4428", number = "P-72", number = "P-7578", number = "P10-11944", number = "P11-87-19", number = "P11-87-302", number = "P11-87-303", number = "P11-87-452", number = "P11-88-402", number = "P2 - 11589", number = "P2-80-436", number = "P2-86-825", number = "P2-86-848", number = "P2-88-769", number = "P3", number = "PAM-212", number = "PAM-343", number = "PAM-352", number = "PAM-579", number = "PB-251 845", number = "PB-291 725 CER76-77TJ-HJM48", number = "PB-291 762 CER75-76TJ-HJM36", number = "PCS-TR86-134", number = "PDR 3171", number = "PEL 126", number = "PFC/RR-82-4", number = "PN LPS5001", number = "PN LPS5002", number = "PNW GTR-211", number = "PP 93/061", number = "PPR-4-83", number = "PR/PA/92/10", number = "PRG 58", number = "PRG-63", number = "PRG-74", number = "PRG-TR-9-91", number = "PRR 76/17", number = "PRR 77/9", number = "PS-16", number = "PUB-1255", number = "PURE, no. 44", number = "Preprint 690", number = "Preprint MCS-P144-0390", number = "Preprint SC 88-2", number = "Pt 1", number = "Pt 10", number = "Pt 11", number = "Pt 12", number = "Pt 2", number = "Pt 3", number = "Pt 4", number = "Pt 5", number = "Pt 7", number = "Pt 8", number = "Pt 9", number = "QTP-TF-234", number = "QTP.770921.01", number = "QTP.770927.02", number = "QTP.771205.03", number = "QTP.780503.04", number = "QTP.780614.05", number = "QTP.780703.06", number = "QTP.780725.07", number = "QTP.780822.08", number = "QTP.780825.09", number = "R-2572-1-AF", number = "R-73", number = "R-82-139", number = "R-86-1246", number = "R-87-1373", number = "R-Math-01/90 0233-2876", number = "R.10533", number = "R12.1281", number = "R7470", number = "R8730", number = "RADC-TR-82-78", number = "RAL 92-086", number = "RAL 92-087", number = "RAL 93-036", number = "RAL 93-055", number = "RAL 93-064", number = "RAL 93-066", number = "RAL 93-072", number = "RAL 94-019", number = "RAL-92-075", number = "RAL-92-086", number = "RAL-93-064", number = "RAL-93-072", number = "RAL-95-001", number = "RC 10260", number = "RC 10580", number = "RC 11094 (\#49829)", number = "RC 11407", number = "RC 11408 (\#51330)", number = "RC 11506", number = "RC 11676", number = "RC 12150", number = "RC 12327 (\#55257)", number = "RC 12515", number = "RC 12595 (\#56575)", number = "RC 12849", number = "RC 13245 (\#59268)", number = "RC 13844", number = "RC 14160", number = "RC 14211 (\#63576)", number = "RC 15101 (\#67356)", number = "RC 15202(\#67767)", number = "RC 19991 (88480)", number = "RC 20085 (88832)", number = "RC 3259", number = "RC 4608", number = "RC 4962", number = "RC 6203", number = "RC 7681", number = "RC 8348", number = "RC 8425 (\#36568)", number = "RC 8743", number = "RC 9009", number = "RC 9203 (#39787)", number = "RC 9577", number = "RC 9582 (42314)", number = "RC 9789", number = "RC-12686", number = "RC-55", number = "RC-6026", number = "RC-6903", number = "RC-8644", number = "RC11719(52739)", number = "RC12878", number = "RC13429", number = "RC7776", number = "RC~15030~(67093)", number = "RC~15886", number = "RFP-624", number = "RIFIS-TR-CS-105", number = "RIFIS-TR-CS-110", number = "RIFIS-TR-CS-111", number = "RIFIS-TR-CS-117", number = "RIFIS-TR-CS-122", number = "RJ 9925 (87305)", number = "RJ-1218", number = "RJ3441 (40927)", number = "RJ3455 (41061)", number = "RJ3503", number = "RJ~5923", number = "RJ~6327", number = "RJ~6486", number = "RJ~6638~(63949)", number = "RJ~7720~(71585)", number = "RJ~7872~(72532)", number = "RM-4867-PR", number = "RM-5618", number = "RM-5618-PR", number = "RM-6248-PR", number = "RM-86-13", number = "RM-88-17", number = "RMI 87 -- 02", number = "RMI 90--01", number = "RNR-90-022", number = "RNR-91-025", number = "RNR-93-004", number = "RNR-93-008", number = "RNR-94-013", number = "RR 2475", number = "RR No 1200", number = "RR YALEU/DCS/R-766", number = "RR YALEU/DCS/RR-831", number = "RR-520", number = "RR-616", number = "RR-629", number = "RR-91-01", number = "RR-91-11", number = "RR-91-15", number = "RR-92-16", number = "RR-92-48", number = "RR-93-03", number = "RR-93-11", number = "RR-93-33", number = "RR1698", number = "RRR~25--90", number = "RRR~46--89", number = "RRR~67--90", number = "RR~457", number = "RT-BIO (68) 1", number = "RT/APO/94/2", number = "RT/APO/94/4", number = "RZ-166", number = "Rand Publication CP84 (4/83)", number = "Rap. 04.93", number = "Report 91-09", number = "Report A1.1, Alvey Project SE/065", number = "Report A1.2, Alvey Project SE/065", number = "Report ANL-90/3", number = "Res.R. No.R", number = "Research Report RJ 5440.", number = "Research Report YALEU/ DCS/ RR-461", number = "Rice COMP TR476-029-4", number = "Ris{\o}-M-564", number = "Ris{\o}-M-957", number = "S-22", number = "S-22(H)", number = "S1", number = "S2", number = "S544-3421", number = "S701", number = "SAE\slash SP-95\slash 1080", number = "SAND-77-0898", number = "SAND-85-2727", number = "SAND85-2752", number = "SAND89-8691", number = "SAND90-8723", number = "SAND91-8240", number = "SAND92-8548", number = "SARL-2", number = "SC 88-1", number = "SC 88-2", number = "SC 89-4", number = "SC 89-6", number = "SC 90-1", number = "SC 91--3", number = "SDS 90 00 03 C", number = "SEI-93-TR-4", number = "SERC-TR-0-P", number = "SERC-TR-4-P", number = "SERC-TR-41-P", number = "SERC-TR-49-F", number = "SERC-TR-55-P", number = "SERC-TR-9-P", number = "SERC-TR-92-P", number = "SETL Newsletter \#102", number = "SLAC-PUB-1118", number = "SLAC-PUB-1183", number = "SLAC-PUB-1188", number = "SLAC-PUB-2725", number = "SLAC-PUB-795", number = "SLL-73-0225", number = "SM-0017", number = "SOL 77-7 (NTIS AD/A-044 905)", number = "SOL 78-19", number = "SOL 82-10", number = "SOL 82-9", number = "SOL 83-20R", number = "SOL 86-2", number = "SOL 94-4", number = "SOL~85--5", number = "SOL~86--7", number = "SOL~88--10", number = "SOL~88--14", number = "SOL~88--9", number = "SOL~89--6", number = "SOL~90--16", number = "SOL~90--4", number = "SOL~90--6", number = "SOL~90-8", number = "SOL~91--10", number = "SOL~91--2", number = "SOL~91-3", number = "SOL~91-7", number = "SOR~88--3", number = "SOR~88--5", number = "SOR~89--21", number = "SOR~90--03", number = "SOR~90--08", number = "SOR~90--14", number = "SOR~91--18", number = "SOR~91--7", number = "SP43-29", number = "SP85-1/5.1E", number = "SP85-1/5E", number = "SPI//1", number = "SPI//2", number = "SR-0009", number = "SR-2079 5.0", number = "SR-2079 6.0", number = "SR-2079", number = "SR-3071, SR-3072, SR-3073, SR-3074", number = "SR-3071, SR-3072, SR-3074", number = "SR-3772", number = "SRC TR 89-61r1", number = "SRC-TR-94-130", number = "SRI-CSL-90-16", number = "SSL91-16/P91-00143", number = "ST4", number = "STAN CS-TR-2238, UMIACS-TR-89-45", number = "STAN-CS-70-163", number = "STAN-CS-72-270", number = "STAN-CS-73-374", number = "STAN-CS-75-478", number = "STAN-CS-75-496", number = "STAN-CS-75-511", number = "STAN-CS-76-535", number = "STAN-CS-76-548", number = "STAN-CS-76-585", number = "STAN-CS-77-595", number = "STAN-CS-77-602", number = "STAN-CS-77-622", number = "STAN-CS-77-623", number = "STAN-CS-78-648", number = "STAN-CS-78-656", number = "STAN-CS-78-675", number = "STAN-CS-78-684", number = "STAN-CS-78-685", number = "STAN-CS-78-698", number = "STAN-CS-79-713", number = "STAN-CS-79-762", number = "STAN-CS-80-780", number = "STAN-CS-80-787", number = "STAN-CS-80-795", number = "STAN-CS-80-803", number = "STAN-CS-80-817", number = "STAN-CS-80-824", number = "STAN-CS-81-848", number = "STAN-CS-81-886", number = "STAN-CS-82-901", number = "STAN-CS-82-914", number = "STAN-CS-83-965", number = "STAN-CS-83-966", number = "STAN-CS-83-971", number = "STAN-CS-83-974", number = "STAN-CS-83-977", number = "STAN-CS-83-978", number = "STAN-CS-83-980", number = "STAN-CS-83-981", number = "STAN-CS-83-985", number = "STAN-CS-83-987", number = "STAN-CS-84-1013", number = "STAN-CS-84-1027", number = "STAN-CS-85-1074", number = "STAN-CS-86-1095", number = "STAN-CS-86-1097", number = "STAN-CS-88-1223", number = "STAN-CS-89-04, NA-89-04", number = "STAN-CS-89-08, NA-89-08", number = "STAN-CS-89-1251", number = "STAN-CS-TR-2001", number = "STAN-CS-TR-2002", number = "STL-86-13", number = "STL-88-21", number = "STL-89-25", number = "STL-89-26", number = "STP-172-86", number = "Section 914, Internal Computing Memorandum 337", number = "Special Publication 424", number = "Standard 8613", number = "Suppl 1", number = "Supplement", number = "T", number = "T-11", number = "T.P. 322", number = "T62-3", number = "T62-4", number = "TAU 86-04", number = "TBD", number = "TC-NA-94-1", number = "TC-NA-94-2", number = "TC-NA-94-3", number = "TC-NA-94-4", number = "TC-NA-94-5", number = "TC-PC-95-1", number = "TEC 715", number = "TEC 816 Canada", number = "TH.2548-CERN", number = "TIM005", number = "TIM007.A", number = "TIM009.A", number = "TIM010.A", number = "TIM011", number = "TIM012", number = "TIM013", number = "TIM015.A", number = "TIM016.A", number = "TIM017.A", number = "TIM018.A", number = "TIM020", number = "TIM021", number = "TIM022.A", number = "TIM023", number = "TIM024", number = "TIM026", number = "TIM027", number = "TM X-73904", number = "TM-12231", number = "TM-385", number = "TM-73203", number = "TM-78665", number = "TM-78733", number = "TM-78816", number = "TM-81-11271-9", number = "TM-85710", number = "TM-85945", number = "TM-85965", number = "TM-90-04", number = "TM/OA/79-13", number = "TMC-148, PL87-7", number = "TMC-184", number = "TN D-7653", number = "TN D-8372", number = "TN D-8430, D-8431", number = "TN--87--32", number = "TN-109", number = "TN-K/27-70", number = "TN-K\slash 27-70", number = "TN309", number = "TNN--94", number = "TNN-1", number = "TNN-105", number = "TNN-12", number = "TNN-14", number = "TNN-2", number = "TNN-20", number = "TNN-21", number = "TNN-3", number = "TNN-30", number = "TNN-39", number = "TNN-4", number = "TNN-46", number = "TNN-5", number = "TNN-9", number = "TNN-94", number = "TNN-96", number = "TR 1026", number = "TR 1086", number = "TR 1098", number = "TR 1099", number = "TR 1137", number = "TR 394", number = "TR 479", number = "TR 69-31", number = "TR 7", number = "TR 75.91.20", number = "TR 78-352", number = "TR 78-354", number = "TR 79-4", number = "TR 80-423", number = "TR 80-430", number = "TR 80-431", number = "TR 81-454", number = "TR 82-521", number = "TR 83-554", number = "TR 83-565", number = "TR 836", number = "TR 84-603", number = "TR 85-664", number = "TR 85-675", number = "TR 86-789", number = "TR 86.3", number = "TR 869", number = "TR 87-803", number = "TR 87-812", number = "TR 88-30", number = "TR 89-10", number = "TR 89-21", number = "TR 89-9", number = "TR 90-1", number = "TR 90-29", number = "TR 90-34", number = "TR 90-43", number = "TR 90-60r1", number = "TR 90.40", number = "TR 916", number = "TR 92-1280", number = "TR 92-1291", number = "TR 92-23", number = "TR 92-47", number = "TR 92.12", number = "TR 92.13", number = "TR 921", number = "TR 93-1371", number = "TR 93-2", number = "TR 930", number = "TR 96-740", number = "TR 965", number = "TR 996", number = "TR 997", number = "TR AM-87-11", number = "TR CSc-84-15", number = "TR STAN-CS-76-556", number = "TR--87--13", number = "TR--89--01", number = "TR--91--15", number = "TR--91--22", number = "TR--91--26", number = "TR-1648", number = "TR-1859, UMIACS-TR-87-20", number = "TR-2101", number = "TR-219", number = "TR-22-78", number = "TR-2339", number = "TR-24 (Revised \# TR-24R)", number = "TR-2714", number = "TR-3", number = "TR-3064", number = "TR-31", number = "TR-31-81", number = "TR-3133", number = "TR-3145", number = "TR-3238", number = "TR-3263", number = "TR-328", number = "TR-3306", number = "TR-3307", number = "TR-3345", number = "TR-408", number = "TR-456", number = "TR-458", number = "TR-571", number = "TR-683", number = "TR-696", number = "TR-7", number = "TR-708", number = "TR-77-2", number = "TR-82-522", number = "TR-85.2", number = "TR-85.3", number = "TR-87.2", number = "TR-88", number = "TR-88-53", number = "TR-89-9", number = "TR-9", number = "TR-91-023", number = "TR-91-042", number = "TR-91-35", number = "TR-93-040", number = "TR-94-017", number = "TR-CS-82-10", number = "TR-CS-82-11", number = "TR-CS-92-17", number = "TR. UTUDCDS-??", number = "TR.CSG 8", number = "TR/PA/91/63", number = "TR/PA/92/70", number = "TR/PA/92/85", number = "TR/PA/93/05", number = "TR/PA/93/10", number = "TR/PA/93/26", number = "TR/PA/93/27", number = "TR/PA/94/09", number = "TR/PA/95/02", number = "TR/PA/95/05", number = "TR04/92", number = "TR04/93", number = "TR1/92", number = "TR1/94 ATR/7 (NP2680)", number = "TR11/88", number = "TR1143", number = "TR19/93", number = "TR2/92", number = "TR2/93 (ATR/6) (NP2556)", number = "TR26-92", number = "TR3/92 (ATR/1) (NP2490)", number = "TR32/89", number = "TR4/92 (ATR/2) (NP2491)", number = "TR5/92 (ATR/3) (NP2492)", number = "TR6/90", number = "TR6/92 (ATR/4) (NP2493)", number = "TR7/92 (ATR/5) (NP2522)", number = "TR77-5", number = "TR8/90", number = "TR839", number = "TR84-1", number = "TR86-38", number = "TR86-7", number = "TR89/10", number = "TR90-54", number = "TR91/7", number = "TR91121", number = "TR92-17", number = "TR92-9", number = "TR93-01", number = "TR93-08", number = "TR93-09", number = "TR93-10", number = "TR93-45", number = "TR94--34", number = "TR94-13", number = "TRCS 91-15", number = "TRCS85-09", number = "TRCS88-27", number = "TRI-PP-83-95", number = "TRITA-MEK-76-02", number = "TRITA-MEK-76-03", number = "TRITA-NA-8311", number = "TRR-514", number = "TR~87--7", number = "TR~90--06", number = "TR~90--16R1", number = "TR~90--40", number = "TR~90--6", number = "TR~90--9", number = "TR~91--10", number = "TUM-I9120", number = "TUM-ISU-7830", number = "Technical report ITPR-95022", number = "Technion-PH-76-25", number = "Technion-PH-77-36", number = "UBLCS", number = "UBLCS-6", number = "UBLCS-7", number = "UBLCS-94-14", number = "UBLCS-94-5", number = "UCB/CSD 88/469", number = "UCB/CSD 94/802 4004667978", number = "UCB/CSD 94/805", number = "UCB/CSD 95-870", number = "UCB/CSD-92-703", number = "UCB/CSD-94-793", number = "UCB/CSD-94-???", number = "UCB/ERL 84/5", number = "UCB/ERL M77/21", number = "UCB/ERL~M85/61", number = "UCID-17515", number = "UCID-18549", number = "UCID-18619", number = "UCID-20167", number = "UCID-21482", number = "UCID-30175", number = "UCLA/84/TEP/19", number = "UCP-19", number = "UCP-32", number = "UCP-33", number = "UCRL 85752", number = "UCRL 89913. CONF-831247--1", number = "UCRL-500021-81", number = "UCRL-51186, Rev. 1", number = "UCRL-53401", number = "UCRL-76993, Rev. 1", number = "UCRL-78652", number = "UCRL-88710", number = "UCRL-91734", number = "UCRL-92077-II", number = "UCRL-93792", number = "UCRL-94464", number = "UCRL-95055", number = "UCRL-95278", number = "UCRL-95669", number = "UCRL-96034", number = "UCRL-97580", number = "UCRL-98508", number = "UIB-11", number = "UILU-ENG-85-1727", number = "UIUCDCS-R-71-488", number = "UIUCDCS-R-72-493", number = "UIUCDCS-R-76-787", number = "UIUCDCS-R-77, 883", number = "UIUCDCS-R-85-1129", number = "UIUCDCS-R-85-1201", number = "UIUCDCS-R-85-1203", number = "UIUCDCS-R-86-1229", number = "UMCS-90-9-1", number = "UMCS-93-7-1", number = "UMIACS-TR-89-11, CS-TR-2189, SRC-TR-89-13", number = "UMINF 125.85", number = "UMINF 92.11", number = "UMINF 93.23", number = "UMINF 94.03", number = "UMINF 94.04", number = "UMINF-132.86", number = "UMINF-136.87", number = "UMINF-154.88", number = "UMINF-155.88", number = "UMINF-58.77", number = "UMINF-91.29", number = "UMSI 86145", number = "UMSI 93-234", number = "UMSI 94-101", number = "UMSI 94-29", number = "UMSI 94-90", number = "UMSI-93/131", number = "UNIC-92-03", number = "UNIC-93-09", number = "UNIGRAZ-UTP 08/79", number = "URI-037", number = "URI-044", number = "USAS X3.9-1966", number = "USCG Op. Note No. 40", number = "USERDA/EY-76-S-02-2895*000/Tr/76/6", number = "USGS-GD-73-030", number = "USI-28", number = "USI-31", number = "USI-44", number = "USI-7", number = "USNRDL-TR-67-7, AD649288", number = "UUCS-79-108", number = "UUCS-91-017", number = "UUICDCS-R-89-1539 and UILU-ENG-89-1758", number = "UWE and CE-92-02", number = "UWFDM-658", number = "V", number = "VLSI-82-22", number = "Version 1.1", number = "Version 3.20", number = "WCAP-8261 Revision 1", number = "WSDG-AD-00002", number = "WSU-CS-77-02", number = "WSU-CS-90-01", number = "WSU-CS-90-08", number = "WSU-CS-90-10", number = "WSU-CS-91-02", number = "WUCS91-08", number = "Working Paper 851", number = "X-1707", number = "X-3286", number = "X-62282", number = "X-70477", number = "XNSS 288811", number = "YALEU DCS RR-339", number = "YALEU DCS RR-389", number = "YALEU DCS RR-428", number = "YALEU DCS RR-532", number = "YALEU DCS RR-569", number = "YALEU/ DCS/ RR- Draft", number = "YALEU/ DCS/ RR-463", number = "YALEU/DCS/RR-276", number = "YALEU/DCS/RR-292", number = "YALEU/DCS/RR-299", number = "YALEU/DCS/RR-339", number = "YALEU/DCS/RR-347", number = "YALEU/DCS/RR-363", number = "YALEU/DCS/RR-367", number = "YALEU/DCS/RR-368", number = "YALEU/DCS/RR-373", number = "YALEU/DCS/RR-381", number = "YALEU/DCS/RR-389", number = "YALEU/DCS/RR-397", number = "YALEU/DCS/RR-428", number = "YALEU/DCS/RR-443", number = "YALEU/DCS/RR-444", number = "YALEU/DCS/RR-458", number = "YALEU/DCS/RR-461", number = "YALEU/DCS/RR-462", number = "YALEU/DCS/RR-537", number = "YALEU/DCS/RR-539", number = "YALEU/DCS/RR-540", number = "YALEU/DCS/RR-542", number = "YALEU/DCS/RR-543", number = "YALEU/DCS/RR-544", number = "YALEU/DCS/RR-548", number = "YALEU/DCS/RR-552", number = "YALEU/DCS/RR-553", number = "YALEU/DCS/RR-554", number = "YALEU/DCS/RR-570", number = "YALEU/DCS/RR-594", number = "YALEU/DCS/RR-726", number = "YALEU/DCS/RR-880", number = "YALEU/DCS/RR-934", number = "YALEU/DCS/RR-942", number = "YALEU/DCS/TR-532", number = "\# 1030", number = "\# 947", number = "\# 963", number = "\#167-O-310789", number = "\#180-O-170591", number = "\#191-O-191291", number = "\#20", number = "\#26", number = "\#59", number = "\#961", number = "\#985", number = "liens-94-18", number = "pt.1", number = "pt.A", number = "special issue", number = "suppl. 2", number = "suppl. issue", number = "vol 12 pp 7.1-7.19", number = "vol. 7", number = "vyp. 90", number = "{/DCS/RR-409}", number = "{/DCS/RR-414}", number = "{/DCS/RR-534}", number = "{AM}--87--13", number = "{AM}--88--09", number = "{CS}980", number = "{ICE-VS}06", number = "{NRL} Report 8179", number = "{SACLANTCEN} {CP}-19", number = "{SACLANTCEN} {SM}-72", number = "{STAN-CS-79-714}", number = "{STAN-CS-88-1223}", number = "{STAN-CS-89-1256}", number = "{TR SRI-CSL-91-05}", number = "{TR90-141}", pages = "1--26", pages = "1--27 (or 3--28??)", pages = "1--28 (or 1--18??)", pages = "1--??", pages = "1-70", pages = "1.0--3.0", pages = "1.1--1.27", pages = "1.2/1--8", pages = "1.3/1--6", pages = "1.4/1--7", pages = "1.42--1.54", pages = "1.5/1--3", pages = "1/1--1/5", pages = "10 + 622", pages = "10 + [16]", pages = "10 + [2]", pages = "10 + [9]", pages = "10 -- 11", pages = "10 -- 15", pages = "10 computer disks guide + 2 templates.", pages = "10 videocassettes (ca. 253 min.), guide (vii + 104)", pages = "10, 11, 19", pages = "10, 12", pages = "10,560--10,574", pages = "10--??", pages = "10.1--10.29", pages = "10/1--2", pages = "10/1--25", pages = "100 -- 104", pages = "100--122 (of vi + 335)", pages = "100--??", pages = "1001--??", pages = "1003--??", pages = "101 + [43]", pages = "101 -- 110", pages = "101--113 (or 51--60??)", pages = "103 -- 123", pages = "103, 117", pages = "104 -- 126", pages = "104 -- 133", pages = "104--116 (of xii + 199)", pages = "105--127 (of x + 552)", pages = "1059 -- 1072", pages = "106--108", pages = "1065--1067 (vol. 2)", pages = "107.", pages = "1075--1095 vol.2", pages = "108 -- 111", pages = "108 -- 128", pages = "108--110, 112--115", pages = "1091 -- 1103", pages = "1099 -- 1114", pages = "11 + 13", pages = "11 + [12]", pages = "11 + [3]", pages = "11 + [5]", pages = "11 + [6]", pages = "11 -- 59", pages = "11--14, 109--112", pages = "11.1--11.27", pages = "11/1--11/4", pages = "11/1--3", pages = "11/1--8", pages = "110 + [4]", pages = "111 -- 113, 106", pages = "111--123, 131", pages = "1112 -- 1120", pages = "112 + I20", pages = "112--1--112--15", pages = "114 -- 144", pages = "1144 -- 1156", pages = "115 + 5 + 3", pages = "115 -- 133", pages = "115 -- 137", pages = "115--120, 122", pages = "1152 columns", pages = "118--120, 136", pages = "119--129, 132", pages = "119.", pages = "1193--1198 (vol. 2)", pages = "11P", pages = "12 + [14]", pages = "12 + [6] + A--18", pages = "12 computer disks", pages = "12 program files + 1 text file (MS--DOS + IBM--PC)", pages = "12+", pages = "12--18, 81", pages = "12.1--12.15", pages = "120 -- 131", pages = "121 -- 139", pages = "121--122, 124, 126--127, 130, 132", pages = "122, 101", pages = "122, 98", pages = "122--123, 106", pages = "1227 -- 1240", pages = "123--124, 126, 128", pages = "123--131 (or 122--129??)", pages = "1233--1236 (vol. 3)", pages = "1233--1236 vol.3", pages = "1247-", pages = "126 + [4]", pages = "127 -- 148", pages = "127--134 (of xiv + 517)", pages = "127-130", pages = "1279 -- 1292", pages = "129--130, 132--134, 136", pages = "129--135 (or 129--136??)", pages = "129--138 (vol. 1)", pages = "13 + 36 + [2]", pages = "13 + A1--11 + B1--6 + C1--10 + D1--8 + E1--5", pages = "13 + A13", pages = "13 computer disks guide + codeview and utilities", pages = "13 computer disks guide.", pages = "13--14, 16", pages = "13.", pages = "13.1--13.16", pages = "1306 -- 1309", pages = "131 + [1]", pages = "131--142 (of ix + 394)", pages = "1311 -- 1328", pages = "1329 -- 1347", pages = "1332-1350", pages = "134 pp", pages = "1347 -- 1362", pages = "135 -- 148", pages = "136 + 5", pages = "136 -- 140", pages = "137 + [1]", pages = "137 +", pages = "138, 119", pages = "138, 121", pages = "138.", pages = "139--148 (or 139--147??)", pages = "139--161 (or 138--151??)", pages = "14 + 12", pages = "14 + 2.5", pages = "14 + 573", pages = "14 + [13]", pages = "14 + [24]", pages = "14 + [3] (env. 918 p.)", pages = "14 -- 17", pages = "14 program files (IBM PC) on 2 computer disks", pages = "14, 82--85", pages = "14.1--14.15", pages = "14.1.1--14.1.4", pages = "14/1/1--6", pages = "14/3/1--8", pages = "14/4/1--6", pages = "14/5/1--8", pages = "140--152 (or 148--160??)", pages = "141 -- 156", pages = "141--148 (of xix + 453)", pages = "142 -- 169", pages = "143--154 (of ix + 394)", pages = "144--148, 150, 152, 154, 156, 158, 160--161", pages = "146 -- 160", pages = "147---156", pages = "147--156, 157--168", pages = "148--154, 156, 158, 160, 162, 164", pages = "149 -- 158", pages = "15 + 8", pages = "15 + [1]", pages = "15--18, 22--23", pages = "15--21, 110", pages = "15.1--15.24", pages = "15.1/1--4", pages = "15.2/1--4", pages = "15/1/1--4", pages = "150 -- 165", pages = "150 l.", pages = "1509--1514 vol.2", pages = "152 -- 179", pages = "152--160, 300--301", pages = "152--164, 166", pages = "155 -- 189", pages = "155--156, 158", pages = "1550 -- 1560", pages = "1587, with 31 illustrations", pages = "159 ff.", pages = "16 + 10", pages = "16 + [8]", pages = "16--17, 44", pages = "16--18, 20, 22", pages = "16.1--16.22", pages = "16/1/1--3", pages = "16/2/1--7", pages = "16/3/1--3", pages = "16/5/1--10", pages = "160F--??", pages = "161 -- 184", pages = "162--172, 174", pages = "163 -- 170", pages = "1647-1652", pages = "165 -- 170", pages = "165--170, 499--511", pages = "166 + 61", pages = "166 columns.", pages = "166--1f", pages = "168--173, 175--176, 178--181", pages = "169 -- 176", pages = "169-", pages = "17 -- 24", pages = "17 -- 41", pages = "17 v. in 1", pages = "17--25 (discussion 27--28)", pages = "17.", pages = "170--181 (of xi + 528)", pages = "171 -- 179", pages = "171 -- 187", pages = "172 pages.", pages = "172--173, 175", pages = "172--176, 178, 180--182, 184, 186--187, 192--197, pages = "173 + 11 + 3", pages = "173 -- 177", pages = "173--174, 191--192", pages = "173--176 (vol. 1)", pages = "174, 176", pages = "175--178 (Vol. 1)", pages = "175--208 (or 175--207??)", pages = "176, 196--206", pages = "177 -- 184", pages = "177 -- 197", pages = "177 -- 209", pages = "177--184 (or 171--176??)", pages = "1784--1791 vol.4", pages = "179 -- 200", pages = "179--194 and 315--326", pages = "1792--1795 vol.4", pages = "1796--1799 vol.4", pages = "18 + [18]", pages = "18 + [21]", pages = "18 + [33]", pages = "18 + [58]", pages = "18 -- 24", pages = "18--20, 22, 24, 26, 91", pages = "18.", pages = "18/0/1--5", pages = "18/1/1--12", pages = "18/2/1--5", pages = "18/3/1--6", pages = "18/4/1--8", pages = "180.", pages = "1800--1803 vol.4", pages = "181 -- 191", pages = "181 -- 198", pages = "181--182, 184", pages = "181-197", pages = "184 (Macintosh), 192 (Windows)", pages = "187 -- 196", pages = "187 -- 209", pages = "187 -- 217", pages = "1876--1881 (vol. 3)", pages = "188--200 (or 201??)", pages = "19 + 4 + 1", pages = "19 -- 46", pages = "19 program files on 2 computer disks 1 user's guide", pages = "19+117", pages = "19--27 (of xviii + 1621)", pages = "190, 192", pages = "191--197 vol.1", pages = "193--194, 196", pages = "193--206 (of ix + 453)", pages = "193--6, 198", pages = "194, 196", pages = "194--196, 198, 200, 202--203, 205--206, 208, 210", pages = "195 -- 204", pages = "197 + [1]", pages = "2 + 2 + 335", pages = "2 + 2 + 354", pages = "2 + 216", pages = "2 + 4 (C source code)", pages = "2 + 475", pages = "2 + 7 + 227", pages = "2 + [6].", pages = "2 + xi + 237", pages = "2 -- 9", pages = "2 computer disks", pages = "2 microfiches (125 fr.)", pages = "2 microfiches (134 fr.)", pages = "2 microfiches (138 fr.)", pages = "2 microfiches", pages = "2 program files (FORTRAN + IBM PC) on 1 computer disk", pages = "2 pts. in 1", pages = "2 v", pages = "2 v.", pages = "2--18--2--15", pages = "2.1--2.13", pages = "2/1--3", pages = "20 -- 21 \& 8 ff.", pages = "20 transparencies. color. 10 x 12 in.", pages = "20 transparencies. color. 10x12 in.", pages = "20 videocassettes (VHS) (30 min. ea.) + book.", pages = "20, 22, 24--25", pages = "20--22 (or 20--23??)", pages = "20.21--20.25", pages = "2002 +", pages = "201--202, 204--208", pages = "201--206 (or 201--207??)", pages = "203 -- 229", pages = "2038 -- 2050", pages = "204 -- 217", pages = "204--206, 209--210, 212, 215--216, 218--221", pages = "205 + [3] ", pages = "205 -- 215", pages = "205 -- 240", pages = "2063 -- 2068", pages = "207--220, 71--78", pages = "208.", pages = "209--221 (or 209--222??)", pages = "21 + 133 + 87", pages = "21--2--21--13", pages = "211 -- 213", pages = "211 -- 227", pages = "213 +", pages = "213 -- 216", pages = "213--216??", pages = "213--243, esp.~219--224", pages = "215 -- 224", pages = "216--220, 222, 224--226, 228, 230, 232--234", pages = "217--250, 276--300, 372--389", pages = "218 -- 240", pages = "219--239 (of xii + 394)", pages = "22 + 3", pages = "22 + 331 (Chapter 1), 8 + 373 (Chapter 2)", pages = "22 cassettes. 2--track. mono.", pages = "221--222, 224, 226", pages = "221--224 (vol. 1)", pages = "221--231 (or 221--232??)", pages = "222--225, 227--235", pages = "223 + [8]", pages = "223 -- 227", pages = "223 -- 252", pages = "224 + [1]", pages = "224A--??", pages = "227 -- 234", pages = "228 -- 236", pages = "228ff", pages = "22:00--35:28", pages = "23 + iii", pages = "23 -- 27", pages = "231 -- 232", pages = "231 -- 240", pages = "231 -- 264", pages = "232-236", pages = "233--242 (of xix + 453)", pages = "235--255 (of ix + 403)", pages = "236--238, 240", pages = "237 + 15 + 18.", pages = "237--253 (of xvii + 529)", pages = "237-256", pages = "238 -- 251", pages = "239 + [2]", pages = "239 -- 259", pages = "239, 240", pages = "239--242, 144", pages = "24 + 27", pages = "24 + [12]", pages = "24 -- 30", pages = "24--85 (or 42??)", pages = "24-30", pages = "240 -- 250", pages = "240, 303", pages = "241--242 (?? check ??) or 696--698", pages = "241--244, 246--247", pages = "241-246", pages = "241-250", pages = "241-264", pages = "243 + 12 + 10 + 6", pages = "243 -- 248", pages = "243 -- 268", pages = "244-244", pages = "245 -- 255", pages = "246--260 (or 246--259??)", pages = "246-250", pages = "247--250 vol.1", pages = "247-254", pages = "249 -- 259", pages = "249--252, 254, 256", pages = "25--28, 30--32, 34, 36, 38--39", pages = "250 +", pages = "250--255 (of xii + 423)", pages = "254 + [2]", pages = "255 -- 286", pages = "257--258, 260", pages = "257--258, 260, 262", pages = "257--284 (of x + 338)", pages = "258--287 (of viii + 655)", pages = "259 -- 271", pages = "26 + 19", pages = "26 + 324 + 8", pages = "26 -- 43", pages = "260--274 (or 260--273??)", pages = "261 +", pages = "263, 267", pages = "265--266, 268", pages = "265--271, 332--345", pages = "265--272, 332--345", pages = "265--273, 341", pages = "267--283 (or 268--283??)", pages = "268 + 106", pages = "268--270 (or 268--274??)", pages = "268--274 (or 268--270??)", pages = "269--288 (of ix + 453)", pages = "27--30, 32, 34, 36", pages = "273--314 (of ix + 388)", pages = "274 pp", pages = "275 +", pages = "275 -- 282", pages = "275 -- 297", pages = "276--280, 282, 284--285, 289--291, 293, 295, 299, pages = "277 +", pages = "279--289 (vol. 2)", pages = "279--290 (or 279--298??)", pages = "2794 -- 2802", pages = "27:1--27:10", pages = "27P-28P", pages = "28 -- 41", pages = "28, 29, 285", pages = "28, 30, 32, 34, 36, 38, 91--92", pages = "28, 30, 32, 34, 84, 86--87", pages = "28, 30--31", pages = "28--35 (or 28--34??)", pages = "280 -- 294", pages = "2803 -- 2812", pages = "281 -- 294", pages = "282 -- 292", pages = "283 +", pages = "286 -- 300", pages = "286--2xx", pages = "287 -- 295", pages = "287 -- 301", pages = "287--290??", pages = "29 + 5 + 7 + 9 + 6", pages = "29 -- 42", pages = "29, 32--38", pages = "29--37 (of xix + 685)", pages = "29--49 (of xi + 425)", pages = "29--82 (of x + 415)", pages = "29.", pages = "291 -- 309", pages = "292--296 (of xi + 437)", pages = "293--312 (or 293--311??)", pages = "295--296, 298", pages = "297-", pages = "2P-3P", pages = "2c6.1--??", pages = "2c6.9--??", pages = "3 + 6", pages = "3 + 810 + 15", pages = "3 + [11]", pages = "3 + [16] + [1]", pages = "3 books + 4 diskettes + 1 booklet.", pages = "3 computer disks", pages = "3 microfiches (221 im.)", pages = "3 microfiches.", pages = "3 pts.", pages = "3 v. in 1", pages = "3 v.", pages = "3+", pages = "3, 18", pages = "3, 20", pages = "3--", pages = "3--27 (or 3--28??)", pages = "3.1--3.10", pages = "3.1--3.13", pages = "3.4.1--3.4.4", pages = "3/206", pages = "3/308", pages = "30, 32--33", pages = "30.3/1--4", pages = "300 -- 308", pages = "301 -- 320", pages = "301 -- 331", pages = "301--321 (or 301--324??)", pages = "301.", pages = "303--304??", pages = "303--?", pages = "305 -- 316", pages = "307, 307", pages = "309 -- 318", pages = "309 -- 322", pages = "309--323 (of viii + 426)", pages = "309--328 (or 300--328??)", pages = "309--376 (of xv + 608)", pages = "31--45 (of 255)", pages = "310--", pages = "313.", pages = "315 -- 327", pages = "315 -- 333", pages = "315--340 (or 315--339 ?? or 315--349 ??)", pages = "317 -- 318, 503", pages = "317 -- 330", pages = "317--318, 503", pages = "317--365, 1870", pages = "319--326 (or 318--326??)", pages = "32 + 36", pages = "32 + A1--A4", pages = "32 -- 45", pages = "32, 34, 38--39, 101", pages = "32--48, 96--100", pages = "32.", pages = "325--330 (of xiii + 426)", pages = "327 (without CD--ROM), 388 (with CD--ROM)", pages = "327 -- 329", pages = "327 -- 340", pages = "328-335", pages = "329 -- 345", pages = "33 + 26", pages = "33 + [9]", pages = "33 -- 41", pages = "33 slides (in carousel slide tray) col. 2 x 2 in.", pages = "33--43, 45", pages = "330 -- 340", pages = "330 -- 345", pages = "333 -- 365", pages = "337 -- 338", pages = "337 -- 340", pages = "337--357, 458--474", pages = "338 -- 346, 250 -- 252, 97", pages = "339--352 (of xvii + 559)", pages = "34 + 16 + 15", pages = "34 + 25", pages = "34 slides (in carousel slide tray) col. 2 x 2 in.", pages = "341 -- 348", pages = "343--348 (or 343--347??)", pages = "347--363 (or 347--364??)", pages = "349--385 and 435--471", pages = "35 + 14", pages = "35 + [80]", pages = "35--62 (of xiv + 644)", pages = "35/1/1--13", pages = "35/2/1--6", pages = "35/4/1--5", pages = "350-353", pages = "354-", pages = "355 -- 358", pages = "357--428 (of ix + 523)", pages = "359, with 9 illustrations", pages = "36 + [4]", pages = "36 microfiche.", pages = "36 slides (in carousel slide tray) col. 2 x 2 in.", pages = "36, 38, 40, 42, 86, 88--89", pages = "36--38, 40, 42--44, 46--47, 50--51", pages = "361, 365", pages = "361--364, 366, 368", pages = "363--366 (of xviii + 654)", pages = "363--394 (??)", pages = "363--8, 370, 372, 374, 376", pages = "364 +", pages = "365 -- 392", pages = "365--375 (or 365--381??)", pages = "369 -- 383", pages = "369--374 (??)", pages = "37 + [31]", pages = "373--377, 385", pages = "375 -- 412", pages = "375--378 (vol. 1)", pages = "375--386, discussion 386--388", pages = "38--42, 44--46, 48--51", pages = "38--45, 77", pages = "381--385, 387", pages = "382 -- 384", pages = "385,386,388,390,392,395", pages = "38a + 1559", pages = "39 + [14]", pages = "39--45, 48--52", pages = "39--84 (of xiii + 444)", pages = "391-", pages = "391--394 (plus microfiche listing)", pages = "395 -- 412", pages = "4 + 2 + 8", pages = "4 + 366", pages = "4 + 5", pages = "4 + [13]", pages = "4 + [2] + 8", pages = "4 + [3]", pages = "4 + [5]", pages = "4 + iv + 216", pages = "4 cassettes + 240 min.", pages = "4 computer disks", pages = "4 program files (IBM--PC) on 3 computer disks", pages = "4 v. in 1", pages = "4 v.", pages = "4.1--4.12", pages = "4.1--4.21", pages = "4/1--6", pages = "4/1--8", pages = "40 +", pages = "40--42, 44--49", pages = "404-408", pages = "4053 -- 4062", pages = "407--422 (of x + 668)", pages = "408 -- 414", pages = "41 + x", pages = "41 -- 72", pages = "41--54 (or 41--47??)", pages = "413--440 (or 413--439??)", pages = "415--440, 517--523", pages = "417--429 (vol. 1)", pages = "418 -- 450", pages = "419-429", pages = "41P", pages = "42 + 8.", pages = "42--46, 54, 57--79", pages = "421--430 (or 421--431??)", pages = "424--436 (or 424--431??)", pages = "425--?", pages = "425ff", pages = "426 +", pages = "428--434 (of xix + 453)", pages = "43, 126", pages = "431 +", pages = "433ff", pages = "434--443 vol.2", pages = "44 + [1]", pages = "44--45, 285", pages = "441 ff.", pages = "445-507", pages = "449--461 vol.2", pages = "45, 116", pages = "450 vol.1", pages = "450--453 (plus microfiche supplement)", pages = "46, 79, 82", pages = "46--47, 286", pages = "463 -- 464", pages = "465 -- 471", pages = "466 + [14]", pages = "467--474 (vol. 1)", pages = "47 -- 66", pages = "473 +", pages = "476 + 88", pages = "479--514 (of 514)", pages = "48 + [2]", pages = "48--49, 287", pages = "48/1/1--8", pages = "48/5/1--7", pages = "481 +", pages = "484--488 vol.1", pages = "486 -- 487", pages = "49 -- 67", pages = "493--1099 + xviii + xvi + xviii", pages = "494, with subject index, author index, and glossary", pages = "5 + 86 [i.e. 89] + 5", pages = "5 + [3]", pages = "5 + [4] + 24", pages = "5 + [4]", pages = "5 + [6] + [1] + [4] + [1]", pages = "5 cubic ft. + 10 panels + and 1 videotape.", pages = "5 v. in 1", pages = "5 v.", pages = "5--9, 36", pages = "5.1--5.29", pages = "5/1--3", pages = "5/1--5/4", pages = "50 + [28]", pages = "50--51, 288", pages = "50--56, 58", pages = "50.", pages = "501--504 vol.2", pages = "503 -- 524", pages = "509--519 (or 509--520??)", pages = "51 + 38", pages = "51 + A--2 + 12", pages = "51 + [78]", pages = "51 -- 89", pages = "51--52, 54, 55", pages = "512 -- 521", pages = "515 +", pages = "519 -- 554", pages = "52, 54--56", pages = "52, 55--56, 58, 90", pages = "52--53, 289", pages = "52--53, 56--58", pages = "53 + [1]", pages = "53 -- 65", pages = "53--142 (of xi + 499)", pages = "53--147 (of ix + 332)", pages = "531 -- 549", pages = "534 -- 544", pages = "535 + 16", pages = "536 -- 539", pages = "54 -- 99", pages = "54--55, 290", pages = "541--555 (of xiv + 644)", pages = "544, with 22 illustrations", pages = "55 + [28]", pages = "55 -- 73", pages = "55, 57, 59", pages = "55, 57--63", pages = "55--62, 64--70", pages = "551 -- 560", pages = "552 -- 563", pages = "556 (v. 1), 1056 (v. 2)", pages = "557--558, 578", pages = "557--558, 594", pages = "56 + 39", pages = "56, 58, 60--61, 101--102", pages = "560 -- 566", pages = "566 o.", pages = "57--58, 61--68, 70--71", pages = "57-63", pages = "570--598 vol.1", pages = "572--578, 585", pages = "576--580 and 583", pages = "58 + [35]", pages = "58, 60, 62, 96, 98, 99", pages = "58--78 (of 196)", pages = "581 -- 595", pages = "59 + 15", pages = "59, 61", pages = "59, 62--64", pages = "59--60, 63--64", pages = "593 -- 608", pages = "598--603, 643", pages = "6 + 379", pages = "6 + A2", pages = "6 + [2]", pages = "6 + [3]", pages = "6 + [6]", pages = "6 cartridges", pages = "6 computer disks guide.", pages = "6 motion pictures. sd. color. super 8 mm.", pages = "6 sound cassettes kit + program coding forms.", pages = "6 v. in 1", pages = "6, 22", pages = "6.", pages = "6.1--6.23", pages = "6/1--6/3", pages = "6/2/1--7", pages = "60--1--??", pages = "60.", pages = "604 -- 621", pages = "604--609 (vol. 2)", pages = "61 -- 94", pages = "619--621 vol.2", pages = "62 + 70", pages = "628-666", pages = "63 + 45", pages = "63 + [51]", pages = "63 -- 94", pages = "63--66, 69--72, 77--78, 80", pages = "64, 69--70", pages = "64--1--??", pages = "641--650 vol.1", pages = "644-653", pages = "645 -- 677", pages = "646--649 (vol. 2)", pages = "649 \& 703", pages = "649, 703", pages = "64NA4--??", pages = "65 -- 88", pages = "65--66, 68--69", pages = "65--68 (or 65--67??)", pages = "653 -- 660", pages = "654--662 (or 654--660??)", pages = "657--658 (vol. 1)", pages = "65H--??", pages = "66 + 12", pages = "66--76, 130--139, 187--196, 246--261", pages = "66--99 (of vi + 335)", pages = "668 -- 675", pages = "67--68, 70", pages = "67--68, 70, 72, 74--77, 79", pages = "67--70, 72, 74, 77--78, 80--81", pages = "67--71, 115--116", pages = "68--80, 98--102", pages = "69 -- 100", pages = "69 -- 88", pages = "691 -- 699", pages = "694 -- 695", pages = "7 + 4 + 12 + 25 + [5]", pages = "7 + 573", pages = "7 + 9 (C source code)", pages = "7 + [24]", pages = "7 + [2]", pages = "7 + [7]", pages = "7 -- 9", pages = "7 computer disks", pages = "7 fasc.", pages = "7 v. in 1", pages = "7 v.in 1", pages = "7, 8, 10, 12, 13, 16", pages = "7.", pages = "7.1--7.18", pages = "7/2/1--5", pages = "7/3/1--9", pages = "7/4/1--3", pages = "70 microfiches", pages = "701 -- 721", pages = "71 -- 95", pages = "71.", pages = "714-736", pages = "718 + 95 + 16", pages = "72 + [6]", pages = "72, 74, 76, 78", pages = "72, 74--75, 86--87", pages = "723--762 (of xix + 762)", pages = "727--?? (or 158--??)", pages = "72IS/11--12", pages = "73 -- 78", pages = "73 -- 90", pages = "73, 210", pages = "73--75, 78, 80--85 and 1", pages = "730--734 vol.2", pages = "731--740, 798", pages = "738 -- 741", pages = "74 -- 86", pages = "742--749, 774", pages = "745 -- 755", pages = "74S--74S", pages = "75--78, 80--82, 84", pages = "75-89", pages = "754--760 (vol. 1)", pages = "76 + 6 + 3", pages = "76--78, 180--188", pages = "762 -- 777", pages = "77 -- 84", pages = "77--78, 80", pages = "773 -- 782", pages = "78 + A34", pages = "78 + [26]", pages = "78 + [2]", pages = "79 + [76]", pages = "793--799, 803", pages = "797 -- 806", pages = "799 -- 806", pages = "8 + 1", pages = "8 + 196", pages = "8 + 223", pages = "8 + 24 + 20", pages = "8 + 4", pages = "8 + A--33", pages = "8 + [10]", pages = "8 + [15]", pages = "8 computer disks", pages = "8 microfiche.", pages = "8 sound cassettes", pages = "8 sound tape reels (354 min.)", pages = "8 videocassettes (ca. 45 min. ea.)", pages = "8, 10--13", pages = "8--9, 11", pages = "8.1--8.24", pages = "80--83, 362", pages = "807 -- 815", pages = "81 -- 95", pages = "81.", pages = "820--835 (or 820--834??)", pages = "820--835 (or 836--855??)", pages = "821 -- 833", pages = "83 -- 108", pages = "831 -- 847", pages = "84 -- 117", pages = "84, 86--89, 96--97", pages = "85 (or 86??)", pages = "85 -- 94", pages = "85--98 (or 85--97??)", pages = "852--873 (or 852--872??)", pages = "86--100 (or 99??)", pages = "86--88, 90, 92, 94, 97", pages = "87 -- 96", pages = "87--98 (or 87--97??)", pages = "88 -- 95", pages = "88--111 (of xii + 404)", pages = "880--884 vol.2", pages = "885--888 (or 887?)", pages = "89--113 (or 89--114??)", pages = "890--897 vol.2", pages = "891--905 (or 903??)", pages = "896--910 (or 896--911??)", pages = "898--902 (vol. 2)", pages = "898--902 vol.2", pages = "8f--??", pages = "9 + 10 + 37", pages = "9 + [15]", pages = "9 + [16]", pages = "9 + [20] + [1]", pages = "9.", pages = "9.1--9.25", pages = "9/1--7", pages = "90 + [1]", pages = "90--99 (or 90--98??)", pages = "91 + 5", pages = "91 +", pages = "91--103 (of ix + 394)", pages = "91--128 (of viii + 248)", pages = "91--98 (of xiii + 623)", pages = "92--105 (or 92--104??)", pages = "93 +", pages = "93--103, 108--110", pages = "94 -- 99", pages = "94--104, 74--93", pages = "95 + 16", pages = "951--963 (vol. 2)", pages = "961 +", pages = "96A--??", pages = "96D--??", pages = "96NA1--??", pages = "97 -- 110", pages = "97--108 (or 97--107??)", pages = "97--123.", pages = "97--99 (or 87--99??)", pages = "98-101", pages = "984--1004, esp.\ 1001--1002", pages = "99 + 8", pages = "99 -- 115", pages = "99--102, 117", pages = "996--1003 (vol. 2)", pages = "?", pages = "??", pages = "??--?? (of 178)", pages = "??--?? (of 514)", pages = "??--?? (of vi + 335)", pages = "??--?? (of xi + 468)", pages = "??--?? (of xiv + 644)", pages = "??--?? (of xv + 1243)", pages = "??--?? (of xvi + 694)", pages = "??--?? (of xviii + 654)", pages = "??--?? (of xxii + 484)", pages = "??--??", pages = "???", pages = "???--122", pages = "????", pages = "????--????", pages = "A--i--A--x, A--1--A--71", pages = "A-1--A-66", pages = "A14", pages = "A14--1--A14--51 + A15--1--A15--6", pages = "A25", pages = "ALL", pages = "AP-14", pages = "AP-15--AP-16", pages = "Appendix A", pages = "Approx 670", pages = "B 6 + II--4", pages = "B--i--B--iii, B--1--B--15", pages = "B121", pages = "B149", pages = "B721-B729", pages = "B97", pages = "C--i--C--iii, C--1--C--28", pages = "C-01--C-??", pages = "C-107--C-??", pages = "C-127--C-??", pages = "C-13--C-??", pages = "C-143--C-??", pages = "C-155--C-??", pages = "C-167--C-??", pages = "C-179--C-??", pages = "C-185--C-??", pages = "C-195--C-??", pages = "C-205--C-??", pages = "C-221--C-??", pages = "C-23--C-??", pages = "C-233--C-??", pages = "C-247--C-??", pages = "C-259--C-??", pages = "C-271--C-??", pages = "C-281--C-??", pages = "C-293--C-??", pages = "C-305--C-??", pages = "C-317--C-??", pages = "C-329--C-??", pages = "C-33--C-??", pages = "C-339--C-??", pages = "C-349--C-??", pages = "C-361--C-??", pages = "C-371--C-??", pages = "C-381--C-??", pages = "C-393--C-??", pages = "C-407--C-??", pages = "C-421--C-??", pages = "C-433--C-??", pages = "C-443--C-??", pages = "C-45--C-??", pages = "C-455--C-??", pages = "C-467--C-??", pages = "C-477--C-??", pages = "C-489--C-??", pages = "C-503--C-??", pages = "C-513--C-??", pages = "C-514--C-??", pages = "C-515--C-??", pages = "C-55--C-??", pages = "C-65--C-??", pages = "C-75--C-??", pages = "C-85--C-??", pages = "C-97--C-??", pages = "C/33--44", pages = "C3", pages = "C3--??", pages = "D--i--D--iii, D--1--D--16", pages = "E--i--E--iv, E--1--E--27", pages = "EL-1--EL-6", pages = "F--i--F--viii, F--1--F--61", pages = "F53 + 1229 + B29", pages = "G--i--G--v, G--1--G--28", pages = "H--i--H--iv, H--1--H--37", pages = "H439--H448", pages = "I", pages = "I--257, I--260", pages = "I--340", pages = "I--57--I--66", pages = "I-30 - I-44", pages = "I-45 - I-57", pages = "I181--5 (vol. 1)", pages = "II--103--II--106", pages = "II--297--II--300", pages = "II--305--II--308", pages = "II--337--II--340", pages = "II-282--II-283", pages = "II-653--II-658", pages = "II:351--II:358", pages = "III--125--III--133", pages = "III--2023", pages = "III--??", pages = "III-197--III-201", pages = "III.29--III.36", pages = "IV--??", pages = "IV-1 to IV-27", pages = "IX + 215", pages = "L115", pages = "L1331--L1337", pages = "L169--L179", pages = "L227-L230", pages = "L383-L388", pages = "L547--L551", pages = "L569-L573", pages = "L819-L823", pages = "LO-93--LO-97", pages = "PM01", pages = "R114--R121", pages = "R2183--R2186", pages = "Ri--Rx, R1--R163", pages = "S-10--S-??", pages = "S-11--S-??", pages = "S-12--S-??", pages = "S-13--S-??", pages = "S-14--S-??", pages = "S-16--S-??", pages = "S-18--S-??", pages = "S-2--S-??", pages = "S-20--S-??", pages = "S-21--S-??", pages = "S-22--S-??", pages = "S-23--S-??", pages = "S-24--S-??", pages = "S-25--S-??", pages = "S-26--S-??", pages = "S-27--S-??", pages = "S-28--S-??", pages = "S-3--S-??", pages = "S-30--S-??", pages = "S-33--S-??", pages = "S-34--S-??", pages = "S-35--S-??", pages = "S-36--S-??", pages = "S-37--S-??", pages = "S-38--S-??", pages = "S-4--S-??", pages = "S-40--S-??", pages = "S-42--S-??", pages = "S-44--S-??", pages = "S-45--S-??", pages = "S-46--S-??", pages = "S-48--S-??", pages = "S-5--S-??", pages = "S-6--S-??", pages = "S-8--S-??", pages = "S1--??", pages = "S1/19--??", pages = "S1/3--S1/17", pages = "S1/35--??", pages = "S1/47--??", pages = "S1/47--S1/61", pages = "S1/63--??", pages = "S1/89--??", pages = "S148--S149", pages = "S2/109--??", pages = "S2/119--??", pages = "S2/137--??", pages = "S2/35--??", pages = "S2/5--??", pages = "S2/69--??", pages = "S2/83--??", pages = "S201--S209", pages = "S435--438", pages = "S539", pages = "S565--569", pages = "ST-134--ST-143", pages = "ST-144", pages = "Sec. 33--4", pages = "Sound cassettes.", pages = "T 532--534", pages = "T11, 1--8", pages = "T141--T143", pages = "T176--T177", pages = "T181--T182", pages = "T182--T184", pages = "T188--T189", pages = "T188--T190", pages = "T190--T191", pages = "T191--T193", pages = "T197--T198", pages = "T202--T204", pages = "T207--T208", pages = "T208--T209", pages = "T217--T218", pages = "T219--T220", pages = "T220--T221", pages = "T221--T223", pages = "T222", pages = "T225--T226", pages = "T229--T230", pages = "T237--T238", pages = "T240--T242", pages = "T262--T263", pages = "T263--T270", pages = "T265--T266", pages = "T270--T272", pages = "T273--T274", pages = "T274--T275", pages = "T275--T277", pages = "T282--T283", pages = "T282--T284", pages = "T284--T286", pages = "T286--T287", pages = "T288--T289", pages = "T290--T292", pages = "T291--T292", pages = "T293--T295", pages = "T294--T295", pages = "T294--T296", pages = "T296--T297", pages = "T301--T304", pages = "T308--T309", pages = "T309-T312", pages = "T311--T313", pages = "T313--T315", pages = "T315--T317", pages = "T319--T320", pages = "T32--T33", pages = "T33", pages = "T33--T35", pages = "T331--T332", pages = "T355--T357", pages = "T379--T381", pages = "T380-T382", pages = "T403--T404", pages = "T404--T405", pages = "T405--T407", pages = "T407--T408", pages = "T408--T410", pages = "T416--T418", pages = "T426--T427", pages = "T428--T429", pages = "T434--T436", pages = "T493--T503", pages = "T494--T495", pages = "T50--T51", pages = "T56", pages = "T59--T60", pages = "T68--T69", pages = "T69", pages = "T69--T71", pages = "T69--T72", pages = "T70--T71", pages = "T71--T73", pages = "T72--T73", pages = "T72--T85", pages = "T76--T79", pages = "T79--T80", pages = "TBD", pages = "VI--73--VI--76", pages = "XIV--113", pages = "[10] + 138", pages = "[11] + 138", pages = "[11].", pages = "[18]", pages = "[1] + 24", pages = "[1] + iii + 61", pages = "[1] + vii + [46]", pages = "[256]", pages = "[2] + 12", pages = "[2] + 16", pages = "[2] + 3 + 248", pages = "[2] + 51 + [1]", pages = "[2]", pages = "[384]", pages = "[3] + 105", pages = "[3] + 152", pages = "[3] + 38", pages = "[3] + 39", pages = "[3] + 63", pages = "[4] + 16 [19]", pages = "[4] + 61", pages = "[5] + 14", pages = "[5] + 152 + 3--44", pages = "[5] + 20", pages = "[5] + 354", pages = "[5] 42 [4]", pages = "[6] + 22 + [2]", pages = "[6] + 25 + [1]", pages = "[6] + 41", pages = "[6] + 59", pages = "[6] + 77", pages = "[6] 182", pages = "[72] + 19 + 12", pages = "[7] + 52", pages = "[7] + 82 + [82]", pages = "[ca. 200]", pages = "[i] + 11", pages = "[ii] + 20", pages = "[iii] + 40", pages = "[v] + 164", pages = "[vi] + 246", pages = "[xiii] + 923", pages = "[xiv] + 144", pages = "b + [4]", pages = "ca. 1 program file (IBM PC) on 1 computer disk", pages = "ca. 160", pages = "ca. 175", pages = "ca. 200", pages = "ca. 250", pages = "ca. 350", pages = "ca. 400", pages = "ca. 89", pages = "d42--??", pages = "i + 109", pages = "i + 12 + [11]", pages = "i + 12", pages = "i + 13", pages = "i + 135", pages = "i + 15", pages = "i + 23", pages = "i + 27", pages = "i + 28", pages = "i + 30", pages = "i + 31", pages = "i + 311", pages = "i + 33", pages = "i + 39", pages = "i + 45", pages = "i + 47 + 67", pages = "i + 48", pages = "i + 58", pages = "i + 60", pages = "i + 61", pages = "i + 82", pages = "i + 92", pages = "i, 1--10", pages = "i, 1--14", pages = "i--ii, 1--315", pages = "ii + 104", pages = "ii + 105", pages = "ii + 115", pages = "ii + 133", pages = "ii + 136", pages = "ii + 139", pages = "ii + 14", pages = "ii + 142", pages = "ii + 15", pages = "ii + 153", pages = "ii + 16 + [3]", pages = "ii + 16", pages = "ii + 17", pages = "ii + 18 + [26]", pages = "ii + 18", pages = "ii + 19", pages = "ii + 20", pages = "ii + 223", pages = "ii + 24", pages = "ii + 25", pages = "ii + 259", pages = "ii + 27", pages = "ii + 28", pages = "ii + 29", pages = "ii + 293", pages = "ii + 31", pages = "ii + 33 + [69]", pages = "ii + 34", pages = "ii + 35", pages = "ii + 36", pages = "ii + 37 + 38", pages = "ii + 37", pages = "ii + 38", pages = "ii + 41", pages = "ii + 42", pages = "ii + 43", pages = "ii + 44", pages = "ii + 45 + [6]", pages = "ii + 46", pages = "ii + 5", pages = "ii + 50", pages = "ii + 52", pages = "ii + 53", pages = "ii + 57", pages = "ii + 61 + [3]", pages = "ii + 61", pages = "ii + 62", pages = "ii + 64", pages = "ii + 65", pages = "ii + 66 + [11]", pages = "ii + 66", pages = "ii + 744", pages = "ii + 91 + [2]", pages = "ii + A--H + 101", pages = "ii + [15]", pages = "ii, 1--9", pages = "ii--??", pages = "iii + 101", pages = "iii + 102", pages = "iii + 103", pages = "iii + 104", pages = "iii + 105", pages = "iii + 106", pages = "iii + 107", pages = "iii + 108", pages = "iii + 112", pages = "iii + 115", pages = "iii + 116", pages = "iii + 12", pages = "iii + 125", pages = "iii + 13", pages = "iii + 130", pages = "iii + 132", pages = "iii + 134", pages = "iii + 14", pages = "iii + 15 + [17]", pages = "iii + 150 + [6]", pages = "iii + 16", pages = "iii + 160", pages = "iii + 171", pages = "iii + 177", pages = "iii + 18", pages = "iii + 180", pages = "iii + 181", pages = "iii + 183", pages = "iii + 19", pages = "iii + 199 + ix", pages = "iii + 20", pages = "iii + 21", pages = "iii + 23", pages = "iii + 24", pages = "iii + 25", pages = "iii + 257", pages = "iii + 26", pages = "iii + 268", pages = "iii + 29", pages = "iii + 30", pages = "iii + 305", pages = "iii + 31", pages = "iii + 314", pages = "iii + 32", pages = "iii + 33", pages = "iii + 34", pages = "iii + 343 + 25", pages = "iii + 343", pages = "iii + 35", pages = "iii + 36", pages = "iii + 39", pages = "iii + 41", pages = "iii + 42", pages = "iii + 425", pages = "iii + 43", pages = "iii + 443", pages = "iii + 45", pages = "iii + 46", pages = "iii + 47", pages = "iii + 49", pages = "iii + 5", pages = "iii + 50", pages = "iii + 51", pages = "iii + 52", pages = "iii + 55", pages = "iii + 57", pages = "iii + 58", pages = "iii + 59", pages = "iii + 6", pages = "iii + 60", pages = "iii + 61", pages = "iii + 62", pages = "iii + 63", pages = "iii + 64", pages = "iii + 65", pages = "iii + 70", pages = "iii + 72", pages = "iii + 75", pages = "iii + 77", pages = "iii + 81", pages = "iii + 82", pages = "iii + 83", pages = "iii + 84", pages = "iii + 89", pages = "iii + 9, A-85", pages = "iii + 90", pages = "iii + 93.", pages = "iii + 94", pages = "iii + 99", pages = "iii + [152]", pages = "iii + [93]", pages = "iii", pages = "iii, 1--56", pages = "iii, 212", pages = "iii--iii", pages = "iii--v", pages = "iii--x + 263", pages = "iv + 100", pages = "iv + 101", pages = "iv + 102", pages = "iv + 103", pages = "iv + 105", pages = "iv + 106", pages = "iv + 107", pages = "iv + 108", pages = "iv + 109", pages = "iv + 110", pages = "iv + 116", pages = "iv + 117", pages = "iv + 120", pages = "iv + 124", pages = "iv + 125", pages = "iv + 127", pages = "iv + 128", pages = "iv + 129", pages = "iv + 130", pages = "iv + 131", pages = "iv + 132", pages = "iv + 136", pages = "iv + 139", pages = "iv + 15", pages = "iv + 150", pages = "iv + 153", pages = "iv + 156", pages = "iv + 158", pages = "iv + 165", pages = "iv + 167", pages = "iv + 168", pages = "iv + 17 + [1]", pages = "iv + 17", pages = "iv + 171", pages = "iv + 173", pages = "iv + 174", pages = "iv + 178", pages = "iv + 188", pages = "iv + 19 + 11 + [66]", pages = "iv + 19", pages = "iv + 192", pages = "iv + 197", pages = "iv + 198", pages = "iv + 20 + 22 + 25", pages = "iv + 20", pages = "iv + 200", pages = "iv + 201", pages = "iv + 203", pages = "iv + 207", pages = "iv + 208", pages = "iv + 215", pages = "iv + 218", pages = "iv + 22", pages = "iv + 227", pages = "iv + 23 + [18]", pages = "iv + 230", pages = "iv + 24", pages = "iv + 246", pages = "iv + 25", pages = "iv + 252", pages = "iv + 255", pages = "iv + 269", pages = "iv + 270", pages = "iv + 28 + [1]", pages = "iv + 28", pages = "iv + 286", pages = "iv + 29", pages = "iv + 30", pages = "iv + 300", pages = "iv + 31", pages = "iv + 33", pages = "iv + 34", pages = "iv + 353", pages = "iv + 359", pages = "iv + 36", pages = "iv + 38", pages = "iv + 383", pages = "iv + 397", pages = "iv + 4 + 184", pages = "iv + 40", pages = "iv + 403", pages = "iv + 426", pages = "iv + 45", pages = "iv + 456", pages = "iv + 48", pages = "iv + 489", pages = "iv + 49", pages = "iv + 492", pages = "iv + 50", pages = "iv + 509", pages = "iv + 51", pages = "iv + 52", pages = "iv + 53", pages = "iv + 54", pages = "iv + 548", pages = "iv + 55", pages = "iv + 56", pages = "iv + 59", pages = "iv + 6 + 22 + 30", pages = "iv + 61", pages = "iv + 63", pages = "iv + 64", pages = "iv + 64.", pages = "iv + 65", pages = "iv + 67", pages = "iv + 68", pages = "iv + 7", pages = "iv + 70", pages = "iv + 73 [i.e. 165]", pages = "iv + 73", pages = "iv + 74", pages = "iv + 76", pages = "iv + 77 + [1]", pages = "iv + 77", pages = "iv + 79", pages = "iv + 79.", pages = "iv + 82", pages = "iv + 83", pages = "iv + 84", pages = "iv + 85", pages = "iv + 86", pages = "iv + 90", pages = "iv + 91", pages = "iv + 93", pages = "iv + 95", pages = "iv + 96", pages = "iv + 99", pages = "iv+86", pages = "iv, 1--88", pages = "iv, 101--126, 201--239, 301--380, 401--441", pages = "ix + 101", pages = "ix + 160 + [7] + [64]", pages = "ix + 168 l", pages = "ix + 171", pages = "ix + 187 + 3 appendices", pages = "ix + 194 + 68", pages = "ix + 663", pages = "ix + 664 + [53]", pages = "ix + 67", pages = "ix + 99", pages = "ix + [171]", pages = "ix + [234]", pages = "ix + iv + 429", pages = "ix", pages = "ix--xxi", pages = "l + 273", pages = "l v.", pages = "lvi + 1405", pages = "lviii + 1387", pages = "lviii + 1540", pages = "lviii + 2034", pages = "lxv + 644", pages = "lxxi + 719", pages = "lxxiv + 790", pages = "program files (IBM PC) on 1 computer disk manual.", pages = "s118-s138", pages = "s139--s154", pages = "s139-s154", pages = "s14-s26", pages = "s155--s165", pages = "s155-s165", pages = "s166--s202", pages = "s166-s202", pages = "s2--s13", pages = "s2-s13", pages = "s203-s219", pages = "s220--s226", pages = "s220-s226", pages = "s227--s287", pages = "s227-s287", pages = "s27-s42", pages = "s43-s58", pages = "s59-s72", pages = "s73-s95", pages = "s96-s117", pages = "to appear", pages = "to be published", pages = "v + 104", pages = "v + 105", pages = "v + 112", pages = "v + 1152 + [80] (doubled--up)", pages = "v + 117", pages = "v + 29", pages = "v + 308 + x", pages = "v + 491 + ii + 97 + ii + 107 + 12", pages = "v + 60 + 3", pages = "v + 60 + [19]", pages = "v + 60 + [23]", pages = "v + 60 + [24]", pages = "v + 60", pages = "v + 61 + 7", pages = "v + 81 + [34]", pages = "v + [285]", pages = "v + [338]", pages = "v", pages = "v, 1--51", pages = "v, 1--85", pages = "v--vi", pages = "v. <1--2 >", pages = "v.", pages = "various (??)", pages = "various", pages = "vi + 100", pages = "vi + 1152 + [79]", pages = "vi + 1152 columns", pages = "vi + 1232 + [75] (doubled--up)", pages = "vi + 1232 + [75]", pages = "vi + 136", pages = "vi + 136--341", pages = "vi + 228 + 1", pages = "vi + 448", pages = "vi + 45 + 1", pages = "vi + 50 + 10", pages = "vi + 53[1]", pages = "vi + 64.", pages = "vi + 65 + [2]", pages = "vi + 65", pages = "vi + 658", pages = "vi + 66 + [45] + [1]", pages = "vi + [124]", pages = "vi + [25]", pages = "vii + 1232 columns", pages = "vii + 2--154", pages = "vii + 217 + 16 [i.e. 17]", pages = "vii + 282 + [113]", pages = "vii + 357 + xvi", pages = "vii + 9 + [3] + 1", pages = "vii + 96", pages = "vii + 97 l", pages = "vii + I--59", pages = "vii + [100]", pages = "vii + [111]", pages = "vii + [192]", pages = "vii + [200]", pages = "vii + [various]", pages = "vii", pages = "vii--??", pages = "viii + 100", pages = "viii + 12 + 794 + [173]", pages = "viii + 191 + [52]", pages = "viii + 216 + 43", pages = "viii + 216 + iii + 43", pages = "viii + 216", pages = "viii + 36 + 9", pages = "viii + 36", pages = "viii + 98", pages = "viii + [125]", pages = "viii + [181]", pages = "x + 100", pages = "x + 125.", pages = "x + 198 + 48 + 6", pages = "x + 48 + [25]", pages = "x + 492 (A1--A18 and B1--B14 and I1--I19)", pages = "x + 492 + A22 + B16 + I18", pages = "x + 492 + appendices", pages = "x + 92 + [1]", pages = "x + [241]", pages = "x+235", pages = "x+578", pages = "xi + 108", pages = "xi + 201 + 105", pages = "xi + 45 + 201 + 105", pages = "xi + 450", pages = "xi + 669", pages = "xi + 679 + 36 + 7", pages = "xi", pages = "xi--xii", pages = "xi--xvi", pages = "xii + 100", pages = "xii + 1084 + 12", pages = "xii + 152 + [91]", pages = "xii + 157 + [2]", pages = "xii + 162 + 97", pages = "xii + 377 + 23", pages = "xii + 384 + [55]", pages = "xii + 385", pages = "xii + 387", pages = "xii + 389 + 76 + 16", pages = "xii + 408 + [5]", pages = "xii + 460 + [6]", pages = "xii + 522 (or xii + 514??)", pages = "xii + 538 + 57", pages = "xii + 607 + A18 + B16 + I18", pages = "xii+241", pages = "xiii + 423 + 33 + 3", pages = "xiii + 457, with 230 illustrations", pages = "xiii + 464 + 10", pages = "xiii", pages = "xiii, 320", pages = "xiii, 555", pages = "xiv + 383 + 4", pages = "xiv + 432 + 8", pages = "xiv + 518 + 9", pages = "xix + 1041 + iv", pages = "xix + 310 (or xv + 377)", pages = "xix + 525 + 52 pages back matter", pages = "xv + 118 + listings", pages = "xv + 199 + 8", pages = "xv + 527 + 4", pages = "xv + 534 + 117 + [41]", pages = "xvi + 102 + 6", pages = "xvi + 404 + [68]", pages = "xvi + 570 + Appendix + Index", pages = "xvi + 595 (or xix + 861??)", pages = "xvi + 637 + 67 + 7", pages = "xvi + 984, with 686 illustrations, 40 in color", pages = "xvi + x + 390", pages = "xvii + 254 + 12", pages = "xviii + 568 + 92", pages = "xviii + [265]", pages = "xx + 1241 + 1", pages = "xx + 1269 + 5", pages = "xx + 525 [63]", pages = "xx + 793 ", pages = "xxi + 567 + [4]", pages = "xxi + 640 + [30]", pages = "xxi + 666 + 119", pages = "xxii + 416 + 6", pages = "xxiii + 491 + 509 + 502", pages = "xxiv + 648 + appendices", pages = "xxvi + 438 + A182 + B62 + C6 + D4 + E4", pages = "xxvi + 779 + Appendix + Index", pages = "xxvii + 797 + vii", pages = "xxvii", pages = "xxviii + 594 + appendices", pages = "xxviii + 638 + [169]", pages = "xxxvii + 23 + 2154", pages = {154--165}, pages = {1973--1986}, pages = {3--29}, pages = {360--361}, pages = {491-496}, pages = {937--940}, pages = " 24 -- 85", pages = " 356-372", pages = "", pages = "(1--29)-(1--58)", pages = "(1--59)-(1--113)", pages = "(to appear)", pages = "(various)", pages = "0-12-696201-4", pages = "1 + 22", pages = "1 -- 10", pages = "1 -- 11", pages = "1 -- 17", pages = "1 -- 22", pages = "1 -- 40", pages = "1 -- 6", pages = "1 -- 62", pages = "1 -- 7", pages = "1 -- 74, ", pages = "1 -- 8", pages = "1 card", pages = "1 cassette.", pages = "1 computer disk", pages = "1 microfiche", pages = "1 program file (IBM PC) on 2 computer disks manuals.", pages = "1 program file (IBM--PC) on 1 computer disk manual.", pages = "1 program file on 6 computer disks", pages = "1 reel + 5 min.", pages = "1 reel + 6 min.", pages = "1 reel + 7 min.", pages = "1 reel + 8 min.", pages = "1 reel + ca. 20 min.", pages = "1 roll. guide.", pages = "1 v", pages = "1 v. (various paging) 29 cm.", pages = "1 v. (various pagings)", pages = "1 v. disks (5 1/4 in.)", pages = "1 video cassette + 25 min. b and w.", pages = "1 videocassette (13 min.)", pages = "1 videocassette (32 min.)", pages = "1, 113", pages = "1, 141", pages = "1, 16", pages = "1, 17", pages = "1, 3--13, 16--19", pages = "1, 3--4, 6", pages = "1, 4, 13", pages = "1--10 (of xii + 323)", pages = "1--13 (of x + 787)", volume = "", volume = "(Fourth Series) 1", volume = "(to appear)", volume = "0", volume = "01", volume = "02", volume = "07", volume = "09", volume = "1 (1837--1853)", volume = "1", volume = "1(4)", volume = "1.2", volume = "1/1977", volume = "1/2", volume = "10", volume = "10, 11", volume = "10-11", volume = "100", volume = "109A", volume = "11 and 12", volume = "11, 4", volume = "11, 9", volume = "113-C", volume = "114/115", volume = "116A", volume = "11D", volume = "12 and 13", volume = "12, 1", volume = "12/13", volume = "122/3/4", volume = "1259-V", volume = "127A", volume = "12A", volume = "13, 14", volume = "13, 2", volume = "13, 4", volume = "134, No. 2", volume = "135B", volume = "14 (or 9?)", volume = "14--15", volume = "140B", volume = "148B", volume = "15 (1-2)", volume = "15, 2", volume = "15.1", volume = "15.3", volume = "152/153", volume = "154-156", volume = "161B", volume = "162--164", volume = "162-164", volume = "167B", volume = "16S", volume = "17, no. 3", volume = "18 Supl", volume = "18, 4", volume = "18/19", volume = "183, 292", volume = "185, 186", volume = "18\slash 19", volume = "19, 1", volume = "19, 3", volume = "19, No. 3", volume = "19. Jahrg.", volume = "19/20", volume = "197/198", volume = "1984/24", volume = "1S", volume = "2(4)", volume = "2. Anwendungen", volume = "2/85", volume = "20 (or 19??)", volume = "20 B", volume = "20, 23, 25", volume = "20/21", volume = "203, 204", volume = "208/209", volume = "21, 2", volume = "21, Supplement 6", volume = "212/213", volume = "217A", volume = "22 B", volume = "221 (or 213??)", volume = "23(9)", volume = "2304-16", volume = "239/240", volume = "24, 3", volume = "24, no. 9", volume = "249, 250", volume = "25 (or 26??)", volume = "254, 255", volume = "258, 259", volume = "26 (or 25??)", volume = "26, 2", volume = "26.4", volume = "26A", volume = "26B", volume = "27, no. 12", volume = "27S", volume = "298, Series III", volume = "299/300", volume = "2S", volume = "3, 2", volume = "3, 4", volume = "3--4", volume = "3. Algorithms and applications", volume = "3/1975", volume = "3/1979", volume = "3/4", volume = "30--31", volume = "307/308", volume = "32, no. 2", volume = "32-1", volume = "32-2", volume = "33,34", volume = "35-37", volume = "351, 352", volume = "36 (or 38??)", volume = "36, no. 12", volume = "365, 366", volume = "37??", volume = "37A", volume = "38A", volume = "39B", volume = "3M", volume = "3S", volume = "4 (No. 1)", volume = "4 (or 11??)", volume = "40, 41", volume = "40--41", volume = "40A", volume = "41, 4", volume = "41, pt. 1", volume = "41B", volume = "42A", volume = "44A", volume = "46--47", volume = "47.1 - 47.7", volume = "475A", volume = "47A", volume = "4M", volume = "5 (1976)", volume = "5 (??)", volume = "5, 1", volume = "5, Numerical Methods in Thermal Problems", volume = "50, Pt. 4", volume = "505, 506", volume = "52/53", volume = "54/55", volume = "551, 552", volume = "55B", volume = "56A", volume = "5S", volume = "6 (No. 3)", volume = "62--63", volume = "62A", volume = "63(4)", volume = "634-677", volume = "63:207", volume = "63A", volume = "6A", volume = "6B", volume = "6S", volume = "70, no. 6", volume = "71B", volume = "728-P", volume = "74b", volume = "76-3", volume = "78--257", volume = "78/9", volume = "79-1458", volume = "7A", volume = "7B", volume = "800, 801", volume = "81--1025", volume = "81--1027", volume = "81--1245", volume = "81-1028", volume = "81-1259", volume = "81/6", volume = "81A", volume = "82--0931", volume = "82--0976", volume = "82/1", volume = "83--0034", volume = "83--0124", volume = "83--1885", volume = "83--1896", volume = "83--1945", volume = "83-1893", volume = "83A", volume = "84-0093", volume = "85--0017", volume = "85--0295", volume = "85--1493--CP", volume = "85--1500", volume = "85--1523CP", volume = "85-0293", volume = "85-1508-CP", volume = "85A", volume = "86--1063", volume = "86--1081", volume = "86/87", volume = "87--0275", volume = "87--0353", volume = "87--0560", volume = "87--0602", volume = "87--1152 CP", volume = "87--2627--CP", volume = "88--0224", volume = "88--0715", volume = "88-1997 CP", volume = "88/89", volume = "89--0121", volume = "89--0274", volume = "89--0338", volume = "89--0548", volume = "89-1791", volume = "89-1949", volume = "89-1953", volume = "89/2", volume = "91--1572", volume = "91--1596", volume = "91-101", volume = "92--0449", volume = "93--0677", volume = "93-0236", volume = "93B", volume = "95/2", volume = "96A", volume = "99B", volume = "??", volume = "????", volume = "A 248", volume = "A 323", volume = "A", volume = "A(2)", volume = "A-12", volume = "A-2", volume = "A-48", volume = "A-52", volume = "A12", volume = "A128", volume = "A14", volume = "A15", volume = "A16", volume = "A20", volume = "A258", volume = "A298", volume = "A39", volume = "A405", volume = "A: Tutorials", volume = "AC-16", volume = "AC-22", volume = "AC-23", volume = "AC-24", volume = "AC-25", volume = "AC-26", volume = "AC-27", volume = "AC-28", volume = "AC-29", volume = "AC-30", volume = "AC-32", volume = "AC-33", volume = "AC-34", volume = "AC-35", volume = "AC-36", volume = "AC-37", volume = "AC-39", volume = "AC-??", volume = "AES 24", volume = "AES-11", volume = "AES-12", volume = "AES-22", volume = "AES-23", volume = "AES-5", volume = "AMD vo. 86", volume = "AP-24", volume = "AP-33", volume = "AP-34", volume = "ASSP-24", volume = "ASSP-27", volume = "ASSP-28", volume = "ASSP-29", volume = "ASSP-31", volume = "ASSP-32", volume = "ASSP-34", volume = "ASSP-35", volume = "ASSP-36", volume = "ASSP-37", volume = "Annual Conference Series, 1995", volume = "B", volume = "B-10", volume = "B1", volume = "B177", volume = "B207", volume = "B28", volume = "B288", volume = "B329", volume = "B354", volume = "B368", volume = "B374", volume = "B376", volume = "B380", volume = "B401", volume = "B7", volume = "B84", volume = "B: Formal Models and Semantics", volume = "C", volume = "C--22", volume = "C--35", volume = "C--36", volume = "C-17", volume = "C-18", volume = "C-19", volume = "C-20", volume = "C-22", volume = "C-23", volume = "C-24", volume = "C-25", volume = "C-26", volume = "C-27", volume = "C-28", volume = "C-29", volume = "C-30", volume = "C-31", volume = "C-32", volume = "C-33", volume = "C-34", volume = "C-35", volume = "C-36", volume = "C-37", volume = "C-39", volume = "C-40", volume = "C25", volume = "C26", volume = "CAD-1", volume = "CAD-4", volume = "CAS--28", volume = "CAS-26", volume = "CAS-34", volume = "CE-29", volume = "COM-30", volume = "COM-31", volume = "CP 3224", volume = "CXXIV", volume = "D", volume = "D40", volume = "E", volume = "E74", volume = "E75-A", volume = "E76--D", volume = "E77-A", volume = "EC-11", volume = "EC-13", volume = "EC-14", volume = "EC-8", volume = "ED--30, 9", volume = "ED-30", volume = "EWS-10", volume = "F51", volume = "F55", volume = "F70", volume = "FIPS 152", volume = "GE-22", volume = "H6", volume = "I 301", volume = "I", volume = "I, Architecture", volume = "I, Univariate Series", volume = "I: Finite Difference Methods---Solution of Equations", volume = "IEEE Computer Society Order Number 655", volume = "II --- Software", volume = "II", volume = "II, Multivariate Series, Prediction and Control", volume = "II, Software", volume = "II: Matrix Theory and Analysis", volume = "III", volume = "III, Algorithms \& Applications", volume = "III: Hearing Disorders", volume = "IT-17", volume = "IT-18", volume = "IT-31", volume = "IT-32", volume = "IV (XIII)", volume = "IV", volume = "IX", volume = "In press.", volume = "J67D", volume = "J68D", volume = "J76D-II", volume = "J77-A", volume = "LVI", volume = "LXVIII", volume = "LXX", volume = "Libraries", volume = "NS-30", volume = "New Series Number 53", volume = "PAMI--10(4)", volume = "PAMI-6", volume = "PAMI-9", volume = "PC-15", volume = "PC-16", volume = "PC-18", volume = "PC-20", volume = "PC-23", volume = "PC-24", volume = "PC-27", volume = "PC-29", volume = "PC-30", volume = "PC-32", volume = "Pt. E", volume = "R-29", volume = "R-32", volume = "R-34", volume = "RC 12794 (\#57573)", volume = "S-2", volume = "S10", volume = "S13", volume = "S7", volume = "S8", volume = "S9", volume = "SC-17", volume = "SC-19", volume = "SCD User document version 1.2", volume = "SE-10", volume = "SE-11", volume = "SE-12", volume = "SE-13", volume = "SE-16", volume = "SE-2", volume = "SE-3", volume = "SE-5", volume = "SE-7", volume = "SE-8", volume = "SE-9", volume = "SMC-14", volume = "SP-1128", volume = "SPE 7687", volume = "SPIE Vol. 1360", volume = "SPIE Vol. 2186", volume = "Ser. I, 295", volume = "Ser. I, 296", volume = "Ser. I, 298", volume = "Special issue A", volume = "Special issue B", volume = "Special issue D", volume = "Special issue E", volume = "Special issue", volume = "Suppl. 2", volume = "Suppl. XIII", volume = "Suppl.", volume = "TBD", volume = "To appear", volume = "UCP-19", volume = "UMINF", volume = "V", volume = "V, {Design of Computers, Theory of Automata}", volume = "VI", volume = "VII", volume = "VIII", volume = "Vol.2", volume = "Vol.81", volume = "Volume 91, Issue 16", volume = "X", volume = "XIV", volume = "XLI", volume = "XLVIII", volume = "XXI", volume = "XXIII", volume = "XXV", volume = "XXVIII", volume = "XXXV", volume = "c-21", volume = "n. 15", volume = "one", volume = "t. 306, S{\/e}rie I", volume = "t. 309, S{\/e}rie I", volume = "t. 315, Serie I", volume = "two", volume = "{19-20}", volume = "{ASSP-35}", volume = "{ASSP-37}", volume = "{Heft 2}", volume = "{II}/13", volume = "{I}", volume = "{Reihe VI, Band 30}", volume = "{\em 16}", volume = "{\noopsort{1986a}}A", year = " 1988", year = "", year = "(submitted)", year = "1190", year = "1785", year = "1837", year = "1840", year = "1841", year = "1846", year = "1850", year = "1851", year = "1854", year = "1859", year = "1869", year = "1870", year = "1873", year = "1874", year = "1881", year = "1884", year = "1890", year = "1894", year = "1896", year = "1897", year = "19", year = "19..(?)", year = "1901", year = "1902", year = "1904", year = "1908", year = "1909", year = "1911", year = "1914", year = "1916", year = "1917", year = "1918", year = "1922", year = "1923", year = "1924", year = "1925", year = "1927", year = "1929", year = "1930", year = "1931", year = "1932", year = "1933", year = "1934", year = "1935", year = "1936", year = "1937", year = "1938", year = "1939", year = "1940", year = "1941", year = "1942", year = "1943", year = "1944", year = "1945", year = "1946", year = "1947", year = "1948", year = "1949", year = "1949, 1951, 1969", year = "1949, 1951, 1970", year = "1950", year = "1951", year = "1952", year = "1953", year = "1954", year = "1955", year = "1956", year = "1957", year = "1958", year = "1959", year = "1960 (or 1969??)", year = "1960", year = "1961", year = "1961, 1962", year = "1962", year = "1963", year = "1964 (or 1967??)", year = "1964", year = "1965", year = "1966 (or 1960??)", year = "1966", year = "1967", year = "1967/1968", year = "1968 (??)", year = "1968", year = "1969 (??)", year = "1969 (vol. 2)", year = "1969", year = "1969, 1979", year = "1970 (??)", year = "1970 (or 1975??)", year = "1970 (or 1978??)", year = "1970 (or 1979??)", year = "1970", year = "1970--1971", year = "1970/71", year = "1971", year = "1971--1972", year = "1972", year = "1972--1973", year = "1972{\noopsort{a}}", year = "1972{\noopsort{b}}", year = "1973", year = "1973--1981", year = "1973\noopsort{a}", year = "1974", year = "1975 (??)", year = "1975", year = "1976", year = "1976, 1982, 1983", year = "1976/1977", year = "1977 and 1978", year = "1977", year = "1978", year = "1979", year = "1979, 1980", year = "1979/1980", year = "197x", year = "1980 (or 1984??)", year = "1980 (or 1987??)", year = "1980 (or 1988??)", year = "1980", year = "1981 (??)", year = "1981", year = "1981, 1983", year = "1981, 1984, 1989", year = "1982 (??)", year = "1982", year = "1983 (??)", year = "1983", year = "1984", year = "1984--1993", year = "1984-1993", year = "1984/85", year = "1985", year = "1985/86", year = "1985?", year = "1986 (??)", year = "1986 (summer)", year = "1986", year = "1986/87", year = "1987 (??)", year = "1987" # "\unskip--", year = "1987", year = "1987--date{}", year = "1987-88", year = "1987/88", year = "1988 (??)", year = "1988 (summer)", year = "1988" # "\unskip--", year = "1988", year = "1988--1989", year = "1988-89", year = "1988/1990", year = "1989" # "\unskip--", year = "1989", year = "1989--date{}", year = "1989--present", year = "198?", year = "198x", year = "1990", year = "1990, 12 Juni", year = "1990--1991", year = "1990/91", year = "1990?", year = "1991 (to appear)", year = "1991", year = "1991--2", year = "1991-2", year = "1991/1992", year = "1991/92", year = "1992 (??)", year = "1992", year = "1992-93", year = "1993", year = "1993?", year = "1994 (invited)", year = "1994", year = "1994--", year = "1994--1995", year = "1995 (??)", year = "1995 (in press)", year = "1995 (invited)", year = "1995 (to appear)", year = "1995", year = "1996", year = "1997", year = "1998", year = "199x", year = "19xx", year = "83", year = "??", year = "????", year = "In progress.", year = "March 20 -- 23, 1989", year = "Spring 1985", year = "TBD", year = "To appear", year = "To appear", year = "\noopsort{1996}", year = "in preparation", year = "in print", year = "in progress", year = "submitted", year = "{\noopsort{1968a}}1968", year = "{\noopsort{1968b}}1973", year = "{\noopsort{1968c}}1969", year = "{\noopsort{1972a}}1972", year = "{\noopsort{1972b}}1973", year = "{\noopsort{1985a}}1985", year = "{\noopsort{1985b}}1985", year = "{\noopsort{1986a}}1986", year = "{\noopsort{1986b}}1986", year = "{\noopsort{1986c}}1986", year = "{\noopsort{1986d}}1986", year = "{\noopsort{1986e}}1986", year = "{\noopsort{1992a}}1992", year = "{\noopsort{1992b}}1992", year = "{\noopsort{1992c}}1992", year = "{\noopsort{1992d}}1992", year = "{\noopsort{a}}1978", year = "{\noopsort{a}}1987", year = "{\noopsort{a}}1988", year = "{\noopsort{a}}1990", year = "{\noopsort{a}}1991", year = "{\noopsort{b}}1978", year = "{\noopsort{b}}1987", year = "{\noopsort{b}}1988", year = "{\noopsort{b}}1990", year = "{\noopsort{b}}1991", bibclean-2.11.4.1.orig/bibclean.reg0000644000175200017520000001057205332536017016135 0ustar debiandebian%% -*-text-*- %% /u/sy/beebe/tex/bibclean/bibclean.reg, Sun Nov 15 14:58:54 1992 %% Edit by Nelson H. F. Beebe %% This file contains bibclean value regular-expression pattern matching %% specifications and default options to be read during initialization. %% bibclean must be compiled with either HAVE_REGEXP or HAVE_RECOMP to %% use these patterns correctly. %% %% For either of these options, the string values are NOT filtered to %% remove braces and TeX control sequences, so if these are expected, %% regular expressions must be provided to match them. chapter = "^\"[0-9]+\"$" %% 23 chapter = "^\"[0-9]+-[0-9]+\"$" %% 11-2 month = "^[adfjmnosADFJMNOS][acepouACEPOU][bcglnprtvyBCGLNPRTVY] *#\ *\" +[0-9]+\"$" %% oct # " 10" month = "^[adfjmnosADFJMNOS][acepouACEPOU][bcglnprtvyBCGLNPRTVY] *#\ *\" +[0-9][0-9]?--[0-9][0-9]?\"$" %% oct # " 8--10" month = "^\"[0-9]+ *\" *#\ *[adfjmnosADFJMNOS][acepouACEPOU][bcglnprtvyBCGLNPRTVY]$" %% "10 " # oct month = "^\"[0-9][0-9]?--[0-9][0-9]? *\" *#\ *[adfjmnosADFJMNOS][acepouACEPOU][bcglnprtvyBCGLNPRTVY]$" %% "8--10 " # oct month = "^[adfjmnosADFJMNOS][acepouACEPOU][bcglnprtvyBCGLNPRTVY] *#\ *\"\\\\[a-zA-Z]+ *\" *#\ *[adfjmnosADFJMNOS][acepouACEPOU][bcglnprtvyBCGLNPRTVY]$" %% jul # "\emdash " # aug month = "^[adfjmnosADFJMNOS][acepouACEPOU][bcglnprtvyBCGLNPRTVY] *#\ *\" *-- *\" *#\ *[adfjmnosADFJMNOS][acepouACEPOU][bcglnprtvyBCGLNPRTVY]$" %% jul # "--" # aug number = "^\"[0-9]+\"$" %% "23" number = "^\"[a-zA-Z]+ +[a-zA-Z]+[0-9]+\"$" %% "PN LPS5001" number = "^\"[a-zA-Z]+ +[0-9]+([0-9]+)\"$" %% "RJ 34(49)" number = "^\"[a-zA-Z]+ +[0-9]+\"$" %% "XNSS 288811" number = "^\"[a-zA-Z]+ +[0-9]+[.][0-9]+\"$" %% "Version 3.20" number = "^\"[a-zA-Z]+-[a-zA-Z]+-[0-9]+-[0-9]+\"$" %% "UMIAC-TR-89-11" number = "^\"[a-zA-Z]+-[a-zA-Z]+-[0-9]+\"$" %% "CS-TR-2189" number = "^\"[a-zA-Z]+-[a-zA-Z]+-[0-9]+[.][0-9]+\"$" %% "CS-TR-21.7" number = "^\"[a-zA-Z]+-[a-zA-Z]+\\\\[a-zA-Z]+ +[0-9]+-[0-9]+\"$" %% "TN-K\slash 27-70" number = "^\"[a-zA-Z]+-[0-9]+ +[0-9]+\"$" %% "PB-251 845" number = "^\"[a-zA-Z]+-[0-9]+-[0-9]+\"$" %% "ANL-30-74" number = "^\"[a-zA-Z]+-[0-9]+\"$" %% "TR-2189" number = "^\"[a-zA-Z]+[0-9]+-[0-9]+-[0-9]+\"$" %% "GG24-3611-00" number = "^\"[a-zA-Z]+[0-9]+-[0-9]+\"$" %% "SP43-29" number = "^\"[a-zA-Z]+[0-9]+\"$" %% "LPS0064" number = "^\"[a-zA-Z]+\\\\#[0-9]+-[0-9]+\"$" %% "TR\#89-24" number = "^\"[0-9]+ and +[0-9]+\"$" %% "11 and 12" number = "^\"[0-9]+[-+/.][0-9]+\"$" %% "3+4, 23-27, 23/27, 23.27" number = "^\"[0-9]+[a-zA-Z]+\"$" %% "23A" number = "^\"[a-zA-Z]+-[a-zA-Z]+ +[a-zA-Z]+\"$" %% "AERE-R 12329" number =\ "^\"[a-zA-Z]+-[a-zA-Z]+-[0-9]+\\\\[a-zA-Z]+ *[0-9]+-[a-zA-Z]+[0-9]+\"$" %% "OSU-CISRC-4\slash 87-TR9" number = "^\"[a-zA-Z0-9]+\\( *[a-zA-Z0-9]+\\)\"$" %% "Computer Science Report 100" number = "^\"[a-zA-Z0-9]+\\([-/.][a-zA-Z0-9]+\\)\"$" %% "TR/AB/3-43.7-3/AB" pages = "^\"[a-zA-Z]?[0-9]+\"$" %% "23" and "A23" pages = "^\"[A-Za-z]?[0-9]+--[A-Za-z]?[0-9]+\"$" %% "23--29" and "A23--A29" pages = "^\"[A-Za-z]?[0-9]+-[A-Za-z]?[0-9]+\"$" \ "Use en-dash, --, to separate page numbers" %% "23-29" and "A23-A29" pages = "^\"[A-Za-z]?[0-9]+---[A-Za-z]?[0-9]+\"$" \ "Use en-dash, --, to separate page numbers" %% "23---29" and "A23---A29" pages = "^\"[A-Za-z]?[0-9---]+\\(, *[A-Za-z]?[0-9---]+\\)*\"$" %% "23, 27, 29" and "A23, A27, A29" pages = "^\"[ivxlcdmIVXLCDM]+\"$" %% "xxxiv" pages = "^\"[ivxlcdmIVXLCDM]+ *[+] *[0-9]+" %% "xiii + 457 with 230 illustrations" volume = "^\"[0-9]+a?\"$" %% "27" and "27A" volume = "^\"[0-9]+/?[0-9]+\"$" %% "27/3" volume = "^\"[0-9]+[a-zA-Z] [0-9]+\"$" %% "27A 3" volume = "^\"[0-9a-zA-Z]+-[0-9]+\"$" %% "SMC-13" volume = "^\"[ivxlcdmIVXLCDM]+\"$" %% "VIII" volume = "^\"[0-9]+[.][0-9]+\"$" %% "27.3" volume = "^\"[0-9]+[a-zA-Z] [0-9]+\"$" %% "27A 3" volume = "^\"[A-Za-z0-9]+\\( *[A-Za-z0-9]+\\)*\"$" %% "Special issue A" volume = "^\"[0-9]+ and [0-9]+\"" %% "11 and 12" year = "^\"[12][0-9][0-9][0-9]\"$" %% "1992" year = "^\"[12][0-9][0-9][0-9]\\(, [12][0-9][0-9][0-9]\\)*\"$" %% "1989, 1990, ..." year = "^\"{\\[a-zA-Z]+{[12][0-9][0-9][0-9][a-zA-Z]}}\ [12][0-9][0-9][0-9]\"$" %% "{\noopsort{1985a}}1985" %% This is for GNU Emacs file-specific customization: %% Local Variables: %% eval: (auto-fill-mode -1) %% comment-start: "%% " %% comment-start-skip: "%+ *" %% comment-end: "" %% comment-column: 48 %% End: bibclean-2.11.4.1.orig/xstdlib.h0000644000175200017520000000040206034343305015504 0ustar debiandebian#ifndef XSTDLIB_H_DEFINED_ #define XSTDLIB_H_DEFINED_ #ifdef HAVE_STDLIB_H #include #else #endif #if !defined(EXIT_FAILURE) #define EXIT_FAILURE 1 #endif #if !defined(EXIT_SUCCESS) #define EXIT_SUCCESS 0 #endif #endif /* XSTDLIB_H_DEFINED_ */ bibclean-2.11.4.1.orig/yesorno.h0000644000175200017520000000031606034235564015544 0ustar debiandebian#if defined(HAVE_STDC) typedef enum { NO = 0, YES = 1 } YESorNO; #else /* K&R style */ #define NO 0 /* must be FALSE (zero) */ #define YES 1 /* must be TRUE (non-zero) */ typedef int YESorNO; #endif bibclean-2.11.4.1.orig/strist.c0000644000175200017520000000220606035520720015361 0ustar debiandebian/* -*-C-*- strist.c */ /*-->strist*/ /**********************************************************************/ /****************************** strist ********************************/ /**********************************************************************/ #include #include "xctype.h" #include "xstring.h" RCSID("$Id: strist.c,v 1.1 1995/10/07 15:50:28 beebe Exp beebe $") /* Return pointer to location of sub[] in s[], ignoring letter case, else (char*)NULL. This is a simple implementation; a library version should use a more sophisticated version (e.g. Boyer-Moore, Knuth-Morris-Pratt, hardware search). */ char* #if defined(HAVE_STDC) stristr( const char *s, const char *sub ) #else /* NOT defined(HAVE_STDC) */ stristr(s,sub) const char *s; const char *sub; #endif /* defined(HAVE_STDC) */ { size_t length; length = (size_t)strlen(sub); if (s == (const char*)NULL) return ((char*)NULL); if ((sub == (char*)NULL) || (*sub == '\0')) return ((char*)s); /* NULL substring always found at start */ for (;*s;) { if (strnicmp(s,sub,length) == 0) return ((char*)s); ++s; } return ((char*)NULL); } bibclean-2.11.4.1.orig/strtol.c0000644000175200017520000001112406035520732015362 0ustar debiandebian/* -*-C-*- strtol.c */ /*-->strtol*/ /**********************************************************************/ /****************************** strtol ********************************/ /**********************************************************************/ #include #include "xctype.h" #include "xstring.h" #include "xstdlib.h" RCSID("$Id: strtol.c,v 1.1 1995/10/07 15:50:28 beebe Exp beebe $") #define IN(l,a,r) (((l) <= (a)) && ((a) <= (r))) /* This is a simple implementation of Standard C strtol(). A library version should be programmed with more care. */ long #if defined(HAVE_STDC) strtol( const char *nptr, char** endptr, int base ) #else /* NOT defined(HAVE_STDC) */ strtol(nptr,endptr,base) const char *nptr; char** endptr; int base; #endif /* defined(HAVE_STDC) */ { int c; /* current character value */ int digit; /* digit value */ static const char *digits = "0123456789abcdefghijklmnopqrstuvxwyz"; int negative; /* 0 for positive, non-0 for negative */ long number; /* the accumulating number */ const char *pos; /* pointer into digit list */ const char *q; /* pointer past end of digits */ if (!(IN(2,base,36) || (base == 0))) { if (endptr != (char**)NULL) *endptr = (char*)nptr; return (0L); } while (isspace(*nptr)) nptr++; /* ignore leading whitespace */ switch (*nptr) /* set number sign */ { case '-': negative = -1; nptr++; break; case '+': negative = 0; nptr++; break; default: negative = 0; break; } q = nptr; if (base == 0) /* variable base; set by lookahead */ { if (*q == '0') base = ((*(q+1) == 'x') || (*(q+1) == 'X')) ? 16 : 8; else base = 10; } /* eliminate optional "0x" or "0X" prefix */ if ( (base == 16) && (*q == '0') && ((*(q+1) == 'x') || (*(q+1) == 'X')) ) q += 2; number = 0L; /* Number conversion is done by shifting rather than multiplication when the base is a power of 2, in order that the results not be impacted by integer overflow. */ switch (base) { case 2: while (IN('0',*q,'1')) { number <<= 1; number |= *q - '0'; q++; } break; case 4: while (IN('0',*q,'3')) { number <<= 2; number |= *q - '0'; q++; } break; case 8: while (IN('0',*q,'7')) { number <<= 3; number |= *q - '0'; q++; } break; case 16: for (;;) { if (!*q) break; c = (unsigned)*q; if (isupper(c)) c = tolower(c); pos = strchr(digits,c); if (pos == (char*)NULL) break; digit = (int)(pos - digits); if (!IN(0,digit,15)) break; number <<= 4; number |= digit; q++; } break; case 32: for (;;) { if (!*q) break; c = (unsigned)*q; if (isupper(c)) c = tolower(c); pos = strchr(digits,c); if (pos == (char*)NULL) break; digit = (int)(pos - digits); if (!IN(0,digit,31)) break; number <<= 5; number |= digit; q++; } break; default: /* all other bases done by multiplication */ for (;;) /* accumulate negative so most negative */ { /* number on two's-complement is handled */ if (!*q) break; c = (unsigned)*q; if (isupper(c)) c = tolower(c); pos = strchr(digits,c); if (pos == (char*)NULL) break; digit = (int)(pos - digits); if (!IN(0,digit,base-1)) break; number *= base; number -= digit; q++; } if (endptr != (char**)NULL) *endptr = (char*)q; if (negative) return(number); number = -number; break; } if (negative) number = -number; if (endptr != (char**)NULL) *endptr = (char*)q; return (number); } #ifdef TEST /*********************************************************************** Simple test program for strtol(). Values are read from stdin, and the results in different bases are echoed to stdout. ***********************************************************************/ #ifndef EXIT_SUCCESS #define EXIT_SUCCESS 0 #endif /* EXIT_SUCCESS */ int #if defined(HAVE_STDC) main( int argc, char *argv[] ) #else /* NOT defined(HAVE_STDC) */ main(argc,argv) int argc; char *argv[]; #endif /* defined(HAVE_STDC) */ { char s[25]; char *endptr; long n; int k; static int base[] = { 0, 2, 4, 8, 10, 16, 32, 36, 5, }; while (gets(s) != (char*)NULL) { for (k = 0; k < sizeof(base)/sizeof(base[0]); ++k) { n = strtol(s,&endptr,base[k]); (void)printf( "strtol(,,%d): %s -> 16#%lx 8#%lo 10#%ld Rem = [%s]\n", base[k],s,n,n,n,endptr); } } exit (EXIT_SUCCESS); return (0); } #endif /* TEST */ bibclean-2.11.4.1.orig/testisxn.eok0000644000175200017520000001216106137726572016267 0ustar debiandebian%% "testisxn.org", line 23: Invalid checksum for ISSN 1018-9367 in ``ISSN = "1018-9367"''. %% "testisxn.org", line 24: Invalid checksum for ISSN 2080-3863 in ``ISSN = "2080-3863"''. %% "testisxn.org", line 25: Invalid checksum for ISSN 3094-3770 in ``ISSN = "3094-3770"''. %% "testisxn.org", line 26: Invalid checksum for ISSN 4197-3622 in ``ISSN = "4197-3622"''. %% "testisxn.org", line 27: Invalid checksum for ISSN 5346-914X in ``ISSN = "5346-914X"''. %% "testisxn.org", line 28: Invalid checksum for ISSN 6346-914X in ``ISSN = "6346-914X"''. %% "testisxn.org", line 29: Invalid checksum for ISSN 7362-613X in ``ISSN = "7362-613X"''. %% "testisxn.org", line 30: Invalid checksum for ISSN 8891-2513 in ``ISSN = "8891-2513"''. %% "testisxn.org", line 31: Invalid checksum for ISSN 9899-7667 in ``ISSN = "9899-7667"''. %% "testisxn.org", line 32: Invalid checksum for ISSN 9589-341? in ``ISSN = "X958-9341"''. %% "testisxn.org", line 33: Invalid checksum for ISSN 1964-5098 in ``ISSN = "1964-5098"''. %% "testisxn.org", line 34: Invalid checksum for ISSN 2047-5974 in ``ISSN = "2047-5974"''. %% "testisxn.org", line 35: Invalid checksum for ISSN 3059-5325 in ``ISSN = "3059-5325"''. %% "testisxn.org", line 38: Invalid checksum for ISSN 3???-???? in ``ISSN = "3"''. %% "testisxn.org", line 39: Invalid checksum for ISSN 30??-???? in ``ISSN = "30"''. %% "testisxn.org", line 40: Invalid checksum for ISSN 305?-???? in ``ISSN = "305"''. %% "testisxn.org", line 41: Invalid checksum for ISSN 3059-???? in ``ISSN = "3059"''. %% "testisxn.org", line 42: Invalid checksum for ISSN 3059-5??? in ``ISSN = "3059-5"''. %% "testisxn.org", line 43: Invalid checksum for ISSN 3059-53?? in ``ISSN = "3059-53"''. %% "testisxn.org", line 44: Invalid checksum for ISSN 3059-532? in ``ISSN = "3059-532"''. %% "testisxn.org", line 45: Invalid checksum for ISSN 3059-5325 in ``ISSN = "3059-5325-X"''. %% "testisxn.org", line 45: Invalid checksum for ISSN 3059-5325 in ``ISSN = "3059-5325-X"''. %% "testisxn.org", line 598: Invalid checksum for ISBN 1241132673 in ``ISBN = "1 241 13267 3"''. %% "testisxn.org", line 599: Invalid checksum for ISBN 250080221? in ``ISBN = "2 500 8022 1"''. %% "testisxn.org", line 600: Invalid checksum for ISBN 3-85331-623-6 in ``ISBN = "3-85331-623-6"''. %% "testisxn.org", line 601: Invalid checksum for ISBN 4-913720-72-0 in ``ISBN = "4-913720-72-0"''. %% "testisxn.org", line 602: Invalid checksum for ISBN 5948905727 in ``ISBN = "5 948905 72 7"''. %% "testisxn.org", line 603: Invalid checksum for ISBN 694890576X in ``ISBN = "6 948905 76 X"''. %% "testisxn.org", line 604: Invalid checksum for ISBN 7-03-063892-5 in ``ISBN = "7-03-063892-5"''. %% "testisxn.org", line 605: Invalid checksum for ISBN 80-7008-845-4 in ``ISBN = "80-7008-845-4"''. %% "testisxn.org", line 606: Invalid checksum for ISBN 90-70088-45-4 in ``ISBN = "90-70088-45-4"''. %% "testisxn.org", line 607: Invalid checksum for ISBN 070216231? in ``ISBN = "X-07-021623-1"''. %% "testisxn.org", line 608: Invalid checksum for ISBN 1070267510 in ``ISBN = "1-07-026751-0"''. %% "testisxn.org", line 609: Invalid checksum for ISBN 2-07-033508-7 in ``ISBN = "2-07-033508-7"''. %% "testisxn.org", line 610: Invalid checksum for ISBN 3-07-039006-1 in ``ISBN = "3-07-039006-1 (hardback), 4-07-039002-9 (paperback)"''. %% "testisxn.org", line 610: Invalid checksum for ISBN 4-07-039002-9 in ``ISBN = "3-07-039006-1 (hardback), 4-07-039002-9 (paperback)"''. %% "testisxn.org", line 611: Invalid checksum for ISBN 5-07-043109-4 in ``ISBN = "5-07-043109-4"''. %% "testisxn.org", line 612: Invalid checksum for ISBN 6078816459 in ``ISBN = "6-07-881645-9"''. %% "testisxn.org", line 613: Invalid checksum for ISBN 7070155577 in ``ISBN = "7-070-15557-7"''. %% "testisxn.org", line 614: Invalid checksum for ISBN 8080307132 in ``ISBN = "8-08-030713-2"''. %% "testisxn.org", line 615: Invalid checksum for ISBN 91-20-79062-9 in ``ISBN = "91-20-79062-9"''. %% "testisxn.org", line 616: Invalid checksum for ISBN 121176452? in ``ISBN = "X-12-117645-2"''. %% "testisxn.org", line 617: Invalid checksum for ISBN 1121176509 in ``ISBN = "1-12-117650-9"''. %% "testisxn.org", line 618: Invalid checksum for ISBN 2-12-117650-9 in ``ISBN = "2-12-117650-9"''. %% "testisxn.org", line 621: Invalid checksum for ISBN 2????????? in ``ISBN = "2"''. %% "testisxn.org", line 622: Invalid checksum for ISBN 21???????? in ``ISBN = "2-1"''. %% "testisxn.org", line 623: Invalid checksum for ISBN 212??????? in ``ISBN = "2-12"''. %% "testisxn.org", line 624: Invalid checksum for ISBN 2121?????? in ``ISBN = "2-12-1"''. %% "testisxn.org", line 625: Invalid checksum for ISBN 21211????? in ``ISBN = "2-12-11"''. %% "testisxn.org", line 626: Invalid checksum for ISBN 212117???? in ``ISBN = "2-12-117"''. %% "testisxn.org", line 627: Invalid checksum for ISBN 2121176??? in ``ISBN = "2-12-1176"''. %% "testisxn.org", line 628: Invalid checksum for ISBN 21211765?? in ``ISBN = "2-12-11765"''. %% "testisxn.org", line 629: Invalid checksum for ISBN 212117650? in ``ISBN = "2-12-117650"''. %% "testisxn.org", line 630: Invalid checksum for ISBN 2-12-117650-9 in ``ISBN = "2-12-117650-9X"''. %% "testisxn.org", line 630: Invalid checksum for ISBN 2-12-117650-9 in ``ISBN = "2-12-117650-9X"''. bibclean-2.11.4.1.orig/isbn.c0000644000175200017520000006103406721007054014772 0ustar debiandebian/*********************************************************************** @C-file{ author = "Nelson H. F. Beebe", version = "1.01", date = "09 May 1998", time = "22:56:42 MDT", filename = "isbn.c", address = "Center for Scientific Computing University of Utah Department of Mathematics, 322 INSCC 155 S 1400 E RM 233 Salt Lake City, UT 84112-0090 USA", telephone = "+1 801 581 5254", FAX = "+1 801 585 1640, +1 801 581 4148", URL = "http://www.math.utah.edu/~beebe", checksum = "54390 923 3137 25116", email = "beebe@math.utah.edu, beebe@acm.org, beebe@ieee.org (Internet)", codetable = "ISO/ASCII", keywords = "bibliography, ISBN, hyphenation", supported = "yes", docstring = "This file contains code for hyphenating International Standard Book Numbers (ISBNs), using the function ISBN_hyphenate(s,t,maxs). No other public objects are defined by this file. If this file is compiled with the preprocessor symbol TEST defined, then a standalone program is produced that can be used to filter test data containing ISBN key/value pairs extracted from BibTeX files. For example, the UNIX commands bibclean -no-warn -max-width 0 *.bib | \ grep '^ *ISBN *=' >tmpfile sed -e 's/-//g' tmpfile | ./isbn | diff tmpfile - should display no differences in ISBN numbers, except where their hyphenation was originally incorrect, or missing. The checksum field above contains a CRC-16 checksum as the first value, followed by the equivalent of the standard UNIX wc (word count) utility output of lines, words, and characters. This is produced by Robert Solovay's checksum utility.", } ***********************************************************************/ #include #include "xstdlib.h" #include "xstring.h" #include "xctype.h" RCSID("$Id: isbn.c,v 1.4 1999/05/20 13:27:53 beebe Exp beebe $") #define isISBNdigit(c) (isdigit(c) || ((c) == 'X') || ((c) == 'x')) #define MAX_ISBN 14 /* array size for complete ISBN and terminal NUL */ void ISBN_hyphenate ARGS((char *s_,char *t_,size_t maxs_)); static const char *fix_ISBN ARGS((const char *ISBN_)); static const char *hyphenate_one_ISBN ARGS((const char *prefix_, const char *ISBN_)); static int in_ISBN_range ARGS((const char *begin_, const char *ISBN_, const char *end_)); static const char *next_ISBN ARGS((const char *s_, const char **end_)); static void squeeze_ISBN ARGS((char * out_ISBN_, const char *in_ISBN_)); #if defined(TEST) #define MAX_BUF 4096 int main ARGS((int argc_, char* argv_[])); #if defined(HAVE_STDC) int main(int argc, char* argv[]) #else int main(argc,argv) int argc; char* argv[]; #endif { char buf[MAX_BUF]; char buf2[MAX_BUF]; while (fgets(buf,MAX_BUF,stdin) != (char*)NULL) { ISBN_hyphenate(buf,buf2,MAX_BUF); (void)fputs(buf,stdout); (void)fflush(stdout); } exit (EXIT_SUCCESS); return (EXIT_SUCCESS); } #endif /* defined(TEST) */ #if defined(HAVE_STDC) static const char * next_ISBN(const char *s,const char **next) #else /* K&R style */ static const char * next_ISBN(s,next) const char *s; const char **next; #endif { size_t n; const char *start; while (*s) /* scan over s[] */ { for ( ; *s && !isISBNdigit(*s); ++s) /* ignore non-ISBN digits */ /* NO-OP */; for (n = 0, start = s; *s; ++s) /* scan over ISBN */ { if (isISBNdigit(*s)) { n++; if (n == 10) /* then we found an ISBN */ { *next = s + 1; return (start); } } else if ((*s == ' ') || (*s == '-')) /* NO-OP */; else break; } } *next = (const char*)NULL; return ((const char*)NULL); /* no ISBN recognized */ } /******************************************************************* NB: We intentionally include the hyphen that separates the countrygroupnumber from the publishernumber, in order to improve readability, even though this complicates the processing in ISBN-in-rangep. Given the position of that hyphen, we automatically compute the required hyphen positions. *******************************************************************/ #if defined(HAVE_STDC) static const char * fix_ISBN(const char *ISBN) #else /* K&R style */ static const char * fix_ISBN(ISBN) const char *ISBN; #endif { size_t i; static struct { const char *begin; const char *end; } ISBN_range[] = { /* Australia, Canada (English), Gibraltar, Ireland, New Zealand, South Africa, Swaziland, United Kingdom, United States of America, Zimbabwe */ { "0-00", "0-19" }, { "0-200", "0-698" }, { "0-7000", "0-8499" }, { "0-85000", "0-89997" }, { "0-900000", "0-949999" }, { "0-9500000", "0-9801223" }, /* Australia, Canada (English), Gibraltar, Ireland, New Zealand, South Africa, Swaziland, United Kingdom, United States of America, Zimbabwe */ { "1-55000", "1-86957" }, { "1-869800", "1-895682" }, /* Belgium, Canada (French), France, Luxembourg, Switzerland (French) */ { "2-01", "2-19" }, { "2-200", "2-607" }, { "2-7000", "2-8317" }, { "2-84001", "2-89436" }, { "2-900000", "2-940028" }, { "2-9500000", "2-9900003" }, /* Austria, Germany, Switzerland (German) */ { "3-01", "3-19" }, { "3-201", "3-633" }, { "3-7001", "3-8252" }, { "3-85001", "3-89524" }, { "3-900001", "3-929031" }, { "3-9500000", "3-9802964" }, /* Japan */ { "4-00", "4-19" }, { "4-250", "4-657" }, { "4-7500", "4-8470" }, { "4-87000", "4-89829" }, { "4-900000", "4-949999" }, /* Azerbaijan, Belarus, Commonwealth of Independent States, Estonia, Georgia, Kazakhstan, Kyrgyzstan, Latvia, Lithuania, Tajikistan, Turkmenistan, Uzbekistan */ { "5-01", "5-12" }, { "5-200", "5-690" }, { "5-7000", "5-8396" }, { "5-85001", "5-89996" }, { "5-900165", "5-900850" }, /* No 6- ISBN assignments */ /* China */ { "7-00", "7-04" }, { "7-100", "7-314" }, { "7-5000", "7-5639" }, { "7-80000", "7-81035" }, { "7-900000", "7-900000" }, /* Czechoslovakia (Czech Republic, Slovakia) */ { "80-00", "80-09" }, { "80-200", "80-236" }, { "80-7000", "80-7151" }, { "80-85000", "80-85529" }, { "80-900075", "80-901081" }, /* India */ { "81-200", "81-648" }, { "81-7000", "81-7266" }, { "81-85000", "81-85690" }, { "81-900000", "81-900211" }, /* Norway */ { "82-400", "82-599" }, { "82-7000", "82-7661" }, { "82-90000", "82-91769" }, { "82-990000", "82-992517" }, /* Poland */ { "83-00", "83-11" }, { "83-200", "83-233" }, { "83-7000", "83-7080" }, { "83-85000", "83-85541" }, { "83-900000", "83-900482" }, /* Spain */ { "84-00", "84-07" }, { "84-200", "84-699" }, { "84-7000", "84-8420" }, { "84-85000", "84-89600" }, /* Brazil */ { "85-00", "85-17" }, { "85-200", "85-341" }, { "85-7000", "85-7261" }, { "85-85000", "85-85457" }, { "85-900000", "85-900051" }, /* Bosnia and Herzegovina, Croatia, Macedonia, Slovenia, Yugoslavia */ { "86-03", "86-27" }, { "86-301", "86-455" }, { "86-7001", "86-7861" }, { "86-80001", "86-82045" }, { "86-900941", "86-901289" }, /* Denmark */ { "87-00", "87-20" }, { "87-411", "87-611" }, { "87-7000", "87-7799" }, { "87-85001", "87-89796" }, { "87-980000", "87-997202" }, /* Italy, Switzerland (Italian) */ { "88-00", "88-19" }, { "88-200", "88-461" }, { "88-7000", "88-8402" }, { "88-81785", "88-86065" }, /* Republic of Korea */ { "89-0", "89-0" /* <--no assignments yet */ }, /* Belgium (Flemish), Netherlands */ { "90-00", "90-18" }, { "90-200", "90-449" }, { "90-5000", "90-6999" }, { "90-70000", "90-74319" }, { "90-800000", "90-800868" }, /* Sweden */ { "91-0", "91-1" }, { "91-20", "91-48" }, { "91-500", "91-632" }, { "91-7000", "91-7998" }, { "91-85002", "91-88356" }, { "91-970000", "91-992083" }, /* International Publishers (UNESCO) */ { "92-0", "92-5" }, { "92-61", "92-77" }, { "92-800", "92-891" }, { "92-9001", "92-9117" }, /* India */ { "93-0", "93-0" /* <--no assignments yet */ }, /* Argentina */ { "950-00", "950-47" }, { "950-500", "950-795" }, { "950-9000", "950-9899" }, { "950-99000", "950-99949" }, /* Finland */ { "951-0", "951-1" }, { "951-20", "951-54" }, { "951-550", "951-889" }, { "951-8900", "951-9498" }, { "951-95000", "951-96448" }, /* Finland */ { "952-90", "952-90" }, { "952-6666", "952-6666" }, { "952-9500", "952-9714" }, /* Croatia (publisher range unknown) */ { "953-00", "953-99" }, /* Bulgaria */ { "954-0", "954-0" /* <--no assignments yet */ }, /* Sri Lanka */ { "955-20", "955-28" }, { "955-550", "955-616" }, { "955-9000", "955-9151" }, { "955-95000", "955-95444" }, /* Chile */ { "956-10", "956-19" }, { "956-200", "956-266" }, { "956-7000", "956-7205" }, /* Taiwan (Republic of China) */ { "957-05", "957-43" }, { "957-500", "957-685" }, { "957-8500", "957-9699" }, /* Colombia */ { "958-02", "958-32" }, { "958-600", "958-656" }, { "958-9000", "958-9285" }, { "958-95001", "958-95343" }, /* Cuba */ { "959-00", "959-13" }, { "959-200", "959-216" }, { "959-7000", "959-7033" }, /* Greece */ { "960-00", "960-12" }, { "960-200", "960-433" }, { "960-7000", "960-8499" }, { "960-85000", "960-85203" }, /* Slovenia (publisher range unknown) */ { "961-00", "961-99" }, /* Hong Kong */ { "962-00", "962-19" }, { "962-201", "962-474" }, { "962-7001", "962-7646" }, /* Hungary */ { "963-00", "963-18" }, { "963-200", "963-892" }, { "963-700", "963-8481" }, { "963-85000", "963-85084" }, /* Iran (publisher range unknown) */ { "964-00", "964-99" }, /* Israel */ { "965-01", "965-19" }, { "965-207", "965-442" }, /* Ukraine (publisher range unknown) */ { "966-00", "966-99" }, /* Malaysia */ { "967-60", "967-89" }, { "967-900", "967-989" }, { "967-9900", "967-9989" }, { "967-99901", "967-99999" }, /* Mexico */ { "968-10", "968-39" }, { "968-400", "968-899" }, { "968-6000", "968-7275" }, /* Pakistan */ { "969-0", "969-1" }, { "969-26", "969-39" }, { "969-400", "969-473" }, { "969-8000", "969-8159" }, /* Mexico */ { "970-05", "970-10" }, { "970-604", "970-619" }, { "970-91000", "970-91074" }, /* Philippines */ { "971-06", "971-36" }, { "971-500", "971-631" }, { "971-8500", "971-8819" }, { "971-91000", "971-91273" }, /* Portugal */ { "972-0", "972-1" }, { "972-20", "972-50" }, { "972-550", "972-722" }, { "972-8004", "972-9499" }, { "972-95000", "972-97520" }, /* Romania */ { "973-21", "973-49" }, { "973-550", "973-682" }, { "973-9000", "973-9134" }, { "973-95000", "973-95521" }, /* Thailand */ { "974-00", "974-10" }, { "974-200", "974-685" }, { "974-7000", "974-8499" }, { "974-85000", "974-88000" }, /* Turkey */ { "975-09", "975-19" }, { "975-345", "975-554" }, { "975-7402", "975-7797" }, { "975-95384", "975-96606" }, /* Caribbean Community (CARICOM): Antigua, Bahamas, Barbados, */ /* Belize, Dominica, Grenada, Guyana, Jamaica, Montserrat, Saint */ /* Kitts and Nevis, Saint Lucia, Saint Vincent, Trinidad and Tobago */ { "976-40", "976-42" }, { "976-600", "976-636" }, { "976-8000", "976-8105" }, /* Egypt */ { "977-01", "977-17" }, { "977-200", "977-457" }, { "977-5000", "977-5235" }, /* Nigeria */ { "978-000", "978-199" }, { "978-2000", "978-2887" }, { "978-30000", "978-31118" }, /* Indonesia */ { "979-400", "979-557" }, { "979-8000", "979-8322" }, /* Venezuela */ { "980-00", "980-07" }, { "980-200", "980-316" }, { "980-6001", "980-6303" }, /* Singapore */ { "981-00", "981-03" }, { "981-200", "981-215" }, { "981-3000", "981-3099" }, /* South Pacific, Cook Islands, Fiji, Kiribati, Nauru, Niue, */ /* Solomon Islands, Tokelau, Tonga, Tuvalu, Vanuatu, Samoa */ { "982-01", "982-03" }, { "982-100", "982-500" }, /* Malaysia */ { "983-60", "983-73" }, { "983-800", "983-899" }, { "983-9000", "983-9750" }, { "983-99382", "983-99747" }, /* Bangladesh */ { "984-01", "984-30" }, { "984-400", "984-556" }, { "984-8005", "984-8085" }, /* Belarus (publisher range unknown) */ { "985-00", "985-99" }, /* Argentina */ { "987-0", "987-0" /* <--no assignments yet */ }, /* Libya (publisher range unknown) */ { "9959-0", "9959-9" }, /* Algeria (publisher range unknown) */ { "9961-0", "9961-9" }, /* Panama (publisher range unknown) */ { "9962-0", "9962-9" }, /* Cyprus */ { "9963-0", "9963-1" }, { "9963-30", "9963-44" }, { "9963-550", "9963-599" }, { "9963-7500", "9963-7846" }, /* Ghana */ { "9964-0", "9964-6" }, { "9964-70", "9964-94" }, { "9964-950", "9964-990" }, /* Kazakhstan (publisher range unknown) */ { "9965-0", "9965-9" }, /* Kenya */ { "9966-20", "9966-49" }, { "9966-830", "9966-882" }, { "9966-9840", "9966-9874" }, /* Kyrgyzstan (publisher range unknown) */ { "9967-0", "9967-9" }, /* Costa Rica */ { "9968-9702", "9968-9703" }, /* Uganda (publisher range unknown) */ { "9970-0", "9970-9" }, /* Singapore */ { "9971-0", "9971-4" }, { "9971-60", "9971-89" }, { "9971-900", "9971-989" }, { "9971-9900", "9971-9924" }, /* Peru (publisher range unknown) */ { "9972-0", "9972-9" }, /* Tunisia */ { "9973-10", "9973-18" }, { "9973-700", "9973-925" }, { "9973-9700", "9973-9918" }, /* Uruguay */ { "9974-0", "9974-0" }, { "9974-30", "9974-36" }, { "9974-550", "9974-580" }, { "9974-7500", "9974-7505" }, /* Moldova (publisher range unknown) */ { "9975-0", "9975-9" }, /* Tanzania */ { "9976-1", "9976-5" }, { "9976-60", "9976-84" }, { "9976-900", "9976-988" }, { "9976-9990", "9976-9992" }, /* Costa Rica */ { "9977-00", "9977-89" }, { "9977-900", "9977-989" }, { "9977-9900", "9977-9999" }, /* Ecuador */ { "9978-57", "9978-99" }, { "9978-951", "9978-971" }, { "9978-9904", "9978-9910" }, /* Iceland */ { "9979-1", "9979-4" }, { "9979-50", "9979-57" }, { "9979-800", "9979-827" }, { "9979-9000", "9979-9067" }, /* Papua New Guinea */ { "9980-0", "9980-1" }, { "9980-54", "9980-84" }, { "9980-900", "9980-915" }, /* Morocco */ { "9981-0", "9981-0" /* <-- no assignments yet */ }, /* Zambia */ { "9982-00", "9982-30" }, { "9982-800", "9982-815" }, { "9982-9900", "9982-9900" }, /* Gambia */ { "9983-85", "9983-87" }, { "9983-9900", "9983-9901" }, /* Latvia (publisher range unknown) */ { "9984-0", "9984-9" }, /* Estonia (publisher range unknown) */ { "9985-0", "9985-9" }, /* Lithuania (publisher range unknown) */ { "9986-0", "9986-9" }, /* Tanzania */ { "9987-30", "9987-30" }, { "9987-550", "9987-583" }, { "9987-8800", "9987-8823" }, /* Ghana */ { "9988-0", "9988-0" /* <--no assignments yet */ }, /* Macedonia (publisher range unknown) */ { "9989-0", "9989-9" }, /* Mauritius */ { "99903-0", "99903-0" /* <--no assignments yet */ }, /* Netherlands Antilles */ { "99904-0", "99904-4" }, { "99904-60", "99904-65" }, { "99904-900", "99904-917" }, /* Malawi */ { "99908-11", "99908-29" }, { "99908-900", "99908-900" }, /* Malta (publisher range unknown) */ { "99909-0", "99909-9" }, /* Lesotho */ { "99911-00", "99911-32" }, { "99911-600", "99911-860" }, /* Botswana */ { "99912-0", "99912-5" }, { "99912-60", "99912-79" }, { "99912-900", "99912-900" }, /* Andorra */ { "99913-0", "99913-0" /* <--no assignments yet */ }, /* Suriname */ { "99914-0", "99914-4" }, { "99914-50", "99914-58" }, { "99914-900", "99914-927" }, /* Maldives */ { "99915-0", "99915-3" }, { "99915-50", "99915-78" }, { "99915-800", "99915-830" }, /* Namibia */ { "99916-1", "99916-1" }, { "99916-30", "99916-35" }, { "99916-700", "99916-704" }, /* Benin (publisher range unknown) */ { "99919-0", "99919-9" }, /* Andorra */ { "99920-0", "99920-2" }, { "99920-50", "99920-55" }, { "99920-900", "99920-904" }, /* Qatar (publisher range unknown) */ { "99921-0", "99921-9" }, /* Guatemala (publisher range unknown) */ { "99922-0", "99922-9" }, /* Nicaragua (publisher range unknown) */ { "99924-0", "99924-9" }, /* From http://www.bowker.com/standards/home/isbn/international/hyphenation-instructions.html The publisher prefix ranges in the English group (U.S., U.K., Canada, Australia, New Zealand, etc) are as follows: Group If Number Ranges Insert Hyphens Identifier "0" are Between After ------------------------------------------------------------------- 00.......19 00-19 1st 3rd 9th digit 200......699 20-69 " 4th " 7000.....8499 70-84 " 5th " 85000....89999 85-89 " 6th " 900000...949999 90-94 " 7th " 9500000..9999999 95-99 " 8th " Group If Number Ranges Insert Hyphens Identifier "1" are Between After ------------------------------------------------------------------- 55000....86979 5500-8697 1st 6th 9th digit 869800...998999 8698-9989 " 7th " 9990000..9999999 9990-9999 " 8th " The following table gives the range distribution of the group identifiers: 0 - 7 80 - 94 950 - 995 9960 - 9989 99900 - 99999 These ranges are already partially covered by ranges above, but we include them here for completeness, unless they are identical to one above, in which case, they are commented out. I have yet to find comparable data for other language groups. */ /* { "0-00", "0-19" }, */ { "0-200", "0-699" }, /* { "0-7000", "0-8499" }, */ { "0-85000", "0-89999" }, /* { "0-900000", "0-949999" }, */ { "0-9500000", "0-9999999" }, { "1-55000", "1-86979" }, { "1-869800", "1-998999" }, { "1-9990000", "1-9999999" }, { (const char*)NULL, (const char*)NULL } }; for (i = 0; (ISBN_range[i].begin != (const char*)NULL); ++i) { if (in_ISBN_range(ISBN_range[i].begin, ISBN, ISBN_range[i].end) == 0) return (hyphenate_one_ISBN(ISBN_range[i].begin, ISBN)); } return ((const char*)NULL); } #define skip_non_ISBN_digit(p) while (*p && !isISBNdigit(*p)) p++ #if defined(HAVE_STDC) static const char * hyphenate_one_ISBN(const char *prefix, const char *ISBN) #else /* K&R style */ static const char * hyphenate_one_ISBN(prefix,ISBN) const char *prefix; const char *ISBN; #endif { /******************************************************************* Given a countrygroupnumber-publishernumber prefix, and an ISBN optionally containing spaces and hyphens, return a pointer to an unmodifiable properly-hyphenated ISBN stored in an internal buffer that is overwritten on subsequent calls, or NULL if the correct number of ISBN digits is not found. The input ISBN can contain optional leading and trailing text, such as a line from a BibTeX .bib file, like this: ISBN = "0-387-09823-2 (paperback)", ******************************************************************/ static char new_ISBN[MAX_ISBN]; int k; skip_non_ISBN_digit(ISBN); for (k = 0; *ISBN && (k < (MAX_ISBN - 2)); ) { if (*prefix == '-') { new_ISBN[k++] = '-'; prefix++; } else if (*prefix) { skip_non_ISBN_digit(ISBN); if (*ISBN == '\0') break; new_ISBN[k++] = *ISBN++; prefix++; if ((*prefix == '\0') && (k < MAX_ISBN)) new_ISBN[k++] = '-'; } else /* past prefix */ { skip_non_ISBN_digit(ISBN); if (*ISBN == '\0') break; new_ISBN[k++] = *ISBN++; } } if ((k == (MAX_ISBN - 2)) && !isISBNdigit(*ISBN)) { new_ISBN[(MAX_ISBN - 2)] = new_ISBN[(MAX_ISBN - 3)]; /* move checksum digit to end */ new_ISBN[(MAX_ISBN - 3)] = '-'; /* prefix it with a hyphen */ new_ISBN[(MAX_ISBN - 1)] = '\0'; /* terminate the string */ return ((const char*)&new_ISBN[0]); } else return ((const char*)NULL); } #if defined(HAVE_STDC) void ISBN_hyphenate(char *s,char *t,size_t maxs) #else /* K&R style */ void ISBN_hyphenate(s,t,maxs) char *s; char *t; size_t maxs; #endif { const char *p; const char *r; const char *next; const char *start; /* Given a string s[] containing one or more ISBNs, rewrite the */ /* string in-place with correct ISBN hyphenation. Up to maxs-1 */ /* non-NUL characters of s[] may be used. t[] is workspace, at */ /* least as large as s[]. If insufficient workspace is */ /* available, s[] is returned unchanged. */ t[0] = '\0'; #if defined(__WATCOMC__) /* Watcom 10.0 C++ compilers on IBM PC cannot handle the original version, which was written that way to avoid compiler warnings, sigh... */ for (p = start = s; (p = next_ISBN(p,&next)) != (const char*)NULL; start = p) #else for (p = start = s; (p = next_ISBN(p,&next), p) != (const char*)NULL; start = p) #endif { if ((strlen(t) + (size_t)(p-start)) >= maxs) return; /* insufficient space: premature return */ (void)strncat(t,start,(size_t)(p-start)); r = fix_ISBN(p); if (r != (char*)NULL) { if ((strlen(t) + strlen(r)) >= maxs) return; /* insufficient space: premature return */ (void)strcat(t,r); p = next; } else { if ((strlen(t) + 1) >= maxs) return; /* insufficient space: premature return */ (void)strncat(t,p,1); ++p; } } if ((strlen(t) + strlen(start)) >= maxs) return; /* insufficient space: premature return */ (void)strcat(t,start); (void)strcpy(s,t); } #if defined(HAVE_STDC) static int in_ISBN_range(const char *begin, const char *ISBN, const char *end) #else /* K&R style */ static int in_ISBN_range(begin,ISBN,end) const char *begin; const char *ISBN; const char *end; #endif { /* Compare the countrygroupnumber-publishernumber part of ISBN against the range (begin, end), and return -1 (less than), 0 (in range), or +1 (greater than). */ char begin_prefix[MAX_ISBN]; char end_prefix[MAX_ISBN]; char ISBN_prefix[MAX_ISBN]; squeeze_ISBN(begin_prefix, begin); squeeze_ISBN(ISBN_prefix,ISBN); if (strncmp(ISBN_prefix,begin_prefix,strlen(begin_prefix)) < 0) return (-1); squeeze_ISBN(end_prefix,end); if (strncmp(end_prefix,ISBN_prefix,strlen(end_prefix)) < 0) return (1); return (0); } #if defined(HAVE_STDC) static void squeeze_ISBN(char * out_ISBN, const char *in_ISBN) #else /* K&R style */ static void squeeze_ISBN(out_ISBN,in_ISBN) char * out_ISBN; const char *in_ISBN; #endif { /* Copy in_ISBN to out_ISBN, eliminating non-ISBN characters */ char *limit = out_ISBN + MAX_ISBN; for ( ; out_ISBN < limit ; ) { skip_non_ISBN_digit(in_ISBN); *out_ISBN = *in_ISBN; if (*in_ISBN == '\0') break; in_ISBN++; out_ISBN++; } } bibclean-2.11.4.1.orig/testcodn.eok0000644000175200017520000016727106140704201016221 0ustar debiandebian%% "testcodn.org", line 242: Invalid checksum for CODEN CMBUA9 in ``CODEN = "CMBUA9"''. %% "testcodn.org", line 295: Invalid checksum for CODEN CPCPAI in ``CODEN = "CPCPAI"''. %% "testcodn.org", line 387: Invalid checksum for CODEN EDNSBM in ``CODEN = "EDNSBM"''. %% "testcodn.org", line 493: Invalid checksum for CODEN IEEECA in ``CODEN = "IEEECA"''. %% "testcodn.org", line 585: Invalid checksum for CODEN IPJIEI in ``CODEN = "IPJIEI"''. %% "testcodn.org", line 615: Invalid checksum for CODEN itmeer in ``CODEN = "itmeer"''. %% "testcodn.org", line 616: Invalid checksum for CODEN itmgex in ``CODEN = "itmgex"''. %% "testcodn.org", line 618: Invalid checksum for CODEN itnnep in ``CODEN = "itnnep"''. %% "testcodn.org", line 619: Invalid checksum for CODEN itpidj in ``CODEN = "itpidj"''. %% "testcodn.org", line 620: Invalid checksum for CODEN itpred in ``CODEN = "itpred"''. %% "testcodn.org", line 621: Invalid checksum for CODEN itpseg in ``CODEN = "itpseg"''. %% "testcodn.org", line 622: Invalid checksum for CODEN itrdde in ``CODEN = "itrdde"''. %% "testcodn.org", line 623: Invalid checksum for CODEN iumjab in ``CODEN = "iumjab"''. %% "testcodn.org", line 624: Invalid checksum for CODEN ivjodl in ``CODEN = "ivjodl"''. %% "testcodn.org", line 626: Invalid checksum for CODEN izamat in ``CODEN = "izamat"''. %% "testcodn.org", line 627: Invalid checksum for CODEN jacgar in ``CODEN = "jacgar"''. %% "testcodn.org", line 628: Invalid checksum for CODEN jacoah in ``CODEN = "jacoah"''. %% "testcodn.org", line 629: Invalid checksum for CODEN jacsat in ``CODEN = "jacsat"''. %% "testcodn.org", line 630: Invalid checksum for CODEN jactaw in ``CODEN = "jactaw"''. %% "testcodn.org", line 631: Invalid checksum for CODEN jaecet in ``CODEN = "jaecet"''. %% "testcodn.org", line 632: Invalid checksum for CODEN jahsak in ``CODEN = "jahsak"''. %% "testcodn.org", line 635: Invalid checksum for CODEN jamaap in ``CODEN = "jamaap"''. %% "testcodn.org", line 636: Invalid checksum for CODEN jamads in ``CODEN = "jamads"''. %% "testcodn.org", line 637: Invalid checksum for CODEN jamcav in ``CODEN = "jamcav"''. %% "testcodn.org", line 638: Invalid checksum for CODEN jammdu in ``CODEN = "jammdu"''. %% "testcodn.org", line 639: Invalid checksum for CODEN japgbp in ``CODEN = "japgbp"''. %% "testcodn.org", line 640: Invalid checksum for CODEN japiau in ``CODEN = "japiau"''. %% "testcodn.org", line 641: Invalid checksum for CODEN jareew in ``CODEN = "jareew"''. %% "testcodn.org", line 642: Invalid checksum for CODEN jasman in ``CODEN = "jasman"''. %% "testcodn.org", line 643: Invalid checksum for CODEN jatsdf in ``CODEN = "jatsdf"''. %% "testcodn.org", line 644: Invalid checksum for CODEN jaumax in ``CODEN = "jaumax"''. %% "testcodn.org", line 645: Invalid checksum for CODEN jaxtaz in ``CODEN = "jaxtaz"''. %% "testcodn.org", line 646: Invalid checksum for CODEN jbbmdg in ``CODEN = "jbbmdg"''. %% "testcodn.org", line 648: Invalid checksum for CODEN jbditd in ``CODEN = "jbditd"''. %% "testcodn.org", line 649: Invalid checksum for CODEN jbmrej in ``CODEN = "jbmrej"''. %% "testcodn.org", line 651: Invalid checksum for CODEN jcaleg in ``CODEN = "jcaleg"''. %% "testcodn.org", line 652: Invalid checksum for CODEN jcamdi in ``CODEN = "jcamdi"''. %% "testcodn.org", line 657: Invalid checksum for CODEN jcchdd in ``CODEN = "jcchdd"''. %% "testcodn.org", line 659: Invalid checksum for CODEN jcinao in ``CODEN = "jcinao"''. %% "testcodn.org", line 663: Invalid checksum for CODEN jcllax in ``CODEN = "jcllax"''. %% "testcodn.org", line 664: Invalid checksum for CODEN jcmbdb in ``CODEN = "jcmbdb"''. %% "testcodn.org", line 665: Invalid checksum for CODEN jcmiex in ``CODEN = "jcmiex"''. %% "testcodn.org", line 666: Invalid checksum for CODEN jcmmeb in ``CODEN = "jcmmeb"''. %% "testcodn.org", line 667: Invalid checksum for CODEN jcmtdv in ``CODEN = "jcmtdv"''. %% "testcodn.org", line 668: Invalid checksum for CODEN jcnrev in ``CODEN = "jcnrev"''. %% "testcodn.org", line 670: Invalid checksum for CODEN jcpadn in ``CODEN = "jcpadn"''. %% "testcodn.org", line 672: Invalid checksum for CODEN jcrgae in ``CODEN = "jcrgae"''. %% "testcodn.org", line 673: Invalid checksum for CODEN jcssbm in ``CODEN = "jcssbm"''. %% "testcodn.org", line 674: Invalid checksum for CODEN jcssep in ``CODEN = "jcssep"''. %% "testcodn.org", line 675: Invalid checksum for CODEN jcteem in ``CODEN = "jcteem"''. %% "testcodn.org", line 676: Invalid checksum for CODEN jcthar in ``CODEN = "jcthar"''. %% "testcodn.org", line 677: Invalid checksum for CODEN jctpah in ``CODEN = "jctpah"''. %% "testcodn.org", line 678: Invalid checksum for CODEN jdadex in ``CODEN = "jdadex"''. %% "testcodn.org", line 679: Invalid checksum for CODEN jdeqak in ``CODEN = "jdeqak"''. %% "testcodn.org", line 680: Invalid checksum for CODEN jdgeas in ``CODEN = "jdgeas"''. %% "testcodn.org", line 681: Invalid checksum for CODEN jdimew in ``CODEN = "jdimew"''. %% "testcodn.org", line 682: Invalid checksum for CODEN jdocas in ``CODEN = "jdocas"''. %% "testcodn.org", line 683: Invalid checksum for CODEN jdsmaa in ``CODEN = "jdsmaa"''. %% "testcodn.org", line 684: Invalid checksum for CODEN jeaiel in ``CODEN = "jeaiel"''. %% "testcodn.org", line 685: Invalid checksum for CODEN jebiam in ``CODEN = "jebiam"''. %% "testcodn.org", line 688: Invalid checksum for CODEN jedrap in ``CODEN = "jedrap"''. %% "testcodn.org", line 689: Invalid checksum for CODEN jeemaf in ``CODEN = "jeemaf"''. %% "testcodn.org", line 690: Invalid checksum for CODEN jemied in ``CODEN = "jemied"''. %% "testcodn.org", line 692: Invalid checksum for CODEN jenmdt in ``CODEN = "jenmdt"''. %% "testcodn.org", line 693: Invalid checksum for CODEN jepcea in ``CODEN = "jepcea"''. %% "testcodn.org", line 694: Invalid checksum for CODEN jezoao in ``CODEN = "jezoao"''. %% "testcodn.org", line 696: Invalid checksum for CODEN jfuaaw in ``CODEN = "jfuaaw"''. %% "testcodn.org", line 697: Invalid checksum for CODEN jganeg in ``CODEN = "jganeg"''. %% "testcodn.org", line 698: Invalid checksum for CODEN jgmian in ``CODEN = "jgmian"''. %% "testcodn.org", line 699: Invalid checksum for CODEN jgopeo in ``CODEN = "jgopeo"''. %% "testcodn.org", line 700: Invalid checksum for CODEN jgplad in ``CODEN = "jgplad"''. %% "testcodn.org", line 702: Invalid checksum for CODEN jgthdo in ``CODEN = "jgthdo"''. %% "testcodn.org", line 703: Invalid checksum for CODEN jhaddq in ``CODEN = "jhaddq"''. %% "testcodn.org", line 705: Invalid checksum for CODEN jietau in ``CODEN = "jietau"''. %% "testcodn.org", line 707: Invalid checksum for CODEN jiprde in ``CODEN = "jiprde"''. %% "testcodn.org", line 708: Invalid checksum for CODEN jirral in ``CODEN = "jirral"''. %% "testcodn.org", line 709: Invalid checksum for CODEN jiscdi in ``CODEN = "jiscdi"''. %% "testcodn.org", line 710: Invalid checksum for CODEN jjatdk in ``CODEN = "jjatdk"''. %% "testcodn.org", line 713: Invalid checksum for CODEN jlcmak in ``CODEN = "jlcmak"''. %% "testcodn.org", line 714: Invalid checksum for CODEN jllien in ``CODEN = "jllien"''. %% "testcodn.org", line 715: Invalid checksum for CODEN jlmsak in ``CODEN = "jlmsak"''. %% "testcodn.org", line 717: Invalid checksum for CODEN jmanak in ``CODEN = "jmanak"''. %% "testcodn.org", line 718: Invalid checksum for CODEN jmapaq in ``CODEN = "jmapaq"''. %% "testcodn.org", line 719: Invalid checksum for CODEN jmbbbo in ``CODEN = "jmbbbo"''. %% "testcodn.org", line 720: Invalid checksum for CODEN jmblaj in ``CODEN = "jmblaj"''. %% "testcodn.org", line 721: Invalid checksum for CODEN jmdeec in ``CODEN = "jmdeec"''. %% "testcodn.org", line 722: Invalid checksum for CODEN jmevau in ``CODEN = "jmevau"''. %% "testcodn.org", line 723: Invalid checksum for CODEN jmiado in ``CODEN = "jmiado"''. %% "testcodn.org", line 724: Invalid checksum for CODEN jmivek in ``CODEN = "jmivek"''. %% "testcodn.org", line 725: Invalid checksum for CODEN jmkyaz in ``CODEN = "jmkyaz"''. %% "testcodn.org", line 726: Invalid checksum for CODEN jmobak in ``CODEN = "jmobak"''. %% "testcodn.org", line 727: Invalid checksum for CODEN jmopew in ``CODEN = "jmopew"''. %% "testcodn.org", line 728: Invalid checksum for CODEN jmpaam in ``CODEN = "jmpaam"''. %% "testcodn.org", line 733: Invalid checksum for CODEN jmvaai in ``CODEN = "jmvaai"''. %% "testcodn.org", line 734: Invalid checksum for CODEN jnbbau in ``CODEN = "jnbbau"''. %% "testcodn.org", line 735: Invalid checksum for CODEN jnbcax in ``CODEN = "jnbcax"''. %% "testcodn.org", line 736: Invalid checksum for CODEN jnbraa in ``CODEN = "jnbraa"''. %% "testcodn.org", line 737: Invalid checksum for CODEN jnciam in ``CODEN = "jnciam"''. %% "testcodn.org", line 738: Invalid checksum for CODEN jncieq in ``CODEN = "jncieq"''. %% "testcodn.org", line 740: Invalid checksum for CODEN jncsai in ``CODEN = "jncsai"''. %% "testcodn.org", line 741: Invalid checksum for CODEN jnrsds in ``CODEN = "jnrsds"''. %% "testcodn.org", line 743: Invalid checksum for CODEN joaldv in ``CODEN = "joaldv"''. %% "testcodn.org", line 744: Invalid checksum for CODEN joamav in ``CODEN = "joamav"''. %% "testcodn.org", line 746: Invalid checksum for CODEN jobaay in ``CODEN = "jobaay"''. %% "testcodn.org", line 747: Invalid checksum for CODEN jobiao in ``CODEN = "jobiao"''. %% "testcodn.org", line 748: Invalid checksum for CODEN jobpde in ``CODEN = "jobpde"''. %% "testcodn.org", line 749: Invalid checksum for CODEN jobsdn in ``CODEN = "jobsdn"''. %% "testcodn.org", line 751: Invalid checksum for CODEN jocreq in ``CODEN = "jocreq"''. %% "testcodn.org", line 753: Invalid checksum for CODEN jomman in ``CODEN = "jomman"''. %% "testcodn.org", line 757: Invalid checksum for CODEN joopec in ``CODEN = "joopec"''. %% "testcodn.org", line 759: Invalid checksum for CODEN jophan in ``CODEN = "jophan"''. %% "testcodn.org", line 760: Invalid checksum for CODEN josaah in ``CODEN = "josaah"''. %% "testcodn.org", line 762: Invalid checksum for CODEN josmar in ``CODEN = "josmar"''. %% "testcodn.org", line 763: Invalid checksum for CODEN josued in ``CODEN = "josued"''. %% "testcodn.org", line 764: Invalid checksum for CODEN jotabn in ``CODEN = "jotabn"''. %% "testcodn.org", line 765: Invalid checksum for CODEN joviam in ``CODEN = "joviam"''. %% "testcodn.org", line 767: Invalid checksum for CODEN jpbpdl in ``CODEN = "jpbpdl"''. %% "testcodn.org", line 769: Invalid checksum for CODEN jpdcer in ``CODEN = "jpdcer"''. %% "testcodn.org", line 771: Invalid checksum for CODEN jpetab in ``CODEN = "jpetab"''. %% "testcodn.org", line 772: Invalid checksum for CODEN jpgedd in ``CODEN = "jpgedd"''. %% "testcodn.org", line 776: Invalid checksum for CODEN jpiedn in ``CODEN = "jpiedn"''. %% "testcodn.org", line 777: Invalid checksum for CODEN jqsrae in ``CODEN = "jqsrae"''. %% "testcodn.org", line 778: Invalid checksum for CODEN jqutau in ``CODEN = "jqutau"''. %% "testcodn.org", line 779: Invalid checksum for CODEN jrarax in ``CODEN = "jrarax"''. %% "testcodn.org", line 784: Invalid checksum for CODEN jrnaad in ``CODEN = "jrnaad"''. %% "testcodn.org", line 785: Invalid checksum for CODEN jrnbag in ``CODEN = "jrnbag"''. %% "testcodn.org", line 786: Invalid checksum for CODEN jsbiem in ``CODEN = "jsbiem"''. %% "testcodn.org", line 787: Invalid checksum for CODEN jscsaj in ``CODEN = "jscsaj"''. %% "testcodn.org", line 788: Invalid checksum for CODEN jsimav in ``CODEN = "jsimav"''. %% "testcodn.org", line 789: Invalid checksum for CODEN jsinay in ``CODEN = "jsinay"''. %% "testcodn.org", line 790: Invalid checksum for CODEN jsirac in ``CODEN = "jsirac"''. %% "testcodn.org", line 791: Invalid checksum for CODEN jsomar in ``CODEN = "jsomar"''. %% "testcodn.org", line 792: Invalid checksum for CODEN jspueq in ``CODEN = "jspueq"''. %% "testcodn.org", line 793: Invalid checksum for CODEN jssaef in ``CODEN = "jssaef"''. %% "testcodn.org", line 795: Invalid checksum for CODEN jssodm in ``CODEN = "jssodm"''. %% "testcodn.org", line 796: Invalid checksum for CODEN jstbaj in ``CODEN = "jstbaj"''. %% "testcodn.org", line 797: Invalid checksum for CODEN jstnal in ``CODEN = "jstnal"''. %% "testcodn.org", line 798: Invalid checksum for CODEN jstpsb in ``CODEN = "jstpsb"''. %% "testcodn.org", line 799: Invalid checksum for CODEN jsyceh in ``CODEN = "jsyceh"''. %% "testcodn.org", line 802: Invalid checksum for CODEN jtbiap in ``CODEN = "jtbiap"''. %% "testcodn.org", line 803: Invalid checksum for CODEN jtpedi in ``CODEN = "jtpedi"''. %% "testcodn.org", line 804: Invalid checksum for CODEN jvcaeo in ``CODEN = "jvcaeo"''. %% "testcodn.org", line 807: Invalid checksum for CODEN jvsped in ``CODEN = "jvsped"''. %% "testcodn.org", line 808: Invalid checksum for CODEN jwssap in ``CODEN = "jwssap"''. %% "testcodn.org", line 809: Invalid checksum for CODEN jyceaj in ``CODEN = "jyceaj"''. %% "testcodn.org", line 812: Invalid checksum for CODEN kerneu in ``CODEN = "kerneu"''. %% "testcodn.org", line 814: Invalid checksum for CODEN kybeap in ``CODEN = "kybeap"''. %% "testcodn.org", line 815: Invalid checksum for CODEN laapaw in ``CODEN = "laapaw"''. %% "testcodn.org", line 816: Invalid checksum for CODEN latedt in ``CODEN = "latedt"''. %% "testcodn.org", line 817: Invalid checksum for CODEN lcrcao in ``CODEN = "lcrcao"''. %% "testcodn.org", line 818: Invalid checksum for CODEN lcsrea in ``CODEN = "lcsrea"''. %% "testcodn.org", line 820: Invalid checksum for CODEN linmec in ``CODEN = "linmec"''. %% "testcodn.org", line 821: Invalid checksum for CODEN llcoei in ``CODEN = "llcoei"''. %% "testcodn.org", line 822: Invalid checksum for CODEN lmicdi in ``CODEN = "lmicdi"''. %% "testcodn.org", line 823: Invalid checksum for CODEN lmphdy in ``CODEN = "lmphdy"''. %% "testcodn.org", line 824: Invalid checksum for CODEN lmsbbt in ``CODEN = "lmsbbt"''. %% "testcodn.org", line 825: Invalid checksum for CODEN lnbmah in ``CODEN = "lnbmah"''. %% "testcodn.org", line 828: Invalid checksum for CODEN lnmlaz in ``CODEN = "lnmlaz"''. %% "testcodn.org", line 830: Invalid checksum for CODEN lscoex in ``CODEN = "lscoex"''. %% "testcodn.org", line 833: Invalid checksum for CODEN mabiar in ``CODEN = "mabiar"''. %% "testcodn.org", line 834: Invalid checksum for CODEN macwea in ``CODEN = "macwea"''. %% "testcodn.org", line 835: Invalid checksum for CODEN madeap in ``CODEN = "madeap"''. %% "testcodn.org", line 836: Invalid checksum for CODEN magaas in ``CODEN = "magaas"''. %% "testcodn.org", line 838: Invalid checksum for CODEN maindc in ``CODEN = "maindc"''. %% "testcodn.org", line 839: Invalid checksum for CODEN maioeg in ``CODEN = "maioeg"''. %% "testcodn.org", line 840: Invalid checksum for CODEN mamcau in ``CODEN = "mamcau"''. %% "testcodn.org", line 842: Invalid checksum for CODEN marear in ``CODEN = "marear"''. %% "testcodn.org", line 843: Invalid checksum for CODEN mastba in ``CODEN = "mastba"''. %% "testcodn.org", line 844: Invalid checksum for CODEN masyes in ``CODEN = "masyes"''. %% "testcodn.org", line 845: Invalid checksum for CODEN matged in ``CODEN = "matged"''. %% "testcodn.org", line 846: Invalid checksum for CODEN mazeax in ``CODEN = "mazeax"''. %% "testcodn.org", line 847: Invalid checksum for CODEN mbceev in ``CODEN = "mbceev"''. %% "testcodn.org", line 848: Invalid checksum for CODEN mbeveo in ``CODEN = "mbeveo"''. %% "testcodn.org", line 849: Invalid checksum for CODEN mbipdp in ``CODEN = "mbipdp"''. %% "testcodn.org", line 853: Invalid checksum for CODEN mcblag in ``CODEN = "mcblag"''. %% "testcodn.org", line 855: Invalid checksum for CODEN mcedda in ``CODEN = "mcedda"''. %% "testcodn.org", line 858: Invalid checksum for CODEN mcmoeg in ``CODEN = "mcmoeg"''. %% "testcodn.org", line 859: Invalid checksum for CODEN mcmpaf in ``CODEN = "mcmpaf"''. %% "testcodn.org", line 860: Invalid checksum for CODEN mcrlas in ``CODEN = "mcrlas"''. %% "testcodn.org", line 861: Invalid checksum for CODEN mcsidr in ``CODEN = "mcsidr"''. %% "testcodn.org", line 863: Invalid checksum for CODEN mcusey in ``CODEN = "mcusey"''. %% "testcodn.org", line 864: Invalid checksum for CODEN mdawah in ``CODEN = "mdawah"''. %% "testcodn.org", line 865: Invalid checksum for CODEN meacbx in ``CODEN = "meacbx"''. %% "testcodn.org", line 867: Invalid checksum for CODEN meenah in ``CODEN = "meenah"''. %% "testcodn.org", line 868: Invalid checksum for CODEN menzau in ``CODEN = "menzau"''. %% "testcodn.org", line 869: Invalid checksum for CODEN mesbel in ``CODEN = "mesbel"''. %% "testcodn.org", line 870: Invalid checksum for CODEN metaaj in ``CODEN = "metaaj"''. %% "testcodn.org", line 871: Invalid checksum for CODEN mfkaaf in ``CODEN = "mfkaaf"''. %% "testcodn.org", line 872: Invalid checksum for CODEN mggeae in ``CODEN = "mggeae"''. %% "testcodn.org", line 873: Invalid checksum for CODEN mibldr in ``CODEN = "mibldr"''. %% "testcodn.org", line 874: Invalid checksum for CODEN mimcai in ``CODEN = "mimcai"''. %% "testcodn.org", line 877: Invalid checksum for CODEN miscei in ``CODEN = "miscei"''. %% "testcodn.org", line 878: Invalid checksum for CODEN mkscas in ``CODEN = "mkscas"''. %% "testcodn.org", line 879: Invalid checksum for CODEN mlbb?? in ``CODEN = "mlbb"''. %% "testcodn.org", line 880: Invalid checksum for CODEN mmbied in ``CODEN = "mmbied"''. %% "testcodn.org", line 881: Invalid checksum for CODEN mmbybo in ``CODEN = "mmbybo"''. %% "testcodn.org", line 882: Invalid checksum for CODEN mmdeeb in ``CODEN = "mmdeeb"''. %% "testcodn.org", line 883: Invalid checksum for CODEN mmicdt in ``CODEN = "mmicdt"''. %% "testcodn.org", line 885: Invalid checksum for CODEN mmscdb in ``CODEN = "mmscdb"''. %% "testcodn.org", line 887: Invalid checksum for CODEN moeceo in ``CODEN = "moeceo"''. %% "testcodn.org", line 888: Invalid checksum for CODEN momiee in ``CODEN = "momiee"''. %% "testcodn.org", line 890: Invalid checksum for CODEN moredq in ``CODEN = "moredq"''. %% "testcodn.org", line 891: Invalid checksum for CODEN mosiea in ``CODEN = "mosiea"''. %% "testcodn.org", line 892: Invalid checksum for CODEN mpcpco in ``CODEN = "mpcpco"''. %% "testcodn.org", line 893: Invalid checksum for CODEN mpevek in ``CODEN = "mpevek"''. %% "testcodn.org", line 894: Invalid checksum for CODEN mpstdf in ``CODEN = "mpstdf"''. %% "testcodn.org", line 897: Invalid checksum for CODEN mrobeo in ``CODEN = "mrobeo"''. %% "testcodn.org", line 898: Invalid checksum for CODEN msciam in ``CODEN = "msciam"''. %% "testcodn.org", line 899: Invalid checksum for CODEN mstmbi in ``CODEN = "mstmbi"''. %% "testcodn.org", line 902: Invalid checksum for CODEN mtkaab in ``CODEN = "mtkaab"''. %% "testcodn.org", line 903: Invalid checksum for CODEN mtmnaq in ``CODEN = "mtmnaq"''. %% "testcodn.org", line 904: Invalid checksum for CODEN mtscan in ``CODEN = "mtscan"''. %% "testcodn.org", line 905: Invalid checksum for CODEN mtseat in ``CODEN = "mtseat"''. %% "testcodn.org", line 906: Invalid checksum for CODEN mttcas in ``CODEN = "mttcas"''. %% "testcodn.org", line 907: Invalid checksum for CODEN mureav in ``CODEN = "mureav"''. %% "testcodn.org", line 908: Invalid checksum for CODEN musbbs in ``CODEN = "musbbs"''. %% "testcodn.org", line 909: Invalid checksum for CODEN mvbrav in ``CODEN = "mvbrav"''. %% "testcodn.org", line 910: Invalid checksum for CODEN mweeei in ``CODEN = "mweeei"''. %% "testcodn.org", line 911: Invalid checksum for CODEN mwreab in ``CODEN = "mwreab"''. %% "testcodn.org", line 912: Invalid checksum for CODEN mycgao in ``CODEN = "mycgao"''. %% "testcodn.org", line 913: Invalid checksum for CODEN nadoaw in ``CODEN = "nadoaw"''. %% "testcodn.org", line 914: Invalid checksum for CODEN narhad in ``CODEN = "narhad"''. %% "testcodn.org", line 916: Invalid checksum for CODEN nasfeg in ``CODEN = "nasfeg"''. %% "testcodn.org", line 917: Invalid checksum for CODEN natuas in ``CODEN = "natuas"''. %% "testcodn.org", line 918: Invalid checksum for CODEN natway in ``CODEN = "natway"''. %% "testcodn.org", line 920: Invalid checksum for CODEN nbitab in ``CODEN = "nbitab"''. %% "testcodn.org", line 922: Invalid checksum for CODEN nejmag in ``CODEN = "nejmag"''. %% "testcodn.org", line 923: Invalid checksum for CODEN neredz in ``CODEN = "neredz"''. %% "testcodn.org", line 924: Invalid checksum for CODEN nessef in ``CODEN = "nessef"''. %% "testcodn.org", line 925: Invalid checksum for CODEN neuceb in ``CODEN = "neuceb"''. %% "testcodn.org", line 926: Invalid checksum for CODEN nfaddl in ``CODEN = "nfaddl"''. %% "testcodn.org", line 927: Invalid checksum for CODEN nimaer in ``CODEN = "nimaer"''. %% "testcodn.org", line 929: Invalid checksum for CODEN nneteb in ``CODEN = "nneteb"''. %% "testcodn.org", line 931: Invalid checksum for CODEN noandd in ``CODEN = "noandd"''. %% "testcodn.org", line 932: Invalid checksum for CODEN nrloep in ``CODEN = "nrloep"''. %% "testcodn.org", line 933: Invalid checksum for CODEN nrlqar in ``CODEN = "nrlqar"''. %% "testcodn.org", line 934: Invalid checksum for CODEN nstbat in ``CODEN = "nstbat"''. %% "testcodn.org", line 935: Invalid checksum for CODEN ntelap in ``CODEN = "ntelap"''. %% "testcodn.org", line 936: Invalid checksum for CODEN ntroav in ``CODEN = "ntroav"''. %% "testcodn.org", line 937: Invalid checksum for CODEN ntwkaa in ``CODEN = "ntwkaa"''. %% "testcodn.org", line 938: Invalid checksum for CODEN nualeg in ``CODEN = "nualeg"''. %% "testcodn.org", line 940: Invalid checksum for CODEN nupabl in ``CODEN = "nupabl"''. %% "testcodn.org", line 941: Invalid checksum for CODEN nupbbo in ``CODEN = "nupbbo"''. %% "testcodn.org", line 942: Invalid checksum for CODEN nusaaz in ``CODEN = "nusaaz"''. %% "testcodn.org", line 943: Invalid checksum for CODEN nwscal in ``CODEN = "nwscal"''. %% "testcodn.org", line 944: Invalid checksum for CODEN nytiao in ``CODEN = "nytiao"''. %% "testcodn.org", line 947: Invalid checksum for CODEN ocmiek in ``CODEN = "ocmiek"''. %% "testcodn.org", line 948: Invalid checksum for CODEN ocnsdk in ``CODEN = "ocnsdk"''. %% "testcodn.org", line 949: Invalid checksum for CODEN ofsyeh in ``CODEN = "ofsyeh"''. %% "testcodn.org", line 950: Invalid checksum for CODEN oigjav in ``CODEN = "oigjav"''. %% "testcodn.org", line 953: Invalid checksum for CODEN oncnes in ``CODEN = "oncnes"''. %% "testcodn.org", line 954: Invalid checksum for CODEN onlidn in ``CODEN = "onlidn"''. %% "testcodn.org", line 955: Invalid checksum for CODEN opacat in ``CODEN = "opacat"''. %% "testcodn.org", line 957: Invalid checksum for CODEN opcoeb in ``CODEN = "opcoeb"''. %% "testcodn.org", line 958: Invalid checksum for CODEN opegar in ``CODEN = "opegar"''. %% "testcodn.org", line 959: Invalid checksum for CODEN opledp in ``CODEN = "opledp"''. %% "testcodn.org", line 960: Invalid checksum for CODEN oprea1 in ``CODEN = "oprea1"''. %% "testcodn.org", line 961: Invalid checksum for CODEN oprqak in ``CODEN = "oprqak"''. %% "testcodn.org", line 962: Invalid checksum for CODEN optzdq in ``CODEN = "optzdq"''. %% "testcodn.org", line 963: Invalid checksum for CODEN oqeldi in ``CODEN = "oqeldi"''. %% "testcodn.org", line 964: Invalid checksum for CODEN ordyam in ``CODEN = "ordyam"''. %% "testcodn.org", line 966: Invalid checksum for CODEN otikaj in ``CODEN = "otikaj"''. %% "testcodn.org", line 967: Invalid checksum for CODEN pacoej in ``CODEN = "pacoej"''. %% "testcodn.org", line 968: Invalid checksum for CODEN paisdq in ``CODEN = "paisdq"''. %% "testcodn.org", line 969: Invalid checksum for CODEN pamyar in ``CODEN = "pamyar"''. %% "testcodn.org", line 970: Invalid checksum for CODEN papcaa in ``CODEN = "papcaa"''. %% "testcodn.org", line 971: Invalid checksum for CODEN pbimac in ``CODEN = "pbimac"''. %% "testcodn.org", line 972: Invalid checksum for CODEN pbliej in ``CODEN = "pbliej"''. %% "testcodn.org", line 976: Invalid checksum for CODEN pcmpei in ``CODEN = "pcmpei"''. %% "testcodn.org", line 978: Invalid checksum for CODEN pcsoda in ``CODEN = "pcsoda"''. %% "testcodn.org", line 979: Invalid checksum for CODEN pcwddv in ``CODEN = "pcwddv"''. %% "testcodn.org", line 980: Invalid checksum for CODEN pcwodu in ``CODEN = "pcwodu"''. %% "testcodn.org", line 981: Invalid checksum for CODEN pdnpdt in ``CODEN = "pdnpdt"''. %% "testcodn.org", line 984: Invalid checksum for CODEN pepsbj in ``CODEN = "pepsbj"''. %% "testcodn.org", line 985: Invalid checksum for CODEN peredn in ``CODEN = "peredn"''. %% "testcodn.org", line 986: Invalid checksum for CODEN pfecdr in ``CODEN = "pfecdr"''. %% "testcodn.org", line 987: Invalid checksum for CODEN pflabk in ``CODEN = "pflabk"''. %% "testcodn.org", line 988: Invalid checksum for CODEN pharat in ``CODEN = "pharat"''. %% "testcodn.org", line 989: Invalid checksum for CODEN phblag in ``CODEN = "phblag"''. %% "testcodn.org", line 990: Invalid checksum for CODEN phcbap in ``CODEN = "phcbap"''. %% "testcodn.org", line 995: Invalid checksum for CODEN phrvao in ``CODEN = "phrvao"''. %% "testcodn.org", line 996: Invalid checksum for CODEN phstbo in ``CODEN = "phstbo"''. %% "testcodn.org", line 997: Invalid checksum for CODEN phtoad in ``CODEN = "phtoad"''. %% "testcodn.org", line 998: Invalid checksum for CODEN phwoew in ``CODEN = "phwoew"''. %% "testcodn.org", line 999: Invalid checksum for CODEN physag in ``CODEN = "physag"''. %% "testcodn.org", line 1000: Invalid checksum for CODEN pireae in ``CODEN = "pireae"''. %% "testcodn.org", line 1001: Invalid checksum for CODEN pjmaai in ``CODEN = "pjmaai"''. %% "testcodn.org", line 1002: Invalid checksum for CODEN planab in ``CODEN = "planab"''. %% "testcodn.org", line 1003: Invalid checksum for CODEN plcmdl in ``CODEN = "plcmdl"''. %% "testcodn.org", line 1004: Invalid checksum for CODEN pljued in ``CODEN = "pljued"''. %% "testcodn.org", line 1005: Invalid checksum for CODEN plmtal in ``CODEN = "plmtal"''. %% "testcodn.org", line 1006: Invalid checksum for CODEN plraan in ``CODEN = "plraan"''. %% "testcodn.org", line 1007: Invalid checksum for CODEN plrbaq in ``CODEN = "plrbaq"''. %% "testcodn.org", line 1008: Invalid checksum for CODEN plsmdx in ``CODEN = "plsmdx"''. %% "testcodn.org", line 1009: Invalid checksum for CODEN pmbidb in ``CODEN = "pmbidb"''. %% "testcodn.org", line 1011: Invalid checksum for CODEN pmhaa4 in ``CODEN = "pmhaa4"''. %% "testcodn.org", line 1012: Invalid checksum for CODEN pmosaz in ``CODEN = "pmosaz"''. %% "testcodn.org", line 1014: Invalid checksum for CODEN pnende in ``CODEN = "pnende"''. %% "testcodn.org", line 1015: Invalid checksum for CODEN pnmbaf in ``CODEN = "pnmbaf"''. %% "testcodn.org", line 1017: Invalid checksum for CODEN ppexep in ``CODEN = "ppexep"''. %% "testcodn.org", line 1018: Invalid checksum for CODEN ppltee in ``CODEN = "ppltee"''. %% "testcodn.org", line 1019: Invalid checksum for CODEN ppsoau in ``CODEN = "ppsoau"''. %% "testcodn.org", line 1020: Invalid checksum for CODEN preaay in ``CODEN = "preaay"''. %% "testcodn.org", line 1022: Invalid checksum for CODEN prerel in ``CODEN = "prerel"''. %% "testcodn.org", line 1023: Invalid checksum for CODEN prgmbd in ``CODEN = "prgmbd"''. %% "testcodn.org", line 1024: Invalid checksum for CODEN prgrdu in ``CODEN = "prgrdu"''. %% "testcodn.org", line 1025: Invalid checksum for CODEN pricdt in ``CODEN = "pricdt"''. %% "testcodn.org", line 1026: Invalid checksum for CODEN prlaaz in ``CODEN = "prlaaz"''. %% "testcodn.org", line 1028: Invalid checksum for CODEN prledg in ``CODEN = "prledg"''. %% "testcodn.org", line 1029: Invalid checksum for CODEN prltao in ``CODEN = "prltao"''. %% "testcodn.org", line 1032: Invalid checksum for CODEN prowae in ``CODEN = "prowae"''. %% "testcodn.org", line 1033: Invalid checksum for CODEN prplcm in ``CODEN = "prplcm"''. %% "testcodn.org", line 1034: Invalid checksum for CODEN prseae in ``CODEN = "prseae"''. %% "testcodn.org", line 1035: Invalid checksum for CODEN prslaz in ``CODEN = "prslaz"''. %% "testcodn.org", line 1036: Invalid checksum for CODEN prssdp in ``CODEN = "prssdp"''. %% "testcodn.org", line 1037: Invalid checksum for CODEN prvcan in ``CODEN = "prvcan"''. %% "testcodn.org", line 1038: Invalid checksum for CODEN prvdaq in ``CODEN = "prvdaq"''. %% "testcodn.org", line 1040: Invalid checksum for CODEN psfgey in ``CODEN = "psfgey"''. %% "testcodn.org", line 1041: Invalid checksum for CODEN psisdg in ``CODEN = "psisdg"''. %% "testcodn.org", line 1042: Invalid checksum for CODEN psmiax in ``CODEN = "psmiax"''. %% "testcodn.org", line 1045: Invalid checksum for CODEN ptrbae in ``CODEN = "ptrbae"''. %% "testcodn.org", line 1046: Invalid checksum for CODEN ptrdeo in ``CODEN = "ptrdeo"''. %% "testcodn.org", line 1047: Invalid checksum for CODEN ptrfeu in ``CODEN = "ptrfeu"''. %% "testcodn.org", line 1048: Invalid checksum for CODEN ptrsav in ``CODEN = "ptrsav"''. %% "testcodn.org", line 1049: Invalid checksum for CODEN pwoqdy in ``CODEN = "pwoqdy"''. %% "testcodn.org", line 1050: Invalid checksum for CODEN pylaag in ``CODEN = "pylaag"''. %% "testcodn.org", line 1051: Invalid checksum for CODEN pylbaj in ``CODEN = "pylbaj"''. %% "testcodn.org", line 1052: Invalid checksum for CODEN qamaay in ``CODEN = "qamaay"''. %% "testcodn.org", line 1053: Invalid checksum for CODEN qcbuen in ``CODEN = "qcbuen"''. %% "testcodn.org", line 1054: Invalid checksum for CODEN qjmaat in ``CODEN = "qjmaat"''. %% "testcodn.org", line 1055: Invalid checksum for CODEN qjmmav in ``CODEN = "qjmmav"''. %% "testcodn.org", line 1056: Invalid checksum for CODEN qjmsaf in ``CODEN = "qjmsaf"''. %% "testcodn.org", line 1057: Invalid checksum for CODEN qjrmam in ``CODEN = "qjrmam"''. %% "testcodn.org", line 1058: Invalid checksum for CODEN qrbudp in ``CODEN = "qrbudp"''. %% "testcodn.org", line 1059: Invalid checksum for CODEN qsardi in ``CODEN = "qsardi"''. %% "testcodn.org", line 1061: Invalid checksum for CODEN rascad in ``CODEN = "rascad"''. %% "testcodn.org", line 1062: Invalid checksum for CODEN rcmmar in ``CODEN = "rcmmar"''. %% "testcodn.org", line 1063: Invalid checksum for CODEN rcmtae in ``CODEN = "rcmtae"''. %% "testcodn.org", line 1064: Invalid checksum for CODEN rctjdm in ``CODEN = "rctjdm"''. %% "testcodn.org", line 1065: Invalid checksum for CODEN rdigau in ``CODEN = "rdigau"''. %% "testcodn.org", line 1066: Invalid checksum for CODEN refias in ``CODEN = "refias"''. %% "testcodn.org", line 1067: Invalid checksum for CODEN reltan in ``CODEN = "reltan"''. %% "testcodn.org", line 1068: Invalid checksum for CODEN rfaadn in ``CODEN = "rfaadn"''. %% "testcodn.org", line 1069: Invalid checksum for CODEN rfands in ``CODEN = "rfands"''. %% "testcodn.org", line 1070: Invalid checksum for CODEN rfdedg in ``CODEN = "rfdedg"''. %% "testcodn.org", line 1071: Invalid checksum for CODEN rjcldq in ``CODEN = "rjcldq"''. %% "testcodn.org", line 1072: Invalid checksum for CODEN rmhpbe in ``CODEN = "rmhpbe"''. %% "testcodn.org", line 1073: Invalid checksum for CODEN rmjmae in ``CODEN = "rmjmae"''. %% "testcodn.org", line 1074: Invalid checksum for CODEN rmmaev in ``CODEN = "rmmaev"''. %% "testcodn.org", line 1075: Invalid checksum for CODEN rmmgab in ``CODEN = "rmmgab"''. %% "testcodn.org", line 1076: Invalid checksum for CODEN rmphat in ``CODEN = "rmphat"''. %% "testcodn.org", line 1078: Invalid checksum for CODEN rptwad in ``CODEN = "rptwad"''. %% "testcodn.org", line 1079: Invalid checksum for CODEN rsalfd in ``CODEN = "rsalfd"''. %% "testcodn.org", line 1081: Invalid checksum for CODEN rtdvaq in ``CODEN = "rtdvaq"''. %% "testcodn.org", line 1082: Invalid checksum for CODEN rveebt in ``CODEN = "rveebt"''. %% "testcodn.org", line 1083: Invalid checksum for CODEN saapda in ``CODEN = "saapda"''. %% "testcodn.org", line 1085: Invalid checksum for CODEN samcas in ``CODEN = "samcas"''. %% "testcodn.org", line 1086: Invalid checksum for CODEN samsec in ``CODEN = "samsec"''. %% "testcodn.org", line 1087: Invalid checksum for CODEN sanabs in ``CODEN = "sanabs"''. %% "testcodn.org", line 1088: Invalid checksum for CODEN sanbbv in ``CODEN = "sanbbv"''. %% "testcodn.org", line 1090: Invalid checksum for CODEN scamac in ``CODEN = "scamac"''. %% "testcodn.org", line 1092: Invalid checksum for CODEN scieas in ``CODEN = "scieas"''. %% "testcodn.org", line 1093: Invalid checksum for CODEN scipev in ``CODEN = "scipev"''. %% "testcodn.org", line 1095: Invalid checksum for CODEN scjaep in ``CODEN = "scjaep"''. %% "testcodn.org", line 1096: Invalid checksum for CODEN scledc in ``CODEN = "scledc"''. %% "testcodn.org", line 1097: Invalid checksum for CODEN scnebk in ``CODEN = "scnebk"''. %% "testcodn.org", line 1098: Invalid checksum for CODEN scomdh in ``CODEN = "scomdh"''. %% "testcodn.org", line 1100: Invalid checksum for CODEN sejoed in ``CODEN = "sejoed"''. %% "testcodn.org", line 1102: Invalid checksum for CODEN semybl in ``CODEN = "semybl"''. %% "testcodn.org", line 1103: Invalid checksum for CODEN sepsbi in ``CODEN = "sepsbi"''. %% "testcodn.org", line 1104: Invalid checksum for CODEN sewoea in ``CODEN = "sewoea"''. %% "testcodn.org", line 1105: Invalid checksum for CODEN sfendp in ``CODEN = "sfendp"''. %% "testcodn.org", line 1108: Invalid checksum for CODEN sidpaa in ``CODEN = "sidpaa"''. %% "testcodn.org", line 1109: Invalid checksum for CODEN sigbel in ``CODEN = "sigbel"''. %% "testcodn.org", line 1110: Invalid checksum for CODEN sigmdj in ``CODEN = "sigmdj"''. %% "testcodn.org", line 1111: Invalid checksum for CODEN signdm in ``CODEN = "signdm"''. %% "testcodn.org", line 1112: Invalid checksum for CODEN sigsbz in ``CODEN = "sigsbz"''. %% "testcodn.org", line 1117: Invalid checksum for CODEN sinodq in ``CODEN = "sinodq"''. %% "testcodn.org", line 1118: Invalid checksum for CODEN siread in ``CODEN = "siread"''. %% "testcodn.org", line 1119: Invalid checksum for CODEN sjamdu in ``CODEN = "sjamdu"''. %% "testcodn.org", line 1120: Invalid checksum for CODEN sjcodc in ``CODEN = "sjcodc"''. %% "testcodn.org", line 1121: Invalid checksum for CODEN sjcsep in ``CODEN = "sjcsep"''. %% "testcodn.org", line 1123: Invalid checksum for CODEN sjmaah in ``CODEN = "sjmaah"''. %% "testcodn.org", line 1124: Invalid checksum for CODEN sjmael in ``CODEN = "sjmael"''. %% "testcodn.org", line 1125: Invalid checksum for CODEN sjnaam in ``CODEN = "sjnaam"''. %% "testcodn.org", line 1128: Invalid checksum for CODEN smataz in ``CODEN = "smataz"''. %% "testcodn.org", line 1129: Invalid checksum for CODEN smcpax in ``CODEN = "smcpax"''. %% "testcodn.org", line 1130: Invalid checksum for CODEN smeped in ``CODEN = "smeped"''. %% "testcodn.org", line 1131: Invalid checksum for CODEN smjcat in ``CODEN = "smjcat"''. %% "testcodn.org", line 1132: Invalid checksum for CODEN smjmap in ``CODEN = "smjmap"''. %% "testcodn.org", line 1133: Invalid checksum for CODEN smster in ``CODEN = "smster"''. %% "testcodn.org", line 1135: Invalid checksum for CODEN somadl in ``CODEN = "somadl"''. %% "testcodn.org", line 1136: Invalid checksum for CODEN soriax in ``CODEN = "soriax"''. %% "testcodn.org", line 1137: Invalid checksum for CODEN spcoel in ``CODEN = "spcoel"''. %% "testcodn.org", line 1138: Invalid checksum for CODEN spexbl in ``CODEN = "spexbl"''. %% "testcodn.org", line 1140: Invalid checksum for CODEN splban in ``CODEN = "splban"''. %% "testcodn.org", line 1141: Invalid checksum for CODEN sprodr in ``CODEN = "sprodr"''. %% "testcodn.org", line 1142: Invalid checksum for CODEN sproes in ``CODEN = "sproes"''. %% "testcodn.org", line 1143: Invalid checksum for CODEN spvieu in ``CODEN = "spvieu"''. %% "testcodn.org", line 1144: Invalid checksum for CODEN srdfed in ``CODEN = "srdfed"''. %% "testcodn.org", line 1146: Invalid checksum for CODEN sroldh in ``CODEN = "sroldh"''. %% "testcodn.org", line 1150: Invalid checksum for CODEN ssmaac in ``CODEN = "ssmaac"''. %% "testcodn.org", line 1152: Invalid checksum for CODEN sstrey in ``CODEN = "sstrey"''. %% "testcodn.org", line 1156: Invalid checksum for CODEN stscep in ``CODEN = "stscep"''. %% "testcodn.org", line 1157: Invalid checksum for CODEN sunwdw in ``CODEN = "sunwdw"''. %% "testcodn.org", line 1158: Invalid checksum for CODEN surveg in ``CODEN = "surveg"''. %% "testcodn.org", line 1163: Invalid checksum for CODEN tamtam in ``CODEN = "tamtam"''. %% "testcodn.org", line 1164: Invalid checksum for CODEN tansao in ``CODEN = "tansao"''. %% "testcodn.org", line 1165: Invalid checksum for CODEN tbscdb in ``CODEN = "tbscdb"''. %% "testcodn.org", line 1166: Invalid checksum for CODEN tbsrdm in ``CODEN = "tbsrdm"''. %% "testcodn.org", line 1167: Invalid checksum for CODEN tchaam in ``CODEN = "tchaam"''. %% "testcodn.org", line 1170: Invalid checksum for CODEN tcscdi in ``CODEN = "tcscdi"''. %% "testcodn.org", line 1171: Invalid checksum for CODEN tereau in ``CODEN = "tereau"''. %% "testcodn.org", line 1172: Invalid checksum for CODEN tetref in ``CODEN = "tetref"''. %% "testcodn.org", line 1174: Invalid checksum for CODEN tlcmbt in ``CODEN = "tlcmbt"''. %% "testcodn.org", line 1175: Invalid checksum for CODEN tmisaf in ``CODEN = "tmisaf"''. %% "testcodn.org", line 1176: Invalid checksum for CODEN tplgaf in ``CODEN = "tplgaf"''. %% "testcodn.org", line 1177: Invalid checksum for CODEN tprbau in ``CODEN = "tprbau"''. %% "testcodn.org", line 1179: Invalid checksum for CODEN trmiea in ``CODEN = "trmiea"''. %% "testcodn.org", line 1180: Invalid checksum for CODEN trrebk in ``CODEN = "trrebk"''. %% "testcodn.org", line 1181: Invalid checksum for CODEN trscbj in ``CODEN = "trscbj"''. %% "testcodn.org", line 1184: Invalid checksum for CODEN twasde in ``CODEN = "twasde"''. %% "testcodn.org", line 1186: Invalid checksum for CODEN ulccdc in ``CODEN = "ulccdc"''. %% "testcodn.org", line 1188: Invalid checksum for CODEN uncoet in ``CODEN = "uncoet"''. %% "testcodn.org", line 1190: Invalid checksum for CODEN utmada in ``CODEN = "utmada"''. %% "testcodn.org", line 1191: Invalid checksum for CODEN vaxpen in ``CODEN = "vaxpen"''. %% "testcodn.org", line 1193: Invalid checksum for CODEN visram in ``CODEN = "visram"''. %% "testcodn.org", line 1194: Invalid checksum for CODEN vslgao in ``CODEN = "vslgao"''. %% "testcodn.org", line 1196: Invalid checksum for CODEN wewefp in ``CODEN = "wewefp"''. %% "testcodn.org", line 1198: Invalid checksum for CODEN wpklao in ``CODEN = "wpklao"''. %% "testcodn.org", line 1199: Invalid checksum for CODEN wredem in ``CODEN = "wredem"''. %% "testcodn.org", line 1200: Invalid checksum for CODEN wreraq in ``CODEN = "wreraq"''. %% "testcodn.org", line 1201: Invalid checksum for CODEN wsjoaf in ``CODEN = "wsjoaf"''. %% "testcodn.org", line 1203: Invalid checksum for CODEN wzhlde in ``CODEN = "wzhlde"''. %% "testcodn.org", line 1204: Invalid checksum for CODEN wztkay in ``CODEN = "wztkay"''. %% "testcodn.org", line 1205: Invalid checksum for CODEN wztuau in ``CODEN = "wztuau"''. %% "testcodn.org", line 1206: Invalid checksum for CODEN xjouea in ``CODEN = "xjouea"''. %% "testcodn.org", line 1207: Invalid checksum for CODEN xresea in ``CODEN = "xresea"''. %% "testcodn.org", line 1210: Invalid checksum for CODEN zammax in ``CODEN = "zammax"''. %% "testcodn.org", line 1211: Invalid checksum for CODEN zampdb in ``CODEN = "zampdb"''. %% "testcodn.org", line 1213: Invalid checksum for CODEN zmlgaq in ``CODEN = "zmlgaq"''. %% "testcodn.org", line 1214: Invalid checksum for CODEN zmrrep in ``CODEN = "zmrrep"''. %% "testcodn.org", line 1215: Invalid checksum for CODEN zncbda in ``CODEN = "zncbda"''. %% "testcodn.org", line 1216: Invalid checksum for CODEN zoscex in ``CODEN = "zoscex"''. %% "testcodn.org", line 1217: Invalid checksum for CODEN zpaadb in ``CODEN = "zpaadb"''. %% "testcodn.org", line 1218: Invalid checksum for CODEN zpbbdj in ``CODEN = "zpbbdj"''. %% "testcodn.org", line 1220: Invalid checksum for CODEN zpcmdn in ``CODEN = "zpcmdn"''. %% "testcodn.org", line 1221: Invalid checksum for CODEN ztvram in ``CODEN = "ztvram"''. %% "testcodn.org", line 1222: Invalid checksum for CODEN zwvgaa in ``CODEN = "zwvgaa"''. %% "testcodn.org", line 1229: Incomplete CODEN AALEE should be AALEE5 in ``CODEN = "AALEE"''. %% "testcodn.org", line 1230: Incomplete CODEN AASTA should be AASTAD in ``CODEN = "AASTA"''. %% "testcodn.org", line 1231: Incomplete CODEN ABACE should be ABACEJ in ``CODEN = "ABACE"''. %% "testcodn.org", line 1232: Incomplete CODEN ACMSC should be ACMSCU in ``CODEN = "ACMSC"''. %% "testcodn.org", line 1233: Incomplete CODEN ADMOA should be ADMOAN in ``CODEN = "ADMOA"''. %% "testcodn.org", line 1234: Incomplete CODEN AINFA should be AINFA2 in ``CODEN = "AINFA"''. %% "testcodn.org", line 1235: Incomplete CODEN AINTB should be AINTBB in ``CODEN = "AINTB"''. %% "testcodn.org", line 1236: Incomplete CODEN AISJB should be AISJB6 in ``CODEN = "AISJB"''. %% "testcodn.org", line 1237: Incomplete CODEN AJSOA should be AJSOAR in ``CODEN = "AJSOA"''. %% "testcodn.org", line 1238: Incomplete CODEN ALGOE should be ALGOEJ in ``CODEN = "ALGOE"''. %% "testcodn.org", line 1239: Incomplete CODEN ALSHA should be ALSHAK in ``CODEN = "ALSHA"''. %% "testcodn.org", line 1240: Incomplete CODEN AMHCB should be AMHCBQ in ``CODEN = "AMHCB"''. %% "testcodn.org", line 1241: Incomplete CODEN ANMAA should be ANMAAH in ``CODEN = "ANMAA"''. %% "testcodn.org", line 1242: Incomplete CODEN ANMAE should be ANMAEL in ``CODEN = "ANMAE"''. %% "testcodn.org", line 1243: Incomplete CODEN AOREE should be AOREEV in ``CODEN = "AOREE"''. %% "testcodn.org", line 1244: Incomplete CODEN APLQD should be APLQD9 in ``CODEN = "APLQD"''. %% "testcodn.org", line 1245: Incomplete CODEN AREOA should be AREOAD in ``CODEN = "AREOA"''. %% "testcodn.org", line 1246: Incomplete CODEN ARGSB should be ARGSB2 in ``CODEN = "ARGSB"''. %% "testcodn.org", line 1247: Incomplete CODEN ARITB should be ARITBF in ``CODEN = "ARITB"''. %% "testcodn.org", line 1248: Incomplete CODEN ASLPA should be ASLPAO in ``CODEN = "ASLPA"''. %% "testcodn.org", line 1249: Incomplete CODEN AURCA should be AURCAT in ``CODEN = "AURCA"''. %% "testcodn.org", line 1250: Incomplete CODEN AVTEA should be AVTEAI in ``CODEN = "AVTEA"''. %% "testcodn.org", line 1251: Incomplete CODEN BASIC should be BASICR in ``CODEN = "BASIC"''. %% "testcodn.org", line 1252: Incomplete CODEN BCPCA should be BCPCA6 in ``CODEN = "BCPCA"''. %% "testcodn.org", line 1253: Incomplete CODEN BEVED should be BEVEDP in ``CODEN = "BEVED"''. %% "testcodn.org", line 1254: Incomplete CODEN BITTE should be BITTEL in ``CODEN = "BITTE"''. %% "testcodn.org", line 1255: Incomplete CODEN BIZBA should be BIZBAR in ``CODEN = "BIZBA"''. %% "testcodn.org", line 1256: Incomplete CODEN BJMSA should be BJMSAK in ``CODEN = "BJMSA"''. %% "testcodn.org", line 1257: Incomplete CODEN BMFRA should be BMFRA3 in ``CODEN = "BMFRA"''. %% "testcodn.org", line 1258: Incomplete CODEN BMSSB should be BMSSB4 in ``CODEN = "BMSSB"''. %% "testcodn.org", line 1259: Incomplete CODEN BSMSA should be BSMSAF in ``CODEN = "BSMSA"''. %% "testcodn.org", line 1260: Incomplete CODEN BYTED should be BYTEDJ in ``CODEN = "BYTED"''. %% "testcodn.org", line 1261: Incomplete CODEN CACMA should be CACMA2 in ``CODEN = "CACMA"''. %% "testcodn.org", line 1262: Incomplete CODEN CAGDE should be CAGDEX in ``CODEN = "CAGDE"''. %% "testcodn.org", line 1263: Incomplete CODEN CAIDA should be CAIDA5 in ``CODEN = "CAIDA"''. %% "testcodn.org", line 1264: Incomplete CODEN CCEND should be CCENDW in ``CODEN = "CCEND"''. %% "testcodn.org", line 1265: Incomplete CODEN CGFOD should be CGFODY in ``CODEN = "CGFOD"''. %% "testcodn.org", line 1266: Incomplete CODEN CGRAD should be CGRADI in ``CODEN = "CGRAD"''. %% "testcodn.org", line 1267: Incomplete CODEN CHKWE should be CHKWEN in ``CODEN = "CHKWE"''. %% "testcodn.org", line 1268: Incomplete CODEN CJISD should be CJISDE in ``CODEN = "CJISD"''. %% "testcodn.org", line 1269: Incomplete CODEN CMAPD should be CMAPDK in ``CODEN = "CMAPD"''. %% "testcodn.org", line 1270: Incomplete CODEN CMORA should be CMORAP in ``CODEN = "CMORA"''. %% "testcodn.org", line 1271: Incomplete CODEN CMPJA should be CMPJA6 in ``CODEN = "CMPJA"''. %% "testcodn.org", line 1272: Incomplete CODEN CMPTA should be CMPTA2 in ``CODEN = "CMPTA"''. %% "testcodn.org", line 1273: Incomplete CODEN CMSYE should be CMSYE2 in ``CODEN = "CMSYE"''. %% "testcodn.org", line 1274: Incomplete CODEN CNISE should be CNISE9 in ``CODEN = "CNISE"''. %% "testcodn.org", line 1275: Incomplete CODEN CNOME should be CNOMEL in ``CODEN = "CNOME"''. %% "testcodn.org", line 1276: Incomplete CODEN COATB should be COATBA in ``CODEN = "COATB"''. %% "testcodn.org", line 1277: Incomplete CODEN COCOD should be COCOD7 in ``CODEN = "COCOD"''. %% "testcodn.org", line 1278: Incomplete CODEN COGRD should be COGRD2 in ``CODEN = "COGRD"''. %% "testcodn.org", line 1279: Incomplete CODEN COHUA should be COHUAD in ``CODEN = "COHUA"''. %% "testcodn.org", line 1280: Incomplete CODEN COMHA should be COMHAX in ``CODEN = "COMHA"''. %% "testcodn.org", line 1281: Incomplete CODEN COSPD should be COSPDM in ``CODEN = "COSPD"''. %% "testcodn.org", line 1282: Incomplete CODEN COSTC should be COSTCX in ``CODEN = "COSTC"''. %% "testcodn.org", line 1283: Incomplete CODEN CPAMA should be CPAMAT in ``CODEN = "CPAMA"''. %% "testcodn.org", line 1284: Incomplete CODEN CPHCB should be CPHCBZ in ``CODEN = "CPHCB"''. %% "testcodn.org", line 1285: Incomplete CODEN CPLIE should be CPLIE8 in ``CODEN = "CPLIE"''. %% "testcodn.org", line 1286: Incomplete CODEN CPTRB should be CPTRB4 in ``CODEN = "CPTRB"''. %% "testcodn.org", line 1287: Incomplete CODEN CQMAA should be CQMAAQ in ``CODEN = "CQMAA"''. %% "testcodn.org", line 1288: Incomplete CODEN CSAEE should be CSAEEU in ``CODEN = "CSAEE"''. %% "testcodn.org", line 1289: Incomplete CODEN CSTIE should be CSTIEZ in ``CODEN = "CSTIE"''. %% "testcodn.org", line 1290: Incomplete CODEN DDJSD should be DDJSDM in ``CODEN = "DDJSD"''. %% "testcodn.org", line 1291: Incomplete CODEN DGRCD should be DGRCDZ in ``CODEN = "DGRCD"''. %% "testcodn.org", line 1292: Incomplete CODEN DJTAE should be DJTAER in ``CODEN = "DJTAE"''. %% "testcodn.org", line 1293: Incomplete CODEN DJTGE should be DJTGEB in ``CODEN = "DJTGE"''. %% "testcodn.org", line 1294: Incomplete CODEN DPCOE should be DPCOEQ in ``CODEN = "DPCOE"''. %% "testcodn.org", line 1295: Incomplete CODEN DSINE should be DSINE6 in ``CODEN = "DSINE"''. %% "testcodn.org", line 1296: Incomplete CODEN DTJOE should be DTJOEL in ``CODEN = "DTJOE"''. %% "testcodn.org", line 1297: Incomplete CODEN DTMNA should be DTMNAT in ``CODEN = "DTMNA"''. %% "testcodn.org", line 1298: Incomplete CODEN ECJSE should be ECJSER in ``CODEN = "ECJSE"''. %% "testcodn.org", line 1299: Incomplete CODEN ECREA should be ECREAL in ``CODEN = "ECREA"''. %% "testcodn.org", line 1300: Incomplete CODEN EKRKA should be EKRKAR in ``CODEN = "EKRKA"''. %% "testcodn.org", line 1301: Incomplete CODEN ELLEA should be ELLEAK in ``CODEN = "ELLEA"''. %% "testcodn.org", line 1302: Incomplete CODEN ELLID should be ELLIDZ in ``CODEN = "ELLID"''. %% "testcodn.org", line 1303: Incomplete CODEN EMODD should be EMODD8 in ``CODEN = "EMODD"''. %% "testcodn.org", line 1304: Incomplete CODEN EONLE should be EONLE8 in ``CODEN = "EONLE"''. %% "testcodn.org", line 1305: Incomplete CODEN EPODE should be EPODEU in ``CODEN = "EPODE"''. %% "testcodn.org", line 1306: Incomplete CODEN ERMGB should be ERMGB6 in ``CODEN = "ERMGB"''. %% "testcodn.org", line 1307: Incomplete CODEN ETTIE should be ETTIEU in ``CODEN = "ETTIE"''. %% "testcodn.org", line 1308: Incomplete CODEN FASRD should be FASRDV in ``CODEN = "FASRD"''. %% "testcodn.org", line 1309: Incomplete CODEN FSSYD should be FSSYD8 in ``CODEN = "FSSYD"''. %% "testcodn.org", line 1310: Incomplete CODEN FUJTA should be FUJTAR in ``CODEN = "FUJTA"''. %% "testcodn.org", line 1311: Incomplete CODEN GLSEE should be GLSEED in ``CODEN = "GLSEE"''. %% "testcodn.org", line 1312: Incomplete CODEN HAMAA should be HAMAA3 in ``CODEN = "HAMAA"''. %% "testcodn.org", line 1313: Incomplete CODEN HJKHD should be HJKHDC in ``CODEN = "HJKHD"''. %% "testcodn.org", line 1314: Incomplete CODEN HUHEA should be HUHEAS in ``CODEN = "HUHEA"''. %% "testcodn.org", line 1315: Incomplete CODEN IAIEE should be IAIEEA in ``CODEN = "IAIEE"''. %% "testcodn.org", line 1316: Incomplete CODEN ICCBA should be ICCBAF in ``CODEN = "ICCBA"''. %% "testcodn.org", line 1317: Incomplete CODEN ICGAD should be ICGADZ in ``CODEN = "ICGAD"''. %% "testcodn.org", line 1318: Incomplete CODEN ICSAE should be ICSAES in ``CODEN = "ICSAE"''. %% "testcodn.org", line 1319: Incomplete CODEN ICSYB should be ICSYBT in ``CODEN = "ICSYB"''. %% "testcodn.org", line 1320: Incomplete CODEN IEPCB should be IEPCBU in ``CODEN = "IEPCB"''. %% "testcodn.org", line 1321: Incomplete CODEN IESOE should be IESOEG in ``CODEN = "IESOE"''. %% "testcodn.org", line 1322: Incomplete CODEN IFDBE should be IFDBEB in ``CODEN = "IFDBE"''. %% "testcodn.org", line 1323: Incomplete CODEN IFESE should be IFESEX in ``CODEN = "IFESE"''. %% "testcodn.org", line 1324: Incomplete CODEN IJARE should be IJARE4 in ``CODEN = "IJARE"''. %% "testcodn.org", line 1325: Incomplete CODEN IJBOB should be IJBOBV in ``CODEN = "IJBOB"''. %% "testcodn.org", line 1326: Incomplete CODEN IJISE should be IJISED in ``CODEN = "IJISE"''. %% "testcodn.org", line 1327: Incomplete CODEN IJMPE should be IJMPEO in ``CODEN = "IJMPE"''. %% "testcodn.org", line 1328: Incomplete CODEN INFAC should be INFAC4 in ``CODEN = "INFAC"''. %% "testcodn.org", line 1329: Incomplete CODEN INFTC should be INFTCR in ``CODEN = "INFTC"''. %% "testcodn.org", line 1330: Incomplete CODEN INSKD should be INSKDW in ``CODEN = "INSKD"''. %% "testcodn.org", line 1331: Incomplete CODEN IPMAD should be IPMADK in ``CODEN = "IPMAD"''. %% "testcodn.org", line 1332: Incomplete CODEN IRCYA should be IRCYAJ in ``CODEN = "IRCYA"''. %% "testcodn.org", line 1333: Incomplete CODEN IRELA should be IRELAO in ``CODEN = "IRELA"''. %% "testcodn.org", line 1334: Incomplete CODEN IRLAA should be IRLAAQ in ``CODEN = "IRLAA"''. %% "testcodn.org", line 1335: Incomplete CODEN ISIJB should be ISIJBC in ``CODEN = "ISIJB"''. %% "testcodn.org", line 1336: Incomplete CODEN ISUDX should be ISUDX8 in ``CODEN = "ISUDX"''. %% "testcodn.org", line 1337: Incomplete CODEN ISYSD should be ISYSDJ in ``CODEN = "ISYSD"''. %% "testcodn.org", line 1338: Incomplete CODEN ITBTE should be ITBTEH in ``CODEN = "ITBTE"''. %% "testcodn.org", line 1339: Incomplete CODEN ITMEE should be ITMEER in ``CODEN = "ITMEE"''. %% "testcodn.org", line 1340: Incomplete CODEN ITPRE should be ITPRED in ``CODEN = "ITPRE"''. %% "testcodn.org", line 1341: Incomplete CODEN ITPSE should be ITPSEG in ``CODEN = "ITPSE"''. %% "testcodn.org", line 1342: Incomplete CODEN IZAMA should be IZAMAT in ``CODEN = "IZAMA"''. %% "testcodn.org", line 1343: Incomplete CODEN JAUMA should be JAUMAX in ``CODEN = "JAUMA"''. %% "testcodn.org", line 1344: Incomplete CODEN JCAMD should be JCAMDI in ``CODEN = "JCAMD"''. %% "testcodn.org", line 1345: Incomplete CODEN JCTHA should be JCTHAR in ``CODEN = "JCTHA"''. %% "testcodn.org", line 1346: Incomplete CODEN JCTPA should be JCTPAH in ``CODEN = "JCTPA"''. %% "testcodn.org", line 1347: Incomplete CODEN JDOCA should be JDOCAS in ``CODEN = "JDOCA"''. %% "testcodn.org", line 1348: Incomplete CODEN JIRRA should be JIRRAL in ``CODEN = "JIRRA"''. %% "testcodn.org", line 1349: Incomplete CODEN JISCD should be JISCDI in ``CODEN = "JISCD"''. %% "testcodn.org", line 1350: Incomplete CODEN JLPRE should be JLPRE2 in ``CODEN = "JLPRE"''. %% "testcodn.org", line 1351: Incomplete CODEN JMPHA should be JMPHA9 in ``CODEN = "JMPHA"''. %% "testcodn.org", line 1352: Incomplete CODEN JNBRA should be JNBRAA in ``CODEN = "JNBRA"''. %% "testcodn.org", line 1353: Incomplete CODEN JOMMA should be JOMMAN in ``CODEN = "JOMMA"''. %% "testcodn.org", line 1354: Incomplete CODEN JOSHA should be JOSHA4 in ``CODEN = "JOSHA"''. %% "testcodn.org", line 1355: Incomplete CODEN JOTAB should be JOTABN in ``CODEN = "JOTAB"''. %% "testcodn.org", line 1356: Incomplete CODEN JRNBA should be JRNBAG in ``CODEN = "JRNBA"''. %% "testcodn.org", line 1357: Incomplete CODEN JSIMA should be JSIMAV in ``CODEN = "JSIMA"''. %% "testcodn.org", line 1358: Incomplete CODEN JSINA should be JSINAY in ``CODEN = "JSINA"''. %% "testcodn.org", line 1359: Incomplete CODEN JSSOD should be JSSODM in ``CODEN = "JSSOD"''. %% "testcodn.org", line 1360: Incomplete CODEN JSYCE should be JSYCEH in ``CODEN = "JSYCE"''. %% "testcodn.org", line 1361: Incomplete CODEN JVLCE should be JVLCE7 in ``CODEN = "JVLCE"''. %% "testcodn.org", line 1362: Incomplete CODEN JWSSA should be JWSSAP in ``CODEN = "JWSSA"''. %% "testcodn.org", line 1363: Incomplete CODEN KESEA should be KESEA4 in ``CODEN = "KESEA"''. %% "testcodn.org", line 1364: Incomplete CODEN LLCOE should be LLCOEI in ``CODEN = "LLCOE"''. %% "testcodn.org", line 1365: Incomplete CODEN LMICD should be LMICDI in ``CODEN = "LMICD"''. %% "testcodn.org", line 1366: Incomplete CODEN MCENE should be MCENE7 in ``CODEN = "MCENE"''. %% "testcodn.org", line 1367: Incomplete CODEN MCMPA should be MCMPAF in ``CODEN = "MCMPA"''. %% "testcodn.org", line 1368: Incomplete CODEN MCRLA should be MCRLAS in ``CODEN = "MCRLA"''. %% "testcodn.org", line 1369: Incomplete CODEN MCSID should be MCSIDR in ``CODEN = "MCSID"''. %% "testcodn.org", line 1370: Incomplete CODEN MDMZD should be MDMZDL in ``CODEN = "MDMZD"''. %% "testcodn.org", line 1371: Incomplete CODEN MEORD should be MEORDE in ``CODEN = "MEORD"''. %% "testcodn.org", line 1372: Incomplete CODEN MICOE should be MICOE8 in ``CODEN = "MICOE"''. %% "testcodn.org", line 1373: Incomplete CODEN MIMCA should be MIMCAI in ``CODEN = "MIMCA"''. %% "testcodn.org", line 1374: Incomplete CODEN MIMJA should be MIMJA5 in ``CODEN = "MIMJA"''. %% "testcodn.org", line 1375: Incomplete CODEN MKSCA should be MKSCAS in ``CODEN = "MKSCA"''. %% "testcodn.org", line 1376: Incomplete CODEN MMPHA should be MMPHA8 in ``CODEN = "MMPHA"''. %% "testcodn.org", line 1377: Incomplete CODEN MOPMA should be MOPMA3 in ``CODEN = "MOPMA"''. %% "testcodn.org", line 1378: Incomplete CODEN MSTMB should be MSTMBI in ``CODEN = "MSTMB"''. %% "testcodn.org", line 1379: Incomplete CODEN MTHNB should be MTHNB2 in ``CODEN = "MTHNB"''. %% "testcodn.org", line 1380: Incomplete CODEN MTSEA should be MTSEAT in ``CODEN = "MTSEA"''. %% "testcodn.org", line 1381: Incomplete CODEN MTTCA should be MTTCAS in ``CODEN = "MTTCA"''. %% "testcodn.org", line 1382: Incomplete CODEN NADOA should be NADOAW in ``CODEN = "NADOA"''. %% "testcodn.org", line 1383: Incomplete CODEN NAWIA should be NAWIA7 in ``CODEN = "NAWIA"''. %% "testcodn.org", line 1384: Incomplete CODEN NRLOE should be NRLOEP in ``CODEN = "NRLOE"''. %% "testcodn.org", line 1385: Incomplete CODEN NSTBA should be NSTBAT in ``CODEN = "NSTBA"''. %% "testcodn.org", line 1386: Incomplete CODEN NTROA should be NTROAV in ``CODEN = "NTROA"''. %% "testcodn.org", line 1387: Incomplete CODEN NZMAB should be NZMAB7 in ``CODEN = "NZMAB"''. %% "testcodn.org", line 1388: Incomplete CODEN OCMIE should be OCMIEK in ``CODEN = "OCMIE"''. %% "testcodn.org", line 1389: Incomplete CODEN ORDYA should be ORDYAM in ``CODEN = "ORDYA"''. %% "testcodn.org", line 1390: Incomplete CODEN OTIKA should be OTIKAJ in ``CODEN = "OTIKA"''. %% "testcodn.org", line 1391: Incomplete CODEN PACOE should be PACOEJ in ``CODEN = "PACOE"''. %% "testcodn.org", line 1392: Incomplete CODEN PCAUA should be PCAUA3 in ``CODEN = "PCAUA"''. %% "testcodn.org", line 1393: Incomplete CODEN PNMBA should be PNMBAF in ``CODEN = "PNMBA"''. %% "testcodn.org", line 1394: Incomplete CODEN PPSOA should be PPSOAU in ``CODEN = "PPSOA"''. %% "testcodn.org", line 1395: Incomplete CODEN PRGMB should be PRGMBD in ``CODEN = "PRGMB"''. %% "testcodn.org", line 1396: Incomplete CODEN PROGD should be PROGD3 in ``CODEN = "PROGD"''. %% "testcodn.org", line 1397: Incomplete CODEN PROWA should be PROWAE in ``CODEN = "PROWA"''. %% "testcodn.org", line 1398: Incomplete CODEN PRSEA should be PRSEAE in ``CODEN = "PRSEA"''. %% "testcodn.org", line 1399: Incomplete CODEN PRSLA should be PRSLAZ in ``CODEN = "PRSLA"''. %% "testcodn.org", line 1400: Incomplete CODEN PSISD should be PSISDG in ``CODEN = "PSISD"''. %% "testcodn.org", line 1401: Incomplete CODEN PSYMA should be PSYMA7 in ``CODEN = "PSYMA"''. %% "testcodn.org", line 1402: Incomplete CODEN PTRSA should be PTRSAV in ``CODEN = "PTRSA"''. %% "testcodn.org", line 1403: Incomplete CODEN RDIGA should be RDIGAU in ``CODEN = "RDIGA"''. %% "testcodn.org", line 1404: Incomplete CODEN RMMGA should be RMMGAB in ``CODEN = "RMMGA"''. %% "testcodn.org", line 1405: Incomplete CODEN SAMCA should be SAMCAS in ``CODEN = "SAMCA"''. %% "testcodn.org", line 1406: Incomplete CODEN SEPSB should be SEPSBI in ``CODEN = "SEPSB"''. %% "testcodn.org", line 1407: Incomplete CODEN SGNWD should be SGNWD2 in ``CODEN = "SGNWD"''. %% "testcodn.org", line 1408: Incomplete CODEN SIGBE should be SIGBEL in ``CODEN = "SIGBE"''. %% "testcodn.org", line 1409: Incomplete CODEN SIGSB should be SIGSBZ in ``CODEN = "SIGSB"''. %% "testcodn.org", line 1410: Incomplete CODEN SINOD should be SINODQ in ``CODEN = "SINOD"''. %% "testcodn.org", line 1411: Incomplete CODEN SJCOD should be SJCODC in ``CODEN = "SJCOD"''. %% "testcodn.org", line 1412: Incomplete CODEN SMJCA should be SMJCAT in ``CODEN = "SMJCA"''. %% "testcodn.org", line 1413: Incomplete CODEN SMSTE should be SMSTER in ``CODEN = "SMSTE"''. %% "testcodn.org", line 1414: Incomplete CODEN SNEWD should be SNEWD6 in ``CODEN = "SNEWD"''. %% "testcodn.org", line 1415: Incomplete CODEN SRDFE should be SRDFED in ``CODEN = "SRDFE"''. %% "testcodn.org", line 1416: Incomplete CODEN SRECD should be SRECD8 in ``CODEN = "SRECD"''. %% "testcodn.org", line 1417: Incomplete CODEN SRPSD should be SRPSD9 in ``CODEN = "SRPSD"''. %% "testcodn.org", line 1418: Incomplete CODEN SSEJE should be SSEJE3 in ``CODEN = "SSEJE"''. %% "testcodn.org", line 1419: Incomplete CODEN STPGE should be STPGEM in ``CODEN = "STPGE"''. %% "testcodn.org", line 1420: Incomplete CODEN SVMDA should be SVMDA8 in ``CODEN = "SVMDA"''. %% "testcodn.org", line 1421: Incomplete CODEN TAEEA should be TAEEA5 in ``CODEN = "TAEEA"''. %% "testcodn.org", line 1422: Incomplete CODEN TANSA should be TANSAO in ``CODEN = "TANSA"''. %% "testcodn.org", line 1423: Incomplete CODEN TCSCD should be TCSCDI in ``CODEN = "TCSCD"''. %% "testcodn.org", line 1424: Incomplete CODEN TMISA should be TMISAF in ``CODEN = "TMISA"''. %% "testcodn.org", line 1425: Incomplete CODEN TSCSE should be TSCSEV in ``CODEN = "TSCSE"''. %% "testcodn.org", line 1426: Incomplete CODEN TSICA should be TSICA9 in ``CODEN = "TSICA"''. %% "testcodn.org", line 1427: Incomplete CODEN UNCOE should be UNCOET in ``CODEN = "UNCOE"''. %% "testcodn.org", line 1428: Incomplete CODEN VICOE should be VICOE5 in ``CODEN = "VICOE"''. %% "testcodn.org", line 1429: Incomplete CODEN WIINE should be WIINE9 in ``CODEN = "WIINE"''. %% "testcodn.org", line 1430: Incomplete CODEN WZTUA should be WZTUAU in ``CODEN = "WZTUA"''. %% "testcodn.org", line 1431: Incomplete CODEN YEASA should be YEASA8 in ``CODEN = "YEASA"''. %% "testcodn.org", line 1432: Incomplete CODEN ZAMMA should be ZAMMAX in ``CODEN = "ZAMMA"''. %% "testcodn.org", line 1433: Incomplete CODEN ZMRRE should be ZMRREP in ``CODEN = "ZMRRE"''. %% "testcodn.org", line 1438: Invalid checksum for CODEN ITDSEP in ``CODEN = "ITDSEP"''. %% "testcodn.org", line 1439: Invalid checksum for CODEN ITKEEI in ``CODEN = "ITKEEI"''. %% "testcodn.org", line 1440: Invalid checksum for CODEN ITLBDD in ``CODEN = "ITLBDD"''. %% "testcodn.org", line 1441: Invalid checksum for CODEN itmees in ``CODEN = "itmees"''. %% "testcodn.org", line 1442: Invalid checksum for CODEN itmgey in ``CODEN = "itmgey"''. %% "testcodn.org", line 1443: Invalid checksum for CODEN itmid5 in ``CODEN = "itmid5"''. %% "testcodn.org", line 1446: Invalid checksum for CODEN BDJOHJ in ``CODEN = "BDJOHJ"''. %% "testcodn.org", line 1451: Invalid checksum for CODEN I????? in ``CODEN = "I"''. %% "testcodn.org", line 1452: Invalid checksum for CODEN IT???? in ``CODEN = "IT"''. %% "testcodn.org", line 1453: Invalid checksum for CODEN ITD??? in ``CODEN = "ITD"''. %% "testcodn.org", line 1454: Invalid checksum for CODEN ITDS?? in ``CODEN = "ITDS"''. %% "testcodn.org", line 1455: Incomplete CODEN ITDSE should be ITDSEO in ``CODEN = "ITDSE"''. %% "testcodn.org", line 1460: Invalid checksum for CODEN AITDSE in ``CODEN = "AITDSEO"''. %% "testcodn.org", line 1460: Invalid checksum for CODEN AITDSE in ``CODEN = "AITDSEO"''. %% "testcodn.org", line 1461: Invalid checksum for CODEN ABITDS in ``CODEN = "ABITDSEO"''. %% "testcodn.org", line 1461: Invalid checksum for CODEN ABITDS in ``CODEN = "ABITDSEO"''. %% "testcodn.org", line 1462: Invalid checksum for CODEN ABCITD in ``CODEN = "ABCITDSEO"''. %% "testcodn.org", line 1462: Invalid checksum for CODEN ABCITD in ``CODEN = "ABCITDSEO"''. %% "testcodn.org", line 1463: Invalid checksum for CODEN ABCDIT in ``CODEN = "ABCDITDSEO"''. %% "testcodn.org", line 1463: Invalid checksum for CODEN ABCDIT in ``CODEN = "ABCDITDSEO"''. %% "testcodn.org", line 1464: Invalid checksum for CODEN ABCDEI in ``CODEN = "ABCDEITDSEO"''. %% "testcodn.org", line 1464: Invalid checksum for CODEN ABCDEI in ``CODEN = "ABCDEITDSEO"''. %% "testcodn.org", line 1465: Invalid checksum for CODEN ABCDEF in ``CODEN = "ABCDEFITDSEO"''. %% "testcodn.org", line 1465: Invalid checksum for CODEN ABCDEF in ``CODEN = "ABCDEFITDSEO"''. bibclean-2.11.4.1.orig/doc/0000755000175200017520000000000007133432652014440 5ustar debiandebianbibclean-2.11.4.1.orig/doc/tugboat.cmn0000644000175200017520000007660706046735265016634 0ustar debiandebian%% @latexfile{ %% filename="tugboat.cmn", %% version="1.13g", %% date="4-Nov-1995", %% filetype="common macros for TUGboat", %% copyright="Copyright (C) TeX Users Group. %% Copying of this file is authorized only if either: %% (1) you make absolutely no changes to your copy, OR %% (2) if you do make changes, you first rename it to some %% other name.", %% author="TeX Users Group", %% address="TeX Users Group, %% 1850 Union Street, \#1637, %% San Francisco, CA 94123, %% USA", %% telephone="415-982-8449", %% email="Internet: TUGboat@ams.org", %% codetable="ISO/ASCII", %% checksumtype="line count", %% checksum="997", %% keywords="tex users group, tugboat, common macros", %% abstract="This file contains macros common to both %% the PLAIN and LaTeX style files for TUGboat, %% the Communications of the TeX Users Group. %% Among other things, it contains supplementary %% definitions for abbreviations and logos that %% appear in TUGboat." %% } %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\fileversion{v1.13f} \def\filedate{15 Apr 1994} \message{File `TUGBOAT.CMN' \fileversion \space\space <\filedate>} % % ***** TUGBOAT.CMN ***** % % See the bottom of the file (after \endinput) for a list of % items defined. % % ************************************************************************* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % ***** helpful shorthand ***** % % The following allow for easier changes of category. These require that % the character be addressed as a control-sequence: e.g. \makeescape\/ will % make the / an escape character. \def\makeescape#1{\catcode`#1=0 } \def\makebgroup#1{\catcode`#1=1 } \def\makeegroup#1{\catcode`#1=2 } \def\makemath#1{\catcode`#1=3 } \def\makealign#1{\catcode`#1=4 } \def\makeeol#1{\catcode`#1=5 } \def\makeparm#1{\catcode`#1=6 } \def\makesup#1{\catcode`#1=7 } \def\makesub#1{\catcode`#1=8 } \def\makeignore#1{\catcode`#1=9 } \def\makespace#1{\catcode`#1=10 } \def\makeletter#1{\catcode`#1=11 } \def\makeother#1{\catcode`#1=12 } \def\makeactive#1{\catcode`#1=13 } \def\makecomment#1{\catcode`#1=14 } \def\makeatletter{\catcode`\@=11 } % included for historical reasons \chardef\other=12 \def\makeatother{\catcode`\@=\other} % alternative to localization \def\savecat#1{% \expandafter\xdef\csname\string#1savedcat\endcsname{\the\catcode`#1}} \def\restorecat#1{\catcode`#1=\csname\string#1savedcat\endcsname} \savecat\@ \makeletter\@ % used, as in PLAIN, in protected control sequences % for restoring meanings of global control sequences \def\SaveCS#1{% \def\scratch{\expandafter\let\csname saved@@#1\endcsname}% \expandafter\scratch\csname#1\endcsname} \def\RestoreCS#1{% \def\scratch{\expandafter\let\csname#1\endcsname}% \expandafter\scratch\csname saved@@#1\endcsname} % To distinguish between macro files loaded \def\plaintubstyle{plain} \def\latextubstyle{latex} \ifx\tugstyloaded@\undefined\let\tugstyloaded@\plaintubstyle\fi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % ***** abbreviations and logos ***** % \def\AllTeX{(\La)\TeX} \def\AMS{American Mathematical Society} \def\AmS{{\the\textfont2 A}\kern-.1667em\lower.5ex\hbox {\the\textfont2 M}\kern-.125em{\the\textfont2 S}} \def\AmSLaTeX{\AmS-\LaTeX} \def\AmSTeX{\AmS-\TeX} \def\aw{A\kern.1em-W} \def\AW{Addison\kern.1em-\penalty\z@\hskip\z@skip Wesley} \def\BibTeX{{\rm B\kern-.05em{\smc i\kern-.025emb}\kern-.08em\TeX}} \def\CandT{{\sl Computers \& Typesetting}} \def\CTAN{{\SMC CTAN}\spacefactor1000 } \def\DVItoVDU{DVIto\kern-.12em VDU} \def\ISBN{{\SMC ISBN} } \def\ISSN{{\SMC ISSN} } % Japanese TeX \def\JTeX{\leavevmode\hbox{\lower.5ex\hbox{J}\kern-.18em\TeX}} \def\JoT{{\sl The Joy of \TeX}} \def\LAMSTeX{L\raise.42ex\hbox{\kern-.3em\the\scriptfont2 A}% \kern-.2em\lower.376ex\hbox{\the\textfont2 M}\kern-.125em {\the\textfont2 S}-\TeX} % note -- \LaTeX definition is from LATEX.TEX 2.09 of 7 Jan 86, % adapted for additional flexibility in TUGboat %\def\LaTeX{\TestCount=\the\fam \leavevmode L\raise.42ex % \hbox{$\fam\TestCount\scriptstyle\kern-.3em A$}\kern-.15em\TeX} % note -- broken in two parts, to permit separate use of La, % as in (La)TeX \def\La{\TestCount=\the\fam \leavevmode L% \setbox\TestBox=\hbox{$\fam\TestCount\scriptstyle A$}% \kern-.5\wd\TestBox\raise.42ex\box\TestBox} \def\LaTeX{\La\kern-.15em\TeX} \def\LaTeXe{\LaTeX{}\kern.05em2$_{\textstyle\varepsilon}$} % for Robert McGaffey \def\Mc{\setbox\TestBox=\hbox{M}M\vbox to\ht\TestBox{\hbox{c}\vfil}} \font\manual=logo10 % font used for the METAFONT logo, etc. \def\MF{{\manual META}\-{\manual FONT}\spacefactor1000 } \def\MP{{\manual META}\-{\manual POST}\spacefactor1000 } \def\mf{{\smc Metafont}} \def\MFB{{\sl The \slMF book}} % multilingual (INRS) TeX \def\mtex{T\kern-.1667em\lower.5ex\hbox{\^E}\kern-.125emX\spacefactor1000 } \def\pcMF{\leavevmode\raise.5ex\hbox{p\kern-.3ptc}MF\spacefactor1000 } \def\PCTeX{PC\thinspace\TeX} \def\pcTeX{\leavevmode\raise.5ex\hbox{p\kern-.3ptc}\TeX} \def\Pas{Pascal} \def\PiC{P\kern-.12em\lower.5ex\hbox{I}\kern-.075emC\spacefactor1000 } \def\PiCTeX{\PiC\kern-.11em\TeX} \def\plain{{\tt plain}} \def\POBox{P.\thinspace O.~Box } \def\POBoxTUG{\POBox\unskip~9506, Providence, RI~02940} \def\PS{{Post\-Script}} \def\SC{Steering Committee} \def\SGML{{\SMC SGML}\spacefactor1000 } \def\SliTeX{{\rm S\kern-.06em{\smc l\kern-.035emi}\kern-.06em\TeX}} \def\slMF{\MF} % Use \font\manualsl=logosl10 instead, if it's available, % for \def\slMF{{\manualsl META}\-{\manualsl FONT}\spacefactor1000 } % Atari ST (Klaus Guntermann) \def\stTeX{{\smc st\rm\kern-0.13em\TeX}} \def\TANGLE{{\tt TANGLE}\spacefactor1000 } \def\TB{{\sl The \TeX book}} \def\TP{{\sl \TeX\/}: {\sl The Program\/}} \def\TeX{T\kern-.1667em\lower.424ex\hbox{E}\kern-.125emX\spacefactor1000 } \def\TeXhax{\TeX hax} % Don Hosek \def\TeXMaG{\TeX M\kern-.1667em\lower.5ex\hbox{A}\kern-.2267emG% \spacefactor1000 } %\def\TeXtures{\TestCount=\the\fam % \TeX\-\hbox{$\fam\TestCount\scriptstyle TURES$}} \def\TeXtures{{\it Textures}} \let\Textures=\TeXtures \def\TeXXeT{\TeX-{}-\XeT} \def\ttn{{\sl TTN}\spacefactor1000 } \def\TTN{{\sl \TeX{} and TUG NEWS}\spacefactor1000 } \def\tubfont{\sl} % redefined in other situations \def\TUB{{\tubfont TUGboat\/}} \def\TUG{\TeX\ \UG} \def\UG{Users Group} \def\UNIX{{\SMC UNIX}\spacefactor1000 } \def\VAX{V\kern-.12em A\kern-.1em X\spacefactor1000 } \def\VorTeX{V\kern-2.7pt\lower.5ex\hbox{O\kern-1.4pt R}\kern-2.6pt\TeX} \def\XeT{X\kern-.125em\lower.424ex\hbox{E}\kern-.1667emT\spacefactor1000 } \def\WEB{{\tt WEB}\spacefactor1000 } \def\WEAVE{{\tt WEAVE}\spacefactor1000 } %******************************************************************** \newlinechar=`\^^J \normallineskiplimit=1pt \clubpenalty=10000 \widowpenalty=10000 \def\NoParIndent{\parindent=\z@} \newdimen\normalparindent \normalparindent=20pt % plain = 20pt \def\NormalParIndent{\global\parindent=\normalparindent} \NormalParIndent \def\BlackBoxes{\overfullrule=5pt } \def\NoBlackBoxes{\overfullrule=\z@ } \def\newline{\hskip\z@ plus \pagewd \break} \def\nohyphens{\hyphenpenalty\@M\exhyphenpenalty\@M} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % ***** utility registers and definitions ***** % % test registers for transient use; paired - internal/external \newbox\T@stBox \newbox\TestBox \newcount\T@stCount \newcount\TestCount \newdimen\T@stDimen \newdimen\TestDimen \newif\ifT@stIf \newif\ifTestIf % \cs existence test, stolen from TeXbook exercise 7.7 \def\ifundefined#1{\expandafter\ifx\csname#1\endcsname\relax } % LaTeX conventions which are also useful here. \ifx\tugstyloaded@\plaintubstyle \let\@@input\input \def\iinput#1{\@@input#1 } \def\@inputcheck{\if\@nextchar\bgroup \expandafter\iinput\else\expandafter\@@input\fi} \def\input{\futurelet\@nextchar\@inputcheck} \fi % Smashes repeated from AMS-TeX; PLAIN implements only full \smash . \newif\iftop@ \newif\ifbot@ \def\topsmash{\top@true\bot@false\smash@} \def\botsmash{\top@false\bot@true\smash@} \def\smash{\top@true\bot@true\smash@} \def\smash@{\relax\ifmmode\def\next{\mathpalette\mathsm@sh}% \else\let\next\makesm@sh\fi \next } \def\finsm@sh{\iftop@\ht\z@\z@\fi\ifbot@\dp\z@\z@\fi\box\z@} % Vertical `laps'; cf. \llap and \rlap \long\def\ulap#1{\vbox to \z@{\vss#1}} \long\def\dlap#1{\vbox to \z@{#1\vss}} % And centered horizontal and vertical `laps' \def\xlap#1{\hbox to \z@{\hss#1\hss}} \long\def\ylap#1{\vbox to \z@{\vss#1\vss}} \long\def\zlap#1{\ylap{\xlap{#1}}} % Avoid unwanted vertical glue when making up pages. \def\basezero{\baselineskip\z@skip \lineskip\z@skip} % Empty rules for special occasions \def\nullhrule{\hrule height\z@ depth\z@ width\z@ } \def\nullvrule{\vrule height\z@ depth\z@ width\z@ } % Support ad-hoc strut construction. \def\makestrut[#1;#2]{\vrule height#1 depth#2 width\z@ } % Construct box for figure pasteup, etc. % height = #1, width = #2, rule thickness = #3 \def\drawoutlinebox[#1;#2;#3]{\T@stDimen=#3 \vbox to#1{\hrule height\T@stDimen depth\z@ \vss\hbox to#2{\vrule width\T@stDimen \hfil\makestrut[#1;\z@]% \vrule width\T@stDimen}\vss \hrule height\T@stDimen depth\z@}} % Today's date, to be printed on drafts. Based on TeXbook, p.406. \def\today{\number\day\space \ifcase\month\or Jan \or Feb \or Mar \or Apr \or May \or Jun \or Jul \or Aug \or Sep \or Oct \or Nov \or Dec \fi \number\year} % Current time; this may be system dependent! \newcount\hours \newcount\minutes \def\SetTime{\hours=\time \global\divide\hours by 60 \minutes=\hours \multiply\minutes by 60 \advance\minutes by-\time \global\multiply\minutes by-1 } \SetTime \def\now{\number\hours:\ifnum\minutes<10 0\fi\number\minutes} \def\Now{\today\ \now} \newif\ifPrelimDraft \PrelimDraftfalse \def\midrtitle{\ifPrelimDraft {{\tensl preliminary draft, \Now}}\fi} % Section heads. The following set of macros is used to set the large % TUGboat section heads (e.g. "General Delivery", "Fonts", etc.) \newdimen\PreTitleDrop \PreTitleDrop=\z@ \newskip\AboveTitleSkip \AboveTitleSkip=12pt \newskip\BelowTitleSkip \BelowTitleSkip=8pt \newdimen\strulethickness \strulethickness=.6pt \def\sthrule{\hrule height\strulethickness depth \z@ } \def\stvrule{\vrule width\strulethickness } \newdimen\stbaselineskip \stbaselineskip=18pt \def\@sectitle #1{% \par \SecTitletrue \penalty-1000 \secsep \vbox{ \sthrule \hbox{% \stvrule \vbox{ \advance\hsize by -2\strulethickness \raggedcenter \def\\{\unskip\break}% \sectitlefont \makestrut[2\stfontheight;\z@] #1\unskip \makestrut[\z@;\stfontheight]\endgraf }% \stvrule } \sthrule } \nobreak \vskip\baselineskip } % distance between articles which are run together \def\secsep{\vskip 5\baselineskip} \newif\ifSecTitle \SecTitlefalse % Registration marks \def\HorzR@gisterRule{\vrule height 0.2pt depth \z@ width 0.5in } \def\DownShortR@gisterRule{\vrule height 0.2pt depth 1pc width 0.2pt } \def\UpShortR@gisterRule{\vrule height 1pc depth \z@ width 0.2pt } % ``T'' marks centered on top and bottom edges of paper \def\ttopregister{\dlap{% \hbox to \trimwd{\HorzR@gisterRule \hfil \HorzR@gisterRule \HorzR@gisterRule \hfil \HorzR@gisterRule}% \hbox to \trimwd{\hfil \DownShortR@gisterRule \hfil}}} \def\tbotregister{\ulap{% \hbox to \trimwd{\hfil \UpShortR@gisterRule \hfil}% \hbox to \trimwd{\HorzR@gisterRule \hfil \HorzR@gisterRule \HorzR@gisterRule \hfil \HorzR@gisterRule}}} \def\topregister{\ttopregister} \def\botregister{\tbotregister} % PLAIN's definition of \raggedright doesn't permit any stretch, and % results in too many overfull boxes. We also turn off hyphenation. \newdimen\raggedskip \raggedskip=\z@ \newdimen\raggedstretch \raggedstretch=5em % ems of font set now (10pt) \newskip\raggedparfill \raggedparfill=\z@ plus 1fil \def\raggedspaces{\spaceskip=.3333em \relax \xspaceskip=.5em \relax } % Some applications may have to add stretch, in order to avoid % all overfull boxes. \def\raggedright{% \nohyphens \rightskip=\raggedskip plus\raggedstretch \raggedspaces \parfillskip=\raggedparfill } \def\raggedleft{% \nohyphens \leftskip=\raggedskip plus\raggedstretch \raggedspaces \parfillskip=\z@skip } \def\raggedcenter{% \nohyphens \leftskip=\raggedskip plus\raggedstretch \rightskip=\leftskip \raggedspaces \parindent=\z@ \parfillskip=\z@skip } \def\normalspaces{\spaceskip\z@skip \xspaceskip\z@skip } % Miscellaneous useful stuff \def\,{\relax\ifmmode\mskip\thinmuskip\else\thinspace\fi} %\def~{\penalty\@M \ } % tie -- this is PLAIN value; it is reset in AMS-TeX \def~{\unskip\nobreak\ \ignorespaces} % AMS-TeX value \def\newbox{\alloc@4\box\chardef\insc@unt} % remove \outer \def\boxcs#1{\box\csname#1\endcsname} \def\setboxcs#1{\setbox\csname#1\endcsname} \def\newboxcs#1{\expandafter\newbox\csname#1\endcsname} \def\gobble#1{} \def\vellipsis{% \leavevmode\kern0.5em \raise1pt\vbox{\baselineskip6pt\vskip7pt\hbox{.}\hbox{.}\hbox{.}} } \def\bull{\vrule height 1ex width .8ex depth -.2ex } % square bullet \def\cents{{\rm\raise.2ex\rlap{\kern.05em$\scriptstyle/$}c}} \def\Dag{\raise .6ex\hbox{$\scriptstyle\dagger$}} \def\careof{\leavevmode\hbox{\raise.75ex\hbox{c}\kern-.15em /\kern-.125em\smash{\lower.3ex\hbox{o}}} \ignorespaces} \def\sfrac#1/#2{\leavevmode\kern.1em \raise.5ex\hbox{\the\scriptfont\z@ #1}\kern-.1em /\kern-.15em\lower.25ex\hbox{\the\scriptfont\z@ #2}} \def\thinskip{\hskip 0.16667em\relax} \def\endash{--} \def\emdash{\endash-} \def\d@sh#1#2{\unskip#1\thinskip#2\thinskip\ignorespaces} \def\dash{\d@sh\nobreak\endash} \def\Dash{\d@sh\nobreak\emdash} \def\ldash{\d@sh\empty{\hbox{\endash}\nobreak}} \def\rdash{\d@sh\nobreak\endash} \def\Ldash{\d@sh\empty{\hbox{\emdash}\nobreak}} \def\Rdash{\d@sh\nobreak\emdash} % Hack to permit automatic hyphenation after an actual hyphen. \def\hyph{-\penalty\z@\hskip\z@skip } \def\slash{/\penalty\z@\hskip\z@skip } % "breakable" slash % Adapted from c.t.t posting by Donald Arseneau, 26 May 93. \def\nth#1{\TestCount=#1\relax \ifnum\TestCount <0 \multiply\TestCount by\m@ne \fi % subdue negatives \T@stCount=\TestCount \divide\T@stCount by 100 \multiply\T@stCount by 100 \advance\TestCount by-\T@stCount % n mod 100 \ifnum\TestCount >20 \T@stCount=\TestCount \divide\T@stCount by 10 \multiply\T@stCount by 10 \advance\TestCount by-\T@stCount % n mod 10 \fi \T@stCount=\the\fam\relax $\fam\T@stCount#1^{\fam\T@stCount \ifcase\TestCount th% 0th \or st% 1st \or nd% 2nd \or rd% 3rd \else th% nth \fi }$} % Format information on reviewed items for book review articles. \def\Review:#1{\ifx[#1\@Rev[% \else Book review:\enspace\sl #1% \fi } \def\@Rev[#1]{\ignorespaces#1\unskip:\enspace\ignorespaces\sl} \def\reviewitem{% \def\revauth##1{\def\therevauth{##1, }\ignorespaces}% \def\revtitle##1{\def\therevtitle{{\sl##1}. }\ignorespaces}% \def\revpubinfo##1{\def\therevpubinfo{##1.}\ignorespaces}% } \def\endreviewitem{{\noindent\interlinepenalty=10000 \therevauth\therevtitle\therevpubinfo\endgraf}% \vskip\medskipamount \ifx\tugstyloaded@\plaintubstyle \DeleteOptionalSpacesandPars{\noindent\ignorespaces}% \fi } \def\booktitle#1{{\sl #1\/}} % Dates and other items which identify the volume and issue % To use: \vol 5, 2. % \issdate October 1984. % \issueseqno=10 % For production, these are set in a separate file, TUGBOT.DATES, % which is issue-specific. \newcount\issueseqno \issueseqno=-1 \def\v@lx{\gdef\volx{Volume~\volno~(\volyr), No.~\issno}} \def\volyr{} \def\volno{} \def\vol #1,#2.{\gdef\volno{#1\unskip}% \gdef\issno{\ignorespaces#2\unskip}% \setbox\TestBox=\hbox{\volyr}% \ifdim \wd\TestBox > .2em \v@lx \fi } \def\issdate #1#2 #3.{\gdef\issdt{#1#2 #3}\gdef\volyr{#3}% \gdef\bigissdt{#1{\smc\uppercase{#2}} #3}% \setbox\TestBox=\hbox{\volno}% \ifdim \wd\TestBox > .2em \v@lx \fi } \vol 0, 0. % volume, issue. \issdate Thermidor, 2001. % month, year of publication \ifx\tugstyloaded@\plaintubstyle \def\tubissue#1(#2){\TUB~#1, no.~#2} \else \def\tubissue#1#2{\TUB~#1, no.~#2} \fi \def\xEdNote{{\tenuit Editor's note:\enspace }} % TUGboat conventions include the issue number in the file name. % Permit this to be incorporated into file names automatically. % If issue number = 11, \Input filnam will read tb11filnam.tex. \def\infil@{\jobname} \def\Input #1 {\ifnum\issueseqno<0 \def\infil@{#1}% \else \def\infil@{tb\number\issueseqno#1}\fi \edef\jobname{\infil@}\@readFLN \@@input \infil@\relax \ifRMKopen\immediate\closeout\TBremarkfile\RMKopenfalse\fi} \newif\ifRMKopen \RMKopenfalse \newwrite\TBremarkfile \def\TBremarkON#1{% \ifRMKopen\else\RMKopentrue\immediate\openout\TBremarkfile=\infil@.rmk \fi \toks@={#1}% \immediate\write\TBremarkfile{^^J\the\toks@}% \immediate\write16{^^JTBremark:: \the\toks@^^J}} \def\TBremarkOFF#1{} \let\TBremark=\TBremarkOFF % for marking locations in articles that pertain to remarks % in another file of editorial comments \def\TUBedit#1{} % for using different filenames in Providence than those supplied % by authors \def\TUBfilename#1#2{\expandafter\def\csname file@@#1\endcsname{#2}} \newread\@altfilenames \def\@readFLN{\immediate\openin\@altfilenames=\jobname.fln \ifeof\@altfilenames\let\@result\relax\else \def\@result{\@@input\jobname.fln }\fi \immediate\closein\@altfilenames \@result} \@readFLN \everyjob=\expandafter{\the\everyjob\@readFLN} % Following needs to work entirely in TeX's mouth \def\@tubfilename#1{\expandafter\ifx\csname file@@#1\endcsname\relax #1\else\csname file@@#1\endcsname\fi} \def\fileinput#1{\@@input\@tubfilename{#1} } % Write out (both to a file and to the log) the starting page number % of an article, to be used for cross references and in contents. % \pagexref is used for articles fully processed in the TUGboat run. % \PageXref is used for "extra" pages, where an item is submitted % as camera copy, and only running heads (at most) are run. \ifx\tugstyloaded@\plaintubstyle \def\pagexrefON#1{% \write-1{\def\expandafter\noexpand\csname#1\endcsname{\number\pageno}}% \write\ppoutfile{% \def\expandafter\noexpand\csname#1\endcsname{\number\pageno}}% } \def\PageXrefON#1{% \immediate\write-1{\def\expandafter \noexpand\csname#1\endcsname{\number\pageno}}% \immediate\write\ppoutfile{\def\expandafter \noexpand\csname#1\endcsname{\number\pageno}}} \else \def\pagexrefON#1{% \write-1{\def\expandafter\noexpand\csname#1\endcsname{\number\c@page}}% \write\ppoutfile{% \def\expandafter\noexpand\csname#1\endcsname{\number\c@page}}% } \def\PageXrefON#1{% \immediate\write-1{\def\expandafter \noexpand\csname#1\endcsname{\number\c@page}}% \immediate\write\ppoutfile{\def\expandafter \noexpand\csname#1\endcsname{\number\c@page}}} \fi \def\pagexrefOFF#1{} \let\pagexref=\pagexrefOFF \def\PageXrefOFF#1{} \let\PageXref=\PageXrefOFF \def\xreftoON#1{% \ifundefined{#1}% ???\TBremark{Need cross reference for #1.}% \else\csname#1\endcsname\fi} \def\xreftoOFF#1{???} \let\xrefto=\xreftoOFF \def\TBdriver#1{} % Authors, addresses, signatures \def\theauthor#1{\csname theauthor#1\endcsname} \def\theaddress#1{\csname theaddress#1\endcsname} \def\thenetaddress#1{\csname thenetaddress#1\endcsname} \newcount\count@@ \def\@defaultauthorlist{% % standard way of listing authors \count@=\authornumber \advance\count@ by -2 \count@@=0 \loop \ifnum\count@>0 \advance\count@@ by 1 \ignorespaces\csname theauthor\number\count@@\endcsname\unskip, \advance\count@ by -1 \repeat \count@=\authornumber \advance\count@ by -\count@@ \ifnum\authornumber>0 \ifnum\count@>1 \count@=\authornumber \advance\count@ by -1 \ignorespaces\csname theauthor\number\count@\endcsname\unskip\ and \fi \ignorespaces\csname theauthor\number\authornumber\endcsname\unskip \fi } \def\signature#1{\def\@signature{#1}} \def\@signature{\@defaultsignature} \def\@defaultsignature{% \count@=0 \loop \ifnum\count@<\authornumber \medskip \advance\count@ by \@ne \signaturemark \theauthor{\number\count@}\\ \leavevmode\theaddress{\number\count@}\\ \leavevmode\thenetaddress{\number\count@}\\ \repeat } \newdimen\signaturewidth \signaturewidth=12pc \def\makesignature{% \par \penalty9000 \vskip\medskipamount \rightline{% \vbox{\hsize\signaturewidth \ninepoint \raggedright \parindent \z@ \everypar={\hangindent 1pc } \parskip \z@skip \netaddrat \netaddrpercent \def\|{\unskip\hfil\break}% \def\\{\endgraf}% \def\net{\tt}% \def\phone{\rm Phone: } \rm \@signature}} } {\makeactive\@ \gdef\signatureat{\makeactive\@\def@{\char"40\discretionary{}{}{}}} \makeactive\% \gdef\signaturepercent{\makeactive\%\def%{\char"25\discretionary{}{}{}}} } \def\signaturemark{\leavevmode\llap{$\diamond$\enspace}} % some hyphenation exceptions: \hyphenation{Eijk-hout man-u-script man-u-scripts} \restorecat\@ \endinput % ************************************************************************* Contents and Notes ------------------ \makeescape, ..., \makecomment allow users to change category codes a little more easily. \savecat#1 and \restorecat#1 will save and restore the category of a given character. These are useful in cases where one doesn't wish to localize the settings and therefore be required to globally define or set things. \SaveCS#1 and \RestoreCS#1 save and restore `meanings' of control sequences. Again this is useful in cases where one doesn't want to localize or where global definitions clobber a control sequence which is needed later with its `old' definition. Abbreviations. Just a listing with indications of expansion where that may not be obvious. For full definitions, see real code above. \AllTeX (\La)\TeX \AMS American Mathematical Society \AmSTeX \aw A-W (abbreviation for Addison-Wesley) \AW Addison-Wesley \BibTeX \CandT Computers \& Typesetting \DVItoVDU DVItoVDU \ISBN ISBN \JTeX \JoT The Joy of \TeX \LaTeX \Mc M ``w/ raised c'' \MF METAFONT \mf Metafont (using small caps) \MFB The Metafont book \MP METAPOST \mtex multilingual TeX \pcMF pcMF \PCTeX \pcTeX \Pas Pascal \PiCTeX \plain plain (in typewriter font) \POBox P. O. Box \POBoxTUG TUG PO Box \PS PostScript \SC Steering Committee \SGML SGML \SliTeX \slMF Metafont (slanted) \stTeX TeX for the Atari ST \TANGLE \TB The \TeX book \TeX \TeXhax \TeXMaG \TeXtures \TeXXeT \TUB TUGboat \TUG TeX Users Group \UNIX \VAX \VorTeX \XeT \WEB \WEAVE \NoBlackBoxes turns off marginal rules marking overfull boxes \BlackBoxes turns them back on \newline horizontal glue plus a break \ifundefined#1 checks argument with \csname against \relax \topsmash smashes above baseline (from AMSTeX) \botsmash smashes below baseline (from AMSTeX) \smash smashes both (from plain) \ulap lap upwards \dlap lap downwards \xlap reference point at center horizontally; 0 width \ylap reference point at center vertically; 0 height, depth \zlap combination \xlap and \ylap \basezero to avoid insertion of baselineskip and lineskip glue \nullhrule empty \hrule \nullvrule empty \vrule \makestrut[#1;#2] ad hoc struts; #1=height, #2=depth \today today's date \SetTime converts \time to hours, minutes \now displays time in hours and minutes \Now shows current date and time \ifPrelimDraft flag to indicate status as preliminary draft \rtitlex TUGboat volume and number info for running head \midrtitle information for center of running head \HorzR@gisterRule pieces of registration marks ("trimmarks") \DownShortR@gisterRule \UpShortR@gisterRule \ttopregister top registration line with `T' in center \tbotregister bottom registration line with inverted `T' in center \topregister register actually used \botregister \raggedskip parameters used for ragged settings \raggedstretch \raggedparfill \raggedspaces \raggedright \raggedleft \raggedcenter \normalspaces \raggedbottom \bull square bullet \cents ``cents'' sign \Dag superscripted dagger \careof c/o \sfrac slashed fraction \dash en-dash surrounded by thinspaces; only breakable AFTER \Dash em-dash, as above \hyph permit automatic hyphenation after an actual hyphen \slash "breakable" slash \nth for obtaining "1^{st}", "2^{nd}", 3^{rd}, etc. \tubissue gets \TUB followed by volume and issue numbers \xEdNote Editor's Note: \Review: Review: (for title of book review article) \reviewitem begin data for item being reviewed \revauth with one argument, author(s) of item being reviewed \revtitle with one argument, title of ... \revpubinfo with one argument, other info pertaining to ... \endreviewitem end data for item being reviewed \booktitle with one argument, format book title in text \Input \input with some other bookkeeping for case where multiple articles are put together \TBremark reminder to TUGboat editorial staff \TBremarkON \TBremarkOFF \pagexref used to write out page numbers to screen and \pagexrefON external files \pagexrefOFF \PageXref \PageXrefON \PageXrefOFF \xrefto used for symbolic cross-reference to other pages \xreftoON in TUGboat \xreftoOFF \TBdriver marks code which only takes effect when articles are run together in a driver file \signatureat items for signatures \signaturepercent \signaturemark \signaturewidth % ************************************************************************* % Change history Version Date Changes ------- --------- --------------------------------------------------- 1.136 4 Nov 95 added \MP for METAPOST 1.13f 15 Apr 94 added \@Rev[...] to permit variable text for reviews 1.13e 14 Mar 94 revised definition of \La to use actual width of A added \LaTeXe definition 1.13d 5 Jan 94 added {} to \TeX-{}-\Xet 1.13c 11 Nov 93 removed extraneous " from header added \AmSLaTeX, \CTAN, \ISSN 1.13b 4 Nov 93 added \hyphenation{Eijk-hout} 1.13a 18 Aug 93 corrected \nth to produce ordinal in current font 1.13 27 May 93 upgraded \nth based on algorithm by Donald Arseneau in comp.text.tex, 26 May 93 1.12 19 Feb 93 added \spacefactor1000 to all replacement text that ends with a capital letter, so that if these items end a sentence, there will be a normal end-of-sentence space removed \hbox from definitions of \TeX, etc.; no longer needed changed definition of \TeXXeT to use \XeT rather than unique dimensions installed new TUG address and phone number in header reformatted change history, similar to tugboat.sty 1.11c 29 Nov 92 added macros to format book review and related items for review articles added \SGML changed def of \UNIX to use \SMC rather than \smc 1.11b 20 Oct 92 added font code for \ISBN font ("big small caps") added \Textures as the current form 1.11a 6 Jun 92 added \drawoutlinebox 1.11 15 Mar 92 added \ttn and \TTN 1.10 8 Mar 92 added \AllTeX changed file name from .COM to .CMN to avoid objection that .COM files have a special significance on DOS and other operating systems added standard headers, prepared for archive installation 1.09 5 May 91 inserted large penalty at top of \makesignature to inhibit break between article and signature 1.08 24 Oct 90 modified signature slightly (took \medskip out of box) fixed bug in previous rendition of \@readFLN 1.07 16 Oct 90 added \TUBedit to facilitate editorial marking added \iinput variant from LaTeX; \input redefined now as with LaTeX added mechanism for local file names in Providence (\TUBfilename, \fileinput, etc.) \tugstyload@ defaults to plain if it's not defined 1.06 3 Aug 90 added \leavevmode to \@defaultsignature so that \everypar is not executed inside a group dash routines modified and corrected (to suppress insertion of discretionary node after -- and ---; and to allow hyphenation of ensuing word) changed \lDash to \Ldash and \rDash to \Rdash 1.05 29 Mar 90 added \lDash and \rDash for `parenthetical' dashing added \TP for TeX: The Program added \relax after file input of \Input added \relax before \ifmmode of \, 1.04 28 Feb 90 modified pagexref macros to work in both plain and latex styles (this should NOT affect authors) 1.03 26 Feb 90 removed s and adjusted definition of \slMF 1.02 25 Feb 90 added definitions of \plaintubissue, \latextubissue added definition of \tubissue 1.01 19 Feb 90 added \signaturewidth to allow for modification added \nth to obtain 1^{st}, etc. bibclean-2.11.4.1.orig/doc/bibclean.sok0000644000175200017520000000314306142424535016716 0ustar debiandebianABBREV AW Aa Aho Atari Axel BIBCLEANEXT BIBCLEANINI BIBINPUTS Bb BibTeX Bjarne Borland C Cc Chaim D Dd Dictyostelium Discoideum Docume E ETURN Ee Emacs F FAX Feuer Gg H Harbison Herwijnen INLINE ISBN ISO ISSN Internet J Jaeschke Kernighan Knuth L LALR LBRACE LDP LL LR LaTeX Lamport Lapin Lesk Ll M Microsoft's Mm N NEWLINE NUL Newline Nn O O'Malley Oo P PC Pascal's Philippe Plauger Pp Prettyprinting Q R RBRACE Rabinowitz Ravi Redirect Rochkind Rosenblatt Rr S SGML SYS Schaap Schickele Schreiner Sethi Sr Ss Stroustrup T TB TUGboat Tel Tt UT Umlaut Unclassifiable Uu V VMS W Weinberger Wes X Z Za aAdDrRwW abbrev abbrevs aw awk b backslashed bbl beebe bibclean bibclean.ini bibcleanrc bibdup bibdup.awk bibfile bibfiles biblex bibliographystyle bibparse bibtex c canoco co compilable cro d daunting dddd dos downcase downcasing e edu ey f filespecific formfeed ftp ftp.math.utah.edu g gobbling handcrafted hazily i ic ictyostelium info ini init initially internationalize iscoideum jul k l lamport lbrace ldp lex lexer lexers lexing lhs linefeed ll ll.bib ll.out lparen ltugboat mColon makeidx makeidx,path,texnames makeidx,path,texnames,bibclean markup master.bib math.utah.edu monoul mybib mybib.bib mybib.new mylib mylib.bib nawk newfile newline newlines nio nnn nonassoc nt o ordinals os path,texnames pc pneu portably ported preprocessor prettyprint prettyprinter prettyprinters prettyprinting r rbrace reencode regexp remap resynchronize rparen s scop sed seealso sgml sil stderr stdin tex texinfo texnames tokenize tr tra tuglib typesets unclassifiable undelimited utah v vms vol whitespace workstation workstations x yacc z bibclean-2.11.4.1.orig/doc/bibclean.sty0000644000175200017520000003024305472524264016747 0ustar debiandebian%%% ==================================================================== %%% @LaTeX-style-file{ %%% author = "Nelson H. F. Beebe", %%% version = "1.01", %%% date = "17 November 1993", %%% time = "15:40:32 MST", %%% filename = "bibclean.sty", %%% address = "Center for Scientific Computing %%% Department of Mathematics %%% University of Utah %%% Salt Lake City, UT 84112 %%% USA", %%% telephone = "+1 801 581 5254", %%% FAX = "+1 801 581 4148", %%% checksum = "24086 294 1121 12451", %%% email = "beebe@math.utah.edu (Internet)", %%% codetable = "ISO/ASCII", %%% keywords = "BibTeX, bibliography, prettyprint, syntax check, %%% LaTeX style", %%% supported = "yes", %%% docstring = "This file contains macros for bibclean.ltx, %%% plus modifications to style macros from %%% ltugboat.sty and latex.tex to repair %%% problems and add features. %%% %%% Some of these modifications should be %%% incorporated in a future revision of %%% ltugboat.sty. %%% %%% The checksum field above contains a CRC-16 %%% checksum as the first value, followed by the %%% equivalent of the standard UNIX wc (word %%% count) utility output of lines, words, and %%% characters. This is produced by Robert %%% Solovay's checksum utility.", %%% } %%% ==================================================================== \hyphenation{bib-li-og-ra-phy-style pretty-printer} %%====================================================================== %% Definitions of macros used in writing bibclean.ltx. %% %% NOTE TO THE EDITOR: %% Small cap names in macros are given in upper-case letters, because %% they look too small if entirely in lower-case. We change TUGboat's %% \UNIX to match the others. Several of these macros automatically %% generate index entries, and some get discretionary hyphens added. % \catcode`\_=11 % underscore is a letter in this document % \renewcommand{\BibTeX}{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em \-T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}% \newcommand{\BIBCLEAN}{{\tt bib\-clean}\index{bibclean@{\protect\tt bibclean}}} \newcommand{\CS}[1]{{\tt\char92\relax#1}% \index{control sequence!#1@{\protect\tt\char92\relax#1}}% \index{#1@{\protect\tt\char92\relax#1}}} \newcommand{\ESCAPE}[1]{{\tt\char92\relax#1}% \index{#1@{\protect\tt\char92\relax#1}}} \newcommand{\FORMAT}[1]{{\tt \%#1}% \index{\%#1@{\protect\tt \%#1}}% \index{format!item!\%#1@{\protect\tt \%#1}}% } \newcommand{\FUNCTION}[1]{{\tt #1()}% \index{#1@{\protect\tt #1()}}% \index{function!#1@{\protect\tt #1()}}% } \newcommand{\FUNCTIONINDEX}[1]{% \index{#1@{\protect\tt #1()}}% \index{function!#1@{\protect\tt #1()}}% } \newcommand{\MACRO}[1]{{\tt #1}\index{#1@{\protect\tt #1}}% \index{macro!#1@{\protect\tt #1}}} \newcommand{\MACROINDEX}[1]{\index{#1@{\protect\tt #1}}% \index{macro!#1@{\protect\tt #1}}} % Here is some fancy work. We want \OPTION{foobar} to generate a % foobar index entry, and \OPTION{[no-]foobar} to generate both % no-foobar and foobar entries. The TeX macro \gobbleno gobbles the % [no-] prefix (actually, all text up to a right bracket). The \if % tests inside \OPTION and \OPTIONITEM check for the cases of foobar % and [no-]foobar. \def\gobbleno#1]{} % gobble [no-] prefix \newcommand{\OPTION}[1]{{\tt -#1}% \def\@firstchar##1##2\end@firstchar{##1}% \if[\@firstchar#1\end@firstchar % ] for bracket balance \index{\gobbleno#1@{\protect\tt -\gobbleno#1}}% \index{option!\gobbleno#1@{\protect\tt -\gobbleno#1}}% \index{no-\gobbleno#1@{\protect\tt -no-\gobbleno#1}}% \index{option!no-\gobbleno#1@{\protect\tt -no-\gobbleno#1}}% \else \index{#1@{\protect\tt -#1}}% \index{option!#1@{\protect\tt -#1}}% \fi } \newcommand{\OPTIONITEM}[1]{\item[{\tt -#1}]% \hskip 0pt plus 12pt% for better line breaking \def\@firstchar##1##2\end@firstchar{##1}% \if[\@firstchar#1\end@firstchar % ] for bracket balance \index{\gobbleno#1@{\protect\tt -\gobbleno#1}}% \index{option!\gobbleno#1@{\protect\tt -\gobbleno#1}}% \index{no-\gobbleno#1@{\protect\tt -no-\gobbleno#1}}% \index{option!no-\gobbleno#1@{\protect\tt -no-\gobbleno#1}}% \else \index{#1@{\protect\tt -#1}}% \index{option!#1@{\protect\tt -#1}}% \fi } \newcommand{\OSTWO}{{\sc OS/2}\index{OS/2@{\protect\sc OS/2}}} \newcommand{\PATHINDEX}[1]{\index{#1@{\protect\tt #1}}% \index{file!#1@{\protect\tt #1}}} \newcommand{\PCDOS}{{\sc PC-DOS}\index{PC-DOS@{\protect\sc PC-DOS}}} \newcommand{\PROGRAM}[1]{{\tt #1}\index{#1@{\protect\tt #1}}} \newcommand{\RULE}[1]{{\tt #1}\index{#1@{\protect\tt #1} rule}% \index{non-terminal!#1@{\protect\tt #1}}} \newcommand{\RULEINDEX}[1]{\index{#1@{\protect\tt #1} rule}% \index{non-terminal!#1@{\protect\tt #1}}} \newcommand{\SCRIBE}{{\sc Scribe}\index{Scribe@{\protect\sc Scribe}}} \newcommand{\seealso}[2]{{\em see also\/} #1} % \SGML was added to tugboat.cmn 1.11c [29-Nov-1992], but we want % our private version to index the name as well as typeset it, so % we change \newcommand to \renewcommand. \renewcommand{\SGML}{{\sc SGML}\index{SGML@{\protect\sc SGML}}} \newcommand{\TOKEN}[1]{{\tt #1}\index{#1@{\protect\tt #1}}% \index{terminal!#1@{\protect\tt #1}}} \newcommand{\TOKENINDEX}[1]{\index{#1@{\protect\tt #1}}% \index{terminal!#1@{\protect\tt #1}}} \newcommand{\TOS}{{\sc TOS}\index{TOS@{\protect\sc TOS}}} \newcommand{\TT}[1]{{\tt #1}\index{#1@{\protect\tt #1}}} \newcommand{\TTINDEX}[1]{\index{#1@{\protect\tt #1}}} \renewcommand{\UNIX}{{\sc UNIX}\index{UNIX@{\protect\sc UNIX}}} \newcommand{\VARIABLE}[1]{{\tt #1}% \index{#1@{\protect\tt #1}}% \index{variable!#1@{\protect\tt #1}}% } \newcommand{\VARIABLEINDEX}[1]{% \index{#1@{\protect\tt #1}}% \index{variable!#1@{\protect\tt #1}}% } \renewcommand{\VAX}{{\sc VAX}\index{VAX@{\protect\sc VAX}}} \newcommand{\VMS}{{\sc VMS}\index{VMS@{\protect\sc VMS}}} \renewcommand{\WEB}{{\tt WEB}\index{WEB@{\protect\tt WEB}}} % %%====================================================================== %% Parameter adjustments to reduce the number of overfull and %% underfull boxes in the narrow TUGboat columns % \newcommand{\optbreak}{\penalty 0}% optional hyphenless line break point \emergencystretch = 1pt % a little bit of extra stretch helps \exhyphenpenalty = 25 % hyphenations are okay \hbadness = 3000 % be quiet unless badness exceeds this \hfuzz = 2pt % allow slightly overfull boxes \hyphenchar\nintt = `- % allow hyphenation in \tt font sizes \hyphenchar\tentt = `- \hyphenchar\elvtt = `- \hyphenchar\twltt = `- \hyphenpenalty = 25 % hyphenations are okay \tolerance = 2000 % extra white space is expected % %%====================================================================== %% Bug fixes. %% %% Repair some problems in latex.tex. %% %% LaTeX's default tolerance of 10000 in sloppy and sloppypar is %% unsatisfactory in two-column mode; \emergencystretch saves the day. %% %% OLD: \def\sloppy{\tolerance 10000 \hfuzz .5\p@ \vfuzz .5\p@} \renewcommand{\sloppy}{\emergencystretch=10pt \tolerance 9000 \hfuzz 0.5pt \vfuzz 0.5pt} % %%====================================================================== %% Bug fixes. %% %% Repair some problems in ltugboat.sty. I believe that these changes %% should be made permanently to ltugboat.sty. %% %% Revise ltugboat.sty's \l@section which typesets a section heading %% table of contents entry. The original version sets long headings %% flush right, which gives spaced out text which looks awful. We %% change it to typeset headings in \raggedright instead, and indent %% the macro to make it more readable. %% \l@section{TOC-ENTRY}{PAGE-NUMBER} \def\l@section#1#2% {% \addpenalty{\@secpenalty}% \addvspace{1.0em plus 1pt}% \@tempdima 1.5em \begingroup \parindent \z@ \rightskip \z@ % article style makes \rightskip > 0 \parfillskip \z@ \bf \leavevmode \advance\leftskip\@tempdima% indent text by width of \numberline \hskip -\leftskip % move left for section number on first line \raggedright % NEW: no flushright text in tocs #1% toc-entry text \unskip % NEW: discard intervening space \nobreak \hfill % was \hfil, but need stronger version \nobreak \hbox to \@pnumwidth {\hss #2}% page number \par \endgroup } % %% OLD: \def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}} \def\l@figure{\@dottedtocline{1}{0em}{1.5em}} \let\l@table=\l@figure % %% Increase \@pnumwidth by 0.45em (4.5pt) to avoid overfull box %% from bad default setting. %% OLD: \def\@pnumwidth{1.55em} \def\@pnumwidth{2em} % %% Modification of \@dottedtocline from latex.tex to produce ragged right %% entries instead of very spaced out entries. \def\@dottedtocline#1#2#3#4#5{% \ifnum #1>\c@tocdepth \else \vskip \z@ plus .2pt {% \leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip \parindent #2\relax \@afterindenttrue \interlinepenalty\@M \leavevmode \@tempdima #3\relax % tempdima := NUMWIDTH \advance\leftskip \@tempdima % leftskip := INDENT + NUMWIDTH \hbox{}% \hskip -\leftskip {% \raggedright #4 \unskip \nobreak \hfill \nobreak \hbox to\@pnumwidth{\hfil\rm #5}% \par }% \par }% \fi } % %%====================================================================== %% Stylistic changes. %% %% Modifications to get toc entries for bibliography and index %% sections and to avoid loss of section headings in index. Both of %% these should be merged into ltugboat.sty. % \def\thebibliography#1{% \section*{References\@mkboth {REFERENCES}{REFERENCES}}\list {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth \advance\leftmargin\labelsep \usecounter{enumi}}% \def\newblock{\hskip .11em plus .33em minus .07em}% \tolerance 8000 \hfuzz .5\p@ \vfuzz .5\p@ \clubpenalty4000\widowpenalty4000 \addcontentsline{toc}{section}{\numberline {}References}% \sfcode`\.=1000\relax } % % Change \theindex to not fiddle page style, typeset in ragged right, % and use a \small font to shorten the article. For bibclean.ltx, % this only reduces the index size from 8 pages to 7 pages. A \tiny % font (5 pt) reduces it to 4, but standard LaTeX lacks \sc and \tt in % that size, and we need both of them. \renewcommand{\theindex}{% \section*{Index}% \@mkboth{INDEX}{INDEX}% %% OLD: \thispagestyle{plain} %leave pagestyle alone \parindent\z@ \parskip\z@ plus .3pt\relax\let\item\@idxitem \addcontentsline{toc}{section}{\numberline {}Index}% \raggedright % index entries are sometimes long \small % small font to compress index } % % Change \endtheindex to not do a page eject, so signature display can % fall on index page, and reset type size to \normalsize. \def\endtheindex{\if@restonecol\onecolumn\else\fi\par\normalsize} %======================================================================= \endinput bibclean-2.11.4.1.orig/doc/bibclean.bib0000644000175200017520000003017205472721751016665 0ustar debiandebian%%% ==================================================================== %%% BibTeX-file{ %%% author = "Nelson H. F. Beebe", %%% version = "0.15", %%% date = "18 November 1993", %%% time = "09:31:34 MST", %%% filename = "bibclean.bib", %%% address = "Center for Scientific Computing %%% Department of Mathematics %%% University of Utah %%% Salt Lake City, UT 84112 %%% USA", %%% telephone = "+1 801 581 5254", %%% FAX = "+1 801 581 4148", %%% checksum = "56881 396 1419 12410", %%% email = "beebe at math.utah.edu (Internet)", %%% codetable = "ISO/ASCII", %%% keywords = "BibTeX, bibliography, prettyprint, syntax check, %%% BibTeX style", %%% supported = "yes", %%% docstring = "This file contains bibliographic references for %%% bibclean.ltx. %%% %%% The checksum field above contains a CRC-16 %%% checksum as the first value, followed by the %%% equivalent of the standard UNIX wc (word %%% count) utility output of lines, words, and %%% characters. This is produced by Robert %%% Solovay's checksum utility.", %%% } %%% ==================================================================== %% /u/sy/beebe/tex/bibclean/doc/bibclean.bib, Tue Jan 12 16:04:16 1993 %% Edit by Nelson H. F. Beebe %% Add final 4 missing ISBN values. %% /u/sy/beebe/tex/bibclean/doc/bibclean.bib, Sat Jan 2 15:47:26 1993 %% Edit by Nelson H. F. Beebe @String{j-IC = "Information and Control"} @String{pub-ANSI = "American National Standards Institute"} @String{pub-ANSI:adr = "1430 Broadway, New York, NY 10018, USA"} @String{pub-AW = "Ad{\-d}i{\-s}on-Wes{\-l}ey"} @String{pub-AW:adr = "Reading, MA, USA"} @String{pub-HAYDEN = "Hayden Books"} @String{pub-HAYDEN:adr = "4300 West 62nd Street, Indianapolis, IN 46268, USA"} @String{pub-HRW = "Holt, Reinhart, and Winston"} @String{pub-HRW:adr = "New York, NY, USA"} @String{pub-KLUWER = "Kluwer Academic Publishers Group"} @String{pub-KLUWER:adr = "Norwell, MA, USA"} @String{pub-OR = "O'Reilly \& {Associates, Inc.}"} @String{pub-OR:adr = "981 Chestnut Street, Newton, MA 02164, USA"} @String{pub-PH = "Pren{\-}tice-Hall"} @String{pub-PH:adr = "Englewood Cliffs, NJ 07632, USA"} @String{TUGboat = "TUGBoat"} @Book{Aho:APL87, nb = "the author order is AKW, but the key looks better as AWK", key = "AWK87", author = "Alfred V. Aho and Brian W. Kernighan and Peter J. Weinberger", title = "The {AWK} Programming Language", publisher = pub-AW, address = pub-AW:adr, year = "1988", ISBN = "0-201-07981-X", } @Book{Aho:CPT86, author = "Alfred V. Aho and Ravi Sethi and Jeffrey D. Ullman", title = "Compilers\emdash Prin\-ci\-ples, Techniques, and Tools", publisher = pub-AW, address = pub-AW:adr, year = "1986", ISBN = "0-201-10088-6", } @Manual{ANSI:c89, title = "American National Standard Programming Language C, {ANSI} X3.159-1989", organization = pub-ANSI, address = pub-ANSI:adr, year = "1989", month = dec # " 14", } @Article{Beebe:TB12S-2-176, author = "Nelson H. F. Beebe", title = "Publications about {\TeX} and typography", journal = TUGboat, year = "1991", volume = "Supplement to 12", number = "2", pages = "176--183", month = may, bibdate = "Wed Dec 16 12:12:20 1992", } @Article{Beebe:TB12S-2-183, author = "Nelson H. F. Beebe", title = "Publications prepared with {\TeX}", journal = TUGboat, year = "1991", volume = "Supplement to 12", number = "2", pages = "183--194", month = may, bibdate = "Wed Dec 16 12:12:20 1992", } @Book{Bryan:SAG88, author = "Martin Bryan", title = "{SGML}\emdash An Author's Guide to the Standard Generalized Markup Language", publisher = pub-AW, address = pub-AW:adr, year = "1988", ISBN = "0-201-17535-5", } @Book{Cameron:LGE91, author = "Debra Cameron and Bill Rosenblatt", title = "Learning {GNU} Emacs", publisher = pub-OR, address = pub-OR:adr, year = "1991", ISBN = "0-937175-84-6", } @Book{Ellis:ACR90, author = "Margaret A. Ellis and Bjarne Stroustrup", title = "The Annotated {C++} Reference Manual", publisher = pub-AW, year = "1990", address = pub-AW:adr, ISBN = "0-201-51459-1", } @Book{Feuer:CPB89, author = "Alan R. Feuer", title = "The {C} Puzzle Book", publisher = pub-PH, address = pub-PH:adr, year = "1989", edition = "Second", ISBN = "0-13-115502-4", bibdate = "Fri Jan 1 10:55:07 1993; Tue Jan 12 16:01:55 1993", } @Book{Harbison:CAR91, author = "Samuel P. Harbison and Guy L. {Steele Jr.}", title = "C\emdash A Reference Manual", publisher = pub-PH, address = pub-PH:adr, year = "1991", edition = "Third", ISBN = "0-13-110933-2", } @Book{Jaeschke:PCL89, author = "Rex Jaeschke", title = "Portability and the {C} Language", publisher = pub-HAYDEN, address = pub-HAYDEN:adr, year = "1989", ISBN = "0-672-48428-5", } @InCollection{Johnson:yacc, author = "Steven C. Johnson", title = "Yacc: Yet Another Compiler Compiler", booktitle = "{UNIX} Programmer's Manual", publisher = pub-HRW, address = pub-HRW:adr, year = "1979", volume = "2", pages = "353--387", note = "AT\&T Bell Laboratories Technical Report, July 31, 1978.", } @Book{Kernighan:CPL78, author = "Brian W. Kernighan and Dennis M. Ritchie", title = "The C Programming Language", publisher = pub-PH, address = pub-PH:adr, year = "1978", ISBN = "0-13-110163-3", } @Book{Kernighan:CPL88, author = "Brian W. Kernighan and Dennis M. Ritchie", title = "The C Programming Language", publisher = pub-PH, address = pub-PH:adr, year = "1988", edition = "Second", ISBN = "0-13-110362-8", } @Book{Knuth:ct-a, author = "Donald E. Knuth", title = "The {\TeX}book", publisher = pub-AW, address = pub-AW:adr, year = "1986", volume = "A", series = "Computers and Typesetting", ISBN = "0-201-13447-0", } @Article{Knuth:j-IC-8-6-607, author = "Donald E. Knuth", title = "On the Translation of Languages from Left to Right", journal = j-IC, year = "1965", volume = "8", number = "6", pages = "607--639", note = "This is the original paper on the theory of LR(k) parsing.", bibdate = "Sat Jan 9 10:03:10 1993", } @Book{Koenig:CTP89, author = "Andrew Koenig", title = "{C} Traps and Pitfalls", publisher = pub-AW, year = "1989", address = pub-AW:adr, ISBN = "0-201-17928-8", bibdate = "Fri Jan 1 10:59:22 1993; Tue Jan 12 16:02:36 1993", } @Book{Lamport:LDP85, author = "Leslie Lamport", title = "{\LaTeX}\emdash A Document Preparation System\emdash User's Guide and Reference Manual", publisher = pub-AW, address = pub-AW:adr, year = "1985", ISBN = "0-201-15790-X", } @Book{Lapin:PCU87, author = "J. E. Lapin", title = "Portable C and {UNIX} Programming", publisher = pub-PH, address = pub-PH:adr, year = "1987", ISBN = "0-13-686494-5", } @InCollection{Lesk:lex, author = "Michael E. Lesk and Eric Schmidt", title = "Lex\emdash A Lexical Analyzer Generator", booktitle = "{UNIX} Programmer's Manual", publisher = pub-HRW, address = pub-HRW:adr, year = "1979", volume = "2", pages = "388--400", note = "AT\&T Bell Laboratories Technical Report in 1975.", } @Book{Levine:LY92, author = "John R. Levine and Tony Mason and Doug Brown", title = "{\tt lex} \& {\tt yacc}", publisher = pub-OR, year = "1992", ISBN = "1-56592-000-7", address = pub-OR:adr, edition = "Second", pages = "400", price = "US\$29.95", libnote = "Not yet in my library.", bibdate = "Tue Jan 12 08:12:11 1993", } @Book{Mason:LY90, author = "Tony Mason and Doug Brown", title = "{\tt lex} \& {\tt yacc}", publisher = pub-OR, year = "1990", address = pub-OR:adr, ISBN = "0-937175-49-8", } @Book{Plauger:SCL92, author = "P. J. Plauger", title = "The {Standard C} Library", publisher = pub-PH, address = pub-PH:adr, year = "1992", ISBN = "0-13-838012-0", } @Book{Rabinowitz:PC90, author = "Henry Rabinowitz and Chaim Schaap", title = "Portable C", publisher = pub-PH, address = pub-PH:adr, year = "1990", ISBN = "0-13-685967-4", } @Manual{Reid:SUM80, title = "Scribe User's Manual", author = "Brian Reid", organization = "Carnegie-Mellon University", address = "Pittsburgh, PA, USA", edition = "Third", year = "1980", bibdate = "Fri Jan 1 12:06:12 1993", } @Book{Rochkind:AUP85, author = "Marc J. Rochkind", title = "Advanced {UNIX} Programming", publisher = pub-PH, address = pub-PH:adr, year = "1985", ISBN = "0-13-011818-4 (hardback), 0-13-011800-1 (paperback)", } @Book{Schoonover:GEU92, author = "Michael A. Schoonover and John S. Bowie and William R. Arnold", title = "{GNU} Emacs: {UNIX} Text Editing and Programming", publisher = pub-AW, year = "1992", address = pub-AW:adr, ISBN = "0-201-56345-2", LCCN = "QA76.76.T49S36", pages = "610", } @Book{Schreiner:ICC85, author = "Axel T. Schreiner and H. George {Friedman, Jr.}", title = "Introduction to Compiler Construction Under {UNIX}", publisher = pub-PH, address = pub-PH:adr, ISBN = "0-13-474396-2", pages = "224", year = "1985", bibdate = "Tue Jan 12 16:03:28 1993", } @Book{Stevens:UNP90, author = "W. Richard Stevens", title = "{UNIX} Network Programming", publisher = pub-PH, address = pub-PH:adr, year = "1990", ISBN = "0-13-949876-1", } @Book{Stroustrup:CPL91, author = "Bjarne Stroustrup", title = "The {C++} Programming Language", publisher = pub-AW, address = pub-AW:adr, edition = "Second", year = "1991", ISBN = "0-201-53992-6", email = "\path|bs@alice.uucp|", } @Book{vanHerwijnen:PS90, author = "Eric van Herwijnen", title = "Practical {SGML}", publisher = pub-KLUWER, address = pub-KLUWER:adr, year = "1990", ISBN = "0-7923-0635-X", pages = "xviii + 307", inprint = "yes", price = "\pounds24.90 (1990)", review = "in " # j-TEXLINE # " 10, p. 27 and \cite{Popperlier:NTG-92-1-135} and \cite{Popperlier:TB13-2-182}", acknowledgement = ack-mc # " and " # ack-fm, } @Book{xopen:XPG89-1, author = "{X/Open Company, Ltd.}", title = "X\slash Open Portability Guide, {XSI} Commands and Utilities", publisher = pub-PH, address = pub-PH:adr, year = "1989", volume = "1", ISBN = "0-13-685835-X", } bibclean-2.11.4.1.orig/doc/path.sty0000644000175200017520000003232605123766171016146 0ustar debiandebian%%% @LaTeX-style-file{ %%% author = "Philip Taylor", %%% version = "3.03", %%% date = "18 December 1991", %%% time = "17:47:20 MST", %%% filename = "path.sty", %%% address = "The Computer Centre %%% RHBNC, University of London %%% Egham Hill %%% Egham, Surrey TW20 0EX, ENGLAND", %%% telephone = "Tel: +44 784 443172", %%% FAX = "Fax: +44 784 434348", %%% checksum = "41143 321 1758 13526", %%% email = "P.Taylor@Vax.Rhbnc.Ac.Uk (Internet)", %%% codetable = "ISO/ASCII", %%% keywords = "file name, filename, path name, pathname, %%% discretionary, discretionaries", %%% supported = "yes", %%% docstring = {Computer filenames, host names, and e-mail %%% addresses tend to be long strings that %%% cause line breaking problems for TeX. %%% Sometimes rather long strings are %%% encountered; here are two examples: %%% %%% Friesland%rz.informatik.uni-hamburg.dbp.de%germany.csnet@relay.cs.net %%% %%% mighty-mouse-gw.scrc.symbolics.com %%% %%% This file defines a macro, \path|...|, %%% similar to LaTeX's \verb|...| macro, that %%% sets the text in the typewriter font, %%% allowing hyphen-less line breaks at %%% punctuation characters. %%% %%% The default set of punctuation characters is %%% defined as %%% %%% \discretionaries |~!@$%^&*()_+`-=#{"}[]:;'<>,.?\/| %%% %%% However, you can change it as needed, for %%% example %%% %%% \discretionaries +@%!.+ %%% %%% would assign to it the set @ % ! . which %%% commonly occur in electronic mail addresses. %%% %%% The delimiter characters surrounding the %%% arguments to \discretionaries and \path %%% will normally be a punctuation character not %%% found in the argument, and not otherwise %%% significant to TeX. In particular, backslash %%% cannot be used as a delimiter. In the rare %%% event that this is required, set %%% %%% \specialpathdelimiterstrue %%% %%% This practice is not recommended, because TeX %%% then runs about four times slower while it is %%% typesetting \path\...\ requests. %%% \specialpathdelimitersfalse is the normal %%% setting. %%% %%% This file may be used in Plain TeX or AmSTeX %%% by %%% %%% \input path.sty %%% %%% and in LaTeX by %%% %%% \documentstyle[...,path,...]{...} %%% %%% The checksum field above contains a CRC-16 %%% checksum as the first value, followed by the %%% equivalent of the standard UNIX wc (word %%% count) utility output of lines, words, and %%% characters. This is produced by Robert %%% Solovay's checksum utility.} %%% } %%% ==================================================================== % ====================================================================== % % The \path Macro % % An early prototype of this code which was developed by Nelson H. F. % Beebe used a recursive macro to peel off one % character at a time, then with a nest of \ifx statements, test for % each punctuation character, and if one is found, insert discretionary % linebreaks in the form of \- or \penalty0. While this usually works, % it is not entirely satisfactory, because the nested \ifx statements % are ugly, and the recursion can exhaust TeX's macro stack for % arguments longer than about 30 characters. % % A second version by NHFB built upon the ideas used by the LaTeX % \verb|...| macro; this was mostly successful, but was flawed by its % inability to handle at least the three characters ^ [ ], by loss of % use of @ for naming internal private macros, and by its inability to % allow the set of characters at which breaks are permissible. % % The problem was then passed off to Philip Taylor, who wrote this third % version which fully solves the problem. Phil therefore gets the % author credit in the file header above. [Gee, thanks ! ** Phil] % % Revision history (reverse time order): % % 3.03 [03-Dec-1991] % Problem: A \path|...| entry in a LaTeX index is set with an % preceding blank line. % Solution: Add \leavevmode before \hbox{}; without it, an extra blank % line gets typeset before every invocation of \path in a % LaTeX theindex environment. % Diagnosis: To avoid hyphenation, the expansion of \path starts with % an \hbox{} (c.f. the TeXbook, p. 454); LaTeX indices are % basically set in vertical mode, with each index entry a % paragraph in its own right; when an \hbox {} is % encountered in vmode, it is typeset in vmode, and TeX % continues; the first real character is encountered, and % TeX enters unrestricted horizontal mode. The \hbox {} and % the first character are therefore on separate lines, % separated by \baselineskip. % % 3.02 [23-Oct-1991 13:45:12] % First released version. % ====================================================================== \immediate\write16{This is path.sty, Version 3.03 <03-Dec-1991>} %%% We will regrettably need one \count variable with an open name, %%% in which to save the category code of commercial-at ... \newcount \ATcode \ATcode = \catcode `\@ %%% Make commercial-at a letter to provide concealed control sequences \catcode `\@ = 11 %%% and then declare two \count variables with concealed names \newcount \c@tcode \newcount \c@unter %%% and a boolean variable with an open name, to specify the nature of %%% the delimiters which will be associated with the \path command \newif \ifspecialpathdelimiters %%% We need to define control sequences which expand to both %%% active and passive spaces ... \begingroup \catcode `\ = 10 \gdef \passivesp@ce { } \catcode `\ = 13\relax% \gdef\activesp@ce{ }% \endgroup %%% \discretionaries will define a macro \discr@ti@n@ri@s which will %%% make every character between the first and final a %%% discretionary breakpoint. \def \discretionaries %%% % start a group (ended in \discr@ti@naries ), % make every character (apart from space) active, % then transfer control to \discr@tionaries ... {\begingroup \c@tcodes = 13 \discr@tionaries } %%% \discr@tionaries will receive as parameter the initial %%% which will delimit the set of discretionaries; this %%% will be active. \def \discr@tionaries #1%%% % knowing the initial , define \discr@ti@naries with a % delimited parameter structure, the final delimiter being % the second instance of {\def \discr@ti@naries ##1#1%%% % \discr@ti@naries will receive as parameter the set of % characters which are to be made discretionaries; it ends the % group and then defines \discr@ti@n@ries, a tail-recursive % macro, which will quietly process each of the % discretionaries in turn ... {\endgroup \def \discr@ti@n@ries ####1%%% or % by checking to see if it has reached the end of the % list, i.e. comparing its parameter with the known final % ... {\if \noexpand ####1\noexpand #1% % if they match, there is no more to do ... \let \n@xt = \relax \else % otherwise the character becomes active and is % defined as a discretionary with the three texts % , thus suppressing true % hyphenation; the macro then prepares to process % the next character. \catcode `####1 = 13 \def ####1{\discretionary {\char `####1}{}{\char `####1}}% \let \n@xt = \discr@ti@n@ries \fi % here either tail recursion occurs, if there are more % characters to process, or tail recursion ceases if all % have been exhausted \n@xt }% % of course, none of this must take place during the \stress % {call} of \discretionaries; execution is deferred until % another macro such as \path calls the concealed action % macro \discr@ti@n@ri@s; we therefore define this macro to % have the desired effect. \def \discr@ti@n@ri@s {\discr@ti@n@ries ##1#1}% }% % and finally invoke \discr@ti@naries to process the set of % discretionary characters; it will take everything up to the % second instance of as its parameter (and therefore as the % set of characters to be processed). \discr@ti@naries } %%% \path, which is the user interface to \p@th, first checks %%% to see whether \specialpathdelimiters is or ; %%% if , it needs to take special action to ensure that %%% \stress {all} characters (apart from ) are acceptable %%% as delimiters; this is very time-consuming, and should be %%% avoided if at all possible. It also defines \endp@th, to %%% close the appropriate number of groups, and finally transfers %%% control to \p@th \def \path {\ifspecialpathdelimiters \begingroup \c@tcodes = 12 \def \endp@th {\endgroup \endgroup}% \else \let \endp@th = \endgroup \fi \p@th } %%% \p@th, which has essentially the same syntax as \discretionaries, %%% expects to be followed by a , a , and a second instance %%% of ; it will typeset in the \tt font with hyphenation %%% inhibited --- breaks (but not true hyphenation) are allowed at any %%% or all of the special characters which have %%% previously been declared as \discretionaries. \def \p@th #1%%% % it starts by opening a group (ended in \p@@th) ... % switches to \tt, and inhibits hyphenation; % allows breaks at \discretionaries; saves the % catcode of the initial , because if it has also been % declared within \discretionaries, the initial and final % won't match (which would be a disaster); \c@tcode is overloaded, % but there is no conflict that I can detect ... % invokes \discr@ti@n@ri@s to render active the set of special % characters which have previously been declared as % \discretionaries; each of these characters will expand to a real % \discretionary, with replacement texts ; and % re-instates the catcode of the initial . {\begingroup \tt \c@tcode = \catcode `#1 \discr@ti@n@ri@s \catcode `\ = \active \expandafter \edef \activesp@ce {\passivesp@ce \hbox {}}% \catcode `#1 = \c@tcode % it next defines an inner macro \p@@th with delimited parameter % structure, the final delimiter being the same as the initial % delimiter which it has itself received as #1. \def \p@@th ##1#1% % Within \p@@th, % permissible breakpoints are specified, % the path is typeset, % and the group(s) ended. {\leavevmode \hbox {}##1% \endp@th }% \p@@th } %%% \c@tcodes expects to be followed by the r-h-s of a numeric %%% assignment optionally including the assignment operator; it saves %%% the value of the r-h-s in \c@tcode, and invokes \c@tc@des. \def \c@tcodes {\afterassignment \c@tc@des \c@tcode} %%% \c@tc@des uses the value saved in \c@tcode, and assigns it to the %%% \catcode of all characters with the single exception of , %%% which retains its normal catcode of 10; on exit, every single %%% character apart from will have the catcode which followed %%% \c@tcodes. The code is optimised to avoid unnecessary usage of %%% save-stack space. \def \c@tc@des {\c@unter = 0 \loop \ifnum \catcode \c@unter = \c@tcode \else \catcode \c@unter = \c@tcode \fi \ifnum \c@unter < 255 \advance \c@unter by 1 \repeat \catcode `\ = 10 } %%% We restore the original catcode of commercial-at \catcode `\@ = \ATcode %%% Define a default set of discretionary break characters %%% to include all punctuation characters except vertical %%% bar \discretionaries |~!@$%^&*()_+`-=#{}[]:";'<>,.?\/| \endinput bibclean-2.11.4.1.orig/doc/ltugboat.sty0000644000175200017520000005675305722745571017053 0ustar debiandebian%% @latexfile{ %% filename="ltugboat.sty", %% version="1.19", %% date="16-Nov-1993", %% filetype="LaTeX macros for TUGboat", %% copyright="Copyright (C) TeX Users Group. %% Copying of this file is authorized only if either: %% (1) you make absolutely no changes to your copy, OR %% (2) if you do make changes, you first rename it to some %% other name.", %% author="TeX Users Group", %% address="TeX Users Group, %% P. O. Box 869, %% Santa Barbara, CA 93102, %% USA", %% telephone="805-963-1338", %% email="Internet: TUGboat@Math.AMS.org", %% codetable="ISO/ASCII", %% checksumtype="line count", %% checksum="718", %% keywords="tex users group, tugboat, latex", %% abstract="This file contains the LaTeX-based macros %% for preparation of TUGboat, the Communications %% of the TeX Users Group." %% } %% ********************************************************* %% %% Use of this file also requires the following files: %% ARTICLE.STY %% ART10.STY %% TUGBOAT.CMN (version 1.08+) %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\thistubstyle{latex} \def\fileversion{v1.19} \def\filedate{16 November 93} % Change history at bottom of file % ***** LTUGBOAT.STY ***** % % % Incorporates ideas and elements from these TUGboat authors: % Adrian Clark % Frank Mittelbach % Rainer Sch\"opf % Stop here if this file has been read already \ifx\tugstyloaded@\thistubstyle \tugstyinit \endinput\else\let\tugstyloaded@\thistubstyle\fi \typeout{Document Style `ltugboat' \fileversion \space\space <\filedate>} % ********************************************************************** % % Load macros required by this style, but only if it wasn't done already \ifx\c@section\undefined \input article.sty \fi % Macros common to ltugboat.sty and tugboat.sty \input tugboat.cmn % *********************************************************************** % % Fonts % install additional fonts as appropriate for plain/old LaTeX or NFSS: % provide definition of \tensl if NFSS is loaded \ifx\selectfont\undefined % old LaTeX \font\sevbf=cmbx7 \font \svtnsfb=cmssbx10 scaled \magstep3 % for section titles; % \font \twlsfb=cmssbx10 scaled \magstep1 % definition of \LaTeX \newfam\sectitlefam % requires a family \textfont\sectitlefam=\svtnsfb \scriptfont\sectitlefam=\twlsfb \def\sectitlefont{\fam\sectitlefam\svtnsfb\baselineskip\stbaselineskip} % \font\egtsl=cmsl8 \font\tenuit=cmu10 % for Editor's Note % % redo definition of 10pt from latex (lfonts), to install \sevbf as % \*scriptfont of \bffam and \egtsl in \slfam % \*scriptfont of \bffam for 9pt \toks0=\expandafter{\xpt\scriptfont\bffam\sevbf \scriptscriptfont\bffam\sevbf \scriptfont\slfam\egtsl \scriptscriptfont\slfam\egtsl} \xdef\xpt{\the\toks0} \toks0=\expandafter{\ixpt\scriptfont\bffam\sevbf \scriptscriptfont\bffam\sevbf} \xdef\ixpt{\the\toks0} \else % NFSS in effect % for section titles; include explicit definition of \La (for \LaTeX) \def\sectitlefont{\def\La{\leavevmode L\raise.42ex \hbox{\fontsize{12}{12pt}\selectfont\kern-.4em A}}% \fontfamily{cmss}\fontseries{bx}\fontshape{n}% \fontsize{17}{\stbaselineskip}\selectfont} \def\tensl{\fontfamily{cmr}\fontseries{m}\fontshape{sl}\fontsize{10}{12pt}% \selectfont} \def\tubfont{\shape{sl}\selectfont} \def\tenuit{\fontfamily{cmr}\fontseries{m}\fontshape{u}\fontsize{10}{12pt}% \selectfont} \fi % *********************************************************************** % % normal TUGboat dimensions, glue values, penalties \@twosidetrue % for odd/even asymmetry in running heads \twocolumn % two columns \sloppy % make those columns justify %\flushbottom % but ensure they line up \columnsep 1.5pc % space between columns \columnwidth 18.75pc % width of each column \parindent \normalparindent % paragraph indent \parskip 0pt % no inter-paragraph space \leftmargini 2em % unchanged \leftmarginv .5em % unchanged \leftmarginvi .5em % unchanged \oddsidemargin 0pt % was 42pt \evensidemargin 0pt % was 84pt \topmargin -2.5pc % was 0pt \headheight 12pt % height of running head, unchanged \headsep 20pt % distance between header and text \marginparwidth 48pt % don't use marginal notes \marginparsep 10pt % in TUGboat \textheight 54pc % height of text on page \textwidth 39pc % total width of a page \partopsep=\z@ \topsep=3pt plus1pt minus1pt \parsep=3pt plus 1pt minus 1pt \itemsep=\parsep \def\@normalsize{\@setsize\normalsize{12pt}\xpt\@xpt \abovedisplayskip=3pt plus 3pt minus 1pt \belowdisplayskip=\abovedisplayskip \abovedisplayshortskip=\z@ plus3pt \belowdisplayshortskip=1pt plus3pt minus1pt} \def\small{\@setsize\small{11pt}\ixpt\@ixpt \abovedisplayskip=2.5pt plus2.5pt minus1pt\belowdisplayskip=\abovedisplayskip \abovedisplayshortskip=\z@ plus2pt \belowdisplayshortskip=1pt plus2pt minus1pt} \def\SMC{\small} \def\footnotesize{\@setsize\footnotesize{12pt}\xpt\@xpt \abovedisplayskip=3pt plus 3pt minus 1pt \belowdisplayskip=\abovedisplayskip \abovedisplayshortskip=\z@ plus3pt \belowdisplayshortskip=1pt plus3pt minus1pt} % *********************************************************************** % % Lists \def\@listi{\leftmargin\leftmargini\parsep=1pt plus 1pt minus 1pt \itemsep=\parsep \listparindent=1em } \def\@listii{\leftmargin\leftmarginii \labelwidth=\leftmarginii \advance\labelwidth-\labelsep \topsep=2pt plus 1pt minus 1pt \parsep=1pt plus 1pt minus 1pt \itemsep=\parsep \listparindent=1em } \def\@listiii{\leftmargin=\leftmarginiii \labelwidth=\leftmarginiii \advance\labelwidth-\labelsep \topsep=1pt plus 1pt minus 1pt \parsep=\z@ \itemsep=\topsep \listparindent=1em } % *********************************************************************** % % Titles, authors, addresses, signatures \setbox\T@stBox=\hbox{\sectitlefont O} \newdimen\stfontheight \stfontheight=\ht\T@stBox \def \sectitle#1{\SecTitletrue \def\s@ctitle{#1}} \newcount\authornumber \authornumber=0 \def\author#1{% \global\advance\authornumber\@ne \expandafter\def\csname theauthor\number\authornumber\endcsname {\ignorespaces#1\unskip}% \expandafter\let\csname theaddress\number\authornumber\endcsname\relax \expandafter\let\csname thenetaddress\number\authornumber\endcsname\relax } \def\address#1{% \expandafter\def\csname theaddress\number\authornumber\endcsname {\ignorespaces#1\unskip}} \def\network#1{\def\@network{#1: }} \def\netaddress{% \begingroup \let\@network\relax \@ifnextchar[{\@netaddress}{\@netaddress[]}% } {\makeactive\@ \gdef\netaddrat{\makeactive\@\def@{\char"40\discretionary{}{}{}}} \makeactive\% \gdef\netaddrpercent{\makeactive\%\def%{\char"25\discretionary{}{}{}}} } \def\@netaddress[#1]{#1\@sanitize\makespace\ \makeactive\@\makeactive\%% \@@netaddress} \def\@@netaddress#1{% \toks@{#1}% \ifx\@network\relax \def\@@network{}% \else \def\@@network{\@network}\fi \expandafter\xdef\csname thenetaddress\number\authornumber\endcsname {{\noexpand\rm\@@network}% {\noexpand\netaddrat\noexpand\netaddrpercent\noexpand\net \ignorespaces\the\toks@\unskip}}% \endgroup } \def\net{\tt} % Overrides to default author and signature formats \def\authorlist#1{\def\@author{#1}} \def\@author{\@defaultauthorlist} \def\maketitle{\par \ifdim\PreTitleDrop > 0pt \loop \ifdim \PreTitleDrop > \textheight \vbox{}\vfil\eject \advance\PreTitleDrop by -\textheight \repeat \vbox to \PreTitleDrop{} \global\PreTitleDrop=0pt \fi \begingroup \setcounter{footnote}{0} \def\thefootnote{\fnsymbol{footnote}} % \def\@makefnmark{\hbox to 0pt{$^{\@thefnmark}$\hss}} \@maketitle \@thanks \endgroup \setcounter{footnote}{0} % \let\maketitle\relax % \let\@maketitle\relax \gdef\@thanks{}%\gdef\@author{}\gdef\@title{}% %\let\thanks\relax } \newif\ifWideSecTitle \def\@maketitle{\ifSecTitle \global\SecTitlefalse \T@stDimen=\hsize \ifWideSecTitle \hsize=\textwidth \global\WideSecTitlefalse \fi \@sectitle{\s@ctitle}% \hsize=\T@stDimen \else \vskip\AboveTitleSkip \kern\topskip \hrule height\z@ depth\z@ width 10pt \kern-\topskip \kern-\strulethickness \hrule height\strulethickness depth\z@ \kern\medskipamount \nobreak \fi {\nohyphens \interlinepenalty\@M \setbox0= \hbox{\let\thanks\@gobble \let\\=\quad \let\and=\quad \ignorespaces\@author}% {\noindent\bf\raggedright\ignorespaces\@title\endgraf}% \ifdim \wd0 < 5pt % omit if author is null \else \nobreak \vskip 4pt % 4pt + \BelowTitleSkip = \baselineskip {\leftskip=\normalparindent \raggedright \def\and{\unskip\\}% \noindent\@author\endgraf}% \fi \nobreak \vskip\BelowTitleSkip }} \def\dedication{\bgroup\raggedright\let\MF=\slMF\noindent\it\ignorespaces} \def\enddedication{\endgraf\egroup\medskip} \def\abstract{ \section*{Abstract} } \def\endabstract{} \def\longabstract{ \section*{Abstract} \bgroup\small} \def\endlongabstract{\endgraf\egroup \vspace{.25\baselineskip} \begin{center} {$--*--$} \end{center} \vspace{.5\baselineskip}} % Redefine style of section headings to look more like TUGboat. % Start with definitions from art10.sty . (Only \section correct so far.) % % \vskip 8pt \vskip\parskip before; \vskip 4pt after % Negative beforeskip suppresses following parindent. \def\section{\@startsection {section}{1}{\z@}{-8pt}{4pt}% {\normalsize\bf\raggedright\hyphenpenalty=\@M}} \def\subsection{\@startsection{subsection}{2}{\z@}{-8pt}{4pt}% {\normalsize\bf\raggedright\hyphenpenalty=\@M}} \def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-8pt}{4pt}% {\normalsize\bf\raggedright\hyphenpenalty=\@M}} \def\paragraph{\@startsection % {paragraph}{4}{\z@}{3.25ex plus 1ex minus .2ex}{-1em}{\normalsize\bf}} {paragraph}{4}{\z@}{2.5ex plus 1ex}{-1em}{\normalsize\bf}} \def\subparagraph{\@startsection {subparagraph}{4}{\parindent}{2.5ex plus 1ex}{-1em}{\normalsize\bf}} % Modify \appendix from art10.sty, to add ``Appendix'' % 1 May 89 Mittelach comments that we need to put ``Appendix'' % somewhere other than \thesection if \tableofcontents is used. %\def\appendix{\par % \setcounter{section}{0} % \setcounter{subsection}{0} % \def\thesection{Appendix \Alph{section}}} \def \EdNote{{\tenuit Editor's note:\enspace }} % *********************************************************************** % % Tables of contents % The original versions of the table of contents entries justify long % headings, which gives spaced out text which looks awful. We change % this to typeset headings \raggedright instead. We also use lightface % rather than bold, and decrease the skip between entries, since % TUGboat contents lists usually don't go to levels below \section. % % Modifications mainly by Nelson Beebe, with indentation to make macros % more readable. % \l@section{TOC-ENTRY}{PAGE-NUMBER} \def\l@section#1#2{% \addpenalty{\@secpenalty}% \addvspace{.1em plus 1pt}% \@tempdima 1.5em \begingroup \parindent \z@ \rightskip \z@ % article style makes \rightskip > 0 \parfillskip \z@ \advance\leftskip\@tempdima% indent text by width of \numberline \hskip -\leftskip % move left for section number on first line \raggedright % NEW: no flushright text in tocs #1% toc-entry text \unskip % NEW: discard intervening space \nobreak \hfill % was \hfil, but need stronger version \nobreak \hbox to \@pnumwidth {\hss #2}% page number \par \endgroup } %% OLD: \def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}} \def\l@figure{\@dottedtocline{1}{0em}{1.5em}} \let\l@table=\l@figure % %% Increase \@pnumwidth by 0.45em (4.5pt) to avoid overfull box %% from bad default setting. %% OLD: \def\@pnumwidth{1.55em} \def\@pnumwidth{2em} % %% Modification of \@dottedtocline from latex.tex to produce ragged right %% entries instead of very spaced out entries. \def\@dottedtocline#1#2#3#4#5{% \ifnum #1>\c@tocdepth \else \vskip \z@ plus .2pt {% \leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip \parindent #2\relax \@afterindenttrue \interlinepenalty\@M \leavevmode \@tempdima #3\relax % tempdima := NUMWIDTH \advance\leftskip \@tempdima % leftskip := INDENT + NUMWIDTH \hbox{}% \hskip -\leftskip {% \raggedright #4 \unskip \nobreak \hfill \nobreak \hbox to\@pnumwidth{\hfil\rm #5}% \par }% \par }% \fi } % *********************************************************************** % % Footnotes \long\def\@makefntext#1{\parindent 1em\noindent\hbox to 2em{}% \llap{\@makefnmark}\null$\mskip5mu$#1} % \llap{$^{\@thefnmark}\,$}#1} % *********************************************************************** % % Figures \def\fnum@figure{{\bf Figure \thefigure}} % *********************************************************************** % % Quotes \def\quote{\list{}{\rightmargin.5\leftmargin}\item[]} % From Dominik Wujastyk's font article. First paragraph of a quotation % will not be indented, and right margin is decreased for narrow columns. \renewcommand{\quotation}{\list{}{\listparindent 1.5em \rightmargin.5\leftmargin\parsep 0pt plus 1pt}\item[]} % *********************************************************************** % % Bibliography % Changes made only to accomodate local file naming conventions \def\bibliography#1{% \if@filesw\immediate\write\@auxout{\string\bibdata{\@tubfilename{#1}}}\fi \@input{\jobname.bbl}} \def\bibliographystyle#1{\if@filesw\immediate\write\@auxout {\string\bibstyle{\@tubfilename{#1}}}\fi} % Replace \sloppy by something not quite as sloppy \def\thebibliography#1{\section*{References\@mkboth {REFERENCES}{REFERENCES}}\list {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth \advance\leftmargin\labelsep \usecounter{enumi}} \def\newblock{\hskip .11em plus .33em minus .07em} % \sloppy \tolerance 8000 \hfuzz .5\p@ \vfuzz .5\p@ \clubpenalty4000\widowpenalty4000 \sfcode`\.=1000\relax} %\def\sloppy{\tolerance 10000 \hfuzz .5\p@ \vfuzz .5\p@} % *********************************************************************** % % Signature % Moved to TUGboat.com % *********************************************************************** % % \document, \enddocument % changed \input to \@@input; either use the new functionality or be real \def\enddocument{\@checkend{document}\clearpage\begingroup \if@filesw \immediate\closeout\@mainaux \def\global\@namedef##1##2{}\def\newlabel{\@testdef r}% \def\bibcite{\@testdef b}\@tempswafalse \makeatletter\@@input \jobname.aux \if@tempswa \@warning{Label(s) may have changed. Rerun to get cross-references right}\fi\fi\endgroup\deadcycles\z@\@@end} % *********************************************************************** % % Running heads, output routine \def \rtitlex{\def\tubfont{\normalsize\rm}\TUB, \volx } \def\PrelimDraftfooter{% \dlap{\kern\textheight\kern3pc \rlap{\hbox to \pagewd{\midrtitle\hfil\midrtitle}} }} % registration marks; these are temporarily inserted in the running head \def\MakeRegistrationMarks{} \def\UseTrimMarks{% \def\MakeRegistrationMarks{% \ulap{\rlap{% \vbox{\dlap{\vbox to\trimlgt{\vfil\botregister}}% \topregister\vskip \headmargin \vskip 10pt}}}}% } \def\@oddhead{\MakeRegistrationMarks\PrelimDraftfooter \normalsize\csname normalshape\endcsname\rm \rtitlex\qquad\midrtitle \hfil \thepage} \def\@evenhead{\MakeRegistrationMarks\PrelimDraftfooter \normalsize\csname normalshape\endcsname\rm \thepage\hfil\midrtitle\qquad\rtitlex} \def\@oddfoot{} \def\@evenfoot{} \def\ps@headings{} \pagestyle{headings} % Modified to alter \brokenpenalty across columns \def\@outputdblcol{\if@firstcolumn \global\@firstcolumnfalse \global\setbox\@leftcolumn\box\@outputbox \global\brokenpenalty10000 \else \global\@firstcolumntrue \global\brokenpenalty100 \setbox\@outputbox\vbox{\hbox to\textwidth{\hbox to\columnwidth {\box\@leftcolumn \hss}\hfil \vrule width\columnseprule\hfil \hbox to\columnwidth{\box\@outputbox \hss}}}\@combinedblfloats \@outputpage \begingroup \@dblfloatplacement \@startdblcolumn \@whilesw\if@fcolmade \fi{\@outputpage\@startdblcolumn}\endgroup \fi} % *********************************************************************** % % Macros for Mittelbach's self-documenting style \def\SelfDocumenting{% \setlength\textwidth{31pc} \onecolumn \parindent 0pt \parskip 2pt plus 1pt minus 1pt \oddsidemargin 8pc \evensidemargin 8pc \marginparwidth 8pc \toks@\expandafter{\@oddhead}% \xdef\@oddhead{\hss\hbox to \pagewd{\the\toks@}}% \toks@\expandafter{\@evenhead}% \xdef\@evenhead{\hss\hbox to \pagewd{\the\toks@}}% \def\ps@titlepage{}% } \def\ps@titlepage{} % *********************************************************************** % % MISCELLANEOUS defs for compatibility with tugboat.sty \newif\ifFirstPar \FirstParfalse \newdimen\pagewd \pagewd=39pc \newdimen\trimwd \trimwd=\pagewd \newdimen\trimlgt \trimlgt=11in \newdimen\headmargin \headmargin=3.5pc \def\smc{\sc} \def\ninepoint{\small} %************************************************************************* % % Start-up \setcounter{page}{1001} \PrelimDrafttrue \def\tugstyinit{% \everypar{\@nodocument}% \authornumber\z@ \let\@signature\@defaultsignature } \endinput % ********************************************************************** % % Change history % Version Date Changes ------- --------- --------------------------------------------------- 1.19 16 Nov 93 added new t-of-c definitions, based on modifications by Nelson Beebe; make text ragged right, lightface, and entries closer together than latex.tex default 1.18b 8 Nov 93 removed extraneous " from header 1.18a 29 May 93 changed \family to \fontfamily in defs of \tensl, \tenuit within \sectitlefont, define \La to get proper "A" 1.18 22 Mar 93 added \hyphenpenalty=10000 to (sub*)section headings added missing brace at end of \def\tensl for nfss added new environments \dedication and \longabstract 1.17 19 Feb 93 incorporated some font definitions by Rainer Schoepf to add flexibility when used under NFSS installed new TUG address and phone number in header reformatted change history, similar to tugboat.sty 1.16e 24 Dec 92 decreased skip above \paragraph, \subparagraph; removed shrink defined \ps@titlepage to get running heads on first page of docstyle articles 1.16d 19 Oct 92 added \SMC parallel to plain-based style 1.16c 10 Sep 92 added \raggedright in \subsubsection 1.16b 19 Jul 92 test for previous input of article.sty, and omit if done already, to permit use as style option 1.16a 29 Jun 92 embedded redefinitions of \xpt, \ixpt within code to distinguish between plain/old LaTeX and nfss 1.16 6 Jun 92 incorporated test for nfss, and if loaded, define \tensl 1.15 16 Mar 92 incorporated \sevbf into \*scriptfont of \bffam for \ixpt to improve appearance of LaTeX and other logos 1.14 8 Mar 92 added \input article.sty to make this an independent style added standard headers, prepared for archive installation 1.13 20 Nov 91 modified \@outputdblcol to reset \brokenpenalty to different values in first and second column added initialization macro (\tugstyinit) for multiple articles 1.12 7 Aug 91 modified \thebibliography to make it not quite so sloppy and avoid cases where all stretch is put into one line 1.11 10 Jun 91 added \ifWideSecTitle and modified \@maketitle to (partially) support it 1.10 13 Feb 91 added \egtsl and incorporated it into \*scriptfont of \slfam for \xpt to improve appearance of LaTeX and other logos 1.09 12 Dec 90 modified \@oddhead and \@evenhead to reset `shape' for new font selection scheme 1.08 25 Oct 90 modified \enddocument to use \@@input instead of \input; allows other uses of \input 1.07 18 Oct 90 set authors \raggedright set \marginparwidth in \SelfDocumenting removed stretch in space between footnotemark and footnotetext commented out definition of \@makefnmark in \maketitle changed \bibliography and \bibstyle to accomodate local file names (see also tugboat.sty for definition of \@tubfilename) 1.06 13 Oct 90 added \listparindent=1em to definitions of \@list... in order to distinguish paragraphs 1.05 1 Sep 90 made space a in definition of \@netaddress; this obviates error messages concerning \begin{document} 1.04 2 Mar 90 added \nobreak to \@maketitle to prevent pagebreaks after leading rule 1.03 25 Feb 90 added definition of \thistubstyle 1.02 12 Feb 90 modified definition of \@makefntext; now uses \@makefnmark (as one might expect) 1.01 6 Feb 90 removed "\font\manual=manfnt"; tugboat.com already sets \font\manual=logo10 adjusted definition of \netaddress to remove mis-timed \@sanitize-ation 1.00 29 Nov 89 changed \titlefont to \sectitlefont added setting of \baselineskip to definition of \sectitlefont changed \TUBparindent to \normalparindent (already in tugboat.com) removed additions of amcsc* fonts new definitions of \ragged... in tugboat.com include \nohyphens moved most of section title material to tugboat.com moved writing mechanism and multiple document handling to local .drv file redefined \author to be consistent with tugboat.sty added \address, \netaddress moved \signature stuff to tugboat.com made titles raggedright 0.53 20 Oct 89 Zeroed \@signature for multiple documents 0.52 19 Oct 89 Moved \rtitlex to tugboat.com 0.51 18 Oct 89 Disallowed hyphenations in \section and \subsection bibclean-2.11.4.1.orig/doc/bibclean.dvi0000644000175200017520000042130007133432645016705 0ustar debiandebian÷ƒ’À;è TeX output 2000.07.13:1533‹‹ÿÿÿÿ ¨ ýF ¬ŽóKñ`y cmr10ÄTUGbGoat,–UUV‘ÿ*ªolume“14“(1993),“No.“4’)§395ŽŽ œ ý‚ŽŽ’ó ýx‰™šáŸ ñÇóò"V cmbx10ÉBibliograph•®9y›Õ9Prett“yprin“ting˜and˜Syn“taxŽ© Chec®9kingŽŸ‘ÄNelson–U>H.“F.“BeebGeŽŸÉCon•®9ten“tsޤ1Ž‘In®9troQÇduction’Xþ395ŽŽ¡2Ž‘ÄB‘ÿþóNŒ-ø cmcsc10ëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX–Õ9Éneeds“impro•®9v“emen“t‘:Š 396ŽŽ¡3Ž‘Run-time‘Õ9options‘h®397ŽŽ¡4Ž‘Prett•®9yprin“ting‘wþU399ŽŽ¡5Ž‘P•®9attern›Õ9matc“hing˜and˜initializationަ‘ les’­\#400ŽŽ¡6Ž‘Lexical‘Õ9analysis‘rxo403ŽŽ¡7Ž‘P•®9ortabilit“y’Šw5404ŽŽ¡8Ž‘ëNScribe–Õ9Ébibliograph®9y“format‘8GŠ405ŽŽ¡9Ž‘Recommendations–Õ9for“ÄB‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX“Édesign‘ àù405ŽŽ¡10Ž‘A–Õ9lexical“grammar“for“ÄB‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘,—É407ŽŽ¡11Ž‘A–Õ9parsing“grammar“for“ÄB‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘'¡fÉ410ŽŽ¡12Ž‘Soft•®9w“are‘Õ9a“v‘ÿ\railabilit“y‘[H414ŽŽ¡‘References’ŠÁ‚414ŽŽ¡‘Index’¤Ed415ŽŽ¤List–Õ9of“T‘ÿ «ablesŽŸÄ1Ž‘Sample–U>óßêsequences“in“quoted“strings.‘'Gf401ŽŽ¦3Ž‘Initialization–U> le“pattern“c¸ãharacters.‘%ƒ402ŽŽ¡É1Ž‘?úIn®9troQÇductionŽŸÄB‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX–¡ë[18Ž‘ ,‘õ|AppGendix›¢AB]“is˜a˜con•¸ãv“enien“t˜toGol˜forަsolving–*¥the“vš¸ãexing“issue“of“bibliograph˜y“format-ަting.‘UMThe–K×user“idenš¸ãti es“ elds“of“bibliograph˜y“en-ަtries–Rvia“ eld/v‘ÿqÇalue“pairs“and“pro¸ãvides“a“unique“ci-ަtation–ï.kš¸ãey“and“a“doGcumen˜t“t˜ypGe“for“eac˜h“en˜try‘ÿ*ª.‘?SAަsimple–'šstring“substitution“facilitš¸ãy“mak˜es“it“easy“toަreuse–‘Cfrequenš¸ãtly-oGccurring“strings.‘%’A‘‘4t˜ypical“exam-ަple–UUloGoks“lik¸ãe“this:ŽŸÊ@String{pub-AW‘?ý=ަ‘9¿ß"Ad{\-d}i{\-s}on-Wes{\-l}ey"}ŽŸ@Book{Lamport:LDP85,ަ‘ úauthor–?ý=‘ÿô"Leslie“Lamport",ަ‘ útitle–?ý=‘?ñ"{\LaTeX}---A“Documentަ‘IÖPreparation‘?ýSystem---User'sŽŽŽŽŽŽŒ‹Œ* ¨ ýF ¬ŽÄ396’)§TUGbGoat,–UUV‘ÿ*ªolume“14“(1993),“No.“4ŽŽ œ ý‚‘IÖÊGuide–?ýand“Reference“Manual",ޤ ‘ úpublisher–?ý=“pub-AW,Ž¡‘ úyear‘?ý=‘î"1985",Ž¡‘ úISBN‘?ý=‘î"0-201-15790-X",Ž¡}ŽŸ‘ÄThe–ÚjT‘þU>Ÿ'EŽ‘ãxX“ le“con¸ãtains“citations“of“the“formŽ¡Ê\cite{Lamport:LDP85}Ä,‘Ctogether–àGwith“a“Ê\bibli-Ž¡ographystyle–­ Äcommand“to“c¸ãhoGose“a“citation“andŽ¡bibliograph•¸ãy›7·st“yle,‘=¤and˜a˜Ê\bibliography˜ÄcommandŽ¡to–õ!spšGecify“whic¸ãh“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘ôø les“are“to“b˜e“used.‘Q+T‘þU>Ÿ'EŽ‘ãxXŽ¡records–UUthis“information“in“an“auxiliary“ le.Ž¡‘A–`subsequen¸ãt›qB‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX“job˜step˜reads˜this˜auxil-Ž¡iary–Í9 le,‘èrextracts“the“requested“bibliographic“en¸ãtriesŽ¡from–ìthe“spGeci ed“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘Ü les,‘ 5and“outputs“the“en-Ž¡tries–O8inš¸ãto“a“bibliograph˜y“ le“formatted“according“toŽ¡the–sbspGeci ed“st•¸ãyle.‘&wSev“eral–sbdozen“sucš¸ãh“st˜yles“are“cur-Ž¡ren•¸ãtly›ñÄa“v–ÿqÇailable˜to˜help˜copGe˜with˜the˜bizarre˜v“ari-Ž¡ations–w¯in“bibliographš¸ãy“formats“that“publishers“ha˜v˜eŽ¡in•¸ãv“en“ted.Ž¡‘In–Ýa“second“T‘þU>Ÿ'EŽ‘ãxX“step,‘õthe“Ê\cite“Äcommands“areŽ¡not–,correctly“expandable“un¸ãtil“the“Ê\bibliographyŽ¡Äcommand–É is“proGcessed“and“the“bibliograph¸ãy“ le“out-Ž¡put–aËbš¸ãy“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘aÈis“read.‘—)Ho˜w˜ev˜er,‘dèat“that“pGoin˜t,‘dètheŽ¡desired–7&form“of“the“citations“is“ nally“kno¸ãwn,‘o›andŽ¡at–aÏthe“end“of“the“job,‘¤ían“upGdated“auxiliary“ le“isŽ¡written.Ž¡‘A‘m"third–m\T‘þU>Ÿ'EŽ‘ãxX“step“ nally“has“the“necessary“infor-Ž¡mation–…from“the“auxiliary“ le“and“the“bibliograph¸ãyŽ¡ le–zêto“correctly“t¸ãypGeset“the“Ê\cite“Äcommands“andŽ¡the–UUbibliographš¸ãy“in“the“spGeci ed“st˜yle.Ž¡‘With–]ƒthe“GNU‘]Emacs“text“editor“[7Ž‘,“27Ž‘ ]…],‘_ŽpGo¸ãw-Ž¡erful–…}B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘…Iediting“suppGort“mak¸ães“it“simple“to“gen-Ž¡erate–Çbibliographš¸ãy“en˜try“descriptions“via“templatesŽ¡that–Vcan“bGe“inserted“with“a“couple“of“k•¸ãeystrok“es,‘VHorŽ¡on–²ÿwš¸ãorkstations,‘Ówselected“from“a“pGop-up“men˜u.‘;«ThisŽ¡editor–Ý]is“freely“a¸ãv‘ÿqÇailable“on“ëNUNIXÄ,“ëNV‘þÕUAX‘Ý?VMSÄ,“andŽ¡the–àlarger“mem¸ãbGers“of“the“IBM–ß°PC“family‘àunderŽ¡ëNPC-DOSÄ.Ž¡‘The–à&ma‘Ž8jor“bšGene ts“of“using“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘àare“the“p˜o-Ž¡ten¸ãtial–•÷for“data“reuse,‘æthe“separation“of“form“andŽ¡con•¸ãten“t›)d(lik“e˜the˜descriptiv“e˜markup˜of˜L‘ý qŸþ1óÙ“ Rcmr7³AŽ‘s”ÄT‘þU>Ÿ'EŽ‘ãxX˜andŽ¡ëNSGMLÄ[6Ž‘,‘Ĩ31Ž‘Ī]),‘ |and–Ĩthe“manš¸ãy“st˜ylistic“v‘ÿqÇarian˜ts“ofŽ¡the–+útš¸ãypGeset“bibliograph˜y‘ÿ*ª.‘cþDuring“the“preparation“ofŽ¡this–[4article,‘\¬a“scan“of“our“Mathematics“Departmen¸ãtŽ¡w¸ãorkstation–jª le“system“lošGcated“ab˜out“14“000“T‘þU>Ÿ'EŽ‘ãxXŽ¡ les,‘HEand–ä{445“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘ä les.‘ :The“latter“con¸ãtainedŽ¡abGout–64870“000“lines“and“almost“94“000“bibliograph¸ãyŽ¡en¸ãtries.‘0{These–‘q les“form“a“v‘ÿqÇaluable“resource“that“au-Ž¡thors–?and“researcš¸ãhers“can“use“to“trac˜k“and“propGerlyŽ¡cite–UUliterature“in“their“publications.Ž¡‘During–®mš¸ãy“term“as“TUG–žPresiden˜t,‘Ÿ„I“initiatedŽ¡a–ipro‘Ž8ject“to“collect“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘Zstš¸ãyles“and“bibliograph˜yŽ¡data–šÝbase“ les“of“material“related“to“T‘þU>Ÿ'EŽ‘ãxX“and“itsŽ¡uses,‘é9and–˜relectronic“došGcumen¸ãt“pro˜duction“and“t¸ãy-ŽŽŽ ý‚’ópGograph¸ãy–%Qin“general.‘á¼This“dynamic“collection“alsoޤ ’óco•¸ãv“ers–EÒa“few“journals,‘Hìincluding“more“than“1000“en-Ž¡’ótries– Èfor“óp®0J cmsl10ÈTUGbGoat7µÄ.‘’A‘ ™snapshot“of“part“of“the“col-Ž¡’ólection–ñQw¸ãas“published“in“the“1991“TUG‘ðçResourceŽ¡’óDirectory–UU[4Ž‘,“5Ž‘UV].Ž¡’One›¬bdra•¸ãwbac“k˜of˜B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘¬7is˜that˜errors˜in˜a˜bib-Ž¡’óliograph•¸ãy›B le,‘-|suc“h˜as˜unmatc“hed˜quotation˜marksŽ¡’óaround–ëMa“v‘ÿqÇalue“string,‘PÊcan“sometimes“bGe“hard“toŽ¡’ólo•Gcate,‘&øb“ecause–ý the“currenš¸ãt“v˜ersion“of“the“programŽ¡’óraises–¿þan“error“at“the“end“of“a“scan“when“in¸ãternal“ta-Ž¡’óbles›ïdo•¸ãv“er o“w˜after˜gobbling˜sev“eral˜thousand˜c“har-Ž¡’óacters–«of“input.‘WäThe“result“is“that“the“error“loGcationŽ¡’óis–ô7completely“bGogus,‘ïand“actually“lies“m•¸ãuc“h‘ô7earlierŽ¡’óin–OYthe“ le.‘oÈW‘ÿ*ªe“can“hopGe“that“this“serious“de ciencyŽ¡’ówill–-ñbGe“remedied“in“the“ nal“v¸ãersion“of“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX,“1.0,Ž¡’ówhic¸ãh–þ8is“expšGected“to“app˜ear“when“the“L‘ý qŸþ1³AŽ‘s”ÄT‘þU>Ÿ'EŽ‘ãxX“3.0“de-Ž¡’óv•¸ãelopmen“t–UUis“completed.Ž¡’Another›Ë[dra•¸ãwbac“k˜is˜that˜suc“h˜bibliograph“yŽ¡’ó les–6éare“normally“prepared“bš¸ãy“h˜uman“t˜ypists,‘oNandŽ¡’óconsequen¸ãtly–;¶there“are“formatting“v‘ÿqÇariations“thatŽ¡’óreduce–7„readabilit¸ãy‘ÿ*ª,‘pand“inconsistencies“that“pGersistŽ¡’óinš¸ãto–»Šthe“ nal“t˜ypGeset“bibliograph˜y‘ÿ*ª.‘¤fSome“examplesŽ¡’óof–<ðsuc¸ãh“inconsistencies“are“v‘ÿqÇariations“in“naming“ofŽ¡’ópublishers–:Vand“journals,‘?¼spacing“around“author“andŽ¡’óeditor–B,initials,‘Fand“v‘ÿqÇariations“in“letter“case“in“titles.Ž¡’óIn–b÷addition,‘f`there“are“usually“nš¸ãumerous“t˜ypGograph-Ž¡’óical–òŒerrors“of“omission,–Ndoubling,“spGelling,“transcrip-Ž¡’ótion,–UUtranslation,“and“transpGosition.Ž¡’In–ŸŒEŽ‘ãxX–uÏ les,‘¾KI“set–vout“to“write“a“soft•¸ãw“areŽ¡’ótoGol–ÿGto“deal“with“these“problems.‘oThis“program“isŽ¡’ócalled–sQÊbibcleanÄ.‘Ë»It“is“a“synš¸ãtax“c˜hec˜k˜er,‘ºÐpGortabil-Ž¡’óit•¸ãy›¬Œv“eri er,‘ÂZand˜prett“yprin“ter,‘ÂZand˜w“as˜made˜freelyŽ¡’óa¸ãv‘ÿqÇailable–]in“1991.‘_In“the“fall“of“1992,‘(Žafter“consider-Ž¡’óable–©òexpGerience“with“the“ rst“v•¸ãersion,‘Ì9I‘©Çem“bark“ed‘©òonŽ¡’óa–`~set“of“enhancemenš¸ãts“that“proGduced“ma‘Ž8jor“v˜ersionŽ¡’ó2.0,‘,and–!Íthe“purpšGose“of“this“pap˜er“is“to“describ˜e“theŽ¡’ónew–ñ vš¸ãersion,‘and“to“widely“adv˜ertise“its“existence“toŽ¡’óthe–UUT‘þU>Ÿ'EŽ‘ãxX“comm•¸ãunit“y‘ÿ*ª.ŽŸ’óÉ2Ž’?úÄB‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX–Õ9Éneeds“impro•®9v“emen“tŽŸ’óÄB‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ›ãxX,– ålik¸ãe“T‘þU>Ÿ'EŽ˜X,‘“Èassumes“that“its“input“is“pre-Ž¡’ópared–áÒcorrectly‘ÿ*ª,‘Dñand“w¸ãorks“bGest“when“that“is“theŽ¡’ócase.‘ Both–lprograms“attempt“to“reco•¸ãv“er–lfrom“er-Ž¡’órors,‘½but–ë—that“reco•¸ãv“ery›ë—ma“y˜bGe˜unsuccessful,‘½and˜er-Ž¡’órors–sËmaš¸ãy“bGe“detected“only“after“length˜y“proGcessing.Ž¡’óIn–ü neither“case“is“the“output“of“these“programs“suit-Ž¡’óable–…]for“input“to“them.‘ÞThat“is,‘‘_their“kno¸ãwledge“ofŽ¡’óhoš¸ãw–½žtheir“input“streams“are“to“bGe“parsed“is“a˜v‘ÿqÇailableŽ¡’óonly–_to“them,‘a’and“cannot“bšGe“applied“indep˜enden¸ãtlyŽ¡’óand–˜áused“bš¸ãy“other“soft˜w˜are.‘Ÿ'EŽ‘ãxX's“is“extensible,Ž¡’ómaking–ÁÄit“evš¸ãen“harder“to“giv˜e“a“precise“descriptionŽ¡’óto–UUthe“user.ŽŽŽŽŽŽŒ‹a ¨ ýF ¬ŽÄTUGbGoat,–UUV‘ÿ*ªolume“14“(1993),“No.“4’)§397ŽŽ œ ý‚‘The–‹[trend“of“compiler“tecš¸ãhnology“dev˜elopmen˜tޤ of–Úthe“last“t•¸ãw“o–Údecades,‘ûGlargely“on“ëNUNIX‘ÙõÄsystems,Ž¡has–‚§bGeen“to“separate“the“compilation“task“in¸ãto“sev-Ž¡eral‘UUsteps.Ž¡‘The–Æg rst“is“generally“called“óý': cmti10Çlexic‘ÿ}'al‘ûîanalysisÄ,‘â¬orŽ¡lexing.‘ÏIt–Éòbreaks“the“input“stream“up“inš¸ãto“iden˜ti -Ž¡able–ÙÄtokš¸ãens“that“can“bGe“represen˜ted“b˜y“small“in˜tegerŽ¡constanš¸ãts–UUand“constan˜t“strings.Ž¡‘The–d second“step“is“called“Çp‘ÿ}'arsingÄ,‘ç¹whic¸ãh“in-Ž¡v•¸ãolv“es–œmthe“vš¸ãeri cation“that“the“tok˜ens“streamingŽ¡from–cŠthe“lexer“conform“to“the“grammatical“require-Ž¡men¸ãts–üof“the“language,›ª¨that“is,˜that“they“mak¸ãe“sense.Ž¡‘As–Pßparsing“proGceeds,‘QÄan“in¸ãtermediate“represen-Ž¡tation–ôíis“prepared“that“is“suitable“for“the“third“step,Ž¡namely‘ÿ*ª,›UUÇc–ÿ}'o“de‘“çgener“ation‘¸Äor˜Çinterpr“etationÄ.Ž¡‘This–Údivision“in¸ãto“subtasks“diminishes“the“com-Ž¡plexit¸ãy–Ÿåof“writing“a“compiler,‘Ä/reduces“its“memory“re-Ž¡quiremen•¸ãts,›üïand‘æÕimpGortan“tly‘ÿ*ª,˜partitions–æÕthe“job“in¸ãtoŽ¡t•¸ãw“o–Πparts:‘d]a“language-depGenden¸ãt,‘ìóbut“Çar–ÿ}'chite“ctur“e-Ž¡indep‘ÿ}'endentÄ,‘Í^part–Ãconsisting“of“lexing“and“pars-Ž¡ing,›Gand–Ãa“language-indepGenden¸ãt,˜but“Çar–ÿ}'chite“ctur“e-Ž¡dep‘ÿ}'endentÄ,‘%part–ÈJwhere“coGde“is“generated“or“in¸ãter-Ž¡preted.Ž¡‘This–«rmakš¸ães“it“pGossible“to“write“a“fron˜t“end“forŽ¡eacš¸ãh–àlanguage,‘BÉand“a“bac˜k“end“for“eac˜h“arc˜hitec-Ž¡ture,‘õPand–ÕQbš¸ãy“com˜bining“them,‘õPobtain“compilers“forŽ¡all–ôlanguages“and“all“arc¸ãhitectures.‘ª£The“most“suc-Ž¡cessful–Ú¨example“of“this“approacš¸ãh“at“presen˜t“is“al-Ž¡most–ǯcertainly“the“F›ÿ*ªree“Soft•¸ãw“are–ǯF˜oundation's“GNUŽ¡Pro‘Ž8ject–—Ocompilers,‘§Íwhic¸ãh“suppGort“all“common“com-Ž¡puter–Farcš¸ãhitectures“with“the“bac˜k“ends,‘|µand“C,“C++,Ž¡and–®¥Ob‘Ž8jectivš¸ãe“C‘®Lwith“the“fron˜t“ends.‘}¶AdditionalŽ¡fronš¸ãt–Î5ends“for“sev˜eral“other“pGopular“languages“are“inŽ¡preparation.Ž¡‘When–eRa“lexer“is“a¸ãv‘ÿqÇailable“as“a“separate“program,Ž¡its–Z§output“can“bGe“con•¸ãv“enien“tly–Z§used“b¸ãy“other“pro-Ž¡grams–<Ìfor“tasks“suc¸ãh“as“database“loGokup,‘v© oating-Ž¡pGoinš¸ãt–~mprecision“con˜v˜ersion,›©ilanguage“translation,˜lin-Ž¡guistic–Äanalysis,‘·HpGortabilitš¸ãy“v˜eri cation,‘·Hprett˜yprin˜t-Ž¡ing,‘,mand›"3c•¸ãhec“king˜of˜grammar,›,msyn“tax,˜and‘"3spGelling.Ž¡‘In–±}respGonse“to“a“command-line“request,‘‡Êbib-Ž¡clean–ï¤Äwill“function“as“a“lexer“instead“of“as“a“prett¸ãy-Ž¡prinš¸ãter.‘qÇAn–UUexample“is“giv˜en“later“in“Section“6.ŽŸÉ3Ž‘?úRun-time‘Õ9optionsŽŸÄOn–sevš¸ãeral“opGerating“systems,‘%íÊbibclean“Äis“run“b˜y“aŽ¡command–UUof“the“formޤÊbibclean–?ý[options]“bibfile(s)“>newfileŽ¡ÄOne–Bor“more“bibliograph¸ãy“ les“can“bšGe“sp˜eci ed;‘¸tifޤ none–Ó*are“givš¸ãen,‘2Ÿinput“is“tak˜en“from“the“standardŽ¡input–UUstream.‘qÇA“spGeci c“example“is:ŽŸÊbibclean–?ý-no-fix-name“mybib.bib“>mybib.newŽŽŽ ý‚’ÄCommand-line–?ûswitcš¸ãhes“ma˜y“bGe“abbreviated“toޤ ’óa–E.unique“leading“pre x,‘$and“letter“case“is“not“sig-Ž¡’óni canš¸ãt.‘ÒíAll–Ë options“are“parsed“bGefore“an˜y“inputŽ¡’óbibliograph¸ãy– les“are“read,‘$no“matter“what“their“or-Ž¡’óder–wKon“the“command“line.‘תOptions“that“correspGondŽ¡’óto–~a“Çyes/no‘§Äsetting“of“a“ ag“ha•¸ãv“e–~a“form“with“a“pre-Ž¡’ó x–½ÅÊno-“Äto“set“the“ ag“to“ÇnoÄ.‘«F‘ÿ*ªor“suc¸ãh“options,‘×átheŽ¡’ólast–Äøsetting“determines“the“ ag“v‘ÿqÇalue“used.‘À¯This“isŽ¡’ósigni can¸ãt–#Šwhen“options“are“also“spGeci ed“in“initial-Ž¡’óization–UU les“(see“Section“5).Ž¡’On›øëNV‘þÕUAX–ÆVMS“Äand˜IBM“ëNPC-DOSÄ,˜the˜lead-Ž¡’óing–Éxhš¸ãyphen“on“option“names“ma˜y“bGe“replaced“b˜y“aŽ¡’óslash;‘‘ßho•¸ãw“ev“er,‘]the›(\h“yphen˜option˜pre x˜is˜alw“a“ysŽ¡’órecognized.ŽŸ’óÊ-authorŽŽ’ +ÄDispla¸ãy–P@an“author“credit“on“the“standardŽ¡’error–rÁunit,‘ºÊstderrÄ.‘Ê Sometimes“an“executableŽ¡’program–Çis“separated“from“its“doGcumen¸ãtationŽ¡’and–€Ósource“coGde;‘–’this“option“proš¸ãvides“a“w˜a˜y“toŽ¡’reco•¸ãv“er–UUfrom“that.Ž¡’óÊ-error-log‘?ýfilenameŽŽ’_ŸæÄRedirect–fBÊstderr“Äto“the“in-Ž¡’dicated–’ le,‘M!whicš¸ãh“will“then“con˜tain“all“of“theŽ¡’error–…™and“w¸ãarning“messages.‘,‰This“option“is“pro-Ž¡’vided–WYfor“those“systems“that“ha•¸ãv“e›WYdicult“y˜redi-Ž¡’recting‘UUÊstderrÄ.Ž¡’óÊ-help–?ýÄor“Ê-?ŽŽ’8b!ÄDispla¸ãy–íÌa“help“message“on“ÊstderrÄ,Ž¡’giving–u†a“sample“command“usage,‘¢Iand“option“de-Ž¡’scriptions–UUsimilar“to“the“ones“here.Ž¡’óÊ-init-file‘?ýfilenameŽŽ’e>ÂÄPro¸ãvide–ºan“explicit“v‘ÿqÇalueŽ¡’pattern–ninitialization“ le.‘ÇIt“will“bšGe“pro˜cessedŽ¡’after–\lan¸ãy“system-wide“and“job-wide“initializa-Ž¡’tion–[¢ les“found“on“the“ÊPATH›[_Ä(for“ëNV‘þÕUAX˜VMSÄ,Ž¡’ÊSYS$SYSTEMÄ)–îTand›î|ÊBIBINPUTS“Äsearc¸ãh˜paths,‘Åre-Ž¡’spGectiv•¸ãely‘ÿ*ª,‘@Áand›«ma“y˜o“v“erride˜them.‘¦ÊIt˜in˜turnŽ¡’maš¸ãy–?übGe“o˜v˜erridden“b˜y“a“subsequen˜t“ le-spGeci cŽ¡’initialization–† le.‘The“initialization“ le“nameŽ¡’can–bGe“c¸ãhanged“at“compile“time,‘ Por“at“run“timeŽ¡’through–HGa“setting“of“the“en•¸ãvironmen“t‘HGv‘ÿqÇariableŽ¡’ÊBIBCLEANINIÄ,–œ|but“defaults“to“Ê.bibcleanrc“ÄonŽ¡’ëNUNIXÄ,–¬¹and“to“Êbibclean.ini“Äelsewhere.‘wóF‘ÿ*ªorŽ¡’further–UUdetails,“see“Section“5.Ž¡’óÊ-max-width‘?ýnnnŽŽ’IcŠÄNormally‘ÿ*ª,‘"Êbibclean–ã’Älimits“out-Ž¡’put–üline“widths“to“72“c¸ãharacters,‘‰åand“in“theŽ¡’in¸ãterests–7¼of“consistency‘ÿ*ª,‘pUthat“v‘ÿqÇalue“should“notŽ¡’b•Ge›'c¸ãhanged.‘À act“as“a“lexical“analyzer,‘¸:the“default“lineŽŽŽŽŽŽŒ‹Ž%O ¨ ýF ¬ŽÄ398’)§TUGbGoat,–UUV‘ÿ*ªolume“14“(1993),“No.“4ŽŽ œ ý‚‘width–îëis“unlimited,‘UPunless“o•¸ãv“erridden›îëb“y˜thisޤ ‘option.Ž© *«‘When–…Êbibclean“Äis“prett•¸ãyprin“ting,‘)|line‘…wrap-Ž¡‘ping–¶ will“bGe“done“only“at“a“space.‘ “ãConse-Ž¡‘quenš¸ãtly‘ÿ*ª,‘ !an–²Æextremely“long“non-blank“c˜harac-Ž¡‘ter–sequence“ma¸ãy“result“in“the“output“exceed-Ž¡‘ing–tothe“requested“line“width.‘ÏSuc¸ãh“sequencesŽ¡‘are–ëcextremely“unlik¸ãely“to“oGccur,‘æat“least“inŽ¡‘English-language–ÜÄtext,‘þŸsince“ev¸ãen“the“45-letterŽ¡‘gian¸ãt–#9[16Ž‘ ,‘-?p.“451]“Çpneumonoultr–ÿ}'amicr“osc“opicsil-Ž¡‘ic–ÿ}'ovolc“ano“c“oniosis–šÇÄwill“ t“in“ÊbibcleanÄ's“stan-Ž¡‘dard–272-c¸ãharacter“output“line,‘i-and“so“will“58-Ž¡‘letter–UUW‘ÿ*ªelsh“cit¸ãy“names.ަ‘When–ÄÖÊbibclean“Äis“lexing,‘ ¶line“wrapping“isŽ¡‘done–Gbš¸ãy“inserting“a“bac˜kslash-newline“pair“whenŽ¡‘the–¯spGeci ed“maximš¸ãum“is“reac˜hed,‘so“no“lineŽ¡‘length–UUwill“evš¸ãer“exceed“the“maxim˜um.ŽŸ UVÊ-[no-]check-valuesŽŽ‘t×ÄWith–Dthe“pGositiv¸ãe“form,Ž¡‘apply–¨Gheuristic“pattern“matc¸ãhing“to“ eld“v‘ÿqÇal-Ž¡‘ues– âin“order“to“detect“pGossible“errors“(e.g.“ÊyearŽ¡‘=›?ý"192"–uàÄinstead“of“Êyear˜=˜"1992"Ä),‘~and“issueŽ¡‘w¸ãarnings–UUwhen“unexpGected“patterns“are“found.ަ‘This›:Öc•¸ãhec“king˜is˜usually˜bGene cial,‘t6but˜if˜itŽ¡‘pro•Gduces›4Ïto“o˜man¸ãy˜b“ogus˜w¸ãarnings˜for˜a˜par-Ž¡‘ticular–Ó¤bibliographš¸ãy“ le,‘í•y˜ou“can“disable“it“withŽ¡‘the–UUnegativ¸ãe“form“of“this“option.–qÇDefault:“ÇyesÄ.Ž© UVÊ-[no-]delete-empty-valuesŽŽ’’’™ÄWith–/’the“pGositiv¸ãeŽ¡‘form,‘74remo•¸ãv“e–/«all“ eld/v‘ÿqÇalue“pairs“for“whic¸ãh“theŽ¡‘v‘ÿqÇalue–$Bis“an“empt¸ãy“string.‘ ÞThis“is“helpful“inŽ¡‘cleaning–‡up“bibliographies“generated“from“textŽ¡‘editor–ùÄtemplates.‘_Compare“this“option“with“Ê-Ž¡‘[no-]remove-OPT-prefixes–';ÄdescribšGed“b˜elo¸ãw.Ž¡‘Default:‘qÇÇnoÄ.ަÊ-[no-]file-positionŽŽ‘v+•ÄWith–Dthe“pGositiv¸ãe“form,Ž¡‘givš¸ãe–£‰detailed“ le“pGosition“information“in“w˜arn-Ž¡‘ing–UUand“error“messages.–qÇDefault:“ÇnoÄ.ަÊ-[no-]fix-font-changesŽŽ‘{VçÄWith–×)the“pGositiv¸ãe“form,Ž¡‘supply–6€an“additional“brace“levš¸ãel“around“fon˜tŽ¡‘cš¸ãhanges–bZin“titles“to“protect“against“do˜wncasingŽ¡‘bš¸ãy–ôIsome“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘ô st˜yles.‘N¢F‘ÿ*ªon˜t“c˜hanges“that“al-Ž¡‘ready›‡ha•¸ãv“e˜more˜than˜one˜lev“el˜of˜braces˜areŽ¡‘not‘UUmoGdi ed.ŽŸ *«‘F‘ÿ*ªor–žâexample,‘1Dif“a“title“con¸ãtains“the“LatinŽ¡‘phrase›Ê{\em–?ýDictyostelium“Discoideum}˜ÄorŽ¡‘Ê{\em–?ý{D}ictyostelium“{D}iscoideum}Ä,‘G}thenŽ¡‘doš¸ãwncasing–Éðwill“incorrectly“con˜v˜ert“the“phraseŽ¡‘to›D]lo•¸ãw“er-case˜letters.‘>àMost˜B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘CZusersŽ¡‘are–ísurprised“that“bracing“the“initial“let-Ž¡‘ters–eédoGes“not“prev•¸ãen“t–eéthe“do¸ãwncase“action.Ž¡‘The–¨ïcorrect“coGding“is“Ê{{\em‘?ýDictyosteliumŽ¡‘Discoideum}}Ä.‘ 9êHo•¸ãw“ev“er,‘“cthere–íaare“also“le-Ž¡‘gitimate–‡cases“where“an“extra“lev¸ãel“of“brac-Ž¡‘ing–Æwrongly“protects“from“do¸ãwncasing.‘ÄCon-Ž¡‘sequen¸ãtly‘ÿ*ª,‘ÎæÊbibclean–ƒcÄwill“normally“not“supplyŽŽŽ ý‚’an–—íextra“levš¸ãel“of“braces,‘¨’but“if“y˜ou“ha˜v˜e“a“bib-ޤ ’liograph¸ãy–ÂZwhere“the“extra“braces“are“routinelyŽ¡’missing,‘‰y¸ãou–V can“use“this“option“to“supply“them.Ž© îï’If–>èyš¸ãou“think“that“y˜ou“need“this“option,‘¹MitŽ¡’is–øástrongly“recommended“that“y¸ãou“apply“Êbib-Ž¡’clean–‹+Äto“yš¸ãour“bibliograph˜y“ le“with“and“with-Ž¡’out–ŽØÊ-fix-font-changesÄ,‘¶‹then“compare“the“t•¸ãw“oŽ¡’output–C‹ les“to“ensure“that“extra“braces“are“notŽ¡’bGeing–ð¿supplied“in“titles“where“they“should“notŽ¡’bGe–h†presenš¸ãt.‘«[Y‘ÿ*ªou“will“ha˜v˜e“to“decide“whic˜h“ofŽ¡’the›1t•¸ãw“o˜output˜ les˜is˜the˜bGetter˜c“hoice,‘hthenŽ¡’repair–UUthe“incorrect“title“bracing“b¸ãy“hand.ަ’Since–dfonš¸ãt“c˜hanges“in“titles“are“uncommon,Ž¡’except–‹for“cases“of“the“tš¸ãypGe“whic˜h“this“optionŽ¡’is–×zdesigned“to“correct,‘øit“should“do“more“go•Go“dŽ¡’than‘UUharm.–qÇDefault:“ÇnoÄ.Ž© ÝÞ’óÊ-[no-]fix-initialsŽŽ’\|YÄWith–¨*the“pGositiv¸ãe“form,‘¼ßin-Ž¡’sert–!Ãa“space“after“a“p•Gerio“d–!Ãfollo¸ãwing“author“ini-Ž¡’tials.–qÇDefault:“ÇyesÄ.ަ’óÊ-[no-]fix-namesŽŽ’J?aÄWith–Z{the“pGositiv¸ãe“form,‘[ÅreorderŽ¡’author–³Ëand“editor“name“lists“to“remo•¸ãv“e‘³ËcommasŽ¡’at–Lïbrace“lev¸ãel“zero,‘Ðplacing“ rst“names“or“initialsŽ¡’bGefore–UUlast“names.–qÇDefault:“ÇyesÄ.ަ’óÊ-[no-]par-breaksŽŽ’[®®ÄWith–Öâthe“negativ¸ãe“form,‘7EaŽ¡’paragraph–“break“(either“a“formfeed,‘âŽor“a“lineŽ¡’con¸ãtaining–7°only“spaces)“is“not“pGermitted“inŽ¡’v›ÿqÇalue–‘ýstrings,‘¹or“bGet•¸ãw“een–‘ý eld/v˜alue“pairs.‘0ªThisŽ¡’maš¸ãy–ÚebGe“useful“to“quic˜kly“trap“runa˜w˜a˜y“stringsŽ¡’arising–¿ûfrom“mismatc¸ãhed“delimiters.‘±¹Default:Ž¡’ÇyesÄ.ަ’óÊ-[no-]prettyprintŽŽ’_ÉvÄNormally‘ÿ*ª,‘ “Êbibclean‘³ Äfunc-Ž¡’tions–{Yas“a“prett•¸ãyprin“ter.‘)Ho“w“ev“er,‘¦òwith–{Ythe“neg-Ž¡’ativ¸ãe–È£form“of“this“option,‘%vit“acts“as“a“lexicalŽ¡’analyzer–zÜinstead,‘„>proGducing“a“stream“of“lexicalŽ¡’tok¸ãens.›Ú{See–"æSection“6“for“further“details.˜De-Ž¡’fault:‘qÇÇyesÄ.ަ’óÊ-[no-]print-patternsŽŽ’j“•ÄWith–Ethe“pGositiv¸ãe“form,Ž¡’prin¸ãt–ËÕthe“v‘ÿqÇalue“patterns“read“from“initializationŽ¡’ les–ñÅas“they“are“added“to“in¸ãternal“tables.‘GUseŽ¡’this–HÍoption“to“c•¸ãhec“k–HÍnewly-added“patterns,‘…«orŽ¡’to–UUsee“what“patterns“are“bGeing“used.ŽŸ îï’When–ÂÊbibclean“Äis“compiled“with“nativ¸ãeŽ¡’pattern-matc¸ãhing–é)coGde“(the“default),‘þÌthese“pat-Ž¡’terns–˜are“the“ones“that“will“bGe“used“in“c•¸ãhec“kingŽ¡’v›ÿqÇalue–ostrings“for“v˜alid“syn¸ãtax,‘.õand“all“of“themŽ¡’are–%‡spGeci ed“in“initialization“ les,‘Y”rather“thanŽ¡’hard-coGded–)Äin¸ãto“the“program.‘ïF‘ÿ*ªor“further“de-Ž¡’tails,–UUsee“Section“5.–qÇDefault:“ÇnoÄ.ަ’óÊ-[no-]read-init-filesŽŽ’j1kÄWith–hfthe“negativ¸ãe“form,Ž¡’suppress–Öjloading“of“system-,–v®user-,“and‘Öj le-Ž¡’spGeci c–á+initialization“ les.‘ HInitializations“willŽ¡’come–l¯only“from“those“ les“explicitly“givš¸ãen“b˜yŽ¡’Ê-init-file‘?ýfilename‘UUÄoptions.–qÇDefault:“ÇyesÄ.ŽŽŽŽŽŽŒ‹?I ¨ ýF ¬ŽÄTUGbGoat,–UUV‘ÿ*ªolume“14“(1993),“No.“4’)§399ŽŽ œ ý‚Ê-[no-]remove-OPT-prefixesŽŽ’’’™ÄWith–/’the“pGositiv¸ãeޤ ‘form,‘Èremo•¸ãv“e–y±the“ÊOPT‘y$Äpre x“from“eac¸ãh“ eldŽ¡‘name–Ünwhere“the“correspGonding“v‘ÿqÇalue“is“not“anŽ¡‘emptš¸ãy–°þstring.‘„ÁThe“pre x“ÊOPT‘°æÄm˜ust“bGe“en˜tirelyŽ¡‘in–UUuppšGer-case“to“b˜e“recognized.ŽŸ ‘This–:Joption“is“for“bibliographies“generatedŽ¡‘with–b\the“help“of“the“GNU›bXEmacs“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX˜edit-Ž¡‘ing–=ÆsuppGort,‘u°whic¸ãh“generates“templates“with“op-Ž¡‘tional–¡7 elds“idenš¸ãti ed“b˜y“the“ÊOPT‘ áÄpre x.‘UmAl-Ž¡‘though–Óthe“function“ÊM-x‘?ýbibtex-remove-OPTŽ¡‘Änormally–ŠªbšGound“to“the“k•¸ãeystrok“es–ŠªÊC-c‘?ýC-o“Ädo˜esŽ¡‘the–9Ójob,›òòusers“often“forget,˜with“the“resultŽ¡‘that–ŽB‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘doGes“not“recognize“the“ eld“name,Ž¡‘and–}Rignores“the“v‘ÿqÇalue“string.‘ é¾Compare“thisŽ¡‘option–fwith“Ê-[no-]delete-empty-values“Äde-Ž¡‘scrib•Ged‘UUab“o•¸ãv“e.–qÇDefault:“ÇnoÄ.Ž©Ê-[no-]scribeŽŽ‘TÄWith–ä–the“pGositiv¸ãe“form,‘HfacceptŽ¡‘input–)ysyn¸ãtax“conforming“to“the“ëNScribe“ÄdoGcu-Ž¡‘menš¸ãt– bsystem.‘RîThe“output“will“bGe“con˜v˜erted“toŽ¡‘conform–RQto“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘Rsyn¸ãtax.‘h»See“Section“8“forŽ¡‘further‘UUdetails.–qÇDefault:“ÇnoÄ.ަÊ-[no-]trace-file-openingŽŽ’‘‹ÄWith–³Uthe“pGositiv¸ãeŽ¡‘form,‘4Crecord–­in“the“error“log“ le“the“names“ofŽ¡‘all–q les“whic¸ãh“Êbibclean“Äattempts“to“opGen.‘_ÐUseŽ¡‘this–¢Zoption“to“iden¸ãtify“where“initialization“ lesŽ¡‘are‘UUloGcated.–qÇDefault:“ÇnoÄ.ަÊ-[no-]warningsŽŽ‘[.‘ÄWith–y5the“pGositivš¸ãe“form,‘Â-allo˜wŽ¡‘all–-wš¸ãarning“messages.‘_The“negativ˜e“form“is“notŽ¡‘recommended–“since“it“ma¸ãy“mask“problems“thatŽ¡‘should–UUbGe“repaired.–qÇDefault:“ÇyesÄ.ަÊ-versionŽŽ‘2—‚ÄDisplaš¸ãy–]jthe“program“v˜ersion“n˜um˜bGer“onŽ¡‘ÊstderrÄ.‘íThis–~kwill“also“include“an“indication“ofŽ¡‘who–compiled“the“program,‘EŸthe“host“name“onŽ¡‘whicš¸ãh–à1it“w˜as“compiled,‘÷Ÿthe“time“of“compilation,Ž¡‘and–—Ythe“tš¸ãypGe“of“string-v‘ÿqÇalue“matc˜hing“coGde“se-Ž¡‘lected,‘£ when–v’that“information“is“a¸ãv‘ÿqÇailable“to“theŽ¡‘compiler.ŽŸÉ4Ž‘?úPrett•®9yprin“tingŽŸÄA‘˜—prett•¸ãyprin“ter–˜êfor“anš¸ãy“language“m˜ust“bGe“able“toŽ¡deal–ýwith“more“than“just“those“ les“that“strictly“con-Ž¡form–;Što“the“language“grammar.‘$eF‘ÿ*ªor“programmingŽ¡languages,‘6~most– vcompilers“implemen¸ãt“language“ex-Ž¡tensions–iwthat“prett•¸ãyprin“ters›iwm“ust˜recognize˜and˜tryŽ¡to–×deal“with“gracefully‘ÿ*ª.‘÷Êbibclean“Ärecognizes“t•¸ãw“oŽ¡suc¸ãh–UUinput“languages:‘qÇB‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX“and“ëNScribeÄ.Ž¡‘Ideally‘ÿ*ª,‘Ona›iprett•¸ãyprin“ter˜should˜bGe˜able˜to˜pro-Ž¡duce–soutput“ev¸ãen“in“the“presence“of“input“errors,‘ Qdis-Ž¡plaš¸ãying– Pit“in“suc˜h“a“w˜a˜y“as“to“mak˜e“the“loGcation“ofŽ¡the–™Verrors“more“evidenš¸ãt.‘3Êbibclean“Äpro˜vides“detailedŽ¡error–'›and“wš¸ãarning“messages“to“help“pinpGoin˜t“errors.Ž¡With–ZÄthe“Ê-file-position“Äcommand-line“option,‘\ itŽ¡will–0 ag“the“b¸ãyte,–7†column,“and›0line,“pGositions˜of˜theŽŽŽ ý‚’óstart–¼nand“end“of“the“currenš¸ãt“tok˜en“in“bGoth“input“andޤ ’óoutput‘UU les.Ž¡’Here–¼ is“a“summary“of“the“actions“takš¸ãen“b˜y“Êbib-Ž¡’óclean–UUÄon“its“input“stream.ŽŸ’ýó!",š cmsy10ÆŽŽŽ’ÄSpace›#CbGet•¸ãw“een˜en“tries˜is˜discarded,‘Ö½and˜re-Ž¡’placed–UUb¸ãy“a“single“blank“line.Ž©’ýÆŽŽŽ’ÄSpace–8Þaround“string“concatenation“opGerators“isŽ¡’standardized.ަ’ýÆŽŽŽ’ÄLeading–©£and“trailing“space“in“v‘ÿqÇalue“strings“isŽ¡’discarded,‘2Åand–ÓIemš¸ãbGedded“m˜ultiple“spaces“areŽ¡’collapsed–UUto“a“single“space.ަ’ýÆŽŽŽ’ÄString–Ï9lengths“are“tested“against“the“limit“inŽ¡’standard–iuB‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX,“and“w¸ãarnings“issued“whenŽ¡’the–% limit“is“exceeded.‘á'The“standard“limit“hasŽ¡’pro•¸ãv“en–:™to“bšGe“to˜o“small“in“practice,‘sêand“man¸ãyŽ¡’sites–Uƒinstall“enlarged“vš¸ãersions“of“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX.“P˜er-Ž¡’haps–XˆB‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX“v¸ãersion“1.0“will“use“more“realisticŽ¡’v‘ÿqÇalues,‘X'or–ñ1eliminate“string“length“limits“alto-Ž¡’gether.ަ’ýÆŽŽŽ’ÄOuter–˜)parenš¸ãtheses“in“en˜tries“are“standardizedŽ¡’to‘UUbraces.ަ’ýÆŽŽŽ’ÄBraced–‘Âv‘ÿqÇalue“strings“are“standardized“to“quotedŽ¡’v‘ÿqÇalue‘UUstrings.ަ’ýÆŽŽŽ’ÄField/v‘ÿqÇalue–»>pairs“are“output“on“separate“lines,Ž¡’wrapping–ë«long“lines“to“not“exceed“a“user-Ž¡’de nable–UUstandard“width“whenev¸ãer“pGossible.ަ’ýÆŽŽŽ’ÄA‘Utrailing–UZcomma“is“supplied“after“the“last“ eld/Ž¡’v‘ÿqÇalue–¬oassignmenš¸ãt.‘wThis“is“con˜v˜enien˜t“if“assign-Ž¡’men¸ãts–UUare“later“reordered“during“editing.ަ’ýÆŽŽŽ’Ê-fix-font-changes–´2Äpro¸ãvides“for“protectingŽ¡’v‘ÿqÇalue–wÛstring“text“inside“fonš¸ãt“c˜hanges“from“do˜wn-Ž¡’casing.ަ’ýÆŽŽŽ’ÄBrace-levš¸ãel–\mzero“uppGer-case“acron˜yms“in“titlesŽ¡’are–UUbraced“to“protect“from“do¸ãwncasing.ަ’ýÆŽŽŽ’Ê-no-par-breaks–МÄproš¸ãvides“a“w˜a˜y“to“c˜hec˜k“forŽ¡’blank–(lines“in“string“v‘ÿqÇalues,‘P\whicš¸ãh“ma˜y“bGe“in-Ž¡’dicativ¸ãe–UUof“unclosed“delimiter“errors.ަ’ýÆŽŽŽ’ÄUmlaut›qÅaccen¸ãts,–øàÊ\"xÄ,“inside˜v‘ÿqÇalue˜strings˜atŽ¡’brace-levš¸ãel–;Žzero“are“con˜v˜erted“to“Ê{\"x}Ä.‘$rThisŽ¡’has–žÖbšGeen“found“to“b˜e“a“common“user“error.‘4òB‘ÿþëNi¹Db‘ÿ32Ä-Ž¡’T‘þU>ŸŒEŽ‘ãxX‘2requires–Cem¸ãbšGedded“quotes“to“b˜e“nested“in-Ž¡’side‘UUbraces.ަ’ýÆŽŽŽ’ÄLetter-case–Èusage“in“en¸ãtry“and“ eld“names“isŽ¡’standardized,›Ú}so–Œ©for“example,˜ÊmastersthesisŽ¡’Äand–UUÊMASTERSTHESIS“ÄbGecome“ÊMastersThesisÄ.ަ’ýÆŽŽŽ’ÄISBNand›9ISSN‘8Ôc•¸ãhec“ksums˜are˜v‘ÿqÇalidated.‘õB‘ÿþëNi¹Db‘ÿ32Ä-Ž¡’T‘þU>ŸŒEŽ‘ãxX‘Îést¸ãyle–ÏK les“that“recognize“ eld“names“forŽ¡’them–g!are“aš¸ãv‘ÿqÇailable“in“the“TUG‘fäbibliograph˜y“col-Ž¡’lection,‘ ¼and–ú•the“bibliographš¸ãy“for“this“doGcumen˜tŽ¡’uses‘UUthem.ŽŽŽŽŽŽŒ‹YW ¨ ýF ¬ŽÄ400’)§TUGbGoat,–UUV‘ÿ*ªolume“14“(1993),“No.“4ŽŽ œ ý‚‘ ÆŽŽŽ‘ÄName–»¸moGdi ers“lik¸ãe“Jr,–ÕQSr,“etc.–»¸are“recognizedޤ ‘and–a­handled“b¸ãy“Ê-fix-namesÄ,‘’iand“names“are“putŽ¡‘in¸ãto–a“standard“order,‘so“that“ÊBach,–?ýP.“D.“Q.Ž¡‘ÄbGecomes‘UUÊP.–?ýD.“Q.“BachÄ.Ž© ÕV‘ ÆŽŽŽ‘ÄWith–òxÊ-fix-initialsÄ,‘Áuniform“spacing“is“sup-Ž¡‘plied–8ßafter“brace-lev¸ãel“zero“initials“in“pGersonalŽ¡‘names.ަ‘ ÆŽŽŽ‘ÄWith–­dÊ-check-valuesÄ,‘Cgcitation“k¸ãey“and“ eldŽ¡‘v‘ÿqÇalues–Òòare“matcš¸ãhed“against“patterns“to“catc˜hŽ¡‘irregularities–UUand“pGossible“errors.ަ‘ ÆŽŽŽ‘ÄDates–LÎof“the“mon•¸ãth,›Ьlik“e–LÎÊ"July‘?ý14"Ä,˜are“con-Ž¡‘vš¸ãerted–to“use“mon˜th“abbreviations,‘¯Êjul‘?ý#Ž¡‘"‘?ý14"Ä.ަ‘ ÆŽŽŽ‘ÄP•¸ãage›ƒ n“um“bGer˜ranges˜are˜con“v“erted˜to˜use˜en-Ž¡‘dashes,–UUinstead“of“h¸ãyphens“or“em-dashes.ަ‘ ÆŽŽŽ‘ÄWith–8ãÊ-check-valuesÄ,‘qÇyš¸ãear“n˜um˜bGers“are“c˜hec˜k˜edŽ¡‘against–úpatterns,› ¶then“if“no“matc¸ãh“is“found,˜theŽ¡‘yš¸ãear–>Ív‘ÿqÇalues“are“c˜hec˜k˜ed“against“reasonable“lim-Ž¡‘its.ަ‘ ÆŽŽŽ‘ÄWith–:›Ê-trace-file-openingÄ,‘ sê le“opGen“at-Ž¡‘tempts–«rare“logged.‘tThis“helps“in“the“diagnosisŽ¡‘of–D¥problems“suc¸ãh“as“missing“ les,‘€yor“incorrectŽ¡‘ le‘UUpGermissions.ަ‘ ÆŽŽŽ‘ÄOn–²Elexing“or“parsing“errors,‘ÒâÊbibclean“ÄattemptsŽ¡‘to–=resyncš¸ãhronize“b˜y“ ushing“the“input“un˜til“itŽ¡‘ nds–eRthe“next“line“conš¸ãtaining“an“initial“Ê@“Äc˜har-Ž¡‘acter–ÈGpreceded“b¸ãy“nothing“other“than“optionalŽ¡‘white‘UUspace.ަ‘ ÆŽŽŽ‘ÄWhen–an“Ê@“Äc¸ãharacter“bGegins“a“line,‘½a“new“bibli-Ž¡‘ograph•¸ãy›T2en“try˜is˜assumed˜to˜ha“v“e˜started.‘qfTheŽ¡‘currenš¸ãt–Æbrace“balance“is“then“tested“to“mak˜eŽ¡‘sure–ldit“is“zero.‘$"A‘l)non-zero“brace“lev¸ãel“is“stronglyŽ¡‘suggestiv¸ãe–Ž—of“an“error,‘¶Wso“Êbibclean“Äissues“an“er-Ž¡‘ror–UUmessage,“and“zeros“the“brace“lev¸ãel.ަ‘ ÆŽŽŽ‘ÄAš¸ãt–mœend-of- le,‘s®the“brace“lev˜el“is“tested.‘ºœA‘m–non-Ž¡‘zero–”]brace“levš¸ãel“is“v˜ery“lik˜ely“an“error,‘¤and“oGc-Ž¡‘casions–UUan“error“message.ŽŸÉ5Ž‘?úP•®9attern›Õ9matc“hing˜and˜initialization˜ lesŽŸÊbibclean–>9Äcan“bGe“compiled“with“one“of“three“di eren¸ãtŽ¡tš¸ãypGes–œ´of“pattern“matc˜hing;‘Ú@the“c˜hoice“is“made“b˜y“theŽ¡installer–UUat“compile“time:ŽŸê«‘ ÆŽŽŽ‘ÄThe–Ø(original“v¸ãersion“uses“explicit“hand-coGdedŽ¡‘tests–UUof“v‘ÿqÇalue-string“syn¸ãtax.ަ‘ ÆŽŽŽ‘ÄThe–ßûsecond“v¸ãersion“uses“regular-expressionŽ¡‘pattern-matc¸ãhing–“†host“library“routines“togetherŽ¡‘with–UPregular-expression“patterns“that“come“en-Ž¡‘tirely–UUfrom“initialization“ les.ަ‘ ÆŽŽŽ‘ÄThe–¢[third“v¸ãersion“uses“spGecial“patterns“thatŽ¡‘come–UUen¸ãtirely“from“initialization“ les.ŽŸê«‘The–¿ýsecond“and“third“v¸ãersions“are“the“onesŽ¡of–W most“inš¸ãterest“here,‘—ybGecause“they“allo˜w“the“userŽŽŽ ý‚’óto–dcon¸ãtrol“what“v‘ÿqÇalues“are“considered“acceptable.ޤ ’óHo•¸ãw“ev“er,‘vcommand-line–Ÿ'EŽ‘ãxX),–option›»switc¸ãhes,“and˜ eld/pattern˜or˜ eld/Ž¡’ópattern/message–|massignmen¸ãts.‘çLeading“and“trailingŽ¡’óspaces–'are“ignored.‘çThis“is“bGest“illustrated“b¸ãy“theŽ¡’óshort–o.example“in“T‘ÿ*ªable“1.‘¿SLong“logical“lines“can“bGeŽ¡’ósplit–—üinš¸ãto“m˜ultiple“ph˜ysical“lines“b˜y“breaking“at“aŽ¡’óbacš¸ãkslash-newline–¡*pair;‘Gthe“bac˜kslash-newline“pairŽ¡’óis–Qdiscarded.‘]ÆThis“prošGcessing“happ˜ens“while“c¸ãharac-Ž¡’óters–o@are“bšGeing“read,‘Eb˜efore“anš¸ãy“further“in˜terpretationŽ¡’óof–UUthe“input“stream.Ž¡’Eacš¸ãh–#‹logical“line“m˜ust“con˜tain“a“complete“op-Ž¡’ótion–R×(and“its“v‘ÿqÇalue,›SVif“an¸ãy),˜or“a“complete“ eld/pat-Ž¡’ótern–UUpair,“or“a“ eld/pattern/message“triple.Ž¡’Commen¸ãts–‰ware“strippGed“during“the“parsing“ofŽ¡’óthe›‘ô eld,–ápattern,“and˜message˜v‘ÿqÇalues.‘'¥The˜com-Ž¡’ómenš¸ãt–I!start“sym˜bGol“is“not“recognized“inside“quotedŽ¡’óstrings,–UUso“it“can“bGe“freely“used“in“suc¸ãh“strings.Ž¡’Commenš¸ãts–VVon“logical“lines“that“w˜ere“input“asŽ¡’óm•¸ãultiple› ph“ysical˜lines˜via˜the˜bac“kslash-newlineŽŽŽŽŽŽŒ‹‘r› ¨ ýF ¬ŽÄTUGbGoat,–UUV‘ÿ*ªolume“14“(1993),“No.“4’)§401ŽŽ œ þ\“è ÿÒ~‰ffáŸñÇ‘‡T‘ÿ*ªable–UU1:‘qÇSample“Êbibclean“Äinitialization“ le.ŽŽŸÊ%%–?ýStart“with“our“departmental“patternsޤ -init-file‘?ý/u/math/bib/.bibcleanrcŽ©%%–?ýMake“some“small“additionsŽ¡chapter–?ý=“"\"D\""‘9¿ß%%“23ަpages‘¿÷=–?ý"\"D--D\""‘)ÿè%%“23--27ަvolume‘ ú=–?ý"\"D“\\an\\d“D\""“%%“11“and“12ަyear‘ÿô=‘?ý\Ž¡‘¿÷"\"dddd,–?ýdddd,“dddd\""“\Ž¡‘¿÷"Multiple–?ýyears“specified."Ž¡‘n?Á%%–?ý1989,“1990,“1991ަ-no-fix-names–?ý%%“do“not“modifyŽ¡‘IÖ%%–?ýauthor/editor“listsŽŸ;»‰ff᎟Äcon•¸ãv“en“tion›Ð=m“ust˜appGear˜on˜the˜last˜ph“ysical˜line;ޤ otherwise,‘‘ the–…remaining“ph¸ãysical“lines“will“bGecomeŽ¡part–UUof“the“commen¸ãt.Ž¡‘Pš¸ãattern–ßstrings“m˜ust“bGe“enclosed“in“quotationŽ¡marks;‘´Hwithin–é÷sucš¸ãh“strings,‘Oa“bac˜kslash“starts“anŽ¡escapGe–=÷mec¸ãhanism“that“is“commonly“used“in“ëNUNIXŽ¡Äsoft•¸ãw“are.‘3The–™Rrecognized“escapGe“sequences“are“giv¸ãenŽ¡in–#ÝT‘ÿ*ªable“2.‘aJBacš¸ãkslash“follo˜w˜ed“b˜y“an˜y“other“c˜harac-Ž¡ter–÷iprošGduces“just“that“c•¸ãharacter.‘RxTh“us,‘ 2Ê\"‘÷iÄpro˜ducesŽ¡a–K×quotation“mark,‘‰xand“Ê\\“ÄproGduces“a“single“bac¸ãk-Ž¡slash.Ž Ú°Z ÿ1¶ ‰ffáŸñÇ‘ÇT‘ÿ*ªable–UU2:‘qÇEscapGe“sequences“in“quoted“strings.ŽŽŸbqÇŸ«æd‘éÊ\aŽ‘;ZÚÄalarm–UUbšGell“(o˜ctal“007)ŽŽŽŽ¡‘éÊ\bŽ‘;ZÚÄbac¸ãkspace–UU(oGctal“010)ŽŽŽŽ¡‘éÊ\fŽ‘;ZÚÄformfeed–UU(oGctal“014)ŽŽŽŽ¡‘éÊ\nŽ‘;ZÚÄnewline–UU(oGctal“012)ŽŽŽŽ¡‘éÊ\rŽ‘;ZÚÄcarriage–UUreturn“(oGctal“015)ŽŽŽŽ¡‘éÊ\tŽ‘;ZÚÄhorizon¸ãtal–UUtab“(oGctal“011)ŽŽŽŽ¡‘éÊ\vŽ‘;ZÚÄv¸ãertical–UUtab“(oGctal“013)ŽŽŽŽ¡‘éÊ\oooŽ‘;ZÚÄc•¸ãharacter›Æn“um“b•Ger˜o“ctal˜Êooo˜Ä(e.g.Ž¡‘;ZÚÊ\012–J+Äis“linefeed).‘PHUp“to“3“oGctalŽ¡‘;ZÚdigits–UUma¸ãy“bGe“used.ŽŽŽŽŸ$‘éÊ\0xhhŽ‘;ZÚÄc•¸ãharacter›V]n“um“bGer˜hexadecimal˜ÊhhŽ¡‘;ZÚÄ(e.g.–}hÊ\0x0a“Äis“linefeed).‘éÿÊxhh“Äma¸ãyŽ¡‘;ZÚbGe–qèin“either“letter“case.‘%ùAnš¸ãy“n˜um-Ž¡‘;ZÚbšGer–9of“hexadecimal“digits“ma¸ãy“b˜eŽ¡‘;ZÚused.ŽŽŽŽŽŽŽŸZæf‰ff᎟‘An›WASCIGI–HNUL“(Ê\0Ä)˜in˜a˜string˜will˜terminateŽ¡it;‘Ôthis–|ÿis“a“feature“of“the“C‘|õprogramming“languageŽ¡in–UUwhicš¸ãh“Êbibclean“Äis“implemen˜ted.ŽŽŽ ý‚’Field/pattern–b[pairs“can“bGe“separated“b¸ãy“arbi-ޤ ’ótrary–Köspace,›MÖand“optionally‘ÿ*ª,˜either“an“equals“sign“orŽ¡’ócolon–Gúfunctioning“as“an“assignmenš¸ãt“opGerator.‘mSTh˜us,Ž¡’óthe–UUfolloš¸ãwing“are“equiv‘ÿqÇalen˜t:Ž©’óÊpages="\"D--D\""Ž¡’ópages:"\"D--D\""Ž¡’ópages‘?ý"\"D--D\""Ž¡’ýúpages–?ý=“"\"D--D\""Ž¡’ýúpages–?ý:“"\"D--D\""Ž¡’ópages‘¿÷"\"D--D\""ަ’óÄEacš¸ãh–„n eld“name“can“ha˜v˜e“an“arbitrary“n˜um˜bGer“ofŽ¡’ópatterns–ÌšassoGciated“with“it;‘=ho•¸ãw“ev“er,‘êlthey›Ìšm“ust˜bGeŽ¡’óspGeci ed–UUin“separate“ eld/pattern“assignmen¸ãts.Ž¡’An–pVempt¸ãy“pattern“string“causes“previously-Ž¡’óloaded–npatterns“for“that“ eld“name“to“bGe“forgot-Ž¡’óten.‘ µThis–Û¤feature“pGermits“an“initialization“ le“toŽ¡’ócompletely–dõdiscard“patterns“from“earlier“initializa-Ž¡’ótion‘UU les.Ž¡’Pš¸ãatterns–øàfor“v‘ÿqÇalue“strings“are“represen˜ted“in“aŽ¡’ótin¸ãy›÷¯sp•Gecial-purp“ose˜language˜that˜is˜b“oth˜con•¸ãv“e-Ž¡’ónienš¸ãt–ëÔand“suitable“for“bibliograph˜y“v‘ÿqÇalue-string“syn-Ž¡’ótax›¿c•¸ãhec“king.‘?¬While˜not˜as˜pGo“w“erful˜as˜the˜languageŽ¡’óof–-regular-expression“patterns,‘£‰its“parsing“can“bGeŽ¡’ópšGortably–Ë implemen¸ãted“in“less“than“3%“of“the“co˜de“inŽ¡’óa–”›widely-used“regular-expression“parser“(the“GNUŽ¡’óÊregexp‘UUÄpac¸ãk‘ÿqÇage).Ž¡’The–Éxpatterns“are“represenš¸ãted“b˜y“the“spGecialŽ¡’óc•¸ãharacters›UUgiv“en˜in˜T‘ÿ*ªable˜3.Ž¡’The–1ÊX‘0×Äpattern“cš¸ãharacter“is“v˜ery“pGo˜w˜erful,‘gÿbutŽ¡’ógenerally–Hinadvisable,‘~Psince“it“will“matcš¸ãh“almost“an˜y-Ž¡’óthing–K4lik¸ãely“to“bGe“found“in“a“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘Jõv‘ÿqÇalue“string.Ž¡’óThe–Creason“for“proš¸ãviding“pattern“matc˜hing“on“theŽ¡’óv‘ÿqÇalue–ˆstrings“is“to“unco•¸ãv“er–ˆpGossible“errors,‘*Knot“maskŽ¡’óthem.Ž¡’There–dis“no“pro¸ãvision“for“spGecifying“ranges“orŽ¡’órepšGetitions–‡of“c¸ãharacters,‘ˆbut“this“can“usually“b˜eŽ¡’ódone–Üñwith“separate“patterns.‘I¦It“is“a“go•Go“d–Üñidea“to“ac-Ž¡’ócompanš¸ãy–à~the“pattern“with“a“commen˜t“sho˜wing“theŽ¡’ókind–Ùyof“thing“it“is“expGected“to“matc¸ãh.‘þ3Here“is“aŽ¡’ópGortion–Iwof“an“initialization“ le“giving“a“few“of“theŽ¡’ópatterns–UUused“to“matc¸ãh“Ênumber“Äv‘ÿqÇalue“strings:ަ’óÊnumber–?ý=“"\"D\""‘/?å%%“23Ž¡’ónumber–?ý=“"\"A“AD\""‘î%%“PN“LPS5001Ž¡’ónumber–?ý=“"\"A“D(D)\""‘ÿô%%“RJ“34(49)Ž¡’ónumber–?ý=“"\"A“D\""‘$¿ë%%“XNSS“288811Ž¡’ónumber–?ý=“"\"A“D\\.D\""‘¿÷%%“Version“3.20Ž¡’ónumber–?ý=“"\"A-A-D-D\""‘¿÷%%“UMIAC-TR-89-11Ž¡’ónumber–?ý=“"\"A-A-D\""‘?ñ%%“CS-TR-2189Ž¡’ónumber–?ý=“"\"A-A-D\\.D\""“%%“CS-TR-21.7ަ’óÄF‘ÿ*ªor–ÿÿa“bibliographš¸ãy“that“con˜tains“only“ÊArticle“Äen-Ž¡’ótries,‘ëƒthis–šGlist“should“probably“bGe“reduced“to“justŽ¡’óthe–Î^ rst“pattern,‘é]so“that“an¸ãything“other“than“a“digitŽ¡’óstring–­Ñfails“the“pattern-matc¸ãh“test.‘{;This“is“easilyŽŽŽŽŽŽŒ‹’Œ| ¨ ýF ¬ŽÄ402’)§TUGbGoat,–UUV‘ÿ*ªolume“14“(1993),“No.“4ŽŽ œ þâ°Z þ•¶ ‰ffáŸñÇ‘ ®.T‘ÿ*ªable–UU3:‘qÇInitialization“ le“pattern“c¸ãharacters.ŽŽ °qÇ ÿ]æd‘úåÊ Ž‘3zßÄone–UUor“more“spacesŽŽŽŽ¤ ‘úåÊaŽ‘3zßÄexactly–UUone“letterŽŽŽŽ¡‘úåÊAŽ‘3zßÄone–UUor“more“lettersŽŽŽŽ¡‘úåÊdŽ‘3zßÄexactly–UUone“digitŽŽŽŽ¡‘úåÊDŽ‘3zßÄone–UUor“more“digitsŽŽŽŽ¡‘úåÊrŽ‘3zßÄexactly–UUone“Roman“n¸ãumeralŽŽŽŽ¡‘úåÊRŽ‘3zßÄone–Z6or“more“Roman“n¸ãumerals“(i.e.Ž¡‘3zßa–UURoman“n•¸ãum“bGer)ŽŽŽŽ©‘úåÊwŽ‘3zßÄexactly–€one“w¸ãord“(one“or“moreŽ¡‘3zßletters–UUand“digits)ŽŽŽŽ¦‘úåÊWŽ‘3zßÄone–­öor“more“wš¸ãords,‘Äseparated“b˜yŽ¡‘3zßspace,‘î­bGeginning–Õand“ending“withŽ¡‘3zßa‘UUw¸ãordŽŽŽŽ©$‘úåÊ.Ž‘3zßÄone–ìÉ`spGecial'“c¸ãharacter,‘²one“of“theŽ¡‘3zßc¸ãharacters‘<3Ê !#()*+,-./:;?[]~Ä,Ž¡‘3zßa–ý6subset“of“punctuation“c¸ãharac-Ž¡‘3zßters–Cuthat“are“t¸ãypically“used“inŽ¡‘3zßstring‘UUv‘ÿqÇaluesŽŽŽŽŸ<‘úåÊ:Ž‘3zßÄone–UUor“more“`spGecial'“c¸ãharactersŽŽŽŽ¡‘úåÊXŽ‘3zßÄone–[or“more“`spGecial'-separatedŽ¡‘3zßw¸ãords,‘„bbGeginning–P%and“ending“withŽ¡‘3zßa‘UUw¸ãordŽŽŽŽ¦‘úåÊ\xŽ‘3zßÄexactly–uÙone“Êx“Ä(Êx“Äis“anš¸ãy“c˜haracter),Ž¡‘3zßpšGossibly–M6with“an“escap˜e“sequenceŽ¡‘3zßin•¸ãterpretation›UUgiv“en˜earlierŽŽŽŽ¦‘úåÊxŽ‘3zßÄexactly–3zthe“cš¸ãharacter“Êx“Ä(Êx“Äis“an˜y-Ž¡‘3zßthing–Õòbut“one“of“these“patternŽ¡‘3zßc¸ãharacters:‘qÇÊaAdDrRwW.: \Ä)ŽŽŽŽŽŽŽ ¨æf‰ff᎟done–¸ßbš¸ãy“k˜eeping“bibliograph˜y-spGeci c“patterns“in“aޤ correspGonding–Z le“with“extension“Ê.iniÄ,‘ÝÛsince“thatŽ¡ le–ÿýis“read“automatically–ÿ*ª.‘UTY“ou–ÿýshould“bGe“sure“to“useŽ¡empt¸ãy–\npattern“strings“in“this“pattern“ le“to“discardŽ¡patterns–UUfrom“earlier“initialization“ les.Ž¡‘The–~øv‘ÿqÇalue“strings“passed“to“the“pattern“matc¸ãherŽ¡con¸ãtain–¸Msurrounding“quotes,‘Ñ so“the“patterns“shouldŽ¡also.‘OÃHo•¸ãw“ev“er,‘²y“ou–ïIcould“use“a“pattern“spGeci cationŽ¡likš¸ãe–î7Ê"\"D"“Äto“matc˜h“an“initial“digit“string“follo˜w˜edŽ¡b•¸ãy›žñan“ything˜else;‘C¿the˜omission˜of˜the˜ nal˜quota-Ž¡tion–æµmark“Ê\"“Äin“the“pattern“alloš¸ãws“the“matc˜h“toŽ¡succeed– %without“c•¸ãhec“king– %that“the“next“c¸ãharacter“inŽ¡the–UUv‘ÿqÇalue“string“is“a“quotation“mark.Ž¡‘Because–òÈthe“v‘ÿqÇalue“strings“are“in¸ãtended“to“bGeŽ¡proGcessed–¦bš¸ãy“T‘þU>Ÿ'EŽ‘ãxX,‘:Othe“pattern“matc˜hing“ignoresŽ¡braces,›'¨and–ÊeT‘þU>Ÿ'EŽ‘ãxX“con¸ãtrol“sequences,˜together“withŽ¡anš¸ãy–+ûspace“follo˜wing“those“con˜trol“sequences.‘cÿSpacesŽ¡around––¦braces“are“preservš¸ãed.‘28This“con˜v˜en˜tion“allo˜wsŽ¡the–,Ãpattern“fragmenš¸ãt“ÊA-AD-D‘,JÄto“matc˜h“the“v‘ÿqÇalueŽ¡string–£ÜÊTN-K\slash‘?ý27-70Ä,‘·~bGecause“the“v‘ÿqÇalue“is“im-Ž¡plicitly–Â_collapsed“to“ÊTN-K27-70“Äduring“the“matc¸ãhingŽ¡opGeration.ŽŽŽ ý‚’ÊbibcleanÄ's–ñÈnormal“action“when“a“string“v‘ÿqÇalueޤ ’ófails–_—to“matcš¸ãh“an˜y“of“the“correspGonding“patterns“is“toŽ¡’óissue––ûa“w¸ãarning“message“similar“to“this:‘šÊUnexpectedŽ¡’óvalue–?ýin“``year“=“"192"''Ä.‘In–ÜÅmost“cases,‘þ¡thatŽ¡’óis–r]sucien¸ãt“to“alert“the“user“to“a“problem.‘ÈÞIn“someŽ¡’ócases,›ho•¸ãw“ev“er,˜it›[›ma“y˜b•Ge˜desirable˜to˜asso“ciate˜a˜dif-Ž¡’óferen¸ãt–¼ message“with“a“particular“pattern.‘¥åThis“canŽ¡’óbGe–ôndone“bš¸ãy“supplying“a“message“string“follo˜wing“theŽ¡’ópattern–Ô¡string.‘FáF‘ÿ*ªormat“items“Ê%%“Ä(single“pGercen¸ãt),‘î_Ê%eŽ¡’óÄ(en¸ãtry–{/name),›¦ÑÊ%f“Ä( eld“name),˜Ê%k“Ä(citation“k¸ãey),˜andŽ¡’óÊ%v–|oÄ(string“v›ÿqÇalue)“are“a¸ãv˜ailable“to“get“curren¸ãt“v˜aluesŽ¡’óexpanded–UUin“the“messages.‘qÇHere“is“an“example:Ž©’óÊchapter–?ý=“"\"D:D\""“\Ž¡’ ?ñ"Colon–?ýfound“in“``%f“=“%v''"“%%“23:2ަ’ÄT‘ÿ*ªo–±ÄbGe“consistenš¸ãt“with“other“messages“output“b˜yŽ¡’óÊbibcleanÄ,‘0Ìthe–èmessage“string“should“not“end“withŽ¡’ópunctuation.Ž¡’If–Zyš¸ãou“wish“to“mak˜e“the“message“an“error,‘ŒFratherŽ¡’óthan–£âjust“a“w¸ãarning,›·…bGegin“it“with“a“query“(?),˜lik¸ãeŽ¡’óthis:ަ’óÊchapter–?ý=“"\"D:D\""“\Ž¡’ÿô"?Colon–?ýfound“in“``%f“=“%v''"“%%“23:2ަ’óÄThe–É[query“will“Çnot‘¼3ÄbGe“included“in“the“output“mes-Ž¡’ósage.Ž¡’EscapšGe–d÷sequences“are“supp˜orted“in“messageŽ¡’óstrings,‘J"just–GUas“they“are“in“pattern“strings.‘mY‘ÿ*ªou“canŽ¡’óuse–y†this“to“adv‘ÿqÇanš¸ãtage“for“fancy“things,‘¥|suc˜h“as“termi-Ž¡’ónal–n‡displaš¸ãy“moGde“con˜trol.‘$ØIf“y˜ou“rewrite“the“previousŽ¡’óexample‘UUasަ’óÊchapter–?ý=“"\"D:D\""“\Ž¡’'â"?\033[7mColon–?ýfound“\Ž¡’óin–?ý``%f“=“%v''\033[0m"“%%“23:2ަ’óÄthe–·ýerror“message“will“appGear“in“in•¸ãv“erse–·ývideo“onŽ¡’ódisplaš¸ãy–j§screens“that“suppGort“ANSI‘j¡terminal“con˜trolŽ¡’ósequences.‘ ßSuc¸ãh–$opractice“is“not“normally“recom-Ž¡’ómended,‘h2since–þit“maš¸ãy“ha˜v˜e“undesirable“e ects“onŽ¡’ósome–|‡output“devices.‘ç^Nev•¸ãertheless,‘†Ty“ou›|‡ma“y˜ nd˜itŽ¡’óuseful–UUfor“restricted“applications.Ž¡’F‘ÿ*ªor–£Žsome“tš¸ãypGes“of“bibliograph˜y“ elds,‘ÇÊbibcleanŽ¡’óÄcon¸ãtains›â[sp•Gecial-purp“ose˜co“de˜to˜supplemen¸ãt˜or˜re-Ž¡’óplace–UUthe“pattern“matc¸ãhing:ަ’ýÆŽŽŽ’ÊISBN–¦Äand›¦DÊISSN“Ä eld˜v‘ÿqÇalues˜are˜handled˜this˜w•¸ãa“yŽ¡’bGecause– °their“v›ÿqÇalidation“requires“ev˜aluation“ofŽ¡’c•¸ãhec“ksums–›>that“cannot“bGe“expressed“b¸ãy“simpleŽ¡’patterns;‘ÒÚno–‘œpatterns“are“evš¸ãen“used“in“these“t˜w˜oŽ¡’cases.Ž¡’ýÆŽŽŽ’ÄWhen–N:Êbibclean“Äis“compiled“with“pattern-Ž¡’matc¸ãhing–%cošGde“supp˜ort,– FWÊchapterÄ,“ÊnumberÄ,Ž¡’ÊpagesÄ,‘Íand–µwÊvolume“Äv‘ÿqÇalues“are“c•¸ãhec“k“ed–µwonly“b¸ãyŽ¡’pattern‘UUmatc¸ãhing.Ž¡’ýÆŽŽŽ’Êmonth–LÄv‘ÿqÇalues“are“ rst“c•¸ãhec“k“ed–Lagainst“the“stan-Ž¡’dard– B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘ŒÏmon¸ãth“name“abbreviations,‘ÛandŽ¡’only–B[if“no“matc¸ãh“is“found“are“patterns“then“used.ŽŽŽŽŽŽŒ‹“¡¹ ¨ ýF ¬ŽÄTUGbGoat,–UUV‘ÿ*ªolume“14“(1993),“No.“4’)§403ŽŽ œ ý‚‘ ÆŽŽŽ‘Êyear–çÄv‘ÿqÇalues“are“ rst“c•¸ãhec“k“ed–çagainst“patterns,ޤ ‘then–Ëhif“no“matcš¸ãh“is“found,‘(íthe“y˜ear“n˜um˜bGersŽ¡‘are–Š%found“and“con•¸ãv“erted–Š%to“in¸ãteger“v‘ÿqÇalues“forŽ¡‘testing–UUagainst“reasonable“bGounds.Ž©‘V‘ÿ*ªalues–L-for“other“ elds“are“c•¸ãhec“k“ed–L-only“againstŽ¡patterns.‘ v|Y‘ÿ*ªou–‘can“proš¸ãvide“patterns“for“an˜y“ eldŽ¡y•¸ãou›Øolik“e,‘ñjev“en˜ones˜Êbibclean˜ÄdoGes˜not˜already˜kno“wŽ¡abGout.‘7.New–¥ˆones“are“simply“added“to“an“in¸ãternal“ta-Ž¡ble–UUthat“is“searcš¸ãhed“for“eac˜h“string“to“bGe“v‘ÿqÇalidated.Ž¡‘The–gíspGecial“ eld,–ì“ÊkeyÄ,“represen¸ãts–gíthe“biblio-Ž¡graphic–ÝMcitation“kš¸ãey‘ÿ*ª.‘ ¯It“can“bGe“giv˜en“patterns,‘ÿKlik˜eŽ¡an¸ãy–Xáother“ eld.‘|jHere“is“an“initialization“ le“patternŽ¡assignmenš¸ãt–uôthat“will“matc˜h“an“author“name,‘¢¢a“colon,Ž¡an–UUalphabGetic“string,“and“a“t•¸ãw“o-digit‘UUy“ear:ަÊkey–?ý=“"A:Add"‘¿÷%%“Knuth:TB86ަÄNotice–lnthat“no“quotation“marks“are“included“in“theŽ¡pattern,‘€ybGecause–D¥the“citation“k¸ãeys“are“not“quoted.Ž¡Y‘ÿ*ªou–äocan“use“suc¸ãh“patterns“to“help“enforce“uniformŽ¡naming›~„con•¸ãv“en“tions˜for˜citation˜k“eys,‘ÈÏwhic“h˜is˜in-Ž¡creasingly–ÇimpGortanš¸ãt“as“y˜our“bibliograph˜y“data“baseŽ¡gro¸ãws.ŽŸÉ6Ž‘?úLexical‘Õ9analysisŽŸÄThe–ycommand-line“option“Ê-no-prettyprint“Äre-Ž¡quests–ÄÊbibclean“Äto“function“as“a“lexical“analyzerŽ¡instead–0zof“as“a“prett•¸ãyprin“ter.‘5Its–0zoutput“is“then“aŽ¡stream–Z~of“lines,‘›Èeacš¸ãh“of“whic˜h“con˜tains“one“tok˜en.Ž¡F‘ÿ*ªor–€æthe“bibliographš¸ãy“en˜tries“sho˜wn“in“Section“1,‘«chereŽ¡is–’´what“the“output“loGoks“likš¸ãe;‘1cthe“long“lines“ha˜v˜eŽ¡b•Geen›+‹wrapp“ed˜b•¸ãy˜a˜bac“kslash-newline˜to˜ t˜in˜theseŽ¡narro¸ãw–UUjournal“columns:ަÊ#–?ýline“1“"stdin"Ž¡2‘$¿ëAT‘î"@"Ž¡18‘îSTRING‘ ú"String"Ž¡11‘îLBRACE‘ ú"{"Ž¡1‘$¿ëABBREV‘ ú"pub-AW"Ž¡6‘$¿ëEQUALS‘ ú"="Ž¡#–?ýline“2“"stdin"Ž¡19‘îVALUE‘¿÷"\"Ad{\\-d}i{\\-s}on-Wes{\Ž¡\\-l}ey\""Ž¡15‘îRBRACE‘ ú"}"Ž¡#–?ýline“4“"stdin"Ž¡13‘îNEWLINE‘?ý"\n"Ž¡13‘îNEWLINE‘?ý"\n"Ž¡2‘$¿ëAT‘î"@"Ž¡5‘$¿ëENTRY‘¿÷"Book"Ž¡11‘îLBRACE‘ ú"{"Ž¡10‘îKEY‘?ñ"Lamport:LDP85"Ž¡3‘$¿ëCOMMA‘¿÷","Ž¡13‘îNEWLINE‘?ý"\n"Ž¡#–?ýline“5“"stdin"Ž¡7‘$¿ëFIELD‘¿÷"author"Ž¡6‘$¿ëEQUALS‘ ú"="ŽŽŽ ý‚’ó19‘îVALUE‘¿÷"\"Leslie‘?ýLamport\""ޤ ’ó3‘$¿ëCOMMA‘¿÷","Ž¡’ó13‘îNEWLINE‘?ý"\n"Ž¡’ó#–?ýline“6“"stdin"Ž¡’ó7‘$¿ëFIELD‘¿÷"title"Ž¡’ó6‘$¿ëEQUALS‘ ú"="Ž¡’ó#–?ýline“8“"stdin"Ž¡’ó19‘îVALUE‘¿÷"\"{\\LaTeX}---{A}‘?ýDocume\Ž¡’ónt–?ýPreparation“System---User's“Guide“and“\Ž¡’óReference‘?ýManual\""Ž¡’ó3‘$¿ëCOMMA‘¿÷","Ž¡’ó13‘îNEWLINE‘?ý"\n"Ž¡’ó#–?ýline“9“"stdin"Ž¡’ó7‘$¿ëFIELD‘¿÷"publisher"Ž¡’ó6‘$¿ëEQUALS‘ ú"="Ž¡’ó1‘$¿ëABBREV‘ ú"pub-AW"Ž¡’ó3‘$¿ëCOMMA‘¿÷","Ž¡’ó13‘îNEWLINE‘?ý"\n"Ž¡’ó#–?ýline“10“"stdin"Ž¡’ó7‘$¿ëFIELD‘¿÷"year"Ž¡’ó6‘$¿ëEQUALS‘ ú"="Ž¡’ó19‘îVALUE‘¿÷"\"1985\""Ž¡’ó3‘$¿ëCOMMA‘¿÷","Ž¡’ó13‘îNEWLINE‘?ý"\n"Ž¡’ó#–?ýline“11“"stdin"Ž¡’ó7‘$¿ëFIELD‘¿÷"ISBN"Ž¡’ó6‘$¿ëEQUALS‘ ú"="Ž¡’ó19‘îVALUE‘¿÷"\"0-201-15790-X\""Ž¡’ó3‘$¿ëCOMMA‘¿÷","Ž¡’ó13‘îNEWLINE‘?ý"\n"Ž¡’ó#–?ýline“12“"stdin"Ž¡’ó15‘îRBRACE‘ ú"}"Ž¡’ó#–?ýline“13“"stdin"Ž¡’ó13‘îNEWLINE‘?ý"\n"ŽŸ’óÄEacš¸ãh–àline“bGegins“with“a“small“in˜teger“tok˜en“t˜ypGeŽ¡’ón•¸ãum“bGer–«Õfor“the“con•¸ãv“enience–«Õof“computer“programs,Ž¡’óthen–ã\a“tokš¸ãen“t˜ypGe“name“for“h˜uman“readers,‘ú'follo˜w˜edŽ¡’óbš¸ãy–UUa“quoted“tok˜en“string.Ž¡’Lines–ôYbGeginning“with“a“sharp,–¿Ê#Ä,“are‘ôYANSI/ISOŽ¡’óStandard–îòC‘îÊpreprošGcessor“line-n•¸ãum“b˜er›îòdirectiv“es˜[3Ž‘,Ž¡’óSection–û‹3.8.4]“to“record“the“input“line“n•¸ãum“bGer‘û‹andŽ¡’ó le‘UUname.Ž¡’There–M2are“currenš¸ãtly“19“tok˜en“t˜ypGes“de ned“inŽ¡’óthe–`ÒdoGcumen¸ãtation“that“accompanies“ÊbibcleanÄ.‘ FBe-Ž¡’ócause–€ŸŒEŽ‘ãxX‘­st¸ãyles“can“de ne“new“ eld“names,Ž¡’óthere–=žis“little“pGoin¸ãt“in“the“lexical“analyzer“of“attempt-Ž¡’óing–ôFto“classify“ eld“names“more“precisely;‘C¿that“jobŽ¡’óis–UUleft“for“other“soft•¸ãw“are.Ž¡’Inside–€ªquoted“strings,‘‹the“ANSI/ISO‘€ŸStandardŽ¡’óC‘kŸ[3Ž‘,‘ñÞSection–l)3.1.3.4]“bac¸ãkslash“escapGe“sequencesŽ¡’ósho¸ãwn–Xáin“T‘ÿ*ªable“2“on“page“401“are“used“to“encoGdeŽ¡’ónon-prin•¸ãtable›/ec“haracters.‘ÿ÷In˜this˜w“a“y‘ÿ*ª,‘eéa˜m“ulti-lineŽ¡’óstring–‡«v‘ÿqÇalue“can“bGe“represen¸ãted“on“a“single“line.‘-9ThisŽ¡’óis›V¥con•¸ãv“enien“t˜for˜string-searc“hing˜applications.‘âIf˜theŽŽŽŽŽŽŒ‹”¹— ¨ ýF ¬ŽÄ404’)§TUGbGoat,–UUV‘ÿ*ªolume“14“(1993),“No.“4ŽŽ œ ý‚long–Routput“lines“pro•¸ãv“e–Ra“problem“on“some“systems,ޤ the–°_Ê-max-width‘?ýnnn“Äcommand-line“option“can“bGeŽ¡used–?3to“wrap“lines“at“a“spšGeci ed“column“n•¸ãum“b˜er‘?3b“yŽ¡the–UUinsertion“of“a“bac¸ãkslash-newline“pair.Ž¡‘As–·ýa“simple“example“of“hoš¸ãw“this“tok˜en“streamŽ¡migh¸ãt–UUbšGe“pro˜cessed,“the“ëNUNIX“Äcommand“pip˜elineŽ©Êbibclean–?ý-no-prettyprint“mylib.bib“|“\Ž¡‘ÿôawk–?ý'$2“==“"KEY"“{print“$3}'“|“\Ž¡‘ÿôsed–?ý-e“'s/"//g'“|“\Ž¡‘ÿôsortަÄwill–¢extract“a“sorted“list“of“all“citation“k¸ãeys“in“theŽ¡ le‘UUÊmylib.bibÄ.Ž¡‘As–©ƒa“more“complex“example,‘¾consider“loGcatingŽ¡duplicate–cŠabbreviations“and“citation“k¸ãeys“in“a“largeŽ¡collection–-of“bibliographš¸ãy“ les.‘øÚThis“is“a“daun˜tingŽ¡task–sif“it“mš¸ãust“bGe“done“b˜y“visual“scanning“of“the“ les.Ž¡It–BtoGok“me“less“than“10“min¸ãutes“to“write“and“debugŽ¡a–ÂA35-line“Ênawk“Ä[1Ž‘]“program“(15“lines“of“commen¸ãts,‘߬20Ž¡of–ŒcošGde)“that“pro˜cessed“the“tok¸ãen“stream“from“Êbib-Ž¡clean–UUÄand“prinš¸ãted“w˜arnings“abGout“suc˜h“duplicates.Ž¡‘The–SprošGcessing“steps“can“b˜e“represenš¸ãted“b˜y“theŽ¡simple–UUëNUNIX“ÄpipGelineަÊbibclean–?ý-no-prettyprint“bibfiles“|“\Ž¡‘ÿôtr–?ý'[A-Z]'“'[a-z]'“|“\Ž¡‘ÿônawk–?ý-f“bibdup.awkަÄwhicš¸ãh–Ýris“most“con˜v˜enien˜tly“encapsulated“in“a“com-Ž¡mand–µ·script“so“that“it“can“bGe“in•¸ãv“ok“ed–µ·more“simplyŽ¡asަÊbibdup‘?ý*.bibަÄto–UUproGduce“output“lik¸ãe“this:ަÊDuplicate–?ýstring“abbreviation“["pub-aw"]:Ž¡‘)ÿè#–?ýline“1“"ll.bib"Ž¡‘)ÿè#–?ýline“141“"master.bib"Ž¡Duplicate–?ýkey“["lamport:ldp85"]:Ž¡‘)ÿè#–?ýline“4“"ll.bib"Ž¡‘)ÿè#–?ýline“4172“"master.bib"Ž¡...ަ‘ÄB‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX's–jgrammar“is“somewhat“hazy‘ÿ*ª,‘¯Cso“it“isŽ¡not–CŠeasy“to“pGerform“a“lexical“analysis“without“someŽ¡con•¸ãtext›M!sensitivit“y‘ÿ*ª.‘¶Êbibclean˜Ätherefore˜proGduces˜theŽ¡lexical–Üntok¸ãen“stream“merely“as“an“alternate“outputŽ¡format.‘,5In–„žparticular,‘®]this“means“that“an¸ãy“requestedŽ¡run-time–£‰formatting“options“will“ha•¸ãv“e–£‰bGeen“appliedŽ¡to–the“tok¸ãens“Çb–ÿ}'efor“e‘ÆyÄthey–are“output“to“the“lexicalŽ¡tokš¸ãen–¤ stream.‘_¨F‘ÿ*ªor“example,‘¸sa“ëNScribe“Äbibliograph˜yŽ¡ le–ùÑcan“bGe“con•¸ãv“erted–ùÑto“a“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘ù¦tok¸ãen“stream“soŽ¡that›csoft•¸ãw“are˜that˜proGcesses˜ÊbibcleanÄ's˜output˜needŽ¡not–UUbGe“ëNScribeÄ-a•¸ãw“are.ŽŸÉ7Ž‘?úP•®9ortabilit“yŽŸÊbibclean–ž’Äis“written“in“ANSI/ISO›ž=Standard“C˜[3Ž‘]Ž¡with–óËgreat“care“takš¸ãen“to“proGduce“maxim˜um“pGorta-ŽŽŽ ý‚’óbilit¸ãy‘ÿ*ª.‘iIt–X:has“bGeen“successfully“tested“with“more“thanޤ ’ó30–îÕdi erenš¸ãt“compilers“on“all“ma‘Ž8jor“w˜orkstation,‘UandŽ¡’óone›‡Æmainframe,–ÔbëNUNIX‘‡wÄsystems,“plus˜ëNV‘þÕUAX‘‡wVMSÄ,Ž¡’óëNPC-DOSÄ,–UUëNOS/2Ä,“and“A¸ãtari“ëNTOSÄ.Ž¡’The–Ò÷C‘Ò×programming“language“has“bGecome“theŽ¡’ólanguage–dŽof“cš¸ãhoice“toGda˜y“for“most“pGersonal“computerŽ¡’óand›:)ëNUNIX‘9áÄsoft•¸ãw“are˜dev“elopmen“t,‘rÌand˜the˜increasingŽ¡’óa•¸ãv‘ÿqÇailabilit“y–of“C‘rimplemen¸ãtations“conforming“to“theŽ¡’ó1989–®Standard“[3Ž‘]“mak¸ães“it“easier“to“write“coGde“thatŽ¡’ówill–«Šcompile“and“run“without“moGdi cation“on“a“wideŽ¡’óv‘ÿqÇariet¸ãy–UUof“systems.Ž¡’C‘%edoGes–%›not“ha•¸ãv“e›%›P“ascal's˜problems˜with˜c“har-Ž¡’óacter–.3strings“and“dynamic“memory“alloGcation“thatŽ¡’óforced–Don“Knš¸ãuth“to“implemen˜t“the“ÊWEB‘ÿêÄstring“p•Go“olŽ¡’ófeature–µÓand“to“use“compile-time“arra¸ãy“alloGcation“inŽ¡’óthe–¨ãT‘þU>Ÿ'EŽ‘ãxX“soft•¸ãw“are›¨ãdev“elopmen“t.‘lrC's˜ric“h˜opGeratorŽ¡’ósyn•¸ãtax,‘›its›pGo“w“erful˜run-time˜library‘ÿ*ª,‘›and˜generallyŽ¡’óexcellenš¸ãt–X(opGerating-system“in˜terfaces“ha˜v˜e“made“itŽ¡’ówidely– ^pGopular.‘“áMore“than“a“million“copies“of“theŽ¡’ó rst–gÓedition“of“ÇThe›¤ëC‘¤æPr–ÿ}'o“gr“amming˜L“anguage‘(.Äb•Go“okŽ¡’ó[13Ž‘ ]›ñha•¸ãv“e˜bGeen˜sold,‘)and˜the˜second˜edition˜[14Ž‘ ]˜ma“yŽ¡’ódo–UUev¸ãen“bGetter.Ž¡’Nev¸ãertheless,‘©C‘\Ðhas–]™some“serious“problems.Ž¡’óPhilippGe–òKahn,‘´˜the“founder“of“Borland“In¸ãterna-Ž¡’ótional,‘Šhas–called“C‘ža“Çwrite-only‘ûÄlanguage.‘ ½Tw¸ãoŽ¡’ób•Go“oks›‰ ha•¸ãv“e˜b•Geen˜written˜ab“out˜its˜syn¸ãtactical˜p“e-Ž¡’óculiarities–Û[9Ž‘,“17Ž‘ Û],‘ü†and“one“of“them“has“already“ap-Ž¡’ópGeared–UUin“a“second“edition.Ž¡’The–í´only“w•¸ãa“y–í´to“o•¸ãv“ercome–í´these“problems“isŽ¡’ómeticulous–¼Acare“in“programming,‘Uûand“expGerienceŽ¡’ówith–4as“manš¸ãy“compilers“and“computer“arc˜hitecturesŽ¡’óas–ã‹pšGossible.‘hSev¸ãeral“b˜o˜oks“o er“v‘ÿqÇaluable“advice“onŽ¡’óC–UUpGortabilit¸ãy“[10Ž‘ ,“11Ž› UW,“19Ž˜,“23Ž˜,“24Ž˜,“26Ž˜,“29Ž˜].Ž¡’C++–Ã1[8Ž‘,“30Ž‘Ã3]“is“an“extension“of“C‘ÂÒto“suppGortŽ¡’óob‘Ž8ject-orienš¸ãted–³Ôprogramming,‘Ô!and“has“an“en˜th˜usias-Ž¡’ótic–X]follo¸ãwing.‘zßANSI/ISO‘X\standardization“e orts“areŽ¡’óin–]Wprogress,‘Žñsadly“while“the“language“is“still“ev¸ãolving.Ž¡’F‘ÿ*ªrom–Tthe“pGoin¸ãt“of“view“of“a“C‘@programmer,‘UtheŽ¡’óadv‘ÿqÇanš¸ãtage–ç‚of“C++“o˜v˜er“C‘çfis“its“m˜uc˜h“stricter“c˜hec˜k-Ž¡’óing–Íof“tš¸ãypGe“con˜v˜ersions“and“in˜termoGdule“in˜terfaces.Ž¡’óÊbibclean–ûðÄhas“bšGeen“carefully“written“to“b˜e“compil-Ž¡’óable–´under“C++“as“w¸ãell“as“C,“and“to“date,‘nhas“bGeenŽ¡’ótested–[‹with“more“than“a“dozen“C++“and“Ob‘Ž8jectiv¸ãeŽ¡’óC–UU(another“C“supGerset)“compilers.Ž¡’All–ÅRof“the“extra“features“of“the“C++“languageŽ¡’óare–®strictly“a•¸ãv“oided,‘>DbGecause–®using“them“w¸ãould“se-Ž¡’óriously–>9limit“ÊbibcleanÄ's“pGortabilit¸ãy‘ÿ*ª.‘ ,rNot“only“isŽ¡’óthe–ƒsynš¸ãtax“of“the“C++“language“under“ev˜olution,Ž¡’óbut–_˜the“C++“class“libraries“are“for“the“most“partŽ¡’óÇc–ÿ}'ompletely‘¹Üdep“endent‘‡±Äon–”Ùthe“particular“implemen-Ž¡’ótation.‘è•Microsoft's–ÒD1020-page“doGcumen¸ãtation“of“itsŽ¡’óC++–Ûclass“library“is“10%“larger“than“that“of“its“CŽ¡’órun-time‘UUlibrary‘ÿ*ª.ŽŽŽŽŽŽŒ‹•̉ ¨ ýF ¬ŽÄTUGbGoat,–UUV‘ÿ*ªolume“14“(1993),“No.“4’)§405ŽŽ œ ý‚‘Nev¸ãertheless,‘»žI‘”ÿÇstr–ÿ}'ongly‘ã"r“e“c“ommend‘¹Äuse–•0of“C++ޤ compilers–Y;in“preference“to“C‘Xûcompilers,‘‹§so“as“to“catc¸ãhŽ¡bugs–&5at“compile“time“that“w¸ãould“otherwise“not“bGeŽ¡found–mÖun¸ãtil“pGost-mortem“dump“time,‘³öor“when“theŽ¡cošGde–UUis“p˜orted“to“a“new“arc¸ãhitecture.ŽŸÉ8Ž‘?úëNScribe–Õ9Ébibliograph®9y“formatŽŸÄThe–&dëNScribe“ÄdoGcumen¸ãt“formatting“system“[25Ž‘ ]Ž¡greatly–þ$in uenced“L‘ý qŸþ1³AŽ‘s”ÄT‘þU>Ÿ'EŽ›ãxX“and“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ˜X,“as“w¸ãell“as“theŽ¡GNU–UUEmacs“T‘þU>Ÿ'EŽ‘ãxXinfo“system.Ž¡‘With–¾Fcare,‘Xit“is“pGossible“to“share“bibliogra-Ž¡phš¸ãy–¿ les“bGet˜w˜een“ëNScribe“Äand“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX.“Nev˜erthe-Ž¡less,›ÖÒthere–‰¹are“some“di erences,˜so“here“is“a“sum-Ž¡mary–çof“features“of“the“ëNScribe“Äbibliograph¸ãy“ le“for-Ž¡mat.‘ÀW‘ÿ*ªe–ßýrecord“them“bGecause“they“are“dicult“toŽ¡determine–‡`from“the“published“man¸ãual,‘“ãand“bGecauseŽ¡readers–Ema¸ãy“sometimes“acquire“ les“in“this“formatŽ¡without–UUha¸ãving“prior“expGosure“to“ëNScribeÄ.ŽŸÞœ‘8ä1.ŽŽŽ‘Letter–ncase“is“not“signi can¸ãt“in“ eld“names“andŽ¡‘enš¸ãtry–´wnames,‘L>but“case“is“preserv˜ed“in“v‘ÿqÇalueŽ¡‘strings.Ž© ½8‘8ä2.ŽŽŽ‘In–R• eld/v›ÿqÇalue“pairs,‘S"the“ eld“and“v˜alue“ma¸ãy“bGeŽ¡‘separated–5¹bš¸ãy“one“of“three“c˜haracters:‘aùÊ=Ä,–< Ê/Ä,“or‘5¹Ê Ž¡‘Ä(space).‘œfSpace–5ma¸ãy“optionally“surround“theseŽ¡‘separators.ަ‘8ä3.ŽŽŽ‘V‘ÿ*ªalue–pÀdelimiters“are“anš¸ãy“of“these“sev˜en“pairs:Ž¡‘Ê{–?ý}Ä,›UUÊ[“]Ä,˜Ê(“)Ä,˜Ê<“>Ä,˜Ê'“'Ä,˜Ê"“"Ä,˜and˜Ê`“`Ä.ަ‘8ä4.ŽŽŽ‘V‘ÿ*ªalue–DAdelimiters“maš¸ãy“not“bGe“nested,‘?úev˜enŽ¡‘though–;>with“the“ rst“four“delimiter“pairs,Ž¡‘nested–±Ábalanced“delimiters“wš¸ãould“bGe“unam˜bigu-Ž¡‘ous.ަ‘8ä5.ŽŽŽ‘Delimiters–A+can“bGe“omitted“around“v‘ÿqÇalues“thatŽ¡‘con¸ãtain–^Íonly“letters,–¡+digits,“sharp‘^Í(Ê#Ä),“ampGer-Ž¡‘sand–UU(Ê&Ä),“p•Gerio“d–UU(Ê.Ä),“and“pGercen¸ãt“(Ê%Ä).ަ‘8ä6.ŽŽŽ‘Outside–Üof“delimited“v‘ÿqÇalues,‘ôGa“literal“at-sign“(Ê@Ä)Ž¡‘is–UUrepresenš¸ãted“b˜y“doubled“at-signs“(Ê@@Ä).ަ‘8ä7.ŽŽŽ‘Bibliograph•¸ãy›€en“tries˜bGegin˜with˜Ê@nameÄ,‘Ë^as˜forŽ¡‘B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX,–#²but“anš¸ãy“of“the“sev˜en“ëNScribe“Äv‘ÿqÇalue“de-Ž¡‘limiter–QÃpairs“ma¸ãy“bGe“used“to“surround“the“v‘ÿqÇaluesŽ¡‘in–¾— eld/v‘ÿqÇalue“pairs.‘?ˆAs“in“(4),‘ܽnested“delimitersŽ¡‘are‘UUforbidden.ަ‘8ä8.ŽŽŽ‘Arbitrary–}œspace“maš¸ãy“separate“en˜try“names“fromŽ¡‘the–UUfollo¸ãwing“delimiters.ަ‘8ä9.ŽŽŽ‘Ê@Comment–hMÄis“a“spGecial“command“whose“delim-Ž¡‘ited–è©v‘ÿqÇalue“is“discarded.‘MŽAs“in“(4),‘þenested“delim-Ž¡‘iters–UUare“forbidden.ަ‘8ã10.ŽŽŽ‘The–UUspGecial“formŽ©½8‘Ê@Begin{comment}Ž¡‘...Ž¡‘@End{comment}ަ‘ÄpGermits–Nencapsulating“arbitrary“text“con¸ãtain-Ž¡‘ing–¦anš¸ãy“c˜haracters“or“delimiters,‘:Jother“thanŽŽŽ ý‚’Ê@EndÆfÊcommentÆgÄ.‘ œxAnš¸ãy–cof“the“sev˜en“delimiterޤ ’pairs–øâmaš¸ãy“bGe“used“around“the“w˜ord“Êcom-Ž¡’ment–‡™Äfollo¸ãwing“the“Ê@Begin“Äor“Ê@EndÄ;‘ ¼the“de-Ž¡’limiters–¿in“the“t•¸ãw“o–¿cases“need“not“bGe“theŽ¡’same,–ßand‘"‘consequen¸ãtly‘ÿ*ª,“Ê@BeginÆfÊcommentÆgÄ/Ž¡’Ê@EndÆfÊcommentÆg–UUÄpairs“ma¸ãy“not“bGe“nested.Ž© ×”’õ8ã11.ŽŽŽ’The–( Êkey“Ä eld“is“required“in“eacš¸ãh“bibliograph˜yŽ¡’en¸ãtry‘ÿ*ª.ަ’õ8ã12.ŽŽŽ’A‘²bac¸ãkslashed–²»quote“in“a“string“will“bGe“as-Ž¡’sumed–Ó-to“bGe“a“T‘þU>Ÿ'EŽ‘ãxX“accen¸ãt,‘ò£and“braced“appro-Ž¡’priately‘ÿ*ª.‘h While–8 sucš¸ãh“accen˜ts“do“not“conform“toŽ¡’ëNScribe–‘Äsyn¸ãtax,‘ràëNScribeÄ-format“bibliographiesŽ¡’ha•¸ãv“e–ñÃbšGeen“found“that“app˜ear“to“b˜e“in¸ãtended“forŽ¡’T‘þU>Ÿ'EŽ‘ãxX‘UUproGcessing.Ž©kÊ’Because–]Mof“this“loGose“syn¸ãtax,‘ŸKÊbibcleanÄ's“nor-Ž¡’ómal–eÿerror“detection“heuristics“are“less“e ectiv¸ãe,‘j)andŽ¡’óconsequen¸ãtly‘ÿ*ª,‘æåëNScribe–ËIÄmoGde“input“is“not“the“default;Ž¡’óit–UUm¸ãust“bGe“explicitly“requested.ŽŸ’óÉ9Ž’?úRecommendations–Õ9for“ÄB‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX“ÉdesignŽŸ’óÄThe–õ†doGcumenš¸ãtation“a˜v‘ÿqÇailable“for“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘õnlea˜v˜es“sev-Ž¡’óeral–pšGoin¸ãts“ab˜out“the“input“syn¸ãtax“unclear,‘Ýand“IŽ¡’óhad–;Što“obtain“answš¸ãers“to“the“follo˜wing“questions“b˜yŽ¡’óexpGerimen¸ãt:ަ’ýÆŽŽŽ’ÄCan–€an“at-sign“oGccur“inside“a“Ê@CommentÆfÊ...ÆgÄ?Ž¡’ÇNoÄ.Ž© ×”’ýÆŽŽŽ’ÄCan–²Çstring“abbreviation“names“bGe“used“on“theŽ¡’righ¸ãt-hand–UUside“of“string“de nitions?‘qÇÇY‘ÿ;¼esÄ.ަ’ýÆŽŽŽ’ÄCan–UUthe“argumenš¸ãt“of“Ê@String“ÄbGe“empt˜y?‘qÇÇNoÄ.ަ’ýÆŽŽŽ’ÄCan–ýÅa“citation“kš¸ãey“bGe“omitted“in“an“en˜try?‘T—ÇNoÄ.ަ’ýÆŽŽŽ’ÄCan–ùÄthe“list“of“assignmenš¸ãts“in“an“en˜try“bGeŽ¡’empt¸ãy?‘qÇÇY‘ÿ;¼esÄ.ަ’ýÆŽŽŽ’ÄCan–BÛa“Ê@CommentÆfÊ...Æg“ÄošGccur“b˜et•¸ãw“een‘BÛarbitraryŽ¡’tok¸ãens?‘qÇÇNoÄ.ަ’ýÆŽŽŽ’ÄAre–í´newlines“preservš¸ãed“in“the“argumen˜t“of“aŽ¡’Ê@PreambleÆfÊ...ÆgÄ?‘UWThe–answš¸ãer“is“relev‘ÿqÇan˜t“if“theŽ¡’user–£Žincludes“T‘þU>Ÿ'EŽ‘ãxX“commenš¸ãts“in“the“pream˜bleŽ¡’material.‘qÇÇNoÄ.ŽŸkÊ’óI‘¸Êview–¸äthe“expGerimenš¸ãtal“answ˜ers“to“these“questionsŽ¡’óas–àpure“happGenstance,‘H‚and“could“reasonably“argueŽ¡’ófor–UUthe“oppGosite“answ¸ãers“to“the“ones“obtained.ŽŸ’óÉGrammarŽŸ’óÄThe–•imost“impGortan¸ãt“recommendation“that“I‘”ÕcanŽ¡’ómakš¸ãe–IÈfor“the“next“v˜ersion“of“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘IÅis“that“it“ÇmustŽ¡’óÄha•¸ãv“e–_Ža“rigorous“grammar,‘¢including“a“w¸ãell-de nedŽ¡’ócommen•¸ãt‘UUsyn“tax.Ž¡’The–Rgrammar“can“almost“bGe“of“the“simple“classŽ¡’óLL(0)–þ×[2Ž‘],‘i7requiring“no“loGok‘ÿqÇahead“during“parsing,Ž¡’óand–ËZone-c¸ãharacter“loGok‘ÿqÇahead“during“lexical“analysis.Ž¡’óHo•¸ãw“ev“er,‘½#the–u-presence“of“the“string“concatenationŽ¡’óopGerator–ñÂcomplicates“things“sucien¸ãtly“to“requireŽ¡’óat–UUleast“an“LL(1)“grammar.ŽŽŽŽŽŽŒ‹–åZ ¨ ýF ¬ŽÄ406’)§TUGbGoat,–UUV‘ÿ*ªolume“14“(1993),“No.“4ŽŽ œ ý‚‘Sucš¸ãh–ûgrammars“are“straigh˜tforw˜ard“to“handleޤ with–eeither“hand-coGded“parsers,‘hïor“with“parsers“au-Ž¡tomatically–;=generated“from“grammar“ les“b¸ãy“com-Ž¡piler›$tdev•¸ãelopmen“t˜toGols˜lik“e˜the˜ëNUNIX‘$hÊlex˜Ä[20Ž‘ ]˜andŽ¡Êyacc–LÄ[12Ž‘ ,“21Ž› N,“22Ž˜,“28Ž˜]“programs,‘"çor“the“F‘ÿ*ªree“Soft•¸ãw“areŽ¡F‘ÿ*ªoundation–UUequiv‘ÿqÇalen¸ãts,“Êflex“Äand“ÊbisonÄ.Ž¡‘Êyacc–nñÄand“Êbison“Äimplemen¸ãt“LALR(1)“parsers;Ž¡the–àacron¸ãym“stands“for“\LoGok-Ahead“at“most“1“to-Ž¡kš¸ãen–„zwith“a“Left-to-Righ˜t“deriv‘ÿqÇation".‘,)These“are“sim-Ž¡pler–À=than“the“LR(ó  b> cmmi10ÅkP—Ä)“grammars“inš¸ãtroGduced“b˜y“noneŽ¡other–v„than“the“author“of“T‘þU>Ÿ'EŽ‘ãxX“in“the“fundamen¸ãtal“pa-Ž¡pGer–ÉÁon“the“theory“of“parsing“[15Ž‘ ].‘CANev¸ãertheless,‘å«theyŽ¡are–Güsucien¸ãt“for“a“broad“class“of“language“grammars,Ž¡including–ª¤most“ma‘Ž8jor“programming“languages,‘¿÷andŽ¡imp•Gortan¸ãtly‘ÿ*ª,‘£8they›`qpro“duce˜compact,–£8ecien¸ãt,“fast,Ž¡and–©reliable“parsers.‘mLL(1)“grammars“are“a“spGecialŽ¡case–rof“LALR(1)“grammars,‘9and“w¸ãe“will“later“de neŽ¡a–@"B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘@grammar“in“LALR(1)“form“in“Section“11.Ž©ÉCommen•®9t‘Õ9syn“taxŽŸÄThe–N4commenš¸ãt“syn˜tax“should“preferably“bGe“iden˜ticalŽ¡to–ð that“of“T‘þU>Ÿ'EŽ‘ãxX,‘¸so“that“a“commen¸ãt“runs“from“pGer-Ž¡cen¸ãt– Ïto“end-of-line,‘·and“then“Çadditional›‚Øly–OXgobbles“al˜lŽ¡le›ÿ}'ading–§horizontal“sp˜ac˜e“on“the“next“line,›«éup“to,˜butŽ¡not–S2including,‘ƒits“end-of-lineÄ.‘áŽThis–%BpGermits“break-Ž¡ing–dnof“long“lines“without“haš¸ãving“to“destro˜y“inden-Ž¡tation–žÎthat“is“so“necessary“for“readabilit•¸ãy‘ÿ*ª.‘N1P“ercen“t-Ž¡initiated–dêcommen¸ãts“are“already“suppGorted“in“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxXŽ¡stš¸ãyle–Ì les,‘(though“suc˜h“commen˜ts“end“after“the“ rstŽ¡follo¸ãwing‘UUnewline.Ž¡‘F›ÿ*ªor–?ëNScribe“Äcompatibilit¸ãy˜,‘*ùB‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘should“alsoŽ¡suppGort–Ÿœa“Ê@CommentÆfÊ...Æg“Äenš¸ãtry“t˜ypGe.‘PThis“will“re-Ž¡quire–P«additions“to“Çal‘‚Øl‘Y4ÄB‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘Pjst¸ãyle“ les,‘€since“theŽ¡en•¸ãtry›Ÿ=t“ypGes˜are˜kno“wn˜there,‘ñ·and˜not˜in˜the˜B‘ÿþëNi¹Db‘ÿ32Ä-Ž¡T‘þU>ŸŒEŽ–ãxX›=ëcoGde‘=ñitself.‘iûB‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ“X˜0.99c–=ñalready“kno¸ãws“abGoutŽ¡Ê@CommentÆfÊ...ÆgÄ,‘Éÿbut–²ªthe“ÊWEB‘²‘ÄcošGde“section“\Pro˜cessŽ¡a–0ãÊcomment“Äcommand"“will“ha•¸ãv“e–0ãto“bGe“extended“toŽ¡deal–UUwith“the“grammar“c¸ãhanges.Ž¡‘It–b´is“impGortan¸ãt“that“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘b°not“discard“Ê@Com-Ž¡mentÆfÊ...Æg–CÔÄenš¸ãtries,‘zˆbGecause“it“w˜ould“then“not“bšGe“p˜os-Ž¡sible–@ïto“write“a“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘@³stš¸ãyle“ le“that“con˜v˜erted“aŽ¡bibliograph¸ãy–a le“to“another“format“without“loss“ofŽ¡information.‘’îOne– sucš¸ãh“st˜yle“already“exists“to“con-Ž¡v¸ãert–UUB‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX“ les“to“ëNUNIX“ÊbibÄ/Êrefer“Äformat.ަÉCharacters–Õ9in“namesŽŸÄThe–Bëcš¸ãharacters“that“can“appGear“in“k˜ey–ÿ*ª,‘~Pen˜try“,‘~PandŽ¡ eld–Snames“Çmust‘+ÄbGe“de ned“bš¸ãy“en˜umeration,‘(†ratherŽ¡than–<9bš¸ãy“exclusion,‘µòas“is“curren˜tly“done“[18Ž‘ ,‘µòSec-Ž¡tion–óçB.1.3].‘M|The“reason“is“that“c¸ãharacter“sets“v‘ÿqÇaryŽ¡bGet•¸ãw“een–¹Ócomputers,›òand“the“new,˜and“vš¸ãery“m˜uc˜hŽ¡larger,‘°yISO10646M‘ôcš¸ãharacter–¥set“ma˜y“bGe“widelyŽ¡a¸ãv›ÿqÇailable–¢§in“this“decade.‘ Y¾These“v˜ariations“mak¸ãeŽ¡the–hŸset“of“admissible“name“cš¸ãharacters“v‘ÿqÇary“bGet˜w˜eenŽŽŽ ý‚’ósystems,‘v´compromising–<ÔpGortabilit¸ãy‘ÿ*ª.‘(DI‘<˜strongly“rec-ޤ ’óommend–•Pfolloš¸ãwing“the“con˜v˜en˜tions“for“iden˜ti ers“inŽ¡’ówidely-used–ªprogramming“languages“to“de ne“theŽ¡’ógrammar–dæof“k•¸ãey›ÿ*ª,‘¨Êen“try˜,‘¨Êand–dæ eld“names.‘ {It“seemsŽ¡’óto–eême“that“letters,–jdigits,“colon,“h¸ãyphen,“and‘eêpGossi-Ž¡’óbly–¨ûplus“and“slash,›½äshould“bGe“adequate,˜and“namesŽ¡’óshould– €bšGe“required“to“b˜egin“with“a“letter.‘šH`Letter'Ž¡’óhere–should“include“Çonly‘õþÄthe“26“Roman“letters“`A'Ž¡’óthrough–”M`Z',“bGecause“allo¸ãwing“letters“from“other“al-Ž¡’óphab•Gets›)Ýop“ens˜a˜horrid˜can˜of˜w¸ãorms˜that˜will˜se-Ž¡’óriously–Mimpact“pGortabilitš¸ãy“of“bibliograph˜y“ les“un˜tilŽ¡’óthe–äŽcomputer“wš¸ãorld“has“a“single“uniform“c˜haracterŽ¡’óset.Ž¡’I‘Ètested–Èíthis“set“of“c¸ãharacters“against“92“500Ž¡’óenš¸ãtries–¦Win“loGcal“bibliograph˜y“ les,‘º˜and“found“only“aŽ¡’ófew–\kš¸ãeys“that“used“other“c˜haracters:‘ËÖthe“new“onesŽ¡’ów¸ãere›kp•Gerio“d˜and˜ap“ostrophe˜(e.g.˜O'Malley:TB92).Ž¡’óThey–²migh¸ãt“therefore“bšGe“p˜ermitted“as“w¸ãell,‘ÉÊthoughŽ¡’óI‘Äwš¸ãould–Õprefer“to“omit“them,‘¼and“retro t“c˜hanges“inŽ¡’óa–UUfew“citation“k¸ãeys.Ž¡’The–@cš¸ãharacters“pGermitted“in“citation“k˜eysŽ¡’óshould–TœbGe“the“same“as“those“in“en¸ãtry“and“ eld“names,Ž¡’óso–UUas“to“a•¸ãv“oid–UUuser“confusion.Ž©’óÉError‘Õ9repQÇortingŽŸ’óÄWhen–`³B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘`nbGegins“to“collect“a“tok¸ãen,‘£Šit“shouldŽ¡’órecord–¦´the“currenš¸ãt“line“n˜um˜bGer.‘eåWhen“an“unclosedŽ¡’óstring–˜ÿlater“causes“inš¸ãternal“bu er“o˜v˜er o˜w,‘©êit“couldŽ¡’órepGort–j¿something“lik¸ãe“ÊString–?ýbuffer“overflow“onŽ¡’óinput–?ýlines“24--82–&nÄthat“w¸ãould“bšGetter“help“lo˜cateŽ¡’óthe–xßo ending“string“b¸ãy“giving“its“starting“and“endingŽ¡’óline‘UUn•¸ãum“bGers.Ž¡’T‘ÿ*ªo–†ƒsimplify“error“reco•¸ãv“ery–†ƒin“suc¸ãh“cases,‘ÒÎB‘ÿþëNi¹Db‘ÿ32Ä-Ž¡’óT‘þU>ŸŒEŽ‘ãxX‘Hcould–H!additionally“require“that“the“Ê@“Äc¸ãharacterŽ¡’óthat–zustarts“a“new“enš¸ãtry“m˜ust“bGe“the“ rst“non-spaceŽ¡’óc¸ãharacter–UUon“a“line.ަ’óÉFile‘Õ9inclusionŽŸ’óÄB‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘8sorely–8>needs“a“ le“inclusion“facilit¸ãy‘ÿ*ª.‘WithŽ¡’óB‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘Ϊ0.99c,‘-xthis–Ï feature“is“a¸ãv‘ÿqÇailable“in“a“crudeŽ¡’ófashion–ßbš¸ãy“listing“sev˜eral“ les“in“the“Ê\bibliographyŽ¡’óÄcommand.‘ÞYHo•¸ãw“ev“er,‘‚’this–y†is“not“sucien¸ãtly“general,Ž¡’óand–Ï9requires“unnecessary“kno¸ãwledge“on“the“part“ofŽ¡’óthe–UUuser“of“the“bibliograph¸ãy‘ÿ*ª.Ž¡’The–author“of“a“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘é le“should“bGe“free“toŽ¡’órestructure–õPit“in¸ãto“sub les“without“requiring“moGdi -Ž¡’ócations–¶¾to“all“doGcumen¸ãts“that“use“it.‘–File“inclusionŽ¡’óis–ð¾impGortanš¸ãt“to“allo˜w“sharing“of“common“material,Ž¡’ósuc¸ãh–UUas“Ê@StringÆfÊ...Æg“Äde nitions.Ž¡’ëNScribe–UUÄuses“the“formŽŸ’óÊ@Include{filename}ŽŽŽŽŽŽŒ‹—þQ ¨ ýF ¬ŽÄTUGbGoat,–UUV‘ÿ*ªolume“14“(1993),“No.“4’)§407ŽŽ œ ý‚and–?FB‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘?Ashould“tošGo.‘jmIt“m¸ãust“b˜e“p˜ossible“to“nestޤ le–ÈÓinclusions“to“a“reasonable“depth,‘%²at“least“ v¸ãeŽ¡lev¸ãels.Ž©É10Ž‘ÿøA–Õ9lexical“grammar“for“ÄB‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxXŽŸT‘ÿ*ªo–óñtest“the“recommendations“of“Section“9,‘—I‘óÈwroteŽ¡and–|ötested“a“Êlex“Ägrammar“for“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX.“It“toGok“justŽ¡22–«rules“to“idenš¸ãtify“the“19“basic“tok˜en“t˜ypGes.‘ÐÈTheŽ¡complete–MÊlex“Ä le“w¸ãas“abGout“510“lines“long,‘JwithŽ¡abšGout–³]340“lines“of“C‘³4co˜de“mostly“concerned“with“theŽ¡input–eQand“output“of“strings,‘•Rand“120“lines“of“functionŽ¡and–\v‘ÿqÇariable“declarations.‘WtAfter“Êlex“ÄproGcessing,‘'theŽ¡complete––EC‘–program“w¸ãas“abGout“1130“lines“long;‘ÕõwithŽ¡ÊflexÄ,‘Ïit–¶¬is“1700“lines“long.‘•ÌThis“program“is“namedŽ¡ÊbiblexÄ,‘zdand–?Èits“output“is“compatible“with“that“ofŽ¡Êbibclean–IæÄwith“the“Ê-no-prettyprint“Äoption.‘m÷Ho¸ãw-Ž¡ev¸ãer,–UUit“o ers“none“of“ÊbibcleanÄ's“other“services.Ž¡‘The–AÊlex“Ägrammar“is“presen¸ãted“in“this“sectionŽ¡in–XBthe“st¸ãyle“of“literate“programming,‘Xýwith“grammarŽ¡rules–Çinš¸ãterspGersed“with“descriptiv˜e“text.‘ÇThe“indexŽ¡at–Rthe“end“of“this“doGcumenš¸ãt“pro˜vides“an“essen˜tialŽ¡feature–å of“a“literate“program.‘ !'T‘ÿ*ªo“mš¸ãy“kno˜wledge,Ž¡no–ÙÜÊWEB‘ÙºÄfacilitš¸ãy“y˜et“exists“for“Êlex“Äand“ÊyaccÄ,‘úþso“thisŽ¡literate–UUprogram“m¸ãust“bGe“handcrafted.ަÉFile‘Õ9structureŽŸÄA–UUÊlex“Ä le“has“this“general“structure:Ž©ÊdefinitionsŽ¡%%Ž¡rulesŽ¡%%Ž¡user‘?ýfunctionsަ‘ÄC‘¹ùdeclarations–ºand“de nitions“can“bGe“includedŽ¡in–N7the“declarations“part“if“they“are“enclosed“in“Ê%{Ž¡Äand–q Ê%}Ä.‘Å'Sucš¸ãh“text“is“copied“v˜erbatim“to“the“out-Ž¡put–URcoGde“ le,‘UStogether“with“additional“ÊlexÄ-suppliedŽ¡header‘UUcoGde.Ž¡‘Running–_šÊlex“Äon“this“ le“proGduces“a“C‘_— le“thatŽ¡can–xàbGe“compiled“and“link¸ãed“with“a“main“programŽ¡from–gthe“Êlex“Älibrary“to“proGduce“a“w¸ãorking“lexicalŽ¡analyzer.‘ùÓAlternativ¸ãely‘ÿ*ª,‘Îthe–‚®user“can“write“a“cus-Ž¡tomized–´omain“program“whicš¸ãh“is“link˜ed“with“the“ÊlexÄ-Ž¡generated–UUcoGde“to“mak¸ãe“a“functional“lexer.Ž¡‘In–Ðthe“folloš¸ãwing“subsections,‘s/w˜e“describGe“theŽ¡con•¸ãten“ts–žof“the“de nitions“and“rules“parts,‘)but“omitŽ¡the–¼˜user“functions,‘Û$since“they“are“not“relev‘ÿqÇan¸ãt“to“un-Ž¡derstanding–UUthe“grammar.ŽŸÉMacro‘Õ9de nitionsŽŸÄThe–*¨Êlex“Ägrammar“bGegins“with“macro“de nitions.Ž¡Êlex–ÿþÄmacros“are“single“letters“follo•¸ãw“ed›ÿþb“y˜a˜regularŽ¡expression–UUthat“de nes“them.ŽŽŽ ý‚’In–Èsregular“expressions,‘å:square“brac•¸ãk“ets‘Èsdelimitޤ ’ósets–oof“c•¸ãharacters,‘Î5h“yphen–ois“used“for“c¸ãharacterŽ¡’óranges–{@inside“sets,‘ĺasterisk“means“zero“or“more“ofŽ¡’óthe–Spreceding“pattern,‘#ºand“plus“means“one“or“more.Ž¡’óA‘µ/p•Gerio“d–µWrepresenš¸ãts“an˜y“c˜haracter“other“than“a“new-Ž¡’óline.Ž¡’Êlex–ZhÄmacro“names“are“braced“to“request“expan-Ž¡’ósion–UUwhen“they“are“used“in“grammar“rules.Ž¡’The–Ú rst“macro,‘JûÊNÄ,“represenš¸ãts“the“set“of“c˜har-Ž¡’óacters–{pGermitted“in“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘hnames“of“abbreviations,Ž¡’ócitation‘íqk•¸ãeys,›xen“tries,˜and–íq elds.‘:If“this“set“is“ev¸ãerŽ¡’ómoGdi ed,‘ö¸this–Öqis“the“Çonly‘¸îÄplace“where“that“job“hasŽ¡’óto–UUbGe“done.ޤ’óÊN‘ÿô[A-Za-z][---A-Za-z0-9:.+/']*Ž¡’ÄIt–\is“not“reasonable“to“mak¸ãe“this“set“di er“forޤ ’óthese–'Ofour“di eren¸ãt“uses,‘0ƒbGecause“the“di erences“areŽ¡’óinsucienš¸ãt–[to“distinguish“bGet˜w˜een“them“lexically‘ÿ*ª.Ž¡’óW‘ÿ*ªe'll–-Rsee“later“that“wš¸ãe“ha˜v˜e“to“examine“surround-Ž¡’óing–UUcon¸ãtext“to“tell“them“apart.Ž¡’Macro–\yÊO‘\5Ärepresen¸ãts“the“set“of“opGen“delimitersŽ¡’óthat–¢õstart“a“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘¢áenš¸ãtry“argumen˜t.‘Z§W‘ÿ*ªe“could“ex-Ž¡’ótend–Sthis“grammar“for“ëNScribe“Äb¸ãy“adding“additionalŽ¡’óc¸ãharacters–UUto“the“set.ޤ’óÊO‘ÿô[({]Ž¡’ÄMacro–QÚÊW‘QWÄrepresenš¸ãts“a“single“horizon˜tal“spaceŽ© ’óc¸ãharacter.Ž¡’óÊW‘ÿô[‘?ý\f\r\t\013]Ž¡’óÄNotice–½Ÿthat“wš¸ãe“include“formfeed,–±Ê\fÄ,“and‘½Ÿv˜erticalަ’ótab,–úÃÊ\vÄ,“in–¦zthe“set“of“horizonš¸ãtal“space“c˜haracters,ަ’óevš¸ãen–lnthough“they“proGduce“v˜ertical“motion“on“an“out-ަ’óput–\ñdevice.‘üThe“reason“is“that“wš¸ãe“w˜an˜t“to“treat“themަ’ójust–n4lik¸ãe“blanks,‘œnand“distinguish“them“from“newlines,ަ’ówhic¸ãh–øare“handled“separately‘ÿ*ª.‘ZÊlex“ÄdoGes“not“recog-ަ’ónize–the“escapGe“sequence“Ê\vÄ,‘êso“wš¸ãe“ha˜v˜e“to“reencoGdeަ’óit–UUin“oGctal“as“Ê\013Ä.ަ’Carriage›Hreturn,–‘ÄÊ\rÄ,“is˜not˜normally˜used˜inަ’óëNUNIX‘ΰÄtext–ÎÏ les,‘í.but“is“common“in“some“other“op-ަ’óerating–Žsystems.‘ðsOn“the“Apple“Macin¸ãtosh,‘Šcarriageަ’óreturn–ERis“used“instead“of“newline“as“an“end-of-lineަ’ómarkš¸ãer.‘©F–ÿ*ªortunately“,‘lathis–gÅwill“bGe“transparen˜t“to“us,ަ’óbGecause–‰Ythe“C‘‰ language“requires“[3Ž‘,‘ÖYSection“2.2.2]ަ’óthat–‰vthe“implemen¸ãtation“map“host“line“terminatorsަ’óto–Þ)newline“on“input,‘^and“newline“bac¸ãk“to“host“lineަ’óterminators–µon“output,‘(Õso“wš¸ãe“will“nev˜er“see“carriageަ’óreturns–UUon“that“system.ަ’The–JIlast“macro,‘LÊSÄ,“represen¸ãts“optional“horizon-ަ’ótal‘UUspace.Ž¡’óÊS‘ÿô{W}*ŽŸ’óÉF‘ÿ «ormat–Õ9of“grammar“rulesŽŸ’óÄThe–ò§remainder“of“the“grammar“consists“of“pairs“ofަ’óregular– †expression“patterns“and“C‘ RcoGde“to“executeŽŽŽŽŽŽŒ‹˜Y ¨ ýF ¬ŽÄ408’)§TUGbGoat,–UUV‘ÿ*ªolume“14“(1993),“No.“4ŽŽ œ ý‚when–gÑthe“pattern“is“matc¸ãhed.‘©:Êlex“Äuses“a“\maximalޤ m•¸ãunc“h"–ºstrategy“in“matc¸ãhing“the“longest“pGossibleŽ¡sequence–|pto“handle“the“case“where“t•¸ãw“o–|prules“ha•¸ãv“eŽ¡common–UUleading“patterns.Ž¡‘In–qÄthe“grammar“ le,‘xàthe“pairs“are“eac¸ãh“writtenŽ¡on–W¦a“single“line,‘X:but“w¸ãe“wrap“lines“here“to“ t“in“theŽ¡narroš¸ãw–ïjournal“columns,‘‰with“the“bac˜kslash-newlineŽ¡con•¸ãv“en“tion–UUused“earlier.Ž©Ê@‘Õ9Étok®9enŽŸÄThe–=S rst“grammar“rule“saš¸ãys“that“an“Ê@“Äc˜haracterŽ¡should–è£bGe“recognized“as“the“tok¸ãen“named“ÊTOKEN_ATÄ.ޤÊ[@]‘ÿôRETURN‘?ý(out_token(TOKEN_AT));Ž¡‘ÄOn–Áa“successful“matc¸ãh,‘&ythe“output“function“op-ޤ tionally–šõemits“the“tokš¸ãen,‘¬]then“returns“its“argumen˜tŽ¡as–Íla“function“v‘ÿqÇalue“whic¸ãh“the“lexer“in“turn“returnsŽ¡to–UUthe“parser.Ž¡‘The–g©C‘gbÊreturn“Ästatemen¸ãt“is“hidden“inside“theŽ¡ÊRETURN‘‘ Ämacro,›¸ìbGecause–‘Ñfor“Êyacc“Äand“ÊbisonÄ,˜w¸ãe“needŽ¡to–xäbias“ÊbibcleanÄ's“small“inš¸ãteger“tok˜en“v‘ÿqÇalues“toŽ¡mo•¸ãv“e–UUthem“bGeyš¸ãond“the“range“of“c˜haracter“ordinals.ަÊCommentÉ,–Õ9ÊIncludeÉ,“ÊPreambleÉ,“and“ÊStringŽ¡Étok®9ensŽŸÄThe–>6next“four“rules“ignore“letter“case“in“matc¸ãhingŽ¡the–Ðw¸ãords“ÊCommentÄ,–$ëÊIncludeÄ,“ÊPreambleÄ,“or‘ÐÊStringÄ.Ž¡If–¦Ðthey“folloš¸ãw“an“Ê@“Äc˜haracter,‘»/they“are“iden˜ti ed“asŽ¡spGecial–Rætok¸ãens;‘© otherwise,‘†–they“are“regarded“as“stringŽ¡abbreviation‘UUnames.ŽŸÊ[Cc][Oo][Mm][Mm][Ee][Nn][Tt]‘?ý\Ž¡‘ÿôRETURN–?ý((last_token“==“TOKEN_AT)“?Ž¡‘D?Ùout_token(TOKEN_COMMENT)‘?ý:Ž¡‘D?Ùout_token(TOKEN_ABBREV));Ž©[Ii][Nn][Cc][Ll][Uu][Dd][Ee]/{S}{O}‘?ý\Ž¡‘ÿôRETURN–?ý((last_token“==“TOKEN_AT)“?Ž¡‘)ÿèout_token(TOKEN_INCLUDE)‘?ý:Ž¡‘)ÿèout_token(TOKEN_ABBREV));ަ[Pp][Rr][Ee][Aa][Mm][Bb][Ll][Ee]/{S}{O}‘?ý\Ž¡‘ÿôRETURN–?ý((last_token“==“TOKEN_AT)“?Ž¡‘)ÿèout_token(TOKEN_PREAMBLE)‘?ý:Ž¡‘)ÿèout_token(TOKEN_ABBREV));ަ[Ss][Tt][Rr][Ii][Nn][Gg]/{S}{O}‘?ý\Ž¡‘ÿôRETURN–?ý((last_token“==“TOKEN_AT)“?Ž¡‘)ÿèout_token(TOKEN_STRING)‘?ý:Ž¡‘)ÿèout_token(TOKEN_ABBREV));ŽŸ‘ÄAlthough–{¸Êlex“ÄsuppGorts“examination“of“trail-Ž¡ing–ñÄconš¸ãtext“in“order“to“iden˜tify“tok˜ens“more“pre-Ž¡cisely‘ÿ*ª,‘Ü/the–Á7presence“of“arbitrary“whitespace“and“in-Ž¡line–I commenš¸ãts“in“this“grammar“mak˜es“it“impGossibleŽ¡to–´#use“this“feature.‘Ž1The“output“routines“remem¸ãbGerŽŽŽ ý‚’óthe–õ3last“non-space,‘*non-commenš¸ãt“tok˜en“seen“in“or-ޤ ’óder–òzto“makš¸ãe“use“of“leading“con˜text“to“assist“in“tok˜enŽ¡’óiden¸ãti cation.ŽŸ’óÉAbbreviation,–Õ9enš®9try‘ÿ «,“ eld,“and“k˜ey“tok˜ensŽŸ’óÄSev•¸ãeral›?tok“en˜t“ypGes˜are˜recognized˜b“y˜a˜matc“h˜withŽ¡’óthe–míname“macro,‘´ÊNÄ.“Since“the“same“set“of“c¸ãharac-Ž¡’óters–ncan“oGccur“in“abbreviations,›N4en¸ãtry“names,˜ eldŽ¡’ónames,›!-and–#k¸ãey“names,˜wš¸ãe“ha˜v˜e“to“use“the“record“ofŽ¡’óleading–:conš¸ãtext“to“distinguish“bGet˜w˜een“the“v‘ÿqÇariousŽ¡’ópGossibilities.Ž©UU’óÊ{N}‘?ý{Ž¡’¿ëif–?ý(last_object“==“TOKEN_STRING)Ž¡’,¿ßRETURN(out_token(TOKEN_ABBREV));Ž¡’¿ëswitch‘?ý(last_token)Ž¡’¿ë{Ž¡’¿ëcase‘?ýTOKEN_COMMA:Ž¡’,¿ßRETURN(out_token(TOKEN_FIELD));Ž¡’¿ëcase‘?ýTOKEN_LBRACE:Ž¡’,¿ßRETURN(out_token(TOKEN_KEY));Ž¡’¿ëcase‘?ýTOKEN_AT:Ž¡’,¿ßRETURN(out_token(TOKEN_ENTRY));Ž¡’¿ëdefault:Ž¡’,¿ßRETURN(out_token(TOKEN_ABBREV));Ž¡’¿ë}Ž¡’ÿô}ަ’ÄIn–ƒsthe“ev•¸ãen“t–ƒsof“errors“in“the“input“stream,‘ŽûthisŽ¡’óidenš¸ãti cation–ÅQof“tok˜en“t˜ypGes“ma˜y“bGe“unreliable;‘õRsuc˜hŽ¡’óerrors–û‹will“bGe“detected“later“in“the“parsing“program.ŽŸ’óÉDigit‘Õ9stringŽŸ’óÄA‘#"Çdigit‘Qnstring‘ÔÄis–#Wan“undelimited“v‘ÿqÇalue“string.‘ÛÍTheŽ¡’óoutput–Ž3function“will“supply“the“missing“quotationŽ¡’ómark–…—delimiters,‘‘§so“that“all“strings“tak¸ãe“a“standardŽ¡’óform.ަ’óÊ[0-9]+‘ÿôRETURN–?ý(out_protected_string(“\Ž¡’ÿôTOKEN_VALUE));ŽŸUU’óÉIn-line–Õ9commenš®9t“tok˜enŽŸ’óÄA‘ôšpGercen¸ãt–õinitiates“an“Çin-line‘Vc‘ÿ}'omment‘çÞÄthat“con-Ž¡’ótinš¸ãues–/¢to“the“end“of“line“and“then“o˜v˜er“all“leadingŽ¡’óhorizon¸ãtal–UUspace“on“the“next“line.ަ’óÊ[%].*[\n]{S}‘?ý\Ž¡’ÿôRETURN‘?ý(out_token(TOKEN_INLINE));ަ’ÄBecause–Ìothis“pattern“marks“the“start“of“a“newŽ¡’ótokš¸ãen,‘—Äthe–WHprevious“tok˜en“has“already“bGeen“termi-Ž¡’ónated.‘µ:Thš¸ãus,‘±oan–kÑline-line“commen˜t“Çc‘ÿ}'annot‘^©Äsplit“aŽ¡’ótok¸ãen.‘rThe–Ž9same“is“true“for“T‘þU>Ÿ'EŽ‘ãxX“macros,‘ÜqthoughŽ¡’ónot–UUfor“ordinary“T‘þU>Ÿ'EŽ‘ãxX“text.ŽŸ’óÉString–Õ9concatenation“tok®9enŽŸ’óÄA›ô1sharp–ôJsign“is“the“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX˜Çstring›: c–ÿ}'onc“atenation˜op-Ž¡’óer‘ÿ}'atorÄ.ŽŽŽŽŽŽŒ‹™0G ¨ ýF ¬ŽÄTUGbGoat,–UUV‘ÿ*ªolume“14“(1993),“No.“4’)§409ŽŽ œ ý‚Ê[#]‘ÿôRETURN‘?ý(out_token(TOKEN_SHARP));ŽŸÉDelimited–Õ9string“tok®9enŽ©ÄA–UUquotation“mark“initiates“a“Çdelimite‘ÿ}'d‘“çstringÄ.ޤÊ["]‘ÿôRETURN‘?ý(out_string());Ž¡‘ÄThe–Ôocomplete“string“mš¸ãust“bGe“collected“b˜y“the“Cޤ function–EZÊout_string()“ÄbGecause“regular“expressionsŽ¡cannot–UUcoun¸ãt“balanced“delimiters.Ž¡‘B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX's–;quoted“string“syn¸ãtax“is“a“little“un-Ž¡usual,‘÷÷in–à that“an“emš¸ãbGedded“quote“is“not“represen˜tedŽ¡b¸ãy–+×double“quotes,›4$as“in“F‘ÿ*ªortran,˜or“b¸ãy“an“escapGe“se-Ž¡quence,‘ „as–³áin“C,“but“rather“b¸ãy“putting“the“quoteŽ¡c¸ãharacter–UUin“braces.ŽŸÉBrace‘Õ9tok®9ensަÄLeft–‹ôand“righš¸ãt“Çbr–ÿ}'ac“es‘^Äare–‹ôrecognized“as“single“tok˜ens.ޤÊ[{]‘ÿôRETURN‘?ý(out_lbrace());ŽŸ[}]‘ÿôRETURN‘?ý(out_rbrace());Ž¡‘ÄThe–Zfoutput“functions“kš¸ãeep“trac˜k“of“the“curren˜tޤ brace–älevš¸ãel“to“distinguish“bGet˜w˜een“outer“braces“de-Ž¡limiting–±a“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘en¸ãtry‘ÿ*ª,‘Iˆand“inner“braces“delimit-Ž¡ing–qËa“string“v‘ÿqÇalue,‘¸èand“return“ÊTOKEN_LBRACEÄ,“ÊTO-Ž¡KEN_LITERALÄ,–ªÄÊTOKEN_RBRACEÄ,“or“ÊTOKEN_STRINGÄ,“de-Ž¡pGending–UUon“preceding“con¸ãtext.Ž¡‘ÊTOKEN_LITERAL‘P Äis–PNused“for“the“argumen¸ãt“of“aŽ¡ÊComment–…iÄand“ÊInclude“Äenš¸ãtries,‘‘mand“con˜tains“the“de-Ž¡limiting‘UUbraces.ŽŸÉP•®9aren“thesis‘Õ9tok“ensަÄIn–Žorder“to“simplify“the“parser“grammar,‘Šw¸ãe“remapŽ¡outer›UìÇp–ÿ}'ar“entheses‘( Ädelimiting˜argumen¸ãts˜of˜B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxXŽ¡enš¸ãtries–~Ùto“Çbr–ÿ}'ac“esÄ.‘îRHo˜w˜ev˜er,‘É9if–~Ùthe“paren˜theses“areŽ¡not– …preceded“bš¸ãy“a“v‘ÿqÇalid“en˜try“name,‘9they“are“out-Ž¡put–j©instead“as“single-cš¸ãharacter“tok˜ens“of“t˜ypGe“ÊTO-Ž¡KEN_LITERALÄ.–’KThey“cannot“legally“oGccur“in“this“con-Ž¡text,‘”but–ãthat“error“will“bGe“detected“during“the“pars-Ž¡ing–ó€stage.‘LIDuring“lexical“analysis,‘ wš¸ãe“do“not“w˜an˜tŽ¡to›UUha•¸ãv“e˜an“y˜error˜conditions.ޤÊ[(]‘ÿôRETURN‘?ý(out_lparen());ŽŸ[)]‘ÿôRETURN‘?ý(out_rparen());Ž¡‘ÄT‘ÿ*ªo–šsuppGort“ëNScribeÄ,‘!Œwš¸ãe“w˜ould“need“to“add“pat-ޤ terns–UUfor“other“delimiters“here.ŽŸÉAssignmenš®9t–Õ9and“separator“tok˜ensަÄThe›[lÇassignment‘™op–ÿ}'er“ator‘nùÄand˜Çassignment‘™sep“ar“atorŽ¡Äare–UUreturned“as“single“tok¸ãens.ŽŸÊ[=]‘ÿôRETURN‘?ý(out_token(TOKEN_EQUALS));ŽŸ[,]‘ÿôRETURN‘?ý(out_token(TOKEN_COMMA));ŽŽŽ ý‚’óÉNewline‘Õ9tok®9enŽ©’óÄA‘úyÇnew‘‚Øline‘ºÿÄis–ú¤returned“as“a“separate“tok¸ãen“bGecauseޤ ’ów•¸ãe›Rôw“an“t˜to˜bGe˜able˜to˜preserv“e˜line˜bGoundaries˜soŽ¡’óthat–ßú lter“tošGols“that“mak¸ãe“minimal“p˜erturbationsŽ¡’óon–UUthe“input“stream“can“bGe“constructed.ŽŸ’óÊ[\n]‘ÿôRETURN‘?ý(out_token(TOKEN_NEWLINE));ŽŸ’óÉHorizonš®9tal–Õ9space“tok˜enަ’óÄConsecutiv•¸ãe›E­horizon“tal˜space˜c“haracters˜are˜re-Ž¡’óturned–…as“a“single“space“tok¸ãen,‘ŸPfor“the“same“reasonŽ¡’óthat–g›newlines“are“recognized“as“distinct“tokš¸ãens“b˜yŽ¡’óthe–UUpreceding“rule.ŽŸ’óÊ{W}+‘ÿôRETURN‘?ý(out_token(TOKEN_SPACE));ŽŸ’óÉUnclassi able‘Õ9tok®9ensަ’óÄFinally‘ÿ*ª,‘æw•¸ãe›„üha“v“e˜a˜catc“h-all˜rule:‘Ñan“y˜c“haracter˜notŽ¡’órecognized–2¨b¸ãy“one“of“the“preceding“rules“is“returnedŽ¡’óas–ßa“literal“single-cš¸ãharacter“tok˜en,‘rand“will“causeŽ¡’óan–5Perror“during“the“parsing.‘gThe“regular-expressionŽ¡’óc¸ãharacter››>p•Gerio“d˜matc•¸ãhes˜an“ything˜but˜a˜newline,Ž¡’óand–UUwš¸ãe“already“ha˜v˜e“a“rule“for“newline.ŽŸ’óÊ.‘ÿôRETURN‘?ý(out_token(TOKEN_LITERAL));ŽŸ’óÉLexical–Õ9grammar“summaryަ’óÄW‘ÿ*ªe–&—noš¸ãw“ha˜v˜e“a“complete“lexical“grammar“suitableŽ¡’ófor–€áÊlex“Äthat“can“complete“tok¸ãenize“an“arbitrary“in-Ž¡’óput–¤¹stream“conš¸ãtaining“an˜y“c˜haracter“v‘ÿqÇalues“what-Ž¡’óev¸ãer.Ž¡’The–ˆJassošGciated“C‘ˆ=co˜de“functions“normalize“en-Ž¡’ótries–ûbš¸ãy“c˜hanging“outer“paren˜theses“to“braces,‘@braceŽ¡’óstring–Úodelimiters“to“quotes,‘;µand“undelimited“digitŽ¡’óstrings–UUto“quoted“strings.Ž¡’All–string“tokš¸ãens“of“t˜ypGe“ÊTOKEN_VALUE‘ëÄoutputŽ¡’óbš¸ãy–¥¿the“lexer“will“con˜tain“surrounding“quotes,‘ùÙandŽ¡’óan¸ãy–¾{nested“quotes“will“bšGe“braced,‘ØÄwith“prop˜er“careŽ¡’ótakš¸ãen–:éto“handle“Ê\"“Äaccen˜t“con˜trol“sequences“prop-Ž¡’óerly‘ÿ*ª.Ž¡’All–uRspGecial“c¸ãharacters“inside“the“quoted“stringsŽ¡’ówill–>bGe“represenš¸ãted“b˜y“the“escapGe“sequences“giv˜enŽ¡’óin–ûíT‘ÿ*ªable“2“on“page“401.‘eTh•¸ãus,‘%“ev“en–ûíwith“a“binaryŽ¡’óinput–nQstream,‘´the“output“of“the“lexer“will“con¸ãtainŽ¡’óonly–UUprinš¸ãtable“c˜haracters.Ž¡’It–‰zmš¸ãust“bGe“observ˜ed“that“Êlex“Äis“not“capable“ofŽ¡’óhandling–7Wall“256“8-bit“c¸ãharacters.‘ÌIn“particular,‘o×itŽ¡’ótreats–†tan“ASCIGI–†&NUL“(Ê\0Ä)–†tin“a“string“as“an“end-Ž¡’óof- le–^·condition.‘íOlder“v¸ãersions“of“Êlex“Äare“not“Ç8-Ž¡’óbit‘럌EŽ‘ãxXŽ©T‘ÿ*ªo–K\complete“the“job,‘ˆÞI‘Kwrote“a“Êyacc“Ägrammar“forޤ B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX.–F?This“wš¸ãas“considerably“more“w˜ork“than“theŽ¡Êlex–**Ägrammar,‘_`mostly“due“to“mš¸ãy“relativ˜e“inexpGeri-Ž¡ence–ÔÔwith“writing“LALR(1)“grammars,‘ô³and“it“toGokŽ¡sev•¸ãeral›…da“ys˜to˜understand˜the˜proGcess˜w“ell˜enoughŽ¡to–2ñeliminate“the“grammatical“am¸ãbiguities“that“ini-Ž¡tially–UUplagued“me.Ž¡‘The–œp nal“complete“Êyacc“Äprogram“is“abGout“270Ž¡lines–]long,‘J_and“proGduces“a“parser“of“760“(ÊyaccÄ)“toŽ¡1000–›I(ÊbisonÄ)“lines,‘¬Æexcluding“the“lexer.‘C¤The“gram-Ž¡mar–YÙcon¸ãtains“just“35“rules.‘TT‘ÿ*ªen“of“these“rules“couldŽ¡bGe–´#eliminated“if“w¸ãe“arranged“for“the“lexer“to“dis-Ž¡card–Ù3space“and“in-line“commenš¸ãts,‘ú*but“for“a“prett˜y-Ž¡prinš¸ãter–í/and“other“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘ítoGols,‘%they“m˜ust“bGe“pre-Ž¡serv¸ãed.‘ñÉThis–€parsing“program“is“called“ÊbibparseÄ;Ž¡it–÷Ocan“bGe“used“with“the“output“of“either“ÊbibcleanŽ¡-no-prettyprintÄ,–UUor“ÊbiblexÄ.Ž¡‘The–1öcomplete“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘1ígrammar“is“givš¸ãen“bGelo˜w,Ž¡expressed–ß as“Êyacc“Ärules,‘3again“in“literate“program-Ž¡ming–iÌstš¸ãyle.‘#EIt“m˜ust“bGe“augmen˜ted“b˜y“abGout“180“linesŽ¡of–UUC“coGde“to“proš¸ãvide“a“w˜orking“parser.ŽŸÉFile‘Õ9structureަÄA–UUÊyacc“Ä le“has“this“general“structure:Ž©ÊdeclarationsŽ¡%%Ž¡rulesŽ¡%%Ž¡user‘?ýfunctionsަ‘ÄC‘¹ùdeclarations–ºand“de nitions“can“bGe“includedŽ¡in–CŒthe“declarations“part“if“they“are“enclosed“in“Ê%{“ÄandŽ¡Ê%}Ä.‘R4Sucš¸ãh–öštext“is“copied“v˜erbatim“to“the“output“coGdeŽ¡ le,‘B[together–ôwith“additional“ÊyaccÄ-supplied“headerŽ¡coGde.Ž¡‘Running–ÊHÊyacc“Äon“this“ le“proGduces“a“C‘Ê% le“thatŽ¡can–«ŠbGe“compiled“and“link¸ãed“with“the“lexical“analyzerŽ¡cošGde–UUto“pro˜duce“a“w¸ãorking“parser.Ž¡‘In–Ðthe“folloš¸ãwing“subsections,‘s/w˜e“describGe“theŽ¡con•¸ãten“ts–Raof“the“declarations“and“rules“parts,‘Ñ£butŽ¡omit–,othe“declaration“C‘,ecoGde“and“the“user“functions,Ž¡since–TMthey“are“not“relev‘ÿqÇan¸ãt“to“understanding“theŽ¡grammar.ŽŸÉF‘ÿ «ormat–Õ9of“grammar“rulesŽŸÄThe–sÌgrammar“rules“will“bGe“presenš¸ãted“in“top-do˜wnŽ¡order,›ó˜from–Óñmost“general,˜to“most“particular,˜sinceŽ¡this–>‘seems“to“bšGe“the“b˜est“w•¸ãa“y–>‘to“understand“the“o•¸ãv“er-Ž¡all–¢÷structure“of“the“grammar,‘¶`and“to“ensure“that“itŽ¡describGes–iýcurren¸ãt“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘i÷usage,‘o'plus“our“suggestedŽ¡extensions–UUand“clari cations.Ž¡‘The–Zcolon“in“a“grammar“rule“should“bGe“read“\is"Ž¡or›Õµ\pro•Gduces",‘õÍb“ecause˜the˜rule˜is˜also˜kno¸ãwn˜as˜aŽŽŽ ý‚’óÇpr–ÿ}'o“ductionÄ.‘ .MA‘évš¸ãertical–é‚bar“separates“alternativ˜es,ޤ ’óand–Þ•can“bGe“read“\or".‘ †A‘Þqsemicolon“terminates“theŽ¡’órule.Ž¡’Lo•¸ãw“er-case–c‘letters“are“used“for“Çnon-terminalsÄ,Ž¡’ówhic¸ãh–ã‹are“names“of“rules“in“the“parser“grammar.Ž¡’óUppGer-case–--letters“are“used“for“ÇterminalsÄ,‘55whic¸ãh“areŽ¡’ónames–UUof“tokš¸ãens“recognized“b˜y“the“lexer.Ž¡’The–Vuspacing“shoš¸ãwn“is“arbitrary‘ÿ*ª,‘Ö½but“con˜v˜en-Ž¡’ótional–| for“Êyacc“Ägrammars:‘¿4eac¸ãh“rule“starts“a“newŽ¡’óline,‘~*with–H_the“righš¸ãt-hand“side“inden˜ted“from“the“mar-Ž¡’ógin,–UUand“the“semicolon“oGccupies“a“separate“line.ŽŸ’óÉT‘ÿ «ok®9en‘Õ9declarationsŽ©’óÄThe–â!Ê%token“Ädeclarations“merely“proš¸ãvide“sym˜bGolicŽ¡’ónames–,ofor“the“inš¸ãteger“tok˜en“t˜ypGes“returned“b˜y“theŽ¡’ólexer.‘´¡The–Àóv‘ÿqÇalues“are“arbitrary‘ÿ*ª,‘Úexcept“that“theyŽ¡’ómš¸ãust–Fexceed“257,‘|µand“m˜ust“agree“with“the“de nitionsŽ¡’óin–'Ðthe“lexer“coGde.‘é8W‘ÿ*ªe“simply“incremenš¸ãt“the“tok˜enŽ¡’ótš¸ãypGes–;0output“from“Êbibclean“Äb˜y“1000,‘@kmatc˜hing“theŽ¡’óo set–UUadded“in“the“ÊRETURN“Ämacro“in“the“lexer.ŽŸ’óÊ%token‘?ýTOKEN_ABBREV‘?ñ1001Ž¡’ó%token‘?ýTOKEN_AT‘/?å1002Ž¡’ó%token‘?ýTOKEN_COMMA‘î1003Ž¡’ó%token‘?ýTOKEN_COMMENT‘ÿô1004Ž¡’ó%token‘?ýTOKEN_ENTRY‘î1005Ž¡’ó%token‘?ýTOKEN_EQUALS‘?ñ1006Ž¡’ó%token‘?ýTOKEN_FIELD‘î1007Ž¡’ó%token‘?ýTOKEN_INCLUDE‘ÿô1008Ž¡’ó%token‘?ýTOKEN_INLINE‘?ñ1009Ž¡’ó%token‘?ýTOKEN_KEY‘)ÿè1010Ž¡’ó%token‘?ýTOKEN_LBRACE‘?ñ1011Ž¡’ó%token‘?ýTOKEN_LITERAL‘ÿô1012Ž¡’ó%token‘?ýTOKEN_NEWLINE‘ÿô1013Ž¡’ó%token‘?ýTOKEN_PREAMBLE‘¿÷1014Ž¡’ó%token‘?ýTOKEN_RBRACE‘?ñ1015Ž¡’ó%token‘?ýTOKEN_SHARP‘î1016Ž¡’ó%token‘?ýTOKEN_SPACE‘î1017Ž¡’ó%token‘?ýTOKEN_STRING‘?ñ1018Ž¡’ó%token‘?ýTOKEN_VALUE‘î1019ŽŸ’óÉPrecedence‘Õ9declarationsަ’óÄThe–­„Ê%nonassoc“Ädeclaration“makš¸ães“the“assignmen˜tŽ¡’óop•Gerator›jnon-asso“ciativ¸ãe,‘Ooso˜input˜of˜the˜form˜Êa‘?ý=Ž¡’ób–?ý=“c–UUÄis“illegal.ޤ’óÊ%nonassoc‘?ýTOKEN_EQUALSŽ¡’ÄThe–™¾ rst“Ê%left“Ädeclaration“mak¸ães“space,‘¿Cin-lineޤ ’ócommenš¸ãt,‘´ÿand–Œénewline“tok˜ens“left“assoGciativ˜e,‘´ÿand“ofŽ¡’óequal‘UUprecedence.ŽŸ’óÊ%left–?ýTOKEN_SPACE“TOKEN_INLINE“\Ž¡’îTOKEN_NEWLINEŽŽŽŽŽŽŒ‹›Xß ¨ ýF ¬ŽÄTUGbGoat,–UUV‘ÿ*ªolume“14“(1993),“No.“4’)§411ŽŽ œ ý‚‘The–S$second“Ê%left“Ädeclaration“mak¸ães“the“B‘ÿþëNi¹Db‘ÿ32Ä-ޤ T‘þU>ŸŒEŽ‘ãxX‘™string–™,concatenation“c¸ãharacter,–ª"Ê#Ä,“left‘™,assoGcia-Ž¡tiv¸ãe,›Ìand–ÃNof“higher“precedence“than“space,˜in-lineŽ¡commen¸ãt,–UUand“newline.ޤÊ%left‘?ýTOKEN_SHARPŽ¡‘ÄThese–Ÿýprecedence“settings“are“crucial“for“resolv-ޤ ing–™Äcon icts“in“this“grammar“whic¸ãh“arise“in“assign-Ž¡menš¸ãts–ÅSwhen“the“parser“has“seen“an“assignmen˜t“op-Ž¡erator–äUand“a“v‘ÿqÇalue.‘ ÈWithout“the“opGerator“prece-Ž¡dences,‘#Šit–Çcannot“decide“whether“to“complete“theŽ¡assignmen¸ãt,‘cSor–`†to“read“ahead“loGoking“for“a“concate-Ž¡nation‘UUopGerator.ŽŸB‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘Õ9É leŽŸÄThe–=QbGeginning“of“the“grammar“rules“is“indicated“b¸ãyŽ¡a–UUpair“of“pGercenš¸ãt“c˜haracters.ޤÊ%%Ž¡‘ÄThe–´o rst“rule“de nes“what“w¸ãe“are“going“toޤ parse,–¼namely‘ÿ*ª,“a–§zB‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘ßfÇ leÄ.‘h5The“left-hand“side“ofŽ¡the–Ž“ rst“rule“is“kno¸ãwn“as“the“grammar's“Çstart‘Èsym-Ž¡b‘ÿ}'olÄ.Ž©Êbibtex_file:Ž¡‘)ÿèopt_spaceŽ¡‘î|–?ýopt_space“object_list“opt_spaceŽ¡‘î;ަ‘ÄThis–žarule“saš¸ãys“that“a“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘ž2 le“con˜tains“eitherŽ¡optional–¹space,‘µ¥or“optional“space“follo•¸ãw“ed›¹b“y˜a˜list˜ofŽ¡ob‘Ž8jects›ïüfollo•¸ãw“ed˜b“y˜optional˜space.‘A½This˜de nitionŽ¡pšGermits–ºa“ le“to“b˜e“emptš¸ãy‘ÿ*ª,‘4or“con˜tain“only“spaceŽ¡tokš¸ãens,–UUor“ha˜v˜e“leading“and“trailing“space.ŽŸÉOb‘£Žject‘Õ9listsŽŸÄA‘V¦Çlist–€ßof“obje‘ÿ}'cts‘) Äis–Vèeither“a“single“ob‘Ž8ject,‘—Mor“a“listŽ¡of–˜ÿsucš¸ãh“ob‘Ž8jects,‘ééseparated“b˜y“optional“space“fromŽ¡another‘UUob‘Ž8ject.ަÊobject_list:Ž¡‘)ÿèobjectŽ¡‘î|–?ýobject_list“opt_space“objectŽ¡‘î;ަ‘ÄF‘ÿ*ªor–²ÇLL(1)“parsers,‘Š"usually“implemenš¸ãted“b˜yŽ¡hand-coGded– recursivš¸ãe“descen˜t“programs,‘o¸this“kindŽ¡of–]rleft-recursivš¸ãe“rule“m˜ust“bGe“rewritten“b˜y“standardŽ¡methoGds–M[2Ž‘,›&épp.“47{48,˜176{178]“to“a•¸ãv“oid–Man“in niteŽ¡loGop–£in“the“parser.‘6XIn“this“rule,‘ưwš¸ãe“w˜ould“instead“de-Ž¡ ne–ewa“list“as“an“ob‘Ž8ject,‘i€separated“b¸ãy“optional“spaceŽ¡from–canother“list.‘›Ho•¸ãw“ev“er,‘¦Žfor–cLALR(1)“parsers,Ž¡left-recursiv¸ãe–Wûde nitions“are“preferable,‘ЧbGecause“theyŽ¡a•¸ãv“oid–UUparser“stacš¸ãk“o˜v˜er o˜w“with“long“lists.ŽŽŽ ý‚’óÉOb‘£ŽjectsŽŸ’óÄAn–è›Çobje‘ÿ}'ct‘ÛsÄis“one“of“the“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘è3Ê@nameÆfÊ...Æg“Äcon-ޤ ’óstructs.‘ÑNotice–Vqthat“wš¸ãe“allo˜w“optional“space“bGet˜w˜eenŽ¡’óthe–UUÊ@“Äand“the“ÊnameÄ.Ž©€’óÊobject:Ž¡’ÿèTOKEN_AT–?ýopt_space“at_objectŽ¡’î;ަ’ÄIn–Bthis“grammar,‘FCwš¸ãe“will“consisten˜tly“allo˜w“op-Ž¡’ótional–$¾space“bGet•¸ãw“een–$¾Çany‘;Äpair“of“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘$Gtok¸ãens;Ž¡’óspace–ÙFis“describšGed“more“precisely“b˜elo¸ãw.‘ý›This“con-Ž¡’óv•¸ãen“tion–à is“easy“to“rememš¸ãbGer,‘÷÷and“easy“to“implemen˜tŽ¡’óin–UUthe“grammar“rules.Ž¡’While–Çäit“w¸ãould“bšGe“p˜ossible“to“include“the“Ê@“ÄasŽ¡’ópart–¶3of“the“ÊnameÄ,‘Îjmaking“Ê@name“Äa“single“lexical“to-Ž¡’ók¸ãen,‘ÛNbšGoth–PB‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘Œÿand“ëNScribe“Äp˜ermit“in•¸ãterv“eningŽ¡’óspace,‘”\so–TŽwš¸ãe“cannot“collapse“the“t˜w˜o“in˜to“a“singleŽ¡’ótok¸ãen.ŽŸ’óÉEn•®9try›Õ9t“ypQÇes˜and˜error˜reco“v“eryŽŸ’óÄHere–Ö7are“the“pGossibilities“for“the“Êname“Äfollo¸ãwing“anŽ¡’óÊ@Ä,–UUwhicš¸ãh“w˜e“call“an“Êat_objectÄ.ަ’óÊat_object:Ž¡’ÿècommentŽ¡’î|‘?ýentryŽ¡’î|‘?ýincludeŽ¡’î|‘?ýpreambleŽ¡’î|‘?ýstringŽ¡’î|–?ýerror“TOKEN_RBRACEŽ¡’î;ަ’CommentÄ,–YÊIncludeÄ,“ÊPreambleÄ,“and–LZÊString“Äm¸ãustŽ¡’óbšGe–SIhandled“separately“from“other“t¸ãyp˜es“of“en¸ãtries,Ž¡’ólik¸ãe–ä‹ÊArticle“Äand“ÊBookÄ,‘YbGecause“their“braced“argu-Ž¡’ómen•¸ãts›UUha“v“e˜a˜di eren“t˜syn“tax.Ž¡’The–7ÿrule“with“Êerror“Äis“a“spšGecial“one“supp˜ortedŽ¡’óbš¸ãy–:2Êyacc“Äand“ÊbisonÄ.‘ ^It“sa˜ys“that“if“an“Êat_objectŽ¡’óÄcannot–K‹bGe“recognized“at“the“curren¸ãt“state“of“theŽ¡’óparse,‘û¬then–§5the“input“should“bGe“discarded“un¸ãtil“aŽ¡’órigh¸ãt–Ûbrace“is“found.‘4ŸAn“error“message“will“bGe“issuedŽ¡’ówhen–çthis“happšGens,‘° but“reco•¸ãv“ery–çwill“b˜e“attemptedŽ¡’ófolloš¸ãwing–žÍthat“righ˜t“brace.‘N/Without“this“error“han-Ž¡’ódling,‘$ôan¸ãy–È;input“error“will“immediately“terminateŽ¡’óthe–UUparser,“hardly“a“user-friendly“thing“to“do.Ž¡’This–Â]is“the“only“place“where“w¸ãe“will“attempt“er-Ž¡’óror–l˜repair,‘›$although“w¸ãe“could“certainly“do“so“in“otherŽ¡’órules,‘ü…sucš¸ãh–§âas“in“the“assignmen˜t“rule“bGelo˜w.‘inTheŽ¡’ógoal–¦6here“is“to“presen¸ãt“a“rigorous“complete“gram-Ž¡’ómar,‘Ocwithout–Mæadditional“em•¸ãbGellishmen“ts–Mæthat“w¸ãouldŽ¡’ócomplicate‘UUunderstanding.ŽŸ’óÉCommen•®9t‘Õ9en“tryŽŸ’óÄA–¶AB‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX“Ê@CommentÆfÊ...Æg–¶iÄis“spGecial“in“that“the“onlyŽ¡’órequiremenš¸ãt–^on“the“argumen˜t“is“that“delimiters“bGeŽ¡’óbalanced.‘KThe–â¥lexer“returns“the“delimited“argumen¸ãtŽŽŽŽŽŽŒ‹œmÉ ¨ ýF ¬ŽÄ412’)§TUGbGoat,–UUV‘ÿ*ªolume“14“(1993),“No.“4ŽŽ œ ý‚as–¿@a“single“literal“string,‘ºincluding“the“delimiters,ޤ and–UUstandardizes“the“delimiters“to“braces.Ž©Êcomment:Ž¡‘)ÿèTOKEN_COMMENT‘?ýopt_spaceŽ¡‘>ÿÜTOKEN_LITERALŽ¡‘î;ŽŸÉBibliograph•®9y‘Õ9en“tryŽŸÄA–/B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX“Çbiblio–ÿ}'gr“aphy‘p¹entry–/Äis“braced“text“con¸ãtain-Ž¡ing–‚a“citation“k¸ãey‘ÿ*ª,›Í1a“comma,˜and“a“list“of“assign-Ž¡menš¸ãts.‘ (DThe–çrules“pro˜vide“for“an“optional“assign-Ž¡men¸ãt–½list,‘MWand“for“an“optional“trailing“comma.‘ÄÿT‘ÿ*ªoŽ¡shorten–Ðèthe“rules,‘/Ìwš¸ãe“in˜troGduce“a“subsidiary“rule,Ž¡Êentry_headÄ,–UUto“represen¸ãt“their“common“pre x.ަÊentry:‘ úentry_headŽ¡‘IÖassignment_listŽ¡‘IÖTOKEN_RBRACEŽ¡‘î|‘?ýentry_headŽ¡‘IÖassignment_listŽ¡‘IÖTOKEN_COMMA‘?ýopt_spaceŽ¡‘IÖTOKEN_RBRACEŽ¡‘î|–?ýentry_head“TOKEN_RBRACEŽ¡‘î;ŽŸentry_head:Ž¡‘)ÿèTOKEN_ENTRY‘?ýopt_spaceŽ¡‘IÖTOKEN_LBRACE‘?ýopt_spaceŽ¡‘IÖkey_name‘?ýopt_spaceŽ¡‘IÖTOKEN_COMMA‘?ýopt_spaceŽ¡‘î;ަ‘ÄThere–Mis“no“Êopt_space“Äitem“follo¸ãwing“Êassign-Ž¡ment_list–b‹ÄbGecause“it“is“included“in“the“de nitionŽ¡of–÷uthe“latter.‘X'This“infelicit¸ãy“seems“to“bGe“necessaryŽ¡to–ê¦obtain“a“grammar“that“conforms“to“the“LALR(1)Ž¡requiremen¸ãts–UUof“Êyacc“Äand“ÊbisonÄ.ŽŸÉKey‘Õ9nameŽŸÄBecause–^Íof“in•¸ãterv“ening–^Ínewlines“and“in-line“com-Ž¡menš¸ãts,‘Ë[the–³Álexical“analyzer“cannot“alw˜a˜ys“correctlyŽ¡recognize–¿Œa“Çcitation‘á$key‘¢ Äfrom“trailing“con¸ãtext.‘°lItŽ¡mighš¸ãt–5instead“erroneously“iden˜tify“the“tok˜en“as“anŽ¡abbreviation.‘8#W‘ÿ*ªe–¨gtherefore“need“to“accoun¸ãt“for“bGothŽ¡pGossibilities:ަÊkey_name:Ž¡‘)ÿèTOKEN_KEYŽ¡‘î|‘?ýTOKEN_ABBREVŽ¡‘î;ŽŸInclude‘Õ9Éen®9tryŽŸÄThe–”‹ÊInclude“Äenš¸ãtry“is“follo˜w˜ed“b˜y“a“ le“name“en-Ž¡closed–UUin“balanced“braces.ަÊinclude:ŽŽŽ ý‚’ÿèTOKEN_INCLUDE‘?ýopt_spaceޤ ’1ÿÜTOKEN_LITERALŽ¡’î;Ž©’ÄBecause–•Q le“names“are“opšGerating-system“dep˜en-Ž¡’óden¸ãt,‘é]the–Î_only“restrictions“that“are“placed“on“the“ leŽ¡’óname–<ðare“that“it“cannot“conš¸ãtain“un˜balanced“braces,Ž¡’óand–Šthat“it“cannot“con¸ãtain“leading“or“trailing“space.Ž¡’óHo•¸ãw“ev“er,‘rithe–l˜ le“name“can“ha•¸ãv“e›l˜em“bGedded˜space˜ifŽ¡’óthe–UUopšGerating“system“p˜ermits.Ž¡’B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘zshould–z¢discard“the“delimiting“bracesŽ¡’óand–­Àsurrounding“space“in“the“ÊTOKEN_LITERAL‘­•Äto“iso-Ž¡’ólate–ç7the“ le“name.‘MIt“should“searc¸ãh“for“this“ le“in“itsŽ¡’óstandard–0õinput“path,‘8;so“that“the“ le“name“need“notŽ¡’ócon¸ãtain–´ían“absolute“directory“path.‘This“feature“isŽ¡’ónot–ç¨suppGorted“in“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘çƒ0.99c,‘ =but“Êbibclean“ÄandŽ¡’óthe– §lexer“and“parser“recognize“it“in“an¸ãticipation“ofŽ¡’óits›UUev•¸ãen“tual˜incorpGoration.ŽŸ’óÊPreamble‘Õ9Éen®9tryŽŸ’óÄThe–ÿ'ÊPreamble“Äenš¸ãtry“argumen˜t“is“a“braced“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxXŽ¡’óstring–éív‘ÿqÇalue.‘/B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘éÇoutputs“the“argumenš¸ãt“v˜erba-Ž¡’ótim,›eŸ'EŽ‘ãxX–UUto“proGcess.ަ’óÊpreamble:Ž¡’ÿèTOKEN_PREAMBLE‘?ýopt_spaceŽ¡’1ÿÜTOKEN_LBRACE‘?ýopt_spaceŽ¡’1ÿÜvalue‘?ýopt_spaceŽ¡’1ÿÜTOKEN_RBRACEŽ¡’î;ŽŸ’óString‘Õ9Éen®9tryŽŸ’óÄThe–TrÊString“Äenš¸ãtry“argumen˜t“is“a“braced“single“as-Ž¡’ósignmen¸ãt.ަ’óÊstring:Ž¡’ÿèTOKEN_STRING‘?ýopt_spaceŽ¡’1ÿÜTOKEN_LBRACE‘?ýopt_spaceŽ¡’1ÿÜassignment‘?ýopt_spaceŽ¡’1ÿÜTOKEN_RBRACEŽ¡’î;ŽŸ’óÉV‘ÿ «alue‘Õ9stringŽŸ’óÄA–…§B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX“Çvalue‘FÄis–…´a“string,‘‘Ëwhicš¸ãh“ma˜y“bGe“a“simpleŽ¡’óv‘ÿqÇalue,‘;or–ÚRa“list“of“strings“separated“b¸ãy“the“stringŽ¡’óconcatenation‘UUopGerator.ަ’óÊvalue:‘ úsimple_valueŽ¡’î|–?ývalue“opt_spaceŽ¡’1ÿÜTOKEN_SHARP‘?ýopt_spaceŽ¡’1ÿÜsimple_valueŽ¡’î;ŽŽŽŽŽŽŒ‹‚Ê ¨ ýF ¬ŽÄTUGbGoat,–UUV‘ÿ*ªolume“14“(1993),“No.“4’)§413ŽŽ œ ý‚ÉSimple‘Õ9v‘ÿ\raluesŽŸÄA‘XÇsimple‘Ixvalue‘ÄÇÄis–leither“a“delimited“string,‘›returnedޤ b¸ãy–_œthe“lexer“as“a“ÊTOKEN_VALUEÄ,“or“a“string“abbrevi-Ž¡ation,–UUreturned“as“a“ÊTOKEN_ABBREVÄ.Ž©Êsimple_value:Ž¡‘)ÿèTOKEN_VALUEŽ¡‘î|‘?ýTOKEN_ABBREVŽ¡‘î;ަ‘ÄThe–2lexer“can“distinguish“bšGet•¸ãw“een–2these“t•¸ãw“o‘2b˜e-Ž¡cause–J¨of“the“string“delimiters.‘n8It“is“up“to“the“parserŽ¡supp•Gort›4nco“de˜to˜v¸ãerify˜that˜an˜abbreviation˜is˜actu-Ž¡ally–UUde ned“bGefore“it“is“used.ŽŸÉAssignmen®9t‘Õ9listŽŸÄThe›ä{b•Go“dy˜of˜most˜B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘äVen¸ãtries˜consists˜of˜a˜listŽ¡of–¾Eone“or“more“assignmenš¸ãts,‘Øseparated“b˜y“commas.Ž¡Notice–nthat“this“de nition“doGes“not“pro¸ãvide“for“anŽ¡optional–P’trailing“comma“after“the“last“assignmen¸ãt.Ž¡W‘ÿ*ªe–UUhandled“that“abGo•¸ãv“e–UUin“the“rules“for“ÊentryÄ.ަÊassignment_list:Ž¡‘)ÿèassignmentŽ¡‘î|‘?ýassignment_listŽ¡‘>ÿÜTOKEN_COMMA‘?ýopt_spaceŽ¡‘>ÿÜassignmentŽ¡‘î;ŽŸÉAssignmen®9tŽŸÄAn–›zÇassignment‘ŽRÄhas“a“left-hand“side“separated“fromŽ¡a–UUv‘ÿqÇalue“bš¸ãy“the“assignmen˜t“opGerator,“Ê=Ä.ަÊassignment:Ž¡‘)ÿèassignment_lhs‘?ýopt_spaceŽ¡‘>ÿÜTOKEN_EQUALS–?ýopt_space“valueŽ¡‘>ÿÜopt_spaceŽ¡‘î;ަ‘ÄT‘ÿ*ªrailing– ûoptional“space“is“included“here,‘“äandŽ¡omitted–‡ibGefore“the“comma“in“Êassignment_listÄ,‘“îinŽ¡order–j§to“allo¸ãw“the“LALR(1)“parser“to“successfullyŽ¡distinguish› bGet•¸ãw“een˜space˜bGet“w“een˜a˜v‘ÿqÇalue˜and˜aŽ¡comma,‘ÐÌand–¯ªspace“bGet•¸ãw“een–¯ªa“v‘ÿqÇalue“and“a“string“con-Ž¡catenation‘UUopGerator.Ž¡‘My–Ò§initial“vš¸ãersion“of“this“grammar“did“not“ha˜v˜eŽ¡this–«¢optional“space“item,‘5and“the“resulting“parserŽ¡pro•¸ãv“ed–Runable“to“recognize“input“in“whic¸ãh“a“spaceŽ¡separated–Xàa“v‘ÿqÇalue“from“a“comma“or“closing“brace;Ž¡it–‘ÃtošGok“quite“a“bit“of“exp˜erimen¸ãtation“to“determineŽ¡hoš¸ãw–Чto“rewrite“the“grammar“to“remo˜v˜e“this“problem.Ž¡‘The–‹‹left-hand“side“of“an“assignmen¸ãt“is“either“aŽ¡ eld–@«name,›DÍlik¸ãe“Êauthor“Äor“ÊtitleÄ,˜or“a“string“abbre-Ž¡viation–àname.‘thThe“lexer“mš¸ãust“distinguish“bGet˜w˜eenŽ¡the›tot•¸ãw“o˜b“y˜remem“bGering˜the˜last˜en“try˜t“ypGe˜seen,Ž¡bGecause–ìÊthey“are“made“up“of“exactly“the“same“set“ofŽ¡pGossible‘UUc¸ãharacters.ŽŽŽ ý‚’óÊassignment_lhs:ޤ ’ÿèTOKEN_FIELDŽ¡’î|‘?ýTOKEN_ABBREVŽ¡’î;Ž©’óÉOptional‘Õ9spaceŽŸ’óÄOptional–p space“is“either“an“empt¸ãy“string,‘v¸here“indi-Ž¡’ócated–UUbš¸ãy“the“Ê/*...*/“Äcommen˜t,“or“space.ŽŸ’óÊopt_space:Ž¡’ÿè/*–?ýempty“*/Ž¡’î|‘?ýspaceŽ¡’î;ަ’óÉSpaceŽŸ’óÇSp–ÿ}'ac“e‘^Äis–Xan“impGortan¸ãt“part“of“the“grammar.‘yÐIt“isŽ¡’óone–UUor“more“single“spaces.Ž©’óÊspace:‘ úsingle_spaceŽ¡’î|–?ýspace“single_spaceŽ¡’î;ަ’ÄW‘ÿ*ªe–n·include“space“handling“to“suppšGort“to˜ols“thatŽ¡’óproGcess–MxB‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘Mv les“and“wish“to“preserv¸ãe“the“inputŽ¡’óform.‘(XIn–ynormal“compiler“design,‘¥space“is“recognizedŽ¡’ób¸ãy–BNthe“lexer,›Fand“discarded,˜so“the“parser“nev¸ãer“hasŽ¡’óto–>ˆdeal“with“it,‘vKand“the“grammar“can“bGe“considerablyŽ¡’ósimpler.ŽŸ’óÉSingle‘Õ9spaceŽŸ’óÄThe–"˜ nal“rule“of“the“grammar“de nes“a“Çsingle‘e9sp–ÿ}'ac“eŽ¡’óÄas–µÜa“literal“space“cš¸ãharacter,‘Íþor“an“in-line“commen˜t,Ž¡’óor–UUa“literal“newline“c¸ãharacter.ަ’óÊsingle_space:Ž¡’ÿèTOKEN_SPACEŽ¡’î|‘?ýTOKEN_INLINEŽ¡’î|‘?ýTOKEN_NEWLINEŽ¡’î;ަ’ÄAlthough–Ûjw¸ãe“could“arrange“for“the“lexer“toŽ¡’ómerge–3ÊTOKEN_SPACE›2ûÄand“ÊTOKEN_NEWLINE˜Äin¸ãto“a“sin-Ž¡’ógle–ñFtokš¸ãen,‘Bthis“w˜ould“in˜terfere“with“heuristics“usedŽ¡’óbš¸ãy–‘Äa“prett˜yprin˜ter“to“detect“empt˜y“lines“inside“stringŽ¡’óv‘ÿqÇalues,‘βwhicš¸ãh–¶lare“pGossibly“indicativ˜e“of“missing“de-Ž¡’ólimiters.ŽŸ’óÉP®9arsing–Õ9grammar“summaryŽŸ’óÄW‘ÿ*ªe›Ièha•¸ãv“e˜no“w˜completed˜a˜Êyacc˜Ägrammar˜for˜B‘ÿþëNi¹Db‘ÿ32Ä-Ž¡’óT‘þU>ŸŒEŽ‘ãxX‘Õ8that–ÕYpro¸ãvides“a“rigorous“grammatical“analysisŽ¡’óof–Ñ_a“stream“of“tokš¸ãens“recognized“b˜y“the“lexers“inŽ¡’óSections–UU6“and“10.Ž¡’Notice–”"that“there“is“no“c¸ãharacter-string“proGcess-Ž¡’óing–ØÈwhatev¸ãer“in“the“parser,‘ù¥bšGecause“it“has“all“b˜eenŽ¡’ódone–¸àin“the“lexer.‘œhP¸ãarsing“opGerations“just“manipu-Ž¡’ólate–UUsmall“in¸ãteger“v‘ÿqÇalues.Ž¡’In–xthis“vš¸ãersion,‘KÁno“actions“ha˜v˜e“bGeen“suppliedŽ¡’óas–—C‘–ÞcoGde“fragmen¸ãts“in“the“Êyacc“Ägrammar.‘2[The“onlyŽŽŽŽŽŽŒ‹ž’â ¨ ýF ¬ŽÄ414’)§TUGbGoat,–UUV‘ÿ*ªolume“14“(1993),“No.“4ŽŽ œ ý‚output–µ·of“the“parser“will“bGe“the“tok¸ãen“stream“fromޤ the–ì_lexer,‘"inš¸ãterspGersed“b˜y“error“messages“when“theŽ¡input–UUfails“to“matc¸ãh“a“grammar“rule.Ž¡‘Error›²Èreco•¸ãv“ery˜has˜bGeen˜k“ept˜simple:‘ ,­inputŽ¡is–% ushed“to“the“next“closing“brace,‘Ìwhic¸ãh“is“pre-Ž¡sumably–†dthe“end“of“an“enš¸ãtry‘ÿ*ª.‘óBraces“of“t˜ypGeŽ¡ÊTOKEN_LBRACE–ˆMÄand›ˆZÊTOKEN_RBRACE“Ädo˜not˜oGccur˜ex-Ž¡cept–Çaround“apparenš¸ãt“en˜tries“in“the“lexer“output;Ž¡other–˜braces“are“returned“as“tokš¸ãens“of“t˜ypGe“ÊTOKEN_Ž¡LITERALÄ.Ž¡‘No–=Rmore“than“one“tok¸ãen“of“loGok‘ÿqÇahead“is“requiredŽ¡bš¸ãy–§µthis“grammar,‘üLalthough“the“lexer“often“loGok˜edŽ¡sev•¸ãeral›ÕQc“haracters˜ahead˜to˜examine˜trailing˜con“textŽ¡in–Åorder“to“distinguish“bGet•¸ãw“een–Åotherwise“similar“to-Ž¡k¸ãens.Ž¡‘B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘users–$should“bGe“able“to“read“this“gram-Ž¡mar–²øand“decide“whether“a“questionable“B‘ÿþëNi¹Db‘ÿ32ÄT‘þU>ŸŒEŽ‘ãxX‘²Îcon-Ž¡struct–$is“legal“or“not,‘Ìwithout“ha¸ãving“to“resort“toŽ¡soft•¸ãw“are›1ÅexpGerimen“ts˜as˜I‘1¼did˜to˜clarify˜fuzzy˜gram-Ž¡matical‘UUpGoin¸ãts.ŽŸÉ12Ž‘ÿøSoft•®9w“are‘Õ9a“v‘ÿ\railabilit“yŽŸÄThe–Gsource“cošGde“and“do˜cumen¸ãtation“for“ÊbibcleanŽ¡Äare–Qnin“the“Çpublic‘gZdomainÄ,‘Ðsin“the“in¸ãterests“of“theŽ¡widest›òÊa•¸ãv‘ÿqÇailabilit“y˜and˜greatest˜bGene t˜to˜the˜T‘þU>Ÿ'EŽ‘ãxXŽ¡comm•¸ãunit“y‘ÿ*ª.‘ Commercial›Ûmv“endors˜of˜T‘þU>Ÿ'EŽ‘ãxXw“are˜areŽ¡encouraged–Ê«to“include“Êbibclean“Äwith“their“distribu-Ž¡tions.Ž¡‘The–D¹distribution“also“includes“the“separate“com-Ž¡plete–³ôlexer“and“parser“grammar“and“coGde,‘Ô;whic¸ãh“canŽ¡b•Ge›RFpro“cessed˜b¸ãy˜Êlex˜Äor˜ÊflexÄ,‘‘‚and˜Êyacc˜Äor˜ÊbisonÄ,Ž¡respšGectiv¸ãely‘ÿ*ª.‘ã The–{Houtput“C‘züco˜de“from“these“to˜olsŽ¡is–included“so“that“recipienš¸ãts“need“not“ha˜v˜e“themŽ¡installed–ª§to“actually“compile“and“run“the“lexer“andŽ¡parser.Ž¡‘If–©Òyš¸ãou“ha˜v˜e“In˜ternet“anon˜ymous“Êftp“Äaccess,‘Ì y˜ouŽ¡can–§retrievš¸ãe“the“distribution“in“a“v‘ÿqÇariet˜y“of“arc˜hiv˜eŽ¡formats–Ù from“the“mac¸ãhine“Êftp.math.utah.edu“ÄinŽ¡the–9ídirectory“Êpub/tex/bibÄ.‘ Ma‘Ž8jor“T‘þU>Ÿ'EŽ‘ãxX“In¸ãternetŽ¡arc•¸ãhiv“e–Äphosts“around“the“wš¸ãorld“will“also“ha˜v˜e“Êbib-Ž¡cleanÄ,‘"ybut–Æ?the“author's“site“will“alw•¸ãa“ys›Æ?ha“v“e˜theŽ¡most–‡åup-to-date“vš¸ãersion.‘ vIf“y˜ou“lac˜k“Êftp“Äcapabil-Ž¡itš¸ãy–óìbut“ha˜v˜e“electronic“mail“access,‘[‘a“message“toŽ¡Êtuglib@math.utah.edu–UUÄwith“the“textŽ©ÊhelpŽ¡send–?ýindex“from“tex/bibަÄwill–UUget“y¸ãou“started.Ž¡‘The–ŒÎÊbibclean“Ädistribution“includes“a“substan-Ž¡tial–N6collection“of“torture“tests“that“should“bGe“run“atŽ¡installation–³Ytime“to“v¸ãerify“correctness.‘‹ÒAs“with“theŽ¡T‘þU>Ÿ'EŽ‘ãxX–ßÊtrip“Äand“óHø”o> logo10ëHMETÇAFŽ9ONT“Êtrap“Ätests,‘4‚this“testingŽ¡has›ýœpro•¸ãv“ed˜v‘ÿqÇaluable˜in˜unco“v“ering˜problems˜bGeforeŽ¡the–UUcoGde“is“installed“for“general“use.ŽŽŽ ý‚’óÉReferencesŽŸ’øÄ[1]ŽŽ’ŽŸ'EŽ‘ãxXŽ¡’ŽŸ'EŽ‘ãxX.‘_„ÇTUGBo‘ÿ}'atÄ,‘MÄSupplemen¸ãt–Kàto“12(2):183{194,Ž¡’ŽV‘ÿ*ªolume“14“(1993),“No.“4’)§w415ŽŽ œ ý‚[14]ŽŽ‘ŽñE.“Lapin.‘'ÇPortable–jÒC›j›and“UNIX˜Pr–ÿ}'o“gr“am-Ž¡‘Ž402ޤ ’óÂ.bbl½,‘U>412Ž¡’óÂ.bibcleanrc½,‘U>397Ž¡’óÂ.ini½,–U>400,“402Ž¡’óÂ/*–U>empty“*/“½rule,“413Ž¡’óÂ/*...*/½,‘U>413Ž¡’óÂ:½,‘U>402Ž¡’ó?,‘U>402Ž¡’óÂ@½,‘U>400Ž¡’óÂ%ó©±Ê cmsy9¿f½,–U>407,“410Ž¡’óÂ%¿g½,–U>407,“410Ž¡’óÂ%%½,–U>402,“407,“410Ž¡’óÂ%e½,‘U>402Ž¡’óÂ%f½,‘U>402Ž¡’óÂ%k½,‘U>402Ž¡’óÂ%left½,–U>410,“411Ž¡’óÂ%nonassoc½,‘U>410Ž¡’óÂ%token½,‘U>410Ž¡’óÂ%v½,‘U>402Ž¡’óÂ\"½,–U>401,“402,“409Ž¡’óÂ@½,–U>405,“406,“408,“411Ž¡’óÂ@Begin½,‘U>405Ž¡’óÂ@Begin¿fÂcomment¿g½,‘U>405Ž¡’óÂ@Comment½,‘U>405Ž¡’óÂ@Comment¿fÂ...¿g½,–U>405,“406,“411Ž¡’óÂ@End½,‘U>405Ž¡’óÂ@End¿fÂcomment¿g½,‘U>405Ž¡’óÂ@Preamble¿fÂ...¿g½,‘U>405Ž¡’óÂ@String½,‘U>405Ž¡’óÂ@String¿fÂ...¿g½,‘U>406ŽŽŽŽŽŽŒ‹ ¾ ¨ ýF ¬ŽÄ416’)§wTUGbGoat,–U>V‘ÿ*ªolume“14“(1993),“No.“4ŽŽ œ ý‚Â@@½,‘U>405ޤ Â@name½,–U>405,“411Ž¡Â@name¿fÂ...¿g½,‘U>411Ž¡Â\\½,‘U>401Ž¡Â\0x0a½,‘U>401Ž¡Â\0xhh½,‘U>401Ž¡8-bit–U>clean,“409Ž©Â\0½,–U>401,“409Ž¡Â\012½,‘U>401Ž¡Â\013½,‘U>407ަÂA½,‘U>402Ž¡Â\a½,‘U>401Ž¡Âa½,‘U>402Ž¡abbreviation,–U>408,“413Ž¡accen•¾9t›U>con“trol˜sequence,˜409Ž¡Aho,–U>Alfred“V.,“404,“405,“411Ž¡anon¾9ymous–U>Âftp½,“414Ž¡ANSI/ISO–U>Standard“C,“403,“404,“407Ž¡apAÇostropheŽ¡‘in–U>citation“k¾9ey‘ÿ:«,“406Ž¡Apple–U>Macin¾9tosh,“407Ž¡arc•¾9hiv“e‘U>hostsŽ¡‘In¾9ternet,‘U>414Ž¡ÂArticle½,‘U>411Ž¡assignmen¾9t,‘U>413Ž¡‘list,‘U>412Ž¡‘opAÇerator,–U>409,“413Ž¡‘assoAÇciativit¾9y–U>of,“410Ž¡‘ruleŽ¡‘error›U>reco•¾9v“ery˜in,˜411Ž¡‘separator,‘U>409Ž¡Âassignment–U>½rule,“412,“413Ž¡Âassignment_lhs–U>½rule,“413Ž¡Âassignment_list½,–U>412,“413Ž¡Âassignment_list–U>½rule,“412,“413Ž¡assoAÇciativit¾9y‘ÿ:«,‘U>410Ž¡at-sign,‘U>405Ž¡Âat_object–U>½rule,“411Ž¡A¾9tari,‘U>404Ž¡Â-author½,‘U>397Ž¡Âauthor½,‘U>413Ž¡author‘U>nameŽ¡‘p•AÇerio“d–U>after“initials,“398Ž¡‘reordering,‘U>398Ž¡auxiliary–U> le,“396ަÂ\b½,‘U>401Ž¡Bac¾9h,–U>P‘ÿ:«.“D.“Q.,“400Ž¡bac¾9k–U>end,“397Ž¡bac¾9kslash-newline,–U>398,“400,“403,“404,“408Ž¡bac¾9kslash-quote,‘U>405Ž¡BeebAÇe,–U>Nelson“H.“F.,“396Ž¡Âbib½,‘U>406Ž¡Âbibclean½,–U>395{405,“407,“408,“410,“412,“414Ž¡Âbibclean.ini½,‘U>397Ž¡ÂBIBCLEANEXT½,‘U>400Ž¡ÂBIBCLEANINI½,‘U>397ŽŽŽ ý‚’óÂbibdup½,‘U>404ޤ ’óÂbibdup.awk½,‘U>404Ž¡’óÂBIBINPUTS½,–U>397,“400Ž¡’óÂbiblex½,–U>407,“410Ž¡’óbibliograph¾9yŽ¡’en¾9try‘ÿ:«,‘U>412Ž¡’ le,–U>396,“397Ž¡’st¾9yle,‘U>396Ž¡’óÂ\bibliography½,–U>396,“406Ž¡’óbibliograph¾9y-spAÇeci c–U>pattern,“402Ž¡’óÂ\bibliographystyle½,‘U>396Ž¡’óÂbibparse½,‘U>410Ž¡’óÂbibtex_file–U>½rule,“411Ž¡’óÂbison½,–U>406,“408,“410{412,“414Ž¡’óÂBook½,‘U>411Ž¡’óBorland–U>In¾9ternational,“404Ž¡’óbrace,‘U>409Ž¡’ignored–U>in“pattern“matc¾9hing,“402Ž¡’space–U>around,“402Ž¡’óBro¾9wn,–U>Doug,“406Ž¡’óBry¾9an,–U>Martin,“396Ž¡’óbu er›U>o•¾9v“er o“w,˜406Ž©’óC++,–U>397,“404Ž¡’óCameron,–U>Debra,“396Ž¡’ócarriage–U>return,“407Ž¡’óÂchapter½,‘U>402Ž¡’óÂ-check-values½,–U>398,“400Ž¡’óc•¾9hec“ksumŽ¡’in–U>ÂISBN“½and“ÂISSN½,“402Ž¡’ócitationŽ¡’k¾9ey‘ÿ:«,–U>395,“403,“412Ž¡’problems–U>in“recognizing,“412Ž¡’st¾9yle,‘U>396Ž¡’óÂ\cite½,‘U>396Ž¡’óclass–U>library‘ÿ:«,“404Ž¡’ócoAÇde–U>generation,“397Ž¡’ócolon,‘U>410Ž¡’ócomma,‘U>412Ž¡’optional–U>after“assignmen¾9t,“413Ž¡’ócommand-line–U>options,“ó¼j‘¹ cmti9Àse‡e‘I½optionsŽ¡’óÂComment½,–U>408,“409,“411Ž¡’ócommen¾9tŽ¡’en¾9try‘ÿ:«,‘U>411Ž¡’in-line,–U>408,“410,“412,“413Ž¡’assoAÇciativit¾9y–U>of,“410Ž¡’precedence–U>of,“411Ž¡’syn¾9tax,‘U>406Ž¡’óÂcomment½,‘U>405Ž¡’óÂcomment–U>½rule,“411,“412Ž¡’óconcatenation,‘U>Àse‡e‘I½stringŽ¡’ócon¾9trol‘U>sequenceŽ¡’Â\bibliography½,–U>396,“406Ž¡’Â\bibliographystyle½,‘U>396Ž¡’Â\cite½,‘U>396Ž¡’ócore–U>dump,“405ަ’óÂD½,‘U>402Ž¡’óÂd½,‘U>402ŽŽŽŽŽŽŒ‹¡ÓÏ ¨ ýF ¬ŽÄTUGbGoat,–U>V‘ÿ*ªolume“14“(1993),“No.“4’)§w417ŽŽ œ ý‚½decimal,‘U>397ޤ Â-delete-empty-values½,–U>398,“399Ž¡delimited–U>string,“409,“413Ž¡delimitersŽ¡‘in–U>óOŒ-ø cmcsc10ëOScribe½,“405Ž¡‘mismatc¾9hed,–U>398,“413Ž¡digit–U>string,“408Ž¡doAÇcumen¾9tation,‘U>414Ž¡dumpŽ¡‘pAÇost-mortem,‘U>405Ž©editor,‘U>Àse‡e‘I½EmacsŽ¡editor‘U>nameŽ¡‘p•AÇerio“d–U>after“initials,“398Ž¡‘reordering,‘U>398Ž¡electronic–U>mail“serv¾9er,“414Ž¡Ellis,–U>Margaret“A.,“404Ž¡Emacs,–U>396,“399,“405Ž¡em¾9bAÇedded–U>quote,“409Ž¡empt¾9yŽ¡‘pattern,‘U>402Ž¡‘string,‘U>413Ž¡‘v‘ÿ|raluesŽ¡‘deleting,‘U>398Ž¡en¾9tryŽ¡‘name,‘U>408Ž¡Âentry–U>½rule,“411{413Ž¡Âentry_head–U>½rule,“412Ž¡en•¾9vironmen“t–U>v‘ÿ|rariable,“397Ž¡errorŽ¡‘log–U> le,“399Ž¡‘message,‘U>411Ž¡‘redirecting,‘U>397Ž¡‘reco•¾9v“ery‘ÿ:«,‘U>411Ž¡‘repAÇorting,‘U>406Ž¡Âerror–U>½rule,“411Ž¡Â-error-log–U>filename½,“397Ž¡escapAÇe–U>sequence,“401,“403,“405,“409Ž¡‘in–U>message“text,“402Ž¡‘table,‘U>401ަÂ\f½,–U>401,“407Ž¡F‘ÿ:«euer,–U>Alan“R.,“404Ž¡ eld–U>name,“408,“413Ž¡ leŽ¡‘Â.bbl½,‘U>412Ž¡‘Â.bibcleanrc½,‘U>397Ž¡‘Â.ini½,–U>400,“402Ž¡‘Âbibclean½,‘U>404Ž¡‘Âbibclean.ini½,‘U>397Ž¡‘ÂBIBCLEANEXT½,‘U>400Ž¡‘ÂBIBCLEANINI½,‘U>397Ž¡‘Âbibdup½,‘U>404Ž¡‘Âbibdup.awk½,‘U>404Ž¡‘ÂBIBINPUTS½,–U>397,“400Ž¡‘bibliograph¾9y‘ÿ:«,–U>396,“397Ž¡‘error–U>log,“399Ž¡‘Âftp.math.utah.edu½,‘U>414Ž¡‘inclusion,–U>406,“412ŽŽŽ ý‚’initialization,–U>397,“398,“400ޤ ’loAÇcating,‘U>399Ž¡’nested,‘U>400Ž¡’pattern–U>c¾9haracters,“402Ž¡’patterns–U>in,“398Ž¡’nameŽ¡’space–U>in,“412Ž¡’syn¾9tax–U>of,“412Ž¡’Ânawk½,‘U>404Ž¡’ÂPATH½,–U>397,“400Ž¡’Âpub/tex/bib½,‘U>414Ž¡’Âregexp½,‘U>401Ž¡’sample–U>initialization,“401Ž¡’Âstderr½,–U>397,“399Ž¡’Âstdin½,‘U>400Ž¡’ÂSYS$SYSTEM½,‘U>397Ž¡’Âtr½,‘U>404Ž¡’Âtuglib@math.utah.edu½,‘U>414Ž¡’óÂ-file-position½,–U>398,“399Ž¡’óÂ-fix-font-changes½,–U>398,“399Ž¡’óÂ-fix-initials½,–U>398,“400Ž¡’óÂ-fix-names½,–U>398,“400Ž¡’óÂflex½,–U>406,“407,“414Ž¡’ófon•¾9t‘U>c“hangesŽ¡’ xing,‘U>398Ž¡’óformatŽ¡’item,‘U>402Ž¡’Â%%½,‘U>402Ž¡’Â%e½,‘U>402Ž¡’Â%f½,‘U>402Ž¡’Â%k½,‘U>402Ž¡’Â%v½,‘U>402Ž¡’of–U>grammar“rules,“407,“410Ž¡’óformfeed,‘U>407Ž¡’óF‘ÿ:«ree›U>Soft•¾9w“are˜F‘ÿ:«oundation,˜397,˜406Ž¡’óF‘ÿ:«riedman,–U>Jr.,“H.“George,“406Ž¡’ófron¾9t–U>end,“397Ž¡’óÂftp½,‘U>414Ž¡’óÂftp.math.utah.edu½,‘U>414Ž¡’ófunctionŽ¡’Âout_lbrace()½,‘U>409Ž¡’Âout_lparen()½,‘U>409Ž¡’Âout_protected_string()½,‘U>408Ž¡’Âout_rbrace()½,‘U>409Ž¡’Âout_rparen()½,‘U>409Ž¡’Âout_string()½,‘U>409Ž¡’Âout_token()½,–U>408,“409ŽŸ’óGNUŽ¡’Emacs,–U>396,“399,“405Ž¡’Âregexp–U>½pac¾9k‘ÿ|rage,“401Ž¡’T‘þuAŸïÿEŽ‘˜ŸXinfo,‘U>405Ž¡’ógrammar,‘U>405Ž¡’format–U>of“rules,“407,“410Ž¡’formatting›U>con•¾9v“en“tions,˜410Ž¡’LALR(1),–U>406,“412Ž¡’lexical,‘U>407Ž¡’LL(0),‘U>405Ž¡’LL(1),–U>405,“406ŽŽŽŽŽŽŒ‹¢àç ¨ ýF ¬ŽÄ418’)§wTUGbGoat,–U>V‘ÿ*ªolume“14“(1993),“No.“4ŽŽ œ ý‚‘½LR(ó5ùž" cmmi9¾kC޽),‘U>406ޤ ‘parsing,‘U>410Ž¡‘size–U>of,“407,“410Ž©Harbison,–U>Sam¾9uel“P‘ÿ:«.,“404Ž¡Âhelp½,‘U>414Ž¡Â-help–U>½or“Â-?½,“397Ž¡Herwijnen,–U>Eric“v‘ÿ|ran,“396Ž¡hexadecimal,‘U>397Ž¡horizonš¾9tal–U>space“c˜haracter,“407,“409ަin-line–U>commen¾9t,“408,“410,“412,“413Ž¡‘assoAÇciativit¾9y–U>of,“410Ž¡‘precedence–U>of,“411Ž¡ÂInclude½,–U>408,“409,“411,“412Ž¡Âinclude–U>½rule,“411,“412Ž¡Â-init-file–U>filename½,“397,“398,“400Ž¡initialization–U> le,“397,“398,“400Ž¡‘loAÇcating,‘U>399Ž¡‘nested,‘U>400Ž¡‘pattern–U>c¾9haracters,“402Ž¡‘patterns–U>in,“398Ž¡‘sample,‘U>401Ž¡In•¾9ternet›U>arc“hiv“e˜hosts,˜414Ž¡in¾9terpretation–U>of“coAÇde,“397Ž¡ÂISBN½,‘U>402Ž¡ISBN–U>(Inš¾9ternational“Standard“BoAÇok“Num˜bAÇer),“399Ž¡ISO10646M–U>c¾9haracter“set,“406Ž¡ÂISSN½,‘U>402Ž¡ISSN–U>(Inš¾9ternational“Standard“Serial“Num˜bAÇer),“399ަJaesc•¾9hk“e,–U>Rex,“404Ž¡Johnson,–U>Stev¾9en“C.,“406ަKahn,–U>PhilippAÇe,“404Ž¡Kernighan,–U>Brian“W.,“404Ž¡Âkey½,–U>403,“405Ž¡k¾9ey–U>name,“408,“412Ž¡Âkey_name–U>½rule,“412Ž¡Kn¾9uth,–U>Donald“E.,“398,“404,“406Ž¡KoAÇenig,–U>Andrew,“404ަLALR(1)Ž¡‘grammar,–U>406,“412Ž¡‘parser,‘U>406Ž¡LampAÇort,–U>Leslie,“395,“396,“403,“406Ž¡Lapin,–U>J.“E.,“404Ž¡Âlast_object½,‘U>408Ž¡Âlast_token½,‘U>408Ž¡Â%left½,–U>410,“411Ž¡left-recursiv¾9e–U>rule,“411Ž¡Lesk,–U>Mic¾9hael“E.,“406Ž¡Levine,–U>John“R.,“406Ž¡Âlex½,–U>406{410,“414Ž¡lexer,–U>Àse‡e‘I½lexical“analyzerŽ¡lexical–U>analysis,“397Ž¡lexical–U>analyzer,“397,“398,“403Ž¡lexical–U>grammar,“407Ž¡lineŽŽŽ ý‚’n•¾9um“bAÇer,‘U>406ޤ ’n•¾9um“bAÇer›U>directiv“e,˜403Ž¡’width–U>limit,“397Ž¡’wrapping,–U>398,“404,“408Ž¡’ólistŽ¡’of–U>assignmen¾9ts,“412Ž¡’of–U>ob‘ƒŽjects,“411Ž¡’óliterate–U>programming,“407,“410Ž¡’óLL(0)–U>grammar,“405Ž¡’óLL(1)Ž¡’grammar,–U>405,“406Ž¡’parser,‘U>411Ž¡’óLR(¾kC޽)–U>grammar,“406Ž©’óMacin¾9toshŽ¡’Apple,‘U>407Ž¡’ómacro,–U>Àse‡e“also‘æe½con¾9trol“sequenceŽ¡’ÂN½,–U>407,“408Ž¡’ÂO½,‘U>407Ž¡’ÂRETURN½,‘U>408{410Ž¡’ÂS½,‘U>407Ž¡’ÂW½,‘U>407Ž¡’ómacro‘U>de nitionŽ¡’Âlex½,‘U>407Ž¡’ómacro‘U>useŽ¡’Âlex½,‘U>407Ž¡’óMason,›U>T–ÿ:«on¾9y“,˜406Ž¡’óÂ-max-width–U>0½,“397Ž¡’óÂ-max-width–U>nnn½,“397,“404Ž¡’ómen¾9uŽ¡’pAÇop-up,‘U>396Ž¡’ómessageŽ¡’disabling–U>w¾9arning,“399Ž¡’error,‘U>411Ž¡’help,‘U>397Ž¡’redirecting,‘U>397Ž¡’ómismatc¾9hed–U>delimiters,“398,“413Ž¡’óÂmonth½,‘U>402ަ’óÂN½,–U>407,“408Ž¡’óÂ\n½,‘U>401Ž¡’óÂname½,‘U>411Ž¡’óÂnawk½,‘U>404Ž¡’ónewline,–U>409,“412,“413Ž¡’assoAÇciativit¾9y–U>of,“410Ž¡’óÂ-no-check-values½,‘U>398Ž¡’óÂ-no-delete-empty-values½,–U>398,“399Ž¡’óÂ-no-file-position½,‘U>398Ž¡’óÂ-no-fix-font-changes½,‘U>398Ž¡’óÂ-no-fix-initials½,‘U>398Ž¡’óÂ-no-fix-names½,‘U>398Ž¡’óÂ-no-init-files½,‘U>400Ž¡’óÂ-no-par-breaks½,–U>398,“399Ž¡’óÂ-no-prettyprint½,–U>397,“398,“403,“407,“410Ž¡’óÂ-no-print-patterns½,‘U>398Ž¡’óÂ-no-read-init-files½,‘U>398Ž¡’óÂ-no-remove-OPT-prefixes½,–U>398,“399Ž¡’óÂ-no-scribe½,‘U>399Ž¡’óÂ-no-trace-file-opening½,‘U>399ŽŽŽŽŽŽŒ‹£íÊ ¨ ýF ¬ŽÄTUGbGoat,–U>V‘ÿ*ªolume“14“(1993),“No.“4’)§w419ŽŽ œ ý‚Â-no-warnings½,‘U>399ޤ non-terminal,‘U>410Ž¡‘Â/*–U>empty“*/½,“413Ž¡‘Âassignment½,–U>412,“413Ž¡‘Âassignment_lhs½,‘U>413Ž¡‘Âassignment_list½,–U>412,“413Ž¡‘Âat_object½,‘U>411Ž¡‘Âbibtex_file½,‘U>411Ž¡‘Âcomment½,–U>411,“412Ž¡‘Âentry½,‘U>411{413Ž¡‘Âentry_head½,‘U>412Ž¡‘Âerror½,‘U>411Ž¡‘Âinclude½,–U>411,“412Ž¡‘Âkey_name½,‘U>412Ž¡‘Âobject½,‘U>411Ž¡‘Âobject_list½,‘U>411Ž¡‘Âopt_space½,‘U>411{413Ž¡‘Âpreamble½,–U>411,“412Ž¡‘Âsimple_value½,–U>412,“413Ž¡‘Âsingle_space½,‘U>413Ž¡‘Âspace½,‘U>413Ž¡‘Âstring½,–U>411,“412Ž¡‘Âvalue½,–U>412,“413Ž¡Â%nonassoc½,‘U>410Ž¡NUL‘U>(0)Ž¡‘in–U>string,“401,“409Ž¡Ânumber½,–U>401,“402ŽŸÂO½,‘U>407Ž¡ob‘ƒŽject,‘U>411Ž¡‘list,‘U>411Ž¡Âobject–U>½rule,“411Ž¡ob‘ƒŽject-orien¾9ted–U>programming,“404Ž¡Âobject_list–U>½rule,“411Ž¡Ob‘ƒŽjectiv¾9e–U>C,“397,“404Ž¡oAÇctal,‘U>397Ž¡Â\ooo½,‘U>401Ž¡opAÇeratorŽ¡‘assignmen¾9t,–U>409,“413Ž¡‘string–U>concatenation,“408,“411,“412Ž¡ÂOPT-‘U>½pre xŽ¡‘remo¾9ving,‘U>399Ž¡Âopt_space½,‘U>412Ž¡Âopt_space–U>½rule,“411{413Ž¡optionŽ¡‘Â-author½,‘U>397Ž¡‘Â-check-values½,–U>398,“400Ž¡‘Â-delete-empty-values½,–U>398,“399Ž¡‘Â-error-log–U>filename½,“397Ž¡‘Â-file-position½,–U>398,“399Ž¡‘Â-fix-font-changes½,–U>398,“399Ž¡‘Â-fix-initials½,–U>398,“400Ž¡‘Â-fix-names½,–U>398,“400Ž¡‘Â-help–U>½or“Â-?½,“397Ž¡‘Â-init-file–U>filename½,“397,“398,“400Ž¡‘Â-max-width–U>0½,“397Ž¡‘Â-max-width–U>nnn½,“397,“404Ž¡‘Â-no-check-values½,‘U>398Ž¡‘Â-no-delete-empty-values½,–U>398,“399ŽŽŽ ý‚’Â-no-file-position½,‘U>398ޤ ’Â-no-fix-font-changes½,‘U>398Ž¡’Â-no-fix-initials½,‘U>398Ž¡’Â-no-fix-names½,‘U>398Ž¡’Â-no-init-files½,‘U>400Ž¡’Â-no-par-breaks½,–U>398,“399Ž¡’Â-no-prettyprint½,–U>397,“398,“403,“407,“410Ž¡’Â-no-print-patterns½,‘U>398Ž¡’Â-no-read-init-files½,‘U>398Ž¡’Â-no-remove-OPT-prefixes½,–U>398,“399Ž¡’Â-no-scribe½,‘U>399Ž¡’Â-no-trace-file-opening½,‘U>399Ž¡’Â-no-warnings½,‘U>399Ž¡’Â-par-breaks½,‘U>398Ž¡’Â-prettyprint½,‘U>398Ž¡’Â-print-patterns½,‘U>398Ž¡’Â-read-init-files½,‘U>398Ž¡’Â-remove-OPT-prefixes½,–U>398,“399Ž¡’Â-scribe½,‘U>399Ž¡’Â-trace-file-opening½,–U>399,“400Ž¡’Â-version½,‘U>399Ž¡’Â-warnings½,‘U>399Ž¡’óoptions,‘U>400Ž¡’óëOOS/2½,‘U>404Ž¡’óÂout_lbrace()½,‘U>409Ž¡’óÂout_lparen()½,‘U>409Ž¡’óÂout_protected_string()½,‘U>408Ž¡’óÂout_rbrace()½,‘U>409Ž¡’óÂout_rparen()½,‘U>409Ž¡’óÂout_string()½,‘U>409Ž¡’óÂout_token()½,–U>408,“409Ž¡’óo•¾9v“er o“w–U>of“string“bu er,“406ŽŸ’óÂpages½,‘U>402Ž¡’óÂ-par-breaks½,‘U>398Ž¡’óparen¾9thesis,‘U>409Ž¡’óparserŽ¡’LALR(1),‘U>406Ž¡’LL(1),‘U>411Ž¡’óparsing,‘U>397Ž¡’óparsing–U>grammar,“410Ž¡’óP¾9ascal,‘U>404Ž¡’óÂPATH½,–U>397,“400Ž¡’ópatternŽ¡’bibliograph¾9y-spAÇeci c,‘U>402Ž¡’c•¾9hanging›U>w“arning˜message,˜402Ž¡’empt¾9y‘ÿ:«,‘U>402Ž¡’quotes–U>in,“402Ž¡’ópattern–U>matc¾9hing,“400Ž¡’brace–U>ignored“in,“402Ž¡’regular–U>expression,“400Ž¡’óëOPC-DOS½,–U>396,“397,“400,“404Ž¡’óp•AÇerio“dŽ¡’in–U>citation“k¾9ey‘ÿ:«,“406Ž¡’in–U>regular“expression,“407,“409Ž¡’ópipAÇeline,‘U>404Ž¡’óPlauger,–U>P‘ÿ:«.“J.,“404Ž¡’ópAÇop-up–U>men¾9u,“396Ž¡’ópAÇortabilit¾9y‘ÿ:«,‘U>404ŽŽŽŽŽŽŒ‹¤û_ ¨ ýF ¬ŽÄ420’)§wTUGbGoat,–U>V‘ÿ*ªolume“14“(1993),“No.“4ŽŽ œ ý‚½pAÇost-mortem–U>dump,“405ޤ ÂPreamble½,–U>408,“411,“412Ž¡Âpreamble–U>½rule,“411,“412Ž¡precedence–U>declaration,“410Ž¡preproAÇcessor,‘U>403Ž¡Â-prettyprint½,‘U>398Ž¡prett•¾9yprin“ter,–U>397,“398,“403Ž¡prett•¾9yprin“ting,‘U>399Ž¡Â-print-patterns½,‘U>398Ž¡programŽ¡‘searc¾9h–U>path,“400Ž¡‘v¾9ersion,‘U>399Ž¡Âpub/tex/bib½,‘U>414Ž©query‘U>(?)Ž¡‘in–U>messages,“402Ž¡quoteŽ¡‘em¾9bAÇedded,‘U>409Ž¡‘in–U>pattern,“402ަÂR½,‘U>402Ž¡Â\r½,–U>401,“407Ž¡Âr½,‘U>402Ž¡Rabino¾9witz,–U>Henry‘ÿ:«,“404Ž¡Â-read-init-files½,‘U>398Ž¡reco•¾9v“eryŽ¡‘from–U>error,“411Ž¡recursion,‘U>400Ž¡Ârefer½,‘U>406Ž¡Âregexp½,‘U>401Ž¡regular‘U>expressionŽ¡‘pattern–U>matc¾9hing,“400Ž¡‘syn¾9tax–U>of,“407Ž¡Reid,–U>Brian,“405Ž¡Â-remove-OPT-prefixes½,–U>398,“399Ž¡ÂRETURN½,‘U>408{410Ž¡Âreturn½,‘U>408Ž¡Ritc¾9hie,–U>Dennis“M.,“404Ž¡RoAÇc¾9hkind,–U>Marc“J.,“404Ž¡Rosen¾9blatt,–U>Bill,“396Ž¡run-time–U>options,“Àse‡e‘I½optionsŽ¡runa•¾9w“a“y–U>string“argumen¾9t,“398,“406ަÂS½,‘U>407Ž¡Sc¾9haap,–U>Chaim,“404Ž¡Sc•¾9hic“k“ele,›U>P“eter,˜400Ž¡Sc¾9hmidt,–U>Eric,“406Ž¡Sc¾9hreiner,–U>Axel“T.,“406Ž¡ëOScribe½,–U>395,“399,“404{407,“409,“411,“417Ž¡Â-scribe½,‘U>399Ž¡searc¾9h–U>path,“400Ž¡semicolon,‘U>410Ž¡Âsend½,‘U>414Ž¡separatorŽ¡‘assignmen¾9t,‘U>409Ž¡Sethi,–U>Ra¾9vi,“405,“411Ž¡ëOSGML½,‘U>396Ž¡sharp–U>(Â#½),“403,“408Ž¡simple–U>v‘ÿ|ralue,“413ŽŽŽ ý‚’óÂsimple_value–U>½rule,“412,“413ޤ ’ósingle–U>space,“413Ž¡’óÂsingle_space–U>½rule,“413Ž¡’ósource–U>coAÇde,“414Ž¡’óspace,–U>410,“413Ž¡’assoAÇciativit¾9y–U>of,“410Ž¡’bAÇet•¾9w“een›U>tok“ens,˜411Ž¡’precedence–U>of,“411Ž¡’óÂspace–U>½rule,“413Ž¡’óstandard–U>error“unit,“397Ž¡’óÂstderr½,–U>397,“399Ž¡’óÂstdin½,‘U>400Ž¡’óSteele–U>Jr.,“Guy“L.,“404Ž¡’óStevš¾9ens,–U>W.“Ric˜hard,“404Ž¡’óÂString½,–U>408,“411,“412Ž¡’óstringŽ¡’concatenation–U>opAÇerator,“408,“411,“412Ž¡’p•AÇo“ol,‘U>404Ž¡’runa•¾9w“a“y‘ÿ:«,–U>398,“406Ž¡’substitution,‘U>395Ž¡’óÂstring–U>½rule,“411,“412Ž¡’óStroustrup,–U>Bjarne,“404Ž¡’óst¾9yleŽ¡’bibliograph¾9y‘ÿ:«,‘U>396Ž¡’óÂSYS$SYSTEM½,‘U>397ŽŸ’óÂ\t½,‘U>401Ž¡’ótemplateŽ¡’editor,‘U>396Ž¡’óterminal,‘U>410Ž¡’ÂTOKEN_ABBREV½,–U>403,“408,“410,“412,“413Ž¡’ÂTOKEN_AT½,–U>403,“408,“410,“411Ž¡’ÂTOKEN_COMMA½,–U>403,“408{410,“412,“413Ž¡’ÂTOKEN_COMMENT½,–U>408,“410,“412Ž¡’ÂTOKEN_ENTRY½,–U>403,“408,“410,“412Ž¡’ÂTOKEN_EQUALS½,–U>403,“409,“410,“413Ž¡’ÂTOKEN_FIELD½,–U>403,“408,“410,“413Ž¡’ÂTOKEN_INCLUDE½,–U>408,“410,“412Ž¡’ÂTOKEN_INLINE½,–U>408,“410,“413Ž¡’ÂTOKEN_KEY½,–U>403,“408,“410,“412Ž¡’ÂTOKEN_LBRACE½,–U>403,“409,“410,“412,“414Ž¡’ÂTOKEN_LITERAL½,–U>409,“410,“412,“414Ž¡’ÂTOKEN_NEWLINE½,–U>403,“409,“410,“413Ž¡’ÂTOKEN_PREAMBLE½,–U>408,“410,“412Ž¡’ÂTOKEN_RBRACE½,–U>403,“409{412,“414Ž¡’ÂTOKEN_SHARP½,‘U>409{412Ž¡’ÂTOKEN_SPACE½,–U>409,“410,“413Ž¡’ÂTOKEN_STRING½,–U>403,“408{410,“412Ž¡’ÂTOKEN_VALUE½,–U>403,“408{410,“413Ž¡’ótesting,–U>404,“414Ž¡’óT‘þuAŸïÿEŽ‘˜ŸXinfo,‘U>405Ž¡’ótext–U>editor,“Àse‡e‘I½EmacsŽ¡’óÂtitle½,‘U>413Ž¡’ótok¾9en,–U>397,“Àse‡e‘I½terminalŽ¡’string,‘U>403Ž¡’t¾9ypAÇe,‘U>403Ž¡’unclassi able,‘U>409Ž¡’óÂTOKEN_ABBREV½,–U>403,“408,“410,“412,“413Ž¡’óÂTOKEN_AT½,–U>403,“408,“410,“411ŽŽŽŽŽŽŒ‹¥ £ ¨ ýF ¬ŽÄTUGbGoat,–UUV‘ÿ*ªolume“14“(1993),“No.“4’)§421ŽŽ œ ý‚ÂTOKEN_COMMA½,–U>403,“408{410,“412,“413ޤ ÂTOKEN_COMMENT½,–U>408,“410,“412Ž¡ÂTOKEN_ENTRY½,–U>403,“408,“410,“412Ž¡ÂTOKEN_EQUALS½,–U>403,“409,“410,“413Ž¡ÂTOKEN_FIELD½,–U>403,“408,“410,“413Ž¡ÂTOKEN_INCLUDE½,–U>408,“410,“412Ž¡ÂTOKEN_INLINE½,–U>408,“410,“413Ž¡ÂTOKEN_KEY½,–U>403,“408,“410,“412Ž¡ÂTOKEN_LBRACE½,–U>403,“409,“410,“412,“414Ž¡ÂTOKEN_LITERAL½,–U>409,“410,“412,“414Ž¡ÂTOKEN_NEWLINE½,–U>403,“409,“410,“413Ž¡ÂTOKEN_PREAMBLE½,–U>408,“410,“412Ž¡ÂTOKEN_RBRACE½,–U>403,“409{412,“414Ž¡ÂTOKEN_SHARP½,‘U>409{412Ž¡ÂTOKEN_SPACE½,–U>409,“410,“413Ž¡ÂTOKEN_STRING½,–U>403,“408{410,“412Ž¡ÂTOKEN_VALUE½,–U>403,“408{410,“413Ž¡ëOTOS½,‘U>404Ž¡Âtr½,‘U>404Ž¡Â-trace-file-opening½,–U>399,“400Ž¡trailing–U>con¾9text,“412,“414Ž¡Âtrap½,‘U>414Ž¡Âtrip½,‘U>414Ž¡TUG–U>bibliograph¾9y“collection,“396,“399Ž¡TUG–U>Resource“Directory‘ÿ:«,“396Ž¡óP”q[˜ cmsl9ëPTUGbAÇoat.ñ½,‘U>396Ž¡Âtuglib@math.utah.edu½,‘U>414Ž©Ullman,–U>Je rey“D.,“405,“411Ž¡unclassi able–U>tok¾9en,“409Ž¡ëOUNIX½,–U>396,“397,“400,“401,“404,“406,“407,“409ަÂ\v½,–U>401,“407Ž¡v‘ÿ|ralue,‘U>412Ž¡Âvalue–U>½rule,“412,“413Ž¡v‘ÿ|ran–U>Herwijnen,“Eric,“396Ž¡v‘ÿ|rariableŽ¡‘Âlast_object½,‘U>408Ž¡‘Âlast_token½,‘U>408Ž¡ëOV‘þó3AX½,–U>396,“397,“404Ž¡v¾9ersionŽ¡‘of–U>program,“399Ž¡Â-version½,‘U>399Ž¡v¾9erticalŽ¡‘bar,‘U>410Ž¡‘tab,‘U>407Ž¡ëOVMS½,–U>396,“397,“404Ž¡Âvolume½,‘U>402ަÂW½,–U>402,“407Ž¡Âw½,‘U>402Ž¡w¾9arning‘U>messageŽ¡‘c¾9hanging,‘U>402Ž¡‘disabling,–U>398,“399Ž¡‘redirecting,‘U>397Ž¡Â-warnings½,‘U>399Ž¡ÂWEB½,–U>404,“406,“407Ž¡W‘ÿ:«ein•¾9bAÇerger,›U>P“eter˜J.,˜404Ž¡wrappingŽŽŽ ý‚’of–U>long“lines,“398,“404,“408Ž©’óÂX½,–U>401,“402ޤ ’óÂ\x½,‘U>402Ž¡’óÂx½,‘U>402Ž¡’óX/OpAÇen–U>Consortium,“409ަ’óÂyacc½,–U>406{408,“410{414Ž¡’óÂyear½,‘U>403ŽŸm@Ÿ¨’:À¿Ž’D½Nelson–>H.“F.“BeebAÇeŽ¡’DCenš¾9ter–>for“Scien˜ti c“ComputingŽ¡’DDepartmen¾9t–>of“MathematicsŽ¡’DUniv•¾9ersit“y–>of“UtahŽ¡’DSalt–>Lakš¾9e“Cit˜y‘ÿ:«,“UT“84112Ž¡’DUSAŽ¡’DT‘ÿ:«el:‘Ÿþ+1–>801“581“5254Ž¡’DF‘þøäAX:–>+1“801“581“4148Ž¡’DIn¾9ternet:‘ŸþÂbeebe@math.utah.eduŽŽŽŽŽŽŽŽŒøÞƒ’À;è¨Ô óP”q[˜ cmsl9óOŒ-ø cmcsc10óNŒ-ø cmcsc10óHø”o> logo10óßê cmmi10óKñ`y cmr10óߤN cmtt9ó¼j‘¹ cmti9ó©±Ê cmsy9ó5ùž" cmmi9óo´‹Ç cmr9ó t}\Êcmti7óÙ“ Rcmr7ù!ßßßßßßbibclean-2.11.4.1.orig/doc/texnames.sty0000644000175200017520000002775405351404567017050 0ustar debiandebian% /u/sy/beebe/tex/texnames/texnames.sty, Sat Oct 26 11:19:21 1991 % Edit by Nelson H. F. Beebe %%% ==================================================================== %%% @TeX-style-file{ %%% author = "Nelson H. F. Beebe", %%% version = "1.09", %%% date = "16 March 1993", %%% time = "10:08:05 MST", %%% filename = "texnames.sty", %%% address = "Center for Scientific Computing %%% Department of Mathematics %%% South Physics Building %%% University of Utah %%% Salt Lake City, UT 84112 %%% USA %%% Tel: (801) 581-5254 %%% FAX: (801) 581-4148", %%% checksum = "15888 291 1374 12268", %%% email = "beebe@magna.math.utah.edu (Internet)", %%% codetable = "ISO/ASCII", %%% keywords = "TeX names", %%% supported = "yes", %%% docstring = "This style file for AmSTeX, LaTeX, and TeX %%% defines macros for the names of TeX %%% and METAFONT programs, in several %%% letter-case variants: %%% %%% \AMSTEX, \AMSTeX, \AmSTeX %%% \BIBTEX, \BIBTeX, \BibTeX %%% \LAMSTeX, \LAmSTeX %%% \LaTeX, \LATEX %%% \METAFONT, \MF %%% \SLITEX, \SLITeX, \SLiTeX, \SliTeX %%% %%% It will NOT redefine any macro that %%% already exists, so it can be included %%% harmlessly after other style files. %%% %%% In AmSTeX or Plain TeX, just do %%% %%% \input texnames.sty %%% %%% In LaTeX, do %%% %%% \documentstyle[...,texnames]{...} %%% %%% This file grew out of original work by %%% %%% Richard Furuta %%% Department of Computer Science %%% University of Maryland %%% College Park, MD 20742 %%% %%% furuta@mimsy.umd.edu %%% seismo!umcp-cs!furuta %%% %%% 22 October 1986, first release (1.00) %%% %%% 1 April 1987 (1.01): Modified by William %%% LeFebvre, Rice University to include %%% definitions for BibTeX and SLiTeX, as they %%% appear in the LaTeX Local User's Guide %%% template (the file latex/local.tex in %%% standard distributions) %%% %%% 26 October 1991 (1.02): Modified by %%% Nelson H. F. Beebe to %%% add several new macro names, and adapt for %%% use with Plain TeX and AmSTeX. %%% %%% 26 October 1991 (1.03): Add \LaTeX and %%% \LATEX %%% %%% 25 November 1991 (1.04): Add \LamSTeX %%% and \LAMSTeX %%% %%% 27 January 1991 (1.05 and 1.06): Add slanted %%% font support for \MF. Make several comment %%% changes. Add a couple of missing % at end %%% of line, and replace blank lines by empty %%% comments. %%% %%% 30 December 1992 (1.07): Use \TeX in %%% definitions of \BibTeX and \LaTeX. Remove %%% occurrences of \rm. Change \sc to use %%% \scriptfont instead of hardwiring cmcsc10. %%% Use \cal for \LAMSTeX. %%% %%% 1 March 1993 (1.08): Consolidate \ifx's onto %%% single lines for brevity. Add %%% \spacefactor1000 to definitions for \TeX and \MF. %%% %%% 16 March 1993 (1.09): Add \AmS, \AMS, \AmSLaTeX, %%% and \AMSLaTeX. %%% %%% The checksum field above contains a CRC-16 %%% checksum as the first value, followed by the %%% equivalent of the standard UNIX wc (word %%% count) utility output of lines, words, and %%% characters. This is produced by Robert %%% Solovay's checksum utility.", %%% %%% } %%% ==================================================================== % \immediate\write16{This is texnames.sty, Version 1.09 <16 March 1993>}% % % This has a chance of working in different styles and sizes, although % it's not perfect. If \sc actually selects a caps-and-small caps font, % we want to use lowercase letters (to get the small caps). But if \sc % selects a smaller point size, we want to use uppercase letters. % \uppercasesc is called on every letter we typeset in \sc, so both % forms can be accommodated. \ifx\sc\undefined \def\sc{% % If there is no \scriptfont for the current family, use a fixed % font. What more can we do? \expandafter\ifx\the\scriptfont\fam\nullfont \font\temp = cmr7 \temp \else \the\scriptfont\fam \fi \def\uppercasesc{\char\uccode`}% }% \fi \ifx\uppercasesc\undefined \let\uppercasesc = \relax \fi % % In the following, we first give the ``official'' definition, % then follow it with spelling variants. Alternate definitions % are discarded in favor of the official one. Each family is % separated by a line like the following one. % %======================================================================= % % Only change from plain.tex is the \spacefactor assignment (suggested % by Phil Taylor), so that \TeX at the end of a sentence isn't treated % as an abbreviation. % \def\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX\spacefactor1000 }% % %======================================================================= % From the AMS tex/ams/amslatex/fontsel/nfssinst.tex file: \ifx\AmS\undefined \def\AmS{{\the\textfont2 A}\kern-.1667em\lower.5ex\hbox {\the\textfont2 M}\kern-.125em{\the\textfont2 S}} \fi \ifx\AMS\undefined \let\AMS=\AmS \fi \ifx\AmSLaTeX\undefined \def\AmSLaTeX{\AmS-\LaTeX} \fi \ifx\AMSLaTeX\undefined \let\AMSLaTeX=\AmSLaTeX \fi %======================================================================= % % Mike Spivak's amstex/amstex.tex 1.1d [26-Aug-1988] has % \def\AmSTeX{{\textfontii A}\kern-.1667em\lower.5ex\hbox % {\textfontii M}\kern-.125em{\textfontii S}-\TeX} % and 2.1 [05-Apr-1991] has an equivalent definition. % AmSTeX's \textfontii is exactly the same as \cal, which % all TeX variants understand. % \ifx\AmSTeX\undefined \def\AmSTeX{$\cal A$\kern-.1667em\lower.5ex\hbox{$\cal M$}% \kern-.125em$\cal S$-\TeX}% \fi % % Leslie Lamport's latex/tmanual.tex [10-Jul-1984] (an early % draft of the book) defines it in uppercase with the standard % definition. \ifx\AMSTEX\undefined \let\AMSTEX=\AmSTeX \fi % % Barbara Beeton's latex/deproc.sty [24-Apr-1986] and inputs/tugbot.sty % [11-Jan-1988] uses this spelling, but the definition % \leavevmode\hbox{$\cal A\kern-.2em\lower.376ex \hbox{$\cal % M$}\kern-.2em\cal S$-\TeX} \ifx\AMSTeX\undefined \let\AMSTeX=\AmSTeX \fi % %======================================================================= % % The definitions of \BibTeX and \SLiTeX in Leslie Lamport's % latex/local.tex lower the E by 0.7ex, while \TeX in plain.tex lowers % it by 0.5ex. Oren Patashnik's bibtex/btxdoc.tex and bibtex/btxhak.tex % [08-Feb-1988] and bibtex/bibtex.web 0.99c [xx-Feb-1988] use this same % name and definition, but Oren said using \TeX here is ok. (Curiously, % LaTeX itself does not define macros for any TeXware except LaTeX and % TeX!) \ifx\BibTeX\undefined \def\BibTeX{B{\sc \uppercasesc i\kern-.025em \uppercasesc b}\kern-.08em \TeX}% \fi % % Leslie Lamport uses this spelling in latex.tex, but not as a % macro. We include it for consistency with AMSTeX. \ifx\BIBTeX\undefined \let\BIBTeX=\BibTeX \fi % % Leslie Lamport's latex/slides.tex [05-Jun-1984], % latex/tmanual.tex [10-Jul-1984] (an early draft of the book), % and latex/lerrata.tex [23-Jul-1985] have this spelling, but the % definition BIB\kern-.1em\TeX. \ifx\BIBTEX\undefined \let\BIBTEX=\BibTeX \fi % %======================================================================= % % From tugboat.com 1.08 [24-Oct-1990]. \ifx\LAMSTeX\undefined \def\LAMSTeX{L\raise.42ex\hbox{\kern-.3em\the\scriptfont2 A}% \kern-.2em\lower.376ex\hbox{\the\textfont2 M}% \kern-.125em {\the\textfont2 S}-\TeX}% \fi % \ifx\LamSTeX\undefined \let\LamSTeX=\LAMSTeX \fi % % This variant seems likely to appear: \ifx\LAmSTeX\undefined \let\LAmSTeX=\LAMSTeX \fi % %======================================================================= % % The definition from latex.tex (LATEX VERSION 2.09 <14 January 1991>) % and bibtex.web 0.99c [xx-Feb-1988] lowers the E slightly more than % \TeX, but consistency seems more desirable. See comments at \BibTeX. % Different definitions are given by latex/deproc.sty [24-Apr-1986], % amstex/man.sty [15-Dec-1986] inputs/tugbot.sty [11-Jan-1988], and % latex/tugboat.com 1.08 [24-Oct-1990]. % \ifx\LaTeX\undefined \def\LaTeX{L\kern-.36em\raise.3ex\hbox{\sc \uppercasesc a}\kern-.15em\TeX}% \fi % % latex/slides.tex [05-Jun-1984] and latex/lerrata.tex [23-Jul-1985] % have this spelling, but different definitions \ifx\LATEX\undefined \let\LATEX=\LaTeX \fi % %======================================================================= % % Don Knuth's mf.web 2.7 [xx-Sep-1990] and Barbara Beeton's % latex/deproc.sty [24-Apr-1986] use an equivalent of this definition. % The font is variously named \logo, \manfnt, and \mf. plain.tex % preloads \manfnt. manfnt has the letters A, E, F, M, N, O, T in % various sizes plus extra symbols for Don Knuth's books Computers and % Typesetting, and Concrete Mathematics, while logo10 has only those % letters in one size. AmSTeX uses \logo in amsppt.sty and imappt.sty, % so we should avoid it, and tugboat.com uses \mf for {\smc Metafont}. % We therefore use \manfnt here, defining it if necessary. QUESTION: % should we use manfnt, or logo10? \ifx\MF\undefined \ifx\manfnt\undefined \font\manfnt=logo10 \fi \ifx\manfntsl\undefined \font\manfntsl=logosl10 \fi \def\MF{{\ifdim\fontdimen1\font>0pt \let\manfnt = \manfntsl \fi {\manfnt META}\-{\manfnt FONT}}\spacefactor1000 }% \fi % % I cannot find any `official' uses of this alternate, but it % seems likely that people will use it. \ifx\METAFONT\undefined \let\METAFONT=\MF \fi % %======================================================================= % % Leslie Lamport's latex/slides.tex [05-Jun-1984]. His % latex/lerrata.tex [23-Jul-1985] and latex/tmanual.tex % [10-Jul-1984] (an early draft of the book) define it as % SLI\TeX! The LaTeX User's Guide and Reference Manual (1986) % appears to use small caps, and possibly kerning, for Sli. % I need to ask Leslie to suggest a preferred definition. \ifx\SLITEX\undefined \def\SLITEX{S\kern-.065em L\kern-.18em\raise.32ex\hbox{i}\kern-.03em\TeX}% \fi % % latex/local.tex (sample Local Guide) [27-Oct-1988] uses % this name, but defines it as % {\rm S\kern-.06em{\sc l\kern-.035emi}\kern-.06em T\kern % -.1667em\lower.7ex\hbox{E}\kern-.125emX} % with an extra-low E, and kerned Sli in small caps. Is this % what the LaTeX User's Guide and Reference Manual (1986) used? \ifx\SLiTeX\undefined \let\SLiTeX=\SLITEX \fi % % latex/slitex.tex [08-Jun-1988] uses SliTeX in typeouts, % but not as a macro -- what a way to confuse the user. \ifx\SliTeX\undefined \let\SliTeX=\SLITEX \fi % % I cannot find a use of this one, but it seems a likely % candidate anyway, and is consistent with AMSTeX and BIBTeX. \ifx\SLITeX\undefined \let\SLITeX=\SLITEX \fi % \endinput %=========================[End of texnames.sty]========================= bibclean-2.11.4.1.orig/doc/bibclean.ltx0000644000175200017520000033242605511100675016735 0ustar debiandebian% -*-latex-*- % Document name: /u/sy/beebe/tex/bibclean/doc/bibclean.ltx % Creator: Nelson H.F. Beebe % Creation Date: Tue Dec 15 22:38:15 1992 %%% ==================================================================== %%% @LaTeX-file{ %%% author = "Nelson H. F. Beebe", %%% version = "1.02", %%% date = "31 December 1993", %%% time = "12:46:45 MST", %%% filename = "bibclean.ltx", %%% address = "Center for Scientific Computing %%% Department of Mathematics %%% University of Utah %%% Salt Lake City, UT 84112 %%% USA", %%% telephone = "+1 801 581 5254", %%% FAX = "+1 801 581 4148", %%% checksum = "13962 3724 13766 111894", %%% email = "beebe@math.utah.edu (Internet)", %%% codetable = "ISO/ASCII", %%% keywords = "BibTeX, bibliography, prettyprint, syntax check", %%% supported = "yes", %%% abstract = "This document describes bibclean, a BibTeX %%% prettyprinter and syntax checker. It %%% proposes a rigorous grammar for BibTeX, and %%% provides a sample implementation of a lexical %%% analyzer and parser to demonstrate the %%% correctness and feasibility of the grammar.", %%% docstring = "This document introduces bibclean, a BibTeX %%% prettyprinter and syntax checker. It %%% describes the features provided by bibclean %%% for processing BibTeX files, and for %%% producing output that can be readily used by %%% other, simpler, programs. %%% %%% It argues that the current version of BibTeX %%% has an unsound grammatical foundation, and %%% that its user-friendliness could be improved %%% by better error checking, and by new %%% facilities. %%% %%% It then proposes a remedy in the form of a %%% rigorous grammar that can be used to generate %%% a lexical analyzer and parser for BibTeX %%% files, and provides a sample implementation %%% using the lex and yacc programs. %%% %%% The checksum field above contains a CRC-16 %%% checksum as the first value, followed by the %%% equivalent of the standard UNIX wc (word %%% count) utility output of lines, words, and %%% characters. This is produced by Robert %%% Solovay's checksum utility.", %%% } %%% ==================================================================== %%:===================================================================== %%: ** NOTE ** NOTE ** NOTE ** NOTE ** NOTE ** NOTE ** NOTE ** NOTE ** %%: This paper is available with the bibclean distribution by the kind %%: permission of the Editor of TUGboat, The Communications of the TeX %%: User's Group. The index in the published paper was set in 3-column %%: mode, but that style is not universally available in LaTeX %%: implementations; in this version, it is set in 2-column mode, giving %%: a few extra pages. At the time of publication, the most %%: recently-available ltugboat.sty and tugboat.cmn files (included in %%: the bibclean distribution) differ somewhat from those used to %%: typeset the journal, so the page breaking in this version differs %%: from the published article. This will be remedied as soon as %%: possible. %%: %%: Because the index requires some editing which can be automated under %%: the UNIX operating system, but not under some others, the bibclean %%: distribution includes all of the intermediate files, and the TeX DVI %%: file, so all that is needed to print the paper is a suitable DVI %%: driver program. Only standard TeX fonts are required. %%: %%: The proper bibliographic reference to the published paper is %%: %%: @String{TUGboat = "TUGBoat"} %%: %%: @Article{Beebe:TB14-4-395-419, %%: author = "Nelson H. F. Beebe", %%: title = "Bibliography Prettyprinting and Syntax Checking", %%: journal = TUGboat, %%: year = "1993", %%: volume = "14", %%: number = "4", %%: pages = "395--419", %%: note = dec, %%: bibdate = "Fri Dec 31 12:15:07 1993", %%: } %%:===================================================================== \documentstyle[makeidx,path,texnames,bibclean]{ltugboat} \setcounter{page}{395} % initial page number in TUGboat \PrelimDraftfalse \vol 14, 4. \issdate December, 1993. %================================================= \title{% Bibliography Prettyprinting and Syntax Checking } \author{% Nelson H. F. Beebe } \address{% Center for Scientific Computing\\ Department of Mathematics\\ University of Utah\\ Salt Lake City, UT 84112\\ USA\\ Tel: +1 801 581 5254\\ FAX: +1 801 581 4148 } \netaddress[\network{Internet}]{beebe@math.utah.edu} \makeindex %================================================= \begin{document} \mbox{}\newpage % force empty first column to match TUGboat copy \maketitle \tableofcontents \listoftables \bibliographystyle{is-plain} \section{Introduction}% \label{sec:intro} \BibTeX{} \cite[Appendix~B]{Lamport:LDP85}% \index{Lamport, Leslie} is a convenient tool for solving the vexing issue of bibliography formatting. The user identifies fields of bibliography entries via field\slash value pairs and provides a unique citation key% \index{citation!key} and a document type for each entry. A simple string substitution% \index{string!substitution} facility makes it easy to reuse frequently-occurring strings. A typical example looks like this: \begin{verbatim} @String{pub-AW = "Ad{\-d}i{\-s}on-Wes{\-l}ey"} @Book{Lamport:LDP85, author = "Leslie Lamport", title = "{\LaTeX}---A Document Preparation System---User's Guide and Reference Manual", publisher = pub-AW, year = "1985", ISBN = "0-201-15790-X", } \end{verbatim} The \TeX{} file contains citations of the form \verb=\cite{Lamport:LDP85}=,% \index{Lamport, Leslie} together with a \CS{bibliographystyle} command to choose a citation% \index{citation!style} and bibliography style,% \index{bibliography!style} and a \CS{bibliography} command to specify which \BibTeX{} files are to be used. \TeX{} records this information in an auxiliary file.% \index{auxiliary file} A subsequent \BibTeX{} job step reads this auxiliary file, extracts the requested bibliographic entries from the specified \BibTeX{} files, and outputs the entries into a bibliography file% \index{bibliography!file}% \index{file!bibliography} formatted according to the specified style. Several dozen such styles% \index{bibliography!style}% \index{style!bibliography} are currently available to help cope with the bizarre variations in bibliography formats that publishers have invented. In a second \TeX{} step, the \CS{cite} commands are not correctly expandable until the \CS{bibliography} command is processed and the bibliography file output by \BibTeX{} is read. However, at that point, the desired form of the citations is finally known, and at the end of the job, an updated auxiliary file is written. A third \TeX{} step finally has the necessary information from the auxiliary file and the bibliography file to correctly typeset the \CS{cite} commands and the bibliography in the specified style. With the GNU Emacs text editor% \index{GNU!Emacs}% \index{Emacs} \cite{Cameron:LGE91,% Schoonover:GEU92},% \index{Cameron, Debra}% \index{Rosenblatt, Bill} powerful \BibTeX{} editing support makes it simple to generate bibliography entry descriptions via templates% \index{template!editor} that can be inserted with a couple of keystrokes, or on workstations, selected from a pop-up menu.% \index{pop-up menu}% \index{menu!pop-up} This editor is freely available on \UNIX{}, \VAX{} \VMS{}, and the larger members of the IBM PC family under \PCDOS{}. The major benefits of using \BibTeX{} are the potential for data reuse, the separation of form and content (like the descriptive markup of \LaTeX{} and \SGML{}% \cite{Bryan:SAG88,% vanHerwijnen:PS90}),% \index{Bryan, Martin}% \index{van Herwijnen, Eric}% \index{Herwijnen, Eric van} and the many stylistic variants of the typeset bibliography. During the preparation of this article, a scan of our Mathematics Department workstation file system located about 14~000 \TeX{} files, and 445 \BibTeX{} files. The latter contained about 870~000 lines and almost 94~000 bibliography entries. These files form a valuable resource that authors and researchers can use to track and properly cite literature in their publications. During my term as TUG President, I initiated a project to collect% \index{TUG bibliography collection} \BibTeX{} styles and bibliography data base files of material related to \TeX{} and its uses, and electronic document production and typography in general. This dynamic collection also covers a few journals, including more than 1000 entries for \TUB{}.% \index{TUGboat@{\protect\TUB{}}} A snapshot of part of the collection was published in the 1991 TUG Resource Directory% \index{TUG Resource Directory} \cite{Beebe:TB12S-2-176,% Beebe:TB12S-2-183}.% \index{Beebe, Nelson H. F.} One drawback of \BibTeX{} is that errors in a bibliography file, such as unmatched quotation marks around a value string, can sometimes be hard to locate, because the current version of the program raises an error at the end of a scan when internal tables overflow after gobbling several thousand characters of input. The result is that the error location is completely bogus, and actually lies much earlier in the file. We can hope that this serious deficiency will be remedied in the final version of \BibTeX{}, 1.0, which is expected to appear when the \LaTeX{} 3.0 development is completed. Another drawback is that such bibliography files are normally prepared by human typists, and consequently there are formatting variations that reduce readability, and inconsistencies that persist into the final typeset bibliography. Some examples of such inconsistencies are variations in naming of publishers and journals, spacing around author and editor initials, and variations in letter case in titles. In addition, there are usually numerous typographical errors of omission, doubling, spelling, transcription, translation, and transposition. In the fall of 1990, faced with a growing collection of \BibTeX{} files, I set out to write a software tool to deal with these problems. This program is called \BIBCLEAN{}. It is a syntax checker, portability verifier, and prettyprinter, and was made freely available in 1991. In the fall of 1992, after considerable experience with the first version, I embarked on a set of enhancements that produced major version 2.0, and the purpose of this paper is to describe the new version, and to widely advertise its existence to the \TeX{} community. \section{\protect\BibTeX{} needs improvement} \BibTeX{}, like \TeX{}, assumes that its input is prepared correctly, and works best when that is the case. Both programs attempt to recover from errors, but that recovery may be unsuccessful, and errors may be detected only after lengthy processing. In neither case is the output of these programs suitable for input to them. That is, their knowledge of how their input streams are to be parsed is available only to them, and cannot be applied independently and used by other software. Both programs have a hazily-defined input syntax, and \TeX{}'s is extensible, making it even harder to give a precise description to the user. The trend of compiler technology development of the last two decades, largely on \UNIX{} systems, has been to separate the compilation task into several steps. The first is generally called {\em lexical analysis},% \index{lexical analysis} or lexing. It breaks the input stream up into identifiable tokens% \index{token} that can be represented by small integer constants and constant strings. The second step is called {\em parsing},% \index{parsing} which involves the verification that the tokens streaming from the lexer conform to the grammatical requirements of the language, that is, that they make sense. As parsing proceeds, an intermediate representation is prepared that is suitable for the third step, namely, {\em code generation\/}% \index{code generation} or {\em interpretation}.% \index{interpretation of code} This division into subtasks diminishes the complexity of writing a compiler, reduces its memory requirements, and importantly, partitions the job into two parts: a language-dependent, but {\em architecture-independent}, part consisting of lexing and parsing, and a language-independent, but {\em architecture-dependent}, part where code is generated or interpreted. This makes it possible to write a front end% \index{front end} for each language, and a back end% \index{back end} for each architecture, and by combining them, obtain compilers for all languages and all architectures. The most successful example of this approach at present is almost certainly the Free Software Foundation's% \index{Free Software Foundation} GNU Project compilers, which support all common computer architectures with the back ends, and C, C++,% \index{C++} and Objective C% \index{Objective C} with the front ends. Additional front ends for several other popular languages are in preparation. When a lexer is available as a separate program, its output can be conveniently used by other programs for tasks such as database lookup, floating-point precision conversion, language translation, linguistic analysis, portability verification, prettyprinting, and checking of grammar, syntax, and spelling. In response to a command-line request, \BIBCLEAN{} will function as a lexer% \index{lexical analyzer} instead of as a prettyprinter.% \index{prettyprinter} An example is given later in Section~\ref{sec:lexer}. \section{Run-time options} On several operating systems, \BIBCLEAN{} is run by a command of the form % \begin{verbatim} bibclean [options] bibfile(s) >newfile \end{verbatim} % One or more bibliography files% \index{bibliography!file}% \index{file!bibliography} can be specified; if none are given, input is taken from the standard input stream. A specific example is: % \begin{verbatim} bibclean -no-fix-name mybib.bib >mybib.new \end{verbatim} % Command-line switches may be abbreviated to a unique leading prefix, and letter case is not significant. All options are parsed before any input bibliography files are read, no matter what their order on the command line. Options that correspond to a {\em yes\slash no\/} setting of a flag have a form with a prefix \verb=no-= to set the flag to {\em no}. For such options, the last setting determines the flag value used. This is significant when options are also specified in initialization files (see Section~\ref{sec:init}). On \VAX{} \VMS{} and IBM \PCDOS{}, the leading hyphen on option names may be replaced by a slash; however, the hyphen option prefix is always recognized. \begin{description} \OPTIONITEM{author} Display an author credit on the standard error unit,% \index{standard error unit} \path=stderr=.% \PATHINDEX{stderr} Sometimes an executable program is separated from its documentation and source code; this option provides a way to recover from that. \OPTIONITEM{error-log filename} Redirect \path=stderr=% \PATHINDEX{stderr} to the indicated file, which will then contain all of the error and warning messages.% \index{message!redirecting}% \index{error!message!redirecting}% \index{warning message!redirecting} This option is provided for those systems that have difficulty redirecting \path=stderr=.% \PATHINDEX{stderr} \OPTIONITEM{help {\rm or} -?} Display a help message% \index{message!help} on \path=stderr=,% \PATHINDEX{stderr} giving a sample command usage, and option descriptions similar to the ones here. \OPTIONITEM{init-file filename} Provide an explicit value pattern initialization file.% \index{initialization file}% \index{file!initialization} It will be processed after any system-wide and job-wide initialization files found on the \path=PATH=% \PATHINDEX{PATH} (for \VAX{} \VMS{}, \path=SYS$SYSTEM=)% \PATHINDEX{SYS\$SYSTEM} and \path=BIBINPUTS=% \PATHINDEX{BIBINPUTS} search paths, respectively, and may override them. It in turn may be overridden by a subsequent file-specific initialization file. The initialization file name can be changed at compile time, or at run time through a setting of the environment variable% \index{environment variable} \path=BIBCLEANINI=,% \PATHINDEX{BIBCLEANINI} but defaults to \path=.bibcleanrc=% \PATHINDEX{.bibcleanrc} on \UNIX{}, and to \path=bibclean.ini=% \PATHINDEX{bibclean.ini} elsewhere. For further details, see Section~\ref{sec:init}. \OPTIONITEM{max-width nnn} Normally, \BIBCLEAN{} limits output line widths% \index{line!width limit} to 72 characters, and in the interests of consistency, that value should not be changed. Occasionally, special-purpose applications may require different maximum line widths, so this option provides that capability. The number following the option name can be specified in decimal,% \index{decimal} octal% \index{octal} (starting with 0), or hexadecimal% \index{hexadecimal} (starting with 0x). A zero or negative value is interpreted to mean unlimited, so \OPTION{max-width 0} can be used to ensure that each field/value pair appears on a single line. When \OPTION{no-prettyprint} requests \BIBCLEAN{} to act as a lexical analyzer, the default line width is unlimited, unless overridden by this option. When \BIBCLEAN{} is prettyprinting, line wrapping% \index{wrapping!of long lines}% \index{line!wrapping} will be done only at a space. Consequently, an extremely long non-blank character sequence may result in the output exceeding the requested line width. Such sequences are extremely unlikely to occur, at least in English-language text, since even the 45-letter giant \cite[p.~451]{Knuth:ct-a}% \index{Knuth, Donald E.} {\it pneu\-monoul\-tra\-mi\-cro\-scop\-ic% \-sil\-i\-co\-vol\-canoco\-nio\-sis} will fit in \BIBCLEAN{}'s standard 72-character output line, and so will 58-letter Welsh city names. When \BIBCLEAN{} is lexing, line wrapping is done by inserting a backslash-newline% \index{backslash-newline} pair when the specified maximum is reached, so no line length will ever exceed the maximum. \OPTIONITEM{[no-]check-values} With the positive form, apply heuristic pattern matching to field values in order to detect possible errors (e.g.\ \path|year = "192"| instead of \path|year = "1992"|), and issue warnings when unexpected patterns are found. This checking is usually beneficial, but if it produces too many bogus warnings for a particular bibliography file, you can disable it with the negative form of this option.% \index{warning message!disabling} Default: {\em yes}. \OPTIONITEM{[no-]delete-empty-values} With the positive form, remove all field\slash value pairs for which the value is an empty string.% \index{empty!values!deleting} This is helpful in cleaning up bibliographies generated from text editor templates. Compare this option with \OPTION{[no-]remove-OPT-prefixes} described below. Default: {\em no}. \OPTIONITEM{[no-]file-position} With the positive form, give detailed file position information in warning and error messages. Default: {\em no}. \OPTIONITEM{[no-]fix-font-changes} With the positive form, supply an additional brace level around font changes% \index{font changes!fixing} in titles to protect against downcasing by some \BibTeX{} styles. Font changes that already have more than one level of braces are not modified. For example, if a title contains the Latin phrase {\tt \verb={\em= Dictyostelium Discoideum\verb=}=} or {\tt \verb={\em= \verb={D}=ictyostelium \verb={D}=iscoideum\verb=}=}, then downcasing will incorrectly convert the phrase to lower-case letters. Most \BibTeX{} users are surprised that bracing the initial letters does not prevent the downcase action. The correct coding is {\tt \verb={{\em= Dictyostelium Discoideum\verb=}}=}. However, there are also legitimate cases where an extra level of bracing wrongly protects from downcasing. Consequently, \BIBCLEAN{} will normally not supply an extra level of braces, but if you have a bibliography where the extra braces are routinely missing, you can use this option to supply them. If you think that you need this option, it is strongly recommended that you apply \BIBCLEAN{} to your bibliography file with and without \OPTION{fix-font-changes}, then compare the two output files to ensure that extra braces are not being supplied in titles where they should not be present. You will have to decide which of the two output files is the better choice, then repair the incorrect title bracing by hand. Since font changes in titles are uncommon, except for cases of the type which this option is designed to correct, it should do more good than harm. Default: {\em no}. \OPTIONITEM{[no-]fix-initials} With the positive form, insert a space after a period following author initials.% \index{author name!period after initials}% \index{editor name!period after initials} Default: {\em yes}. \OPTIONITEM{[no-]fix-names} With the positive form, reorder author and editor name lists% \index{author name!reordering}% \index{editor name!reordering} to remove commas at brace level zero, placing first names or initials before last names. Default: {\em yes}. \OPTIONITEM{[no-]par-breaks} With the negative form, a paragraph break (either a formfeed, or a line containing only spaces) is not permitted in value strings, or between field\slash value pairs. This may be useful to quickly trap runaway strings% \index{runaway string argument}% \index{string!runaway} arising from mismatched delimiters.% \index{mismatched delimiters}% \index{delimiters!mismatched} Default: {\em yes}. \OPTIONITEM{[no-]prettyprint} Normally, \BIBCLEAN{} functions as a prettyprinter.% \index{prettyprinter} However, with the negative form of this option, it acts as a lexical analyzer% \index{lexical analyzer} instead, producing a stream of lexical tokens. See Section~\ref{sec:lexer} for further details. Default: {\em yes}. \OPTIONITEM{[no-]print-patterns} With the positive form, print the value patterns read from initialization files% \index{initialization file!patterns in}% \index{file!initialization!patterns in} as they are added to internal tables. Use this option to check newly-added patterns, or to see what patterns are being used. When \BIBCLEAN{} is compiled with native pattern-matching code (the default), these patterns are the ones that will be used in checking value strings for valid syntax, and all of them are specified in initialization files, rather than hard-coded into the program. For further details, see Section~\ref{sec:init}. Default: {\em no}. \OPTIONITEM{[no-]read-init-files} With the negative form, suppress loading of system-, user-, and file-specific initialization files.% \index{initialization file}% \index{file!initialization} Initializations will come only from those files explicitly given by \OPTION{init-file filename} options. Default: {\em yes}. \OPTIONITEM{[no-]remove-OPT-prefixes} With the positive form, remove the \verb=OPT= prefix from each field name where the corresponding value is not an empty string.% \index{OPT- prefix@{\tt OPT-} prefix!removing} The prefix \verb=OPT= must be entirely in upper-case to be recognized. This option is for bibliographies generated with the help of the GNU Emacs% \index{GNU!Emacs}% \index{Emacs} \BibTeX{} editing support, which generates templates with optional fields identified by the \verb=OPT= prefix. Although the function \path=M-x bibtex-remove-OPT= normally bound to the keystrokes {\tt C-c C-o} does the job, users often forget, with the result that \BibTeX{} does not recognize the field name, and ignores the value string. Compare this option with \OPTION{[no-]delete-empty-values} described above. Default: {\em no}. \OPTIONITEM{[no-]scribe} With the positive form, accept input syntax conforming to the \SCRIBE{} document system. The output will be converted to conform to \BibTeX{} syntax. See Section~\ref{sec:scribe} for further details. Default: {\em no}. \OPTIONITEM{[no-]trace-file-opening} With the positive form, record in the error log file% \index{error!log file}% \index{file!error log} the names of all files which \BIBCLEAN{} attempts to open. Use this option to identify where initialization files% \index{initialization file!locating}% \index{file!initialization!locating} are located. Default: {\em no}. \OPTIONITEM{[no-]warnings} With the positive form, allow all warning messages.% \index{warning message!disabling}% \index{message!disabling warning} The negative form is not recommended since it may mask problems that should be repaired. Default: {\em yes}. \OPTIONITEM{version} Display the program version% \index{program!version} \index{version!of program} number on \path=stderr=.% \PATHINDEX{stderr} This will also include an indication of who compiled the program, the host name on which it was compiled, the time of compilation, and the type of string-value matching code selected, when that information is available to the compiler. \end{description} \section{Prettyprinting} \index{prettyprinting}% A prettyprinter for any language must be able to deal with more than just those files that strictly conform to the language grammar. For programming languages, most compilers implement language extensions that prettyprinters must recognize and try to deal with gracefully. \BIBCLEAN{} recognizes two such input languages: \BibTeX{} and \SCRIBE{}. Ideally, a prettyprinter should be able to produce output even in the presence of input errors, displaying it in such a way as to make the location of the errors more evident. \BIBCLEAN{} provides detailed error and warning messages to help pinpoint errors. With the \OPTION{file-position} command-line option, it will flag the byte, column, and line, positions of the start and end of the current token in both input and output files. Here is a summary of the actions taken by \BIBCLEAN{} on its input stream. \begin{itemize} \item Space between entries is discarded, and replaced by a single blank line. \item Space around string concatenation operators is standardized. \item Leading and trailing space in value strings is discarded, and embedded multiple spaces are collapsed to a single space. \item String lengths are tested against the limit in standard \BibTeX{}, and warnings issued when the limit is exceeded. The standard limit has proven to be too small in practice, and many sites install enlarged versions of \BibTeX{}. Perhaps \BibTeX{} version 1.0 will use more realistic values, or eliminate string length limits altogether. \item Outer parentheses in entries are standardized to braces. \item Braced value strings are standardized to quoted value strings. \item Field\slash value pairs are output on separate lines, wrapping long lines to not exceed a user-definable standard width whenever possible. \item A trailing comma is supplied after the last field\slash value assignment. This is convenient if assignments are later reordered during editing. \item \OPTION{fix-font-changes} provides for protecting value string text inside font changes from downcasing. \item Brace-level zero upper-case acronyms in titles are braced to protect from downcasing. \item \OPTION{no-par-breaks} provides a way to check for blank lines in string values, which may be indicative of unclosed delimiter errors. \item Umlaut accents, \verb=\"x=, inside value strings at brace-level zero are converted to \verb={\"x}=. This has been found to be a common user error. \BibTeX{} requires embedded quotes to be nested inside braces. \item Letter-case usage in entry and field names is standardized, so for example, \verb=mastersthesis= and \verb=MASTERSTHESIS= become \verb=MastersThesis=. \item ISBN% \index{ISBN (International Standard Book Number)}% and ISSN \index{ISSN (International Standard Serial Number)}% checksums are validated. \BibTeX{} style files that recognize field names for them are available in the TUG bibliography collection,% \index{TUG bibliography collection} and the bibliography for this document uses them. \item Name modifiers like Jr, Sr, etc.\ are recognized and handled by \OPTION{fix-names}, and names are put into a standard order, so that {\tt Bach, P.~D.~Q.} becomes {\tt P.~D.~Q.~Bach}.% \index{Bach, P. D. Q.}% \index{Schickele, Peter} \item With \OPTION{fix-initials}, uniform spacing is supplied after brace-level zero initials in personal names. \item With \OPTION{check-values}, citation key and field values are matched against patterns to catch irregularities and possible errors. \item Dates of the month, like {\tt "July 14"}, are converted to use month abbreviations, {\tt jul \# "~14"}. \item Page number ranges are converted to use en-dashes, instead of hyphens or em-dashes. \item With \OPTION{check-values}, year numbers are checked against patterns, then if no match is found, the year values are checked against reasonable limits. \item With \OPTION{trace-file-opening}, file open attempts are logged. This helps in the diagnosis of problems such as missing files, or incorrect file permissions. \item On lexing or parsing errors, \BIBCLEAN{} attempts to resynchronize by flushing the input until it finds the next line containing an initial \TT{@} character preceded by nothing other than optional white space. \item When an \TT{@} character begins a line, a new bibliography entry is assumed to have started. The current brace balance is then tested to make sure it is zero. A non-zero brace level is strongly suggestive of an error, so \BIBCLEAN{} issues an error message, and zeros the brace level. \item At end-of-file, the brace level is tested. A non-zero brace level is very likely an error, and occasions an error message. \end{itemize} \section{Pattern matching and initialization files}% \label{sec:init} \BIBCLEAN{} can be compiled with one of three different types of pattern matching;% \index{pattern matching} the choice is made by the installer at compile time: \begin{itemize} \item The original version uses explicit hand-coded tests of value-string syntax. \item The second version uses regular-expression pattern-matching% \index{regular expression!pattern matching}% \index{pattern matching!regular expression} host library routines together with regular-expression patterns that come entirely from initialization files. \item The third version uses special patterns that come entirely from initialization files. \end{itemize} The second and third versions are the ones of most interest here, because they allow the user to control what values are considered acceptable. However, command-line options can also be specified in initialization files,% \index{initialization file}% \index{file!initialization} no matter which pattern-matching choice was selected. When \BIBCLEAN{} starts, it searches for initialization files,% \index{initialization file}% \index{file!initialization} finding the first one in the system executable program search path% \index{program!search path}% \index{search path} (on \UNIX{} and IBM \PCDOS{}, \path=PATH=)% \PATHINDEX{PATH} and the first one in the \path=BIBINPUTS=% \PATHINDEX{BIBINPUTS} search path, and processes them in turn. Then, when command-line arguments% \index{options} are processed, any additional files specified by \OPTION{init-file filename} options are also processed. Finally, immediately before each named bibliography file is processed, an attempt is made to process an initialization file with the same name, but with the extension changed to \verb=.ini=.% \PATHINDEX{.ini} The default extension can be changed by a setting of the environment variable \path=BIBCLEANEXT=.% \PATHINDEX{BIBCLEANEXT} This scheme permits system-wide, user-wide, session-wide, and file-specific initialization files to be supported. When input is taken from \path=stdin=,% \PATHINDEX{stdin} there is no file-specific initialization. For precise control, the \OPTION{no-init-files} option suppresses all initialization files except those explicitly named by \OPTION{init-file filename} options, either on the command line, or in requested initialization files. Recursive execution of initialization files% \index{initialization file!nested}% \index{file!initialization!nested} with nested \OPTION{init-file filename} options is permitted; if the recursion is circular, \BIBCLEAN{} will finally get a non-fatal initialization file open failure after opening too many files. This terminates further initialization file processing. As the recursion% \index{recursion} unwinds, the files are all closed, then execution proceeds normally. An initialization file may contain empty lines, comments from percent to end of line (just like \TeX{}), option switches, and field\slash pattern or field\slash pattern\slash message assignments. Leading and trailing spaces are ignored. This is best illustrated by the short example in Table~\ref{tab:initfile}. % \begin{table}[tbh] \hrule \caption{Sample \protect\BIBCLEAN{} initialization file.}% \label{tab:initfile}% \index{initialization file!sample}% \index{file!sample initialization} \begin{verbatim} %% Start with our departmental patterns -init-file /u/math/bib/.bibcleanrc %% Make some small additions chapter = "\"D\"" %% 23 pages = "\"D--D\"" %% 23--27 volume = "\"D \\an\\d D\"" %% 11 and 12 year = \ "\"dddd, dddd, dddd\"" \ "Multiple years specified." %% 1989, 1990, 1991 -no-fix-names %% do not modify %% author/editor lists \end{verbatim} \hrule \end{table} % Long logical lines can be split into multiple physical lines by breaking at a backslash-newline% \index{backslash-newline} pair; the backslash-newline pair is discarded. This processing happens while characters are being read, before any further interpretation of the input stream. Each logical line must contain a complete option (and its value, if any), or a complete field\slash pattern pair, or a field\slash pattern\slash message triple. Comments are stripped during the parsing of the field, pattern, and message values. The comment start symbol is not recognized inside quoted strings, so it can be freely used in such strings. Comments on logical lines that were input as multiple physical lines via the backslash-newline% \index{backslash-newline} convention must appear on the last physical line; otherwise, the remaining physical lines will become part of the comment. Pattern strings must be enclosed in quotation marks; within such strings, a backslash starts an escape mechanism that is commonly used in \UNIX{} software. The recognized escape sequences% \index{escape sequence} are given in Table~\ref{tab:escape}. Backslash followed by any other character produces just that character. Thus, \ESCAPE{\char34} produces a quotation mark, and \ESCAPE{\char92} produces a single backslash. \begin{table}[tbh] \hrule \caption{Escape sequences in quoted strings.}% \index{escape sequence!table}% \label{tab:escape} \begin{center} \begin{tabular}{lp{2in}} \ESCAPE{a} & alarm bell (octal 007)\\ % \ESCAPE{b} & backspace (octal 010)\\ % \ESCAPE{f} & formfeed (octal 014)\\ % \ESCAPE{n} & newline (octal 012)\\ % \ESCAPE{r} & carriage return (octal 015)\\ % \ESCAPE{t} & horizontal tab (octal 011)\\ % \ESCAPE{v} & vertical tab (octal 013)\\ % \ESCAPE{ooo} & character number octal \verb=ooo= (e.g.\ \ESCAPE{012} is linefeed). Up to 3 octal digits may be used.\\ % \ESCAPE{0xhh} & character number hexadecimal \verb=hh= (e.g.\ \ESCAPE{0x0a} is linefeed). \verb=xhh= may be in either letter case. Any number of hexadecimal digits may be used. \end{tabular} \end{center} \hrule \end{table} An ASCII NUL% \index{NUL (0)!in string} (\ESCAPE{0}) in a string will terminate it; this is a feature of the C programming language in which \BIBCLEAN{} is implemented. Field\slash pattern pairs can be separated by arbitrary space, and optionally, either an equals sign or colon functioning as an assignment operator. Thus, the following are equivalent: % \begin{verbatim} pages="\"D--D\"" pages:"\"D--D\"" pages "\"D--D\"" pages = "\"D--D\"" pages : "\"D--D\"" pages "\"D--D\"" \end{verbatim} % Each field name can have an arbitrary number of patterns associated with it; however, they must be specified in separate field\slash pattern assignments. An empty pattern string causes previously-loaded patterns for that field name to be forgotten. This feature permits an initialization file to completely discard patterns from earlier initialization files. Patterns for value strings are represented in a tiny special-purpose language that is both convenient and suitable for bibliography value-string syntax checking. While not as powerful as the language of regular-expression patterns, its parsing can be portably implemented in less than 3\% of the code in a widely-used regular-expression parser (the GNU% \index{GNU!regexp package@{\tt regexp} package} \path=regexp=% \PATHINDEX{regexp} package). The patterns are represented by the special characters given in Table~\ref{tab:patterns}. \begin{table}[tbh] \hrule \caption{Initialization file pattern characters.}% \index{initialization file!pattern characters}% \index{file!initialization!pattern characters}% \label{tab:patterns} \begin{center} \begin{tabular}{lp{2in}} \verb*= = & one or more spaces\\ % \TT{a} & exactly one letter\\ % \TT{A} & one or more letters\\ % \TT{d} & exactly one digit\\ % \TT{D} & one or more digits\\ % \TT{r} & exactly one Roman numeral\\ % \TT{R} & one or more Roman numerals (i.e. a Roman number)\\ % \TT{w} & exactly one word (one or more letters and digits)\\ % \TT{W} & one or more words, separated by space, beginning and ending with a word\\ % \TT{.} & one `special' character, one of the characters \verb*= !#()*+,-./:;?[]~=, a subset of punctuation characters that are typically used in string values\\ % \TT{:} & one or more `special' characters\\ % \TT{X} & one or more `special'-separated words, beginning and ending with a word\\ % \ESCAPE{x} & exactly one \TT{x} (\TT{x} is any character), possibly with an escape sequence interpretation given earlier\\ % \TT{x} & exactly the character \TT{x} (\TT{x} is anything but one of these pattern characters: \verb*=aAdDrRwW.: \=) \end{tabular} \end{center} \hrule \end{table} The \TT{X} pattern character is very powerful, but generally inadvisable, since it will match almost anything likely to be found in a \BibTeX{} value string. The reason for providing pattern matching on the value strings is to uncover possible errors, not mask them. There is no provision for specifying ranges or repetitions of characters, but this can usually be done with separate patterns. It is a good idea to accompany the pattern with a comment showing the kind of thing it is expected to match. Here is a portion of an initialization file giving a few of the patterns used to match \TT{number} value strings: % \begin{verbatim} number = "\"D\"" %% 23 number = "\"A AD\"" %% PN LPS5001 number = "\"A D(D)\"" %% RJ 34(49) number = "\"A D\"" %% XNSS 288811 number = "\"A D\\.D\"" %% Version 3.20 number = "\"A-A-D-D\"" %% UMIAC-TR-89-11 number = "\"A-A-D\"" %% CS-TR-2189 number = "\"A-A-D\\.D\"" %% CS-TR-21.7 \end{verbatim} % For a bibliography that contains only \verb=Article= entries, this list should probably be reduced to just the first pattern, so that anything other than a digit string fails the pattern-match test. This is easily done by keeping bibliography-specific patterns% \index{bibliography-specific pattern}% \index{pattern!bibliography-specific} in a corresponding file with extension \verb=.ini=,% \PATHINDEX{.ini} since that file is read automatically. You should be sure to use empty pattern% \index{empty!pattern}% \index{pattern!empty} strings in this pattern file to discard patterns from earlier initialization files. The value strings passed to the pattern matcher contain surrounding quotes, so the patterns should also.% \index{quote!in pattern}% \index{pattern!quotes in} However, you could use a pattern specification like \verb="\"D"= to match an initial digit string followed by anything else; the omission of the final quotation mark \ESCAPE{\char34} in the pattern allows the match to succeed without checking that the next character in the value string is a quotation mark. Because the value strings are intended to be processed by \TeX, the pattern matching ignores braces,% \index{pattern matching!brace ignored in}% \index{brace!ignored in pattern matching} and \TeX{} control sequences, together with any space following those control sequences. Spaces around braces are preserved.% \index{brace!space around} This convention allows the pattern fragment \verb=A-AD-D= to match the value string \path=TN-K\slash 27-70=, because the value is implicitly collapsed to \path=TN-K27-70= during the matching operation. \BIBCLEAN{}'s normal action when a string value fails to match any of the corresponding patterns is to issue a warning message similar to this: {\tt Unexpected value in ``year = "192"''}. In most cases, that is sufficient to alert the user to a problem. In some cases, however, it may be desirable to associate a different message with a particular pattern.% \index{pattern!changing warning message}% \index{warning message!changing} This can be done by supplying a message string following the pattern string. Format items% \index{format!item} \FORMAT{\%} (single percent), \FORMAT{e} (entry name), \FORMAT{f} (field name), \FORMAT{k} (citation key), and \FORMAT{v} (string value) are available to get current values expanded in the messages. Here is an example: % \begin{verbatim} chapter = "\"D:D\"" \ "Colon found in ``%f = %v''" %% 23:2 \end{verbatim} % To be consistent with other messages output by \BIBCLEAN{}, the message string should not end with punctuation. If you wish to make the message an error, rather than just a warning, begin it with a query% \index{query (?)!in messages} (?),% \index{?} like this: % \begin{verbatim} chapter = "\"D:D\"" \ "?Colon found in ``%f = %v''" %% 23:2 \end{verbatim} % The query will {\em not\/} be included in the output message. Escape sequences% \index{escape sequence!in message text} are supported in message strings, just as they are in pattern strings. You can use this to advantage for fancy things, such as terminal display mode control. If you rewrite the previous example as % \begin{verbatim} chapter = "\"D:D\"" \ "?\033[7mColon found \ in ``%f = %v''\033[0m" %% 23:2 \end{verbatim} % the error message will appear in inverse video on display screens that support ANSI terminal control sequences. Such practice is not normally recommended, since it may have undesirable effects on some output devices. Nevertheless, you may find it useful for restricted applications. For some types of bibliography fields, \BIBCLEAN{} contains special-purpose code to supplement or replace the pattern matching: \begin{itemize} \item \TT{ISBN} and \TT{ISSN} field values are handled this way because their validation requires evaluation of checksums% \index{checksum!in ISBN and ISSN@in {\tt ISBN} and {\tt ISSN}} that cannot be expressed by simple patterns; no patterns are even used in these two cases. \item When \BIBCLEAN{} is compiled with pattern-matching code support, \TT{chapter}, \TT{number}, \TT{pages}, and \TT{volume} values are checked only by pattern matching. \item \TT{month} values are first checked against the standard \BibTeX{} month name abbreviations, and only if no match is found are patterns then used. \item \TT{year} values are first checked against patterns, then if no match is found, the year numbers are found and converted to integer values for testing against reasonable bounds. \end{itemize} Values for other fields are checked only against patterns. You can provide patterns for any field you like, even ones \BIBCLEAN{} does not already know about. New ones are simply added to an internal table that is searched for each string to be validated. The special field, \TT{key}, represents the bibliographic citation key.% \index{citation!key} It can be given patterns, like any other field. Here is an initialization file pattern assignment that will match an author name, a colon, an alphabetic string, and a two-digit year: % \begin{verbatim} key = "A:Add" %% Knuth:TB86 \end{verbatim} % Notice that no quotation marks are included in the pattern, because the citation keys are not quoted. You can use such patterns to help enforce uniform naming conventions for citation keys, which is increasingly important as your bibliography data base grows. \section{Lexical analysis}\label{sec:lexer} The command-line option \OPTION{no-prettyprint} requests \BIBCLEAN{} to function as a lexical analyzer% \index{lexical analyzer} instead of as a prettyprinter.% \index{prettyprinter} Its output is then a stream of lines, each of which contains one token. For the bibliography entries shown in Section~\ref{sec:intro}, here is what the output looks like; the long lines have been wrapped by a backslash-newline% \index{backslash-newline} to fit in these narrow journal columns: % \begin{verbatim} # line 1 "stdin" 2 AT "@" 18 STRING "String" 11 LBRACE "{" 1 ABBREV "pub-AW" 6 EQUALS "=" # line 2 "stdin" 19 VALUE "\"Ad{\\-d}i{\\-s}on-Wes{\ \\-l}ey\"" 15 RBRACE "}" # line 4 "stdin" 13 NEWLINE "\n" 13 NEWLINE "\n" 2 AT "@" 5 ENTRY "Book" 11 LBRACE "{" 10 KEY "Lamport:LDP85" 3 COMMA "," 13 NEWLINE "\n" # line 5 "stdin" 7 FIELD "author" 6 EQUALS "=" 19 VALUE "\"Leslie Lamport\"" 3 COMMA "," 13 NEWLINE "\n" # line 6 "stdin" 7 FIELD "title" 6 EQUALS "=" # line 8 "stdin" 19 VALUE "\"{\\LaTeX}---{A} Docume\ nt Preparation System---User's Guide and \ Reference Manual\"" 3 COMMA "," 13 NEWLINE "\n" # line 9 "stdin" 7 FIELD "publisher" 6 EQUALS "=" 1 ABBREV "pub-AW" 3 COMMA "," 13 NEWLINE "\n" # line 10 "stdin" 7 FIELD "year" 6 EQUALS "=" 19 VALUE "\"1985\"" 3 COMMA "," 13 NEWLINE "\n" # line 11 "stdin" 7 FIELD "ISBN" 6 EQUALS "=" 19 VALUE "\"0-201-15790-X\"" 3 COMMA "," 13 NEWLINE "\n" # line 12 "stdin" 15 RBRACE "}" # line 13 "stdin" 13 NEWLINE "\n" \end{verbatim} \TOKENINDEX{TOKEN_ABBREV}% \TOKENINDEX{TOKEN_AT}% \TOKENINDEX{TOKEN_COMMA}% \TOKENINDEX{TOKEN_ENTRY}% \TOKENINDEX{TOKEN_EQUALS}% \TOKENINDEX{TOKEN_FIELD}% \TOKENINDEX{TOKEN_KEY}% \TOKENINDEX{TOKEN_LBRACE}% \TOKENINDEX{TOKEN_NEWLINE}% \TOKENINDEX{TOKEN_RBRACE}% \TOKENINDEX{TOKEN_STRING}% \TOKENINDEX{TOKEN_VALUE}% \index{Lamport, Leslie}% % Each line begins with a small integer token type% \index{token!type} number for the convenience of computer programs, then a token type name for human readers, followed by a quoted token string.% \index{token!string} Lines beginning with a sharp,% \index{sharp@sharp ({\tt\char35})} \verb=#=, are ANSI\slash ISO Standard C preprocessor% \index{preprocessor} line-number directives% \index{line!number directive} \cite[Section~3.8.4]{ANSI:c89}% \index{ANSI/ISO Standard C@ANSI\slash ISO Standard C} to record the input line number and file name. There are currently 19 token types% \index{token!type} defined in the documentation that accompanies \BIBCLEAN{}. Because \BibTeX{} styles can define new field names, there is little point in the lexical analyzer of attempting to classify field names more precisely; that job is left for other software. Inside quoted strings, the ANSI\slash ISO Standard C \cite[Section~3.1.3.4]{ANSI:c89}% \index{ANSI/ISO Standard C@ANSI\slash ISO Standard C} backslash escape sequences% \index{escape sequence} shown in Table~\ref{tab:escape} on page~\pageref{tab:escape} are used to encode non-printable characters. In this way, a multi-line string value can be represented on a single line. This is convenient for string-searching applications. If the long output lines prove a problem on some systems, the \OPTION{max-width nnn} command-line option can be used to wrap lines% \index{wrapping!of long lines}% \index{line!wrapping} at a specified column number by the insertion of a backslash-newline% \index{backslash-newline} pair. As a simple example of how this token stream might be processed, the \UNIX{} command pipeline% \index{pipeline} % \begin{verbatim} bibclean -no-prettyprint mylib.bib | \ awk '$2 == "KEY" {print $3}' | \ sed -e 's/"//g' | \ sort \end{verbatim} will extract a sorted list of all citation keys in the file \path=mylib.bib=. As a more complex example, consider locating duplicate abbreviations and citation keys in a large collection of bibliography files. This is a daunting task if it must be done by visual scanning of the files. It took me less than 10 minutes to write and debug a 35-line \PROGRAM{nawk} \cite{Aho:APL87}% \index{Aho, Alfred V.}% \index{Kernighan, Brian W.}% \index{Weinberger, Peter J.} program (15 lines of comments, 20 of code) that processed the token stream from \BIBCLEAN{} and printed warnings about such duplicates. The processing steps can be represented by the simple \UNIX{} pipeline % \begin{verbatim} bibclean -no-prettyprint bibfiles | \ tr '[A-Z]' '[a-z]' | \ nawk -f bibdup.awk \end{verbatim} \PATHINDEX{tr}% \PATHINDEX{bibclean}% \PATHINDEX{bibdup.awk}% \PATHINDEX{nawk}% \PATHINDEX{tr}% % \noindent which is most conveniently encapsulated in a command script so that it can be invoked more simply as % \begin{verbatim} bibdup *.bib \end{verbatim} % \PATHINDEX{bibdup}% \noindent to produce output like this: % \begin{verbatim} Duplicate string abbreviation ["pub-aw"]: # line 1 "ll.bib" # line 141 "master.bib" Duplicate key ["lamport:ldp85"]: # line 4 "ll.bib" # line 4172 "master.bib" ... \end{verbatim} \BibTeX{}'s grammar is somewhat hazy, so it is not easy to perform a lexical analysis without some context sensitivity. \BIBCLEAN{} therefore produces the lexical token stream merely as an alternate output format. In particular, this means that any requested run-time formatting options will have been applied to the tokens {\em before\/} they are output to the lexical token stream. For example, a \SCRIBE{} bibliography file can be converted to a \BibTeX{} token stream so that software that processes \BIBCLEAN{}'s output need not be \SCRIBE{}-aware. \section{Portability} \index{portability}% \index{testing}% \BIBCLEAN{} is written in ANSI\slash ISO Standard C \cite{ANSI:c89}% \index{ANSI/ISO Standard C@ANSI\slash ISO Standard C} with great care taken to produce maximum portability. It has been successfully tested with more than 30 different compilers on all major workstation, and one mainframe, \UNIX{} systems, plus \VAX{} \VMS{}, \PCDOS{}, \OSTWO{}, and Atari% \index{Atari} \TOS{}. The C programming language has become the language of choice today for most personal computer and \UNIX{} software development, and the increasing availability of C implementations conforming to the 1989 Standard \cite{ANSI:c89}% \index{ANSI/ISO Standard C@ANSI\slash ISO Standard C} makes it easier to write code that will compile and run without modification on a wide variety of systems. C does not have Pascal's% \index{Pascal} problems with character strings and dynamic memory allocation that forced Don Knuth% \index{Knuth, Donald E.} to implement the \WEB{} string pool% \index{string!pool} feature and to use compile-time array allocation in the \TeX{} software development. C's rich operator syntax, its powerful run-time library, and generally excellent operating-system interfaces have made it widely popular. More than a million copies of the first edition of {\em The C Programming Language\/} book \cite{Kernighan:CPL78}% \index{Kernighan, Brian W.}% \index{Ritchie, Dennis M.} have been sold, and the second edition \cite{Kernighan:CPL88} may do even better. Nevertheless, C has some serious problems. Philippe Kahn,% \index{Kahn, Philippe} the founder of Borland International,% \index{Borland International} has called C a {\em write-only\/} language. Two books have been written about its syntactical peculiarities \cite{Feuer:CPB89,% Koenig:CTP89},% \index{Feuer, Alan~R.}% \index{Koenig, Andrew} and one of them has already appeared in a second edition. The only way to overcome these problems is meticulous care in programming, and experience with as many compilers and computer architectures as possible. Several books offer valuable advice on C portability \cite{Harbison:CAR91,% Jaeschke:PCL89,% Lapin:PCU87,% Plauger:SCL92,% Rabinowitz:PC90,% Rochkind:AUP85,% Stevens:UNP90}. \index{Harbison, Samuel P.}% \index{Steele Jr., Guy L.}% \index{Jaeschke, Rex}% \index{Lapin, J. E.}% \index{Plauger, P. J.}% \index{Rabinowitz, Henry}% \index{Schaap, Chaim}% \index{Rochkind, Marc J.}% \index{Stevens, W. Richard} C++% \index{C++} \cite{Ellis:ACR90,% Stroustrup:CPL91}% \index{Ellis, Margaret A.}% \index{Stroustrup, Bjarne} is an extension of C to support object-oriented programming,% \index{object-oriented programming} and has an enthusiastic following. ANSI\slash ISO standardization efforts are in progress, sadly while the language is still evolving. From the point of view of a C programmer, the advantage of C++ over C is its much stricter checking of type conversions and intermodule interfaces. \BIBCLEAN{} has been carefully written to be compilable under C++ as well as C, and to date, has been tested with more than a dozen C++ and Objective C% \index{Objective C} (another C superset) compilers. % DEC Alpha AXP OSF/1 % g++ (DECstation ULTRIX, NeXT, SGI, Sun) % HP BSD 4.3 % HP UX % IBM 3090 % IBM PS/2 % IBM RS/6000 % SGI % Sun % Turbo C++ All of the extra features of the C++ language are strictly avoided, because using them would seriously limit \BIBCLEAN{}'s portability. Not only is the syntax of the C++ language under evolution, but the C++ class libraries% \index{class library} are for the most part {\em completely dependent\/} on the particular implementation. Microsoft's 1020-page documentation of its C++ class library is 10\% larger than that of its C run-time library. Nevertheless, I {\em strongly recommend\/} use of C++ compilers in preference to C compilers, so as to catch bugs at compile time that would otherwise not be found until post-mortem dump% \index{dump!post-mortem}% \index{post-mortem dump}% \index{core dump} time, or when the code is ported to a new architecture. \section{\protect\SCRIBE{} bibliography format}% \label{sec:scribe} The \SCRIBE{} document formatting system \cite{Reid:SUM80}% \index{Reid, Brian} greatly influenced \LaTeX{} and \BibTeX{}, as well as the GNU Emacs% \index{GNU!Emacs}% \index{Emacs} \TeX{}info system.% \index{GNU!texinfo@\protect\TeX{}info}% \index{texinfo@\protect\TeX{}info} With care, it is possible to share bibliography files between \SCRIBE{} and \BibTeX{}. Nevertheless, there are some differences, so here is a summary of features of the \SCRIBE{} bibliography file format. We record them because they are difficult to determine from the published manual, and because readers may sometimes acquire files in this format without having prior exposure to \SCRIBE{}. \begin{enumerate} \item Letter case is not significant in field names and entry names, but case is preserved in value strings. \item In field\slash value pairs, the field and value may be separated by one of three characters: \verb|=|, \verb=/=, or \verb*= = (space). Space may optionally surround these separators. \item Value delimiters% \index{delimiters!in scribe@in \protect\SCRIBE{}} are any of these seven pairs: \verb={ }=, \verb=[ ]=, \verb=( )=, \verb=< >=, \verb=' '=, \verb=" "=, and \verb=` `=. \item\label{item:4} Value delimiters may not be nested, even though with the first four delimiter pairs, nested balanced delimiters would be unambiguous. \item Delimiters can be omitted around values that contain only letters, digits, sharp (\verb=#=), ampersand (\verb=&=), period (\verb=.=), and percent (\verb=%=). \item Outside of delimited values, a literal at-sign% \index{at-sign} (\TT{\char64}) is represented by doubled at-signs (\TT{\char64\char64}). \item Bibliography entries begin with \TT{\char64name}, as for \BibTeX{}, but any of the seven \SCRIBE{} value delimiter pairs may be used to surround the values in field\slash value pairs. As in (\ref{item:4}), nested delimiters are forbidden. \item Arbitrary space may separate entry names from the following delimiters. \item \TT{\char64Comment} is a special command whose delimited value is discarded. As in (\ref{item:4}), nested delimiters are forbidden. \item The special form % \begin{verbatim} @Begin{comment} ... @End{comment} \end{verbatim} % permits encapsulating arbitrary text containing any characters or delimiters, other than \TT{\char64End\optbreak\protect\{comment\protect\}}. Any of the seven delimiter pairs may be used around the word \TT{comment} following the \TT{\char64Begin} or \TT{\char64End}; the delimiters in the two cases need not be the same, and consequently, \TT{\char64Begin\optbreak\protect\{comment\protect\}}\slash \TT{\char64End\optbreak\protect\{comment\protect\}} pairs may not be nested. \item The \TT{key} field is required in each bibliography entry. \item A backslashed quote% \index{backslash-quote}% \index{escape sequence} in a string will be assumed to be a \TeX{} accent, and braced appropriately. While such accents do not conform to \SCRIBE{} syntax, \SCRIBE{}-format bibliographies have been found that appear to be intended for \TeX{} processing. \end{enumerate} Because of this loose syntax, \BIBCLEAN{}'s normal error detection heuristics are less effective, and consequently, \SCRIBE{} mode input is not the default; it must be explicitly requested. \section{Recommendations for \protect\BibTeX{} design}% \label{sec:recommendations} The documentation available for \BibTeX{} leaves several points about the input syntax unclear, and I had to obtain answers to the following questions by experiment: \begin{itemize} \item Can an at-sign occur inside a \TT{\char64Comment\optbreak\protect\{...\protect\}}? {\em No}. \item Can string abbreviation names be used on the right-hand side of string definitions? {\em Yes}. \item Can the argument of \TT{\char64String} be empty? {\em No}. \item Can a citation key be omitted in an entry? {\em No}. \item Can the list of assignments in an entry be empty? {\em Yes}. \item Can a \TT{\char64Comment\optbreak\protect\{...\protect\}} occur between arbitrary tokens? {\em No}. \item Are newlines preserved in the argument of a \TT{\char64Preamble\optbreak\protect\{...\protect\}}? The answer is relevant if the user includes \TeX{} comments in the preamble material. {\em No}. \end{itemize} I view the experimental answers to these questions as pure happenstance, and could reasonably argue for the opposite answers to the ones obtained. \subsection*{Grammar} \index{grammar}% The most important recommendation that I can make for the next version of \BibTeX{} is that it {\em must\/} have a rigorous grammar, including a well-defined comment syntax. The grammar can almost be of the simple class LL(0)% \index{LL(0) grammar}% \index{grammar!LL(0)} \cite{Aho:CPT86},% \index{Aho, Alfred V.}% \index{Sethi, Ravi}% \index{Ullman, Jeffrey D.} requiring no lookahead during parsing, and one-character lookahead during lexical analysis. However, the presence of the string concatenation operator complicates things sufficiently to require at least an LL(1) grammar.% \index{LL(1)!grammar}% \index{grammar!LL(1)} Such grammars are straightforward to handle with either hand-coded parsers, or with parsers automatically generated from grammar files by compiler development tools like the \UNIX{} \PROGRAM{lex} \cite{Lesk:lex}% \index{Lesk, Michael E.}% \index{Schmidt, Eric} and \PROGRAM{yacc} \cite{Johnson:yacc,% Levine:LY92,% Mason:LY90,% Schreiner:ICC85}% \index{Johnson, Steven C.}% \index{Levine, John R.}% \index{Mason, Tony}% \index{Brown, Doug}% \index{Schreiner, Axel T.}% \index{Friedman, Jr., H. George} programs, or the Free Software Foundation% \index{Free Software Foundation} equivalents, \PROGRAM{flex} and \PROGRAM{bison}.% \PROGRAM{yacc} and \PROGRAM{bison} implement LALR(1) parsers;% \index{LALR(1)!parser}% \index{parser!LALR(1)} the acronym stands for ``Look-Ahead at most 1 token with a Left-to-Right derivation''. These are simpler than the LR($k$) grammars% \index{LR($k$) grammar}% \index{grammar!LR($k$)} introduced by none other than the author of \TeX{} in the fundamental paper on the theory of parsing \cite{Knuth:j-IC-8-6-607}.% \index{Knuth, Donald E.} Nevertheless, they are sufficient for a broad class of language grammars, including most major programming languages, and importantly, they produce compact, efficient, fast, and reliable parsers. LL(1) grammars% \index{LL(1)!grammar}% \index{grammar!LL(1)} are a special case of LALR(1) grammars,% \index{LALR(1)!grammar}% \index{grammar!LALR(1)} and we will later define a \BibTeX{} grammar in LALR(1) form in Section~\ref{sec:yacc-grammar}. \subsection*{Comment syntax} The comment syntax% \index{comment!syntax} should preferably be identical to that of \TeX{}, so that a comment runs from percent to end-of-line, and then {\em additionally gobbles all leading horizontal space on the next line, up to, but not including, its end-of-line}. This permits breaking of long lines without having to destroy indentation that is so necessary for readability. Percent-initiated comments are already supported in \BibTeX{} style files, though such comments end after the first following newline. For \SCRIBE{} compatibility, \BibTeX{} should also support a \TT{\char64Comment\optbreak\protect\{...\protect\}} entry type. This will require additions to {\em all\/} \BibTeX{} style files, since the entry types are known there, and not in the \BibTeX{} code itself. \BibTeX{} 0.99c already knows about \TT{\char64Comment\optbreak\protect\{...\protect\}}, but the \WEB{} code section ``Process a \verb=comment= command'' will have to be extended to deal with the grammar changes. It is important that \BibTeX{} not discard \TT{\char64Comment\optbreak\protect\{...\protect\}} entries, because it would then not be possible to write a \BibTeX{} style file that converted a bibliography file to another format without loss of information. One such style already exists to convert \BibTeX{} files to \UNIX{} \PROGRAM{bib}\slash \PROGRAM{refer} format. \subsection*{Characters in names} The characters that can appear in key, entry, and field names {\em must\/} be defined by enumeration, rather than by exclusion, as is currently done \cite[Section~B.1.3]{Lamport:LDP85}.% \index{Lamport, Leslie} The reason is that character sets vary between computers, and the new, and very much larger, ISO10646M character set% \index{ISO10646M character set} may be widely available in this decade. These variations make the set of admissible name characters vary between systems, compromising portability. I strongly recommend following the conventions for identifiers in widely-used programming languages to define the grammar of key, entry, and field names. It seems to me that letters, digits, colon, hyphen, and possibly plus and slash, should be adequate, and names should be required to begin with a letter. `Letter' here should include {\em only\/} the 26 Roman letters `A' through `Z', because allowing letters from other alphabets opens a horrid can of worms that will seriously impact portability of bibliography files until the computer world has a single uniform character set. I tested this set of characters against 92~500 entries in local bibliography files, and found only a few keys that used other characters: the new ones were period% \index{period!in citation key} and apostrophe% \index{apostrophe!in citation key} (e.g.\ O'Malley:TB92). They might therefore be permitted as well, though I would prefer to omit them, and retrofit changes in a few citation keys. The characters permitted in citation keys should be the same as those in entry and field names, so as to avoid user confusion. \subsection*{Error reporting} \index{error!reporting}% When \BibTeX{} begins to collect a token, it should record the current line number.% \index{line!number} When an unclosed string% \index{runaway string argument}% \index{string!runaway} later causes internal buffer overflow,% \index{buffer overflow}% \index{overflow of string buffer} it could report something like {\tt String buffer overflow on input lines 24--82} that would better help locate the offending string by giving its starting and ending line numbers. To simplify error recovery in such cases, \BibTeX{} could additionally require that the \TT{\char64} character that starts a new entry must be the first non-space character on a line. \subsection*{File inclusion} \BibTeX{} sorely needs a file inclusion% \index{file!inclusion} facility. With \BibTeX{} 0.99c, this feature is available in a crude fashion by listing several files in the \CS{bibliography} command. However, this is not sufficiently general, and requires unnecessary knowledge on the part of the user of the bibliography. The author of a \BibTeX{} file should be free to restructure it into subfiles without requiring modifications to all documents that use it. File inclusion is important to allow sharing of common material, such as \TT{\char64String\optbreak\protect\{...\protect\}} definitions. \SCRIBE{} uses the form % \begin{verbatim} @Include{filename} \end{verbatim} % and \BibTeX{} should too. It must be possible to nest file inclusions to a reasonable depth, at least five levels. \section{A lexical grammar for \protect \BibTeX{}}% \label{sec:lex-grammar} \index{grammar!lexical}% \index{lexical grammar}% To test the recommendations of Section~\ref{sec:recommendations}, I wrote and tested a \PROGRAM{lex} grammar for \BibTeX{}. It took just 22 rules to identify the 19 basic token types. The complete \PROGRAM{lex} file was about 510 lines long, with about 340 lines of C code mostly concerned with the input and output of strings, and 120 lines of function and variable declarations. After \PROGRAM{lex} processing, the complete C program was about 1130 lines long; with \PROGRAM{flex}, it is 1700 lines long.% \index{grammar!size of} This program is named \PROGRAM{biblex}, and its output is compatible with that of \BIBCLEAN{} with the \OPTION{no-prettyprint} option. However, it offers none of \BIBCLEAN{}'s other services. The \PROGRAM{lex} grammar is presented in this section in the style of literate programming,% \index{literate programming} with grammar rules interspersed with descriptive text. The index at the end of this document provides an essential feature of a literate program. To my knowledge, no \WEB{} facility yet exists for \PROGRAM{lex} and \PROGRAM{yacc}, so this literate program must be handcrafted. \subsection*{File structure} A \PROGRAM{lex} file has this general structure: \begin{verbatim} definitions %% rules %% user functions \end{verbatim} \index{\%\%@{\protect\tt \%\%}} C declarations and definitions can be included in the declarations part if they are enclosed in \verb=%{=% \index{\%(@{\protect\tt \%\{\iffalse "}\fi}} and \verb=%}=.% \index{\%)@{\protect\tt \iffalse "{\fi \%\}}} Such text is copied verbatim to the output code file, together with additional \PROGRAM{lex}-supplied header code. Running \PROGRAM{lex} on this file produces a C file that can be compiled and linked with a main program from the \PROGRAM{lex} library to produce a working lexical analyzer. Alternatively, the user can write a customized main program which is linked with the \PROGRAM{lex}-generated code to make a functional lexer. In the following subsections, we describe the contents of the definitions and rules parts, but omit the user functions, since they are not relevant to understanding the grammar. \subsection*{Macro definitions} The \PROGRAM{lex} grammar begins with macro definitions.% \index{macro definition!lex@{\tt lex}} \PROGRAM{lex} macros are single letters followed by a regular expression that defines them. In regular expressions,% \index{regular expression!syntax of} square brackets delimit sets of characters, hyphen is used for character ranges inside sets, asterisk means zero or more of the preceding pattern, and plus means one or more. A period% \index{period!in regular expression} represents any character other than a newline. \PROGRAM{lex} macro names are braced% \index{macro use!lex@{\tt lex}} to request expansion when they are used in grammar rules. The first macro, \MACRO{N}, represents the set of characters permitted in \BibTeX{} names of abbreviations, citation keys, entries, and fields. If this set is ever modified, this is the {\em only\/} place where that job has to be done. \begin{verbatim} N [A-Za-z][---A-Za-z0-9:.+/']* \end{verbatim} \noindent It is not reasonable to make this set differ for these four different uses, because the differences are insufficient to distinguish between them lexically. We'll see later that we have to examine surrounding context to tell them apart. Macro \MACRO{O} represents the set of open delimiters that start a \BibTeX{} entry argument. We could extend this grammar for \SCRIBE{} by adding additional characters to the set. \begin{verbatim} O [({] \end{verbatim} Macro \MACRO{W} represents a single horizontal space character.% \index{horizontal space character} \begin{verbatim} W [ \f\r\t\013] \end{verbatim} \noindent Notice that we include formfeed,% \index{formfeed} \ESCAPE{f}, and vertical tab,% \index{vertical!tab} \ESCAPE{v}, in the set of horizontal space characters, even though they produce vertical motion on an output device. The reason is that we want to treat them just like blanks, and distinguish them from newlines, which are handled separately. \PROGRAM{lex} does not recognize the escape sequence \ESCAPE{v}, so we have to reencode it in octal as \ESCAPE{013}. Carriage return,% \index{carriage return} \ESCAPE{r}, is not normally used in \UNIX{} text files, but is common in some other operating systems. On the Apple Macintosh,% \index{Apple Macintosh}% \index{Macintosh!Apple} carriage return is used instead of newline as an end-of-line marker. Fortunately, this will be transparent to us, because the C language requires \cite[Section~2.2.2]{ANSI:c89}% \index{ANSI/ISO Standard C@ANSI\slash ISO Standard C} that the implementation map host line terminators to newline on input, and newline back to host line terminators on output, so we will never see carriage returns on that system. The last macro, \MACRO{S}, represents optional horizontal space. \begin{verbatim} S {W}* \end{verbatim} \subsection*{Format of grammar rules} \index{format!of grammar rules}% \index{grammar!format of rules}% The remainder of the grammar consists of pairs of regular expression patterns and C code to execute when the pattern is matched. \PROGRAM{lex} uses a ``maximal munch'' strategy in matching the longest possible sequence to handle the case where two rules have common leading patterns. In the grammar file, the pairs are each written on a single line, but we wrap lines% \index{wrapping!of long lines}% \index{line!wrapping} here to fit in the narrow journal columns, with the backslash-newline% \index{backslash-newline} convention used earlier. \subsection*{{\tt @} token} The first grammar rule says that an \TT{\char64} character should be recognized as the token named \TOKEN{TOKEN_AT}. \begin{verbatim} [@] RETURN (out_token(TOKEN_AT)); \end{verbatim} \MACROINDEX{RETURN}% \FUNCTIONINDEX{out_token}% \TOKENINDEX{TOKEN_AT}% On a successful match, the output function optionally emits the token, then returns its argument as a function value which the lexer in turn returns to the parser. The C \TT{return} statement is hidden inside the \MACRO{RETURN} macro, because for \PROGRAM{yacc} and \PROGRAM{bison}, we need to bias \BIBCLEAN{}'s small integer token values to move them beyond the range of character ordinals. \subsection*{{\tt Comment}, {\tt Include}, {\tt Preamble}, and {\tt String} tokens} The next four rules ignore letter case in matching the words \TT{Comment}, \TT{Include}, \TT{Preamble}, or \TT{String}. If they follow an \verb=@= character, they are identified as special tokens; otherwise, they are regarded as string abbreviation names. \begin{verbatim} [Cc][Oo][Mm][Mm][Ee][Nn][Tt] \ RETURN ((last_token == TOKEN_AT) ? out_token(TOKEN_COMMENT) : out_token(TOKEN_ABBREV)); [Ii][Nn][Cc][Ll][Uu][Dd][Ee]/{S}{O} \ RETURN ((last_token == TOKEN_AT) ? out_token(TOKEN_INCLUDE) : out_token(TOKEN_ABBREV)); [Pp][Rr][Ee][Aa][Mm][Bb][Ll][Ee]/{S}{O} \ RETURN ((last_token == TOKEN_AT) ? out_token(TOKEN_PREAMBLE) : out_token(TOKEN_ABBREV)); [Ss][Tt][Rr][Ii][Nn][Gg]/{S}{O} \ RETURN ((last_token == TOKEN_AT) ? out_token(TOKEN_STRING) : out_token(TOKEN_ABBREV)); \end{verbatim} \MACROINDEX{RETURN}% \VARIABLEINDEX{last_token}% \FUNCTIONINDEX{out_token}% \TOKENINDEX{TOKEN_AT}% \TOKENINDEX{TOKEN_COMMENT}% \TOKENINDEX{TOKEN_INCLUDE}% \TOKENINDEX{TOKEN_PREAMBLE}% \TOKENINDEX{TOKEN_STRING}% Although \PROGRAM{lex} supports examination of trailing context in order to identify tokens more precisely, the presence of arbitrary whitespace and in-line comments in this grammar makes it impossible to use this feature. The output routines remember the last non-space, non-comment token seen in order to make use of leading context to assist in token identification. \subsection*{Abbreviation, entry, field, and key tokens} Several token types are recognized by a match with the name macro, \MACRO{N}. Since the same set of characters can occur in abbreviations,% \index{abbreviation} entry names,% \index{entry!name} field names,% \index{field name} and key names, \index{key name} we have to use the record of leading context to distinguish between the various possibilities. \begin{verbatim} {N} { if (last_object == TOKEN_STRING) RETURN(out_token(TOKEN_ABBREV)); switch (last_token) { case TOKEN_COMMA: RETURN(out_token(TOKEN_FIELD)); case TOKEN_LBRACE: RETURN(out_token(TOKEN_KEY)); case TOKEN_AT: RETURN(out_token(TOKEN_ENTRY)); default: RETURN(out_token(TOKEN_ABBREV)); } } \end{verbatim} \MACROINDEX{RETURN}% \VARIABLEINDEX{last_object}% \VARIABLEINDEX{last_token}% \FUNCTIONINDEX{out_token}% \TOKENINDEX{TOKEN_ABBREV}% \TOKENINDEX{TOKEN_COMMA}% \TOKENINDEX{TOKEN_ENTRY}% \TOKENINDEX{TOKEN_FIELD}% \TOKENINDEX{TOKEN_KEY}% \TOKENINDEX{TOKEN_STRING}% In the event of errors in the input stream, this identification of token types may be unreliable; such errors will be detected later in the parsing program. \subsection*{Digit string} A {\em digit string\/}% \index{digit string} is an undelimited value string. The output function will supply the missing quotation mark delimiters, so that all strings take a standard form. \begin{verbatim} [0-9]+ RETURN (out_protected_string( \ TOKEN_VALUE)); \end{verbatim} \MACROINDEX{RETURN}% \FUNCTIONINDEX{out_protected_string}% \TOKENINDEX{TOKEN_VALUE}% \subsection*{In-line comment token} A percent initiates an {\em in-line comment\/}% \index{in-line comment}% \index{comment!in-line} that continues to the end of line and then over all leading horizontal space on the next line. \begin{verbatim} [%].*[\n]{S} \ RETURN (out_token(TOKEN_INLINE)); \end{verbatim} \MACROINDEX{RETURN}% \FUNCTIONINDEX{out_token}% \TOKENINDEX{TOKEN_INLINE}% Because this pattern marks the start of a new token, the previous token has already been terminated. Thus, an line-line comment {\em cannot\/} split a token. The same is true for \TeX{} macros, though not for ordinary \TeX{} text. \subsection*{String concatenation token} A sharp% \index{sharp@sharp ({\tt\char35})} sign is the \BibTeX{} {\em string concatenation operator}.% \index{string!concatenation operator}% \index{operator!string concatenation} \begin{verbatim} [#] RETURN (out_token(TOKEN_SHARP)); \end{verbatim} \MACROINDEX{RETURN}% \FUNCTIONINDEX{out_token}% \TOKENINDEX{TOKEN_SHARP}% \subsection*{Delimited string token} A quotation mark initiates a {\em delimited string}.% \index{delimited string} \begin{verbatim} ["] RETURN (out_string()); \end{verbatim} \MACROINDEX{RETURN}% \FUNCTIONINDEX{out_string}% The complete string must be collected by the C function \FUNCTION{out_string} because regular expressions cannot count balanced delimiters. \BibTeX{}'s quoted string syntax is a little unusual, in that an embedded quote% \index{embedded quote}% \index{quote!embedded} is not represented by double quotes, as in Fortran, or by an escape sequence,% \index{escape sequence} as in C, but rather by putting the quote character in braces. \subsection*{Brace tokens} Left and right {\em braces\/}% \index{brace} are recognized as single tokens. \begin{verbatim} [{] RETURN (out_lbrace()); [}] RETURN (out_rbrace()); \end{verbatim} \MACROINDEX{RETURN}% \FUNCTIONINDEX{out_rbrace}% \FUNCTIONINDEX{out_lbrace}% The output functions keep track of the current brace level to distinguish between outer braces delimiting a \BibTeX{} entry, and inner braces delimiting a string value, and return \TOKEN{TOKEN_LBRACE}, \TOKEN{TOKEN_LITERAL}, \TOKEN{TOKEN_RBRACE}, or \TOKEN{TOKEN_STRING}, depending on preceding context. \TOKEN{TOKEN_LITERAL} is used for the argument of a \TT{Comment} and \TT{Include} entries, and contains the delimiting braces. \subsection*{Parenthesis tokens} In order to simplify the parser grammar, we remap outer {\em parentheses\/}% \index{parenthesis} delimiting arguments of \BibTeX{} entries to {\em braces}.% \index{brace} However, if the parentheses are not preceded by a valid entry name, they are output instead as single-character tokens of type \TOKEN{TOKEN_LITERAL}. They cannot legally occur in this context, but that error will be detected during the parsing stage. During lexical analysis, we do not want to have any error conditions. \begin{verbatim} [(] RETURN (out_lparen()); [)] RETURN (out_rparen()); \end{verbatim} \FUNCTIONINDEX{out_rparen}% \FUNCTIONINDEX{out_lparen}% To support \SCRIBE{}, we would need to add patterns for other delimiters here. \subsection*{Assignment and separator tokens} The {\em assignment operator\/}% \index{assignment!operator} \index{operator!assignment} and {\em assignment separator\/}% \index{assignment!separator}% \index{separator!assignment} are returned as single tokens. \begin{verbatim} [=] RETURN (out_token(TOKEN_EQUALS)); [,] RETURN (out_token(TOKEN_COMMA)); \end{verbatim} \MACROINDEX{RETURN}% \FUNCTIONINDEX{out_token}% \TOKENINDEX{TOKEN_COMMA}% \TOKENINDEX{TOKEN_EQUALS}% \subsection*{Newline token} A {\em newline\/}% \index{newline} is returned as a separate token because we want to be able to preserve line boundaries so that filter tools that make minimal perturbations on the input stream can be constructed. \begin{verbatim} [\n] RETURN (out_token(TOKEN_NEWLINE)); \end{verbatim} \MACROINDEX{RETURN}% \FUNCTIONINDEX{out_token}% \TOKENINDEX{TOKEN_NEWLINE}% \subsection*{Horizontal space token} Consecutive horizontal space characters% \index{horizontal space character} are returned as a single space token, for the same reason that newlines% \index{newline} are recognized as distinct tokens by the preceding rule. \begin{verbatim} {W}+ RETURN (out_token(TOKEN_SPACE)); \end{verbatim} \MACROINDEX{RETURN}% \FUNCTIONINDEX{out_token}% \TOKENINDEX{TOKEN_SPACE}% \subsection*{Unclassifiable tokens} \index{unclassifiable token}% \index{token!unclassifiable}% Finally, we have a catch-all rule: any character not recognized by one of the preceding rules is returned as a literal single-character token, and will cause an error during the parsing. The regular-expression character period \index{period!in regular expression} matches anything but a newline,% \index{newline} and we already have a rule for newline. \begin{verbatim} . RETURN (out_token(TOKEN_LITERAL)); \end{verbatim} \MACROINDEX{RETURN}% \FUNCTIONINDEX{out_token}% \TOKENINDEX{TOKEN_LITERAL}% \subsection*{Lexical grammar summary} We now have a complete lexical grammar suitable for \PROGRAM{lex} that can complete tokenize an arbitrary input stream containing any character values whatever. The associated C code functions normalize entries by changing outer parentheses to braces, brace string delimiters to quotes, and undelimited digit strings to quoted strings. All string tokens of type \TOKEN{TOKEN_VALUE} output by the lexer will contain surrounding quotes, and any nested quotes will be braced, with proper care taken to handle \ESCAPE{\char34} accent control sequences% \index{accent control sequence} properly. All special characters inside the quoted strings will be represented by the escape sequences given in Table~\ref{tab:escape} on page~\pageref{tab:escape}. Thus, even with a binary input stream, the output of the lexer will contain only printable characters. It must be observed that \PROGRAM{lex} is not capable of handling all 256 8-bit characters. In particular, it treats an ASCII NUL% \index{NUL (0)!in string} (\ESCAPE{0}) in a string as an end-of-file condition. Older versions of \PROGRAM{lex} are not {\em 8-bit clean};% \index{8-bit clean} they will not reliably handle characters 128--255. This latter deficiency is being remedied by the X/Open Consortium% \index{X/Open Consortium} activities to internationalize and standard \UNIX{} applications \cite{xopen:XPG89-1}. \section{A parsing grammar for \protect\BibTeX{}}% \label{sec:yacc-grammar} \index{grammar!parsing}% \index{parsing grammar}% To complete the job, I wrote a \PROGRAM{yacc} grammar for \BibTeX{}. This was considerably more work than the \PROGRAM{lex} grammar, mostly due to my relative inexperience with writing LALR(1) grammars, and it took several days to understand the process well enough to eliminate the grammatical ambiguities that initially plagued me. The final complete \PROGRAM{yacc} program is about 270 lines long, and produces a parser of 760 (\PROGRAM{yacc}) to 1000 (\PROGRAM{bison}) lines, excluding the lexer. The grammar contains just 35 rules.% \index{grammar!size of} Ten of these rules could be eliminated if we arranged for the lexer to discard space% \index{space} and in-line comments,% \index{in-line comment}% \index{comment!in-line} but for a prettyprinter and other \BibTeX{} tools, they must be preserved. This parsing program is called \PROGRAM{bibparse}; it can be used with the output of either \BIBCLEAN{} \OPTION{no-prettyprint}, or \PROGRAM{biblex}. The complete \BibTeX{} grammar is given below, expressed as \PROGRAM{yacc} rules, again in literate programming% \index{literate programming} style. It must be augmented by about 180 lines of C code to provide a working parser. \subsection*{File structure} A \PROGRAM{yacc} file has this general structure: \begin{verbatim} declarations %% rules %% user functions \end{verbatim} \index{\%\%@{\protect\tt \%\%}} C declarations and definitions can be included in the declarations part if they are enclosed in \verb=%{=% \index{\%(@{\protect\tt \%\{\iffalse "}\fi}} and \verb=%}=.% \index{\%)@{\protect\tt \iffalse "{\fi \%\}}} Such text is copied verbatim to the output code file, together with additional \PROGRAM{yacc}-supplied header code. Running \PROGRAM{yacc} on this file produces a C file that can be compiled and linked with the lexical analyzer code to produce a working parser. In the following subsections, we describe the contents of the declarations and rules parts, but omit the declaration C code and the user functions, since they are not relevant to understanding the grammar. \subsection*{Format of grammar rules} \index{format!of grammar rules}% \index{grammar!format of rules}% The grammar rules will be presented in top-down order, from most general, to most particular, since this seems to be the best way to understand the overall structure of the grammar, and to ensure that it describes current \BibTeX{} usage, plus our suggested extensions and clarifications. The colon% \index{colon} in a grammar rule should be read ``is'' or ``produces'', because the rule is also known as a {\em production}. A vertical bar% \index{vertical!bar} separates alternatives, and can be read ``or''. A semicolon% \index{semicolon} terminates the rule. Lower-case letters are used for {\em non-terminals},% \index{non-terminal} which are names of rules in the parser grammar. Upper-case letters are used for {\em terminals},% \index{terminal} which are names of tokens recognized by the lexer. The spacing shown is arbitrary, but conventional for \PROGRAM{yacc} grammars:% \index{grammar!formatting conventions} each rule starts a new line, with the right-hand side indented from the margin, and the semicolon% \index{semicolon} occupies a separate line. \subsection*{Token declarations} The \TT{\%token} declarations merely provide symbolic names for the integer token types returned by the lexer. The values are arbitrary, except that they must exceed 257, and must agree with the definitions in the lexer code. We simply increment the token types output from \BIBCLEAN{} by 1000, matching the offset added in the \MACRO{RETURN} macro in the lexer. \begin{verbatim} %token TOKEN_ABBREV 1001 %token TOKEN_AT 1002 %token TOKEN_COMMA 1003 %token TOKEN_COMMENT 1004 %token TOKEN_ENTRY 1005 %token TOKEN_EQUALS 1006 %token TOKEN_FIELD 1007 %token TOKEN_INCLUDE 1008 %token TOKEN_INLINE 1009 %token TOKEN_KEY 1010 %token TOKEN_LBRACE 1011 %token TOKEN_LITERAL 1012 %token TOKEN_NEWLINE 1013 %token TOKEN_PREAMBLE 1014 %token TOKEN_RBRACE 1015 %token TOKEN_SHARP 1016 %token TOKEN_SPACE 1017 %token TOKEN_STRING 1018 %token TOKEN_VALUE 1019 \end{verbatim} \TOKENINDEX{TOKEN_ABBREV}% \TOKENINDEX{TOKEN_AT}% \TOKENINDEX{TOKEN_COMMA}% \TOKENINDEX{TOKEN_COMMENT}% \TOKENINDEX{TOKEN_ENTRY}% \TOKENINDEX{TOKEN_EQUALS}% \TOKENINDEX{TOKEN_FIELD}% \TOKENINDEX{TOKEN_INCLUDE}% \TOKENINDEX{TOKEN_INLINE}% \TOKENINDEX{TOKEN_KEY}% \TOKENINDEX{TOKEN_LBRACE}% \TOKENINDEX{TOKEN_LITERAL}% \TOKENINDEX{TOKEN_NEWLINE}% \TOKENINDEX{TOKEN_PREAMBLE}% \TOKENINDEX{TOKEN_RBRACE}% \TOKENINDEX{TOKEN_SHARP}% \TOKENINDEX{TOKEN_SPACE}% \TOKENINDEX{TOKEN_STRING}% \TOKENINDEX{TOKEN_VALUE}% \subsection*{Precedence declarations} \index{precedence declaration}% The \TT{\%nonassoc}% \index{nonassoc@{\tt \%nonassoc}} declaration makes the assignment operator% \index{assignment!operator!associativity of}% \index{associativity} non-associative, so input of the form {\tt a = b = c} is illegal. \begin{verbatim} %nonassoc TOKEN_EQUALS \end{verbatim} \TOKENINDEX{TOKEN_EQUALS}% The first \TT{\%left}% \index{left@{\tt \%left}} declaration makes space,% \index{space!associativity of} in-line comment,% \index{in-line comment!associativity of}% \index{comment!in-line!associativity of} and newline% \index{newline!associativity of} tokens left associative, and of equal precedence. \begin{verbatim} %left TOKEN_SPACE TOKEN_INLINE \ TOKEN_NEWLINE \end{verbatim} \TOKENINDEX{TOKEN_INLINE}% \TOKENINDEX{TOKEN_NEWLINE}% \TOKENINDEX{TOKEN_SPACE}% The second \TT{\%left}% \index{left@{\tt \%left}} declaration makes the \BibTeX{} string concatenation character,% \index{string!concatenation operator}% \index{operator!string concatenation} \verb=#=, left associative, and of higher precedence than space,% \index{space!precedence of} in-line comment,% \index{in-line comment!precedence of}% \index{comment!in-line!precedence of} and newline. \begin{verbatim} %left TOKEN_SHARP \end{verbatim} \TOKENINDEX{TOKEN_SHARP}% These precedence settings are crucial for resolving conflicts in this grammar which arise in assignments when the parser has seen an assignment operator and a value. Without the operator precedences, it cannot decide whether to complete the assignment, or to read ahead looking for a concatenation operator. \subsection*{\protect \BibTeX{} file} The beginning of the grammar rules is indicated by a pair of percent characters. \begin{verbatim} %% \end{verbatim} The first rule defines what we are going to parse, namely, a {\em \BibTeX{} file}. The left-hand side of the first rule is known as the grammar's {\em start symbol}. \begin{verbatim} bibtex_file: opt_space | opt_space object_list opt_space ; \end{verbatim} \RULEINDEX{bibtex_file}% \RULEINDEX{object_list}% \RULEINDEX{opt_space}% This rule says that a \BibTeX{} file contains either optional space, or optional space followed by a list of objects followed by optional space. This definition permits a file to be empty, or contain only space tokens, or have leading and trailing space. \subsection*{Object lists} A {\em list of objects\/}% \index{list!of objects}% \index{object!list} is either a single object, or a list of such objects, separated by optional space from another object. \begin{verbatim} object_list: object | object_list opt_space object ; \end{verbatim} \RULEINDEX{opt_space}% \RULEINDEX{object}% \RULEINDEX{object_list}% For LL(1)% \index{LL(1)!parser}% \index{parser!LL(1)} parsers, usually implemented by hand-coded recursive descent programs, this kind of left-recursive rule% \index{left-recursive rule} must be rewritten by standard methods \cite[pp.~47--48, 176--178]{Aho:CPT86}% \index{Aho, Alfred V.}% \index{Sethi, Ravi}% \index{Ullman, Jeffrey D.} to avoid an infinite loop in the parser. In this rule, we would instead define a list as an object, separated by optional space from another list. However, for LALR(1) parsers, left-recursive definitions are preferable, because they avoid parser stack overflow with long lists. \subsection*{Objects} An {\em object\/}% \index{object} is one of the \BibTeX{} \TT{\char64name\protect\{...\protect\}} constructs. Notice that we allow optional space between the \TT{\char64} and the \TT{name}. \begin{verbatim} object: TOKEN_AT opt_space at_object ; \end{verbatim} \RULEINDEX{at_object}% \RULEINDEX{opt_space}% \TOKENINDEX{TOKEN_AT}% \RULEINDEX{object}% In this grammar, we will consistently allow optional space% \index{space!between tokens} between {\em any\/} pair of \BibTeX{} tokens; space is described more precisely below. This convention is easy to remember, and easy to implement in the grammar rules. While it would be possible to include the \TT{\char64} as part of the \TT{name}, making \TT{\char64name} a single lexical token, both \BibTeX{} and \SCRIBE{} permit intervening space, so we cannot collapse the two into a single token. \subsection*{Entry types and error recovery} Here are the possibilities for the \TT{name} following an \TT{\char64}, which we call an \RULE{at_object}. \begin{verbatim} at_object: comment | entry | include | preamble | string | error TOKEN_RBRACE ; \end{verbatim} \TOKENINDEX{TOKEN_RBRACE}% \RULEINDEX{error}% \RULEINDEX{string}% \RULEINDEX{preamble}% \RULEINDEX{include}% \RULEINDEX{entry}% \RULEINDEX{comment}% \RULEINDEX{at_object}% \TT{Comment}, \TT{Include}, \TT{Preamble}, and \TT{String} must be handled separately from other types of entries, like \TT{Article} and \TT{Book}, because their braced arguments have a different syntax. The rule with \RULE{error} is a special one supported by \PROGRAM{yacc} and \PROGRAM{bison}. It says that if an \RULE{at_object} cannot be recognized at the current state of the parse, then the input should be discarded until a right brace is found. An error message% \index{error!message}% \index{message!error} will be issued when this happens, but recovery% \index{error!recovery}% \index{recovery!from error} will be attempted following that right brace. Without this error handling, any input error will immediately terminate the parser, hardly a user-friendly thing to do. This is the only place where we will attempt error repair, although we could certainly do so in other rules, such as in the assignment rule% \index{assignment!rule!error recovery in} below. The goal here is to present a rigorous complete grammar, without additional embellishments that would complicate understanding. \subsection*{Comment entry} \index{comment!entry}% A \BibTeX{} \TT{\char64Comment\optbreak\protect\{...\protect\}} is special in that the only requirement on the argument is that delimiters be balanced. The lexer returns the delimited argument as a single literal string, including the delimiters, and standardizes the delimiters to braces. \begin{verbatim} comment: TOKEN_COMMENT opt_space TOKEN_LITERAL ; \end{verbatim} \TOKENINDEX{TOKEN_LITERAL}% \RULEINDEX{opt_space}% \TOKENINDEX{TOKEN_COMMENT}% \RULEINDEX{comment}% \subsection*{Bibliography entry} A \BibTeX{} {\em bibliography entry}% \index{bibliography!entry} is braced text containing a citation key,% \index{citation!key} a comma,% \index{comma} and a list of assignments.% \index{list!of assignments}% \index{assignment!list} The rules provide for an optional assignment list, and for an optional trailing comma.% \index{trailing context} To shorten the rules, we introduce a subsidiary rule, \RULE{entry_head}, to represent their common prefix. \begin{verbatim} entry: entry_head assignment_list TOKEN_RBRACE | entry_head assignment_list TOKEN_COMMA opt_space TOKEN_RBRACE | entry_head TOKEN_RBRACE ; entry_head: TOKEN_ENTRY opt_space TOKEN_LBRACE opt_space key_name opt_space TOKEN_COMMA opt_space ; \end{verbatim} \RULEINDEX{key_name}% \TOKENINDEX{TOKEN_LBRACE}% \TOKENINDEX{TOKEN_ENTRY}% \TOKENINDEX{TOKEN_COMMA}% \TOKENINDEX{TOKEN_RBRACE}% \RULEINDEX{opt_space}% \RULEINDEX{assignment_list}% \RULEINDEX{entry_head}% \RULEINDEX{entry}% There is no \TT{opt_space} item following \TT{assignment_list} because it is included in the definition of the latter. This infelicity seems to be necessary to obtain a grammar that conforms to the LALR(1)% \index{LALR(1)!grammar}% \index{grammar!LALR(1)} requirements of \PROGRAM{yacc} and \PROGRAM{bison}. \subsection*{Key name} \index{key name}% Because of intervening newlines% \index{newline} and in-line comments,% \index{in-line comment}% \index{comment!in-line} the lexical analyzer cannot always correctly recognize a {\em citation key\/}% \index{citation!key!problems in recognizing} from trailing context.% \index{trailing context} It might instead erroneously identify the token as an abbreviation. We therefore need to account for both possibilities: \typeout{key_name may no longer need to allow for abbrevs}% \begin{verbatim} key_name: TOKEN_KEY | TOKEN_ABBREV ; \end{verbatim} \TOKENINDEX{TOKEN_ABBREV}% \TOKENINDEX{TOKEN_KEY}% \RULEINDEX{key_name}% \subsection*{{\protect\tt Include} entry} \index{file!inclusion}% The \TT{Include} entry is followed by a file name enclosed in balanced braces. \begin{verbatim} include: TOKEN_INCLUDE opt_space TOKEN_LITERAL ; \end{verbatim} \TOKENINDEX{TOKEN_LITERAL}% \RULEINDEX{opt_space}% \TOKENINDEX{TOKEN_INCLUDE}% \RULEINDEX{include}% Because file names% \index{file!name!syntax of} are operating-system dependent, the only restrictions that are placed on the file name are that it cannot contain unbalanced braces, and that it cannot contain leading or trailing space. However, the file name can have embedded space% \index{file!name!space in} if the operating system permits. \BibTeX{} should discard the delimiting braces and surrounding space in the \path=TOKEN_LITERAL= to isolate the file name. It should search for this file in its standard input path, so that the file name need not contain an absolute directory path. This feature is not supported in \BibTeX{} 0.99c, but \BIBCLEAN{} and the lexer and parser recognize it in anticipation of its eventual incorporation. \subsection*{{\protect\tt Preamble} entry} The \TT{Preamble} entry argument is a braced \BibTeX{} string value. \BibTeX{} outputs the argument verbatim, minus the outer delimiters, to the \verb=.bbl=% \PATHINDEX{.bbl} file for \TeX{} to process. \begin{verbatim} preamble: TOKEN_PREAMBLE opt_space TOKEN_LBRACE opt_space value opt_space TOKEN_RBRACE ; \end{verbatim} \TOKENINDEX{TOKEN_RBRACE}% \TOKENINDEX{TOKEN_LBRACE}% \RULEINDEX{value}% \RULEINDEX{opt_space}% \TOKENINDEX{TOKEN_PREAMBLE}% \RULEINDEX{preamble}% \subsection*{{\protect\tt String} entry} The \TT{String} entry argument is a braced single assignment. \begin{verbatim} string: TOKEN_STRING opt_space TOKEN_LBRACE opt_space assignment opt_space TOKEN_RBRACE ; \end{verbatim} \TOKENINDEX{TOKEN_RBRACE}% \RULEINDEX{assignment}% \RULEINDEX{opt_space}% \TOKENINDEX{TOKEN_LBRACE}% \RULEINDEX{opt_space}% \TOKENINDEX{TOKEN_STRING}% \RULEINDEX{string}% \subsection*{Value string} A \BibTeX{} {\em value\/}% \index{value} is a string, which may be a simple value, or a list of strings separated by the string concatenation operator.% \index{string!concatenation operator}% \index{operator!string concatenation} \begin{verbatim} value: simple_value | value opt_space TOKEN_SHARP opt_space simple_value ; \end{verbatim} \RULEINDEX{simple_value}% \TOKENINDEX{TOKEN_SHARP}% \RULEINDEX{opt_space}% \RULEINDEX{simple_value}% \RULEINDEX{value}% \subsection*{Simple values} A {\em simple value\/}% \index{simple value} is either a delimited string,% \index{delimited string} returned by the lexer as a \TOKEN{TOKEN_VALUE}, or a string abbreviation,% \index{abbreviation} returned as a \TOKEN{TOKEN_ABBREV}. \begin{verbatim} simple_value: TOKEN_VALUE | TOKEN_ABBREV ; \end{verbatim} \TOKENINDEX{TOKEN_ABBREV}% \TOKENINDEX{TOKEN_VALUE}% \RULEINDEX{simple_value}% The lexer can distinguish between these two because of the string delimiters. It is up to the parser support code to verify that an abbreviation is actually defined before it is used. \subsection*{Assignment list} The body of most \BibTeX{} entries consists of a list of one or more assignments, separated by commas. Notice that this definition does not provide for an optional trailing comma% \index{comma!optional after assignment} after the last assignment. We handled that above in the rules for \RULE{entry}. \begin{verbatim} assignment_list: assignment | assignment_list TOKEN_COMMA opt_space assignment ; \end{verbatim} \TOKENINDEX{TOKEN_COMMA}% \RULEINDEX{opt_space}% \RULEINDEX{assignment_list}% \RULEINDEX{assignment}% \RULEINDEX{assignment_list}% \subsection*{Assignment} An {\em assignment\/}% \index{assignment} has a left-hand side separated from a value by the assignment operator,% \index{assignment!operator} \index{operator!assignment} \verb|=|. \begin{verbatim} assignment: assignment_lhs opt_space TOKEN_EQUALS opt_space value opt_space ; \end{verbatim} \RULEINDEX{value}% \TOKENINDEX{TOKEN_EQUALS}% \RULEINDEX{opt_space}% \RULEINDEX{assignment_lhs}% \RULEINDEX{assignment}% Trailing optional space is included here, and omitted before the comma in \TT{assignment_list}, in order to allow the LALR(1) parser to successfully distinguish between space between a value and a comma, and space between a value and a string concatenation operator. My initial version of this grammar did not have this optional space item, and the resulting parser proved unable to recognize input in which a space separated a value from a comma or closing brace; it took quite a bit of experimentation to determine how to rewrite the grammar to remove this problem. The left-hand side of an assignment is either a field name,% \index{field name} like \TT{author} or \TT{title}, or a string abbreviation% \index{abbreviation} name. The lexer must distinguish between the two by remembering the last entry type seen, because they are made up of exactly the same set of possible characters. \begin{verbatim} assignment_lhs: TOKEN_FIELD | TOKEN_ABBREV ; \end{verbatim} \TOKENINDEX{TOKEN_ABBREV}% \TOKENINDEX{TOKEN_FIELD}% \RULEINDEX{assignment_lhs}% \subsection*{Optional space} Optional space is either an empty string,% \index{empty!string} here indicated by the \TT{/*...*/} comment, or space. \begin{verbatim} opt_space: /* empty */ | space ; \end{verbatim} \RULEINDEX{space}% \RULEINDEX{/* empty */}% \RULEINDEX{opt_space}% \subsection*{Space} {\em Space\/}% \index{space} is an important part of the grammar. It is one or more single spaces. \begin{verbatim} space: single_space | space single_space ; \end{verbatim} \RULEINDEX{single_space}% \RULEINDEX{space}% We include space handling to support tools that process \BibTeX{} files and wish to preserve the input form. In normal compiler design, space is recognized by the lexer, and discarded, so the parser never has to deal with it, and the grammar can be considerably simpler. \subsection*{Single space} The final rule of the grammar defines a {\em single space\/}% \index{single space} as a literal space% \index{space} character, or an in-line comment,% \index{in-line comment}% \index{comment!in-line} or a literal newline% \index{newline} character. \begin{verbatim} single_space: TOKEN_SPACE | TOKEN_INLINE | TOKEN_NEWLINE ; \end{verbatim} \TOKENINDEX{TOKEN_NEWLINE}% \TOKENINDEX{TOKEN_INLINE}% \TOKENINDEX{TOKEN_SPACE}% \RULEINDEX{single_space}% Although we could arrange for the lexer to merge \TOKEN{TOKEN_SPACE} and \TOKEN{TOKEN_NEWLINE} into a single token, this would interfere with heuristics used by a prettyprinter to detect empty lines inside string values, which are possibly indicative of missing delimiters.% \index{mismatched delimiters}% \index{delimiters!mismatched} \subsection*{Parsing grammar summary} We have now completed a \PROGRAM{yacc} grammar for \BibTeX{} that provides a rigorous grammatical analysis of a stream of tokens recognized by the lexers in Sections~\ref{sec:lexer} and~\ref{sec:lex-grammar}. Notice that there is no character-string processing whatever in the parser, because it has all been done in the lexer. Parsing operations just manipulate small integer values. In this version, no actions have been supplied as C code fragments in the \PROGRAM{yacc} grammar. The only output of the parser will be the token stream from the lexer, interspersed by error messages when the input fails to match a grammar rule. Error recovery has been kept simple: input is flushed to the next closing brace, which is presumably the end of an entry. Braces of type \path=TOKEN_LBRACE=% \TOKENINDEX{TOKEN_LBRACE} and \path=TOKEN_RBRACE=% \TOKENINDEX{TOKEN_RBRACE} do not occur except around apparent entries in the lexer output; other braces are returned as tokens of type \path=TOKEN_LITERAL=.% \TOKENINDEX{TOKEN_LITERAL} No more than one token of lookahead is required by this grammar, although the lexer often looked several characters ahead to examine trailing context% \index{trailing context} in order to distinguish between otherwise similar tokens. \BibTeX{} users should be able to read this grammar and decide whether a questionable \BibTeX{} construct is legal or not, without having to resort to software experiments as I did to clarify fuzzy grammatical points. \section{Software availability} The source code% \index{source code} and documentation% \index{documentation} for \BIBCLEAN{} are in the {\em public domain}, in the interests of the widest availability and greatest benefit to the \TeX{} community. Commercial vendors of \TeX{}ware are encouraged to include \BIBCLEAN{} with their distributions. The distribution also includes the separate complete lexer and parser grammar and code, which can be processed by \PROGRAM{lex} or \PROGRAM{flex}, and \PROGRAM{yacc} or \PROGRAM{bison}, respectively. The output C code from these tools is included so that recipients need not have them installed to actually compile and run the lexer and parser. If you have Internet anonymous% \index{anonymous ftp@anonymous {\tt ftp}} \PROGRAM{ftp} access, you can retrieve the distribution in a variety of archive formats from the machine \path=ftp.math.utah.edu=% \PATHINDEX{ftp.math.utah.edu} in the directory \path=pub/tex/bib=.% \PATHINDEX{pub/tex/bib} Major \TeX{} Internet archive hosts% \index{Internet archive hosts}% \index{archive hosts!Internet} around the world will also have \BIBCLEAN{}, but the author's site will always have the most up-to-date version. If you lack \PROGRAM{ftp} capability but have electronic mail% \index{electronic mail server} access, a message to \path=tuglib@math.utah.edu=% \PATHINDEX{tuglib\char64math.utah.edu} with the text % \begin{verbatim} help send index from tex/bib \end{verbatim} \TTINDEX{send}% \TTINDEX{help}% % will get you started. The \BIBCLEAN{} distribution includes a substantial collection of torture tests% \index{testing} that should be run at installation time to verify correctness. As with the \TeX{} \PROGRAM{trip} and \MF{} \PROGRAM{trap} tests, this testing has proved valuable in uncovering problems before the code is installed for general use. \bibliography{bibclean} \index{command-line options|see{options}}% \index{concatenation|see{string}}% \index{editor|see{Emacs}}% \index{lexer|see{lexical analyzer}}% \index{macro|seealso{control sequence}} \index{run-time options|see{options}}% \index{text editor|see{Emacs}}% \index{token|see{terminal}}% \printindex \makesignature \end{document} %%% This is for GNU Emacs file-specific customization: %%% Local Variables: %%% fill-column: 50 %%% abbrev-mode: t %%% eval: (define-abbrev LaTeX-mode-abbrev-table "bc" "\\BIBCLEAN{}" nil) %%% eval: (define-abbrev LaTeX-mode-abbrev-table "unix" "\\UNIX{}" nil) %%% eval: (define-abbrev LaTeX-mode-abbrev-table "scribe" "\\SCRIBE{}" nil) %%% eval: (local-set-key "_" (quote self-insert-command)) %%% eval: (modify-syntax-entry ?\_ "w") %%% eval: (setq LaTeX-index-start-with-newline t) %%% eval: (setq LaTeX-index-end-with-newline t) %%% eval: (setq LaTeX-index-macro nil) %%% End: bibclean-2.11.4.1.orig/doc/bibclean.blg0000644000175200017520000000000007133432642016652 0ustar debiandebianbibclean-2.11.4.1.orig/doc/bibclean.aux0000644000175200017520000001005007133432645016714 0ustar debiandebian\relax \bibstyle{is-plain} \citation{Lamport:LDP85} \@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {1}Introduction}{395}} \newlabel{sec:intro}{{1}{395}} \citation{Cameron:LGE91,Schoonover:GEU92} \citation{Bryan:SAG88,vanHerwijnen:PS90} \citation{Beebe:TB12S-2-176,Beebe:TB12S-2-183} \@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {2}\string\BibTeX\space {} needs improvement}{396}} \@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3}Run-time options}{397}} \citation{Knuth:ct-a} \@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {4}Prettyprinting}{399}} \@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {5}Pattern matching and initialization files}{400}} \newlabel{sec:init}{{5}{400}} \@writefile{lot}{\string\contentsline\space {table}{\string\numberline\space {1}{\ignorespaces Sample \string\BIBCLEAN\space {} initialization file.}}{401}} \newlabel{tab:initfile}{{1}{401}} \@writefile{lot}{\string\contentsline\space {table}{\string\numberline\space {2}{\ignorespaces Escape sequences in quoted strings.}}{401}} \newlabel{tab:escape}{{2}{401}} \@writefile{lot}{\string\contentsline\space {table}{\string\numberline\space {3}{\ignorespaces Initialization file pattern characters.}}{402}} \newlabel{tab:patterns}{{3}{402}} \citation{ANSI:c89} \citation{ANSI:c89} \@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {6}Lexical analysis}{403}} \newlabel{sec:lexer}{{6}{403}} \citation{Aho:APL87} \citation{ANSI:c89} \citation{ANSI:c89} \citation{Kernighan:CPL78} \citation{Kernighan:CPL88} \citation{Feuer:CPB89,Koenig:CTP89} \citation{Harbison:CAR91,Jaeschke:PCL89,Lapin:PCU87,Plauger:SCL92,Rabinowitz:PC90,Rochkind:AUP85,Stevens:UNP90} \citation{Ellis:ACR90,Stroustrup:CPL91} \@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {7}Portability}{404}} \citation{Reid:SUM80} \citation{Aho:CPT86} \citation{Lesk:lex} \citation{Johnson:yacc,Levine:LY92,Mason:LY90,Schreiner:ICC85} \@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {8}\string\SCRIBE\space {} bibliography format}{405}} \newlabel{sec:scribe}{{8}{405}} \newlabel{item:4}{{4}{405}} \@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {9}Recommendations for \string\BibTeX\space {} design}{405}} \newlabel{sec:recommendations}{{9}{405}} \citation{Knuth:j-IC-8-6-607} \citation{Lamport:LDP85} \citation{ANSI:c89} \@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {10}A lexical grammar for \string\BibTeX\space {}}{407}} \newlabel{sec:lex-grammar}{{10}{407}} \citation{xopen:XPG89-1} \@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {11}A parsing grammar for \string\BibTeX\space {}}{410}} \newlabel{sec:yacc-grammar}{{11}{410}} \citation{Aho:CPT86} \bibdata{bibclean} \bibcite{Aho:APL87}{1} \bibcite{Aho:CPT86}{2} \bibcite{ANSI:c89}{3} \bibcite{Beebe:TB12S-2-176}{4} \bibcite{Beebe:TB12S-2-183}{5} \bibcite{Bryan:SAG88}{6} \bibcite{Cameron:LGE91}{7} \bibcite{Ellis:ACR90}{8} \bibcite{Feuer:CPB89}{9} \bibcite{Harbison:CAR91}{10} \bibcite{Jaeschke:PCL89}{11} \bibcite{Johnson:yacc}{12} \bibcite{Kernighan:CPL78}{13} \bibcite{Kernighan:CPL88}{14} \@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {12}Software availability}{414}} \@writefile{toc}{\string\contentsline\space {section}{\hbox to\@tempdima {\hfil }References}{414}} \bibcite{Knuth:j-IC-8-6-607}{15} \bibcite{Knuth:ct-a}{16} \bibcite{Koenig:CTP89}{17} \bibcite{Lamport:LDP85}{18} \bibcite{Lapin:PCU87}{19} \bibcite{Lesk:lex}{20} \bibcite{Levine:LY92}{21} \bibcite{Mason:LY90}{22} \bibcite{Plauger:SCL92}{23} \bibcite{Rabinowitz:PC90}{24} \bibcite{Reid:SUM80}{25} \bibcite{Rochkind:AUP85}{26} \bibcite{Schoonover:GEU92}{27} \bibcite{Schreiner:ICC85}{28} \bibcite{Stevens:UNP90}{29} \bibcite{Stroustrup:CPL91}{30} \bibcite{vanHerwijnen:PS90}{31} \bibcite{xopen:XPG89-1}{32} \@writefile{toc}{\string\contentsline\space {section}{\hbox to\@tempdima {\hfil }Index}{415}} bibclean-2.11.4.1.orig/doc/Makefile0000644000175200017520000000566106142423625016107 0ustar debiandebian#======================================================================= # Makefile for bibclean TUBboat article and GNU Emacs info documentation # [03-May-1996] -- update style and macro files with latest versions, # update GNU standard targets, and update spelling # error checks to use style of TUG bibliography # collection # [31-Dec-1993] -- final polishing of Makefile for public release # after TUGboat publication # [04-May-1993] -- add bundle, SHAR, SHARFILES, and add quoting of @ # in index # [14-Jan-1993] #======================================================================= BIBTEX = bibtex CP = /bin/cp DETEX = detex DW = dw ISPELL = ispell LATEX = latex MAKEINDEX = makeindex MV = /bin/mv RM = /bin/rm -f SED = sed SHAR = shar -c -v SHARFILES = Makefile bibclean.aux bibclean.bbl bibclean.bib \ bibclean.idx bibclean.ind bibclean.lot bibclean.ltx \ bibclean.sok bibclean.sty bibclean.toc is-plain.bst SPELL = spell TEXINDEX = texindex ALL: bibclean.dvi all: bibclean.ser dw bibclean.dvi bibclean.aux: if [ ! -f bibclean.aux ] ; then touch bibclean.aux ; fi bibclean.bbl: bibclean.bib bibclean.aux if [ ! -f bibclean.aux ] ; then touch bibclean.aux ; fi -$(BIBTEX) bibclean bibclean.dvi: bibclean.bbl bibclean.ltx bibclean.ind bibclean.sty $(LATEX) bibclean.ltx $(MAKE) bibclean.bbl bibclean.ind $(LATEX) bibclean.ltx $(LATEX) bibclean.ltx bibclean.idx: if [ ! -f bibclean.idx ] ; then touch bibclean.idx ; fi bibclean.ind: bibclean.idx Makefile $(MV) bibclean.idx bibclean.idw $(SED) -e 's/{\\tt <}@/<@/' \ -e 's/{\\tt >}@/>@/' \ -e 's/{\\%\\%@{\\tt \\%\\%}}/{\\%\\%@{\\protect\\tt \\%\\%}}/' \ -e 's/@@{\\tt @}/"@@{\\tt "@}/' \ -e 's/{@@{\\tt @}}/{"@@{\\tt "@}}/' \ -e 's/\\{ */\\{/g' \ -e 's/\\} */\\}/g' \ bibclean.idx -$(MAKEINDEX) bibclean bibclean.ser: bibclean.ltx bibclean.sok if [ ! -f bibclean.sok ] ; then touch bibclean.sok ; fi @echo '==================== spelling exceptions ====================' $(DETEX) bibclean.ltx | $(SED) -e 's/[0-9,.:;]/ /g' | \ $(SPELL) +bibclean.sok >bibclean.ser $(DETEX) bibclean.ltx | $(SED) -e 's/[0-9,.:;]/ /g' | \ $(ISPELL) -l -p bibclean.sok | sort -u >>bibclean.ser cat bibclean.ser bundle: $(SHARFILES) $(SHAR) $(SHARFILES) >$@ clean mostlyclean: $(RM) *.blg $(RM) *.dvi* $(RM) *.idw $(RM) *.ilg $(RM) *.log $(RM) *.o $(RM) *.ser $(RM) *.tmp $(RM) *~ $(RM) \#* $(RM) core clobber distclean: clean $(RM) *.aux $(RM) *.bbl $(RM) *.idx $(RM) *.ind $(RM) *.lof $(RM) *.lot $(RM) *.toc # We strip \index{} entries first to avoid large numbers of bogus duplicate # word warnings. dw: @echo '==================== doubled words ====================' $(SED) -e 's/^ *\\index{.*$$//' bibclean.ltx | $(DETEX) | $(DW) maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." spell: bibclean.ser bibclean-2.11.4.1.orig/doc/bibclean.bbl0000644000175200017520000001571007133432642016663 0ustar debiandebian\begin{thebibliography}{10} \bibitem{Aho:APL87} Alfred~V. Aho, Brian~W. Kernighan, and Peter~J. Weinberger. \newblock {\em The {AWK} Programming Language}. \newblock Ad{\-d}i{\-s}on-Wes{\-l}ey, Reading, MA, USA, 1988. \newblock ISBN 0-201-07981-X. \bibitem{Aho:CPT86} Alfred~V. Aho, Ravi Sethi, and Jeffrey~D. Ullman. \newblock {\em Compilers\emdash Prin\-ci\-ples, Techniques, and Tools}. \newblock Ad{\-d}i{\-s}on-Wes{\-l}ey, Reading, MA, USA, 1986. \newblock ISBN 0-201-10088-6. \bibitem{ANSI:c89} American National Standards Institute, 1430 Broadway, New York, NY 10018, USA. \newblock {\em American National Standard Programming Language C, {ANSI} X3.159-1989}, December 14 1989. \bibitem{Beebe:TB12S-2-176} Nelson H.~F. Beebe. \newblock Publications about {\TeX} and typography. \newblock {\em TUGBoat}, Supplement to 12\penalty0 (2):\penalty0 176--183, May 1991. \bibitem{Beebe:TB12S-2-183} Nelson H.~F. Beebe. \newblock Publications prepared with {\TeX}. \newblock {\em TUGBoat}, Supplement to 12\penalty0 (2):\penalty0 183--194, May 1991. \bibitem{Bryan:SAG88} Martin Bryan. \newblock {\em {SGML}\emdash An Author's Guide to the Standard Generalized Markup Language}. \newblock Ad{\-d}i{\-s}on-Wes{\-l}ey, Reading, MA, USA, 1988. \newblock ISBN 0-201-17535-5. \bibitem{Cameron:LGE91} Debra Cameron and Bill Rosenblatt. \newblock {\em Learning {GNU} Emacs}. \newblock O'Reilly \& {Associates, Inc.}, 981 Chestnut Street, Newton, MA 02164, USA, 1991. \newblock ISBN 0-937175-84-6. \bibitem{Ellis:ACR90} Margaret~A. Ellis and Bjarne Stroustrup. \newblock {\em The Annotated {C++} Reference Manual}. \newblock Ad{\-d}i{\-s}on-Wes{\-l}ey, Reading, MA, USA, 1990. \newblock ISBN 0-201-51459-1. \bibitem{Feuer:CPB89} Alan~R. Feuer. \newblock {\em The {C} Puzzle Book}. \newblock Pren{\-}tice-Hall, Englewood Cliffs, NJ 07632, USA, second edition, 1989. \newblock ISBN 0-13-115502-4. \bibitem{Harbison:CAR91} Samuel~P. Harbison and Guy~L. {Steele Jr.} \newblock {\em C\emdash A Reference Manual}. \newblock Pren{\-}tice-Hall, Englewood Cliffs, NJ 07632, USA, third edition, 1991. \newblock ISBN 0-13-110933-2. \bibitem{Jaeschke:PCL89} Rex Jaeschke. \newblock {\em Portability and the {C} Language}. \newblock Hayden Books, 4300 West 62nd Street, Indianapolis, IN 46268, USA, 1989. \newblock ISBN 0-672-48428-5. \bibitem{Johnson:yacc} Steven~C. Johnson. \newblock Yacc: Yet another compiler compiler. \newblock In {\em {UNIX} Programmer's Manual}, volume~2, pages 353--387. Holt, Reinhart, and Winston, New York, NY, USA, 1979. \newblock AT\&T Bell Laboratories Technical Report, July 31, 1978. \bibitem{Kernighan:CPL78} Brian~W. Kernighan and Dennis~M. Ritchie. \newblock {\em The C Programming Language}. \newblock Pren{\-}tice-Hall, Englewood Cliffs, NJ 07632, USA, 1978. \newblock ISBN 0-13-110163-3. \bibitem{Kernighan:CPL88} Brian~W. Kernighan and Dennis~M. Ritchie. \newblock {\em The C Programming Language}. \newblock Pren{\-}tice-Hall, Englewood Cliffs, NJ 07632, USA, second edition, 1988. \newblock ISBN 0-13-110362-8. \bibitem{Knuth:j-IC-8-6-607} Donald~E. Knuth. \newblock On the translation of languages from left to right. \newblock {\em Information and Control}, 8\penalty0 (6):\penalty0 607--639, 1965. \newblock This is the original paper on the theory of LR(k) parsing. \bibitem{Knuth:ct-a} Donald~E. Knuth. \newblock {\em The {\TeX}book}, volume~A of {\em Computers and Typesetting}. \newblock Ad{\-d}i{\-s}on-Wes{\-l}ey, Reading, MA, USA, 1986. \newblock ISBN 0-201-13447-0. \bibitem{Koenig:CTP89} Andrew Koenig. \newblock {\em {C} Traps and Pitfalls}. \newblock Ad{\-d}i{\-s}on-Wes{\-l}ey, Reading, MA, USA, 1989. \newblock ISBN 0-201-17928-8. \bibitem{Lamport:LDP85} Leslie Lamport. \newblock {\em {\LaTeX}\emdash A Document Preparation System\emdash User's Guide and Reference Manual}. \newblock Ad{\-d}i{\-s}on-Wes{\-l}ey, Reading, MA, USA, 1985. \newblock ISBN 0-201-15790-X. \bibitem{Lapin:PCU87} J.~E. Lapin. \newblock {\em Portable C and {UNIX} Programming}. \newblock Pren{\-}tice-Hall, Englewood Cliffs, NJ 07632, USA, 1987. \newblock ISBN 0-13-686494-5. \bibitem{Lesk:lex} Michael~E. Lesk and Eric Schmidt. \newblock Lex\emdash a lexical analyzer generator. \newblock In {\em {UNIX} Programmer's Manual}, volume~2, pages 388--400. Holt, Reinhart, and Winston, New York, NY, USA, 1979. \newblock AT\&T Bell Laboratories Technical Report in 1975. \bibitem{Levine:LY92} John~R. Levine, Tony Mason, and Doug Brown. \newblock {\em {\tt lex} \& {\tt yacc}}. \newblock O'Reilly \& {Associates, Inc.}, 981 Chestnut Street, Newton, MA 02164, USA, second edition, 1992. \newblock ISBN 1-56592-000-7. \newblock 400 pp. \newblock US\$29.95. \bibitem{Mason:LY90} Tony Mason and Doug Brown. \newblock {\em {\tt lex} \& {\tt yacc}}. \newblock O'Reilly \& {Associates, Inc.}, 981 Chestnut Street, Newton, MA 02164, USA, 1990. \newblock ISBN 0-937175-49-8. \bibitem{Plauger:SCL92} P.~J. Plauger. \newblock {\em The {Standard C} Library}. \newblock Pren{\-}tice-Hall, Englewood Cliffs, NJ 07632, USA, 1992. \newblock ISBN 0-13-838012-0. \bibitem{Rabinowitz:PC90} Henry Rabinowitz and Chaim Schaap. \newblock {\em Portable C}. \newblock Pren{\-}tice-Hall, Englewood Cliffs, NJ 07632, USA, 1990. \newblock ISBN 0-13-685967-4. \bibitem{Reid:SUM80} Brian Reid. \newblock {\em Scribe User's Manual}. \newblock Carnegie-Mellon University, Pittsburgh, PA, USA, third edition, 1980. \bibitem{Rochkind:AUP85} Marc~J. Rochkind. \newblock {\em Advanced {UNIX} Programming}. \newblock Pren{\-}tice-Hall, Englewood Cliffs, NJ 07632, USA, 1985. \newblock ISBN 0-13-011818-4 (hardback), 0-13-011800-1 (paperback). \bibitem{Schoonover:GEU92} Michael~A. Schoonover, John~S. Bowie, and William~R. Arnold. \newblock {\em {GNU} Emacs: {UNIX} Text Editing and Programming}. \newblock Ad{\-d}i{\-s}on-Wes{\-l}ey, Reading, MA, USA, 1992. \newblock ISBN 0-201-56345-2. \newblock 610 pp. \newblock LCCN QA76.76.T49S36. \bibitem{Schreiner:ICC85} Axel~T. Schreiner and H.~George {Friedman, Jr.} \newblock {\em Introduction to Compiler Construction Under {UNIX}}. \newblock Pren{\-}tice-Hall, Englewood Cliffs, NJ 07632, USA, 1985. \newblock ISBN 0-13-474396-2. \newblock 224 pp. \bibitem{Stevens:UNP90} W.~Richard Stevens. \newblock {\em {UNIX} Network Programming}. \newblock Pren{\-}tice-Hall, Englewood Cliffs, NJ 07632, USA, 1990. \newblock ISBN 0-13-949876-1. \bibitem{Stroustrup:CPL91} Bjarne Stroustrup. \newblock {\em The {C++} Programming Language}. \newblock Ad{\-d}i{\-s}on-Wes{\-l}ey, Reading, MA, USA, second edition, 1991. \newblock ISBN 0-201-53992-6. \bibitem{vanHerwijnen:PS90} Eric van Herwijnen. \newblock {\em Practical {SGML}}. \newblock Kluwer Academic Publishers Group, Norwell, MA, USA, 1990. \newblock ISBN 0-7923-0635-X. \newblock xviii + 307 pp. \newblock \pounds24.90 (1990). \bibitem{xopen:XPG89-1} {X/Open Company, Ltd.} \newblock {\em X\slash Open Portability Guide, {XSI} Commands and Utilities}, volume~1. \newblock Pren{\-}tice-Hall, Englewood Cliffs, NJ 07632, USA, 1989. \newblock ISBN 0-13-685835-X. \end{thebibliography} bibclean-2.11.4.1.orig/doc/bibclean.ilg0000644000175200017520000000060207133432642016671 0ustar debiandebianThis is makeindex, portable version 2.13 (beta) [11-Apr-1994]. Scanning input file bibclean.idx.....done (1239 entries accepted, 0 rejected). Sorting entries..................done (14659 comparisons). Generating output file bibclean.ind....done (744 lines written, 0 warnings). Output written in bibclean.ind. Transcript written in bibclean.ilg. Dynamic memory allocated: 170204 bytes. bibclean-2.11.4.1.orig/doc/bibclean.toc0000644000175200017520000000172007133432645016710 0ustar debiandebian\contentsline {section}{\numberline {1}Introduction}{395} \contentsline {section}{\numberline {2}\BibTeX {} needs improvement}{396} \contentsline {section}{\numberline {3}Run-time options}{397} \contentsline {section}{\numberline {4}Prettyprinting}{399} \contentsline {section}{\numberline {5}Pattern matching and initialization files}{400} \contentsline {section}{\numberline {6}Lexical analysis}{403} \contentsline {section}{\numberline {7}Portability}{404} \contentsline {section}{\numberline {8}\SCRIBE {} bibliography format}{405} \contentsline {section}{\numberline {9}Recommendations for \BibTeX {} design}{405} \contentsline {section}{\numberline {10}A lexical grammar for \BibTeX {}}{407} \contentsline {section}{\numberline {11}A parsing grammar for \BibTeX {}}{410} \contentsline {section}{\numberline {12}Software availability}{414} \contentsline {section}{\hbox to\@tempdima {\hfil }References}{414} \contentsline {section}{\hbox to\@tempdima {\hfil }Index}{415} bibclean-2.11.4.1.orig/doc/bibclean.ind0000644000175200017520000005344007133432642016700 0ustar debiandebian\begin{theindex} \item {\tt .}, 402 \item {\tt .bbl}, 412 \item {\tt .bibcleanrc}, 397 \item {\tt .ini}, 400, 402 \item {\tt /* empty */} rule, 413 \item {\tt /*...*/}, 413 \item {\tt :}, 402 \item ?, 402 \item {\tt @}, 400 \item {\protect\tt \%\{\iffalse }\fi}, 407, 410 \item {\protect\tt \iffalse {\fi \%\}}, 407, 410 \item {\protect\tt \%\%}, 402, 407, 410 \item {\tt \%e}, 402 \item {\tt \%f}, 402 \item {\tt \%k}, 402 \item {\tt \%left}, 410, 411 \item {\tt \%nonassoc}, 410 \item {\tt \%token}, 410 \item {\tt \%v}, 402 \item {\tt \char 92\relax \char 34}, 401, 402, 409 \item {\tt \char 64}, 405, 406, 408, 411 \item {\tt \char 64Begin}, 405 \item {\tt \char 64Begin\penalty 0\{comment\}}, 405 \item {\tt \char 64Comment}, 405 \item {\tt \char 64Comment\penalty 0\{...\}}, 405, 406, 411 \item {\tt \char 64End}, 405 \item {\tt \char 64End\penalty 0\{comment\}}, 405 \item {\tt \char 64Preamble\penalty 0\{...\}}, 405 \item {\tt \char 64String}, 405 \item {\tt \char 64String\penalty 0\{...\}}, 406 \item {\tt \char 64\char 64}, 405 \item {\tt \char 64name}, 405, 411 \item {\tt \char 64name\{...\}}, 411 \item {\tt \char 92\relax \char 92}, 401 \item {\tt \char 92\relax 0x0a}, 401 \item {\tt \char 92\relax 0xhh}, 401 \item 8-bit clean, 409 \indexspace \item {\tt \char 92\relax 0}, 401, 409 \item {\tt \char 92\relax 012}, 401 \item {\tt \char 92\relax 013}, 407 \indexspace \item {\tt A}, 402 \item {\tt \char 92\relax a}, 401 \item {\tt a}, 402 \item abbreviation, 408, 413 \item accent control sequence, 409 \item Aho, Alfred V., 404, 405, 411 \item anonymous {\tt ftp}, 414 \item ANSI\slash ISO Standard C, 403, 404, 407 \item apostrophe \subitem in citation key, 406 \item Apple Macintosh, 407 \item archive hosts \subitem Internet, 414 \item {\tt Article}, 411 \item assignment, 413 \subitem list, 412 \subitem operator, 409, 413 \subsubitem associativity of, 410 \subitem rule \subsubitem error recovery in, 411 \subitem separator, 409 \item {\tt assignment} rule, 412, 413 \item {\tt assignment_lhs} rule, 413 \item {\tt assignment_list}, 412, 413 \item {\tt assignment_list} rule, 412, 413 \item associativity, 410 \item at-sign, 405 \item {\tt at_object} rule, 411 \item Atari, 404 \item {\tt -author}, 397 \item {\tt author}, 413 \item author name \subitem period after initials, 398 \subitem reordering, 398 \item auxiliary file, 396 \indexspace \item {\tt \char 92\relax b}, 401 \item Bach, P. D. Q., 400 \item back end, 397 \item backslash-newline, 398, 400, 403, 404, 408 \item backslash-quote, 405 \item Beebe, Nelson H. F., 396 \item {\tt bib}, 406 \item {\tt bibclean}, 395--405, 407, 408, 410, 412, 414 \item {\tt bibclean.ini}, 397 \item {\tt BIBCLEANEXT}, 400 \item {\tt BIBCLEANINI}, 397 \item {\tt bibdup}, 404 \item {\tt bibdup.awk}, 404 \item {\tt BIBINPUTS}, 397, 400 \item {\tt biblex}, 407, 410 \item bibliography \subitem entry, 412 \subitem file, 396, 397 \subitem style, 396 \item {\tt \char 92\relax bibliography}, 396, 406 \item bibliography-specific pattern, 402 \item {\tt \char 92\relax bibliographystyle}, 396 \item {\tt bibparse}, 410 \item {\tt bibtex_file} rule, 411 \item {\tt bison}, 406, 408, 410--412, 414 \item {\tt Book}, 411 \item Borland International, 404 \item brace, 409 \subitem ignored in pattern matching, 402 \subitem space around, 402 \item Brown, Doug, 406 \item Bryan, Martin, 396 \item buffer overflow, 406 \indexspace \item C++, 397, 404 \item Cameron, Debra, 396 \item carriage return, 407 \item {\tt chapter}, 402 \item {\tt -check-values}, 398, 400 \item checksum \subitem in {\tt ISBN} and {\tt ISSN}, 402 \item citation \subitem key, 395, 403, 412 \subsubitem problems in recognizing, 412 \subitem style, 396 \item {\tt \char 92\relax cite}, 396 \item class library, 404 \item code generation, 397 \item colon, 410 \item comma, 412 \subitem optional after assignment, 413 \item command-line options, \see{options}{415} \item {\tt Comment}, 408, 409, 411 \item comment \subitem entry, 411 \subitem in-line, 408, 410, 412, 413 \subsubitem associativity of, 410 \subsubitem precedence of, 411 \subitem syntax, 406 \item {\tt comment}, 405 \item {\tt comment} rule, 411, 412 \item concatenation, \see{string}{415} \item control sequence \subitem {\tt \char 92\relax bibliography}, 396, 406 \subitem {\tt \char 92\relax bibliographystyle}, 396 \subitem {\tt \char 92\relax cite}, 396 \item core dump, 405 \indexspace \item {\tt D}, 402 \item {\tt d}, 402 \item decimal, 397 \item {\tt -delete-empty-values}, 398, 399 \item delimited string, 409, 413 \item delimiters \subitem in \protect\SCRIBE{}, 405 \subitem mismatched, 398, 413 \item digit string, 408 \item documentation, 414 \item dump \subitem post-mortem, 405 \indexspace \item editor, \see{Emacs}{415} \item editor name \subitem period after initials, 398 \subitem reordering, 398 \item electronic mail server, 414 \item Ellis, Margaret A., 404 \item Emacs, 396, 399, 405 \item embedded quote, 409 \item empty \subitem pattern, 402 \subitem string, 413 \subitem values \subsubitem deleting, 398 \item entry \subitem name, 408 \item {\tt entry} rule, 411--413 \item {\tt entry_head} rule, 412 \item environment variable, 397 \item error \subitem log file, 399 \subitem message, 411 \subsubitem redirecting, 397 \subitem recovery, 411 \subitem reporting, 406 \item {\tt error} rule, 411 \item {\tt -error-log filename}, 397 \item escape sequence, 401, 403, 405, 409 \subitem in message text, 402 \subitem table, 401 \indexspace \item {\tt \char 92\relax f}, 401, 407 \item Feuer, Alan~R., 404 \item field name, 408, 413 \item file \subitem {\tt .bbl}, 412 \subitem {\tt .bibcleanrc}, 397 \subitem {\tt .ini}, 400, 402 \subitem {\tt bibclean}, 404 \subitem {\tt bibclean.ini}, 397 \subitem {\tt BIBCLEANEXT}, 400 \subitem {\tt BIBCLEANINI}, 397 \subitem {\tt bibdup}, 404 \subitem {\tt bibdup.awk}, 404 \subitem {\tt BIBINPUTS}, 397, 400 \subitem bibliography, 396, 397 \subitem error log, 399 \subitem {\tt ftp.math.utah.edu}, 414 \subitem inclusion, 406, 412 \subitem initialization, 397, 398, 400 \subsubitem locating, 399 \subsubitem nested, 400 \subsubitem pattern characters, 402 \subsubitem patterns in, 398 \subitem name \subsubitem space in, 412 \subsubitem syntax of, 412 \subitem {\tt nawk}, 404 \subitem {\tt PATH}, 397, 400 \subitem {\tt pub/tex/bib}, 414 \subitem {\tt regexp}, 401 \subitem sample initialization, 401 \subitem {\tt stderr}, 397, 399 \subitem {\tt stdin}, 400 \subitem {\tt SYS\pdollar SYSTEM}, 397 \subitem {\tt tr}, 404 \subitem {\tt tuglib\char 64math.utah.edu}, 414 \item {\tt -file-position}, 398, 399 \item {\tt -fix-font-changes}, 398, 399 \item {\tt -fix-initials}, 398, 400 \item {\tt -fix-names}, 398, 400 \item {\tt flex}, 406, 407, 414 \item font changes \subitem fixing, 398 \item format \subitem item, 402 \subsubitem {\tt \%\%}, 402 \subsubitem {\tt \%e}, 402 \subsubitem {\tt \%f}, 402 \subsubitem {\tt \%k}, 402 \subsubitem {\tt \%v}, 402 \subitem of grammar rules, 407, 410 \item formfeed, 407 \item Free Software Foundation, 397, 406 \item Friedman, Jr., H. George, 406 \item front end, 397 \item {\tt ftp}, 414 \item {\tt ftp.math.utah.edu}, 414 \item function \subitem {\tt out_lbrace()}, 409 \subitem {\tt out_lparen()}, 409 \subitem {\tt out_protected_string()}, 408 \subitem {\tt out_rbrace()}, 409 \subitem {\tt out_rparen()}, 409 \subitem {\tt out_string()}, 409 \subitem {\tt out_token()}, 408, 409 \indexspace \item GNU \subitem Emacs, 396, 399, 405 \subitem {\tt regexp} package, 401 \subitem \protect\TeX{}info, 405 \item grammar, 405 \subitem format of rules, 407, 410 \subitem formatting conventions, 410 \subitem LALR(1), 406, 412 \subitem lexical, 407 \subitem LL(0), 405 \subitem LL(1), 405, 406 \subitem LR($k$), 406 \subitem parsing, 410 \subitem size of, 407, 410 \indexspace \item Harbison, Samuel P., 404 \item {\tt help}, 414 \item {\tt -help {\prm or} -?}, 397 \item Herwijnen, Eric van, 396 \item hexadecimal, 397 \item horizontal space character, 407, 409 \indexspace \item in-line comment, 408, 410, 412, 413 \subitem associativity of, 410 \subitem precedence of, 411 \item {\tt Include}, 408, 409, 411, 412 \item {\tt include} rule, 411, 412 \item {\tt -init-file filename}, 397, 398, 400 \item initialization file, 397, 398, 400 \subitem locating, 399 \subitem nested, 400 \subitem pattern characters, 402 \subitem patterns in, 398 \subitem sample, 401 \item Internet archive hosts, 414 \item interpretation of code, 397 \item {\tt ISBN}, 402 \item ISBN (International Standard Book Number), 399 \item ISO10646M character set, 406 \item {\tt ISSN}, 402 \item ISSN (International Standard Serial Number), 399 \indexspace \item Jaeschke, Rex, 404 \item Johnson, Steven C., 406 \indexspace \item Kahn, Philippe, 404 \item Kernighan, Brian W., 404 \item {\tt key}, 403, 405 \item key name, 408, 412 \item {\tt key_name} rule, 412 \item Knuth, Donald E., 398, 404, 406 \item Koenig, Andrew, 404 \indexspace \item LALR(1) \subitem grammar, 406, 412 \subitem parser, 406 \item Lamport, Leslie, 395, 396, 403, 406 \item Lapin, J. E., 404 \item {\tt last_object}, 408 \item {\tt last_token}, 408 \item {\tt \%left}, 410, 411 \item left-recursive rule, 411 \item Lesk, Michael E., 406 \item Levine, John R., 406 \item {\tt lex}, 406--410, 414 \item lexer, \see{lexical analyzer}{415} \item lexical analysis, 397 \item lexical analyzer, 397, 398, 403 \item lexical grammar, 407 \item line \subitem number, 406 \subitem number directive, 403 \subitem width limit, 397 \subitem wrapping, 398, 404, 408 \item list \subitem of assignments, 412 \subitem of objects, 411 \item literate programming, 407, 410 \item LL(0) grammar, 405 \item LL(1) \subitem grammar, 405, 406 \subitem parser, 411 \item LR($k$) grammar, 406 \indexspace \item Macintosh \subitem Apple, 407 \item macro, \seealso{control sequence}{415} \subitem {\tt N}, 407, 408 \subitem {\tt O}, 407 \subitem {\tt RETURN}, 408--410 \subitem {\tt S}, 407 \subitem {\tt W}, 407 \item macro definition \subitem {\tt lex}, 407 \item macro use \subitem {\tt lex}, 407 \item Mason, Tony, 406 \item {\tt -max-width 0}, 397 \item {\tt -max-width nnn}, 397, 404 \item menu \subitem pop-up, 396 \item message \subitem disabling warning, 399 \subitem error, 411 \subitem help, 397 \subitem redirecting, 397 \item mismatched delimiters, 398, 413 \item {\tt month}, 402 \indexspace \item {\tt N}, 407, 408 \item {\tt \char 92\relax n}, 401 \item {\tt name}, 411 \item {\tt nawk}, 404 \item newline, 409, 412, 413 \subitem associativity of, 410 \item {\tt -no-check-values}, 398 \item {\tt -no-delete-empty-values}, 398, 399 \item {\tt -no-file-position}, 398 \item {\tt -no-fix-font-changes}, 398 \item {\tt -no-fix-initials}, 398 \item {\tt -no-fix-names}, 398 \item {\tt -no-init-files}, 400 \item {\tt -no-par-breaks}, 398, 399 \item {\tt -no-prettyprint}, 397, 398, 403, 407, 410 \item {\tt -no-print-patterns}, 398 \item {\tt -no-read-init-files}, 398 \item {\tt -no-remove-OPT-prefixes}, 398, 399 \item {\tt -no-scribe}, 399 \item {\tt -no-trace-file-opening}, 399 \item {\tt -no-warnings}, 399 \item non-terminal, 410 \subitem {\tt /* empty */}, 413 \subitem {\tt assignment}, 412, 413 \subitem {\tt assignment_lhs}, 413 \subitem {\tt assignment_list}, 412, 413 \subitem {\tt at_object}, 411 \subitem {\tt bibtex_file}, 411 \subitem {\tt comment}, 411, 412 \subitem {\tt entry}, 411--413 \subitem {\tt entry_head}, 412 \subitem {\tt error}, 411 \subitem {\tt include}, 411, 412 \subitem {\tt key_name}, 412 \subitem {\tt object}, 411 \subitem {\tt object_list}, 411 \subitem {\tt opt_space}, 411--413 \subitem {\tt preamble}, 411, 412 \subitem {\tt simple_value}, 412, 413 \subitem {\tt single_space}, 413 \subitem {\tt space}, 413 \subitem {\tt string}, 411, 412 \subitem {\tt value}, 412, 413 \item {\tt \%nonassoc}, 410 \item NUL (0) \subitem in string, 401, 409 \item {\tt number}, 401, 402 \indexspace \item {\tt O}, 407 \item object, 411 \subitem list, 411 \item {\tt object} rule, 411 \item object-oriented programming, 404 \item {\tt object_list} rule, 411 \item Objective C, 397, 404 \item octal, 397 \item {\tt \char 92\relax ooo}, 401 \item operator \subitem assignment, 409, 413 \subitem string concatenation, 408, 411, 412 \item {\tt OPT-} prefix \subitem removing, 399 \item {\tt opt_space}, 412 \item {\tt opt_space} rule, 411--413 \item option \subitem {\tt -author}, 397 \subitem {\tt -check-values}, 398, 400 \subitem {\tt -delete-empty-values}, 398, 399 \subitem {\tt -error-log filename}, 397 \subitem {\tt -file-position}, 398, 399 \subitem {\tt -fix-font-changes}, 398, 399 \subitem {\tt -fix-initials}, 398, 400 \subitem {\tt -fix-names}, 398, 400 \subitem {\tt -help {\prm or} -?}, 397 \subitem {\tt -init-file filename}, 397, 398, 400 \subitem {\tt -max-width 0}, 397 \subitem {\tt -max-width nnn}, 397, 404 \subitem {\tt -no-check-values}, 398 \subitem {\tt -no-delete-empty-values}, 398, 399 \subitem {\tt -no-file-position}, 398 \subitem {\tt -no-fix-font-changes}, 398 \subitem {\tt -no-fix-initials}, 398 \subitem {\tt -no-fix-names}, 398 \subitem {\tt -no-init-files}, 400 \subitem {\tt -no-par-breaks}, 398, 399 \subitem {\tt -no-prettyprint}, 397, 398, 403, 407, 410 \subitem {\tt -no-print-patterns}, 398 \subitem {\tt -no-read-init-files}, 398 \subitem {\tt -no-remove-OPT-prefixes}, 398, 399 \subitem {\tt -no-scribe}, 399 \subitem {\tt -no-trace-file-opening}, 399 \subitem {\tt -no-warnings}, 399 \subitem {\tt -par-breaks}, 398 \subitem {\tt -prettyprint}, 398 \subitem {\tt -print-patterns}, 398 \subitem {\tt -read-init-files}, 398 \subitem {\tt -remove-OPT-prefixes}, 398, 399 \subitem {\tt -scribe}, 399 \subitem {\tt -trace-file-opening}, 399, 400 \subitem {\tt -version}, 399 \subitem {\tt -warnings}, 399 \item options, 400 \item {\sc OS/2}, 404 \item {\tt out_lbrace()}, 409 \item {\tt out_lparen()}, 409 \item {\tt out_protected_string()}, 408 \item {\tt out_rbrace()}, 409 \item {\tt out_rparen()}, 409 \item {\tt out_string()}, 409 \item {\tt out_token()}, 408, 409 \item overflow of string buffer, 406 \indexspace \item {\tt pages}, 402 \item {\tt -par-breaks}, 398 \item parenthesis, 409 \item parser \subitem LALR(1), 406 \subitem LL(1), 411 \item parsing, 397 \item parsing grammar, 410 \item Pascal, 404 \item {\tt PATH}, 397, 400 \item pattern \subitem bibliography-specific, 402 \subitem changing warning message, 402 \subitem empty, 402 \subitem quotes in, 402 \item pattern matching, 400 \subitem brace ignored in, 402 \subitem regular expression, 400 \item {\sc PC-DOS}, 396, 397, 400, 404 \item period \subitem in citation key, 406 \subitem in regular expression, 407, 409 \item pipeline, 404 \item Plauger, P. J., 404 \item pop-up menu, 396 \item portability, 404 \item post-mortem dump, 405 \item {\tt Preamble}, 408, 411, 412 \item {\tt preamble} rule, 411, 412 \item precedence declaration, 410 \item preprocessor, 403 \item {\tt -prettyprint}, 398 \item prettyprinter, 397, 398, 403 \item prettyprinting, 399 \item {\tt -print-patterns}, 398 \item program \subitem search path, 400 \subitem version, 399 \item {\tt pub/tex/bib}, 414 \indexspace \item query (?) \subitem in messages, 402 \item quote \subitem embedded, 409 \subitem in pattern, 402 \indexspace \item {\tt R}, 402 \item {\tt \char 92\relax r}, 401, 407 \item {\tt r}, 402 \item Rabinowitz, Henry, 404 \item {\tt -read-init-files}, 398 \item recovery \subitem from error, 411 \item recursion, 400 \item {\tt refer}, 406 \item {\tt regexp}, 401 \item regular expression \subitem pattern matching, 400 \subitem syntax of, 407 \item Reid, Brian, 405 \item {\tt -remove-OPT-prefixes}, 398, 399 \item {\tt RETURN}, 408--410 \item {\tt return}, 408 \item Ritchie, Dennis M., 404 \item Rochkind, Marc J., 404 \item Rosenblatt, Bill, 396 \item run-time options, \see{options}{415} \item runaway string argument, 398, 406 \indexspace \item {\tt S}, 407 \item Schaap, Chaim, 404 \item Schickele, Peter, 400 \item Schmidt, Eric, 406 \item Schreiner, Axel T., 406 \item {\sc Scribe}, 395, 399, 404--407, 409, 411, 417 \item {\tt -scribe}, 399 \item search path, 400 \item semicolon, 410 \item {\tt send}, 414 \item separator \subitem assignment, 409 \item Sethi, Ravi, 405, 411 \item {\sc SGML}, 396 \item sharp ({\tt\char35}), 403, 408 \item simple value, 413 \item {\tt simple_value} rule, 412, 413 \item single space, 413 \item {\tt single_space} rule, 413 \item source code, 414 \item space, 410, 413 \subitem associativity of, 410 \subitem between tokens, 411 \subitem precedence of, 411 \item {\tt space} rule, 413 \item standard error unit, 397 \item {\tt stderr}, 397, 399 \item {\tt stdin}, 400 \item Steele Jr., Guy L., 404 \item Stevens, W. Richard, 404 \item {\tt String}, 408, 411, 412 \item string \subitem concatenation operator, 408, 411, 412 \subitem pool, 404 \subitem runaway, 398, 406 \subitem substitution, 395 \item {\tt string} rule, 411, 412 \item Stroustrup, Bjarne, 404 \item style \subitem bibliography, 396 \item {\tt SYS\pdollar SYSTEM}, 397 \indexspace \item {\tt \char 92\relax t}, 401 \item template \subitem editor, 396 \item terminal, 410 \subitem {\tt TOKEN_ABBREV}, 403, 408, 410, 412, 413 \subitem {\tt TOKEN_AT}, 403, 408, 410, 411 \subitem {\tt TOKEN_COMMA}, 403, 408--410, 412, 413 \subitem {\tt TOKEN_COMMENT}, 408, 410, 412 \subitem {\tt TOKEN_ENTRY}, 403, 408, 410, 412 \subitem {\tt TOKEN_EQUALS}, 403, 409, 410, 413 \subitem {\tt TOKEN_FIELD}, 403, 408, 410, 413 \subitem {\tt TOKEN_INCLUDE}, 408, 410, 412 \subitem {\tt TOKEN_INLINE}, 408, 410, 413 \subitem {\tt TOKEN_KEY}, 403, 408, 410, 412 \subitem {\tt TOKEN_LBRACE}, 403, 409, 410, 412, 414 \subitem {\tt TOKEN_LITERAL}, 409, 410, 412, 414 \subitem {\tt TOKEN_NEWLINE}, 403, 409, 410, 413 \subitem {\tt TOKEN_PREAMBLE}, 408, 410, 412 \subitem {\tt TOKEN_RBRACE}, 403, 409--412, 414 \subitem {\tt TOKEN_SHARP}, 409--412 \subitem {\tt TOKEN_SPACE}, 409, 410, 413 \subitem {\tt TOKEN_STRING}, 403, 408--410, 412 \subitem {\tt TOKEN_VALUE}, 403, 408--410, 413 \item testing, 404, 414 \item \protect\TeX{}info, 405 \item text editor, \see{Emacs}{415} \item {\tt title}, 413 \item token, 397, \see{terminal}{415} \subitem string, 403 \subitem type, 403 \subitem unclassifiable, 409 \item {\tt TOKEN_ABBREV}, 403, 408, 410, 412, 413 \item {\tt TOKEN_AT}, 403, 408, 410, 411 \item {\tt TOKEN_COMMA}, 403, 408--410, 412, 413 \item {\tt TOKEN_COMMENT}, 408, 410, 412 \item {\tt TOKEN_ENTRY}, 403, 408, 410, 412 \item {\tt TOKEN_EQUALS}, 403, 409, 410, 413 \item {\tt TOKEN_FIELD}, 403, 408, 410, 413 \item {\tt TOKEN_INCLUDE}, 408, 410, 412 \item {\tt TOKEN_INLINE}, 408, 410, 413 \item {\tt TOKEN_KEY}, 403, 408, 410, 412 \item {\tt TOKEN_LBRACE}, 403, 409, 410, 412, 414 \item {\tt TOKEN_LITERAL}, 409, 410, 412, 414 \item {\tt TOKEN_NEWLINE}, 403, 409, 410, 413 \item {\tt TOKEN_PREAMBLE}, 408, 410, 412 \item {\tt TOKEN_RBRACE}, 403, 409--412, 414 \item {\tt TOKEN_SHARP}, 409--412 \item {\tt TOKEN_SPACE}, 409, 410, 413 \item {\tt TOKEN_STRING}, 403, 408--410, 412 \item {\tt TOKEN_VALUE}, 403, 408--410, 413 \item {\sc TOS}, 404 \item {\tt tr}, 404 \item {\tt -trace-file-opening}, 399, 400 \item trailing context, 412, 414 \item {\tt trap}, 414 \item {\tt trip}, 414 \item TUG bibliography collection, 396, 399 \item TUG Resource Directory, 396 \item {\protect\TUB{}}, 396 \item {\tt tuglib\char 64math.utah.edu}, 414 \indexspace \item Ullman, Jeffrey D., 405, 411 \item unclassifiable token, 409 \item {\sc UNIX}, 396, 397, 400, 401, 404, 406, 407, 409 \indexspace \item {\tt \char 92\relax v}, 401, 407 \item value, 412 \item {\tt value} rule, 412, 413 \item van Herwijnen, Eric, 396 \item variable \subitem {\tt last_object}, 408 \subitem {\tt last_token}, 408 \item {\sc VAX}, 396, 397, 404 \item version \subitem of program, 399 \item {\tt -version}, 399 \item vertical \subitem bar, 410 \subitem tab, 407 \item {\sc VMS}, 396, 397, 404 \item {\tt volume}, 402 \indexspace \item {\tt W}, 402, 407 \item {\tt w}, 402 \item warning message \subitem changing, 402 \subitem disabling, 398, 399 \subitem redirecting, 397 \item {\tt -warnings}, 399 \item {\tt WEB}, 404, 406, 407 \item Weinberger, Peter J., 404 \item wrapping \subitem of long lines, 398, 404, 408 \indexspace \item {\tt X}, 401, 402 \item {\tt \char 92\relax x}, 402 \item {\tt x}, 402 \item X/Open Consortium, 409 \indexspace \item {\tt yacc}, 406--408, 410--414 \item {\tt year}, 403 \end{theindex} bibclean-2.11.4.1.orig/doc/bibclean.log0000644000175200017520000000426407133432645016712 0ustar debiandebianThis is TeX, Version 3.1415 (C version 6.1) (format=lplain 94.6.21) 13 JUL 2000 15:33 **bibclean.ltx (bibclean.ltx LaTeX Version 2.09 <14 January 1991> (ltugboat.sty Document Style `ltugboat' v1.19 <16 November 93> (/usr/local/lib/tex/latex/article.sty Document Style `article' <16 Mar 88>. (/usr/local/lib/tex/latex/art10.sty) \c@part=\count79 \c@section=\count80 \c@subsection=\count81 \c@subsubsection=\count82 \c@paragraph=\count83 \c@subparagraph=\count84 \c@figure=\count85 \c@table=\count86 ) (tugboat.cmn File `TUGBOAT.CMN' v1.13f <15 Apr 1994> \normalparindent=\dimen99 \T@stBox=\box25 \TestBox=\box26 \T@stCount=\count87 \TestCount=\count88 \T@stDimen=\dimen100 \TestDimen=\dimen101 \hours=\count89 \minutes=\count90 \PreTitleDrop=\dimen102 \AboveTitleSkip=\skip41 \BelowTitleSkip=\skip42 \strulethickness=\dimen103 \stbaselineskip=\dimen104 \raggedskip=\dimen105 \raggedstretch=\dimen106 \raggedparfill=\skip43 \issueseqno=\count91 \TBremarkfile=\write3 \@altfilenames=\read0 \count@@=\count92 \signaturewidth=\dimen107 ) \sectitlefam=\fam11 \stfontheight=\dimen108 \authornumber=\count93 \pagewd=\dimen109 \trimwd=\dimen110 \trimlgt=\dimen111 \headmargin=\dimen112 ) (/usr/local/lib/tex/latex/makeidx.sty) (path.sty This is path.sty, Version 3.03 <03-Dec-1991> \ATcode=\count94 \c@tcode=\count95 \c@unter=\count96 ) (texnames.sty This is texnames.sty, Version 1.09 <16 March 1993> ) (bibclean.sty) \@indexfile=\write4 Writing index file bibclean.idx (bibclean.aux) (bibclean.toc) \tf@toc=\write5 (bibclean.lot) \tf@lot=\write6 [395 ] [396] [397] [398] [399] [400] [401] [402] [403] [404] [405] [406] [407] [408] [409] [410] [411] key_name may no longer need to allow for abbrevs [412] [413] (bibclean.bbl [414]) (bibclean.ind [415] [416] [417] [418] [419] [420]) [421] (bibclean.aux) ) Here is how much of TeX's memory you used: 621 strings out of 11984 5629 string characters out of 87273 49585 words of memory out of 262141 2514 multiletter control sequences out of 9500 21538 words of font info for 81 fonts, out of 100000 for 255 19 hyphenation exceptions out of 607 16i,10n,17p,228b,521s stack positions out of 300i,40n,60p,3000b,4000s Output written on bibclean.dvi (27 pages, 139968 bytes). bibclean-2.11.4.1.orig/doc/is-plain.bst0000644000175200017520000007555506130111463016675 0ustar debiandebian%% ===================================================================== %% WARNING: Do NOT edit this file. It was produced automatically by %% Nelson H. F. Beebe %% from /a/sundown/export/home/0048/beebe/tex/bib/merge/xbtxbst.doc %% on Mon Apr 1 19:38:43 MST 1996 %% ===================================================================== %%%===================================================================== %%% @BibTeX-style-file{ %%% author = "Nelson H. F. Beebe", %%% version = "2.02", %%% date = "01 April 1996", %%% time = "19:38:29 MST", %%% filename = "is-plain.bst", %%% address = "Center for Scientific Computing %%% Department of Mathematics %%% University of Utah %%% Salt Lake City, UT 84112 %%% USA", %%% telephone = "+1 801 581 5254", %%% FAX = "+1 801 581 4148", %%% checksum = "25283 1666 3984 31597", %%% email = "beebe@math.utah.edu (Internet)", %%% codetable = "ISO/ASCII", %%% keywords = "BibTeX, style, bibliography", %%% supported = "yes", %%% docstring = "This file is a modification of the standard %%% BibTeX btxbst.doc file, or is a .bst file %%% derived from that modification. It contains %%% added support for ISBN and ISSN fields, as %%% well as for the PERIODICAL entry. The UNIX C %%% preprocessor can be used to extract the %%% extensions of the standard styles, as %%% follows: %%% %%% cpp -P -DPLAIN xbtxbst.doc is-plain.txt %%% cpp -P -DUNSRT xbtxbst.doc is-unsrt.txt %%% cpp -P -DALPHA xbtxbst.doc is-alpha.txt %%% cpp -P -DABBRV xbtxbst.doc is-abbrv.txt %%% %%% Add -D_ISBN for ISBN output, -D_ISSN for %%% ISSN output, -D_LCCN for LCCN output, %%% -D_PRICE for price output, and -D_BOOKPAGES %%% for book, techreport, manual, and thesis %%% pages output. %%% %%% Add -D_URL to get World-Wide Web Uniform %%% Resource Locator (URL) output. %%% %%% Add -D_NUMERIC_SUFFIXES to get numeric %%% label suffixes -1, -2, ..., -26, instead of %%% letters a, b, ..., z, so as to correctly %%% handle alpha-style bibliographies with more %%% than 26 entries for a single author in one %%% year. Change letter suffix code to switch %%% to numeric suffixes if more than 26 letters %%% are used, so that no matter which scheme is %%% selected, correct output will always be %%% obtained. %%% %%% If desired, a sed script can be used to %%% eliminate non-essential comments (this %%% reduces the file size by 2/3); a command %%% filter step like %%% sed -e '/^%$/d' -e '/^%[^%].*$/d' %%% will accomplish that job. %%% %%% The checksum field above contains a CRC-16 %%% checksum as the first value, followed by the %%% equivalent of the standard UNIX wc (word %%% count) utility output of lines, words, and %%% characters. This is produced by Robert %%% Solovay's checksum utility." %%% } %%% ==================================================================== %%% Revision history (reverse time order): %%% %%% 2.02 [01-Apr-1996] %%% Add day keyword support with new code in format.date function. %%% Oren Patashnik will include this new keyword in standard styles %%% in BibTeX 1.0. %%% %%% Add new function collapse.pagerange, and use it to collapse %%% page ranges with identical initial and final numbers to a %%% single number, so that bibliography files can distinguish %%% between one-page documents, and documents missing final page %%% numbers. %%% %%% 2.01 [25-Oct-1994] %%% Add URL output support. %%% %%% 2.00 [12-Oct-1994] %%% Add support for pages in theses and manuals, treating them %%% like Book and InBook pages. %%% %%% Correct ISSN support: a typo caused output of ISBN instead of %%% ISSN. %%% %%% Wherever ISBNs are output, also output an ISSN, if one %%% exists, and vice versa. The reason is that some periodicals %%% (e.g. The X Resource, published by O'Reilly and Associates) %%% have both ISSN and ISBN numbers, and can be purchased either %%% as journal subscriptions, or as single volumes. %%% %%% For InProceedings and Proceedings output, issue a warning for %%% a missing publisher: even though that field is optional, a %%% bibliographic reference without it is incomplete. %%% %%% Remove harmless, but unneeded, single horizontal space before %%% price output added with version 1.03. %%% %%% Change Proceedings and InProceedings to treat address values %%% as publisher addresses, as they are with every other document %%% type, rather than as conference addresses, which belong in %%% the title field (that is how major libraries, including OCLC %%% and Library of Congress, with nearly 60M holdings, represent %%% them). The need for this change has been discussed with %%% BibTeX's author, Oren Patashnik, and there is a good %%% possibility that BibTeX 1.0 will contain the change %%% implemented here. This is an INCOMPATIBLE change that will %%% produce different .bbl file formatting. However, the TUG and %%% BibNet bibliography projects have consistently used address %%% to me publisher/organization/institution address, and so %%% already conform to the new practice. %%% %%% 1.05 [30-May-1994] %%% Add NUMERIC_SUFFIXES support. %%% %%% Change all preprocessor statements to put else and endif %%% labels inside C-style comments to conform to 1989 ISO/ANSI C %%% Standard. %%% %%% 1.04 [11-Nov-1993] %%% Add underscore prefix to new processor symbols to prevent %%% substitution in comments %%% %%% 1.03 [11-Oct-1993] %%% Add support for LCCN (Library of Congress Catalog Number) %%% and price fields, and make ISBN, ISSN, LCCN, and price %%% selectable by preprocessor conditionals. %%% %%% 1.02 [12-Sep-1991] %%% Merge in Barbara N. Beeton's suggestion for hyphen-less %%% line breaks around volume(number):page. %%% %%% 1.01 [10-Sep-1991] %%% Update file comment header and use Solovay checksum program. %%% %%% 1.00 [17-Oct-1990] %%% Original version merging hand-edits of is-xxx.bst files into %%% this master file, xbtxbst.doc. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% BibTeX `plain' family %% version 0.99b for BibTeX versions 0.99a or later, LaTeX version 2.09. %% Copyright (C) 1985, all rights reserved. %% Copying of this file is authorized only if either %% (1) you make absolutely no changes to your copy, including name, or %% (2) if you do make changes, you name it something other than %% btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst. %% This restriction helps ensure that all standard styles are identical. %% The file btxbst.doc has the documentation for this style. ENTRY { address author booktitle chapter day edition editor howpublished institution isbn issn journal key lccn month note number organization pages price publisher school series title type URL volume year } {} { label } INTEGERS { output.state before.all mid.sentence after.sentence after.block } FUNCTION {init.state.consts} { #0 'before.all := #1 'mid.sentence := #2 'after.sentence := #3 'after.block := } STRINGS { b e new.pages original.t s t } FUNCTION {output.nonnull} { 's := output.state mid.sentence = { ", " * write$ } { output.state after.block = { add.period$ write$ newline$ "\newblock " write$ } { output.state before.all = 'write$ { add.period$ " " * write$ } if$ } if$ mid.sentence 'output.state := } if$ s } FUNCTION {output} { duplicate$ empty$ 'pop$ 'output.nonnull if$ } FUNCTION {output.check} { 't := duplicate$ empty$ { pop$ "empty " t * " in " * cite$ * warning$ } 'output.nonnull if$ } FUNCTION {output.bibitem} { newline$ "\bibitem{" write$ cite$ write$ "}" write$ newline$ "" before.all 'output.state := } FUNCTION {fin.entry} { add.period$ write$ newline$ } FUNCTION {new.block} { output.state before.all = 'skip$ { after.block 'output.state := } if$ } FUNCTION {new.sentence} { output.state after.block = 'skip$ { output.state before.all = 'skip$ { after.sentence 'output.state := } if$ } if$ } FUNCTION {not} { { #0 } { #1 } if$ } FUNCTION {and} { 'skip$ { pop$ #0 } if$ } FUNCTION {or} { { pop$ #1 } 'skip$ if$ } FUNCTION {new.block.checka} { empty$ 'skip$ 'new.block if$ } FUNCTION {new.block.checkb} { empty$ swap$ empty$ and 'skip$ 'new.block if$ } FUNCTION {new.sentence.checka} { empty$ 'skip$ 'new.sentence if$ } FUNCTION {new.sentence.checkb} { empty$ swap$ empty$ and 'skip$ 'new.sentence if$ } FUNCTION {field.or.null} { duplicate$ empty$ { pop$ "" } 'skip$ if$ } FUNCTION {emphasize} { duplicate$ empty$ { pop$ "" } { "{\em " swap$ * "}" * } if$ } INTEGERS { nameptr namesleft numnames } FUNCTION {format.names} { 's := #1 'nameptr := s num.names$ 'numnames := numnames 'namesleft := { namesleft #0 > } { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := nameptr #1 > { namesleft #1 > { ", " * t * } { numnames #2 > { "," * } 'skip$ if$ t "others" = { " et~al." * } { " and " * t * } if$ } if$ } 't if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } while$ } FUNCTION {format.authors} { author empty$ { "" } { author format.names } if$ } FUNCTION {format.editors} { editor empty$ { "" } { editor format.names editor num.names$ #1 > { ", editors" * } { ", editor" * } if$ } if$ } FUNCTION {format.isbn} { isbn empty$ { "" } { new.block "ISBN " isbn * } if$ } FUNCTION {format.issn} { issn empty$ { "" } { new.block "ISSN " issn * } if$ } FUNCTION {format.lccn} { lccn empty$ { "" } { new.block "LCCN " lccn * } if$ } FUNCTION {format.price} { price empty$ { "" } { new.block price } if$ } FUNCTION {format.url} { url empty$ { "" } { new.block "URL \path`" url * "`" *} if$ } FUNCTION {format.title} { title empty$ { "" } { title "t" change.case$ } if$ } FUNCTION {collapse.pagerange} { 't := % save input page range string t 'original.t := % save original page range "" 'b := % beginning page number "" 'e := % ending page number { t empty$ not } % while-loop Boolean condition { % while-loop body t #1 #2 substring$ "--" = % have we found the en-dash? { t #3 global.max$ substring$ 'e := % yes, save ending page number "" 't := % and set t to empty string to terminate loop } { b t #1 #1 substring$ * 'b := % no, just accumulate this character t #2 global.max$ substring$ 't := % and set t to the remaining string } if$ } while$ % on exit, t has ending page number string e b = % are beginning and ending numbers the same? { b } % yes, return the beginning page number string { original.t } % no, return the original page number string if$ } FUNCTION {n.dashify} { 't := "" { t empty$ not } { t #1 #1 substring$ "-" = { t #1 #2 substring$ "--" = not { "--" * t #2 global.max$ substring$ 't := } { { t #1 #1 substring$ "-" = } { "-" * t #2 global.max$ substring$ 't := } while$ } if$ } { t #1 #1 substring$ * t #2 global.max$ substring$ 't := } if$ } while$ } FUNCTION {format.date} { year empty$ { month empty$ { day empty$ { "" } { "there's a day but no month or year in " cite$ * warning$ } if$ } { "there's a month but no year in " cite$ * warning$ month day empty$ { } { " " * day * } if$ } if$ } { month empty$ { day empty$ { year } { "there's a day and year but no month in " cite$ * warning$ } if$ } { month " " * day empty$ { } { day * ", " * } if$ year * } if$ } if$ } FUNCTION {format.btitle} { title emphasize } FUNCTION {tie.or.space.connect} { duplicate$ text.length$ #3 < { "~" } { " " } if$ swap$ * * } FUNCTION {either.or.check} { empty$ 'pop$ { "can't use both " swap$ * " fields in " * cite$ * warning$ } if$ } FUNCTION {format.bvolume} { volume empty$ { "" } { "volume" volume tie.or.space.connect series empty$ 'skip$ { " of " * series emphasize * } if$ "volume and number" number either.or.check } if$ } FUNCTION {format.number.series} { volume empty$ { number empty$ { series field.or.null } { output.state mid.sentence = { "number" } { "Number" } if$ number tie.or.space.connect series empty$ { "there's a number but no series in " cite$ * warning$ } { " in " * series * } if$ } if$ } { "" } if$ } FUNCTION {format.edition} { edition empty$ { "" } { output.state mid.sentence = { edition "l" change.case$ " edition" * } { edition "t" change.case$ " edition" * } if$ } if$ } INTEGERS { multiresult } FUNCTION {multi.page.check} { 't := #0 'multiresult := { multiresult not t empty$ not and } { t #1 #1 substring$ duplicate$ "-" = swap$ duplicate$ "," = swap$ "+" = or or { #1 'multiresult := } { t #2 global.max$ substring$ 't := } if$ } while$ multiresult } FUNCTION {format.book.pages} { pages empty$ { "" } { new.block pages " pp." * } if$ } FUNCTION {format.pages} { pages empty$ { "" } { pages multi.page.check { pages collapse.pagerange 'new.pages := } { pages 'new.pages := } if$ new.pages multi.page.check { "pages" new.pages n.dashify tie.or.space.connect } { "page" new.pages tie.or.space.connect } if$ } if$ } FUNCTION {format.vol.num.pages} { volume field.or.null number empty$ 'skip$ { "\penalty0 (" number * ")" * * volume empty$ { "there's a number but no volume in " cite$ * warning$ } 'skip$ if$ } if$ pages empty$ 'skip$ { duplicate$ empty$ { pop$ format.pages } { ":\penalty0 " * pages collapse.pagerange n.dashify * } if$ } if$ } FUNCTION {format.chapter.pages} { chapter empty$ 'format.pages { type empty$ { "chapter" } { type "l" change.case$ } if$ chapter tie.or.space.connect pages empty$ 'skip$ { ", " * format.pages * } if$ } if$ } FUNCTION {format.in.ed.booktitle} { booktitle empty$ { "" } { editor empty$ { "In " booktitle emphasize * } { "In " format.editors * ", " * booktitle emphasize * } if$ } if$ } FUNCTION {empty.misc.check} { author empty$ title empty$ howpublished empty$ month empty$ year empty$ note empty$ and and and and and key empty$ not and { "all relevant fields are empty in " cite$ * warning$ } 'skip$ if$ } FUNCTION {format.thesis.type} { type empty$ 'skip$ { pop$ type "t" change.case$ } if$ } FUNCTION {format.tr.number} { type empty$ { "Technical Report" } 'type if$ number empty$ { "t" change.case$ } { number tie.or.space.connect } if$ } FUNCTION {format.article.crossref} { key empty$ { journal empty$ { "need key or journal for " cite$ * " to crossref " * crossref * warning$ "" } { "In {\em " journal * "\/}" * } if$ } { "In " key * } if$ " \cite{" * crossref * "}" * } FUNCTION {format.crossref.editor} { editor #1 "{vv~}{ll}" format.name$ editor num.names$ duplicate$ #2 > { pop$ " et~al." * } { #2 < 'skip$ { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = { " et~al." * } { " and " * editor #2 "{vv~}{ll}" format.name$ * } if$ } if$ } if$ } FUNCTION {format.book.crossref} { volume empty$ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ "In " } { "Volume" volume tie.or.space.connect " of " * } if$ editor empty$ editor field.or.null author field.or.null = or { key empty$ { series empty$ { "need editor, key, or series for " cite$ * " to crossref " * crossref * warning$ "" * } { "{\em " * series * "\/}" * } if$ } { key * } if$ } { format.crossref.editor * } if$ " \cite{" * crossref * "}" * } FUNCTION {format.incoll.inproc.crossref} { editor empty$ editor field.or.null author field.or.null = or { key empty$ { booktitle empty$ { "need editor, key, or booktitle for " cite$ * " to crossref " * crossref * warning$ "" } { "In {\em " booktitle * "\/}" * } if$ } { "In " key * } if$ } { "In " format.crossref.editor * } if$ " \cite{" * crossref * "}" * } FUNCTION {article} { output.bibitem format.authors "author" output.check new.block format.title "title" output.check new.block crossref missing$ { journal emphasize "journal" output.check format.vol.num.pages output format.date "year" output.check } { format.article.crossref output.nonnull format.pages output } if$ format.url output new.block note output fin.entry } FUNCTION {book} { output.bibitem author empty$ { format.editors "author and editor" output.check } { format.authors output.nonnull crossref missing$ { "author and editor" editor either.or.check } 'skip$ if$ } if$ new.block format.btitle "title" output.check crossref missing$ { format.bvolume output new.block format.number.series output new.sentence publisher "publisher" output.check address output } { new.block format.book.crossref output.nonnull } if$ format.edition output format.date "year" output.check format.isbn output format.issn output format.book.pages output format.lccn output format.price output format.url output new.block note output fin.entry } FUNCTION {booklet} { output.bibitem format.authors output new.block format.title "title" output.check howpublished address new.block.checkb howpublished output address output format.date output format.isbn output format.issn output format.book.pages output format.lccn output format.price output format.url output new.block note output fin.entry } FUNCTION {inbook} { output.bibitem author empty$ { format.editors "author and editor" output.check } { format.authors output.nonnull crossref missing$ { "author and editor" editor either.or.check } 'skip$ if$ } if$ new.block format.btitle "title" output.check crossref missing$ { format.bvolume output format.chapter.pages "chapter and pages" output.check new.block format.number.series output new.sentence publisher "publisher" output.check address output } { format.chapter.pages "chapter and pages" output.check new.block format.book.crossref output.nonnull } if$ format.edition output format.date "year" output.check format.isbn output format.issn output format.lccn output format.price output format.url output new.block note output fin.entry } FUNCTION {incollection} { output.bibitem format.authors "author" output.check new.block format.title "title" output.check new.block crossref missing$ { format.in.ed.booktitle "booktitle" output.check format.bvolume output format.number.series output format.chapter.pages output new.sentence publisher "publisher" output.check address output format.edition output format.date "year" output.check } { format.incoll.inproc.crossref output.nonnull format.chapter.pages output } if$ format.isbn output format.issn output format.lccn output format.price output format.url output new.block note output fin.entry } FUNCTION {inproceedings} { output.bibitem format.authors "author" output.check new.block format.title "title" output.check new.block crossref missing$ { format.in.ed.booktitle "booktitle" output.check format.bvolume output format.number.series output format.pages output address empty$ { organization publisher new.sentence.checkb organization output publisher "publisher" output.check format.date "year" output.check } { new.sentence organization output publisher "publisher" output.check address output.nonnull format.date "year" output.check } if$ } { format.incoll.inproc.crossref output.nonnull format.pages output } if$ format.isbn output format.issn output format.lccn output format.price output format.url output new.block note output fin.entry } FUNCTION {conference} { inproceedings } FUNCTION {manual} { output.bibitem author empty$ { organization empty$ 'skip$ { organization output.nonnull address output } if$ } { format.authors output.nonnull } if$ new.block format.btitle "title" output.check author empty$ { organization empty$ { address new.block.checka address output } 'skip$ if$ } { organization address new.block.checkb organization output address output } if$ format.edition output format.date output format.book.pages output format.price output format.url output new.block note output fin.entry } FUNCTION {mastersthesis} { output.bibitem format.authors "author" output.check new.block format.title "title" output.check new.block "Master's thesis" format.thesis.type output.nonnull school "school" output.check address output format.date "year" output.check format.book.pages output format.url output new.block note output fin.entry } FUNCTION {misc} { output.bibitem format.authors output title howpublished new.block.checkb format.title output howpublished new.block.checka howpublished output format.date output format.isbn output format.issn output format.price output format.url output new.block note output fin.entry empty.misc.check } FUNCTION {phdthesis} { output.bibitem format.authors "author" output.check new.block format.btitle "title" output.check new.block "PhD thesis" format.thesis.type output.nonnull school "school" output.check address output format.date "year" output.check format.book.pages output format.url output new.block note output fin.entry } FUNCTION {periodical} { output.bibitem editor empty$ { organization output } { format.editors output.nonnull } if$ new.block title emphasize "title" output.check format.vol.num.pages output format.date output format.isbn output format.issn output format.price output format.url output new.sentence publisher output address output howpublished new.block.checka howpublished output new.block note output fin.entry } FUNCTION {proceedings} { output.bibitem editor empty$ { organization output } { format.editors output.nonnull } if$ new.block format.btitle "title" output.check format.bvolume output format.number.series output address empty$ { editor empty$ { publisher new.sentence.checka } { organization publisher new.sentence.checkb organization output } if$ publisher "publisher" output.check %%% <- new check for missing format.date "year" output.check } { new.sentence editor empty$ 'skip$ { organization output } if$ publisher "publisher" output.check address output.nonnull format.date "year" output.check } if$ format.isbn output format.issn output format.lccn output format.price output format.url output new.block note output fin.entry } FUNCTION {techreport} { output.bibitem format.authors "author" output.check new.block format.title "title" output.check new.block format.tr.number output.nonnull institution "institution" output.check address output format.date "year" output.check format.book.pages output format.price output format.url output new.block note output fin.entry } FUNCTION {unpublished} { output.bibitem format.authors "author" output.check new.block format.title "title" output.check new.block note "note" output.check format.date output format.url output fin.entry } FUNCTION {default.type} { misc } MACRO {jan} {"January"} MACRO {feb} {"February"} MACRO {mar} {"March"} MACRO {apr} {"April"} MACRO {may} {"May"} MACRO {jun} {"June"} MACRO {jul} {"July"} MACRO {aug} {"August"} MACRO {sep} {"September"} MACRO {oct} {"October"} MACRO {nov} {"November"} MACRO {dec} {"December"} MACRO {acmcs} {"ACM Computing Surveys"} MACRO {acta} {"Acta Informatica"} MACRO {cacm} {"Communications of the ACM"} MACRO {ibmjrd} {"IBM Journal of Research and Development"} MACRO {ibmsj} {"IBM Systems Journal"} MACRO {ieeese} {"IEEE Transactions on Software Engineering"} MACRO {ieeetc} {"IEEE Transactions on Computers"} MACRO {ieeetcad} {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} MACRO {ipl} {"Information Processing Letters"} MACRO {jacm} {"Journal of the ACM"} MACRO {jcss} {"Journal of Computer and System Sciences"} MACRO {scp} {"Science of Computer Programming"} MACRO {sicomp} {"SIAM Journal on Computing"} MACRO {tocs} {"ACM Transactions on Computer Systems"} MACRO {tods} {"ACM Transactions on Database Systems"} MACRO {tog} {"ACM Transactions on Graphics"} MACRO {toms} {"ACM Transactions on Mathematical Software"} MACRO {toois} {"ACM Transactions on Office Information Systems"} MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} MACRO {tcs} {"Theoretical Computer Science"} READ FUNCTION {sortify} { purify$ "l" change.case$ } INTEGERS { len } FUNCTION {chop.word} { 's := 'len := s #1 len substring$ = { s len #1 + global.max$ substring$ } 's if$ } FUNCTION {sort.format.names} { 's := #1 'nameptr := "" s num.names$ 'numnames := numnames 'namesleft := { namesleft #0 > } { nameptr #1 > { " " * } 'skip$ if$ s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := nameptr numnames = t "others" = and { "et al" * } { t sortify * } if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } while$ } FUNCTION {sort.format.title} { 't := "A " #2 "An " #3 "The " #4 t chop.word chop.word chop.word sortify #1 global.max$ substring$ } FUNCTION {author.sort} { author empty$ { key empty$ { "to sort, need author or key in " cite$ * warning$ "" } { key sortify } if$ } { author sort.format.names } if$ } FUNCTION {author.editor.sort} { author empty$ { editor empty$ { key empty$ { "to sort, need author, editor, or key in " cite$ * warning$ "" } { key sortify } if$ } { editor sort.format.names } if$ } { author sort.format.names } if$ } FUNCTION {author.organization.sort} { author empty$ { organization empty$ { key empty$ { "to sort, need author, organization, or key in " cite$ * warning$ "" } { key sortify } if$ } { "The " #4 organization chop.word sortify } if$ } { author sort.format.names } if$ } FUNCTION {editor.organization.sort} { editor empty$ { organization empty$ { key empty$ { "to sort, need editor, organization, or key in " cite$ * warning$ "" } { key sortify } if$ } { "The " #4 organization chop.word sortify } if$ } { editor sort.format.names } if$ } FUNCTION {presort} { type$ "book" = type$ "inbook" = or 'author.editor.sort { type$ "proceedings" = 'editor.organization.sort { type$ "manual" = 'author.organization.sort 'author.sort if$ } if$ } if$ " " * year field.or.null sortify * " " * title field.or.null sort.format.title * #1 entry.max$ substring$ 'sort.key$ := } ITERATE {presort} SORT STRINGS { longest.label } INTEGERS { number.label longest.label.width } FUNCTION {initialize.longest.label} { "" 'longest.label := #1 'number.label := #0 'longest.label.width := } FUNCTION {longest.label.pass} { number.label int.to.str$ 'label := number.label #1 + 'number.label := label width$ longest.label.width > { label 'longest.label := label width$ 'longest.label.width := } 'skip$ if$ } EXECUTE {initialize.longest.label} ITERATE {longest.label.pass} FUNCTION {begin.bib} { preamble$ empty$ 'skip$ { preamble$ write$ newline$ } if$ "\begin{thebibliography}{" longest.label * "}" * write$ newline$ } EXECUTE {begin.bib} EXECUTE {init.state.consts} ITERATE {call.type$} FUNCTION {end.bib} { newline$ "\end{thebibliography}" write$ newline$ } EXECUTE {end.bib} bibclean-2.11.4.1.orig/doc/bibclean.idx0000644000175200017520000015542107133432645016717 0ustar debiandebian\indexentry{Scribe@{\sc Scribe}}{395} \indexentry{bibclean@{\tt bibclean}}{395} \indexentry{Lamport, Leslie}{395} \indexentry{citation!key}{395} \indexentry{string!substitution}{395} \indexentry{Lamport, Leslie}{396} \indexentry{control sequence!bibliographystyle@{\tt \char 92\relax bibliographystyle}}{396} \indexentry{bibliographystyle@{\tt \char 92\relax bibliographystyle}}{396} \indexentry{citation!style}{396} \indexentry{bibliography!style}{396} \indexentry{control sequence!bibliography@{\tt \char 92\relax bibliography}}{396} \indexentry{bibliography@{\tt \char 92\relax bibliography}}{396} \indexentry{auxiliary file}{396} \indexentry{bibliography!file}{396} \indexentry{file!bibliography}{396} \indexentry{bibliography!style}{396} \indexentry{style!bibliography}{396} \indexentry{control sequence!cite@{\tt \char 92\relax cite}}{396} \indexentry{cite@{\tt \char 92\relax cite}}{396} \indexentry{control sequence!bibliography@{\tt \char 92\relax bibliography}}{396} \indexentry{bibliography@{\tt \char 92\relax bibliography}}{396} \indexentry{control sequence!cite@{\tt \char 92\relax cite}}{396} \indexentry{cite@{\tt \char 92\relax cite}}{396} \indexentry{GNU!Emacs}{396} \indexentry{Emacs}{396} \indexentry{Cameron, Debra}{396} \indexentry{Rosenblatt, Bill}{396} \indexentry{template!editor}{396} \indexentry{pop-up menu}{396} \indexentry{menu!pop-up}{396} \indexentry{UNIX@{\sc UNIX}}{396} \indexentry{VAX@{\sc VAX}}{396} \indexentry{VMS@{\sc VMS}}{396} \indexentry{PC-DOS@{\sc PC-DOS}}{396} \indexentry{SGML@{\sc SGML}}{396} \indexentry{Bryan, Martin}{396} \indexentry{van Herwijnen, Eric}{396} \indexentry{Herwijnen, Eric van}{396} \indexentry{TUG bibliography collection}{396} \indexentry{TUGboat@{\protect\TUB{}}}{396} \indexentry{TUG Resource Directory}{396} \indexentry{Beebe, Nelson H. F.}{396} \indexentry{bibclean@{\tt bibclean}}{396} \indexentry{UNIX@{\sc UNIX}}{397} \indexentry{lexical analysis}{397} \indexentry{token}{397} \indexentry{parsing}{397} \indexentry{code generation}{397} \indexentry{interpretation of code}{397} \indexentry{front end}{397} \indexentry{back end}{397} \indexentry{Free Software Foundation}{397} \indexentry{C++}{397} \indexentry{Objective C}{397} \indexentry{bibclean@{\tt bibclean}}{397} \indexentry{lexical analyzer}{397} \indexentry{prettyprinter}{397} \indexentry{bibclean@{\tt bibclean}}{397} \indexentry{bibliography!file}{397} \indexentry{file!bibliography}{397} \indexentry{VAX@{\sc VAX}}{397} \indexentry{VMS@{\sc VMS}}{397} \indexentry{PC-DOS@{\sc PC-DOS}}{397} \indexentry{author@{\tt -author}}{397} \indexentry{option!author@{\tt -author}}{397} \indexentry{standard error unit}{397} \indexentry{stderr@{\tt stderr}}{397} \indexentry{file!stderr@{\tt stderr}}{397} \indexentry{error-log filename@{\tt -error-log filename}}{397} \indexentry{option!error-log filename@{\tt -error-log filename}}{397} \indexentry{stderr@{\tt stderr}}{397} \indexentry{file!stderr@{\tt stderr}}{397} \indexentry{message!redirecting}{397} \indexentry{error!message!redirecting}{397} \indexentry{warning message!redirecting}{397} \indexentry{stderr@{\tt stderr}}{397} \indexentry{file!stderr@{\tt stderr}}{397} \indexentry{help {\prm or} -?@{\tt -help {\prm or} -?}}{397} \indexentry{option!help {\prm or} -?@{\tt -help {\prm or} -?}}{397} \indexentry{message!help}{397} \indexentry{stderr@{\tt stderr}}{397} \indexentry{file!stderr@{\tt stderr}}{397} \indexentry{init-file filename@{\tt -init-file filename}}{397} \indexentry{option!init-file filename@{\tt -init-file filename}}{397} \indexentry{initialization file}{397} \indexentry{file!initialization}{397} \indexentry{PATH@{\tt PATH}}{397} \indexentry{file!PATH@{\tt PATH}}{397} \indexentry{VAX@{\sc VAX}}{397} \indexentry{VMS@{\sc VMS}}{397} \indexentry{SYS\pdollar SYSTEM@{\tt SYS\pdollar SYSTEM}}{397} \indexentry{file!SYS\pdollar SYSTEM@{\tt SYS\pdollar SYSTEM}}{397} \indexentry{BIBINPUTS@{\tt BIBINPUTS}}{397} \indexentry{file!BIBINPUTS@{\tt BIBINPUTS}}{397} \indexentry{environment variable}{397} \indexentry{BIBCLEANINI@{\tt BIBCLEANINI}}{397} \indexentry{file!BIBCLEANINI@{\tt BIBCLEANINI}}{397} \indexentry{.bibcleanrc@{\tt .bibcleanrc}}{397} \indexentry{file!.bibcleanrc@{\tt .bibcleanrc}}{397} \indexentry{UNIX@{\sc UNIX}}{397} \indexentry{bibclean.ini@{\tt bibclean.ini}}{397} \indexentry{file!bibclean.ini@{\tt bibclean.ini}}{397} \indexentry{max-width nnn@{\tt -max-width nnn}}{397} \indexentry{option!max-width nnn@{\tt -max-width nnn}}{397} \indexentry{bibclean@{\tt bibclean}}{397} \indexentry{line!width limit}{397} \indexentry{decimal}{397} \indexentry{octal}{397} \indexentry{hexadecimal}{397} \indexentry{max-width 0@{\tt -max-width 0}}{397} \indexentry{option!max-width 0@{\tt -max-width 0}}{397} \indexentry{no-prettyprint@{\tt -no-prettyprint}}{397} \indexentry{option!no-prettyprint@{\tt -no-prettyprint}}{397} \indexentry{bibclean@{\tt bibclean}}{397} \indexentry{bibclean@{\tt bibclean}}{398} \indexentry{wrapping!of long lines}{398} \indexentry{line!wrapping}{398} \indexentry{Knuth, Donald E.}{398} \indexentry{bibclean@{\tt bibclean}}{398} \indexentry{bibclean@{\tt bibclean}}{398} \indexentry{backslash-newline}{398} \indexentry{check-values@{\tt -check-values}}{398} \indexentry{option!check-values@{\tt -check-values}}{398} \indexentry{no-check-values@{\tt -no-check-values}}{398} \indexentry{option!no-check-values@{\tt -no-check-values}}{398} \indexentry{warning message!disabling}{398} \indexentry{delete-empty-values@{\tt -delete-empty-values}}{398} \indexentry{option!delete-empty-values@{\tt -delete-empty-values}}{398} \indexentry{no-delete-empty-values@{\tt -no-delete-empty-values}}{398} \indexentry{option!no-delete-empty-values@{\tt -no-delete-empty-values}}{398} \indexentry{empty!values!deleting}{398} \indexentry{remove-OPT-prefixes@{\tt -remove-OPT-prefixes}}{398} \indexentry{option!remove-OPT-prefixes@{\tt -remove-OPT-prefixes}}{398} \indexentry{no-remove-OPT-prefixes@{\tt -no-remove-OPT-prefixes}}{398} \indexentry{option!no-remove-OPT-prefixes@{\tt -no-remove-OPT-prefixes}}{398} \indexentry{file-position@{\tt -file-position}}{398} \indexentry{option!file-position@{\tt -file-position}}{398} \indexentry{no-file-position@{\tt -no-file-position}}{398} \indexentry{option!no-file-position@{\tt -no-file-position}}{398} \indexentry{fix-font-changes@{\tt -fix-font-changes}}{398} \indexentry{option!fix-font-changes@{\tt -fix-font-changes}}{398} \indexentry{no-fix-font-changes@{\tt -no-fix-font-changes}}{398} \indexentry{option!no-fix-font-changes@{\tt -no-fix-font-changes}}{398} \indexentry{font changes!fixing}{398} \indexentry{bibclean@{\tt bibclean}}{398} \indexentry{bibclean@{\tt bibclean}}{398} \indexentry{fix-font-changes@{\tt -fix-font-changes}}{398} \indexentry{option!fix-font-changes@{\tt -fix-font-changes}}{398} \indexentry{fix-initials@{\tt -fix-initials}}{398} \indexentry{option!fix-initials@{\tt -fix-initials}}{398} \indexentry{no-fix-initials@{\tt -no-fix-initials}}{398} \indexentry{option!no-fix-initials@{\tt -no-fix-initials}}{398} \indexentry{author name!period after initials}{398} \indexentry{editor name!period after initials}{398} \indexentry{fix-names@{\tt -fix-names}}{398} \indexentry{option!fix-names@{\tt -fix-names}}{398} \indexentry{no-fix-names@{\tt -no-fix-names}}{398} \indexentry{option!no-fix-names@{\tt -no-fix-names}}{398} \indexentry{author name!reordering}{398} \indexentry{editor name!reordering}{398} \indexentry{par-breaks@{\tt -par-breaks}}{398} \indexentry{option!par-breaks@{\tt -par-breaks}}{398} \indexentry{no-par-breaks@{\tt -no-par-breaks}}{398} \indexentry{option!no-par-breaks@{\tt -no-par-breaks}}{398} \indexentry{runaway string argument}{398} \indexentry{string!runaway}{398} \indexentry{mismatched delimiters}{398} \indexentry{delimiters!mismatched}{398} \indexentry{prettyprint@{\tt -prettyprint}}{398} \indexentry{option!prettyprint@{\tt -prettyprint}}{398} \indexentry{no-prettyprint@{\tt -no-prettyprint}}{398} \indexentry{option!no-prettyprint@{\tt -no-prettyprint}}{398} \indexentry{bibclean@{\tt bibclean}}{398} \indexentry{prettyprinter}{398} \indexentry{lexical analyzer}{398} \indexentry{print-patterns@{\tt -print-patterns}}{398} \indexentry{option!print-patterns@{\tt -print-patterns}}{398} \indexentry{no-print-patterns@{\tt -no-print-patterns}}{398} \indexentry{option!no-print-patterns@{\tt -no-print-patterns}}{398} \indexentry{initialization file!patterns in}{398} \indexentry{file!initialization!patterns in}{398} \indexentry{bibclean@{\tt bibclean}}{398} \indexentry{read-init-files@{\tt -read-init-files}}{398} \indexentry{option!read-init-files@{\tt -read-init-files}}{398} \indexentry{no-read-init-files@{\tt -no-read-init-files}}{398} \indexentry{option!no-read-init-files@{\tt -no-read-init-files}}{398} \indexentry{initialization file}{398} \indexentry{file!initialization}{398} \indexentry{init-file filename@{\tt -init-file filename}}{398} \indexentry{option!init-file filename@{\tt -init-file filename}}{398} \indexentry{remove-OPT-prefixes@{\tt -remove-OPT-prefixes}}{399} \indexentry{option!remove-OPT-prefixes@{\tt -remove-OPT-prefixes}}{399} \indexentry{no-remove-OPT-prefixes@{\tt -no-remove-OPT-prefixes}}{399} \indexentry{option!no-remove-OPT-prefixes@{\tt -no-remove-OPT-prefixes}}{399} \indexentry{OPT- prefix@{\tt OPT-} prefix!removing}{399} \indexentry{GNU!Emacs}{399} \indexentry{Emacs}{399} \indexentry{delete-empty-values@{\tt -delete-empty-values}}{399} \indexentry{option!delete-empty-values@{\tt -delete-empty-values}}{399} \indexentry{no-delete-empty-values@{\tt -no-delete-empty-values}}{399} \indexentry{option!no-delete-empty-values@{\tt -no-delete-empty-values}}{399} \indexentry{scribe@{\tt -scribe}}{399} \indexentry{option!scribe@{\tt -scribe}}{399} \indexentry{no-scribe@{\tt -no-scribe}}{399} \indexentry{option!no-scribe@{\tt -no-scribe}}{399} \indexentry{Scribe@{\sc Scribe}}{399} \indexentry{trace-file-opening@{\tt -trace-file-opening}}{399} \indexentry{option!trace-file-opening@{\tt -trace-file-opening}}{399} \indexentry{no-trace-file-opening@{\tt -no-trace-file-opening}}{399} \indexentry{option!no-trace-file-opening@{\tt -no-trace-file-opening}}{399} \indexentry{error!log file}{399} \indexentry{file!error log}{399} \indexentry{bibclean@{\tt bibclean}}{399} \indexentry{initialization file!locating}{399} \indexentry{file!initialization!locating}{399} \indexentry{warnings@{\tt -warnings}}{399} \indexentry{option!warnings@{\tt -warnings}}{399} \indexentry{no-warnings@{\tt -no-warnings}}{399} \indexentry{option!no-warnings@{\tt -no-warnings}}{399} \indexentry{warning message!disabling}{399} \indexentry{message!disabling warning}{399} \indexentry{version@{\tt -version}}{399} \indexentry{option!version@{\tt -version}}{399} \indexentry{program!version}{399} \indexentry{version!of program}{399} \indexentry{stderr@{\tt stderr}}{399} \indexentry{file!stderr@{\tt stderr}}{399} \indexentry{prettyprinting}{399} \indexentry{bibclean@{\tt bibclean}}{399} \indexentry{Scribe@{\sc Scribe}}{399} \indexentry{bibclean@{\tt bibclean}}{399} \indexentry{file-position@{\tt -file-position}}{399} \indexentry{option!file-position@{\tt -file-position}}{399} \indexentry{bibclean@{\tt bibclean}}{399} \indexentry{fix-font-changes@{\tt -fix-font-changes}}{399} \indexentry{option!fix-font-changes@{\tt -fix-font-changes}}{399} \indexentry{no-par-breaks@{\tt -no-par-breaks}}{399} \indexentry{option!no-par-breaks@{\tt -no-par-breaks}}{399} \indexentry{ISBN (International Standard Book Number)}{399} \indexentry{ISSN (International Standard Serial Number)}{399} \indexentry{TUG bibliography collection}{399} \indexentry{fix-names@{\tt -fix-names}}{400} \indexentry{option!fix-names@{\tt -fix-names}}{400} \indexentry{Bach, P. D. Q.}{400} \indexentry{Schickele, Peter}{400} \indexentry{fix-initials@{\tt -fix-initials}}{400} \indexentry{option!fix-initials@{\tt -fix-initials}}{400} \indexentry{check-values@{\tt -check-values}}{400} \indexentry{option!check-values@{\tt -check-values}}{400} \indexentry{check-values@{\tt -check-values}}{400} \indexentry{option!check-values@{\tt -check-values}}{400} \indexentry{trace-file-opening@{\tt -trace-file-opening}}{400} \indexentry{option!trace-file-opening@{\tt -trace-file-opening}}{400} \indexentry{bibclean@{\tt bibclean}}{400} \indexentry{@@{\tt @}}{400} \indexentry{@@{\tt @}}{400} \indexentry{bibclean@{\tt bibclean}}{400} \indexentry{bibclean@{\tt bibclean}}{400} \indexentry{pattern matching}{400} \indexentry{regular expression!pattern matching}{400} \indexentry{pattern matching!regular expression}{400} \indexentry{initialization file}{400} \indexentry{file!initialization}{400} \indexentry{bibclean@{\tt bibclean}}{400} \indexentry{initialization file}{400} \indexentry{file!initialization}{400} \indexentry{program!search path}{400} \indexentry{search path}{400} \indexentry{UNIX@{\sc UNIX}}{400} \indexentry{PC-DOS@{\sc PC-DOS}}{400} \indexentry{PATH@{\tt PATH}}{400} \indexentry{file!PATH@{\tt PATH}}{400} \indexentry{BIBINPUTS@{\tt BIBINPUTS}}{400} \indexentry{file!BIBINPUTS@{\tt BIBINPUTS}}{400} \indexentry{options}{400} \indexentry{init-file filename@{\tt -init-file filename}}{400} \indexentry{option!init-file filename@{\tt -init-file filename}}{400} \indexentry{.ini@{\tt .ini}}{400} \indexentry{file!.ini@{\tt .ini}}{400} \indexentry{BIBCLEANEXT@{\tt BIBCLEANEXT}}{400} \indexentry{file!BIBCLEANEXT@{\tt BIBCLEANEXT}}{400} \indexentry{stdin@{\tt stdin}}{400} \indexentry{file!stdin@{\tt stdin}}{400} \indexentry{no-init-files@{\tt -no-init-files}}{400} \indexentry{option!no-init-files@{\tt -no-init-files}}{400} \indexentry{init-file filename@{\tt -init-file filename}}{400} \indexentry{option!init-file filename@{\tt -init-file filename}}{400} \indexentry{initialization file!nested}{400} \indexentry{file!initialization!nested}{400} \indexentry{init-file filename@{\tt -init-file filename}}{400} \indexentry{option!init-file filename@{\tt -init-file filename}}{400} \indexentry{bibclean@{\tt bibclean}}{400} \indexentry{recursion}{400} \indexentry{backslash-newline}{400} \indexentry{backslash-newline}{400} \indexentry{bibclean@{\tt bibclean}}{401} \indexentry{initialization file!sample}{401} \indexentry{file!sample initialization}{401} \indexentry{UNIX@{\sc UNIX}}{401} \indexentry{escape sequence}{401} \indexentry{\char 34@{\tt \char 92\relax \char 34}}{401} \indexentry{\char 92@{\tt \char 92\relax \char 92}}{401} \indexentry{escape sequence!table}{401} \indexentry{a@{\tt \char 92\relax a}}{401} \indexentry{b@{\tt \char 92\relax b}}{401} \indexentry{f@{\tt \char 92\relax f}}{401} \indexentry{n@{\tt \char 92\relax n}}{401} \indexentry{r@{\tt \char 92\relax r}}{401} \indexentry{t@{\tt \char 92\relax t}}{401} \indexentry{v@{\tt \char 92\relax v}}{401} \indexentry{ooo@{\tt \char 92\relax ooo}}{401} \indexentry{012@{\tt \char 92\relax 012}}{401} \indexentry{0xhh@{\tt \char 92\relax 0xhh}}{401} \indexentry{0x0a@{\tt \char 92\relax 0x0a}}{401} \indexentry{NUL (0)!in string}{401} \indexentry{0@{\tt \char 92\relax 0}}{401} \indexentry{bibclean@{\tt bibclean}}{401} \indexentry{GNU!regexp package@{\tt regexp} package}{401} \indexentry{regexp@{\tt regexp}}{401} \indexentry{file!regexp@{\tt regexp}}{401} \indexentry{X@{\tt X}}{401} \indexentry{number@{\tt number}}{401} \indexentry{initialization file!pattern characters}{402} \indexentry{file!initialization!pattern characters}{402} \indexentry{a@{\tt a}}{402} \indexentry{A@{\tt A}}{402} \indexentry{d@{\tt d}}{402} \indexentry{D@{\tt D}}{402} \indexentry{r@{\tt r}}{402} \indexentry{R@{\tt R}}{402} \indexentry{w@{\tt w}}{402} \indexentry{W@{\tt W}}{402} \indexentry{.@{\tt .}}{402} \indexentry{:@{\tt :}}{402} \indexentry{X@{\tt X}}{402} \indexentry{x@{\tt \char 92\relax x}}{402} \indexentry{x@{\tt x}}{402} \indexentry{x@{\tt x}}{402} \indexentry{x@{\tt x}}{402} \indexentry{x@{\tt x}}{402} \indexentry{x@{\tt x}}{402} \indexentry{bibliography-specific pattern}{402} \indexentry{pattern!bibliography-specific}{402} \indexentry{.ini@{\tt .ini}}{402} \indexentry{file!.ini@{\tt .ini}}{402} \indexentry{empty!pattern}{402} \indexentry{pattern!empty}{402} \indexentry{quote!in pattern}{402} \indexentry{pattern!quotes in}{402} \indexentry{\char 34@{\tt \char 92\relax \char 34}}{402} \indexentry{pattern matching!brace ignored in}{402} \indexentry{brace!ignored in pattern matching}{402} \indexentry{brace!space around}{402} \indexentry{bibclean@{\tt bibclean}}{402} \indexentry{pattern!changing warning message}{402} \indexentry{warning message!changing}{402} \indexentry{format!item}{402} \indexentry{\%\%@{\tt \%\%}}{402} \indexentry{format!item!\%\%@{\tt \%\%}}{402} \indexentry{\%e@{\tt \%e}}{402} \indexentry{format!item!\%e@{\tt \%e}}{402} \indexentry{\%f@{\tt \%f}}{402} \indexentry{format!item!\%f@{\tt \%f}}{402} \indexentry{\%k@{\tt \%k}}{402} \indexentry{format!item!\%k@{\tt \%k}}{402} \indexentry{\%v@{\tt \%v}}{402} \indexentry{format!item!\%v@{\tt \%v}}{402} \indexentry{bibclean@{\tt bibclean}}{402} \indexentry{query (?)!in messages}{402} \indexentry{?}{402} \indexentry{escape sequence!in message text}{402} \indexentry{bibclean@{\tt bibclean}}{402} \indexentry{ISBN@{\tt ISBN}}{402} \indexentry{ISSN@{\tt ISSN}}{402} \indexentry{checksum!in ISBN and ISSN@in {\tt ISBN} and {\tt ISSN}}{402} \indexentry{bibclean@{\tt bibclean}}{402} \indexentry{chapter@{\tt chapter}}{402} \indexentry{number@{\tt number}}{402} \indexentry{pages@{\tt pages}}{402} \indexentry{volume@{\tt volume}}{402} \indexentry{month@{\tt month}}{402} \indexentry{year@{\tt year}}{403} \indexentry{bibclean@{\tt bibclean}}{403} \indexentry{key@{\tt key}}{403} \indexentry{citation!key}{403} \indexentry{no-prettyprint@{\tt -no-prettyprint}}{403} \indexentry{option!no-prettyprint@{\tt -no-prettyprint}}{403} \indexentry{bibclean@{\tt bibclean}}{403} \indexentry{lexical analyzer}{403} \indexentry{prettyprinter}{403} \indexentry{backslash-newline}{403} \indexentry{TOKEN_ABBREV@{\tt TOKEN_ABBREV}}{403} \indexentry{terminal!TOKEN_ABBREV@{\tt TOKEN_ABBREV}}{403} \indexentry{TOKEN_AT@{\tt TOKEN_AT}}{403} \indexentry{terminal!TOKEN_AT@{\tt TOKEN_AT}}{403} \indexentry{TOKEN_COMMA@{\tt TOKEN_COMMA}}{403} \indexentry{terminal!TOKEN_COMMA@{\tt TOKEN_COMMA}}{403} \indexentry{TOKEN_ENTRY@{\tt TOKEN_ENTRY}}{403} \indexentry{terminal!TOKEN_ENTRY@{\tt TOKEN_ENTRY}}{403} \indexentry{TOKEN_EQUALS@{\tt TOKEN_EQUALS}}{403} \indexentry{terminal!TOKEN_EQUALS@{\tt TOKEN_EQUALS}}{403} \indexentry{TOKEN_FIELD@{\tt TOKEN_FIELD}}{403} \indexentry{terminal!TOKEN_FIELD@{\tt TOKEN_FIELD}}{403} \indexentry{TOKEN_KEY@{\tt TOKEN_KEY}}{403} \indexentry{terminal!TOKEN_KEY@{\tt TOKEN_KEY}}{403} \indexentry{TOKEN_LBRACE@{\tt TOKEN_LBRACE}}{403} \indexentry{terminal!TOKEN_LBRACE@{\tt TOKEN_LBRACE}}{403} \indexentry{TOKEN_NEWLINE@{\tt TOKEN_NEWLINE}}{403} \indexentry{terminal!TOKEN_NEWLINE@{\tt TOKEN_NEWLINE}}{403} \indexentry{TOKEN_RBRACE@{\tt TOKEN_RBRACE}}{403} \indexentry{terminal!TOKEN_RBRACE@{\tt TOKEN_RBRACE}}{403} \indexentry{TOKEN_STRING@{\tt TOKEN_STRING}}{403} \indexentry{terminal!TOKEN_STRING@{\tt TOKEN_STRING}}{403} \indexentry{TOKEN_VALUE@{\tt TOKEN_VALUE}}{403} \indexentry{terminal!TOKEN_VALUE@{\tt TOKEN_VALUE}}{403} \indexentry{Lamport, Leslie}{403} \indexentry{token!type}{403} \indexentry{token!string}{403} \indexentry{sharp@sharp ({\tt\char35})}{403} \indexentry{preprocessor}{403} \indexentry{line!number directive}{403} \indexentry{ANSI/ISO Standard C@ANSI\slash ISO Standard C}{403} \indexentry{token!type}{403} \indexentry{bibclean@{\tt bibclean}}{403} \indexentry{ANSI/ISO Standard C@ANSI\slash ISO Standard C}{403} \indexentry{escape sequence}{403} \indexentry{max-width nnn@{\tt -max-width nnn}}{404} \indexentry{option!max-width nnn@{\tt -max-width nnn}}{404} \indexentry{wrapping!of long lines}{404} \indexentry{line!wrapping}{404} \indexentry{backslash-newline}{404} \indexentry{UNIX@{\sc UNIX}}{404} \indexentry{pipeline}{404} \indexentry{nawk@{\tt nawk}}{404} \indexentry{Aho, Alfred V.}{404} \indexentry{Kernighan, Brian W.}{404} \indexentry{Weinberger, Peter J.}{404} \indexentry{bibclean@{\tt bibclean}}{404} \indexentry{UNIX@{\sc UNIX}}{404} \indexentry{tr@{\tt tr}}{404} \indexentry{file!tr@{\tt tr}}{404} \indexentry{bibclean@{\tt bibclean}}{404} \indexentry{file!bibclean@{\tt bibclean}}{404} \indexentry{bibdup.awk@{\tt bibdup.awk}}{404} \indexentry{file!bibdup.awk@{\tt bibdup.awk}}{404} \indexentry{nawk@{\tt nawk}}{404} \indexentry{file!nawk@{\tt nawk}}{404} \indexentry{tr@{\tt tr}}{404} \indexentry{file!tr@{\tt tr}}{404} \indexentry{bibdup@{\tt bibdup}}{404} \indexentry{file!bibdup@{\tt bibdup}}{404} \indexentry{bibclean@{\tt bibclean}}{404} \indexentry{Scribe@{\sc Scribe}}{404} \indexentry{bibclean@{\tt bibclean}}{404} \indexentry{Scribe@{\sc Scribe}}{404} \indexentry{portability}{404} \indexentry{testing}{404} \indexentry{bibclean@{\tt bibclean}}{404} \indexentry{ANSI/ISO Standard C@ANSI\slash ISO Standard C}{404} \indexentry{UNIX@{\sc UNIX}}{404} \indexentry{VAX@{\sc VAX}}{404} \indexentry{VMS@{\sc VMS}}{404} \indexentry{PC-DOS@{\sc PC-DOS}}{404} \indexentry{OS/2@{\sc OS/2}}{404} \indexentry{Atari}{404} \indexentry{TOS@{\sc TOS}}{404} \indexentry{UNIX@{\sc UNIX}}{404} \indexentry{ANSI/ISO Standard C@ANSI\slash ISO Standard C}{404} \indexentry{Pascal}{404} \indexentry{Knuth, Donald E.}{404} \indexentry{WEB@{\tt WEB}}{404} \indexentry{string!pool}{404} \indexentry{Kernighan, Brian W.}{404} \indexentry{Ritchie, Dennis M.}{404} \indexentry{Kahn, Philippe}{404} \indexentry{Borland International}{404} \indexentry{Feuer, Alan~R.}{404} \indexentry{Koenig, Andrew}{404} \indexentry{Harbison, Samuel P.}{404} \indexentry{Steele Jr., Guy L.}{404} \indexentry{Jaeschke, Rex}{404} \indexentry{Lapin, J. E.}{404} \indexentry{Plauger, P. J.}{404} \indexentry{Rabinowitz, Henry}{404} \indexentry{Schaap, Chaim}{404} \indexentry{Rochkind, Marc J.}{404} \indexentry{Stevens, W. Richard}{404} \indexentry{C++}{404} \indexentry{Ellis, Margaret A.}{404} \indexentry{Stroustrup, Bjarne}{404} \indexentry{object-oriented programming}{404} \indexentry{bibclean@{\tt bibclean}}{404} \indexentry{Objective C}{404} \indexentry{bibclean@{\tt bibclean}}{404} \indexentry{class library}{404} \indexentry{dump!post-mortem}{405} \indexentry{post-mortem dump}{405} \indexentry{core dump}{405} \indexentry{Scribe@{\sc Scribe}}{405} \indexentry{Scribe@{\sc Scribe}}{405} \indexentry{Reid, Brian}{405} \indexentry{GNU!Emacs}{405} \indexentry{Emacs}{405} \indexentry{GNU!texinfo@\protect\TeX{}info}{405} \indexentry{texinfo@\protect\TeX{}info}{405} \indexentry{Scribe@{\sc Scribe}}{405} \indexentry{Scribe@{\sc Scribe}}{405} \indexentry{Scribe@{\sc Scribe}}{405} \indexentry{delimiters!in scribe@in \protect\SCRIBE{}}{405} \indexentry{at-sign}{405} \indexentry{\char 64@{\tt \char 64}}{405} \indexentry{\char 64\char 64@{\tt \char 64\char 64}}{405} \indexentry{\char 64name@{\tt \char 64name}}{405} \indexentry{Scribe@{\sc Scribe}}{405} \indexentry{\char 64Comment@{\tt \char 64Comment}}{405} \indexentry{\char 64End\penalty 0\{ comment\} @{\tt \char 64End\penalty 0\{ comment\} }}{405} \indexentry{comment@{\tt comment}}{405} \indexentry{\char 64Begin@{\tt \char 64Begin}}{405} \indexentry{\char 64End@{\tt \char 64End}}{405} \indexentry{\char 64Begin\penalty 0\{ comment\} @{\tt \char 64Begin\penalty 0\{ comment\} }}{405} \indexentry{\char 64End\penalty 0\{ comment\} @{\tt \char 64End\penalty 0\{ comment\} }}{405} \indexentry{key@{\tt key}}{405} \indexentry{backslash-quote}{405} \indexentry{escape sequence}{405} \indexentry{Scribe@{\sc Scribe}}{405} \indexentry{Scribe@{\sc Scribe}}{405} \indexentry{bibclean@{\tt bibclean}}{405} \indexentry{Scribe@{\sc Scribe}}{405} \indexentry{\char 64Comment\penalty 0\{ ...\} @{\tt \char 64Comment\penalty 0\{ ...\} }}{405} \indexentry{\char 64String@{\tt \char 64String}}{405} \indexentry{\char 64Comment\penalty 0\{ ...\} @{\tt \char 64Comment\penalty 0\{ ...\} }}{405} \indexentry{\char 64Preamble\penalty 0\{ ...\} @{\tt \char 64Preamble\penalty 0\{ ...\} }}{405} \indexentry{grammar}{405} \indexentry{LL(0) grammar}{405} \indexentry{grammar!LL(0)}{405} \indexentry{Aho, Alfred V.}{405} \indexentry{Sethi, Ravi}{405} \indexentry{Ullman, Jeffrey D.}{405} \indexentry{LL(1)!grammar}{405} \indexentry{grammar!LL(1)}{405} \indexentry{UNIX@{\sc UNIX}}{406} \indexentry{lex@{\tt lex}}{406} \indexentry{Lesk, Michael E.}{406} \indexentry{Schmidt, Eric}{406} \indexentry{yacc@{\tt yacc}}{406} \indexentry{Johnson, Steven C.}{406} \indexentry{Levine, John R.}{406} \indexentry{Mason, Tony}{406} \indexentry{Brown, Doug}{406} \indexentry{Schreiner, Axel T.}{406} \indexentry{Friedman, Jr., H. George}{406} \indexentry{Free Software Foundation}{406} \indexentry{flex@{\tt flex}}{406} \indexentry{bison@{\tt bison}}{406} \indexentry{yacc@{\tt yacc}}{406} \indexentry{bison@{\tt bison}}{406} \indexentry{LALR(1)!parser}{406} \indexentry{parser!LALR(1)}{406} \indexentry{LR($k$) grammar}{406} \indexentry{grammar!LR($k$)}{406} \indexentry{Knuth, Donald E.}{406} \indexentry{LL(1)!grammar}{406} \indexentry{grammar!LL(1)}{406} \indexentry{LALR(1)!grammar}{406} \indexentry{grammar!LALR(1)}{406} \indexentry{comment!syntax}{406} \indexentry{Scribe@{\sc Scribe}}{406} \indexentry{\char 64Comment\penalty 0\{ ...\} @{\tt \char 64Comment\penalty 0\{ ...\} }}{406} \indexentry{\char 64Comment\penalty 0\{ ...\} @{\tt \char 64Comment\penalty 0\{ ...\} }}{406} \indexentry{WEB@{\tt WEB}}{406} \indexentry{\char 64Comment\penalty 0\{ ...\} @{\tt \char 64Comment\penalty 0\{ ...\} }}{406} \indexentry{UNIX@{\sc UNIX}}{406} \indexentry{bib@{\tt bib}}{406} \indexentry{refer@{\tt refer}}{406} \indexentry{Lamport, Leslie}{406} \indexentry{ISO10646M character set}{406} \indexentry{period!in citation key}{406} \indexentry{apostrophe!in citation key}{406} \indexentry{error!reporting}{406} \indexentry{line!number}{406} \indexentry{runaway string argument}{406} \indexentry{string!runaway}{406} \indexentry{buffer overflow}{406} \indexentry{overflow of string buffer}{406} \indexentry{\char 64@{\tt \char 64}}{406} \indexentry{file!inclusion}{406} \indexentry{control sequence!bibliography@{\tt \char 92\relax bibliography}}{406} \indexentry{bibliography@{\tt \char 92\relax bibliography}}{406} \indexentry{\char 64String\penalty 0\{ ...\} @{\tt \char 64String\penalty 0\{ ...\} }}{406} \indexentry{Scribe@{\sc Scribe}}{406} \indexentry{grammar!lexical}{407} \indexentry{lexical grammar}{407} \indexentry{lex@{\tt lex}}{407} \indexentry{lex@{\tt lex}}{407} \indexentry{lex@{\tt lex}}{407} \indexentry{flex@{\tt flex}}{407} \indexentry{grammar!size of}{407} \indexentry{biblex@{\tt biblex}}{407} \indexentry{bibclean@{\tt bibclean}}{407} \indexentry{no-prettyprint@{\tt -no-prettyprint}}{407} \indexentry{option!no-prettyprint@{\tt -no-prettyprint}}{407} \indexentry{bibclean@{\tt bibclean}}{407} \indexentry{lex@{\tt lex}}{407} \indexentry{literate programming}{407} \indexentry{WEB@{\tt WEB}}{407} \indexentry{lex@{\tt lex}}{407} \indexentry{yacc@{\tt yacc}}{407} \indexentry{lex@{\tt lex}}{407} \indexentry{\%\%@{\protect\tt \%\%}}{407} \indexentry{\%(@{\protect\tt \%\{\iffalse "}\fi}}{407} \indexentry{\%)@{\protect\tt \iffalse "{\fi \%\}}}{407} \indexentry{lex@{\tt lex}}{407} \indexentry{lex@{\tt lex}}{407} \indexentry{lex@{\tt lex}}{407} \indexentry{lex@{\tt lex}}{407} \indexentry{lex@{\tt lex}}{407} \indexentry{macro definition!lex@{\tt lex}}{407} \indexentry{lex@{\tt lex}}{407} \indexentry{regular expression!syntax of}{407} \indexentry{period!in regular expression}{407} \indexentry{lex@{\tt lex}}{407} \indexentry{macro use!lex@{\tt lex}}{407} \indexentry{N@{\tt N}}{407} \indexentry{macro!N@{\tt N}}{407} \indexentry{O@{\tt O}}{407} \indexentry{macro!O@{\tt O}}{407} \indexentry{Scribe@{\sc Scribe}}{407} \indexentry{W@{\tt W}}{407} \indexentry{macro!W@{\tt W}}{407} \indexentry{horizontal space character}{407} \indexentry{formfeed}{407} \indexentry{f@{\tt \char 92\relax f}}{407} \indexentry{vertical!tab}{407} \indexentry{v@{\tt \char 92\relax v}}{407} \indexentry{lex@{\tt lex}}{407} \indexentry{v@{\tt \char 92\relax v}}{407} \indexentry{013@{\tt \char 92\relax 013}}{407} \indexentry{carriage return}{407} \indexentry{r@{\tt \char 92\relax r}}{407} \indexentry{UNIX@{\sc UNIX}}{407} \indexentry{Apple Macintosh}{407} \indexentry{Macintosh!Apple}{407} \indexentry{ANSI/ISO Standard C@ANSI\slash ISO Standard C}{407} \indexentry{S@{\tt S}}{407} \indexentry{macro!S@{\tt S}}{407} \indexentry{format!of grammar rules}{407} \indexentry{grammar!format of rules}{407} \indexentry{lex@{\tt lex}}{408} \indexentry{wrapping!of long lines}{408} \indexentry{line!wrapping}{408} \indexentry{backslash-newline}{408} \indexentry{\char 64@{\tt \char 64}}{408} \indexentry{TOKEN_AT@{\tt TOKEN_AT}}{408} \indexentry{terminal!TOKEN_AT@{\tt TOKEN_AT}}{408} \indexentry{RETURN@{\tt RETURN}}{408} \indexentry{macro!RETURN@{\tt RETURN}}{408} \indexentry{out_token@{\tt out_token()}}{408} \indexentry{function!out_token@{\tt out_token()}}{408} \indexentry{TOKEN_AT@{\tt TOKEN_AT}}{408} \indexentry{terminal!TOKEN_AT@{\tt TOKEN_AT}}{408} \indexentry{return@{\tt return}}{408} \indexentry{RETURN@{\tt RETURN}}{408} \indexentry{macro!RETURN@{\tt RETURN}}{408} \indexentry{yacc@{\tt yacc}}{408} \indexentry{bison@{\tt bison}}{408} \indexentry{bibclean@{\tt bibclean}}{408} \indexentry{Comment@{\tt Comment}}{408} \indexentry{Include@{\tt Include}}{408} \indexentry{Preamble@{\tt Preamble}}{408} \indexentry{String@{\tt String}}{408} \indexentry{RETURN@{\tt RETURN}}{408} \indexentry{macro!RETURN@{\tt RETURN}}{408} \indexentry{last_token@{\tt last_token}}{408} \indexentry{variable!last_token@{\tt last_token}}{408} \indexentry{out_token@{\tt out_token()}}{408} \indexentry{function!out_token@{\tt out_token()}}{408} \indexentry{TOKEN_AT@{\tt TOKEN_AT}}{408} \indexentry{terminal!TOKEN_AT@{\tt TOKEN_AT}}{408} \indexentry{TOKEN_COMMENT@{\tt TOKEN_COMMENT}}{408} \indexentry{terminal!TOKEN_COMMENT@{\tt TOKEN_COMMENT}}{408} \indexentry{TOKEN_INCLUDE@{\tt TOKEN_INCLUDE}}{408} \indexentry{terminal!TOKEN_INCLUDE@{\tt TOKEN_INCLUDE}}{408} \indexentry{TOKEN_PREAMBLE@{\tt TOKEN_PREAMBLE}}{408} \indexentry{terminal!TOKEN_PREAMBLE@{\tt TOKEN_PREAMBLE}}{408} \indexentry{TOKEN_STRING@{\tt TOKEN_STRING}}{408} \indexentry{terminal!TOKEN_STRING@{\tt TOKEN_STRING}}{408} \indexentry{lex@{\tt lex}}{408} \indexentry{N@{\tt N}}{408} \indexentry{macro!N@{\tt N}}{408} \indexentry{abbreviation}{408} \indexentry{entry!name}{408} \indexentry{field name}{408} \indexentry{key name}{408} \indexentry{RETURN@{\tt RETURN}}{408} \indexentry{macro!RETURN@{\tt RETURN}}{408} \indexentry{last_object@{\tt last_object}}{408} \indexentry{variable!last_object@{\tt last_object}}{408} \indexentry{last_token@{\tt last_token}}{408} \indexentry{variable!last_token@{\tt last_token}}{408} \indexentry{out_token@{\tt out_token()}}{408} \indexentry{function!out_token@{\tt out_token()}}{408} \indexentry{TOKEN_ABBREV@{\tt TOKEN_ABBREV}}{408} \indexentry{terminal!TOKEN_ABBREV@{\tt TOKEN_ABBREV}}{408} \indexentry{TOKEN_COMMA@{\tt TOKEN_COMMA}}{408} \indexentry{terminal!TOKEN_COMMA@{\tt TOKEN_COMMA}}{408} \indexentry{TOKEN_ENTRY@{\tt TOKEN_ENTRY}}{408} \indexentry{terminal!TOKEN_ENTRY@{\tt TOKEN_ENTRY}}{408} \indexentry{TOKEN_FIELD@{\tt TOKEN_FIELD}}{408} \indexentry{terminal!TOKEN_FIELD@{\tt TOKEN_FIELD}}{408} \indexentry{TOKEN_KEY@{\tt TOKEN_KEY}}{408} \indexentry{terminal!TOKEN_KEY@{\tt TOKEN_KEY}}{408} \indexentry{TOKEN_STRING@{\tt TOKEN_STRING}}{408} \indexentry{terminal!TOKEN_STRING@{\tt TOKEN_STRING}}{408} \indexentry{digit string}{408} \indexentry{RETURN@{\tt RETURN}}{408} \indexentry{macro!RETURN@{\tt RETURN}}{408} \indexentry{out_protected_string@{\tt out_protected_string()}}{408} \indexentry{function!out_protected_string@{\tt out_protected_string()}}{408} \indexentry{TOKEN_VALUE@{\tt TOKEN_VALUE}}{408} \indexentry{terminal!TOKEN_VALUE@{\tt TOKEN_VALUE}}{408} \indexentry{in-line comment}{408} \indexentry{comment!in-line}{408} \indexentry{RETURN@{\tt RETURN}}{408} \indexentry{macro!RETURN@{\tt RETURN}}{408} \indexentry{out_token@{\tt out_token()}}{408} \indexentry{function!out_token@{\tt out_token()}}{408} \indexentry{TOKEN_INLINE@{\tt TOKEN_INLINE}}{408} \indexentry{terminal!TOKEN_INLINE@{\tt TOKEN_INLINE}}{408} \indexentry{sharp@sharp ({\tt\char35})}{408} \indexentry{string!concatenation operator}{408} \indexentry{operator!string concatenation}{408} \indexentry{RETURN@{\tt RETURN}}{409} \indexentry{macro!RETURN@{\tt RETURN}}{409} \indexentry{out_token@{\tt out_token()}}{409} \indexentry{function!out_token@{\tt out_token()}}{409} \indexentry{TOKEN_SHARP@{\tt TOKEN_SHARP}}{409} \indexentry{terminal!TOKEN_SHARP@{\tt TOKEN_SHARP}}{409} \indexentry{delimited string}{409} \indexentry{RETURN@{\tt RETURN}}{409} \indexentry{macro!RETURN@{\tt RETURN}}{409} \indexentry{out_string@{\tt out_string()}}{409} \indexentry{function!out_string@{\tt out_string()}}{409} \indexentry{out_string@{\tt out_string()}}{409} \indexentry{function!out_string@{\tt out_string()}}{409} \indexentry{embedded quote}{409} \indexentry{quote!embedded}{409} \indexentry{escape sequence}{409} \indexentry{brace}{409} \indexentry{RETURN@{\tt RETURN}}{409} \indexentry{macro!RETURN@{\tt RETURN}}{409} \indexentry{out_rbrace@{\tt out_rbrace()}}{409} \indexentry{function!out_rbrace@{\tt out_rbrace()}}{409} \indexentry{out_lbrace@{\tt out_lbrace()}}{409} \indexentry{function!out_lbrace@{\tt out_lbrace()}}{409} \indexentry{TOKEN_LBRACE@{\tt TOKEN_LBRACE}}{409} \indexentry{terminal!TOKEN_LBRACE@{\tt TOKEN_LBRACE}}{409} \indexentry{TOKEN_LITERAL@{\tt TOKEN_LITERAL}}{409} \indexentry{terminal!TOKEN_LITERAL@{\tt TOKEN_LITERAL}}{409} \indexentry{TOKEN_RBRACE@{\tt TOKEN_RBRACE}}{409} \indexentry{terminal!TOKEN_RBRACE@{\tt TOKEN_RBRACE}}{409} \indexentry{TOKEN_STRING@{\tt TOKEN_STRING}}{409} \indexentry{terminal!TOKEN_STRING@{\tt TOKEN_STRING}}{409} \indexentry{TOKEN_LITERAL@{\tt TOKEN_LITERAL}}{409} \indexentry{terminal!TOKEN_LITERAL@{\tt TOKEN_LITERAL}}{409} \indexentry{Comment@{\tt Comment}}{409} \indexentry{Include@{\tt Include}}{409} \indexentry{parenthesis}{409} \indexentry{brace}{409} \indexentry{TOKEN_LITERAL@{\tt TOKEN_LITERAL}}{409} \indexentry{terminal!TOKEN_LITERAL@{\tt TOKEN_LITERAL}}{409} \indexentry{out_rparen@{\tt out_rparen()}}{409} \indexentry{function!out_rparen@{\tt out_rparen()}}{409} \indexentry{out_lparen@{\tt out_lparen()}}{409} \indexentry{function!out_lparen@{\tt out_lparen()}}{409} \indexentry{Scribe@{\sc Scribe}}{409} \indexentry{assignment!operator}{409} \indexentry{operator!assignment}{409} \indexentry{assignment!separator}{409} \indexentry{separator!assignment}{409} \indexentry{RETURN@{\tt RETURN}}{409} \indexentry{macro!RETURN@{\tt RETURN}}{409} \indexentry{out_token@{\tt out_token()}}{409} \indexentry{function!out_token@{\tt out_token()}}{409} \indexentry{TOKEN_COMMA@{\tt TOKEN_COMMA}}{409} \indexentry{terminal!TOKEN_COMMA@{\tt TOKEN_COMMA}}{409} \indexentry{TOKEN_EQUALS@{\tt TOKEN_EQUALS}}{409} \indexentry{terminal!TOKEN_EQUALS@{\tt TOKEN_EQUALS}}{409} \indexentry{newline}{409} \indexentry{RETURN@{\tt RETURN}}{409} \indexentry{macro!RETURN@{\tt RETURN}}{409} \indexentry{out_token@{\tt out_token()}}{409} \indexentry{function!out_token@{\tt out_token()}}{409} \indexentry{TOKEN_NEWLINE@{\tt TOKEN_NEWLINE}}{409} \indexentry{terminal!TOKEN_NEWLINE@{\tt TOKEN_NEWLINE}}{409} \indexentry{horizontal space character}{409} \indexentry{newline}{409} \indexentry{RETURN@{\tt RETURN}}{409} \indexentry{macro!RETURN@{\tt RETURN}}{409} \indexentry{out_token@{\tt out_token()}}{409} \indexentry{function!out_token@{\tt out_token()}}{409} \indexentry{TOKEN_SPACE@{\tt TOKEN_SPACE}}{409} \indexentry{terminal!TOKEN_SPACE@{\tt TOKEN_SPACE}}{409} \indexentry{unclassifiable token}{409} \indexentry{token!unclassifiable}{409} \indexentry{period!in regular expression}{409} \indexentry{newline}{409} \indexentry{RETURN@{\tt RETURN}}{409} \indexentry{macro!RETURN@{\tt RETURN}}{409} \indexentry{out_token@{\tt out_token()}}{409} \indexentry{function!out_token@{\tt out_token()}}{409} \indexentry{TOKEN_LITERAL@{\tt TOKEN_LITERAL}}{409} \indexentry{terminal!TOKEN_LITERAL@{\tt TOKEN_LITERAL}}{409} \indexentry{lex@{\tt lex}}{409} \indexentry{TOKEN_VALUE@{\tt TOKEN_VALUE}}{409} \indexentry{terminal!TOKEN_VALUE@{\tt TOKEN_VALUE}}{409} \indexentry{\char 34@{\tt \char 92\relax \char 34}}{409} \indexentry{accent control sequence}{409} \indexentry{lex@{\tt lex}}{409} \indexentry{NUL (0)!in string}{409} \indexentry{0@{\tt \char 92\relax 0}}{409} \indexentry{lex@{\tt lex}}{409} \indexentry{8-bit clean}{409} \indexentry{X/Open Consortium}{409} \indexentry{UNIX@{\sc UNIX}}{409} \indexentry{grammar!parsing}{410} \indexentry{parsing grammar}{410} \indexentry{yacc@{\tt yacc}}{410} \indexentry{lex@{\tt lex}}{410} \indexentry{yacc@{\tt yacc}}{410} \indexentry{yacc@{\tt yacc}}{410} \indexentry{bison@{\tt bison}}{410} \indexentry{grammar!size of}{410} \indexentry{space}{410} \indexentry{in-line comment}{410} \indexentry{comment!in-line}{410} \indexentry{bibparse@{\tt bibparse}}{410} \indexentry{bibclean@{\tt bibclean}}{410} \indexentry{no-prettyprint@{\tt -no-prettyprint}}{410} \indexentry{option!no-prettyprint@{\tt -no-prettyprint}}{410} \indexentry{biblex@{\tt biblex}}{410} \indexentry{yacc@{\tt yacc}}{410} \indexentry{literate programming}{410} \indexentry{yacc@{\tt yacc}}{410} \indexentry{\%\%@{\protect\tt \%\%}}{410} \indexentry{\%(@{\protect\tt \%\{\iffalse "}\fi}}{410} \indexentry{\%)@{\protect\tt \iffalse "{\fi \%\}}}{410} \indexentry{yacc@{\tt yacc}}{410} \indexentry{yacc@{\tt yacc}}{410} \indexentry{format!of grammar rules}{410} \indexentry{grammar!format of rules}{410} \indexentry{colon}{410} \indexentry{vertical!bar}{410} \indexentry{semicolon}{410} \indexentry{non-terminal}{410} \indexentry{terminal}{410} \indexentry{yacc@{\tt yacc}}{410} \indexentry{grammar!formatting conventions}{410} \indexentry{semicolon}{410} \indexentry{\%token@{\tt \%token}}{410} \indexentry{bibclean@{\tt bibclean}}{410} \indexentry{RETURN@{\tt RETURN}}{410} \indexentry{macro!RETURN@{\tt RETURN}}{410} \indexentry{TOKEN_ABBREV@{\tt TOKEN_ABBREV}}{410} \indexentry{terminal!TOKEN_ABBREV@{\tt TOKEN_ABBREV}}{410} \indexentry{TOKEN_AT@{\tt TOKEN_AT}}{410} \indexentry{terminal!TOKEN_AT@{\tt TOKEN_AT}}{410} \indexentry{TOKEN_COMMA@{\tt TOKEN_COMMA}}{410} \indexentry{terminal!TOKEN_COMMA@{\tt TOKEN_COMMA}}{410} \indexentry{TOKEN_COMMENT@{\tt TOKEN_COMMENT}}{410} \indexentry{terminal!TOKEN_COMMENT@{\tt TOKEN_COMMENT}}{410} \indexentry{TOKEN_ENTRY@{\tt TOKEN_ENTRY}}{410} \indexentry{terminal!TOKEN_ENTRY@{\tt TOKEN_ENTRY}}{410} \indexentry{TOKEN_EQUALS@{\tt TOKEN_EQUALS}}{410} \indexentry{terminal!TOKEN_EQUALS@{\tt TOKEN_EQUALS}}{410} \indexentry{TOKEN_FIELD@{\tt TOKEN_FIELD}}{410} \indexentry{terminal!TOKEN_FIELD@{\tt TOKEN_FIELD}}{410} \indexentry{TOKEN_INCLUDE@{\tt TOKEN_INCLUDE}}{410} \indexentry{terminal!TOKEN_INCLUDE@{\tt TOKEN_INCLUDE}}{410} \indexentry{TOKEN_INLINE@{\tt TOKEN_INLINE}}{410} \indexentry{terminal!TOKEN_INLINE@{\tt TOKEN_INLINE}}{410} \indexentry{TOKEN_KEY@{\tt TOKEN_KEY}}{410} \indexentry{terminal!TOKEN_KEY@{\tt TOKEN_KEY}}{410} \indexentry{TOKEN_LBRACE@{\tt TOKEN_LBRACE}}{410} \indexentry{terminal!TOKEN_LBRACE@{\tt TOKEN_LBRACE}}{410} \indexentry{TOKEN_LITERAL@{\tt TOKEN_LITERAL}}{410} \indexentry{terminal!TOKEN_LITERAL@{\tt TOKEN_LITERAL}}{410} \indexentry{TOKEN_NEWLINE@{\tt TOKEN_NEWLINE}}{410} \indexentry{terminal!TOKEN_NEWLINE@{\tt TOKEN_NEWLINE}}{410} \indexentry{TOKEN_PREAMBLE@{\tt TOKEN_PREAMBLE}}{410} \indexentry{terminal!TOKEN_PREAMBLE@{\tt TOKEN_PREAMBLE}}{410} \indexentry{TOKEN_RBRACE@{\tt TOKEN_RBRACE}}{410} \indexentry{terminal!TOKEN_RBRACE@{\tt TOKEN_RBRACE}}{410} \indexentry{TOKEN_SHARP@{\tt TOKEN_SHARP}}{410} \indexentry{terminal!TOKEN_SHARP@{\tt TOKEN_SHARP}}{410} \indexentry{TOKEN_SPACE@{\tt TOKEN_SPACE}}{410} \indexentry{terminal!TOKEN_SPACE@{\tt TOKEN_SPACE}}{410} \indexentry{TOKEN_STRING@{\tt TOKEN_STRING}}{410} \indexentry{terminal!TOKEN_STRING@{\tt TOKEN_STRING}}{410} \indexentry{TOKEN_VALUE@{\tt TOKEN_VALUE}}{410} \indexentry{terminal!TOKEN_VALUE@{\tt TOKEN_VALUE}}{410} \indexentry{precedence declaration}{410} \indexentry{\%nonassoc@{\tt \%nonassoc}}{410} \indexentry{nonassoc@{\tt \%nonassoc}}{410} \indexentry{assignment!operator!associativity of}{410} \indexentry{associativity}{410} \indexentry{TOKEN_EQUALS@{\tt TOKEN_EQUALS}}{410} \indexentry{terminal!TOKEN_EQUALS@{\tt TOKEN_EQUALS}}{410} \indexentry{\%left@{\tt \%left}}{410} \indexentry{left@{\tt \%left}}{410} \indexentry{space!associativity of}{410} \indexentry{in-line comment!associativity of}{410} \indexentry{comment!in-line!associativity of}{410} \indexentry{newline!associativity of}{410} \indexentry{TOKEN_INLINE@{\tt TOKEN_INLINE}}{410} \indexentry{terminal!TOKEN_INLINE@{\tt TOKEN_INLINE}}{410} \indexentry{TOKEN_NEWLINE@{\tt TOKEN_NEWLINE}}{410} \indexentry{terminal!TOKEN_NEWLINE@{\tt TOKEN_NEWLINE}}{410} \indexentry{TOKEN_SPACE@{\tt TOKEN_SPACE}}{410} \indexentry{terminal!TOKEN_SPACE@{\tt TOKEN_SPACE}}{410} \indexentry{\%left@{\tt \%left}}{411} \indexentry{left@{\tt \%left}}{411} \indexentry{string!concatenation operator}{411} \indexentry{operator!string concatenation}{411} \indexentry{space!precedence of}{411} \indexentry{in-line comment!precedence of}{411} \indexentry{comment!in-line!precedence of}{411} \indexentry{TOKEN_SHARP@{\tt TOKEN_SHARP}}{411} \indexentry{terminal!TOKEN_SHARP@{\tt TOKEN_SHARP}}{411} \indexentry{bibtex_file@{\tt bibtex_file} rule}{411} \indexentry{non-terminal!bibtex_file@{\tt bibtex_file}}{411} \indexentry{object_list@{\tt object_list} rule}{411} \indexentry{non-terminal!object_list@{\tt object_list}}{411} \indexentry{opt_space@{\tt opt_space} rule}{411} \indexentry{non-terminal!opt_space@{\tt opt_space}}{411} \indexentry{list!of objects}{411} \indexentry{object!list}{411} \indexentry{opt_space@{\tt opt_space} rule}{411} \indexentry{non-terminal!opt_space@{\tt opt_space}}{411} \indexentry{object@{\tt object} rule}{411} \indexentry{non-terminal!object@{\tt object}}{411} \indexentry{object_list@{\tt object_list} rule}{411} \indexentry{non-terminal!object_list@{\tt object_list}}{411} \indexentry{LL(1)!parser}{411} \indexentry{parser!LL(1)}{411} \indexentry{left-recursive rule}{411} \indexentry{Aho, Alfred V.}{411} \indexentry{Sethi, Ravi}{411} \indexentry{Ullman, Jeffrey D.}{411} \indexentry{object}{411} \indexentry{\char 64name\{ ...\} @{\tt \char 64name\{ ...\} }}{411} \indexentry{\char 64@{\tt \char 64}}{411} \indexentry{name@{\tt name}}{411} \indexentry{at_object@{\tt at_object} rule}{411} \indexentry{non-terminal!at_object@{\tt at_object}}{411} \indexentry{opt_space@{\tt opt_space} rule}{411} \indexentry{non-terminal!opt_space@{\tt opt_space}}{411} \indexentry{TOKEN_AT@{\tt TOKEN_AT}}{411} \indexentry{terminal!TOKEN_AT@{\tt TOKEN_AT}}{411} \indexentry{object@{\tt object} rule}{411} \indexentry{non-terminal!object@{\tt object}}{411} \indexentry{space!between tokens}{411} \indexentry{\char 64@{\tt \char 64}}{411} \indexentry{name@{\tt name}}{411} \indexentry{\char 64name@{\tt \char 64name}}{411} \indexentry{Scribe@{\sc Scribe}}{411} \indexentry{name@{\tt name}}{411} \indexentry{\char 64@{\tt \char 64}}{411} \indexentry{at_object@{\tt at_object} rule}{411} \indexentry{non-terminal!at_object@{\tt at_object}}{411} \indexentry{TOKEN_RBRACE@{\tt TOKEN_RBRACE}}{411} \indexentry{terminal!TOKEN_RBRACE@{\tt TOKEN_RBRACE}}{411} \indexentry{error@{\tt error} rule}{411} \indexentry{non-terminal!error@{\tt error}}{411} \indexentry{string@{\tt string} rule}{411} \indexentry{non-terminal!string@{\tt string}}{411} \indexentry{preamble@{\tt preamble} rule}{411} \indexentry{non-terminal!preamble@{\tt preamble}}{411} \indexentry{include@{\tt include} rule}{411} \indexentry{non-terminal!include@{\tt include}}{411} \indexentry{entry@{\tt entry} rule}{411} \indexentry{non-terminal!entry@{\tt entry}}{411} \indexentry{comment@{\tt comment} rule}{411} \indexentry{non-terminal!comment@{\tt comment}}{411} \indexentry{at_object@{\tt at_object} rule}{411} \indexentry{non-terminal!at_object@{\tt at_object}}{411} \indexentry{Comment@{\tt Comment}}{411} \indexentry{Include@{\tt Include}}{411} \indexentry{Preamble@{\tt Preamble}}{411} \indexentry{String@{\tt String}}{411} \indexentry{Article@{\tt Article}}{411} \indexentry{Book@{\tt Book}}{411} \indexentry{error@{\tt error} rule}{411} \indexentry{non-terminal!error@{\tt error}}{411} \indexentry{yacc@{\tt yacc}}{411} \indexentry{bison@{\tt bison}}{411} \indexentry{at_object@{\tt at_object} rule}{411} \indexentry{non-terminal!at_object@{\tt at_object}}{411} \indexentry{error!message}{411} \indexentry{message!error}{411} \indexentry{error!recovery}{411} \indexentry{recovery!from error}{411} \indexentry{assignment!rule!error recovery in}{411} \indexentry{comment!entry}{411} \indexentry{\char 64Comment\penalty 0\{ ...\} @{\tt \char 64Comment\penalty 0\{ ...\} }}{411} \indexentry{TOKEN_LITERAL@{\tt TOKEN_LITERAL}}{412} \indexentry{terminal!TOKEN_LITERAL@{\tt TOKEN_LITERAL}}{412} \indexentry{opt_space@{\tt opt_space} rule}{412} \indexentry{non-terminal!opt_space@{\tt opt_space}}{412} \indexentry{TOKEN_COMMENT@{\tt TOKEN_COMMENT}}{412} \indexentry{terminal!TOKEN_COMMENT@{\tt TOKEN_COMMENT}}{412} \indexentry{comment@{\tt comment} rule}{412} \indexentry{non-terminal!comment@{\tt comment}}{412} \indexentry{bibliography!entry}{412} \indexentry{citation!key}{412} \indexentry{comma}{412} \indexentry{list!of assignments}{412} \indexentry{assignment!list}{412} \indexentry{trailing context}{412} \indexentry{entry_head@{\tt entry_head} rule}{412} \indexentry{non-terminal!entry_head@{\tt entry_head}}{412} \indexentry{key_name@{\tt key_name} rule}{412} \indexentry{non-terminal!key_name@{\tt key_name}}{412} \indexentry{TOKEN_LBRACE@{\tt TOKEN_LBRACE}}{412} \indexentry{terminal!TOKEN_LBRACE@{\tt TOKEN_LBRACE}}{412} \indexentry{TOKEN_ENTRY@{\tt TOKEN_ENTRY}}{412} \indexentry{terminal!TOKEN_ENTRY@{\tt TOKEN_ENTRY}}{412} \indexentry{TOKEN_COMMA@{\tt TOKEN_COMMA}}{412} \indexentry{terminal!TOKEN_COMMA@{\tt TOKEN_COMMA}}{412} \indexentry{TOKEN_RBRACE@{\tt TOKEN_RBRACE}}{412} \indexentry{terminal!TOKEN_RBRACE@{\tt TOKEN_RBRACE}}{412} \indexentry{opt_space@{\tt opt_space} rule}{412} \indexentry{non-terminal!opt_space@{\tt opt_space}}{412} \indexentry{assignment_list@{\tt assignment_list} rule}{412} \indexentry{non-terminal!assignment_list@{\tt assignment_list}}{412} \indexentry{entry_head@{\tt entry_head} rule}{412} \indexentry{non-terminal!entry_head@{\tt entry_head}}{412} \indexentry{entry@{\tt entry} rule}{412} \indexentry{non-terminal!entry@{\tt entry}}{412} \indexentry{opt_space@{\tt opt_space}}{412} \indexentry{assignment_list@{\tt assignment_list}}{412} \indexentry{LALR(1)!grammar}{412} \indexentry{grammar!LALR(1)}{412} \indexentry{yacc@{\tt yacc}}{412} \indexentry{bison@{\tt bison}}{412} \indexentry{key name}{412} \indexentry{newline}{412} \indexentry{in-line comment}{412} \indexentry{comment!in-line}{412} \indexentry{citation!key!problems in recognizing}{412} \indexentry{trailing context}{412} \indexentry{TOKEN_ABBREV@{\tt TOKEN_ABBREV}}{412} \indexentry{terminal!TOKEN_ABBREV@{\tt TOKEN_ABBREV}}{412} \indexentry{TOKEN_KEY@{\tt TOKEN_KEY}}{412} \indexentry{terminal!TOKEN_KEY@{\tt TOKEN_KEY}}{412} \indexentry{key_name@{\tt key_name} rule}{412} \indexentry{non-terminal!key_name@{\tt key_name}}{412} \indexentry{file!inclusion}{412} \indexentry{Include@{\tt Include}}{412} \indexentry{TOKEN_LITERAL@{\tt TOKEN_LITERAL}}{412} \indexentry{terminal!TOKEN_LITERAL@{\tt TOKEN_LITERAL}}{412} \indexentry{opt_space@{\tt opt_space} rule}{412} \indexentry{non-terminal!opt_space@{\tt opt_space}}{412} \indexentry{TOKEN_INCLUDE@{\tt TOKEN_INCLUDE}}{412} \indexentry{terminal!TOKEN_INCLUDE@{\tt TOKEN_INCLUDE}}{412} \indexentry{include@{\tt include} rule}{412} \indexentry{non-terminal!include@{\tt include}}{412} \indexentry{file!name!syntax of}{412} \indexentry{file!name!space in}{412} \indexentry{bibclean@{\tt bibclean}}{412} \indexentry{Preamble@{\tt Preamble}}{412} \indexentry{.bbl@{\tt .bbl}}{412} \indexentry{file!.bbl@{\tt .bbl}}{412} \indexentry{TOKEN_RBRACE@{\tt TOKEN_RBRACE}}{412} \indexentry{terminal!TOKEN_RBRACE@{\tt TOKEN_RBRACE}}{412} \indexentry{TOKEN_LBRACE@{\tt TOKEN_LBRACE}}{412} \indexentry{terminal!TOKEN_LBRACE@{\tt TOKEN_LBRACE}}{412} \indexentry{value@{\tt value} rule}{412} \indexentry{non-terminal!value@{\tt value}}{412} \indexentry{opt_space@{\tt opt_space} rule}{412} \indexentry{non-terminal!opt_space@{\tt opt_space}}{412} \indexentry{TOKEN_PREAMBLE@{\tt TOKEN_PREAMBLE}}{412} \indexentry{terminal!TOKEN_PREAMBLE@{\tt TOKEN_PREAMBLE}}{412} \indexentry{preamble@{\tt preamble} rule}{412} \indexentry{non-terminal!preamble@{\tt preamble}}{412} \indexentry{String@{\tt String}}{412} \indexentry{TOKEN_RBRACE@{\tt TOKEN_RBRACE}}{412} \indexentry{terminal!TOKEN_RBRACE@{\tt TOKEN_RBRACE}}{412} \indexentry{assignment@{\tt assignment} rule}{412} \indexentry{non-terminal!assignment@{\tt assignment}}{412} \indexentry{opt_space@{\tt opt_space} rule}{412} \indexentry{non-terminal!opt_space@{\tt opt_space}}{412} \indexentry{TOKEN_LBRACE@{\tt TOKEN_LBRACE}}{412} \indexentry{terminal!TOKEN_LBRACE@{\tt TOKEN_LBRACE}}{412} \indexentry{opt_space@{\tt opt_space} rule}{412} \indexentry{non-terminal!opt_space@{\tt opt_space}}{412} \indexentry{TOKEN_STRING@{\tt TOKEN_STRING}}{412} \indexentry{terminal!TOKEN_STRING@{\tt TOKEN_STRING}}{412} \indexentry{string@{\tt string} rule}{412} \indexentry{non-terminal!string@{\tt string}}{412} \indexentry{value}{412} \indexentry{string!concatenation operator}{412} \indexentry{operator!string concatenation}{412} \indexentry{simple_value@{\tt simple_value} rule}{412} \indexentry{non-terminal!simple_value@{\tt simple_value}}{412} \indexentry{TOKEN_SHARP@{\tt TOKEN_SHARP}}{412} \indexentry{terminal!TOKEN_SHARP@{\tt TOKEN_SHARP}}{412} \indexentry{opt_space@{\tt opt_space} rule}{412} \indexentry{non-terminal!opt_space@{\tt opt_space}}{412} \indexentry{simple_value@{\tt simple_value} rule}{412} \indexentry{non-terminal!simple_value@{\tt simple_value}}{412} \indexentry{value@{\tt value} rule}{412} \indexentry{non-terminal!value@{\tt value}}{412} \indexentry{simple value}{413} \indexentry{delimited string}{413} \indexentry{TOKEN_VALUE@{\tt TOKEN_VALUE}}{413} \indexentry{terminal!TOKEN_VALUE@{\tt TOKEN_VALUE}}{413} \indexentry{abbreviation}{413} \indexentry{TOKEN_ABBREV@{\tt TOKEN_ABBREV}}{413} \indexentry{terminal!TOKEN_ABBREV@{\tt TOKEN_ABBREV}}{413} \indexentry{TOKEN_ABBREV@{\tt TOKEN_ABBREV}}{413} \indexentry{terminal!TOKEN_ABBREV@{\tt TOKEN_ABBREV}}{413} \indexentry{TOKEN_VALUE@{\tt TOKEN_VALUE}}{413} \indexentry{terminal!TOKEN_VALUE@{\tt TOKEN_VALUE}}{413} \indexentry{simple_value@{\tt simple_value} rule}{413} \indexentry{non-terminal!simple_value@{\tt simple_value}}{413} \indexentry{comma!optional after assignment}{413} \indexentry{entry@{\tt entry} rule}{413} \indexentry{non-terminal!entry@{\tt entry}}{413} \indexentry{TOKEN_COMMA@{\tt TOKEN_COMMA}}{413} \indexentry{terminal!TOKEN_COMMA@{\tt TOKEN_COMMA}}{413} \indexentry{opt_space@{\tt opt_space} rule}{413} \indexentry{non-terminal!opt_space@{\tt opt_space}}{413} \indexentry{assignment_list@{\tt assignment_list} rule}{413} \indexentry{non-terminal!assignment_list@{\tt assignment_list}}{413} \indexentry{assignment@{\tt assignment} rule}{413} \indexentry{non-terminal!assignment@{\tt assignment}}{413} \indexentry{assignment_list@{\tt assignment_list} rule}{413} \indexentry{non-terminal!assignment_list@{\tt assignment_list}}{413} \indexentry{assignment}{413} \indexentry{assignment!operator}{413} \indexentry{operator!assignment}{413} \indexentry{value@{\tt value} rule}{413} \indexentry{non-terminal!value@{\tt value}}{413} \indexentry{TOKEN_EQUALS@{\tt TOKEN_EQUALS}}{413} \indexentry{terminal!TOKEN_EQUALS@{\tt TOKEN_EQUALS}}{413} \indexentry{opt_space@{\tt opt_space} rule}{413} \indexentry{non-terminal!opt_space@{\tt opt_space}}{413} \indexentry{assignment_lhs@{\tt assignment_lhs} rule}{413} \indexentry{non-terminal!assignment_lhs@{\tt assignment_lhs}}{413} \indexentry{assignment@{\tt assignment} rule}{413} \indexentry{non-terminal!assignment@{\tt assignment}}{413} \indexentry{assignment_list@{\tt assignment_list}}{413} \indexentry{field name}{413} \indexentry{author@{\tt author}}{413} \indexentry{title@{\tt title}}{413} \indexentry{abbreviation}{413} \indexentry{TOKEN_ABBREV@{\tt TOKEN_ABBREV}}{413} \indexentry{terminal!TOKEN_ABBREV@{\tt TOKEN_ABBREV}}{413} \indexentry{TOKEN_FIELD@{\tt TOKEN_FIELD}}{413} \indexentry{terminal!TOKEN_FIELD@{\tt TOKEN_FIELD}}{413} \indexentry{assignment_lhs@{\tt assignment_lhs} rule}{413} \indexentry{non-terminal!assignment_lhs@{\tt assignment_lhs}}{413} \indexentry{empty!string}{413} \indexentry{/*...*/@{\tt /*...*/}}{413} \indexentry{space@{\tt space} rule}{413} \indexentry{non-terminal!space@{\tt space}}{413} \indexentry{/* empty */@{\tt /* empty */} rule}{413} \indexentry{non-terminal!/* empty */@{\tt /* empty */}}{413} \indexentry{opt_space@{\tt opt_space} rule}{413} \indexentry{non-terminal!opt_space@{\tt opt_space}}{413} \indexentry{space}{413} \indexentry{single_space@{\tt single_space} rule}{413} \indexentry{non-terminal!single_space@{\tt single_space}}{413} \indexentry{space@{\tt space} rule}{413} \indexentry{non-terminal!space@{\tt space}}{413} \indexentry{single space}{413} \indexentry{space}{413} \indexentry{in-line comment}{413} \indexentry{comment!in-line}{413} \indexentry{newline}{413} \indexentry{TOKEN_NEWLINE@{\tt TOKEN_NEWLINE}}{413} \indexentry{terminal!TOKEN_NEWLINE@{\tt TOKEN_NEWLINE}}{413} \indexentry{TOKEN_INLINE@{\tt TOKEN_INLINE}}{413} \indexentry{terminal!TOKEN_INLINE@{\tt TOKEN_INLINE}}{413} \indexentry{TOKEN_SPACE@{\tt TOKEN_SPACE}}{413} \indexentry{terminal!TOKEN_SPACE@{\tt TOKEN_SPACE}}{413} \indexentry{single_space@{\tt single_space} rule}{413} \indexentry{non-terminal!single_space@{\tt single_space}}{413} \indexentry{TOKEN_SPACE@{\tt TOKEN_SPACE}}{413} \indexentry{terminal!TOKEN_SPACE@{\tt TOKEN_SPACE}}{413} \indexentry{TOKEN_NEWLINE@{\tt TOKEN_NEWLINE}}{413} \indexentry{terminal!TOKEN_NEWLINE@{\tt TOKEN_NEWLINE}}{413} \indexentry{mismatched delimiters}{413} \indexentry{delimiters!mismatched}{413} \indexentry{yacc@{\tt yacc}}{413} \indexentry{yacc@{\tt yacc}}{413} \indexentry{TOKEN_LBRACE@{\tt TOKEN_LBRACE}}{414} \indexentry{terminal!TOKEN_LBRACE@{\tt TOKEN_LBRACE}}{414} \indexentry{TOKEN_RBRACE@{\tt TOKEN_RBRACE}}{414} \indexentry{terminal!TOKEN_RBRACE@{\tt TOKEN_RBRACE}}{414} \indexentry{TOKEN_LITERAL@{\tt TOKEN_LITERAL}}{414} \indexentry{terminal!TOKEN_LITERAL@{\tt TOKEN_LITERAL}}{414} \indexentry{trailing context}{414} \indexentry{source code}{414} \indexentry{documentation}{414} \indexentry{bibclean@{\tt bibclean}}{414} \indexentry{bibclean@{\tt bibclean}}{414} \indexentry{lex@{\tt lex}}{414} \indexentry{flex@{\tt flex}}{414} \indexentry{yacc@{\tt yacc}}{414} \indexentry{bison@{\tt bison}}{414} \indexentry{anonymous ftp@anonymous {\tt ftp}}{414} \indexentry{ftp@{\tt ftp}}{414} \indexentry{ftp.math.utah.edu@{\tt ftp.math.utah.edu}}{414} \indexentry{file!ftp.math.utah.edu@{\tt ftp.math.utah.edu}}{414} \indexentry{pub/tex/bib@{\tt pub/tex/bib}}{414} \indexentry{file!pub/tex/bib@{\tt pub/tex/bib}}{414} \indexentry{Internet archive hosts}{414} \indexentry{archive hosts!Internet}{414} \indexentry{bibclean@{\tt bibclean}}{414} \indexentry{ftp@{\tt ftp}}{414} \indexentry{electronic mail server}{414} \indexentry{tuglib\char 64math.utah.edu@{\tt tuglib\char 64math.utah.edu}}{414} \indexentry{file!tuglib\char 64math.utah.edu@{\tt tuglib\char 64math.utah.edu}}{414} \indexentry{send@{\tt send}}{414} \indexentry{help@{\tt help}}{414} \indexentry{bibclean@{\tt bibclean}}{414} \indexentry{testing}{414} \indexentry{trip@{\tt trip}}{414} \indexentry{trap@{\tt trap}}{414} \indexentry{command-line options|see{options}}{415} \indexentry{concatenation|see{string}}{415} \indexentry{editor|see{Emacs}}{415} \indexentry{lexer|see{lexical analyzer}}{415} \indexentry{macro|seealso{control sequence}}{415} \indexentry{run-time options|see{options}}{415} \indexentry{text editor|see{Emacs}}{415} \indexentry{token|see{terminal}}{415} \indexentry{Scribe@{\sc Scribe}}{417} bibclean-2.11.4.1.orig/doc/bibclean.lot0000644000175200017520000000044607133432645016725 0ustar debiandebian\contentsline {table}{\numberline {1}{\ignorespaces Sample \BIBCLEAN {} initialization file.}}{401} \contentsline {table}{\numberline {2}{\ignorespaces Escape sequences in quoted strings.}}{401} \contentsline {table}{\numberline {3}{\ignorespaces Initialization file pattern characters.}}{402} bibclean-2.11.4.1.orig/configure.in0000644000175200017520000000667506720010123016204 0ustar debiandebiandnl Process this file with autoconf to produce a configure script. AC_INIT(bibclean.c) AC_CONFIG_HEADER(config.h:config.hin) dnl Checks for support programs AC_PATH_PROGS(AWK, [gawk nawk mawk awk]) dnl Checks for NeXT -posix AC_MSG_CHECKING(whether we have NeXT system, and so need -posix) if test -d /NextAdmin then CFLAGS=-posix AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) fi dnl Checks for compiler AC_PROG_CC AC_PROG_CXX dnl Checks for ALL (IBM RS/6000 c89 needs _ALL_SOURCE when ioctl.h is dnl used with winsize) AC_MSG_CHECKING(whether we need _ALL_SOURCE) all=no AC_TRY_COMPILE([ #include #include struct winsize w; ], , , all=maybe) if test $all = maybe ; then AC_TRY_COMPILE([ #define _ALL_SOURCE #include #include struct winsize w; ], , AC_DEFINE(_ALL_SOURCE) all=yes) fi if test $all = maybe ; then all=no ; fi AC_MSG_RESULT($all) dnl Checks for POSIX (HP-UX c89 needs _POSIX_SOURCE when stat.h is used) AC_MSG_CHECKING(whether we need _POSIX_SOURCE) posix=no AC_TRY_COMPILE([ #include #include struct stat buffer; ], , , posix=maybe) if test $posix = maybe ; then AC_TRY_COMPILE([ #define _POSIX_SOURCE #include #include struct stat buffer; ], , AC_DEFINE(_POSIX_SOURCE) posix=yes) fi if test $posix = maybe ; then posix=no ; fi AC_MSG_RESULT($posix) dnl Checks for Standard C and C++ function declarations. AC_MSG_CHECKING(for Standard C and C++ function declarations) AC_TRY_COMPILE([void foo(void){} int bar(int x, float y, char z){return 1;}], , [AC_MSG_RESULT(yes) AC_DEFINE(HAVE_STDC)], AC_MSG_RESULT(no)) dnl Checks for SunOS C++ free() argument type bug AC_MSG_CHECKING(for SunOS C++ free() argument type bug) freebug=no AC_TRY_COMPILE([#include ], [void *p; p = (void*)0; free(p)], , freebug=maybe) if test $freebug = maybe ; then AC_TRY_COMPILE([#include ], [void *p; p = (void*)0; free((char*)p)], AC_DEFINE(FREE_CAST_IS_CHAR_STAR) freebug=yes) fi if test $freebug = maybe ; then freebug=no ; fi AC_MSG_RESULT($freebug) dnl Checks for Standard C alert character AC_MSG_CHECKING(for Standard C alert character) havealert=yes AC_TRY_RUN(int main(){return((int)'\a'-007);}, [havealert=yes AC_DEFINE(HAVE_ALERT_CHAR)], havealert=no, havealert=no) AC_MSG_RESULT($havealert) dnl Checks for programs. dnl Checks for libraries. dnl Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS(conio.h ctype.h descrip.h errno.h fcntl.h io.h \ iodef.h jpidef.h libc.h limits.h osfcn.h pwd.h regex.h regexp.h \ rms.h sgtty.h ssdef.h stat.h stdio.h stdlib.h string.h sys/ioctl.h \ sys/param.h sys/stat.h sys/types.h termio.h termios.h time.h \ tt2def.h ttdef.h types.h unistd.h unixio.h ) dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_TYPE_MODE_T AC_TYPE_SIZE_T AC_STRUCT_TM dnl Checks for library functions. AC_PROG_GCC_TRADITIONAL AC_FUNC_UTIME_NULL AC_REPLACE_FUNCS(strtol) AC_CHECK_FUNCS(getcwd getwd re_comp strcspn strdup strspn strstr strtod strtol) AC_MSG_CHECKING(for ioctl prototype) AC_EGREP_CPP([ioctl[ ]*[(]], [ #include #include ], [ AC_DEFINE(HAVE_IOCTL_PROTOTYPE) AC_MSG_RESULT(yes) ], [ AC_MSG_RESULT(no) ]) dnl Remove -g from CFLAGS if we are compiling with lcc because it dnl produces bad debug symbol tables on Sun Solaris 2.x. if test "$CC" = "lcc" then CFLAGS="`echo $CFLAGS | sed -e 's/-g //g' -e 's/ -g$//g' -e 's/^-g$//'`" fi AC_OUTPUT(Makefile) bibclean-2.11.4.1.orig/pattern.h0000644000175200017520000000055306034271122015514 0ustar debiandebian#ifndef PATTERN_H_DEFINED_ #define PATTERN_H_DEFINED_ #if !defined(MAX_PATTERN_NAMES) #define MAX_PATTERN_NAMES 100 /* maximum number of field/pattern types; */ /* 100 is far more than ever likely to be */ /* needed, but we only waste 8 bytes each for */ /* unused entries */ #endif /* !defined(MAX_PATTERN_NAMES) */ #endif /* PATTERN_H_DEFINED_ */ bibclean-2.11.4.1.orig/testisxn.bok0000644000175200017520000005412405651010723016251 0ustar debiandebian%% /u/sy/beebe/tex/bibclean/testisxn.bib, Thu Nov 12 09:30:41 1992 %% Edit by Nelson H. F. Beebe @Misc{ISSN-test, comment = "The following ISSN values should be valid.", ISSN = "0018-9367", ISSN = "0080-3863", ISSN = "0094-3770", ISSN = "0197-3622", ISSN = "0346-914X", ISSN = "0346-914X", ISSN = "0362-613X", ISSN = "0891-2513", ISSN = "0899-7667", ISSN = "0958-9341", ISSN = "0964-5098", ISSN = "1047-5974", ISSN = "1059-5325", ISSN = "not yet available", ISSN = "", comment = "The following ISSN values have errors in them introduced by perturbing the first digit.", ISSN = "1018-9367", ISSN = "2080-3863", ISSN = "3094-3770", ISSN = "4197-3622", ISSN = "5346-914X", ISSN = "6346-914X", ISSN = "7362-613X", ISSN = "8891-2513", ISSN = "9899-7667", ISSN = "X958-9341", ISSN = "1964-5098", ISSN = "2047-5974", ISSN = "3059-5325", comment = "The following ISSN values have the wrong number of digits.", ISSN = "3", ISSN = "30", ISSN = "305", ISSN = "3059", ISSN = "3059-5", ISSN = "3059-53", ISSN = "3059-532", ISSN = "3059-5325-X", } @Misc{ISBN-test, comment = "The following ISBN values should be valid.", ISBN = "0-241-13267-3", ISBN = "0-85331-623-6", ISBN = "0-913720-72-0", ISBN = "0-948905-72-7", ISBN = "0-948905-76-X", ISBN = "0-03-063892-5", ISBN = "0-07-008845-4", ISBN = "0-07-008845-4", ISBN = "0-07-021623-1", ISBN = "0-07-026751-0", ISBN = "0-07-033508-7", ISBN = "0-07-039006-1 (hardback), 0-07-039002-9 (paperback)", ISBN = "0-07-043109-4", ISBN = "0-07-881645-9", ISBN = "0-07-015557-7", ISBN = "0-08-030713-2", ISBN = "0-12-079062-9", ISBN = "0-12-117645-2", ISBN = "0-12-117650-9", ISBN = "0-12-117650-9", ISBN = "0-12-249050-9", ISBN = "0-12-249051-7", ISBN = "0-12-257960-7", ISBN = "0-12-286160-4", ISBN = "0-12-286165-5", ISBN = "0-12-289255-0", ISBN = "0-12-305340-4", ISBN = "0-12-460515-X", ISBN = "0-12-460515-X", ISBN = "0-12-557580-7", ISBN = "0-12-697545-0", ISBN = "0-13-010778-6", ISBN = "0-13-010778-6", ISBN = "0-13-043530-9", ISBN = "0-13-049189-6", ISBN = "0-13-109802-0", ISBN = "0-13-110008-4", ISBN = "0-13-110933-2", ISBN = "0-13-120486-6", ISBN = "0-13-155045-4", ISBN = "0-13-162959-X", ISBN = "0-13-365412-5", ISBN = "0-13-472242-6", ISBN = "0-13-497074-8", ISBN = "0-13-536657-7", ISBN = "0-13-554619-2", ISBN = "0-13-567090-X", ISBN = "0-13-580944-4", ISBN = "0-13-588187-0", ISBN = "0-13-590464-1", ISBN = "0-13-590472-2", ISBN = "0-13-627258-4", ISBN = "0-13-640616-5", ISBN = "0-13-640673-4", ISBN = "0-13-640681-5", ISBN = "0-13-685835-X", ISBN = "0-13-685843-0", ISBN = "0-13-685850-3", ISBN = "0-13-685868-6", ISBN = "0-13-685876-7", ISBN = "0-13-685884-8", ISBN = "0-13-685892-9", ISBN = "0-13-685967-4", ISBN = "0-13-812611-9", ISBN = "0-13-812611-9", ISBN = "0-13-822064-6", ISBN = "0-13-825001-4", ISBN = "0-13-838012-0", ISBN = "0-13-855974-0", ISBN = "0-13-880733-7", ISBN = "0-13-912296-6", ISBN = "0-13-912296-6", ISBN = "0-13-933441-6", ISBN = "0-13-945593-0", ISBN = "0-13-949876-1", ISBN = "0-13-972167-3", ISBN = "0-13-982992-X", ISBN = "0-19-212983-X", ISBN = "0-19-505838-0", ISBN = "0-19-853387-X", ISBN = "0-19-853387-X", ISBN = "0-19-853443-4", ISBN = "0-19-853755-7 (hardback), 0-19-853756-5 (paperback)", ISBN = "0-201-05866-9", ISBN = "0-201-05992-4", ISBN = "0-201-06008-6", ISBN = "0-201-06663-7", ISBN = "0-201-06663-7", ISBN = "0-201-06672-6", ISBN = "0-201-06672-6", ISBN = "0-201-06673-4", ISBN = "0-201-06755-2", ISBN = "0-201-06824-9", ISBN = "0-201-06896-6", ISBN = "0-201-07981-X", ISBN = "0-201-08017-6", ISBN = "0-201-08319-1", ISBN = "0-201-08319-1", ISBN = "0-201-09346-4 (hardback), 0-201-09356-1 (paperback)", ISBN = "0-201-09355-3", ISBN = "0-201-09528-9", ISBN = "0-201-09591-2", ISBN = "0-201-09689-7", ISBN = "0-201-09696-X", ISBN = "0-201-09720-6", ISBN = "0-201-10174-2", ISBN = "0-201-10174-2", ISBN = "0-201-10179-3", ISBN = "0-201-10179-3", ISBN = "0-201-10331-1", ISBN = "0-201-10381-8", ISBN = "0-201-10745-7", ISBN = "0-201-10877-1", ISBN = "0-201-11114-4", ISBN = "0-201-11537-9", ISBN = "0-201-11603-0", ISBN = "0-201-11749-5", ISBN = "0-201-11938-2", ISBN = "0-201-11941-2", ISBN = "0-201-11982-X", ISBN = "0-201-12008-9", ISBN = "0-201-12078-X", ISBN = "0-201-12110-7", ISBN = "0-201-12584-6", ISBN = "0-201-12593-5", ISBN = "0-201-12649-4", ISBN = "0-201-12792-X", ISBN = "0-201-12910-8", ISBN = "0-201-12920-5", ISBN = "0-201-13046-7", ISBN = "0-201-13437-3", ISBN = "0-201-13437-3", ISBN = "0-201-13438-1", ISBN = "0-201-13438-1", ISBN = "0-201-13445-4", ISBN = "0-201-13445-4", ISBN = "0-201-13446-2", ISBN = "0-201-13446-2", ISBN = "0-201-13447-0", ISBN = "0-201-13447-0", ISBN = "0-201-13448-9", ISBN = "0-201-13448-9", ISBN = "0-201-13548-5", ISBN = "0-201-14236-8", ISBN = "0-201-14236-8", ISBN = "0-201-14396-8", ISBN = "0-201-14396-8", ISBN = "0-201-14468-9", ISBN = "0-201-15002-6", ISBN = "0-201-15198-7", ISBN = "0-201-15572-9", ISBN = "0-201-15585-0", ISBN = "0-201-15672-5", ISBN = "0-201-15673-3", ISBN = "0-201-15674-1", ISBN = "0-201-15675-X", ISBN = "0-201-15676-8", ISBN = "0-201-15680-6", ISBN = "0-201-15681-4 (hardback), 0-201-15685-7 (paperback)", ISBN = "0-201-15683-0", ISBN = "0-201-15688-1", ISBN = "0-201-15790-X", ISBN = "0-201-15790-X", ISBN = "0-201-15911-2", ISBN = "0-201-16116-8", ISBN = "0-201-16410-8", ISBN = "0-201-16411-6", ISBN = "0-201-16503-1 (hardback), 0-201-16504-X (paperback)", ISBN = "0-201-16520-1", ISBN = "0-201-16579-1 (hardback), 0-201-13232-X (paperback)", ISBN = "0-201-16643-7", ISBN = "0-201-16891-X", ISBN = "0-201-17232-1", ISBN = "0-201-17233-X", ISBN = "0-201-17234-8", ISBN = "0-201-17236-4", ISBN = "0-201-17237-2", ISBN = "0-201-17535-5", ISBN = "0-201-17535-5", ISBN = "0-201-17574-6", ISBN = "0-201-17633-5", ISBN = "0-201-17633-5", ISBN = "0-201-17634-3", ISBN = "0-201-17833-8", ISBN = "0-201-18127-4", ISBN = "0-201-18260-2", ISBN = "0-201-18261-0", ISBN = "0-201-18323-4", ISBN = "0-201-19038-9", ISBN = "0-201-19334-5 (hardback), 0-201-19330-2 (paperback)", ISBN = "0-201-19334-5", ISBN = "0-201-19560-7", ISBN = "0-201-41625-5", ISBN = "0-201-41667-0", ISBN = "0-201-50018-3", ISBN = "0-201-50061-2", ISBN = "0-201-50257-7", ISBN = "0-201-50305-0", ISBN = "0-201-50390-5", ISBN = "0-201-50391-3", ISBN = "0-201-50393-X", ISBN = "0-201-50395-6 (hardback), 0-201-51560-1 (paperback)", ISBN = "0-201-50418-9", ISBN = "0-201-50424-3", ISBN = "0-201-50814-1", ISBN = "0-201-50814-1", ISBN = "0-201-50821-4", ISBN = "0-201-50862-1", ISBN = "0-201-50868-0", ISBN = "0-201-50935-0", ISBN = "0-201-50936-9", ISBN = "0-201-50937-7", ISBN = "0-201-51001-4", ISBN = "0-201-51002-2", ISBN = "0-201-51013-8", ISBN = "0-201-51014-6", ISBN = "0-201-51035-9", ISBN = "0-201-51058-8", ISBN = "0-201-51141-X", ISBN = "0-201-51141-X", ISBN = "0-201-51249-1", ISBN = "0-201-51375-7", ISBN = "0-201-51375-7", ISBN = "0-201-51376-5", ISBN = "0-201-51392-7", ISBN = "0-201-51425-7", ISBN = "0-201-51425-7", ISBN = "0-201-51459-1", ISBN = "0-201-51505-9 (hardback), 0-201-51561-X (paperback)", ISBN = "0-201-51507-5", ISBN = "0-201-51509-1 (hardback), 0-201-51506-7 (paperback)", ISBN = "0-201-51814-7", ISBN = "0-201-52149-0 (hardback), 0-201-52150-4 (paperback)", ISBN = "0-201-52243-8", ISBN = "0-201-52251-9", ISBN = "0-201-52253-5", ISBN = "0-201-52425-2", ISBN = "0-201-52781-2", ISBN = "0-201-52810-X", ISBN = "0-201-52811-8", ISBN = "0-201-52812-6", ISBN = "0-201-52813-4", ISBN = "0-201-52899-1", ISBN = "0-201-53472-X", ISBN = "0-201-53472-X", ISBN = "0-201-53992-6", ISBN = "0-201-54611-6", ISBN = "0-201-54709-0", ISBN = "0-201-54799-6", ISBN = "0-201-54799-6", ISBN = "0-201-54848-8", ISBN = "0-201-55703-7", ISBN = "0-201-55703-7", ISBN = "0-201-56345-2", ISBN = "0-201-56882-9", ISBN = "0-201-57044-0", ISBN = "0-231-05146-8", ISBN = "0-262-01063-1", ISBN = "0-262-01077-1 (MIT Press), 0-07-000422-6", ISBN = "0-262-01102-6", ISBN = "0-262-01114-X", ISBN = "0-262-01123-9 (hardback), 0-262-69146-9 (paperback)", ISBN = "0-262-01124-7", ISBN = "0-262-02182-X", ISBN = "0-262-02192-7", ISBN = "0-262-02226-5", ISBN = "0-262-02266-4", ISBN = "0-262-02317-2", ISBN = "0-262-02334-2", ISBN = "0-262-03141-8", ISBN = "0-262-03167-1", ISBN = "0-262-03171-X", ISBN = "0-262-03181-7", ISBN = "0-262-07083-9", ISBN = "0-262-07106-1", ISBN = "0-262-07130-4", ISBN = "0-262-08143-1", ISBN = "0-262-08157-1", ISBN = "0-262-08159-8", ISBN = "0-262-08183-0", ISBN = "0-262-10045-2", ISBN = "0-262-11139-X", ISBN = "0-262-13205-2", ISBN = "0-262-13235-4", ISBN = "0-262-13252-4", ISBN = "0-262-13257-5", ISBN = "0-262-13263-X", ISBN = "0-262-15039-5", ISBN = "0-262-16082-X", ISBN = "0-262-18117-7", ISBN = "0-262-18143-6", ISBN = "0-262-18145-2 (hardback), 0-262-68069-6 (paperback)", ISBN = "0-262-19229-2 (MIT Press) and 0-07-057290-9", ISBN = "0-262-19250-0", ISBN = "0-262-19277-2", ISBN = "0-262-19285-3", ISBN = "0-262-19288-8", ISBN = "0-262-19301-9", ISBN = "0-262-20087-2", ISBN = "0-262-21009-6", ISBN = "0-262-21009-6", ISBN = "0-262-21009-6", ISBN = "0-262-23096-8", ISBN = "0-262-23117-4", ISBN = "0-262-23139-5 (MIT), 0-07-068147-3 (McGraw-Hill)", ISBN = "0-262-23150-6 (volume two), 0-262-23154-9 (two-volume set)", ISBN = "0-262-23151-4 (volume two), 0-262-23154-9 (two-volume set)", ISBN = "0-262-23152-2", ISBN = "0-262-23157-3", ISBN = "0-262-53071-6 (paper), 0-262-03144-2 (hard)", ISBN = "0-262-56038-0", ISBN = "0-262-58072-1", ISBN = "0-262-58080-2", ISBN = "0-262-58086-1", ISBN = "0-262-61026-4", ISBN = "0-262-66070-9 (paper)", ISBN = "0-262-66071-7", ISBN = "0-316-08275-9", ISBN = "0-387-53775-9", ISBN = "0-387-70001-3", ISBN = "0-387-90144-2, 3-540-90144-2", ISBN = "0-387-96048-1, 3-540-96048-1", ISBN = "0-387-96115-1 and 3-540-96115-1", ISBN = "0-387-96527-0, 3-540-96527-0", ISBN = "0-387-96598-X (New York), 3-540-96598-X (Berlin)", ISBN = "0-387-96608-0", ISBN = "0-387-96689-7 (USA) and 3-540-96689-7 (Germany)", ISBN = "0-387-96780-X", ISBN = "0-387-96915-2", ISBN = "0-387-97145-9", ISBN = "0-387-97562-4, 3-540-97562-4", ISBN = "0-387-97562-4, 3-540-97562-4", ISBN = "0-387-97592-6, 3-540-97592-6", ISBN = "0-387-97592-6, 3-540-97592-6", ISBN = "0-387-97616-7, 3-540-97616-7", ISBN = "0-387-97621-3", ISBN = "0-387-97622-1, 3-540-97622-1", OPTisbn = "0-393-95924-47", ISBN = "0-393-95926-0", ISBN = "0-394-35678-0", ISBN = "0-394-58640-9", ISBN = "0-394-72625-1", ISBN = "0-415-07858-X", ISBN = "0-425-11690-5", ISBN = "0-442-22888-0", ISBN = "0-442-31946-0", ISBN = "0-442-31946-0", ISBN = "0-444-70521-X", ISBN = "0-444-88013-5", OPTisbn = "0-444-88768-8", ISBN = "0-452-25497-3", ISBN = "0-452-25497-3", ISBN = "0-471-53294-0", ISBN = "0-471-61857-8", ISBN = "0-471-61976-0", ISBN = "0-471-81888-7", ISBN = "0-471-83185-9", ISBN = "0-471-87569-4", ISBN = "0-471-92139-4", ISBN = "0-471-92142-4 (Wiley), 3-519-02109-9 (Teubner)", ISBN = "0-471-92910-7", ISBN = "0-521-30811-9", ISBN = "0-521-37490-1", ISBN = "0-521-37490-1", ISBN = "0-521-38475-3 (hardback), 0-521-38622-5 (paperback)", ISBN = "0-521-39338-8 (hardback), 0-521-39732-4 (paperback)", ISBN = "0-534-09198-9", ISBN = "0-672-48440-4", ISBN = "0-673-38574-4", ISBN = "0-673-38574-4", ISBN = "0-673-39773-4", ISBN = "0-691-04264-0", ISBN = "0-7167-2136-8", ISBN = "0-7458-0005-X", ISBN = "0-7458-0148-X", ISBN = "0-7923-0635-X", ISBN = "0-7923-0635-X", ISBN = "0-7923-0875-1", ISBN = "0-7923-0929-4", ISBN = "0-7923-9045-8", ISBN = "0-8053-1601-9", ISBN = "0-8092-4368-7", ISBN = "0-8162-2060-3", ISBN = "0-8186-8931-5", ISBN = "0-8186-8945-5", ISBN = "0-8218-0053-1", ISBN = "0-8218-2997-1", ISBN = "0-8218-2999-8", ISBN = "0-8230-0732-4", ISBN = "0-8230-1320-0", ISBN = "0-8230-1320-0", ISBN = "0-8230-2122-X", ISBN = "0-8230-2122-X", ISBN = "0-8352-1704-3", ISBN = "0-8352-1704-3", ISBN = "0-85484-056-7", ISBN = "0-85484-059-1", ISBN = "0-85484-085-0", ISBN = "0-86094-166-3", ISBN = "0-87484-717-6", ISBN = "0-87850-064-2", ISBN = "0-88175-096-4", ISBN = "0-88275-642-7", ISBN = "0-88385-063-X", ISBN = "0-88385-063-X", ISBN = "0-89303-424-X", ISBN = "0-89303-556-4", ISBN = "0-89579-252-4", ISBN = "0-89588-396-1", ISBN = "0-89588-396-1", ISBN = "0-89838-235-1", ISBN = "0-89871-227-0", ISBN = "0-89871-260-2", ISBN = "0-89871-270-X", ISBN = "0-89871-270-X", ISBN = "0-89871-285-8", ISBN = "0-89871-285-8", ISBN = "0-89871-286-6", ISBN = "0-89871-294-7", ISBN = "0-89871-294-7", ISBN = "0-911971-76-9", ISBN = "0-911971-67-X", ISBN = "0-911971-69-6", ISBN = "0-911971-72-6", ISBN = "0-912704-57-8", ISBN = "0-914894-65-X", ISBN = "0-914930-13-3", ISBN = "0-918035-03-1", ISBN = "0-932376-02-9", ISBN = "0-932376-02-9", ISBN = "0-937073-80-6", ISBN = "0-937175-24-2", ISBN = "0-937175-34-X", ISBN = "0-937175-35-8", ISBN = "0-937175-38-2", ISBN = "0-937175-39-0", ISBN = "0-937175-40-4", ISBN = "0-937175-49-8", ISBN = "0-937175-59-5", ISBN = "0-937175-70-6", ISBN = "0-937175-75-7", ISBN = "0-937175-80-3", ISBN = "0-937175-82-X", ISBN = "0-937175-84-6", ISBN = "0-937175-85-4", ISBN = "0-937175-86-2", ISBN = "0-938151-12-6", ISBN = "0-941447-00-6", ISBN = "0-9614729-8-7", ISBN = "0-534-09192-X", ISBN = "1-55512-022-9", ISBN = "1-55512-069-5", ISBN = "1-55512-106-3", ISBN = "1-55512-135-7", ISBN = "1-55521-198-4", ISBN = "1-55521-198-4", ISBN = "1-55558-033-5", ISBN = "1-55558-034-3", ISBN = "1-55558-041-6 (Digital Press) and 0-13-152414-3", ISBN = "1-55558-048-3", ISBN = "1-55558-051-3", ISBN = "1-55828-016-2", ISBN = "1-55828-029-4", ISBN = "1-55828-059-6", ISBN = "1-55851-057-5", ISBN = "1-55860-069-8", ISBN = "1-55860-069-8", ISBN = "1-56131-016-6, 1-56131-017-4 (paperback)", ISBN = "1-56347-009-8", ISBN = "1-56592-001-5", ISBN = "1-56592-007-4", ISBN = "1-877751-44-8; 1-877751-52-9; 1-877751-53-7", ISBN = "1-878567-01-2", ISBN = "1-878956-07-8", ISBN = "1-878956-07-8", ISBN = "2-7296-0233-X", ISBN = "2-7296-0233-X", ISBN = "2-87085-194-4", ISBN = "2-87085-194-4", ISBN = "3-209-01061-7", ISBN = "3-209-01165-6", ISBN = "3-486-21173-0", ISBN = "3-515-04808-1", ISBN = "3-519-02279-6", ISBN = "3-519-02488-8", ISBN = "3-519-02499-3", ISBN = "3-519-03047-0", ISBN = "3-519-03507-3", ISBN = "3-540-13920-6, 0-387-13920-6", ISBN = "3-540-16807-9, 0-387-16807-9", ISBN = "3-540-18797-9", ISBN = "3-540-51211-X", ISBN = "3-540-52707-9 and 0-387-52707-9", ISBN = "3-540-54539-5 and 0-387-54539-5", ISBN = "3-540-97003-7", ISBN = "3-7785-1804-6", ISBN = "3-87439-233-3", ISBN = "3-89319-115-1", ISBN = "3-89319-115-1", ISBN = "3-89319-152-6", ISBN = "3-89319-152-6", ISBN = "3-89319-199-2", ISBN = "3-89319-199-2", ISBN = "3-89319-287-5", ISBN = "3-89319-338-3", ISBN = "3-89319-356-1", ISBN = "3-925118-46-2", ISBN = "3-925118-97-7", ISBN = "3-925118-97-7", ISBN = "3-926515-01-5", ISBN = "3-926515-01-5", ISBN = "3-209-01191-5", ISBN = "3-922715-35-4", ISBN = "4-7561-0010-4", ISBN = "4-7561-0405-3", ISBN = "5-02-014712-5", ISBN = "82-90006-07-1", ISBN = "82-90006-09-8", ISBN = "87-550-1635-9", ISBN = "87-550-1636-7", ISBN = "87-550-1637-5", ISBN = "87-550-1638-3", ISBN = "87-550-1639-1", ISBN = "87-7252-089-2", ISBN = "87-7252-089-2", ISBN = "88-08-07838-8", ISBN = "88-203-1931-4", ISBN = "88-203-1932-2", ISBN = "88-371-0583-5", ISBN = "88-85613-20-9", ISBN = "88-85613-28-4", ISBN = "90-6789-151-7", ISBN = "90-247-3220-4", ISBN = "90-6196-357-5", ISBN = "90-6196-357-5", ISBN = "90-6980-015-2", ISBN = "91-7346-218-7", ISBN = "91-7868-226-6", ISBN = "91-7900-417-2", ISBN = "91-7900-635-3", ISBN = "91-7900-753-8", ISBN = "91-7970-241-4", ISBN = "981-02-0915-0", ISBN = "0-201-56882-9", ISBN = "not yet available", ISBN = "", comment = "The following ISBN values have errors in them introduced by perturbing the first digit.", ISBN = "1 241 13267 3", ISBN = "2 500 8022 1", ISBN = "3-85331-623-6", ISBN = "4-913720-72-0", ISBN = "5 948905 72 7", ISBN = "6 948905 76 X", ISBN = "7-03-063892-5", ISBN = "80-7008-845-4", ISBN = "90-70088-45-4", ISBN = "X-07-021623-1", ISBN = "1-07-026751-0", ISBN = "2-07-033508-7", ISBN = "3-07-039006-1 (hardback), 4-07-039002-9 (paperback)", ISBN = "5-07-043109-4", ISBN = "6-07-881645-9", ISBN = "7-070-15557-7", ISBN = "8-08-030713-2", ISBN = "91-20-79062-9", ISBN = "X-12-117645-2", ISBN = "1-12-117650-9", ISBN = "2-12-117650-9", comment = "The following ISBN values have the wrong number of digits.", ISBN = "2", ISBN = "2-1", ISBN = "2-12", ISBN = "2-12-1", ISBN = "2-12-11", ISBN = "2-12-117", ISBN = "2-12-1176", ISBN = "2-12-11765", ISBN = "2-12-117650", ISBN = "2-12-117650-9X", } bibclean-2.11.4.1.orig/testbib3.bok0000644000175200017520000001153505727412730016116 0ustar debiandebian%% Test cases for -fix-names @Article{foo, author = "William {Jones, Jr.} and Robert {Smith, Sr.}", editor = "William {Jones Jr.} and Robert {Smith Sr.}", author = "William {Jones, Sr.} and Robert {Smith, Sr.}", editor = "William {Jones Sr.} and Robert {Smith Sr.}", author = "William {Jones, Jr.} and Robert {Smith, Sr.}", editor = "William {Jones Jr.} and Robert {Smith Sr.}", author = "William {Jones, Sr.} and Robert {Smith, Sr.}", editor = "William {Jones Sr.} and Robert {Smith Sr.}", author = "Ludwig von Beethoven", editor = "Ludwig {von Beethoven}", author = "King {Charles XIII}", editor = "Queen {Elizabeth XXXIV}", } %% Test cases for -fix-font-changes @Article{test1, author = "A. Bominaar and B. Snaar-Jagalska and F. Kesbeke and P. van Haastert", title = "Signal-transducing {G} proteins in {{\it Dictyosteliun Discoideum}}", journal = "??", year = "1989", volume = "27", pages = "369--375", } @Article{test2, author = "A. Bominaar and B. Snaar-Jagalska and F. Kesbeke and P. van Haastert", title = "Signal-transducing {G} proteins in {{\it {D}ictyosteliun {D}iscoideum}}", journal = "??", year = "1989", volume = "27", pages = "369--375", } @Article{test3, author = "A. Bominaar and B. Snaar-Jagalska and F. Kesbeke and P. van Haastert", title = "Signal-transducing {G} proteins in {{\it Dictyosteliun Discoideum}}", journal = "??", year = "1989", volume = "27", pages = "369--375", } %% Test cases for month processing @Article{date-test, month = "13 " # oct, month = "23 " # jan, month = "23 " # jan, month = "3 " # jan, month = apr, month = apr, month = aug, month = aug, month = dec, month = dec, month = feb, month = feb, month = jan, month = "Janu.", month = jan # " 23", month = jan # " 3", month = jan, month = jul, month = jul, month = jun, month = jun, month = mar, month = mar, month = may, month = nov, month = nov, month = nov, month = oct, month = oct, month = sep, month = sep, month = sep, month = "unknown", month = aug, month = jan # " 23", month = jan, month = nov, month = aug # " and " # nov, month = feb # " and " # may, month = may # "/" # jun, } %% Test cases for long string values @Article{ber90, author = "M. J. Berridge and B. V. L. Potter", title = "Inositol trisphosphate analogues induce different oscillatory patterns in {\xenopus} oocytes", journal = "Cell Regulation", year = "1990", volume = "1", pages = "675--681", annote = "calcium dynamics: The different analogues of {\IP{3}} that were tested were {\IP{3}}, Ins(2,4,5)P${}_3$ and Ins(1,3,4,5)P${}_4$. These were injected through a double barrel electrode and the {\Cl} current was then used to measure the {\Ca{}} response. ``The naturally occurring {\IP{3}} produced a large initial transient followed by a single transient or burst of oscillations. By contrast, two analogues ({\IP{3}} and Ins(2,4,5)P${}_3$) produced different oscillatory pattern made up of a short burst of shape transients. $\cdots$ Both analogues failed to induce a response when injected after the initial {\IP{3}}-induced response, indicating that they act on the same intracellular pool of \Ca{} [not necessarily the case]. The existence of different oscillatory patterns suggests that there may be different mechanisms for setting up \Ca{} oscillations. The {\IP{3}} and Ins(2,4,5)P${}_3$ analogues may initiate oscillations through a negative feedback mechanism whereby \Ca{} inhibits its own release. The two-pool model is most likely mechanism to describe the {\IP{3}}-induced oscillations.''", } %%% Test case for bug fix of bibclean 2.10.1: @InProceedings{Barthel94b, author = "Kai Uwe Barthel and J{\"{o}}rg Sch{\"{u}}ttemeyer and Thomas Voy\'{e} and Peter Noll", author = "Kai Uwe Barthel and J{\"{o}}rg Sch{\"{u}}ttemeyer and Thomas Voy\'{e} and Peter Noll", } bibclean-2.11.4.1.orig/testbib6.eok0000644000175200017520000001736606525171464016137 0ustar debiandebian%% "testbib6.org", line 7: Unexpected value in ``month = MAR # "- " # APR''. %% "testbib6.org", line 8: Unexpected value in ``month = MAR # "-" # APR''. %% "testbib6.org", line 9: Unexpected value in ``month = mar # "- " # apr''. %% "testbib6.org", line 10: Unexpected value in ``month = mar # "-" # apr''. %% "testbib6.org", line 12: Unexpected value in ``month = MAR # "-- " # APR''. %% "testbib6.org", line 14: Unexpected value in ``month = mar # "-- " # apr''. %% "testbib6.org", line 22: Unexpected value in ``month = MAR # " \endash{} " # APR''. %% "testbib6.org", line 23: Unexpected value in ``month = MAR # "\endash{} " # APR''. %% "testbib6.org", line 24: Unexpected value in ``month = mar # " \endash{} " # apr''. %% "testbib6.org", line 25: Unexpected value in ``month = mar # "\endash{} " # apr''. %% "testbib6.org", line 27: Unexpected value in ``month = MAR # " \endash " # APR''. %% "testbib6.org", line 29: Unexpected value in ``month = mar # " \endash " # apr''. %% "testbib6.org", line 37: Unexpected value in ``month = mar # "- " # APR''. %% "testbib6.org", line 38: Unexpected value in ``month = mar # "-" # APR''. %% "testbib6.org", line 39: Unexpected value in ``month = mar # "- " # apr''. %% "testbib6.org", line 40: Unexpected value in ``month = mar # "-" # apr''. %% "testbib6.org", line 42: Unexpected value in ``month = mar # "-- " # APR''. %% "testbib6.org", line 44: Unexpected value in ``month = mar # "-- " # apr''. %% "testbib6.org", line 52: Unexpected value in ``month = mar # " \endash{} " # APR''. %% "testbib6.org", line 53: Unexpected value in ``month = mar # "\endash{} " # APR''. %% "testbib6.org", line 54: Unexpected value in ``month = mar # " \endash{} " # apr''. %% "testbib6.org", line 55: Unexpected value in ``month = mar # "\endash{} " # apr''. %% "testbib6.org", line 57: Unexpected value in ``month = mar # " \endash " # APR''. %% "testbib6.org", line 59: Unexpected value in ``month = mar # " \endash " # apr''. %% "testbib6.org", line 67: Unexpected value in ``month = MAR # "- " # apr''. %% "testbib6.org", line 68: Unexpected value in ``month = MAR # "-" # apr''. %% "testbib6.org", line 69: Unexpected value in ``month = mar # "- " # apr''. %% "testbib6.org", line 70: Unexpected value in ``month = mar # "-" # apr''. %% "testbib6.org", line 72: Unexpected value in ``month = MAR # "-- " # apr''. %% "testbib6.org", line 74: Unexpected value in ``month = mar # "-- " # apr''. %% "testbib6.org", line 82: Unexpected value in ``month = MAR # " \endash{} " # apr''. %% "testbib6.org", line 83: Unexpected value in ``month = MAR # "\endash{} " # apr''. %% "testbib6.org", line 84: Unexpected value in ``month = mar # " \endash{} " # apr''. %% "testbib6.org", line 85: Unexpected value in ``month = mar # "\endash{} " # apr''. %% "testbib6.org", line 87: Unexpected value in ``month = MAR # " \endash " # apr''. %% "testbib6.org", line 89: Unexpected value in ``month = mar # " \endash " # apr''. %% "testbib6.org", line 97: Unexpected value in ``month = mar # "- " # apr''. %% "testbib6.org", line 98: Unexpected value in ``month = mar # "-" # apr''. %% "testbib6.org", line 99: Unexpected value in ``month = mar # "- " # apr''. %% "testbib6.org", line 100: Unexpected value in ``month = mar # "-" # apr''. %% "testbib6.org", line 102: Unexpected value in ``month = mar # "-- " # apr''. %% "testbib6.org", line 104: Unexpected value in ``month = mar # "-- " # apr''. %% "testbib6.org", line 112: Unexpected value in ``month = mar # " \endash{} " # apr''. %% "testbib6.org", line 113: Unexpected value in ``month = mar # "\endash{} " # apr''. %% "testbib6.org", line 114: Unexpected value in ``month = mar # " \endash{} " # apr''. %% "testbib6.org", line 115: Unexpected value in ``month = mar # "\endash{} " # apr''. %% "testbib6.org", line 117: Unexpected value in ``month = mar # " \endash " # apr''. %% "testbib6.org", line 119: Unexpected value in ``month = mar # " \endash " # apr''. %% "testbib6.org", line 127: Unexpected value in ``month = MAR # "- " # APR''. %% "testbib6.org", line 128: Unexpected value in ``month = MAR # "-" # APR''. %% "testbib6.org", line 129: Unexpected value in ``month = mar # "- " # apr''. %% "testbib6.org", line 130: Unexpected value in ``month = mar # "-" # apr''. %% "testbib6.org", line 132: Unexpected value in ``month = MAR # "-- " # APR''. %% "testbib6.org", line 134: Unexpected value in ``month = mar # "-- " # apr''. %% "testbib6.org", line 142: Unexpected value in ``month = MAR # " \endash{} " # APR''. %% "testbib6.org", line 143: Unexpected value in ``month = MAR # "\endash{} " # APR''. %% "testbib6.org", line 144: Unexpected value in ``month = mar # " \endash{} " # apr''. %% "testbib6.org", line 145: Unexpected value in ``month = mar # "\endash{} " # apr''. %% "testbib6.org", line 147: Unexpected value in ``month = MAR # " \endash " # APR''. %% "testbib6.org", line 149: Unexpected value in ``month = mar # " \endash " # apr''. %% "testbib6.org", line 157: Unexpected value in ``month = mar # "- " # APR''. %% "testbib6.org", line 158: Unexpected value in ``month = mar # "-" # APR''. %% "testbib6.org", line 159: Unexpected value in ``month = mar # "- " # apr''. %% "testbib6.org", line 160: Unexpected value in ``month = mar # "-" # apr''. %% "testbib6.org", line 162: Unexpected value in ``month = mar # "-- " # APR''. %% "testbib6.org", line 164: Unexpected value in ``month = mar # "-- " # apr''. %% "testbib6.org", line 172: Unexpected value in ``month = mar # " \endash{} " # APR''. %% "testbib6.org", line 173: Unexpected value in ``month = mar # "\endash{} " # APR''. %% "testbib6.org", line 174: Unexpected value in ``month = mar # " \endash{} " # apr''. %% "testbib6.org", line 175: Unexpected value in ``month = mar # "\endash{} " # apr''. %% "testbib6.org", line 177: Unexpected value in ``month = mar # " \endash " # APR''. %% "testbib6.org", line 179: Unexpected value in ``month = mar # " \endash " # apr''. %% "testbib6.org", line 187: Unexpected value in ``month = MAR # "- " # apr''. %% "testbib6.org", line 188: Unexpected value in ``month = MAR # "-" # apr''. %% "testbib6.org", line 189: Unexpected value in ``month = mar # "- " # apr''. %% "testbib6.org", line 190: Unexpected value in ``month = mar # "-" # apr''. %% "testbib6.org", line 192: Unexpected value in ``month = MAR # "-- " # apr''. %% "testbib6.org", line 194: Unexpected value in ``month = mar # "-- " # apr''. %% "testbib6.org", line 202: Unexpected value in ``month = MAR # " \endash{} " # apr''. %% "testbib6.org", line 203: Unexpected value in ``month = MAR # "\endash{} " # apr''. %% "testbib6.org", line 204: Unexpected value in ``month = mar # " \endash{} " # apr''. %% "testbib6.org", line 205: Unexpected value in ``month = mar # "\endash{} " # apr''. %% "testbib6.org", line 207: Unexpected value in ``month = MAR # " \endash " # apr''. %% "testbib6.org", line 209: Unexpected value in ``month = mar # " \endash " # apr''. %% "testbib6.org", line 217: Unexpected value in ``month = mar # "- " # apr''. %% "testbib6.org", line 218: Unexpected value in ``month = mar # "-" # apr''. %% "testbib6.org", line 219: Unexpected value in ``month = mar # "- " # apr''. %% "testbib6.org", line 220: Unexpected value in ``month = mar # "-" # apr''. %% "testbib6.org", line 222: Unexpected value in ``month = mar # "-- " # apr''. %% "testbib6.org", line 224: Unexpected value in ``month = mar # "-- " # apr''. %% "testbib6.org", line 232: Unexpected value in ``month = mar # " \endash{} " # apr''. %% "testbib6.org", line 233: Unexpected value in ``month = mar # "\endash{} " # apr''. %% "testbib6.org", line 234: Unexpected value in ``month = mar # " \endash{} " # apr''. %% "testbib6.org", line 235: Unexpected value in ``month = mar # "\endash{} " # apr''. %% "testbib6.org", line 237: Unexpected value in ``month = mar # " \endash " # apr''. %% "testbib6.org", line 239: Unexpected value in ``month = mar # " \endash " # apr''. bibclean-2.11.4.1.orig/bibclean.pdf0000644000175200017520000013720007133432416016126 0ustar debiandebian%PDF-1.1 %âãÏÓ 2 0 obj << /Length 4546 /Filter /LZWDecode >> stream €Š€¡yp ˆ †`PÄ` ‡Ãá¸Ê(4B ¨yœB,ärœ$ÎsKÈQŒ(!HD2a‚N. %ÁH€RT5†ƒpØf3D!DI|Æg5›Îgb™ý I„ÂÁCšT>¹Š åHÙlPNŒ†‚ 4Š).• PH4" ‰Äa+€l9¤ÙBÚ Ã Y—apð£¸*Ìb4˜ŒfÃ)„Ü . †£QÀäe:9ãI¸è Ë3ΘÂxÍS¬@BÈ•7ñpäPeêD3Ë"ed FÃI¼Îr0œ ‘H·5DŠ †¡‡’a9ò3#¦Pçp¹]+zÝtA_‹ †ã‘t[*K…2É8ž( bH¦ª¡«Òø½ á³äú£I{”ɲ£t‚ êÊ…ÁÀl ï˜ü1¡@· ˆÏZ´¢¡Àf¥ Š`P̳cê: xåB¯d0¬Pê–Ž>¬ãò—‹±€õ.ÊÐb0TY¥¬t^Í£(åÃDl†a¸PŽsй ¨Ì,¡(¡¨bÉé{ÆòŒ£pÂ6Œ±Ä“ ¨²ì}È Ô¢H±$L¼I’t<–Hr›6Ùƒ„í3†SHf®Pê$ýDÐ2:¯;¡´*“JÏá<`‡á=öR!fÒ‘ý-!?TÊ­Ó’\›OÕÓýFÒ# [7²‘$ÍC!¼S6Êo#)9N•:µ (Á¼÷ °#¬ú(r,Éo´]#VtÅt=­xZ;#$iaS¨\a„Ùs ×ÍBá sVÏ•|ÿYI=mCW4MF-ÃxZ.Œ.`Î7£(â:â/=4ºÌáÀ\“õ+ àw ö`õÆ(¬Ø^‡¶M ÖŽÁJb#¨Êó®3&8öcרpÎdt½c“Sx5=6¿ v[*a˜pº2 ¬ è2â£hàÑf™²×œçséÉRZ‘UY¬Ž†xðs~ öä>DT9EVF]©XÀà7Žuë› c{"جޙ’SEi¥VúfYsê8|Þ<£2ÒËM0ZÙ2Ã>Þìtãè’3¢Ö'qe<–¨eâï.׃ ÓŒß`W†ªG£uÛ·!„e}›7ÊöÁ“ÉÌY› NÍZ–µVöA¹[É_»…×&õÚjB<­t⃛E`úxï¸Ú%]Æhþ6Q¥ÔžòݨkkÆü2‡ÀiC(bKà߆ÖÏJtÅÕ:·îñãxïaD4ç)`e€ ´8å™´ 2°=±A$Î}«¨‚ÍѵØQÁä[ku·V6¸›ÂåGïü¼ÈÍá3Ц†Ó–Öœ% n޳ô”ªAÀ9ˆLü@¥ÒÉ 4FÓBجáÓÊ«”Ì–T¨Hõ’”d ²Ñ_BSB•™³œ ѵҿ%² #£Ùm`Éê£Æ†÷áãt’¨ò·•&]¬2¡‘Üåz¯Þrp™’„­1àj´¦Š}”ñÝÇÇ—”ôjSˆ6†øÍb@-?æèƒ$¿,!S—ó5”$°r 4»q²õNËùX›£è]gã»ÕäÈ[|šly E©°ÜÖý’ëšaC¡çBÊk¼8'JÝéÉtÃ4?eD_ƒnÊVÄWjá4ÉšAιnž¨8dqQ:…=ª£“Tt3‡'Д ©èb‚—ÕÍ K¢Ã+GX1ðb—i;áðÒ·×z¤hx2Zd½-±ºÔ¡ <[)†<È·Òr›é±¤Ê"°\uU¹E=n «%cÝ -­ Éc7²‹ðoFuÙøžÆØQi;¨ˆe°6ÀAMÕ`%ŒË“C N¦hgvÕÍPt æ YÌÅÎA” !’›™Ó>åìÁé €©).^(Àæ5zf,aÈz6¼3À Wè( S^•Lu©k3æy§èJq©„ƨ҇fÁß $ ð0ê/ååa¸7_ãNßp!Ÿ5tÖï&ðÊ.‰sºi<ãcK0O2áY›*²ØHB°M f 7¢dAP`€"ð¦ 4¹3ŽæÞ{Ózҥ퀢÷ÙÄ– ’Ð)-hHë|Ž–šÛƒD”.ómó ‘¯ œœ®wƒž[a£cì†~BȘ¹°PÁkb!òMäâ›™­¼'Ϊ®‚’† f~-dúͼuy¯Fg½š'"S¯”-‰—¾Ž_à@Ùü !ä”ðÆs§0zÂøe“•¥ZWˆ¡•I‚€ˆB˜C A$(@’ËBG/%(‰âD >å8Egë!€"ÌŽ·‘ƒKï¡¡4r ûàÌmÐ">!äW§¬g6­&H] uTõAÌ×Ü'ßg‚ƒt‘Ê!^}K–è[÷‚óCD@úïj³Rv U¶Ö×9„1Ìþ¬Uý42Õ`‰{î –ˆ:WwÊ kÒm0Œ|Ť3±OpúRÐ-°VÜp™‰µ%eÿ–ÃtSņ¨åÜt‘Ô䜘ߚ`äu,Éj(¨l®gIðbR`2¡û<³Ã\l íT6Y@mÒŸ(( &žÚpÄr©á¸7 ª5pÆiÌðo‰á´”]°é6Ð åÄEú&Ø[] bö)íîýå¢_»Êñ#¯ÈÍî7Žûޯߌt°©À¸!ó^k&ucÐw XoNŽé:[:À» È·nr€9ÄãæO¦CM‹¸tÕGÓWx”¦ ­{>ú{ˆ˜5UKÏÜøMÙåü?^~/zoØ{¾™ljãL5j\®Î¬$]„hµàÜN®S†áÎì|ãÈj£T @@ìlDw§ªC‰âJ ä3¤¬™oÄŰxWŒâm`f¡Çè诸ðÀPwF"€ælr:ÓàÎË Ò àÐ4îZæNÝL2ä–ZÆÌ3†äµH¸^Ä6é„§ ‹ 0ÂÖ7J¤gÄÂ/T©K¶5,º4«„9.`6ɦàæÀ uKŠ<-* ˜£kD:DæƒhFQðÇJ”çN°î ÀÐ2+¾oàä;£ 9ƒD7g8ärI†qNºlQª®&ÎÌ sKx ÑZÓ䮬¢¬ «€ä¬Ò `@]1‹R;ð`˜.ã ˜¬0„Ï'8lÌÂr$5N;Ö2Ãlå Á&t5R¢¸mqÐ4ñ^9 \Ç„4¦¨5Í"ÔŒ6ãqÁ C ñ¸31¼[‘Á#‚ý£°c)ÒÈ5h ÿ¦®À€È L¹.j9£ž:#§.’0¾ÃŒgr̺²ðÆŸ-â'£tGŒî» ðÉQ{.„´Fgj.p óG‚)1n>ƒìïpmz’ÊxSVnm… — Ð[1t¥ÎÌ̽TqGTx€]HƒoI4—4…K ÁIdÇsGt»Kë3TÆ-rl§q¬Èó³?“¸4cf2ã¹c8®Ü„§DÊlëê½sÖ¬Û9óà˱ÚN Z;lÇ>§HÃsµO šÉR1*2½EQCcQŒÿQÒR †¿,Z¿sK ãÜÛ“d ¸(p ܺ!î”^I +Œù o•›pÓWðÙXSƒòì¥Ëš· tÏ ²l>Œœu0^~à`%í-²w?ÂÖ 3<ÉŠz‡zW£ÌÇþgUËË% jFâÔKëi@¥æ¯Q/A¬vÏß3Í/pìÔR_TUðþnÒìÃNÇTkIÏD¶Êo#”é#Äù-:éÓ“Ùƒ|  Ú7ÕþdÂ-66Íé‘HÃ|sãÀÇiQ ÄÊôNƒ’2.m1.s1ƒ²}Àò<Ôæ—Rp˜ Ý5µ2ÑÀ† í^ Ìp@@„ Ã0ëCLJÄäÒ1~ oÎ;`ä5@„ àÞ6ÀPä¬'‘„@@§iBr 6šVžpv£juX d¬wk]k`ÚÎ'I&ñv>¥ë?LíQ½1̯TU=,$»8æçTÀÒ Ì®ÐîRì]RYI2ø}̺ Ö¸FìþämV(€g##U$Í<4ö-.º–%-Ž<ã—PD#¦:Dã:RU´ôS¤¶‹[e•Ø9G–gj.0§ƒo6q¿V«F »FAí⯠(I¤3 ´FnˆB'z¬‡z°HsFnqŠW£¹8­Ëuê5ö»·`2ðp&µ/%^ ç\Ñ+ÃÀ–ÅÄ:Ɇ"2èÄ27{$2(êöEât'ªéT‹ mAm†2 É% ߀¢¥¢C#Ô  ð¥ÈÖâ«J+JÚm§ºoX8\(ÁŽ!ã Ÿ=€B*m¸P*xVÔ¥ …Å9@Ô ãK‚hc‚ØS‡(ñc…îj·«€B0XêYˆ¸3‡…Ìæ¶°€XFO »†Ø£‡§‰8z2$lj„o‹ Gg»ˆ˜½B³D–ZD×b\9T!ø…Š{‚øUƒ#åŽ%̻ƮMì[€En¯cXï‘€Øpæj(Cº<…‘@ "O€Mº¬ÔIˆ³äí(Øåwˆjò³#Tc+‡·›rY )>6W€Ž Àª%%Ò i˜[ŠÛ4ëJÑy Р<‚ŠM”vqõ S_VâÛ®†+™‚µ3Wï™ ïŸX“~µpèýÌ ÿoÍ«‹dÔ˜Ž!N=íR/hpÕªÖàœ@xÍ6ø õdC/ I•®,lìoD}‰É+cWbÊ­6˘3õ|oæ;ËŒ +‘+ë–¹­& ñ”R¿e#cdí+@ô"wíæ_ß„T iE¢^èzp&& $Þë è±ñlcŤ/·ýtòÔcäÕxBÌ+ZµòR™uD“s’ëðú¶ä%—Ã} ÐÞókúFv^9sç†ä–Èn=L²œlpÁpÿ|àîóö6qíŒq[%WôVäºS$J# CcìÎÙñ/‘&²ˆb[ P úo“ÏAtvoñe£¼&vì<#B¹°;ÃÆ¹(>-"×QʔЋ² ;²9FޤW·ì¹ÀÊÒ€DeàE>Züÿ4¢Z¾­¢úΤ¤Ä”Ù: ¾2å#Geæ²üÛÇ9Zà@ ¹þŽMÒÑÌ:(î²&Ä¢ endstream endobj 3 0 obj << /ProcSet [/PDF /Text ] /Font << /F4 4 0 R /F6 5 0 R /F8 6 0 R >> /ExtGState << /GS1 7 0 R >> >> endobj 10 0 obj << /Length 4075 /Filter /LZWDecode >> stream €Š€¡yp ˆ †`PÄ` ‡Ãá¸Ê(4B ¨yœB,ärœ$ÎsKÈQŒ(!HD2a‚N. %ÁH€RT5†ƒpØf3D!DI|Æg5›Îgb™ýZ3‹†zM^‹KŽ †#œ(ï/. †#S œ@t7Õ`„hÌ& ؆ƒ8<<©L®4 œí Ö†#qÍ*ÿa±ŒîÖrØ \)¬‚‚0¦Ö(7œ„3©ŒÐ 7œ†“y¸æ,·š ¢a„ætÑ™Nš³u¸Éº2œ¦“q–PtÙ-6»h€ì) Ea×fu9™L™|Í’Ä(* 2ŒÒg7ycC„ݸ;ìÂ’éP” ,Ck€ZÄ¢Ìzü³´ SX×äÙºƒ˜ÞÑŽ(Æõ-A£´8ÃÒÕºƒHô0µmk• Ž3”;-›2®H*’ÃKP\†*æ2¢Hœ$Š‚H‚& "Ђ‡.”z'‰ÁŒ$¦¢›èû0¨BÄ1!¨n£ÆéxÚ÷®£r1Ä#rxË°Šºò»üijKˆ‡SP©<-œJ0ŒŽ"Ü4#ƒäØÄòÛÏC«ÆÙ%sQDC0ä7°LF†‘(Ü0­œ¶<„f2 ã¨ÅŒ€ÌЄ 8DHÄ4ƒHéNõй!ïø]©ʈâp«à @( ☒ÕOš†9ìøÊ÷Àã˜\Ÿ®ˆ`ð ÀY'¾ñt¤»­uØnþK!BÒ­ƒ«ÐŨ5Ɔ/!¸`/«§bÞ1|¦†¨¡ÈfƯÌÖàã Ü4^ " Ã_ïÔã|K,¬ÙŒ£ è:N{¢éÒã.ú¾öËõ"ÜóZŠƒÀJÐ`±³~ð!Ŷ¸æÁE±œŒ.…·fãMfŒÎÄV®E0µðÀÍI=tµ0ÙÓÌó¤3¸‰F’ÓŒ!ù?Zm…d ®ÃqOPOÏC;60ÅNk³¼òÞÁ#Ü eu^%™“*êŽQ¶­^9hjÁDXÏÛ üóÌ 9V9 €Ê áu¿’.k­ÿJ+A²+t…ã Ú8ámN7…ÕxÅxâ ¸j#¤Õ‚¥øj‚‚ó×"´X%ôu=_[Wvšñ•‡7ËË_¾VM]‡¢»6e˜3£vÝã—“!’оuzý­K2^"'¬ÌÊoÈÊ…¾~_ ߦÅi‚tƒÂ²o/L²ÊÞÓqZ¨ÑõV¶¤ c g” °èC“ñUFüî.Àrwš7A¥L¨—ã Á@xq(IwFl áÉL!‚PvUd\p!‘¼…@TXA”i† ¡G)0 B  aÕLžõZˆ¡ˆíT†ó~͉å5)„E’âgóBDÍt;™å¶TápŒ±_W!!ØìS+mï-j¶ãj‘9‘¥ÄŒûâÏY•&ÓeX<3ÀàÐ=â° hl Ἳǔ~°51k¥¨­6¦÷×ùY, óð¤vƒK‹ÅÞ¯G˜E i·‚Iݯ$a*É[ƒ0ȵ¾ P\!"O'¶1©5*Mñ &™¤+Ù "­ˆdêOpÞÓßÔwGàâ°caƒ-쌷åö±¤i:q=6Hx[N4E/`¹#"Q Ú9åÎ&D›õŒ©Íï;&Œ<›pÊN8hP4ÉŸ8…¥$ÛìO!™Ãž¸æ˜ ~ÓE Éxç%ò0Ñ+ƒUÓ6¥”.Ðþ<'ž™&êþ.ëd¼¾Tk+^Éh{fÈ6 ]åP5`k¦Êw>ïÞ Ä{`þ³Ê—8AÅV|ì¾3 Pû›î’ J² ,Ã5ÎÍRbA€0™u>Õ»Tƒà¢WÈ8Ìàø2щx¶ÃK‡‘-Ñ®‹oÛõ *07ç‚ -è<ä8Vjdå¡*ö5”ÀÑçüéKa¹.ÏuXÎ1°„h®'¸˜R|´84°îÄT#u'ÌD—¡­ÉRøÞ»+_Lâ+ [1f£Ê/)¥ò×%(Ô”ÍuU-s¼ÙÇdYM >’H¥‰ ®³îžm#¨u¤* p1 + Ò‡Pü„˜±l MØ “Ý´Hk¸ÛoŽU,i°¾ƒfÂwélâÈ6Aî,u:‡çLÁH©gH9Ò×Ajµ7ëc Þ²N½¨qXá–1IB§€‹ü›+ÇyQÃ¥%ÜÛ: èi.2¡A!–¦h s@( ŽÌ> r Ò¼%¥¢6P5³Á…j…è°fbÄ ñæjY!Ÿý Á˜“ô…c0NMÒàÍ“‚„£Ž“›”בå;6ad³ÐT%Úx,…0HõhTºj©# F®d,Àªpn›(~_ª`Ô2õÒS‘ÐP ¡Q'kUþì×=_³…ˆµcÈ:vPTôr¡¦ »QmKZ'H2†Ì0`õ¿ˆèÐÆ2¦ùgqk,ƒ°MšŠIàŽEa¶"âÐ]-1 -÷²X6Ñ&)¶äß!ß¿ßv›³:Ǿw"Vðç#1"´7k¡'O°®TCÑÝøá³0è ²Ü6yO å^IÅMš—S*¥E6ƒL{®‚ÆDâΤ]äÌÕS§Vª&OPh”r€…¿¢›C;\7&îŠÜš³™üÑ5±ÔÜ`Ú'…â¾ÂFd˜"hM‘Ú;¿TŠÚ)ÆCŒ”kƒú ¼ÚW_±ABîPA–žQ&P9q©#[oðk X©–uÁ;†él Á@cÎ’ÿƒLW[ˆUGabé,[w|QY/…–ø¿ ¯n4:;üÝ skܧeß‚åÖÂÚ3Ž%T4PäŠÍ¿Ÿa±¦¢˜IØœû³_ÅÜ#”vQúAHið”’’`EIÞÌEkRé¹w4¹-œ<½ÈÎ9E€ÖÕ‚ç˜/<«½2¹í.Ķ2ˆd9ƒg»@fÃ¥Ò Ðz/BWe(¯B^ôÀÊÇÍœ.ãô¡`p×FZ,gDœÃ8IúS…b8hà5ÜôV#Šž¯ôÛ‹v"‚,æè¸L‚i¨FC$Vü°M,Ç$Þ^Î8fcˆÂc«’Y«n¥ÀÜòC>ÜíB-Ð[ Дnºpì6`æa€ê …Œ0FÎ6nn7£´;‡D(ƒ¤ èt6Ä0‘î0’ƒ­jÛä&:€[äÞ¥` …ªà¥8Af4¨†Ò§†> Ïnâè6ƒˆ6l”9ŠðD ã+:dâkz£ëh¬‘ ¦%=¥XUåbVpÊzZ­GÄòê ˜ ¥<4ENÄbâcåjn‡ô¤DæDY âÂ+gÈcÚáРãÄ(R„.C#~Bd¶ ƒ` äÀKÂr6ä¨Éêi@`'‘–4L¼3àðO$‰‘œÑ¢OJpÐË"ØÍT2 ³èl» `ÆäéÂW`PÑ¢0(‹JC‚AåP8£<Ó ÎU£ Ó¥¢Ó§Ó§ÔÇM; è¼CL&‹#€XÉÐS%€6VC´¶Ñ\-Hìi(ÏeÔ{oîÿ/ö±­Jª‚ÈÕ$ ô(€nM0$¯b°Ú΀森m°NZcHAe7žƒÖÜ Èî½!…Xš$ÐJ>~&zsƒ2WhŒõäœËn7¤KŠýÅr{ô ãå…ÿìÐvíw$%Ø0PÞ{ÂÆqCvO åo'¢#Óƒ¬6àç,Bî/,Z)ÓP²ëäFg›&# ÈQ(AàÂLQ#hŠR=©î=è1ð{Åžîp"ßéÎËÒ 1j8…°jÐ’ª¡Ã~ï© cqQhF”<²,·Æ6,‡ì‘ ñ..„®¦–@éJ>òº½GŸ,§/ˆ*(¢ù0%\ñ±“F 檫þ²#&%êD‡Åf‹0vOCa5Ƌ좥jÄe:SãZp@ÜÜÄ7º°3rïÊÖé–ÇL¯kD,ªcZ;&4Z`èÜÑF´%Πæ3â  f tnƒ ÀZTcÜ eR¦PVÂcs@0†SKÛÓXàQkåÜçdºÈvšh92ñ¤/$õ+3ä‰B2‹Z'÷.#zˆ­Šv€P ï€V£²ÔCï(95Œ‹õ¨^—Oj¦#gYj$ŠŒÝ)<[hÀAUÖmÆà<Ò±3æÃ…¶ŽùYŽþ€tÅ(+2`#(0UT1MÚ¯ÝSkÌ…³FœEtþ†f`õD àZ £LB@Ö¥¢‘õ£/o¸yUV]ŽÞ-b’¡ÕeV€bl95pÂËT“Uz?õ~45ƒ)'ÜSƒdˆÆ5`ÆÂ#v8'âK`è4Ê*ƒ ƒZòCFó[m*‡Î(6f(:4(!© knŠèL‚#B%rrç26À,ãr/±ÅÊy©Ê ó)`@ @F`@D¿Gf?€oU©^Or@iuWXgC0Î&²p$ð5Ÿr7'e ^òSHÂŒœ×6·@zü¤âelòýW@™wD¿GÄ,‹ü³ˆ×ulâñ¬Éˆ¼4‘dŠ(7¦´Oè 2N<§(ÂdböT%‹Fe²ßæ??HÖ<#Ëh Æ t¤%°¹³ÜSʧÎZ6î[nô &žli ƒJDÂàAë–Çô^Ô|—c°iµBVïoCñoì%ÄÞ²6žƒ¤ôË%Pk¨ÃlЦ·G\V)w<„øÈ)>(²B¾îŒ%Bæ‡âPh­+&Ɔçõ‡@+M Fjm •ƒˆ×Xl1,L6@¯öFïÓYd÷+iC7z_W7/p1 +pzÊx'h2#ü?Ms,í,ûÖ§¦Ž|O¼v.€rÅj8 P «f›AOZ(øîFò¢ endstream endobj 11 0 obj << /ProcSet [/PDF /Text ] /Font << /F4 4 0 R /F6 5 0 R /F8 6 0 R >> /ExtGState << /GS1 7 0 R >> >> endobj 13 0 obj << /Length 4222 /Filter /LZWDecode >> stream €Š€¡yp ˆ †`PÄ` ‡Ãá¸Ê(4B ¨yœB,ärœ$ÎsKÈQŒ(!HD2a‚N. %ÁH€RT5†ƒpØf3D!DI|Æg5›Îgb™ý I„ÂÁBјÜ\0£Òk”ZX(¶(. †£RÙ¸Þ-.™ ¦Ã)ÐÊ-2›NCÈ´ì)‡ &锿).• PH4" Œ¨£A¨Î”T¦QÆX¨w³ ⚸b(4  Q”@p7œõ&‘M¨QE\ê|-ÜŠ Æó‘´X 9^q¨hƾ9 rôÁnks-—›ÎÚê¬6‹„Ãó¤ºÏƒ6-#¥ÌÈ/¿í°x]y„Òr”pÎB¹ Ò1µmh@ø·O›\4¥Üå±n$†Áˆr8r,ñ³A¸o ³í ò½!æ:CHÜ3…ÁHZÃApr òQBæ8 ëÓéDÃ8@:ŽÄ4ŒC`Ò7ŒãÂ8?Ì0@3Œ£pË'.à @3CxÛB TŽ4ÁÀq ´ :ìÞ…Àè £#Râ5øØ0®Ã˜\rðà0¹-dd ëÜ–7?HÑ0*ìr´(£"ð¬«:Òµ­«xº90Ãv6ì`ÛÔMØZ'Š R†A@Z8S<»Ìm RA’ ÂêbÑ]ƒÃ î ¨:²†2AˆfBo2…M!Bä9Œq(Å8ÈËBÛáHlÝE6øP߆nˆ2ŒÕ(ÃÕ##6:¢öZ3g%ëuˆÆÞNp`Ãnš_¨ b°Ç«alµÌ(çÈ;Ç_Ó ràõ†‹¥^ضc|‚Ø´s ÉÌ£¥|(`féC«;FÒ´ôU×6 èÚ6ÍÃtÞ8-û‚ý8ÒžpÝgMÜÙŸ7Kèû.’Ö0º5øæo6àÞœ â]ô‘•ò‡\˜{¡ÓvoÀº*ˆè½›ôvÏYìâ§Á–*°MBËAj;%]MƒCYËYD7A"FHåºåÍØvN5X›ªUNËR.ÔxB\f¬^MHÙ@Éxçël æÌ6§ƒ]XR‘ýJæ¹èGÔÜ“±Lˆx’(>+3,MÔ¬’4 ‹em àwK¨ž¦+ßrÓ)vŽçÀ è~Rìæ¸õr䤧$B}á”8˜WÚó–ö]îTÈ0°d ܇Há‰TH—”3k)ÇpÓNAn8§ <Ð Ÿh¡C‡“9áÆ8PníX›Ë7B°[° “3 sãg·ø™QeÏÆ¦ "ünqÎ¥xzªë»Ì}ˆtÄŽENòHë=‘Ì1Ç FÁPê›åÐ ¢¡ÕÇ”%MƬÔU¤c²Ñ~Í4ùÍ%$Äœ”4,¯ezÇH)ˆÏ5V§ÊzÃdi*‚T ]×蘹¢Ú‚ Øg8û ½ 9UÔ…z¦²é-(ÌÃk’%’‰Ï?2Œš xI—{ÐÕ"`×S~ôJÖ¿|¨f=.v‡qW†Â“®¾ :#S†RGdÍ 3\YZÈéÃÔ¤¼ÛŸWŽ[u+¤,„tÛIúQ}æÉ¡¦'Ù–_$g\ï~&|úVWøñé×öyS#+[ùVì3÷µZMIá£lÍ&nšy®ÏÎù´¨“Tú¦k¤zô°˜³úƒ -n•ÓÓ7U:pÇ_”Ü副õ‡Ò”±Yiš„õëséQ\…xRôl¢&zÄÈ:5ÅF¨|Q^r;_‡ ~z–߉‡]½±²$ÕãtLØXüj´ÈaƃŠ´nצûù%-ˆ/±Ž$ß÷l° q¬C˜h}±-{–hrf[íÁ ËX…“`e`u|lGngóÓ*ü|Üfi3™å£V •´.Gðÿ  .ü§–ÖEr‚ï7Ú<òoì(Îašå®·d®G¯”?àÊ8ê`9ÊOãîfoÆ£Pƒˆ»©z€oü{*n Hîm.”& à¦RCf$Z ¦¨ã\}‡ÜàFe€ODÄÇÒò%@ ÃŽÆÇ´/d¶NŒ`%Þþ ˆ/€àõÊ€öŠ„~°?£þ@.*ßdhZ`Ò ä¬KJ°»€Ên0DO”GD´‚@@#\ àÞ»èâQð8®¹‚ÎoÔokÆ™ì€ËÐWÇrkò;Åþ`&QÎQ¥ä8¼WL6s‰Fbe.tE4î‹nfããPè¤gf…o 2/n4'vÙÆdª†¤xOÄg¨þÙÆ€—,ƪIxdþ{G¢ ÊÊ—~D°Ä8jr«h,¦åÖìãö¶îð9‡ô#,:ŠLD¥àÓd÷ Fô …Û ¥äac6CG.ÿ¥úþÂÀqèØ¡ör‰ž8 z´d!N b‘ bå€tǬmÑ1ê2#' «+Ÿ¦bwÑ0x*ggŒ8uð8‚äSŽPã‘ÐÃ`híâ_o”Sa$U…–pæÒÐÑžã7E|N$ç Ñ!Ó"Eò–ǶA ®ôc’Kæ adÌ”¦À®ê ;b|¯ƒ¾4†B^ò)ÒÒÉöWBqv4ÎÛ#BŤ¶)*Ç+†glxÕåþÖ ôJàÞ8çš¶jncðMñÆJDé1~ ‚PZãô{h5*’8ngå î]׆ø9‰œð&:â%ñ™¦Cç4ÊjN{æa‚†Ã:r S"àä®Å Ü¨¼{’ Q¤ïh7 dá\©ñ- ˆf£gi‘ì8G“ ÊVê Ê âíE¶kx¶@ºkCd.Q!0Šm`BÎ’„ضdâvÜšÍ såH>C øå%&ø3#LnXµDHH2‚{y(‡‡(É+‹ÂtEEì–B};ä j¼„«˜(s®7gÚPðuƒ\UGäÃ+ÎWkh†±â‚R*‰?3˜YO¹ë1;àn5ÎÃ6g,Ã%˜RS–4 ÎT³ A@\‹Ó|Ï%p+ªš¢'r4/emzU°ýÅB8(øJ´zBQ4³N«d–étD$Lÿ'¢}P4O¢im÷ej…Ô9B.œ+,>þÄÍ2@Q0Q ÊNï>¶g´} æ8ï’Pá1Ô7`æ²–‚x8ä” äðôÃ\™dþK‰J¦´,¦ÙI¹,l¢‰è¦¹î¸J«M„œµÃÞ«CjÕJº9$µF rŒ9(05`ί¼/"ëMŽÊNE¨9'ªPN9‹™†KOóOHËè§ P PªI†¿)`Èn‡êþË· ³U/"Hç¬z¢PÏÍZó¨{P¤€óEP-ÚÜí4è܆Î)£º® è¦|£,WIb”â6¯Hl„¢$!õF4Ê  °•¦±úWŽB”%óøL‹*" &> /ExtGState << /GS1 7 0 R >> >> endobj 16 0 obj << /Length 4340 /Filter /LZWDecode >> stream €Š€¡yp ˆ †`PÄ` ‡Ãá¸Ê(4B ¨yœB,ärœ$ÎsKÈQŒ(!HD2a‚N. %ÁH€RT5†ƒpØf3D!DI|Æg5›Îgb™ýZ2 †c½$Z3¢Òã‚èpÔo ;‚‹bƒ°¤d5M‡S(€æt9MÒqÈÊm0Þ¥SqÊr—J„¨!“ …ÃF4Q¸Î*S#IˆÆl2˜MÕ\l! ° †#>b™D²ÒJ–›XœR5¸ö÷ ð·p(1›Í׃y°X Ñ™A¸Þtä­×1”Æt2òŒG‘ÐÑÌÄâÁBшÔ\2 "'žÄ(7œ†ž»Iö ù›P ˆ2ºHrâ:ƒ tð±ˆ*2ÓKpô)OàPç4ˆ+L…!Œ˜`†ï[\–6i{ì 1¬|0ñÃ8b,ïËö¦-bâÞ‹npZ.aL2Œ£€Z8 #ÄÄ5CB5·LTƒ!8b(¡ jŒÃê d†ÌBµŠáJ†²K¼î ¨à7ŽsÒé­‘Òà2ÍÁCzò…0Þ9 ®8à¿l:Û:Nhh( Q CÏDŽ@A!ÈéBr2ÌS(äNÓêìŽn<ï,a…D¯2h³ø¢L´Úbô2¥ †ÀËÐÎ8Cc¸9È`ž9cp@¶­ëŠæº®ëÊö9¾ÍóÒPÂtîÀ •ÐR.`R¯†jÍ DQTeH 2E@*KXÕ-삺¸6¨Â8O®Rô: îBí[4 µz2Ù¯Ðm0 uímPARk"Ö+AÄ9³Cxê:M,4+&A‹f¬CË×b. ’è»/²P¿0 @«²a¸`Tt$Â0ÌDH‚ÄÌŒ †A¶; 3Œó@Ñbð»"ÔµmjÄÌU³~Ý7íëY8Ž3¹nkžèÍŽ«®ìÑîã¼æW“è7Y¡­Dÿ@ÐaÀ°<”ÆÁq8dɨÑf —™¾1'ÐÜ;½…ƒœaHeɆ˜r½›Ä^þÆMÄj7ÆñÌwÇò q# #hÄеàÃ_I/-Ä¡²€m)r¯ÕTÕd»/†3 ÆïLÓDÕ6Oó|ã9º–œõ>OÓËT¶0Øîû±ÓWÖ@ ÷CÑŒ£Ý›àa· mü /Ç·¶ß˜óÈÎóX>ÛQQEµ.=¶@;xÃ@Ø@ŒÝZ8.Aí) 7×ߨ[CŒü×®×Æß™ËŠE-ݽ"çîåQ¢6G ¹#9Ǩ¬óFC.¹)Vöª96NÙ/t£à Lé¤ù¼”ðß#ÅOX<•¶Á’|ÅÉçÁòP^–ldK!’¬¶Ó Ap7 IaÁ~Äc_ñ ‹Íz¬ð¾“I{«ýfƒpbX( ‡|”æp£‰¢QåÔ:¯UκM‚©?e¤/€Î]â—êU‹Áy¹v0]¹¦Þò® Á•!£§>¤a ¬åh¨O–Ôu…I&öŒe,•ý ÊÔ‹,›«A’Íž”‰~ Ñ_ à’âa_ôžJÐÕ–t> Á€¶M†C¼Åà <ÀÕÇ™¾ ,»ÀâiÀÂ^¾ !W1D¸×"Ì£3à„ÉmC¼€äðR2Û›†J¦U0´ÕÀf‰+%²E”_ˆi§Íjà äÓˆv !‘[`ò¬ÃÃW9LcIXÖì i”1†µl tì¿N5Ú+pŒIŠR4àß¡ <ç¢F``zè%,¢«%“Òþ­ …0óeÖ²ŠC¥@3¦|К:ëA¬„å‘)FPÓÉ»NMRœfVÏV€6-óþ2¢XrZÈ 9Ç@0%Š×ŽÁÚlR²ÈvжÛSo?ïå¸?Ù’ÿêì³+sx÷ÀcKW`Sƒ›îºÂ¾†›Që‚Çò`9h5) ê>ª…íÒ¯÷R’êJOJ)Nµƒ*žíOë·…ÊU2;ØhšÖ-N Ñâ'WG¡í†êϹƒÒV ýë§C;Þ|ŒÁó=ûÈø³è¡WUöWÜ_„`p*޾?{'ÛqÔù3Êšß)gAˆjËtCà<ž<“1¿RŠäílsuDLi^¹m½ŸÀpÎâÄ c %Ê ËUXPá}ŰW,¬Í`Îa©Xš©´âÚqÍS)å}.¼×Ú `I©S¾±Ú› ŠyK†A*—‹ïÊù¥›ê©Éj¡…8˜þ‡EiIUÊ»¶Ë²X8daÃjb±/Z©,z,ɲd‹Ý,$eC(l €¿6Òææºê@ !ÉfÒÞÛäà*긤b} Èî¯âCM5WGuFÓSˆw¿¥·Å}Ûí™|H'2’†j>AiyLñh˜Lt¦m€Ã*ìÒv4#imwÝ_›,ê¬Æ2`䃊ÂfƒÌ ÀN,8ç iB *瘞‚-jÑ„àFn]§¹\‘ƒ t)í{Ë7ná2-qQj-e±4*â +1i¾Ðk#DÚp®-ý‡ñYU9UŸÝ&Ž»g%‡‰Ý ÓºÖVÀ6øÙ´å  BÛ…ÔƒMmEˆpä©·•“íV’1ˆqØÍms9¬oqD›wt:U£¬m‹ñŽ6OøÙ870[51¨9µOÛ,LFàA¡F­Øîˆ¦FÉ!›9ÇLG ëñ>*hˆxÓ%É«— ò²9‚;‡%ÑàÞ¨c¤¹9dšÛKÕ@8aÕ¸7Ñ.À;cì‹âØ^í P( hñõ´Àï7ÊN(€ä¡ÏbÖMBÀIa&n[¡wœ;t¦BžîòEáÙž`puì‰÷ˆÈ…2¦©ˆ·À£ZÆXY\cé6‚I@a²õY–Ca¶ÝŠÿ–ȧÓSÖ­‡ ´M×C%hmkG'm7Š,¼Œî)¸àÖì8stÕ´è°ÌÊIØsx´¾¡@ñ=Ãçwßܘn¹ˆr¹Èv£ÅîÅLúLÌ`ØàªÎØS ^X$Ô.@ÒL`lìˆnàh4 2Œ/„ B”"ΠŽ(¸¤âÔÆ6–g>]ã ƒ 9Hî^ã Ï '¸ùc|”(¢ªO®¬¦Ì‘î×jjÅdØåt®Ù®ðÄ€ý äþ âŽäú.§¢Æe0bâhàÒ J‘£²´ƒðrCÞ äʬÌuˆHéGà‡ Ì4DâÀ+‚¶­d6¸Ölƒ‚  à£FÀçELb. ”‡È.›@Z×*f¤£‚0̈¡¢ê0Ë(ØÂx[NŒ`fx™ÈÈþÄžá¨ÔL°yð²âê†#„VÉ É6£­ ¼^Å…Jl/j&d,ÜÕ"PS.ðp(ý%XͪF¤ÊP8ë»ú¸­aEx:ÀÒÎàhl/P"UÐ(±Ð.ư48åøÃ¼hŒþ’Èïj ‚ €[± 8eò†$ö ì~ ¦aÀPÄâ¤Þ12Äê÷/Œù …:.Äy‹.›E¼…K8B@’ À’ €’ó€’ @‚‹äH*ò‚¯†¯Â_!Àž À@À’&¯RûI>š¤¥!-Âödˆ£¬±Í„²OœO ¿jº(†6ò‡³Ïä'žÌ´­´Šél”‹\Âgì.£H2eUD“D¬¬øª RŸ P , ƒmIƒm%  ´; RÕÀÞÖB¦sÏ#•<óR÷Èþ(® !16TóŽ­ªz#ª8 äO„Î0ªKæ³&Œ,T,Òr9óþ"Œ+ Öá‘<šà@/ãäWkÀ`$²ãéLÂýCÀAIT™IÔ/J% 6ÎŒ<¨.÷M/ˆUˆº.éQ#†Ðlò;ˆ‘-Àà«owî)¥ó¢ü8 ÎV®Ð ‡â;$Õ’Û-ä£4½ZÆP;ôŽg¦z ‰>PdyñL 2*â´Ù¿#%Pgƒ UŠU6V±LURÅ S¡Iu6}@`Js.<§mà‚@ Ðb@Î …h‘ ÷ ±ÔônÇ\JoëX&yÀP  Z¥&‚;@ ÆæH¥B9Gïz¿qJ“}_=ÊÜ0Àæ bòÒ•”#9¨~mò^ ñ&sñ&¨¢•›òt·'­®ü‚³Hÿf5€3H0Ü€»…øc=0ß*Kw% µHïóEWh†oû†Ô`7’Ô¹çNWÃäX àbq„ËÊRVLv¤·¡ÏSwb•] @=O&P`@qâÃx¢^`¤&Wº(7•^¨']¸ø6Ws@Ƹ?mɨˆ)Ù“qê =†¤Òõ¶—²lJ¨˜Ò:MTåd…´^æ,×#„êˆïwCÅw‚Pf4g—zoû^w“^¢$!ãÔ2w~"Æ·§X–{{`QbÇa!aGï|×~JÀQ/ QW¯|¯U'äĈ‚Ï~‘Î2εœ €’ àŽ @‚ 2> ठ ‚ôbáCB«¦P»†6’b_%Og%°,öí&I2Ÿ"<÷Àü¢²õΚU€¬GCVæ$Ò‘ˆq‡È=CЀ@P©à@  Â;‰kThb¤ÀhTŠ b endstream endobj 17 0 obj << /ProcSet [/PDF /Text ] /Font << /F4 4 0 R /F6 5 0 R /F8 6 0 R >> /ExtGState << /GS1 7 0 R >> >> endobj 19 0 obj << /Length 4250 /Filter /LZWDecode >> stream €Š€¡yp ˆ †`PÄ` ‡Ãá¸Ê(4B ¨yœB,ärœ$ÎsKÈQŒ(!HD2a‚N. %ÁH€RT5†ƒpØf3D!DI|Æg5›Îgb™ýZ2 †c½$Z3¢Òã‚áÖwÅC)ÐÂi6ÅÂ!”Ì)‡ 'SaÐt).• PB4f  …Ñ"”T¦ Æú®‡† EÈÜs¦CÊ–@»+¤æUz Ôn7³ sCh>B^\²Ky1itèr0˜Ì¢ÝÀÄhlá›ÎSq¤ÜgÓÁ¡¬ÈÊŠ4ÆtZpÄj8¤èí"‚¸¦‡ÝN†¬Ê 8Î~£H¦Ê(;^¢ƒ/èPŸ6A«Ð3 ãÚÊ1À£ @ç=£CÞ2ŽC”  ƒxÎ8®;Þ÷pÂ6Œ©@Þ3Ø6C“Œäl±†ª¼Í"ͰP;HÆ4:-K¨:Á¸hÚ4 xÄ4ŒC0΋/!¬ `hÉ* `†Lûĵ # è2£€è”ƒx@å90ZËŒXP*Žpü{LÃHÞ7=³PÒ¶ àÒ3!y =îs鱓±A°lã ’ȱ4KBÔ4S õ>C±„SCxÇ0Œ£$ÜÆ¡B껯+Úú¿°, ÃHlh]8³¶—²r“¦Ä3Lã=$´² ††*áºÈã"Ô´Û-MÄàÝíèî0ŽOóšçÆ5«-e¡®°lì)5ø[-F¬:]-2ľò<ÁƒÒõÂ/{âùÐO²²¿ Åþþ`S”ï$ EPÍý9áJ¿+¯Q] ‡3•¹oÃq æ9Œ#SÉí5¢„xšš¨p. ¥á‡,£WTHÐ’2¼Ã;ÆA¸½¤BˆÏ|$Gˆøö?&"¬ID)…a’²…‰!( ‰OA'¶ÖD2,f4%å4 t'.(½ äsƒ8-?'ÝSÞØC¢?H7ÁÔêrc‰Š 'ÃÖÛŽs8„p}˜8´æ“ö^Ѭý–÷‚ÚPújDM ”à²^˜Fsä1ñó>EAÙ+&Ô– Š‚)j '… @‚(C òY{iO*ØY|ê°pˆ(1KØ … œBq$vI¥”DÈq ÌëJB^ãêÊ5K˜®•~ ZMIéEλÈ•Zs–æ/–ÄÇIBPQ -Ò†ù_88ÀÈô‚•ìÒ ¼ú,‡¥ÆéâûªcÌ‘'Ð@š:@“.(†L5vÔÄß{OqnÎY˜æå,Eê,Qê(C_üÔ{/m¹4Š<쨪»˜NÙò*²¶z;nˆî€ò `“æ /øÆPS«ÐwÏð••zx —6ˬͮ֊ÏÌ<_IÁ•nÅ dÔU1]ö2ŠZ«_œ!±=CÂE?*ê±õPžËqÎm‘½ÐÃÞÛ‘ñ9Í}Ï:·NÊr4ˈ‡­'NK¢ï3qvEð‹aÛ}d(–‡¾ðPЀw~ˆ¤B´s£Éõ>ï!‚0†l Àiz8ÆèΉP@?è!ºŸë@˜âÁ¾ †Ôø PBEfPû‡xX”* 9Õ¡¤XÊ¢Ðá 9€KÍPžôEZ9×yæ¼ù,~Õ\5+@ $ÓÒï\ØÈ3¨ÇöLɲãr¾¤kXÝÐZ¾Ï£¯¥ë‘N°røÖ (9QU>S²ôJú 5Š=žãý\‹+Ÿ^»¨ß™EÓ­0yVzÒÿ.“ „¸l–Š<7‹ø"dQ$àb P(µ†Ts ý?¨3åÆRD#¬n.rì¢TPŠpRȸÑåÚˆ6[+Þhc ÒÓM^w†IÜGšŸuå’²]U•ÃÑ{W²Q+àÍgTT@mYþÈEû êˆö 4ö¹} #4s[…àY÷›"jP!ÉBÞ‘WÑòÀ!»7çaTF¦r«–B0xq›TwÁ–¯ ¦ìÞ‰ì2·"QZëiÀ®ÈCbŠ5B`u f•m‘žÝ>«ÁTY!^Pê’#1†4IJn˜ÖAw»²Ö[P\zA ¶„ÝPJaBOB*!K…¶Qr.FVƺh ÔLró< ãt±¸çBìÙ(OùA¨Uö|äƒÄ’ ®²*4ì¢QïN¸í=ëÔÓ2é836p‘#ª7=õ1|8!ÔOX6½á¬ ÷”`K& &õ#£t·˜¤Je™qGá$¸µÄcÒ¶y”\@· ?ò°ê“D²(ÒŒ;²Õ…˜FáüÉSÝ~òA>}ŸÅ»@{az-noôA‰šýݦÅN²{=Ø»ázÜŠ°ðŸ©m+¾PMq~è–g™±è¶6Ͱäp”sA”ÛË=oî ÎÝy5ÆÎÃÆƒ.-Çã¡„”Z%ñ°Þ‡d^k{(]ñr˜uÍðùhämµøòý•œPkæeßmQ_BÈ¿—û*`"ƒ9Q_YÀÛäâîµð[ËÒX@å†<'á›ÝÖ±Üc¯0ŒŒ¢öíóQ€ Ä£=íaÌ '0áj´¡õlÍ1F®o_`Ć.V(áë4¡®FkîN¢iÎ(„\{ 4{n`Ài¶àb¦„twÀ@DÄ…ƒ‚A€ä„#žç‡:+㬻DŽºîŸMp:*Nc j1°¦æ°ˆ˜p ”?d ™pž+& ;%‘'ÖA&@ƧðFd…¢€‘&8Šþ*zÌiy Þ,¥ì C‚ f,€'ˆvM@ÚqV3ÊT]D´;Ñ(»o°Ä>bFêDf\ÃزHD2TìŠ-³ º@ܺ‘@s‚­ .^*¢Zc¸FªšëËØEþø)âÜ€ÏêÇ Æ¿&jÌ­2lÙŠ­êâ—bÀ€P»­BÂò°ÅDv.X…Ì$…Pb¯êž¨ø9ˆüQÀ)‘W±(F¯L-R¨­Í–ÉŠ>ª¨Ÿ„c ªÐPµ©GÍРj!J…ÅL¯¨Y`@G¦‚ ì2; n!& c#Â#cD%ËÙ2G:"iœ"`dÍ 3 A3b “<ÝÀ¨àŒT#/¨n2 ‹6@hª6â^ p5`b1@pJójàЩ.Ü2œßÇ|`êÓRÒ¡P ÇÉ´W$ŠÌ‘ŠID™‰Éðž,À+d’ëèúA$J&¸ ,9 ôøDθR¦P¤Ö(æ~OâR‰îyI¶:ÇIð މJ@( s¥Ñå ‘3B‘‘%. ±‚¸«#ÆÒmYÉù0CÐÑb"°`Év=îÙR¯CªÈ HgSÐA’’SˆX„‡ìÿEÁ¤zÞ¤@C¯ðkã& ÀZm$ lÄ~[ƒ‚Lj” äS ç)$8€'‹Fi‰…(FO™:m†Ü¬{00C(| Ä,g2i&˺' ç"DR¹cì?kE09¥EE8q@ö‹ÂÑË€Žn‰P©ÁDP “ÔDd|³ Ú@¬„?r ^ËD‚ÊíadH„6º5‰XÄÇSÉ· â¸å£#ʹ;åÆ5Nq PY*<¾É: >"Ɇ†éJ½‰Ž €’ ˜ ´&0?vÄ àœŒ "j r,™Â%n£/Ub5;‰Åiðì1cU#6šr„Täøß (AÓ Ø’a=€Ê=èB.ãî ÅÇhÄ9ll>ÃIDøŽä9õÊ’fâGÅ%ƒ«¡-¤f+öý7t+%B^¯BÜEmümÉ(= ÒD‚þs®q'«u'-$Mf‚h‚Œë~E@A?g]¤ê% =êØûƾm¦°¨…„Æ{W.Ôè68m3 ç=BܪÌàYïÊ‹ãqwãex.ümäOlŽÑOðyq|%·ÂøÓq‘ 0],†>yfñh·9Ld6‡¦¾­•¤[… BÊÒ¼dÐCBÚßr,+CcY¶_2îaÏ%»w›דsÕ„#v²ÔEAM{M²¸E­…;%õ|s…‚×x|—Òw€U·Ú=ke~/~hI~¦Þû¶,w3VTÀkæ«…Kd×… …ÆrQVG†VM†ª˜,/Ç ‰…¥ç}¤êýÄ΄{÷~W“(î>z+8°¶n‡ÕcK÷¢Q> /ExtGState << /GS1 7 0 R >> >> endobj 22 0 obj << /Length 3229 /Filter /LZWDecode >> stream €Š€¡yp ˆ †`PÄ` ‡Ãá¸Ê(4B ¨yœB,ärœ$ÎsKÈQŒ(!HD2a‚N. %ÁH€RT5†ƒpØf3D!DI|Æg5›Îgb™ýZ3‹†zM^‹K—•ÍSuVF¤Âa`¡¸n0„ÃÊ”ÁAˆÒb1› ¦-ϵCbáÈÈh9¥\㕪4X¨wÅ3¡„ät9‹“ €ç{9ìrƒ1¼å›7g &a¤ôa:Mæápd1^³;]¸ÐÜd4›Œâ¥y¸9e3.£‰Æ9žr†Sh€Ê)EŽÇhÊc:åLW¡ÀäoŠK¥BP(Z6¢Œ†°qhÄ]ަQa½« É ãÂê³ì³Dò¶Cj6aª' ) ø2 š @" â˜Xõ=‹:Ò…!ˆr ¸nÄ©kô£"¢\É RÛ… RÆ@‘=¨+-Š(` ë“ò–±oÜVDz!By†aв…›žæ¶ÎC”æ9Î+®õÈ+B"!ϼ¬ÅŠjd$‰Â€ª* k4…3­aªÝ'M¬›AŽL>¿*áÀ\†¡£èû?l¬Ç?òË~ò¼ãÊ9³éDÄê¸. ê9 ÁtvÊϼr±ÌÐïTÞ6°˜ZÖÎk,ì@Î:«#02ÎkÌ7ÒÔÀÊ23Kãº1ØdþTÃÈà6-›Xã·4»<8;ãKÓ2B U&Èô‚_.†–8@1Y«ò ­là"ÒUÎù® 8Ý Ôì##,Á‡ˆm$¬“z½ Яw Ó↊MìÉ ã…ª7% €6c})bRìøÉQ¡¬SÎ X6Y¡³µ…¯• Macµc Ë˜]c+J99«ÛE ,ø ˆÃ(²C{mz2_òÖ¶°¡žž°EÊÐ`M‘’^»8(‰A¦&?u0æ"œUKMì‡5¸ÃJè f Õ9S^ÆÚC)и¢¸D£K‘aFàÝFDŽhs¡À8f|ÉË1„L°"ÄY @puPôʆ·Æ $@f<ᵤWˆ‰J#e¨C€_J w`GÚ ƒ†¶bŒ“4>N¡14Gè™\‹Ëv1FG(kc;˜TK€ú–Ðh Ì!>ÒÅ p¢À(Ë,7‚—Q ¼;G™n™õZlÃ¡ç †i1ITÌÀ‘88#]‹°¨\DPn2Ai×&¿Z—›Ð¬rA¬§)Œa;Èõ"Æc¡°6KcW.º od¡ô ð¥œ9Å óZ†°àkctf¥RÎ"¶#{tw-E‡!EØ¿× y™<’èm¡tïoo ¢† K—¼t,Œ9ç0#Q½8A“ôÙ›°ÊçbË6Ž}W+´­!Ë4êu¢ê¥ãýŒÔ%ÌÏ樔$3>4~AyŠV©X™!Hï©÷wàË¢¤øúç_\•j„WªêÎ+¢« oR’Ø}¦9ûO´Á|šé<)Õ=H† Âχ©ZlÉc,l”CÕ¹Ìäfmþ¹öˆxK¼‡±‚('PìÏk5O@Ü @£$((<±[À>¸ “—Ï"}62î^KÜ /ôÔ— p~šÑˆJIÎPE°Ãh yΆ`ìŸK&V‚¹:å«ôñ9kpÚ^ÈCbŸVÁ™Ÿv2Y Ãq¬‰X–WÔ³Y¬¦0‘ÍlÕúé*Õ;}'À¡ØªCYØ09†©FúÄFÏ"Ÿ•µòô;Ç4ãâ¹Â†àÙ½à‚¦Ž5§­Îð:†ç8oÍÛŸ¯ìy—ªÐÙDÖ<ÜU !ÚÇ£ENãê­µéǬrQ:"/f'j]¢0ë1ù+@ʳ)‚ä¬uç—4*õ+´« @aS§Q]ª nêlWòIWžX„¥ Dv:ÊL7¿Ú ‚ÃTN3¦¶G^#®Íj 9i ¶5‘Z@Q 5"J "Ⱥ±÷F9HeJF áš³n`³tNØ µ·„zPÂÌæç¤?7qlÞ³ðÈ Ô ùˆFÐÓ-]¬&³êõL€°"¸g€Êú¯ª3 a{“ç -MœÄ­^ +`JàÓ°2Çɧ·̘waìx9WÂø™DV_­Þa¢?:çÔ  êof“Úm¹¨îÚº¿gXéžV7Y²\‡áyªÝz ×ÂÙ/˜Lî±À·…ž@^uÚ í‚î ^‹á¡”‚ L¾jZúÆú±ÂÌíL‘¢mÔÐ@‚à\Aœ‚ DŽÈu®u g¸º`¡@¼Pwã_ã@Z yç:UÐoÐQÉ:‹¨èÝ\~K:Xv ÷Å^õÎ¥ÔRêœìÚó¸_;°\BgŸ#¹Ôº$3r(Pƒ.Ïb&Hy4×°¥"x¸@PìîP(´iº\ ðŽ*Ô®– PàÃ%j®,8%„ÌJ¦%€gÞGR‚ÅLßæFpwÈø,‚PUn~D kêc©\Ï4†VËü;Eš\ ºÑ`ÌÃBƪhˆI¨2ªôΧZ8)3­Ì/`Ú¬‚ül¢\‚Œ™ ŠÚdýþTÿLôšìÂS«¼©­ägËÖ¯Å$BˆŠƒXªã4õ§"Y`òÓ*¤~Ðô/Pø] nåfA€P•G¶Pä™ÀPšä>fK&‘­ŽQ$ _…@×fJ×ÇOú/PÌ%ŠÊnˆ<ʇ®é`†UìÕÈò›/ú[„( …?'>åvp¼ÆM[C5…Rðoõíh¾%.ÌeH<{䨨'º·Q|WÃ<2£/­DŽ F: Ú NÖ•ï  N í„5ÅÔ8'vq`@ªÀÞ«-Ì¿#vd#63§Þ6è’@Êgë´‰Ñò6ˆô@ò8MŠ/ÐÑ 6˜é“¦vPA°àýà@þ#Š66ˆFø ÐÂØè|ñfXFÔwrDþ(»Ç?@ÇÐ % îÌ0®,„ 9‘×#l(äÿc”m¸2Ê”Kjh`Iìéj ‹$-cí*É6M¦ºkëllN™&0ã$pT´qÿ ç83ìt9¦ˆV%ôoÿ&PP~܆‚©°V2êö©…^ƒb¬DâÞkRŽ˜¤˜ Õ².¬âà\ÄhYmrTÏR)ƒ”þ‚È/,qiиw…bP´mP‡’ ²%R(Y0'0HÝqÎ2Å~~.}å¹£D¶léO&R"øo£«$¯î% Ò6f!Ó4/ÏØð0Œƒ(Æ4ÎÑ]‚ŬÃ(r-ÑÔ‚´ÏaÀi[¾ô€’1ðãD€Ã]!’xlV+„ÈË-˲üY †ªðpÍ‘GÆÎd•Ûe´ñ=0¡Ë9Ô”øØÜêÒ†A³>¡/r,ЮôÓZ0Ï¡r}€La@‚´?cÌÂÀL±,OŒÁHÔÕEUV<Ó„å:”òÚÏ“ó$Ê+a¸\‹=Îm)(Rô:ð½&Ö9˜`Ð ÃxØ6 ëû;˳Ìð0âŒ-€WÒ#|:_!89D7í>8CxÈ:Œc*P5Oƒ£ÃíZÞ»¬ Á1Rú°¨4Oc.¡i” 6Ìæþ¼Ãƒû²»á :i4ƒfò‹A…Yøn˜èØÃ;{°/ÌPý0#+¾ÂóÓšQÅ¿½ÿ»ÁÙkCxÚ6ôây½,ÁA°l[&ÍÚ#¨ß×=Œì9 {Ö 2ok7°ì{*QÀŽ}E÷—²¢ T—ŒYö¡L7ò*ú“âMà‚)ˆbH’ ¨™oº˜_^ ÊÌ )V]Jí"0n VQD~>ÅêöÛ¨Ü4´sÂCi… +õÅ@vÚÖÂØp)n ›£jØëX6¡ é†ðÎ×¼h.t:›3j½C¸h@ ¢¤¡qQ Ö Òƒûj A €l H9Øa$¾†Ðà¾ÝÁßeDZDè ¢³J  ³²öƒHe ‡6×än !È”ãxž“ìnk‹õè&ž¢3›5éà9ÆæÊóƒsÐ áÁØã°60+®%hÂ#j Ùâ˜ÂPöC9¼;nÕ¤ÀÌCpc¯p–9¦Yä‚NÎM°É@¢Ëj‘nÆFâ šcL­Ý¼¶³jÑZ;ItPQλ#o'¨iiNŽi˜Çr¥a"ÇQó¨“Y s ‰Þ„@Z B#½E¦nÄB_80:œpNiÑ:‹KÞðØ”O9ë9çLôgÏ3J |'( ‚Oj¨AŸ@¢„‚uC'-ŸrƒÊâ™Aße¡´jDÉ»K²PÀÁõ° ŠˆZ\@ÄF§¡#ÃZ“h|¿¦WHaç QÊájƾ@µÀäžÒ¢M¬v7HàõØs1&Ê>A5ñ`ùÚšm2iÓòü™M!C µ0úÕ ª(j`Î¥eâÚYX ¬ŽU¸è†¥%ñ¦tÕè/Xòˆ å2¦”Ú6Æóúo%²q—ä9¾RƒIД #f3>Õ탢xª±Â½Ašk™i(t•ä§É ZC"zŽÇ’†Š§ÚÄ0ö›"@ÃN\ey¶ìÌwŽ¿Csb鎢‚†î•ظ9…ÀBCrmådí°† :§do *s6F=A·’o,P4_i¥ÚÅeö¿d‚oJæ¸9[;ní³a «Ø×˜DGxOùŒ 7–FÛºh¾ì¬ìŒe(%‚…q¾áºÛJ3æèŒ`u6®iÎyœmM» O±jÂÙÂak‹S0 <À×µVchp7AÀ7§Õ²Ô<56®Ý-€ÄñÚc;À¦µV`Ý\KϯSD:WÖav-I¬’å*°/a„1^»nžb9„…Íp8†¦WÔ¬ÔWLÔpÙ†n‚AÌ<ðÂÒ¤ a­Ô73šQ( ðêõ†çŽì­TÊ͆þÊsìáV7†Ú©›eK¢ñËA4€ÅæÜœ÷^ùwÊÔ¨¦Ë:©LxÄOeØÛKðÞ®ôz{6žM§¬h²åñU‘\2Ë–š½pA(·&ð·ØQ1ª©qXš *›^ËC$¬ŸQL½Ýƒ÷¦M}=·TTmêÍçwæ½>©òs¤B;õ›!Û¦ÜX"ÊÚ·þMUºÏ©Z-àÇNEÏ¡²Þ£ŒÉC#¼•nr¤ÜuZÚáý-ˆËMÛ"d4ŠÇœÜ6/1­¹O9°«÷b=ŒÕ €y!QeÑ2é©pq¿”QÞ„ê|6¼7!›2Æ3·–ƒN_ÁÔRÏ];ä†sÔ¨hKÞÝTæ*øó%²¿÷ ݼð)t7É€AåWƒ#>(ù¬Ï½íx9ó£“Ѻ¬Ú= öƒñPLO9“'=×ÔûGXQA­õeá×ù§6¾LŸ²®žñ×:»èQF“¶NÝÂ:S]é¦);i6Æœ"®f1AwŸk—}ë§ÃÀ2ŸåS±¼ó p6‚rAr?vž£ËªûT;óÓx—‡EÑÊgI®=,:y3kïˆq¾¾§ÃvØÏëב> Õ Ÿ7È|ïˆí$¼+ú%Ǽ÷Íð3?”6\âcÔi¿!2°ÈÛÒ(®)È7dy›’2p™°Q¬;OØùM¢êD.êŽ\ñ/x˜~$ "­LaNœ \¼`NÏ%:k̈L©(eªê¯Â„èRáN8ì€@äîp•Šfê j]Ð%¦}b\/`| FÀR@V€ZÀ^@và¶  üd¦(ªÖL#†\'0Yå©LÖ!(¤%¢9lÖ° æ ÄO©t Åþ®„2Wªþ•ë:ÆIR7+Ìv0Bú,xmC^6«B‘äðÚ –´¬: .0,2ç0û.üïCX›3æ/ÄôÉŸ3P(kŽ:ìÄ÷jP%à±.Þô®Â6±dcïÎý*ºÿïÜþVþc þÇ<ÿ ‚Oøhg êîðJ,Àñ‡"l´î RòNæ0Ìð',ð„F¢®K–ƒZCñkÇvwìj{,ºOV»åìc\pÊô §ŠtÆÊÙf¼uÐÊ7„䬪â¬âø»0¾5€Ê¿¨Òñ‚‚3£<® ‰ÜÚ€P Æ@߃øŽÄIíø+ÐŒGeܺ€`C`šNâ.@pbä¢+£éX¢ endstream endobj 27 0 obj << /ProcSet [/PDF /Text ] /Font << /F2 24 0 R /F4 4 0 R /F6 5 0 R /F8 6 0 R >> /ExtGState << /GS1 7 0 R >> >> endobj 29 0 obj << /Length 3871 /Filter /LZWDecode >> stream €Š€¡yp ˆ †`PÄ` ‡Ãá¸Ê(4B ¨yœB,ärœ$ÎsKÈQŒ(!HD2a‚N. %ÁH€RT5†ƒpØf3D!DI|Æg5›Îgb™ý I„ÂÁBÚ8¸iG¤×(´¹aPï/©p¶ˆ0\¯²ñáÏvc2³eÌÝSÆæ†®˜r/ŽjŠƒº!@¨Ç-JºÚ­9ÁÊŽº®ï˜P,A«b²†9Èp`„½K»¦A ðPÝ·¬»€È²l«.3ÁìÑ0“8 í[;²ã0ê6KVÖµáÎ2¶l ØÅFpÂ2ÌðÂ1 ƒ,‚9´ÏÄ`ØãL– ­ã" #`Ú7ŽmƒA4ƒCL3¹R¶…Á‚Ž„À΄DA‹¡ ƒHÖÁ5£,˜: íK3 ã¨Ü2I³ @!N.Zˆ„;X.!Â’ê¼®‚6&KR'L"sêàÓÁ@ç£K*Ï-J"0¯„s̲-j¯Uª dŒ½s¬ú¾kü0†A»œšôL£«4ŽSx\…«ËœÁLp@9 £æÙc08QËh#$ÞE ó0ŽŒçt1¬}¤ÂZ¶¸él´ã*­†.pj<ò²=Q4cDpÇw0‘ÞÀµ£•¸½5±Àç,JŒ{/vŽCœ‚7 í„Â9m¸Ê6ÛnK–‡ÀØf!:‡’è³Kü˱ñŽYz]±¤£,]P@û £Ò37›(ÓŒ©@ÞÌ\ƒ€Ê: ;e­6Ñc†ßeRX×6 *P1´¨æ:̲`ÄÇŒ“.±¸>qgça€aY!CrݲŒµèÞ^÷nðapoR6ˆÃ# ã}!xܬeÃâãkvÐÝãÎ?…òAEûÅÅ-øA¾ —B6É €æ4G6œºÓæAÖÓR «oyì1† ›B TépKÏ ÀÝãÆ¼âR¥ðÈñá¨aÜF‰ãRQÀå±8âÓl#LÊ4MàÓt •T«# 1ÕáÞrã3Ýtð  ŽMhf§=Õ.%ꊉ@u7/UD½pÐÁÈ)Ce ƒEš… xn¡´– Z ¬aè%»±ãÆAH<aLôº"dÐV‹ö`-=¦ó1‚hÂÅrs™ÒÅ)-¿Á Û A=[YÁ€Dà"‘@"}Ía­ •nhš ›~‡êÀõ¸X"ìM‰Qb&Äø¢AAŠqD-‘bØ 8À ÞÒ`ï*Ft_Mlk‰†¶7(áÁDS1R:¬Â‡( A("r\Éäƒyq Æ€[¤LK‹1:*Hù)*£Ä™ 8)…0@‰k ”RRÈyO¥„Œ• ‚9Å]âªÜ âX‚¬q_yÀN†²]”H†‰¤1˜‘R®F„[7‚ -™ZDˆ·9B¨M !!‚Шh8'4˹IÑ|Û²¶oÎ))æ\±œ¡ )ÎéàŸg”ÕŒÒôÌNYõ0£|ý˜¡rcÏøóA(2Ì9ÀÞB’Üs")ŠéÁ'î{Á€4D°À#"àB9WKA,ÀkKÖ£§§ˆ4¥GÞÌ p š›Sƒo ²„Ó5 Üb¡Ä£æ :ƒ`bzX×ZŒ4†4ª†hñZ@¹OSx1J¤×%îÕlµ”‚ÛM-=Ü#õ »xbJmØÇ®@ÈOÄ ª6ÕÄüAˆ4e&ÁAÓÿUÁp9Y¤Z§°n€Ü*öJê&£¦§HhÍ+¼e¦8ÌTs€å×gx«ayÀ"µñ(upß‚ØcÈt{6\¢®bŒW*XIäÙš“ íxe ¡Á7˺HàŠÉ.(Œ& Ä@QO)ðo¨†¡ZÔ•ˆÖ8Õ"娏r\‡ØÙ/'yxŸ›°@¸“ eƒsL4/" ò‰ ˆ7ªÕž­çÑX/ñ .0‚–Bþ #°6¬nM,äµgLÛòh¤¡r$ôÈkÃzø 0uä,Àrä¦ZxpD¿·–鱄f©É¿ wUÁ«… & ×À\ÇÐ .0ŽÝF†Å ÝÚxu\Žy¹2gD»ŒEPÑ‚u#\-¡À¾=Š/ æÜ•wÊFü”eÚo™“P(½ô6Öûq&4Œi꺩£†lJUqÊÖ1ÄD Aš† C ص²¤6qlŒ2Ø+g˜×ºb´•$7T³M’oRQëÌ8‡V[[š}œ€Ú@”dJì™bçÆlß9¸ùu‚C¹Go팣F8 ñCC]Er†tÁ@yQµ'SÀ£åòËOza¦ñ7É\T„0ØÖl "³ÖÒIàf×Ô©µpÕÞ(Ä—¬B<Èæ-5º\ârä!ïaº½ZP¡È;w¸„Ï_£bm]âIÛƒN²×ܺrf1S+ê7[i÷;ööÉq[v(ÜÃøÑ®½°×PéB®±‘j.ýÞa‡VlÑ x6 ™.ê×úÔÐì *¾/Áj^Ïá!¯UÒ l±Ht=p¡ ¨†ŒïyŒ3µŒ2d³M~'b™"¼ºÈSXeÉ0儱«@Wªþ•ž¾Îú +Bõ¿‡/dÁ¤ž ge—¬Ôœ=@h$/GL°Ý[{Tì„adS>ÀKÕñãVË]¬P` úÖYzÓ/¥Wnà7:u$ujßvšþ“¾[´ÑíO*ẋ üEÝ/3š —`~­§†_9…šÍ»@7Ø)ú“>»TvGîÏ9+¤%I¬©Ò#I™3uzÌ»0š4EvAo˜4§@pË‚uôŒ•Îí×tq7{²s0a îÓJÕ³r`D òoG)Å‚ ™pO–^³•êÒ+-ê­¶æ Ñ–N øʤ+B¸a@jÅHÈì%f €œ –Šæ …Ìv%š nð£ãÊ™c¬…ÌtãZnæàèðZhf·çDP&¤1#bä–»ˆsÏÜ…CÊa©äƒ —°?"´¥ç¶«¯îjuh_f¼q)¢[hN°£ìL¬€pOÌú¤B^» ¼\£C ªÂ!„èªÉ–ÿ§¶a' àR¬‡ ãŠðàæL-À2¬îã´íwŽ’æeÒÚJ˜Õ,˜¶ïHØ(ìCèÇÈ+‘ZV½+ÖG 6wŒ²%&Q-úÑÃp± æaÌV)Ò2`ܹ°ÈÁ0ΪÂ2…ÃÞ= Ô/çhdoÔZìBô%æP+P­¨< l€£<8ðd8¬o=0/àD ®Pmg¤j#,Rí〠x P ò\©´D+$PÜa1µ Ð ¢@(¼oæñÃÐÇ+¬·cÊ0€’#Z4"¸þLêænrm,0F&æ€E¦¼MÞNe¾‚Ë)£¤!Í膤v¬˜L£.°ÃØËJsæ¯$ªfˆÒr`’8Îvƒ \Í@w$Öˆbcqð×¼5­x5­|º`Pl(ì/m€L#É¢K(d²*d`ÞjCxØíÂjgìEÈý§Þ$ê%pºÑjqnãƒ|#&lÆGã&¼¤T{2¤./±$ã'Æô¸Ì’à1Eærò«*ð]/V ÊõÎÚEIª. jBG 瘟¥Þkeð'Ï®l&føƒ–¿¨& È@q^W‰Ïh'ô"Ñ`:`a/ÎÄ',* çç #ðÒ¢x«ÀS„ùˆ\¹ä>«@J03(ªbŠ)0« ¨%ÀP'*Ø1dœv“JC3Pò°àYZ¥_7"^¨6d +Ð?6ï7Br¼E R~ ³ƒ4ì@"ö>0€¥9Ä96³XÁÓvfàã­¦t³JÛŽó¬¦ QL¤g<‚¶„ "5„ !Æ"†<܃Q%¬'ŽšØä††0\KÊöË…HîVÉRš6k+æå'Fê'68œk2¬HìörZ{Μ3ã€z0Ðb ±ˆNB ‡J>Ƭü%äX|‰1ÀŠ€ˆIdžõfšÓT>À ™G“ôàNŠÈòŒtPŒ!’ ¥*LºÏ™Šb4¸Šô¸næ>%…=FÆ3ËðKŽ:6%ú3ãDƒb5ààH ÄtÐ ä ÄïþÇ(\ºê{ $×?‘E 0L×tÇL´CÄãPÔÌ Yðá2$eŽ??†a‘ßÄR åNl,†è±Â‚+*@t"^|¨(4m Ô/à’6Í„®8vñ 3Ü0*l5µDmEm2×2e p7&´Ë°¥$ñ7äÞH4Ä]ëTÛ´Õ+.nZÄl3`Póã¥W®mÔc1hrÁ) =C%GIóG¨£Gô‚@Hrì8ø%#I4– AI´Ÿ_©3JT©?•ÒÐ9[dºKõ,QDš«ÀëCÎ6”äH´Þ µZy'–=è½`¬¾»…®öŬ÷~Zàë-†·e#bµm+®eÌfDØŽÂØœR-“ôJarlÇf5¬|¶i&Æà8XMËdG'ƬéV%¨JdÒ²®iË\5£@ vgW±„`¤®°cf#| £LL²’>Ð41dÎê-(ö`Ø{(›V`AV¥Ç%€î['¶eÈ~Ä¢Q¢QEƒ 4^L“-th+U^W”sGuøÚô€Ÿè -BÃ!È[À¸NÀf `n µéHµðÒõô6Õù_È¡rÀ¶ÛJt§J¢·r.~DH²¥bþufNkdÁDR¯a0ó-‘¼R#M&2ZúfR_Ç8Q%ÐËÒÚ #ËåÈI(©çeÆŽ)h +pVÄàvÖó&,BÂUvšp ­$jßÊÆa"¼™BæÀ 3`@ ·”!r pcäø+£ ~§¢ endstream endobj 30 0 obj << /ProcSet [/PDF /Text ] /Font << /F2 24 0 R /F4 4 0 R /F6 5 0 R /F8 6 0 R >> /ExtGState << /GS1 7 0 R >> >> endobj 32 0 obj << /Length 3200 /Filter /LZWDecode >> stream €Š€¡yp ˆ †`PÄ` ‡Ãá¸Ê(4B ¨yœB,ärœ$ÎsKÈQŒ(!HD2a‚N. %ÁH€RT5†ƒpØf3D!DI|Æg5›Îgb™ýZ3‹†zM^‹KŽV†h9Pî -ŠfS‰ÔÊn1™Nbéð´d5 gS Sv…ÃAÀäa1 7¦Pn7‘´Âl6D#)ŒÞm6Û̆S °@s4Ü ¸Ü–[4h0ŠFW“°¤b5vÛ‹®ÜPu7hõs³Ve3l·léÒPo7ióú³yÔè-—J„©`´b.‹)û5£ ÖhùBƒ¶.åt¿Ýï$íÕßÙ»ÜœŽ†ƒ/æ9´Ã˪5Á¸!£‚ÖªÖ3£`@3 ã“6¹ƒ“:4Â8c0±N‚æì»në¾²,jˆF ]†Qª³­"3l0a@Þ¿¨P9>(«Àµ:aè<Ž @7ŒÁÄ4¸£HÞ3°ã€Ð<È¡”Á/èÉEâ ¤¡(Z…Á¨p¡/#Æ–¥ò˜Ä1¸Ãܪ ˆ2…!›7 ó’ÂFÏ(PÏ Ã ÂÔ¥œš1,¸Z8£à7­a<ÑÉC{N:Ä3CFÉð³9± [öÝ(S¼…Á l!¼ð,"ÎÂÄàäè²Ã¢úÔŒáÔùA+±Zʦ:·> ¨ÌÒ†;á˜j¥UµÑPóqûÒàÈÒsrCÁ°ÎÈfƒ\ö>ÌÞþàfÃaN±ð0ÍÈâB‰Ž„Ze­ýÚpÈhëR¢OF5Fƃ.’¬Æfm¼ÇFàpx©‰þ—¶XÙÙ•wn¦"sI¤4ù• R5m£4ŠÓlI±¯J”^‘S”‘R¨JñšXðšŠËkrÝ3ÌÏ©yK˜°ª4 ¡¤N•nF²v|Š*C ­äµ¨ÖÛS“²"Jéeš5<÷§h ½E廄¸ Å­//€é85"‹ÇmÐ3†›òäݸ(¿š#RÜ„zN›7:£D›òžÍò\7ÆôÜùgYb̤äyšõ*ËÒ:ƒ3ðáM[5Çf¥ïf°Ò´Ì—ÈW!ðÒÃr§”¦ÀÉw¶„Ÿ$æÇløýÙ ÜM ï}°èNó¢eÒÕ‚ ¦)ý+71Ï6VYúƒ¤¦ozÃx- ›ïTú<²³áƒôMלðfè An•½v€”‚—OØ: kC¢¸=µ„ã"{²’2€¶™2eƒ“i¦{d¸DÜq q‘ Ó3ÇJÏúŠ”QÈ”èë­: Ì/*íR²ÐŒ5ÑrùµùI[F4^Qùy­C1Oë¼XÈ­]ÕT5N¶¢ûÔœkmTGð6 ÷]ÌaÀžˆT6™=ñ^ëCrFà·õË2…ºÖ™ëÇã°š`ï¥h(5!š‡Ìf\Óœ¤ò#A–*¹KƒK€}©èÉ:jžuP¶‘JÉa¥½ynrðaJN˜Õ¥„4+(w±§.hlR•ÏycZ[è>ôMBÀIa&nl‹ÏÜ“É,…5óͮĽ"_®Xw¨FÝ«º\Žý5%í©óÖéi@ð4È)tˆ#àd–0ÊÚýÌ0EÔVè kNx%æjÍ%(³ÌÜ~è!„ØF ôÁ,O$öÁÇšPi¶ŠÃ9ÍÊCËÐëàðDd$OC. ôp¬x“G’ŒD¢øFòq„˜ÊçüòMW GÒ/…ÐM¢ŽW,–cŠ: èS$säDÀ#žJ)L®àÚYb¾Ìoòx­n¼ ÀZ‚ Ú‚`} « °¼Œß -ð °Ñ àE  ß àZˈ²ÎP½Å˜ãŒÈ(Ë$d ŠÊ„ž:Ðœ× }¯°LôÀÎÈG²p$8T0¾4ÆŽò ÓHËc,3 x­Ã|®*¥ p`ÊN°o°L{#°Ì-£ J] Ð`¸Ox ­õ +Ö-ä”IƒVÞãB¹D, ÖÇl:4i2á‘C*÷ÂÜêÐ=îéŽîdÒd ¦RlÖ´&Yj¨ê M8:15nË Uc8ѪÒ{§¾&ïÌåò à@ iPiäf@†n æt¤š4âØ-ÃTL‘U &³ôlu‚ûã-Ü: œ ¯»m¯*È Ë€ÚB#°¢ËcÖ³à:&é‡BǦdsï…Œ…#­–;Žêu¬È+pþ<Í®eªpç C£ H&edƒr:00ÚÑæÞ¸Â^cÀ@ ÀŠ óÓAÄøàât# ¡2€‚  „&¤ù5xãɆB²Œä?#Pl„¼cEjvFÈãpr ¦t!k;ÂìQއÓ̱ Š b endstream endobj 33 0 obj << /ProcSet [/PDF /Text ] /Font << /F2 24 0 R /F4 4 0 R /F6 5 0 R /F8 6 0 R >> /ExtGState << /GS1 7 0 R >> >> endobj 35 0 obj << /Length 3626 /Filter /LZWDecode >> stream €Š€¡yp ˆ †`PÄ` ‡Ãá¸Ê(4B ¨yœB,ärœ$ÎsKÈQŒ(!HD2a‚N. %ÁH€RT5†ƒpØf3D!DI|Æg5›Îgb™ý[G (ôš½— aGpQnub)ŠDM PC"ŠK¥BT°Z1EŠ”ÉÕ$¦H ”ŠPQPUe Ä<äd(¶[ˆb‘€¢ãsºá¥ã9L¨R$“ˆøLÕ˜b9…#˜× L*åírð6ƒÞì¨Ê’T²YŠ#yœäa6ʆƒ Ð@p0œŽfQÌêc4 çS¡Ã¹Õ4v͆A„Øs7ˆ ]CÈËÐ÷y Æó€Øi7e½^¸Îü ÏÀÎãK–9n îÕ²®Œ7@ohÊ.Aˆh<J…‹“f‡®ëʾ‡¸ Cé  Ê98¬% BÐÀ@‡ðÈÂ7>Q:n)‰!x’)‰ìX錎‹È!¾Ïè7£kÖúŒƒKÜ1ŽƒHR5óú ¬ P9…!l°ÊòðÍ0ÌaD>cÛ.¡š½¯JbÌÍ«*û¿!d†aD:K¡‹\< CxÞ5¯Ò1Sƒi96Ñtã@Òì›èòMsä—&Éï,pF Ù%¹ Þ3E Æ:Ń(Üç?óTÕas 6íʘ¢sQ…M`0°ˆ*’„¡hjІ,TH¾B¨j6Œ#À[ŒŽ]š##6‚«!¥ ¥RãuÝq ÷5¤†Á…¬¯¬ÃÞ6Û‘À[Q;C„ª7Ð$ )@æ8 £ÓTŒ£$26`¶î»õQƒcÕ8ã†ò9¯+Ô0ŒcXæ6a#@[I¡À\(íDé…Á€hÐ1*ÌüÊípï€:’ÚÊóstxEO} Θâ:ÖàØ<…!³]¤†ZX]¦½0顨CÝd¯hÞ1¿N›•¾Ô-M¼ÐEƒÖΨè÷9Äò=n{Üøb;°A} ™{0°ñ"Èeƒƒ¦êºîÈïärKòýåX@üHçU|Óõ_( µƒ|2 DnnA@ðä-_X„¯'WÒVr…!Šð‡9¥Ù;Èj7 ákÚÕ‡àè:/oAÞ Ýý¢Á½ª¤ÚìF¹=M[€ª' ) õ~HŽxÓ†T^ÅŸà6²ÃCfËÄêÄQÃƪÝ{Êy89=¤õ²·{ •úæf×HËá,Á´<ŸpÄÑÁ@.¯ax¿DäÒÞ+Ç, `–’ðø ã©wËÈ»§ nÉ fæéæÃZð{D03”þj(à‹Ðz ‚XE ˆ¸s 3 œÅQ J +~‰Šwò¥‹áÓ éypg !f§P‚•´—Áx"à¼3ÅH­ ”;~«N4C8Â}¤d‹`Ñ9¿§XÇó± í”àÂud…>áÌç;sÌǘrC`l¶WbSb|‡á<™TÖ¯ë‹ °1h¡RòW´iR Aˆ4£àäz…ÀÌx‚ê ²X‡Æ´"p΀8B¥ŒÄ¯/ È(mÉ!ŸƒÊNÚ·;JÁµ6ÀæèЂ ,tÄ®eRÒ†K‰lŸs\zÛÈd`邦·C'Lª¶`ºv¦’“ G‡ Äª¬Ùd-Í&ê)÷ ¨’€ÊÔÒ²X jfªÝ”’ÀŒ±Ÿ€Äqæô✓˜N„¶ìglêž Á²ÆØàÉê¥é*zNÊ,”H Î6=K)tê¦ †™0Õöu˜oP‡’¡TE|âédžŒå 3Ó‚ £p $*RÖ´øK“Õê@ÒJÓ…M§”9(é©Ê„Kr-´HTŸœ­‡¯uÄúÿÃ*7KE9…èE (žGè<Ã"ŽBJMŠÑЦš´„‰}ÊžVÞ¬˜#Š6i‰îåé1d44™…™B+rQ%@8v%'*°ö¯‹¸6{€Ú ÔË„Qn)•²”&S+e ¹ÊPâÞ¾ÃkU·äùš˜3w•£Áö«¡û`QV`)`ÜÕúÂu8K Á<šÐPÂuio±†7àêxìª]£S¤×%ÛŸ@Aºèz!…‘X“ë5“[WMé¾Û€ ¦Ñ *â¸F'>­ÑXn’õäôŸ„ O0iR¦óGêIWç½ûA´QÃ\tq@bUsî<¯(€RAî¨FË0Sf€!P@S«Oå¬(€²0O A4¶4ºÀ¤ˆ™!Jdä0ohˆÑ/°ð€B§²¼”£Â—ÌàÖ- ¿cz`ó·<‡VE b'MaMIg2AÁ”Â…3fŒŽKòY2..§0”¢&–!ë4P Ï3•œÒ V 0X°”¢gRõWßé÷8¬„45‚®Ð(M«s2|<ÁÀs*Ýn‚ ÃC`A§\aá¡^†ƒŠg4nžÑð×HdÍ&Pt®dÌd¤CÜŒFõ(2Ó–Íd«sˆ»¡¯€*0åž t¡Ó¸Û«A¸u<Èd‡#ÈRŒ›C!40Ó“N "aà Plƒg²¶áHÒÀ±mݤFË~Ö0›g1ä;B^uÛ÷«qú¾Ù.‘•ÞJä@Òñ§4A Ñº^ÅÈb§! ¡ºð¤CK$¯Ö®aaG‹œqˆh9ØŸðÊ BmbŒ* káÒ@Ía­‡ÆƒU=o²©– »£,Îj µLõSž«8Î*›C!0:KÊ]jÍéX›9c¸ûß“Ì'!@Xì†V ÿ&\o1m¤,Q<)Š(êS4ôœ¾êJ!+S¢,Œ_6¹`€áðŸ>m5£ „»½˜ªJ-7¤Ê?Ul«}޲>šÑƒž&ÂS{b­_£jÕu7í¦/B”­Á¯¾„žL¯m8KÆt—ŒùÜv3é’õ§ƒÔœàP;ñ$­Ïì=ÍÜë šÌlaØjŒ(ªÐ˜q¦r«ârQ©œ5Éþ +í Èñf<Ñlh£¥æáL<‘—£¨[Šrp#¦>šp®t;Dû Ð=Åe©¢ tzC ^C$Naj€îà‡«„R§öòÀ¦:ذ`)6Äg(E‰²TRrq¶:#š>Œxu(¹«Î«G' g"îM#TxMñÍ|¢ Ò¢quÆÎ±IÕ'ȹÍd¹„ ÌK*^KÊìñœqÒ`@¹`ZÁ#* k˜ «˜Ÿ§È'+˜'’z¹€x¹€}(nβ“)ÒR.Ï)ÄÓ'Ã* ™*‡ ¦r¸LÀP’(ÎN"ç…‘l¢ $¢ƒ¥Ž ìcœp'6ªd3%nl©R^ZŒŠ|£¶ ç,@ò”ä*ƒ¤9ÃæV’7,ñ9àÂJPlÀ0NpÌFênRQè¸PDmÉ,Ò;-6`æþcçså àê;lxqr2‘ ™ Ú1r²¾Z£*’9#Ê+Ã+S<_d 탣 lj汘²ƒ–d¦ š¦ `ˆUg¦¢¤2J#þ“ƒ¢PF'„l ¦:GÚ' M;$(³P¶%†™Š Emˆ<‚rÓ±cžEfØ›Br¢x˜i2e+"Xm+äÒ ã¸tnhìço3i“Ó‘ãïæê9 Zt`Î`¢rìGÆ«Îf;ltp´!BF£: BÀSC5påÃv`i‚Ì' o?Å ÷à…ÍVöðò i±F +(?‡ìüî`œDJFÂP®`„ù¬Äâ+ž¯ÂÚ…“I­(ñ¯¸]P½Jt«<À¨WåÒópó¾2ÔÄôoKLÊ· åÔÜ€°C(.¥±R‘Ê$dÑG‹­$ÄÎLTô „Ö:n¯%£+%ézŠáÂêðFvND*5 m# ´²ûb&ˆ¼(£N!¨Í"ͲË6rÐf\+(A2´Ú—¬ì1c-Q²:ŠâTDVƒˆ¥NMu@²‘9/ê#5s1¸zfC"Q’»=²Þp´ 3Jè:„ÚQÀȵC20ë$VÓí4óóÊJ' q?ÇÈ*ê@ÃŽ¯ ™÷²8åv ̧1KIcˆ §p>f:솄@S 32?Et^ÍP3^…뼆»ª )\öNÄ‘æa¬P“ °}¥2ÿ©Y®ÙWîÄJ-€HÆ#XG¼¹ŒÃó«+ÀRC5–<–56§?Q<¥‘U¢è* Õ²µ³Pµ¯N,ÒÄ Š*؆  bðŠ™ )z, Q @àŽ 'Š©€rPä5ÂR@Š b endstream endobj 36 0 obj << /ProcSet [/PDF /Text ] /Font << /F4 4 0 R /F6 5 0 R /F8 6 0 R >> /ExtGState << /GS1 7 0 R >> >> endobj 38 0 obj << /Length 3605 /Filter /LZWDecode >> stream €Š€¡yp ˆ †`PÄ` ‡Ãá¸Ê(4B ¨yœB,ärœ$ÎsKÈQŒ(!HD2a‚N. %ÁH€RT5†ƒpØf3D!DI|Æg5›Îgb™ýZ3‹†zM^‹KŽ †ãXQÜ[T†ÈQ Ê)Œ†£AÌàe1šL&ÉõŽèf7œ¢’éP” QFÕÑT¦Z+xÄj(3šMdz¼Úm2›Ž‡Ü&Ãr q±l…„c‹¤•%ÂvÖª Ñ5¡v²™ÙKÈSq“9žÐh´” fðmßÖ†#(IRÍh»à'IF„Æa8Φà Ó4gNF.ÙËÔy2¹sÁÐAÑs^I¸RËÊàÌHd cCÔ0Œoä”0!È2ƒHÚ팰xX ã¢Ü9>0PÜ Hn*èḮ8Ú´¬:Þ7Ëa±î¸Pä´a"†…Á¨d‡8º˜[V˜æù sn¸†Ár0±ŒrÀ¢,k*^©*kjÞæaèB†Iá n î˜ÜºImJ5Ëë¦Ócº¡ c’éMˆlª]¯ì9ÒÐ.:¤)=)@ä2ܘMªY,4[#HÅ ã;Ü8 bä¢HôhåtM-¥<æ!ƒ¦µ,kŸ›éÛ"+³-)Ðd¶.;J8*³ŒP`Ö9¼ƒšÝ=Üì¹d 2èè9?”Ý/l˃æñ4Øè7÷JO.Ypéµ-Ò2Ö¸ 0P"¶ê h)>Vn­Fî¬t,tR0Q tm¿@ OwÃ=¼„ûõ/O•Î݆ 1ÀŒRXùÓxÅa“øÀßâà˜Ìy¡€¨ ¢L–X@•J©—`¦p‚„‡9V¹‚/` §Ô@„Ï’ ŒHŒ·WhÊÃHc%©.?Çw;4i2ᘼj˜UZe ¬”7¤÷× KÈÂT3·8cú5- ‘s.…ÔÁK¤Ñ1挔@ dQf°…%ˆl0"DHÀr œ…+…5R†ÐÞ„Û nÔûKÈ(–ÖY„ñ‡E‚vÓšy‹éq{€à…KÈt\à·ÑÆVµe;T˜íX†5”É\»5p ´Pœ‚HR ̺ðœkpTXÿƒ3.aXADÖ‘h£Lá‰Ò@C²šL‰¡6 Ĩ*M:ÈŠÈ9…"f´ÆÀ㜫ش ¼´g÷Uû‰>¦„9Ï49.£|oÇÀ‚Òì^Kh Ð1Ô¶^¨z<¶ºÝIüËŸ›`{Á2Ðj”j`l€éO4>€3³S4à0\~ì´É†Íj³<Ætâšccå]˜±;+Ž…)öH$„à“xf­™³oV€p ï8N[²â€Þ™‘5eP9Dó5”7© Ýõéš^›2×KAû<Åì4Ü#ÍŸåÀßèl .eJ.—FéÝPŒÄ&¬Id3waƒi3æˆnVÅabì&ј58\°9«}‚Á<]w§aBÄ R¾ ÇBï†àÓ~¸5HÉ;"1‚rµÃr09…^´€nä +Èá'$‚–]¬¸-¿Ddç_`L¯¨P ¡R!ªÇïÔÌk­|uH ›vP18!èæ`f6jìÅ‘f»ƒCšXJËÓkÂàOa ”¨Š!¹Y(Ì”e¿cA2ŠÊꇋªÁ­šôîóÙS˜ôˆÆi‰;"Ó 0õdÝýÌîbO”r²¥ ÕC>ØŠ3\ŒJVA¸( è5…„6‡¥ä¼v&uLf¼œs,qvï'Ú ÒtbH9–hé ²»^„›’ 0!¦3"ÊŸâ^=H%¹¬… †cš} ¸…´ óìïå뺗"lCPm¬j*Ò[ ‚v)Ý£Ña]Іž‹n^n+s ›å߸y*«mâjy¹+â×áž´›i¡Ô>‡Íà Ǡ9‡š¾Cžß-Ûá·ï®\°(uIø6'µµ¹Ð[,['À;Çt¾eãbdJ€¡[I‰ÐIê%ÒŠnkcwcçHé&éy-Ûb#è½.è­y[Ç'·-¤ïáðÝÒRèuŽéá%ä/¹1 &A4‡ÈÉxD áO7çëÕ5s’P#À°YìpK@Pt'PY\äŠF>²úmûBãŠ:Û`€ Ì7hðÁŠ”óhoÉùP†<ÐSø Êy`AæÁx2Ca6|§Ðç.O°N²ª&† N/¨ÝC| E·Þ Ç4´PµËaœÇ{>\.ªÐÇQ {K›P9íl„{À¨éoä ¤^Sd&ÅÍ$!€b+(k,¤ÁÌr˦ÈÔ¼¦NÃK€Ã«†Ä ¨nޤïÇVä ‚eã¨7£ØOÚöÉÜPüï: >jïB³LèæÌŠ `² `I¦ €Š °$³D³+@r(ç0÷jø•*þ$ ¬ ¯”ï®üÏPþ…Vìÿôá‹vŸÃúŽÎèÏæ° ªÅ)¬rIX#-.Êm6óÌ~7n(©X£)yÐ0ÃŒ<¸†Ò^ °Ô¬Â­,®ˆD…PÀ’°‰ŒÉ°Ö‚&!È@V&e@TÈÁ+Ú±p,)­J†<ÌäŒrhfzQÖIÔÍjø,´5ñ+ `×É.fM‚y-’’§¢fI2’‰:“ç¢ö°£¤ˆ@»žd±Oí`‰Ê^ÖqX"bä1$p–yb6³ÆÀ5†Æýg0¶(ĶgpDŠ@àÈ<§bt©€ÿŠÂaÌ^Î-ØhǦô‹Ì8 Q+ÀÓ†?¨h»‹Î´Çø¶Âîå·Ì6¸06DqÙìã†J΢À-5 Çm² oei6ÁIš- º˜. ÀÒ¨À–ål@Q Kp¸«{rðм¸ÍªÅÑ 7øÍlcà ̪Êñôš²o# P È,²? òE$…$Î×%/%’ 0ûÿ&gýK/€AѬ€ ‡€¦ Š÷€˜ `ŸajR:Ú‡‰ž-ÀÆ p‚•BŽö¦v'L”Ò+.1 `@±>ÓÈ á.b´’ìs"¦Éo= Rù/ÐNãê|Æ7'æ®IàfЧ Òâ¥/,àºâµ1ÐÞoC4Bpµ2&,H0ó633èg1àÔ ã50Þrs5/Y/S=/³c4&öÿ$)0†g5Su5²±7³@È«b ³KRö(©²Á“W9bbSa/ëb àß.SLšÃ{53©8óxô´,G'à™Æôàåm;èÌí ³:Æ"‹?-@dèÀúàå2s cìÊœ43“²óð]3>SŸæ1#aB3w@sï@´,ÆÑ7%þµ*â Ó¢Ä+t=:ÐÕB¢ÈÒê² «Š8³5ópȳ«>ÐDTfÈ´j<@Å#†€sEô|d qDt„C †$óbjS74BkÅI´‚cÉC0«ßJÔ%5Ìã<í bÍÞ%àæ ghNô¾œ1çLT?K1oàÒô½;ãW?2ÿ5q:à+R¹qd‹Dœ‚èÏ` êåEPæ°ñZ¥#,„ѰT œB®D`H@Œ p.‹‘#( ´ÜÎÞF Peá  bòQ¯·kzc<ÚCÎ6åÛ#̬ îÂ2µ è> rü)† 0ÅÊÝèGî ¯‹†ŸD6Jâ,¾ ¦o.9…Ú'J0 b¡ÂR¤òˆupT"Ð bö>À˜ 2äY‚Þ”R;j<¡j@ªìo])V‰ d7 `V5Ž  ¦t5µ]ZDÂèB€tV!5>‡Ž¥Bä0´¥N ±a¶¤«@Ä¢È5â†Cv;b*Ubf´zg×b¼•r"–‰5|Aë\1,ebÃT±td Q` AYÃàkt’.¶¦¨2è’SÀŠ b endstream endobj 39 0 obj << /ProcSet [/PDF /Text ] /Font << /F4 4 0 R /F6 5 0 R /F8 6 0 R >> /ExtGState << /GS1 7 0 R >> >> endobj 43 0 obj << /Length 301 /Filter /LZWDecode >> stream €Š€¡yp ˆ †`PÄ` ‡Ãá¸Ê(4B ¨yœB,ärœ$ÎsKÈQŒ(!HD2a‚N. %ÁH€RT5†ƒpØf3D!DI|Æg5›Îgb™ýZ3‹†zM^‹K–à¢Ø Šm0šMƒ¡ˆÊe·-C@¸êt0ÝL¦C¨²Ûo¸˜LfÑq¼ä)Ž{õºàe mæ\.‹‹FCQ€¢rI7 §#q”é<—J„©`´b.‹)–R©H™l4‡м^wà FÃQ@ºçu»ÞE׳¨¼ýŽ·ju`ªõtmYØìÅl@Äb(ÑœÍ&óp€d.ï †™‘ˆÐr2 ¸ƒÈ€ša<Â#‘ǰr¨ï’t:M`Š  endstream endobj 44 0 obj << /ProcSet [/PDF /Text ] /Font << /F8 6 0 R >> /ExtGState << /GS1 7 0 R >> >> endobj 45 0 obj << /Type /Halftone /HalftoneType 1 /HalftoneName (Default) /Frequency 60 /Angle 45 /SpotFunction /Round >> endobj 7 0 obj << /Type /ExtGState /SA false /OP false /HT /Default >> endobj 24 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /Encoding 46 0 R /BaseFont /Courier >> endobj 4 0 obj << /Type /Font /Subtype /Type1 /Name /F4 /Encoding 46 0 R /BaseFont /Times-Italic >> endobj 5 0 obj << /Type /Font /Subtype /Type1 /Name /F6 /Encoding 46 0 R /BaseFont /Times-Bold >> endobj 6 0 obj << /Type /Font /Subtype /Type1 /Name /F8 /Encoding 46 0 R /BaseFont /Times-Roman >> endobj 46 0 obj << /Type /Encoding /Differences [ 0/asciicircum/asciitilde/Scaron/Zcaron/scaron/zcaron/Ydieresis/trademark /quotesingle 94/circumflex 126/tilde 128/quotesinglbase/guillemotleft/guillemotright/bullet/florin /fraction/perthousand/dagger/daggerdbl/endash/emdash/ff/fi /fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut/dotaccent /breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash /quotedblbase/OE/Lslash 164/currency 166/brokenbar 168/dieresis/copyright/ordfeminine /guilsinglleft/logicalnot/minus/registered/macron/degree/plusminus/twosuperior /threesuperior/acute/mu 183/periodcentered/cedilla/onesuperior/ordmasculine/guilsinglright /onequarter/onehalf/threequarters 192/Agrave/Aacute/Acircumflex/Atilde/Adieresis /Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave /Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex /Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis /Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis /yacute/thorn/ydieresis ] >> endobj 1 0 obj << /Type /Page /Parent 8 0 R /Resources 3 0 R /Contents 2 0 R >> endobj 9 0 obj << /Type /Page /Parent 8 0 R /Resources 11 0 R /Contents 10 0 R >> endobj 12 0 obj << /Type /Page /Parent 8 0 R /Resources 14 0 R /Contents 13 0 R >> endobj 15 0 obj << /Type /Page /Parent 8 0 R /Resources 17 0 R /Contents 16 0 R >> endobj 18 0 obj << /Type /Page /Parent 8 0 R /Resources 20 0 R /Contents 19 0 R >> endobj 21 0 obj << /Type /Page /Parent 8 0 R /Resources 23 0 R /Contents 22 0 R >> endobj 25 0 obj << /Type /Page /Parent 8 0 R /Resources 27 0 R /Contents 26 0 R >> endobj 28 0 obj << /Type /Page /Parent 8 0 R /Resources 30 0 R /Contents 29 0 R >> endobj 31 0 obj << /Type /Page /Parent 8 0 R /Resources 33 0 R /Contents 32 0 R >> endobj 34 0 obj << /Type /Page /Parent 8 0 R /Resources 36 0 R /Contents 35 0 R >> endobj 37 0 obj << /Type /Page /Parent 41 0 R /Resources 39 0 R /Contents 38 0 R >> endobj 42 0 obj << /Type /Page /Parent 41 0 R /Resources 44 0 R /Contents 43 0 R >> endobj 8 0 obj << /Type /Pages /Kids [1 0 R 9 0 R 12 0 R 15 0 R 18 0 R 21 0 R 25 0 R 28 0 R 31 0 R 34 0 R] /Count 10 /Parent 40 0 R >> endobj 41 0 obj << /Type /Pages /Kids [37 0 R 42 0 R] /Count 2 /Parent 40 0 R >> endobj 40 0 obj << /Type /Pages /Kids [8 0 R 41 0 R ] /Count 12 /MediaBox [0 0 612 792] >> endobj 47 0 obj << /Type /Catalog /Pages 40 0 R >> endobj 48 0 obj << /CreationDate (D:191000713153054) /Producer (Acrobat Distiller Command 3.02b for Solaris 2.3 and later \(SPARC\)) /Creator (groff version 1.15) >> endobj xref 0 49 0000000000 65535 f 0000046114 00000 n 0000000016 00000 n 0000004633 00000 n 0000044585 00000 n 0000044685 00000 n 0000044783 00000 n 0000044418 00000 n 0000047108 00000 n 0000046194 00000 n 0000004747 00000 n 0000008894 00000 n 0000046276 00000 n 0000009009 00000 n 0000013303 00000 n 0000046359 00000 n 0000013418 00000 n 0000017830 00000 n 0000046442 00000 n 0000017945 00000 n 0000022267 00000 n 0000046525 00000 n 0000022382 00000 n 0000025683 00000 n 0000044489 00000 n 0000046608 00000 n 0000025809 00000 n 0000028630 00000 n 0000046691 00000 n 0000028756 00000 n 0000032699 00000 n 0000046774 00000 n 0000032825 00000 n 0000036097 00000 n 0000046857 00000 n 0000036223 00000 n 0000039921 00000 n 0000046940 00000 n 0000040036 00000 n 0000043713 00000 n 0000047324 00000 n 0000047243 00000 n 0000047024 00000 n 0000043828 00000 n 0000044200 00000 n 0000044295 00000 n 0000044882 00000 n 0000047415 00000 n 0000047466 00000 n trailer << /Size 49 /Root 47 0 R /Info 48 0 R /ID [] >> startxref 47632 %%EOF bibclean-2.11.4.1.orig/testscr1.org0000644000175200017520000005770705325052550016170 0ustar debiandebian@Comment< This file contains a sample set of bibliography data base entries in Scribe format. It is used for testing the -scribe option of bibclean. The first entry uses each of the 7 delimiters, each of the 3 separators, undelimited values, and embedded quotes to illustrate the flexibility of Scribe syntax. Note, however, that nested delimiters are NOT permitted by Scribe; BibTeX permits nested braces and braced quotes. > @Comment{Old style comment} @Comment{ This is a block comment with two lines. } @Comment{ This is a block comment with two lines and embedded braces: {one} {two} {three} } @Comment{ This is a block comment with two lines and embedded braces: {one} {two} {three}. Here are some mismatched braces: { { { } } } {} {} } @inproceedings( Adomaitis79Computer, key = <"Outer and inner " quotes">, author {V. Adomaitis}, title / , year 1979, booktitle = [Proc. 6-th Man-Computer Communications Conference], editor = "M. Wein and E. Swail", publisher = ' Computer Graphics Section, National Research Council of Canada', pages = `161-167`, address = {Ottawa, Ontario, Canada, K1A 0R8}, keywords = {Applications, video illustration system} ) @STRING( HSchV = {Universit\"atsdruckerei und Verlag Hermann Schmidt}) @STRING( a.HSchV = {Mainz}) @article(ntg:PH92, AUTHOR = {Nico Poppelier and Amy Hendrickson}, TITLE = {Book reviews}, journal = ntg, YEAR = 1992, MONTH = may, volume = 92, NUMBER = 1, PAGES = {135-138}, annote = [Contains reviews of ``\LaTeX{} for Everyone'' \cite{PCTeX:JHa91}, ``Practical SGML'' \cite{Kluwer:EvHe90}, and ``\TeX{} by Topic, A \TeX{}nician's Reference'' \cite{A-W:VEi91}.], keywords = {Reviews}, ) @article(tub:NPo92b, AUTHOR = {Nico Poppelier}, TITLE = [Book reviews: {Jane Hahn, {\LaTeX} for Everyone}; {Eric van Herwijnen, Practical {SGML}}], JOURNAL = tub, YEAR = 1992, VOLUME = 13, NUMBER = 2, MONTH = jul, PAGES = {182-184}, annote = , keywords = {?}, ) @COMMENT(Some standard works describing conventions for citations and bibliographies) @TECHREPORT(bs-1629, AUTHOR = "BSI", TITLE = "Bibliographic References", INSTITUTION = "British Standards Institution", YEAR = "1976", TYPE = "BS", NUMBER = "1629" ) @TECHREPORT(bs-5605, AUTHOR = "BSI", TITLE = "Citing Publications by Bibliographic References", INSTITUTION = "British Standards Institution", YEAR = "1978", TYPE = "BS", NUMBER = "5606" ) @TECHREPORT(bs-6371, AUTHOR = "BSI", TITLE = "Citation of unpublished documents", INSTITUTION = "British Standards Institution", YEAR = "1983", TYPE = "BS", NUMBER = "6371" ) @BOOK(butcher-81, TITLE = "Copy-editing", AUTHOR = "Judith Butcher", PUBLISHER = "Cambridge University Press", YEAR = "1981", EDITION = "2nd" ) @BOOK(chicago-82, TITLE = "The {C}hicago Manual of Style", AUTHOR = "`Chicago'", YEAR = "1982", PUBLISHER = "University of Chicago Press", EDITION = "13th" ) @COMMENT(Some examples taken from the document describing BS 5605) @ARTICLE(howells-51, AUTHOR = "W. W. Howells", TITLE = "Factors of Human Physique", JOURNAL = "American Journal of Physical Anthropology", VOLUME = "9", PAGES = "159-192", YEAR = "1951" ) @ARTICLE(howells-66-pop, AUTHOR = "W. W. Howells", TITLE = "Population Distances: Biological, Linguistic, Geographical and Environmental", JOURNAL = "Current Anthropology", VOLUME = "7", PAGES = "531--540", YEAR = "1966" ) @ARTICLE(howells-66-var, AUTHOR = "W. W. Howells", TITLE = "Variability in Family Lines vs. Population Variability", JOURNAL = "Annals of the {New York Academy of Sciences}", VOLUME = "134", PAGES = "624--631", YEAR = "1966" ) @ARTICLE(johnson-74, AUTHOR = "G. B. Johnson", TITLE = "Enzyme Polymorphism", JOURNAL = "Science", VOLUME = "184", PAGES = "28--37", YEAR = "1974" ) @ARTICLE(johnson-howells, AUTHOR = "G. B. Johnson and W. W. Howells", TITLE = "Title title title title title title title title title title", JOURNAL = "Journal journal journal", YEAR = "1974" ) @ARTICLE(johnson-etc, AUTHOR = "G. B. Johnson and W. W. Howells and A. N. Other", TITLE = "Title title title title title title title title title title", JOURNAL = "Journal journal journal", YEAR = "1976" ) @MANUAL(anon-67, AUTHOR = "Anon.", TITLE = "Title title title title title title title title title title", ORGANIZATION = "Organization organization organization", YEAR = "1967" ) @ARTICLE(aslin-49, AUTHOR = "E. J. Aslin", TITLE = "Photostat recording in library work", JOURNAL = "Aslib Proceedings", YEAR = "1949", VOLUME = "1", PAGES = "49--52" ) @ARTICLE(fletcher-hopkins, AUTHOR = "W. M. Fletcher and F. G. Hopkins", TITLE = "Lactic Acid in Amphibian Muscle", JOURNAL = "J. Physiol.", YEAR = "1907", VOLUME = "35", PAGES = "247--309" ) @INCOLLECTION(hanson-67, AUTHOR = "C. W. Hanson", TITLE = "Subject inquiries and literature searching", BOOKTITLE = "Handbook of special librarianship and information work", EDITOR = "W. Ashworth", YEAR = "1967", EDITION = "3rd", PAGES = "414--452" ) @INBOOK(wright-63, AUTHOR = "R. C. Wright", TITLE = "Report Literature", BOOKTITLE = "Special Materials in the Library", EDITOR = "J. Burkett and T. S. Morgan", YEAR = "1963", PAGES = "46--59", publisher = "The Library Association", address = London, ) @BOOK(BCM-59, AUTHOR = "{Association of British Chemical Manufacturers}", TITLE = "British chemicals and their manufacturers", PUBLISHER = , YEAR = "1959" ) @INBOOK(feigl-58, AUTHOR = "F. Feigl", TITLE = "Spot Tests in Organic Analysis", YEAR = "1958", PUBLISHER = "Publisher publisher", EDITION = "5th", CHAPTER = "6" ) @COMMENT(Some examples taken from document describing BS 1629) @BOOK(hoel-71-whole, AUTHOR = "Paul Gerhard Hoel", TITLE = "Elementary Statistics", PUBLISHER = "Wiley", YEAR = "1971", SERIES = "Wiley series in probability and mathematical statistics", ADDRESS = "New York, Chichester", EDITION = "3rd", NOTE = "ISBN 0~471~40300" ) @INBOOK(hoel-71-portion, AUTHOR = "Paul Gerhard Hoel", TITLE = "Elementary Statistics", PUBLISHER = "Wiley", YEAR = "1971", SERIES = "Wiley series in probability and mathematical statistics", ADDRESS = "New York, Chichester", EDITION = "3rd", NOTE = "ISBN 0~471~40300", PAGES = "19--33" ) @BOOK(singer-whole, YEAR = "1954--58", EDITOR = "Charles Joseph Singer and E. J. Holmyard and A. R. Hall", TITLE = "A history of technology", ADDRESS = "London", PUBLISHER = "Oxford University Press", NOTE = "5 vol." ) @INCOLLECTION(singer-portion-chapter, KEY = `singer-portion-chapter`, TITLE = "The late nineteenth century", YEAR = "1954--58", EDITOR = "Charles Joseph Singer and E. J. Holmyard and A. R. Hall", BOOKTITLE = "A history of technology", ADDRESS = "London", PUBLISHER = "Oxford University Press", TYPE = "Vol.", CHAPTER = "5" ) @INCOLLECTION(singer-portion-volume, TITLE = "The late nineteenth century", KEY = 'singer-portion-volume', YEAR = "1954--58", EDITOR = "Charles Joseph Singer and E. J. Holmyard and A. R. Hall", BOOKTITLE = "A history of technology", ADDRESS = "London", PUBLISHER = "Oxford University Press", VOLUME = "5" ) @MANUAL(bs-2570-manual, AUTHOR = "BSI", TITLE = "Natural Fibre Twines", ORGANIZATION = "British Standards Institution", ADDRESS = "London", EDITION = "3rd", YEAR = "1973", NOTE = "BS 2570" ) @TECHREPORT(bs-2570-techreport, AUTHOR = "BSI", TITLE = "Natural Fibre Twines", INSTITUTION = "British Standards Institution", ADDRESS = "London", YEAR = "1973", TYPE = "BS", NUMBER = "2570", NOTE = "3rd. edn." ) @INBOOK(bs-2570-inbook, AUTHOR = "BSI", TITLE = "{BS} 2570: Natural Fibre Twines", PUBLISHER = "British Standards Institution", ADDRESS = "London", YEAR = "1973", EDITION = "3rd", CHAPTER = "5", TYPE = "{Table}" ) @TECHREPORT(ellis-walton, AUTHOR = "B. Ellis and A. K. Walton", TITLE = "A Bibliography on Optical Modulators", INSTITUTION = "Royal Aircraft Establishment", YEAR = "1971", NUMBER = "RAE-TR-71009" ) @ARTICLE(godfrey-59, AUTHOR = "G. Bernard Godfrey", TITLE = "Joints in Tubular Structures", JOURNAL = "Struct. Eng.", YEAR = "1959", VOLUME = "37", NUMBER = "4", PAGES = "126--135" ) @INCOLLECTION(ramsbottom-31, AUTHOR = "John Ramsbottom", TITLE = "Fungi Pathogenic to Man", BOOKTITLE = "A System of Bacteriology in relation to Medicine", PUBLISHER = "HMSO, for Medical Research Council", YEAR = "1931", VOLUME = "8", PAGES = "11--70", ADDRESS = "London" ) @ARTICLE(hanlon-72, AUTHOR = "Joseph Hanlon", TITLE = "Designing Buildings by Computer", JOURNAL = "New Scientist", YEAR = "1972", MONTH = "31 Aug", PAGES = "429--432" ) @TECHREPORT(winget-67, AUTHOR = "{Winget Ltd.}", TITLE = "Detachable Bulldozer Attachment for Dumper Vehicles", YEAR = "1967", institution = [unknown], TYPE = "GB Patent Specification", NUMBER = "1060631", MONTH = "8 Mar", ) @ARTICLE(bry-afflerbach, AUTHOR = "I. Bry and L. Afflerbach", TITLE = "In search of an organizing principle for behavioural science literature", JOURNAL = "Community Mental Health", YEAR = "1968", VOLUME = "4", NUMBER = "1", PAGES = "75--84" ) @INCOLLECTION(ranganathan-51, AUTHOR = "S. R. Ranganthan", TITLE = "Colon classification and its approach to documentation", BOOKTITLE = "Bibliographic Organization", EDITOR = "Jesse H. Shera and Margaret E. Egan", publisher = "University of Chicago Press", YEAR = "1951", PAGES = "94--105" ) @BOOK(mccolvin-nodate, AUTHOR = "L. R. McColvin", TITLE = "Libraries in {Britain}", PUBLISHER = "{Longmans Green, for the British Council}", ADDRESS = "London", YEAR = 1961, ) @COMMENT(Some examples taken from document describing BS 6371) @UNPUBLISHED(exchequer-34-39, AUTHOR = "Exchequer", YEAR = "1634--1639", TITLE = "Act books", NOTE = "Edinburgh, Scottish Record Office, E.4/5" ) @UNPUBLISHED(traquair-38, AUTHOR = "{Earl of} Traquair", YEAR = "1638", TITLE = "Letter to {Marquess of Hamilton, 28 Aug.}", NOTE = "Lennoxlove (E.~Lothian), Muniments of Duke of Hamilton and Brandon, C.1, no. 963" ) @UNPUBLISHED(pym-24, AUTHOR = "J. Pym", YEAR = "1624", TITLE = "Diary", NOTE = "Northampton, Northamptonshire Record Office, Finch-Hatton 50" ) @PHDTHESIS(croft-78, AUTHOR = "W. B. Croft", YEAR = "1978", TITLE = "Organizing and searching large files of document descriptions", SCHOOL = "Cambridge University" ) @COMMENT(Some examples taken from Chapter 10 of "Copy-editing" by Judith Butcher) @BOOK(darcy-20-amaz, AUTHOR = "Firstname D'Arcy", TITLE = "Title title title title title title title title title title", PUBLISHER = "Publisher publisher publisher", YEAR = "1920" ) @BOOK(darcy-20-again, AUTHOR = "Firstname D'Arcy", TITLE = "Title title title title title title title title title title", PUBLISHER = "Publisher publisher publisher", YEAR = "1920" ) @ARTICLE(jones-n-h-r, AUTHOR = "Firstname Jones and Firstname Norman and Firstname Hazel and Firstname Robinson", TITLE = "Title title title title title title title title title title", YEAR = "1962", JOURNAL = "Journal journal journal" ) @ARTICLE(jones-s-r, AUTHOR = "Firstname Jones and Firstname Smith and Firstname Robinson", TITLE = "Title title title title title title title title title title", YEAR = "1962", JOURNAL = "Journal journal journal" ) @ARTICLE(jones-65, AUTHOR = "Firstname Jones", TITLE = "Title title title title title title title title title title", YEAR = "1965", JOURNAL = "Journal journal journal" ) @ARTICLE(jones-69, AUTHOR = "Firstname Jones", TITLE = "Title title title title title title title title title title", YEAR = "1969", JOURNAL = "Journal journal journal" ) @ARTICLE(jones-abrams, AUTHOR = "Firstname Jones and Firstname Abrams", TITLE = "Title title title title title title title title title title", YEAR = "1968", JOURNAL = "Journal journal journal" ) @ARTICLE(jones-smith, AUTHOR = "Firstname Jones and Firstname Smith", TITLE = "Title title title title title title title title title title", YEAR = "1965", JOURNAL = "Journal journal journal" ) @ARTICLE(jones-a-s, AUTHOR = "Firstname Jones and Firstname Abrams and Firstname Smith", TITLE = "Title title title title title title title title title title", YEAR = "1966", JOURNAL = "Journal journal journal" ) @ARTICLE(bloggs-60, AUTHOR = "A. J. Bloggs", TITLE = "Title title title title title title title title title title", JOURNAL = "Journal journal journal", YEAR = "1960" ) @ARTICLE(bloggs-61, AUTHOR = "A. J. Bloggs", TITLE = "Title title title title title title title title title title", JOURNAL = "Journal journal journal", YEAR = "1961" ) @ARTICLE(bloggs-jones, AUTHOR = "A. J. Bloggs and X. Y. Jones", TITLE = "Title title title title title title title title title title", JOURNAL = "Journal journal journal", YEAR = "1959" ) @ARTICLE(bloggs-s-j, AUTHOR = "A. J. Bloggs and R. S. Smith and X. Y. Jones", TITLE = "Title title title title title title title title title title", JOURNAL = "Journal journal journal", YEAR = "1955" ) @ARTICLE(brown-f-s, AUTHOR = "H. W. Brown and A. S. Forbes and S. D. Smith", TITLE = "Title title title title title title title title title title", JOURNAL = "Journal journal journal", YEAR = "1900" ) @INCOLLECTION(eckstein-zuckerman, AUTHOR = "P. Eckstein and S. Zuckermann", TITLE = "Morphology of the Reproductive Tract", BOOKTITLE = "Marshall's Physiology of Reproduction", PUBLISHER = "Longman", YEAR = "1960", EDITOR = "A. S. Parkes", VOLUME = "1", PAGES = "43--154", ADDRESS = "London" ) @ARTICLE(heller-lederis, AUTHOR = "H. Heller and K. Lederis", TITLE = "Paper chromatography of small amounts of vasopressin and oxytocin", YEAR = "1958", JOURNAL = "Nature", ADDRESS = "London", VOLUME = "182", PAGES = "1231--2" ) @BOOK(wood-61, AUTHOR = "R. H. Wood", TITLE = "Plastic and Elastic Design of Slabs and Plates", PUBLISHER = "Thames \& Hudson", ADDRESS = "London", YEAR = "1961" ) @COMMENT(Some examples taken from Chapter 15 of the Chicago Manual of Style) @BOOK(pratt-75, AUTHOR = "Firstname Pratt", TITLE = "Title title title title title title title title title title", PUBLISHER = "Publisher publisher publisher", YEAR = "1975" ) @ARTICLE(light-72, AUTHOR = "Firstname Light", TITLE = "Title title title title title title title title title title", JOURNAL = "Journal journal journal", YEAR = "1972" ) @ARTICLE(light-wong, AUTHOR = "Firstname Light and Firstname Wong", TITLE = "Title title title title title title title title title title", JOURNAL = "Journal journal journal", YEAR = "1975" ) @ARTICLE(kingston-76, AUTHOR = "Firstname Kingston", TITLE = "Title title title title title title title title title title", JOURNAL = "Journal journal journal", YEAR = "1976" ) @ARTICLE(kelley-96-spring, AUTHOR = "Firstname Kelley", TITLE = "Title title title title title title title title title title", JOURNAL = "Journal journal journal", YEAR = "1896" ) @ARTICLE(kelley-96-autumn, AUTHOR = "Firstname Kelley", TITLE = "Title title title title title title title title title title", JOURNAL = "Journal journal journal", YEAR = "1896" ) @ARTICLE(kelley-07, AUTHOR = "Firstname Kelley", TITLE = "Title title title title title title title title title title", JOURNAL = "Journal journal journal", YEAR = "1907" ) @BOOK(strong-01, AUTHOR = "Firstname Strong", TITLE = "Title title title title title title title title title title", PUBLISHER = "Publisher publisher publisher", YEAR = "1901" ) @BOOK(strong-02, AUTHOR = "Firstname Strong", TITLE = "Title title title title title title title title title title", PUBLISHER = "Publisher publisher publisher", YEAR = "1902" ) @BOOK(shotwell-01, AUTHOR = "Firstname Shotwell", TITLE = "Title title title title title title title title title title", PUBLISHER = "Publisher publisher publisher", YEAR = "1901" ) @COMMENT(Some examples taken from Chapter 16 of the Chicago Manual of Style) @TECHREPORT(brunswick-85, AUTHOR = "`Brunswick'", TITLE = "The piper and the rats: A musical experiment", INSTITUTION = "Rodent Activities Termination Section (RATS), Pest Control Division, Brunswick Public Welfare Department", YEAR = "1985", NUMBER = "1984", ADDRESS = "Hamelin" ) @BOOK(kendeigh-52, AUTHOR = "S. C. Kendeigh", YEAR = "1952", TITLE = "Prenatal care and its evolution in birds", SERIES = "Illinois Biological Monographs", VOLUME = "22", NUMBER = "1--3", ADDRESS = "Champaign", PUBLISHER = "University of Illinois Press" ) @BOOK(chapman-75, AUTHOR = "Jefferson Chapman", YEAR = "1975", TITLE = "The {Icehouse Bottom} Site---{40MR23}", SERIES = "University of Tennessee Department of Anthropology Publication", NUMBER = "23", ADDRESS = "Knoxville", PUBLISHER = "Univ. of Tennessee Press" ) @BOOK(hershkovitz-62, AUTHOR = "P. Hershkovitz", YEAR = "1962", TITLE = "Evolution of {Neotropical} cricetine rodents ({Muridae}) with special reference to the phyllotine group", SERIES = "Fieldiana: Zoology", VOLUME = "46", ADDRESS = "Chicago", PUBLISHER = "Field Museum of Natural History" ) @BOOK(wright-78-book, TITLE = "Evolution and the genetics of populations", AUTHOR = "Sewall Wright", YEAR = "1978", ADDRESS = "Chicago", PUBLISHER = "Univ. of Chicago Press", VOLUME = "4" ) @INCOLLECTION(wright-78-incollection, TITLE = "Variability within and among natural populations", AUTHOR = "Sewall Wright", BOOKTITLE = "Evolution and the genetics of populations", YEAR = "1978", ADDRESS = "Chicago", PUBLISHER = "Univ. of Chicago Press", TYPE = "Vol.", CHAPTER = "4" ) @INCOLLECTION(ogilvy-65, AUTHOR = "David Ogilvy", TITLE = "The Creative Chef", BOOKTITLE = "The Creative Organization", YEAR = "1965", EDITOR = "Gary A. Steiner", ADDRESS = "Chicago", PUBLISHER = "University of Chicago Press", PAGES = "199-213" ) @INCOLLECTION(mcneill-63, AUTHOR = "William H. McNeill", YEAR = "1963", TITLE = "The Era of {Middle Eastern} Dominance to 500 {\sc b.c.}", BOOKTITLE = "The Rise of the {West}", PUBLISHER = "{University of Chicago Press}", ADDRESS = "Chicago", TYPE = "Part", CHAPTER = "1" ) @INCOLLECTION(thomson-71, AUTHOR = "Virgil Thomson", TITLE = "Cage and the Collage of Noises", BOOKTITLE = "American Music since 1910", ADDRESS = "New York", PUBLISHER = "Holt, Rinehart and Winston", YEAR = "1971", CHAPTER = "8" ) @INCOLLECTION(gordon-75, TITLE = "The Tunes of {Chicken Little}", AUTHOR = "Robert Gordon", YEAR = "1975", BOOKTITLE = "Playwrights for Tomorrow: A Collection of Plays", EDITOR = "Arthur H. Ballet", VOLUME = "13", ADDRESS = "Minneapolis", PUBLISHER = "University of Minnesota Press", NOTE = "One of four plays included in vol. 13" ) @INCOLLECTION(milton-24, AUTHOR = "John Milton", TITLE = "Paradise Lost", BOOKTITLE = "The Complete Poetical Works of {John Milton}", EDITION = "{Student's Cambridge}", ADDRESS = "Boston", PUBLISHER = "Houghton Mifflin", YEAR = "1924", EDITOR = "William Vaughn Moody" ) @INPROCEEDINGS(chomsky-73, AUTHOR = "N. Chomsky", YEAR = "1973", TITLE = "Conditions on Transformations", BOOKTITLE = "A festschrift for {Morris Halle}", EDITOR = "S. R. Anderson and P. Kiparsky", PUBLISHER = "Holt, Rinehart \& Winston", ADDRESS = "New York" ) @INPROCEEDINGS(chave-64, AUTHOR = "K. E. Chave", YEAR = "1964", TITLE = "Skeletal durability and preservation", BOOKTITLE = "Approaches to paleoecology", EDITOR = "J. Imbrie and N. Newel", ADDRESS = "New York", PUBLISHER = "Wiley", PAGES = "377-87" ) @BOOK(smart-76, AUTHOR = "Ninian Smart", YEAR = "1976", TITLE = "The religious experience of mankind", PUBLISHER = "Schribner", ADDRESS = "New York", EDITION = "2nd" ) @ARTICLE(jackson-79, AUTHOR = "Richard Jackson", YEAR = "1979", TITLE = "Running down the up-escalator: Regional inequality in {Papua New Guinea}", JOURNAL = "Australian Geographer", VOLUME = "14", MONTH = "May", PAGES = "175--84" ) @ARTICLE(prufer-64, AUTHOR = "Olaf Prufer", YEAR = 1964, TITLE = "The {Hopewell} Cult", JOURNAL = "Scientific {American}", MONTH = dec, PAGES = "90--102" ) @PHDTHESIS(mann-68, AUTHOR = "A. E. Mann", YEAR = "1968", TITLE = "The palaeodemography of {Australopithecus}", TYPE = "Ph.D. diss.", SCHOOL = "University of California, Berkeley" ) @PHDTHESIS(maguire-76, AUTHOR = "J. Maguire", YEAR = "1976", TITLE = "A taxonomic and ecological study of the living and fossil {Hystricidae} with particular reference to southern {Africa}", TYPE = "Ph.D. diss.", SCHOOL = "Department of Geology, University of the Witwatersrand", ADDRESS = "Johannesburg" ) @UNPUBLISHED(downes-74, TITLE = "Systemic grammar and structural sentence relatedness", AUTHOR = "W. J. Downes", YEAR = "1974", NOTE = "London School of Economics. Mimeo." ) @MISC(hunt-76, AUTHOR = "Hunt, Horace [pseud.]", TITLE = "Interview", YEAR = "1976", HOWPUBLISHED = "Tape recording, Pennsylvania Historical and Museum Commission, Harrisburg", NOTE = "Interview by {Ronald Schatz, 16 May 1976}", ) bibclean-2.11.4.1.orig/xctype.h0000644000175200017520000000171106034243643015357 0ustar debiandebian#ifndef XCTYPE_H_DEFINED_ #define XCTYPE_H_DEFINED_ #ifdef HAVE_CTYPE_H #include #else #endif /* We need the isxxx() functions/macros from to work correctly for 8-bit characters, but regrettably, those in many C implementations fail to do so if char is a signed data type, and the character is out of the range 0..127. If your compiler lacks an unsigned char data type, then you will have to change (unsigned char)(c) to (int)(0xff & (unsigned int)(c)). With this change, it is important that none of these be invoked with c == EOF. */ #define Isalnum(c) isalnum((unsigned char)(c)) #define Isalpha(c) isalpha((unsigned char)(c)) #define Isdigit(c) isdigit((unsigned char)(c)) #define Isgraph(c) isgraph((unsigned char)(c)) #define Islower(c) islower((unsigned char)(c)) #define Isprint(c) isprint((unsigned char)(c)) #define Isspace(c) isspace((unsigned char)(c)) #define Isupper(c) isupper((unsigned char)(c)) #endif /* XCTYPE_H_DEFINED_ */ bibclean-2.11.4.1.orig/testbib4.bok0000644000175200017520000001123505574137107016116 0ustar debiandebian% /u/sy/beebe/tex/bibclean/testbib4.org, Mon Jan 18 09:52:55 1993 % Edit by Nelson H. F. Beebe % This file stress-tests bibclean and biblex by % presenting them with input that has spaces % liberally sprinkled throughout, especially % between tokens. It is designed as a useful test % of a proposed grammar for BibTeX. %================================================= % Test 1: simple case without extra spaces @Preamble{"anythinggoes"} @Include{a-file-name-goes-here} @String{abb = "abbreviation"} @Article{the-key, author = "A. U. Thor", title = "The Title", journal = "The Journal", year = "1993", volume = "23", number = "1", pages = "17--21", month = jan, bibdate = "Mon Jan 18 09:59:44 1993", } %================================================= % Test 2: simple one-line cases with intervening % spaces @Preamble{"anything goes"} @Include{ a-file-name-goes-here} @String{abb = "abbreviation"} @Article{the-key, author = "A. U. Thor", title = "The Title", journal = "The Journal", year = "1993", volume = "23", number = "1", pages = "17--21", month = jan, bibdate = "Mon Jan 18 09:59:44 1993", } %================================================= % Test 3: change blanks to newlines in previous % test @Preamble{"anything goes"} @Include{ a-file-name-goes-here} @String{abb = "abbreviation"} @Article{the-key, author = "A. U. Thor", title = "The Title", journal = "The Journal", year = "1993", volume = "23", number = "1", pages = "17--21", month = jan, bibdate = "Mon Jan 18 09:59:44 1993", } %================================================= % Test 4: change newlines to doubled newlines in % previous test @Preamble{"anything goes"} @Include{ a-file-name-goes-here} @String{abb = "abbreviation"} @Article{the-key, author = "A. U. Thor", title = "The Title", journal = "The Journal", year = "1993", volume = "23", number = "1", pages = "17--21", month = jan, bibdate = "Mon Jan 18 09:59:44 1993", } %================================================= % Test 5: Change newline to % newline-comment-newline in previous test. @ % this is a comment Preamble % this is a comment {% this is a comment "anything" # % this is a comment "goes"% this is a comment } % this is a comment % this is a comment @ % this is a comment Include % this is a comment { % this is a comment a-file-name-goes-here % this is a comment } % this is a comment % this is a comment @ % this is a comment String % this is a comment {% this is a comment abb% this is a comment = % this is a comment "abbreviation"% this is a comment } % this is a comment % this is a comment % this is a comment @ % this is a comment Article % this is a comment {the-key% this is a comment , % this is a comment author% this is a comment = % this is a comment "A. U. Thor"% this is a comment , % this is a comment title% this is a comment = % this is a comment "The Title"% this is a comment , % this is a comment journal% this is a comment = % this is a comment "The Journal"% this is a comment , % this is a comment year% this is a comment = % this is a comment "1993"% this is a comment , % this is a comment volume% this is a comment = % this is a comment "23"% this is a comment , % this is a comment number% this is a comment = % this is a comment "1"% this is a comment , % this is a comment pages% this is a comment = % this is a comment "17--21"% this is a comment , % this is a comment month% this is a comment = % this is a comment jan% this is a comment , % this is a comment bibdate% this is a comment = % this is a comment "Mon Jan 18 09:59:44 1993"% this is a comment , % this is a comment } % this is a comment %================================================= % Test 7: other kinds of embedded space characters % We add CR before LF, and insert FF VT before % each entry. @Preamble{"anythinggoes"} @Include{a-file-name-goes-here} @String{abb = "abbreviation"} @Article{the-key, author = "A. U. Thor", title = "The Title", journal = "The Journal", year = "1993", volume = "23", number = "1", pages = "17--21", month = jan, bibdate = "Mon Jan 18 09:59:44 1993", } bibclean-2.11.4.1.orig/toklst.h0000644000175200017520000000211606034271262015361 0ustar debiandebian#ifndef TOKLST_H_DEFINED_ #define TOKLST_H_DEFINED_ #if defined(HAVE_STDC) typedef enum token_list { TOKEN_UNKNOWN = 0, TOKEN_ABBREV = 1, /* alphabetical order, starting at 1 */ TOKEN_AT, TOKEN_COMMA, TOKEN_COMMENT, TOKEN_ENTRY, TOKEN_EQUALS, TOKEN_FIELD, TOKEN_INCLUDE, TOKEN_INLINE, TOKEN_KEY, TOKEN_LBRACE, TOKEN_LITERAL, TOKEN_NEWLINE, TOKEN_PREAMBLE, TOKEN_RBRACE, TOKEN_SHARP, TOKEN_SPACE, TOKEN_STRING, TOKEN_VALUE } token_t; #else /* K&R style */ typedef int token_t; #define TOKEN_UNKNOWN 0 #define TOKEN_ABBREV 1 /* alphabetical order, starting at 1 */ #define TOKEN_AT 2 #define TOKEN_COMMA 3 #define TOKEN_COMMENT 4 #define TOKEN_ENTRY 5 #define TOKEN_EQUALS 6 #define TOKEN_FIELD 7 #define TOKEN_INCLUDE 8 #define TOKEN_INLINE 9 #define TOKEN_KEY 10 #define TOKEN_LBRACE 11 #define TOKEN_LITERAL 12 #define TOKEN_NEWLINE 13 #define TOKEN_PREAMBLE 14 #define TOKEN_RBRACE 15 #define TOKEN_SHARP 16 #define TOKEN_SPACE 17 #define TOKEN_STRING 18 #define TOKEN_VALUE 19 #endif #endif /* TOKLST_H_DEFINED_ */ bibclean-2.11.4.1.orig/testbib3.org0000644000175200017520000001065405727412600016127 0ustar debiandebian%% Test cases for -fix-names @article{foo, author = "Jones, Jr., William and Smith, Sr., Robert", editor = "Jones Jr., William and Smith Sr., Robert", author = "Jones, Sr., William and Smith, Sr., Robert", editor = "Jones Sr., William and Smith Sr., Robert", author = "Jones, Jr., William and {Smith, Sr.}, Robert", editor = "Jones Jr., William and {Smith Sr.}, Robert", author = "Jones, Sr., William and {Smith, Sr.}, Robert", editor = "Jones Sr., William and {Smith Sr.}, Robert", author = "von Beethoven, Ludwig", editor = "{von Beethoven}, Ludwig", author = "Charles XIII, King", editor = "Elizabeth XXXIV, Queen", } %% Test cases for -fix-font-changes @article{test1, author = "A. Bominaar and B. Snaar-Jagalska and F. Kesbeke and P. van Haastert", title = "Signal-transducing {G} proteins in {\it Dictyosteliun Discoideum}", journal = "??", year = "1989", volume = "27", pages = "369-375", } @article{test2, author = "A. Bominaar and B. Snaar-Jagalska and F. Kesbeke and P. van Haastert", title = "Signal-transducing {G} proteins in {\it {D}ictyosteliun {D}iscoideum}", journal = "??", year = "1989", volume = "27", pages = "369-375", } @article{test3, author = "A. Bominaar and B. Snaar-Jagalska and F. Kesbeke and P. van Haastert", title = "Signal-transducing {G} proteins in {{\it Dictyosteliun Discoideum}}", journal = "??", year = "1989", volume = "27", pages = "369-375", } %% Test cases for month processing @Article{date-test, month = "13 October", month = "23 " # jan, month = "23 January", month = "3 January", month = "Apr.", month = "April", month = "Aug.", month = "August", month = "Dec.", month = "December", month = "Feb.", month = "February", month = "Jan.", month = "Janu.", month = "January 23", month = "January 3", month = "January", month = "Jul.", month = "July", month = "Jun.", month = "June", month = "Mar.", month = "March", month = "May", month = "Nov", month = "Nov.", month = "November", month = "Oct.", month = "October", month = "Sep.", month = "Sept.", month = "September", month = "unknown", month = aug, month = jan # " 23", month = jan, month = nov, month = "August and November", month = "February and May", month = "May/June", } %% Test cases for long string values @Article{ber90, author = "M. J. Berridge and B. V. L. Potter", title = "Inositol trisphosphate analogues induce different oscillatory patterns in {\xenopus} oocytes", journal = "Cell Regulation", year = 1990, volume = 1, pages = "675--681", annote = "calcium dynamics: The different analogues of {\IP{3}} that were tested were {\IP{3}}, Ins(2,4,5)P${}_3$ and Ins(1,3,4,5)P${}_4$. These were injected through a double barrel electrode and the {\Cl} current was then used to measure the {\Ca{}} response. ``The naturally occurring {\IP{3}} produced a large initial transient followed by a single transient or burst of oscillations. By contrast, two analogues ({\IP{3}} and Ins(2,4,5)P${}_3$) produced different oscillatory pattern made up of a short burst of shape transients. $\cdots$ Both analogues failed to induce a response when injected after the initial {\IP{3}}-induced response, indicating that they act on the same intracellular pool of \Ca{} [not necessarily the case]. The existence of different oscillatory patterns suggests that there may be different mechanisms for setting up \Ca{} oscillations. The {\IP{3}} and Ins(2,4,5)P${}_3$ analogues may initiate oscillations through a negative feedback mechanism whereby \Ca{} inhibits its own release. The two-pool model is most likely mechanism to describe the {\IP{3}}-induced oscillations.''" } %%% Test case for bug fix of bibclean 2.10.1: @INPROCEEDINGS{Barthel94b, AUTHOR = {Kai Uwe Barthel and J\"{o}rg Sch\"{u}ttemeyer and Thomas Voy\'{e} and Peter Noll}, AUTHOR = "Kai Uwe Barthel and J{\"{o}}rg Sch{\"{u}}ttemeyer and Thomas Voy\'{e} and Peter Noll", } bibclean-2.11.4.1.orig/rofvms.awk0000644000175200017520000000350205277050062015711 0ustar debiandebian# rofvms.awk -*-awk-*- # Filter to convert nroff -man output to VMS .hlp file format according # to the rules: # # 13 or more consecutive blank lines are reduced to 1 # 3--12 consecutive blank lines are dropped # 2 consecutive blank lines are reduced to 1 # All others output verbatim. # # The peculiar number 13 handles the case where a paragraph break # coincides with a page break. # # In addition, whenever a line in non-blank in column 1, and then # previous line was blank, we insert a blank line; this provides # vertical space before a section heading. # # The output of nroff -man on different UNIX systems is regrettably # quite variable in appearance; this file is likely to need # modifications on other than Sun OS. # # Too bad nroff doesn't have an option to suppress titling! # # The NAME section head becomes 1 BIBCLEAN, and others become # 2 XXX followed by XXX. # [06-Nov-1992] # Match and delete page headers: xxx(nnn) .... xxx(nnn) /^[A-Za-z][-_A-Za-z0-9]*\([0-9A-Za-z]+\).*[A-Za-z][-_A-Za-z0-9]*\([0-9A-Za-z]+\)$/ {next;} # Match and delete page footers: Sun Release ...nnn # These vary from system to system, so extra patterns may be needed here /^Sun Release.*[0-9]+$/ {next;} # Sun OS x.x /^Printed.*[0-9]+$/ {next;} # BSD 4.3 /^Page [0-9].*$/ {next;} # Silicon Graphics /^Version.*Last change:/ {next;}# bibclean.txt on SunOS 4.1.1 # Match all lines and do blank line processing { if (NF == 0) # blank line nb++; else # non blank line { if ((nb == 1) || (nb == 2) || (nb >= 13)) printf("\n"); else if ((nb > 0) && (substr($0,1,1) != " ") && (nf > 0)) printf("\n"); if ($0 == "NAME") # level 1 header $0 = "1 BIBCLEAN"; else if (substr($0,1,1) != " ") # level 2 header { header = $0; gsub(/ /,"-",header); $0 = "2 " header "\n " $0; } printf("%s\n",$0); nb = 0; nf++; } } bibclean-2.11.4.1.orig/testscr1.eok0000644000175200017520000000000005305523564016133 0ustar debiandebianbibclean-2.11.4.1.orig/xstring.h0000644000175200017520000000105706034406311015535 0ustar debiandebian#ifndef XSTRING_H_DEFINED_ #define XSTRING_H_DEFINED_ #ifdef HAVE_STRING_H #include #else #endif extern void Memmove ARGS((void *target_, const void *source_, size_t n_)); extern void *Memset ARGS((void *target_, int value_, size_t n_)); extern char *Strdup ARGS((const char *)); extern int stricmp ARGS((const char *, const char *)); extern char *stristr ARGS((const char *s_, const char *sub_)); extern int strnicmp ARGS((const char *s1_, const char *s2_, size_t n_)); #define STREQUAL(a,b) (strcmp(a,b) == 0) #endif /* XSTRING_H_DEFINED_ */ bibclean-2.11.4.1.orig/bibclean.ini0000644000175200017520000001614305335532442016140 0ustar debiandebian%%% -*-text-*- %%% ==================================================================== %%% BibTeX-initialization-file{ %%% author = "Nelson H. F. Beebe", %%% version = "2.06.02", %%% date = "29 January 1993", %%% time = "14:15:44 MST", %%% filename = "bibclean.ini", %%% address = "Center for Scientific Computing %%% Department of Mathematics %%% University of Utah %%% Salt Lake City, UT 84112 %%% USA", %%% telephone = "+1 801 581 5254", %%% FAX = "+1 801 581 4148", %%% checksum = "61631 181 1106 7267", %%% email = "beebe@math.utah.edu (Internet)", %%% codetable = "ISO/ASCII", %%% keywords = "prettyprint, bibliography", %%% supported = "yes", %%% docstring = "This file contains bibclean value pattern %%% matching specifications and possibly, %%% default options, to be read during %%% initialization. %%% %%% Each pattern group starts with an empty %%% string assignment to clear out old patterns %%% and guarantee a uniform start. For speed, %%% patterns should be ordered with more likely %%% matches near the beginning of the lists. %%% %%% Typical matches are shown in comments %%% following each pattern. A few patterns are %%% accompanied by warning messages that will %%% be issued if the pattern is matched. %%% %%% If you augment patterns in file, please %%% make them more precise, rather than looser. %%% Generally, you should add new patterns, %%% rather than modify existing ones. The goal %%% is to expose possible errors in .bib files, %%% not mask them. %%% %%% The checksum field above contains a CRC-16 %%% checksum as the first value, followed by the %%% equivalent of the standard UNIX wc (word %%% count) utility output of lines, words, and %%% characters. This is produced by Robert %%% Solovay's checksum utility.", %%% } %%% ==================================================================== bibdate = "\"aaa aaa d dd:dd:dd 19dd\"" %% "Mon Dec 7 18:26:51 1992" bibdate = "\"aaa aaa dd dd:dd:dd 19dd\"" %% "Mon Dec 21 18:26:51 1992" bibdate = "\"aaa aaa d dd:dd:dd 20dd\"" %% "Mon Dec 3 18:26:51 2001" bibdate = "\"aaa aaa dd dd:dd:dd 20dd\"" %% "Mon Dec 17 18:26:51 2001" chapter = "" %% discard old patterns chapter = "\"D\"" %% "23" chapter = "\"D-D\"" %% "11-2" month = "" %% discard old patterns month = "aaa" %% oct month = "aaa # \" D\"" %% oct # " 10" month = "aaa # \" D--D\"" %% oct # " 20--24" month = "\"D \" # aaa" %% "10 " # oct month = "\"D--D \" # aaa" %% "10--24 " # oct month = "aaa # \"\" # aaa" %% jul # "\emdash " # aug month = "aaa # \"--\" # aaa" %% jul # "--" # aug month = "aaa # \" -- \" # aaa" %% jul # " -- " # aug month = "aaa # \"/\" # aaa" %% jul # "/" # aug month = "aaa # \" A \" # aaa" %% jul # " and " # aug number = "" %% discard old patterns number = "\"D\"" %% "23" number = "\"A AD\"" %% "PN LPS5001" number = "\"A D(D)\"" %% "RJ 34(49)" number = "\"A D\"" %% "XNSS 288811" number = "\"A D\\.D\"" %% "Version 3.20" number = "\"A-A-D-D\"" %% "UMIAC-TR-89-11" number = "\"A-A-D\"" %% "CS-TR-2189" number = "\"A-A-D\\.D\"" %% "CS-TR-21.7" number = "\"A-AD-D\"" %% "TN-K\slash 27-70" number = "\"A-D D\"" %% "PB-251 845" number = "\"A-D-D\"" %% "ANL-30-74" number = "\"A-D\"" %% "TR-2189" number = "\"AD-D-D\"" %% "GG24-3611-00" number = "\"AD-D\"" %% "SP43-29" number = "\"AD\"" %% "LPS0064" number = "\"A\\#D-D\"" %% "TR\#89-24 ????" number = "\"D \\an\\d D\"" %% "11 and 12" number = "\"D+D\"" %% "3+4" number = "\"D+D\"" %% "3+4" number = "\"D-D\"" %% "23-27" number = "\"D/D\"" %% "23/27" number = "\"D D\"" %% "23 \& 24" number = "\"DA\"" %% "23A" number = "\"D\\.D\"" %% "3.4" number = "\"W-W W\"" %% "AERE-R 12329" number = "\"W-W-WW-W\"" %% "OSU-CISRC-4\slash 87-TR9" number = "\"W\"" %% "Computer Science Report 100" number = "\"X\"" %% "TR/AB/3-43.7-3/AB" pages = "" %% discard old patterns pages = "\"D\"" %% "23" pages = "\"aD\"" %% "L23" pages = "\"D--D\"" %% "23--27" pages = "\"aD--aD\"" %% "L23--L27" pages = "\"D, D\"" %% "23, 27" pages = "\"aD, aD\"" %% "L23, L27" pages = "\"D, D, D\"" %% "23, 27, 45" pages = "\"aD, aD, aD\"" %% "L23, L27, L45" pages = "\"D, D, D, D\"" %% "23, 27, 45, 98" pages = "\"aD, aD, aD, aD\"" %% "L23, L27, L45, L98" pages = "\"R + D\"" %% "viii + 445" pages = "\"R + D, w D w\"" %% "viii + 445, with 30 illustrations" pages = "\"D, w D w\"" %% "239, with 27 illustrations" pages = "\"D--D, D--D\"" %% "23--27, 29--32" pages = "\"D--D, D--D, D--D\"" %% "23--27, 29--32, 35--37" pages = "\"aD--aD, aD--aD\"" %% "L23--L27, L29--L32" pages = "\"aD--aD, aD--aD, aD--aD\"" %% "L23--L27, L29--L32, L35--L37" price = "" %% discard old patterns price = "\"AD\\.dd\"" %% "US\$12.95" and "DM30.50" price = "\"D\\.dd\"" "Put country prefix on price %v" %% "$12.95" and "\pounds 12.95" price = "\"AD\"" %% "US\$13" and "FF70" price = "\"D\"" "Put country prefix on price %v" %% "$13" and "\pounds 13" tag = "" %% discard old patterns tag = "A:Add" %% Knuth:TB89 tag = "A:Adda" %% Knuth:TB89a volume = "" %% discard old patterns volume = "\"D\"" %% "27" volume = "\"DA\"" %% "27A" volume = "\"D/D\"" %% "27/3" volume = "\"DA D\"" %% "27A 3" volume = "\"w-D\"" %% "SMC-13" volume = "\"A\"" %% "VIII" volume = "\"D.D\"" %% "1.2" volume = "\"D \\an\\d D\"" %% "11 and 12" volume = "\"W\"" %% "Special issue A" year = "" %% discard old patterns year = "\"19dd\"" %% "1992" year = "\"19dd, 19dd\"" %% "1989, 1990" year = "\"19dd, 19dd, 19dd\"" %% "1989, 1990, 1991" year = "\"19dda19dd\"" %% "{\noopsort{1985a}}1985" year = "\"18dd\"" %% "1892" year = "\"18dd, 18dd\"" %% "1889, 1890" year = "\"18dd, 18dd, 18dd\"" %% "1889, 1890, 1891" year = "\"18dda18dd\"" %% "{\noopsort{1885a}}1885" year = "\"19dd (19dd)\"" %% "1989 (1990)" (e.g. translation of a %% foreign journal, where the second %% year is that of the translation) year = "\"19dd\" # \"--\"" %% "1989" # "\unskip--" year = "\"200d\"" %% "2009" (allow for a bit of growth!) year = "\"18dd--d\"" %% "1891--2" year = "\"19dd--d\"" %% "1991--2" year = "\"200d--d\"" %% "2001--2" %% This is a test of option specifications %% -init-file /dev/null %% recursive empty init file %% -fix-names %% this is a comment %% -fix-initials %% this is too %% This is for GNU Emacs file-specific customization: %% Local Variables: %% eval: (auto-fill-mode -1) %% comment-start: "%% " %% comment-start-skip: "%+ *" %% comment-end: "" %% comment-column: 40 %% End: bibclean-2.11.4.1.orig/testscr2.org0000644000175200017520000000300405304620240016140 0ustar debiandebian@BEGIN{COMMENT} This file contains some test Scribe bibliography entries with embedded paragraph breaks for testing the -no-parbreaks switch in bibclean. Without that switch, it should process correctly; with it, 3 sets of error messages should be displayed. @END{COMMENT} @TECHREPORT(bs-1629-0, AUTHOR = "BSI", TITLE = "Bibliographic References", INSTITUTION = "British Standards Institution", YEAR = "1976", TYPE = "BS", NUMBER = "1629" ) @TECHREPORT(bs-1629-1, AUTHOR = "BSI", TITLE = "Bibliographic References", INSTITUTION = "British Standards Institution", YEAR = "1976", TYPE = "BS", NUMBER = "1629" ) @TECHREPORT(bs-1629-2, AUTHOR = "BSI", TITLE = "Bibliographic References", INSTITUTION = "British Standards Institution", YEAR = "1976", TYPE = "BS", NUMBER = "1629" ) @TECHREPORT(bs-1629-3, AUTHOR = "BSI", TITLE = "Bibliographic References", INSTITUTION = "British Standards Institution", YEAR = "1976", TYPE = "BS", NUMBER = "1629" ) @TECHREPORT(bs-1629-4, AUTHOR = BSI, TITLE = "Bibliographic References", INSTITUTION = "British Standards Institution", YEAR = 1976, TYPE = BS, NUMBER = 1629 ) @TECHREPORT(bs-1629-5, AUTHOR = BSI, TITLE = "Bibliographic References", INSTITUTION = "British Standards Institution", YEAR = 1976, TYPE = BS, NUMBER = 1629 ) bibclean-2.11.4.1.orig/testbib4.eok0000644000175200017520000000000005335511464016102 0ustar debiandebianbibclean-2.11.4.1.orig/testscr1.bok0000644000175200017520000006253205335523030016141 0ustar debiandebian@Comment{ This file contains a sample set of bibliography data base entries in Scribe format. It is used for testing the -scribe option of bibclean. The first entry uses each of the 7 delimiters, each of the 3 separators, undelimited values, and embedded quotes to illustrate the flexibility of Scribe syntax. Note, however, that nested delimiters are NOT permitted by Scribe; BibTeX permits nested braces and braced quotes. } @Comment{Old style comment} @Comment{ This is a block comment with two lines. } @Comment{ This is a block comment with two lines and embedded braces: {one}} {two} {three} } @Comment{ This is a block comment with two lines and embedded braces: {one}} {two} {three}. Here are some mismatched braces: { { { } } } {} {} } @InProceedings{Adomaitis79Computer, key = "{"}Outer and inner {"} quotes{"}", author = "V. Adomaitis", title = "A Computer Aided Video Illustrating System", year = "1979", booktitle = "Proc. 6-th Man-Computer Communications Conference", editor = "M. Wein and E. Swail", publisher = "Computer Graphics Section, National Research Council of Canada", pages = "161--167", address = "Ottawa, Ontario, Canada, K1A 0R8", keywords = "Applications, video illustration system", } @String{HSchV = "Universit{\"a}tsdruckerei und Verlag Hermann Schmidt"} @String{a.HSchV = "Mainz"} @Article{ntg:PH92, author = "Nico Poppelier and Amy Hendrickson", title = "Book reviews", journal = "ntg", year = "1992", month = may, volume = "92", number = "1", pages = "135--138", annote = "Contains reviews of ``\LaTeX{} for Everyone'' \cite{PCTeX:JHa91}, ``Practical SGML'' \cite{Kluwer:EvHe90}, and ``\TeX{} by Topic, A \TeX{}nician's Reference'' \cite{A-W:VEi91}.", keywords = "Reviews", } @Article{tub:NPo92b, author = "Nico Poppelier", title = "Book reviews: {Jane Hahn, {\LaTeX} for Everyone}; {Eric van Herwijnen, Practical {SGML}}", journal = "tub", year = "1992", volume = "13", number = "2", month = jul, pages = "182--184", annote = "Contains reviews of ``\LaTeX{} for Everyone'' \cite{PCTeX:JHa91}, and ``Practical SGML'' \cite{Kluwer:EvHe90}.", keywords = "?", } @Comment{Some standard works describing conventions for citations and bibliographies} @TechReport{bs-1629, author = "BSI", title = "Bibliographic References", institution = "British Standards Institution", year = "1976", type = "BS", number = "1629", } @TechReport{bs-5605, author = "BSI", title = "Citing Publications by Bibliographic References", institution = "British Standards Institution", year = "1978", type = "BS", number = "5606", } @TechReport{bs-6371, author = "BSI", title = "Citation of unpublished documents", institution = "British Standards Institution", year = "1983", type = "BS", number = "6371", } @Book{butcher-81, title = "Copy-editing", author = "Judith Butcher", publisher = "Cambridge University Press", year = "1981", edition = "2nd", } @Book{chicago-82, title = "The {C}hicago Manual of Style", author = "`Chicago'", year = "1982", publisher = "University of Chicago Press", edition = "13th", } @Comment{Some examples taken from the document describing BS 5605} @Article{howells-51, author = "W. W. Howells", title = "Factors of Human Physique", journal = "American Journal of Physical Anthropology", volume = "9", pages = "159--192", year = "1951", } @Article{howells-66-pop, author = "W. W. Howells", title = "Population Distances: Biological, Linguistic, Geographical and Environmental", journal = "Current Anthropology", volume = "7", pages = "531--540", year = "1966", } @Article{howells-66-var, author = "W. W. Howells", title = "Variability in Family Lines vs. Population Variability", journal = "Annals of the {New York Academy of Sciences}", volume = "134", pages = "624--631", year = "1966", } @Article{johnson-74, author = "G. B. Johnson", title = "Enzyme Polymorphism", journal = "Science", volume = "184", pages = "28--37", year = "1974", } @Article{johnson-howells, author = "G. B. Johnson and W. W. Howells", title = "Title title title title title title title title title title", journal = "Journal journal journal", year = "1974", } @Article{johnson-etc, author = "G. B. Johnson and W. W. Howells and A. N. Other", title = "Title title title title title title title title title title", journal = "Journal journal journal", year = "1976", } @Manual{anon-67, author = "Anon.", title = "Title title title title title title title title title title", organization = "Organization organization organization", year = "1967", } @Article{aslin-49, author = "E. J. Aslin", title = "Photostat recording in library work", journal = "Aslib Proceedings", year = "1949", volume = "1", pages = "49--52", } @Article{fletcher-hopkins, author = "W. M. Fletcher and F. G. Hopkins", title = "Lactic Acid in Amphibian Muscle", journal = "J. Physiol.", year = "1907", volume = "35", pages = "247--309", } @InCollection{hanson-67, author = "C. W. Hanson", title = "Subject inquiries and literature searching", booktitle = "Handbook of special librarianship and information work", editor = "W. Ashworth", year = "1967", edition = "3rd", pages = "414--452", } @InBook{wright-63, author = "R. C. Wright", title = "Report Literature", booktitle = "Special Materials in the Library", editor = "J. Burkett and T. S. Morgan", year = "1963", pages = "46--59", publisher = "The Library Association", address = "London", } @Book{BCM-59, author = "{Association of British Chemical Manufacturers}", title = "British chemicals and their manufacturers", publisher = "Unknown", year = "1959", } @InBook{feigl-58, author = "F. Feigl", title = "Spot Tests in Organic Analysis", year = "1958", publisher = "Publisher publisher", edition = "5th", chapter = "6", } @Comment{Some examples taken from document describing BS 1629} @Book{hoel-71-whole, author = "Paul Gerhard Hoel", title = "Elementary Statistics", publisher = "Wiley", year = "1971", series = "Wiley series in probability and mathematical statistics", address = "New York, Chichester", edition = "3rd", note = "ISBN 0~471~40300", } @InBook{hoel-71-portion, author = "Paul Gerhard Hoel", title = "Elementary Statistics", publisher = "Wiley", year = "1971", series = "Wiley series in probability and mathematical statistics", address = "New York, Chichester", edition = "3rd", note = "ISBN 0~471~40300", pages = "19--33", } @Book{singer-whole, year = "1954--58", editor = "Charles Joseph Singer and E. J. Holmyard and A. R. Hall", title = "A history of technology", address = "London", publisher = "Oxford University Press", note = "5 vol.", } @InCollection{singer-portion-chapter, key = "singer-portion-chapter", title = "The late nineteenth century", year = "1954--58", editor = "Charles Joseph Singer and E. J. Holmyard and A. R. Hall", booktitle = "A history of technology", address = "London", publisher = "Oxford University Press", type = "Vol.", chapter = "5", } @InCollection{singer-portion-volume, title = "The late nineteenth century", key = "singer-portion-volume", year = "1954--58", editor = "Charles Joseph Singer and E. J. Holmyard and A. R. Hall", booktitle = "A history of technology", address = "London", publisher = "Oxford University Press", volume = "5", } @Manual{bs-2570-manual, author = "BSI", title = "Natural Fibre Twines", organization = "British Standards Institution", address = "London", edition = "3rd", year = "1973", note = "BS 2570", } @TechReport{bs-2570-techreport, author = "BSI", title = "Natural Fibre Twines", institution = "British Standards Institution", address = "London", year = "1973", type = "BS", number = "2570", note = "3rd. edn.", } @InBook{bs-2570-inbook, author = "BSI", title = "{BS} 2570: Natural Fibre Twines", publisher = "British Standards Institution", address = "London", year = "1973", edition = "3rd", chapter = "5", type = "{Table}", } @TechReport{ellis-walton, author = "B. Ellis and A. K. Walton", title = "A Bibliography on Optical Modulators", institution = "Royal Aircraft Establishment", year = "1971", number = "RAE-TR-71009", } @Article{godfrey-59, author = "G. Bernard Godfrey", title = "Joints in Tubular Structures", journal = "Struct. Eng.", year = "1959", volume = "37", number = "4", pages = "126--135", } @InCollection{ramsbottom-31, author = "John Ramsbottom", title = "Fungi Pathogenic to Man", booktitle = "A System of Bacteriology in relation to Medicine", publisher = "HMSO, for Medical Research Council", year = "1931", volume = "8", pages = "11--70", address = "London", } @Article{hanlon-72, author = "Joseph Hanlon", title = "Designing Buildings by Computer", journal = "New Scientist", year = "1972", month = "31 " # aug, pages = "429--432", } @TechReport{winget-67, author = "{Winget Ltd.}", title = "Detachable Bulldozer Attachment for Dumper Vehicles", year = "1967", institution = "unknown", type = "GB Patent Specification", number = "1060631", month = "8 " # mar, } @Article{bry-afflerbach, author = "I. Bry and L. Afflerbach", title = "In search of an organizing principle for behavioural science literature", journal = "Community Mental Health", year = "1968", volume = "4", number = "1", pages = "75--84", } @InCollection{ranganathan-51, author = "S. R. Ranganthan", title = "Colon classification and its approach to documentation", booktitle = "Bibliographic Organization", editor = "Jesse H. Shera and Margaret E. Egan", publisher = "University of Chicago Press", year = "1951", pages = "94--105", } @Book{mccolvin-nodate, author = "L. R. McColvin", title = "Libraries in {Britain}", publisher = "{Longmans Green, for the British Council}", address = "London", year = "1961", } @Comment{Some examples taken from document describing BS 6371} @Unpublished{exchequer-34-39, author = "Exchequer", year = "1634--1639", title = "Act books", note = "Edinburgh, Scottish Record Office, E.4/5", } @Unpublished{traquair-38, author = "{Earl of} Traquair", year = "1638", title = "Letter to {Marquess of Hamilton, 28 Aug.}", note = "Lennoxlove (E.~Lothian), Muniments of Duke of Hamilton and Brandon, C.1, no. 963", } @Unpublished{pym-24, author = "J. Pym", year = "1624", title = "Diary", note = "Northampton, Northamptonshire Record Office, Finch-Hatton 50", } @PhdThesis{croft-78, author = "W. B. Croft", year = "1978", title = "Organizing and searching large files of document descriptions", school = "Cambridge University", } @Comment{Some examples taken from Chapter 10 of "Copy-editing" by Judith Butcher} @Book{darcy-20-amaz, author = "Firstname D'Arcy", title = "Title title title title title title title title title title", publisher = "Publisher publisher publisher", year = "1920", } @Book{darcy-20-again, author = "Firstname D'Arcy", title = "Title title title title title title title title title title", publisher = "Publisher publisher publisher", year = "1920", } @Article{jones-n-h-r, author = "Firstname Jones and Firstname Norman and Firstname Hazel and Firstname Robinson", title = "Title title title title title title title title title title", year = "1962", journal = "Journal journal journal", } @Article{jones-s-r, author = "Firstname Jones and Firstname Smith and Firstname Robinson", title = "Title title title title title title title title title title", year = "1962", journal = "Journal journal journal", } @Article{jones-65, author = "Firstname Jones", title = "Title title title title title title title title title title", year = "1965", journal = "Journal journal journal", } @Article{jones-69, author = "Firstname Jones", title = "Title title title title title title title title title title", year = "1969", journal = "Journal journal journal", } @Article{jones-abrams, author = "Firstname Jones and Firstname Abrams", title = "Title title title title title title title title title title", year = "1968", journal = "Journal journal journal", } @Article{jones-smith, author = "Firstname Jones and Firstname Smith", title = "Title title title title title title title title title title", year = "1965", journal = "Journal journal journal", } @Article{jones-a-s, author = "Firstname Jones and Firstname Abrams and Firstname Smith", title = "Title title title title title title title title title title", year = "1966", journal = "Journal journal journal", } @Article{bloggs-60, author = "A. J. Bloggs", title = "Title title title title title title title title title title", journal = "Journal journal journal", year = "1960", } @Article{bloggs-61, author = "A. J. Bloggs", title = "Title title title title title title title title title title", journal = "Journal journal journal", year = "1961", } @Article{bloggs-jones, author = "A. J. Bloggs and X. Y. Jones", title = "Title title title title title title title title title title", journal = "Journal journal journal", year = "1959", } @Article{bloggs-s-j, author = "A. J. Bloggs and R. S. Smith and X. Y. Jones", title = "Title title title title title title title title title title", journal = "Journal journal journal", year = "1955", } @Article{brown-f-s, author = "H. W. Brown and A. S. Forbes and S. D. Smith", title = "Title title title title title title title title title title", journal = "Journal journal journal", year = "1900", } @InCollection{eckstein-zuckerman, author = "P. Eckstein and S. Zuckermann", title = "Morphology of the Reproductive Tract", booktitle = "Marshall's Physiology of Reproduction", publisher = "Longman", year = "1960", editor = "A. S. Parkes", volume = "1", pages = "43--154", address = "London", } @Article{heller-lederis, author = "H. Heller and K. Lederis", title = "Paper chromatography of small amounts of vasopressin and oxytocin", year = "1958", journal = "Nature", address = "London", volume = "182", pages = "1231--2", } @Book{wood-61, author = "R. H. Wood", title = "Plastic and Elastic Design of Slabs and Plates", publisher = "Thames \& Hudson", address = "London", year = "1961", } @Comment{Some examples taken from Chapter 15 of the Chicago Manual of Style} @Book{pratt-75, author = "Firstname Pratt", title = "Title title title title title title title title title title", publisher = "Publisher publisher publisher", year = "1975", } @Article{light-72, author = "Firstname Light", title = "Title title title title title title title title title title", journal = "Journal journal journal", year = "1972", } @Article{light-wong, author = "Firstname Light and Firstname Wong", title = "Title title title title title title title title title title", journal = "Journal journal journal", year = "1975", } @Article{kingston-76, author = "Firstname Kingston", title = "Title title title title title title title title title title", journal = "Journal journal journal", year = "1976", } @Article{kelley-96-spring, author = "Firstname Kelley", title = "Title title title title title title title title title title", journal = "Journal journal journal", year = "1896", } @Article{kelley-96-autumn, author = "Firstname Kelley", title = "Title title title title title title title title title title", journal = "Journal journal journal", year = "1896", } @Article{kelley-07, author = "Firstname Kelley", title = "Title title title title title title title title title title", journal = "Journal journal journal", year = "1907", } @Book{strong-01, author = "Firstname Strong", title = "Title title title title title title title title title title", publisher = "Publisher publisher publisher", year = "1901", } @Book{strong-02, author = "Firstname Strong", title = "Title title title title title title title title title title", publisher = "Publisher publisher publisher", year = "1902", } @Book{shotwell-01, author = "Firstname Shotwell", title = "Title title title title title title title title title title", publisher = "Publisher publisher publisher", year = "1901", } @Comment{Some examples taken from Chapter 16 of the Chicago Manual of Style} @TechReport{brunswick-85, author = "`Brunswick'", title = "The piper and the rats: {A} musical experiment", institution = "Rodent Activities Termination Section (RATS), Pest Control Division, Brunswick Public Welfare Department", year = "1985", number = "1984", address = "Hamelin", } @Book{kendeigh-52, author = "S. C. Kendeigh", year = "1952", title = "Prenatal care and its evolution in birds", series = "Illinois Biological Monographs", volume = "22", number = "1--3", address = "Champaign", publisher = "University of Illinois Press", } @Book{chapman-75, author = "Jefferson Chapman", year = "1975", title = "The {Icehouse Bottom} Site---{40MR23}", series = "University of Tennessee Department of Anthropology Publication", number = "23", address = "Knoxville", publisher = "Univ. of Tennessee Press", } @Book{hershkovitz-62, author = "P. Hershkovitz", year = "1962", title = "Evolution of {Neotropical} cricetine rodents ({Muridae}) with special reference to the phyllotine group", series = "Fieldiana: Zoology", volume = "46", address = "Chicago", publisher = "Field Museum of Natural History", } @Book{wright-78-book, title = "Evolution and the genetics of populations", author = "Sewall Wright", year = "1978", address = "Chicago", publisher = "Univ. of Chicago Press", volume = "4", } @InCollection{wright-78-incollection, title = "Variability within and among natural populations", author = "Sewall Wright", booktitle = "Evolution and the genetics of populations", year = "1978", address = "Chicago", publisher = "Univ. of Chicago Press", type = "Vol.", chapter = "4", } @InCollection{ogilvy-65, author = "David Ogilvy", title = "The Creative Chef", booktitle = "The Creative Organization", year = "1965", editor = "Gary A. Steiner", address = "Chicago", publisher = "University of Chicago Press", pages = "199--213", } @InCollection{mcneill-63, author = "William H. McNeill", year = "1963", title = "The Era of {Middle Eastern} Dominance to 500 {\sc b.c.}", booktitle = "The Rise of the {West}", publisher = "{University of Chicago Press}", address = "Chicago", type = "Part", chapter = "1", } @InCollection{thomson-71, author = "Virgil Thomson", title = "Cage and the Collage of Noises", booktitle = "American Music since 1910", address = "New York", publisher = "Holt, Rinehart and Winston", year = "1971", chapter = "8", } @InCollection{gordon-75, title = "The Tunes of {Chicken Little}", author = "Robert Gordon", year = "1975", booktitle = "Playwrights for Tomorrow: A Collection of Plays", editor = "Arthur H. Ballet", volume = "13", address = "Minneapolis", publisher = "University of Minnesota Press", note = "One of four plays included in vol. 13", } @InCollection{milton-24, author = "John Milton", title = "Paradise Lost", booktitle = "The Complete Poetical Works of {John Milton}", edition = "{Student's Cambridge}", address = "Boston", publisher = "Houghton Mifflin", year = "1924", editor = "William Vaughn Moody", } @InProceedings{chomsky-73, author = "N. Chomsky", year = "1973", title = "Conditions on Transformations", booktitle = "A festschrift for {Morris Halle}", editor = "S. R. Anderson and P. Kiparsky", publisher = "Holt, Rinehart \& Winston", address = "New York", } @InProceedings{chave-64, author = "K. E. Chave", year = "1964", title = "Skeletal durability and preservation", booktitle = "Approaches to paleoecology", editor = "J. Imbrie and N. Newel", address = "New York", publisher = "Wiley", pages = "377--87", } @Book{smart-76, author = "Ninian Smart", year = "1976", title = "The religious experience of mankind", publisher = "Schribner", address = "New York", edition = "2nd", } @Article{jackson-79, author = "Richard Jackson", year = "1979", title = "Running down the up-escalator: Regional inequality in {Papua New Guinea}", journal = "Australian Geographer", volume = "14", month = may, pages = "175--84", } @Article{prufer-64, author = "Olaf Prufer", year = "1964", title = "The {Hopewell} Cult", journal = "Scientific {American}", month = dec, pages = "90--102", } @PhdThesis{mann-68, author = "A. E. Mann", year = "1968", title = "The palaeodemography of {Australopithecus}", type = "Ph.D. diss.", school = "University of California, Berkeley", } @PhdThesis{maguire-76, author = "J. Maguire", year = "1976", title = "A taxonomic and ecological study of the living and fossil {Hystricidae} with particular reference to southern {Africa}", type = "Ph.D. diss.", school = "Department of Geology, University of the Witwatersrand", address = "Johannesburg", } @Unpublished{downes-74, title = "Systemic grammar and structural sentence relatedness", author = "W. J. Downes", year = "1974", note = "London School of Economics. Mimeo.", } @Misc{hunt-76, author = "Horace [pseud.] Hunt", title = "Interview", year = "1976", howpublished = "Tape recording, Pennsylvania Historical and Museum Commission, Harrisburg", note = "Interview by {Ronald Schatz, 16 May 1976}", } bibclean-2.11.4.1.orig/configure.sed0000644000175200017520000000046506034516307016355 0ustar debiandebians/^char \$ac_func();/#if defined(__cplusplus) || defined(c_plusplus)\ #include \ #include \ #else\ char \$ac_func();\ #endif/ s/^\$ac_func();/#if defined(__cplusplus) || defined(c_plusplus)\ void (*pfun)(void) = (void (*)(void))\$ac_func;\ #else\ \$ac_func();\ #endif/ s/exit *(/return (/ bibclean-2.11.4.1.orig/keybrd.h0000644000175200017520000000242106116624651015325 0ustar debiandebian#ifndef KEYBRD_H_DEFINED_ #define KEYBRD_H_DEFINED_ #if (SCREEN_LINES > 0) #if defined(HAVE_STDC) typedef enum keyboard_code { KEYBOARD_EOF = EOF, KEYBOARD_UNKNOWN = 0, KEYBOARD_AGAIN, KEYBOARD_DOWN, KEYBOARD_END, KEYBOARD_HELP, KEYBOARD_HOME, KEYBOARD_PGDN, KEYBOARD_PGUP, KEYBOARD_QUIT, KEYBOARD_SEARCH_BACKWARD, KEYBOARD_SEARCH_FORWARD, KEYBOARD_UP, KEYBOARD_DOWN_PARAGRAPH, KEYBOARD_UP_PARAGRAPH } keyboard_code_t; #else /* K&R style */ #define KEYBOARD_EOF EOF #define KEYBOARD_UNKNOWN 0 #define KEYBOARD_AGAIN 1 #define KEYBOARD_DOWN 2 #define KEYBOARD_END 3 #define KEYBOARD_HELP 4 #define KEYBOARD_HOME 5 #define KEYBOARD_PGDN 6 #define KEYBOARD_PGUP 7 #define KEYBOARD_QUIT 8 #define KEYBOARD_SEARCH_BACKWARD 9 #define KEYBOARD_SEARCH_FORWARD 10 #define KEYBOARD_UP 11 #define KEYBOARD_DOWN_PARAGRAPH 12 #define KEYBOARD_UP_PARAGRAPH 13 typedef int keyboard_code_t; #endif extern int do_more ARGS((FILE *fpout_, int line_, int pause_after_, const char *lines[])); extern int get_screen_lines ARGS((void)); extern void kbclose ARGS((void)); extern keyboard_code_t kbcode ARGS((void)); extern int kbget ARGS((void)); extern void kbopen ARGS((void)); #endif /* SCREEN_LINES > 0 */ #endif /* KEYBRD_H_DEFINED_ */ bibclean-2.11.4.1.orig/testbib2.eok0000644000175200017520000000000005304617522016076 0ustar debiandebianbibclean-2.11.4.1.orig/testbib1.eok0000644000175200017520000000345205323027600016104 0ustar debiandebian%% "testbib1.org", line 48: Unexpected value in ``chapter = "23."''. %% "testbib1.org", line 49: Unexpected value in ``chapter = "Two"''. %% "testbib1.org", line 51: Unexpected value in ``month = "janvier"''. %% "testbib1.org", line 53: Unexpected value in ``pages = "1,3,5,7"''. %% "testbib1.org", line 54: Unexpected value in ``pages = "1--3, 5, 7"''. %% "testbib1.org", line 55: Unexpected value in ``pages = "10,560--10,574"''. %% "testbib1.org", line 56: Unexpected value in ``pages = "12--13, 17, 18"''. %% "testbib1.org", line 59: Unexpected value in ``pages = "445 + viii with 30 illustrations"''. %% "testbib1.org", line 60: Unexpected value in ``pages = "445 + viii"''. %% "testbib1.org", line 62: Unexpected value in ``price = "DM\$60.5"''. %% "testbib1.org", line 63: Unexpected value in ``price = "DM\$60.537"''. %% "testbib1.org", line 64: Unexpected value in ``price = "US\$12.9"''. %% "testbib1.org", line 65: Put country prefix on price "\$12.95". %% "testbib1.org", line 66: Put country prefix on price "\$13". %% "testbib1.org", line 67: Put country prefix on price "\pounds 13". %% "testbib1.org", line 69: Unexpected value in ``volume = "1."''. %% "testbib1.org", line 70: Unexpected value in ``volume = "12(5)"''. %% "testbib1.org", line 71: Unexpected value in ``volume = "1:"''. %% "testbib1.org", line 73: Unexpected value in ``year = "(1985)"''. %% "testbib1.org", line 74: Unexpected value in ``year = "1789"''. %% "testbib1.org", line 74: Suspicious year in ``year = "1789"''. %% "testbib1.org", line 75: Unexpected value in ``year = "23"''. %% "testbib1.org", line 75: Suspicious year in ``year = "23"''. %% "testbib1.org", line 76: Unexpected value in ``year = "2525"''. %% "testbib1.org", line 76: Suspicious year in ``year = "2525"''. %% "testbib1.org", line 77: Unexpected value in ``year = "????"''. bibclean-2.11.4.1.orig/testisxn.org0000644000175200017520000005406305304620236016270 0ustar debiandebian%% /u/sy/beebe/tex/bibclean/testisxn.bib, Thu Nov 12 09:30:41 1992 %% Edit by Nelson H. F. Beebe @Misc{ISSN-test, comment = "The following ISSN values should be valid.", ISSN = "0018-9367", ISSN = "0080-3863", ISSN = "0094-3770", ISSN = "0197-3622", ISSN = "0346-914X", ISSN = "0346-914X", ISSN = "0362-613X", ISSN = "0891-2513", ISSN = "0899-7667", ISSN = "0958-9341", ISSN = "0964-5098", ISSN = "1047-5974", ISSN = "1059-5325", ISSN = "not yet available", ISSN = "", comment = "The following ISSN values have errors in them introduced by perturbing the first digit.", ISSN = "1018-9367", ISSN = "2080-3863", ISSN = "3094-3770", ISSN = "4197-3622", ISSN = "5346-914X", ISSN = "6346-914X", ISSN = "7362-613X", ISSN = "8891-2513", ISSN = "9899-7667", ISSN = "X958-9341", ISSN = "1964-5098", ISSN = "2047-5974", ISSN = "3059-5325", comment = "The following ISSN values have the wrong number of digits.", ISSN = "3", ISSN = "30", ISSN = "305", ISSN = "3059", ISSN = "3059-5", ISSN = "3059-53", ISSN = "3059-532", ISSN = "3059-5325-X", } @Misc{ISBN-test, comment = "The following ISBN values should be valid.", ISBN = "0 241 13267 3", ISBN = "0 85331 623 6", ISBN = "0 913720 72 0", ISBN = "0 948905 72 7", ISBN = "0 948905 76 X", ISBN = "0-03-063892-5", ISBN = "0-07-008845-4", ISBN = "0-07-008845-4", ISBN = "0-07-021623-1", ISBN = "0-07-026751-0", ISBN = "0-07-033508-7", ISBN = "0-07-039006-1 (hardback), 0-07-039002-9 (paperback)", ISBN = "0-07-043109-4", ISBN = "0-07-881645-9", ISBN = "0-070-15557-7", ISBN = "0-08-030713-2", ISBN = "0-12-079062-9", ISBN = "0-12-117645-2", ISBN = "0-12-117650-9", ISBN = "0-12-117650-9", ISBN = "0-12-249050-9", ISBN = "0-12-249051-7", ISBN = "0-12-257960-7", ISBN = "0-12-286160-4", ISBN = "0-12-286165-5", ISBN = "0-12-289255-0", ISBN = "0-12-305340-4", ISBN = "0-12-460515-X", ISBN = "0-12-460515-X", ISBN = "0-12-557580-7", ISBN = "0-12-697545-0", ISBN = "0-13-010778-6", ISBN = "0-13-010778-6", ISBN = "0-13-043530-9", ISBN = "0-13-049189-6", ISBN = "0-13-109802-0", ISBN = "0-13-110008-4", ISBN = "0-13-110933-2", ISBN = "0-13-120486-6", ISBN = "0-13-155045-4", ISBN = "0-13-162959-X", ISBN = "0-13-365412-5", ISBN = "0-13-472242-6", ISBN = "0-13-497074-8", ISBN = "0-13-536657-7", ISBN = "0-13-554619-2", ISBN = "0-13-567090-X", ISBN = "0-13-580944-4", ISBN = "0-13-588187-0", ISBN = "0-13-590464-1", ISBN = "0-13-590472-2", ISBN = "0-13-627258-4", ISBN = "0-13-640616-5", ISBN = "0-13-640673-4", ISBN = "0-13-640681-5", ISBN = "0-13-685835-X", ISBN = "0-13-685843-0", ISBN = "0-13-685850-3", ISBN = "0-13-685868-6", ISBN = "0-13-685876-7", ISBN = "0-13-685884-8", ISBN = "0-13-685892-9", ISBN = "0-13-685967-4", ISBN = "0-13-812611-9", ISBN = "0-13-812611-9", ISBN = "0-13-822064-6", ISBN = "0-13-825001-4", ISBN = "0-13-838012-0", ISBN = "0-13-855974-0", ISBN = "0-13-880733-7", ISBN = "0-13-912296-6", ISBN = "0-13-912296-6", ISBN = "0-13-933441-6", ISBN = "0-13-945593-0", ISBN = "0-13-949876-1", ISBN = "0-13-972167-3", ISBN = "0-13-982992-X", ISBN = "0-19-212983-X", ISBN = "0-19-505838-0", ISBN = "0-19-853387-X", ISBN = "0-19-853387-X", ISBN = "0-19-853443-4", ISBN = "0-19-853755-7 (hardback), 0-19-853756-5 (paperback)", ISBN = "0-201-05866-9", ISBN = "0-201-05992-4", ISBN = "0-201-06008-6", ISBN = "0-201-06663-7", ISBN = "0-201-06663-7", ISBN = "0-201-06672-6", ISBN = "0-201-06672-6", ISBN = "0-201-06673-4", ISBN = "0-201-06755-2", ISBN = "0-201-06824-9", ISBN = "0-201-06896-6", ISBN = "0-201-07981-X", ISBN = "0-201-08017-6", ISBN = "0-201-08319-1", ISBN = "0-201-08319-1", ISBN = "0-201-09346-4 (hardback), 0-201-09356-1 (paperback)", ISBN = "0-201-09355-3", ISBN = "0-201-09528-9", ISBN = "0-201-09591-2", ISBN = "0-201-09689-7", ISBN = "0-201-09696-X", ISBN = "0-201-09720-6", ISBN = "0-201-10174-2", ISBN = "0-201-10174-2", ISBN = "0-201-10179-3", ISBN = "0-201-10179-3", ISBN = "0-201-10331-1", ISBN = "0-201-10381-8", ISBN = "0-201-10745-7", ISBN = "0-201-10877-1", ISBN = "0-201-11114-4", ISBN = "0-201-11537-9", ISBN = "0-201-11603-0", ISBN = "0-201-11749-5", ISBN = "0-201-11938-2", ISBN = "0-201-11941-2", ISBN = "0-201-11982-X", ISBN = "0-201-12008-9", ISBN = "0-201-12078-X", ISBN = "0-201-12110-7", ISBN = "0-201-12584-6", ISBN = "0-201-12593-5", ISBN = "0-201-12649-4", ISBN = "0-201-12792-X", ISBN = "0-201-12910-8", ISBN = "0-201-12920-5", ISBN = "0-201-13046-7", ISBN = "0-201-13437-3", ISBN = "0-201-13437-3", ISBN = "0-201-13438-1", ISBN = "0-201-13438-1", ISBN = "0-201-13445-4", ISBN = "0-201-13445-4", ISBN = "0-201-13446-2", ISBN = "0-201-13446-2", ISBN = "0-201-13447-0", ISBN = "0-201-13447-0", ISBN = "0-201-13448-9", ISBN = "0-201-13448-9", ISBN = "0-201-13548-5", ISBN = "0-201-14236-8", ISBN = "0-201-14236-8", ISBN = "0-201-14396-8", ISBN = "0-201-14396-8", ISBN = "0-201-14468-9", ISBN = "0-201-15002-6", ISBN = "0-201-15198-7", ISBN = "0-201-15572-9", ISBN = "0-201-15585-0", ISBN = "0-201-15672-5", ISBN = "0-201-15673-3", ISBN = "0-201-15674-1", ISBN = "0-201-15675-X", ISBN = "0-201-15676-8", ISBN = "0-201-15680-6", ISBN = "0-201-15681-4 (hardback), 0-201-15685-7 (paperback)", ISBN = "0-201-15683-0", ISBN = "0-201-15688-1", ISBN = "0-201-15790-X", ISBN = "0-201-15790-X", ISBN = "0-201-15911-2", ISBN = "0-201-16116-8", ISBN = "0-201-16410-8", ISBN = "0-201-16411-6", ISBN = "0-201-16503-1 (hardback), 0-201-16504-X (paperback)", ISBN = "0-201-16520-1", ISBN = "0-201-16579-1 (hardback), 0-201-13232-X (paperback)", ISBN = "0-201-16643-7", ISBN = "0-201-16891-X", ISBN = "0-201-17232-1", ISBN = "0-201-17233-X", ISBN = "0-201-17234-8", ISBN = "0-201-17236-4", ISBN = "0-201-17237-2", ISBN = "0-201-17535-5", ISBN = "0-201-17535-5", ISBN = "0-201-17574-6", ISBN = "0-201-17633-5", ISBN = "0-201-17633-5", ISBN = "0-201-17634-3", ISBN = "0-201-17833-8", ISBN = "0-201-18127-4", ISBN = "0-201-18260-2", ISBN = "0-201-18261-0", ISBN = "0-201-18323-4", ISBN = "0-201-19038-9", ISBN = "0-201-19334-5 (hardback), 0-201-19330-2 (paperback)", ISBN = "0-201-19334-5", ISBN = "0-201-19560-7", ISBN = "0-201-41625-5", ISBN = "0-201-41667-0", ISBN = "0-201-50018-3", ISBN = "0-201-50061-2", ISBN = "0-201-50257-7", ISBN = "0-201-50305-0", ISBN = "0-201-50390-5", ISBN = "0-201-50391-3", ISBN = "0-201-50393-X", ISBN = "0-201-50395-6 (hardback), 0-201-51560-1 (paperback)", ISBN = "0-201-50418-9", ISBN = "0-201-50424-3", ISBN = "0-201-50814-1", ISBN = "0-201-50814-1", ISBN = "0-201-50821-4", ISBN = "0-201-50862-1", ISBN = "0-201-50868-0", ISBN = "0-201-50935-0", ISBN = "0-201-50936-9", ISBN = "0-201-50937-7", ISBN = "0-201-51001-4", ISBN = "0-201-51002-2", ISBN = "0-201-51013-8", ISBN = "0-201-51014-6", ISBN = "0-201-51035-9", ISBN = "0-201-51058-8", ISBN = "0-201-51141-X", ISBN = "0-201-51141-X", ISBN = "0-201-51249-1", ISBN = "0-201-51375-7", ISBN = "0-201-51375-7", ISBN = "0-201-51376-5", ISBN = "0-201-51392-7", ISBN = "0-201-51425-7", ISBN = "0-201-51425-7", ISBN = "0-201-51459-1", ISBN = "0-201-51505-9 (hardback), 0-201-51561-X (paperback)", ISBN = "0-201-51507-5", ISBN = "0-201-51509-1 (hardback), 0-201-51506-7 (paperback)", ISBN = "0-201-51814-7", ISBN = "0-201-52149-0 (hardback), 0-201-52150-4 (paperback)", ISBN = "0-201-52243-8", ISBN = "0-201-52251-9", ISBN = "0-201-52253-5", ISBN = "0-201-52425-2", ISBN = "0-201-52781-2", ISBN = "0-201-52810-X", ISBN = "0-201-52811-8", ISBN = "0-201-52812-6", ISBN = "0-201-52813-4", ISBN = "0-201-52899-1", ISBN = "0-201-53472-X", ISBN = "0-201-53472-X", ISBN = "0-201-53992-6", ISBN = "0-201-54611-6", ISBN = "0-201-54709-0", ISBN = "0-201-54799-6", ISBN = "0-201-54799-6", ISBN = "0-201-54848-8", ISBN = "0-201-55703-7", ISBN = "0-201-55703-7", ISBN = "0-201-56345-2", ISBN = "0-201-56882-9", ISBN = "0-201-57044-0", ISBN = "0-231-05146-8", ISBN = "0-262-01063-1", ISBN = "0-262-01077-1 (MIT Press), 0-07-000-422-6", ISBN = "0-262-01102-6", ISBN = "0-262-01114-X", ISBN = "0-262-01123-9 (hardback), 0-262-69146-9 (paperback)", ISBN = "0-262-01124-7", ISBN = "0-262-02182-X", ISBN = "0-262-02192-7", ISBN = "0-262-02226-5", ISBN = "0-262-02266-4", ISBN = "0-262-02317-2", ISBN = "0-262-02334-2", ISBN = "0-262-03141-8", ISBN = "0-262-03167-1", ISBN = "0-262-03171-X", ISBN = "0-262-03181-7", ISBN = "0-262-07083-9", ISBN = "0-262-07106-1", ISBN = "0-262-07130-4", ISBN = "0-262-08143-1", ISBN = "0-262-08157-1", ISBN = "0-262-08159-8", ISBN = "0-262-08183-0", ISBN = "0-262-10045-2", ISBN = "0-262-11139-X", ISBN = "0-262-13205-2", ISBN = "0-262-13235-4", ISBN = "0-262-13252-4", ISBN = "0-262-13257-5", ISBN = "0-262-13263-X", ISBN = "0-262-15039-5", ISBN = "0-262-16082-X", ISBN = "0-262-18117-7", ISBN = "0-262-18143-6", ISBN = "0-262-18145-2 (hardback), 0-262-68069-6 (paperback)", ISBN = "0-262-19229-2 (MIT Press) and 0-07-057290-9", ISBN = "0-262-19250-0", ISBN = "0-262-19277-2", ISBN = "0-262-19285-3", ISBN = "0-262-19288-8", ISBN = "0-262-19301-9", ISBN = "0-262-20087-2", ISBN = "0-262-21009-6", ISBN = "0-262-21009-6", ISBN = "0-262-21009-6", ISBN = "0-262-23096-8", ISBN = "0-262-23117-4", ISBN = "0-262-23139-5 (MIT), 0-07-068147-3 (McGraw-Hill)", ISBN = "0-262-23150-6 (volume two), 0-262-23154-9 (two-volume set)", ISBN = "0-262-23151-4 (volume two), 0-262-23154-9 (two-volume set)", ISBN = "0-262-23152-2", ISBN = "0-262-23157-3", ISBN = "0-262-53071-6 (paper), 0-262-03144-2 (hard)", ISBN = "0-262-56038-0", ISBN = "0-262-58072-1", ISBN = "0-262-58080-2", ISBN = "0-262-58086-1", ISBN = "0-262-61026-4", ISBN = "0-262-66070-9 (paper)", ISBN = "0-262-66071-7", ISBN = "0-316-08275-9", ISBN = "0-387-53775-9", ISBN = "0-387-70001-3", ISBN = "0-387-90144-2, 3-540-90144-2", ISBN = "0-387-96048-1, 3-540-96048-1", ISBN = "0-387-96115-1 and 3-540-96115-1", ISBN = "0-387-96527-0, 3-540-96527-0", ISBN = "0-387-96598-X (New York), 3-540-96598-X (Berlin)", ISBN = "0-387-96608-0", ISBN = "0-387-96689-7 (USA) and 3-540-96689-7 (Germany)", ISBN = "0-387-96780-X", ISBN = "0-387-96915-2", ISBN = "0-387-97145-9", ISBN = "0-387-97562-4, 3-540-97562-4", ISBN = "0-387-97562-4, 3-540-97562-4", ISBN = "0-387-97592-6, 3-540-97592-6", ISBN = "0-387-97592-6, 3-540-97592-6", ISBN = "0-387-97616-7, 3-540-97616-7", ISBN = "0-387-97621-3", ISBN = "0-387-97622-1, 3-540-97622-1", OPTISBN = "0-393-95924-47", ISBN = "0-393-95926-0", ISBN = "0-394-35678-0", ISBN = "0-394-58640-9", ISBN = "0-394-72625-1", ISBN = "0-415-07858-X", ISBN = "0-425-11690-5", ISBN = "0-442-22888-0", ISBN = "0-442-31946-0", ISBN = "0-442-31946-0", ISBN = "0-444-70521-X", ISBN = "0-444-88013-5", OPTISBN = "0-444-88768-8", ISBN = "0-452-25497-3", ISBN = "0-452-25497-3", ISBN = "0-471-53294-0", ISBN = "0-471-61857-8", ISBN = "0-471-61976-0", ISBN = "0-471-81888-7", ISBN = "0-471-83185-9", ISBN = "0-471-87569-4", ISBN = "0-471-92139-4", ISBN = "0-471-92142-4 (Wiley), 3-519-02109-9 (Teubner)", ISBN = "0-471-92910-7", ISBN = "0-521-30811-9", ISBN = "0-521-37490-1", ISBN = "0-521-37490-1", ISBN = "0-521-38475-3 (hardback), 0-521-38622-5 (paperback)", ISBN = "0-521-39338-8 (hardback), 0-521-39732-4 (paperback)", ISBN = "0-534-09198-9", ISBN = "0-672-48440-4", ISBN = "0-673-38574-4", ISBN = "0-673-38574-4", ISBN = "0-673-39773-4", ISBN = "0-691-04264-0", ISBN = "0-7167-2136-8", ISBN = "0-7458-0005-X", ISBN = "0-7458-0148-X", ISBN = "0-7923-0635-X", ISBN = "0-7923-0635-X", ISBN = "0-7923-0875-1", ISBN = "0-7923-0929-4", ISBN = "0-7923-9045-8", ISBN = "0-8053-1601-9", ISBN = "0-8092-4368-7", ISBN = "0-8162-2060-3", ISBN = "0-8186-8931-5", ISBN = "0-8186-8945-5", ISBN = "0-8218-0053-1", ISBN = "0-8218-2997-1", ISBN = "0-8218-2999-8", ISBN = "0-8230-0732-4", ISBN = "0-8230-1320-0", ISBN = "0-8230-1320-0", ISBN = "0-8230-2122-X", ISBN = "0-8230-2122-X", ISBN = "0-8352-1704-3", ISBN = "0-8352-1704-3", ISBN = "0-85484-056-7", ISBN = "0-85484-059-1", ISBN = "0-85484-085-0", ISBN = "0-86094-166-3", ISBN = "0-87484-717-6", ISBN = "0-87850-064-2", ISBN = "0-88175-096-4", ISBN = "0-88275-642-7", ISBN = "0-88385-063-X", ISBN = "0-88385-063-X", ISBN = "0-89303-424-X", ISBN = "0-89303-556-4", ISBN = "0-89579-252-4", ISBN = "0-89588-396-1", ISBN = "0-89588-396-1", ISBN = "0-898-38235-1", ISBN = "0-89871-227-0", ISBN = "0-89871-260-2", ISBN = "0-89871-270-X", ISBN = "0-89871-270-X", ISBN = "0-89871-285-8", ISBN = "0-89871-285-8", ISBN = "0-89871-286-6", ISBN = "0-89871-294-7", ISBN = "0-89871-294-7", ISBN = "0-911971-76-9", ISBN = "0-911971-67-X", ISBN = "0-911971-69-6", ISBN = "0-911971-72-6", ISBN = "0-912704-57-8", ISBN = "0-914894-65-X", ISBN = "0-914930-13-3", ISBN = "0-918035-03-1", ISBN = "0-932376-02-9", ISBN = "0-932376-02-9", ISBN = "0-937-07380-6", ISBN = "0-937175-24-2", ISBN = "0-937175-34-X", ISBN = "0-937175-35-8", ISBN = "0-937175-38-2", ISBN = "0-937175-390", ISBN = "0-937175-40-4", ISBN = "0-937175-49-8", ISBN = "0-937175-59-5", ISBN = "0-937175-70-6", ISBN = "0-937175-75-7", ISBN = "0-937175-80-3", ISBN = "0-937175-82-X", ISBN = "0-937175-84-6", ISBN = "0-937175-85-4", ISBN = "0-937175-86-2", ISBN = "0-938151-12-6", ISBN = "0-941447-00-6", ISBN = "0-9614729-8-7", ISBN = "0534-09192-X", ISBN = "1-55512-022-9", ISBN = "1-55512-069-5", ISBN = "1-55512-106-3", ISBN = "1-55512-135-7", ISBN = "1-55521-198-4", ISBN = "1-55521-198-4", ISBN = "1-55558-033-5", ISBN = "1-55558-034-3", ISBN = "1-55558-041-6 (Digital Press) and 0-13-152414-3", ISBN = "1-55558-048-3", ISBN = "1-55558-051-3", ISBN = "1-55828-016-2", ISBN = "1-55828-029-4", ISBN = "1-55828-059-6", ISBN = "1-55851-057-5", ISBN = "1-55860-069-8", ISBN = "1-55860-069-8", ISBN = "1-56131-016-6, 1-56131-017-4 (paperback)", ISBN = "1-56347-009-8", ISBN = "1-56592-001-5", ISBN = "1-56592-007-4", ISBN = "1-877751-44-8; 1-877751-52-9; 1-877751-53-7", ISBN = "1-878567-01-2", ISBN = "1-878956-07-8", ISBN = "1-878956-07-8", ISBN = "2-7296-0233-X", ISBN = "2-7296-0233-X", ISBN = "2-87085-194-4", ISBN = "2-87085-194-4", ISBN = "3-209-01061-7", ISBN = "3-209-01165-6", ISBN = "3-486-21173-0", ISBN = "3-515-04808-1", ISBN = "3-519-02279-6", ISBN = "3-519-02488-8", ISBN = "3-519-02499-3", ISBN = "3-519-03047-0", ISBN = "3-519-03507-3", ISBN = "3-540-13920-6, 0-387-13920-6", ISBN = "3-540-16807-9, 0-387-16807-9", ISBN = "3-540-18797-9", ISBN = "3-540-51211-X", ISBN = "3-540-52707-9 and 0-387-52707-9", ISBN = "3-540-54539-5 and 0-387-54539-5", ISBN = "3-540-97003-7", ISBN = "3-7785-1804-6", ISBN = "3-87439-233-3", ISBN = "3-89319-115-1", ISBN = "3-89319-115-1", ISBN = "3-89319-152-6", ISBN = "3-89319-152-6", ISBN = "3-89319-199-2", ISBN = "3-89319-199-2", ISBN = "3-89319-287-5", ISBN = "3-89319-338-3", ISBN = "3-89319-356-1", ISBN = "3-925118-46-2", ISBN = "3-925118-97-7", ISBN = "3-925118-97-7", ISBN = "3-926515-01-5", ISBN = "3-926515-01-5", ISBN = "320901191-5", ISBN = "3922715-35-4", ISBN = "4-7561-0010-4", ISBN = "4-7561-0405-3", ISBN = "5-02-014712-5", ISBN = "82-90006-07-1", ISBN = "82-90006-09-8", ISBN = "87-550-1635-9", ISBN = "87-550-1636-7", ISBN = "87-550-1637-5", ISBN = "87-550-1638-3", ISBN = "87-550-1639-1", ISBN = "87-7252-089-2", ISBN = "87-7252-089-2", ISBN = "88-08-07838-8", ISBN = "88-203-1931-4", ISBN = "88-203-1932-2", ISBN = "88-371-0583-5", ISBN = "88-85613-20-9", ISBN = "88-85613-28-4", ISBN = "9-06789-151-7", ISBN = "90-247-3220-4", ISBN = "90-6196-357-5", ISBN = "90-6196-357-5", ISBN = "90-6980-015-2", ISBN = "91-7346-218-7", ISBN = "91-7868226-6", ISBN = "91-7900-417-2", ISBN = "91-7900-635-3", ISBN = "91-7900-753-8", ISBN = "91-7970-241-4", ISBN = "981-02-0915-0", ISBN = "0-201-56882-9", ISBN = "not yet available", ISBN = "", comment = "The following ISBN values have errors in them introduced by perturbing the first digit.", ISBN = "1 241 13267 3", ISBN = "2 500 8022 1", ISBN = "3 85331 623 6", ISBN = "4 913720 72 0", ISBN = "5 948905 72 7", ISBN = "6 948905 76 X", ISBN = "7-03-063892-5", ISBN = "8-07-008845-4", ISBN = "9-07-008845-4", ISBN = "X-07-021623-1", ISBN = "1-07-026751-0", ISBN = "2-07-033508-7", ISBN = "3-07-039006-1 (hardback), 4-07-039002-9 (paperback)", ISBN = "5-07-043109-4", ISBN = "6-07-881645-9", ISBN = "7-070-15557-7", ISBN = "8-08-030713-2", ISBN = "9-12-079062-9", ISBN = "X-12-117645-2", ISBN = "1-12-117650-9", ISBN = "2-12-117650-9", comment = "The following ISBN values have the wrong number of digits.", ISBN = "2", ISBN = "2-1", ISBN = "2-12", ISBN = "2-12-1", ISBN = "2-12-11", ISBN = "2-12-117", ISBN = "2-12-1176", ISBN = "2-12-11765", ISBN = "2-12-117650", ISBN = "2-12-117650-9X", } bibclean-2.11.4.1.orig/build-all.sh0000755000175200017520000000363106034021056016071 0ustar debiandebian#! /bin/sh #======================================================================= # This script attempts to build and check a program on every UNIX C # and C++ compiler available to the author. # # Because of wide variations in optimizer switches, no attempt is yet # made to validate the same compiler at multiple optimization levels: # that job is left for the installer. # # Usage: # build-all.sh |& tee -a typescript.xxx # # The program author can examine the output in the typescript.xxx file # to determine what, if any, changes are needed in the code to ensure # that it will build correctly. # [30-Sep-1995] #======================================================================= # On DECstation ULTRIX, /bin/sh does not support shell functions, but # /usr/bin/ksh and /usr/local/bin/bash do. We therefore change shells # on that system. SHELL=/bin/sh if [ -f /usr/bin/ksh ] then SHELL=/usr/bin/ksh fi $SHELL </dev/null 2>&1 CC="\$1 \$2" ./configure && make && make check date fi } # Here is a list of known compilers on DEC (MIPS ULTRIX and Alpha # OSF/1), HP (PA-RISC HP-UX), IBM (POWER AIX), IBM PC (Intel LINUX), # NeXT (Motorola 68K Mach) SGI (MIPS), and Sun (SPARC SunOS and SPARC # Solaris) systems. We try all that actually exist on this system. doconfig /bin/CC doconfig /bin/c89 doconfig /bin/cc doconfig /bin/cxx doconfig /bin/xlC doconfig /opt/SUNWspro/bin/CC doconfig /opt/SUNWspro/bin/cc doconfig /usr/bin/CC doconfig /usr/bin/c89 doconfig /usr/bin/cc doconfig /usr/bin/g++ doconfig /usr/bin/gcc doconfig /usr/ccs/bin/c89 doconfig /usr/ccs/bin/cc doconfig /usr/lang/CC doconfig /usr/lang/acc doconfig /usr/local/bin/g++ doconfig /usr/local/bin/gcc doconfig /usr/local/bin/lcc "-A -A" doconfig /usr/ucb/cc END-OF-FILE bibclean-2.11.4.1.orig/testscr2.bo20000644000175200017520000000531005574125753016057 0ustar debiandebian@Comment{ This file contains some test Scribe bibliography entries with embedded paragraph breaks for testing the -no-parbreaks switch in bibclean. Without that switch, it should process correctly; with it, 3 sets of error messages should be displayed. } @TechReport{bs-1629-0, author = "BSI", title = "Bibliographic References", institution = "British Standards Institution", year = "1976", type = "BS", number = "1629", } @TechReport{bs-1629-1, author = "BSI", title = "Bibliographic ?? Unexpected paragraph break for field ``title''. ?? File positions: input [testscr2.org] output [stdout] ?? Entry input byte=489 line=19 column= 1 output byte=474 line=17 column= 0 ?? Value input byte=547 line=21 column=14 output byte=538 line=19 column=17 ?? Current input byte=564 line=23 column= 0 output byte=553 line=19 column=32 References", INSTITUTION = "British Standards Institution", YEAR = "1976", TYPE = "BS", NUMBER = "1629" ) @TechReport{bs-1629-2, author = "BSI", title = "Bibliographic References", institution = "British Standards Institution", year = "1976", type = "BS", number = "1629", } @TechReport{bs-1629-3, author = "BSI", title = "Bibliographic ?? Unexpected paragraph break for field ``title''. ?? File positions: input [testscr2.org] output [stdout] ?? Entry input byte=919 line=43 column= 1 output byte=1309 line=46 column= 0 ?? Value input byte=977 line=45 column=14 output byte=1373 line=48 column=17 ?? Current input byte=994 line=47 column= 0 output byte=1388 line=48 column=32 References", INSTITUTION = "British Standards Institution", YEAR = "1976", TYPE = "BS", NUMBER = "1629" ) @TechReport{bs-1629-4, author = "BSI", title = "Bibliographic References", institution = "British Standards Institution", year = "1976", type = "BS", number = "1629", } @TechReport{bs-1629-5, author = "BSI", title = "Bibliographic ?? Unexpected paragraph break for field ``title''. ?? File positions: input [testscr2.org] output [stdout] ?? Entry input byte=1337 line=65 column= 1 output byte=2146 line=74 column= 0 ?? Value input byte=1393 line=67 column=14 output byte=2210 line=76 column=17 ?? Current input byte=1410 line=69 column= 0 output byte=2225 line=76 column=32 References", INSTITUTION = "British Standards Institution", YEAR = 1976, TYPE = BS, NUMBER = 1629 ) bibclean-2.11.4.1.orig/config.h0000644000175200017520000001224107133432055015306 0ustar debiandebian/* config.h. Generated automatically by configure. */ /* WARNING: Do NOT edit the config.h file; instead, put any needed changes in custom.h, so that they can override assumptions made in the automatically-generated config.h file */ /* #undef STDC_HEADERS */ /* #undef _ALL_SOURCE */ /* #undef _POSIX_SOURCE */ #define HAVE_STDC 1 /* Define if you want old pattern-less string matching in .ini files */ /* #undef HAVE_OLDCODE */ /* Define if you want standard bibclean-specific pattern in .ini files */ #define HAVE_PATTERNS 1 /* Define if you want regular-expression patterns in .ini files using re_comp() */ /* #undef HAVE_RECOMP */ /* #undef HAVE_REGEXP */ #if !(defined(__cplusplus) || defined(c_plusplus)) /* Define to empty if the keyword does not work, but do nothing in */ /* C++ environment, because autoconf 2.4 gets the wrong answer from */ /* the AC_C_CONST test program under C++ compilation. */ #define const #endif /* Define if your free() requires (char*) cast instead of (void*) */ /* #undef FREE_CAST_IS_CHAR_STAR */ /* Define if your compiler recognizes \a as an alert (ASCII BEL) character */ #define HAVE_ALERT_CHAR 1 /* Library functions that we need */ /* #undef HAVE_GETCWD */ /* #undef HAVE_GETWD */ /* #undef HAVE_STRCSPN */ /* #undef HAVE_STRDUP */ /* #undef HAVE_STRSPN */ /* #undef HAVE_STRSTR */ /* #undef HAVE_STRTOD */ /* #undef HAVE_STRTOL */ /* Header files that we might need */ /* #undef HAVE_CONIO_H */ #define HAVE_CTYPE_H 1 /* #undef HAVE_DESCRIP_H */ #define HAVE_ERRNO_H 1 #define HAVE_FCNTL_H 1 /* #undef HAVE_IODEF_H */ /* #undef HAVE_IO_H */ /* #undef HAVE_JPIDEF_H */ #define HAVE_LIMITS_H 1 /* #undef HAVE_OSFCN_H */ #define HAVE_PWD_H 1 #define HAVE_REGEXP_H 1 #define HAVE_REGEX_H 1 /* #undef HAVE_RMS_H */ #define HAVE_SGTTY_H 1 /* #undef HAVE_SSDEF_H */ /* #undef HAVE_STAT_H */ /* #undef HAVE_STDDEF_H */ #define HAVE_STDIO_H 1 #define HAVE_STDLIB_H 1 #define HAVE_STRING_H 1 #define HAVE_SYS_IOCTL_H 1 #define HAVE_SYS_PARAM_H 1 #define HAVE_SYS_STAT_H 1 #define HAVE_SYS_TYPES_H 1 #define HAVE_TERMIOS_H 1 #define HAVE_TERMIO_H 1 #define HAVE_TIME_H 1 /* #undef HAVE_TT2DEF_H */ /* #undef HAVE_TTDEF_H */ /* #undef HAVE_TYPES_H */ #define HAVE_UNISTD_H 1 /* #undef HAVE_UNIXIO_H */ #define HAVE_IOCTL_PROTOTYPE 1 #define RCSID(s) static char rcsid[] = s; #define OS_UNIX 1 #include /* NB: some systems have Standard C header files, but compilers that do not accept function prototypes (e.g. HP HP-UX 9.0.3 /bin/cc) */ #if defined(STDC_HEADERS) && (defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus)) #define ARGS(plist) plist #define VOID void #else #define ARGS(plist) () #define VOID #endif #define SCREEN_LINES 24 /*********************************************************************** The limit on file name lengths is non-standard: -------- ------------- ------------------------------------------ Name Definition System -------- ------------- ------------------------------------------ FNMAX PCC-20 MAXPATH Turbo C 2.0, C and C++ 3.0, and TopSpeed C _MAX_PATH Microsoft C 5.0, 6.0, 7.0 and TopSpeed C MAXPATHLEN Sun OS (4.2BSD), 4.3BSD, Gould UTX/32, HPUX, KCC-20, AIX (RT, RS, PS/2, 370), HP/Apollo DomainOS, DEC Alpha (OSF/1) PATH_MAX SYS V (Silicon Graphics) PATH_MAX POSIX, DEC Alpha (OSF/1) FILENAME_MAX Intel RMX, NeXT Mach, Turbo C/C++ 3.0 -------- ------------- ------------------------------------------ ***********************************************************************/ #if defined(HAVE_SYS_PARAM_H) #include #endif #if defined(HAVE_LIMITS_H) #include #endif #if defined(HAVE_STDLIB_H) #include #endif #if defined(HAVE_UNIXIO_H) #include #endif #if !defined(MAXPATHLEN) && defined(FNMAX) #define MAXPATHLEN FNMAX #endif #if !defined(MAXPATHLEN) && defined(MAXPATH) #define MAXPATHLEN MAXPATH #endif #if !defined(MAXPATHLEN) && defined(_MAX_PATH) #define MAXPATHLEN _MAX_PATH #endif #if !defined(MAXPATHLEN) && defined(PATH_MAX) #define MAXPATHLEN PATH_MAX #endif #if !defined(MAXPATHLEN) && defined(FILENAME_MAX) #define MAXPATHLEN FILENAME_MAX #endif #if !defined(MAXPATHLEN) && defined(FNMAX) #define MAXPATHLEN 1024 #endif #if OS_PCDOS #define SEP_COMP " ;,|" /* separators between filename components */ #define SEP_PATH "\\" /* separators between directory path and filename */ #endif #if OS_UNIX #define SEP_COMP " ;:,|" /* separators between filename components */ #define SEP_PATH "/" /* separators between directory path and filename */ #endif #if OS_VAXVMS #define SEP_COMP " ;,|" /* separators between filename components */ #define SEP_PATH ":]" /* separators between directory path and filename */ /* first char is what we default to */ #endif #if defined(__TURBOC__) /* #undef fileno */ #define fileno(f) ((f)->fd) #endif #include #if !defined(HAVE_IOCTL_PROTOTYPE) #if defined(__cplusplus) || defined(c_plusplus) /* system files should have: extern "C" {int ioctl ARGS((int, int, ...));} */ #else extern int ioctl ARGS((int, int, ...)); #endif #endif #if defined(FREE_CAST_IS_CHAR_STAR) #define FREE(p) free((char*)(p)) #else #define FREE(p) free((void*)(p)) #endif bibclean-2.11.4.1.orig/testbib6.org0000644000175200017520000002223506525171227016134 0ustar debiandebian@Article{x, MONTH = MAR # "\slash " # APR, MONTH = MAR # "\slash" # APR, MONTH = mar # "\slash " # apr, month = mar # "\slash" # apr, MONTH = MAR # "- " # APR, MONTH = MAR # "-" # APR, MONTH = mar # "- " # apr, month = mar # "-" # apr, MONTH = MAR # "-- " # APR, MONTH = MAR # "--" # APR, MONTH = mar # "-- " # apr, month = mar # "--" # apr, MONTH = MAR # " -- " # APR, MONTH = MAR # "--" # APR, MONTH = mar # " -- " # apr, month = mar # "--" # apr, MONTH = MAR # " \endash{} " # APR, MONTH = MAR # "\endash{} " # APR, MONTH = mar # " \endash{} " # apr, month = mar # "\endash{} " # apr, MONTH = MAR # " \endash " # APR, MONTH = MAR # "\endash " # APR, MONTH = mar # " \endash " # apr, month = mar # "\endash " # apr, MONTH = "March" # "\slash " # APR, MONTH = "March" # "\slash" # APR, MONTH = mar # "\slash " # apr, month = mar # "\slash" # apr, MONTH = "March" # "- " # APR, MONTH = "March" # "-" # APR, MONTH = mar # "- " # apr, month = mar # "-" # apr, MONTH = "March" # "-- " # APR, MONTH = "March" # "--" # APR, MONTH = mar # "-- " # apr, month = mar # "--" # apr, MONTH = "March" # " -- " # APR, MONTH = "March" # "--" # APR, MONTH = mar # " -- " # apr, month = mar # "--" # apr, MONTH = "March" # " \endash{} " # APR, MONTH = "March" # "\endash{} " # APR, MONTH = mar # " \endash{} " # apr, month = mar # "\endash{} " # apr, MONTH = "March" # " \endash " # APR, MONTH = "March" # "\endash " # APR, MONTH = mar # " \endash " # apr, month = mar # "\endash " # apr, MONTH = MAR # "\slash " # "April", MONTH = MAR # "\slash" # "April", MONTH = mar # "\slash " # "April", month = mar # "\slash" # "April", MONTH = MAR # "- " # "April", MONTH = MAR # "-" # "April", MONTH = mar # "- " # "April", month = mar # "-" # "April", MONTH = MAR # "-- " # "April", MONTH = MAR # "--" # "April", MONTH = mar # "-- " # "April", month = mar # "--" # "April", MONTH = MAR # " -- " # "April", MONTH = MAR # "--" # "April", MONTH = mar # " -- " # "April", month = mar # "--" # "April", MONTH = MAR # " \endash{} " # "April", MONTH = MAR # "\endash{} " # "April", MONTH = mar # " \endash{} " # "April", month = mar # "\endash{} " # "April", MONTH = MAR # " \endash " # "April", MONTH = MAR # "\endash " # "April", MONTH = mar # " \endash " # "April", month = mar # "\endash " # "April", MONTH = "March" # "\slash " # "April", MONTH = "March" # "\slash" # "April", MONTH = mar # "\slash " # "April", month = mar # "\slash" # "April", MONTH = "March" # "- " # "April", MONTH = "March" # "-" # "April", MONTH = mar # "- " # "April", month = mar # "-" # "April", MONTH = "March" # "-- " # "April", MONTH = "March" # "--" # "April", MONTH = mar # "-- " # "April", month = mar # "--" # "April", MONTH = "March" # " -- " # "April", MONTH = "March" # "--" # "April", MONTH = mar # " -- " # "April", month = mar # "--" # "April", MONTH = "March" # " \endash{} " # "April", MONTH = "March" # "\endash{} " # "April", MONTH = mar # " \endash{} " # "April", month = mar # "\endash{} " # "April", MONTH = "March" # " \endash " # "April", MONTH = "March" # "\endash " # "April", MONTH = mar # " \endash " # apr, month = mar # "\endash " # apr, MONTH = MAR # "" # "" # "" # "\slash " # "" # "" # "" # APR, MONTH = MAR # "" # "" # "" # "\slash" # "" # "" # "" # APR, MONTH = mar # "" # "" # "" # "\slash " # "" # "" # "" # apr, month = mar # "" # "" # "" # "\slash" # "" # "" # "" # apr, MONTH = MAR # "" # "" # "" # "- " # "" # "" # "" # APR, MONTH = MAR # "" # "" # "" # "-" # "" # "" # "" # APR, MONTH = mar # "" # "" # "" # "- " # "" # "" # "" # apr, month = mar # "" # "" # "" # "-" # "" # "" # "" # apr, MONTH = MAR # "" # "" # "" # "-- " # "" # "" # "" # APR, MONTH = MAR # "" # "" # "" # "--" # "" # "" # "" # APR, MONTH = mar # "" # "" # "" # "-- " # "" # "" # "" # apr, month = mar # "" # "" # "" # "--" # "" # "" # "" # apr, MONTH = MAR # "" # "" # "" # " -- " # "" # "" # "" # APR, MONTH = MAR # "" # "" # "" # "--" # "" # "" # "" # APR, MONTH = mar # "" # "" # "" # " -- " # "" # "" # "" # apr, month = mar # "" # "" # "" # "--" # "" # "" # "" # apr, MONTH = MAR # "" # "" # "" # " \endash{} " # "" # "" # "" # APR, MONTH = MAR # "" # "" # "" # "\endash{} " # "" # "" # "" # APR, MONTH = mar # "" # "" # "" # " \endash{} " # "" # "" # "" # apr, month = mar # "" # "" # "" # "\endash{} " # "" # "" # "" # apr, MONTH = MAR # "" # "" # "" # " \endash " # "" # "" # "" # APR, MONTH = MAR # "" # "" # "" # "\endash " # "" # "" # "" # APR, MONTH = mar # "" # "" # "" # " \endash " # "" # "" # "" # apr, month = mar # "" # "" # "" # "\endash " # "" # "" # "" # apr, MONTH = "March" # "" # "" # "" # "\slash " # "" # "" # "" # APR, MONTH = "March" # "" # "" # "" # "\slash" # "" # "" # "" # APR, MONTH = mar # "" # "" # "" # "\slash " # "" # "" # "" # apr, month = mar # "" # "" # "" # "\slash" # "" # "" # "" # apr, MONTH = "March" # "" # "" # "" # "- " # "" # "" # "" # APR, MONTH = "March" # "" # "" # "" # "-" # "" # "" # "" # APR, MONTH = mar # "" # "" # "" # "- " # "" # "" # "" # apr, month = mar # "" # "" # "" # "-" # "" # "" # "" # apr, MONTH = "March" # "" # "" # "" # "-- " # "" # "" # "" # APR, MONTH = "March" # "" # "" # "" # "--" # "" # "" # "" # APR, MONTH = mar # "" # "" # "" # "-- " # "" # "" # "" # apr, month = mar # "" # "" # "" # "--" # "" # "" # "" # apr, MONTH = "March" # "" # "" # "" # " -- " # "" # "" # "" # APR, MONTH = "March" # "" # "" # "" # "--" # "" # "" # "" # APR, MONTH = mar # "" # "" # "" # " -- " # "" # "" # "" # apr, month = mar # "" # "" # "" # "--" # "" # "" # "" # apr, MONTH = "March" # "" # "" # "" # " \endash{} " # "" # "" # "" # APR, MONTH = "March" # "" # "" # "" # "\endash{} " # "" # "" # "" # APR, MONTH = mar # "" # "" # "" # " \endash{} " # "" # "" # "" # apr, month = mar # "" # "" # "" # "\endash{} " # "" # "" # "" # apr, MONTH = "March" # "" # "" # "" # " \endash " # "" # "" # "" # APR, MONTH = "March" # "" # "" # "" # "\endash " # "" # "" # "" # APR, MONTH = mar # "" # "" # "" # " \endash " # "" # "" # "" # apr, month = mar # "" # "" # "" # "\endash " # "" # "" # "" # apr, MONTH = MAR # "" # "" # "" # "\slash " # "" # "" # "" # "April", MONTH = MAR # "" # "" # "" # "\slash" # "" # "" # "" # "April", MONTH = mar # "" # "" # "" # "\slash " # "" # "" # "" # "April", month = mar # "" # "" # "" # "\slash" # "" # "" # "" # "April", MONTH = MAR # "" # "" # "" # "- " # "" # "" # "" # "April", MONTH = MAR # "" # "" # "" # "-" # "" # "" # "" # "April", MONTH = mar # "" # "" # "" # "- " # "" # "" # "" # "April", month = mar # "" # "" # "" # "-" # "" # "" # "" # "April", MONTH = MAR # "" # "" # "" # "-- " # "" # "" # "" # "April", MONTH = MAR # "" # "" # "" # "--" # "" # "" # "" # "April", MONTH = mar # "" # "" # "" # "-- " # "" # "" # "" # "April", month = mar # "" # "" # "" # "--" # "" # "" # "" # "April", MONTH = MAR # "" # "" # "" # " -- " # "" # "" # "" # "April", MONTH = MAR # "" # "" # "" # "--" # "" # "" # "" # "April", MONTH = mar # "" # "" # "" # " -- " # "" # "" # "" # "April", month = mar # "" # "" # "" # "--" # "" # "" # "" # "April", MONTH = MAR # "" # "" # "" # " \endash{} " # "" # "" # "" # "April", MONTH = MAR # "" # "" # "" # "\endash{} " # "" # "" # "" # "April", MONTH = mar # "" # "" # "" # " \endash{} " # "" # "" # "" # "April", month = mar # "" # "" # "" # "\endash{} " # "" # "" # "" # "April", MONTH = MAR # "" # "" # "" # " \endash " # "" # "" # "" # "April", MONTH = MAR # "" # "" # "" # "\endash " # "" # "" # "" # "April", MONTH = mar # "" # "" # "" # " \endash " # "" # "" # "" # "April", month = mar # "" # "" # "" # "\endash " # "" # "" # "" # "April", MONTH = "March" # "" # "" # "" # "\slash " # "" # "" # "" # "April", MONTH = "March" # "" # "" # "" # "\slash" # "" # "" # "" # "April", MONTH = mar # "" # "" # "" # "\slash " # "" # "" # "" # "April", month = mar # "" # "" # "" # "\slash" # "" # "" # "" # "April", MONTH = "March" # "" # "" # "" # "- " # "" # "" # "" # "April", MONTH = "March" # "" # "" # "" # "-" # "" # "" # "" # "April", MONTH = mar # "" # "" # "" # "- " # "" # "" # "" # "April", month = mar # "" # "" # "" # "-" # "" # "" # "" # "April", MONTH = "March" # "" # "" # "" # "-- " # "" # "" # "" # "April", MONTH = "March" # "" # "" # "" # "--" # "" # "" # "" # "April", MONTH = mar # "" # "" # "" # "-- " # "" # "" # "" # "April", month = mar # "" # "" # "" # "--" # "" # "" # "" # "April", MONTH = "March" # "" # "" # "" # " -- " # "" # "" # "" # "April", MONTH = "March" # "" # "" # "" # "--" # "" # "" # "" # "April", MONTH = mar # "" # "" # "" # " -- " # "" # "" # "" # "April", month = mar # "" # "" # "" # "--" # "" # "" # "" # "April", MONTH = "March" # "" # "" # "" # " \endash{} " # "" # "" # "" # "April", MONTH = "March" # "" # "" # "" # "\endash{} " # "" # "" # "" # "April", MONTH = mar # "" # "" # "" # " \endash{} " # "" # "" # "" # "April", month = mar # "" # "" # "" # "\endash{} " # "" # "" # "" # "April", MONTH = "March" # "" # "" # "" # " \endash " # "" # "" # "" # "April", MONTH = "March" # "" # "" # "" # "\endash " # "" # "" # "" # "April", MONTH = mar # "" # "" # "" # " \endash " # "" # "" # "" # apr, month = mar # "" # "" # "" # "\endash " # "" # "" # "" # apr, } bibclean-2.11.4.1.orig/xlimits.h0000644000175200017520000000021606027723754015543 0ustar debiandebian#ifndef XLIMITS_H_DEFINED_ #define XLIMITS_H_DEFINED_ #ifdef HAVE_LIMITS_H #include #else #endif #endif /* XLIMITS_H_DEFINED_ */ bibclean-2.11.4.1.orig/romtol.dat0000644000175200017520000000027405322641772015707 0ustar debiandebiani ii iii iiii iv v vi vii viii viiii ix x xi xii xiii xiiii xiv xv xvi xvii xviii xviiii xix xx xxx xxxx xxxxx l c cc cd d dc cm m mcm mcmxcii mxmii abc iabc vabc xabc labc cabc dabc mabc bibclean-2.11.4.1.orig/testbib2.ltx0000644000175200017520000000050405302031270016124 0ustar debiandebian% -*-latex-*- % Document name: /u/sy/beebe/tex/bibclean/testbib2.ltx % Creator: Nelson H.F. Beebe [beebe@magna.math.utah.edu] % Creation Date: Sat Oct 6 17:38:08 1990 \documentstyle[]{article} \newcommand{\X}[1]{{#1}\index{{#1}}} \begin{document} \bibliographystyle{alpha} \nocite{*} \bibliography{testbib2} \end{document} bibclean-2.11.4.1.orig/xtypes.h0000644000175200017520000000027706027724226015410 0ustar debiandebian#ifndef XTYPES_H_DEFINED_ #define XTYPES_H_DEFINED_ #ifdef HAVE_TYPES_H #include #else #ifdef HAVE_SYS_TYPES_H #include #endif #endif #endif /* XTYPES_H_DEFINED_ */ bibclean-2.11.4.1.orig/testbib2.org0000644000175200017520000016333105304620232016120 0ustar debiandebian% REDUCE BIBLIOGRAPHY % Part 1: A-F % Copyright (c) 1990 The RAND Corporation. All Rights Reserved. % Additions and corrections are solicited. Please send them, in the % same format as these entries if possible, to reduce at rand.org. @ARTICLE{Abbott:85, AUTHOR = "J. A. Abbott and R. J. Bradford and J. H. Davenport", TITLE = "A Remark on Factorisation", JOURNAL = "{SIGSAM} Bulletin", YEAR = 1985, VOLUME = 19, NUMBER = 2, PAGES = "31-33", MONTH = "May"} @INPROCEEDINGS{Abbott:86, AUTHOR = "J. A. Abbott and R. J. Bradford and J. H. Davenport", TITLE = "The {Bath} Algebraic Number Package", BOOKTITLE = "Proc. of {SYMSAC} '86", YEAR = 1986, PAGES = "250-253"} @INPROCEEDINGS{Abbott:87, AUTHOR = "J. A. Abbott and J. H. Davenport", TITLE = "Polynomial Factorization: An Exploration of {Lenstra's} Algorithm", BOOKTITLE = "Proc. {EUROCAL} '87, Lecture Notes in Computer Science", YEAR = 1987, VOLUME = 378, PAGES = "391-402", PUBLISHER = "Springer-Verlag"} @INPROCEEDINGS{Abbott:87a, AUTHOR = "J. A. Abbott", TITLE = "Integration: Solving the {Risch} Differential Equation", BOOKTITLE = "Proc. {EUROCAL} '87, Lecture Notes in Computer Science", YEAR = 1987, VOLUME = 378, PAGES = "465-467", PUBLISHER = "Springer-Verlag"} @PHDTHESIS{Abbott:88, AUTHOR = "J. A. Abbott", TITLE = "Factorisation of Polynomials over Algebraic Number Fields", SCHOOL = "Univ. of Bath, England", YEAR = 1988} @ARTICLE{Abbott:88a, AUTHOR = "J. A. Abbott and J. H. Davenport", TITLE = "A Remark on a Paper by {Wang}: Another Surprising Property of 42", JOURNAL = "Math. Comp.", YEAR = 1988, VOLUME = 51, PAGES = "837-839"} @INPROCEEDINGS{Abbott:89, AUTHOR = "J. A. Abbott", TITLE = "Recovery of Algebraic Numbers from their p-Adic Approximations", BOOKTITLE = "Proc. of {ISSAC} '89", PUBLISHER = "{ACM} Press, New York", YEAR = 1989, PAGES = "112-120"} @TECHREPORT{Abbott:89a, AUTHOR = "J. A. Abbott and R. J. Bradford and J. H. Davenport", TITLE = "A Remark on the Multiplication of Sparse Polynomials", NUMBER = "TR 89-21", YEAR = 1989, INSTITUTION = "School of Mathematical Sciences, University of Bath"} @INPROCEEDINGS{Abdali:88, AUTHOR = "S. K. Abdali and D. S. Wise", TITLE = "Experiments with Quadtree Representation of Matrices", BOOKTITLE = "Proc. of {ISSAC} '88", PUBLISHER = "Springer-Verlag", YEAR = 1988, VOLUME = 358, PAGES = "96-108"} @ARTICLE{Abiezzi:83, AUTHOR = "Salim S. {Abi-Ezzi}", TITLE = "Clarification to the Symbolic Mode in {REDUCE}", JOURNAL = "{SIGSAM} Bulletin", YEAR = 1983, VOLUME = 17, NUMBER = "3 and 4", PAGES = "43-47", MONTH = "August and November"} @ARTICLE{Adams:83, AUTHOR = "K. J. Adams", TITLE = "Analytic Estimates for the Dynamic Aperture of Nonlinear Lattices", JOURNAL = "IEEE Trans. Nucl. Sci.", YEAR = 1983, VOLUME = "NS-30", PAGES = "2436-2438"} %"For an accelerator lattice..." REDUCE was used to obtain low order %coefficients in the calculation of the amplitude. @ARTICLE{Adkins:83, AUTHOR = "G. S. Adkins", TITLE = "Analytic Evaluation of an {O}($\alpha$) Vertex Correction to the Rate of Orthopositronium", JOURNAL = "Phys. Rev. A", YEAR = 1983, VOLUME = 27, PAGES = "530-532", ABSTRACT = {The order-$\alpha$ correction to the lowest order orthopositronium decay rate due to the two outer-vertex graphs obtained in analytic form.}} @ARTICLE{Adkins:83a, AUTHOR = "G. S. Adkins and F. R. Brown", TITLE = "Rate for Positronium Decay to Five Photons", JOURNAL = "Phys. Rev. A", YEAR = 1983, VOLUME = 28, PAGES = "1164-1165", ABSTRACT = {{REDUCE} used to calculate trace of $\gamma$ matrices. Large calculation.}} @ARTICLE{Adkins:85, AUTHOR = "G. S. Adkins", TITLE = "Inner-Vertex Contributions to the Decay Rate of Orthopositronium", JOURNAL = "Phys. Rev. A", YEAR = 1985, VOLUME = 31, PAGES = "1250-1252", ABSTRACT = {{REDUCE} trace calculations. "In this paper the order-$\alpha$ contribution to the inner-vertex graphs to the decay rate of orthopositronium is obtained in analytic form."}} @ARTICLE{Aguilera-Navarro:87, AUTHOR = "V. C. Aguilera-Navarro and R. Guardiola and C. Keller and M. de Llano and M. Popovic and M. Fortes", TITLE = "Van der {Waals} Perturbation Theory for Fermion and Boson Ground-State Matter", JOURNAL = "Phys. Rev. A", YEAR = 1987, VOLUME = 35, PAGES = "563-584"} %Uses computer algebra to rearrange ideal-gas-based low-density %expansions; to them REDUCE or MACSYMA provide just the expertise they %require to substitute forms into equations, and so makes their %formulation possible. @ARTICLE{Aldins:69, AUTHOR = "J. Aldins and S. J. Brodsky and A. J. Dufner and T. Kinoshita", TITLE = "Photon-Photon Scattering Contribution to the Sixth Order Magnetic Moments of the Muon and Electron", JOURNAL = "Phys. Rev. Lett.", YEAR = 1969, VOLUME = 23, PAGES = "441-443"} @TECHREPORT{Alekseev:86, AUTHOR = "A. I. Alekseev and V. F. Edneral", TITLE = "Tensor Structure of Axial Gauge Polarization Operator in the Infrared Region", INSTITUTION = "IHEP", YEAR = 1986, TYPE = "Preprint", NUMBER = "86-46"} @ARTICLE{Alekseev:87, AUTHOR = "A. I. Alekseev and V. F. Edneral", TITLE = "Tensor Structure of Gluon Polarization Operator in the Axial Gauge for Infra-Red Region", JOURNAL = "Journal of Nuclear Physics", YEAR = 1987, PAGES = "1105-1114"} @TECHREPORT{Alekseev:87a, AUTHOR = "A. I. Alekseev and V. F. Edneral", TITLE = "On Evaluation of {Feynman} Integrals in Axial Gauge", INSTITUTION = "IHEP", YEAR = 1987, TYPE = "Preprint", NUMBER = "87-118"} %The recurrent algorithm for axial gauge calculations of %one-loop massless {Feynman} integrals in the n-dimensional %momentum space is described. The algorithm we suggest is %realized on the basis of REDUCE system and presented as %a procedure. It is rather effective for cumbersome %combinations of those integrals. @ARTICLE{Alfeld:82, AUTHOR = "P. Alfeld", TITLE = "Fixed Point Iteration with Inexact Function Values", JOURNAL = "Math. Comp.", YEAR = 1982, VOLUME = 38, PAGES = "87-98"} %Numerical analysis generating an improved iterative scheme. "The %technical manipulations in this paper were carried out using the %symbol manipulation language REDUCE." @TECHREPORT{Amirkhanov:87, AUTHOR = "I. V. Amirkhanov and E. P. Zhydkov and I. E. Zhydkova", TITLE = "The Conditions of Bounding of the Oscillation Amplitudes of Charge Particle within the Resonance Vicinity Investigations", INSTITUTION = "J.I.N.R., Dubna", YEAR = 1987, NUMBER = "P11-87-452"} @ARTICLE{Antweiler:89, AUTHOR = "Werner Antweiler and Andreas Strotmann and Volker Winkelmann", TITLE = "A {\TeX-{REDUCE}-Interface}", JOURNAL = "SIGSAM Bulletin", YEAR = 1989, VOLUME = 23, MONTH = "February", PAGES = "26-33"} @ARTICLE{Appelquist:70, AUTHOR = "T. W. Appelquist and S. J. Brodsky", TITLE = "The Order $\alpha^{2}$ Electrodynamic Corrections to the {Lamb} Shift", JOURNAL = "Phys. Rev. Letters", YEAR = 1970, VOLUME = 24, PAGES = "562-565"} @TECHREPORT{Arbuzov:86, AUTHOR = "B. A. Arbuzov and E. E. Boos and A. I. Davydychev", TITLE = "Infrared Asymptotics of Gluonic {Green} Functions in Covariant Gauge", INSTITUTION = "IHEP", YEAR = 1986, TYPE = "Preprint", NUMBER = "86-123"} @ARTICLE{Aso:81, AUTHOR = "T. Aso and T. Nonoyama and S. Kato", TITLE = "Numerical Simulation of Semidiurnal Atmospheric Tides", JOURNAL = "J. Geophysical R.", YEAR = 1981, VOLUME = 86, NUMBER = 11, PAGES = "388-400"} %"Numerical modeling of the solar and lunar semidiurnal atmospheric %tides has been performed by invoking a comprehensive approach that %includes both algebraic manipluation and numerical solution of the %primitive equation system." Used REDUCE to overcome difficulties of %complication and error. @ARTICLE{Atherton:73, AUTHOR = "R. W. Atherton and G. M. Homsey", TITLE = "Use of Symbolic Computation to Generate Evolution Equations and Asymptotic Solutions to Elliptic Equations", JOURNAL = "Journ. Comp. Phys.", YEAR = 1973, VOLUME = 1, PAGES = "45-59"} @ARTICLE{Aurenche:84, AUTHOR = "P. Aurenche and A. Douir and R. Baier and M. Fontannaz and D. Schiff", TITLE = "Photoproduction of Hadrons at Large Transverse Momentum in Second Order {QCD}", JOURNAL = "Phys. Lett.", YEAR = 1984, VOLUME = "135B", PAGES = "164-168"} % Uses REDUCE and SCHOONSCHIP in the extension of calculations to a %higher order to keep pace with experimental results. @ARTICLE{Aurenche:84a, AUTHOR = "P. Aurenche and A. Douir and R. Baier and M. Fontannaz and D. Schiff", TITLE = "Prompt Photon Production at Large $p_{\tau}$ in {GCD} Beyond the Leading Order", JOURNAL = "Phys. Lett.", YEAR = 1984, VOLUME = "140B", PAGES = "87-92"} %Uses REDUCE and SCHOONSCHIP. @ARTICLE{Autin:89, AUTHOR = "B. Autin and J. Bengtsson", TITLE = "Symbolic Evaluation of Integrals Occurring in Accelerator Orbit Theory", JOURNAL = "J. Symbolic Computation", YEAR = 1989, VOLUME = 7, NUMBER = 2, PAGES = "183-187", MONTH = "February"} @ARTICLE{Baekler:84, AUTHOR = "P. Baekler and F. W. Hehl", TITLE = "A Charged {Taub-NUT} Metric with Torsion: A New Axially Symmetric Solution of the {Poincar\'{e}} Gauge Field Theory", JOURNAL = "Phys. Lett.", YEAR = 1984, VOLUME = "100A", PAGES = "277-316"} @TECHREPORT{Baekler:84a, AUTHOR = "Peter Baekler and Friedrich W. Hehl", TITLE = "On the Dynamics of the Torsion of Spacetime: Exact Solutions in a Gauge Theoretical Model of Gravity", INSTITUTION = "Department of Physics, University of California, Los Angeles", YEAR = 1984, NUMBER = "UCLA/84/TEP/19", PAGE = "18", MONTH = "December"} @INPROCEEDINGS{Baekler:86, AUTHOR = "P. Baekler and F. W. Hehl and E. W. Mielke", TITLE = "Nonmetricity and Torsion: Facts and Fancies in Gauge Approaches to Gravity", EDITOR = "R. Ruffini", BOOKTITLE = "Proc. 4th Marcel Grossmann Meeting on General Relativity, ed.", PUBLISHER = "North-Holland, Amsterdam", YEAR = 1986, PAGES = "277-316"} @ARTICLE{Baekler:87, AUTHOR = "P. Baekler and R. Hecht and F. W. Hehl and T. Shirafuji", TITLE = "Mass and Spin of Exact Solutions of the {Poincar\'{e}} Gauge Theory", JOURNAL = "Prog. Theor. Phys.", YEAR = 1987, VOLUME = 78, PAGES = "16-21"} @ARTICLE{Baekler:87a, AUTHOR = "P. Baekler and M. Guerses", TITLE = "Exact Solutions of the {Poincar\'{e}} Gauge Theory from Its Linearized Field Equations", JOURNAL = "Lett. Math. Phys.", YEAR = 1987, VOLUME = 14, PAGES = "185-191"} @ARTICLE{Baekler:87b, AUTHOR = "P. Baekler and E. W. Mielke and F. W. Hehl", TITLE = "Kinky Torsion in a {Poincar\'{e}} Gauge Model of Gravity Coupled to a Massless Scalar Field", JOURNAL = "Nuclear Phys.", YEAR = 1987, VOLUME = "B288", PAGES = "800-812"} @ARTICLE{Baekler:88, AUTHOR = "P. Baekler and M. Seitz and V. Winkelmann", TITLE = "Cyclindrically Symmetric Solutions of Self-Consistently Coupled {Dirac} Fields in Gauge Theories of Gravity", JOURNAL = "Class. Quantum Grav.", YEAR = 1988, VOLUME = 5, PAGES = "479-490"} @ARTICLE{Baekler:88a, AUTHOR = "P. Baekler and M. Guerses and F. W. Hehl and J. D. McCrea", TITLE = "The Exterior Gravitational Field of a Charged Spinning Source in the {Poincar\'{e}} Gauge Theory: A {Kerr-Newman} Metric with Dynamic Torsion", JOURNAL = "Phys. Lett.", YEAR = 1988, VOLUME = "A128", PAGES = "245-250"} @ARTICLE{Baekler:88b, AUTHOR = "P. Baekler and M. Guerses and F. W. Hehl", TITLE = "A New Method to Solve the Field Equations of {Poincar\'{e}} Gauge Theories", JOURNAL = "Class. Quantum Grav.", YEAR = 1988} @TECHREPORT{Bajla:78, AUTHOR = "I. Bajla and G. A. Ososkov and A. C. Hearn", TITLE = "The Orthogonalization Program of Polynomials in Two Variables in {REDUCE}-2 Language", INSTITUTION = "J.I.N.R., Dubna", YEAR = 1978, TYPE = "Report", NUMBER = "P10-11944"} %The analytical algorithm for constructing orthogonal %polynomials in two variables, based on the Gram-Schmidt %orthogonalization method, is proposed. @INPROCEEDINGS{Balian:78, AUTHOR = "R. Balian and G. Parisi and A. Voros", TITLE = "Quartic Oscillator", YEAR = 1978, MONTH = "May", BOOKTITLE = "Proc. of the Colloq. on Mathematical Problems in {Feynman} Path Integrals, Marseille"} %On the example of the semi-classical expansion for the levels %of the quartic oscillator -(d**2/dq**2)+q**4, we show how the %complex WKB method provides information about the %singularities of the Borel transform of the semi-classical %series. @ARTICLE{Baker:81, AUTHOR = "G. A. Baker and L. P. Benofy and M. Fortes and M. de Llano and S. M. Peltier and A. Plastino", TITLE = "Hard-Core Square-Well Fermion", JOURNAL = "Phys. Rev. A", YEAR = 1982, VOLUME = 26, PAGES = "3575-3588"} %The mixed use of FORTRAN and REDUCE, various derivative were calculated %algebraically, but the double series was evaluated numerically. @ARTICLE{Bark:78, AUTHOR = "Fritz H. Bark and Herman Tinoco", TITLE = "Stability of Plane {Poiseuille} Flow of a Dilute Suspension of Slender Fibres", JOURNAL = "J. Fluid Mech.", YEAR = 1978, VOLUME = 87, PAGES = "321-333"} %The linear hydrodynamic stability problem for plane Poiseuille %flow of a dilute suspension of rigid fibers is solved %numerically. The constitutive equation given by Batchelor %is used to model the rheological properties of the suspension. %The resulting eigenvalue problem is shown to be singular. @ARTICLE{Barthes-Biesel:73, AUTHOR = "D. Barthes-Biesel and A. Acrivos", TITLE = "On Computer Generated Analytic Solutions to the Equations of Fluid Mechanics, The Case of Creeping Flows", JOURNAL = "Journ. Comp. Phys.", YEAR = 1973, VOLUME = 3, PAGES = "403-411"} @ARTICLE{Barton:72, AUTHOR = "David Barton and Anthony C. Hearn", TITLE = "Comment on Problem \#2 - The {Y(2n)} Functions", JOURNAL = "SIGSAM Bulletin", YEAR = 1972, VOLUME = 15} %A compact program for the solution of SIGSAM Problem \#2 %is presented. @ARTICLE{Bateman:86, AUTHOR = "G. Bateman and R. G. Storer", TITLE = "Direct Determination of Axisymmetric Magnetohydrodynamic Equilibrium in {Hamada} Coordinates", JOURNAL = "Journ. Comp. Phys.", YEAR = 1986, VOLUME = 64, PAGES = "161-176"} %Plasma. "REDUCE was used to analyse the general set of equations %for large numbers of Fourier harmonics ...." @TECHREPORT{Bennett, AUTHOR = "J. P. Bennett and J. H. Davenport and H. M. Sauro", TITLE = "Solution of Some Equations in Biochemistry", INSTITUTION = "School of Mathematical Sciences, University of Bath, England", NUMBER = "88-12"} @ARTICLE{Berends:81, AUTHOR = "A. Berends and R. Kleiss and P. de Causmaecher and T. T. Wu", TITLE = "Single Bremsstrahlung Process in Gauge Theories", JOURNAL = "Phys. Lett.", YEAR = 1981, VOLUME = "103B", PAGES = "124-128"} %Used REDUCE to calculate 25 {Feynman} diagrams to produce theoretical %results which could be checked against experiment. @TECHREPORT{Berkovich:89, AUTHOR = "L.M. Berkovich and V.P. Gerdt and Z.T. Kostova and M.L. Nechaevsky", TITLE = "Second Order Reducible Linear Differential Equations", INSTITUTION = "J.I.N.R., Dubna", YEAR = 1989, TYPE = "Preprint", NUMBER = "E5-89-141"} @ARTICLE{Berman:63, AUTHOR = "S. M. Berman and Y. S. Tsai", TITLE = "Intermediate Boson Pair Production as a Means for Determining its Magnetic Moment", JOURNAL = "Phys. Rev. Lett.", YEAR = 1963, VOLUME = 11, PAGES = "483-487"} @ARTICLE{Bessis:85, AUTHOR = "N. Bessis and G. Bessis and D. Roux", TITLE = "Closed-Form Expressions for the {Dirac-Coulomb} Radial $r^{t}$ Integrals", JOURNAL = "Phys. Rev. A", YEAR = 1985, VOLUME = 32, PAGES = "2044-2050"} %No direct algebraic manipluation, but the formula is stated to be %well suited to evaluation by REDUCE or MACSYMA, and this is an %advantage of their formula. @TECHREPORT{Billoire:78, AUTHOR = "A. Billoire and R. Lacaze and A. Morel and H. Navelet", TITLE = "The {OZI} Rule Violating Radiative Decays of the Heavy Pseudoscalars", INSTITUTION = "{CEN}-Saclay", YEAR = 1978, TYPE = "Report", NUMBER = "DpH-T 43/78"} %Submitted to Phys. Letters B. %In lowest order QCD the rates for radiative transitions violating the OZI %rule of heavy pseudoscalars are found to be extremely small. @ARTICLE{Biro:86, AUTHOR = "T. S. Biro and J. Zimanyi and M. Zimanyi", TITLE = "Hadrochemistry in Relativistic Mean Fields", JOURNAL = "Physics Letters", YEAR = 1986, VOLUME = "167B", NUMBER = 3, PAGES = "271-276", MONTH = "February"} @ARTICLE{Biro:87, AUTHOR = "T. S. Biro and K. Niita and A. L. de Paoli and W. Bauer and W. Cassing and U. Mosel", TITLE = "Microscopic Theory of Photon Production in Proton-Nucleus and Nucleus-Nucleus Collisions", JOURNAL = "Nuclear Physics", YEAR = 1987, VOLUME = "475A", PAGES = "579-597", MONTH = "December"} MONTH = "December"} @TECHREPORT{Birrell:77, AUTHOR = "N. D. Birrell", TITLE = "The Application of Adiabatic Regularization to Calculations of Cosmological Interest", INSTITUTION = "Dept. Math, King's College, London", YEAR = 1977} @ARTICLE{Biswas:75, AUTHOR = "S. N. Biswas and S. R. Chaudhuri and K. S. Taank and J. A. Campbell", TITLE = "Neutrino Production in Stellar Matter by Photons in a Renormalizable Scalar-Boson-Exchange Model of Weak Interactions", JOURNAL = "Phys. Rev. D", YEAR = 1975, VOLUME = 8, PAGES = "2523-2525"} @TECHREPORT{Bittencourt:90, AUTHOR = "Guilherme Bittencourt and Jacques Calmet", TITLE = "Integrating Computer Algebra and Knowledge Representation", INSTITUTION = "{Universit\"{a}t} Karlsruhe Institut {f\"{u}r} Algorithmen und Kognitive Systeme", YEAR = 1990, TYPE = "Preprint"} @ARTICLE{Boege:86, AUTHOR = "W. Boege and R. Gebauer and H. Kredel", TITLE = "Some Examples for Solving Systems of Algebraic Equations by Calculating {Groebner} Bases", JOURNAL = "J. Symbolic Computation", YEAR = 1986, VOLUME = 2, NUMBER = 1, PAGES = "83-98", MONTH = "March"} @ARTICLE{Bogdanova:88, AUTHOR = "N. Bogdanova and H. Hogreve", TITLE = "A {REDUCE} Package for Exact {Coulomb} Interaction Matrix Elements", JOURNAL = "Comp. Phys. Commun.", YEAR = 1988, VOLUME = 48, NUMBER = 2, PAGES = "319-326", MONTH = "February"} @ARTICLE{Bordoni:81, AUTHOR = "Luciana Bordoni and Attilio Colagrossi", TITLE = "An Application of {REDUCE} to Industrial Mechanics", JOURNAL = "{SIGSAM} Bulletin", YEAR = 1981, VOLUME = 15, NUMBER = 2, PAGES = "8-12", MONTH = "May"} @INPROCEEDINGS{Bowyer:87, AUTHOR = "A. Bowyer and J. H. Davenport and P. S. Milne and J. A. Padget and A. F. Wallis", TITLE = "Applications of Computer Algebra in Solid Modelling", BOOKTITLE = "Proc. {EUROCAL} '87, Lecture Notes in Computer Science", YEAR = 1987, VOLUME = 378, PAGES = "244-245", PUBLISHER = "Springer-Verlag"} @TECHREPORT{Boyd:78, AUTHOR = "John P. Boyd", TITLE = "The Effects of Latitudinal Shear on Equatorial Waves, Part {I}: Theory and Methods", INSTITUTION = "Dept. of Atmos. and Oceanic Science, Univ. of Michigan", YEAR = 1978, TYPE = "Preprint", MONTH = "January"} %To be published in Journal of The Atmospheric Sciences. %By using the method of multiple scales in height and a %variety of methods in latitude, analytic solutions for %equatorial waves in combined vertical and horizontal shear %are derived. @INPROCEEDINGS{Brackx:87, AUTHOR = "F. Brackx and H. Serras", TITLE = "Boundary Value Problems for the {Laplacian} in {Euclidean} Space Solved by Symbolic Computation", BOOKTITLE = "Proc. {EUROCAL} '87, Lecture Notes in Computer Science", YEAR = 1987, VOLUME = 378, PAGES = "208-215", PUBLISHER = "Springer-Verlag"} @ARTICLE{Brackx:87a, AUTHOR = "F. Brackx and D. Constales and R. Delanghe and H. Serras", TITLE = "{Clifford} Algebra with {REDUCE}", JOURNAL = "Rend. Circ. Mat. Palermo, Ser. II", YEAR = 1987, VOLUME = 16, PAGES = "11-19"} @ARTICLE{Brackx:89, AUTHOR = "F. Brackx and D. Constales and A. Ronveaux and H. Serras", TITLE = "On the Harmonic and Monogenic Decomposition of Polynomials", JOURNAL = "J. Symbolic Computation", YEAR = 1989, VOLUME = 8, NUMBER = 3, PAGES = "297-304", MONTH = "September"} @INPROCEEDINGS{Bradford:86, AUTHOR = "R. J. Bradford and A. C. Hearn and J. A. Padget and E. {Schr\"{u}fer}", TITLE = "Enlarging the {REDUCE} Domain of Computation", BOOKTITLE = "Proc. of {SYMSAC} '86", YEAR = 1986, PAGES = "100-106"} @INPROCEEDINGS{Bradford:88, AUTHOR = "R. J. Bradford and J. H. Davenport", TITLE = "Effective Tests for Cyclotomic Polynomials", BOOKTITLE = "Proc. of {ISSAC} '88", PUBLISHER = "Springer-Verlag", YEAR = 1988, VOLUME = 358, PAGES = "244-251"} @ARTICLE{Broadhurst:85, AUTHOR = "D. J. Broadhurst", TITLE = "Evaluation of a Class of {Feynman} Diagrams for all Numbers of Loops and Dimensions", JOURNAL = "Phys. Lett. B", YEAR = "1985", VOLUME = "164", PAGES = "356-360"} %Uses REDUCE to calculate explicitely the l-loop member of a class of %massless, dimensionally regularized {Feynman} diagrams, in order to verify %an explicit formula. @ARTICLE{Brodsky:62, AUTHOR = "S. J. Brodsky and A. C. Hearn and R. G. Parsons", TITLE = "Determination of the Real Part of the {Compton} Amplitude at a Nucleon Resonance", JOURNAL = "Phys. Rev.", YEAR = 1962, VOLUME = 187, PAGES = "1899-1904"} @ARTICLE{Brodsky:67, AUTHOR = "S. J. Brodsky and J. D. Sullivan", TITLE = "W-Boson Contribution to the Anomalous Magnetic Moment of the Muon", JOURNAL = "Phys. Rev.", YEAR = 1967, VOLUME = 156, PAGES = "1644-1647"} @INPROCEEDINGS{Brodsky:69, AUTHOR = "S. J. Brodsky", TITLE = "Status of Quantum Electrodynamics", YEAR = 1969, BOOKTITLE = "Proc. International Symposium on Electron and Photon Interactions at High Energies, Liverpool, England"} @TECHREPORT{Brodsky:70, AUTHOR = "S. J. Brodsky", TITLE = "Quantum Electrodynamic Theory: Its Relation to Precision Low Energy Experiments", INSTITUTION = "SLAC", YEAR = 1970, TYPE = "Report", NUMBER = "SLAC-PUB-795", MONTH = "August"} %Stanford Linear Accelerator Center Report. @INPROCEEDINGS{Brodsky:71, AUTHOR = "S. J. Brodsky", TITLE = "Algebraic Computation Techniques in Quantum Electrodynamics", YEAR = 1971, VOLUME = "II", PAGES = "IV-1--IV-27", BOOKTITLE = "Proc. {2nd} Computing Methods in Theoretical Physics, Marseilles"} @TECHREPORT{Brodsky:72, AUTHOR = "S. J. Brodsky", TITLE = "Atomic Physics and Quantum Electrodynamics in the Infinite Momentum Frame", INSTITUTION = "SLAC", YEAR = 1972, TYPE = "Report", NUMBER = "SLAC-PUB-1118", MONTH = "August"} %Presented at the Third International Conference on Atomic Physics. @ARTICLE{Brodsky:72a, AUTHOR = "S. J. Brodsky and J. F. Gunion and R. L. Jaffe", TITLE = "Test for Fractionally Charged Partons from Deep-Inelastic Bremsstrahlung in the Scaling Region", JOURNAL = "Phys. Rev. D", YEAR = 1972, VOLUME = 6, PAGES = "2487-2494"} @ARTICLE{Brodsky:72b, AUTHOR = "S. J. Brodsky and R. Roskies", TITLE = "Quantum Electrodynamics and Renormalization Theory in The Infinite Momentum Frame", JOURNAL = "Phys. Lett.", YEAR = 1972, VOLUME = "41B", PAGES = "517-520"} @ARTICLE{Brodsky:73, AUTHOR = "S. J. Brodsky and R. Roskies and R. Suaya", TITLE = "Quantum Electrodynamics and Renormalization Theory in the Infinite-Momentum Frame", JOURNAL = "Phys. Rev. D", YEAR = 1973, VOLUME = 8, PAGES = "4574-4594"} @ARTICLE{Broughan:82, AUTHOR = "K. A. Broughan", TITLE = "{Grad-Fokker-Planck} Plasma Equations. Part 1. {Collision} Moments", JOURNAL = "J. Plasma Phys.", YEAR = 1982, VOLUME = 27, PAGES = "437-452"} %REDUCE used in collaboration with hand calculation. REDUCE did the %substitutions, with hand integrations. "Thirteen moments are taken of the %collision term in Boltzmann-Fokker-Planck equation....plasma..." @ARTICLE{Brown:79, AUTHOR = "W. S. Brown and A. C. Hearn", TITLE = "Applications of Symbolic Algebraic Computation", JOURNAL = "Comp. Phys. Comm.", YEAR = 1979, VOLUME = 17, PAGES = "207-215"} %This paper is a survey of applications of systems for symbolic %algebraic computation. @ARTICLE{Bryan-Jones:87, AUTHOR = "Jane Bryan-Jones", TITLE = "A Tutorial in Computer Algebra for Statisticians", JOURNAL = "The Professional Statistician", YEAR = 1987, VOLUME = 6, NUMBER = 6, MONTH = "December",PAGES = "TBD"} @TECHREPORT{Calmet:72, AUTHOR = "Jacques Calmet", TITLE = "Further Evaluation of the Sixth Order Corrections to the Anomalous Magnetic Moment of the Electron", INSTITUTION = "Department of Physics, University of Utah", YEAR = 1972} %We report on the contributions to the $\alpha^{3}$ %part of the anomalous magnetic moment of the electron from the %seven so-called cross and ladder diagrams. @ARTICLE{Calmet:72a, AUTHOR = "Jacques Calmet", TITLE = "A {REDUCE} Approach to the Calculation of {Feynman} Diagrams", JOURNAL = "Comp. Phys. Comm.", YEAR = 1972, VOLUME = 4, PAGES = "199-204"} %A brief survey of two existing REDUCE programs (by Campbell-Hearn %and by Calmet) dealing with algebraic computation of {Feynman} diagrams is %given. Work in progress on a more general approach to this problem %is discussed. @ARTICLE{Calmet:74, AUTHOR = "Jacques Calmet", TITLE = "Computer Recognition of Divergences in {Feynman} Graphs", JOURNAL = "SIGSAM Bulletin", YEAR = 1974, VOLUME = 8, NUMBER = 3, PAGES = "74-75", MONTH = "August"} %A description of a program for the recognition of divergences %in {Feynman} graphs is given. @INCOLLECTION{Calmet:83, AUTHOR = "J. Calmet and J. A. van Hulzen", TITLE = "Computer Algebra Applications", EDITOR = "B. Buchberger and G. E. Collins and R. Loos and R. Albrecht", BOOKTITLE = "Computer Algebra Symbolic and Algebraic Computation", EDITION = "2nd", PUBLISHER = "Springer-Verlag", YEAR = 1983} @ARTICLE{Campbell:67, AUTHOR = "J. A. Campbell", TITLE = "Algebraic Computation of Radiative Corrections for Electron-Positron Scattering", JOURNAL = "Nucl. Phys.", YEAR = 1967, VOLUME = "B1", PAGES = "283-300"} @ARTICLE{Campbell:68, AUTHOR = "J. A. Campbell", TITLE = "Astrophysical Consequences of the Existence of Charged Intermediate Vector Bosons", JOURNAL = "Aust. Journ. of Phys.", YEAR = 1968, VOLUME = 21, PAGES = "139-148"} @ARTICLE{Campbell:70, AUTHOR = "J. A. Campbell and A. C. Hearn", TITLE = "Symbolic Analysis of {Feynman} Diagrams by Computer", JOURNAL = "Journ. of Comp. Phys.", YEAR = 1970, VOLUME = 5, PAGES = "280-327"} @ARTICLE{Campbell:70a, AUTHOR = "J. A. Campbell and R. B. Clark and D. Horn", TITLE = "Low-T Theorems for Charged-Pion Photoproduction", JOURNAL = "Phys. Rev. D", YEAR = 1970, VOLUME = 2, PAGES = "217-224"} @ARTICLE{Campbell:74, AUTHOR = "J. A. Campbell", TITLE = "Symbolic Computing and Its Relationship to Particle Physics", JOURNAL = "Acta Physica Austriaca", YEAR = 1974, VOLUME = "XIII", PAGES = "595-647"} @ARTICLE{Campbell:87, AUTHOR = "J. A. Campbell and P. O. {Fr\"{o}man} and E. Walles", TITLE = "Explicit series formulae for the evaluation of integrals by the method of steepest descents", JOURNAL = "Studies in Applied Mathematics", YEAR = 1987, VOLUME = 77, PAGES = "151-172"} @TECHREPORT{Caprasse:84, AUTHOR = "H. Caprasse", TITLE = "Description et Utilisation d'Une Extension du Programme {REDUCE}", INSTITUTION = "Physique Th\'{e}orique et Math\'{e}matique, Universit\'{e} de Li\`{e}ge", YEAR = 1984, MONTH = "October"} @ARTICLE{Caprasse:85, AUTHOR = "H. Caprasse and M. Hans", TITLE = "A New Use of Operators in the Algebraic Mode of {REDUCE}", JOURNAL = "{SIGSAM} Bulletin", YEAR = 1985, VOLUME = 19, NUMBER = 3, PAGES = "46-52", MONTH = "August"} @ARTICLE{Caprasse:86, AUTHOR = "H. Caprasse", TITLE = "Description of an Extension of the Matrix Package of {REDUCE}", JOURNAL = "{SIGSAM} Bulletin", YEAR = 1986, VOLUME = 20, NUMBER = 4, PAGES = "7-10", MONTH = "December"} @ARTICLE{Caprasse:86a, AUTHOR = "H. Caprasse", TITLE = "A Complete Simplification Package for the Absolute Value Function in {REDUCE}", JOURNAL = "{SIGSAM} Bulletin", YEAR = 1986, VOLUME = 20, NUMBER = "1 and 2", PAGES = "18-21", MONTH = "February and May"} %Implementation for REDUCE 3.2 of the function "ABS". @INPROCEEDINGS{Caprasse:88, AUTHOR = "H. Caprasse and J. Demaret and E. Schruefer", TITLE = "Can {EXCALC} be Used to Investigate {High-dimensional} Cosmological Models with {Non-Linear Lagrangians}", BOOKTITLE = "Proc. of {ISSAC} '88", PUBLISHER = "Springer-Verlag", YEAR = 1988, PAGES = "116-124"} @ARTICLE{Caprasse:90, AUTHOR = "H. Caprasse", TITLE = "Renormalization Group, Function Iterations and Computer Algebra", JOURNAL = "J. Symbolic Computation", YEAR = 1990, VOLUME = 9, NUMBER = 1, PAGES = "61-72", MONTH = "January"} %Based on a renormalization group equation met in Quantum Field Theory, %Continuous Iterations of a large class of functions are computed using %REDUCE. @ARTICLE{Caprasse:89a, AUTHOR = "H. Caprasse", TITLE = "Les Th\'{e}ories des {Champs} dans le monde de {REDUCE} (in French)", JOURNAL = "{CALSYF} (to appear)", YEAR = 1989} @ARTICLE{Carlson:80, AUTHOR = "P. Carlson", TITLE = "Coordinate Free Relativity", JOURNAL = "J. Math. Phys.", YEAR = 1980, VOLUME = 21, PAGES = "1149-1154"} %REDUCE programs for tetrad formulation of GR. @PHDTHESIS{Carroll:73, AUTHOR = "R. Carroll", TITLE = "The Anomalous Magnetic Moment of the Electron in the Mass Operator Formalism", SCHOOL = "University of Michigan", YEAR = 1973} @ARTICLE{Carroll:75, AUTHOR = "R. Carroll", TITLE = "Mass-Operator Calculation of the Electron g-Factor", JOURNAL = "Phys. Rev. D", YEAR = 1975, VOLUME = 8, PAGES = "2344-2354"} @TECHREPORT{Cejchan, AUTHOR = "A. Cejchan and J. Nadrchal", TITLE = "Application of {REDUCE}-2 and Analytic Integration Program in the Theoretical Solid State Physics", INSTITUTION = "Institute of Physics, CSAV, Prague"} @INPROCEEDINGS{Chaffy:88, AUTHOR = "C. Chaffy-Camus", TITLE = "An Application of {REDUCE} to the Approximation of {f(x,y)}", BOOKTITLE = "Proc. of {ISSAC} '88", PUBLISHER = "Springer-Verlag", YEAR = 1988, VOLUME = 358, PAGES = "73-84"} @ARTICLE{Chinnick:86, AUTHOR = "K. Chinnick and C. Gibson and J. F. Griffiths and W. Kordylewski", TITLE = "Isothermal Interpretations of Oscillatory Ignition During Hydrogen Oxidation in an Open System. {I}. {Analytical} Predictions and Experimental Measurements of Periodicity", JOURNAL = "Proc. Royal Soc. Lond.", YEAR = 1986, VOLUME = "A405", PAGES = "117-128"} %Used REDUCE to solve Jacobian, but answer too complicated to be of any use. @ARTICLE{Cline:90, AUTHOR = "Terry Cline and Harold Abelson and Warren Harris", TITLE = "Symbolic Computing in Engineering Design", JOURNAL = "AI EDAM", YEAR = 1990, MONTH = "February"} @TECHREPORT{Cohen:76, AUTHOR = "H. I. Cohen and O. Leringe and Y. Sundblad", TITLE = "The Use of Algebraic Computing in General Relativity", INSTITUTION = "The Royal Institute of Technology Department of Mechanics", YEAR = 1976, NUMBER = "TRITA-MEK-76-02"} @TECHREPORT{Cohen:76a, AUTHOR = "I. Cohen and F. Bark", TITLE = "Perturbation Calculations for the Spin Up Problem Using {REDUCE}", INSTITUTION = "The Royal Institute of Technology, Department of Mechanics", YEAR = 1976, NUMBER = "TRITA-MEK-76-03"} @TECHREPORT{Cohen:77, AUTHOR = "I. Cohen and S. Yu. Slavyanov", TITLE = "Smooth Perturbations of the {Schr\"{o}dinger} Equation with a Linear Potential Related to the Charmonium Models", INSTITUTION = "University of Stockholm Institute of Physics", YEAR = 1977, TYPE = "USIP Report", NUMBER = "77-17"} @ARTICLE{Cohen:79, AUTHOR = "J. P. Fitch and H. I. Cohen", TITLE = "Using {CAMAL} for Algebraic Calculations in General Relativity", JOURNAL = "General Relativity and Gravitation", VOLUME = 11, YEAR = 1979, PAGES = "411-418"} @ARTICLE{Cohen:84, AUTHOR = "H. I. Cohen and I. B. Frick and J. E. {\AA}man", TITLE = "Algebraic Computing in General Relativity", JOURNAL = "General Relativity and Gravitation, ed.", YEAR = 1984, PAGES = "139-162"} %General relativity review. @INPROCEEDINGS{Cohen:89, AUTHOR = "Joel S. Cohen", TITLE = "The Effective Use of Computer Algebra Systems", YEAR = 1989, PAGES = "677-698", BOOKTITLE = "Transactions of the Sixth Army Conference on Applied Mathematics and Computing"} % Review of author's experience with four computer algebra systems. @ARTICLE{Connor:84, AUTHOR = "J. N. L. Connor and P. R. Curtis and D. Farrelly", TITLE = "The Uniform Asymptotic Swallowtail Approximation: Practical Methods for Oscillating Integrals with Four Coalescing Saddle Points", JOURNAL = "J. Phys. A", YEAR = 1984, VOLUME = 17, PAGES = "283-310"} %Used REDUCE and SCHOONSCHIP for some algebraic manipulations, and then %checked the results with MACSYMA; this is the most distrustful %reference we have found. @ARTICLE{Connor:84a, AUTHOR = "J. N. L. Connor and P. R. Curtis and C. J. Edge and A. Lagan`{a}", TITLE = "The Uniform Asymptotic Swallowtail Approximation: Application to the Collinear $H+F_{2}$", JOURNAL = "J. Chem. Phys.", YEAR = 1984, VOLUME = 80, NUMBER = 3, PAGES = "1362-1363", MONTH = "February"} @ARTICLE{Conwell:84, AUTHOR = "P. R. Conwell and P. W. Barber and C. K. Rushworth", TITLE = "Resonant Spectra of Dielectric Sphere", JOURNAL = "J. Opt. Soc. Am. A", YEAR = 1984, VOLUME = 1, PAGES = "62-67"} %REDUCE used to confirm independently convergence and accuracy of %Numerical Bessel function routine, expanding series by REDUCE and %using bigfloats. Described as slow but worthwhile. @INPROCEEDINGS{Cowan:79, AUTHOR = "Richard M. Cowan and Martin L. Griss", TITLE = "Hashing -- The Key to Rapid Pattern Matching", BOOKTITLE = "Proc. {EUROSAM} 1979, Lecture Notes in Computer Science", YEAR = 1979, VOLUME = 72, PAGES = "266-278", PUBLISHER = "Springer-Verlag"} @ARTICLE{Cung:75, AUTHOR = "V. K. Cung", TITLE = "Differential Cross Section of e+ + e- to e+ + mu- + nubar(mu) + nubar(e)", JOURNAL = "Phys. Lett.", YEAR = 1975, VOLUME = "55B", PAGES = "67-70"} @TECHREPORT{Darbaidze:86, AUTHOR = "Ya. Z. Darbaidze", TITLE = "A Gluon Bremsstrahlung in Supersymmetry {QCD}", INSTITUTION = "JINR", YEAR = 1986, TYPE = "Preprint", NUMBER = "P2-86-825"} @ARTICLE{Darbaidze:86a, AUTHOR = "J. Z. Darbaidze and V. A. Matveev and Z. V. Merebashvili and L. A. Slepchenko", TITLE = "Gluon Bremsstrahlung in Supersymmetric {QCD}", JOURNAL = "Phys. Lett.", YEAR = 1986, VOLUME = "B177", PAGE = "188"} @TECHREPORT{Darbaidze:88, AUTHOR = "Ya. Z. Darbaidze and Z.V. Merebashvili and V.A. Rostovtsev", TITLE = "Some Computer Realizations of the {REDUCE-3} Calculations for Exclusive Processes", INSTITUTION = "JINR", YEAR = 1988, TYPE = "Preprint", NUMBER = "P2-88-769"} @TECHREPORT{Darbaidze:89, AUTHOR = "Ya. Z. Darbaidze and V.A. Rostovtsev", TITLE = "Analysis of the Differential Equations for the Exclusive Processes and Explanation for the {"Mystery"} of the {Gamma-Distribution}", INSTITUTION = "JINR", YEAR = 1989, TYPE = "Preprint", NUMBER = "E2-89-286"} @INPROCEEDINGS{Dautcourt:79, AUTHOR = "G. Dautcourt", TITLE = "Application of {REDUCE} to Algebraic Computations in General Relativity and Astrophysics", YEAR = 1979, MONTH = "September", BOOKTITLE = "Proc. of the Workshop in Symbolic Computation, Dubna, {U.S.S.R.}"} %Reports the use of the system REDUCE 2 for general relativistic %calculations. @TECHREPORT{Dautcourt:80, AUTHOR = "G. Dautcourt and K. P. Jann", TITLE = "A Program Package in {REDUCE} 2 for Algebraic Computations in General Relativity", YEAR = 1980, INSTITUTION = "Zentralinstitut fuer Astrophysik der Akademie der Wissenschaften"} @ARTICLE{Dautcourt:81, AUTHOR = "G. Dautcourt and K. P. Jann and E. Riemer and M. Riemer", TITLE = "User's Guide to {REDUCE} Subroutines For Algebraic Computations in General Relativity", JOURNAL = "Astron. Nachr.", YEAR = 1981, VOLUME = 302, PAGES = "1-13"} @ARTICLE{Dautcourt:83, AUTHOR = "G. Dautcourt", TITLE = "The Cosmological Problem as an Initial Value Problem on the Observer's Past Light Cone: Geometry", JOURNAL = "J. Phys. A", YEAR = 1983, VOLUME = 16, PAGES = "3507-3528"} %Checked calculations with REDUCE, mainly Riemann tensor in null %coordinates. @ARTICLE{Davenport:81, AUTHOR = "James Harold Davenport", TITLE = "On the Integration of Algebraic Functions", JOURNAL = "Lecture Notes in Computer Science", YEAR = 1981, VOLUME = 102, PAGES = "1-197"} @ARTICLE{Davenport:82, AUTHOR = "James H. Davenport", TITLE = "Fast {REDUCE:} The {trade-off} between efficiency and generality", JOURNAL = "{SIGSAM} Bulletin", YEAR = 1982, VOLUME = 16, NUMBER = 1, PAGES = "8-11", MONTH = "February"} @ARTICLE{Davenport:82a, AUTHOR = "James H. Davenport", TITLE = "What do we want from a {high-level} language?", JOURNAL = "{SIGSAM} Bulletin", YEAR = 1982, VOLUME = 16, NUMBER = 4, PAGES = "6-9", MONTH = "November"} @INPROCEEDINGS{Davenport:85, AUTHOR = "James Davenport and Julian Padget", TITLE = "{HEUGCD:} How Elementary Upperbounds Generate Cheaper Data", BOOKTITLE = "Proc. {EUROCAL} 1985, Lecture Notes in Computer Science", YEAR = 1985, VOLUME = 204, PAGES = "18-28", PUBLISHER = "Springer-Verlag"} @ARTICLE{Davenport:88, AUTHOR = "J. H. Davenport", TITLE = "The World of Computer Algebra", JOURNAL = "New Scientist", YEAR = 1988, MONTH = "September", VOLUME = 1629, PAGES = "71-72"} @BOOK{Davenport:88a, AUTHOR = "J. H. Davenport and Y. Siret and E. Tournier", TITLE = "Computer Algebra, Systems and Algorithms for Algebraic Computation", PUBLISHER = "Academic Press", YEAR = 1988} @TECHREPORT{Della-Dora:81, AUTHOR = "J. Della Dora and E. Tournier", TITLE = "Solutions Formelles {D'Equations} Differentielles au Voisinage de Points Singuliers Reguliers", INSTITUTION = "Centre National de la Recherche Scientifique", YEAR = 1981, TYPE = "Report", NUMBER = 239} @INPROCEEDINGS{Della-Dora:84, AUTHOR = "J. Della Dora and E. Tournier", TITLE = "Homogeneous Linear Difference Equation {(Frobenius-Boole Method)}", BOOKTITLE = "Proc. {EUROSAM} 1984, Lecture Notes in Computer Science", YEAR = 1984, VOLUME = 174, PAGES = "2-12", PUBLISHER = "Springer-Verlag"} @TECHREPORT{Della-Dora:85, AUTHOR = "Jean Della-Dora and Claire Dicrescenzo and Dominique Duval", TITLE = "About a New Method for Computing in Algebraic Number Fields", INSTITUTION = "Universit\'{e} de Grenoble, Institut Fourier, France", YEAR = 1985, MONTH = "November"} @ARTICLE{Demaret:89, AUTHOR = "J. Demaret and H. Caprasse and A. Moussiaux and Ph. Tombal and D. Papadopoulos", TITLE = "{Ten-dimensional Lovelock-type Space-Times}", JOURNAL = "{To appear} Phys. Rev. D", YEAR = 1989, MONTH = "July"} @ARTICLE{DeMenna:87, AUTHOR = "L. De Menna and G. Miano and G. Rubinacci", TITLE = "Volterra's Series Solutions of Free Boundary Plasma Equilibria", JOURNAL = "Phys. Fluids", YEAR = 1987, VOLUME = 30, PAGES = "409-416"} %Magnetohydrodynamics. "We have carried out the computations up to %the fourth order, (the fourth order has been obtained by means of the %symbolic program REDUCE". @ARTICLE{Demichev:85, AUTHOR = "A. P. Demichev and A. Ya. Rodionov", TITLE = "A {REDUCE} Program for the Calculation of Geometrical Characteristics of Compactified Multidimensional {Riemannian} Space", JOURNAL = "Comp. Phys. Comm.", YEAR = 1985, VOLUME = 38, PAGES = "441-448"} %Covariant theories in N dimensional ($N \geq 4$) space-time. %REDUCE programs to calculate Ricci, Einstein and Yang-Mills curvature %and energy-momentum tensor. @TECHREPORT{Demichev:86, AUTHOR = "A. P. Demichev and A. Ya. Rodionov", TITLE = "Freund-{Rubin} Type Solutions for Different Compactifications of the Eleven-Dimensional Space", INSTITUTION = "Institute for High Energy Physics", YEAR = 1986, TYPE = "Preprint", NUMBER = "86-85"} %The results of calculating geometrical characteristics of %seven-dimensional quotient spaces are represented. These %quantities are necessary for the construction of compactifying %solutions of the eleven-dimensional supergravity. @ARTICLE{deRop:88, AUTHOR = "Y. de Rop and J. Demaret", TITLE = "Using {EXCALC} to Study Nondiagonal Multidimensional Spatially Homogeneous Cosmologies", JOURNAL = "Gen. Rel. Grav.", YEAR = 1988, VOLUME = 20, PAGES = "1127-1139"} @TECHREPORT{DeVos:89, AUTHOR = "Alexis De Vos", TITLE = "The use of {Reduce} in solar energy conversion theory", INSTITUTION = "State University of Gent, {CAGe} Computer Algebra Group", YEAR = 1989, TYPE = "Reports of the {CAGe} Project", NUMBER = 4, MONTH = "August"} @INPROCEEDINGS{Dewar:89, AUTHOR = "M. C. Dewar", TITLE = "{IRENA --} An Integrated Symbolic and Numerical Computation Environment", BOOKTITLE = "Proc. of {ISSAC} '89", PUBLISHER = "{ACM} Press, New York", YEAR = 1989, PAGES = "171-179"} @ARTICLE{Dhar:85, AUTHOR = "D. Dhar and J-M. Maillard", TITLE = "Susceptibility of the Checkerboard {Ising} Model", JOURNAL = "J. Phys. A", YEAR = 1985, VOLUME = 18, PAGES = "L383-L388"} %Used REDUCE for tedious algebra, and got a simple answer. Statistical %mechanics(?). "At the disorder variety, the n-point correlation %functions of the checkerboard Potts model has a simple causal %structure. An exact expression for the susceptibility in the Ising %case is obtained." @TECHREPORT{Dicrescenzo:85, AUTHOR = "Claire Dicrescenzo", TITLE = "Algebraic Computation on Algebraic Numbers", INSTITUTION = "Institut Fourier, Laboratoire de Math\'{e}matiques, France", YEAR = 1985, MONTH = "December"} %Examples are given of a new method, implemented on REDUCE, %for computing algebraically on algebraic numbers. @TECHREPORT{Diver, AUTHOR = "D. A. Diver and E. Q. Laing and C. C. Sellar", TITLE = "Waves in a Cold Plasma with a Spatially Rotating Magnetic Field", INSTITUTION = "Department of Physics and Astronomy, University of Glasgow, Plasma Physics Group", TYPE = "Report", NUMBER = "GU TPA 88/12-1"} %"...The algebraic manipulation system REDUCE was used in constructing the %following tensor definitions which allows us to make fewer %approximations than other authors." @INPROCEEDINGS{Diver:86, AUTHOR = "D. A. Diver and E. W. Laing", TITLE = "Proc. 8th {Europhysics} Conference on Computational Physics", YEAR = 1986, BOOKTITLE = "Computing in Plasma Physics"} @INPROCEEDINGS{Diver:88, AUTHOR = "D. A. Diver and E. W. Laing", TITLE = "Proc. {XV} {European} Conference on Controlled Fusion and Plasma Heating", YEAR = 1988} @TECHREPORT{Diver:88a, AUTHOR = "D. A. Diver and E. W. Laing", TITLE = "Alfven Resonance Absorption in a Magnetofluid", YEAR = 1988, TYPE = "Internal Report", NUMBER = "GUTPA 88/04-01", MONTH = "July"} %Presented at 15th UK Plasma Physics Conference, UMIST. @TECHREPORT{Dorfi:85, AUTHOR = "E. A. Dorfi and L. O'C. Drury", TITLE = "Simple Adaptive Grids for {1D} Initial Value Problems", INSTITUTION = "Max-Plack-Institut fuer Kernphysik, Heidelberg, West Germany", YEAR = 1985, NUMBER = "MPI H-1985-V21"} @ARTICLE{Dorizzi:86, AUTHOR = "B. Dorizzi and B. Grammaticos and J. Hietarinta and A. Ramani and F. Schwarz", TITLE = "New integrable three dimensional quartic potentials", JOURNAL = "Phys. Lett.", YEAR = 1986, VOLUME = "116A", PAGES = "432-436"} %REDUCE is used to construct and verify constants of motion. @TECHREPORT{dosSantos:85, AUTHOR = "R. P. dos Santos and P. P. Srivastava", TITLE = "Two-loop Effective Potential for Wess-Zumino Model using Superfields", INSTITUTION = "International Centre for Theoretical Physics", YEAR = 1985, NUMBER = "IC/85/205", MONTH = "October"} %"For the case of several interacting chiral superfields the propagators %for the unconstrained superfield potentials in the 'shifted' theory, %where the supersymmetry is explicity broken, are derived in a compact %form. They are used to compute one-loop effective potential in the %general case, while a superfield calculation of renormalized effective %potential to two loops for the Wess-Zumino model is performed." @ARTICLE{dosSantos:87, AUTHOR = "Renato P. dos Santos", TITLE = "Using {REDUCE} in Supersymmetry", JOURNAL = "J. Symb. Comp.", YEAR = 1989, VOLUME = 7, PAGES = "523-525"} @PHDTHESIS{dosSantos:87a, AUTHOR = "R. P. dos Santos", TITLE = "O M\'{e}todo de Supercampos para o C\'{a}lculo de Potencial Efetivo em Modelos com Supercampos Quirais: Os Modelos de Wess e Zumino e de O'Raifeartaigh", SCHOOL = "Centro Brasileiro de Pesquisas F\'{i}sicas", YEAR = 1987} %(In Portuguese) Using the method of Superfields, the effective %potential for supersymmetric models of Wess-Zumino and of %O'Raifeartaigh is evaluated up to two-loop order. The spontaneous %supersymmetry breaking is discussed. REDUCE plays very important %role in evaluation of the Feynman superdiagrams and in %renormalization. @TECHREPORT{dosSantos:88a, AUTHOR = "Renato P. dos Santos", TITLE = "Introdu\c{c}\~{a}o ao Sistema {REDUCE} de C\'{a}lculo Alg\'{e}brico", INSTITUTION = "CBPF, Rio de Janeiro, Brazil", YEAR = 1988, NUMBER = "CBPF-NT-001/88"} %(In Portuguese) Lecture notes of a course on REDUCE. @ARTICLE{Dubowsky:75, AUTHOR = "S. Dubowsky and J. L. Grant", TITLE = "Application of Symbolic Manipulation to Time Domain Analysis of Nonlinear Dynamic Systems", JOURNAL = "Journ. of Dynamic Systems, Measurement, and Control", YEAR = 1975, NUMBER = "75-Aut-J"} @ARTICLE{Dudley:89, AUTHOR = "M. L. Dudley and R. W. James", TITLE = "{Computer-aided} Derivation of Spherical Harmonic Spectral Equations in Astrogeophyics", JOURNAL = "J. Symbolic Computation", YEAR = 1989, VOLUME = 8, NUMBER = 4, PAGES = "423-427", MONTH = "October"} @ARTICLE{Dufner:69, AUTHOR = "A. M. Dufner and Y. S. Tsai", TITLE = "Phenomenological Analysis of the $\gamma$NN* Form Factors", JOURNAL = "Phys. Rev.", YEAR = 1969, VOLUME = 168, PAGES = "1801-1809"} @INPROCEEDINGS{Dulyan:87, AUTHOR = "L. S. Dulyan", TITLE = "The Calculation of {QCD} Triangular {Feynman} Graphs in the External Gluonic Field Using {REDUCE}-2 System", BOOKTITLE = "Proc. {EUROCAL} '87, Lecture Notes in Computer Science", YEAR = 1987, VOLUME = 378, PAGES = "172-173", PUBLISHER = "Springer-Verlag"} @ARTICLE{Duncan:86, AUTHOR = "Anthony Duncan and Ralph Roskies", TITLE = "Representations of Unusual Mathematical Structures in Scientific Applications of Symbolic Computation", JOURNAL = "J. Symbolic Computation", YEAR = 1986, VOLUME = 2, NUMBER = 2, PAGES = "201-206", MONTH = "June"} %We present examples of techniques we have used to apply REDUCE to problems %in particle physics which have mathematical structures unknown to REDUCE. @PHDTHESIS{Duval:87, AUTHOR = "Dominique Duval", TITLE = "Diverses questions relatives au Calcul Formel Avec des Nombres Alg\'{e}briques", SCHOOL = "L'Universit\'{e} Scientifique, Technologique et M\'{e}dicale de Grenoble", YEAR = 1987} @ARTICLE{Earles:70, AUTHOR = "D. Earles", TITLE = "A Measurement of the Electron-Production of Muon Pairs", JOURNAL = "Phys. Rev. Lett.", YEAR = 1970, VOLUME = 25, PAGES = "129-133"} @ARTICLE{Eastwood:87, AUTHOR = "James W. Eastwood", TITLE = "Orthovec: A {REDUCE} Program for {3-D} Vector Analysis in Orthogonal Curvilinear Coordinates", JOURNAL = "Comp. Phys. Commun.", YEAR = 1987, VOLUME = 47, NUMBER = 1, PAGES = "139-147", MONTH = "October"} @TECHREPORT{Edelen:81, AUTHOR = "Dominic G. B. Edelen", TITLE = "Programs for Calculation of Isovector Fields in the {REDUCE}-2 Environment", INSTITUTION = "Center for the Application of Mathematics, Lehigh University", YEAR = 1981, NUMBER = "TBD", MONTH = "August"} @ARTICLE{Edelen:82, AUTHOR = "D. G. B. Edelen", TITLE = "Isovector Fields for Problems in the Mechanics of Solids and Fluids", JOURNAL = "Int. Journ. Eng. Sci.", YEAR = 1982, VOLUME = 20, PAGES = "803-815"} %Prolongation methods as a REDUCE package for this, available from %Center for Applications of Mathematics, Lehigh Univ., Bethlehem, PA %18015. Applications to mechanics of solids and fluids. @BOOK{Edneral:89, AUTHOR = "Viktor F. Edneral and Aleksandr P. Kryukov and Anatolii Ia. Rodionov", TITLE = "The language of the analytic computer program {REDUCE}", PUBLISHER = "Moscow, {Izd-vo}, Moskovskogo {un-ta}", YEAR = 1989} %This monograph -- first in The Soviet Union with a systematic treatment %of the analytical computer (program) REDUCE. @ARTICLE{Eisenberger:90, AUTHOR = "Moshe Eisenberger", TITLE = "Application of Symbolic Algebra to the Analysis of Plates on Variable Elastic Foundation", JOURNAL = "J. Symbolic Computation", YEAR = 1990, VOLUME = 9, NUMBER = 2, PAGES = "207-213", MONTH = "February"} @TECHREPORT{Eissfeller:86, AUTHOR = "Bernd {Ei{\ss}feller} and {G\"{u}nter} W. Hein", TITLE = "A Contribution to {3D-Operational} Geodesy", INSTITUTION = "{Universit\"{a}rer} Studiengang Vermessungswesen and {Universit\"{a}t} der Bundeswehr {M\"{u}nchen}", YEAR = 1986, NUMBER = "Heft 17", MONTH = "December"} @PHDTHESIS{Eitelbach:73, AUTHOR = "D. L. Eitelbach", TITLE = "Automatic Analysis of Problems in Elementary Mechanics", SCHOOL = "University of Illinois", YEAR = 1973} @ARTICLE{Eleuterio:82, AUTHOR = "S. M. Eleut\'{e}rio and R. V. Mendes", TITLE = "Note on Equivalence and Singularities: An Application of Computer Algebra", JOURNAL = "Journ. Comp. Phys.", YEAR = 1982, VOLUME = 48, PAGES = "150-156"} %GR equivalence, commenting on \AAman & Karlhede. @ARTICLE{Eliseev:85, AUTHOR = "V. P. Eliseev and R. N. Fedorova and V. V. Kornyak", TITLE = "A {REDUCE} Program for Determining Point and Contact {Lie} Symmetries of Differential Equations", JOURNAL = "Comp. Phys. Comm.", YEAR = 1985, VOLUME = 36, PAGES = "383-389"} %"A universal REDUCE program for obtaining the systems of %determining equations of the Lie algebra of point and contact %symmetries is proposed". @ARTICLE{Elishakoff:87, AUTHOR = "Isaac Elishakoff and Joseph Hollkamp", TITLE = "Computerized Symbolic Solution for a Nonconservative System in Which Instability Occurs by Flutter in One Range of a Parameter and by Divergence in Another", JOURNAL = "Comp. Methods in Applied Mechanics and Engineering", YEAR = 1987, VOLUME = 62, PAGES = "27-46"} %"...the problem is solved by the Galerkin method in conjunction with %computerized symbolic algebra". The system used is REDUCE. "It %carries out algebraic operations irrespective of their complexity". %Includes snatches of code and algebraic answers. Mainly %differentiation and substitution, plus a little integration. The %coefficients get rather large (18 digits or so). @ARTICLE{Elishakoff:87a, AUTHOR = "Isaac Elishakoff and Brian Couch", TITLE = "Application of Symbolic Algebra to the Instability of a Nonconservative System", JOURNAL = "J. Symbolic Computation", YEAR = 1987, VOLUME = 4, NUMBER = 3, PAGES = "391-396", MONTH = "December"} @ARTICLE{Esteban:90, AUTHOR = "E.P. Esteban and E. Ramos", TITLE = "Algebraic computing and the {Newman-Penrose} formalism", JOURNAL = "Computers in Physics", YEAR = 1990, PAGES = "285-290", MONTH = "May/June"} @ARTICLE{Falck:89, AUTHOR = "N. K. Falck and D. Graudenz and G. Kramer", TITLE = "Cross section for {five-parton} production in $e^{+} e^{-}$ annihilation", JOURNAL = "Comp. Phys. Comm.", YEAR = 1989, VOLUME = 56, PAGES = "181-198", NUMBER = 2, MONTH = "December"} @ARTICLE{Fazio:84, AUTHOR = "P. M. Fazio and G. E. Copeland", TITLE = "Cooper-Type Minima in Multipole Cross Sections of Atomic Hydrogen", JOURNAL = "Phys. Rev. Lett.", YEAR = 1984, VOLUME = 53, NUMBER = "2", MONTH = "July"} @INPROCEEDINGS{Fedorova:87, AUTHOR = "R. N. Fedorova and V. P. Gerdt and N. N. Govorun and V. P. Shirikov", TITLE = "Computer Algebra in Physical Research of {Joint Institute} for {Nuclear Research}", BOOKTITLE = "Proc. {EUROCAL} '87, Lecture Notes in Computer Science", YEAR = 1987, VOLUME = 378, PAGES = "1-10", PUBLISHER = "Springer-Verlag"} @INPROCEEDINGS{Fedorova:87a, AUTHOR = "R. N. Fedorova and V. V. Kornyak", TITLE = "Computer Algebra Application for Determining Local Symmetries of Differential Equations", BOOKTITLE = "Proc. {EUROCAL} '87, Lecture Notes in Computer Science", YEAR = 1987, VOLUME = 378, PAGES = "174-175", PUBLISHER = "Springer-Verlag"} @ARTICLE{Feldmar:86, AUTHOR = "E. Feldmar and K. S. {K\"{o}lbig}", TITLE = "{REDUCE} Procedures for the Manipulation of Generalized Power Series", JOURNAL = "Comp. Phys. Comm.", YEAR = 1986, VOLUME = 39, PAGES = "267-284"} @ARTICLE{Feuillebois:84, AUTHOR = "F. Feuillebois", TITLE = "Sedimentation in a Dispersion with Vertical Inhomogenieties", JOURNAL = "Journ. Fluid Mech.", YEAR = 1984, VOLUME = 139, PAGES = "145-171"} %Uses REDUCE and INT to evaluate some integrals in the expansion of %1/s, a small quantity. @ARTICLE{Fitch:73, AUTHOR = "John Fitch", TITLE = "Problems \#3 and \#4 in {REDUCE} and {MACSYMA}", JOURNAL = "SIGSAM Bulletin", YEAR = 1973, PAGES = "10-11"} %The algebra systems REDUCE and MACSYMA are used to solve SIGSAM %Problem \#3, the Reversion of a Double Series, and SIGSAM Problem \#4, %the Lie Transform Solution of the Harmonic Oscillator. @INPROCEEDINGS{Fitch:81, AUTHOR = "J. P. Fitch", TITLE = "User-based Integration Software", BOOKTITLE = "Proc. 1981 {ACM} Symposium on Symbolic and Algebraic Computation", YEAR = 1981, PAGES = "245-248"} @INPROCEEDINGS{Fitch:83, AUTHOR = "J. P. Fitch", TITLE = "Implementing {REDUCE} on a Microprocessor", BOOKTITLE = "Proc. {EUROCAL} 1983, Lecture Notes in Computer Science", YEAR = 1983, VOLUME = 162, PAGES = "128-136", PUBLISHER = "Springer-Verlag"} @ARTICLE{Fitch:85, AUTHOR = "J. P. Fitch", TITLE = "Solving Algebraic Problems with {REDUCE}", JOURNAL = "J. of Symbolic Computation", YEAR = 1985, VOLUME = 1, NUMBER = 2, PAGES = "211-227", MONTH = "June"} @INPROCEEDINGS{Fitch:85a, AUTHOR = "J. P. Fitch", TITLE = "Applying Computer Algebra", BOOKTITLE = "International Conference on Computer Algebra and its Application in Theory", YEAR = 1985, PAGES = "262-275"} @INPROCEEDINGS{Fitch:87, AUTHOR = "J. P. Fitch", TITLE = "Utilisation du Calcul Formel", BOOKTITLE = "Calcul Formel et Automatique", EDITOR = "P. Chenin", PUBLISHER = "Editions du {CNRS}", YEAR = 1987, PAGES = "119-136"} @INPROCEEDINGS{Fitch:87a, AUTHOR = "J. P. Fitch and R. G. Hall", TITLE = "Symbolic Computation and the Finite Element Method", BOOKTITLE = "Proc. {EUROCAL} '87, Lecture Notes in Computer Science", YEAR = 1987, VOLUME = 378, PAGES = "95-96", PUBLISHER = "Springer-Verlag"} @INPROCEEDINGS{Fitch:89, AUTHOR = "J. P. Fitch", TITLE = "Can {REDUCE} be run in parallel?", BOOKTITLE = "Proc. of {ISSAC} '89", PUBLISHER = "{ACM} Press, New York", YEAR = 1989, PAGES = "155-162"} @ARTICLE{Fitch:89a, AUTHOR = "J. Fitch", TITLE = "Compiling for Parallelism", JOURNAL = "Computer Algebra and Parallelism", EDITOR = "J. Della Dora and J. Fitch", YEAR = 1989, PAGES = "19-31", PUBLISHER = "Academic Press, London"} @TECHREPORT{Flatau:86, AUTHOR = "Piotr J. Flatau and John P. Boyd and William R. Cotton", TITLE = "Symbolic Algebra in Applied Mathematics and Geophysical Fluid Dynamics - {REDUCE} Examples", INSTITUTION = "Dept. of Atmospheric and Oceanic Science, University of Michigan, and Dept. of Atmospheric Science, Colorado State University", YEAR = 1986} @TECHREPORT{Flath:86, AUTHOR = "Dan Flath", TITLE = "Remarks on Tensor Operators", INSTITUTION = "National University of Singapore, Department of Mathematics", TYPE = "Research Report", YEAR = 1986, NUMBER = 266, MONTH = "July"} @ARTICLE{Fleischer:71, AUTHOR = "J. Fleischer", TITLE = "Partial Wave Analysis of Nucleon-Nucleon {Bethe}-{Salpeter} Equation on the Computer", JOURNAL = "Journ. of Comp. Phys.", YEAR = 1971, VOLUME = 12, PAGES = "112-123"} @ARTICLE{Fleischer:73, AUTHOR = "J. Fleischer and J. L. Gammel and M. T. Menzel", TITLE = "Matrix {Pad\'{e}} Approximants for the {1SO}- and {3PO}- Partial Waves in Nucleon-Nucleon Scattering", JOURNAL = "Phys. Rev. D", YEAR = 1973, VOLUME = 8, PAGES = "1545-1552"} @ARTICLE{Fleischer:75, AUTHOR = "J. Fleischer and J. A. Tjon", TITLE = "Bethe-{Salpeter} Equation for {J}=0 Nucleon-Nucleon Scattering with One-Boson Exchange", JOURNAL = "Nuclear Physics", YEAR = 1975, VOLUME = "B84", PAGES = "375-396"} @ARTICLE{Fogelholm:82, AUTHOR = "Rabbe Fogelholm and Inge B. Frick", TITLE = "Standard {LISP} for the {VAX:} A Provisional Implementation", JOURNAL = "{SIGSAM} Bulletin", YEAR = 1982, VOLUME = 16, NUMBER = 4, PAGES = "10-12", MONTH = "November"} @ARTICLE{Foster:89, AUTHOR = "Kenneth R. Foster and Haim H. Bau", TITLE = "Symbolic Manipulation Programs for the Personal Computer", JOURNAL = "Science", YEAR = 1989, VOLUME = 243, PAGES = "679-243", MONTH = "February"} %Reviews several algebra programs that run on small machines. Doesn't %rate the PC version of REDUCE very highly because of the small workspace. @ARTICLE{Fox:71, AUTHOR = "J. A. Fox", TITLE = "Recalculation of the Crossed Graph Contribution to the 4th Order {Lamb} Shift", JOURNAL = "Phys. Rev. D", YEAR = 1971, VOLUME = 3, PAGES = "3228-3230"} @ARTICLE{Fox:74, AUTHOR = "John A. Fox and Anthony C. Hearn", TITLE = "Analytic Computation of Some Integrals in Fourth Order Quantum Electrodynamics", JOURNAL = "Journ. Comp. Phys.", YEAR = 1974, VOLUME = 14, PAGES = "301-317"} %A program for the analytic evaluation of some parametric integrals %which occur in fourth order QED calculations is described. @ARTICLE{Franceschetti:85, AUTHOR = "G. Franceschetti and I. Pinto", TITLE = "Nonlinear Propagation and Scattering: Analytical Solution and Symbolic Code Implementation", JOURNAL = "J. Opt. Soc. Am. A", YEAR = 1985, VOLUME = 2, PAGES = "997-1006"} %Volterra series using REDUCE. Perturbation expansions. @INPROCEEDINGS{Freire:88, AUTHOR = "E. Freire and E. Gamero and E. Ponce and L. G. Franquelo", TITLE = "An Algorithm for Symbolic Computation of Center Manifolds", BOOKTITLE = "Proc. of {ISSAC} '88", PUBLISHER = "Springer-Verlag", YEAR = 1988, VOLUME = 358, PAGES = "218-230"} @INPROCEEDINGS{Freire:89, AUTHOR = "E. Freire and E. Gamero and E. Ponce", TITLE = "An Algorithm for Symbolic Computation of {Hopf} Bifurcation", BOOKTITLE = "Proc. Computers and Mathematics '89", EDITOR = "E. Kaltofen and S. M. Watt", YEAR = 1989, PAGES = "109-118", PUBLISHER = "Springer-Verlag, New York"} @TECHREPORT{Frick:82, AUTHOR = "I. G. Frick and R. Fogelholm", TITLE = "An Implementation of {Standard} {Lisp} Built on Top of {Franz Lisp}", INSTITUTION = "University of Stockholm, Institute of Physics", YEAR = 1982, TYPE = "Report", MONTH = "April"} %A Standard LISP system has been built for the VAX-11 %large-address-space computer by embedding the required %function definitions in the available Franz Lisp system %for VAX/UNIX. @ARTICLE{Fujimoto:84, AUTHOR = "Y. Fujimoto and T. Garavaglia", TITLE = "Phase Diagrams in {Scalar QED}", JOURNAL = "Physics Letters", YEAR = 1984, VOLUME = "148B", NUMBER = "1,2,3", PAGES = "220-224", MONTH = "November"} @ARTICLE{Fuzio:85, AUTHOR = "P. M. Fuzio and G. E. Copeland", TITLE = "Partial Radiative-Recombination Cross Sections for Excited States of Hydrogen", JOURNAL = "Phys. Rev. A", YEAR = 1985, VOLUME = 31, NUMBER = 1, PAGES = "187-195"} %"The squares of the dipole and quadrupole matrix elements for the %free-to-bond transitions of hydrogen uptp high bound states are %derived in closed analytic form using a method suitable for computer %algebra". bibclean-2.11.4.1.orig/testbib4.org0000644000175200017520000001077405334743754016146 0ustar debiandebian% /u/sy/beebe/tex/bibclean/testbib4.org, Mon Jan 18 09:52:55 1993 % Edit by Nelson H. F. Beebe % This file stress-tests bibclean and biblex by % presenting them with input that has spaces % liberally sprinkled throughout, especially % between tokens. It is designed as a useful test % of a proposed grammar for BibTeX. %================================================= % Test 1: simple case without extra spaces @preamble{"anythinggoes"} @include{a-file-name-goes-here} @string{abb="abbreviation"} @Article{the-key, author="A. U. Thor", title="The Title", journal="The Journal", year="1993", volume="23", number="1", pages="17--21", month=jan, bibdate="Mon Jan 18 09:59:44 1993", } %================================================= % Test 2: simple one-line cases with intervening % spaces @ preamble { "anything goes" } @ include { a-file-name-goes-here } @ string { abb = "abbreviation" } @ Article {the-key , author = "A. U. Thor" , title = "The Title" , journal = "The Journal" , year = "1993" , volume = "23" , number = "1" , pages = "17--21" , month = jan , bibdate = "Mon Jan 18 09:59:44 1993" , } %================================================= % Test 3: change blanks to newlines in previous % test @ preamble { "anything goes" } @ include { a-file-name-goes-here } @ string { abb = "abbreviation" } @ Article {the-key , author = "A. U. Thor" , title = "The Title" , journal = "The Journal" , year = "1993" , volume = "23" , number = "1" , pages = "17--21" , month = jan , bibdate = "Mon Jan 18 09:59:44 1993" , } %================================================= % Test 4: change newlines to doubled newlines in % previous test @ preamble { "anything goes" } @ include { a-file-name-goes-here } @ string { abb = "abbreviation" } @ Article {the-key , author = "A. U. Thor" , title = "The Title" , journal = "The Journal" , year = "1993" , volume = "23" , number = "1" , pages = "17--21" , month = jan , bibdate = "Mon Jan 18 09:59:44 1993" , } %================================================= % Test 5: Change newline to % newline-comment-newline in previous test. @ % this is a comment preamble % this is a comment { % this is a comment "anything" # % this is a comment "goes" % this is a comment } % this is a comment % this is a comment @ % this is a comment include % this is a comment { % this is a comment a-file-name-goes-here % this is a comment } % this is a comment % this is a comment @ % this is a comment string % this is a comment { % this is a comment abb % this is a comment = % this is a comment "abbreviation" % this is a comment } % this is a comment % this is a comment % this is a comment @ % this is a comment Article % this is a comment {the-key % this is a comment , % this is a comment author % this is a comment = % this is a comment "A. U. Thor" % this is a comment , % this is a comment title % this is a comment = % this is a comment "The Title" % this is a comment , % this is a comment journal % this is a comment = % this is a comment "The Journal" % this is a comment , % this is a comment year % this is a comment = % this is a comment "1993" % this is a comment , % this is a comment volume % this is a comment = % this is a comment "23" % this is a comment , % this is a comment number % this is a comment = % this is a comment "1" % this is a comment , % this is a comment pages % this is a comment = % this is a comment "17--21" % this is a comment , % this is a comment month % this is a comment = % this is a comment jan % this is a comment , % this is a comment bibdate % this is a comment = % this is a comment "Mon Jan 18 09:59:44 1993" % this is a comment , % this is a comment } % this is a comment %================================================= % Test 7: other kinds of embedded space characters % We add CR before LF, and insert FF VT before % each entry. @preamble{"anythinggoes"} @include{a-file-name-goes-here} @string{abb="abbreviation"} @Article{the-key, author="A. U. Thor", title="The Title", journal="The Journal", year="1993", volume="23", number="1", pages="17--21", month=jan, bibdate="Mon Jan 18 09:59:44 1993", } bibclean-2.11.4.1.orig/testscr2.bok0000644000175200017520000000303305304617630016137 0ustar debiandebian@Comment{ This file contains some test Scribe bibliography entries with embedded paragraph breaks for testing the -no-parbreaks switch in bibclean. Without that switch, it should process correctly; with it, 3 sets of error messages should be displayed. } @TechReport{bs-1629-0, author = "BSI", title = "Bibliographic References", institution = "British Standards Institution", year = "1976", type = "BS", number = "1629", } @TechReport{bs-1629-1, author = "BSI", title = "Bibliographic References", institution = "British Standards Institution", year = "1976", type = "BS", number = "1629", } @TechReport{bs-1629-2, author = "BSI", title = "Bibliographic References", institution = "British Standards Institution", year = "1976", type = "BS", number = "1629", } @TechReport{bs-1629-3, author = "BSI", title = "Bibliographic References", institution = "British Standards Institution", year = "1976", type = "BS", number = "1629", } @TechReport{bs-1629-4, author = "BSI", title = "Bibliographic References", institution = "British Standards Institution", year = "1976", type = "BS", number = "1629", } @TechReport{bs-1629-5, author = "BSI", title = "Bibliographic References", institution = "British Standards Institution", year = "1976", type = "BS", number = "1629", } bibclean-2.11.4.1.orig/xerrno.h0000644000175200017520000000021106027723715015357 0ustar debiandebian#ifndef XERRNO_H_DEFINED_ #define XERRNO_H_DEFINED_ #ifdef HAVE_ERRNO_H #include #else #endif #endif /* XERRNO_H_DEFINED_ */ bibclean-2.11.4.1.orig/testcodn.bok0000644000175200017520000011516706140704201016213 0ustar debiandebian%% /u/sy/beebe/tex/bibclean/2-11/testcodn.org, Sun Apr 28 09:01:10 1996 %% Edit by Nelson H. F. Beebe @Article{good-CODEN, comment = "The following CODEN values are valid", CODEN = "AAAAE6", CODEN = "AACRAT", CODEN = "AAFMAT", CODEN = "AAICAE", CODEN = "AALEE5", CODEN = "AAMADV", CODEN = "AAPBBD", CODEN = "AARIA9", CODEN = "AASTAD", CODEN = "ABACEJ", CODEN = "ABBIA4", CODEN = "ABBPAP", CODEN = "ABMECF", CODEN = "ACACBN", CODEN = "ACACEQ", CODEN = "ACCSCE", CODEN = "ACCYDX", CODEN = "ACMAA8", CODEN = "ACMJB2", CODEN = "ACMSCU", CODEN = "ACMTAV", CODEN = "ACNRCW", CODEN = "ACPZAU", CODEN = "ACRABY", CODEN = "ACVMAL", CODEN = "ADIMEZ", CODEN = "ADMOAN", CODEN = "ADMTA4", CODEN = "ADVBAT", CODEN = "ADVMEW", CODEN = "AEDEER", CODEN = "AEDSAV", CODEN = "AEMABN", CODEN = "AEMIDF", CODEN = "AERAAD", CODEN = "AESODT", CODEN = "AESWEK", CODEN = "AHCOE5", CODEN = "AHPBAR", CODEN = "AHSUAV", CODEN = "AIAJAH", CODEN = "AIFUA7", CODEN = "AINFA2", CODEN = "AINTBB", CODEN = "AISJB6", CODEN = "AJAEBA", CODEN = "AJCLD9", CODEN = "AJCPAI", CODEN = "AJMAAN", CODEN = "AJPCAA", CODEN = "AJPHAP", CODEN = "AJPIAS", CODEN = "AJSOAR", CODEN = "ALGOBG", CODEN = "ALGOEJ", CODEN = "ALLCB5", CODEN = "ALNBAB", CODEN = "ALPSE8", CODEN = "ALSHAK", CODEN = "AMACCQ", CODEN = "AMEAE8", CODEN = "AMHCBQ", CODEN = "AMICCW", CODEN = "AMLEEL", CODEN = "AMMYAE", CODEN = "AMNOAN", CODEN = "AMNTA4", CODEN = "AMOMBN", CODEN = "AMPSAB", CODEN = "AMREAD", CODEN = "AMSCAC", CODEN = "ANBCA2", CODEN = "ANCHAM", CODEN = "ANJOAA", CODEN = "ANMAAH", CODEN = "ANMAEL", CODEN = "ANMBCM", CODEN = "ANNSA8", CODEN = "ANYAA9", CODEN = "AOREEV", CODEN = "APANCC", CODEN = "APBYAE", CODEN = "APITE4", CODEN = "APLQD9", CODEN = "APMTAK", CODEN = "APOPAI", CODEN = "APPHE3", CODEN = "APPLAB", CODEN = "APSSBE", CODEN = "APSTAG", CODEN = "ARBOAW", CODEN = "ARCBE2", CODEN = "AREDEI", CODEN = "AREOAD", CODEN = "ARGSB2", CODEN = "ARITBF", CODEN = "ARMSCX", CODEN = "ARNSD5", CODEN = "ARPHAD", CODEN = "ASFPDV", CODEN = "ASJOAB", CODEN = "ASLPAO", CODEN = "ASNAAN", CODEN = "ASRSDW", CODEN = "ASTAAJ", CODEN = "ASTSC7", CODEN = "ASTTA8", CODEN = "ATCAA9", CODEN = "ATDSD3", CODEN = "ATENBP", CODEN = "ATGRDF", CODEN = "ATISET", CODEN = "ATOSDO", CODEN = "ATPSDT", CODEN = "AUJPAS", CODEN = "AURCAT", CODEN = "AVRMAW", CODEN = "AWIFA7", CODEN = "AWREDI", CODEN = "BAMOAD", CODEN = "BASICR", CODEN = "BBACAQ", CODEN = "BBIADT", CODEN = "BBPCAX", CODEN = "BBRCA9", CODEN = "BCBIEQ", CODEN = "BCHSEI", CODEN = "BCPCA6", CODEN = "BCSTB5", CODEN = "BECTA6", CODEN = "BEITD5", CODEN = "BEVEDP", CODEN = "BGDQAG", CODEN = "BIBUBX", CODEN = "BICHAW", CODEN = "BICIAZ", CODEN = "BICMBE", CODEN = "BICYAF", CODEN = "BIINDF", CODEN = "BIJOAK", CODEN = "BIJODN", CODEN = "BIOEEJ", CODEN = "BIOJAU", CODEN = "BIOKAX", CODEN = "BIOMB6", CODEN = "BIOPAE", CODEN = "BIORAK", CODEN = "BISNAS", CODEN = "BITTEL", CODEN = "BIZBAR", CODEN = "BIZEB3", CODEN = "BJCAAI", CODEN = "BJMRDK", CODEN = "BJMSAK", CODEN = "BLCEDD", CODEN = "BLOOAW", CODEN = "BLRRDP", CODEN = "BMBIES", CODEN = "BMFRA3", CODEN = "BMSSB4", CODEN = "BMTBAP", CODEN = "BOMBB5", CODEN = "BOMIET", CODEN = "BRCPAH", CODEN = "BRHLAU", CODEN = "BRMCEW", CODEN = "BRPTDT", CODEN = "BSECBU", CODEN = "BSMFAA", CODEN = "BSMHBH", CODEN = "BSMSAF", CODEN = "BSSYAT", CODEN = "BSTJAN", CODEN = "BSYMBO", CODEN = "BTCHDA", CODEN = "BUWEA3", CODEN = "BYTEDJ", CODEN = "CACMA2", CODEN = "CAIDA5", CODEN = "CAMRE3", CODEN = "CANED2", CODEN = "CANMER", CODEN = "CASSI6", CODEN = "CBIIEV", CODEN = "CBIODE", CODEN = "CBMDAW", CODEN = "CBMRB7", CODEN = "CBPBB8", CODEN = "CBPCEE", CODEN = "CBRPDS", CODEN = "CCCTD6", CODEN = "CCEJEL", CODEN = "CCENDW", CODEN = "CCOMDB", CODEN = "CCRED2", CODEN = "CCROAT", CODEN = "CCUJEX", CODEN = "CDDEE8", CODEN = "CDWOEV", CODEN = "CECADV", CODEN = "CEJOE7", CODEN = "CELLB5", CODEN = "CELREQ", CODEN = "CENGAX", CODEN = "CESIEY", CODEN = "CEXIAL", CODEN = "CFSBEK", CODEN = "CGFODY", CODEN = "CGISES", CODEN = "CGMPE5", CODEN = "CGOSDN", CODEN = "CGRADI", CODEN = "CGTNAU", CODEN = "CGWODH", CODEN = "CHASAP", CODEN = "CHEDAY", CODEN = "CHKWEN", CODEN = "CHMBAY", CODEN = "CHPLBC", CODEN = "CHRLEP", CODEN = "CILSEN", CODEN = "CINDDL", CODEN = "CINUD4", CODEN = "CIRUAL", CODEN = "CIUNEJ", CODEN = "CJBBDU", CODEN = "CJEEEL", CODEN = "CJISDE", CODEN = "CJMAAB", CODEN = "CJMIAZ", CODEN = "CJPHAD", CODEN = "CLDFAT", CODEN = "CLHAD3", CODEN = "CLMCAV", CODEN = "CLSRE8", CODEN = "CMAPDK", CODEN = "CMBUA9", CODEN = "CMCYEO", CODEN = "CMENEZ", CODEN = "CMERA9", CODEN = "CMMECC", CODEN = "CMMEEE", CODEN = "CMMPA9", CODEN = "CMORAP", CODEN = "CMOTDY", CODEN = "CMPBEK", CODEN = "CMPDAM", CODEN = "CMPHAY", CODEN = "CMPHC2", CODEN = "CMPJA6", CODEN = "CMPMAF", CODEN = "CMPWAB", CODEN = "CMRED4", CODEN = "CMSTCJ", CODEN = "CMSVAN", CODEN = "CMSYE2", CODEN = "CMUCAA", CODEN = "CMUJDY", CODEN = "CNEVEW", CODEN = "CNISE9", CODEN = "CNOMEL", CODEN = "COABER", CODEN = "COATBA", CODEN = "COBUAH", CODEN = "COCBE3", CODEN = "COCHDK", CODEN = "COCOD7", CODEN = "COGDET", CODEN = "COGRD2", CODEN = "COHUAD", CODEN = "COLADA", CODEN = "COLAEB", CODEN = "COLJD3", CODEN = "COMBDI", CODEN = "COMEDR", CODEN = "COMGDX", CODEN = "COMHAX", CODEN = "COMIE6", CODEN = "COMLEF", CODEN = "COMPER", CODEN = "COMSE2", CODEN = "COPIEL", CODEN = "COSEEO", CODEN = "COSPDM", CODEN = "COSTCX", CODEN = "CPAUAJ", CODEN = "CPBTAL", CODEN = "CPCIBS", CODEN = "CPCLE6", CODEN = "CPCPAI", CODEN = "CPDIDZ", CODEN = "CPEXEI", CODEN = "CPFLBI", CODEN = "CPGRA6", CODEN = "CPHCBZ", CODEN = "CPHREF", CODEN = "CPHYE2", CODEN = "CPLIE8", CODEN = "CPMAMV", CODEN = "CPMTA8", CODEN = "CPPNB6", CODEN = "CPSEDU", CODEN = "CPTRB4", CODEN = "CQGRDG", CODEN = "CQMAAQ", CODEN = "CRASEV", CODEN = "CRBRAT", CODEN = "CRCHE8", CODEN = "CRGRDN", CODEN = "CRLIAI", CODEN = "CRPFEX", CODEN = "CRVMAC", CODEN = "CRYPE6", CODEN = "CSCIAE", CODEN = "CSDADW", CODEN = "CSFUDY", CODEN = "CSHSAZ", CODEN = "CSINET", CODEN = "CSMNEF", CODEN = "CSPLEO", CODEN = "CSSCDB", CODEN = "CSSEEI", CODEN = "CSTAEB", CODEN = "CSTIEZ", CODEN = "CSYND6", CODEN = "CTCRAE", CODEN = "CTDBA5", CODEN = "CTMEET", CODEN = "CTPHDI", CODEN = "CTRAA4", CODEN = "CUBLE2", CODEN = "CUGED5", CODEN = "CUMIDD", CODEN = "CUOBE3", CODEN = "CUSCAM", CODEN = "CVGPDB", CODEN = "CVIUF4", CODEN = "CWLJDP", CODEN = "CYBNAW", CODEN = "CYTOAN", CODEN = "CYTODQ", CODEN = "CYTZAM", CODEN = "CZMJAE", CODEN = "DACODM", CODEN = "DAMADU", CODEN = "DANKAS", CODEN = "DBANAD", CODEN = "DBMSEO", CODEN = "DCEBE8", CODEN = "DCGEER", CODEN = "DDJOEB", CODEN = "DEBIAO", CODEN = "DEMADO", CODEN = "DESUED", CODEN = "DEVPED", CODEN = "DFFNAW", CODEN = "DGDFA5", CODEN = "DGNTDW", CODEN = "DHSTEV", CODEN = "DHWHAB", CODEN = "DIEQAN", CODEN = "DIGNAO", CODEN = "DIRVE5", CODEN = "DJTGEB", CODEN = "DKENEW", CODEN = "DNAADR", CODEN = "DNSEES", CODEN = "DPCOEQ", CODEN = "DSINE6", CODEN = "DSJOEE", CODEN = "DSMHA4", CODEN = "DSSYDK", CODEN = "DTBSDQ", CODEN = "DTGDE7", CODEN = "DTMNAT", CODEN = "DUMJAO", CODEN = "EAPPEY", CODEN = "ECJSER", CODEN = "ECMTA7", CODEN = "ECREAL", CODEN = "EDNSBH", CODEN = "EDNSBM", CODEN = "EFMEAH", CODEN = "EIVKAX", CODEN = "EJABDD", CODEN = "EJBCAI", CODEN = "EJCBDN", CODEN = "EJCBEO", CODEN = "EJNMEA", CODEN = "EJOCDI", CODEN = "EJORDT", CODEN = "EJPREZ", CODEN = "EKRKAR", CODEN = "ELCTDN", CODEN = "ELEADA", CODEN = "ELLEAK", CODEN = "ELLIDZ", CODEN = "ELMMAF", CODEN = "ELNEAU", CODEN = "ELNTA7", CODEN = "ELODAW", CODEN = "ELRAA4", CODEN = "EMIREL", CODEN = "EMJODG", CODEN = "ENDEAS", CODEN = "ENMAAR", CODEN = "ENPOEK", CODEN = "EOCMEO", CODEN = "EONLE8", CODEN = "EPEBD7", CODEN = "EPMEAJ", CODEN = "EPODEU", CODEN = "ERGOAX", CODEN = "ERMGB6", CODEN = "ESBIAV", CODEN = "ESTHAG", CODEN = "ETTIEU", CODEN = "ETTTET", CODEN = "EWWWE6", CODEN = "EXEEE5", CODEN = "EXMYD2", CODEN = "EXPEAM", CODEN = "EXPSAU", CODEN = "EXSEE7", CODEN = "EYPRE4", CODEN = "FAJOEC", CODEN = "FASRDV", CODEN = "FEADEU", CODEN = "FEBLAL", CODEN = "FEBPBY", CODEN = "FEPRA7", CODEN = "FIBQAU", CODEN = "FMLED7", CODEN = "FMREE4", CODEN = "FODMD5", CODEN = "FORBA5", CODEN = "FORTAP", CODEN = "FSSYD8", CODEN = "FUJTAR", CODEN = "FUMAAJ", CODEN = "GAMOE4", CODEN = "GEDEEP", CODEN = "GENED6", CODEN = "GENTAE", CODEN = "GLSEED", CODEN = "GLYCE3", CODEN = "GNMCEP", CODEN = "GPYSA7", CODEN = "GRGVA8", CODEN = "GRWAAP", CODEN = "HABRAX", CODEN = "HAEMAX", CODEN = "HALEAA", CODEN = "HALRAF", CODEN = "HAMAA3", CODEN = "HCMYAL", CODEN = "HIMADS", CODEN = "HJICAI", CODEN = "HJKHDC", CODEN = "HLTPAO", CODEN = "HPJOAX", CODEN = "HUBIAA", CODEN = "HUFAA6", CODEN = "HUHEAS", CODEN = "HUNEDR", CODEN = "HVERAP", CODEN = "HYPRAX", CODEN = "IAPMEZ", CODEN = "IBMBES", CODEN = "IBMJAE", CODEN = "IBMSA7", CODEN = "IBMTAA", CODEN = "ICCBAF", CODEN = "ICGADZ", CODEN = "ICHPCG", CODEN = "ICOEEK", CODEN = "ICOMD9", CODEN = "ICSAES", CODEN = "ICSYBT", CODEN = "IDXRA5", CODEN = "IEANEP", CODEN = "IEARAX", CODEN = "IEBEAX", CODEN = "IECMBT", CODEN = "IECTAF", CODEN = "IEEDAB", CODEN = "IEEDEF", CODEN = "IEEECA", CODEN = "IEEPAD", CODEN = "IEERAJ", CODEN = "IEESAM", CODEN = "IEEWAY", CODEN = "IEITEF", CODEN = "IEJQA7", CODEN = "IEMGAQ", CODEN = "IEMIDZ", CODEN = "IEPCBU", CODEN = "IERNE8", CODEN = "IESEDJ", CODEN = "IESOEG", CODEN = "IETAA9", CODEN = "IETABA", CODEN = "IETDAI", CODEN = "IETIAX", CODEN = "IETMAB", CODEN = "IETPAK", CODEN = "IETTAW", CODEN = "IFCAE3", CODEN = "IFCEBC", CODEN = "IFCNA4", CODEN = "IFCSEN", CODEN = "IFDBEB", CODEN = "IFESEX", CODEN = "IFPLAT", CODEN = "IFSRAS", CODEN = "IGRSD2", CODEN = "IHPRBS", CODEN = "IHSCEZ", CODEN = "IICOEW", CODEN = "IIOMEI", CODEN = "IJAEDW", CODEN = "IJANDP", CODEN = "IJARE4", CODEN = "IJAUED", CODEN = "IJBBBQ", CODEN = "IJBBFU", CODEN = "IJBOBV", CODEN = "IJCIAH", CODEN = "IJCMAT", CODEN = "IJCOAZ", CODEN = "IJCTEK", CODEN = "IJCVEQ", CODEN = "IJDBE5", CODEN = "IJEBA6", CODEN = "IJEEAF", CODEN = "IJHMAK", CODEN = "IJHYEQ", CODEN = "IJISED", CODEN = "IJMEBM", CODEN = "IJMMBC", CODEN = "IJMPDN", CODEN = "IJMPEO", CODEN = "IJMTAW", CODEN = "IJNADH", CODEN = "IJNFDW", CODEN = "IJNMBH", CODEN = "IJPBEV", CODEN = "IJPPE5", CODEN = "IJQBDZ", CODEN = "IJQCB2", CODEN = "IJQSAF", CODEN = "IJQSDI", CODEN = "IJRAE4", CODEN = "IJRBE7", CODEN = "IJSAE9", CODEN = "IJSCBC", CODEN = "IJSYA9", CODEN = "IJSZEG", CODEN = "IJTPBM", CODEN = "IMCSE4", CODEN = "IMPAEF", CODEN = "IMPDEO", CODEN = "IMPEER", CODEN = "IMSIEK", CODEN = "IMTHAI", CODEN = "IMTHBJ", CODEN = "INFAC4", CODEN = "INFCDB", CODEN = "INFCEC", CODEN = "INFRCL", CODEN = "INFTCR", CODEN = "INFWE4", CODEN = "INPEEY", CODEN = "INSKDW", CODEN = "INSYD6", CODEN = "INWODU", CODEN = "IPDAD9", CODEN = "IPDTEX", CODEN = "IPETD3", CODEN = "IPJIEI", CODEN = "IPMADK", CODEN = "IPPADZ", CODEN = "IPPDDA", CODEN = "IPPRDI", CODEN = "IPRODJ", CODEN = "IRAMEB", CODEN = "IRCYAJ", CODEN = "IRELAO", CODEN = "IRITAY", CODEN = "IRLAAQ", CODEN = "IRMGBG", CODEN = "ISACEM", CODEN = "ISIJBC", CODEN = "ISISA4", CODEN = "ISJMAP", CODEN = "ISOTE7", CODEN = "ISUDX8", CODEN = "ISYMAW", CODEN = "ISYSDJ", CODEN = "ITADAS", CODEN = "ITBTEH", CODEN = "ITCEDA", CODEN = "ITCOB4", CODEN = "ITCSDI", CODEN = "ITDSEO", CODEN = "ITKEEH", CODEN = "ITLBDC", comment = "These CODEN are correct, except that they have been converted to lower case", CODEN = "itmeer", CODEN = "itmgex", CODEN = "itmid4", CODEN = "itnnep", CODEN = "itpidj", CODEN = "itpred", CODEN = "itpseg", CODEN = "itrdde", CODEN = "iumjab", CODEN = "ivjodl", CODEN = "iweea4", CODEN = "izamat", CODEN = "jacgar", CODEN = "jacoah", CODEN = "jacsat", CODEN = "jactaw", CODEN = "jaecet", CODEN = "jahsak", CODEN = "jalga4", CODEN = "jalsa6", CODEN = "jamaap", CODEN = "jamads", CODEN = "jamcav", CODEN = "jammdu", CODEN = "japgbp", CODEN = "japiau", CODEN = "jareew", CODEN = "jasman", CODEN = "jatsdf", CODEN = "jaumax", CODEN = "jaxtaz", CODEN = "jbbmdg", CODEN = "jbcha3", CODEN = "jbditd", CODEN = "jbmrej", CODEN = "jbsdd6", CODEN = "jcaleg", CODEN = "jcamdi", CODEN = "jcatd5", CODEN = "jcbta7", CODEN = "jcbtb8", CODEN = "jccee5", CODEN = "jcchdd", CODEN = "jcebd5", CODEN = "jcinao", CODEN = "jcisd8", CODEN = "jcise9", CODEN = "jclba3", CODEN = "jcllax", CODEN = "jcmbdb", CODEN = "jcmiex", CODEN = "jcmmeb", CODEN = "jcmtdv", CODEN = "jcnrev", CODEN = "jcoid8", CODEN = "jcpadn", CODEN = "jcpsa6", CODEN = "jcrgae", CODEN = "jcssbm", CODEN = "jcssep", CODEN = "jcteem", CODEN = "jcthar", CODEN = "jctpah", CODEN = "jdadex", CODEN = "jdeqak", CODEN = "jdgeas", CODEN = "jdimew", CODEN = "jdocas", CODEN = "jdsmaa", CODEN = "jeaiel", CODEN = "jebiam", CODEN = "jeclb3", CODEN = "jecmb6", CODEN = "jedrap", CODEN = "jeemaf", CODEN = "jemied", CODEN = "jemsa5", CODEN = "jenmdt", CODEN = "jepcea", CODEN = "jezoao", CODEN = "jflsa7", CODEN = "jfuaaw", CODEN = "jganeg", CODEN = "jgmian", CODEN = "jgopeo", CODEN = "jgplad", CODEN = "jgrea2", CODEN = "jgthdo", CODEN = "jhaddq", CODEN = "jicye5", CODEN = "jietau", CODEN = "jipea6", CODEN = "jiprde", CODEN = "jirral", CODEN = "jiscdi", CODEN = "jjatdk", CODEN = "jjgpd4", CODEN = "jjind8", CODEN = "jlcmak", CODEN = "jllien", CODEN = "jlmsak", CODEN = "jlpre2", CODEN = "jmanak", CODEN = "jmapaq", CODEN = "jmbbbo", CODEN = "jmblaj", CODEN = "jmdeec", CODEN = "jmevau", CODEN = "jmiado", CODEN = "jmivek", CODEN = "jmkyaz", CODEN = "jmobak", CODEN = "jmopew", CODEN = "jmpaam", CODEN = "jmpha9", CODEN = "jmrae2", CODEN = "jmrmd3", CODEN = "jmtaa8", CODEN = "jmvaai", CODEN = "jnbbau", CODEN = "jnbcax", CODEN = "jnbraa", CODEN = "jnciam", CODEN = "jncieq", CODEN = "jncme4", CODEN = "jncsai", CODEN = "jnrsds", CODEN = "jnuta9", CODEN = "joaldv", CODEN = "joamav", CODEN = "joaod6", CODEN = "jobaay", CODEN = "jobiao", CODEN = "jobpde", CODEN = "jobsdn", CODEN = "jocma7", CODEN = "jocreq", CODEN = "johea8", CODEN = "jomman", CODEN = "jomra4", CODEN = "jonea4", CODEN = "jonra9", CODEN = "joopec", CODEN = "jopad5", CODEN = "jophan", CODEN = "josaah", CODEN = "josha4", CODEN = "josmar", CODEN = "josued", CODEN = "jotabn", CODEN = "joviam", CODEN = "jpama4", CODEN = "jpbpdl", CODEN = "jpchd2", CODEN = "jpdcer", CODEN = "jpepe3", CODEN = "jpetab", CODEN = "jpgedd", CODEN = "jphac5", CODEN = "jphnb9", CODEN = "jphya7", CODEN = "jpiedn", CODEN = "jqsrae", CODEN = "jqutau", CODEN = "jrarax", CODEN = "jrcee8", CODEN = "jrcpa3", CODEN = "jrmaa8", CODEN = "jrmab9", CODEN = "jrnaad", CODEN = "jrnbag", CODEN = "jsbiem", CODEN = "jscsaj", CODEN = "jsimav", CODEN = "jsinay", CODEN = "jsirac", CODEN = "jsomar", CODEN = "jspueq", CODEN = "jssaef", CODEN = "jssie5", CODEN = "jssodm", CODEN = "jstbaj", CODEN = "jstnal", CODEN = "jstpsb", CODEN = "jsyceh", CODEN = "jsyla6", CODEN = "jsyma9", CODEN = "jtbiap", CODEN = "jtpedi", CODEN = "jvcaeo", CODEN = "jvcre7", CODEN = "jvlce7", CODEN = "jvsped", CODEN = "jwssap", CODEN = "jyceaj", CODEN = "kbrna5", CODEN = "keree3", CODEN = "kerneu", CODEN = "kesea4", CODEN = "kybeap", CODEN = "laapaw", CODEN = "latedt", CODEN = "lcrcao", CODEN = "lcsrea", CODEN = "lfwoe8", CODEN = "linmec", CODEN = "llcoei", CODEN = "lmicdi", CODEN = "lmphdy", CODEN = "lmsbbt", CODEN = "lnbmah", CODEN = "lncsd9", CODEN = "lnmaa2", CODEN = "lnmlaz", CODEN = "lnpha4", CODEN = "lscoex", CODEN = "lssad2", CODEN = "maana3", CODEN = "mabiar", CODEN = "macwea", CODEN = "madeap", CODEN = "magaas", CODEN = "magda3", CODEN = "maindc", CODEN = "maioeg", CODEN = "mamcau", CODEN = "mamga8", CODEN = "marear", CODEN = "mastba", CODEN = "masyes", CODEN = "matged", CODEN = "mazeax", CODEN = "mbceev", CODEN = "mbeveo", CODEN = "mbipdp", CODEN = "mbred3", CODEN = "mcbia7", CODEN = "mcbib8", CODEN = "mcblag", CODEN = "mcebd4", CODEN = "mcedda", CODEN = "mcend6", CODEN = "mcene7", CODEN = "mcmoeg", CODEN = "mcmpaf", CODEN = "mcrlas", CODEN = "mcsidr", CODEN = "mcsye8", CODEN = "mcusey", CODEN = "mdawah", CODEN = "meacbx", CODEN = "medve6", CODEN = "meenah", CODEN = "menzau", CODEN = "mesbel", CODEN = "metaaj", CODEN = "mfkaaf", CODEN = "mggeae", CODEN = "mibldr", CODEN = "mimcai", CODEN = "mimid5", CODEN = "mimja5", CODEN = "miscei", CODEN = "mkscas", CODEN = "mlbb", CODEN = "mmbied", CODEN = "mmbybo", CODEN = "mmdeeb", CODEN = "mmicdt", CODEN = "mmpha8", CODEN = "mmscdb", CODEN = "mnmta2", CODEN = "moeceo", CODEN = "momiee", CODEN = "mopma3", CODEN = "moredq", CODEN = "mosiea", CODEN = "mpcpco", CODEN = "mpevek", CODEN = "mpstdf", CODEN = "mpysa5", CODEN = "mrcod2", CODEN = "mrobeo", CODEN = "msciam", CODEN = "mstmbi", CODEN = "mthca2", CODEN = "mthnb2", CODEN = "mtkaab", CODEN = "mtmnaq", CODEN = "mtscan", CODEN = "mtseat", CODEN = "mttcas", CODEN = "mureav", CODEN = "musbbs", CODEN = "mvbrav", CODEN = "mweeei", CODEN = "mwreab", CODEN = "mycgao", CODEN = "nadoaw", CODEN = "narhad", CODEN = "nasbd3", CODEN = "nasfeg", CODEN = "natuas", CODEN = "natway", CODEN = "nawia7", CODEN = "nbitab", CODEN = "nebie2", CODEN = "nejmag", CODEN = "neredz", CODEN = "nessef", CODEN = "neuceb", CODEN = "nfaddl", CODEN = "nimaer", CODEN = "nnbya7", CODEN = "nneteb", CODEN = "nnobe7", CODEN = "noandd", CODEN = "nrloep", CODEN = "nrlqar", CODEN = "nstbat", CODEN = "ntelap", CODEN = "ntroav", CODEN = "ntwkaa", CODEN = "nualeg", CODEN = "numma7", CODEN = "nupabl", CODEN = "nupbbo", CODEN = "nusaaz", CODEN = "nwscal", CODEN = "nytiao", CODEN = "nzmab7", CODEN = "ocamd5", CODEN = "ocmiek", CODEN = "ocnsdk", CODEN = "ofsyeh", CODEN = "oigjav", CODEN = "omega6", CODEN = "omsoe2", CODEN = "oncnes", CODEN = "onlidn", CODEN = "opacat", CODEN = "opcob8", CODEN = "opcoeb", CODEN = "opegar", CODEN = "opledp", CODEN = "oprea1", CODEN = "oprqak", CODEN = "optzdq", CODEN = "oqeldi", CODEN = "ordyam", CODEN = "orled5", CODEN = "otikaj", CODEN = "pacoej", CODEN = "paisdq", CODEN = "pamyar", CODEN = "papcaa", CODEN = "pbimac", CODEN = "pbliej", CODEN = "pbmea8", CODEN = "pcaua3", CODEN = "pcbrd2", CODEN = "pcmpei", CODEN = "pcpsa4", CODEN = "pcsoda", CODEN = "pcwddv", CODEN = "pcwodu", CODEN = "pdnpdt", CODEN = "peevd9", CODEN = "pemsa3", CODEN = "pepsbj", CODEN = "peredn", CODEN = "pfecdr", CODEN = "pflabk", CODEN = "pharat", CODEN = "phblag", CODEN = "phcbap", CODEN = "phfle6", CODEN = "phjrd9", CODEN = "phmaa4", CODEN = "phrea7", CODEN = "phrvao", CODEN = "phstbo", CODEN = "phtoad", CODEN = "phwoew", CODEN = "physag", CODEN = "pireae", CODEN = "pjmaai", CODEN = "planab", CODEN = "plcmdl", CODEN = "pljued", CODEN = "plmtal", CODEN = "plraan", CODEN = "plrbaq", CODEN = "plsmdx", CODEN = "pmbidb", CODEN = "pmfaa4", CODEN = "pmhaa4", CODEN = "pmosaz", CODEN = "pnasa6", CODEN = "pnende", CODEN = "pnmbaf", CODEN = "podie2", CODEN = "ppexep", CODEN = "ppltee", CODEN = "ppsoau", CODEN = "preaay", CODEN = "preba3", CODEN = "prerel", CODEN = "prgmbd", CODEN = "prgrdu", CODEN = "pricdt", CODEN = "prlaaz", CODEN = "prlba4", CODEN = "prledg", CODEN = "prltao", CODEN = "progd3", CODEN = "prota5", CODEN = "prowae", CODEN = "prplcm", CODEN = "prseae", CODEN = "prslaz", CODEN = "prssdp", CODEN = "prvcan", CODEN = "prvdaq", CODEN = "psdae6", CODEN = "psfgey", CODEN = "psisdg", CODEN = "psmiax", CODEN = "psyma7", CODEN = "ptnra8", CODEN = "ptrbae", CODEN = "ptrdeo", CODEN = "ptrfeu", CODEN = "ptrsav", CODEN = "pwoqdy", CODEN = "pylaag", CODEN = "pylbaj", CODEN = "qamaay", CODEN = "qcbuen", CODEN = "qjmaat", CODEN = "qjmmav", CODEN = "qjmsaf", CODEN = "qjrmam", CODEN = "qrbudp", CODEN = "qsardi", CODEN = "radbe7", CODEN = "rascad", CODEN = "rcmmar", CODEN = "rcmtae", CODEN = "rctjdm", CODEN = "rdigau", CODEN = "refias", CODEN = "reltan", CODEN = "rfaadn", CODEN = "rfands", CODEN = "rfdedg", CODEN = "rjcldq", CODEN = "rmhpbe", CODEN = "rmjmae", CODEN = "rmmaev", CODEN = "rmmgab", CODEN = "rmphat", CODEN = "roagd2", CODEN = "rptwad", CODEN = "rsalfd", CODEN = "rsrod3", CODEN = "rtdvaq", CODEN = "rveebt", CODEN = "saapda", CODEN = "sacje3", CODEN = "samcas", CODEN = "samsec", CODEN = "sanabs", CODEN = "sanbbv", CODEN = "sapmb6", CODEN = "scamac", CODEN = "scebe3", CODEN = "scieas", CODEN = "scipev", CODEN = "scise6", CODEN = "scjaep", CODEN = "scledc", CODEN = "scnebk", CODEN = "scomdh", CODEN = "scpgd4", CODEN = "sejoed", CODEN = "selid4", CODEN = "semybl", CODEN = "sepsbi", CODEN = "sewoea", CODEN = "sfendp", CODEN = "sgbud4", CODEN = "sgnwd2", CODEN = "sidpaa", CODEN = "sigbel", CODEN = "sigmdj", CODEN = "signdm", CODEN = "sigsbz", CODEN = "sigsd3", CODEN = "sijcd4", CODEN = "simua2", CODEN = "simud5", CODEN = "sinodq", CODEN = "siread", CODEN = "sjamdu", CODEN = "sjcodc", CODEN = "sjcsep", CODEN = "sjdba9", CODEN = "sjmaah", CODEN = "sjmael", CODEN = "sjnaam", CODEN = "sjoce3", CODEN = "sjope8", CODEN = "smataz", CODEN = "smcpax", CODEN = "smeped", CODEN = "smjcat", CODEN = "smjmap", CODEN = "smster", CODEN = "snewd6", CODEN = "somadl", CODEN = "soriax", CODEN = "spcoel", CODEN = "spexbl", CODEN = "sphda9", CODEN = "splban", CODEN = "sprodr", CODEN = "sproes", CODEN = "spvieu", CODEN = "srdfed", CODEN = "srecd8", CODEN = "sroldh", CODEN = "srpsd9", CODEN = "ssbde4", CODEN = "sseba9", CODEN = "ssmaac", CODEN = "sssaa8", CODEN = "sstrey", CODEN = "stace3", CODEN = "stopb7", CODEN = "strue6", CODEN = "stscep", CODEN = "sunwdw", CODEN = "surveg", CODEN = "svmda8", CODEN = "sycna9", CODEN = "syine9", CODEN = "taeea5", CODEN = "tamtam", CODEN = "tansao", CODEN = "tbscdb", CODEN = "tbsrdm", CODEN = "tchaam", CODEN = "tcmta2", CODEN = "tcmte6", CODEN = "tcscdi", CODEN = "tereau", CODEN = "tetref", CODEN = "thejd4", CODEN = "tlcmbt", CODEN = "tmisaf", CODEN = "tplgaf", CODEN = "tprbau", CODEN = "trgee2", CODEN = "trmiea", CODEN = "trrebk", CODEN = "trscbj", CODEN = "tsaea9", CODEN = "tsica9", CODEN = "twasde", CODEN = "tymea9", CODEN = "ulccdc", CODEN = "ultrd6", CODEN = "uncoet", CODEN = "unred5", CODEN = "utmada", CODEN = "vaxpen", CODEN = "vicoe5", CODEN = "visram", CODEN = "vslgao", CODEN = "vuese9", CODEN = "wewefp", CODEN = "wiine9", CODEN = "wpklao", CODEN = "wredem", CODEN = "wreraq", CODEN = "wsjoaf", CODEN = "wstee5", CODEN = "wzhlde", CODEN = "wztkay", CODEN = "wztuau", CODEN = "xjouea", CODEN = "xresea", CODEN = "yeasa8", CODEN = "yeste3", CODEN = "zammax", CODEN = "zampdb", CODEN = "zdace2", CODEN = "zmlgaq", CODEN = "zmrrep", CODEN = "zncbda", CODEN = "zoscex", CODEN = "zpaadb", CODEN = "zpbbdj", CODEN = "zpcfd2", CODEN = "zpcmdn", CODEN = "ztvram", CODEN = "zwvgaa", } @Article{check-digit-less-CODEN, comment = "The following CODEN are valid, except that they are missing their final check digits (this is common in some library catalogs", CODEN = "AALEE", CODEN = "AASTA", CODEN = "ABACE", CODEN = "ACMSC", CODEN = "ADMOA", CODEN = "AINFA", CODEN = "AINTB", CODEN = "AISJB", CODEN = "AJSOA", CODEN = "ALGOE", CODEN = "ALSHA", CODEN = "AMHCB", CODEN = "ANMAA", CODEN = "ANMAE", CODEN = "AOREE", CODEN = "APLQD", CODEN = "AREOA", CODEN = "ARGSB", CODEN = "ARITB", CODEN = "ASLPA", CODEN = "AURCA", CODEN = "AVTEA", CODEN = "BASIC", CODEN = "BCPCA", CODEN = "BEVED", CODEN = "BITTE", CODEN = "BIZBA", CODEN = "BJMSA", CODEN = "BMFRA", CODEN = "BMSSB", CODEN = "BSMSA", CODEN = "BYTED", CODEN = "CACMA", CODEN = "CAGDE", CODEN = "CAIDA", CODEN = "CCEND", CODEN = "CGFOD", CODEN = "CGRAD", CODEN = "CHKWE", CODEN = "CJISD", CODEN = "CMAPD", CODEN = "CMORA", CODEN = "CMPJA", CODEN = "CMPTA", CODEN = "CMSYE", CODEN = "CNISE", CODEN = "CNOME", CODEN = "COATB", CODEN = "COCOD", CODEN = "COGRD", CODEN = "COHUA", CODEN = "COMHA", CODEN = "COSPD", CODEN = "COSTC", CODEN = "CPAMA", CODEN = "CPHCB", CODEN = "CPLIE", CODEN = "CPTRB", CODEN = "CQMAA", CODEN = "CSAEE", CODEN = "CSTIE", CODEN = "DDJSD", CODEN = "DGRCD", CODEN = "DJTAE", CODEN = "DJTGE", CODEN = "DPCOE", CODEN = "DSINE", CODEN = "DTJOE", CODEN = "DTMNA", CODEN = "ECJSE", CODEN = "ECREA", CODEN = "EKRKA", CODEN = "ELLEA", CODEN = "ELLID", CODEN = "EMODD", CODEN = "EONLE", CODEN = "EPODE", CODEN = "ERMGB", CODEN = "ETTIE", CODEN = "FASRD", CODEN = "FSSYD", CODEN = "FUJTA", CODEN = "GLSEE", CODEN = "HAMAA", CODEN = "HJKHD", CODEN = "HUHEA", CODEN = "IAIEE", CODEN = "ICCBA", CODEN = "ICGAD", CODEN = "ICSAE", CODEN = "ICSYB", CODEN = "IEPCB", CODEN = "IESOE", CODEN = "IFDBE", CODEN = "IFESE", CODEN = "IJARE", CODEN = "IJBOB", CODEN = "IJISE", CODEN = "IJMPE", CODEN = "INFAC", CODEN = "INFTC", CODEN = "INSKD", CODEN = "IPMAD", CODEN = "IRCYA", CODEN = "IRELA", CODEN = "IRLAA", CODEN = "ISIJB", CODEN = "ISUDX", CODEN = "ISYSD", CODEN = "ITBTE", CODEN = "ITMEE", CODEN = "ITPRE", CODEN = "ITPSE", CODEN = "IZAMA", CODEN = "JAUMA", CODEN = "JCAMD", CODEN = "JCTHA", CODEN = "JCTPA", CODEN = "JDOCA", CODEN = "JIRRA", CODEN = "JISCD", CODEN = "JLPRE", CODEN = "JMPHA", CODEN = "JNBRA", CODEN = "JOMMA", CODEN = "JOSHA", CODEN = "JOTAB", CODEN = "JRNBA", CODEN = "JSIMA", CODEN = "JSINA", CODEN = "JSSOD", CODEN = "JSYCE", CODEN = "JVLCE", CODEN = "JWSSA", CODEN = "KESEA", CODEN = "LLCOE", CODEN = "LMICD", CODEN = "MCENE", CODEN = "MCMPA", CODEN = "MCRLA", CODEN = "MCSID", CODEN = "MDMZD", CODEN = "MEORD", CODEN = "MICOE", CODEN = "MIMCA", CODEN = "MIMJA", CODEN = "MKSCA", CODEN = "MMPHA", CODEN = "MOPMA", CODEN = "MSTMB", CODEN = "MTHNB", CODEN = "MTSEA", CODEN = "MTTCA", CODEN = "NADOA", CODEN = "NAWIA", CODEN = "NRLOE", CODEN = "NSTBA", CODEN = "NTROA", CODEN = "NZMAB", CODEN = "OCMIE", CODEN = "ORDYA", CODEN = "OTIKA", CODEN = "PACOE", CODEN = "PCAUA", CODEN = "PNMBA", CODEN = "PPSOA", CODEN = "PRGMB", CODEN = "PROGD", CODEN = "PROWA", CODEN = "PRSEA", CODEN = "PRSLA", CODEN = "PSISD", CODEN = "PSYMA", CODEN = "PTRSA", CODEN = "RDIGA", CODEN = "RMMGA", CODEN = "SAMCA", CODEN = "SEPSB", CODEN = "SGNWD", CODEN = "SIGBE", CODEN = "SIGSB", CODEN = "SINOD", CODEN = "SJCOD", CODEN = "SMJCA", CODEN = "SMSTE", CODEN = "SNEWD", CODEN = "SRDFE", CODEN = "SRECD", CODEN = "SRPSD", CODEN = "SSEJE", CODEN = "STPGE", CODEN = "SVMDA", CODEN = "TAEEA", CODEN = "TANSA", CODEN = "TCSCD", CODEN = "TMISA", CODEN = "TSCSE", CODEN = "TSICA", CODEN = "UNCOE", CODEN = "VICOE", CODEN = "WIINE", CODEN = "WZTUA", CODEN = "YEASA", CODEN = "ZAMMA", CODEN = "ZMRRE", } @Article{bad-CODEN, comment = "These CODEN have incorrect check digits.", CODEN = "ITDSEP", CODEN = "ITKEEI", CODEN = "ITLBDD", CODEN = "itmees", CODEN = "itmgey", CODEN = "itmid5", comment = "This is the British Dental Journal CODEN, but the assigned check digit in library catalogs is wrong.", CODEN = "BDJOHJ", } @Article{short-CODEN, comment = "These CODEN values are short", CODEN = "I", CODEN = "IT", CODEN = "ITD", CODEN = "ITDS", CODEN = "ITDSE", } @Article{long-CODEN, comment = "These CODEN have too many characters", CODEN = "AITDSEO", CODEN = "ABITDSEO", CODEN = "ABCITDSEO", CODEN = "ABCDITDSEO", CODEN = "ABCDEITDSEO", CODEN = "ABCDEFITDSEO", } bibclean-2.11.4.1.orig/testbib2.bok0000644000175200017520000021717406116574171016125 0ustar debiandebian% REDUCE BIBLIOGRAPHY % Part 1: A-F % Copyright (c) 1990 The RAND Corporation. All Rights Reserved. % Additions and corrections are solicited. Please send them, in the % same format as these entries if possible, to reduce at rand.org. @Article{Abbott:85, author = "J. A. Abbott and R. J. Bradford and J. H. Davenport", title = "A Remark on Factorisation", journal = "{SIGSAM} Bulletin", year = "1985", volume = "19", number = "2", pages = "31--33", month = may, } @InProceedings{Abbott:86, author = "J. A. Abbott and R. J. Bradford and J. H. Davenport", title = "The {Bath} Algebraic Number Package", booktitle = "Proc. of {SYMSAC} '86", year = "1986", pages = "250--253", } @InProceedings{Abbott:87, author = "J. A. Abbott and J. H. Davenport", title = "Polynomial Factorization: An Exploration of {Lenstra's} Algorithm", booktitle = "Proc. {EUROCAL} '87, Lecture Notes in Computer Science", year = "1987", volume = "378", pages = "391--402", publisher = "Springer-Verlag", } @InProceedings{Abbott:87a, author = "J. A. Abbott", title = "Integration: Solving the {Risch} Differential Equation", booktitle = "Proc. {EUROCAL} '87, Lecture Notes in Computer Science", year = "1987", volume = "378", pages = "465--467", publisher = "Springer-Verlag", } @PhdThesis{Abbott:88, author = "J. A. Abbott", title = "Factorisation of Polynomials over Algebraic Number Fields", school = "Univ. of Bath, England", year = "1988", } @Article{Abbott:88a, author = "J. A. Abbott and J. H. Davenport", title = "A Remark on a Paper by {Wang}: Another Surprising Property of 42", journal = "Math. Comp.", year = "1988", volume = "51", pages = "837--839", } @InProceedings{Abbott:89, author = "J. A. Abbott", title = "Recovery of Algebraic Numbers from their p-Adic Approximations", booktitle = "Proc. of {ISSAC} '89", publisher = "{ACM} Press, New York", year = "1989", pages = "112--120", } @TechReport{Abbott:89a, author = "J. A. Abbott and R. J. Bradford and J. H. Davenport", title = "A Remark on the Multiplication of Sparse Polynomials", number = "TR 89-21", year = "1989", institution = "School of Mathematical Sciences, University of Bath", } @InProceedings{Abdali:88, author = "S. K. Abdali and D. S. Wise", title = "Experiments with Quadtree Representation of Matrices", booktitle = "Proc. of {ISSAC} '88", publisher = "Springer-Verlag", year = "1988", volume = "358", pages = "96--108", } @Article{Abiezzi:83, author = "Salim S. {Abi-Ezzi}", title = "Clarification to the Symbolic Mode in {REDUCE}", journal = "{SIGSAM} Bulletin", year = "1983", volume = "17", number = "3 and 4", pages = "43--47", month = aug # " and " # nov, } @Article{Adams:83, author = "K. J. Adams", title = "Analytic Estimates for the Dynamic Aperture of Nonlinear Lattices", journal = "IEEE Trans. Nucl. Sci.", year = "1983", volume = "NS-30", pages = "2436--2438", } %"For an accelerator lattice..." REDUCE was used to obtain low order %coefficients in the calculation of the amplitude. @Article{Adkins:83, author = "G. S. Adkins", title = "Analytic Evaluation of an {O}($\alpha$) Vertex Correction to the Rate of Orthopositronium", journal = "Phys. Rev. A", year = "1983", volume = "27", pages = "530--532", abstract = "The order-$\alpha$ correction to the lowest order orthopositronium decay rate due to the two outer-vertex graphs obtained in analytic form.", } @Article{Adkins:83a, author = "G. S. Adkins and F. R. Brown", title = "Rate for Positronium Decay to Five Photons", journal = "Phys. Rev. A", year = "1983", volume = "28", pages = "1164--1165", abstract = "{REDUCE} used to calculate trace of $\gamma$ matrices. Large calculation.", } @Article{Adkins:85, author = "G. S. Adkins", title = "Inner-Vertex Contributions to the Decay Rate of Orthopositronium", journal = "Phys. Rev. A", year = "1985", volume = "31", pages = "1250--1252", abstract = "{REDUCE} trace calculations. {"}In this paper the order-$\alpha$ contribution to the inner-vertex graphs to the decay rate of orthopositronium is obtained in analytic form.{"}", } @Article{Aguilera-Navarro:87, author = "V. C. Aguilera-Navarro and R. Guardiola and C. Keller and M. de Llano and M. Popovic and M. Fortes", title = "Van der {Waals} Perturbation Theory for Fermion and Boson Ground-State Matter", journal = "Phys. Rev. A", year = "1987", volume = "35", pages = "563--584", } %Uses computer algebra to rearrange ideal-gas-based low-density %expansions; to them REDUCE or MACSYMA provide just the expertise they %require to substitute forms into equations, and so makes their %formulation possible. @Article{Aldins:69, author = "J. Aldins and S. J. Brodsky and A. J. Dufner and T. Kinoshita", title = "Photon-Photon Scattering Contribution to the Sixth Order Magnetic Moments of the Muon and Electron", journal = "Phys. Rev. Lett.", year = "1969", volume = "23", pages = "441--443", } @TechReport{Alekseev:86, author = "A. I. Alekseev and V. F. Edneral", title = "Tensor Structure of Axial Gauge Polarization Operator in the Infrared Region", institution = "IHEP", year = "1986", type = "Preprint", number = "86-46", } @Article{Alekseev:87, author = "A. I. Alekseev and V. F. Edneral", title = "Tensor Structure of Gluon Polarization Operator in the Axial Gauge for Infra-Red Region", journal = "Journal of Nuclear Physics", year = "1987", pages = "1105--1114", } @TechReport{Alekseev:87a, author = "A. I. Alekseev and V. F. Edneral", title = "On Evaluation of {Feynman} Integrals in Axial Gauge", institution = "IHEP", year = "1987", type = "Preprint", number = "87-118", } %The recurrent algorithm for axial gauge calculations of %one-loop massless {Feynman} integrals in the n-dimensional %momentum space is described. The algorithm we suggest is %realized on the basis of REDUCE system and presented as %a procedure. It is rather effective for cumbersome %combinations of those integrals. @Article{Alfeld:82, author = "P. Alfeld", title = "Fixed Point Iteration with Inexact Function Values", journal = "Math. Comp.", year = "1982", volume = "38", pages = "87--98", } %Numerical analysis generating an improved iterative scheme. "The %technical manipulations in this paper were carried out using the %symbol manipulation language REDUCE." @TechReport{Amirkhanov:87, author = "I. V. Amirkhanov and E. P. Zhydkov and I. E. Zhydkova", title = "The Conditions of Bounding of the Oscillation Amplitudes of Charge Particle within the Resonance Vicinity Investigations", institution = "J.I.N.R., Dubna", year = "1987", number = "P11-87-452", } @Article{Antweiler:89, author = "Werner Antweiler and Andreas Strotmann and Volker Winkelmann", title = "A {\TeX-{REDUCE}-Interface}", journal = "SIGSAM Bulletin", year = "1989", volume = "23", month = feb, pages = "26--33", } @Article{Appelquist:70, author = "T. W. Appelquist and S. J. Brodsky", title = "The Order $\alpha^{2}$ Electrodynamic Corrections to the {Lamb} Shift", journal = "Phys. Rev. Letters", year = "1970", volume = "24", pages = "562--565", } @TechReport{Arbuzov:86, author = "B. A. Arbuzov and E. E. Boos and A. I. Davydychev", title = "Infrared Asymptotics of Gluonic {Green} Functions in Covariant Gauge", institution = "IHEP", year = "1986", type = "Preprint", number = "86-123", } @Article{Aso:81, author = "T. Aso and T. Nonoyama and S. Kato", title = "Numerical Simulation of Semidiurnal Atmospheric Tides", journal = "J. Geophysical R.", year = "1981", volume = "86", number = "11", pages = "388--400", } %"Numerical modeling of the solar and lunar semidiurnal atmospheric %tides has been performed by invoking a comprehensive approach that %includes both algebraic manipluation and numerical solution of the %primitive equation system." Used REDUCE to overcome difficulties of %complication and error. @Article{Atherton:73, author = "R. W. Atherton and G. M. Homsey", title = "Use of Symbolic Computation to Generate Evolution Equations and Asymptotic Solutions to Elliptic Equations", journal = "Journ. Comp. Phys.", year = "1973", volume = "1", pages = "45--59", } @Article{Aurenche:84, author = "P. Aurenche and A. Douir and R. Baier and M. Fontannaz and D. Schiff", title = "Photoproduction of Hadrons at Large Transverse Momentum in Second Order {QCD}", journal = "Phys. Lett.", year = "1984", volume = "135B", pages = "164--168", } % Uses REDUCE and SCHOONSCHIP in the extension of calculations to a %higher order to keep pace with experimental results. @Article{Aurenche:84a, author = "P. Aurenche and A. Douir and R. Baier and M. Fontannaz and D. Schiff", title = "Prompt Photon Production at Large $p_{\tau}$ in {GCD} Beyond the Leading Order", journal = "Phys. Lett.", year = "1984", volume = "140B", pages = "87--92", } %Uses REDUCE and SCHOONSCHIP. @Article{Autin:89, author = "B. Autin and J. Bengtsson", title = "Symbolic Evaluation of Integrals Occurring in Accelerator Orbit Theory", journal = "J. Symbolic Computation", year = "1989", volume = "7", number = "2", pages = "183--187", month = feb, } @Article{Baekler:84, author = "P. Baekler and F. W. Hehl", title = "A Charged {Taub-NUT} Metric with Torsion: {A} New Axially Symmetric Solution of the {Poincar\'{e}} Gauge Field Theory", journal = "Phys. Lett.", year = "1984", volume = "100A", pages = "277--316", } @TechReport{Baekler:84a, author = "Peter Baekler and Friedrich W. Hehl", title = "On the Dynamics of the Torsion of Spacetime: Exact Solutions in a Gauge Theoretical Model of Gravity", institution = "Department of Physics, University of California, Los Angeles", year = "1984", number = "UCLA/84/TEP/19", page = "18", month = dec, } @InProceedings{Baekler:86, author = "P. Baekler and F. W. Hehl and E. W. Mielke", title = "Nonmetricity and Torsion: Facts and Fancies in Gauge Approaches to Gravity", editor = "R. Ruffini", booktitle = "Proc. 4th Marcel Grossmann Meeting on General Relativity, ed.", publisher = "North-Holland, Amsterdam", year = "1986", pages = "277--316", } @Article{Baekler:87, author = "P. Baekler and R. Hecht and F. W. Hehl and T. Shirafuji", title = "Mass and Spin of Exact Solutions of the {Poincar\'{e}} Gauge Theory", journal = "Prog. Theor. Phys.", year = "1987", volume = "78", pages = "16--21", } @Article{Baekler:87a, author = "P. Baekler and M. Guerses", title = "Exact Solutions of the {Poincar\'{e}} Gauge Theory from Its Linearized Field Equations", journal = "Lett. Math. Phys.", year = "1987", volume = "14", pages = "185--191", } @Article{Baekler:87b, author = "P. Baekler and E. W. Mielke and F. W. Hehl", title = "Kinky Torsion in a {Poincar\'{e}} Gauge Model of Gravity Coupled to a Massless Scalar Field", journal = "Nuclear Phys.", year = "1987", volume = "B288", pages = "800--812", } @Article{Baekler:88, author = "P. Baekler and M. Seitz and V. Winkelmann", title = "Cyclindrically Symmetric Solutions of Self-Consistently Coupled {Dirac} Fields in Gauge Theories of Gravity", journal = "Class. Quantum Grav.", year = "1988", volume = "5", pages = "479--490", } @Article{Baekler:88a, author = "P. Baekler and M. Guerses and F. W. Hehl and J. D. McCrea", title = "The Exterior Gravitational Field of a Charged Spinning Source in the {Poincar\'{e}} Gauge Theory: {A} {Kerr-Newman} Metric with Dynamic Torsion", journal = "Phys. Lett.", year = "1988", volume = "A128", pages = "245--250", } @Article{Baekler:88b, author = "P. Baekler and M. Guerses and F. W. Hehl", title = "A New Method to Solve the Field Equations of {Poincar\'{e}} Gauge Theories", journal = "Class. Quantum Grav.", year = "1988", } @TechReport{Bajla:78, author = "I. Bajla and G. A. Ososkov and A. C. Hearn", title = "The Orthogonalization Program of Polynomials in Two Variables in {REDUCE}-2 Language", institution = "J.I.N.R., Dubna", year = "1978", type = "Report", number = "P10-11944", } %The analytical algorithm for constructing orthogonal %polynomials in two variables, based on the Gram-Schmidt %orthogonalization method, is proposed. @InProceedings{Balian:78, author = "R. Balian and G. Parisi and A. Voros", title = "Quartic Oscillator", year = "1978", month = may, booktitle = "Proc. of the Colloq. on Mathematical Problems in {Feynman} Path Integrals, Marseille", } %On the example of the semi-classical expansion for the levels %of the quartic oscillator -(d**2/dq**2)+q**4, we show how the %complex WKB method provides information about the %singularities of the Borel transform of the semi-classical %series. @Article{Baker:81, author = "G. A. Baker and L. P. Benofy and M. Fortes and M. de Llano and S. M. Peltier and A. Plastino", title = "Hard-Core Square-Well Fermion", journal = "Phys. Rev. A", year = "1982", volume = "26", pages = "3575--3588", } %The mixed use of FORTRAN and REDUCE, various derivative were calculated %algebraically, but the double series was evaluated numerically. @Article{Bark:78, author = "Fritz H. Bark and Herman Tinoco", title = "Stability of Plane {Poiseuille} Flow of a Dilute Suspension of Slender Fibres", journal = "J. Fluid Mech.", year = "1978", volume = "87", pages = "321--333", } %The linear hydrodynamic stability problem for plane Poiseuille %flow of a dilute suspension of rigid fibers is solved %numerically. The constitutive equation given by Batchelor %is used to model the rheological properties of the suspension. %The resulting eigenvalue problem is shown to be singular. @Article{Barthes-Biesel:73, author = "D. Barthes-Biesel and A. Acrivos", title = "On Computer Generated Analytic Solutions to the Equations of Fluid Mechanics, The Case of Creeping Flows", journal = "Journ. Comp. Phys.", year = "1973", volume = "3", pages = "403--411", } @Article{Barton:72, author = "David Barton and Anthony C. Hearn", title = "Comment on Problem \#2 - The {Y(2n)} Functions", journal = "SIGSAM Bulletin", year = "1972", volume = "15", } %A compact program for the solution of SIGSAM Problem \#2 %is presented. @Article{Bateman:86, author = "G. Bateman and R. G. Storer", title = "Direct Determination of Axisymmetric Magnetohydrodynamic Equilibrium in {Hamada} Coordinates", journal = "Journ. Comp. Phys.", year = "1986", volume = "64", pages = "161--176", } %Plasma. "REDUCE was used to analyse the general set of equations %for large numbers of Fourier harmonics ...." @TechReport{Bennett, author = "J. P. Bennett and J. H. Davenport and H. M. Sauro", title = "Solution of Some Equations in Biochemistry", institution = "School of Mathematical Sciences, University of Bath, England", number = "88-12", } @Article{Berends:81, author = "A. Berends and R. Kleiss and P. de Causmaecher and T. T. Wu", title = "Single Bremsstrahlung Process in Gauge Theories", journal = "Phys. Lett.", year = "1981", volume = "103B", pages = "124--128", } %Used REDUCE to calculate 25 {Feynman} diagrams to produce theoretical %results which could be checked against experiment. @TechReport{Berkovich:89, author = "L. M. Berkovich and V. P. Gerdt and Z. T. Kostova and M. L. Nechaevsky", title = "Second Order Reducible Linear Differential Equations", institution = "J.I.N.R., Dubna", year = "1989", type = "Preprint", number = "E5-89-141", } @Article{Berman:63, author = "S. M. Berman and Y. S. Tsai", title = "Intermediate Boson Pair Production as a Means for Determining its Magnetic Moment", journal = "Phys. Rev. Lett.", year = "1963", volume = "11", pages = "483--487", } @Article{Bessis:85, author = "N. Bessis and G. Bessis and D. Roux", title = "Closed-Form Expressions for the {Dirac-Coulomb} Radial $r^{t}$ Integrals", journal = "Phys. Rev. A", year = "1985", volume = "32", pages = "2044--2050", } %No direct algebraic manipluation, but the formula is stated to be %well suited to evaluation by REDUCE or MACSYMA, and this is an %advantage of their formula. @TechReport{Billoire:78, author = "A. Billoire and R. Lacaze and A. Morel and H. Navelet", title = "The {OZI} Rule Violating Radiative Decays of the Heavy Pseudoscalars", institution = "{CEN}-Saclay", year = "1978", type = "Report", number = "DpH-T 43/78", } %Submitted to Phys. Letters B. %In lowest order QCD the rates for radiative transitions violating the OZI %rule of heavy pseudoscalars are found to be extremely small. @Article{Biro:86, author = "T. S. Biro and J. Zimanyi and M. Zimanyi", title = "Hadrochemistry in Relativistic Mean Fields", journal = "Physics Letters", year = "1986", volume = "167B", number = "3", pages = "271--276", month = feb, } @Article{Biro:87, author = "T. S. Biro and K. Niita and A. L. de Paoli and W. Bauer and W. Cassing and U. Mosel", title = "Microscopic Theory of Photon Production in Proton-Nucleus and Nucleus-Nucleus Collisions", journal = "Nuclear Physics", year = "1987", volume = "475A", pages = "579--597", month = dec, } MONTH = "December"} @TechReport{Birrell:77, author = "N. D. Birrell", title = "The Application of Adiabatic Regularization to Calculations of Cosmological Interest", institution = "Dept. Math, King's College, London", year = "1977", } @Article{Biswas:75, author = "S. N. Biswas and S. R. Chaudhuri and K. S. Taank and J. A. Campbell", title = "Neutrino Production in Stellar Matter by Photons in a Renormalizable Scalar-Boson-Exchange Model of Weak Interactions", journal = "Phys. Rev. D", year = "1975", volume = "8", pages = "2523--2525", } @TechReport{Bittencourt:90, author = "Guilherme Bittencourt and Jacques Calmet", title = "Integrating Computer Algebra and Knowledge Representation", institution = "{Universit\"{a}t} Karlsruhe Institut {f\"{u}r} Algorithmen und Kognitive Systeme", year = "1990", type = "Preprint", } @Article{Boege:86, author = "W. Boege and R. Gebauer and H. Kredel", title = "Some Examples for Solving Systems of Algebraic Equations by Calculating {Groebner} Bases", journal = "J. Symbolic Computation", year = "1986", volume = "2", number = "1", pages = "83--98", month = mar, } @Article{Bogdanova:88, author = "N. Bogdanova and H. Hogreve", title = "A {REDUCE} Package for Exact {Coulomb} Interaction Matrix Elements", journal = "Comp. Phys. Commun.", year = "1988", volume = "48", number = "2", pages = "319--326", month = feb, } @Article{Bordoni:81, author = "Luciana Bordoni and Attilio Colagrossi", title = "An Application of {REDUCE} to Industrial Mechanics", journal = "{SIGSAM} Bulletin", year = "1981", volume = "15", number = "2", pages = "8--12", month = may, } @InProceedings{Bowyer:87, author = "A. Bowyer and J. H. Davenport and P. S. Milne and J. A. Padget and A. F. Wallis", title = "Applications of Computer Algebra in Solid Modelling", booktitle = "Proc. {EUROCAL} '87, Lecture Notes in Computer Science", year = "1987", volume = "378", pages = "244--245", publisher = "Springer-Verlag", } @TechReport{Boyd:78, author = "John P. Boyd", title = "The Effects of Latitudinal Shear on Equatorial Waves, Part {I}: Theory and Methods", institution = "Dept. of Atmos. and Oceanic Science, Univ. of Michigan", year = "1978", type = "Preprint", month = jan, } %To be published in Journal of The Atmospheric Sciences. %By using the method of multiple scales in height and a %variety of methods in latitude, analytic solutions for %equatorial waves in combined vertical and horizontal shear %are derived. @InProceedings{Brackx:87, author = "F. Brackx and H. Serras", title = "Boundary Value Problems for the {Laplacian} in {Euclidean} Space Solved by Symbolic Computation", booktitle = "Proc. {EUROCAL} '87, Lecture Notes in Computer Science", year = "1987", volume = "378", pages = "208--215", publisher = "Springer-Verlag", } @Article{Brackx:87a, author = "F. Brackx and D. Constales and R. Delanghe and H. Serras", title = "{Clifford} Algebra with {REDUCE}", journal = "Rend. Circ. Mat. Palermo, Ser. II", year = "1987", volume = "16", pages = "11--19", } @Article{Brackx:89, author = "F. Brackx and D. Constales and A. Ronveaux and H. Serras", title = "On the Harmonic and Monogenic Decomposition of Polynomials", journal = "J. Symbolic Computation", year = "1989", volume = "8", number = "3", pages = "297--304", month = sep, } @InProceedings{Bradford:86, author = "R. J. Bradford and A. C. Hearn and J. A. Padget and E. {Schr\"{u}fer}", title = "Enlarging the {REDUCE} Domain of Computation", booktitle = "Proc. of {SYMSAC} '86", year = "1986", pages = "100--106", } @InProceedings{Bradford:88, author = "R. J. Bradford and J. H. Davenport", title = "Effective Tests for Cyclotomic Polynomials", booktitle = "Proc. of {ISSAC} '88", publisher = "Springer-Verlag", year = "1988", volume = "358", pages = "244--251", } @Article{Broadhurst:85, author = "D. J. Broadhurst", title = "Evaluation of a Class of {Feynman} Diagrams for all Numbers of Loops and Dimensions", journal = "Phys. Lett. B", year = "1985", volume = "164", pages = "356--360", } %Uses REDUCE to calculate explicitely the l-loop member of a class of %massless, dimensionally regularized {Feynman} diagrams, in order to verify %an explicit formula. @Article{Brodsky:62, author = "S. J. Brodsky and A. C. Hearn and R. G. Parsons", title = "Determination of the Real Part of the {Compton} Amplitude at a Nucleon Resonance", journal = "Phys. Rev.", year = "1962", volume = "187", pages = "1899--1904", } @Article{Brodsky:67, author = "S. J. Brodsky and J. D. Sullivan", title = "{W}-Boson Contribution to the Anomalous Magnetic Moment of the Muon", journal = "Phys. Rev.", year = "1967", volume = "156", pages = "1644--1647", } @InProceedings{Brodsky:69, author = "S. J. Brodsky", title = "Status of Quantum Electrodynamics", year = "1969", booktitle = "Proc. International Symposium on Electron and Photon Interactions at High Energies, Liverpool, England", } @TechReport{Brodsky:70, author = "S. J. Brodsky", title = "Quantum Electrodynamic Theory: Its Relation to Precision Low Energy Experiments", institution = "SLAC", year = "1970", type = "Report", number = "SLAC-PUB-795", month = aug, } %Stanford Linear Accelerator Center Report. @InProceedings{Brodsky:71, author = "S. J. Brodsky", title = "Algebraic Computation Techniques in Quantum Electrodynamics", year = "1971", volume = "II", pages = "IV-1--IV-27", booktitle = "Proc. {2nd} Computing Methods in Theoretical Physics, Marseilles", } @TechReport{Brodsky:72, author = "S. J. Brodsky", title = "Atomic Physics and Quantum Electrodynamics in the Infinite Momentum Frame", institution = "SLAC", year = "1972", type = "Report", number = "SLAC-PUB-1118", month = aug, } %Presented at the Third International Conference on Atomic Physics. @Article{Brodsky:72a, author = "S. J. Brodsky and J. F. Gunion and R. L. Jaffe", title = "Test for Fractionally Charged Partons from Deep-Inelastic Bremsstrahlung in the Scaling Region", journal = "Phys. Rev. D", year = "1972", volume = "6", pages = "2487--2494", } @Article{Brodsky:72b, author = "S. J. Brodsky and R. Roskies", title = "Quantum Electrodynamics and Renormalization Theory in The Infinite Momentum Frame", journal = "Phys. Lett.", year = "1972", volume = "41B", pages = "517--520", } @Article{Brodsky:73, author = "S. J. Brodsky and R. Roskies and R. Suaya", title = "Quantum Electrodynamics and Renormalization Theory in the Infinite-Momentum Frame", journal = "Phys. Rev. D", year = "1973", volume = "8", pages = "4574--4594", } @Article{Broughan:82, author = "K. A. Broughan", title = "{Grad-Fokker-Planck} Plasma Equations. Part 1. {Collision} Moments", journal = "J. Plasma Phys.", year = "1982", volume = "27", pages = "437--452", } %REDUCE used in collaboration with hand calculation. REDUCE did the %substitutions, with hand integrations. "Thirteen moments are taken of the %collision term in Boltzmann-Fokker-Planck equation....plasma..." @Article{Brown:79, author = "W. S. Brown and A. C. Hearn", title = "Applications of Symbolic Algebraic Computation", journal = "Comp. Phys. Comm.", year = "1979", volume = "17", pages = "207--215", } %This paper is a survey of applications of systems for symbolic %algebraic computation. @Article{Bryan-Jones:87, author = "Jane Bryan-Jones", title = "A Tutorial in Computer Algebra for Statisticians", journal = "The Professional Statistician", year = "1987", volume = "6", number = "6", month = dec, pages = "TBD", } @TechReport{Calmet:72, author = "Jacques Calmet", title = "Further Evaluation of the Sixth Order Corrections to the Anomalous Magnetic Moment of the Electron", institution = "Department of Physics, University of Utah", year = "1972", } %We report on the contributions to the $\alpha^{3}$ %part of the anomalous magnetic moment of the electron from the %seven so-called cross and ladder diagrams. @Article{Calmet:72a, author = "Jacques Calmet", title = "A {REDUCE} Approach to the Calculation of {Feynman} Diagrams", journal = "Comp. Phys. Comm.", year = "1972", volume = "4", pages = "199--204", } %A brief survey of two existing REDUCE programs (by Campbell-Hearn %and by Calmet) dealing with algebraic computation of {Feynman} diagrams is %given. Work in progress on a more general approach to this problem %is discussed. @Article{Calmet:74, author = "Jacques Calmet", title = "Computer Recognition of Divergences in {Feynman} Graphs", journal = "SIGSAM Bulletin", year = "1974", volume = "8", number = "3", pages = "74--75", month = aug, } %A description of a program for the recognition of divergences %in {Feynman} graphs is given. @InCollection{Calmet:83, author = "J. Calmet and J. A. van Hulzen", title = "Computer Algebra Applications", editor = "B. Buchberger and G. E. Collins and R. Loos and R. Albrecht", booktitle = "Computer Algebra Symbolic and Algebraic Computation", edition = "2nd", publisher = "Springer-Verlag", year = "1983", } @Article{Campbell:67, author = "J. A. Campbell", title = "Algebraic Computation of Radiative Corrections for Electron-Positron Scattering", journal = "Nucl. Phys.", year = "1967", volume = "B1", pages = "283--300", } @Article{Campbell:68, author = "J. A. Campbell", title = "Astrophysical Consequences of the Existence of Charged Intermediate Vector Bosons", journal = "Aust. Journ. of Phys.", year = "1968", volume = "21", pages = "139--148", } @Article{Campbell:70, author = "J. A. Campbell and A. C. Hearn", title = "Symbolic Analysis of {Feynman} Diagrams by Computer", journal = "Journ. of Comp. Phys.", year = "1970", volume = "5", pages = "280--327", } @Article{Campbell:70a, author = "J. A. Campbell and R. B. Clark and D. Horn", title = "Low-{T} Theorems for Charged-Pion Photoproduction", journal = "Phys. Rev. D", year = "1970", volume = "2", pages = "217--224", } @Article{Campbell:74, author = "J. A. Campbell", title = "Symbolic Computing and Its Relationship to Particle Physics", journal = "Acta Physica Austriaca", year = "1974", volume = "XIII", pages = "595--647", } @Article{Campbell:87, author = "J. A. Campbell and P. O. {Fr\"{o}man} and E. Walles", title = "Explicit series formulae for the evaluation of integrals by the method of steepest descents", journal = "Studies in Applied Mathematics", year = "1987", volume = "77", pages = "151--172", } @TechReport{Caprasse:84, author = "H. Caprasse", title = "Description et Utilisation d'Une Extension du Programme {REDUCE}", institution = "Physique Th\'{e}orique et Math\'{e}matique, Universit\'{e} de Li\`{e}ge", year = "1984", month = oct, } @Article{Caprasse:85, author = "H. Caprasse and M. Hans", title = "A New Use of Operators in the Algebraic Mode of {REDUCE}", journal = "{SIGSAM} Bulletin", year = "1985", volume = "19", number = "3", pages = "46--52", month = aug, } @Article{Caprasse:86, author = "H. Caprasse", title = "Description of an Extension of the Matrix Package of {REDUCE}", journal = "{SIGSAM} Bulletin", year = "1986", volume = "20", number = "4", pages = "7--10", month = dec, } @Article{Caprasse:86a, author = "H. Caprasse", title = "A Complete Simplification Package for the Absolute Value Function in {REDUCE}", journal = "{SIGSAM} Bulletin", year = "1986", volume = "20", number = "1 and 2", pages = "18--21", month = feb # " and " # may, } %Implementation for REDUCE 3.2 of the function "ABS". @InProceedings{Caprasse:88, author = "H. Caprasse and J. Demaret and E. Schruefer", title = "Can {EXCALC} be Used to Investigate {High-dimensional} Cosmological Models with {Non-Linear Lagrangians}", booktitle = "Proc. of {ISSAC} '88", publisher = "Springer-Verlag", year = "1988", pages = "116--124", } @Article{Caprasse:90, author = "H. Caprasse", title = "Renormalization Group, Function Iterations and Computer Algebra", journal = "J. Symbolic Computation", year = "1990", volume = "9", number = "1", pages = "61--72", month = jan, } %Based on a renormalization group equation met in Quantum Field Theory, %Continuous Iterations of a large class of functions are computed using %REDUCE. @Article{Caprasse:89a, author = "H. Caprasse", title = "Les Th\'{e}ories des {Champs} dans le monde de {REDUCE} (in French)", journal = "{CALSYF} (to appear)", year = "1989", } @Article{Carlson:80, author = "P. Carlson", title = "Coordinate Free Relativity", journal = "J. Math. Phys.", year = "1980", volume = "21", pages = "1149--1154", } %REDUCE programs for tetrad formulation of GR. @PhdThesis{Carroll:73, author = "R. Carroll", title = "The Anomalous Magnetic Moment of the Electron in the Mass Operator Formalism", school = "University of Michigan", year = "1973", } @Article{Carroll:75, author = "R. Carroll", title = "Mass-Operator Calculation of the Electron g-Factor", journal = "Phys. Rev. D", year = "1975", volume = "8", pages = "2344--2354", } @TechReport{Cejchan, author = "A. Cejchan and J. Nadrchal", title = "Application of {REDUCE}-2 and Analytic Integration Program in the Theoretical Solid State Physics", institution = "Institute of Physics, CSAV, Prague", } @InProceedings{Chaffy:88, author = "C. Chaffy-Camus", title = "An Application of {REDUCE} to the Approximation of {f(x,y)}", booktitle = "Proc. of {ISSAC} '88", publisher = "Springer-Verlag", year = "1988", volume = "358", pages = "73--84", } @Article{Chinnick:86, author = "K. Chinnick and C. Gibson and J. F. Griffiths and W. Kordylewski", title = "Isothermal Interpretations of Oscillatory Ignition During Hydrogen Oxidation in an Open System. {I}. {Analytical} Predictions and Experimental Measurements of Periodicity", journal = "Proc. Royal Soc. Lond.", year = "1986", volume = "A405", pages = "117--128", } %Used REDUCE to solve Jacobian, but answer too complicated to be of any use. @Article{Cline:90, author = "Terry Cline and Harold Abelson and Warren Harris", title = "Symbolic Computing in Engineering Design", journal = "AI EDAM", year = "1990", month = feb, } @TechReport{Cohen:76, author = "H. I. Cohen and O. Leringe and Y. Sundblad", title = "The Use of Algebraic Computing in General Relativity", institution = "The Royal Institute of Technology Department of Mechanics", year = "1976", number = "TRITA-MEK-76-02", } @TechReport{Cohen:76a, author = "I. Cohen and F. Bark", title = "Perturbation Calculations for the Spin Up Problem Using {REDUCE}", institution = "The Royal Institute of Technology, Department of Mechanics", year = "1976", number = "TRITA-MEK-76-03", } @TechReport{Cohen:77, author = "I. Cohen and S. Yu. Slavyanov", title = "Smooth Perturbations of the {Schr\"{o}dinger} Equation with a Linear Potential Related to the Charmonium Models", institution = "University of Stockholm Institute of Physics", year = "1977", type = "USIP Report", number = "77-17", } @Article{Cohen:79, author = "J. P. Fitch and H. I. Cohen", title = "Using {CAMAL} for Algebraic Calculations in General Relativity", journal = "General Relativity and Gravitation", volume = "11", year = "1979", pages = "411--418", } @Article{Cohen:84, author = "H. I. Cohen and I. B. Frick and J. E. {\AA}man", title = "Algebraic Computing in General Relativity", journal = "General Relativity and Gravitation, ed.", year = "1984", pages = "139--162", } %General relativity review. @InProceedings{Cohen:89, author = "Joel S. Cohen", title = "The Effective Use of Computer Algebra Systems", year = "1989", pages = "677--698", booktitle = "Transactions of the Sixth Army Conference on Applied Mathematics and Computing", } % Review of author's experience with four computer algebra systems. @Article{Connor:84, author = "J. N. L. Connor and P. R. Curtis and D. Farrelly", title = "The Uniform Asymptotic Swallowtail Approximation: Practical Methods for Oscillating Integrals with Four Coalescing Saddle Points", journal = "J. Phys. A", year = "1984", volume = "17", pages = "283--310", } %Used REDUCE and SCHOONSCHIP for some algebraic manipulations, and then %checked the results with MACSYMA; this is the most distrustful %reference we have found. @Article{Connor:84a, author = "J. N. L. Connor and P. R. Curtis and C. J. Edge and A. Lagan`{a}", title = "The Uniform Asymptotic Swallowtail Approximation: Application to the Collinear ${H}+{F}_{2}$", journal = "J. Chem. Phys.", year = "1984", volume = "80", number = "3", pages = "1362--1363", month = feb, } @Article{Conwell:84, author = "P. R. Conwell and P. W. Barber and C. K. Rushworth", title = "Resonant Spectra of Dielectric Sphere", journal = "J. Opt. Soc. Am. A", year = "1984", volume = "1", pages = "62--67", } %REDUCE used to confirm independently convergence and accuracy of %Numerical Bessel function routine, expanding series by REDUCE and %using bigfloats. Described as slow but worthwhile. @InProceedings{Cowan:79, author = "Richard M. Cowan and Martin L. Griss", title = "Hashing -- The Key to Rapid Pattern Matching", booktitle = "Proc. {EUROSAM} 1979, Lecture Notes in Computer Science", year = "1979", volume = "72", pages = "266--278", publisher = "Springer-Verlag", } @Article{Cung:75, author = "V. K. Cung", title = "Differential Cross Section of e+ + e- to e+ + mu- + nubar(mu) + nubar(e)", journal = "Phys. Lett.", year = "1975", volume = "55B", pages = "67--70", } @TechReport{Darbaidze:86, author = "Ya. Z. Darbaidze", title = "A Gluon Bremsstrahlung in Supersymmetry {QCD}", institution = "JINR", year = "1986", type = "Preprint", number = "P2-86-825", } @Article{Darbaidze:86a, author = "J. Z. Darbaidze and V. A. Matveev and Z. V. Merebashvili and L. A. Slepchenko", title = "Gluon Bremsstrahlung in Supersymmetric {QCD}", journal = "Phys. Lett.", year = "1986", volume = "B177", page = "188", } @TechReport{Darbaidze:88, author = "Ya. Z. Darbaidze and Z. V. Merebashvili and V. A. Rostovtsev", title = "Some Computer Realizations of the {REDUCE-3} Calculations for Exclusive Processes", institution = "JINR", year = "1988", type = "Preprint", number = "P2-88-769", } @TechReport{Darbaidze:89, author = "Ya. Z. Darbaidze and V. A. Rostovtsev", title = "Analysis of the Differential Equations for the Exclusive Processes and Explanation for the {"Mystery"} of the {Gamma-Distribution}", institution = "JINR", year = "1989", type = "Preprint", number = "E2-89-286", } @InProceedings{Dautcourt:79, author = "G. Dautcourt", title = "Application of {REDUCE} to Algebraic Computations in General Relativity and Astrophysics", year = "1979", month = sep, booktitle = "Proc. of the Workshop in Symbolic Computation, Dubna, {U.S.S.R.}", } %Reports the use of the system REDUCE 2 for general relativistic %calculations. @TechReport{Dautcourt:80, author = "G. Dautcourt and K. P. Jann", title = "A Program Package in {REDUCE} 2 for Algebraic Computations in General Relativity", year = "1980", institution = "Zentralinstitut fuer Astrophysik der Akademie der Wissenschaften", } @Article{Dautcourt:81, author = "G. Dautcourt and K. P. Jann and E. Riemer and M. Riemer", title = "User's Guide to {REDUCE} Subroutines For Algebraic Computations in General Relativity", journal = "Astron. Nachr.", year = "1981", volume = "302", pages = "1--13", } @Article{Dautcourt:83, author = "G. Dautcourt", title = "The Cosmological Problem as an Initial Value Problem on the Observer's Past Light Cone: Geometry", journal = "J. Phys. A", year = "1983", volume = "16", pages = "3507--3528", } %Checked calculations with REDUCE, mainly Riemann tensor in null %coordinates. @Article{Davenport:81, author = "James Harold Davenport", title = "On the Integration of Algebraic Functions", journal = "Lecture Notes in Computer Science", year = "1981", volume = "102", pages = "1--197", } @Article{Davenport:82, author = "James H. Davenport", title = "Fast {REDUCE:} The {trade-off} between efficiency and generality", journal = "{SIGSAM} Bulletin", year = "1982", volume = "16", number = "1", pages = "8--11", month = feb, } @Article{Davenport:82a, author = "James H. Davenport", title = "What do we want from a {high-level} language?", journal = "{SIGSAM} Bulletin", year = "1982", volume = "16", number = "4", pages = "6--9", month = nov, } @InProceedings{Davenport:85, author = "James Davenport and Julian Padget", title = "{HEUGCD:} How Elementary Upperbounds Generate Cheaper Data", booktitle = "Proc. {EUROCAL} 1985, Lecture Notes in Computer Science", year = "1985", volume = "204", pages = "18--28", publisher = "Springer-Verlag", } @Article{Davenport:88, author = "J. H. Davenport", title = "The World of Computer Algebra", journal = "New Scientist", year = "1988", month = sep, volume = "1629", pages = "71--72", } @Book{Davenport:88a, author = "J. H. Davenport and Y. Siret and E. Tournier", title = "Computer Algebra, Systems and Algorithms for Algebraic Computation", publisher = "Academic Press", year = "1988", } @TechReport{Della-Dora:81, author = "J. Della Dora and E. Tournier", title = "Solutions Formelles {D'Equations} Differentielles au Voisinage de Points Singuliers Reguliers", institution = "Centre National de la Recherche Scientifique", year = "1981", type = "Report", number = "239", } @InProceedings{Della-Dora:84, author = "J. Della Dora and E. Tournier", title = "Homogeneous Linear Difference Equation {(Frobenius-Boole Method)}", booktitle = "Proc. {EUROSAM} 1984, Lecture Notes in Computer Science", year = "1984", volume = "174", pages = "2--12", publisher = "Springer-Verlag", } @TechReport{Della-Dora:85, author = "Jean Della-Dora and Claire Dicrescenzo and Dominique Duval", title = "About a New Method for Computing in Algebraic Number Fields", institution = "Universit\'{e} de Grenoble, Institut Fourier, France", year = "1985", month = nov, } @Article{Demaret:89, author = "J. Demaret and H. Caprasse and A. Moussiaux and Ph. Tombal and D. Papadopoulos", title = "{Ten-dimensional Lovelock-type Space-Times}", journal = "{To appear} Phys. Rev. D", year = "1989", month = jul, } @Article{DeMenna:87, author = "L. De Menna and G. Miano and G. Rubinacci", title = "Volterra's Series Solutions of Free Boundary Plasma Equilibria", journal = "Phys. Fluids", year = "1987", volume = "30", pages = "409--416", } %Magnetohydrodynamics. "We have carried out the computations up to %the fourth order, (the fourth order has been obtained by means of the %symbolic program REDUCE". @Article{Demichev:85, author = "A. P. Demichev and A. Ya. Rodionov", title = "A {REDUCE} Program for the Calculation of Geometrical Characteristics of Compactified Multidimensional {Riemannian} Space", journal = "Comp. Phys. Comm.", year = "1985", volume = "38", pages = "441--448", } %Covariant theories in N dimensional ($N \geq 4$) space-time. %REDUCE programs to calculate Ricci, Einstein and Yang-Mills curvature %and energy-momentum tensor. @TechReport{Demichev:86, author = "A. P. Demichev and A. Ya. Rodionov", title = "Freund-{Rubin} Type Solutions for Different Compactifications of the Eleven-Dimensional Space", institution = "Institute for High Energy Physics", year = "1986", type = "Preprint", number = "86-85", } %The results of calculating geometrical characteristics of %seven-dimensional quotient spaces are represented. These %quantities are necessary for the construction of compactifying %solutions of the eleven-dimensional supergravity. @Article{deRop:88, author = "Y. de Rop and J. Demaret", title = "Using {EXCALC} to Study Nondiagonal Multidimensional Spatially Homogeneous Cosmologies", journal = "Gen. Rel. Grav.", year = "1988", volume = "20", pages = "1127--1139", } @TechReport{DeVos:89, author = "Alexis De Vos", title = "The use of {Reduce} in solar energy conversion theory", institution = "State University of Gent, {CAGe} Computer Algebra Group", year = "1989", type = "Reports of the {CAGe} Project", number = "4", month = aug, } @InProceedings{Dewar:89, author = "M. C. Dewar", title = "{IRENA --} An Integrated Symbolic and Numerical Computation Environment", booktitle = "Proc. of {ISSAC} '89", publisher = "{ACM} Press, New York", year = "1989", pages = "171--179", } @Article{Dhar:85, author = "D. Dhar and J-M. Maillard", title = "Susceptibility of the Checkerboard {Ising} Model", journal = "J. Phys. A", year = "1985", volume = "18", pages = "L383--L388", } %Used REDUCE for tedious algebra, and got a simple answer. Statistical %mechanics(?). "At the disorder variety, the n-point correlation %functions of the checkerboard Potts model has a simple causal %structure. An exact expression for the susceptibility in the Ising %case is obtained." @TechReport{Dicrescenzo:85, author = "Claire Dicrescenzo", title = "Algebraic Computation on Algebraic Numbers", institution = "Institut Fourier, Laboratoire de Math\'{e}matiques, France", year = "1985", month = dec, } %Examples are given of a new method, implemented on REDUCE, %for computing algebraically on algebraic numbers. @TechReport{Diver, author = "D. A. Diver and E. Q. Laing and C. C. Sellar", title = "Waves in a Cold Plasma with a Spatially Rotating Magnetic Field", institution = "Department of Physics and Astronomy, University of Glasgow, Plasma Physics Group", type = "Report", number = "GU TPA 88/12-1", } %"...The algebraic manipulation system REDUCE was used in constructing the %following tensor definitions which allows us to make fewer %approximations than other authors." @InProceedings{Diver:86, author = "D. A. Diver and E. W. Laing", title = "Proc. 8th {Europhysics} Conference on Computational Physics", year = "1986", booktitle = "Computing in Plasma Physics", } @InProceedings{Diver:88, author = "D. A. Diver and E. W. Laing", title = "Proc. {XV} {European} Conference on Controlled Fusion and Plasma Heating", year = "1988", } @TechReport{Diver:88a, author = "D. A. Diver and E. W. Laing", title = "Alfven Resonance Absorption in a Magnetofluid", year = "1988", type = "Internal Report", number = "GUTPA 88/04-01", month = jul, } %Presented at 15th UK Plasma Physics Conference, UMIST. @TechReport{Dorfi:85, author = "E. A. Dorfi and L. O'C. Drury", title = "Simple Adaptive Grids for {1D} Initial Value Problems", institution = "Max-Plack-Institut fuer Kernphysik, Heidelberg, West Germany", year = "1985", number = "MPI H-1985-V21", } @Article{Dorizzi:86, author = "B. Dorizzi and B. Grammaticos and J. Hietarinta and A. Ramani and F. Schwarz", title = "New integrable three dimensional quartic potentials", journal = "Phys. Lett.", year = "1986", volume = "116A", pages = "432--436", } %REDUCE is used to construct and verify constants of motion. @TechReport{dosSantos:85, author = "R. P. dos Santos and P. P. Srivastava", title = "Two-loop Effective Potential for Wess-Zumino Model using Superfields", institution = "International Centre for Theoretical Physics", year = "1985", number = "IC/85/205", month = oct, } %"For the case of several interacting chiral superfields the propagators %for the unconstrained superfield potentials in the 'shifted' theory, %where the supersymmetry is explicity broken, are derived in a compact %form. They are used to compute one-loop effective potential in the %general case, while a superfield calculation of renormalized effective %potential to two loops for the Wess-Zumino model is performed." @Article{dosSantos:87, author = "Renato P. dos Santos", title = "Using {REDUCE} in Supersymmetry", journal = "J. Symb. Comp.", year = "1989", volume = "7", pages = "523--525", } @PhdThesis{dosSantos:87a, author = "R. P. dos Santos", title = "{O} {M}\'{e}todo de Supercampos para o {C}\'{a}lculo de Potencial Efetivo em Modelos com Supercampos Quirais: Os Modelos de Wess e Zumino e de {O}'Raifeartaigh", school = "Centro Brasileiro de Pesquisas F\'{i}sicas", year = "1987", } %(In Portuguese) Using the method of Superfields, the effective %potential for supersymmetric models of Wess-Zumino and of %O'Raifeartaigh is evaluated up to two-loop order. The spontaneous %supersymmetry breaking is discussed. REDUCE plays very important %role in evaluation of the Feynman superdiagrams and in %renormalization. @TechReport{dosSantos:88a, author = "Renato P. dos Santos", title = "Introdu\c{c}\~{a}o ao Sistema {REDUCE} de {C}\'{a}lculo Alg\'{e}brico", institution = "CBPF, Rio de Janeiro, Brazil", year = "1988", number = "CBPF-NT-001/88", } %(In Portuguese) Lecture notes of a course on REDUCE. @Article{Dubowsky:75, author = "S. Dubowsky and J. L. Grant", title = "Application of Symbolic Manipulation to Time Domain Analysis of Nonlinear Dynamic Systems", journal = "Journ. of Dynamic Systems, Measurement, and Control", year = "1975", number = "75-Aut-J", } @Article{Dudley:89, author = "M. L. Dudley and R. W. James", title = "{Computer-aided} Derivation of Spherical Harmonic Spectral Equations in Astrogeophyics", journal = "J. Symbolic Computation", year = "1989", volume = "8", number = "4", pages = "423--427", month = oct, } @Article{Dufner:69, author = "A. M. Dufner and Y. S. Tsai", title = "Phenomenological Analysis of the $\gamma${NN}* Form Factors", journal = "Phys. Rev.", year = "1969", volume = "168", pages = "1801--1809", } @InProceedings{Dulyan:87, author = "L. S. Dulyan", title = "The Calculation of {QCD} Triangular {Feynman} Graphs in the External Gluonic Field Using {REDUCE}-2 System", booktitle = "Proc. {EUROCAL} '87, Lecture Notes in Computer Science", year = "1987", volume = "378", pages = "172--173", publisher = "Springer-Verlag", } @Article{Duncan:86, author = "Anthony Duncan and Ralph Roskies", title = "Representations of Unusual Mathematical Structures in Scientific Applications of Symbolic Computation", journal = "J. Symbolic Computation", year = "1986", volume = "2", number = "2", pages = "201--206", month = jun, } %We present examples of techniques we have used to apply REDUCE to problems %in particle physics which have mathematical structures unknown to REDUCE. @PhdThesis{Duval:87, author = "Dominique Duval", title = "Diverses questions relatives au Calcul Formel Avec des Nombres Alg\'{e}briques", school = "L'Universit\'{e} Scientifique, Technologique et M\'{e}dicale de Grenoble", year = "1987", } @Article{Earles:70, author = "D. Earles", title = "A Measurement of the Electron-Production of Muon Pairs", journal = "Phys. Rev. Lett.", year = "1970", volume = "25", pages = "129--133", } @Article{Eastwood:87, author = "James W. Eastwood", title = "Orthovec: {A} {REDUCE} Program for {3-D} Vector Analysis in Orthogonal Curvilinear Coordinates", journal = "Comp. Phys. Commun.", year = "1987", volume = "47", number = "1", pages = "139--147", month = oct, } @TechReport{Edelen:81, author = "Dominic G. B. Edelen", title = "Programs for Calculation of Isovector Fields in the {REDUCE}-2 Environment", institution = "Center for the Application of Mathematics, Lehigh University", year = "1981", number = "TBD", month = aug, } @Article{Edelen:82, author = "D. G. B. Edelen", title = "Isovector Fields for Problems in the Mechanics of Solids and Fluids", journal = "Int. Journ. Eng. Sci.", year = "1982", volume = "20", pages = "803--815", } %Prolongation methods as a REDUCE package for this, available from %Center for Applications of Mathematics, Lehigh Univ., Bethlehem, PA %18015. Applications to mechanics of solids and fluids. @Book{Edneral:89, author = "Viktor F. Edneral and Aleksandr P. Kryukov and Anatolii Ia. Rodionov", title = "The language of the analytic computer program {REDUCE}", publisher = "Moscow, {Izd-vo}, Moskovskogo {un-ta}", year = "1989", } %This monograph -- first in The Soviet Union with a systematic treatment %of the analytical computer (program) REDUCE. @Article{Eisenberger:90, author = "Moshe Eisenberger", title = "Application of Symbolic Algebra to the Analysis of Plates on Variable Elastic Foundation", journal = "J. Symbolic Computation", year = "1990", volume = "9", number = "2", pages = "207--213", month = feb, } @TechReport{Eissfeller:86, author = "Bernd {Ei{\ss}feller} and {G\"{u}nter} W. Hein", title = "A Contribution to {3D-Operational} Geodesy", institution = "{Universit\"{a}rer} Studiengang Vermessungswesen and {Universit\"{a}t} der Bundeswehr {M\"{u}nchen}", year = "1986", number = "Heft 17", month = dec, } @PhdThesis{Eitelbach:73, author = "D. L. Eitelbach", title = "Automatic Analysis of Problems in Elementary Mechanics", school = "University of Illinois", year = "1973", } @Article{Eleuterio:82, author = "S. M. Eleut\'{e}rio and R. V. Mendes", title = "Note on Equivalence and Singularities: An Application of Computer Algebra", journal = "Journ. Comp. Phys.", year = "1982", volume = "48", pages = "150--156", } %GR equivalence, commenting on \AAman & Karlhede. @Article{Eliseev:85, author = "V. P. Eliseev and R. N. Fedorova and V. V. Kornyak", title = "A {REDUCE} Program for Determining Point and Contact {Lie} Symmetries of Differential Equations", journal = "Comp. Phys. Comm.", year = "1985", volume = "36", pages = "383--389", } %"A universal REDUCE program for obtaining the systems of %determining equations of the Lie algebra of point and contact %symmetries is proposed". @Article{Elishakoff:87, author = "Isaac Elishakoff and Joseph Hollkamp", title = "Computerized Symbolic Solution for a Nonconservative System in Which Instability Occurs by Flutter in One Range of a Parameter and by Divergence in Another", journal = "Comp. Methods in Applied Mechanics and Engineering", year = "1987", volume = "62", pages = "27--46", } %"...the problem is solved by the Galerkin method in conjunction with %computerized symbolic algebra". The system used is REDUCE. "It %carries out algebraic operations irrespective of their complexity". %Includes snatches of code and algebraic answers. Mainly %differentiation and substitution, plus a little integration. The %coefficients get rather large (18 digits or so). @Article{Elishakoff:87a, author = "Isaac Elishakoff and Brian Couch", title = "Application of Symbolic Algebra to the Instability of a Nonconservative System", journal = "J. Symbolic Computation", year = "1987", volume = "4", number = "3", pages = "391--396", month = dec, } @Article{Esteban:90, author = "E. P. Esteban and E. Ramos", title = "Algebraic computing and the {Newman-Penrose} formalism", journal = "Computers in Physics", year = "1990", pages = "285--290", month = may # "/" # jun, } @Article{Falck:89, author = "N. K. Falck and D. Graudenz and G. Kramer", title = "Cross section for {five-parton} production in $e^{+} e^{-}$ annihilation", journal = "Comp. Phys. Comm.", year = "1989", volume = "56", pages = "181--198", number = "2", month = dec, } @Article{Fazio:84, author = "P. M. Fazio and G. E. Copeland", title = "Cooper-Type Minima in Multipole Cross Sections of Atomic Hydrogen", journal = "Phys. Rev. Lett.", year = "1984", volume = "53", number = "2", month = jul, } @InProceedings{Fedorova:87, author = "R. N. Fedorova and V. P. Gerdt and N. N. Govorun and V. P. Shirikov", title = "Computer Algebra in Physical Research of {Joint Institute} for {Nuclear Research}", booktitle = "Proc. {EUROCAL} '87, Lecture Notes in Computer Science", year = "1987", volume = "378", pages = "1--10", publisher = "Springer-Verlag", } @InProceedings{Fedorova:87a, author = "R. N. Fedorova and V. V. Kornyak", title = "Computer Algebra Application for Determining Local Symmetries of Differential Equations", booktitle = "Proc. {EUROCAL} '87, Lecture Notes in Computer Science", year = "1987", volume = "378", pages = "174--175", publisher = "Springer-Verlag", } @Article{Feldmar:86, author = "E. Feldmar and K. S. {K\"{o}lbig}", title = "{REDUCE} Procedures for the Manipulation of Generalized Power Series", journal = "Comp. Phys. Comm.", year = "1986", volume = "39", pages = "267--284", } @Article{Feuillebois:84, author = "F. Feuillebois", title = "Sedimentation in a Dispersion with Vertical Inhomogenieties", journal = "Journ. Fluid Mech.", year = "1984", volume = "139", pages = "145--171", } %Uses REDUCE and INT to evaluate some integrals in the expansion of %1/s, a small quantity. @Article{Fitch:73, author = "John Fitch", title = "Problems \#3 and \#4 in {REDUCE} and {MACSYMA}", journal = "SIGSAM Bulletin", year = "1973", pages = "10--11", } %The algebra systems REDUCE and MACSYMA are used to solve SIGSAM %Problem \#3, the Reversion of a Double Series, and SIGSAM Problem \#4, %the Lie Transform Solution of the Harmonic Oscillator. @InProceedings{Fitch:81, author = "J. P. Fitch", title = "User-based Integration Software", booktitle = "Proc. 1981 {ACM} Symposium on Symbolic and Algebraic Computation", year = "1981", pages = "245--248", } @InProceedings{Fitch:83, author = "J. P. Fitch", title = "Implementing {REDUCE} on a Microprocessor", booktitle = "Proc. {EUROCAL} 1983, Lecture Notes in Computer Science", year = "1983", volume = "162", pages = "128--136", publisher = "Springer-Verlag", } @Article{Fitch:85, author = "J. P. Fitch", title = "Solving Algebraic Problems with {REDUCE}", journal = "J. of Symbolic Computation", year = "1985", volume = "1", number = "2", pages = "211--227", month = jun, } @InProceedings{Fitch:85a, author = "J. P. Fitch", title = "Applying Computer Algebra", booktitle = "International Conference on Computer Algebra and its Application in Theory", year = "1985", pages = "262--275", } @InProceedings{Fitch:87, author = "J. P. Fitch", title = "Utilisation du Calcul Formel", booktitle = "Calcul Formel et Automatique", editor = "P. Chenin", publisher = "Editions du {CNRS}", year = "1987", pages = "119--136", } @InProceedings{Fitch:87a, author = "J. P. Fitch and R. G. Hall", title = "Symbolic Computation and the Finite Element Method", booktitle = "Proc. {EUROCAL} '87, Lecture Notes in Computer Science", year = "1987", volume = "378", pages = "95--96", publisher = "Springer-Verlag", } @InProceedings{Fitch:89, author = "J. P. Fitch", title = "Can {REDUCE} be run in parallel?", booktitle = "Proc. of {ISSAC} '89", publisher = "{ACM} Press, New York", year = "1989", pages = "155--162", } @Article{Fitch:89a, author = "J. Fitch", title = "Compiling for Parallelism", journal = "Computer Algebra and Parallelism", editor = "J. Della Dora and J. Fitch", year = "1989", pages = "19--31", publisher = "Academic Press, London", } @TechReport{Flatau:86, author = "Piotr J. Flatau and John P. Boyd and William R. Cotton", title = "Symbolic Algebra in Applied Mathematics and Geophysical Fluid Dynamics - {REDUCE} Examples", institution = "Dept. of Atmospheric and Oceanic Science, University of Michigan, and Dept. of Atmospheric Science, Colorado State University", year = "1986", } @TechReport{Flath:86, author = "Dan Flath", title = "Remarks on Tensor Operators", institution = "National University of Singapore, Department of Mathematics", type = "Research Report", year = "1986", number = "266", month = jul, } @Article{Fleischer:71, author = "J. Fleischer", title = "Partial Wave Analysis of Nucleon-Nucleon {Bethe}-{Salpeter} Equation on the Computer", journal = "Journ. of Comp. Phys.", year = "1971", volume = "12", pages = "112--123", } @Article{Fleischer:73, author = "J. Fleischer and J. L. Gammel and M. T. Menzel", title = "Matrix {Pad\'{e}} Approximants for the {1SO}- and {3PO}- Partial Waves in Nucleon-Nucleon Scattering", journal = "Phys. Rev. D", year = "1973", volume = "8", pages = "1545--1552", } @Article{Fleischer:75, author = "J. Fleischer and J. A. Tjon", title = "Bethe-{Salpeter} Equation for {J}=0 Nucleon-Nucleon Scattering with One-Boson Exchange", journal = "Nuclear Physics", year = "1975", volume = "B84", pages = "375--396", } @Article{Fogelholm:82, author = "Rabbe Fogelholm and Inge B. Frick", title = "Standard {LISP} for the {VAX:} {A} Provisional Implementation", journal = "{SIGSAM} Bulletin", year = "1982", volume = "16", number = "4", pages = "10--12", month = nov, } @Article{Foster:89, author = "Kenneth R. Foster and Haim H. Bau", title = "Symbolic Manipulation Programs for the Personal Computer", journal = "Science", year = "1989", volume = "243", pages = "679--243", month = feb, } %Reviews several algebra programs that run on small machines. Doesn't %rate the PC version of REDUCE very highly because of the small workspace. @Article{Fox:71, author = "J. A. Fox", title = "Recalculation of the Crossed Graph Contribution to the 4th Order {Lamb} Shift", journal = "Phys. Rev. D", year = "1971", volume = "3", pages = "3228--3230", } @Article{Fox:74, author = "John A. Fox and Anthony C. Hearn", title = "Analytic Computation of Some Integrals in Fourth Order Quantum Electrodynamics", journal = "Journ. Comp. Phys.", year = "1974", volume = "14", pages = "301--317", } %A program for the analytic evaluation of some parametric integrals %which occur in fourth order QED calculations is described. @Article{Franceschetti:85, author = "G. Franceschetti and I. Pinto", title = "Nonlinear Propagation and Scattering: Analytical Solution and Symbolic Code Implementation", journal = "J. Opt. Soc. Am. A", year = "1985", volume = "2", pages = "997--1006", } %Volterra series using REDUCE. Perturbation expansions. @InProceedings{Freire:88, author = "E. Freire and E. Gamero and E. Ponce and L. G. Franquelo", title = "An Algorithm for Symbolic Computation of Center Manifolds", booktitle = "Proc. of {ISSAC} '88", publisher = "Springer-Verlag", year = "1988", volume = "358", pages = "218--230", } @InProceedings{Freire:89, author = "E. Freire and E. Gamero and E. Ponce", title = "An Algorithm for Symbolic Computation of {Hopf} Bifurcation", booktitle = "Proc. Computers and Mathematics '89", editor = "E. Kaltofen and S. M. Watt", year = "1989", pages = "109--118", publisher = "Springer-Verlag, New York", } @TechReport{Frick:82, author = "I. G. Frick and R. Fogelholm", title = "An Implementation of {Standard} {Lisp} Built on Top of {Franz Lisp}", institution = "University of Stockholm, Institute of Physics", year = "1982", type = "Report", month = apr, } %A Standard LISP system has been built for the VAX-11 %large-address-space computer by embedding the required %function definitions in the available Franz Lisp system %for VAX/UNIX. @Article{Fujimoto:84, author = "Y. Fujimoto and T. Garavaglia", title = "Phase Diagrams in {Scalar QED}", journal = "Physics Letters", year = "1984", volume = "148B", number = "1,2,3", pages = "220--224", month = nov, } @Article{Fuzio:85, author = "P. M. Fuzio and G. E. Copeland", title = "Partial Radiative-Recombination Cross Sections for Excited States of Hydrogen", journal = "Phys. Rev. A", year = "1985", volume = "31", number = "1", pages = "187--195", } %"The squares of the dipole and quadrupole matrix elements for the %free-to-bond transitions of hydrogen uptp high bound states are %derived in closed analytic form using a method suitable for computer %algebra". bibclean-2.11.4.1.orig/testbib1.org0000644000175200017520000002776305450514771016143 0ustar debiandebian@Misc{value-test, comment = "This entry contains several value patterns designed to pass the value pattern checks in bibclean 2.05 or later.", comment = "The following values should all be accepted.", chapter = "13", month = "31 " # aug, number = "23 + 24", number = "23 / 24", number = "23 \& 24", number = "23+24", number = "23/24", number = "23\&24", number = "3+4", number = "TR\#89-24", number = "UMIACS-TR-89-3.1, CS-TR-2177.1", number = "{STAN-CS-88-1223}", pages = "1, 3, 5, 7", pages = "1--3", pages = "12, 13, 17", pages = "12--13", pages = "L301--L305", pages = "ix + 399", pages = "viii + 445, with 30 illustrations", pages = "viii + 445", price = "UK\pounds 12.95", price = "US\$12.95", price = "US\$13", volume = "23", volume = "23-1", volume = "23a", volume = "One", volume = "XXIII", volume = "xxiii", year = "1978 (1985)", year = "1987" # "\unskip--", year = "2001", comment = "The following values should raise warnings.", chapter = "23.", chapter = "Two", month = "janvier", pages = "1,3,5,7", pages = "1--3, 5, 7", pages = "10,560--10,574", pages = "12--13, 17, 18", pages = "12--13, 17--18", pages = "147--156, 157--168", pages = "445 + viii with 30 illustrations", pages = "445 + viii", price = "DM\$60.5", price = "DM\$60.537", price = "US\$12.9", price = "\$12.95", price = "\$13", price = "\pounds 13", volume = "1.", volume = "12(5)", volume = "1:", year = "(1985)", year = "1789", year = "23", year = "2525", year = "????", } @TestCharSet{Test-8-bit-set, charset = "\000", charset = "\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017", charset = "\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037", charset = "\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057", charset = "\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077", charset = "\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117", charset = "\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137", charset = "\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157", charset = "\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177", charset = "\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217", charset = "\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237", charset = "\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257", charset = "\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277", charset = "\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317", charset = "\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337", charset = "\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357", charset = "\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377", charset = "\004\b\t\n\v\f\r", charset = "\032", charset = " !{"}#$%&'()*+,-./", charset = "0123456789:;<=>?", charset = "@ABCDEFGHIJKLMNO", charset = "PQRSTUVWXYZ[\]^_", charset = "`abcdefghijklmno", charset = "pqrstuvwxyz{|}~", charset = "€‚ƒ„…†‡ˆ‰Š‹ŒŽ", charset = "‘’“”•–—˜™š›œžŸ", charset = " ¡¢£¤¥¦§¨©ª«¬­®¯", charset = "°±²³´µ¶·¸¹º»¼½¾¿", charset = "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ", charset = "ÐÑÒÓÔÕÖרÙÚÛÜÝÞß", charset = "àáâãäåæçèéêëìíîï", charset = "ðñòóôõö÷øùúûüýþÿ", } %%% This entry enumerates all 256 characters of an 8-bit character %%% set, except for these 10 characters that are required for other %%% purposes: %%% %%% NUL string delimiter in C %%% CTL-A BIBTEX-HIDDEN-DELIMITER (internal marker) %%% CTL-I..CTL-M,SPACE whitespace characters %%% LEFT-BRACE, RIGHT-BRACE BibTeX character protectors %%% %%% Each entry contains the octal representation of a character value %%% followed by =, except for the above %%% 10 exceptions, for which is replaced by a %%% . %%% %%% If bibclean is working properly, the remaining 246 characters %%% should be passed through untouched. With the default indentation, %%% the output of bibclean on this example should be exactly the same %%% as the input. @TestCharSet{Test-8-bit-set, charset = "\000 = ", charset = "\001 = ", charset = "\002 = ", charset = "\003 = ", charset = "\004 = ", charset = "\005 = ", charset = "\006 = ", charset = "\007 = ", charset = "\010 = ", charset = "\011 = ", charset = "\012 = ", charset = "\013 = ", charset = "\014 = ", charset = "\015 = ", charset = "\016 = ", charset = "\017 = ", charset = "\020 = ", charset = "\021 = ", charset = "\022 = ", charset = "\023 = ", charset = "\024 = ", charset = "\025 = ", charset = "\026 = ", charset = "\027 = ", charset = "\030 = ", charset = "\031 = ", charset = "\032 = ", charset = "\033 = ", charset = "\034 = ", charset = "\035 = ", charset = "\036 = ", charset = "\037 = ", charset = "\040 = ", charset = "\041 = !", charset = "\042 = {"}", charset = "\043 = #", charset = "\044 = $", charset = "\045 = %", charset = "\046 = &", charset = "\047 = '", charset = "\050 = (", charset = "\051 = )", charset = "\052 = *", charset = "\053 = +", charset = "\054 = ,", charset = "\055 = -", charset = "\056 = .", charset = "\057 = /", charset = "\060 = 0", charset = "\061 = 1", charset = "\062 = 2", charset = "\063 = 3", charset = "\064 = 4", charset = "\065 = 5", charset = "\066 = 6", charset = "\067 = 7", charset = "\070 = 8", charset = "\071 = 9", charset = "\072 = :", charset = "\073 = ;", charset = "\074 = <", charset = "\075 = =", charset = "\076 = >", charset = "\077 = ?", charset = "\100 = @", charset = "\101 = A", charset = "\102 = B", charset = "\103 = C", charset = "\104 = D", charset = "\105 = E", charset = "\106 = F", charset = "\107 = G", charset = "\110 = H", charset = "\111 = I", charset = "\112 = J", charset = "\113 = K", charset = "\114 = L", charset = "\115 = M", charset = "\116 = N", charset = "\117 = O", charset = "\120 = P", charset = "\121 = Q", charset = "\122 = R", charset = "\123 = S", charset = "\124 = T", charset = "\125 = U", charset = "\126 = V", charset = "\127 = W", charset = "\130 = X", charset = "\131 = Y", charset = "\132 = Z", charset = "\133 = [", charset = "\134 = {\}", charset = "\135 = ]", charset = "\136 = ^", charset = "\137 = _", charset = "\140 = `", charset = "\141 = a", charset = "\142 = b", charset = "\143 = c", charset = "\144 = d", charset = "\145 = e", charset = "\146 = f", charset = "\147 = g", charset = "\150 = h", charset = "\151 = i", charset = "\152 = j", charset = "\153 = k", charset = "\154 = l", charset = "\155 = m", charset = "\156 = n", charset = "\157 = o", charset = "\160 = p", charset = "\161 = q", charset = "\162 = r", charset = "\163 = s", charset = "\164 = t", charset = "\165 = u", charset = "\166 = v", charset = "\167 = w", charset = "\170 = x", charset = "\171 = y", charset = "\172 = z", charset = "\173 = ", charset = "\174 = |", charset = "\175 = ", charset = "\176 = ~", charset = "\177 = ", charset = "\200 = €", charset = "\201 = ", charset = "\202 = ‚", charset = "\203 = ƒ", charset = "\204 = „", charset = "\205 = …", charset = "\206 = †", charset = "\207 = ‡", charset = "\210 = ˆ", charset = "\211 = ‰", charset = "\212 = Š", charset = "\213 = ‹", charset = "\214 = Œ", charset = "\215 = ", charset = "\216 = Ž", charset = "\217 = ", charset = "\220 = ", charset = "\221 = ‘", charset = "\222 = ’", charset = "\223 = “", charset = "\224 = ”", charset = "\225 = •", charset = "\226 = –", charset = "\227 = —", charset = "\230 = ˜", charset = "\231 = ™", charset = "\232 = š", charset = "\233 = ›", charset = "\234 = œ", charset = "\235 = ", charset = "\236 = ž", charset = "\237 = Ÿ", charset = "\240 =  ", charset = "\241 = ¡", charset = "\242 = ¢", charset = "\243 = £", charset = "\244 = ¤", charset = "\245 = ¥", charset = "\246 = ¦", charset = "\247 = §", charset = "\250 = ¨", charset = "\251 = ©", charset = "\252 = ª", charset = "\253 = «", charset = "\254 = ¬", charset = "\255 = ­", charset = "\256 = ®", charset = "\257 = ¯", charset = "\260 = °", charset = "\261 = ±", charset = "\262 = ²", charset = "\263 = ³", charset = "\264 = ´", charset = "\265 = µ", charset = "\266 = ¶", charset = "\267 = ·", charset = "\270 = ¸", charset = "\271 = ¹", charset = "\272 = º", charset = "\273 = »", charset = "\274 = ¼", charset = "\275 = ½", charset = "\276 = ¾", charset = "\277 = ¿", charset = "\300 = À", charset = "\301 = Á", charset = "\302 = Â", charset = "\303 = Ã", charset = "\304 = Ä", charset = "\305 = Å", charset = "\306 = Æ", charset = "\307 = Ç", charset = "\310 = È", charset = "\311 = É", charset = "\312 = Ê", charset = "\313 = Ë", charset = "\314 = Ì", charset = "\315 = Í", charset = "\316 = Î", charset = "\317 = Ï", charset = "\320 = Ð", charset = "\321 = Ñ", charset = "\322 = Ò", charset = "\323 = Ó", charset = "\324 = Ô", charset = "\325 = Õ", charset = "\326 = Ö", charset = "\327 = ×", charset = "\330 = Ø", charset = "\331 = Ù", charset = "\332 = Ú", charset = "\333 = Û", charset = "\334 = Ü", charset = "\335 = Ý", charset = "\336 = Þ", charset = "\337 = ß", charset = "\340 = à", charset = "\341 = á", charset = "\342 = â", charset = "\343 = ã", charset = "\344 = ä", charset = "\345 = å", charset = "\346 = æ", charset = "\347 = ç", charset = "\350 = è", charset = "\351 = é", charset = "\352 = ê", charset = "\353 = ë", charset = "\354 = ì", charset = "\355 = í", charset = "\356 = î", charset = "\357 = ï", charset = "\360 = ð", charset = "\361 = ñ", charset = "\362 = ò", charset = "\363 = ó", charset = "\364 = ô", charset = "\365 = õ", charset = "\366 = ö", charset = "\367 = ÷", charset = "\370 = ø", charset = "\371 = ù", charset = "\372 = ú", charset = "\373 = û", charset = "\374 = ü", charset = "\375 = ý", charset = "\376 = þ", charset = "\377 = ÿ", } bibclean-2.11.4.1.orig/keybrd.c0000644000175200017520000004303506142465114015322 0ustar debiandebian#include #if (SCREEN_LINES > 0) #if defined(HAVE_SYS_IOCTL_H) #include #endif #include "xctype.h" #include "xstring.h" #include "xunistd.h" RCSID("$Id: keybrd.c,v 1.4 1996/05/03 20:18:08 beebe Exp beebe $") #include "ch.h" #include "keybrd.h" #include "yesorno.h" #define LAST_SCREEN_LINE (-2) /* used in opt_help() and do_more() */ #if defined(MAX) #undef MAX #endif #define MAX(a,b) (((a) > (b)) ? (a) : (b)) #ifdef MIN #undef MIN #endif /* MIN */ #define MIN(a,b) ((a) < (b) ? (a) : (b)) #undef MAX_CHAR #define MAX_CHAR 256 keyboard_code_t keymap[MAX_CHAR]; extern int screen_lines; /* kbopen() and out_lines() reset */ extern FILE *tfopen ARGS((const char *filename_, const char *mode_)); static void beep ARGS((FILE *fpout)); int do_more ARGS((FILE *fpout_, int line_, int pause_after_, const char *lines[])); static int do_search ARGS((FILE *fpout_, int code_, int line_number_, int pause_after_, const char *lines_[])); static void erase_characters ARGS((FILE *fpout_, int how_many_)); static void kbinitmap ARGS((void)); static void #if defined (HAVE_STDC) beep(FILE *fpout) #else beep(fpout) FILE *fpout; #endif { (void)fputc(CH_BELL,fpout); (void)fflush(fpout); } #if defined(HAVE_STDC) int do_more(FILE *fpout,int line_number, int pause_after, const char *lines[]) #else /* K&R style */ int do_more(fpout, line_number, pause_after, lines) FILE *fpout; int line_number; int pause_after; const char *lines[]; #endif { int code; #if OS_PCDOS #define MORE_HELP \ "More? f)orwd b)ackwd e)nd q)uit r)efresh t)op \\/)search \030 \031 PgUp \ PgDn Home End\n\r" #else /* NOT OS_PCDOS */ #define MORE_HELP \ "More? f)orward b)ackward d)own e)nd q)uit r)efresh t)op u)p \\/)search\n\r" #endif /* OS_PCDOS */ (void)fputs(MORE_HELP,fpout); (void)fflush(fpout); /* make screen up-to-date */ for (;;) /* loop until a valid input code is received */ { switch (code = kbcode()) { case KEYBOARD_PGUP: /* backward screen */ return (MAX(0,line_number + 1 - 2*pause_after)); case KEYBOARD_DOWN: /* go down 1 line (scroll up 1 line) */ return (line_number + 2 - pause_after); case KEYBOARD_END: /* end */ return (LAST_SCREEN_LINE); case KEYBOARD_PGDN: /* forward screen */ return (line_number + 1); case KEYBOARD_HELP: (void)fputs(MORE_HELP,fpout); break; case KEYBOARD_EOF: case KEYBOARD_QUIT: return (EOF); case KEYBOARD_AGAIN: /* refresh */ return (MAX(0,line_number + 1 - pause_after)); case KEYBOARD_HOME: /* top */ return (0); case KEYBOARD_UP: /* go up 1 line (scroll down 1 line) */ return (line_number + 0 - pause_after); case KEYBOARD_DOWN_PARAGRAPH: /* Move down so that paragraph following the paragraph of the current top-of-screen line is at top-of-screen */ line_number++; if (line_number >= (screen_lines - 2)) line_number -= (screen_lines - 2); while ((lines[line_number] != (char*)NULL) && (lines[line_number][0] != '\n')) line_number++; return ((lines[line_number] == (char*)NULL) ? LAST_SCREEN_LINE : line_number + 1); case KEYBOARD_UP_PARAGRAPH: /* Move up so that paragraph of current top-of-screen line has its first line at top of screen. */ line_number--; if (line_number >= (screen_lines - 2)) line_number -= (screen_lines - 2); while ((line_number >= 0) && (lines[line_number] != (char*)NULL) && (lines[line_number][0] != '\n')) line_number--; return (line_number + 1); case KEYBOARD_SEARCH_BACKWARD: case KEYBOARD_SEARCH_FORWARD: return (do_search(fpout,code,line_number,pause_after,lines)); case KEYBOARD_UNKNOWN: default: /* anything else produces */ beep(fpout); /* an error beep */ break; } /* end switch (c...) */ } /* end for (;;) */ } static int #if defined(HAVE_STDC) do_search(FILE *fpout, int code, int line_number, int pause_after, const char *lines[]) #else do_search(fpout, code, line_number, pause_after, lines) FILE *fpout; int code; int line_number; int pause_after; const char *lines[]; #endif { int c; int k; int last_line_number = line_number; static char search_string[80] = ""; /* preserved across calls */ (void)fputs((code == KEYBOARD_SEARCH_BACKWARD) ? "Search backward: " : "Search forward: ",fpout); (void)fflush(fpout); for (k = 0; ;) { c = kbget(); if ((c == CH_NUL) || (c == CH_ESCAPE) || (c == '\r') || (c == '\n')) break; /* here's the loop exit */ else if ((c == CH_BACKSPACE) || (c == CH_DELETE)) { erase_characters(fpout,1); if (k > 0) k--; search_string[k] = '\0'; } else if (c == CH_LINE_KILL) /* erase entire search string */ { erase_characters(fpout,k); k = 0; search_string[k] = '\0'; } else if (c == CH_REPRINT) /* reprint entire search string */ { int m; erase_characters(fpout,k); for (m = 0; m < k; ++m) (void)fputc((int)search_string[m],fpout); (void)fflush(fpout); } else if (c == CH_WORD_ERASE) /* erase last non-blank word */ { YESorNO saw_word; saw_word = NO; for (--k ; k >= 0; --k) { if (Isspace(search_string[k]) && (saw_word == YES)) { k++; /* so that we keep this space */ break; } if (!Isspace(search_string[k])) saw_word = YES; erase_characters(fpout,1); } if (k < 0) k = 0; search_string[k] = '\0'; (void)fflush(fpout); } else if (k < ((int)sizeof(search_string) - 1)) { search_string[k++] = (char)c; (void)fputc(c,fpout); /* echo input character */ (void)fflush(fpout); } else /* search string too long: beep at user */ beep(fpout); } if (k > 0) /* got new search string */ search_string[k] = '\0'; else /* re-use last search string */ { (void)fputs(search_string,fpout); (void)fputc('\r',fpout); (void)fputc('\n',fpout); (void)fflush(fpout); } (void)fputc('\r',fpout); for (k = (int)(strlen("Search backward: ") + strlen(search_string)); (k > 0); --k) (void)fputc(' ',fpout); /* erase the search line */ (void)fputc('\r',fpout); (void)fflush(fpout); #if defined(DEBUG) (void)sleep(1); /* DEBUG delay */ #endif if (code == KEYBOARD_SEARCH_BACKWARD) line_number = MAX(0,line_number - pause_after); else line_number++; while ((line_number >= 0) && (lines[line_number] != (const char*)NULL)) { if (stristr(lines[line_number],search_string) != (char*)NULL) break; else if (code == KEYBOARD_SEARCH_BACKWARD) line_number--; else line_number++; } if ((line_number < 0) || (lines[line_number] == (const char*)NULL)) { /* then search failed */ beep(fpout); line_number = MAX(0,last_line_number + 1 - pause_after); } return (line_number); } static void #if defined(HAVE_STDC) erase_characters(FILE *fpout, int how_many) #else erase_characters(fpout, how_many) FILE *fpout; int how_many; #endif { for ( ; how_many > 0; --how_many) { (void)fputc(CH_BACKSPACE,fpout); (void)fputc(' ',fpout); (void)fputc(CH_BACKSPACE,fpout); } (void)fflush(fpout); } #if OS_PCDOS #if defined(HAVE_CONIO_H) #include /* needed for getch() declaration */ #endif int get_screen_lines(VOID) { return (SCREEN_LINES); } void kbclose(VOID) { } keyboard_code_t kbcode(VOID) { int c; c = kbget(); /* get from keyboard without echo */ if ((c == 0) || (c == 0xe0)) /* then have IBM PC function key */ { c = kbget(); /* function key code */ switch (c) /* convert key code to character */ { case 71: /* HOME */ return (KEYBOARD_HOME); case 72: /* UP arrow */ return (KEYBOARD_UP); case 73: /* PGUP */ return (KEYBOARD_PGUP); case 79: /* END */ return (KEYBOARD_END); case 80: /* DOWN arrow */ return (KEYBOARD_DOWN); case 81: /* PGDN */ return (KEYBOARD_PGDN); default: return (KEYBOARD_UNKNOWN); } } else if (c == EOF) return (KEYBOARD_EOF); else return (keymap[(unsigned)c]); } int kbget(VOID) { return (getch()); } void kbopen(VOID) { kbinitmap(); } #endif /* OS_PCDOS */ #if OS_UNIX static void reset_terminal ARGS((void)); static void set_terminal ARGS((void)); static FILE *fptty = (FILE*)NULL; /* for kbxxx() functions */ static YESorNO tty_init = NO; /* set to YES if tty_save set */ void kbclose(VOID) { reset_terminal(); if (fptty != (FILE*)NULL) (void)fclose(fptty); } keyboard_code_t kbcode(VOID) { int c = kbget(); if (c == EOF) return (KEYBOARD_EOF); else if (c == CH_ESCAPE) { /* handle some X Window System keys */ c = kbget(); if (c == (int)'[') /* ']' for balance */ { c = kbget(); if (c == (int)'A') /* "\e[A" ("]" for balance) */ return (KEYBOARD_UP); else if (c == (int)'B') /* "\e[B" ("]" for balance) */ return (KEYBOARD_DOWN); else if (c == (int)'C') /* "\e[C" ("]" for balance) */ return (KEYBOARD_END); else if (c == (int)'D') /* "\e[D" ("]" for balance) */ return (KEYBOARD_HOME); else if ((c == (int)'5') && (kbget() == '~')) /* "\e[5~" ("]" for balance) */ return (KEYBOARD_PGUP); else if ((c == (int)'6') && (kbget() == '~')) /* "\e[6~" ("]" for balance) */ return (KEYBOARD_PGDN); } return (KEYBOARD_UNKNOWN); } else return (keymap[(unsigned)c]); } int kbget(VOID) { if (fptty != (FILE*)NULL) { #if 0 /* fflush() discards typeahead -- no good for search string input */ (void)fflush(fptty); #endif return (getc(fptty)); } else return (EOF); } void kbopen(VOID) { kbinitmap(); if ((fptty = tfopen("/dev/tty","r")) != (FILE*)NULL) { set_terminal(); screen_lines = get_screen_lines(); } } #if defined(HAVE_TERMIO_H) #include static struct termio tty_save; /* SVID2 and XPG2 interface */ static void reset_terminal(VOID) /* restore saved modes */ { if (tty_init == YES) (void)ioctl((int)(fileno(fptty)),(int)TCSETAF,(char*)&tty_save); } static void set_terminal(VOID) /* set to cbreak input mode */ { struct termio tty; /* SVID2, XPG2 interface */ if (ioctl((int)(fileno(fptty)),(int)TCGETA,(char*)&tty) != -1) { tty_save = tty; tty_init = YES; tty.c_iflag &= ~(INLCR | ICRNL | ISTRIP | IXON | BRKINT); #if defined(IUCLC) tty.c_iflag &= ~IUCLC; /* absent from POSIX */ #endif /* defined(IUCLC) */ tty.c_lflag &= ~(ECHO | ICANON); tty.c_cc[4] = 5; /* MIN */ tty.c_cc[5] = 2; /* TIME */ (void)ioctl((int)(fileno(fptty)),(int)TCSETAF,(char*)&tty); } } #endif /* HAVE_TERMIO_H */ #if defined(HAVE_TERMIOS_H) #include static struct termios tty_save; /* XPG3, POSIX.1, FIPS 151-1 interface */ static void reset_terminal(VOID) /* restore saved modes */ { if (tty_init == YES) (void)tcsetattr((int)(fileno(fptty)),TCSANOW,&tty_save); } static void set_terminal(VOID) /* set to cbreak input mode */ { struct termios tty; /* XPG3, POSIX.1, FIPS 151-1 interface */ if (tcgetattr((int)(fileno(fptty)),&tty) != -1) { tty_save = tty; tty_init = YES; tty.c_iflag &= ~(INLCR | ICRNL | ISTRIP | IXON | BRKINT); #if defined(IUCLC) tty.c_iflag &= ~IUCLC; /* absent from POSIX */ #endif /* defined(IUCLC) */ tty.c_lflag &= ~(ECHO | ICANON); tty.c_cc[VMIN] = 5; /* MIN */ tty.c_cc[VTIME] = 2; /* TIME */ (void)tcsetattr((int)(fileno(fptty)),TCSANOW,&tty); } } #endif /* defined(HAVE_TERMIOS_H) */ #if defined(HAVE_SGTTY_H) #include static struct sgttyb tty_save; /* Berkeley style interface */ static void reset_terminal(VOID) /* restored saved terminal modes */ { if (tty_init == YES) (void)ioctl((int)(fileno(fptty)),(int)TIOCSETP,(char*)&tty_save); } static void set_terminal(VOID) /* set terminal for cbreak input mode */ { struct sgttyb tty; /* Try to put file into cbreak mode for character-at-a-time input */ if (ioctl((int)(fileno(fptty)),(int)TIOCGETP,(char*)&tty) != -1) { tty_save = tty; tty_init = YES; tty.sg_flags &= ~(ECHO | LCASE); tty.sg_flags |= CBREAK; (void)ioctl((int)(fileno(fptty)),(int)TIOCSETP,(char*)&tty); } } #endif /* defined(HAVE_SGTTY_H) */ int get_screen_lines(VOID) /* this must come after terminal header includes! */ { #if defined(TIOCGWINSZ) struct winsize window_size; if (fptty != (FILE*)NULL) { (void)ioctl((int)(fileno(fptty)),(int)TIOCGWINSZ,&window_size); if (window_size.ws_row > 0) return ((int)window_size.ws_row); } #else /* defined(TIOCGWINSZ) */ /* some systems store screen lines in environment variables */ char *p; int n; if (((p = getenv("ROWS")) != (char*)NULL) || ((p = getenv("LINES")) != (char*)NULL)) { n = (int)atoi(p); if (n > 0) return (n); } #endif /* defined(TIOCGWINSZ) */ return (SCREEN_LINES); } #endif /* OS_UNIX */ #if OS_VAXVMS #if defined(HAVE_SSDEF_H) #include #endif #if defined(HAVE_DESCRIP_H) #include #endif #if defined(HAVE_IODEF_H) #include #endif #if defined(HAVE_TTDEF_H) #include #endif #if defined(HAVE_TT2DEF_H) #include #endif #if defined(__ALPHA) int sys$assign(void *desc_,int *channel_,int n1_,int n2_); int sys$qiow(int, int channel_, int flags_, int n1_, int n2_, int n3_, int *ret_char_, int n4_, int n5_, int n6_, int n7_, int n8_); int system(const char *s_); #else /* VAX VMS 6.1 has these header files */ #include /* for sys$assign(), sys$qiow() */ #endif extern int lib$screen_info ARGS((short *,short *,short *,short *,)); /* not defined in any system header */ /* file in VMS 6.x */ static int status; /* system service status */ static int tt_channel = -1; /* terminal channel for image QIO's */ static int iomask; /* QIO flag mask */ static $DESCRIPTOR(sys_in,"TT:"); /* terminal descriptor */ static struct { unsigned char class; unsigned char type; unsigned short buffer_size; unsigned long tt; unsigned long tt2; } mode_buf,mode_save; #define FAILED(status) (~(status) & 1) /* failure if LSB is 0 */ int get_screen_lines(VOID) { short flags; short dvtype; short ncols; short nrows = 0; #if defined(__ALPHA) || defined(__VMS_VERSION) /* I don't know what the OpenVMS replacement for lib$screen_info() is yet. */ /* It may be that scr$w_pagesize and scr$w_width in the struct scrdef1 */ /* in are the values we need for nrows and ncols. */ ncols = 80; nrows = 24; #else (void)lib$screen_info(&flags,&dvtype,&ncols,&nrows); #endif return ((int)((nrows > 0) ? nrows : SCREEN_LINES)); } void kbclose(VOID) { #if !defined(__ALPHA) (void)sys$qiow(0,tt_channel,IO$_SETMODE,0,0,0, &mode_save,12,0,0,0,0); #endif } keyboard_code_t kbcode(VOID) { int c = kbget(); return ((c == EOF) ? KEYBOARD_EOF : keymap[(unsigned)c]); } int kbget(VOID) { int c; #if defined(__ALPHA) return (getchar()); #else status = sys$qiow(0,tt_channel,iomask,0,0,0,&c,1,0,0,0,0); return ((int)(FAILED(status) ? EOF : BYTE_VAL(c))); #endif } void kbopen(VOID) { kbinitmap(); #if defined(__ALPHA) /* assume stdin is open for now */ #else status = sys$assign(&sys_in,&tt_channel,0,0); if (!FAILED(status)) { (void)sys$qiow(0,tt_channel,IO$_SENSEMODE,0,0,0,&mode_save,12,0,0,0,0); mode_buf = mode_save; mode_buf.tt &= ~TT$M_WRAP; (void)sys$qiow(0,tt_channel,IO$_SETMODE,0,0,0,&mode_buf,12,0,0,0,0); iomask = IO$_TTYREADALL | IO$M_NOECHO; } #endif } #endif /* OS_VAXVMS */ static void kbinitmap(VOID) { (void)Memset((void*)&keymap[0],(int)KEYBOARD_UNKNOWN,sizeof(keymap)); keymap[(unsigned)'b'] = KEYBOARD_PGUP; keymap[(unsigned)'B'] = KEYBOARD_PGUP; keymap[(unsigned)META('V')] = KEYBOARD_PGUP; /* Emacs scroll-down */ keymap[(unsigned)'d'] = KEYBOARD_DOWN; keymap[(unsigned)'D'] = KEYBOARD_DOWN; keymap[(unsigned)CTL('N')] = KEYBOARD_DOWN; /* Emacs next-line*/ keymap[(unsigned)'e'] = KEYBOARD_END; keymap[(unsigned)'E'] = KEYBOARD_END; keymap[(unsigned)META('>')] = KEYBOARD_END; /* Emacs end-of-buffer */ keymap[(unsigned)'>'] = KEYBOARD_END; keymap[(unsigned)'f'] = KEYBOARD_PGDN; keymap[(unsigned)'F'] = KEYBOARD_PGDN; keymap[(unsigned)' '] = KEYBOARD_PGDN; keymap[(unsigned)'\r'] = KEYBOARD_PGDN; keymap[(unsigned)'\n'] = KEYBOARD_PGDN; keymap[(unsigned)CTL('V')] = KEYBOARD_PGDN; /* Emacs scroll-up */ keymap[(unsigned)'h'] = KEYBOARD_HELP; keymap[(unsigned)'H'] = KEYBOARD_HELP; keymap[(unsigned)'?'] = KEYBOARD_HELP; keymap[(unsigned)CH_BACKSPACE] = KEYBOARD_HELP; /* Emacs help */ keymap[(unsigned)CH_ESCAPE] = KEYBOARD_QUIT; /* ESCape gets out */ keymap[(unsigned)'q'] = KEYBOARD_QUIT; keymap[(unsigned)'Q'] = KEYBOARD_QUIT; keymap[(unsigned)'.'] = KEYBOARD_AGAIN; keymap[(unsigned)'r'] = KEYBOARD_AGAIN; keymap[(unsigned)'R'] = KEYBOARD_AGAIN; keymap[(unsigned)CTL('L')] = KEYBOARD_AGAIN; /* Emacs recenter */ keymap[(unsigned)'t'] = KEYBOARD_HOME; keymap[(unsigned)'T'] = KEYBOARD_HOME; keymap[(unsigned)META('<')] = KEYBOARD_HOME; /* Emacs beginning-of-buffer */ keymap[(unsigned)'<'] = KEYBOARD_HOME; keymap[(unsigned)CTL('R')] = KEYBOARD_SEARCH_BACKWARD; /* Emacs */ keymap[(unsigned)'\\'] = KEYBOARD_SEARCH_BACKWARD; keymap[(unsigned)CTL('S')] = KEYBOARD_SEARCH_FORWARD; /* Emacs */ keymap[(unsigned)'/'] = KEYBOARD_SEARCH_FORWARD; keymap[(unsigned)'u'] = KEYBOARD_UP; keymap[(unsigned)'U'] = KEYBOARD_UP; keymap[(unsigned)CTL('P')] = KEYBOARD_UP; /* Emacs previous-line */ keymap[(unsigned)'['] = KEYBOARD_UP_PARAGRAPH; keymap[(unsigned)']'] = KEYBOARD_DOWN_PARAGRAPH; keymap[(unsigned)'{'] = KEYBOARD_UP_PARAGRAPH; keymap[(unsigned)'}'] = KEYBOARD_DOWN_PARAGRAPH; } #endif /* (SCREEN_LINES > 0) */ bibclean-2.11.4.1.orig/option.c0000644000175200017520000003526006721006661015354 0ustar debiandebian#include #include "xstdlib.h" #include "xstring.h" RCSID("$Id: option.c,v 1.7 1999/05/20 13:26:59 beebe Exp beebe $") #include "ch.h" #include "yesorno.h" #define BIBCLEAN_VERSION "bibclean Version 2.11.4 [09-May-1998]" typedef struct s_option_function_entry { const char *name; /* option name */ size_t min_match; /* minimum length string match */ void (*function)(VOID); /* function to call when option matched */ } OPTION_FUNCTION_ENTRY; extern YESorNO align_equals; /* NO: left-adjust equals */ extern YESorNO check_values; /* NO: suppress value checks */ extern YESorNO delete_empty_values; /* YES: delete empty values */ extern YESorNO fix_initials; /* reformat A.U. Thor? */ extern YESorNO fix_names; /* reformat Bach, P.D.Q? */ extern YESorNO fix_font_changes; /* brace {\em E. Coli}? */ extern YESorNO German_style; /* YES: " inside braced string value obeys german.sty style */ extern YESorNO keep_linebreaks; /* YES: keep linebreaks in values */ extern YESorNO keep_parbreaks; /* YES: keep parbreaks in values */ extern YESorNO keep_preamble_spaces; /* YES: keep spaces in @Preamble{} */ extern YESorNO keep_spaces; /* YES: keep spaces in values */ extern YESorNO keep_string_spaces; /* YES: keep spaces in @String{} */ extern long max_width; extern YESorNO parbreaks; /* NO: parbreaks forbidden */ /* in strings and entries */ extern YESorNO prettyprint; /* NO: do lexical analysis */ extern YESorNO print_patterns; /* YES: print value patterns */ extern char *program_name; /* set to argv[0] */ extern YESorNO read_initialization_files; /* -[no-]read-init-files sets */ extern YESorNO remove_OPT_prefixes; /* YES: remove OPT prefix */ extern int screen_lines; /* kbopen() and out_lines() reset */ extern YESorNO Scribe; /* Scribe format input */ extern YESorNO show_file_position; /* messages usually brief */ extern FILE *stdlog; /* usually stderr */ extern YESorNO trace_file_opening; /* -[no-]trace-file-opening sets */ extern YESorNO warnings; /* NO: suppress warnings */ static int current_index; /* argv[] index in do_args() */ static char *current_option; /* set by do_args() */ static char *next_option; /* set in do_args() */ void do_args ARGS((int argc_, char *argv_[])); void do_preargs ARGS((int argc_, char *argv_[])); int isoptionprefix ARGS((int c)); extern YESorNO apply_function ARGS((const char *option_, OPTION_FUNCTION_ENTRY table_[])); extern void check_inodes ARGS((void)); extern void do_initfile ARGS((const char *pathlist_,const char *name_)); #if (SCREEN_LINES > 0) extern int get_screen_lines ARGS((void)); #endif /* (SCREEN_LINES > 0) */ extern void out_lines ARGS((FILE *fpout_,const char *lines_[], YESorNO pausing_)); extern FILE *tfopen ARGS((const char *filename_, const char *mode_)); extern void warning ARGS((const char *msg_)); static void opt_align_equals ARGS((void)); static void opt_author ARGS((void)); static void opt_check_values ARGS((void)); static void opt_delete_empty_values ARGS((void)); static void opt_error_log ARGS((void)); static void opt_file_position ARGS((void)); static void opt_fix_font_changes ARGS((void)); static void opt_fix_initials ARGS((void)); static void opt_fix_names ARGS((void)); static void opt_help ARGS((void)); static void opt_init_file ARGS((void)); static void opt_German_style ARGS((void)); static void opt_keep_linebreaks ARGS((void)); static void opt_keep_parbreaks ARGS((void)); static void opt_keep_preamble_spaces ARGS((void)); static void opt_keep_spaces ARGS((void)); static void opt_keep_string_spaces ARGS((void)); static void opt_max_width ARGS((void)); static void opt_parbreaks ARGS((void)); static void opt_prettyprint ARGS((void)); static void opt_print_patterns ARGS((void)); static void opt_read_init_files ARGS((void)); static void opt_remove_OPT_prefixes ARGS((void)); static void opt_scribe ARGS((void)); static void opt_trace_file_opening ARGS((void)); static void opt_version ARGS((void)); static void opt_warnings ARGS((void)); static void usage ARGS((void)); static void version ARGS((void)); static YESorNO YESorNOarg ARGS((void)); #if defined(HAVE_STDC) void do_args(int argc, char *argv[]) #else /* K&R style */ void do_args(argc,argv) int argc; char *argv[]; #endif { int k; /* index into argv[] */ #define MSG_PREFIX "Unrecognized option switch: " #define MAX_OPTION_LENGTH 100 char msg[sizeof(MSG_PREFIX) + MAX_OPTION_LENGTH + 1]; /* for error messages */ int nfiles; /* number of files found in argv[] */ static OPTION_FUNCTION_ENTRY options[] = { {"?", 1, opt_help}, {"align-equals", 2, opt_align_equals}, {"author", 2, opt_author}, {"check-values", 1, opt_check_values}, {"delete-empty-values", 1, opt_delete_empty_values}, {"error-log", 1, opt_error_log}, {"file-position", 3, opt_file_position}, {"fix-font-changes", 5, opt_fix_font_changes}, {"fix-initials", 5, opt_fix_initials}, {"fix-names", 5, opt_fix_names}, {"German-style", 1, opt_German_style}, {"help", 1, opt_help}, {"init-file", 1, opt_init_file}, {"keep-linebreaks", 6, opt_keep_linebreaks}, {"keep-parbreaks", 7, opt_keep_parbreaks}, {"keep-preamble-spaces", 7, opt_keep_preamble_spaces}, {"keep-spaces", 7, opt_keep_spaces}, {"keep-string-spaces", 7, opt_keep_string_spaces}, {"max-width", 1, opt_max_width}, {"no-align-equals", 4, opt_align_equals}, {"no-check-values", 4, opt_check_values}, {"no-delete-empty-values", 4, opt_delete_empty_values}, {"no-file-position", 6, opt_file_position}, {"no-fix-font-changes", 8, opt_fix_font_changes}, {"no-fix-initials", 8, opt_fix_initials}, {"no-fix-names", 8, opt_fix_names}, {"no-German-style", 4, opt_German_style}, {"no-keep-linebreaks", 9, opt_keep_linebreaks}, {"no-keep-parbreaks", 9, opt_keep_parbreaks}, {"no-keep-spaces", 9, opt_keep_spaces}, {"no-parbreaks", 5, opt_parbreaks}, {"no-prettyprint", 6, opt_prettyprint}, {"no-print-patterns", 6, opt_print_patterns}, {"no-read-init-files", 6, opt_read_init_files}, {"no-remove-OPT-prefixes", 6, opt_remove_OPT_prefixes}, {"no-scribe", 4, opt_scribe}, {"no-trace-file-opening", 4, opt_trace_file_opening}, {"no-warnings", 4, opt_warnings}, {"parbreaks", 2, opt_parbreaks}, {"prettyprint", 3, opt_prettyprint}, {"print-patterns", 3, opt_print_patterns}, {"read-init-files", 3, opt_read_init_files}, {"remove-OPT-prefixes", 3, opt_remove_OPT_prefixes}, {"scribe", 1, opt_scribe}, {"trace-file-opening", 1, opt_trace_file_opening}, {"version", 1, opt_version}, {"warnings", 1, opt_warnings}, {(const char*)NULL, 0, (void (*)(VOID))NULL}, }; for (nfiles = 1, k = 1; k < argc; ++k) { if ( (argv[k][1] != '\0') && isoptionprefix(argv[k][0]) ) { /* then process command-line switch */ current_index = k; /* needed by opt_init_file() and */ next_option = argv[k+1]; /* opt_error_log() */ current_option = argv[k]; /* needed by YESorNOarg() */ if (isoptionprefix(current_option[1])) current_option++; /* allow GNU/POSIX --option */ if (apply_function(current_option+1,options) == NO) { (void)sprintf(msg, "%s%.*s", MSG_PREFIX, MAX_OPTION_LENGTH, current_option); warning(msg); usage(); exit(EXIT_FAILURE); } k = current_index; /* some opt_xxx() functions update it */ } else /* save file names */ argv[nfiles++] = argv[k]; /* shuffle file names down */ } argv[nfiles] = (char*)NULL; /* terminate new argument list */ } #if defined(HAVE_STDC) void do_preargs(int argc, char *argv[]) #else /* K&R style */ void do_preargs(argc,argv) int argc; char *argv[]; #endif { int k; static OPTION_FUNCTION_ENTRY options[] = { {"no-print-patterns", 5, opt_print_patterns}, {"no-read-init-files", 6, opt_read_init_files}, {"no-trace-file-opening", 4, opt_trace_file_opening}, {"print-patterns", 2, opt_print_patterns}, {"read-init-files", 3, opt_read_init_files}, {"trace-file-opening", 1, opt_trace_file_opening}, {(const char*)NULL, 0, (void (*)(VOID))NULL}, }; for (k = 1; k < argc; ++k) { /* Do argument scan for options that must be known BEFORE initializations are attempted. */ if ( (argv[k][1] != '\0') && isoptionprefix(argv[k][0]) ) { /* then process command-line switch */ current_index = k; current_option = argv[k]; next_option = argv[k+1]; (void)apply_function(current_option+1,options); } } } #if defined(HAVE_STDC) int isoptionprefix(int c) #else /* K&R style */ int isoptionprefix(c) int c; #endif { int result; result = 0; #if OS_PCDOS result = (((c) == '-') || ((c) == '/')); #endif /* OS_PCDOS */ #if OS_UNIX result = ((c) == '-'); #endif /* OS_UNIX */ #if OS_VAXVMS result = (((c) == '-') || ((c) == '/')); #endif /* OS_VAXVMS */ return (result); } static void opt_align_equals(VOID) { align_equals = YESorNOarg(); } static void opt_author(VOID) { static CONST char *author[] = { "Author:\n", "\tNelson H. F. Beebe\n", "\tCenter for Scientific Computing\n", "\tUniversity of Utah\n", "\tDepartment of Mathematics, 322 INSCC\n", "\t155 S 1400 E RM 233\n", "\tSalt Lake City, UT 84112-0090\n", "\tUSA\n", "\tTel: +1 801 581 5254\n", "\tFAX: +1 801 585 1640, +1 801 581 4148\n", "\tEmail: beebe@math.utah.edu, beebe@acm.org, beebe@ieee.org (Internet)\n", (const char*)NULL, }; out_lines(stdlog, author, NO); exit(EXIT_SUCCESS); } static void opt_check_values(VOID) { check_values = YESorNOarg(); } static void opt_delete_empty_values(VOID) { delete_empty_values = YESorNOarg(); } static void opt_error_log(VOID) { current_index++; if ((stdlog = tfopen(next_option,"w")) == (FILE*)NULL) { fprintf(stderr, "%s cannot open error log file [%s]", WARNING_PREFIX, next_option); fprintf(stderr, " -- using stderr instead\n"); perror("perror() says"); stdlog = stderr; } else check_inodes(); /* stdlog changed */ } static void opt_file_position(VOID) { show_file_position = YESorNOarg(); } static void opt_fix_font_changes(VOID) { fix_font_changes = YESorNOarg(); } static void opt_fix_initials(VOID) { fix_initials = YESorNOarg(); } static void opt_fix_names(VOID) { fix_names = YESorNOarg(); } static void opt_help(VOID) { static CONST char *help_lines[] = { "\nUsage: ", (const char*)NULL, " [ -author ] [ -error-log filename ] [ -help ] [ '-?' ]\n", "\t[ -init-file filename ] [ -max-width width ]\n", "\t[ -[no-]align-equals ] [ -[no-]check-values ]\n", "\t[ -[no-]delete-empty-values ] [ -[no-]file-position ]\n", "\t[ -[no-]fix-font-changes ] [ -[no-]fix-initials ]\n", "\t[ -[no-]fix-names ] [ -[no-]German-style ]\n", "\t[ -[no-]keep-linebreaks ] [ -[no-]keep-parbreaks ]\n", "\t[ -[no-]keep-preamble-spaces ] [ -[no-]keep-spaces ]\n", "\t[ -[no-]keep-string-spaces ] [ -[no-]parbreaks ]\n", "\t[ -[no-]prettyprint ] [ -[no-]print-patterns ]\n", "\t[ -[no-]read-init-files ] [ -[no-]remove-OPT-prefixes ]\n", "\t[ -[no-]scribe ] [ -[no-]trace-file-opening ]\n", "\t[ -[no-]warnings ] [ -version ]\n", "\t[ outfile\n", "\n", #include "bibclean.h" }; help_lines[1] = program_name; /* cannot have this in initializer */ out_lines(stdlog, help_lines, (screen_lines > 0) ? YES : NO); exit(EXIT_SUCCESS); } static void opt_init_file(VOID) { current_index++; do_initfile((const char*)NULL,next_option); } static void opt_German_style(VOID) { German_style = YESorNOarg(); } static void opt_keep_linebreaks(VOID) { keep_linebreaks = YESorNOarg(); } static void opt_keep_parbreaks(VOID) { keep_parbreaks = YESorNOarg(); } static void opt_keep_preamble_spaces(VOID) { keep_preamble_spaces = YESorNOarg(); } static void opt_keep_spaces(VOID) { keep_spaces = YESorNOarg(); } static void opt_keep_string_spaces(VOID) { keep_string_spaces = YESorNOarg(); } static void opt_max_width(VOID) { current_index++; max_width = strtol(next_option,(char**)NULL,0); if (max_width <= 0L) /* width <= 0 means unlimited width */ max_width = LONG_MAX; } static void opt_parbreaks(VOID) { parbreaks = YESorNOarg(); } static void opt_prettyprint(VOID) { prettyprint = YESorNOarg(); } static void opt_print_patterns(VOID) { print_patterns = YESorNOarg(); } static void opt_read_init_files(VOID) { read_initialization_files = YESorNOarg(); } static void opt_remove_OPT_prefixes(VOID) { remove_OPT_prefixes = YESorNOarg(); } static void opt_scribe(VOID) { Scribe = YESorNOarg(); } static void opt_trace_file_opening(VOID) { trace_file_opening = YESorNOarg(); } static void opt_version(VOID) { version(); exit(EXIT_SUCCESS); } static void opt_warnings(VOID) { warnings = YESorNOarg(); } static void usage(VOID) { static CONST char *usage_lines[] = { "\nUsage: ", (const char*)NULL, " [ -author ] [ -error-log filename ] [ -help ] [ '-?' ]\n", "\t[ -init-file filename ] [ -max-width width ]\n", "\t[ -[no-]align-equals ] [ -[no-]check-values ]\n", "\t[ -[no-]delete-empty-values ] [ -[no-]file-position ]\n", "\t[ -[no-]fix-font-changes ] [ -[no-]fix-initials ]\n", "\t[ -[no-]fix-names ] [ -[no-]German-style ]\n", "\t[ -[no-]keep-linebreaks ] [ -[no-]keep-parbreaks ]\n", "\t[ -[no-]keep-preamble-spaces ] [ -[no-]keep-spaces ]\n", "\t[ -[no-]keep-string-spaces ] [ -[no-]parbreaks ]\n", "\t[ -[no-]prettyprint ] [ -[no-]print-patterns ]\n", "\t[ -[no-]read-init-files ] [ -[no-]remove-OPT-prefixes ]\n", "\t[ -[no-]scribe ] [ -[no-]trace-file-opening ]\n", "\t[ -[no-]warnings ] [ -version ]\n", "\t[ outfile\n", (const char*)NULL, }; version(); usage_lines[1] = program_name; /* cannot have this in initializer */ out_lines(stdlog, usage_lines, NO); } static void version(VOID) { static CONST char *version_string[] = { BIBCLEAN_VERSION, "\n", #if defined(HOST) || defined(USER) || defined(__DATE__) || defined(__TIME__) "Compiled", #if defined(USER) " by <", USER, #if defined(HOST) "@", HOST, #endif /* defined(HOST) */ ">", #endif /* defined(USER) */ #if defined(__DATE__) " on ", __DATE__, #endif /* defined(__DATE__) */ #if defined(__TIME__) " ", __TIME__, #endif /* defined(__TIME__) */ #if defined(HAVE_PATTERNS) "\nwith native pattern matching", #endif /* defined(HAVE_PATTERNS) */ #if defined(HAVE_RECOMP) || defined(HAVE_REGEXP) "\nwith regular-expression pattern matching", #endif /* defined(HAVE_RECOMP) || defined(HAVE_REGEXP) */ #if defined(HAVE_OLDCODE) "\nwith old matching code", #endif /* defined(HAVE_OLDCODE) */ "\n", #endif /* defined(HOST)||defined(USER)||defined(__DATE__)||defined(__TIME__) */ (const char*)NULL, }; out_lines(stdlog, version_string, NO); } static YESorNO YESorNOarg(VOID) { return ((strnicmp(current_option+1,"no-",3) == 0) ? NO : YES); } bibclean-2.11.4.1.orig/ch.h0000644000175200017520000000176206116603201014432 0ustar debiandebian#ifndef CH_H_DEFINED_ #define CH_H_DEFINED_ #define BIBTEX_COMMENT_PREFIX '%' /* comment character in BibTeX files */ /* (I hope this will be standard in BibTeX 1.0) */ #define BYTE_VAL(c) ((unsigned int)((c) & 0xff)) #define CTL(x) ((x) & 037) /* make ASCII control character */ #define CH_BACKSPACE CTL('H') #if defined(HAVE_ALERT_CHAR) #define CH_BELL '\a' #else #define CH_BELL '\007' #endif #define CH_DELETE '\177' #define CH_ESCAPE '\033' #define CH_LINE_KILL CTL('U') #define CH_NUL '\000' #define CH_REPRINT CTL('R') #define CH_WORD_ERASE CTL('W') #define COMMENT_PREFIX '%' /* comment character in initialization files */ #define ERROR_PREFIX "??" /* this prefixes all error messages */ #define LINEBREAK ((int)CTL('n')) /* line break character */ #define META(x) ((x) | 0200) /* make GNU Emacs meta character */ #define PARBREAK ((int)CTL('p')) /* paragraph break character */ #define WARNING_PREFIX "%%" /* this prefixes all warning messages */ #endif /* CH_H_DEFINED_ */ bibclean-2.11.4.1.orig/bibclean.html0000444000175200017520000021254306656613246016336 0ustar debiandebian BIBCLEAN 1 "09 May 1998" "Version 2.11.4 "

Table of contents


NAME

bibclean - prettyprint and syntax check BibTeX and Scribe bibliography data base files


SYNOPSIS

bibclean [ -author ] [ -error-log filename ] [ -help ] [ '-?' ] [ -init-file filename ] [ -max-width nnn ] [ -[no-]align-equals ] [ -[no-]check-values ] [ -[no-]delete-empty-values ] [ -[no-]file-position ] [ -[no-]fix-font-changes ] [ -[no-]fix-initials ] [ -[no-]fix-names ] [ -[no-]German-style ] [ -[no-]keep-linebreaks ] [ -[no-]keep-parbreaks ] [ -[no-]keep-preamble-spaces ] [ -[no-]keep-spaces ] [ -[no-]keep-string-spaces ] [ -[no-]parbreaks ] [ -[no-]prettyprint ] [ -[no-]print-patterns ] [ -[no-]read-init-files ] [ -[no-]remove-OPT-prefixes ] [ -[no-]scribe ] [ -[no-]trace-file-opening ] [ -[no-]warnings ] [ -version ] <infile or bibfile1 bibfile2 bibfile3 ... >outfile

All options can be abbreviated to a unique leading prefix.

An explicit file name of ``-'' represents standard input; it is assumed if no input files are specified.

On VAX VMS and IBM PC DOS, the leading ``-'' on option names may be replaced by a slash, ``/''; however, the ``-'' option prefix is always recognized.


DESCRIPTION

bibclean prettyprints input BibTeX files to stdout, and checks the brace balance and bibliography entry syntax as well. It can be used to detect problems in BibTeX files that sometimes confuse even BibTeX itself, and importantly, can be used to normalize the appearance of collections of BibTeX files.

Here is a summary of the formatting actions:

  • BibTeX items are formatted into a consistent structure with one field = "value" pair per line, and the initial @ and trailing right brace in column 1.
  • Tabs are expanded into blank strings; their use is discouraged because they inhibit portability, and can suffer corruption in electronic mail.
  • Long string values are split at a blank and continued onto the next line with leading indentation.
  • A single blank line separates adjacent bibliography entries.
  • Text outside BibTeX entries is passed through verbatim.
  • Outer parentheses around entries are converted to braces.
  • Personal names in author and editor field values are normalized to the form ``P. D. Q. Bach'', from ``P.D.Q. Bach'' and ``Bach, P.D.Q.''.
  • Hyphen sequences in page numbers are converted to en-dashes.
  • Month values are converted to standard BibTeX string abbreviations.
  • In titles, sequences of upper-case characters at brace level zero are braced to protect them from being converted to lower-case letters by some bibliography styles.
  • CODEN, ISBN (International Standard Book Number) and ISSN (International Standard Serial Number) entry values are examined to verify the checksums of each listed number, and correct ISBN hyphenation is automatically supplied.
The standardized format of the output of bibclean facilitates the later application of simple filters, such as bibcheck (1), bibdup (1), bibextract (1), bibindex (1), bibjoin (1), biblabel (1), biblook (1), biborder (1), bibsort (1), citefind (1), and citetags (1), to process the text, and also is the one expected by the GNU Emacs BibTeX support functions.

OPTIONS

Command-line switches may be abbreviated to a unique leading prefix, and letter case is not significant. All options are parsed before any input bibliography files are read, no matter what their order on the command line. Options that correspond to a yes/no setting of a flag have a form with a prefix "no-" to set the flag to no . For such options, the last setting determines the flag value used. This is significant when options are also specified in initialization files (see the INITIALIZATION FILES manual section).

The leading hyphen that distinguishes an option from a filename may be doubled, for compatibility with GNU and POSIX conventions. Thus, -author and --author are equivalent.

To avoid confusion with options, if a filename begins with a hyphen, it must be disguised by a leading absolute or relative directory path, e.g., /tmp/-foo.bib or ./-foo.bib.

-author
Display an author credit on the standard error unit, stderr, and then exit with a success return code. Sometimes an executable program is separated from its documentation and source code; this option provides a way to recover from that.
-error-log filename
Redirect stderr to the indicated file, which will then contain all of the error and warning messages. This option is provided for those systems that have difficulty redirecting stderr.
-help or -?
Display a help message on stderr, giving a usage description, similar to this section of the manual pages, and then exit with a success return code.
-init-file filename
Provide an explicit value pattern initialization file. It will be processed after any system-wide and job-wide initialization files found on the PATH (for VAX VMS, SYS$SYSTEM ) and BIBINPUTS search paths, respectively, and may override them. It in turn may be overridden by a subsequent file-specific initialization file. The initialization file name can be changed at compile time, or at run time through a setting of the environment variable BIBCLEANINI, but defaults to .bibcleanrc on UNIX, and to bibclean.ini elsewhere. For further details, see the INITIALIZATION FILES manual section.
-max-width nnn
bibclean normally limits output line widths to 72 characters, and in the interests of consistency, that value should not be changed. Occasionally, special-purpose applications may require different maximum line widths, so this option provides that capability. The number following the option name can be specified in decimal, octal (starting with 0), or hexadecimal (starting with 0x). A zero or negative value is interpreted to mean unlimited, so -max-width 0 can be used to ensure that each field/value pair appears on a single line.

When -no-prettyprint requests bibclean to act as a lexical analyzer, the default line width is unlimited, unless overridden by this option.

When bibclean is prettyprinting, line wrapping will be done only at a space. Consequently, a long non-blank character sequence may result in the output exceeding the requested line width.

When bibclean is lexing, line wrapping is done by inserting a backslash-newline pair when the specified maximum is reached, so no line length will ever exceed the maximum.

-[no-]align-equals
With the positive form, align the equals sign in key/value assignments at the same column, separated by a single space from the value string. Otherwise, the equals sign follows the key, separated by a single space. Default: no.
-[no-]check-values
With the positive form, apply heuristic pattern matching to field values in order to detect possible errors (e.g., `` year = "192" '' instead of `` year = "1992" ''), and issue warnings when unexpected patterns are found.

This checking is usually beneficial, but if it produces too many bogus warnings for a particular bibliography file, you can disable it with the negative form of this option. Default: yes.

-[no-]delete-empty-values
With the positive form, remove all field/value pairs for which the value is an empty string. This is helpful in cleaning up bibliographies generated from text editor templates. Compare this option with -[no-]remove-OPT-prefixes described below. Default: no.
-[no-]file-position
With the positive form, give detailed file position information in warning and error messages. Default: no.
-[no-]fix-font-changes
With the positive form, supply an additional brace level around font changes in titles to protect against downcasing by some BibTeX styles. Font changes that already have more than one level of braces are not modified.

For example, if a title contains the Latin phrase {\em Dictyostelium Discoideum} or {\em {D}ictyostelium {D}iscoideum}, then downcasing will incorrectly convert the phrase to lower-case letters. Most BibTeX users are surprised that bracing the initial letters does not prevent the downcase action. The correct coding is {{\em Dictyostelium Discoideum}}. However, there are also legitimate cases where an extra level of bracing wrongly protects from downcasing. Consequently, bibclean will normally not supply an extra level of braces, but if you have a bibliography where the extra braces are routinely missing, you can use this option to supply them.

If you think that you need this option, it is strongly recommended that you apply bibclean to your bibliography file with and without -fix-font-changes, then compare the two output files to ensure that extra braces are not being supplied in titles where they should not be present. You will have to decide which of the two output files is the better choice, then repair the incorrect title bracing by hand.

Since font changes in titles are uncommon, except for cases of the type which this option is designed to correct, it should do more good than harm. Default: no.

-[no-]fix-initials
With the positive form, insert a space after a period following author initials. Default: yes.
-[no-]fix-names
With the positive form, reorder author and editor name lists to remove commas at brace level zero, placing first names or initials before last names. Default: yes.
-[no-]German-style
With the positive form, interpret quote characters [ "] inside braced value strings at brace level 1 according to the conventions of the TeX style file german.sty, which overloads quote to simplify input and representation of German umlaut accents, sharp-s (es-zet), ligature separators, invisible hyphens, raised/lowered quotes, French guillemets, and discretionary hyphens. Recognized character combinations will be braced to prevent BibTeX from interpreting the quote as a string delimiter.

Quoted strings receive no special handling from this option, and since German nouns in titles must anyway be protected from the downcasing operation of most BibTeX bibliography styles, German value strings that use the overloaded quote character can always be entered in the form "{...}", without the need to specify this option at all.

Default: no.

-[no-]keep-linebreaks
Normally, line breaks inside value strings are collapsed into a single space, so that long value strings can later be broken to provide lines of reasonable length.

With the positive form, linebreaks are preserved in value strings. If -max-width is set to zero, this preserves the original line breaks. Spacing outside value strings remains under bibclean 's control, and is not affected by this option.

Default: no.

-[no-]keep-parbreaks
With the positive form, preserve paragraph breaks (either formfeeds, or lines containing only spaces) in value strings. Normally, paragraph breaks are collapsed into a single space. Spacing outside value strings remains under bibclean 's control, and is not affected by this option. Default: no.
-[no-]keep-preamble-spaces
With the positive form, preserve all whitespace in @Preamble{...} entries. Default: no.
-[no-]keep-spaces
With the positive form, preserve all spaces in value strings. Normally, multiple spaces are collapsed into a single space. This option can be used together with -keep-linebreaks, -keep-parbreaks, and -max-width 0 to preserve the form of value strings while still providing syntax and value checking. Spacing outside value strings remains under bibclean 's control, and is not affected by this option. Default: no.
-[no-]keep-string-spaces
With the positive form, preserve all whitespace in @String{...} entries. Default: no.
-[no-]parbreaks
With the negative form, a paragraph break (either a formfeed, or a line containing only spaces) is not permitted in value strings, or between field/value pairs. This may be useful to quickly trap runaway strings arising from mismatched delimiters. Default: yes.
-[no-]prettyprint
Normally, bibclean functions as a prettyprinter. However, with the negative form of this option, it acts as a lexical analyzer instead, producing a stream of lexical tokens. See the LEXICAL ANALYSIS manual section for further details. Default: yes.
-[no-]print-patterns
With the positive form, print the value patterns read from initialization files as they are added to internal tables. Use this option to check newly-added patterns, or to see what patterns are being used.

When bibclean is compiled with native pattern-matching code (the default), these patterns are the ones that will be used in checking value strings for valid syntax, and all of them are specified in initialization files, rather than hard-coded into the program. For further details, see the INITIALIZATION FILES manual section. Default: no.

-[no-]read-init-files
With the negative form, suppress loading of system-, user-, and file-specific initialization files. Initializations will come only from those files explicitly given by -init-file filename options. Default: yes.
-[no-]remove-OPT-prefixes
With the positive form, remove the ``OPT'' prefix from each field name where the corresponding value is not an empty string. The prefix ``OPT'' must be entirely in upper-case to be recognized.

This option is for bibliographies generated with the help of the GNU Emacs BibTeX editing support, which generates templates with optional fields identified by the ``OPT'' prefix. Although the function M-x normally bound to the keystrokes C-c does the job, users often forget, with the result that BibTeX does not recognize the field name, and ignores the value string. Compare this option with -[no-]delete-empty-values described above. Default: no.

-[no-]scribe
With the positive form, accept input syntax conforming to the Scribe document system. The output will be converted to conform to BibTeX syntax. See the SCRIBE BIBLIOGRAPHY FORMAT manual section for further details. Default: no.
-[no-]trace-file-opening
With the positive form, record in the error log file the names of all files which bibclean attempts to open. Use this option to identify where initialization files are located. Default: no.
-[no-]warnings
With the positive form, allow all warning messages. The negative form is not recommended since it may mask problems that should be repaired. Default: yes .
-version
Display the program version number on stderr, and then exit with a success return code. This will also include an indication of who compiled the program, the host name on which it was compiled, the time of compilation, and the type of string-value matching code selected, when that information is available to the compiler.

ERROR RECOVERY AND WARNINGS

When bibclean detects an error, it issues an error message to both stderr and stdout . That way, the user is clearly notified, and the output bibliography also contains the message at the point of error.

Error messages begin with a distinctive pair of queries, ??, beginning in column 1, followed by the input file name and line number. If the -file-position option was specified, they also contain the input and output positions of the current file, entry, and value. Each position includes the file byte number, the line number, and the column number. In the event of a runaway string argument, the entry and value positions should precisely pinpoint the erroneous bibliography entry, and the file positions will indicate where it was detected, which may be rather later in the files.

Warning messages identify possible problems, and are therefore sent only to stderr, and not to stdout, so they never appear in the output file. They are identified by a distinctive pair of percents, %%, beginning in column 1, and as with error messages, may be followed by file position messages if the -file-position option was specified.

For convenience, the first line of each error and warning message sent to stderr is formatted according to the expectations of the GNU Emacs next-error command. You can invoke bibclean with the Emacs M-x compile<RET>bibclean filename.bib > filename.new command, then use the next-error command, normally bound to C-x ` (that's a grave, or back, accent), to move to the location of the error in the input file.

If error messages are ignored, and left in the output bibliography file, they will precipitate an error when the bibliography is next processed with BibTeX.

After issuing an error message, bibclean then resynchronizes its input by copying it verbatim to stdout until a new bibliography entry is recognized on a line in which the first non-blank character is an at-sign (@). This ensures that nothing is lost from the input file(s), allowing corrections to be made in either the input or the output files. However, if bibclean detects an internal error in its data structures, it will terminate abruptly without further input or output processing; this kind of error should never happen, and if it does, it should be reported immediately to the author of the program. Errors in initialization files, and running out of dynamic memory, will also immediately terminate bibclean.


INITIALIZATION FILES

bibclean can be compiled with one of three different types of pattern matching; the choice is made by the installer at compile time:

  • The original version uses explicit hand-coded tests of value-string syntax.
  • The second version uses regular-expression pattern-matching host library routines together with regular-expression patterns that come entirely from initialization files.
  • The third version uses special patterns that come entirely from initialization files.

The second and third versions are the ones of most interest here, because they allow the user to control what values are considered acceptable. However, command-line options can also be specified in initialization files, no matter which pattern matching choice was selected.

When bibclean starts, it searches for initialization files, finding the first one in the system executable program search path (on UNIX and IBM PC DOS, PATH ) and the first one in the BIBINPUTS search path, and processes them in turn. Then, when command-line arguments are processed, any additional files specified by -init-file filename options are also processed. Finally, immediately before each named bibliography file is processed, an attempt is made to process an initialization file with the same name, but with the extension changed to .ini. The default extension can be changed by a setting of the environment variable BIBCLEANEXT . This scheme permits system-wide, user-wide, session-wide, and file-specific initialization files to be supported.

When input is taken from stdin, there is no file-specific initialization.

For precise control, the -no-read-init-files option suppresses all initialization files except those explicitly named by -init-file filename options, either on the command line, or in requested initialization files.

Recursive execution of initialization files with nested -init-file options is permitted; if the recursion is circular, bibclean will finally get a non-fatal initialization file open failure after opening too many files. This terminates further initialization file processing. As the recursion unwinds, the files are all closed, then execution proceeds normally.

An initialization file may contain empty lines, comments from percent to end of line (just like TeX), option switches, and field/pattern or field/pattern/message assignments. Leading and trailing spaces are ignored. This is best illustrated by a short example:

% This is a small bibclean initialization file

-init-file /u/math/bib/.bibcleanrc %% departmental patterns

chapter = "\"D\""                 %% 23

pages   = "\"D--D\""              %% 23--27

volume  = "\"D \an\d D\""       %% 11 and 12

year    = \
   "\"dddd, dddd, dddd\"" \
   "Multiple years specified."      %% 1989, 1990, 1991

-no-fix-names   %% do not modify author/editor lists

Long logical lines can be split into multiple physical lines by breaking at a backslash-newline pair; the backslash-newline pair is discarded. This processing happens while characters are being read, before any further interpretation of the input stream.

Each logical line must contain a complete option (and its value, if any), or a complete field/pattern pair, or a field/pattern/message triple.

Comments are stripped during the parsing of the field, pattern, and message values. The comment start symbol is not recognized inside quoted strings, so it can be freely used in such strings.

Comments on logical lines that were input as multiple physical lines via the backslash-newline convention must appear on the last physical line; otherwise, the remaining physical lines will become part of the comment.

Pattern strings must be enclosed in quotation marks; within such strings, a backslash starts an escape mechanism that is commonly used in UNIX software. The recognized escape sequences are:

\a
alarm bell (octal 007)
\b
backspace (octal 010)
\f
formfeed (octal 014)
\n
newline (octal 012)
\r
carriage return (octal 015)
\t
horizontal tab (octal 011)
\v
vertical tab (octal 013)
\ooo
character number octal ooo (e.g \012 is linefeed). Up to 3 octal digits may be used.
\0xhh
character number hexadecimal hh (e.g., \0x0a is linefeed). xhh may be in either letter case. Any number of hexadecimal digits may be used.

Backslash followed by any other character produces just that character. Thus, \% gets a literal percent into a string (preventing its interpretation as a comment), \" produces a quotation mark, and \ produces a single backslash.

An ASCII NUL (\0) in a string will terminate it; this is a feature of the C programming language in which bibclean is implemented.

Field/pattern pairs can be separated by arbitrary space, and optionally, either an equals sign or colon functioning as an assignment operator. Thus, the following are equivalent:

pages="\"D--D\""
pages:"\"D--D\""
pages "\"D--D\""
  pages = "\"D--D\""
  pages : "\"D--D\""
pages   "\"D--D\""

Each field name can have an arbitrary number of patterns associated with it; however, they must be specified in separate field/pattern assignments.

An empty pattern string causes previously-loaded patterns for that field name to be forgotten. This feature permits an initialization file to completely discard patterns from earlier initialization files.

Patterns for value strings are represented in a tiny special-purpose language that is both convenient and suitable for bibliography value-string syntax checking. While not as powerful as the language of regular-expression patterns, its parsing can be portably implemented in less than 3% of the code in a widely-used regular-expression parser (the GNU regexp package).

The patterns are represented by the following special characters:

<space>
one or more spaces
a
exactly one letter
A
one or more letters
d
exactly one digit
D
one or more digits
r
exactly one Roman numeral
R
one or more Roman numerals (i.e. a Roman number)
w
exactly one word (one or more letters and digits)
W
one or more space-separated words, beginning and ending with a word
.
one `special' character, one of the characters < space>!#()*+,-./:;?[]~, a subset of punctuation characters that are typically used in string values
:
one or more `special' characters
X
one or more `special'-separated words, beginning and ending with a word
\x
exactly one x (x is any character), possibly with an escape sequence interpretation given earlier
x
exactly the character x (x is anything but one of these pattern characters: aAdDrRwW.:<space>\)

The X pattern character is very powerful, but generally inadvisable, since it will match almost anything likely to be found in a BibTeX value string. The reason for providing pattern matching on the value strings is to uncover possible errors, not mask them.

There is no provision for specifying ranges or repetitions of characters, but this can usually be done with separate patterns. It is a good idea to accompany the pattern with a comment showing the kind of thing it is expected to match. Here is a portion of an initialization file giving a few of the patterns used to match number value strings:

number  =       "\"D\""         %% 23
number  =       "\"A AD\""      %% PN LPS5001
number  =       "\"A D(D)\""    %% RJ 34(49)
number  =       "\"A D\""       %% XNSS 288811
number  =       "\"A D\.D\""   %% Version 3.20
number  =       "\"A-A-D-D\""   %% UMIAC-TR-89-11
number  =       "\"A-A-D\""     %% CS-TR-2189
number  =       "\"A-A-D\.D\"" %% CS-TR-21.7

For a bibliography that contains only article entries, this list should probably be reduced to just the first pattern, so that anything other than a digit string fails the pattern-match test. This is easily done by keeping bibliography-specific patterns in a corresponding file with extension .ini, since that file is read automatically.

You should be sure to use empty pattern strings in this pattern file to discard patterns from earlier initialization files.

The value strings passed to the pattern matcher contain surrounding quotes, so the patterns should also. However, you could use a pattern specification like "\"D " to match an initial digit string followed by anything else; the omission of the final quotation mark \" in the pattern allows the match to succeed without checking that the next character in the value string is a quotation mark.

Because the value strings are intended to be processed by TeX, the pattern matching ignores braces, and TeX control sequences, together with any space following those control sequences. Spaces around braces are preserved. This convention allows the pattern fragment A-AD-D to match the value string TN-K\slash 27-70 , because the value is implicitly collapsed to TN-K27-70 during the matching operation.

bibclean 's normal action when a string value fails to match any of the corresponding patterns is to issue a warning message something like this: "Unexpected value in ``year = "192"''. In most cases, that is sufficient to alert the user to a problem. In some cases, however, it may be desirable to associate a different message with a particular pattern. This can be done by supplying a message string following the pattern string. Format items %% (single percent), %e (entry name), %f (field name), %k (citation key), and %v (string value) are available to get current values expanded in the messages. Here is an example:

chapter = "\"D:D\"" "Colon found in ``%f = %v''" %% 23:2

To be consistent with other messages output by bibclean, the message string should not end with punctuation.

If you wish to make the message an error, rather than just a warning, begin it with a query (?), like this:

chapter = "\"D:D\"" "?Colon found in ``%f = %v''" %% 23:2

The query will not be included in the output message.

Escape sequences are supported in message strings, just as they are in pattern strings. You can use this to advantage for fancy things, such as terminal display mode control. If you rewrite the previous example as

chapter = "\"D:D\"" \
          "?\033[7mColon found in ``%f = %v''\033[0m" %% 23:2

the error message will appear in inverse video on display screens that support ANSI terminal control sequences. Such practice is not normally recommended, since it may have undesirable effects on some output devices. Nevertheless, you may find it useful for restricted applications.

For some types of bibliography fields, bibclean contains special-purpose code to supplement or replace the pattern matching:

  • CODEN, ISBN and ISSN field values are handled this way because their validation requires evaluation of checksums that cannot be expressed by simple patterns; no patterns are even used in these three cases.
  • When bibclean is compiled with pattern-matching code support, chapter, number, pages, and volume values are checked only by pattern matching.
  • month values are first checked against the standard BibTeX month abbreviations, and only if no match is found are patterns then used.
  • year values are first checked against patterns, then if no match is found, the year numbers are found and converted to integer values for testing against reasonable bounds.

Values for other fields are checked only against patterns. You can provide patterns for any field you like, even ones bibclean does not already know about. New ones are simply added to an internal table that is searched for each string to be validated.

The special field, key, represents the bibliographic citation key. It can be given patterns, like any other field. Here is an initialization file pattern assignment that will match an author name, a colon, an alphabetic string, and a two-digit year:

key = "A:Add"                     %% Knuth:TB86

Notice that no quotation marks are included in the pattern, because the citation keys are not quoted. You can use such patterns to help enforce uniform naming conventions for citation keys, which is increasingly important as your bibliography data base grows.


LEXICAL ANALYSIS

When -no-prettyprint is specified, bibclean acts as a lexical analyzer instead of a prettyprinter, producing output in lines of the form

<token-number><tab><token-name><tab>"<token-value>"

Each output line contains a single complete token, identified by a small integer number for use by a computer program, a token type name for human readers, and a string value in quotes.

Special characters in the token value string are represented with ANSI/ISO Standard C escape sequences, so all characters other than NUL are representable, and multi-line values can be represented in a single line.

Here are the token numbers and token type names that can appear in the output when -prettyprint is specified:

 0   UNKNOWN
 1   ABBREV
 2   AT
 3   COMMA
 4   COMMENT
 5   ENTRY
 6   EQUALS
 7   FIELD
 8   INCLUDE
 9   INLINE
10   KEY
11   LBRACE
12   LITERAL
13   NEWLINE
14   PREAMBLE
15   RBRACE
16   SHARP
17   SPACE
18   STRING
19   VALUE

Programs that parse such output should also be prepared for lines beginning with the warning prefix, %%, or the error prefix, ??, and for ANSI/ISO Standard C line number directives of the form

# line 273 "texbook1.bib"
which record the line number and file name of the current input file.

If a -max-width nnn command-line option was specified, long output lines will be wrapped at a backslash-newline pair, and consequently, software that processes the lexical token stream should be prepared to collapse such wrapped lines back into single lines.

As an example of the use of -no-prettyprint , the UNIX command pipeline

bibclean -no-prettyprint mylib.bib | \
    awk '$2 == "KEY" {print $3}' | \
    sed -e 's/"//g' | \
    sort
will extract a sorted list of all citation keys in the file mylib.bib.

A certain amount of processing will have been done on the tokens. In particular, delimiters equivalent to braces will have been replaced by braces, and braced strings will have become quoted strings.

The LITERAL token type is used for arbitrary text that bibclean does not examine further, such as the contents of a @Preamble{...} or a @Comment{...}.

The UNKNOWN token type should never appear in the output stream. It is used internally to initialize token type variables.


SCRIBE BIBLIOGRAPHY FORMAT

bibclean 's support for the Scribe bibliography format is based on the syntax description in the Scribe Introductory User's Manual, 3rd Edition, May 1980. Scribe was originally developed by Brian Reid at Carnegie-Mellon University, and is now marketed by Unilogic, Ltd.

The BibTeX bibliography format was strongly influenced by Scribe, and indeed, with care, it is possible to share bibliography files between the two systems. Nevertheless, there are some differences, so here is a summary of features of the Scribe bibliography file format:

(1)
Letter case is not significant in field names and entry names, but case is preserved in value strings.
(2)
In field/value pairs, the field and value may be separated by one of three characters: =, /, or space. Space may optionally surround these separators.
(3)
Value delimiters are any of these seven pairs: { } [ ] ( ) < > ' ' " " ` `
(4)
Value delimiters may not be nested, even though with the first four delimiter pairs, nested balanced delimiters would be unambiguous.
(5)
Delimiters can be omitted around values that contain only letters, digits, sharp (#), ampersand (&), period (.), and percent (%).
(6)
Outside of delimited values, a literal at-sign (@) is represented by doubled at-signs (@@).
(7)
Bibliography entries begin with @name, as for BibTeX, but any of the seven Scribe value delimiter pairs may be used to surround the values in field/value pairs. As in (4), nested delimiters are forbidden.
(8)
Arbitrary space may separate entry names from the following delimiters.
(9)
@Comment is a special command whose delimited value is discarded. As in (4), nested delimiters are forbidden.
(10)
The special form
@Begin{comment}
 ...
@End{comment}

permits encapsulating arbitrary text containing any characters or delimiters, other than ``@End{comment}''. Any of the seven delimiter pairs may be used around the word ``comment'' following the ``@Begin'' or ``@End''; the delimiters in the two cases need not be the same, and consequently, ``@Begin{comment}''/``@End{comment}'' pairs may not be nested.

(11)
The key field is required in each bibliography entry.
(12)
A backslashed quote in a string will be assumed to be a TeX accent, and braced appropriately. While such accents do not conform to Scribe syntax, Scribe-format bibliographies have been found that appear to be intended for TeX processing.
Because of this loose syntax, bibclean 's normal error detection heuristics are less effective, and consequently, Scribe mode input is not the default; it must be explicitly requested.

ENVIRONMENT VARIABLES

BIBCLEANEXT
File extension of bibliography-specific initialization files. Default: .ini.
BIBCLEANINI
Name of bibclean initialization files. Default: .bibcleanrc (UNIX), bibclean.ini (non-UNIX).
BIBINPUTS
Search path for bibclean and BibTeX input files. On UNIX, this is a colon-separated list of directories that are searched in order from first to last. It is not an error for a specified directory to not exist.

On other operating systems, the directory names should be separated by whatever character is used in system search path specifications, such as a semicolon on IBM PC DOS.

PATH
On Atari TOS, IBM PC DOS, IBM PC OS/2, Microsoft NT, and UNIX, search path for system executable files. The system-wide bibclean initialization file is searched for in this path.
SYS$SYSTEM
On VAX VMS, search path for system executable files and the system-wide bibclean initialization file.

FILES

*.bib
BibTeX and Scribe bibliography data base files.
*.ini
File-specific initialization files.
.bibcleanrc
UNIX system-wide and user-specific initialization files.
bibclean.ini
Non-UNIX system-wide and user-specific initialization files.

SEE ALSO

bibcheck (1), bibdup (1), bibextract (1), bibindex (1), bibjoin (1), biblabel (1), biblex (1), biblook (1), biborder (1), bibparse (1), bibsort (1), bibtex (1), bibunlex (1), citefind (1), citesub (1), citetags (1), latex (1), scribe (1), tex (1).


AUTHOR

Nelson H. F. Beebe
Center for Scientific Computing
University of Utah
Department of Mathematics, 322 INSCC
155 S 1400 E RM 233
Salt Lake City, UT 84112-0090
USA
Tel: +1 801 581 5254
FAX: +1 801 585 1640, +1 801 581 4148
Email: beebe@math.utah.edu, beebe@acm.org, beebe@ieee.org (Internet)
URL: http://www.math.utah.edu/~beebe
bibclean-2.11.4.1.orig/testbib3.eok0000644000175200017520000000051205323654514016112 0ustar debiandebian%% "testbib3.org", line 69: Unexpected value in ``month = "Janu."''. %% "testbib3.org", line 88: Unexpected value in ``month = "unknown"''. %% "testbib3.org", line 108: String length exceeds standard BibTeX limit for ``annote'' entry. %% "testbib3.org", line 108: String length exceeds standard BibTeX limit for ``annote'' entry. bibclean-2.11.4.1.orig/bibclean.c0000644000175200017520000014701306721007405015600 0ustar debiandebian/*********************************************************************** @C-file{ author = "Nelson H. F. Beebe", version = "2.11.4", date = "09 May 1998", time = "22:56:25 MDT", filename = "bibclean.c", address = "Center for Scientific Computing University of Utah Department of Mathematics, 322 INSCC 155 S 1400 E RM 233 Salt Lake City, UT 84112-0090 USA", telephone = "+1 801 581 5254", FAX = "+1 801 585 1640, +1 801 581 4148", URL = "http://www.math.utah.edu/~beebe", checksum = "56587 2089 6885 52747", email = "beebe@math.utah.edu, beebe@acm.org, beebe@ieee.org (Internet)", codetable = "ISO/ASCII", keywords = "prettyprint, bibliography", supported = "yes", docstring = {Prettyprint one or more BibTeX files on stdin, or specified files, to stdout, and check the brace balance and value strings as well. Text outside @item-type{...} BibTeX entries is passed through verbatim, except that trailing blanks are trimmed. BibTeX items are formatted into a consistent structure with one field = "value" pair per line, and the initial @ and trailing right brace in column 1. Long values are split at a blank and continued onto the next line with leading indentation. Tabs are expanded into blank strings; their use is discouraged because they inhibit portability, and can suffer corruption in electronic mail. Braced strings are converted to quoted strings. This format facilitates the later application of simple filters to process the text for extraction of items, and also is the one expected by the GNU Emacs BibTeX support functions. Usage: bibclean [ -author ] [ -error-log filename ] [ -help ] [ '-?' ] [ -init-file filename ] [ -max-width # ] [ -[no-]align-equals ] [ -[no-]check-values ] [ -[no-]delete-empty-values ] [ -[no-]file-position ] [ -[no-]fix-font-changes ] [ -[no-]fix-initials ] [ -[no-]fix-names ] [ -[no-]German-style ] [ -[no-]keep-linebreaks] [ -[no-]keep-parbreaks] [ -[no-]keep-preamble-spaces] [ -[no-]keep-spaces] [ -[no-]keep-string-spaces] [ -[no-]parbreaks ] [ -[no-]prettyprint ] [ -[no-]print-patterns ] [ -[no-]read-init-files ] [ -[no-]remove-OPT-prefixes ] [ -[no-]scribe ] [ -[no-]trace-file-opening ] [ -[no-]warnings ] [ -version ] outfile Letter case is NOT significant in command-line option names. The checksum field above contains a CRC-16 checksum as the first value, followed by the equivalent of the standard UNIX wc (word count) utility output of lines, words, and characters. This is produced by Robert Solovay's checksum utility.}, } ***********************************************************************/ /*********************************************************************** The formatting should perhaps be user-customizable; that is left for future work. The major goal has been to convert entries to the standard form @item-type{citation-key, field = "value", field = "value", ... } while applying heuristics to permit early error detection. If the input file is syntactically correct for BibTeX and LaTeX, this is reasonably easy. If the file has errors, error recovery is attempted, but cannot be guaranteed to be successful; however, the output file, and stderr, will contain an error message that should localize the error to a single entry where a human can find it more easily than a computer can. To facilitate error checking and recovery, the following conditions are used: @ starts a BibTeX entry only if it occurs at brace level 0 and is not preceded by non-blank text on the same line. " is significant only at brace level 1. {} are expected to occur at @-level 1 or higher } at beginning of line ends a BibTeX entry Backslashes preceding these 4 characters remove their special significance. These heuristics are needed to deal with legal value strings like {..."...} "...{..}..." and will flag as errors strings like "...{..." "...}..." The special treatment of @ and } at beginning of line attempts to detect errors in entries before the rest of the file is swallowed up in an attempt to complete an unclosed entry. The output bibliography file should be processed by BibTeX and the LaTeX without errors before discarding the original bibliography file. We do our own output and line buffering here so as to be able to trim trailing blanks, and output data in rather large blocks for efficiency (in filters of this type, I/O accounts for the bulk of the processing, so large output buffers offer significant performance gains). The -scribe option enables recognition of the extended syntax used by the Scribe document formatting system, originally developed by Brian Reid at Carnegie-Mellon University, and now marketed by Unilogic, Ltd. I have followed the syntax description in the Scribe Introductory User's Manual, 3rd Edition, May 1980. Scribe extensions include these features: (1) Letter case is not significant in field names and entry names, but case is preserved in value strings. (2) In field/value pairs, the field and value may be separated by one of three characters: =, /, or space. Space may optionally surround these separators. (3) Value delimiters are any of these seven pairs: { } [ ] ( ) < > ' ' " " ` ` (4) Value delimiters may not be nested, even when with the first four delimiter pairs, nested balanced delimiters would be unambiguous. (5) Delimiters can be omitted around values that contain only letters, digits, sharp (#), ampersand (&), period (.), and percent (%). (6) A literal at-sign (@) is represented by doubled at-signs (@@). (7) Bibliography entries begin with @name, as for BibTeX, but any of the seven Scribe value delimiters may be used to surround the field/value pairs. As in (4), nested delimiters are forbidden. (8) Arbitrary space may separate entry names from the following delimiters. (9) @Comment is a special command whose delimited value is discared. As in (4), nested delimiters are forbidden. (10) The special form @Begin{comment} ... @End{comment} permits encapsulating arbitrary text containing any characters or delimiters, other than "@End{comment}". Any of the seven delimiters may be used around the word comment following the @begin or @end. (11) The "key" field name is required in each bibliography entry. (12) Semicolons may be used in place of "and" in author lists (undocumented, but observed in practice). Because of this loose syntax, error detection heuristics are less effective, and consequently, Scribe mode input is not the default; it must be explicitly requested. ***********************************************************************/ /*********************************************************************** We want this code to be compilable with C++ compilers as well as C compilers, in order to get better compile-time checking. We therefore must declare all function headers in both old Kernighan-and-Ritchie style, as well as in new Standard C and C++ style. Although Standard C also allows K&R style, C++ does not. For functions with no argument, we just use VOID which expands to either void, or nothing. Older C++ compilers predefined the symbol c_plusplus, but that was changed to __cplusplus in 1989 to conform to ISO/ANSI Standard C conventions; we allow either. It is regrettable that the C preprocessor language is not powerful enough to transparently handle the generation of either style of function declaration. ***********************************************************************/ #include #include #include "xtypes.h" #include "xstdlib.h" #include "xstring.h" #include "xctype.h" #include "xlimits.h" #include "xunistd.h" RCSID("$Id: bibclean.c,v 1.12 1999/05/20 13:32:49 beebe Exp beebe $") #include "ch.h" #include "delete.h" #include "keybrd.h" #include "yesorno.h" #include "match.h" /* must come AFTER yesorno.h */ typedef struct s_option_function_entry { const char *name; /* option name */ size_t min_match; /* minimum length string match */ void (*function)(VOID); /* function to call when option matched */ } OPTION_FUNCTION_ENTRY; typedef struct s_name_pair { const char *old_name; const char *new_name; } NAME_PAIR; typedef struct s_position { const char *filename; long byte_position; long last_column_position; long column_position; long line_number; } POSITION; typedef struct s_io_pair { POSITION input; POSITION output; } IO_PAIR; typedef struct s_pattern_table { MATCH_PATTERN *patterns; int current_size; int maximum_size; } PATTERN_TABLE; typedef struct s_pattern_names { const char *name; PATTERN_TABLE *table; } PATTERN_NAMES; #if defined(sun386) /* Sun386i run-time library bug in fputs(): only first line in s is written! */ #define fputs(s,fp) fwrite(s,1,strlen(s),fp) #endif #if !defined(BIBCLEAN_INI) #define BIBCLEAN_INI "BIBCLEANINI" /* environment variable */ #endif #define EMPTY_STRING(s) (s[0] = (char)'\0', s) /* for return (EMPTY_STRING(foo))*/ #if !defined(EXIT_FAILURE) #define EXIT_FAILURE 1 #endif #if !defined(EXIT_SUCCESS) #define EXIT_SUCCESS 0 #endif #ifdef FOPEN #undef FOPEN #endif #if defined(__SUNCC__) #define FOPEN(a,b) fopen((char*)(a),(char*)(b)) /* bug workaround: wrong type for fopen() args with SunOS 4.1.2 CC */ #else /* NOT defined(__SUNCC__) */ #define FOPEN(a,b) fopen((a),(b)) #endif /* defined(__SUNCC__) */ #define GETDEFAULT(envname,default) \ ((getenv(envname) != (char *)NULL) ? getenv(envname) : default) #define FIELD_INDENTATION 2 /* how far to indent "field = value," pairs */ int field_indentation = FIELD_INDENTATION; #define KEEP_PREAMBLE_SPACES() ((in_preamble == YES) && \ (keep_preamble_spaces == YES)) #define KEEP_STRING_SPACES() ((in_string == YES) && \ (keep_string_spaces == YES)) #define LAST_SCREEN_LINE (-2) /* used in opt_help() and do_more() */ #if defined(MAX) #undef MAX #endif #define MAX(a,b) (((a) > (b)) ? (a) : (b)) #if !defined(MAX_BUFFER) #define MAX_BUFFER 8192 /* output buffer size; this does NOT */ /* limit lengths of input lines */ #endif /* !defined(MAX_BUFFER) */ #if !defined(MAX_WIDTH) #define MAX_WIDTH 72L /* length of longest entry line; */ /* non-BibTeX entry text is output verbatim */ #endif /* !defined(MAX_WIDTH) */ #if !defined(MAX_FIELD_LENGTH) #define MAX_FIELD_LENGTH 12 /* "howpublished" */ #endif /* !defined(MAX_FIELD_LENGTH) */ #include "pattern.h" #include "token.h" #define NOOP /* dummy statement */ #if !defined(SCREEN_LINES) #if OS_PCDOS #define SCREEN_LINES 25 /* set 0 to disable pausing in out_lines() */ #else /* NOT OS_PCDOS */ #define SCREEN_LINES 24 /* set 0 to disable pausing in out_lines() */ #endif /* OS_PCDOS */ #endif /* !defined(SCREEN_LINES) */ #define VALUE_INDENTATION (FIELD_INDENTATION + MAX_FIELD_LENGTH + 3) /* where item values are output; allow space */ /* for "< = >" */ int value_indentation = VALUE_INDENTATION; /* Operating system-specific customizations. */ #if OS_UNIX #if !defined(INITFILE) #define INITFILE ".bibcleanrc" #endif #if !defined(SYSPATH) #define SYSPATH "PATH" #endif #if !defined(USERPATH) #define USERPATH "BIBINPUTS" #endif #endif /* OS_UNIX */ #if OS_VAXVMS #if !defined(INITFILE) #define INITFILE "bibclean.ini" #endif #if !defined(SYSPATH) #define SYSPATH "SYS$SYSTEM" #endif #if !defined(USERPATH) #define USERPATH "BIBINPUTS" #endif #endif /* OS_VAXVMS */ /* For any that are undefined, default to values suitable for OS_PCDOS. */ #if !defined(INITFILE) #define INITFILE "bibclean.ini" #endif #if !defined(SYSPATH) #define SYSPATH "PATH" #endif #if !defined(USERPATH) #define USERPATH "BIBINPUTS" #endif #include "toklst.h" const char *type_name[] = { /* must be indexable by TOKEN_xxx */ "UNKNOWN", "ABBREV", /* alphabetical order, starting at 1 */ "AT", "COMMA", "COMMENT", "ENTRY", "EQUALS", "FIELD", "INCLUDE", "INLINE", "KEY", "LBRACE", "LITERAL", "NEWLINE", "PREAMBLE", "RBRACE", "SHARP", "SPACE", "STRING", "VALUE", }; /* Almost all functions except main() are static to overcome limitations on external name lengths in ISO/ANSI Standard C. Please keep them in ALPHABETICAL order, ignoring letter case. */ void do_initfile ARGS((const char *pathlist_,const char *name_)); YESorNO apply_function ARGS((const char *option_, OPTION_FUNCTION_ENTRY table_[])); void check_inodes ARGS((void)); void error ARGS((const char *msg_)); void fatal ARGS((const char *msg_)); void free_pattern_table_entries ARGS((PATTERN_TABLE *pt_)); int get_char ARGS((void)); int get_linebreak ARGS((void)); int get_next_non_blank ARGS((void)); int isidchar ARGS((int c_)); int main ARGS((int argc_, char *argv_[])); void out_at ARGS((void)); void out_c ARGS((int c_)); void out_flush ARGS((void)); void out_lines ARGS((FILE *fpout_,const char *lines_[], YESorNO pausing_)); void out_newline ARGS((void)); void out_s ARGS((const char *s_)); void out_spaces ARGS((int n_)); void out_string ARGS((token_t type_, const char *token_)); void out_token ARGS((token_t type_, const char *token_)); void out_verbatim ARGS((const char *token_)); void out_with_error ARGS((const char *s_,const char *msg_)); void out_with_parbreak_error ARGS((char *s_)); void put_back ARGS((int c_)); FILE *tfopen ARGS((const char *filename_, const char *mode_)); void warning ARGS((const char *msg_)); extern void do_args ARGS((int argc_, char *argv_[])); extern void do_files ARGS((int argc_, char *argv_[])); extern void do_other ARGS((void)); extern void do_preargs ARGS((int argc_, char *argv_[])); static long bcolumn ARGS((void)); static void bdelc ARGS((void)); static void bdelline ARGS((void)); static void bflush ARGS((void)); static int blastc ARGS((void)); static int bpeekc ARGS((int c_)); static void bputc ARGS((int c_)); static char *format ARGS((const char *msg_)); static void free_match_pattern ARGS((MATCH_PATTERN *mp_)); static void free_pattern_table ARGS((PATTERN_TABLE *pt_)); static void free_tables ARGS((void)); static void init_tables ARGS((void)); #if (defined(HAVE_REGEXP) || defined(HAVE_RECOMP)) static int match_regexp ARGS((const char *string_,const char *pattern_)); #endif /* (defined(HAVE_REGEXP) || defined(HAVE_RECOMP)) */ static void out_error ARGS((FILE *fpout_, const char *s_)); static void out_input_position ARGS((IO_PAIR *pair_)); static void out_number ARGS((long n_)); static void out_position ARGS((FILE *fpout_,const char *msg_, IO_PAIR *the_location_)); static void out_status ARGS((FILE *fpout_, const char *prefix_)); static void resync ARGS((void)); extern char *Strdup ARGS((const char *s_)); static int word_length ARGS((const char *s_)); static void wrap_line ARGS((void)); /**********************************************************************/ /* Please keep these (mostly) global variables in ALPHABETICAL order, ignoring letter case. */ YESorNO align_equals = NO; /* NO: left-adjust equals */ int at_level = 0; /* @ nesting level */ int brace_level = 0; /* curly brace nesting level */ static int buf_length = 0; /* length of buf[] */ static char buf[MAX_BUFFER+1]; /* 1 extra slot for trailing NUL */ YESorNO check_values = YES; /* NO: suppress value checks */ int close_char = EOF; /* BibTeX entry closing; may */ /* be right paren or brace */ char current_entry_name[MAX_TOKEN_SIZE]; /* entry name */ char current_field[MAX_TOKEN_SIZE]; /* field name */ char current_key[MAX_TOKEN_SIZE]; /* citation key */ char current_value[MAX_TOKEN_SIZE]; /* string value */ YESorNO delete_empty_values = NO; /* YES: delete empty values */ YESorNO discard_next_comma = NO; /* YES: deleting field/value */ YESorNO eofile = NO; /* set to YES at end-of-file */ static int error_count = 0; /* used to decide exit code */ /* normalizing names */ YESorNO fix_initials = YES; /* reformat A.U. Thor? */ YESorNO fix_names = YES; /* reformat Bach, P.D.Q? */ YESorNO fix_font_changes = NO; /* brace {\em E. Coli}? */ #if defined(DEBUG) static FILE *fpdebug; /* for debugging */ #endif /* defined(DEBUG) */ FILE *fpin; /* input file pointer */ char *initialization_file_name; YESorNO in_preamble = NO; /* YES: in @Preamble{...} */ YESorNO in_string = NO; /* YES: in @String{...} */ YESorNO in_value = NO; /* YES: in value string */ YESorNO is_parbreak = NO; /* get_next_non_blank() sets */ YESorNO keep_linebreaks = NO; /* YES: keep linebreaks in values */ YESorNO keep_parbreaks = NO; /* YES: keep parbreaks in values */ YESorNO keep_preamble_spaces = NO; /* YES: keep spaces in @Preamble{} */ YESorNO keep_spaces = NO; /* YES: keep spaces in values */ YESorNO keep_string_spaces = NO; /* YES: keep spaces in @String{} */ long max_width = MAX_WIDTH; int non_white_chars = 0; /* used to test for legal @ */ static IO_PAIR original_file; /* used in error messages */ YESorNO parbreaks = YES; /* NO: parbreaks forbidden */ /* in strings and entries */ YESorNO prettyprint = YES; /* NO: do lexical analysis */ YESorNO print_patterns = NO; /* YES: print value patterns */ char *program_name; /* set to argv[0] */ PATTERN_NAMES pattern_names[MAX_PATTERN_NAMES] = { {"chapter", (PATTERN_TABLE*)NULL}, {"month", (PATTERN_TABLE*)NULL}, {"number", (PATTERN_TABLE*)NULL}, {"pages", (PATTERN_TABLE*)NULL}, {"volume", (PATTERN_TABLE*)NULL}, {"year", (PATTERN_TABLE*)NULL}, #if _AIX370 {NULL, NULL}, /* CC compiler cannot handle correct cast */ #else /* NOT _AIX370 */ {(CONST char*)NULL, (PATTERN_TABLE*)NULL}, /* entry terminator */ #endif /* _AIX370 */ /* remaining slots may be initialized at run time */ }; #define MAX_PUSHBACK 10 static int n_pushback = 0; static int pushback_buffer[MAX_PUSHBACK]; YESorNO read_initialization_files = YES;/* -[no-]read-init-files sets */ YESorNO remove_OPT_prefixes = NO; /* YES: remove OPT prefix */ YESorNO rflag = NO; /* YES: resynchronizing */ int screen_lines = SCREEN_LINES;/* kbopen() and out_lines() reset */ YESorNO Scribe = NO; /* Scribe format input */ /* In all memory models from tiny to huge, Turbo C on IBM PC DOS will not permit more than 64KB of global constant data. Therefore, we use a global scratch array shared between the functions fix_title(), format(), get_Scribe_identifier_string() and get_Scribe_delimited_string(). The code has been carefully examined to make sure that this space is not overwritten while still in use. Oh, the pain of the Intel segmented memory architecture! */ char shared_string[MAX_TOKEN_SIZE]; YESorNO show_file_position = NO; /* messages usually brief */ FILE *stdlog; /* usually stderr */ YESorNO stdlog_on_stdout = YES; /* NO for separate files */ #if OS_PCDOS unsigned int _stklen = 0xF000; /* stack size for Turbo C */ #endif /* OS_PCDOS */ IO_PAIR token_start; /* used for # line output */ IO_PAIR the_entry; /* used in error messages */ IO_PAIR the_file; /* used in error messages */ IO_PAIR the_value; /* used in error messages */ YESorNO trace_file_opening = NO; /* -[no-]trace-file-opening sets */ YESorNO warnings = YES; /* NO: suppress warnings */ YESorNO wrapping = YES; /* NO: verbatim output */ /**********************************************************************/ #if defined(HAVE_STDC) YESorNO apply_function(const char *option, OPTION_FUNCTION_ENTRY table[]) #else /* K&R style */ YESorNO apply_function(option,table) const char *option; OPTION_FUNCTION_ENTRY table[]; #endif { /* return YES if function matching option was invoked, otherwise NO */ int k; /* index into table[] */ size_t n = strlen(option); /* all chars of option[] will be examined */ for (k = 0; table[k].name != (const char*)NULL; ++k) { if (strnicmp(option,table[k].name,MAX(n,table[k].min_match)) == 0) { table[k].function(); return (YES); } } return (NO); } /* Version 2.10: the new functions bcolumn(), bdelc(), bdelline(), bflush(), blastc(), bpeekc(), and bputc() provide a clean, simple, and sole interface to the output buffer, buf[]. Code evolution prior to version 2.10 had made out_c() too complex, and these routines simplified it substantially. We no longer treat horizontal tab specially: all characters except newline increment the column position by 1, because doing otherwise complicates updating the column position on a DELETE_CHAR operation. */ static long bcolumn(VOID) /* return output column position */ { return (the_file.output.column_position); } static void bdelc(VOID) /* delete last character in buf[] */ { if (buf_length > 0) { the_file.output.byte_position--; switch (buf[--buf_length]) { case '\n': the_file.output.column_position = the_file.output.last_column_position; break; default: the_file.output.column_position--; break; } } } static void bdelline(VOID) /* delete last line in buf[] */ { while ((buf_length > 0) && (buf[buf_length-1] != '\n')) bdelc(); } static void bflush(VOID) /* output all but last line in buf[] */ { int k; /* Output all but the last line of buf[], unless there is only one line, in which case, output all of buf[]. We need to keep a complete line available in case of a DELETE_LINE operation. */ buf[buf_length] = '\0'; /* terminate buffer string */ for (k = buf_length; (k > 0) && (buf[k-1] != '\n'); --k) NOOP; /* find preceding newline */ if ((k >= 0) && (buf[k] == '\n')) /* then found last line */ { buf[k] = (char)'\0'; /* zap the newline */ (void)fputs(buf,stdout); /* output up to the zapped newline */ (void)fputc('\n',stdout); /* output the zapped newline */ buf_length = (int)strlen(&buf[k+1]); (void)Memmove(buf,&buf[k+1],(size_t)buf_length); /* move last line to start of buf[] */ /* NB: overlap requires Memmove(), */ /* NOT strcpy()! */ } else if (buf_length > 0) /* have only one line in buf[] */ { (void)fputs(buf,stdout); buf_length = 0; } (void)fflush(stdout); /* synchronize for error messages */ } static int blastc(VOID) /* return last character in buffer, or EOF */ { return (buf_length > 0) ? buf[buf_length-1] : EOF; } #if defined(HAVE_STDC) static int /* return char at (negative) offset */ bpeekc(int offset) /* from end of buf[], or EOF */ #else /* K&R style */ static int bpeekc(offset) int offset; #endif { int k = buf_length - 1 + offset; return ((0 <= k) && (k < buf_length)) ? buf[k] : EOF; } #if defined(HAVE_STDC) static void bputc(int c) /* output c to buf[] */ #else /* K&R style */ static void bputc(c) int c; #endif { if (buf_length >= MAX_BUFFER) bflush(); switch (c) { case '\n': the_file.output.column_position = 0; the_file.output.line_number++; break; default: the_file.output.column_position++; break; } the_file.output.byte_position++; buf[buf_length++] = (char)c; } #if defined(HAVE_STDC) void /* issue an error message */ error(const char *msg) /* default provided if this is NULL */ #else /* K&R style */ void error(msg) /* issue an error message */ const char *msg; /* default provided if this is NULL */ #endif { char *p; error_count++; out_flush(); /* flush all buffered output */ at_level = 0; /* suppress further messages */ /* until we have resynchronized */ original_file = the_file; /* save for error messages */ p = format(msg); (void)fprintf(stdlog,"%s \"%s\", line %ld: %s.\n", ERROR_PREFIX, the_file.input.filename, the_value.input.line_number, p); /* UNIX-style error message for */ /* GNU Emacs M-x compile to parse */ out_status(stdlog, ERROR_PREFIX); (void)fflush(stdlog); out_error(stdout, "\n"); /* make sure we start a newline */ out_error(stdout, ERROR_PREFIX); out_error(stdout, " "); out_error(stdout, p); out_error(stdout, ".\n"); out_status(stdout, ERROR_PREFIX); out_flush(); /* flush all buffered output */ } #if defined(HAVE_STDC) void /* issue an error message and die */ fatal(const char *msg) #else /* K&R style */ void fatal(msg) /* issue an error message and die */ const char *msg; #endif { (void)fprintf(stdlog,"%s %s\n", ERROR_PREFIX, msg); exit(EXIT_FAILURE); } #if defined(HAVE_STDC) static char * format(const char *msg) #else /* K&R style */ static char * format(msg) const char *msg; #endif { /* expand %f, %k, %v, and %% items in msg[], return pointer to new copy */ size_t k; size_t len; size_t n; static char newmsg[MAX_TOKEN_SIZE]; /* static because we return it */ /* Shorthand for writable copy of msg[] with guaranteed NUL termination */ #define ORIGINAL_MESSAGE (strncpy(newmsg,msg,MAX_TOKEN_SIZE), \ newmsg[MAX_TOKEN_SIZE-1] = (char)'\0', newmsg) for (k = 0, n = 0; msg[k]; ++k) { switch (msg[k]) { case '%': /* expect valid format item */ switch (msg[++k]) { case 'e': /* %e -> current_entry_name */ len = strlen(current_entry_name); if ((n + len) >= MAX_TOKEN) return (ORIGINAL_MESSAGE); /* no space left*/ (void)strcpy(&newmsg[n],current_entry_name); n += len; break; case 'f': /* %f -> current_field */ len = strlen(current_field); if ((n + len) >= MAX_TOKEN) return (ORIGINAL_MESSAGE); /* no space left*/ (void)strcpy(&newmsg[n],current_field); n += len; break; case 'k': /* %k -> current_key */ len = strlen(current_key); if ((n + len) >= MAX_TOKEN) return (ORIGINAL_MESSAGE); /* no space left*/ (void)strcpy(&newmsg[n],current_key); n += len; break; case 'v': /* %v -> current_value */ len = strlen(current_value); if ((n + len) >= MAX_TOKEN) return (ORIGINAL_MESSAGE); /* no space left*/ (void)strcpy(&newmsg[n],current_value); n += len; break; case '%': /* %% -> % */ newmsg[n++] = (char)'%'; break; default: return (ORIGINAL_MESSAGE); /* no space left*/ } break; default: if (n >= MAX_TOKEN) return (ORIGINAL_MESSAGE); /* no space left*/ newmsg[n++] = msg[k]; break; } } newmsg[n] = (char)'\0'; /* terminate string */ return (newmsg); } #if defined(HAVE_STDC) static void free_match_pattern(MATCH_PATTERN *mp) #else /* K&R style */ static void free_match_pattern(mp) MATCH_PATTERN *mp; #endif { if (mp->pattern != (const char*)NULL) { /* NB: (void*) cast fails with Sun C++ */ FREE(mp->pattern); mp->pattern = (const char*)NULL; } if (mp->message != (const char*)NULL) { FREE(mp->message); mp->message = (const char*)NULL; } } #if defined(HAVE_STDC) static void free_pattern_table(PATTERN_TABLE *pt) #else /* K&R style */ static void free_pattern_table(pt) PATTERN_TABLE *pt; #endif { if (pt != (PATTERN_TABLE*)NULL) { free_pattern_table_entries(pt); FREE(pt); } } #if defined(HAVE_STDC) void free_pattern_table_entries(PATTERN_TABLE *pt) #else /* K&R style */ void free_pattern_table_entries(pt) PATTERN_TABLE *pt; #endif { int k; if (pt != (PATTERN_TABLE*)NULL) { for (k = 0; k < pt->current_size; ++k) free_match_pattern(&(pt->patterns[k])); if (pt->patterns != (MATCH_PATTERN*)NULL) FREE(pt->patterns); pt->current_size = 0; pt->maximum_size = 0; } } static void free_tables(VOID) { int k; /* index into pattern_names[] */ for (k = 0; pattern_names[k].name != (const char*)NULL; ++k) { /* free dynamic part */ free_pattern_table(pattern_names[k].table); FREE(pattern_names[k].name); pattern_names[k].name = (const char*)NULL; pattern_names[k].table = (PATTERN_TABLE *)NULL; } } int get_char(VOID) /* all input is read through this function */ { int c; /* NB: this is the ONLY place where the input file is read! */ c = (n_pushback > 0) ? pushback_buffer[--n_pushback] : getc(fpin); the_file.input.byte_position++; /* Adjust global status and position values */ if (c == EOF) eofile = YES; else if (c == '\n') { the_file.input.line_number++; the_file.input.last_column_position = the_file.input.column_position; the_file.input.column_position = 0L; non_white_chars = 0; } else if (!Isspace(c)) { the_file.input.last_column_position = the_file.input.column_position; the_file.input.column_position++; non_white_chars++; } else if (c == '\t') { the_file.input.last_column_position = the_file.input.column_position; the_file.input.column_position = (the_file.input.column_position + 8L) & ~07L; } else { the_file.input.last_column_position = the_file.input.column_position; the_file.input.column_position++; } if (c == '{') brace_level++; else if (c == '}') brace_level--; #if defined(DEBUG) if (fpdebug) (void)fprintf(fpdebug,"[%c] %5ld %4ld %2ld\n", c, the_file.input.byte_position, the_file.input.line_number, the_file.input.column_position); #endif /* defined(DEBUG) */ return (c); } int get_linebreak(VOID) { int c; int ns = 0; while (((c = get_char()) != EOF) && Isspace(c)) { switch (c) { case '\n': #if 0 return (((in_value == YES) && (keep_linebreaks == YES)) ? LINEBREAK : c); #else return (LINEBREAK); #endif case '\f': #if 0 return (((in_value == YES) && (keep_linebreaks == YES)) ? PARBREAK : c); #else return (PARBREAK); #endif default: ns++; break; } } put_back(c); return ((ns > 0) ? ' ' : '\0'); } int get_next_non_blank(VOID) { int c; int ff = 0; int nl = 0; if (keep_spaces == YES) c = get_char(); else if (KEEP_PREAMBLE_SPACES()) c = get_char(); else if (KEEP_STRING_SPACES()) c = get_char(); else { is_parbreak = NO; while (((c = get_char()) != EOF) && Isspace(c)) { switch (c) { case '\n': if ((in_value == YES) && (keep_linebreaks == YES)) return (LINEBREAK); nl++; break; case '\f': if ((in_value == YES) && (keep_linebreaks == YES)) return (c); ff++; break; default: break; } } is_parbreak = ((nl > 1) || (ff > 0)) ? YES : NO; } return (c); } static void init_tables(VOID) { int k; /* Convert statically-allocated table data to dynamic data */ for (k = 0; (k < MAX_PATTERN_NAMES) && (pattern_names[k].name != (const char *)NULL); ++k) { pattern_names[k].name = (const char *)Strdup(pattern_names[k].name); pattern_names[k].table = (PATTERN_TABLE*)malloc(sizeof(PATTERN_TABLE)); if (pattern_names[k].table == (PATTERN_TABLE*)NULL) fatal("Out of memory for pattern tables"); pattern_names[k].table->patterns = (MATCH_PATTERN*)NULL; pattern_names[k].table->current_size = 0; pattern_names[k].table->maximum_size = 0; } } #if defined(HAVE_STDC) int isidchar(int c) #else /* K&R style */ int isidchar(c) int c; #endif { /* See LaTeX User's Guide and Reference Manual, Section B.1.3, for the rules of what characters can be used in a BibTeX word value. Section 30 of BibTeX initializes id_class[] to match this, but curiously, allows ASCII DELete (0x3f), as an identifier character. This irregularity has been reported to Oren Patashnik on [06-Oct-1990]. We disallow it here. The Scribe syntax is simpler: letters, digits, ., #, &, and %. */ return ((Scribe == YES) ? (Isalnum(c) || (c == '.') || (c == '#') || (c == '&') || (c == '%') ) : (Isgraph(c) && (strchr("\"#%'(),={}",c) == (char*)NULL)) ); } #if defined(HAVE_STDC) int main(int argc, char *argv[]) #else /* K&R style */ int main(argc,argv) int argc; char *argv[]; #endif { const char *initfile; #if defined(vms) extern char **cmd_lin(); argv = cmd_lin( "", &argc, argv ); #endif /* defined(vms) */ initfile = GETDEFAULT(BIBCLEAN_INI,INITFILE); max_width = 0L; /* reset later */ stdlog = stderr; /* cannot assign at compile time on some systems */ program_name = argv[0]; check_inodes(); #if defined(DEBUG) fpdebug = tfopen("bibclean.dbg", "w"); #endif /* defined(DEBUG) */ the_file.input.filename = ""; the_file.output.filename = "stdout"; init_tables(); do_preargs(argc,argv);/* some args must be handled BEFORE initializations */ if (read_initialization_files == YES) do_initfile(getenv(SYSPATH),initfile); if (read_initialization_files == YES) do_initfile(getenv(USERPATH),initfile); do_args(argc,argv); if (max_width == 0L) /* set default value */ max_width = (prettyprint == YES) ? MAX_WIDTH : LONG_MAX; do_files(argc,argv); free_tables(); #if OS_VAXVMS exit (error_count ? EXIT_FAILURE : EXIT_SUCCESS); #endif /* OS_VAXVMS */ return (error_count ? EXIT_FAILURE : EXIT_SUCCESS); } #if defined(HAVE_STDC) void Memmove(void *target, const void *source, size_t n) #else /* K&R style */ void Memmove(target, source, n) void *target; const void *source; size_t n; #endif { char *t; const char *s; t = (char *)target; s = (const char*)source; if ((s <= t) && (t < (s + n))) /* overlap: need right to left copy */ { for (t = ((char *)target) + n - 1, s = ((const char*)source) + n - 1; n > 0; --n) *t-- = *s--; } else /* left to right copy is okay */ { for ( ; n > 0; --n) *t++ = *s++; } } #if defined(HAVE_STDC) void* Memset(void *target, int value, size_t n) #else /* K&R style */ void* Memset(target, value, n) void *target; int value; size_t n; #endif { unsigned char *t = (unsigned char*)target; for ( ; n > 0; --n) *t++ = (unsigned char)value; return (target); } void out_at(VOID) { out_string(TOKEN_AT, "@"); } #if defined(HAVE_STDC) void /* output c, but trim trailing blanks, */ out_c(int c) /* and output buffer if c == EOF */ #else /* K&R style */ void out_c(c) /* output c, but trim trailing blanks, */ int c; /* and output buffer if c == EOF */ #endif { int offset; switch (c) { case EOF: bflush(); /* output all but last line of buf[], */ break; /* or all of it, if on last line */ case DELETE_CHAR: /* delete last character from buf[] */ bdelc(); break; case DELETE_LINE: /* delete current line in buf[] */ bdelline(); break; case DELETE_WHITESPACE: /* discarding trailing whitespace */ for (c = blastc(); Isspace(c); c = blastc()) bdelc(); /* If the buffer ends with an inline comment, then we just deleted the newline that terminates it, so we must put it back */ for (offset = 0; ((c = bpeekc(offset)) != EOF) && (c != '\n'); offset--) { if (c == BIBTEX_COMMENT_PREFIX) { bputc('\n'); break; } } break; #if OS_PCDOS case '\r': /* Because we open the input file in binary mode to prevent Ctl-Z causing an end-of-file, we see Ctl-M characters. We simply discard them here: they will be supplied by the run-time library when the following newline is written, since the output files are opened in text mode. */ break; #endif case '\n': for (c = blastc(); (c == ' ') || (c == '\t'); c = blastc()) bdelc(); /* discard trailing horizontal space */ bputc('\n'); break; default: /* output ordinary character, with possible line wrap */ if ((prettyprint == NO) && (c != '\n')) { /* need to line wrap? */ if (bcolumn() > (max_width - 2)) { /* yes, output backslash-newline pair */ the_file.input.last_column_position = the_file.input.column_position; bputc('\\'); bputc('\n'); } } bputc(c); break; } /* end switch (c) */ } #if defined(HAVE_STDC) static void out_error(FILE *fpout, const char *s) #else /* K&R style */ static void out_error(fpout, s) FILE *fpout; const char *s; #endif { if (fpout == stdout) /* private handling of stdout so we */ out_s(s); /* can track positions */ else (void)fputs(s,fpout); } void out_flush(VOID) /* flush buffered output */ { out_c(EOF); /* magic value to flush buffers */ out_c(EOF); /* NB: TWO EOFs needed to really flush: */ /* see out_c() for the explanation */ } #if defined(HAVE_STDC) static void out_input_position(IO_PAIR *pair) #else /* K&R style */ static void out_input_position(pair) IO_PAIR *pair; #endif { out_s("# line "); out_number(pair->input.line_number); out_s(" \""); out_s(pair->input.filename); out_s("\"\n"); } #if defined(HAVE_STDC) void out_lines(FILE *fpout, const char *lines[], YESorNO pausing) #else /* K&R style */ void out_lines(fpout, lines, pausing) FILE *fpout; const char *lines[]; YESorNO pausing; #endif { int k; #if (SCREEN_LINES > 0) int lines_on_screen; int nlines; if (pausing == YES) { kbopen(); for (nlines = 0; lines[nlines] != (const char*)NULL; ++nlines) NOOP; /* count number of lines */ for (k = 0, lines_on_screen = 0; ; ) { if (lines[k] != (const char*)NULL) { (void)fputs(lines[k], fpout); if (strchr(lines[k],'\n') != (char*)NULL) lines_on_screen++; /* some lines[k] are only partial */ } if ((lines_on_screen == (screen_lines - 2)) || (lines[k] == (const char*)NULL)) { /* pause for user action */ lines_on_screen = 0; screen_lines = get_screen_lines(); /* maybe window resize? */ k = do_more(fpout,k,screen_lines - 2,lines); if (k == EOF) break; /* here's the loop exit */ else if (k == LAST_SCREEN_LINE) k = nlines - (screen_lines - 2); if (k < 0) /* ensure k stays in range */ k = 0; else if (k >= nlines) k = nlines - 1; } else /* still filling current screen */ k++; } /* end for (k...) */ kbclose(); } else /* pausing == NO */ { for (k = 0; lines[k] != (const char*)NULL; k++) (void)fputs(lines[k], fpout); } #else /* NOT (SCREEN_LINES > 0) */ for (k = 0; lines[k] != (const char*)NULL; k++) (void)fputs(lines[k], fpout); #endif /* (SCREEN_LINES > 0) */ } void out_newline(VOID) { out_string(TOKEN_NEWLINE, "\n"); } #if defined(HAVE_STDC) static void out_number(long n) #else /* K&R style */ static void out_number(n) long n; #endif { char number[22]; /* ceil(log10(2^64-1))+1, big enough */ /* for even 64-bit machines */ (void)sprintf(number,"%ld",n); out_s(number); } #if defined(HAVE_STDC) static void out_position(FILE* fpout, const char *msg, IO_PAIR *the_location) #else /* K&R style */ static void out_position(fpout,msg,the_location) FILE* fpout; const char *msg; IO_PAIR *the_location; #endif { char s[sizeof( " output byte=XXXXXXXXXX line=XXXXXXXXXX column=XXXXXXXXXX")+1]; out_error(fpout, msg); (void)sprintf(s," input byte=%ld line=%ld column=%2ld", the_location->input.byte_position, the_location->input.line_number, the_location->input.column_position); out_error(fpout, s); (void)sprintf(s, " output byte=%ld line=%ld column=%2ld\n", the_location->output.byte_position, the_location->output.line_number, the_location->output.column_position); out_error(fpout, s); } #if defined(HAVE_STDC) void out_s(const char *s) /* output a string, wrapping long lines */ #else /* K&R style */ void out_s(s) /* output a string, wrapping long lines */ const char *s; #endif { /* The strings s[] has already had runs of whitespace of all kinds collapsed to single spaces. The word_length() function returns 1 more than the actual non-blank word length at end of string, so that we can automatically account for the comma that will be supplied after the string. */ for (; *s; ++s) { switch (*s) { case ' ': /* may change space to new line and indent */ if ((wrapping == YES) && (the_file.output.column_position + 1 + word_length(s+1)) > max_width) wrap_line(); else out_c((unsigned char)*s); break; case PARBREAK: /* Possible after first character only if */ /* keep_parbreaks == YES. Cannot use */ /* wrap_line(), because that is infinitely */ /* recursive to this statement! */ out_c((unsigned char)'\n'); out_c((unsigned char)'\n'); /* two newlines marks a parbreak */ if (keep_spaces == NO) out_spaces(VALUE_INDENTATION); /* supply leading indentation */ break; case LINEBREAK: out_c((unsigned char)'\n'); /* change LINEBREAK to newline */ if (keep_spaces == NO) { out_spaces(VALUE_INDENTATION); /* supply leading indentation */ while (s[1] == ' ') /* and ignore following explicit space */ ++s; } break; #if 0 /* It appears that wrapping at these punctuation characters is a bad idea, because it can introduce line breaks in strings which should not be broken, such as file names, and WWW URL fields. */ case '!': /* may wrap after certain punctuation */ case '&': case '+': case ',': case '.': case ':': case ';': case '=': case '?': out_c((unsigned char)*s); if ((wrapping == YES) && (the_file.output.column_position + word_length(s+1)) > max_width) wrap_line(); break; #endif default: /* everything else is output verbatim */ out_c((unsigned char)*s); } } } #if defined(HAVE_STDC) void out_spaces(int n) #else /* K&R style */ void out_spaces(n) int n; #endif { if (prettyprint == YES) { for (; n > 0; --n) out_c(' '); } /* If we are not prettyprinting, but lexically analyzing, we */ /* cannot use n as a reliable count of spaces, because it is */ /* based on column positions in prettyprinted output. We must */ /* therefore simply discard TOKEN_SPACE from the output stream. */ } #if defined(HAVE_STDC) static void out_status (FILE* fpout,const char *prefix) #else /* K&R style */ static void out_status(fpout,prefix) FILE* fpout; const char *prefix; #endif { if (show_file_position == YES) { out_error(fpout, prefix); out_error(fpout, " File positions: input ["); out_error(fpout, original_file.input.filename); out_error(fpout, "] output ["); out_error(fpout, original_file.output.filename); out_error(fpout, "]\n"); out_error(fpout, prefix); out_position(fpout, " Entry ", &the_entry); out_error(fpout, prefix); out_position(fpout, " Value ", &the_value); out_error(fpout, prefix); out_position(fpout, " Current", &original_file); } } #if defined(HAVE_STDC) void out_string(token_t type, const char *token) #else /* K&R style */ void out_string(type,token) token_t type; const char *token; #endif { if (KEEP_PREAMBLE_SPACES()) out_verbatim(token); else if (KEEP_STRING_SPACES()) out_verbatim(token); else if (prettyprint == YES) out_s(token); /* prettyprinted output */ else out_token(type,token); /* lexical analysis output */ } #if defined(HAVE_STDC) void out_token(token_t type, const char *token) /* lexical analysis output */ #else /* K&R style */ void out_token(type,token) token_t type; const char *token; #endif { char octal[4 + 1]; static long last_line_number = 0L; if (*token == (char)'\0') /* ignore empty tokens */ return; if (last_line_number < token_start.input.line_number) { out_input_position(&token_start); last_line_number = token_start.input.line_number; } out_number((long)type); out_c('\t'); out_s(type_name[(int)type]); out_c('\t'); out_c('"'); for (; *token; ++token) { switch (*token) { case '"': case '\\': out_c('\\'); out_c(*token); break; case '\b': out_c('\\'); out_c('b'); break; case '\f': out_c('\\'); out_c('f'); break; case LINEBREAK: case '\n': out_c('\\'); out_c('n'); break; case '\r': out_c('\\'); out_c('r'); break; case '\t': out_c('\\'); out_c('t'); break; case '\v': out_c('\\'); out_c('v'); break; case PARBREAK: /* two newlines mark a parbreak */ out_c('\\'); out_c('n'); out_c('\\'); out_c('n'); break; default: if (Isprint(*token)) out_c((unsigned char)*token); else { (void)sprintf(octal,"\\%03o",BYTE_VAL(*token)); out_s(octal); } break; } } out_c('"'); out_c('\n'); } #if defined(HAVE_STDC) void out_verbatim(const char *token) #else /* K&R style */ void out_verbatim(token) const char *token; #endif { for (; *token; ++token) { switch (*token) { case LINEBREAK: out_c((unsigned char)'\n'); break; case PARBREAK: out_c((unsigned char)'\n'); out_c((unsigned char)'\n'); break; default: out_c((unsigned char)*token); break; } } } #if defined(HAVE_STDC) void out_with_error(const char *s, const char *msg) #else /* K&R style */ void out_with_error(s,msg) /* output string s, error message, and resynchronize */ const char *s; const char *msg; #endif { out_s(s); error(msg); resync(); } #if defined(HAVE_STDC) void out_with_parbreak_error(char *s) #else /* K&R style */ void out_with_parbreak_error(s) char *s; #endif { out_with_error(s, "Unexpected paragraph break for field ``%f''"); } #if defined(HAVE_STDC) void put_back(int c) /* put last get_char() value back onto input stream */ #else /* K&R style */ void put_back(c) /* put last get_char() value back onto input stream */ int c; #endif { if (n_pushback >= MAX_PUSHBACK) { warning("Pushback buffer overflow: characters lost"); return; } pushback_buffer[n_pushback++] = c; the_file.input.byte_position--; /* Adjust status values that are set in get_char() */ if (!Isspace(c)) non_white_chars--; if (c == EOF) eofile = NO; else if (c == '\n') { the_file.input.column_position = the_file.input.last_column_position; the_file.input.line_number--; } else if (c == '\t') the_file.input.column_position = the_file.input.last_column_position; else the_file.input.column_position--; if (c == '{') brace_level--; else if (c == '}') brace_level++; } static void resync(VOID) /* copy input to output until new entry met */ { /* and set resynchronization flag */ rflag = YES; do_other(); /* copy text until new entry found */ brace_level = 0; /* might have been non-zero because of errors */ } #if defined(HAVE_STDC) char* Strdup(const char *s) #else /* K&R style */ char* Strdup(s) const char *s; #endif { char *p; p = (char*)malloc(strlen(s)+1); if (p == (char*)NULL) fatal("Out of string memory"); return (strcpy(p,s)); } #if defined(HAVE_STDC) int stricmp(const char *s1,const char *s2) #else /* K&R style */ int stricmp(s1, s2) const char *s1; const char *s2; #endif { #define TOUPPER(c) (Islower(c) ? toupper(c) : (c)) while ((*s1) && (TOUPPER(*s1) == TOUPPER(*s2))) { s1++; s2++; } return((int)(TOUPPER(*s1) - TOUPPER(*s2))); #undef TOUPPER } #if defined(HAVE_STDC) int strnicmp(const char *s1, const char *s2, size_t n) #else /* K&R style */ int strnicmp(s1,s2,n) const char *s1; const char *s2; size_t n; #endif { int c1; int c2; /******************************************************************* Compare strings ignoring case, stopping after n characters, or at end-of-string, whichever comes first. *******************************************************************/ for (; (n > 0) && *s1 && *s2; ++s1, ++s2, --n) { c1 = 0xff & (int)(Islower(*s1) ? (int)*s1 : tolower(*s1)); c2 = 0xff & (int)(Islower(*s2) ? (int)*s2 : tolower(*s2)); if (c1 < c2) return (-1); else if (c1 > c2) return (1); } if (n == 0) /* first n characters match */ return (0); else if (*s1 == '\0') return ((*s2 == '\0') ? 0 : -1); else /* (*s2 == '\0') */ return (1); } #if defined(HAVE_STDC) FILE* tfopen(const char *filename, const char *mode) /* traced file opening */ #else /* K&R style */ FILE* tfopen(filename,mode) const char *filename; const char *mode; #endif { FILE *fp; fp = FOPEN(filename,mode); if (trace_file_opening == YES) (void)fprintf(stdlog,"%s open file [%s]%s\n", WARNING_PREFIX, filename, (fp == (FILE*)NULL) ? ": FAILED" : ""); return (fp); } #if defined(HAVE_STDC) void warning(const char *msg) /* issue a warning message to stdlog */ #else /* K&R style */ void warning(msg) /* issue a warning message to stdlog */ const char *msg; #endif { if (warnings == YES) { out_flush(); /* flush all buffered output */ /* Because warnings are often issued in the middle of lines, we start a new line if stdlog and stdout are the same file. */ original_file = the_file; /* save for error messages */ (void)fprintf(stdlog,"%s%s \"%s\", line %ld: %s.\n", (stdlog_on_stdout == YES) ? "\n" : "", WARNING_PREFIX, the_file.input.filename, the_value.input.line_number, format(msg)); out_status(stdlog, WARNING_PREFIX); (void)fflush(stdlog); } } #if defined(HAVE_STDC) static int word_length(const char *s) /* return length of leading non-blank prefix */ #else /* K&R style */ static int word_length(s) /* return length of leading non-blank prefix */ const char *s; #endif { size_t n; for (n = 0; s[n]; ++n) { if (Isspace(s[n])) break; } return ((int)((s[n] == '\0') ? n + 1 : n)); /* at end of string, return one more than */ /* true length to simplify line wrapping */ } static void wrap_line(VOID) /* insert a new line and leading indentation */ { out_newline(); out_spaces(VALUE_INDENTATION); /* supply leading indentation */ } /*********************************************************************** We put this regular expression matching code last because (a) it is not universally available, (b) the 6 macros in the HAVE_REGEXP section can only be defined once, and (c) there are three variants: the old ugly regexp.h interface (HAVE_REGEXP), the new clean regex.h interface (HAVE_RECOMP), and the GNU version (not yet supported here) ***********************************************************************/ /**********************************************************************/ #if defined(HAVE_RECOMP) #if (_AIX || ultrix) /* AIX 370, AIX PS/2, and ULTRIX have these, but no regex.h, sigh... */ #if __cplusplus extern "C" { #endif /* __cplusplus */ char *re_comp ARGS((const char *s_)); int re_exec ARGS((const char *s_)); #if __cplusplus }; #endif /* __cplusplus */ #else /* NOT (_AIX || ultrix) */ #if defined(HAVE_REGEX_H) #include #endif #endif /* (_AIX || ultrix) */ #if defined(HAVE_STDC) static int match_regexp(const char *string,const char *pattern) #else /* K&R style */ static int match_regexp(string,pattern) const char *string; const char *pattern; #endif { if (re_comp(pattern) != (char*)NULL) fatal("Internal error: bad regular expression"); switch (re_exec(string)) { case 1: return (YES); case 0: return (NO); default: fatal("Internal error: bad regular expression"); } return (YES); /* keep optimizers happy */ } #endif /* defined(HAVE_RECOMP) */ /**********************************************************************/ #if defined(HAVE_REGEXP) const char *sp_global; #define ERROR(c) regerr() #define GETC() (*sp++) #define INIT const char *sp = sp_global; #define PEEKC() (*sp) #define RETURN(c) return(c) #define UNGETC(c) (--sp) void regerr(VOID) { fatal("Internal error: bad regular expression"); } #if defined(HAVE_REGEXP_H) #include #endif #if defined(HAVE_STDC) static int match_regexp(const char *string,const char *pattern) #else /* K&R style */ static int match_regexp(string,pattern) const char *string; const char *pattern; #endif { char expbuf[MAX_TOKEN_SIZE]; sp_global = string; (void)compile((char*)pattern, (char*)expbuf, (char*)(expbuf + sizeof(expbuf)), '\0'); return (step((char*)string,(char*)expbuf) ? YES : NO); } #endif /* defined(HAVE_REGEXP) */ /**********************************************************************/ bibclean-2.11.4.1.orig/fix.c0000644000175200017520000004302006721010033014607 0ustar debiandebian#include #include "xctype.h" #include "xstring.h" RCSID("$Id: fix.c,v 1.6 1999/05/20 13:36:45 beebe Exp beebe $") #include "yesorno.h" #include "token.h" #define SKIP_SPACE(p) while (isspace((unsigned char)*p)) ++p typedef struct s_name_pair { const char *old_name; const char *new_name; } NAME_PAIR; extern char current_value[]; /* string value */ extern YESorNO fix_font_changes; /* brace {\em E. Coli}? */ extern YESorNO fix_initials; /* reformat A.U. Thor? */ extern YESorNO fix_names; /* reformat Bach, P.D.Q? */ extern NAME_PAIR month_pair[]; extern YESorNO Scribe; /* Scribe format input */ extern YESorNO check_junior ARGS((const char *last_name_)); extern void check_length ARGS((size_t n_)); extern char shared_string[MAX_TOKEN_SIZE]; static void brace_font_changes ARGS((void)); char *fix_author ARGS((char *author_)); void fix_month ARGS((void)); void fix_namelist ARGS((void)); void fix_pages ARGS((void)); char *fix_periods ARGS((char *author_)); void fix_title ARGS((void)); static const char *month_token ARGS((const char *s_, size_t *p_len_)); static void brace_font_changes(VOID) { int b_level; /* brace level */ size_t k; /* index into current_value[] */ size_t m; /* index into s[] */ YESorNO need_close_brace; char *p; /* pointer into current_value[] */ char *s = shared_string; /* memory-saving device */ /******************************************************************* If the user has coded a title string like "Signal-transducing {G} proteins in {\em Dictyostelium Discoideum}" or "Signal-transducing {G} proteins in {\em {D}ictyostelium {D}iscoideum}" BibTeX styles that downcase titles will downcase the name Dictyostelium Discoideum, even WITH the protecting braces around the D's. The solution offered by this function is to rewrite the title string as "Signal-transducing {G} proteins in {{\em Dictyostelium Discoideum}}" This action cannot be taken without forethought, because there are many cases where the downcasing inside font changes is consistent, so the default run-time option is -no-fix-font-changes. *******************************************************************/ for (b_level = 0, k = 0, m = 0, need_close_brace = NO; current_value[k] ; ++k, ++m) { switch (current_value[k]) { case '{': /* '}' for balance */ b_level++; if (b_level == 1) { p = ¤t_value[k+1]; SKIP_SPACE(p); if (*p == '{') /* '}' for balance */ break; /* already have extra brace level */ if ( (strncmp(p,"\\bf",3) == 0) || (strncmp(p,"\\em",3) == 0) || (strncmp(p,"\\it",3) == 0) || (strncmp(p,"\\rm",3) == 0) || (strncmp(p,"\\sf",3) == 0) || (strncmp(p,"\\sl",3) == 0) || (strncmp(p,"\\tt",3) == 0) ) { s[m++] = '{'; /* '}' for balance */ need_close_brace = YES; } } break; /* '{' for balance */ case '}': if ((b_level == 1) && (need_close_brace == YES)) { /* '{' for balance */ s[m++] = '}'; need_close_brace = NO; } b_level--; break; default: break; } s[m] = current_value[k]; } s[m] = '\0'; /* terminate collected string */ (void)strcpy(current_value, s); } #if defined(HAVE_STDC) char * /* normalize author names and return */ fix_author(char *author) /* new string from static space */ #else /* K&R style */ char * fix_author(author) /* normalize author names and return */ char *author; /* new string from static space */ #endif { size_t a; /* index into author[] */ int b_level; /* brace level */ char *p; /* pointer into author[] */ char *pcomma; /* pointer to last unbraced comma in author[] */ static char s[MAX_TOKEN_SIZE]; /* returned to caller */ /* Convert "Smith, J.K." to "J. K. Smith" provided "," and "." are */ /* at brace level 0 */ if (fix_names == NO) return (author); /* Leave untouched entries like: */ /* author = "P. D. Q. Bach (113 MozartStrasse, Vienna, Austria)" */ if (strchr(author,'(') != (char*)NULL) return (author); /******************************************************************* We now have a tricky job. Some names have additional parts, which BibTeX calls "von" and "Jr.". It permits them to be input as (see L. Lamport, ``LaTeX User's Guide and Reference Manual'', pp. 141--142) Brinch Hansen, Per OR Per {Brinch Hansen} Ford, Jr., Henry OR Henry {Ford, Jr.} {Steele Jr.}, Guy L. OR Guy L. {Steele Jr.} von Beethoven, Ludwig OR Ludwig von Beethoven {von Beethoven}, Ludwig OR Ludwig {von Beethoven} The last two lines are NOT equivalent; the first will be alphabetized under Beethoven, and the second under von. Other examples include names like Charles XII, King OR King Charles XII Ford, Sr., Henry OR Henry {Ford, Sr.} Vallee Poussin, C. L. X. J. de la OR C. L. X. J. de la Vallee Poussin van der Waerden, Bartel Leendert OR Bartel Leendert van der Waerden These transformations conform to the general patterns B, A --> A B B C, A --> A B C (von case) B C, A --> A {B C} (Brinch Hansen case) B, C, A --> A {B, C} (Jr. case) A, B, and C represent one or more space-separated words, or brace-delimited strings with arbitrary contents. Notice the conflict: the von case differs from Brinch Hansen in that braces may NOT be inserted when the name is reordered, because this changes the alphabetization. In order to deal with this ambiguity, we supply braces in the "B C, A" case ONLY when the C part matches something like Jr (see the juniors[] table above), or when it looks like a small number in Roman numerals. The latter case is uncommon, and we therefore don't bother to attempt to parse it to determine whether it is a valid number. The "B, C, A" case (multiple level-zero commas) is unambiguous, and can be converted to the form "A {B, C}". *******************************************************************/ for (a = 0, b_level = 0, pcomma = (char*)NULL; author[a]; ++a) { /* convert "Smith, John" to "John Smith" */ switch (author[a]) { case '{': b_level++; break; case '}': b_level--; break; case ',': if (b_level == 0) pcomma = &author[a]; /* remember last unbraced comma */ break; default: break; } } if (pcomma == (char*)NULL) /* no commas, so nothing more to do */ return (author); *pcomma = '\0'; /* terminate "Smith" */ /* have "Smith, J.K." or "Smith, Jr., J.K." */ p = pcomma + 1; SKIP_SPACE(p); (void)strcpy(s,p); /* s <- "J.K." */ (void)strcat(s," "); /* s <- "J.K. " */ if (check_junior(author) == YES) { (void)strcat(s,"{"); (void)strcat(s,author); /* s <- "J.K. {Smith, Jr.}" */ (void)strcat(s,"}"); } else (void)strcat(s,author); /* s <- "J.K. Smith" */ return (strcpy(author,s)); } void fix_month(VOID) /* convert full month names to macros*/ { /* for better style-file customization */ size_t k; /* index into month_pair[] and s[] */ size_t token_length; /* token length */ const char *p; /* pointer to current_value[] */ char *s = shared_string; /* memory-saving device */ const char *token; /* pointer into current_value[] */ for (p = current_value; (token = month_token(p,&token_length)) != (const char*)NULL; p = (const char*)NULL) { if (token_length == 1) /* just copy single-char tokens */ *s++ = *token; else { for (k = 0; month_pair[k].old_name != (const char*)NULL; ++k) { if ((strlen(month_pair[k].old_name) == token_length) && (strnicmp(month_pair[k].old_name,token,token_length) == 0)) { /* change "January" to jan etc. */ (void)strcpy(s,"\" # "); if ((s >= (shared_string + 1)) && (strncmp(s-1,"\"\" # ",5) == 0)) { /* eliminate any concatenation with an empty string */ s--; *s = '\0'; /* need string terminator for strcat() */ } (void)strcat(s,month_pair[k].new_name); (void)strcat(s," # \""); s = strchr(s,'\0'); token_length = 0; /* so we don't copy twice at loop end */ break; /* exit loop after first substitution */ } } /* end for (k = 0, ...) */ (void)strncpy(s,token,token_length); /* no definition, just copy */ s += token_length; } if ((s >= (shared_string + 5)) && (strncmp(s-5," # \"\"",5) == 0)) s -= 5; /* eliminate any concatenation with an empty string */ } *s = '\0'; /* supply string terminator */ k = (size_t)(s - shared_string); s = shared_string; if (strncmp(s,"\"\" # ",5) == 0) (void)strcpy(current_value,&s[5]); /* discard initial empty string */ else (void)strcpy(current_value,s); } void fix_namelist(VOID) /* normalize list of personal names */ { /* leaving it in global current_value[] */ size_t m; /* index of start of author in current_value[]*/ size_t n; /* length of current_value[], less 1 */ char namelist[MAX_TOKEN_SIZE]; /* working copy of current_value[] */ size_t v; /* loop index into current_value[] */ /* Convert "Smith, J.K. and Brown, P.M." to */ /* "J. K. Smith and P. M. Brown" */ /* We loop over names separated by " and ", and hand each off */ /* to fix_author() */ n = strlen(current_value) - 1; /* namelist = "\"...\"" */ if ((current_value[0] != '"') || (current_value[n] != '"')) /* sanity check */ return; /* not quoted string, may be macro */ (void)strcpy(namelist,"\"");/* supply initial quotation mark */ current_value[n] = (char)'\0'; /* clobber final quotation mark */ for (v = 1, m = 1; v < n; ++v) /* start past initial quotation mark */ { if (strncmp(" and ",¤t_value[v],5) == 0) { current_value[v] = (char)'\0'; (void)strcat(namelist,fix_periods(fix_author(¤t_value[m]))); (void)strcat(namelist," and "); current_value[v] = (char)' '; v += 4; m = v + 1; } else if ((Scribe == YES) && (current_value[v] == ';')) { /* expand semicolons to " and " */ current_value[v] = (char)'\0'; (void)strcat(namelist,fix_periods(fix_author(¤t_value[m]))); (void)strcat(namelist," and "); current_value[v] = (char)' '; m = v + 1; } } (void)strcat(namelist,fix_periods(fix_author(¤t_value[m]))); /* handle last author */ (void)strcat(namelist,"\""); /* supply final quotation mark */ (void)strcpy(current_value,namelist); } void fix_pages(VOID) { size_t k; /* index into current_value[] */ size_t m; /* index into new_value[] */ char new_value[MAX_TOKEN_SIZE]; /* working copy of new_value[] */ char last_char; last_char = ' '; for (m = 0, k = 0; current_value[k]; ++k) { /* squeeze out spaces around hyphens */ /* and convert hyphen runs to en-dashes */ if (current_value[k] == '-') { /* convert hyphens to en-dash */ for ( ; (m > 0) && Isspace(new_value[m-1]) ; ) --m; /* discard preceding spaces */ for ( ; current_value[k+1] == '-'; ) ++k; for ( ; Isspace(current_value[k+1]); ) ++k; /* discard following spaces */ new_value[m++] = (char)'-'; /* save an en-dash */ /* [04-Mar-1996] force en-dash between digit pairs, alpha pairs, and digit-alpha pairs, but not otherwise, so ``pages = "A-3-A-7"'' is converted to ``pages = "A-3--A-7"''. */ if ((Isdigit(last_char) && Isdigit(current_value[k+1])) || (Isalpha(last_char) && Isalpha(current_value[k+1])) || (Isdigit(last_char) && Isalpha(current_value[k+1])) || (current_value[k+1] == '?')) new_value[m++] = (char)'-'; } else { new_value[m++] = current_value[k]; if (!Isspace(current_value[k])) /* remember last non-blank non-hyphen char */ last_char = current_value[k]; } } new_value[m] = (char)'\0'; (void)strcpy(current_value,new_value); } #if defined(HAVE_STDC) char * fix_periods(char *author) #else /* K&R style */ char * fix_periods(author) char *author; #endif { int b_level; /* brace level */ size_t a; /* index in author[] */ size_t n; /* index in name[] */ char *name = shared_string; /* memory-saving device */ if (fix_initials == NO) return author; /* Convert "J.K. Smith" to "J. K. Smith" if "." at brace level 0 */ for (b_level = 0, a = 0, n = 0; /* NO-OP (exit below) */ ; ++a, ++n) { name[n] = author[a]; /* copy character */ if (author[a] == '\0') break; /* here's the loop exit */ switch (author[a]) { case '{': b_level++; break; case '}': b_level--; break; case '.': if (b_level == 0) { if ((a > 0) && Isupper(author[a-1]) && Isupper(author[a+1])) name[++n] = (char)' '; /* supply space between initials */ } break; } } return (name); } void fix_title(VOID) /* protect upper-case acronyms */ { YESorNO brace_letter; int b_level; /* brace level */ size_t k; /* index into s[] */ char *s = shared_string; /* memory-saving device */ size_t t; /* index into title[] */ if (current_value[0] != '\"') return; /* leave macros alone */ for (k = 0, b_level = 0, t = 0; current_value[t]; ) { switch (current_value[t]) { case '{': b_level++; s[k++] = current_value[t++]; break; case '}': b_level--; s[k++] = current_value[t++]; break; default: if (b_level > 0) brace_letter = NO; /* already braced, so no changes */ else if (Isupper(current_value[t])) /* maybe brace + */ { /* or */ if (Isupper(current_value[t+1]) || Isdigit(current_value[t+1])) brace_letter = YES; /* XY -> {XY}, X11 -> {X11} */ else if (!Isalpha(current_value[t+1])) { if ((t == 1) && (current_value[t] == 'A')) brace_letter = NO; /* "A gnat" -> "A gnat" */ else brace_letter = YES; /* "The C book" -> "The {C} Book" */ } else brace_letter = NO; /* everything else unchanged */ } else if (current_value[t] == '\\') /* TeX control word? */ { size_t n; size_t nupper; for (nupper = 0, n = t + 1; Isalpha(current_value[n]); ++n) { /* scan over control word */ if (Isupper(current_value[n])) nupper++; } if (n > (t + 1)) /* then saw control word */ { if (nupper > 0) /* then saw upper case letters */ { /* so must brace control word */ s[k++] = (char)'{'; while (t < n) s[k++] = current_value[t++]; s[k++] = (char)'}'; if ((current_value[t] == '{') && (current_value[t+1] == '}')) t += 2; /* \TeX{} -> {\TeX} */ else if ((current_value[t] == '\\') && (current_value[t+1] == ' ')) t++; /* \TeX\ -> {\TeX} */ break; /* jump out of switch() */ } } brace_letter = NO; } else brace_letter = NO; if (brace_letter) { /* Convert XWS to {XWS} and X11 to {X11} */ s[k++] = (char)'{'; while (Isupper(current_value[t]) || Isdigit(current_value[t])) s[k++] = current_value[t++]; s[k++] = (char)'}'; } else s[k++] = current_value[t++]; break; } } s[k] = (char)'\0'; check_length(k); (void)strcpy(current_value,s); if (fix_font_changes == YES) brace_font_changes(); } #if defined(HAVE_STDC) static const char * month_token(const char *s, size_t *p_len) #else /* K&R style */ static const char * month_token(s, p_len) const char *s; size_t *p_len; #endif { /* Return pointer to next token in s[], with its length in *p_len */ /* if s is NULL, the parsing continues from where it was last. */ /* A token is either a sequence of letters, possibly with a terminal */ /* period, or else a single character. Outside quoted strings, all */ /* characters are considered non-letters. This code is vaguely modelled */ /* on Standard C's strtok() function. */ /* Bug fix for version 2.11.4 [09-May-1998]: Prior to this version, a value mar # "\slash" # apr would be incorrectly transformed month = mar # "\slash" # " # apr # " because in_quoted_string was incorrect for the remainder of the value. If the input value was changed to mar # "\slash " # apr then that space inside the quoted string preserved the correctness of in_quoted_string, and the output was correct. For version 2.11.4, the body of this function has been entirely rewritten to simplify the logic, and ensure its correctness. */ static int b_level = 0; /* remembered across calls */ static YESorNO in_quoted_string = NO; /* remembered across calls */ static const char *next = (const char *)NULL; /* remembered across calls */ const char *token; /* pointer to returned token */ if (s != (const char*)NULL) /* do we have a new s[]? */ { next = s; /* yes, remember it */ b_level = 0; /* and reinitialize state */ in_quoted_string = NO; /* variables */ } *p_len = 0; token = next; switch (*next) { case '"': if (b_level == 0) in_quoted_string = (in_quoted_string == YES) ? NO : YES; break; case '{': /* '}' for brace balance */ b_level++; break; /* '{' for brace balance */ case '}': b_level--; break; default: break; } #define ADVANCE ((*p_len)++, next++) if ((in_quoted_string == YES) && Isalpha(*next)) { /* collect possibly-dot-terminated alphabetic token */ while (Isalpha(*next)) ADVANCE; if (*next == '.') ADVANCE; } else if (*next != '\0') /* collect single-character token */ ADVANCE; #undef ADVANCE return ((*p_len == 0) ? (const char*)NULL : token); } bibclean-2.11.4.1.orig/configure0000755000175200017520000017312407133430666015615 0ustar debiandebian#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated automatically using autoconf version 2.13 # Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. # Defaults: ac_help= ac_default_prefix=/usr/local # Any additions from configure.in: # Initialize some variables set by options. # The variables have the same names as the options, with # dashes changed to underlines. build=NONE cache_file=./config.cache exec_prefix=NONE host=NONE no_create= nonopt=NONE no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= target=NONE verbose= x_includes=NONE x_libraries=NONE bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datadir='${prefix}/share' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' infodir='${prefix}/info' mandir='${prefix}/man' # Initialize some other variables. subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Maximum number of lines to put in a shell here document. ac_max_here_lines=12 ac_prev= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval "$ac_prev=\$ac_option" ac_prev= continue fi case "$ac_option" in -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; *) ac_optarg= ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case "$ac_option" in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir="$ac_optarg" ;; -build | --build | --buil | --bui | --bu) ac_prev=build ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build="$ac_optarg" ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file="$ac_optarg" ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) datadir="$ac_optarg" ;; -disable-* | --disable-*) ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` # Reject names that are not valid shell variable names. if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } fi ac_feature=`echo $ac_feature| sed 's/-/_/g'` eval "enable_${ac_feature}=no" ;; -enable-* | --enable-*) ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` # Reject names that are not valid shell variable names. if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } fi ac_feature=`echo $ac_feature| sed 's/-/_/g'` case "$ac_option" in *=*) ;; *) ac_optarg=yes ;; esac eval "enable_${ac_feature}='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix="$ac_optarg" ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he) # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat << EOF Usage: configure [options] [host] Options: [defaults in brackets after descriptions] Configuration: --cache-file=FILE cache test results in FILE --help print this message --no-create do not create output files --quiet, --silent do not print \`checking...' messages --version print the version of autoconf that created configure Directory and file names: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [same as prefix] --bindir=DIR user executables in DIR [EPREFIX/bin] --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] --libexecdir=DIR program executables in DIR [EPREFIX/libexec] --datadir=DIR read-only architecture-independent data in DIR [PREFIX/share] --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data in DIR [PREFIX/com] --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] --libdir=DIR object code libraries in DIR [EPREFIX/lib] --includedir=DIR C header files in DIR [PREFIX/include] --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] --infodir=DIR info documentation in DIR [PREFIX/info] --mandir=DIR man documentation in DIR [PREFIX/man] --srcdir=DIR find the sources in DIR [configure dir or ..] --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names EOF cat << EOF Host type: --build=BUILD configure for building on BUILD [BUILD=HOST] --host=HOST configure for HOST [guessed] --target=TARGET configure for TARGET [TARGET=HOST] Features and packages: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR EOF if test -n "$ac_help"; then echo "--enable and --with options recognized:$ac_help" fi exit 0 ;; -host | --host | --hos | --ho) ac_prev=host ;; -host=* | --host=* | --hos=* | --ho=*) host="$ac_optarg" ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir="$ac_optarg" ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir="$ac_optarg" ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir="$ac_optarg" ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir="$ac_optarg" ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ | --locals | --local | --loca | --loc | --lo) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) localstatedir="$ac_optarg" ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir="$ac_optarg" ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir="$ac_optarg" ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix="$ac_optarg" ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix="$ac_optarg" ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix="$ac_optarg" ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name="$ac_optarg" ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir="$ac_optarg" ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir="$ac_optarg" ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site="$ac_optarg" ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir="$ac_optarg" ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir="$ac_optarg" ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target="$ac_optarg" ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers) echo "configure generated by autoconf version 2.13" exit 0 ;; -with-* | --with-*) ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` # Reject names that are not valid shell variable names. if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } fi ac_package=`echo $ac_package| sed 's/-/_/g'` case "$ac_option" in *=*) ;; *) ac_optarg=yes ;; esac eval "with_${ac_package}='$ac_optarg'" ;; -without-* | --without-*) ac_package=`echo $ac_option|sed -e 's/-*without-//'` # Reject names that are not valid shell variable names. if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } fi ac_package=`echo $ac_package| sed 's/-/_/g'` eval "with_${ac_package}=no" ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes="$ac_optarg" ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries="$ac_optarg" ;; -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } ;; *) if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then echo "configure: warning: $ac_option: invalid host type" 1>&2 fi if test "x$nonopt" != xNONE; then { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } fi nonopt="$ac_option" ;; esac done if test -n "$ac_prev"; then { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } fi trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 # File descriptor usage: # 0 standard input # 1 file creation # 2 errors and warnings # 3 some systems may open it to /dev/tty # 4 used on the Kubota Titan # 6 checking for... messages and results # 5 compiler messages saved in config.log if test "$silent" = yes; then exec 6>/dev/null else exec 6>&1 fi exec 5>./config.log echo "\ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. " 1>&5 # Strip out --no-create and --no-recursion so they do not pile up. # Also quote any args containing shell metacharacters. ac_configure_args= for ac_arg do case "$ac_arg" in -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c) ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) ac_configure_args="$ac_configure_args '$ac_arg'" ;; *) ac_configure_args="$ac_configure_args $ac_arg" ;; esac done # NLS nuisances. # Only set these to C if already set. These must not be set unconditionally # because not all systems understand e.g. LANG=C (notably SCO). # Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! # Non-C LC_CTYPE values break the ctype check. if test "${LANG+set}" = set; then LANG=C; export LANG; fi if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -rf conftest* confdefs.h # AIX cpp loses on an empty file, so make sure it contains at least a newline. echo > confdefs.h # A filename unique to this package, relative to the directory that # configure is in, which we can look for to find out if srcdir is correct. ac_unique_file=bibclean.c # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then its parent. ac_prog=$0 ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. srcdir=$ac_confdir if test ! -r $srcdir/$ac_unique_file; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } else { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } fi fi srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then if test "x$prefix" != xNONE; then CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" else CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then echo "loading site script $ac_site_file" . "$ac_site_file" fi done if test -r "$cache_file"; then echo "loading cache $cache_file" . $cache_file else echo "creating cache $cache_file" > $cache_file fi ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cc_cross ac_exeext= ac_objext=o if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then ac_n= ac_c=' ' ac_t=' ' else ac_n=-n ac_c= ac_t= fi else ac_n= ac_c='\c' ac_t= fi for ac_prog in gawk nawk mawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:534: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_AWK'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else case "$AWK" in /*) ac_cv_path_AWK="$AWK" # Let the user override the test with a path. ;; ?:/*) ac_cv_path_AWK="$AWK" # Let the user override the test with a dos path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then ac_cv_path_AWK="$ac_dir/$ac_word" break fi done IFS="$ac_save_ifs" ;; esac fi AWK="$ac_cv_path_AWK" if test -n "$AWK"; then echo "$ac_t""$AWK" 1>&6 else echo "$ac_t""no" 1>&6 fi test -n "$AWK" && break done echo $ac_n "checking whether we have NeXT system""... $ac_c" 1>&6 echo "configure:571: checking whether we have NeXT system" >&5 if test -d /NextAdmin then CFLAGS=-posix echo "$ac_t""yes" 1>&6 else echo "$ac_t""no" 1>&6 fi # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:582: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then ac_cv_prog_CC="gcc" break fi done IFS="$ac_save_ifs" fi fi CC="$ac_cv_prog_CC" if test -n "$CC"; then echo "$ac_t""$CC" 1>&6 else echo "$ac_t""no" 1>&6 fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:612: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_prog_rejected=no ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" break fi done IFS="$ac_save_ifs" if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# -gt 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift set dummy "$ac_dir/$ac_word" "$@" shift ac_cv_prog_CC="$@" fi fi fi fi CC="$ac_cv_prog_CC" if test -n "$CC"; then echo "$ac_t""$CC" 1>&6 else echo "$ac_t""no" 1>&6 fi if test -z "$CC"; then case "`uname -s`" in *win32* | *WIN32*) # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:663: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then ac_cv_prog_CC="cl" break fi done IFS="$ac_save_ifs" fi fi CC="$ac_cv_prog_CC" if test -n "$CC"; then echo "$ac_t""$CC" 1>&6 else echo "$ac_t""no" 1>&6 fi ;; esac fi test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 echo "configure:695: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF #line 706 "configure" #include "confdefs.h" main(){return(0);} EOF if { (eval echo configure:711: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then ac_cv_prog_cc_cross=no else ac_cv_prog_cc_cross=yes fi else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_prog_cc_works=no fi rm -fr conftest* ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cc_cross echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 echo "configure:737: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 echo "configure:742: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no fi fi echo "$ac_t""$ac_cv_prog_gcc" 1>&6 if test $ac_cv_prog_gcc = yes; then GCC=yes else GCC= fi ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 echo "configure:770: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else echo 'void f(){}' > conftest.c if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then ac_cv_prog_cc_g=yes else ac_cv_prog_cc_g=no fi rm -f conftest* fi echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 if test "$ac_test_CFLAGS" = set; then CFLAGS="$ac_save_CFLAGS" elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi for ac_prog in $CCC c++ g++ gcc CC cxx cc++ cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:806: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then ac_cv_prog_CXX="$ac_prog" break fi done IFS="$ac_save_ifs" fi fi CXX="$ac_cv_prog_CXX" if test -n "$CXX"; then echo "$ac_t""$CXX" 1>&6 else echo "$ac_t""no" 1>&6 fi test -n "$CXX" && break done test -n "$CXX" || CXX="gcc" echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6 echo "configure:838: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 ac_ext=C # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext << EOF #line 849 "configure" #include "confdefs.h" int main(){return(0);} EOF if { (eval echo configure:854: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cxx_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then ac_cv_prog_cxx_cross=no else ac_cv_prog_cxx_cross=yes fi else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_prog_cxx_works=no fi rm -fr conftest* ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cc_cross echo "$ac_t""$ac_cv_prog_cxx_works" 1>&6 if test $ac_cv_prog_cxx_works = no; then { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 echo "configure:880: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6 cross_compiling=$ac_cv_prog_cxx_cross echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6 echo "configure:885: checking whether we are using GNU C++" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.C <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gxx=yes else ac_cv_prog_gxx=no fi fi echo "$ac_t""$ac_cv_prog_gxx" 1>&6 if test $ac_cv_prog_gxx = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS="${CXXFLAGS+set}" ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS= echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6 echo "configure:913: checking whether ${CXX-g++} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else echo 'void f(){}' > conftest.cc if test -z "`${CXX-g++} -g -c conftest.cc 2>&1`"; then ac_cv_prog_cxx_g=yes else ac_cv_prog_cxx_g=no fi rm -f conftest* fi echo "$ac_t""$ac_cv_prog_cxx_g" 1>&6 if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS="$ac_save_CXXFLAGS" elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi echo $ac_n "checking whether we need _ALL_SOURCE""... $ac_c" 1>&6 echo "configure:946: checking whether we need _ALL_SOURCE" >&5 all=no cat > conftest.$ac_ext < #include struct winsize w; int main() { ; return 0; } EOF if { (eval echo configure:960: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then : else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* all=maybe fi rm -f conftest* if test $all = maybe ; then cat > conftest.$ac_ext < #include struct winsize w; int main() { ; return 0; } EOF if { (eval echo configure:983: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat >> confdefs.h <<\EOF #define _ALL_SOURCE 1 EOF all=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest* fi if test $all = maybe ; then all=no ; fi echo "$ac_t""$all" 1>&6 echo $ac_n "checking whether we need _POSIX_SOURCE""... $ac_c" 1>&6 echo "configure:999: checking whether we need _POSIX_SOURCE" >&5 posix=no cat > conftest.$ac_ext < #include struct stat buffer; int main() { ; return 0; } EOF if { (eval echo configure:1013: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then : else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* posix=maybe fi rm -f conftest* if test $posix = maybe ; then cat > conftest.$ac_ext < #include struct stat buffer; int main() { ; return 0; } EOF if { (eval echo configure:1036: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat >> confdefs.h <<\EOF #define _POSIX_SOURCE 1 EOF posix=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest* fi if test $posix = maybe ; then posix=no ; fi echo "$ac_t""$posix" 1>&6 echo $ac_n "checking for Standard C and C++ function declarations""... $ac_c" 1>&6 echo "configure:1052: checking for Standard C and C++ function declarations" >&5 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 cat >> confdefs.h <<\EOF #define HAVE_STDC 1 EOF else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* echo "$ac_t""no" 1>&6 fi rm -f conftest* echo $ac_n "checking for SunOS C++ free() argument type bug""... $ac_c" 1>&6 echo "configure:1078: checking for SunOS C++ free() argument type bug" >&5 freebug=no cat > conftest.$ac_ext < int main() { void *p; p = (void*)0; free(p) ; return 0; } EOF if { (eval echo configure:1088: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then : else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* freebug=maybe fi rm -f conftest* if test $freebug = maybe ; then cat > conftest.$ac_ext < int main() { void *p; p = (void*)0; free((char*)p) ; return 0; } EOF if { (eval echo configure:1107: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat >> confdefs.h <<\EOF #define FREE_CAST_IS_CHAR_STAR 1 EOF freebug=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest* fi if test $freebug = maybe ; then freebug=no ; fi echo "$ac_t""$freebug" 1>&6 echo $ac_n "checking for Standard C alert character""... $ac_c" 1>&6 echo "configure:1123: checking for Standard C alert character" >&5 havealert=yes if test "$cross_compiling" = yes; then havealert=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then havealert=yes cat >> confdefs.h <<\EOF #define HAVE_ALERT_CHAR 1 EOF else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* havealert=no fi rm -fr conftest* fi echo "$ac_t""$havealert" 1>&6 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 echo "configure:1154: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else # This must be in double quotes, not single quotes, because CPP may get # substituted into the Makefile and "${CC-cc}" will confuse make. CPP="${CC-cc} -E" # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:1175: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:1192: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:1209: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* CPP=/lib/cpp fi rm -f conftest* fi rm -f conftest* fi rm -f conftest* ac_cv_prog_CPP="$CPP" fi CPP="$ac_cv_prog_CPP" else ac_cv_prog_CPP="$CPP" fi echo "$ac_t""$CPP" 1>&6 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 echo "configure:1234: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include #include #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:1247: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* ac_cv_header_stdc=yes else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* ac_cv_header_stdc=no fi rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "memchr" >/dev/null 2>&1; then : else rm -rf conftest* ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "free" >/dev/null 2>&1; then : else rm -rf conftest* ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') #define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF if { (eval echo configure:1314: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* ac_cv_header_stdc=no fi rm -fr conftest* fi fi fi echo "$ac_t""$ac_cv_header_stdc" 1>&6 if test $ac_cv_header_stdc = yes; then cat >> confdefs.h <<\EOF #define STDC_HEADERS 1 EOF fi for ac_hdr in conio.h ctype.h descrip.h errno.h fcntl.h io.h \ iodef.h jpidef.h libc.h limits.h osfcn.h pwd.h regex.h regexp.h \ rms.h sgtty.h ssdef.h stat.h stdio.h stdlib.h string.h sys/ioctl.h \ sys/param.h sys/stat.h sys/types.h termio.h termios.h time.h \ tt2def.h ttdef.h types.h unistd.h unixio.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 echo "configure:1345: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:1355: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* eval "ac_cv_header_$ac_safe=yes" else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` cat >> confdefs.h <&6 fi done echo $ac_n "checking for working const""... $ac_c" 1>&6 echo "configure:1383: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; } ; return 0; } EOF if { (eval echo configure:1437: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* ac_cv_c_const=no fi rm -f conftest* fi echo "$ac_t""$ac_cv_c_const" 1>&6 if test $ac_cv_c_const = no; then cat >> confdefs.h <<\EOF #define const EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 echo "configure:1458: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS #include #include #endif EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "(^|[^a-zA-Z_0-9])mode_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then rm -rf conftest* ac_cv_type_mode_t=yes else rm -rf conftest* ac_cv_type_mode_t=no fi rm -f conftest* fi echo "$ac_t""$ac_cv_type_mode_t" 1>&6 if test $ac_cv_type_mode_t = no; then cat >> confdefs.h <<\EOF #define mode_t int EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 echo "configure:1491: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS #include #include #endif EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "(^|[^a-zA-Z_0-9])size_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then rm -rf conftest* ac_cv_type_size_t=yes else rm -rf conftest* ac_cv_type_size_t=no fi rm -f conftest* fi echo "$ac_t""$ac_cv_type_size_t" 1>&6 if test $ac_cv_type_size_t = no; then cat >> confdefs.h <<\EOF #define size_t unsigned EOF fi echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 echo "configure:1524: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF if { (eval echo configure:1537: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* ac_cv_struct_tm=sys/time.h fi rm -f conftest* fi echo "$ac_t""$ac_cv_struct_tm" 1>&6 if test $ac_cv_struct_tm = sys/time.h; then cat >> confdefs.h <<\EOF #define TM_IN_SYS_TIME 1 EOF fi if test $ac_cv_prog_gcc = yes; then echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6 echo "configure:1560: checking whether ${CC-cc} needs -traditional" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_pattern="Autoconf.*'x'" cat > conftest.$ac_ext < Autoconf TIOCGETP EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "$ac_pattern" >/dev/null 2>&1; then rm -rf conftest* ac_cv_prog_gcc_traditional=yes else rm -rf conftest* ac_cv_prog_gcc_traditional=no fi rm -f conftest* if test $ac_cv_prog_gcc_traditional = no; then cat > conftest.$ac_ext < Autoconf TCGETA EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "$ac_pattern" >/dev/null 2>&1; then rm -rf conftest* ac_cv_prog_gcc_traditional=yes fi rm -f conftest* fi fi echo "$ac_t""$ac_cv_prog_gcc_traditional" 1>&6 if test $ac_cv_prog_gcc_traditional = yes; then CC="$CC -traditional" fi fi echo $ac_n "checking whether utime accepts a null argument""... $ac_c" 1>&6 echo "configure:1606: checking whether utime accepts a null argument" >&5 if eval "test \"`echo '$''{'ac_cv_func_utime_null'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else rm -f conftestdata; > conftestdata # Sequent interprets utime(file, 0) to mean use start of epoch. Wrong. if test "$cross_compiling" = yes; then ac_cv_func_utime_null=no else cat > conftest.$ac_ext < #include main() { struct stat s, t; exit(!(stat ("conftestdata", &s) == 0 && utime("conftestdata", (long *)0) == 0 && stat("conftestdata", &t) == 0 && t.st_mtime >= s.st_mtime && t.st_mtime - s.st_mtime < 120)); } EOF if { (eval echo configure:1627: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_utime_null=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* ac_cv_func_utime_null=no fi rm -fr conftest* fi rm -f core core.* *.core fi echo "$ac_t""$ac_cv_func_utime_null" 1>&6 if test $ac_cv_func_utime_null = yes; then cat >> confdefs.h <<\EOF #define HAVE_UTIME_NULL 1 EOF fi for ac_func in strtol do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 echo "configure:1653: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else $ac_func(); #endif ; return 0; } EOF if { (eval echo configure:1681: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_func_$ac_func=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then echo "$ac_t""yes" 1>&6 ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` cat >> confdefs.h <&6 LIBOBJS="$LIBOBJS ${ac_func}.${ac_objext}" fi done for ac_func in getcwd getwd re_comp strcspn strdup strspn strstr strtod strtol do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 echo "configure:1710: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else $ac_func(); #endif ; return 0; } EOF if { (eval echo configure:1738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_func_$ac_func=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then echo "$ac_t""yes" 1>&6 ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` cat >> confdefs.h <&6 fi done echo $ac_n "checking for ioctl prototype""... $ac_c" 1>&6 echo "configure:1764: checking for ioctl prototype" >&5 cat > conftest.$ac_ext < #include EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "ioctl[ ]*[(]" >/dev/null 2>&1; then rm -rf conftest* cat >> confdefs.h <<\EOF #define HAVE_IOCTL_PROTOTYPE 1 EOF echo "$ac_t""yes" 1>&6 else rm -rf conftest* echo "$ac_t""no" 1>&6 fi rm -f conftest* if test "$CC" = "lcc" then CFLAGS="`echo $CFLAGS | sed -e 's/-g //g' -e 's/ -g$//g' -e 's/^-g$//'`" fi trap '' 1 2 15 cat > confcache <<\EOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs. It is not useful on other systems. # If it contains results you don't want to keep, you may remove or edit it. # # By default, configure uses ./config.cache as the cache file, # creating it if it does not exist already. You can give configure # the --cache-file=FILE option to use a different cache file; that is # what configure does when it calls configure scripts in # subdirectories, so they share the cache. # Giving --cache-file=/dev/null disables caching, for debugging configure. # config.status only pays attention to the cache file if you give it the # --recheck option to rerun configure. # EOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote substitution # turns \\\\ into \\, and sed turns \\ into \). sed -n \ -e "s/'/'\\\\''/g" \ -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' ;; esac >> confcache if cmp -s $cache_file confcache; then : else if test -w $cache_file; then echo "updating cache $cache_file" cat confcache > $cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Any assignment to VPATH causes Sun make to only execute # the first set of double-colon rules, so remove it if not needed. # If there is a colon in the path, we need to keep it. if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' fi trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 DEFS=-DHAVE_CONFIG_H # Without the "./", some shells look in PATH for config.status. : ${CONFIG_STATUS=./config.status} echo creating $CONFIG_STATUS rm -f $CONFIG_STATUS cat > $CONFIG_STATUS </dev/null | sed 1q`: # # $0 $ac_configure_args # # Compiler output produced by configure, useful for debugging # configure, is in ./config.log if it exists. ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" for ac_option do case "\$ac_option" in -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; -version | --version | --versio | --versi | --vers | --ver | --ve | --v) echo "$CONFIG_STATUS generated by autoconf version 2.13" exit 0 ;; -help | --help | --hel | --he | --h) echo "\$ac_cs_usage"; exit 0 ;; *) echo "\$ac_cs_usage"; exit 1 ;; esac done ac_given_srcdir=$srcdir trap 'rm -fr `echo "Makefile config.h:config.hin" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 EOF cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF $ac_vpsub $extrasub s%@SHELL@%$SHELL%g s%@CFLAGS@%$CFLAGS%g s%@CPPFLAGS@%$CPPFLAGS%g s%@CXXFLAGS@%$CXXFLAGS%g s%@FFLAGS@%$FFLAGS%g s%@DEFS@%$DEFS%g s%@LDFLAGS@%$LDFLAGS%g s%@LIBS@%$LIBS%g s%@exec_prefix@%$exec_prefix%g s%@prefix@%$prefix%g s%@program_transform_name@%$program_transform_name%g s%@bindir@%$bindir%g s%@sbindir@%$sbindir%g s%@libexecdir@%$libexecdir%g s%@datadir@%$datadir%g s%@sysconfdir@%$sysconfdir%g s%@sharedstatedir@%$sharedstatedir%g s%@localstatedir@%$localstatedir%g s%@libdir@%$libdir%g s%@includedir@%$includedir%g s%@oldincludedir@%$oldincludedir%g s%@infodir@%$infodir%g s%@mandir@%$mandir%g s%@AWK@%$AWK%g s%@CC@%$CC%g s%@CXX@%$CXX%g s%@CPP@%$CPP%g s%@LIBOBJS@%$LIBOBJS%g CEOF EOF cat >> $CONFIG_STATUS <<\EOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. ac_file=1 # Number of current file. ac_beg=1 # First line for current file. ac_end=$ac_max_sed_cmds # Line after last line for current file. ac_more_lines=: ac_sed_cmds="" while $ac_more_lines; do if test $ac_beg -gt 1; then sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file else sed "${ac_end}q" conftest.subs > conftest.s$ac_file fi if test ! -s conftest.s$ac_file; then ac_more_lines=false rm -f conftest.s$ac_file else if test -z "$ac_sed_cmds"; then ac_sed_cmds="sed -f conftest.s$ac_file" else ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" fi ac_file=`expr $ac_file + 1` ac_beg=$ac_end ac_end=`expr $ac_end + $ac_max_sed_cmds` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case "$ac_file" in *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; *) ac_file_in="${ac_file}.in" ;; esac # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. # Remove last slash and all that follows it. Not all systems have dirname. ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then # The file is in a subdirectory. test ! -d "$ac_dir" && mkdir "$ac_dir" ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" # A "../" for each directory in $ac_dir_suffix. ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` else ac_dir_suffix= ac_dots= fi case "$ac_given_srcdir" in .) srcdir=. if test -z "$ac_dots"; then top_srcdir=. else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; *) # Relative path. srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" top_srcdir="$ac_dots$ac_given_srcdir" ;; esac echo creating "$ac_file" rm -f "$ac_file" configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." case "$ac_file" in *Makefile*) ac_comsub="1i\\ # $configure_input" ;; *) ac_comsub= ;; esac ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` sed -e "$ac_comsub s%@configure_input@%$configure_input%g s%@srcdir@%$srcdir%g s%@top_srcdir@%$top_srcdir%g " $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file fi; done rm -f conftest.s* # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where # NAME is the cpp macro being defined and VALUE is the value it is being given. # # ac_d sets the value in "#define NAME VALUE" lines. ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)' ac_dB='\([ ][ ]*\)[^ ]*%\1#\2' ac_dC='\3' ac_dD='%g' # ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE". ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ac_uB='\([ ]\)%\1#\2define\3' ac_uC=' ' ac_uD='\4%g' # ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE". ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ac_eB='$%\1#\2define\3' ac_eC=' ' ac_eD='%g' if test "${CONFIG_HEADERS+set}" != set; then EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF fi for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case "$ac_file" in *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; *) ac_file_in="${ac_file}.in" ;; esac echo creating $ac_file rm -f conftest.frag conftest.in conftest.out ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` cat $ac_file_inputs > conftest.in EOF # Transform confdefs.h into a sed script conftest.vals that substitutes # the proper values into config.h.in to produce config.h. And first: # Protect against being on the right side of a sed subst in config.status. # Protect against being in an unquoted here document in config.status. rm -f conftest.vals cat > conftest.hdr <<\EOF s/[\\&%]/\\&/g s%[\\$`]%\\&%g s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp s%ac_d%ac_u%gp s%ac_u%ac_e%gp EOF sed -n -f conftest.hdr confdefs.h > conftest.vals rm -f conftest.hdr # This sed command replaces #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. cat >> conftest.vals <<\EOF s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */% EOF # Break up conftest.vals because some shells have a limit on # the size of here documents, and old seds have small limits too. rm -f conftest.tail while : do ac_lines=`grep -c . conftest.vals` # grep -c gives empty output for an empty file on some AIX systems. if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi # Write a limited-size here document to conftest.frag. echo ' cat > conftest.frag <> $CONFIG_STATUS sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS echo 'CEOF sed -f conftest.frag conftest.in > conftest.out rm -f conftest.in mv conftest.out conftest.in ' >> $CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail rm -f conftest.vals mv conftest.tail conftest.vals done rm -f conftest.vals cat >> $CONFIG_STATUS <<\EOF rm -f conftest.frag conftest.h echo "/* $ac_file. Generated automatically by configure. */" > conftest.h cat conftest.in >> conftest.h rm -f conftest.in if cmp -s $ac_file conftest.h 2>/dev/null; then echo "$ac_file is unchanged" rm -f conftest.h else # Remove last slash and all that follows it. Not all systems have dirname. ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then # The file is in a subdirectory. test ! -d "$ac_dir" && mkdir "$ac_dir" fi rm -f $ac_file mv conftest.h $ac_file fi fi; done EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF exit 0 EOF chmod +x $CONFIG_STATUS rm -fr confdefs* $ac_clean_files test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 bibclean-2.11.4.1.orig/vmswild.c0000644000175200017520000007716506142465635015552 0ustar debiandebian/* -*-C-*- vmswild.c */ /*-->vmswild*/ /**********************************************************************/ /****************************** vmswild *******************************/ /**********************************************************************/ #include #if 0 /* BEGIN COMMENT SECTION */ /* Compile with TEST defined to create a stand-alone test program */ /*********************************************************************** ** [09-Mar-1990] ** Edit by Nelson H. F. Beebe ** Overhaul to meet these objectives: ** ** (1) If a file is in the current directory, the device and ** directory specification is stripped from the file name. ** ** (2) Convert all file names in argv[] to lower case. ** ** (3) If a generation number was specified in the command-line ** file name, as indicated by the presence of a semicolon in the ** wildcard specification, preserve generation numbers in the ** output; otherwise, eliminate them, since the files must ** correspond to the highest generation. ** ** (4) If a filename ends in a dot, remove it ("foo." -> "foo"). ** ** (5) Reorder routines alphabetically, and supply Standard C ** function prototype declarations. ** ** (6) Make all functions and global variables static (private), ** except cmd_lin(), so they do not interfere with user-defined ** values outside this file. ** ** (7) Remove prompting for missing arguments. ** ** These changes result in a shorter command line, which is important ** when the names are used to build other commands (e.g. in vcc), ** because VAX VMS has a very limited command line buffer size. They ** also match what UNIX programs get from the shell command line ** expansion; this is important for programs like gawk where the ** filename may be used by the program. UNIX programs never prompt ** for arguments, and they shouldn't do so either when ported to VAX ** VMS. New functions added are expand_logical() and ** normalize_filename(). The body of nxt_wld() has been completely ** rewritten. ** ************************************************************************ ** PDVI:VMSWILD.C, Sat Oct 1 15:59:31 1988 ** Edit by Nelson H. F. Beebe ** Fix erroneous leading comments, change initialization of OPoption ** so that arguments of form "{foo}" (e.g. for awk) are not lost. ** ************************************************************************ ** Original version: ** 4-Mar-88 19:08:58-MST,26262;000000000000 ** Return-Path: ** Received: from cs.utah.edu by SCIENCE.UTAH.EDU with TCP; ** Fri 4 Mar 88 19:08:46-MST ** Received: by cs.utah.edu (5.54/utah-2.0-cs) ** id AA20734; Fri, 4 Mar 88 19:08:52 MST ** From: news@cs.utah.edu (Netnews Owner) ** Reply-To: ERICMC%usu.BITNET@CC.UTAH.EDU (Eric McQueen) ** To: comp-os-vms@cs.utah.edu ** Subject: RE: Wild card expansion under VAX11-C: Code Wanted ** Message-Id: <8803041943.AA24229@jade.berkeley.edu> ** Date: 4 Mar 88 04:59:00 GMT ** Sender: daemon@ucbvax.berkeley.edu ** ** (sorry for the previous abbreviated copy of this) ** ** In article <5361@ames.arpa> woo@pioneer.UUCP (Alex Woo) writes: ** > How does one expand wildcards in command line arguments in ** > VAX11-C under VMS? ** ** I have a tool for C programmers using VMS, especially those porting ** facilities from Un*x. It prompts for command line arguments (unless ** you have already specified some via a "foreign command" or MCR), ** expands file wildcards found on the command line, and redirects ** 'stdin' or 'stdout'. Here is a sample use: ** ** int ** main( argc, argv ) ** int argc; ** char **argv; ** { ** !* local variables *! ** #ifdef VMS !* Or whatever the Standard C-conforming word will be *! ** extern char **cmd_lin(); ** ** argv = cmd_lin( "", &argc, argv ); ** !* The first argument provides misc. options (not currently used). *! ** #endif !* VMS *! ** !* your routine *! ** } ** ** $ run grep ** _command_line_arguments: -i STOP *.for ** ** The source is 40 blocks (600 lines) so I am not sure that I should ** post the actual source in this group, but I have (see below). If you ** are interested, please look through the documentation, try it out, ** and send any significant comments, suggestions, useful peices of ** code, etc. to one of the addresses below. I will post summaries to ** comp.os.vms/INFO-VAX and comp.lang.c/INFO-C. Please excuse the ** "lived-in" look of the code but I am still working on this thing so ** this is mearly the last debugged version I have. ** ** --- ** Eric Tye McQueen Mathematics Department Also at (after some ** ericmc@usu.bitnet Utah State University time in March[June?!]): ** (801) 753-4683 Logan, Utah 84322-3900 ericmc@usu.usu.edu ** ** UUCP: ...{psuvax1,uunet}!usu.bitnet!ericmc "Doodle doodle dee" ** Arpa: ericmc%usu.bitnet@cunyvm.cuny.edu "wubba wubba wubba." ** ** +------------------------------- cmdlin.c -------------------------------+ ***********************************************************************/ /*********************************************************************** * cmdlin.c -- Un*x-style command line processing for VMS. (V2.0, 3-Mar-1988) * Copyright (C) 1988 Eric Tye McQueen * Emulates Un*x-style command line options in VAX C programs: * - Allows entry of command line arguments after the program starts: * The easiest way to run a program in VMS (the RUN command) does not * allow for specification of command-line arguments while other methods * that do allow arguments won't interpret the arguments in a very Un*x- * like manner. If no arguments are specified (other than the program * name which is supplied by VAX C), we prompt for arguments from * SYS$COMMAND and try to interpret them as Un*x would. * - Expands any filename wildcards found in the command line arguments: * C programs that process files are usually written to accepts several * filenames, one name per argument. Un*x environments expand filename * wildcards specified on the command line to the names of all matching * files and pass these names to the program. This routine does this * since VMS will not. VMS wildcards and filenames are supported, NOT * Un*x-style wildcards and filenames (this has its good and bad points). * - Supports simple C-shell-style standard I/O redirection (`<', `>', `>>', * `>&', and `>>&'). * - In the future support can be added for strings and quoting of charac- * ters (`\', "'", `"'), symbol substitution (`$'), parallel processing * and pipes (`||', `&&', etc.), etc. * * Currently supported: * All VMS wildcards (`*', `%', and `...'). * Both VMS and Un*x-style file names. * I/O redirection via `<', `>', `>>', `>&', and `>>&' * (watch out for people who use `<' and `>' for directory names) * Reasonable to add support for: * Specification of cmd_lin() options between `{' and `}'. * Continuation lines via \ at end of line. * Inclusion of spaces (and newlines) into arguments via ' and ". * Substitutions from the VMS symbol table using ${name}. * Using Un*x-style directories (/) with wildcards. * Pipe dreams: * Pipes via || and &&. * Un*x-style wildcards like [char-set]. * (watch out for people who use `[' and `]' for directory names!!) * * This files also contains a special demonstration program. To use it type: * $ cc cmdlin/define:example * $ link cmdlin,sys$input:/opt * sys$share:vaxcrtl/share * $ run cmdlin * * Sample use: * ... * int * main( argc, argv ) * int argc; * char **argv; * { * ... (definitions) * #ifdef VMS * extern char **cmd_lin(); * argv = cmd_lin( "", &argc, argv ); * #endif * ... (other statements) * } * ... * $ run grep * _command_line_arguments: -i stop *.for * * If you specify something that looks like a VMS wildcard (that contains * "*", "%", or "...") but that doesn't match the name of any existing files, * cmd_lin() will write ": No match." to `stderr'. If you specify a * string containing "*", "%", or "..." that is not a valid VMS file wildcard, * cmd_lin() will also write ": Invalid file wildcard." to `stderr'. * In either case, the original string will be included, unchanged, as a * command line argument. ***********************************************************************/ #endif /* END COMMENT SECTION */ #if 0 static char version[] = /* (Not currently) printed inside "debug" option. */ "cmd_lin() V2.0, Copyright (C) 1988 Eric Tye McQueen (3-Mar)."; #endif /* 0 */ static char rcsid[] = "$Id: vmswild.c,v 1.2 1996/05/03 20:09:24 beebe Exp $"; #ifndef VMS /* Should be changed to Standard C-conforming name soon. */ /* Dummy version of cmd_lin() for non VAX C (non-VMS) systems: */ char ** #if defined(HAVE_STDC) cmd_lin( char *opt0, /* Options specified in `main()' */ int *ainpc, /* &main\argc (input and output) */ char **inpv /* main\argv (input) */ ) #else /* NOT defined(HAVE_STDC) */ cmd_lin( opt0, ainpc, inpv ) char *opt0; /* Options specified in `main()' */ int *ainpc; /* &main\argc (input and output) */ char **inpv; /* main\argv (input) */ #endif /* defined(HAVE_STDC) */ { return( inpv ); } #else /* VMS */ #include /* stdin stdout stderr */ #if defined(HAVE_CTYPE_H) #include #endif #if defined(HAVE_ERRNO_H) #include #endif #if defined(HAVE_STDLIB_H) #include #endif #if defined(HAVE_STRING_H) #include #endif typedef char bool; /* Smallest addressable signed data type. */ typedef unsigned char uchar; typedef unsigned short ushort; typedef unsigned int uint; typedef unsigned long ulong; #define odd(stat) ( (stat) & 1 ) /* General VMS descriptor (not as clumsy as $DESCRIPTOR from ): */ struct descr { ushort leng; /* Length of data area (or string). */ uchar type; /* Type of data in area (dsc$k_dtype_t). */ uchar class; /* Class of descriptor (dsc$k_class_s). */ char *addr; /* Address of start of data area. */ }; globalvalue dsc$k_dtype_t; /* Text (data type) */ globalvalue dsc$k_class_s; /* Static (class) descriptor */ /* To allocate a descriptor (dsc) for array of char (arr): */ #define desc_arr(dsc,arr) struct descr dsc = \ { (sizeof arr)-1, dsc$k_dtype_t, dsc$k_class_s, arr } /* To allocate a descriptor (dsc) for null-terminated string (str): */ #define desc_str(dsc,str) struct descr dsc = \ { strlen(str), dsc$k_dtype_t, dsc$k_class_s, str } #define FNAMSIZ 1024 /* size of filename buffers (+1 for '\0') */ /* Options that are set by an argument like "{opt1,!opt2,noopt3,opt4=val}": * (none of these are really supported in this release) * help : show possible options then terminate execution. * option : allows options to be specified (default). * expand : expand VMS-style wildcards (default). * prompt [ = string ] : prompt if no arguments are present (default). * append : prompt if some arguments are initially present. * debug : show option changes and final command line arguments. * redirect : allows `<', `>', etc. to be used to redirect `std*'. * unixy : don't return VMS-style device or directory names (default). * lower : convert letters in file specifications to lowercase (default). * device = "never", "different" (default), "always" : show device name. * directory = "never", "different" (default), "always" : show directory. * version = "never", "different" (default), "always" : show version. * `dev':/`path' : Un*x-like alias for device name (ex: "user$disk:/usr"). * Interactions: * unixy & show device -> show directory * unixy & !device & directory -> directory is relative (../etc) * unixy & !device & directory=always -> default = ./ */ /* Key values for OTfreq options (device, directory, and version): */ enum { never=0, diff, always }; /* Current values of all options: */ #if 0 char *OPprompt = "_command_line_arguments: "; #else /* 1 */ char *OPprompt = (char*)NULL; #endif /* 0 */ #if 0 /* Disable; otherwise an awk option string like "{print $0}" disappears. */ static char *OPoption = "{}"; #else /* NOT 0 */ static char *OPoption = ""; #endif /* 0 */ static bool OPexpand = 1; static bool OPappend = 0; static bool OPdebug = 0; static bool OPredir = 1; static bool OPunixy = 1; static bool OPlower = 1; static bool OPdevice = diff; static bool OPdirect = diff; static bool OPversion = diff; char **cmd_lin(char *opt0,int *ainpc,char **inpv); /* Private functions */ static char **add_arg(char *arg, int *acnt, char **ptrs); static uint crelnm(char *table, char *name, char *value); static void *emalloc(unsigned siz); static void *erealloc(void *ptr, unsigned siz); static char *expand_logical(char *logname); static bool iswild(char *name); static char *nameonly(char *file); static char *normalize_filename(char *filename); static char *nxt_wld(char *wild); static char **parse_opt(int *ainpc,char **inpv); static char **read_cmd_lin(int *ainpc,char **inpv); static char *read_w_prompt(char *prompt, char *buff, int size); static char **redir(int *ainpc,char **inpv,FILE *fp,char *io, char *tok,char *lnm,char *acc); static char **redirin(int *ainpc,char **inpv); static char **redirout(int *ainpc,char **inpv); static void sigvms(uint stat); static char *strsub(char *str, char *sub); #if defined(__ALPHA) void lib$stop(int status_); #endif #ifdef TEST static void dump(char *str); int main(int argc,char **argv); #endif /* TEST */ char ** #if defined(HAVE_STDC) cmd_lin( char *opt0, /* Options specified in `main()' */ int *ainpc, /* &main\argc (input and output) */ char **inpv /* main\argv (input) */ ) #else /* NOT defined(HAVE_STDC) */ cmd_lin( opt0, ainpc, inpv ) /* returns new value for main\argv */ char *opt0; /* Options specified in `main()' */ int *ainpc; /* &main\argc (input and output) */ char **inpv; /* main\argv (input) */ #endif /* defined(HAVE_STDC) */ { int endc; /* `endc' and `endv' will be `argc' and `argv' for main() */ char **endv = add_arg((char*)NULL,&endc,(char**)NULL); /* Initialize `add_arg()' structures */ char **xtra = 0; /* So we can free() what read_cmd_lin() may allocate */ char *cp; if( OPoption[0] == *opt0 ) inpv = parse_opt( ainpc, inpv ); #ifdef DEBUG else if( *opt0 ) { globalvalue ss$abort; (void)fprintf( stderr, "%s (%s) %s.\n", "Invalid options string", opt0, "specified in `main()'" ); exit( ss$abort ); } #endif /* DEBUG */ if( *ainpc ) { /* Process `argv[0]', the program name: */ if( OPunixy ) /* Remove VMS device/dir/version: */ *inpv = nameonly( *inpv ); /* (and ".ext") */ endv = add_arg( *inpv, &endc, endv ); --*ainpc; ++inpv; } else /* (Impossible?) No `argv[0]' so make one up: */ endv = add_arg( "Me", &endc, endv ); if ( OPappend || ( !*ainpc && OPprompt ) ) xtra = inpv = read_cmd_lin( ainpc, inpv ); while ( *ainpc ) { if( OPoption && OPoption[0] == **inpv ) inpv = parse_opt( ainpc, inpv ); else if( OPredir && '<' == **inpv ) inpv = redirin( ainpc, inpv ); else if( OPredir && '>' == **inpv ) inpv = redirout( ainpc, inpv ); else if( OPexpand && iswild( *inpv ) ) { if( ( cp = nxt_wld(*inpv) ) ) { do { endv = add_arg( cp, &endc, endv ); } while( ( cp = nxt_wld(*inpv) ) ); } else { (void)fprintf( stderr, "%s: No match.\n", *inpv ); endv = add_arg( *inpv, &endc, endv ); } } else endv = add_arg( *inpv, &endc, endv ); --*ainpc; ++inpv; } if ( xtra ) /* An extra block of pointers was malloc()ed */ FREE( xtra ); *ainpc = endc; return( endv ); } /**********************************************************************/ /* Private functions */ /**********************************************************************/ /* Builds argc,argv type lists of strings: */ static char ** #if defined(HAVE_STDC) add_arg( char *arg, /* Argument to be added to the argument list */ int *acnt, /* Number of arguments currently in the argument list */ char **ptrs /* Array of pointers to the arguments */ ) #else /* NOT defined(HAVE_STDC) */ add_arg( arg, acnt, ptrs ) char *arg; /* Argument to be added to the argument list */ int *acnt; /* Number of arguments currently in the argument list */ char **ptrs; /* Array of pointers to the arguments */ #endif /* defined(HAVE_STDC) */ { # define ARGRP 64 /* number of string pointers allocated at a time */ if( !ptrs ) { /* Initialize a new argument list: */ char **v = emalloc( ARGRP * sizeof(char *) ); *acnt = 0; v[0] = 0; return( v ); } if( 0 == (*acnt+1) % ARGRP ) /* Need more space for pointers */ ptrs = erealloc( ptrs, (*acnt+1+ARGRP) * sizeof(char *) ); ptrs[*acnt] = arg; ptrs[++*acnt] = (char*)NULL; return( ptrs ); } /* Creates a logical name. */ static uint /* Returns a VMS condition value. */ #if defined(HAVE_STDC) crelnm( char *table, char *name, char *value ) #else /* NOT defined(HAVE_STDC) */ crelnm( table, name, value ) char *table; char *name; char *value; #endif /* defined(HAVE_STDC) */ { desc_str( tdsc, table ); desc_str( ndsc, name ); struct itemstr { ushort buflen, type; char *addr; ushort *retlen; uint end; } itemrec; /* globalvalue psl$k_user; */ /* Change this to "#include psldef". */ uchar mode = 3 /* psl$k_user */; extern uint sys$crelnm(); /* globalvalue lnm$_string; */ /* Change this to "#include lnmdef". */ itemrec.type = 2 /* lnm$_string */; itemrec.buflen = strlen(value); itemrec.addr = value; itemrec.retlen = (ushort *) 0; itemrec.end = 0; return( sys$crelnm( 0, &tdsc, &ndsc, &mode, &itemrec ) ); } /* Same as malloc() except never returns NULL. */ static void * #if defined(HAVE_STDC) emalloc( unsigned siz ) #else /* NOT defined(HAVE_STDC) */ emalloc( siz ) unsigned siz; #endif /* defined(HAVE_STDC) */ { globalvalue ss$_insfmem; /* Insufficient dynamic memory error */ register void *p = malloc( siz ); if( !p ) /* Don't try to recover after allocating too much: */ sys$exit( ss$_insfmem ); /* Don't recover */ return( p ); } /* Same as realloc() except never returns NULL. */ static void * #if defined(HAVE_STDC) erealloc( void *ptr, unsigned siz ) #else /* NOT defined(HAVE_STDC) */ erealloc( ptr, siz ) void *ptr; unsigned siz; #endif /* defined(HAVE_STDC) */ { globalvalue ss$_insfmem; /* Insufficient dynamic memory error */ register void *p = realloc( ptr, siz ); if( !p ) /* Don't try to recover after allocating too much: */ sys$exit( ss$_insfmem ); /* Don't recover */ return( p ); } static char* #if defined(HAVE_STDC) expand_logical( char *logname ) #else /* NOT defined(HAVE_STDC) */ expand_logical(logname) /* return recursively expanded logical name */ char *logname; #endif /* defined(HAVE_STDC) */ { char *p; char *colon; colon = strchr(logname,':'); /* trim string before colon for getenv() */ if (colon) *colon = '\0'; p = getenv(logname); if (colon) *colon = ':'; return ((p == (char*)NULL) ? logname : expand_logical(p)); } static bool /* Returns 1 if `name' looks like a wild-carded file name. */ #if defined(HAVE_STDC) iswild( char *name ) #else /* NOT defined(HAVE_STDC) */ iswild( name ) char *name; #endif /* defined(HAVE_STDC) */ { return(strchr(name,'*') || strchr(name,'%') || strsub(name,"...")); } /* Usually used to simplify argv[0]. */ static char * #if defined(HAVE_STDC) nameonly( char *file ) #else /* NOT defined(HAVE_STDC) */ nameonly( file ) char *file; #endif /* defined(HAVE_STDC) */ { char *cp = file, *tp; #ifdef VMS tp = strrchr(cp,']'); /* Skip directory */ tp = tp ? tp+1 : cp; cp = strrchr(tp,'>'); /* Skip alternate form of directory */ cp = cp ? cp+1 : tp; tp = strrchr(cp,':'); /* Skip device and/or node */ tp = tp ? tp+1 : cp; cp = tp; if( tp = strchr(cp,';') ) /* Remove version number */ *tp = '\0'; if( tp = strchr(cp,'.') ) /* Remove extension and/or... */ *tp = '\0'; /* alternate form for version */ #else /* NOT VMS */ /* cp = strrchr(cp,'/'); may be useful on other than MS-DOS */ #ifdef MSDOS /* Like this would ever be run under MS-DOS! */ tp = strrchr(cp,'/'); /* Skip Un*x path */ tp = tp ? tp+1 : cp; cp = strrchr(tp,'\\'); /* Skip MS-DOS path */ cp = cp ? cp+1 : tp; if( tp = strchr(cp,'.') ) *tp = '\0'; /* Remove extension */ #endif /* MSDOS */ #endif /* VMS */ return( cp ); } static char* #if defined(HAVE_STDC) normalize_filename( char *filename /* with logical names expanded */ ) #else /* NOT defined(HAVE_STDC) */ normalize_filename(filename) /* return lower-case copy of normalized name */ char *filename; /* with logical names expanded */ #endif /* defined(HAVE_STDC) */ { char *logname; char *p; char *q; p = strchr(filename,':'); /* do we have a logical name? */ if (p != (char*)NULL) { /* yes, have to translate it interactively */ logname = expand_logical(filename); q = emalloc(strlen(p+1) + strlen(logname) + 1); (void)strcpy(q,logname); (void)strcat(q,p+1); } else /* no, just copy bare file name */ q = strcpy(emalloc(strlen(filename)),filename); for (p = q ; *p; ++p) /* convert filename to lowercase */ *p = isupper(*p) ? tolower(*p) : *p; /* remove remnants of rooted logical names */ for (p = strsub(q,".]["); p; p = strsub(q,".][")) (void)strcpy(p+1,p+3); return (q); } /* Returns the next file name matching the specified wildcard. */ static char * /* Returns a pointer to an malloc()ed expanded filename */ #if defined(HAVE_STDC) nxt_wld( char *wild /* Wildcard to be expanded. */ ) #else /* NOT defined(HAVE_STDC) */ nxt_wld( wild ) /* Returns 0 if all matching filenames have been returned. */ char *wild; /* Wildcard to be expanded. */ #endif /* defined(HAVE_STDC) */ { desc_str( wlddsc, wild ); /* VMS descriptor of wildcard string. */ static uint cntxt = 0; /* Context of wildcard search. */ uint stat; /* Status returned by lib$* services. */ uint two = 2; /* Flags to be passed by reference. */ char file[FNAMSIZ]; /* Buffer to hold expanded file name. */ desc_arr( fildsc, file ); /* VMS descriptor of buffer. */ extern uint lib$find_file(), lib$find_file_end(); /* Library services. */ globalvalue rms$_fnf, rms$_nmf, rms$_syn; /* Possible statuses. */ static char* cwd = (char*)NULL; static int lencwd = 0; char *colon; char *logname; char *newcwd; char *p; char *q; if (cwd == (char*)NULL) /* true only on first call */ { cwd = (char*)getcwd((char*)NULL,FNAMSIZ); lencwd = (cwd == (char*)NULL) ? 0 : strlen(cwd); if (lencwd > 0) { newcwd = normalize_filename(cwd); FREE(cwd); cwd = newcwd; lencwd = strlen(cwd); } } stat = lib$find_file( &wlddsc, &fildsc, &cntxt, 0, 0, 0, &two ); if ( rms$_syn == stat ) { /* File syntax error: */ (void)fprintf( stderr, "%s: Invalid file wildcard.\n", wild ); } else if ( rms$_fnf != stat && rms$_nmf != stat ) { /* Not "file not found" (1st try) * nor "no more files" (later tries): */ sigvms( stat ); /* Display non-trivial status messages. */ } if( !odd(stat) ) { /* Search didn't work: */ sigvms( lib$find_file_end( &cntxt ) ); return( 0 ); } while (' ' == file[fildsc.leng-1]) /* Remove trailing spaces: */ --fildsc.leng; file[fildsc.leng] = '\0'; p = normalize_filename(file); (void)strcpy(file,p); FREE(p); if (strsub(wild,";") == (char*)NULL) /* strip generation numbers too */ { p = strrchr(file,';'); if (p != (char*)NULL) *p = '\0'; else p = strrchr(file,'\0'); if (p[-1] == '.') /* trim final dot too */ p[-1] = '\0'; } fildsc.leng = strlen(file); /* Strip off current working directory, if present. */ if ((lencwd > 0) && (strncmp(cwd,file,lencwd) == 0)) { (void)strcpy(file,&file[lencwd]); fildsc.leng -= lencwd; } return( strcpy( emalloc((unsigned)fildsc.leng+1), file ) ); } /* Accepts argument beginning "{" and parses the options listed before the * closing "}". */ static char ** /* Returns new value of `inpv'. */ #if defined(HAVE_STDC) parse_opt( int *ainpc, char **inpv ) #else /* NOT defined(HAVE_STDC) */ parse_opt( ainpc, inpv ) int *ainpc; char **inpv; #endif /* defined(HAVE_STDC) */ { /* code to be added later */ return( inpv ); } /* Read additional command line arguments: */ static char ** #if defined(HAVE_STDC) read_cmd_lin( int *ainpc, char **inpv ) #else /* NOT defined(HAVE_STDC) */ read_cmd_lin( ainpc, inpv ) int *ainpc; char **inpv; #endif /* defined(HAVE_STDC) */ { int midc; char **midv, line[4096], *ap, *cp, c; if( NULL == read_w_prompt( OPprompt, line, sizeof(line) ) ) lib$stop( vaxc$errno ); midv = add_arg( (char*)NULL, &midc, (char**)NULL ); while( (*ainpc)-- ) midv = add_arg( *(inpv++), &midc, midv ); cp = strcpy( emalloc( strlen(line)+1 ), line ); do { while( isspace( *cp ) ) cp++; if( !*( ap = cp ) ) break; while( *cp && !isspace(*cp) ) cp++; c = *cp; *cp++ = '\0'; midv = add_arg( ap, &midc, midv ); } while( c ); *ainpc = midc; return( midv ); } /* Prompt for a string from SYS$INPUT: */ static char * #if defined(HAVE_STDC) read_w_prompt( char *prompt, /* String to prompt user with */ char *buff, /* Pointer to buffer to store the string that is read */ int size /* Size of *buff */ ) #else /* NOT defined(HAVE_STDC) */ read_w_prompt( prompt, buff, size ) char *prompt; /* String to prompt user with */ char *buff; /* Pointer to buffer to store the string that is read */ int size; /* Size of *buff */ #endif /* defined(HAVE_STDC) */ { desc_str( pdsc, prompt ); struct descr bdsc = { size-1, dsc$k_dtype_t, dsc$k_class_s, buff }; extern uint lib$get_command(); ushort len; uint stat = lib$get_command( &bdsc, &pdsc, &len ); if( !odd( stat ) ) { errno = EIO; /* or EVMSERR? */ vaxc$errno = stat; return( 0 ); } buff[len] = '\0'; return( buff ); } /* Aspects of redirection common to both ">" (and variants) and "<": */ static char ** /* Returns new value for `inpv'. */ #if defined(HAVE_STDC) redir( int *ainpc, char **inpv, FILE *fp, /* `stdin' or `stdout' */ char *io, /* "in" or "out" */ char *tok, /* ", `<'" or " (`>', `>>', `>&', or `>>&')" */ char *lnm, /* logical name: "SYS$INPUT:" or "SYS$OUTPUT:" */ char *acc /* file access: "r", "w", or "a" */ ) #else /* NOT defined(HAVE_STDC) */ redir( ainpc, inpv, fp, io, tok, lnm, acc ) int *ainpc; char **inpv; FILE *fp; /* `stdin' or `stdout' */ char *io; /* "in" or "out" */ char *tok; /* ", `<'" or " (`>', `>>', `>&', or `>>&')" */ char *lnm; /* logical name: "SYS$INPUT:" or "SYS$OUTPUT:" */ char *acc; /* file access: "r", "w", or "a" */ #endif /* defined(HAVE_STDC) */ { uint stat = 0; /* Assume we wouldn't reassign `lnm'. */ if( !**inpv ) /* Not ">file" / " file" / "< file". */ if( !*inpv || !**inpv ) { (void)fprintf( stderr, "Invalid null %sput redirection%s.\n", io, tok ); if( *ainpc == 0 ) /* Fell off end of argument list: */ ++*ainpc, --inpv; return( inpv ); } if( strchr( *inpv, '*' ) || strchr( *inpv, '%' ) || strsub( *inpv, "..." ) ) { (void)fprintf( stderr, "Wildcards (%s) illegal in redirection%s.\n", *inpv, tok ); return( inpv ); } *strchr( lnm, ':' ) = '\0'; /* Remove trailing colon. */ if( strchr( *inpv, '/' ) || strsub( *inpv, ".." ) ) { if( OPdebug ) (void)fprintf( stderr, "%s %s %s (%s).\n", "Warning: Can't reassign", lnm, "to Un*x-style file name", *inpv ); } else { stat = crelnm( "LNM$FILE_DEV", lnm, *inpv ); if( OPdebug ) sigvms( stat ); } lnm[strlen(lnm)] = ':'; /* Restore trailing colon. */ if( !freopen( odd(stat) ? lnm : *inpv, acc, fp ) ) { /* if( !( odd(stat) && freopen(lnm,acc,fp) ) && !freopen(*inpv,acc,fp) ) { */ (void)fprintf( stderr, "Can't open \"%s\" as `std%s'.\n", *inpv, io ); /* perror( *inpv ); */ exit( vaxc$errno ); } return( inpv ); } /* Redirects `stdin': */ static char ** #if defined(HAVE_STDC) redirin( int *ainpc, char **inpv ) #else /* NOT defined(HAVE_STDC) */ redirin( ainpc, inpv ) int *ainpc; char **inpv; #endif /* defined(HAVE_STDC) */ { static char sysinput[] = "SYS$INPUT:"; /* must be modifiable */ ++*inpv; /* Skip over the '<'. */ return(redir( ainpc, inpv, stdin, "in", ", `<'", sysinput, "r" )); } /* Redirects `stdout': */ static char ** #if defined(HAVE_STDC) redirout( int *ainpc, char **inpv ) #else /* NOT defined(HAVE_STDC) */ redirout( ainpc, inpv ) int *ainpc; char **inpv; #endif /* defined(HAVE_STDC) */ { static char sysoutput[] = "SYS$OUTPUT:"; /* must be modifiable */ bool err = 0; /* Assume not ">&" nor ">>&". */ char *acc = "w"; /* Assume ">" (write) not ">>" (append). */ if( '>' == *++*inpv ) /* Append to output file: */ ++*inpv, *acc = 'a'; if( '&' == **inpv ) /* Redirect `stderr' as well: */ ++*inpv, err = 1; inpv = redir( ainpc, inpv, stdout, "out", " (`>', `>>', `>&', or `>>&')", sysoutput, acc ); /* The following is harmless if redir() failed: */ if( err ) { if( !strchr( *inpv, '/' ) && !strsub( *inpv, ".." ) ) { uint stat = crelnm( "LNM$FILE_DEV", "SYS$ERROR", *inpv ); if( OPdebug ) sigvms( stat ); } stderr = stdout; /* VAX-C specific method. */ } return( inpv ); } /* Signals any non-boring condition values so that error/warning messages * will be displayed. */ static void #if defined(HAVE_STDC) sigvms( uint stat ) #else /* NOT defined(HAVE_STDC) */ sigvms( stat ) uint stat; #endif /* defined(HAVE_STDC) */ { extern void lib$signal(); if( ( stat & 0xffff ) == 1 ) return; /* Boring status message; skip it. */ lib$signal( stat ); } /* Returns the position of a substring within a string. Should be replaced by * strstr() when DEC provides one. */ static char * #if defined(HAVE_STDC) strsub( char *str, char *sub ) #else /* NOT defined(HAVE_STDC) */ strsub( str, sub ) char *str; char *sub; #endif /* defined(HAVE_STDC) */ { register char *fp = sub; /* Points to character we hope to Find next */ char *sp = strchr(str,*fp); /* Points to current Starting character */ register char *cp = sp; /* Points to character currently Comparing */ while( sp ) { while( *fp && *fp == *cp ) ++fp, ++cp; if( !*fp ) return( sp ); /* We found it */ fp = sub; /* Start the search over again */ cp = sp = strchr(sp+1,*fp); /* were we left off last time */ } return( 0 ); } #ifdef TEST /* Displays a string to `stdout', making all control and meta characters * printable unambiguously. */ static void #if defined(HAVE_STDC) dump( char *str ) #else /* NOT defined(HAVE_STDC) */ dump( str ) char *str; #endif /* defined(HAVE_STDC) */ { # define META '`' /* Show 'a'+'\200' as "`a" */ # define CTRL '^' /* Show '\001' as "^A" */ # define BOTH '~' /* Show '\201' as "~A" */ # define QOTE '~' /* Show '`' as "~`", '^' as "~^", and '~' as "~~" */ # define DEL '\177' # define uncntrl(c) ( DEL==c ? '?' : c + '@' ) static char spec[] = { META, CTRL, BOTH, QOTE, 0 }; while( *str ) { switch( (!!iscntrl(*str)) + 2 * (!isascii(*str)) ) { case 0: /* Normal */ if( strchr( spec, *str ) ) putchar( QOTE ); putchar( *str ); break; case 1: /* Control */ putchar( CTRL ); putchar( uncntrl(*str) ); break; case 2: /* Meta */ putchar( META ); putchar( toascii(*str) ); break; case 3: /* Both */ putchar( BOTH ); putchar( uncntrl(toascii(*str)) ); break; } ++str; } } int #if defined(HAVE_STDC) main( int argc, char **argv ) #else /* NOT defined(HAVE_STDC) */ main( argc, argv ) int argc; char **argv; #endif /* defined(HAVE_STDC) */ { int cnt; extern char **cmd_lin(); argv = cmd_lin( "", &argc, argv ); (void)printf( "%d argument%s%s\n", argc, 1==argc ? "" : "s", argc ? ":" : "." ); for( cnt = 0; *argv; ++argv ) { (void)printf( "%5d: `", ++cnt ); dump( *argv ); (void)printf( "'\n" ); } exit(EXIT_SUCCESS); return(0); } #endif /* TEST */ #endif /* VMS */ bibclean-2.11.4.1.orig/xstat.h0000644000175200017520000000043306032343713015203 0ustar debiandebian#ifndef XSTAT_H_DEFINED_ #define XSTAT_H_DEFINED_ #ifdef HAVE_SYS_TYPES_H #include /* needed on MIPS RC6280 RISCos systems */ #endif #ifdef HAVE_SYS_STAT_H #include #else #ifdef HAVE_STAT_H #include #endif #endif #endif /* XSTAT_H_DEFINED_ */ bibclean-2.11.4.1.orig/fndfil.c0000644000175200017520000004704706142464621015315 0ustar debiandebian/* -*-C-*- fndfil.c */ /*-->findfile*/ /**********************************************************************/ /****************************** findfile ******************************/ /**********************************************************************/ /*********************************************************************** NB: If the macro DVI is defined when this file is compiled, then additional code will be executed in isfile() to optionally trace the lookup attempts. If the macro TEST is defined at compile-time, a test main program will be compiled which takes paths and names from stdin, and echos their existence and expansion to stdout. ***********************************************************************/ /*********************************************************************** Search for a file in a list of directories specified in the pathlist, and if found, return a pointer to an internal buffer (overwritten on subsequent calls) containing a full filename; otherwise, return (char*)NULL. This version has been extended to use the file cache stored in an optional hash table pointed to by fsf_table. If the table exists, and a match is found there, then it is assumed to be a valid file name and the operating system is not consulted at all, nor is the path list examined. Note that this permits finding files whose directories are not specified in the path list. You can view this as both a bug and a feature. Since the user can control the contents of the FSMAPFILE file, and can suppress it entirely, the feature outweighs the bug. Filename caching is a valuable economization because file system lookups are relatively time consuming. Of course, if the cache is incorrect, a returned filename may not exist, and a later open attempt will fail; that should alert to user to update the FSMAPFILE file. The pathlist is expected to contain directories separated by one (or more) of the characters in the system-dependent SEP_COMP string constant. The search is restricted to the directories in the path list; unlike PC DOS's PATH variable, the current directory is NOT searched unless it is included in the path list. For example, findfile(".:/usr/local/lib:/tmp", "foo.bar") will check for the files ./foo.bar /usr/local/lib/foo.bar /tmp/foo.bar in that order. The character which normally separates a directory from a file name will be supplied automatically if it is not given in the path list. Thus, the example above could have been written findfile("./:/usr/local/lib/:/tmp/","foo.bar") Since multiple path separators are ignored, the following are also acceptable: findfile("./ : /usr/local/lib/ : /tmp/","foo.bar") findfile("./ /usr/local/lib/ /tmp/","foo.bar") findfile("./:::::/usr/local/lib/:::::/tmp/:::::","foo.bar") For VAX VMS, additional support is provided for rooted logical names, and names that look like rooted names, but are not. Normally, a logical name in a path will look name "LOGNAME:", and a file like "FILE.EXT"; combining them gives "LOGNAME:FILE.EXT". A rooted logical name is created by a DCL command like $ define /translation=(concealed,terminal) LOGNAME DISK:[DIR.] In such a case, VMS requires that what follows the logical name begin with a directory, e.g. the file is "[SUB]FILE.EXT". Concatenation of path with name gives "LOGNAME:[SUB]FILE.EXT", which is acceptable. To refer to a file in the directory DISK:[DIR], one writes "LOGNAME:[000000]FILE.EXT", where 000000 is the magic name of a root directory. If, however, the logical name looks like a rooted name, but wasn't defined with "/translation=(concealed,terminal)", then VMS will not recognize it. [That is an easy mistake to make, and issuing a DCL "show logical LOGNAME" command will NOT reveal the error.] Similarly, if the logical name looks like a directory name, and the file begins with a directory name, VMS will not recognize that either, even though there is no ambiguity about what is meant. We therefore make the following reductions after an initial attempt fails. First, expand the logical name, skipping further processing if that fails. Then, reduce the concatenation as follows: [DIR.]FILE.EXT --> [DIR]FILE.EXT [DIR.][SUB]FILE.EXT --> [DIR.SUB]FILE.EXT [DIR][SUB]FILE.EXT --> [DIR.SUB]FILE.EXT If the logical name points to a chain of names, the standard VMS C run-time library getenv() will return only the first in the chain. Chained logical names were added in VMS version 4.0 without operating system support to retrieve all members of the chain. The only way I've been able to find the subsequent members is to spawn a process that runs a VMS DCL SHOW LOGICAL command, and then parse its output! Under ATARI TOS, PC DOS, and UNIX, environment variable substitution is supported as follows. If the initial lookup fails, the filename is checked for the presence of an initial tilde. If one is found, then if the next character is not alphanumeric or underscore (e.g. ~/foo.bar), the tilde is replaced by ${HOME}; otherwise (e.g. ~user/foo.bar), the tilde is stripped and the following name is looked up using getpwnam() to find the login directory of that user name, and that string is substituted for the ~name. Then, the filename is scanned for $NAME or ${NAME} sequences, where NAME conforms to the regular expression [A-Za-z_]+[A-Za-z0-9_]*, and environment variable substitution is performed for NAME. Finally, the lookup is tried again. If it is successful, the name[] string is replaced by the substituted name, so it can be later used to open the file. ***********************************************************************/ #include #include "xunistd.h" #include "xctype.h" #include "xpwd.h" /* for ~name lookup in envsub() */ #include "xstdlib.h" #include "xstring.h" #if defined(HAVE_IO_H) #include /* for more function declarations */ #endif RCSID("$Id: fndfil.c,v 1.2 1996/05/03 20:15:28 beebe Exp beebe $") #ifdef DVI #include "typedefs.h" #include "hash.h" extern UNSIGN32 debug_code; extern HASH_TABLE *fsf_table; extern BOOLEAN g_dolog; /* allow log file creation */ extern FILE *g_logfp; /* log file pointer (for errors) */ extern FILE *stddbg; /* debug output file pointer */ extern char g_logname[]; /* name of log file, if created */ #endif /* DVI */ #if !defined(R_OK) #define R_OK 4 #endif #define FILE_IS_READABLE(n) ((int)access((char*)n,R_OK) == 0) #define ISNAMEPREFIX(c) (isalpha(c) || ((c) == '_')) #define ISNAMESUFFIX(c) (isalnum(c) || ((c) == '_')) #ifdef MIN #undef MIN #endif /* MIN */ #define MIN(a,b) ((a) < (b) ? (a) : (b)) #if OS_VAXVMS #undef GETENV #define GETENV (char*)vms_getenv char *vms_getenv(char *name_); #endif /* OS_VAXVMS */ /* VMS 4.4 string.h incorrectly declares strspn as char* instead of size_t, but the return value is (correctly) an integer. VMS 5.5 string.h declares it correctly. */ #define STRSPN(s,t) (size_t)strspn(s,t) extern void dbglookup ARGS((const char*, const char*)); extern char *findfile ARGS((const char *pathlist_, const char *name_)); extern void warning ARGS((const char *msg_)); static const char *copyname ARGS((char *target_, const char *source_)); static char *envsub ARGS((const char *filename_)); static int isfile ARGS((char *filename_)); #ifdef TEST int main ARGS((void)); #endif /* TEST */ /*********************************************************************** Copy environment variable or usename, and return updated pointer past end of copied name in source[]. ***********************************************************************/ static const char* #if defined(HAVE_STDC) copyname( register char *target, /* destination string */ register const char *source /* source string */ ) #else /* NOT defined(HAVE_STDC) */ copyname(target,source) register char *target; /* destination string */ register const char *source; /* source string */ #endif /* defined(HAVE_STDC) */ { if (ISNAMEPREFIX(*source)) { for (*target++ = *source++; ISNAMESUFFIX(*source); ) *target++ = *source++; /* copy name */ *target = '\0'; /* terminate name */ } return (source); } /*********************************************************************** Do tilde and environment variable in a private copy of filename, return (char*)NULL if no changes were made, and otherwise, return a pointer to the internal copy of the expanded filename. ***********************************************************************/ static char* #if defined(HAVE_STDC) envsub( const char *filename ) #else /* NOT defined(HAVE_STDC) */ envsub(filename) const char *filename; #endif /* defined(HAVE_STDC) */ { #if (OS_ATARI || OS_PCDOS || OS_UNIX) static char altname[MAXPATHLEN+1]; /* result storage */ register const char *p; register char *r; register const char *s; char tmpfname[MAXPATHLEN+1]; #if OS_UNIX struct passwd *pw; /* handle tilde processing */ tmpfname[0] = '\0'; /* initialize tmpfname[] */ p = strchr(filename,'~'); if (p != (char*)NULL) /* handle tilde (once per filename) */ { (void)strncpy(tmpfname,filename,(size_t)(p - filename)); tmpfname[(int)(p - filename)] = '\0'; /* terminate copied string */ r = strchr(tmpfname,'\0'); /* remember start of name */ ++p; /* point past tilde */ if (ISNAMEPREFIX(*p)) /* expect ~name */ { p = copyname(r,p); /* p now points past ~name */ pw = getpwnam(r); /* get password structure */ (void)strcpy(r,pw->pw_dir); /* replace name by login directory */ } else /* expect ~/name */ (void)strcat(tmpfname,"${HOME}"); /* change to ${HOME}/name */ (void)strcat(tmpfname,p); /* copy rest of filename */ } else (void)strcpy(tmpfname,filename); /* copy of filename */ #else /* NOT OS_UNIX */ (void)strcpy(tmpfname,filename); /* copy of filename */ #endif /* OS_UNIX */ for (r = altname, *r = '\0', p = tmpfname; *p; ) { /* handle environment variables */ if (*p == '$') /* expect $NAME or ${NAME} */ { p++; /* point past $ */ if (*p == '{') /* have ${NAME} */ { p = copyname(r,p+1); if (*p++ != '}') return ((char*)NULL); /* bail out -- no closing brace */ for (s = (const char *)getenv(r); (s != (char*)NULL) && *s;) *r++ = *s++; /* copy environment variable value */ *r = '\0'; /* terminate altname[] */ } else if (ISNAMEPREFIX(*p)) /* have $NAME */ { p = copyname(r,p); for (s = (const char *)getenv(r); (s != (char*)NULL) && *s;) *r++ = *s++; /* copy environment variable value */ *r = '\0'; /* terminate altname[] */ } else /* invalid $NAME */ *r++ = '$'; /* so just copy bare $ */ } else /* just copy character */ *r++ = *p++; } *r = '\0'; /* terminate altname[] */ #ifdef TEST (void)printf("envsub: ["); for (p = filename; *p; ++p) { putchar(*p); if (strchr(SEP_COMP,*p) != (char*)NULL) (void)printf("\n\t"); } (void)printf("] ->\n\t["); for (p = altname; *p; ++p) { putchar(*p); if (strchr(SEP_COMP,*p) != (char*)NULL) (void)printf("\n\t"); } (void)printf("]\n"); #endif /* TEST */ return (altname[0] ? altname : (char*)NULL); #else /* NOT (OS_ATARI || OS_PCDOS || OS_UNIX) */ return ((char*)NULL); /* no processing to be done */ #endif /* (OS_ATARI || OS_PCDOS || OS_UNIX) */ } /*********************************************************************** Given a directory search path in pathlist[] and a file name in name[], search the path for an existing file. If one is found, return a pointer to an internal copy of its full name; otherwise, return (char*)NULL. ***********************************************************************/ char* #if defined(HAVE_STDC) findfile( const char *pathlist, const char *name ) #else /* NOT defined(HAVE_STDC) */ findfile(pathlist,name) const char *pathlist; const char *name; #endif /* defined(HAVE_STDC) */ { #define BADCACHEFMT "Invalid font cache entry: font %s is not accessible" static char fullname[MAXPATHLEN+1]; static char fullpath[MAXPATHLEN+1]; int k; int len; register const char *p; #ifdef DVI HASH_ENTRY *he; static char message[MAXPATHLEN+1+sizeof(BADCACHEFMT)]; if ((name == (const char*)NULL) || (*name == '\0')) return ((char*)NULL); if (fsf_table != (HASH_TABLE*)NULL) { he = hash_lookup(name, fsf_table); /* name found in filename cache? */ if ( (he != (HASH_ENTRY*)NULL) && (he->hash_key != (const char*)NULL) ) { /* yes, reconstruct the full filename */ (void)strcpy(fullname,(const char*)he->hash_data); k = (int)strlen(fullname); if (strchr(SEP_PATH,fullname[k-1]) == (char*)NULL) fullname[k++] = SEP_PATH[0]; /* supply directory separator */ (void)strncpy(&fullname[k],name,(size_t)(MAXPATHLEN-k)); /* append name */ fullname[MAXPATHLEN] = '\0'; /* strncpy may not supply this */ dbglookup(fullname, "CACHED"); /*********************************************************** Originally, we returned the filename without an access check, but occasionally, this caused problems if the cache was out-of-date, so we now make the check, and issue a warning if the file is inaccessible, either because it does not exist at all, or lacks read permission. ***********************************************************/ if (FILE_IS_READABLE(fullname)) return ((char*)&fullname[0]); (void)sprintf(message,BADCACHEFMT,fullname); warning(message); } else dbglookup(name, "NOT CACHED"); } #endif /* DVI */ if ((name == (const char*)NULL) || (*name == '\0')) return ((char*)NULL); /******************************************************************* For user convenience, allow path lists to contain nested references to environment variables. We repeatedly expand the path list until there are no more changes in it, or a reasonable limit is reached (to prevent infinite recursion when a path mistakenly contains itself). *******************************************************************/ p = pathlist; if (pathlist != (char*)NULL) { /* Copy pathlist[] into fullpath[] cautiously. On the IBM PC, Turbo C 2.0 and 3.0 produce a MAXPATHLEN of 80, which is shorter than the longest search path that can be set at DOS level in an environment variable. If environment variables are set via initialization files, search paths may be even longer. We intentionally do NOT raise an error if path truncation occurs. */ (void)strncpy(fullpath,pathlist,sizeof(fullpath)); fullpath[sizeof(fullpath)-1] = '\0'; for (k = 0; k < 10; ++k) { p = envsub(fullpath); if ( (p == (char*)NULL) || (strcmp(p,fullpath) == 0) ) break; /* no new substitutions were made */ else /* save new expansion */ (void)strcpy(fullpath,p); } p = fullpath; /* remember last expansion */ } if ((p == (char*)NULL) || (*p == '\0')) /* no path, try bare filename */ { (void)strncpy(fullname,name,MAXPATHLEN); fullname[MAXPATHLEN] = '\0'; /* in case strncpy() doesn't do it */ return (isfile(fullname) ? (char*)&fullname[0] : (char*)NULL); } while (*p) /* process pathlist */ { len = (int)strcspn(p,SEP_COMP); /* get length before separator */ len = MIN(MAXPATHLEN-1,len); /* leave space for possible SEP_PATH */ (void)strncpy(fullname,p,(size_t)len); /* set directory name */ k = len; if (strchr(SEP_PATH,fullname[k-1]) == (char*)NULL) fullname[k++] = SEP_PATH[0]; /* supply directory separator */ (void)strncpy(&fullname[k],name,(size_t)(MAXPATHLEN-k)); /* append name */ fullname[MAXPATHLEN] = '\0'; /* strncpy may not supply this */ if (isfile(fullname)) return ((char*)&fullname[0]); #if OS_VAXVMS do /* single trip loop */ { char *logname; int n; if (fullname[k-1] == ']') /* then not logical name */ break; /* here's a loop exit */ fullname[k] = '\0'; /* terminate logical name */ logname = GETENV(fullname); if (logname == (char*)NULL) /* then unknown logical name */ break; /* here's a loop exit */ (void)strcpy(fullname,logname); n = strlen(fullname); if ( (n >= 2) && (fullname[n-2] == '.') && (fullname[n-1] == ']') ) { /* have rooted name [dir.] */ if (name[0] == '[') /* have [dir.][sub]name */ (void)strcpy(&fullname[n-1],&name[1]); /* [dir.sub]name */ else /* have [dir.]name */ { fullname[n-2] = ']'; (void)strcpy(&fullname[n-1],&name[0]); /* [dir]name */ } } else if (fullname[n-1] == ']') { /* have normal name [dir] */ if (name[0] == '[') /* have [dir][sub]name */ { fullname[n-1] = '.'; (void)strcpy(&fullname[n],&name[1]); /* [dir.sub]name */ } else /* have [dir]name */ (void)strcpy(&fullname[n],&name[0]); /* [dir]name */ } else /* must be logical name component */ { if (fullname[n-1] != ':') fullname[n++] = ':'; (void)strcpy(&fullname[n],&name[0]); /* logname:name */ } if (isfile(fullname)) return ((char*)&fullname[0]); } while (0); #endif /* OS_VAXVMS */ p += len; /* point past first path */ if (*p) /* then not at end of path list */ { p++; /* point past separator */ p += STRSPN(p,SEP_COMP); /* skip over any extra separators */ } } return ((char*)NULL); /* no file found */ } /*********************************************************************** Return a non-zero result if a file named filename exists, and otherwise, return zero. If the first existence check fails, then we try tilde and environment variable substitutions, and if there were any, a second existence check is made. If this second one succeeds, we replace filename with the substituted name, since that will be needed later to open the file. ***********************************************************************/ static int #if defined(HAVE_STDC) isfile( char *filename ) #else /* NOT defined(HAVE_STDC) */ isfile(filename) char *filename; #endif /* defined(HAVE_STDC) */ { int exists; char *p; exists = FILE_IS_READABLE(filename); if (!exists) /* try environment variable substitution */ { p = envsub(filename); if (p != (char*)NULL) { exists = FILE_IS_READABLE(p); if (exists) (void)strcpy(filename,p); } } #ifdef DVI if (exists) dbglookup(filename, "OK"); else dbglookup(filename, "FAILED"); #endif /* DVI */ return (exists); } #ifdef TEST /*********************************************************************** Simple test program for findfile(). It prompts for a single directory search path, then loops reading test filenames, uses findfile to see if they exist in the search path, and prints the name of the matching file, if any. If tilde or environment variable substitutions are made, they are printed as well. ***********************************************************************/ int main(VOID_ARG) { char pathlist[MAXPATHLEN+1]; char name[MAXPATHLEN+1]; char *p; (void)printf("Enter file search path: "); (void)fgets(pathlist,MAXPATHLEN,stdin); p = strchr(pathlist,'\n'); if (p != (char*)NULL) *p = '\0'; /* kill terminal newline */ for (;;) { (void)printf("Enter file name: "); if (fgets(name,MAXPATHLEN,stdin) == (char*)NULL) break; /* here's the loop exit */ p = strchr(name,'\n'); if (p != (char*)NULL) *p = '\0'; /* kill terminal newline */ p = findfile(pathlist,name); if (p == (char*)NULL) (void)printf("\tNo such file\n"); else (void)printf("\tFile is [%s]\n",p); } exit(EXIT_SUCCESS); return (0); } #endif /* TEST */ bibclean-2.11.4.1.orig/match.c0000644000175200017520000003153206142465405015140 0ustar debiandebian/*********************************************************************** ========== BACKGROUND ========== This file contains an implementation of limited regular-expression pattern matching code. The pattern syntax is simpler, more limited, and different from normal regular-expression pattern matching syntax. It is described in more detail below. The motivation for this new code is that I found considerable inconsistency in the matching behavior between versions of either re_comp()/re_exec() or compile()/step() on these systems DECstation 3100 IBM 3090 IBM PS/2 IBM RS/6000 AIX 3.2 NeXT Mach 3.0 Silicon Graphics IRIX 4.0 Stardent OS 2.2 Sun SPARC That makes use of those regular-expression pattern matching unreliable across systems. One possible solution would be to use the GNU re_comp() and re_exec() from the regexp distribution on prep.ai.mit.edu (as of writing, pub/gnu/regex-0.11.*). However, that code is large (5000+ lines), and its installation uses configuration facilities that only work under some variants of UNIX, and are completely useless on other operating systems. By contrast, the pattern matching code here is quite adequate for bibclean's needs, and can be expressed in fewer than 140 lines. In addition, it provides special handling of TeX control sequences and braces that would be rather awkward to express in conventional regular-expression syntax. If the symbol TEST is defined at compile time, a main program will be included that can be used for testing patterns supplied from stdin. ============== PATTERN SYNTAX ============== The string values to be pattern-matched are tab-free single-line values delimited by quotation marks. The patterns are represented by the following special markers: a exactly one letter A one or more letters d exactly one digit D one or more digits r exactly one Roman numeral R one or more Roman numerals (i.e. a Roman number) w exactly one word (one or more letters and digits) W one or more space-separated words, beginning and ending with a word X one or more special-separated words, beginning and ending with a word . one special character (see SPECIAL_CHARS defined below) : one or more special characters one or more spaces \x exactly one x (x is an character) x exactly the character x (x is anything but aAdDrRwW.:\) Special characters are a subset of punctuation characters that are typically used in values. Note the \ represents a single literal space, \\ a single literal backslash, \a the letter a, \A the letter A, \d the letter d, \D the letter D, and so on. Remember to double all backslashes in C strings: \a must be entered as \\a, and "and" as "\\an\\d". Each pattern is matched against the entire string and must match successfully for a YES return from match_pattern(). Consequently, there is no need for an analogue of ^ and $ in full regular expressions. Neither is there provision for matching on arbitrary sets of characters. Instead, fixed sets of characters are provided (conventional regular-expression equivalents are shown in parentheses): digits ([0-9]), alphanumerics ([A-Za-z0-9]), space ([ \t\f\r\n\v]), and special ([][" !#()*+,-./:;?~]) In addition, TeX control sequences of the form \ or \ in the string are ignored in the match, together with any following whitespace. Braces are also ignored, but not whitespace following them. Thus "{TR\slash A87}" matches the patterns "AD" and "W", and "{TR A\slash 87}" matches the patterns "A AD" and "A W". [29-Jan-1993] ***********************************************************************/ #include #include "xstdlib.h" #include "xstring.h" #include "xctype.h" #include "yesorno.h" #include "match.h" /* must come AFTER yesorno.h */ RCSID("$Id: match.c,v 1.2 1996/05/03 20:19:33 beebe Exp beebe $") #ifndef EXIT_SUCCESS #define EXIT_SUCCESS 0 #endif #define SPECIAL_CHARS " !#()*+,-./:;?[]~" #define isspecial(c) (strchr(SPECIAL_CHARS,(c)) != (char*)NULL) static const char *next_s ARGS((const char *s_)); int isroman ARGS((int c_)); #if defined(HAVE_STDC) YESorNO match_pattern(const char *s, const char *pattern) #else /* K&R style */ YESorNO match_pattern(s,pattern) const char *s; const char *pattern; #endif { s = next_s(s-1); for ( ; *pattern; ++pattern) { switch(*pattern) { case 'a': /* single letter */ if (!isalpha(*s)) return (NO); s = next_s(s); break; case 'A': /* one or more letters */ if (!isalpha(*s)) return (NO); while (isalpha(*s)) s = next_s(s); break; case 'd': if (!isdigit(*s)) /* single digit */ return (NO); s = next_s(s); break; case 'D': /* one or more digits */ if (!isdigit(*s)) return (NO); while (isdigit(*s)) s = next_s(s); break; case 'r': /* single Roman numeral */ if (!isroman(*s)) return (NO); s = next_s(s); break; case 'R': /* one or more Roman numerals */ if (!isroman(*s)) return (NO); while (isroman(*s)) s = next_s(s); break; case 'w': /* one word (letters and digits) */ if (!isalnum(*s)) return (NO); while (isalnum(*s)) s = next_s(s); break; case 'W': /* one or more space-separated words */ if (!isalnum(*s)) return (NO); while (isalnum(*s)) /* parse first word */ s = next_s(s); for (;;) { if (!isspace(*s)) break; while (isspace(*s)) /* parse separators */ s = next_s(s); while (isalnum(*s)) /* parse another word */ s = next_s(s); } break; case 'X': /* one or more special-separated words */ if (!isalnum(*s)) return (NO); while (isalnum(*s)) /* parse first word */ s = next_s(s); for (;;) { if (!isspecial(*s)) break; while (isspecial(*s)) /* parse separators */ s = next_s(s); while (isalnum(*s)) /* parse another word */ s = next_s(s); } break; case ' ': /* one or more whitespace characters */ if (!isspace(*s)) return (NO); while (isspace(*s)) s = next_s(s); break; case '.': /* exactly one special character */ if (!isspecial(*s)) return (NO); break; case ':': /* one or more special characters */ if (!isspecial(*s)) return (NO); while (isspecial(*s)) s = next_s(s); break; case '\\': /* literal next character */ pattern++; /* fall through to exact match test */ default: /* anything else: exact match */ if (*pattern != *s) return(NO); s = next_s(s); } /* end switch */ } /* end for (; ;) */ return (*s == '\0' ? YES : NO); /* YES if reached end of string */ } #if defined(HAVE_STDC) static const char * next_s(const char *s) #else /* K&R style */ static const char * next_s(s) const char *s; #endif { /* find next position in s, ignoring braces and ignoring TeX control sequences and any space that follows them */ for (++s; *s; ) { switch (*s) { case '\\': /* TeX control sequence */ ++s; /* look at next character */ if (isalpha(*s)) /* \ */ { while (isalpha(*s)) ++s; } else /* \ */ ++s; while (isspace(*s)) /* advance over trailing whitespace */ ++s; /* since TeX does too */ break; case '{': case '}': ++s; break; case BIBTEX_HIDDEN_DELIMITER: /* ignore delimited inline comment */ for (++s; *s; ++s) { if (*s == BIBTEX_HIDDEN_DELIMITER) { ++s; break; } } break; default: return (s); } /* end switch */ } /* end for */ return (s); } #ifdef TEST #define MAXLINE 256 #define NO_WARNING (const char *)NULL MATCH_PATTERN month_patterns[] = { {"aaa", "oct"}, {"aaa # \" D\"", "oct # \" 10\""}, {"aaa # \" D--D\"", "oct # \" 20--24\""}, {"\"D \" # aaa", "\"10 \" # oct"}, {"\"D--D \" # aaa", "\"10--24 \" # oct"}, {"aaa # \"\" # aaa", "jul # \"\\emdash \" # aug"}, {"aaa # \"--\" # aaa", "jul # \"--\" # aug"}, {"aaa # \" -- \" # aaa", "jul # \" -- \" # aug"}, {"aaa # \"/\" # aaa", "jul # \"/\" # aug"}, {"aaa # \" A \" # aaa", "jul # \" and \" # aug"}, {(const char*)NULL, NO_WARNING}, }; MATCH_PATTERN number_patterns[] = { {"\"A AD\"", "PN LPS5001"}, {"\"A D(D)\"", "RJ 34(49)"}, {"\"A D\"", "XNSS 288811"}, {"\"A D\\.D\"", "Version 3.20"}, {"\"A-A-D-D\"", "UMIAC-TR-89-11"}, {"\"A-A-D\"", "CS-TR-2189"}, {"\"A-A-D\\.D\"", "CS-TR-21.7"}, {"\"A-AD-D\"", "TN-K\\slash 27-70"}, {"\"A-D D\"", "PB-251 845"}, {"\"A-D-D\"", "ANL-30-74"}, {"\"A-D\"", "TR-2189"}, {"\"AD-D-D\"", "GG24-3611-00"}, {"\"AD-D\"", "SP43-29"}, {"\"AD\"", "LPS0064"}, {"\"A\\#D-D\"", "TR\\#89-24 ????"}, {"\"D D\"", "23 \\& 24"}, {"\"D \\an\\d D\"", "11 and 12"}, {"\"D+D\"", "3+4"}, {"\"D-D\"", "23-27"}, {"\"D/D\"", "23/27"}, {"\"DA\"", "23A"}, {"\"D\"", "23"}, {"\"D\\.D\"", "3.4"}, {"\"W-W W\"", "AERE-R 12329"}, {"\"W-W-WW-W\"", "OSU-CISRC-4\\slash 87-TR9"}, {"\"W\"", "Computer Science Report 100"}, {"\"X\"", "TR/AB/3-43.7-3/AB"}, {(const char*)NULL, NO_WARNING}, }; MATCH_PATTERN pages_patterns[] = { {"\"D\"", "23"}, {"\"aD\"", "L23"}, {"\"D--D\"", "23--27"}, {"\"aD--aD\"", "L23--L27"}, {"\"D, D\"", "23, 27"}, {"\"aD, aD\"", "L23, L27"}, {"\"D, D, D\"", "23, 27, 45"}, {"\"aD, aD, aD\"", "L23, L27, L45"}, {"\"D, D, D, D\"", "23, 27, 45, 98"}, {"\"aD, aD, aD, aD\"", "L23, L27, L45, L98"}, {"\"R + D\"", "viii + 445"}, {"\"R + D, w D w\"", "viii + 445, with 30 illustrations"}, {"\"D, w D w\"", "239, with 27 illustrations"}, {"\"D--D, D--D\"", "23--27, 29--32"}, {"\"D--D, D--D, D--D\"", "23--27, 29--32, 35--37"}, {"\"aD--aD, aD--aD\"", "L23--L27, L29--L32"}, {"\"aD--aD, aD--aD, aD--aD\"", "L23--L27, L29--L32, L35--L37"}, {(const char*)NULL, NO_WARNING}, }; MATCH_PATTERN volume_patterns[] = { {"\"D\"", "27"}, {"\"DA\"", "27A"}, {"\"D/D\"", "27/3"}, {"\"DA D\"", "27A 3"}, {"\"w-D\"", "SMC-13"}, {"\"A\"", "VIII"}, {"\"D.D\"", "1.2"}, {"\"D \\an\\d D\"", "11 and 12"}, {"\"W\"", "Special issue A"}, {(const char*)NULL, NO_WARNING}, }; MATCH_PATTERN year_patterns[] = { {"\"DDDD\"", NO_WARNING}, {"\"DDDD,WDDDD\"", NO_WARNING}, {"\"DDDD, DDDD, DDDD\"", NO_WARNING}, {"\"18dd, 18dd, 18dd\"", "1889, 1890, 1891"}, {"\"18dd, 18dd\"", "1889, 1890"}, {"\"18dd--d\"", "1891--2"}, {"\"18dd\"", "1892"}, {"\"18dda18dd\"", "{\\noopsort{1885a}}1885"}, {"\"19dd (19dd)\"", "1989 (1990)" }, {"\"19dd, 19dd, 19dd\"", "1989, 1990, 1991"}, {"\"19dd, 19dd\"", "1989, 1990"}, {"\"19dd--d\"", "1991--2"}, {"\"19dd\" # \"--\"", "\"1989\" # \"\\unskip--\""}, {"\"19dd\"", "1992"}, {"\"19dda19dd\"", "{\\noopsort{1985a}}1985"}, {"\"200d--d\"", "2001--2"}, {"\"200d\"", "2009"}, {(const char*)NULL, NO_WARNING}, }; static long line_number; int main ARGS((int argc,char* argv[])); static void process ARGS((const char *line_, MATCH_PATTERN patterns_[])); #if defined(HAVE_STDC) int main(int argc, char* argv[]) #else /* K&R style */ int main(argc,argv) int argc; char* argv[]; #endif { char line[MAXLINE]; /* Input lines should look like key = "value", where key is either number or year. Lines with any other key values are ignored. */ line_number = 0L; while (fgets(line,MAXLINE,stdin) != (char*)NULL) { char *p; line_number++; p = strchr(line,'\0'); if (p != (char *)NULL) { for (--p; isspace(*p) || (*p == ','); --p) *p = '\0'; /* remove trailing whitespace and commas */ for (p = line; isspace(*p); ++p) /* NO-OP */; if (strncmp(p,"month",4) == 0) process(line,month_patterns); else if (strncmp(p,"number",6) == 0) process(line,number_patterns); else if (strncmp(p,"pages",4) == 0) process(line,pages_patterns); else if (strncmp(p,"volume",6) == 0) process(line,volume_patterns); else if (strncmp(p,"year",4) == 0) process(line,year_patterns); else printf("%%%% %ld [%-24s]: %s\n", line_number, line, "ignored"); } } exit (EXIT_SUCCESS); return (EXIT_SUCCESS); } #if defined(HAVE_STDC) static void process(const char *line, MATCH_PATTERN patterns[]) #else /* K&R style */ static void process(line,patterns) const char *line; MATCH_PATTERN patterns[]; #endif { int k; const char *p; p = strchr(line,'\"'); if (p != (char *)NULL) line = p; for (k = 0; patterns[k].pattern != (const char*)NULL; ++k) { if (match_pattern(line,patterns[k].pattern) == YES) { if (patterns[k].message != NO_WARNING) printf("%%%% %ld [%-24s]: matches %s\n", line_number, line, patterns[k].message); return; } } printf("?? %ld [%-24s]: illegal value\n", line_number, line); } #endif /* TEST */ bibclean-2.11.4.1.orig/match.lok0000644000175200017520000116172206142411317015502 0ustar debiandebian%% 1 [%% /u/sy/beebe/tex/bibclean/2-11/match.dat, Fri May 3 07:05:42 1996]: ignored %% 2 [%% Edit by Nelson H. F. Beebe ]: ignored %% 3 [%% This is a test file for match]: ignored ?? 4 ["" ]: illegal value %% 5 ["02 " # apr ]: matches "10 " # oct %% 6 ["03 " # apr ]: matches "10 " # oct %% 7 ["03 " # jul ]: matches "10 " # oct %% 8 ["05 " # apr ]: matches "10 " # oct %% 9 ["05 " # dec ]: matches "10 " # oct %% 10 ["05 " # feb ]: matches "10 " # oct %% 11 ["05 " # jan ]: matches "10 " # oct %% 12 ["05 " # jul ]: matches "10 " # oct %% 13 ["05 " # jun ]: matches "10 " # oct %% 14 ["05 " # mar ]: matches "10 " # oct %% 15 ["05 " # may ]: matches "10 " # oct %% 16 ["05 " # nov ]: matches "10 " # oct %% 17 ["05 " # oct ]: matches "10 " # oct %% 18 ["05 " # sep ]: matches "10 " # oct %% 19 ["07 " # nov ]: matches "10 " # oct %% 20 ["08 " # apr ]: matches "10 " # oct %% 21 ["08 " # mar ]: matches "10 " # oct %% 22 ["08 " # nov ]: matches "10 " # oct %% 23 ["09 " # dec ]: matches "10 " # oct %% 24 ["09 " # jul ]: matches "10 " # oct %% 25 ["09 " # jun ]: matches "10 " # oct %% 26 ["09 " # may ]: matches "10 " # oct %% 27 ["09 " # nov ]: matches "10 " # oct ?? 28 ["1-3," ]: illegal value %% 29 ["10 " # aug ]: matches "10 " # oct %% 30 ["10 " # dec ]: matches "10 " # oct %% 31 ["10 " # feb ]: matches "10 " # oct %% 32 ["10 " # jun ]: matches "10 " # oct %% 33 ["10 " # mar ]: matches "10 " # oct %% 34 ["10 " # nov ]: matches "10 " # oct %% 35 ["10--11 " # mar ]: matches "10--24 " # oct %% 36 ["11 " # feb ]: matches "10 " # oct %% 37 ["11 " # jun ]: matches "10 " # oct %% 38 ["11 " # mar ]: matches "10 " # oct %% 39 ["11 " # may ]: matches "10 " # oct %% 40 ["11 " # nov ]: matches "10 " # oct ?? 41 ["11--12~" # sep ]: illegal value ?? 42 ["11-12 " # jan ]: illegal value %% 43 ["12 " # dec ]: matches "10 " # oct %% 44 ["12 " # jul ]: matches "10 " # oct %% 45 ["12 " # may ]: matches "10 " # oct %% 46 ["12 " # sep ]: matches "10 " # oct ?? 47 ["12--13~" # nov ]: illegal value %% 48 ["13 " # dec ]: matches "10 " # oct %% 49 ["13 " # oct ]: matches "10 " # oct %% 50 ["14 " # apr ]: matches "10 " # oct %% 51 ["14 " # feb ]: matches "10 " # oct %% 52 ["14 " # jan ]: matches "10 " # oct %% 53 ["14 " # sep ]: matches "10 " # oct %% 54 ["15 " # apr ]: matches "10 " # oct %% 55 ["15 " # feb ]: matches "10 " # oct %% 56 ["15 " # jan ]: matches "10 " # oct %% 57 ["15 " # jul ]: matches "10 " # oct %% 58 ["15 " # jun ]: matches "10 " # oct %% 59 ["15 " # may ]: matches "10 " # oct %% 60 ["15 " # oct ]: matches "10 " # oct ?? 61 ["15~" # sep ]: illegal value %% 62 ["16 " # apr ]: matches "10 " # oct ?? 63 ["16~" # nov ]: illegal value %% 64 ["17 " # apr ]: matches "10 " # oct %% 65 ["17 " # dec ]: matches "10 " # oct %% 66 ["17 " # may ]: matches "10 " # oct ?? 67 ["17--21" # jun ]: illegal value %% 68 ["18 " # mar ]: matches "10 " # oct %% 69 ["18 " # oct ]: matches "10 " # oct %% 70 ["19 " # jun ]: matches "10 " # oct %% 71 ["19 " # nov ]: matches "10 " # oct %% 72 ["19 " # oct ]: matches "10 " # oct ?? 73 ["1988 3 vol. xxxix+" ]: illegal value ?? 74 ["1988" ]: illegal value ?? 75 ["1990-" ]: illegal value ?? 76 ["1991 2 vol. xxi+" ]: illegal value ?? 77 ["1992 2 vol. xlix+" ]: illegal value ?? 78 ["1992 3 vol. lvii+" ]: illegal value ?? 79 ["1992 3 vol. xlviii+" ]: illegal value ?? 80 ["1993 2 vol. xxxv+" ]: illegal value ?? 81 ["1993 2 vol." ]: illegal value ?? 82 ["1~" # jul ]: illegal value %% 83 ["20 " # aug ]: matches "10 " # oct %% 84 ["20 " # dec ]: matches "10 " # oct %% 85 ["20 " # jan ]: matches "10 " # oct ?? 86 ["20--24~" # mar ]: illegal value %% 87 ["21 " # dec ]: matches "10 " # oct %% 88 ["21 " # jan ]: matches "10 " # oct %% 89 ["21--25 " # jun ]: matches "10--24 " # oct %% 90 ["21--25 " # oct ]: matches "10--24 " # oct %% 91 ["22 " # mar ]: matches "10 " # oct %% 92 ["23 " # dec ]: matches "10 " # oct %% 93 ["23 " # feb ]: matches "10 " # oct ?? 94 ["23--24~" # nov ]: illegal value %% 95 ["24 " # aug ]: matches "10 " # oct %% 96 ["24 " # feb ]: matches "10 " # oct %% 97 ["24 " # jul ]: matches "10 " # oct %% 98 ["24 " # mar ]: matches "10 " # oct ?? 99 ["24--28~" # jul ]: illegal value %% 100 ["24--29 " # jul ]: matches "10--24 " # oct ?? 101 ["24~" # aug ]: illegal value %% 102 ["25 " # feb ]: matches "10 " # oct %% 103 ["25 " # jan ]: matches "10 " # oct %% 104 ["25 " # jun ]: matches "10 " # oct %% 105 ["25 " # may ]: matches "10 " # oct %% 106 ["26 " # feb ]: matches "10 " # oct %% 107 ["26 " # jul ]: matches "10 " # oct %% 108 ["26 " # may ]: matches "10 " # oct %% 109 ["26 " # sep ]: matches "10 " # oct ?? 110 ["26~" # jun # "--" # "2~" # jul]: illegal value %% 111 ["27 " # apr ]: matches "10 " # oct %% 112 ["27 " # jan ]: matches "10 " # oct %% 113 ["27 " # jun ]: matches "10 " # oct %% 114 ["27 " # sep ]: matches "10 " # oct %% 115 ["27--29 " # jul ]: matches "10--24 " # oct ?? 116 ["27~" # nov # "--" # "1~" # dec]: illegal value %% 117 ["28 " # dec ]: matches "10 " # oct %% 118 ["28 " # feb ]: matches "10 " # oct %% 119 ["28 " # jan ]: matches "10 " # oct %% 120 ["28 " # may ]: matches "10 " # oct %% 121 ["28 " # oct ]: matches "10 " # oct %% 122 ["28 " # sep ]: matches "10 " # oct %% 123 ["29 " # apr ]: matches "10 " # oct %% 124 ["29 " # may ]: matches "10 " # oct %% 125 ["29 " # nov ]: matches "10 " # oct ?? 126 ["2~" # dec ]: illegal value %% 127 ["30 " # apr ]: matches "10 " # oct %% 128 ["30 " # aug ]: matches "10 " # oct %% 129 ["30 " # dec ]: matches "10 " # oct %% 130 ["30 " # nov ]: matches "10 " # oct %% 131 ["30 " # sep ]: matches "10 " # oct %% 132 ["31 " # aug ]: matches "10 " # oct ?? 133 ["31~" # aug # "--" # "2~" # sep]: illegal value ?? 134 ["4--6~" # mar ]: illegal value %% 135 ["5--8 " # apr ]: matches "10--24 " # oct %% 136 ["6 " # nov ]: matches "10 " # oct ?? 137 ["7--10~" # sep ]: illegal value %% 138 ["9 " # may ]: matches "10 " # oct ?? 139 ["??" ]: illegal value ?? 140 ["????" ]: illegal value ?? 141 ["August and November" ]: illegal value ?? 142 ["Autumn" ]: illegal value ?? 143 ["December 1," ]: illegal value ?? 144 ["December 3," ]: illegal value ?? 145 ["December 6," ]: illegal value ?? 146 ["Fall" ]: illegal value ?? 147 ["February and May" ]: illegal value ?? 148 ["January" ]: illegal value ?? 149 ["January/February" ]: illegal value ?? 150 ["June and July" ]: illegal value ?? 151 ["March 27," ]: illegal value ?? 152 ["March~5," ]: illegal value ?? 153 ["May \& July" ]: illegal value ?? 154 ["May/June" ]: illegal value ?? 155 ["November 19, " ]: illegal value ?? 156 ["November and February" ]: illegal value ?? 157 ["Spring" ]: illegal value ?? 158 ["Summer" ]: illegal value ?? 159 ["Winter 1992-" ]: illegal value ?? 160 ["Winter" ]: illegal value ?? 161 ["avril" ]: illegal value ?? 162 ["decembre" ]: illegal value ?? 163 ["d{\'{e}}cembre" ]: illegal value ?? 164 ["juillet" ]: illegal value ?? 165 ["lipiec" ]: illegal value ?? 166 ["mai" ]: illegal value ?? 167 ["mars" ]: illegal value ?? 168 ["may" ]: illegal value ?? 169 ["novembre" ]: illegal value ?? 170 ["octobre" ]: illegal value ?? 171 ["septembre" ]: illegal value ?? 172 [ month = Aug ]: illegal value ?? 173 [ month = Mar ]: illegal value ?? 174 [ month = Oct ]: illegal value ?? 175 [" 1" ]: illegal value ?? 176 [" 11-14" ]: illegal value ?? 177 [" 15" ]: illegal value ?? 178 [" 16" ]: illegal value ?? 179 [" 19-22" ]: illegal value ?? 180 [" 19-23" ]: illegal value ?? 181 [" 23" ]: illegal value ?? 182 ["-" # may ]: illegal value ?? 183 ["--" # jun ]: illegal value ?? 184 ["/" # jul ]: illegal value ?? 185 ["/" # may ]: illegal value ?? 186 ["\slash " # jun ]: illegal value ?? 187 [ month = apr ]: illegal value ?? 188 [" 12" ]: illegal value ?? 189 [" 15" ]: illegal value ?? 190 [" 20" ]: illegal value ?? 191 [" 22" ]: illegal value ?? 192 [" 23" ]: illegal value ?? 193 [" 25" ]: illegal value ?? 194 [" 27-" # sep # " 2" ]: illegal value ?? 195 [" 28-31, 1989" ]: illegal value ?? 196 [" 3" ]: illegal value ?? 197 [" 31" ]: illegal value ?? 198 [" 5" ]: illegal value ?? 199 [" 8" ]: illegal value ?? 200 [" 9--11" ]: illegal value ?? 201 ["-" # sep ]: illegal value ?? 202 ["--" # sep ]: illegal value ?? 203 ["/" # nov ]: illegal value ?? 204 ["\slash " # nov ]: illegal value ?? 205 ["\slash " # sep ]: illegal value ?? 206 [ month = aug ]: illegal value ?? 207 [" 10" ]: illegal value ?? 208 [" 14" ]: illegal value ?? 209 [" 15" ]: illegal value ?? 210 [" 23" ]: illegal value ?? 211 [" 3" ]: illegal value ?? 212 [" 5" ]: illegal value ?? 213 ["13-18" ]: illegal value ?? 214 ["\slash " # jan ]: illegal value ?? 215 [ month = dec ]: illegal value ?? 216 [" 04" ]: illegal value ?? 217 [" 07" ]: illegal value ?? 218 [" 11" ]: illegal value ?? 219 [" 12" ]: illegal value ?? 220 [" 14" ]: illegal value ?? 221 [" 15" ]: illegal value ?? 222 [" 16" ]: illegal value ?? 223 [" 17" ]: illegal value ?? 224 [" 2-6" ]: illegal value ?? 225 [" 27" ]: illegal value ?? 226 [" 5" ]: illegal value ?? 227 [" 8" ]: illegal value ?? 228 ["/" # mar ]: illegal value ?? 229 ["/" # may ]: illegal value ?? 230 ["\slash " # mar ]: illegal value ?? 231 ["\slash " # may ]: illegal value ?? 232 ["~14" ]: illegal value ?? 233 ["~6" ]: illegal value ?? 234 [ month = feb ]: illegal value ?? 235 [" -- " # mar ]: illegal value ?? 236 [" 11" ]: illegal value ?? 237 [" 13" ]: illegal value ?? 238 [" 16" ]: illegal value ?? 239 [" 17" ]: illegal value ?? 240 [" 22" ]: illegal value ?? 241 [" 23 -- " # feb # " 2" ]: illegal value ?? 242 [" 25" ]: illegal value ?? 243 ["-" # feb ]: illegal value ?? 244 ["--" # feb ]: illegal value ?? 245 ["/" # feb ]: illegal value ?? 246 ["/" # feb ]: illegal value ?? 247 ["\slash " # feb # "," ]: illegal value ?? 248 ["\slash " # feb ]: illegal value ?? 249 ["\slash " # mar ]: illegal value ?? 250 [ month = jan ]: illegal value ?? 251 [" (?? or " # sep # ")" ]: illegal value ?? 252 [" 1" ]: illegal value ?? 253 [" 13" ]: illegal value ?? 254 [" 1969 to " # dec # " 1970"]: illegal value ?? 255 [" 20" ]: illegal value ?? 256 [" 25" ]: illegal value ?? 257 [" 25--27" ]: illegal value ?? 258 [" 26" ]: illegal value ?? 259 [" 28-29" ]: illegal value ?? 260 [" 3" ]: illegal value ?? 261 [" 4-6" ]: illegal value ?? 262 [" 4-8" ]: illegal value ?? 263 [" 9" ]: illegal value ?? 264 ["-" # aug ]: illegal value ?? 265 ["-" # oct ]: illegal value ?? 266 ["--" # aug ]: illegal value ?? 267 ["--" # sep ]: illegal value ?? 268 ["/" # aug ]: illegal value ?? 269 ["\emdash " # aug ]: illegal value ?? 270 ["\slash " # aug ]: illegal value ?? 271 ["\slash " # sep ]: illegal value ?? 272 ["\slash{}" # aug ]: illegal value ?? 273 [ month = jul ]: illegal value ?? 274 [" 04" ]: illegal value ?? 275 [" 10" ]: illegal value ?? 276 [" 12" ]: illegal value ?? 277 [" 12--15" ]: illegal value ?? 278 [" 14" ]: illegal value ?? 279 [" 2-6" ]: illegal value ?? 280 [" 20--24" ]: illegal value ?? 281 [" 21-23" ]: illegal value ?? 282 [" 26-29" ]: illegal value ?? 283 [" 28" ]: illegal value ?? 284 [" 30" ]: illegal value ?? 285 [" 4" ]: illegal value ?? 286 [" 5" ]: illegal value ?? 287 ["\slash " # jul ]: illegal value ?? 288 ["~5" ]: illegal value ?? 289 [ month = jun ]: illegal value ?? 290 [" 13" ]: illegal value ?? 291 [" 15" ]: illegal value ?? 292 [" 18" ]: illegal value ?? 293 [" 21" ]: illegal value ?? 294 [" 23" ]: illegal value ?? 295 [" 25--28" ]: illegal value ?? 296 [" 27" ]: illegal value ?? 297 [" 29" ]: illegal value ?? 298 [" 3" ]: illegal value ?? 299 [" 4" ]: illegal value ?? 300 [" 7--10" ]: illegal value ?? 301 [" 9" ]: illegal value ?? 302 ["-" # apr ]: illegal value ?? 303 ["-" # dec ]: illegal value ?? 304 ["--" # apr ]: illegal value ?? 305 ["--" # dec ]: illegal value ?? 306 ["/" # apr ]: illegal value ?? 307 ["\slash " # apr ]: illegal value ?? 308 ["\slash " # may ]: illegal value ?? 309 [ month = mar ]: illegal value ?? 310 [" -- " # jun ]: illegal value ?? 311 [" 10-12" ]: illegal value ?? 312 [" 11" ]: illegal value ?? 313 [" 13" ]: illegal value ?? 314 [" 14" ]: illegal value ?? 315 [" 15" ]: illegal value ?? 316 [" 17" ]: illegal value ?? 317 [" 18" ]: illegal value ?? 318 [" 22" ]: illegal value ?? 319 [" 23" ]: illegal value ?? 320 [" 28" ]: illegal value ?? 321 [" 3" ]: illegal value ?? 322 [" 4-8" ]: illegal value ?? 323 [" 5" ]: illegal value ?? 324 [" 7" ]: illegal value ?? 325 [" 8-12" ]: illegal value ?? 326 [" 9" ]: illegal value ?? 327 ["-" # jun # " (or March??)"]: illegal value ?? 328 ["-" # jun ]: illegal value ?? 329 ["--" # june ]: illegal value ?? 330 ["/" # jul ]: illegal value ?? 331 ["/" # jun ]: illegal value ?? 332 ["\slash " # jun # "," ]: illegal value ?? 333 ["\slash " # jun ]: illegal value ?? 334 [ month = may ]: illegal value ?? 335 [" 15" ]: illegal value ?? 336 [" 24" ]: illegal value ?? 337 [" 3" ]: illegal value ?? 338 [" 30" ]: illegal value ?? 339 [" 4" ]: illegal value ?? 340 [" 8" ]: illegal value ?? 341 [" 9-11" ]: illegal value ?? 342 [" and " # feb ]: illegal value ?? 343 ["-" # dec ]: illegal value ?? 344 ["/" # dec ]: illegal value ?? 345 ["\slash " # dec ]: illegal value ?? 346 ["\slash " # feb ]: illegal value ?? 347 [ month = nov ]: illegal value ?? 348 [" 07" ]: illegal value ?? 349 [" 1" ]: illegal value ?? 350 [" 10" ]: illegal value ?? 351 [" 15" ]: illegal value ?? 352 [" 16" ]: illegal value ?? 353 [" 2" ]: illegal value ?? 354 [" 28" ]: illegal value ?? 355 [" 31" ]: illegal value ?? 356 ["-" # dec ]: illegal value ?? 357 ["-" # nov ]: illegal value ?? 358 ["--" # dec ]: illegal value ?? 359 ["/" # nov ]: illegal value ?? 360 ["\slash " # dec ]: illegal value ?? 361 ["\slash " # nov ]: illegal value ?? 362 ["~28" ]: illegal value ?? 363 [ month = oct ]: illegal value ?? 364 [" 1" ]: illegal value ?? 365 [" 18" ]: illegal value ?? 366 [" 21" ]: illegal value ?? 367 [" 23" ]: illegal value ?? 368 [" 24" ]: illegal value ?? 369 [" 25-" # oct # " 1" ]: illegal value ?? 370 [" 27" ]: illegal value ?? 371 [" 28" ]: illegal value ?? 372 [" 28-29" ]: illegal value ?? 373 [" 4" ]: illegal value ?? 374 [" 6" ]: illegal value ?? 375 [" or " # jun # "??" ]: illegal value ?? 376 ["-" # dec ]: illegal value ?? 377 ["-" # nov ]: illegal value ?? 378 ["-" # oct ]: illegal value ?? 379 ["--" # oct ]: illegal value ?? 380 ["/" # oct ]: illegal value ?? 381 ["\slash " # oct ]: illegal value ?? 382 [ month = sep ]: illegal value %% 383 [ ]: ignored %% 384 [ ]: ignored ?? 385 ["" ]: illegal value ?? 386 ["(1-2)" ]: illegal value ?? 387 ["(89/7)" ]: illegal value ?? 388 ["(XIII) 6" ]: illegal value ?? 389 ["(in preparation)" ]: illegal value ?? 390 ["(to appear)" ]: illegal value %% 391 ["0" ]: matches 23 %% 392 ["001" ]: matches 23 %% 393 ["0236" ]: matches 23 %% 394 ["027.07.1988" ]: matches TR/AB/3-43.7-3/AB %% 395 ["07-11-81" ]: matches TR/AB/3-43.7-3/AB %% 396 ["07-27-76" ]: matches TR/AB/3-43.7-3/AB %% 397 ["07-28-76" ]: matches TR/AB/3-43.7-3/AB %% 398 ["07-30-79" ]: matches TR/AB/3-43.7-3/AB %% 399 ["07.95" ]: matches 3.4 %% 400 ["1 \& 2" ]: matches Computer Science Report 100 %% 401 ["1 and 2" ]: matches 11 and 12 %% 402 ["1" ]: matches 23 %% 403 ["1(1)" ]: matches TR/AB/3-43.7-3/AB %% 404 ["1+8" ]: matches 3+4 %% 405 ["1, (part 2)" ]: matches TR/AB/3-43.7-3/AB %% 406 ["1, 3" ]: matches TR/AB/3-43.7-3/AB %% 407 ["1,2" ]: matches TR/AB/3-43.7-3/AB %% 408 ["1,2,3" ]: matches TR/AB/3-43.7-3/AB %% 409 ["1--2" ]: matches TR/AB/3-43.7-3/AB %% 410 ["1--3" ]: matches TR/AB/3-43.7-3/AB %% 411 ["1--4" ]: matches TR/AB/3-43.7-3/AB %% 412 ["1--5" ]: matches TR/AB/3-43.7-3/AB %% 413 ["1--ABR/86" ]: matches TR/AB/3-43.7-3/AB %% 414 ["1-2" ]: matches 23-27 %% 415 ["1-23-84" ]: matches TR/AB/3-43.7-3/AB %% 416 ["1-3" ]: matches 23-27 %% 417 ["1-4" ]: matches 23-27 %% 418 ["1-5" ]: matches 23-27 %% 419 ["1-6" ]: matches 23-27 %% 420 ["1.0" ]: matches 3.4 %% 421 ["1.3" ]: matches 3.4 %% 422 ["1/2" ]: matches 23/27 %% 423 ["1/89" ]: matches 23/27 %% 424 ["10" ]: matches 23 %% 425 ["10--11" ]: matches TR/AB/3-43.7-3/AB %% 426 ["10-11" ]: matches 23-27 %% 427 ["10-12" ]: matches 23-27 %% 428 ["100" ]: matches 23 %% 429 ["1000" ]: matches 23 %% 430 ["1004" ]: matches 23 %% 431 ["1005" ]: matches 23 %% 432 ["101" ]: matches 23 %% 433 ["1012" ]: matches 23 %% 434 ["10159" ]: matches 23 %% 435 ["101614" ]: matches 23 %% 436 ["102" ]: matches 23 %% 437 ["1020" ]: matches 23 %% 438 ["1025" ]: matches 23 %% 439 ["1029" ]: matches 23 %% 440 ["103" ]: matches 23 %% 441 ["1033" ]: matches 23 %% 442 ["104" ]: matches 23 %% 443 ["104237" ]: matches 23 %% 444 ["104612" ]: matches 23 %% 445 ["1048" ]: matches 23 %% 446 ["105" ]: matches 23 %% 447 ["1054" ]: matches 23 %% 448 ["1055" ]: matches 23 %% 449 ["106" ]: matches 23 %% 450 ["1065" ]: matches 23 %% 451 ["107" ]: matches 23 %% 452 ["108" ]: matches 23 %% 453 ["1084" ]: matches 23 %% 454 ["1088" ]: matches 23 %% 455 ["109" ]: matches 23 %% 456 ["1097" ]: matches 23 %% 457 ["10A" ]: matches 23A %% 458 ["11 and 12" ]: matches 11 and 12 %% 459 ["11" ]: matches 23 %% 460 ["11-12" ]: matches 23-27 %% 461 ["11/12" ]: matches 23/27 %% 462 ["11/145" ]: matches 23/27 %% 463 ["110" ]: matches 23 %% 464 ["1100" ]: matches 23 %% 465 ["1103" ]: matches 23 %% 466 ["1105" ]: matches 23 %% 467 ["111" ]: matches 23 %% 468 ["112" ]: matches 23 %% 469 ["1123" ]: matches 23 %% 470 ["113" ]: matches 23 %% 471 ["1136" ]: matches 23 %% 472 ["114" ]: matches 23 %% 473 ["1140" ]: matches 23 %% 474 ["1141" ]: matches 23 %% 475 ["11483" ]: matches 23 %% 476 ["115" ]: matches 23 %% 477 ["116" ]: matches 23 %% 478 ["116, SSA 11-11500" ]: matches TR/AB/3-43.7-3/AB %% 479 ["1168" ]: matches 23 %% 480 ["117" ]: matches 23 %% 481 ["118" ]: matches 23 %% 482 ["118-87" ]: matches 23-27 %% 483 ["119" ]: matches 23 %% 484 ["12 (9119)" ]: matches TR/AB/3-43.7-3/AB %% 485 ["12" ]: matches 23 %% 486 ["12-83" ]: matches 23-27 %% 487 ["12-93" ]: matches 23-27 %% 488 ["12.2.6" ]: matches TR/AB/3-43.7-3/AB %% 489 ["120" ]: matches 23 %% 490 ["1200" ]: matches 23 %% 491 ["121-5" ]: matches 23-27 %% 492 ["121-6" ]: matches 23-27 %% 493 ["1210" ]: matches 23 %% 494 ["1212" ]: matches 23 %% 495 ["1213" ]: matches 23 %% 496 ["1215" ]: matches 23 %% 497 ["122" ]: matches 23 %% 498 ["1225/1225a" ]: matches TR/AB/3-43.7-3/AB %% 499 ["123" ]: matches 23 %% 500 ["124" ]: matches 23 %% 501 ["1242" ]: matches 23 %% 502 ["125" ]: matches 23 %% 503 ["1259" ]: matches 23 %% 504 ["126" ]: matches 23 %% 505 ["1268" ]: matches 23 %% 506 ["127" ]: matches 23 %% 507 ["1274" ]: matches 23 %% 508 ["1278" ]: matches 23 %% 509 ["128" ]: matches 23 %% 510 ["129" ]: matches 23 %% 511 ["12A" ]: matches 23A %% 512 ["12B" ]: matches 23A %% 513 ["13" ]: matches 23 %% 514 ["13, section B" ]: matches TR/AB/3-43.7-3/AB %% 515 ["130" ]: matches 23 %% 516 ["1302" ]: matches 23 %% 517 ["1307" ]: matches 23 %% 518 ["131" ]: matches 23 %% 519 ["131M" ]: matches 23A %% 520 ["132" ]: matches 23 %% 521 ["1328" ]: matches 23 %% 522 ["133" ]: matches 23 %% 523 ["1332" ]: matches 23 %% 524 ["1333" ]: matches 23 %% 525 ["1334" ]: matches 23 %% 526 ["1343" ]: matches 23 %% 527 ["1344" ]: matches 23 %% 528 ["1346" ]: matches 23 %% 529 ["135" ]: matches 23 %% 530 ["1356" ]: matches 23 %% 531 ["136" ]: matches 23 %% 532 ["1366" ]: matches 23 %% 533 ["137" ]: matches 23 %% 534 ["138" ]: matches 23 %% 535 ["14" ]: matches 23 %% 536 ["14.2.2" ]: matches TR/AB/3-43.7-3/AB %% 537 ["14/92" ]: matches 23/27 %% 538 ["141" ]: matches 23 %% 539 ["142" ]: matches 23 %% 540 ["1420" ]: matches 23 %% 541 ["1428" ]: matches 23 %% 542 ["143" ]: matches 23 %% 543 ["144" ]: matches 23 %% 544 ["145" ]: matches 23 %% 545 ["1454" ]: matches 23 %% 546 ["1458" ]: matches 23 %% 547 ["1460" ]: matches 23 %% 548 ["1469" ]: matches 23 %% 549 ["147" ]: matches 23 %% 550 ["1470" ]: matches 23 %% 551 ["1471" ]: matches 23 %% 552 ["1474" ]: matches 23 %% 553 ["148" ]: matches 23 %% 554 ["149" ]: matches 23 %% 555 ["14A" ]: matches 23A %% 556 ["14B" ]: matches 23A %% 557 ["15" ]: matches 23 %% 558 ["150" ]: matches 23 %% 559 ["1505" ]: matches 23 %% 560 ["1506" ]: matches 23 %% 561 ["151" ]: matches 23 %% 562 ["1518" ]: matches 23 %% 563 ["152" ]: matches 23 %% 564 ["1532" ]: matches 23 %% 565 ["1545" ]: matches 23 %% 566 ["1548" ]: matches 23 %% 567 ["155" ]: matches 23 %% 568 ["1555" ]: matches 23 %% 569 ["1556" ]: matches 23 %% 570 ["156" ]: matches 23 %% 571 ["1563" ]: matches 23 %% 572 ["157" ]: matches 23 %% 573 ["158" ]: matches 23 %% 574 ["1585" ]: matches 23 %% 575 ["1586" ]: matches 23 %% 576 ["159" ]: matches 23 %% 577 ["16" ]: matches 23 %% 578 ["16-92" ]: matches 23-27 %% 579 ["16/92" ]: matches 23/27 %% 580 ["160" ]: matches 23 %% 581 ["161" ]: matches 23 %% 582 ["161/84" ]: matches 23/27 %% 583 ["162" ]: matches 23 %% 584 ["163" ]: matches 23 %% 585 ["165" ]: matches 23 %% 586 ["166" ]: matches 23 %% 587 ["167" ]: matches 23 %% 588 ["168" ]: matches 23 %% 589 ["1680" ]: matches 23 %% 590 ["1686" ]: matches 23 %% 591 ["169" ]: matches 23 %% 592 ["1690" ]: matches 23 %% 593 ["1697" ]: matches 23 %% 594 ["17" ]: matches 23 %% 595 ["17-92" ]: matches 23-27 %% 596 ["170" ]: matches 23 %% 597 ["1704" ]: matches 23 %% 598 ["1705" ]: matches 23 %% 599 ["171" ]: matches 23 %% 600 ["171.2R" ]: matches TR/AB/3-43.7-3/AB %% 601 ["172" ]: matches 23 %% 602 ["172205" ]: matches 23 %% 603 ["1729" ]: matches 23 %% 604 ["173" ]: matches 23 %% 605 ["1731" ]: matches 23 %% 606 ["1732" ]: matches 23 %% 607 ["174" ]: matches 23 %% 608 ["17414 JSC" ]: matches Computer Science Report 100 %% 609 ["17477" ]: matches 23 %% 610 ["175" ]: matches 23 %% 611 ["1755" ]: matches 23 %% 612 ["1758/92" ]: matches 23/27 %% 613 ["176" ]: matches 23 %% 614 ["1769" ]: matches 23 %% 615 ["178" ]: matches 23 %% 616 ["1782" ]: matches 23 %% 617 ["179" ]: matches 23 %% 618 ["1796" ]: matches 23 %% 619 ["18" ]: matches 23 %% 620 ["18-26" ]: matches 23-27 %% 621 ["18-94" ]: matches 23-27 %% 622 ["180" ]: matches 23 %% 623 ["1807" ]: matches 23 %% 624 ["181" ]: matches 23 %% 625 ["182" ]: matches 23 %% 626 ["1825" ]: matches 23 %% 627 ["1838" ]: matches 23 %% 628 ["1846-79" ]: matches 23-27 %% 629 ["1846-98" ]: matches 23-27 %% 630 ["1846-99" ]: matches 23-27 %% 631 ["1848-1854" ]: matches 23-27 %% 632 ["185" ]: matches 23 %% 633 ["186" ]: matches 23 %% 634 ["1860" ]: matches 23 %% 635 ["1868" ]: matches 23 %% 636 ["187" ]: matches 23 %% 637 ["187590 4004291034" ]: matches Computer Science Report 100 %% 638 ["188" ]: matches 23 %% 639 ["189" ]: matches 23 %% 640 ["1892" ]: matches 23 %% 641 ["19" ]: matches 23 %% 642 ["19-94" ]: matches 23-27 %% 643 ["190" ]: matches 23 %% 644 ["1901" ]: matches 23 %% 645 ["1907" ]: matches 23 %% 646 ["1908" ]: matches 23 %% 647 ["191" ]: matches 23 %% 648 ["1923" ]: matches 23 %% 649 ["193" ]: matches 23 %% 650 ["194" ]: matches 23 %% 651 ["194-82 GJBX" ]: matches TR/AB/3-43.7-3/AB %% 652 ["1944" ]: matches 23 %% 653 ["195" ]: matches 23 %% 654 ["1958" ]: matches 23 %% 655 ["196" ]: matches 23 %% 656 ["1967-2" ]: matches 23-27 %% 657 ["1969-42" ]: matches 23-27 %% 658 ["197" ]: matches 23 %% 659 ["1972-43" ]: matches 23-27 %% 660 ["1973/2" ]: matches 23/27 %% 661 ["1976" ]: matches 23 %% 662 ["1977-1" ]: matches 23-27 %% 663 ["1979-18" ]: matches 23-27 %% 664 ["1979-3" ]: matches 23-27 %% 665 ["1979-4" ]: matches 23-27 %% 666 ["1979-5" ]: matches 23-27 %% 667 ["1980-02-20" ]: matches TR/AB/3-43.7-3/AB %% 668 ["1982/IE/1" ]: matches TR/AB/3-43.7-3/AB %% 669 ["1985/OR/2" ]: matches TR/AB/3-43.7-3/AB %% 670 ["1985/OR/5" ]: matches TR/AB/3-43.7-3/AB %% 671 ["1986/11-524" ]: matches TR/AB/3-43.7-3/AB %% 672 ["199" ]: matches 23 %% 673 ["1991-01" ]: matches 23-27 %% 674 ["1992/35" ]: matches 23/27 %% 675 ["1993-08" ]: matches 23-27 %% 676 ["1993-09" ]: matches 23-27 %% 677 ["1994-02" ]: matches 23-27 %% 678 ["1A" ]: matches 23A %% 679 ["2 " ]: matches Computer Science Report 100 %% 680 ["2 (or 3??)" ]: matches TR/AB/3-43.7-3/AB %% 681 ["2 107-" ]: matches TR/AB/3-43.7-3/AB %% 682 ["2 123-" ]: matches TR/AB/3-43.7-3/AB %% 683 ["2 199-" ]: matches TR/AB/3-43.7-3/AB %% 684 ["2 and 3" ]: matches 11 and 12 %% 685 ["2" ]: matches 23 %% 686 ["2," ]: matches TR/AB/3-43.7-3/AB %% 687 ["2--3" ]: matches TR/AB/3-43.7-3/AB %% 688 ["2-3" ]: matches 23-27 %% 689 ["2-4" ]: matches 23-27 %% 690 ["2-94" ]: matches 23-27 %% 691 ["2-94*" ]: matches TR/AB/3-43.7-3/AB %% 692 ["2.2" ]: matches 3.4 %% 693 ["2.3.1" ]: matches TR/AB/3-43.7-3/AB %% 694 ["2/3" ]: matches 23/27 %% 695 ["2/RT/81" ]: matches TR/AB/3-43.7-3/AB %% 696 ["20" ]: matches 23 %% 697 ["20/93" ]: matches 23/27 %% 698 ["200" ]: matches 23 %% 699 ["2009" ]: matches 23 %% 700 ["201" ]: matches 23 %% 701 ["202" ]: matches 23 %% 702 ["2022" ]: matches 23 %% 703 ["203" ]: matches 23 %% 704 ["2030" ]: matches 23 %% 705 ["204" ]: matches 23 %% 706 ["2049--88" ]: matches TR/AB/3-43.7-3/AB %% 707 ["205" ]: matches 23 %% 708 ["2050--88" ]: matches TR/AB/3-43.7-3/AB %% 709 ["2057" ]: matches 23 %% 710 ["206" ]: matches 23 %% 711 ["207" ]: matches 23 %% 712 ["208" ]: matches 23 %% 713 ["2083" ]: matches 23 %% 714 ["209" ]: matches 23 %% 715 ["2095" ]: matches 23 %% 716 ["21" ]: matches 23 %% 717 ["21/93" ]: matches 23/27 %% 718 ["210" ]: matches 23 %% 719 ["2100--89" ]: matches TR/AB/3-43.7-3/AB %% 720 ["212" ]: matches 23 %% 721 ["213" ]: matches 23 %% 722 ["2136" ]: matches 23 %% 723 ["215-227" ]: matches 23-27 %% 724 ["216" ]: matches 23 %% 725 ["217" ]: matches 23 %% 726 ["218" ]: matches 23 %% 727 ["2181" ]: matches 23 %% 728 ["2184" ]: matches 23 %% 729 ["2190" ]: matches 23 %% 730 ["22 0714-1181" ]: matches TR/AB/3-43.7-3/AB %% 731 ["22" ]: matches 23 %% 732 ["22/81" ]: matches 23/27 %% 733 ["220" ]: matches 23 %% 734 ["222" ]: matches 23 %% 735 ["2240207" ]: matches 23 %% 736 ["225" ]: matches 23 %% 737 ["226" ]: matches 23 %% 738 ["2268" ]: matches 23 %% 739 ["2271" ]: matches 23 %% 740 ["228" ]: matches 23 %% 741 ["2286" ]: matches 23 %% 742 ["2287" ]: matches 23 %% 743 ["229" ]: matches 23 %% 744 ["23" ]: matches 23 %% 745 ["23-92" ]: matches 23-27 %% 746 ["230" ]: matches 23 %% 747 ["233" ]: matches 23 %% 748 ["235" ]: matches 23 %% 749 ["236" ]: matches 23 %% 750 ["2367" ]: matches 23 %% 751 ["237" ]: matches 23 %% 752 ["2374" ]: matches 23 %% 753 ["238" ]: matches 23 %% 754 ["239" ]: matches 23 %% 755 ["23905" ]: matches 23 %% 756 ["24 " ]: matches Computer Science Report 100 %% 757 ["24" ]: matches 23 %% 758 ["24-81" ]: matches 23-27 %% 759 ["24-92" ]: matches 23-27 %% 760 ["2400" ]: matches 23 %% 761 ["241" ]: matches 23 %% 762 ["24155" ]: matches 23 %% 763 ["242" ]: matches 23 %% 764 ["243" ]: matches 23 %% 765 ["244" ]: matches 23 %% 766 ["244-260" ]: matches 23-27 %% 767 ["2445" ]: matches 23 %% 768 ["245" ]: matches 23 %% 769 ["2452" ]: matches 23 %% 770 ["246" ]: matches 23 %% 771 ["247" ]: matches 23 %% 772 ["248" ]: matches 23 %% 773 ["2481" ]: matches 23 %% 774 ["249" ]: matches 23 %% 775 ["2497" ]: matches 23 %% 776 ["25" ]: matches 23 %% 777 ["25-81" ]: matches 23-27 %% 778 ["25-92" ]: matches 23-27 %% 779 ["251" ]: matches 23 %% 780 ["25134" ]: matches 23 %% 781 ["252" ]: matches 23 %% 782 ["254" ]: matches 23 %% 783 ["255" ]: matches 23 %% 784 ["257" ]: matches 23 %% 785 ["258" ]: matches 23 %% 786 ["2583" ]: matches 23 %% 787 ["2590" ]: matches 23 %% 788 ["26" ]: matches 23 %% 789 ["26/94" ]: matches 23/27 %% 790 ["260" ]: matches 23 %% 791 ["264" ]: matches 23 %% 792 ["2644" ]: matches 23 %% 793 ["265" ]: matches 23 %% 794 ["266" ]: matches 23 %% 795 ["267" ]: matches 23 %% 796 ["2688" ]: matches 23 %% 797 ["27" ]: matches 23 %% 798 ["27-94" ]: matches 23-27 %% 799 ["27/28" ]: matches 23/27 %% 800 ["272" ]: matches 23 %% 801 ["273" ]: matches 23 %% 802 ["275" ]: matches 23 %% 803 ["276" ]: matches 23 %% 804 ["2768" ]: matches 23 %% 805 ["28" ]: matches 23 %% 806 ["28-94" ]: matches 23-27 %% 807 ["28/94" ]: matches 23/27 %% 808 ["2815" ]: matches 23 %% 809 ["2835" ]: matches 23 %% 810 ["285" ]: matches 23 %% 811 ["289" ]: matches 23 %% 812 ["29" ]: matches 23 %% 813 ["29-94" ]: matches 23-27 %% 814 ["2908" ]: matches 23 %% 815 ["2913" ]: matches 23 %% 816 ["294 (AD 207929)" ]: matches TR/AB/3-43.7-3/AB %% 817 ["294" ]: matches 23 %% 818 ["2957" ]: matches 23 %% 819 ["296" ]: matches 23 %% 820 ["298" ]: matches 23 %% 821 ["29e ann{\'e}e" ]: matches Computer Science Report 100 %% 822 ["2??" ]: matches TR/AB/3-43.7-3/AB %% 823 ["3 (or 11??)" ]: matches TR/AB/3-43.7-3/AB %% 824 ["3 (or 2??)" ]: matches TR/AB/3-43.7-3/AB %% 825 ["3 (or 4??)" ]: matches TR/AB/3-43.7-3/AB %% 826 ["3 0723-2187" ]: matches TR/AB/3-43.7-3/AB %% 827 ["3 Pt 2" ]: matches Computer Science Report 100 %% 828 ["3 \& 4" ]: matches Computer Science Report 100 %% 829 ["3 and 4" ]: matches 11 and 12 %% 830 ["3 or 5??" ]: matches TR/AB/3-43.7-3/AB %% 831 ["3" ]: matches 23 %% 832 ["3+4" ]: matches 3+4 %% 833 ["3, 4" ]: matches TR/AB/3-43.7-3/AB %% 834 ["3--4" ]: matches TR/AB/3-43.7-3/AB %% 835 ["3-30" ]: matches 23-27 %% 836 ["3-31-84" ]: matches TR/AB/3-43.7-3/AB %% 837 ["3-4" ]: matches 23-27 %% 838 ["3/4" ]: matches 23/27 %% 839 ["3/6" ]: matches 23/27 %% 840 ["3/79" ]: matches 23/27 %% 841 ["30" ]: matches 23 %% 842 ["30(2)" ]: matches TR/AB/3-43.7-3/AB %% 843 ["3048" ]: matches 23 %% 844 ["3071" ]: matches 23 %% 845 ["3079--89--MS" ]: matches TR/AB/3-43.7-3/AB %% 846 ["30G-0009" ]: matches TR/AB/3-43.7-3/AB %% 847 ["31" ]: matches 23 %% 848 ["31-89" ]: matches 23-27 %% 849 ["3106" ]: matches 23 %% 850 ["314" ]: matches 23 %% 851 ["315" ]: matches 23 %% 852 ["32" ]: matches 23 %% 853 ["320 -- 2956" ]: matches TR/AB/3-43.7-3/AB %% 854 ["3229-3234" ]: matches 23-27 %% 855 ["323" ]: matches 23 %% 856 ["3237" ]: matches 23 %% 857 ["33" ]: matches 23 %% 858 ["33-78-2" ]: matches TR/AB/3-43.7-3/AB %% 859 ["330" ]: matches 23 %% 860 ["331" ]: matches 23 %% 861 ["332" ]: matches 23 %% 862 ["337" ]: matches 23 %% 863 ["339, also Ultracomputer Note 131"]: matches TR/AB/3-43.7-3/AB %% 864 ["34" ]: matches 23 %% 865 ["342/10/92 A" ]: matches TR/AB/3-43.7-3/AB %% 866 ["342/10/93 A/ I-9319" ]: matches TR/AB/3-43.7-3/AB %% 867 ["342/11/92 A" ]: matches TR/AB/3-43.7-3/AB %% 868 ["342/13/93 A" ]: matches TR/AB/3-43.7-3/AB %% 869 ["342/17/90" ]: matches TR/AB/3-43.7-3/AB %% 870 ["342/26/92 A" ]: matches TR/AB/3-43.7-3/AB %% 871 ["3430" ]: matches 23 %% 872 ["3459" ]: matches 23 %% 873 ["346" ]: matches 23 %% 874 ["3462" ]: matches 23 %% 875 ["3467" ]: matches 23 %% 876 ["349" ]: matches 23 %% 877 ["35" ]: matches 23 %% 878 ["3507" ]: matches 23 %% 879 ["3509" ]: matches 23 %% 880 ["353" ]: matches 23 %% 881 ["355" ]: matches 23 %% 882 ["3560" ]: matches 23 %% 883 ["358-364" ]: matches 23-27 %% 884 ["359" ]: matches 23 %% 885 ["36" ]: matches 23 %% 886 ["361" ]: matches 23 %% 887 ["3619" ]: matches 23 %% 888 ["367" ]: matches 23 %% 889 ["368" ]: matches 23 %% 890 ["369" ]: matches 23 %% 891 ["37" ]: matches 23 %% 892 ["37--82" ]: matches TR/AB/3-43.7-3/AB %% 893 ["370" ]: matches 23 %% 894 ["373" ]: matches 23 %% 895 ["377" ]: matches 23 %% 896 ["3776" ]: matches 23 %% 897 ["38" ]: matches 23 %% 898 ["3833" ]: matches 23 %% 899 ["3885" ]: matches 23 %% 900 ["389" ]: matches 23 %% 901 ["39 (or 4??)" ]: matches TR/AB/3-43.7-3/AB %% 902 ["39" ]: matches 23 %% 903 ["390" ]: matches 23 %% 904 ["391" ]: matches 23 %% 905 ["398" ]: matches 23 %% 906 ["399" ]: matches 23 %% 907 ["3B" ]: matches 23A %% 908 ["3\&4" ]: matches 23 %% 909 ["4 (or 5??)" ]: matches TR/AB/3-43.7-3/AB %% 910 ["4 Pt 1" ]: matches Computer Science Report 100 %% 911 ["4 and 1" ]: matches 11 and 12 %% 912 ["4 or 5?" ]: matches TR/AB/3-43.7-3/AB %% 913 ["4" ]: matches 23 %% 914 ["4, 5" ]: matches TR/AB/3-43.7-3/AB %% 915 ["4, Part II" ]: matches TR/AB/3-43.7-3/AB %% 916 ["4--5" ]: matches TR/AB/3-43.7-3/AB %% 917 ["4-10" ]: matches 23-27 %% 918 ["4-22-66-1" ]: matches TR/AB/3-43.7-3/AB %% 919 ["4-5" ]: matches 23-27 %% 920 ["4-6" ]: matches 23-27 %% 921 ["4-94" ]: matches 23-27 %% 922 ["4/1" ]: matches 23/27 %% 923 ["40" ]: matches 23 %% 924 ["400-63" ]: matches 23-27 %% 925 ["400-75 SeF" ]: matches TR/AB/3-43.7-3/AB %% 926 ["400-75" ]: matches 23-27 %% 927 ["400-85" ]: matches 23-27 %% 928 ["401" ]: matches 23 %% 929 ["405" ]: matches 23 %% 930 ["406 0723-0508" ]: matches TR/AB/3-43.7-3/AB %% 931 ["408" ]: matches 23 %% 932 ["409" ]: matches 23 %% 933 ["41" ]: matches 23 %% 934 ["412" ]: matches 23 %% 935 ["418" ]: matches 23 %% 936 ["42" ]: matches 23 %% 937 ["421" ]: matches 23 %% 938 ["424" ]: matches 23 %% 939 ["428" ]: matches 23 %% 940 ["4287:TR:81" ]: matches TR/AB/3-43.7-3/AB %% 941 ["43" ]: matches 23 %% 942 ["430" ]: matches 23 %% 943 ["431-014" ]: matches 23-27 %% 944 ["434" ]: matches 23 %% 945 ["4356" ]: matches 23 %% 946 ["439" ]: matches 23 %% 947 ["44" ]: matches 23 %% 948 ["443" ]: matches 23 %% 949 ["449" ]: matches 23 %% 950 ["45" ]: matches 23 %% 951 ["4543" ]: matches 23 %% 952 ["456" ]: matches 23 %% 953 ["458" ]: matches 23 %% 954 ["46" ]: matches 23 %% 955 ["466" ]: matches 23 %% 956 ["468" ]: matches 23 %% 957 ["47" ]: matches 23 %% 958 ["473-499" ]: matches 23-27 %% 959 ["476-029-4 (re-released as Rice COMP TR84-9)"]: matches TR/AB/3-43.7-3/AB %% 960 ["4776" ]: matches 23 %% 961 ["478" ]: matches 23 %% 962 ["48" ]: matches 23 %% 963 ["4805" ]: matches 23 %% 964 ["4816" ]: matches 23 %% 965 ["486" ]: matches 23 %% 966 ["4872" ]: matches 23 %% 967 ["49" ]: matches 23 %% 968 ["4911" ]: matches 23 %% 969 ["4922" ]: matches 23 %% 970 ["4930" ]: matches 23 %% 971 ["495" ]: matches 23 %% 972 ["5 (or 15??)" ]: matches TR/AB/3-43.7-3/AB %% 973 ["5" ]: matches 23 %% 974 ["5-6" ]: matches 23-27 %% 975 ["5-93" ]: matches 23-27 %% 976 ["5/6" ]: matches 23/27 %% 977 ["5/92" ]: matches 23/27 %% 978 ["50" ]: matches 23 %% 979 ["500-32" ]: matches 23-27 %% 980 ["5054" ]: matches 23 %% 981 ["507" ]: matches 23 %% 982 ["51" ]: matches 23 %% 983 ["51--52" ]: matches TR/AB/3-43.7-3/AB %% 984 ["511" ]: matches 23 %% 985 ["5118" ]: matches 23 %% 986 ["5121" ]: matches 23 %% 987 ["5123" ]: matches 23 %% 988 ["522" ]: matches 23 %% 989 ["523-538" ]: matches 23-27 %% 990 ["527" ]: matches 23 %% 991 ["53" ]: matches 23 %% 992 ["530" ]: matches 23 %% 993 ["539" ]: matches 23 %% 994 ["54" ]: matches 23 %% 995 ["541" ]: matches 23 %% 996 ["5419" ]: matches 23 %% 997 ["543" ]: matches 23 %% 998 ["5470" ]: matches 23 %% 999 ["55" ]: matches 23 %% 1000 ["5504" ]: matches 23 %% 1001 ["555" ]: matches 23 %% 1002 ["5573" ]: matches 23 %% 1003 ["56" ]: matches 23 %% 1004 ["560" ]: matches 23 %% 1005 ["56038" ]: matches 23 %% 1006 ["562" ]: matches 23 %% 1007 ["562M2-169. UCS II." ]: matches TR/AB/3-43.7-3/AB %% 1008 ["564" ]: matches 23 %% 1009 ["5656" ]: matches 23 %% 1010 ["567" ]: matches 23 %% 1011 ["568" ]: matches 23 %% 1012 ["57" ]: matches 23 %% 1013 ["570" ]: matches 23 %% 1014 ["572" ]: matches 23 %% 1015 ["574" ]: matches 23 %% 1016 ["577" ]: matches 23 %% 1017 ["579" ]: matches 23 %% 1018 ["58" ]: matches 23 %% 1019 ["580" ]: matches 23 %% 1020 ["581" ]: matches 23 %% 1021 ["582" ]: matches 23 %% 1022 ["583T" ]: matches 23A %% 1023 ["584" ]: matches 23 %% 1024 ["589" ]: matches 23 %% 1025 ["59" ]: matches 23 %% 1026 ["590" ]: matches 23 %% 1027 ["591" ]: matches 23 %% 1028 ["595" ]: matches 23 %% 1029 ["596" ]: matches 23 %% 1030 ["5B" ]: matches 23A %% 1031 ["5a" ]: matches 23A %% 1032 ["6 Pt 1" ]: matches Computer Science Report 100 %% 1033 ["6 Pt 2" ]: matches Computer Science Report 100 %% 1034 ["6" ]: matches 23 %% 1035 ["6--7" ]: matches TR/AB/3-43.7-3/AB %% 1036 ["6-7" ]: matches 23-27 %% 1037 ["6-93" ]: matches 23-27 %% 1038 ["6/7" ]: matches 23/27 %% 1039 ["6/80" ]: matches 23/27 %% 1040 ["60" ]: matches 23 %% 1041 ["6003" ]: matches 23 %% 1042 ["60174900A" ]: matches 23A %% 1043 ["602" ]: matches 23 %% 1044 ["60457040" ]: matches 23 %% 1045 ["606" ]: matches 23 %% 1046 ["6062" ]: matches 23 %% 1047 ["607" ]: matches 23 %% 1048 ["6086" ]: matches 23 %% 1049 ["609" ]: matches 23 %% 1050 ["61" ]: matches 23 %% 1051 ["611" ]: matches 23 %% 1052 ["612" ]: matches 23 %% 1053 ["6133" ]: matches 23 %% 1054 ["6158." ]: matches TR/AB/3-43.7-3/AB %% 1055 ["616" ]: matches 23 %% 1056 ["62" ]: matches 23 %% 1057 ["623" ]: matches 23 %% 1058 ["6240" ]: matches 23 %% 1059 ["625" ]: matches 23 %% 1060 ["626" ]: matches 23 %% 1061 ["629" ]: matches 23 %% 1062 ["6292" ]: matches 23 %% 1063 ["63" ]: matches 23 %% 1064 ["634" ]: matches 23 %% 1065 ["6368" ]: matches 23 %% 1066 ["6370" ]: matches 23 %% 1067 ["640-M" ]: matches TR/AB/3-43.7-3/AB %% 1068 ["645" ]: matches 23 %% 1069 ["65" ]: matches 23 %% 1070 ["652" ]: matches 23 %% 1071 ["657" ]: matches 23 %% 1072 ["659" ]: matches 23 %% 1073 ["66" ]: matches 23 %% 1074 ["66-10" ]: matches 23-27 %% 1075 ["661" ]: matches 23 %% 1076 ["663" ]: matches 23 %% 1077 ["664" ]: matches 23 %% 1078 ["665" ]: matches 23 %% 1079 ["666" ]: matches 23 %% 1080 ["668" ]: matches 23 %% 1081 ["67" ]: matches 23 %% 1082 ["671" ]: matches 23 %% 1083 ["676" ]: matches 23 %% 1084 ["679" ]: matches 23 %% 1085 ["68" ]: matches 23 %% 1086 ["68-1" ]: matches 23-27 %% 1087 ["68/5" ]: matches 23/27 %% 1088 ["68/6" ]: matches 23/27 %% 1089 ["68/8" ]: matches 23/27 %% 1090 ["6824" ]: matches 23 %% 1091 ["684" ]: matches 23 %% 1092 ["685" ]: matches 23 %% 1093 ["689" ]: matches 23 %% 1094 ["69" ]: matches 23 %% 1095 ["69-05" ]: matches 23-27 %% 1096 ["69-1" ]: matches 23-27 %% 1097 ["69-18" ]: matches 23-27 %% 1098 ["69-19" ]: matches 23-27 %% 1099 ["69-3" ]: matches 23-27 %% 1100 ["69-5" ]: matches 23-27 %% 1101 ["69/1" ]: matches 23/27 %% 1102 ["69/11" ]: matches 23/27 %% 1103 ["69/2" ]: matches 23/27 %% 1104 ["69/3" ]: matches 23/27 %% 1105 ["69/4" ]: matches 23/27 %% 1106 ["69/5" ]: matches 23/27 %% 1107 ["69/6" ]: matches 23/27 %% 1108 ["69/7" ]: matches 23/27 %% 1109 ["69/9" ]: matches 23/27 %% 1110 ["690" ]: matches 23 %% 1111 ["6905" ]: matches 23 %% 1112 ["6A" ]: matches 23A %% 1113 ["6B" ]: matches 23A %% 1114 ["7" ]: matches 23 %% 1115 ["7-14" ]: matches 23-27 %% 1116 ["7-8" ]: matches 23-27 %% 1117 ["7-93" ]: matches 23-27 %% 1118 ["7/8" ]: matches 23/27 %% 1119 ["70" ]: matches 23 %% 1120 ["70/10" ]: matches 23/27 %% 1121 ["70/15" ]: matches 23/27 %% 1122 ["70/17" ]: matches 23/27 %% 1123 ["70/18" ]: matches 23/27 %% 1124 ["70/2" ]: matches 23/27 %% 1125 ["70/3" ]: matches 23/27 %% 1126 ["70/5" ]: matches 23/27 %% 1127 ["70/7" ]: matches 23/27 %% 1128 ["70/8" ]: matches 23/27 %% 1129 ["700" ]: matches 23 %% 1130 ["7002" ]: matches 23 %% 1131 ["7041" ]: matches 23 %% 1132 ["705" ]: matches 23 %% 1133 ["707" ]: matches 23 %% 1134 ["71" ]: matches 23 %% 1135 ["71-20" ]: matches 23-27 %% 1136 ["71-51" ]: matches 23-27 %% 1137 ["71/6" ]: matches 23/27 %% 1138 ["71/7" ]: matches 23/27 %% 1139 ["72" ]: matches 23 %% 1140 ["72-08" ]: matches 23-27 %% 1141 ["72/2" ]: matches 23/27 %% 1142 ["722" ]: matches 23 %% 1143 ["726" ]: matches 23 %% 1144 ["73/2" ]: matches 23/27 %% 1145 ["73/3" ]: matches 23/27 %% 1146 ["73/4" ]: matches 23/27 %% 1147 ["73/6" ]: matches 23/27 %% 1148 ["7304" ]: matches 23 %% 1149 ["731" ]: matches 23 %% 1150 ["734" ]: matches 23 %% 1151 ["74" ]: matches 23 %% 1152 ["74-1 NML/GSO" ]: matches TR/AB/3-43.7-3/AB %% 1153 ["74-1" ]: matches 23-27 %% 1154 ["74-5" ]: matches 23-27 %% 1155 ["74/1" ]: matches 23/27 %% 1156 ["74/2" ]: matches 23/27 %% 1157 ["74/3" ]: matches 23/27 %% 1158 ["74/4" ]: matches 23/27 %% 1159 ["741" ]: matches 23 %% 1160 ["75" ]: matches 23 %% 1161 ["75-01" ]: matches 23-27 %% 1162 ["75-1" ]: matches 23-27 %% 1163 ["75-159" ]: matches 23-27 %% 1164 ["75-2" ]: matches 23-27 %% 1165 ["75-47" ]: matches 23-27 %% 1166 ["75-Aut-J" ]: matches TR/AB/3-43.7-3/AB %% 1167 ["75/1" ]: matches 23/27 %% 1168 ["75/3" ]: matches 23/27 %% 1169 ["75/5" ]: matches 23/27 %% 1170 ["75/7" ]: matches 23/27 %% 1171 ["751" ]: matches 23 %% 1172 ["757" ]: matches 23 %% 1173 ["76" ]: matches 23 %% 1174 ["76-05" ]: matches 23-27 %% 1175 ["76-1" ]: matches 23-27 %% 1176 ["76-13" ]: matches 23-27 %% 1177 ["76-22" ]: matches 23-27 %% 1178 ["76-3" ]: matches 23-27 %% 1179 ["76-67" ]: matches 23-27 %% 1180 ["76/4" ]: matches 23/27 %% 1181 ["76/86" ]: matches 23/27 %% 1182 ["7640" ]: matches 23 %% 1183 ["768" ]: matches 23 %% 1184 ["77" ]: matches 23 %% 1185 ["77-14" ]: matches 23-27 %% 1186 ["77-17" ]: matches 23-27 %% 1187 ["77-459" ]: matches 23-27 %% 1188 ["77-671" ]: matches 23-27 %% 1189 ["77-671." ]: matches TR/AB/3-43.7-3/AB %% 1190 ["776" ]: matches 23 %% 1191 ["777" ]: matches 23 %% 1192 ["78 0458-2128" ]: matches TR/AB/3-43.7-3/AB %% 1193 ["78" ]: matches 23 %% 1194 ["78- 1069" ]: matches TR/AB/3-43.7-3/AB %% 1195 ["78-1" ]: matches 23-27 %% 1196 ["78-12" ]: matches 23-27 %% 1197 ["78-160" ]: matches 23-27 %% 1198 ["78-287" ]: matches 23-27 %% 1199 ["78-3" ]: matches 23-27 %% 1200 ["78-669" ]: matches 23-27 %% 1201 ["78/1" ]: matches 23/27 %% 1202 ["78/10" ]: matches 23/27 %% 1203 ["78/2" ]: matches 23/27 %% 1204 ["78/3" ]: matches 23/27 %% 1205 ["78/5" ]: matches 23/27 %% 1206 ["78/6" ]: matches 23/27 %% 1207 ["78/7" ]: matches 23/27 %% 1208 ["78/8" ]: matches 23/27 %% 1209 ["78/P.1019" ]: matches TR/AB/3-43.7-3/AB %% 1210 ["781" ]: matches 23 %% 1211 ["786" ]: matches 23 %% 1212 ["79" ]: matches 23 %% 1213 ["79-0276" ]: matches 23-27 %% 1214 ["79-07" ]: matches 23-27 %% 1215 ["79-1" ]: matches 23-27 %% 1216 ["79-282" ]: matches 23-27 %% 1217 ["79-3" ]: matches 23-27 %% 1218 ["79-9" ]: matches 23-27 %% 1219 ["79/1" ]: matches 23/27 %% 1220 ["79/10" ]: matches 23/27 %% 1221 ["79/2" ]: matches 23/27 %% 1222 ["79/3" ]: matches 23/27 %% 1223 ["79/5" ]: matches 23/27 %% 1224 ["79/6" ]: matches 23/27 %% 1225 ["79/7" ]: matches 23/27 %% 1226 ["79/8" ]: matches 23/27 %% 1227 ["790" ]: matches 23 %% 1228 ["794" ]: matches 23 %% 1229 ["797" ]: matches 23 %% 1230 ["7994" ]: matches 23 %% 1231 ["7997" ]: matches 23 %% 1232 ["8 (??)" ]: matches TR/AB/3-43.7-3/AB %% 1233 ["8" ]: matches 23 %% 1234 ["8, Part 2" ]: matches TR/AB/3-43.7-3/AB %% 1235 ["8--9" ]: matches TR/AB/3-43.7-3/AB %% 1236 ["8-9" ]: matches 23-27 %% 1237 ["80" ]: matches 23 %% 1238 ["80- 004" ]: matches TR/AB/3-43.7-3/AB %% 1239 ["80-03" ]: matches 23-27 %% 1240 ["80-1274" ]: matches 23-27 %% 1241 ["80-2" ]: matches 23-27 %% 1242 ["80-3" ]: matches 23-27 %% 1243 ["80-34" ]: matches 23-27 %% 1244 ["80-411" ]: matches 23-27 %% 1245 ["80-844" ]: matches 23-27 %% 1246 ["80/1" ]: matches 23/27 %% 1247 ["80/10" ]: matches 23/27 %% 1248 ["80/2" ]: matches 23/27 %% 1249 ["80/3" ]: matches 23/27 %% 1250 ["80/4" ]: matches 23/27 %% 1251 ["80/5" ]: matches 23/27 %% 1252 ["80/6" ]: matches 23/27 %% 1253 ["80/7" ]: matches 23/27 %% 1254 ["80/9" ]: matches 23/27 %% 1255 ["80192" ]: matches 23 %% 1256 ["80205" ]: matches 23 %% 1257 ["807" ]: matches 23 %% 1258 ["809" ]: matches 23 %% 1259 ["81" ]: matches 23 %% 1260 ["81-02" ]: matches 23-27 %% 1261 ["81-1020" ]: matches 23-27 %% 1262 ["81-1091" ]: matches 23-27 %% 1263 ["81-158" ]: matches 23-27 %% 1264 ["81-19" ]: matches 23-27 %% 1265 ["81-29" ]: matches 23-27 %% 1266 ["81-574" ]: matches 23-27 %% 1267 ["81/1" ]: matches 23/27 %% 1268 ["81/10" ]: matches 23/27 %% 1269 ["81/2" ]: matches 23/27 %% 1270 ["81/3" ]: matches 23/27 %% 1271 ["81/4" ]: matches 23/27 %% 1272 ["81/5" ]: matches 23/27 %% 1273 ["81/6" ]: matches 23/27 %% 1274 ["81/7" ]: matches 23/27 %% 1275 ["81/8" ]: matches 23/27 %% 1276 ["81/9" ]: matches 23/27 %% 1277 ["816" ]: matches 23 %% 1278 ["818" ]: matches 23 %% 1279 ["819" ]: matches 23 %% 1280 ["82" ]: matches 23 %% 1281 ["82-11-03" ]: matches TR/AB/3-43.7-3/AB %% 1282 ["82-308" ]: matches 23-27 %% 1283 ["82-831" ]: matches 23-27 %% 1284 ["82/1" ]: matches 23/27 %% 1285 ["82/10" ]: matches 23/27 %% 1286 ["82/2" ]: matches 23/27 %% 1287 ["82/3" ]: matches 23/27 %% 1288 ["82/4" ]: matches 23/27 %% 1289 ["82/5" ]: matches 23/27 %% 1290 ["82/6" ]: matches 23/27 %% 1291 ["82/7" ]: matches 23/27 %% 1292 ["82/9" ]: matches 23/27 %% 1293 ["82448-9" ]: matches 23-27 %% 1294 ["83-01-01" ]: matches TR/AB/3-43.7-3/AB %% 1295 ["83-0223" ]: matches 23-27 %% 1296 ["83-0372" ]: matches 23-27 %% 1297 ["83-0421" ]: matches 23-27 %% 1298 ["83-0500" ]: matches 23-27 %% 1299 ["83-155" ]: matches 23-27 %% 1300 ["83-1893" ]: matches 23-27 %% 1301 ["83-3" ]: matches 23-27 %% 1302 ["83-4" ]: matches 23-27 %% 1303 ["83-4051" ]: matches 23-27 %% 1304 ["83-47" ]: matches 23-27 %% 1305 ["83-5" ]: matches 23-27 %% 1306 ["83-713" ]: matches 23-27 %% 1307 ["83-883" ]: matches 23-27 %% 1308 ["83-97" ]: matches 23-27 %% 1309 ["83/09" ]: matches 23/27 %% 1310 ["83/1" ]: matches 23/27 %% 1311 ["83/10" ]: matches 23/27 %% 1312 ["83/2" ]: matches 23/27 %% 1313 ["83/4" ]: matches 23/27 %% 1314 ["83/5" ]: matches 23/27 %% 1315 ["83/7" ]: matches 23/27 %% 1316 ["83/9" ]: matches 23/27 %% 1317 ["830" ]: matches 23 %% 1318 ["832" ]: matches 23 %% 1319 ["83304" ]: matches 23 %% 1320 ["836" ]: matches 23 %% 1321 ["83CRD054 (Technical information series)"]: matches TR/AB/3-43.7-3/AB %% 1322 ["84" ]: matches 23 %% 1323 ["84-0162" ]: matches 23-27 %% 1324 ["84-21" ]: matches 23-27 %% 1325 ["84-2156" ]: matches 23-27 %% 1326 ["84-501" ]: matches 23-27 %% 1327 ["84-637" ]: matches 23-27 %% 1328 ["84-651" ]: matches 23-27 %% 1329 ["84-690" ]: matches 23-27 %% 1330 ["84-777" ]: matches 23-27 %% 1331 ["84-777." ]: matches TR/AB/3-43.7-3/AB %% 1332 ["84-827" ]: matches 23-27 %% 1333 ["84.2" ]: matches 3.4 %% 1334 ["84/10" ]: matches 23/27 %% 1335 ["84/154/12" ]: matches TR/AB/3-43.7-3/AB %% 1336 ["84/162/20" ]: matches TR/AB/3-43.7-3/AB %% 1337 ["84/2" ]: matches 23/27 %% 1338 ["84/3" ]: matches 23/27 %% 1339 ["84/4" ]: matches 23/27 %% 1340 ["84/5" ]: matches 23/27 %% 1341 ["84/6" ]: matches 23/27 %% 1342 ["84/7" ]: matches 23/27 %% 1343 ["84/8" ]: matches 23/27 %% 1344 ["84/9" ]: matches 23/27 %% 1345 ["84/R" ]: matches TR/AB/3-43.7-3/AB %% 1346 ["8428" ]: matches 23 %% 1347 ["843" ]: matches 23 %% 1348 ["849" ]: matches 23 %% 1349 ["85" ]: matches 23 %% 1350 ["85--01" ]: matches TR/AB/3-43.7-3/AB %% 1351 ["85--105" ]: matches TR/AB/3-43.7-3/AB %% 1352 ["85--12" ]: matches TR/AB/3-43.7-3/AB %% 1353 ["85--14" ]: matches TR/AB/3-43.7-3/AB %% 1354 ["85--18" ]: matches TR/AB/3-43.7-3/AB %% 1355 ["85--23" ]: matches TR/AB/3-43.7-3/AB %% 1356 ["85--B--1" ]: matches TR/AB/3-43.7-3/AB %% 1357 ["85--OR--3" ]: matches TR/AB/3-43.7-3/AB %% 1358 ["85-0366" ]: matches 23-27 %% 1359 ["85-1" ]: matches 23-27 %% 1360 ["85-122" ]: matches 23-27 %% 1361 ["85-257" ]: matches 23-27 %% 1362 ["85-279" ]: matches 23-27 %% 1363 ["85-29" ]: matches 23-27 %% 1364 ["85-45" ]: matches 23-27 %% 1365 ["85-48" ]: matches 23-27 %% 1366 ["85-5" ]: matches 23-27 %% 1367 ["85-739" ]: matches 23-27 %% 1368 ["85/10" ]: matches 23/27 %% 1369 ["85/2" ]: matches 23/27 %% 1370 ["85/212" ]: matches 23/27 %% 1371 ["85/3" ]: matches 23/27 %% 1372 ["85/4" ]: matches 23/27 %% 1373 ["85/8" ]: matches 23/27 %% 1374 ["85/9" ]: matches 23/27 %% 1375 ["851" ]: matches 23 %% 1376 ["852" ]: matches 23 %% 1377 ["854" ]: matches 23 %% 1378 ["856" ]: matches 23 %% 1379 ["86" ]: matches 23 %% 1380 ["86--10" ]: matches TR/AB/3-43.7-3/AB %% 1381 ["86--128" ]: matches TR/AB/3-43.7-3/AB %% 1382 ["86-06" ]: matches 23-27 %% 1383 ["86-1-5" ]: matches TR/AB/3-43.7-3/AB %% 1384 ["86-123" ]: matches 23-27 %% 1385 ["86-17" ]: matches 23-27 %% 1386 ["86-21" ]: matches 23-27 %% 1387 ["86-268" ]: matches 23-27 %% 1388 ["86-3055" ]: matches 23-27 %% 1389 ["86-32" ]: matches 23-27 %% 1390 ["86-3473" ]: matches 23-27 %% 1391 ["86-4" ]: matches 23-27 %% 1392 ["86-437" ]: matches 23-27 %% 1393 ["86-451" ]: matches 23-27 %% 1394 ["86-46" ]: matches 23-27 %% 1395 ["86-475" ]: matches 23-27 %% 1396 ["86-54" ]: matches 23-27 %% 1397 ["86-55" ]: matches 23-27 %% 1398 ["86-85" ]: matches 23-27 %% 1399 ["86.7" ]: matches 3.4 %% 1400 ["86/10" ]: matches 23/27 %% 1401 ["86/1292" ]: matches 23/27 %% 1402 ["86/2" ]: matches 23/27 %% 1403 ["86/230/4" ]: matches TR/AB/3-43.7-3/AB %% 1404 ["86/235/9" ]: matches TR/AB/3-43.7-3/AB %% 1405 ["86/5" ]: matches 23/27 %% 1406 ["86/6" ]: matches 23/27 %% 1407 ["86/7" ]: matches 23/27 %% 1408 ["86/8" ]: matches 23/27 %% 1409 ["860" ]: matches 23 %% 1410 ["861" ]: matches 23 %% 1411 ["8610" ]: matches 23 %% 1412 ["862" ]: matches 23 %% 1413 ["86392" ]: matches 23 %% 1414 ["86407" ]: matches 23 %% 1415 ["866" ]: matches 23 %% 1416 ["86750" ]: matches 23 %% 1417 ["869" ]: matches 23 %% 1418 ["8696" ]: matches 23 %% 1419 ["87 869" ]: matches Computer Science Report 100 %% 1420 ["87" ]: matches 23 %% 1421 ["87--2" ]: matches TR/AB/3-43.7-3/AB %% 1422 ["87--41" ]: matches TR/AB/3-43.7-3/AB %% 1423 ["87--53" ]: matches TR/AB/3-43.7-3/AB %% 1424 ["87--87" ]: matches TR/AB/3-43.7-3/AB %% 1425 ["87-0004-A-B" ]: matches TR/AB/3-43.7-3/AB %% 1426 ["87-002" ]: matches 23-27 %% 1427 ["87-02, I1-I50" ]: matches TR/AB/3-43.7-3/AB %% 1428 ["87-04" ]: matches 23-27 %% 1429 ["87-1-1" ]: matches TR/AB/3-43.7-3/AB %% 1430 ["87-10" ]: matches 23-27 %% 1431 ["87-11" ]: matches 23-27 %% 1432 ["87-118" ]: matches 23-27 %% 1433 ["87-14" ]: matches 23-27 %% 1434 ["87-16" ]: matches 23-27 %% 1435 ["87-20" ]: matches 23-27 %% 1436 ["87-21" ]: matches 23-27 %% 1437 ["87-22" ]: matches 23-27 %% 1438 ["87-25" ]: matches 23-27 %% 1439 ["87-34" ]: matches 23-27 %% 1440 ["87-37" ]: matches 23-27 %% 1441 ["87-39" ]: matches 23-27 %% 1442 ["87-4" ]: matches 23-27 %% 1443 ["87-41" ]: matches 23-27 %% 1444 ["87-49" ]: matches 23-27 %% 1445 ["87-5" ]: matches 23-27 %% 1446 ["87-50" ]: matches 23-27 %% 1447 ["87-51" ]: matches 23-27 %% 1448 ["87-52" ]: matches 23-27 %% 1449 ["87-58" ]: matches 23-27 %% 1450 ["87-641" ]: matches 23-27 %% 1451 ["87-65" ]: matches 23-27 %% 1452 ["87-75" ]: matches 23-27 %% 1453 ["87-82" ]: matches 23-27 %% 1454 ["87/347" ]: matches 23/27 %% 1455 ["87/7" ]: matches 23/27 %% 1456 ["87/88-5-2" ]: matches TR/AB/3-43.7-3/AB %% 1457 ["87001" ]: matches 23 %% 1458 ["87002" ]: matches 23 %% 1459 ["87003" ]: matches 23 %% 1460 ["871" ]: matches 23 %% 1461 ["873" ]: matches 23 %% 1462 ["8744" ]: matches 23 %% 1463 ["877" ]: matches 23 %% 1464 ["878" ]: matches 23 %% 1465 ["879" ]: matches 23 %% 1466 ["88--101" ]: matches TR/AB/3-43.7-3/AB %% 1467 ["88--13" ]: matches TR/AB/3-43.7-3/AB %% 1468 ["88--17" ]: matches TR/AB/3-43.7-3/AB %% 1469 ["88--44" ]: matches TR/AB/3-43.7-3/AB %% 1470 ["88--68" ]: matches TR/AB/3-43.7-3/AB %% 1471 ["88--74" ]: matches TR/AB/3-43.7-3/AB %% 1472 ["88-10" ]: matches 23-27 %% 1473 ["88-11" ]: matches 23-27 %% 1474 ["88-115" ]: matches 23-27 %% 1475 ["88-12" ]: matches 23-27 %% 1476 ["88-136" ]: matches 23-27 %% 1477 ["88-14" ]: matches 23-27 %% 1478 ["88-140" ]: matches 23-27 %% 1479 ["88-15" ]: matches 23-27 %% 1480 ["88-16" ]: matches 23-27 %% 1481 ["88-19" ]: matches 23-27 %% 1482 ["88-2" ]: matches 23-27 %% 1483 ["88-20" ]: matches 23-27 %% 1484 ["88-234" ]: matches 23-27 %% 1485 ["88-258-A" ]: matches TR/AB/3-43.7-3/AB %% 1486 ["88-29/50" ]: matches TR/AB/3-43.7-3/AB %% 1487 ["88-3" ]: matches 23-27 %% 1488 ["88-49/70" ]: matches TR/AB/3-43.7-3/AB %% 1489 ["88-5" ]: matches 23-27 %% 1490 ["88-6" ]: matches 23-27 %% 1491 ["88-60-20" ]: matches TR/AB/3-43.7-3/AB %% 1492 ["88-942" ]: matches 23-27 %% 1493 ["88-95" ]: matches 23-27 %% 1494 ["88/304" ]: matches 23/27 %% 1495 ["88/322/34" ]: matches TR/AB/3-43.7-3/AB %% 1496 ["882" ]: matches 23 %% 1497 ["88288" ]: matches 23 %% 1498 ["88293" ]: matches 23 %% 1499 ["88363" ]: matches 23 %% 1500 ["888" ]: matches 23 %% 1501 ["89" ]: matches 23 %% 1502 ["89--04" ]: matches TR/AB/3-43.7-3/AB %% 1503 ["89--13" ]: matches TR/AB/3-43.7-3/AB %% 1504 ["89--15" ]: matches TR/AB/3-43.7-3/AB %% 1505 ["89--2" ]: matches TR/AB/3-43.7-3/AB %% 1506 ["89--29" ]: matches TR/AB/3-43.7-3/AB %% 1507 ["89--3" ]: matches TR/AB/3-43.7-3/AB %% 1508 ["89--65" ]: matches TR/AB/3-43.7-3/AB %% 1509 ["89--7" ]: matches TR/AB/3-43.7-3/AB %% 1510 ["89--85" ]: matches TR/AB/3-43.7-3/AB %% 1511 ["89--92" ]: matches TR/AB/3-43.7-3/AB %% 1512 ["89--B--5" ]: matches TR/AB/3-43.7-3/AB %% 1513 ["89-09" ]: matches 23-27 %% 1514 ["89-1" ]: matches 23-27 %% 1515 ["89-11" ]: matches 23-27 %% 1516 ["89-12" ]: matches 23-27 %% 1517 ["89-2" ]: matches 23-27 %% 1518 ["89-260" ]: matches 23-27 %% 1519 ["89-3" ]: matches 23-27 %% 1520 ["89-313" ]: matches 23-27 %% 1521 ["89-57" ]: matches 23-27 %% 1522 ["89-984" ]: matches 23-27 %% 1523 ["89/20" ]: matches 23/27 %% 1524 ["89/204" ]: matches 23/27 %% 1525 ["89/26" ]: matches 23/27 %% 1526 ["89/3" ]: matches 23/27 %% 1527 ["890" ]: matches 23 %% 1528 ["8917/A" ]: matches TR/AB/3-43.7-3/AB %% 1529 ["893" ]: matches 23 %% 1530 ["8939" ]: matches 23 %% 1531 ["8971" ]: matches 23 %% 1532 ["9" ]: matches 23 %% 1533 ["9--12" ]: matches TR/AB/3-43.7-3/AB %% 1534 ["9-10" ]: matches 23-27 %% 1535 ["9/10" ]: matches 23/27 %% 1536 ["90" ]: matches 23 %% 1537 ["90--01" ]: matches TR/AB/3-43.7-3/AB %% 1538 ["90--03" ]: matches TR/AB/3-43.7-3/AB %% 1539 ["90--07" ]: matches TR/AB/3-43.7-3/AB %% 1540 ["90--12" ]: matches TR/AB/3-43.7-3/AB %% 1541 ["90--14" ]: matches TR/AB/3-43.7-3/AB %% 1542 ["90--22" ]: matches TR/AB/3-43.7-3/AB %% 1543 ["90--28" ]: matches TR/AB/3-43.7-3/AB %% 1544 ["90--53" ]: matches TR/AB/3-43.7-3/AB %% 1545 ["90--83" ]: matches TR/AB/3-43.7-3/AB %% 1546 ["90-09" ]: matches 23-27 %% 1547 ["90-1" ]: matches 23-27 %% 1548 ["90-10" ]: matches 23-27 %% 1549 ["90-2" ]: matches 23-27 %% 1550 ["90-20" ]: matches 23-27 %% 1551 ["90-4" ]: matches 23-27 %% 1552 ["90-6" ]: matches 23-27 %% 1553 ["90-83" ]: matches 23-27 %% 1554 ["90/302" ]: matches 23/27 %% 1555 ["901" ]: matches 23 %% 1556 ["903" ]: matches 23 %% 1557 ["9030" ]: matches 23 %% 1558 ["9035" ]: matches 23 %% 1559 ["907" ]: matches 23 %% 1560 ["91" ]: matches 23 %% 1561 ["91--04" ]: matches TR/AB/3-43.7-3/AB %% 1562 ["91--05" ]: matches TR/AB/3-43.7-3/AB %% 1563 ["91--06" ]: matches TR/AB/3-43.7-3/AB %% 1564 ["91--10" ]: matches TR/AB/3-43.7-3/AB %% 1565 ["91--13" ]: matches TR/AB/3-43.7-3/AB %% 1566 ["91--27" ]: matches TR/AB/3-43.7-3/AB %% 1567 ["91--47" ]: matches TR/AB/3-43.7-3/AB %% 1568 ["91--7" ]: matches TR/AB/3-43.7-3/AB %% 1569 ["91-03" ]: matches 23-27 %% 1570 ["91-04" ]: matches 23-27 %% 1571 ["91-044" ]: matches 23-27 %% 1572 ["91-14" ]: matches 23-27 %% 1573 ["91-2" ]: matches 23-27 %% 1574 ["91-279" ]: matches 23-27 %% 1575 ["91-294" ]: matches 23-27 %% 1576 ["91-311" ]: matches 23-27 %% 1577 ["91-328" ]: matches 23-27 %% 1578 ["91-72" ]: matches 23-27 %% 1579 ["91-80" ]: matches 23-27 %% 1580 ["91-CSE-6" ]: matches TR/AB/3-43.7-3/AB %% 1581 ["91/10" ]: matches 23/27 %% 1582 ["91/447/31" ]: matches TR/AB/3-43.7-3/AB %% 1583 ["91/8" ]: matches 23/27 %% 1584 ["9140" ]: matches 23 %% 1585 ["917" ]: matches 23 %% 1586 ["919" ]: matches 23 %% 1587 ["92" ]: matches 23 %% 1588 ["92-067" ]: matches 23-27 %% 1589 ["92-068" ]: matches 23-27 %% 1590 ["92-069" ]: matches 23-27 %% 1591 ["92-075" ]: matches 23-27 %% 1592 ["92-084" ]: matches 23-27 %% 1593 ["92-09" ]: matches 23-27 %% 1594 ["92-1" ]: matches 23-27 %% 1595 ["92-126" ]: matches 23-27 %% 1596 ["92-16" ]: matches 23-27 %% 1597 ["92-161" ]: matches 23-27 %% 1598 ["92-24" ]: matches 23-27 %% 1599 ["92-241" ]: matches 23-27 %% 1600 ["92-28" ]: matches 23-27 %% 1601 ["92-28d" ]: matches TR/AB/3-43.7-3/AB %% 1602 ["92-31" ]: matches 23-27 %% 1603 ["92-35" ]: matches 23-27 %% 1604 ["92-36" ]: matches 23-27 %% 1605 ["92-38" ]: matches 23-27 %% 1606 ["92-421" ]: matches 23-27 %% 1607 ["92-5-A" ]: matches TR/AB/3-43.7-3/AB %% 1608 ["92/15" ]: matches 23/27 %% 1609 ["92/302" ]: matches 23/27 %% 1610 ["92/4" ]: matches 23/27 %% 1611 ["921" ]: matches 23 %% 1612 ["922" ]: matches 23 %% 1613 ["9236" ]: matches 23 %% 1614 ["93" ]: matches 23 %% 1615 ["93--96" ]: matches TR/AB/3-43.7-3/AB %% 1616 ["93-021" ]: matches 23-27 %% 1617 ["93-027" ]: matches 23-27 %% 1618 ["93-093" ]: matches 23-27 %% 1619 ["93-102" ]: matches 23-27 %% 1620 ["93-107" ]: matches 23-27 %% 1621 ["93-13" ]: matches 23-27 %% 1622 ["93-17" ]: matches 23-27 %% 1623 ["93-21b" ]: matches TR/AB/3-43.7-3/AB %% 1624 ["93-31" ]: matches 23-27 %% 1625 ["93-42" ]: matches 23-27 %% 1626 ["93-8" ]: matches 23-27 %% 1627 ["93-9" ]: matches 23-27 %% 1628 ["934" ]: matches 23 %% 1629 ["936" ]: matches 23 %% 1630 ["937" ]: matches 23 %% 1631 ["93NO00009" ]: matches Computer Science Report 100 %% 1632 ["94" ]: matches 23 %% 1633 ["94---" ]: matches TR/AB/3-43.7-3/AB %% 1634 ["94-008" ]: matches 23-27 %% 1635 ["94-03a" ]: matches TR/AB/3-43.7-3/AB %% 1636 ["94-069" ]: matches 23-27 %% 1637 ["94-16" ]: matches 23-27 %% 1638 ["94-18a" ]: matches TR/AB/3-43.7-3/AB %% 1639 ["94-21" ]: matches 23-27 %% 1640 ["94-3" ]: matches 23-27 %% 1641 ["94-4168" ]: matches 23-27 %% 1642 ["94-501" ]: matches 23-27 %% 1643 ["94-8" ]: matches 23-27 %% 1644 ["94/5" ]: matches 23/27 %% 1645 ["9406" ]: matches 23 %% 1646 ["944" ]: matches 23 %% 1647 ["949" ]: matches 23 %% 1648 ["95" ]: matches 23 %% 1649 ["95-08" ]: matches 23-27 %% 1650 ["95-19" ]: matches 23-27 %% 1651 ["95-20" ]: matches 23-27 %% 1652 ["95-29" ]: matches 23-27 %% 1653 ["950" ]: matches 23 %% 1654 ["951" ]: matches 23 %% 1655 ["952" ]: matches 23 %% 1656 ["952144" ]: matches 23 %% 1657 ["956" ]: matches 23 %% 1658 ["96" ]: matches 23 %% 1659 ["963" ]: matches 23 %% 1660 ["964" ]: matches 23 %% 1661 ["9649" ]: matches 23 %% 1662 ["966" ]: matches 23 %% 1663 ["967" ]: matches 23 %% 1664 ["97" ]: matches 23 %% 1665 ["97--100" ]: matches TR/AB/3-43.7-3/AB %% 1666 ["970" ]: matches 23 %% 1667 ["971" ]: matches 23 %% 1668 ["974" ]: matches 23 %% 1669 ["978" ]: matches 23 %% 1670 ["98" ]: matches 23 %% 1671 ["987" ]: matches 23 %% 1672 ["99 00 04" ]: matches Computer Science Report 100 %% 1673 ["99 90 12" ]: matches Computer Science Report 100 %% 1674 ["99 90 62" ]: matches Computer Science Report 100 %% 1675 ["99" ]: matches 23 ?? 1676 ["?" ]: illegal value ?? 1677 ["??" ]: illegal value ?? 1678 ["??-??" ]: illegal value ?? 1679 ["????" ]: illegal value %% 1680 ["A-18" ]: matches TR-2189 %% 1681 ["A-48" ]: matches TR-2189 %% 1682 ["A. I. MEMO 421" ]: matches TR/AB/3-43.7-3/AB %% 1683 ["A. I. MEMO 70 and MAC-M-165"]: matches TR/AB/3-43.7-3/AB %% 1684 ["A.E.R.E. 8781" ]: matches TR/AB/3-43.7-3/AB %% 1685 ["A68 8" ]: matches Computer Science Report 100 %% 1686 ["AA61641-00A" ]: matches TR/AB/3-43.7-3/AB %% 1687 ["AAEC/E190" ]: matches TR/AB/3-43.7-3/AB %% 1688 ["AAEC/E488" ]: matches TR/AB/3-43.7-3/AB %% 1689 ["AAEC/TM 366" ]: matches TR/AB/3-43.7-3/AB %% 1690 ["AAEC/TM 370" ]: matches TR/AB/3-43.7-3/AB %% 1691 ["AAEC/TM 544" ]: matches TR/AB/3-43.7-3/AB %% 1692 ["AAEC/TM455" ]: matches TR/AB/3-43.7-3/AB %% 1693 ["AAEC/TM470" ]: matches TR/AB/3-43.7-3/AB %% 1694 ["ACM--91--3" ]: matches TR/AB/3-43.7-3/AB %% 1695 ["ACPC/TR 92-3" ]: matches TR/AB/3-43.7-3/AB %% 1696 ["ACPC/TR 92-4" ]: matches TR/AB/3-43.7-3/AB %% 1697 ["AD 702 910" ]: matches Computer Science Report 100 %% 1698 ["AD 769-124" ]: matches TR/AB/3-43.7-3/AB %% 1699 ["AD 779 841" ]: matches Computer Science Report 100 %% 1700 ["AD-A050135" ]: matches TR/AB/3-43.7-3/AB %% 1701 ["AD/A-039 741" ]: matches TR/AB/3-43.7-3/AB %% 1702 ["AECL-7614" ]: matches TR-2189 %% 1703 ["AECL-7794" ]: matches TR-2189 %% 1704 ["AERE -- R 9444" ]: matches TR/AB/3-43.7-3/AB %% 1705 ["AERE M3057" ]: matches PN LPS5001 %% 1706 ["AERE R10533" ]: matches PN LPS5001 %% 1707 ["AERE R10555" ]: matches PN LPS5001 %% 1708 ["AERE R11009" ]: matches PN LPS5001 %% 1709 ["AERE R11432" ]: matches PN LPS5001 %% 1710 ["AERE R11948" ]: matches PN LPS5001 %% 1711 ["AERE R8730" ]: matches PN LPS5001 %% 1712 ["AERE-R 12329" ]: matches TR/AB/3-43.7-3/AB %% 1713 ["AERE-R 12393" ]: matches TR/AB/3-43.7-3/AB %% 1714 ["AERE-R. 4599 (pt. 1)" ]: matches TR/AB/3-43.7-3/AB %% 1715 ["AFFDL-TR-66-207" ]: matches UMIAC-TR-89-11 %% 1716 ["AGESS810528" ]: matches LPS0064 %% 1717 ["AIM-106" ]: matches TR-2189 %% 1718 ["AM--87--11" ]: matches TR/AB/3-43.7-3/AB %% 1719 ["AM--88--08" ]: matches TR/AB/3-43.7-3/AB %% 1720 ["ANL AMD 328" ]: matches Computer Science Report 100 %% 1721 ["ANL AMD 71" ]: matches Computer Science Report 100 %% 1722 ["ANL--80--68" ]: matches TR/AB/3-43.7-3/AB %% 1723 ["ANL--80--74" ]: matches TR/AB/3-43.7-3/AB %% 1724 ["ANL--82--48" ]: matches TR/AB/3-43.7-3/AB %% 1725 ["ANL-7231" ]: matches TR-2189 %% 1726 ["ANL-80-68" ]: matches ANL-30-74 %% 1727 ["ANL-80-74" ]: matches ANL-30-74 %% 1728 ["ANL-81-43" ]: matches ANL-30-74 %% 1729 ["ANL-83-97" ]: matches ANL-30-74 %% 1730 ["ANL-84-83" ]: matches ANL-30-74 %% 1731 ["ANL-85-70" ]: matches ANL-30-74 %% 1732 ["ANL-8579" ]: matches TR-2189 %% 1733 ["ANL-86-10" ]: matches ANL-30-74 %% 1734 ["ANL-87-23" ]: matches ANL-30-74 %% 1735 ["ANL-87-40" ]: matches ANL-30-74 %% 1736 ["ANL-88-38" ]: matches ANL-30-74 %% 1737 ["ANL-89/2 Rev. 1" ]: matches TR/AB/3-43.7-3/AB %% 1738 ["ANL-91/1" ]: matches TR/AB/3-43.7-3/AB %% 1739 ["ANL-91/14" ]: matches TR/AB/3-43.7-3/AB %% 1740 ["ANL-MCS-TM 99" ]: matches TR/AB/3-43.7-3/AB %% 1741 ["ANL-MCS-TM-119" ]: matches TR/AB/3-43.7-3/AB %% 1742 ["ANL-MCS-TM-57 (Revision 1)"]: matches TR/AB/3-43.7-3/AB %% 1743 ["ANL-MCS-TM-86" ]: matches TR/AB/3-43.7-3/AB %% 1744 ["ANL-MCS-TM-88" ]: matches TR/AB/3-43.7-3/AB %% 1745 ["ANL/MCS--TM--148" ]: matches TR/AB/3-43.7-3/AB %% 1746 ["ANL/MCS--TM--158" ]: matches TR/AB/3-43.7-3/AB %% 1747 ["ANL/MCS--TM--159" ]: matches TR/AB/3-43.7-3/AB %% 1748 ["ANL/MCS--TM--16" ]: matches TR/AB/3-43.7-3/AB %% 1749 ["ANL/MCS-TM-15" ]: matches TR/AB/3-43.7-3/AB %% 1750 ["ANL/MCS-TM-150" ]: matches TR/AB/3-43.7-3/AB %% 1751 ["ANL/MCS-TM-157" ]: matches TR/AB/3-43.7-3/AB %% 1752 ["ANL/MCS-TM-27" ]: matches TR/AB/3-43.7-3/AB %% 1753 ["ANL/MCS-TM-84" ]: matches TR/AB/3-43.7-3/AB %% 1754 ["ANL/MCS-TM-97" ]: matches TR/AB/3-43.7-3/AB %% 1755 ["ANL/MCS/TM-33" ]: matches TR/AB/3-43.7-3/AB %% 1756 ["ANL/MLS-TM-63" ]: matches TR/AB/3-43.7-3/AB %% 1757 ["ANL84-51, Rev.1" ]: matches TR/AB/3-43.7-3/AB %% 1758 ["ANS-12" ]: matches TR-2189 %% 1759 ["ANS-13" ]: matches TR-2189 %% 1760 ["ANS-16" ]: matches TR-2189 %% 1761 ["ANS-20" ]: matches TR-2189 %% 1762 ["ANS-22" ]: matches TR-2189 %% 1763 ["ANS-23" ]: matches TR-2189 %% 1764 ["ANS-24" ]: matches TR-2189 %% 1765 ["ANS-7" ]: matches TR-2189 %% 1766 ["ANS/MCS-TM-37" ]: matches TR/AB/3-43.7-3/AB %% 1767 ["APL-UW TM-4-83" ]: matches TR/AB/3-43.7-3/AB %% 1768 ["AR-92-2" ]: matches ANL-30-74 %% 1769 ["ARE TM (N1) 86501" ]: matches TR/AB/3-43.7-3/AB %% 1770 ["ARE-TM (N1) 86501" ]: matches TR/AB/3-43.7-3/AB %% 1771 ["ARL 69-0005" ]: matches TR/AB/3-43.7-3/AB %% 1772 ["ARL 69-0017" ]: matches TR/AB/3-43.7-3/AB %% 1773 ["ARL 69-0054" ]: matches TR/AB/3-43.7-3/AB %% 1774 ["ARL 70-0066" ]: matches TR/AB/3-43.7-3/AB %% 1775 ["ARRL TR 1018" ]: matches Computer Science Report 100 %% 1776 ["ASRL TR 1020" ]: matches Computer Science Report 100 %% 1777 ["ASRL TR 1021" ]: matches Computer Science Report 100 %% 1778 ["Arbeitspapiere der GMD, Nr. 588 0723-0508"]: matches TR/AB/3-43.7-3/AB %% 1779 ["B--180" ]: matches TR/AB/3-43.7-3/AB %% 1780 ["B--239" ]: matches TR/AB/3-43.7-3/AB %% 1781 ["B--243" ]: matches TR/AB/3-43.7-3/AB %% 1782 ["B12" ]: matches LPS0064 %% 1783 ["B57-01a" ]: matches TR/AB/3-43.7-3/AB %% 1784 ["B9" ]: matches LPS0064 %% 1785 ["BESSY TB Nr. 158" ]: matches TR/AB/3-43.7-3/AB %% 1786 ["BNL 25680." ]: matches TR/AB/3-43.7-3/AB %% 1787 ["BSC 88/15" ]: matches TR/AB/3-43.7-3/AB %% 1788 ["BU-660-M" ]: matches TR/AB/3-43.7-3/AB %% 1789 ["BU-784-M" ]: matches TR/AB/3-43.7-3/AB %% 1790 ["BUCSTR 79-01" ]: matches TR/AB/3-43.7-3/AB %% 1791 ["B\#84" ]: matches LPS0064 %% 1792 ["British Library R and D report 6155"]: matches Computer Science Report 100 %% 1793 ["C 2504-E5. N74-13290" ]: matches TR/AB/3-43.7-3/AB %% 1794 ["C.S.S. 52" ]: matches TR/AB/3-43.7-3/AB %% 1795 ["C2" ]: matches LPS0064 %% 1796 ["CAM 14" ]: matches XNSS 288811 %% 1797 ["CAM 7" ]: matches XNSS 288811 %% 1798 ["CAM 88-16" ]: matches TR/AB/3-43.7-3/AB %% 1799 ["CAM 88-21" ]: matches TR/AB/3-43.7-3/AB %% 1800 ["CAM 89-28" ]: matches TR/AB/3-43.7-3/AB %% 1801 ["CAM 92-07" ]: matches TR/AB/3-43.7-3/AB %% 1802 ["CAP-3 837" ]: matches PB-251 845 %% 1803 ["CBPF-NT-001/88" ]: matches TR/AB/3-43.7-3/AB %% 1804 ["CC-147" ]: matches TR-2189 %% 1805 ["CC-151" ]: matches TR-2189 %% 1806 ["CC-152" ]: matches TR-2189 %% 1807 ["CC-153" ]: matches TR-2189 %% 1808 ["CC-154" ]: matches TR-2189 %% 1809 ["CC-156" ]: matches TR-2189 %% 1810 ["CC-158" ]: matches TR-2189 %% 1811 ["CC-161" ]: matches TR-2189 %% 1812 ["CC-163" ]: matches TR-2189 %% 1813 ["CC-164-4" ]: matches ANL-30-74 %% 1814 ["CC-200-2" ]: matches ANL-30-74 %% 1815 ["CC-60" ]: matches TR-2189 %% 1816 ["CC-71" ]: matches TR-2189 %% 1817 ["CC-93" ]: matches TR-2189 %% 1818 ["CCRL-3" ]: matches TR-2189 %% 1819 ["CCRL-8" ]: matches TR-2189 %% 1820 ["CCS 206" ]: matches XNSS 288811 %% 1821 ["CCS 86/10" ]: matches TR/AB/3-43.7-3/AB %% 1822 ["CCS~501" ]: matches TR/AB/3-43.7-3/AB %% 1823 ["CCUM 7" ]: matches XNSS 288811 %% 1824 ["CDC 14.2.6" ]: matches TR/AB/3-43.7-3/AB %% 1825 ["CES-88-24" ]: matches ANL-30-74 %% 1826 ["CES-94-??" ]: matches TR/AB/3-43.7-3/AB %% 1827 ["CFDL-TR-87-11" ]: matches UMIAC-TR-89-11 %% 1828 ["CICS--P--169" ]: matches TR/AB/3-43.7-3/AB %% 1829 ["CIS-83-34" ]: matches ANL-30-74 %% 1830 ["CIS-TR-88-16" ]: matches UMIAC-TR-89-11 %% 1831 ["CLNS-197" ]: matches TR-2189 %% 1832 ["CLNS-209" ]: matches TR-2189 %% 1833 ["CM--286" ]: matches TR/AB/3-43.7-3/AB %% 1834 ["CMI 88/45052-1" ]: matches TR/AB/3-43.7-3/AB %% 1835 ["CMPT TR 81-6" ]: matches TR/AB/3-43.7-3/AB %% 1836 ["CMPT TR 83-4" ]: matches TR/AB/3-43.7-3/AB %% 1837 ["CMU-CS-78-125" ]: matches UMIAC-TR-89-11 %% 1838 ["CMU-CS-78-141" ]: matches UMIAC-TR-89-11 %% 1839 ["CMU-CS-80-125" ]: matches UMIAC-TR-89-11 %% 1840 ["CMU-CS-80-131" ]: matches UMIAC-TR-89-11 %% 1841 ["CMU-CS-84-141" ]: matches UMIAC-TR-89-11 %% 1842 ["CMU-CS-85-187" ]: matches UMIAC-TR-89-11 %% 1843 ["CMU-CS-86-168" ]: matches UMIAC-TR-89-11 %% 1844 ["CMU-CS-87-109" ]: matches UMIAC-TR-89-11 %% 1845 ["CMU-CS-88-135" ]: matches UMIAC-TR-89-11 %% 1846 ["CMU-CS-89-111" ]: matches UMIAC-TR-89-11 %% 1847 ["CMU-CS-89-129" ]: matches UMIAC-TR-89-11 %% 1848 ["CMU-CS-89-207" ]: matches UMIAC-TR-89-11 %% 1849 ["CMU-CS-89-209" ]: matches UMIAC-TR-89-11 %% 1850 ["CMU-CS-90-102" ]: matches UMIAC-TR-89-11 %% 1851 ["CMU-CS-90-137" ]: matches UMIAC-TR-89-11 %% 1852 ["CMU-CS-90-139" ]: matches UMIAC-TR-89-11 %% 1853 ["CMU-CS-90-184" ]: matches UMIAC-TR-89-11 %% 1854 ["CMU-CS-91-106" ]: matches UMIAC-TR-89-11 %% 1855 ["CMU-CS-91-111" ]: matches UMIAC-TR-89-11 %% 1856 ["CMU-CS-91-161" ]: matches UMIAC-TR-89-11 %% 1857 ["CMU-CS-91-205" ]: matches UMIAC-TR-89-11 %% 1858 ["CMU-CS-92-163" ]: matches UMIAC-TR-89-11 %% 1859 ["CMU-CS-93-124" ]: matches UMIAC-TR-89-11 %% 1860 ["CMU-CS-93-151" ]: matches UMIAC-TR-89-11 %% 1861 ["CMU-CS-93-164" ]: matches UMIAC-TR-89-11 %% 1862 ["CMU-CS-94-125" ]: matches UMIAC-TR-89-11 %% 1863 ["CMU-CS-94-200" ]: matches UMIAC-TR-89-11 %% 1864 ["CMU-SEI-92-34" ]: matches UMIAC-TR-89-11 %% 1865 ["CN -28/F-14" ]: matches TR/AB/3-43.7-3/AB %% 1866 ["CN-22" ]: matches TR-2189 %% 1867 ["CN-22.2" ]: matches TR/AB/3-43.7-3/AB %% 1868 ["CNA--126" ]: matches TR/AB/3-43.7-3/AB %% 1869 ["CNA--139" ]: matches TR/AB/3-43.7-3/AB %% 1870 ["CNA--150" ]: matches TR/AB/3-43.7-3/AB %% 1871 ["CNA--164" ]: matches TR/AB/3-43.7-3/AB %% 1872 ["CNA--173" ]: matches TR/AB/3-43.7-3/AB %% 1873 ["CNA--18" ]: matches TR/AB/3-43.7-3/AB %% 1874 ["CNA--189" ]: matches TR/AB/3-43.7-3/AB %% 1875 ["CNA--191" ]: matches TR/AB/3-43.7-3/AB %% 1876 ["CNA--200" ]: matches TR/AB/3-43.7-3/AB %% 1877 ["CNA--216" ]: matches TR/AB/3-43.7-3/AB %% 1878 ["CNA--220" ]: matches TR/AB/3-43.7-3/AB %% 1879 ["CNA--222" ]: matches TR/AB/3-43.7-3/AB %% 1880 ["CNA--228" ]: matches TR/AB/3-43.7-3/AB %% 1881 ["CNA--23" ]: matches TR/AB/3-43.7-3/AB %% 1882 ["CNA--232" ]: matches TR/AB/3-43.7-3/AB %% 1883 ["CNA--24" ]: matches TR/AB/3-43.7-3/AB %% 1884 ["CNA--240" ]: matches TR/AB/3-43.7-3/AB %% 1885 ["CNA--244" ]: matches TR/AB/3-43.7-3/AB %% 1886 ["CNA--249" ]: matches TR/AB/3-43.7-3/AB %% 1887 ["CNA--250" ]: matches TR/AB/3-43.7-3/AB %% 1888 ["CNA--255" ]: matches TR/AB/3-43.7-3/AB %% 1889 ["CNA--26" ]: matches TR/AB/3-43.7-3/AB %% 1890 ["CNA--33" ]: matches TR/AB/3-43.7-3/AB %% 1891 ["CNA--52" ]: matches TR/AB/3-43.7-3/AB %% 1892 ["CNA--90" ]: matches TR/AB/3-43.7-3/AB %% 1893 ["CNA-139" ]: matches TR-2189 %% 1894 ["CNA-150" ]: matches TR-2189 %% 1895 ["CNA-164" ]: matches TR-2189 %% 1896 ["CNA-173" ]: matches TR-2189 %% 1897 ["CNA-189" ]: matches TR-2189 %% 1898 ["CNA-191" ]: matches TR-2189 %% 1899 ["CNA-198" ]: matches TR-2189 %% 1900 ["CNA-199" ]: matches TR-2189 %% 1901 ["CNA-202" ]: matches TR-2189 %% 1902 ["CNA-208" ]: matches TR-2189 %% 1903 ["CNA-222" ]: matches TR-2189 %% 1904 ["CNA-232" ]: matches TR-2189 %% 1905 ["CNA-244" ]: matches TR-2189 %% 1906 ["CNA-250" ]: matches TR-2189 %% 1907 ["CNA-26" ]: matches TR-2189 %% 1908 ["CNA-33" ]: matches TR-2189 %% 1909 ["CNA-52" ]: matches TR-2189 %% 1910 ["CNC/1993/028" ]: matches TR/AB/3-43.7-3/AB %% 1911 ["COINS 87-134" ]: matches TR/AB/3-43.7-3/AB %% 1912 ["COINS TR 91-13" ]: matches TR/AB/3-43.7-3/AB %% 1913 ["COMP TR85-16" ]: matches TR/AB/3-43.7-3/AB %% 1914 ["COMP TR86-38" ]: matches TR/AB/3-43.7-3/AB %% 1915 ["COMP TR90-14" ]: matches TR/AB/3-43.7-3/AB %% 1916 ["COMP TR91-149" ]: matches TR/AB/3-43.7-3/AB %% 1917 ["COMP TR91-15" ]: matches TR/AB/3-43.7-3/AB %% 1918 ["COMP TR91-154" ]: matches TR/AB/3-43.7-3/AB %% 1919 ["COMP TR91-160" ]: matches TR/AB/3-43.7-3/AB %% 1920 ["COMP TR91-169" ]: matches TR/AB/3-43.7-3/AB %% 1921 ["COMP TR91-170" ]: matches TR/AB/3-43.7-3/AB %% 1922 ["COMP TR92-178" ]: matches TR/AB/3-43.7-3/AB %% 1923 ["COMP TR92-198" ]: matches TR/AB/3-43.7-3/AB %% 1924 ["COMP TR93-203" ]: matches TR/AB/3-43.7-3/AB %% 1925 ["COMP TR93-213" ]: matches TR/AB/3-43.7-3/AB %% 1926 ["COMP TR93-918" ]: matches TR/AB/3-43.7-3/AB %% 1927 ["CORR 83-11" ]: matches TR/AB/3-43.7-3/AB %% 1928 ["CORR 83-2" ]: matches TR/AB/3-43.7-3/AB %% 1929 ["CORR 84-1" ]: matches TR/AB/3-43.7-3/AB %% 1930 ["CORR 86-23" ]: matches TR/AB/3-43.7-3/AB %% 1931 ["CORR 86-29" ]: matches TR/AB/3-43.7-3/AB %% 1932 ["CORR 93-18" ]: matches TR/AB/3-43.7-3/AB %% 1933 ["CORR Report 94-32" ]: matches TR/AB/3-43.7-3/AB %% 1934 ["CP 74028" ]: matches XNSS 288811 %% 1935 ["CP 78" ]: matches XNSS 288811 %% 1936 ["CP-2012" ]: matches TR-2189 %% 1937 ["CP-390" ]: matches TR-2189 %% 1938 ["CP-391" ]: matches TR-2189 %% 1939 ["CP-700011" ]: matches TR-2189 %% 1940 ["CP-72009" ]: matches TR-2189 %% 1941 ["CP-72017" ]: matches TR-2189 %% 1942 ["CP-72022" ]: matches TR-2189 %% 1943 ["CPT-88" ]: matches TR-2189 %% 1944 ["CR-2032" ]: matches TR-2189 %% 1945 ["CR-R; 84009" ]: matches TR/AB/3-43.7-3/AB %% 1946 ["CRHC-91-21" ]: matches ANL-30-74 %% 1947 ["CRL 91/1 (Revised)" ]: matches TR/AB/3-43.7-3/AB %% 1948 ["CRPC-TR90079" ]: matches TR/AB/3-43.7-3/AB %% 1949 ["CRSC-TR94-10" ]: matches TN-K\slash 27-70 %% 1950 ["CRSC-TR95-12" ]: matches TN-K\slash 27-70 %% 1951 ["CRT-750" ]: matches TR-2189 %% 1952 ["CRT-794" ]: matches TR-2189 %% 1953 ["CRT-807" ]: matches TR-2189 %% 1954 ["CRT-866" ]: matches TR-2189 %% 1955 ["CRT-867" ]: matches TR-2189 %% 1956 ["CRT-920" ]: matches TR-2189 %% 1957 ["CS 142" ]: matches XNSS 288811 %% 1958 ["CS 150" ]: matches XNSS 288811 %% 1959 ["CS 157" ]: matches XNSS 288811 %% 1960 ["CS 252" ]: matches XNSS 288811 %% 1961 ["CS 367A" ]: matches Computer Science Report 100 %% 1962 ["CS 59" ]: matches XNSS 288811 %% 1963 ["CS 60" ]: matches XNSS 288811 %% 1964 ["CS 7708" ]: matches XNSS 288811 %% 1965 ["CS 7714" ]: matches XNSS 288811 %% 1966 ["CS 7808" ]: matches XNSS 288811 %% 1967 ["CS TR 1144" ]: matches Computer Science Report 100 %% 1968 ["CS TR 708" ]: matches Computer Science Report 100 %% 1969 ["CS--90--32" ]: matches TR/AB/3-43.7-3/AB %% 1970 ["CS--91--02" ]: matches TR/AB/3-43.7-3/AB %% 1971 ["CS--91--04" ]: matches TR/AB/3-43.7-3/AB %% 1972 ["CS--TR--303--91" ]: matches TR/AB/3-43.7-3/AB %% 1973 ["CS-142" ]: matches TR-2189 %% 1974 ["CS-186" ]: matches TR-2189 %% 1975 ["CS-1984-13" ]: matches ANL-30-74 %% 1976 ["CS-72-270" ]: matches ANL-30-74 %% 1977 ["CS-78-19" ]: matches ANL-30-74 %% 1978 ["CS-80-13" ]: matches ANL-30-74 %% 1979 ["CS-81-25" ]: matches ANL-30-74 %% 1980 ["CS-82-40" ]: matches ANL-30-74 %% 1981 ["CS-83-06" ]: matches ANL-30-74 %% 1982 ["CS-83-10" ]: matches ANL-30-74 %% 1983 ["CS-83-16" ]: matches ANL-30-74 %% 1984 ["CS-83-41" ]: matches ANL-30-74 %% 1985 ["CS-84-04" ]: matches ANL-30-74 %% 1986 ["CS-84-13" ]: matches ANL-30-74 %% 1987 ["CS-84-2" ]: matches ANL-30-74 %% 1988 ["CS-84-22" ]: matches ANL-30-74 %% 1989 ["CS-85-01" ]: matches ANL-30-74 %% 1990 ["CS-85-56" ]: matches ANL-30-74 %% 1991 ["CS-86-11" ]: matches ANL-30-74 %% 1992 ["CS-86-14" ]: matches ANL-30-74 %% 1993 ["CS-87-01" ]: matches ANL-30-74 %% 1994 ["CS-87-02" ]: matches ANL-30-74 %% 1995 ["CS-87-08" ]: matches ANL-30-74 %% 1996 ["CS-87-17" ]: matches ANL-30-74 %% 1997 ["CS-87-24" ]: matches ANL-30-74 %% 1998 ["CS-87-27" ]: matches ANL-30-74 %% 1999 ["CS-88-10" ]: matches ANL-30-74 %% 2000 ["CS-88-13" ]: matches ANL-30-74 %% 2001 ["CS-88-19" ]: matches ANL-30-74 %% 2002 ["CS-88-33" ]: matches ANL-30-74 %% 2003 ["CS-88-35" ]: matches ANL-30-74 %% 2004 ["CS-89-61" ]: matches ANL-30-74 %% 2005 ["CS-89-85" ]: matches ANL-30-74 %% 2006 ["CS-89-87" ]: matches ANL-30-74 %% 2007 ["CS-89-89" ]: matches ANL-30-74 %% 2008 ["CS-89-90" ]: matches ANL-30-74 %% 2009 ["CS-89-92" ]: matches ANL-30-74 %% 2010 ["CS-90-103" ]: matches ANL-30-74 %% 2011 ["CS-90-105" ]: matches ANL-30-74 %% 2012 ["CS-90-115" ]: matches ANL-30-74 %% 2013 ["CS-90-116" ]: matches ANL-30-74 %% 2014 ["CS-90-117" ]: matches ANL-30-74 %% 2015 ["CS-90-118" ]: matches ANL-30-74 %% 2016 ["CS-90-23" ]: matches ANL-30-74 %% 2017 ["CS-9003-09" ]: matches ANL-30-74 %% 2018 ["CS-91-130 and ORNL/TM-12006"]: matches TR/AB/3-43.7-3/AB %% 2019 ["CS-91-134" ]: matches ANL-30-74 %% 2020 ["CS-91-137" ]: matches ANL-30-74 %% 2021 ["CS-91-138" ]: matches ANL-30-74 %% 2022 ["CS-91-139" ]: matches ANL-30-74 %% 2023 ["CS-91-142" ]: matches ANL-30-74 %% 2024 ["CS-91-146" ]: matches ANL-30-74 %% 2025 ["CS-92-01, revised" ]: matches TR/AB/3-43.7-3/AB %% 2026 ["CS-92-167" ]: matches ANL-30-74 %% 2027 ["CS-92-168" ]: matches ANL-30-74 %% 2028 ["CS-92-181" ]: matches ANL-30-74 %% 2029 ["CS-92-21" ]: matches ANL-30-74 %% 2030 ["CS-92-33" ]: matches ANL-30-74 %% 2031 ["CS-92-55" ]: matches ANL-30-74 %% 2032 ["CS-93-01" ]: matches ANL-30-74 %% 2033 ["CS-93-02" ]: matches ANL-30-74 %% 2034 ["CS-93-2" ]: matches ANL-30-74 %% 2035 ["CS-93-214" ]: matches ANL-30-74 %% 2036 ["CS-93-27" ]: matches ANL-30-74 %% 2037 ["CS-94-228" ]: matches ANL-30-74 %% 2038 ["CS-94-233" ]: matches ANL-30-74 %% 2039 ["CS-94-236" ]: matches ANL-30-74 %% 2040 ["CS-94-239" ]: matches ANL-30-74 %% 2041 ["CS-94-244" ]: matches ANL-30-74 %% 2042 ["CS-94-250" ]: matches ANL-30-74 %% 2043 ["CS-94-257" ]: matches ANL-30-74 %% 2044 ["CS-95-290" ]: matches ANL-30-74 %% 2045 ["CS-95-291" ]: matches ANL-30-74 %% 2046 ["CS-95-301" ]: matches ANL-30-74 %% 2047 ["CS-TR 2539" ]: matches TR/AB/3-43.7-3/AB %% 2048 ["CS-TR 2626" ]: matches TR/AB/3-43.7-3/AB %% 2049 ["CS-TR 3045" ]: matches TR/AB/3-43.7-3/AB %% 2050 ["CS-TR-1705" ]: matches CS-TR-2189 %% 2051 ["CS-TR-2030" ]: matches CS-TR-2189 %% 2052 ["CS-TR-2305" ]: matches CS-TR-2189 %% 2053 ["CS-TR-2403, UMIACS-TR-90-16"]: matches TR/AB/3-43.7-3/AB %% 2054 ["CS-TR-2908" ]: matches CS-TR-2189 %% 2055 ["CS-TR-310-91" ]: matches UMIAC-TR-89-11 %% 2056 ["CS-TR-3268" ]: matches CS-TR-2189 %% 2057 ["CS-TR-3268.1" ]: matches CS-TR-21.7 %% 2058 ["CS-TR-351-91" ]: matches UMIAC-TR-89-11 %% 2059 ["CS-TR-412-93" ]: matches UMIAC-TR-89-11 %% 2060 ["CS-TR-750" ]: matches CS-TR-2189 %% 2061 ["CS-TR2907 (UMIACS-TR-92-60)"]: matches TR/AB/3-43.7-3/AB %% 2062 ["CS-xx-yyy" ]: matches TR/AB/3-43.7-3/AB %% 2063 ["CS/82/5" ]: matches TR/AB/3-43.7-3/AB %% 2064 ["CS81-1 (Revised)" ]: matches TR/AB/3-43.7-3/AB %% 2065 ["CS81-1" ]: matches SP43-29 %% 2066 ["CSD 92/693" ]: matches TR/AB/3-43.7-3/AB %% 2067 ["CSD-890044" ]: matches TR-2189 %% 2068 ["CSD-TR 516" ]: matches TR/AB/3-43.7-3/AB %% 2069 ["CSD-TR-408" ]: matches CS-TR-2189 %% 2070 ["CSD-TR-433" ]: matches CS-TR-2189 %% 2071 ["CSD-TR-576" ]: matches CS-TR-2189 %% 2072 ["CSD-TR-612" ]: matches CS-TR-2189 %% 2073 ["CSD-TR-661" ]: matches CS-TR-2189 %% 2074 ["CSD-TR-688" ]: matches CS-TR-2189 %% 2075 ["CSD-TR-735" ]: matches CS-TR-2189 %% 2076 ["CSD-TR-745" ]: matches CS-TR-2189 %% 2077 ["CSD-TR-93-059" ]: matches UMIAC-TR-89-11 %% 2078 ["CSDG 78-2" ]: matches TR/AB/3-43.7-3/AB %% 2079 ["CSDG 81-1" ]: matches TR/AB/3-43.7-3/AB %% 2080 ["CSDG" ]: matches Computer Science Report 100 %% 2081 ["CSDG-80-1" ]: matches ANL-30-74 %% 2082 ["CSDG-83-3" ]: matches ANL-30-74 %% 2083 ["CSE 7910" ]: matches XNSS 288811 %% 2084 ["CSE-93-19" ]: matches ANL-30-74 %% 2085 ["CSE89-91" ]: matches SP43-29 %% 2086 ["CSL-79-3" ]: matches ANL-30-74 %% 2087 ["CSL-81-12" ]: matches ANL-30-74 %% 2088 ["CSL-89-9" ]: matches ANL-30-74 %% 2089 ["CSL-93-3" ]: matches ANL-30-74 %% 2090 ["CSL-TR-93-554" ]: matches UMIAC-TR-89-11 %% 2091 ["CSR-94-81" ]: matches ANL-30-74 %% 2092 ["CSRC 966" ]: matches XNSS 288811 %% 2093 ["CSRD 1041" ]: matches XNSS 288811 %% 2094 ["CSRD 601" ]: matches XNSS 288811 %% 2095 ["CSRD 624" ]: matches XNSS 288811 %% 2096 ["CSRD 665" ]: matches XNSS 288811 %% 2097 ["CSRD 731" ]: matches XNSS 288811 %% 2098 ["CSRD 785" ]: matches XNSS 288811 %% 2099 ["CSRD 983" ]: matches XNSS 288811 %% 2100 ["CSRD No. 860, UILU-ENG-89-8003"]: matches TR/AB/3-43.7-3/AB %% 2101 ["CSS 155, 1984" ]: matches TR/AB/3-43.7-3/AB %% 2102 ["CSS 171" ]: matches XNSS 288811 %% 2103 ["CSS 214" ]: matches XNSS 288811 %% 2104 ["CSS-210" ]: matches TR-2189 %% 2105 ["CSS-211" ]: matches TR-2189 %% 2106 ["CSS-229" ]: matches TR-2189 %% 2107 ["CSS213" ]: matches LPS0064 %% 2108 ["CSTR 89-7" ]: matches TR/AB/3-43.7-3/AB %% 2109 ["CTC 90 TR26" ]: matches Computer Science Report 100 %% 2110 ["CTC 91 TR85" ]: matches Computer Science Report 100 %% 2111 ["CTC 92 TR115" ]: matches Computer Science Report 100 %% 2112 ["CTC 93 TR126" ]: matches Computer Science Report 100 %% 2113 ["CTC 94 TR172" ]: matches Computer Science Report 100 %% 2114 ["CTC92TR100" ]: matches Computer Science Report 100 %% 2115 ["CTS WN 26" ]: matches Computer Science Report 100 %% 2116 ["CU-CS-420-89" ]: matches UMIAC-TR-89-11 %% 2117 ["CU-CS-534-91" ]: matches UMIAC-TR-89-11 %% 2118 ["CU-CS-579-92" ]: matches UMIAC-TR-89-11 %% 2119 ["CU-CS-623-92" ]: matches UMIAC-TR-89-11 %% 2120 ["CU-CS-682-93" ]: matches UMIAC-TR-89-11 %% 2121 ["CUED/F-CAMS/TR.241" ]: matches TR/AB/3-43.7-3/AB %% 2122 ["CUED/F-CAMS/TR.242" ]: matches TR/AB/3-43.7-3/AB %% 2123 ["CUED/F-CAMS/TR.248" ]: matches TR/AB/3-43.7-3/AB %% 2124 ["Computer Science Report 100"]: matches Computer Science Report 100 %% 2125 ["Computer Science Report 91"]: matches Computer Science Report 100 %% 2126 ["Computer Science Technical Report 89"]: matches Computer Science Report 100 %% 2127 ["Contract no. AD/A-056 839CU-CS-129-78"]: matches TR/AB/3-43.7-3/AB %% 2128 ["D 889778" ]: matches XNSS 288811 %% 2129 ["D--134, Rev. B" ]: matches TR/AB/3-43.7-3/AB %% 2130 ["D-6545" ]: matches TR-2189 %% 2131 ["D-6734" ]: matches TR-2189 %% 2132 ["D-6959" ]: matches TR-2189 %% 2133 ["D-7329" ]: matches TR-2189 %% 2134 ["D-8020" ]: matches TR-2189 %% 2135 ["D-91-13" ]: matches ANL-30-74 %% 2136 ["D-92-08" ]: matches ANL-30-74 %% 2137 ["D-93-05" ]: matches ANL-30-74 %% 2138 ["DAIMI FN-19" ]: matches TR/AB/3-43.7-3/AB %% 2139 ["DAIMI PB - 345" ]: matches TR/AB/3-43.7-3/AB %% 2140 ["DAIMI PB - 355" ]: matches TR/AB/3-43.7-3/AB %% 2141 ["DAIMI PB - 357" ]: matches TR/AB/3-43.7-3/AB %% 2142 ["DAIMI-PB - 318" ]: matches TR/AB/3-43.7-3/AB %% 2143 ["DCS/RR-783" ]: matches TR/AB/3-43.7-3/AB %% 2144 ["DCS/RR-826" ]: matches TR/AB/3-43.7-3/AB %% 2145 ["DD 84-14" ]: matches TR/AB/3-43.7-3/AB %% 2146 ["DD/85/18" ]: matches TR/AB/3-43.7-3/AB %% 2147 ["DEC-TR-566" ]: matches CS-TR-2189 %% 2148 ["DEC-TR-593" ]: matches CS-TR-2189 %% 2149 ["DECUS No. 10-21" ]: matches TR/AB/3-43.7-3/AB %% 2150 ["DITC 12/82" ]: matches TR/AB/3-43.7-3/AB %% 2151 ["DITC 192/91" ]: matches TR/AB/3-43.7-3/AB %% 2152 ["DITC 200/92" ]: matches TR/AB/3-43.7-3/AB %% 2153 ["DITC 203/92" ]: matches TR/AB/3-43.7-3/AB %% 2154 ["DITC 214/93" ]: matches TR/AB/3-43.7-3/AB %% 2155 ["DITC 23/83" ]: matches TR/AB/3-43.7-3/AB %% 2156 ["DITC 8/82" ]: matches TR/AB/3-43.7-3/AB %% 2157 ["DKBS-TR-94-5" ]: matches UMIAC-TR-89-11 %% 2158 ["DMS-618-IR" ]: matches TR/AB/3-43.7-3/AB %% 2159 ["DMS-646-IR" ]: matches TR/AB/3-43.7-3/AB %% 2160 ["DNACS 10/78" ]: matches TR/AB/3-43.7-3/AB %% 2161 ["DNACS 13/79" ]: matches TR/AB/3-43.7-3/AB %% 2162 ["DNACS 30/80" ]: matches TR/AB/3-43.7-3/AB %% 2163 ["DNACS 34/80" ]: matches TR/AB/3-43.7-3/AB %% 2164 ["DPh-T/78-75" ]: matches TR/AB/3-43.7-3/AB %% 2165 ["Dep. Report STA" ]: matches TR/AB/3-43.7-3/AB %% 2166 ["DpH-T 43/78" ]: matches TR/AB/3-43.7-3/AB %% 2167 ["E-2637" ]: matches TR-2189 %% 2168 ["E-2700" ]: matches TR-2189 %% 2169 ["E-2779" ]: matches TR-2189 %% 2170 ["E11-87-10" ]: matches GG24-3611-00 %% 2171 ["E11-89-755" ]: matches GG24-3611-00 %% 2172 ["E2-89-286" ]: matches GG24-3611-00 %% 2173 ["E251" ]: matches LPS0064 %% 2174 ["E253" ]: matches LPS0064 %% 2175 ["E4-85-262" ]: matches GG24-3611-00 %% 2176 ["E4-85-263" ]: matches GG24-3611-00 %% 2177 ["E4-85-264" ]: matches GG24-3611-00 %% 2178 ["E5-85-39" ]: matches GG24-3611-00 %% 2179 ["E5-89-141" ]: matches GG24-3611-00 %% 2180 ["E5-91-401" ]: matches GG24-3611-00 %% 2181 ["ECS-LFCS-86-14" ]: matches UMIAC-TR-89-11 %% 2182 ["ECS-LFCS-86-2" ]: matches UMIAC-TR-89-11 %% 2183 ["ECS-LFCS-89-73 (also CSR-290-89)"]: matches TR/AB/3-43.7-3/AB %% 2184 ["ECS-LFCS-92-226" ]: matches UMIAC-TR-89-11 %% 2185 ["ECS-LFCS-93-275" ]: matches UMIAC-TR-89-11 %% 2186 ["ECS-LFCS-94-280" ]: matches UMIAC-TR-89-11 %% 2187 ["ECS-LFCS-94-303" ]: matches UMIAC-TR-89-11 %% 2188 ["EDFB-IBP 74-6" ]: matches TR/AB/3-43.7-3/AB %% 2189 ["EE-CEG-85-2" ]: matches UMIAC-TR-89-11 %% 2190 ["EE-CEG-85-7" ]: matches UMIAC-TR-89-11 %% 2191 ["EE-CEG-86-1" ]: matches UMIAC-TR-89-11 %% 2192 ["EE-CEG-86-2" ]: matches UMIAC-TR-89-11 %% 2193 ["EE-CEG-86-5" ]: matches UMIAC-TR-89-11 %% 2194 ["EE-CEG-86-7" ]: matches UMIAC-TR-89-11 %% 2195 ["EP-78-E-23" ]: matches TR/AB/3-43.7-3/AB %% 2196 ["EPA-600/4-78-001" ]: matches TR/AB/3-43.7-3/AB %% 2197 ["EPM/RT-84-6" ]: matches TR/AB/3-43.7-3/AB %% 2198 ["ER/25026--30" ]: matches TR/AB/3-43.7-3/AB %% 2199 ["ERL 269-APCL 28" ]: matches TR/AB/3-43.7-3/AB %% 2200 ["ERL SEL-32" ]: matches TR/AB/3-43.7-3/AB %% 2201 ["ERL-0545-RR" ]: matches TR/AB/3-43.7-3/AB %% 2202 ["ERL-M467" ]: matches TR/AB/3-43.7-3/AB %% 2203 ["ERL-M481" ]: matches TR/AB/3-43.7-3/AB %% 2204 ["ERLTM-SDL 14" ]: matches TR/AB/3-43.7-3/AB %% 2205 ["ES--227/90" ]: matches TR/AB/3-43.7-3/AB %% 2206 ["ES--230/90" ]: matches TR/AB/3-43.7-3/AB %% 2207 ["ES--238/90" ]: matches TR/AB/3-43.7-3/AB %% 2208 ["ES--246/91" ]: matches TR/AB/3-43.7-3/AB %% 2209 ["ESAT-KUL-88/3" ]: matches TR/AB/3-43.7-3/AB %% 2210 ["ETA-TR-43" ]: matches CS-TR-2189 %% 2211 ["ETA-TR-49" ]: matches CS-TR-2189 %% 2212 ["ETA-TR-51" ]: matches CS-TR-2189 %% 2213 ["ETA-TR-52" ]: matches CS-TR-2189 %% 2214 ["ETA-TR-53" ]: matches CS-TR-2189 %% 2215 ["ETA-TR-57" ]: matches CS-TR-2189 %% 2216 ["ETA-TR-60" ]: matches CS-TR-2189 %% 2217 ["ETA-TR-61" ]: matches CS-TR-2189 %% 2218 ["ETA-TR-85" ]: matches CS-TR-2189 %% 2219 ["ETA-TR-90" ]: matches CS-TR-2189 %% 2220 ["ETR 7/91" ]: matches TR/AB/3-43.7-3/AB %% 2221 ["F4 Bound" ]: matches Computer Science Report 100 %% 2222 ["FA-STS-991324" ]: matches CS-TR-2189 %% 2223 ["FAO-2" ]: matches TR-2189 %% 2224 ["FAO-70-L" ]: matches TR/AB/3-43.7-3/AB %% 2225 ["FCVS66-VSR205. ADA040385"]: matches TR/AB/3-43.7-3/AB %% 2226 ["FCVS66-VSR210. ADA040392"]: matches TR/AB/3-43.7-3/AB %% 2227 ["FCVS78-VSR806" ]: matches TR/AB/3-43.7-3/AB %% 2228 ["FF-X-6" ]: matches CS-TR-2189 %% 2229 ["FHWA-IP-79-5" ]: matches UMIAC-TR-89-11 %% 2230 ["FHWA-TS-79-222" ]: matches UMIAC-TR-89-11 %% 2231 ["FMR-X-23" ]: matches CS-TR-2189 %% 2232 ["FMR-X-42" ]: matches CS-TR-2189 %% 2233 ["FMR-X-7" ]: matches CS-TR-2189 %% 2234 ["FMR-X-78" ]: matches CS-TR-2189 %% 2235 ["FN--535" ]: matches TR/AB/3-43.7-3/AB %% 2236 ["FR/PA/93/19" ]: matches TR/AB/3-43.7-3/AB %% 2237 ["FRA-ORD and D-74-6" ]: matches TR/AB/3-43.7-3/AB %% 2238 ["FS-81-2" ]: matches ANL-30-74 %% 2239 ["FS81-2" ]: matches SP43-29 %% 2240 ["FSU-SCRI-87-30" ]: matches UMIAC-TR-89-11 %% 2241 ["FSU-SCRI-87-43" ]: matches UMIAC-TR-89-11 %% 2242 ["FSU-SCRI-90-91" ]: matches UMIAC-TR-89-11 %% 2243 ["FSU-SCRI-94-06" ]: matches UMIAC-TR-89-11 %% 2244 ["FTD-HC-23-897-74" ]: matches TR/AB/3-43.7-3/AB %% 2245 ["G--89--25" ]: matches TR/AB/3-43.7-3/AB %% 2246 ["G1/1" ]: matches TR/AB/3-43.7-3/AB %% 2247 ["G2/1" ]: matches TR/AB/3-43.7-3/AB %% 2248 ["G320-3490" ]: matches SP43-29 %% 2249 ["G4550-CM-39" ]: matches TR/AB/3-43.7-3/AB %% 2250 ["GAO/IMTEC-92-26" ]: matches TR/AB/3-43.7-3/AB %% 2251 ["GAS/OP/MCL; TM-248" ]: matches TR/AB/3-43.7-3/AB %% 2252 ["GER-16109" ]: matches TR-2189 %% 2253 ["GG24-3611-00" ]: matches GG24-3611-00 %% 2254 ["GIT-ICS; 82/10" ]: matches TR/AB/3-43.7-3/AB %% 2255 ["GIT-SERC-86/02, GIT-ICS-85/06"]: matches TR/AB/3-43.7-3/AB %% 2256 ["GJBX 10(81)" ]: matches RJ 34(49) %% 2257 ["GJBX 11(81)" ]: matches RJ 34(49) %% 2258 ["GJBX 192-82" ]: matches TR/AB/3-43.7-3/AB %% 2259 ["GJBX 193-82" ]: matches TR/AB/3-43.7-3/AB %% 2260 ["GJBX 246(80)" ]: matches RJ 34(49) %% 2261 ["GJBX 247(80)" ]: matches RJ 34(49) %% 2262 ["GJBX 248(80)" ]: matches RJ 34(49) %% 2263 ["GMR-5174" ]: matches TR-2189 %% 2264 ["GMR-5299" ]: matches TR-2189 %% 2265 ["GN33-9342" ]: matches SP43-29 %% 2266 ["GS1976/236" ]: matches TR/AB/3-43.7-3/AB %% 2267 ["GU TPA 88/12-1" ]: matches TR/AB/3-43.7-3/AB %% 2268 ["GUTPA 88/04-01" ]: matches TR/AB/3-43.7-3/AB %% 2269 ["GWU-IIST-82-20" ]: matches UMIAC-TR-89-11 %% 2270 ["HDL-TR-1942" ]: matches CS-TR-2189 %% 2271 ["HPL-90-22" ]: matches ANL-30-74 %% 2272 ["HPL-91-50" ]: matches ANL-30-74 %% 2273 ["HPL-93-42" ]: matches ANL-30-74 %% 2274 ["HPL-94-??" ]: matches TR/AB/3-43.7-3/AB %% 2275 ["HTKK-TKO-B59" ]: matches TR/AB/3-43.7-3/AB %% 2276 ["Habilitationsschrift" ]: matches Computer Science Report 100 %% 2277 ["Heft 17" ]: matches XNSS 288811 %% 2278 ["Hm-97" ]: matches TR-2189 %% 2279 ["I-140" ]: matches TR-2189 %% 2280 ["I-3" ]: matches TR-2189 %% 2281 ["I-8525" ]: matches TR-2189 %% 2282 ["I-8607" ]: matches TR-2189 %% 2283 ["I-8701" ]: matches TR-2189 %% 2284 ["I-8712" ]: matches TR-2189 %% 2285 ["I-8801" ]: matches TR-2189 %% 2286 ["I-8810" ]: matches TR-2189 %% 2287 ["I-8814" ]: matches TR-2189 %% 2288 ["I-9135" ]: matches TR-2189 %% 2289 ["I-9136" ]: matches TR-2189 %% 2290 ["I-9215" ]: matches TR-2189 %% 2291 ["I-9217" ]: matches TR-2189 %% 2292 ["I-9220" ]: matches TR-2189 %% 2293 ["I-9304" ]: matches TR-2189 %% 2294 ["IB 262-82 RO1" ]: matches TR/AB/3-43.7-3/AB %% 2295 ["IBM-E-148/8, NSF-E-872"]: matches TR/AB/3-43.7-3/AB %% 2296 ["IBM-Form GC33-6163, GN33-9342"]: matches TR/AB/3-43.7-3/AB %% 2297 ["IBM-Form Gc33-6163" ]: matches TR/AB/3-43.7-3/AB %% 2298 ["IBM-Form SA22-7093" ]: matches TR/AB/3-43.7-3/AB %% 2299 ["IBM-Form Sc33-6164" ]: matches TR/AB/3-43.7-3/AB %% 2300 ["IC/85/205" ]: matches TR/AB/3-43.7-3/AB %% 2301 ["ICMA-83-66" ]: matches ANL-30-74 %% 2302 ["ICMA-87-105" ]: matches ANL-30-74 %% 2303 ["IFI-B-66/80" ]: matches TR/AB/3-43.7-3/AB %% 2304 ["II/13" ]: matches TR/AB/3-43.7-3/AB %% 2305 ["IMMR82/067" ]: matches TR/AB/3-43.7-3/AB %% 2306 ["INF-85-11" ]: matches ANL-30-74 %% 2307 ["INF-85-12" ]: matches ANL-30-74 %% 2308 ["INF-87-4" ]: matches ANL-30-74 %% 2309 ["INF-88-36" ]: matches ANL-30-74 %% 2310 ["INFN/TC-92/05" ]: matches TR/AB/3-43.7-3/AB %% 2311 ["INP 90-42" ]: matches TR/AB/3-43.7-3/AB %% 2312 ["INP 90-62" ]: matches TR/AB/3-43.7-3/AB %% 2313 ["INP 90-71" ]: matches TR/AB/3-43.7-3/AB %% 2314 ["INP 91-46" ]: matches TR/AB/3-43.7-3/AB %% 2315 ["INP 91-56" ]: matches TR/AB/3-43.7-3/AB %% 2316 ["INS-REP.-487" ]: matches TR/AB/3-43.7-3/AB %% 2317 ["INT 273" ]: matches XNSS 288811 %% 2318 ["INTT-12" ]: matches TR-2189 %% 2319 ["INTT-17" ]: matches TR-2189 %% 2320 ["INTT-19" ]: matches TR-2189 %% 2321 ["INTT-20" ]: matches TR-2189 %% 2322 ["INTT-21" ]: matches TR-2189 %% 2323 ["INTT-28" ]: matches TR-2189 %% 2324 ["IPP 6/143" ]: matches TR/AB/3-43.7-3/AB %% 2325 ["IRCS 92 - 24" ]: matches TR/AB/3-43.7-3/AB %% 2326 ["ISA-S61.1" ]: matches TR/AB/3-43.7-3/AB %% 2327 ["ISI/RS-86-169" ]: matches TR/AB/3-43.7-3/AB %% 2328 ["ISIS-RR-93-17E" ]: matches TR/AB/3-43.7-3/AB %% 2329 ["ISL-85-8" ]: matches ANL-30-74 %% 2330 ["ISO 1539 (norme NF Z 65-110)"]: matches TR/AB/3-43.7-3/AB %% 2331 ["ISO/IEC TR 9573" ]: matches TR/AB/3-43.7-3/AB %% 2332 ["ISO/IEC TR 9573-13" ]: matches TR/AB/3-43.7-3/AB %% 2333 ["IX" ]: matches Computer Science Report 100 %% 2334 ["IfI-HH-B-71/80" ]: matches TR/AB/3-43.7-3/AB %% 2335 ["IfI-HH-M34/76" ]: matches TR/AB/3-43.7-3/AB %% 2336 ["IfI-HH-M36/76" ]: matches TR/AB/3-43.7-3/AB %% 2337 ["IfI-HH-M65/79" ]: matches TR/AB/3-43.7-3/AB %% 2338 ["Informatica 89-40" ]: matches TR/AB/3-43.7-3/AB %% 2339 ["J--91--07" ]: matches TR/AB/3-43.7-3/AB %% 2340 ["J530-82-020" ]: matches GG24-3611-00 %% 2341 ["JHU-EE 84/14" ]: matches TR/AB/3-43.7-3/AB %% 2342 ["JPL Section 366 Internal Computing Memorandum 437"]: matches Computer Science Report 100 %% 2343 ["J~88--4" ]: matches TR/AB/3-43.7-3/AB %% 2344 ["K-39/67" ]: matches TR/AB/3-43.7-3/AB %% 2345 ["K-73-1" ]: matches ANL-30-74 %% 2346 ["K/CSD/INF-81/25" ]: matches TR/AB/3-43.7-3/AB %% 2347 ["K/CSD/TM-20" ]: matches TR/AB/3-43.7-3/AB %% 2348 ["K/CSD/TM-27" ]: matches TR/AB/3-43.7-3/AB %% 2349 ["K34" ]: matches LPS0064 %% 2350 ["KFA-ZAM-IB-9322" ]: matches TR/AB/3-43.7-3/AB %% 2351 ["KFA-ZAM-IB-9401" ]: matches TR/AB/3-43.7-3/AB %% 2352 ["KFA-ZAM-IB-9404" ]: matches TR/AB/3-43.7-3/AB %% 2353 ["KFA-ZAM-IB-9410" ]: matches TR/AB/3-43.7-3/AB %% 2354 ["KFA-ZAM-IB-9414" ]: matches TR/AB/3-43.7-3/AB %% 2355 ["KFA-ZAM-IB-9415" ]: matches TR/AB/3-43.7-3/AB %% 2356 ["KFA-ZAM-IB-9417" ]: matches TR/AB/3-43.7-3/AB %% 2357 ["KFKI-1982-19" ]: matches ANL-30-74 %% 2358 ["KFKI-1984-115" ]: matches ANL-30-74 %% 2359 ["KFKI-1986-33/B" ]: matches TR/AB/3-43.7-3/AB %% 2360 ["KGN-137" ]: matches TR-2189 %% 2361 ["KGN-184" ]: matches TR-2189 %% 2362 ["KGN-190" ]: matches TR-2189 %% 2363 ["KGN-209" ]: matches TR-2189 %% 2364 ["KGN-216" ]: matches TR-2189 %% 2365 ["KGN-217" ]: matches TR-2189 %% 2366 ["KGN-219" ]: matches TR-2189 %% 2367 ["KUL-TF-79/032" ]: matches TR/AB/3-43.7-3/AB %% 2368 ["LA 7196-MS" ]: matches TR/AB/3-43.7-3/AB %% 2369 ["LA 7467-MS" ]: matches TR/AB/3-43.7-3/AB %% 2370 ["LA-10005" ]: matches TR-2189 %% 2371 ["LA-10284-MS, US-32" ]: matches TR/AB/3-43.7-3/AB %% 2372 ["LA-4531" ]: matches TR-2189 %% 2373 ["LA-6774" ]: matches TR-2189 %% 2374 ["LA-7524-MS" ]: matches TR/AB/3-43.7-3/AB %% 2375 ["LA-8609-MS" ]: matches TR/AB/3-43.7-3/AB %% 2376 ["LA-8849-MS" ]: matches TR/AB/3-43.7-3/AB %% 2377 ["LA-UR-83-1392" ]: matches UMIAC-TR-89-11 %% 2378 ["LA-UR-83-1676" ]: matches UMIAC-TR-89-11 %% 2379 ["LA-UR-84-2004" ]: matches UMIAC-TR-89-11 %% 2380 ["LA-UR-85-2393" ]: matches UMIAC-TR-89-11 %% 2381 ["LA-UR-85-3597" ]: matches UMIAC-TR-89-11 %% 2382 ["LA-UR-85-3967" ]: matches UMIAC-TR-89-11 %% 2383 ["LA-UR-86-2080" ]: matches UMIAC-TR-89-11 %% 2384 ["LA-UR-86-2890" ]: matches UMIAC-TR-89-11 %% 2385 ["LA-UR-86-3773" ]: matches UMIAC-TR-89-11 %% 2386 ["LA-UR-86-4218" ]: matches UMIAC-TR-89-11 %% 2387 ["LA-UR-86-4219" ]: matches UMIAC-TR-89-11 %% 2388 ["LA-UR-87-1522" ]: matches UMIAC-TR-89-11 %% 2389 ["LA-UR-87-2163" ]: matches UMIAC-TR-89-11 %% 2390 ["LA-UR-87-2164" ]: matches UMIAC-TR-89-11 %% 2391 ["LA-UR-87-2879" ]: matches UMIAC-TR-89-11 %% 2392 ["LA-UR-87-3136" ]: matches UMIAC-TR-89-11 %% 2393 ["LA-UR-87-3635" ]: matches UMIAC-TR-89-11 %% 2394 ["LA-UR-87-659" ]: matches UMIAC-TR-89-11 %% 2395 ["LA-UR-88-901" ]: matches UMIAC-TR-89-11 %% 2396 ["LBL 5283" ]: matches XNSS 288811 %% 2397 ["LBL-22584" ]: matches TR-2189 %% 2398 ["LCSR--TR--121" ]: matches TR/AB/3-43.7-3/AB %% 2399 ["LCSR--TR--130" ]: matches TR/AB/3-43.7-3/AB %% 2400 ["LCSR--TR--91" ]: matches TR/AB/3-43.7-3/AB %% 2401 ["LMSC 4-22-66-3" ]: matches TR/AB/3-43.7-3/AB %% 2402 ["LMSD-285875" ]: matches TR-2189 %% 2403 ["LMSD-703073" ]: matches TR-2189 %% 2404 ["LPS4004" ]: matches LPS0064 %% 2405 ["LPS5004" ]: matches LPS0064 %% 2406 ["LPS5006" ]: matches LPS0064 %% 2407 ["LPS5047" ]: matches LPS0064 %% 2408 ["LPS5086" ]: matches LPS0064 %% 2409 ["LUFTD2\slash (TFRT-7333)\slash 1040\slash (1986)"]: matches TR/AB/3-43.7-3/AB %% 2410 ["Lawrence Livermore UCRL-87522"]: matches TR/AB/3-43.7-3/AB %% 2411 ["LiTH--MAT--R--1985--10"]: matches TR/AB/3-43.7-3/AB %% 2412 ["LiTH--MAT--R--1990--02"]: matches TR/AB/3-43.7-3/AB %% 2413 ["LiTH-IDA-R-93-34" ]: matches TR/AB/3-43.7-3/AB %% 2414 ["LiTH-MAT-R-1990-11" ]: matches TR/AB/3-43.7-3/AB %% 2415 ["LiTH-MAT-R-1992-05" ]: matches TR/AB/3-43.7-3/AB %% 2416 ["LiTH-MAT-R-1992-49" ]: matches TR/AB/3-43.7-3/AB %% 2417 ["LiTH-MAT-R-1993-39" ]: matches TR/AB/3-43.7-3/AB %% 2418 ["LiTH-MAT-R-1994-19" ]: matches TR/AB/3-43.7-3/AB %% 2419 ["LiTh Mat R 1988-02" ]: matches TR/AB/3-43.7-3/AB %% 2420 ["M33" ]: matches LPS0064 %% 2421 ["M78/40" ]: matches TR/AB/3-43.7-3/AB %% 2422 ["MA/17/1024" ]: matches TR/AB/3-43.7-3/AB %% 2423 ["MAS2-CT920022" ]: matches TR/AB/3-43.7-3/AB %% 2424 ["MASC-TR82-6" ]: matches TN-K\slash 27-70 %% 2425 ["MCA-TM-23" ]: matches CS-TR-2189 %% 2426 ["MCS--P162--0790" ]: matches TR/AB/3-43.7-3/AB %% 2427 ["MCS--P180--1190" ]: matches TR/AB/3-43.7-3/AB %% 2428 ["MCS--P204--0191" ]: matches TR/AB/3-43.7-3/AB %% 2429 ["MCS--P228--0491" ]: matches TR/AB/3-43.7-3/AB %% 2430 ["MCS--P246-0691" ]: matches TR/AB/3-43.7-3/AB %% 2431 ["MCS--P263--0991" ]: matches TR/AB/3-43.7-3/AB %% 2432 ["MCS--TM--140" ]: matches TR/AB/3-43.7-3/AB %% 2433 ["MCS-P153-0692" ]: matches TN-K\slash 27-70 %% 2434 ["MCS-P179-0990" ]: matches TN-K\slash 27-70 %% 2435 ["MCS-P189-1090" ]: matches TN-K\slash 27-70 %% 2436 ["MCS-P218-0391" ]: matches TN-K\slash 27-70 %% 2437 ["MCS-P250-0791" ]: matches TN-K\slash 27-70 %% 2438 ["MCS-P268-1091" ]: matches TN-K\slash 27-70 %% 2439 ["MCS-P273-1191" ]: matches TN-K\slash 27-70 %% 2440 ["MCS-P286-0192" ]: matches TN-K\slash 27-70 %% 2441 ["MCS-P308-0592" ]: matches TN-K\slash 27-70 %% 2442 ["MCS-P330-1092" ]: matches TN-K\slash 27-70 %% 2443 ["MCS-P356-0393" ]: matches TN-K\slash 27-70 %% 2444 ["MCS-P379-0893" ]: matches TN-K\slash 27-70 %% 2445 ["MCS-P61-0289" ]: matches TN-K\slash 27-70 %% 2446 ["MCS-P69-0389" ]: matches TN-K\slash 27-70 %% 2447 ["MCS-P90-0789" ]: matches TN-K\slash 27-70 %% 2448 ["MCS-TM-129" ]: matches CS-TR-2189 %% 2449 ["MCS-TM-138" ]: matches CS-TR-2189 %% 2450 ["MCS-TM-68" ]: matches CS-TR-2189 %% 2451 ["MCS-TM-78" ]: matches CS-TR-2189 %% 2452 ["MCS-TM-80" ]: matches CS-TR-2189 %% 2453 ["MIT/LCS/TM-73" ]: matches TR/AB/3-43.7-3/AB %% 2454 ["MLM-3635" ]: matches TR-2189 %% 2455 ["MM 69-1374-26" ]: matches TR/AB/3-43.7-3/AB %% 2456 ["MM 69-1374-29" ]: matches TR/AB/3-43.7-3/AB %% 2457 ["MPI H-1985-V21" ]: matches TR/AB/3-43.7-3/AB %% 2458 ["MR 128" ]: matches XNSS 288811 %% 2459 ["MR 134" ]: matches XNSS 288811 %% 2460 ["MSSU-EIRS-ERC 94-2" ]: matches TR/AB/3-43.7-3/AB %% 2461 ["MSUCL -- 751" ]: matches TR/AB/3-43.7-3/AB %% 2462 ["MSUCL -- 755" ]: matches TR/AB/3-43.7-3/AB %% 2463 ["MSUCL -- 771" ]: matches TR/AB/3-43.7-3/AB %% 2464 ["MTP 288" ]: matches XNSS 288811 %% 2465 ["M\&A-5" ]: matches TR-2189 %% 2466 ["Math./91/1" ]: matches TR/AB/3-43.7-3/AB %% 2467 ["Math./91/2" ]: matches TR/AB/3-43.7-3/AB %% 2468 ["Math: 062090-051" ]: matches TR/AB/3-43.7-3/AB %% 2469 ["Memorandum INF-85-12" ]: matches TR/AB/3-43.7-3/AB %% 2470 ["N/89/16" ]: matches TR/AB/3-43.7-3/AB %% 2471 ["N75-12657" ]: matches SP43-29 %% 2472 ["N78-32751 NASA TM-7877"]: matches TR/AB/3-43.7-3/AB %% 2473 ["NA 87-07" ]: matches TR/AB/3-43.7-3/AB %% 2474 ["NA-91-05" ]: matches ANL-30-74 %% 2475 ["NA/131" ]: matches TR/AB/3-43.7-3/AB %% 2476 ["NA/154" ]: matches TR/AB/3-43.7-3/AB %% 2477 ["NAC 55" ]: matches XNSS 288811 %% 2478 ["NAC 69" ]: matches XNSS 288811 %% 2479 ["NAC 73" ]: matches XNSS 288811 %% 2480 ["NAC 82" ]: matches XNSS 288811 %% 2481 ["NAM 03" ]: matches XNSS 288811 %% 2482 ["NAS2-9896" ]: matches SP43-29 %% 2483 ["NAS2-9897" ]: matches SP43-29 %% 2484 ["NASA CR 189664; ICASE report 92-22"]: matches TR/AB/3-43.7-3/AB %% 2485 ["NASA CR-1478" ]: matches TR/AB/3-43.7-3/AB %% 2486 ["NASA CR-177410" ]: matches TR/AB/3-43.7-3/AB %% 2487 ["NASA CR-177462" ]: matches TR/AB/3-43.7-3/AB %% 2488 ["NASA CR-177985" ]: matches TR/AB/3-43.7-3/AB %% 2489 ["NASA CR-178364, ICASE interim report 178364"]: matches TR/AB/3-43.7-3/AB %% 2490 ["NASA CR-182806" ]: matches TR/AB/3-43.7-3/AB %% 2491 ["NASA CR-187590" ]: matches TR/AB/3-43.7-3/AB %% 2492 ["NASA CR-189623. ICASE report 92-9"]: matches TR/AB/3-43.7-3/AB %% 2493 ["NASA CR-189629" ]: matches TR/AB/3-43.7-3/AB %% 2494 ["NASA CR-191425" ]: matches TR/AB/3-43.7-3/AB %% 2495 ["NASA CR-191451; ICASE report 93-17"]: matches TR/AB/3-43.7-3/AB %% 2496 ["NASA CR-191575; ICASE report 93-92"]: matches TR/AB/3-43.7-3/AB %% 2497 ["NASA CR-194913; ICASE report no. 94-34"]: matches TR/AB/3-43.7-3/AB %% 2498 ["NASA CR-194943; ICASE report no. 94-54"]: matches TR/AB/3-43.7-3/AB %% 2499 ["NASA CR-2821" ]: matches TR/AB/3-43.7-3/AB %% 2500 ["NASA CR-2901" ]: matches TR/AB/3-43.7-3/AB %% 2501 ["NASA CR-3980" ]: matches TR/AB/3-43.7-3/AB %% 2502 ["NASA CR-3980." ]: matches TR/AB/3-43.7-3/AB %% 2503 ["NASA CR-426" ]: matches TR/AB/3-43.7-3/AB %% 2504 ["NASA CR-4265" ]: matches TR/AB/3-43.7-3/AB %% 2505 ["NASA SP-347" ]: matches TR/AB/3-43.7-3/AB %% 2506 ["NASA TM X-2967" ]: matches TR/AB/3-43.7-3/AB %% 2507 ["NASA TM100217" ]: matches PN LPS5001 %% 2508 ["NASA TN D-2579" ]: matches TR/AB/3-43.7-3/AB %% 2509 ["NASA TN D-6020" ]: matches TR/AB/3-43.7-3/AB %% 2510 ["NASA TN D-7056" ]: matches TR/AB/3-43.7-3/AB %% 2511 ["NASA TN D-734" ]: matches TR/AB/3-43.7-3/AB %% 2512 ["NASA TN D-7385" ]: matches TR/AB/3-43.7-3/AB %% 2513 ["NASA TN D-739" ]: matches TR/AB/3-43.7-3/AB %% 2514 ["NASA TN D-7391" ]: matches TR/AB/3-43.7-3/AB %% 2515 ["NASA TN D-7487" ]: matches TR/AB/3-43.7-3/AB %% 2516 ["NASA TN D-7545" ]: matches TR/AB/3-43.7-3/AB %% 2517 ["NASA TN D-7831" ]: matches TR/AB/3-43.7-3/AB %% 2518 ["NASA TN D-8063" ]: matches TR/AB/3-43.7-3/AB %% 2519 ["NASA TN D-8132" ]: matches TR/AB/3-43.7-3/AB %% 2520 ["NASA TN D-843" ]: matches TR/AB/3-43.7-3/AB %% 2521 ["NASA TN D-8430, D-8431"]: matches TR/AB/3-43.7-3/AB %% 2522 ["NASA TN D-8509 NASA" ]: matches TR/AB/3-43.7-3/AB %% 2523 ["NASA TT-20317" ]: matches TR/AB/3-43.7-3/AB %% 2524 ["NASA Technical Paper 1200"]: matches Computer Science Report 100 %% 2525 ["NASA technical memorandum NASA-TM-108019 4004232378"]: matches TR/AB/3-43.7-3/AB %% 2526 ["NASA-CR 172518" ]: matches TR/AB/3-43.7-3/AB %% 2527 ["NASA-CR 180299" ]: matches TR/AB/3-43.7-3/AB %% 2528 ["NASA-TM-89082" ]: matches CS-TR-2189 %% 2529 ["NASA-TM-89119" ]: matches CS-TR-2189 %% 2530 ["NI-80-07" ]: matches ANL-30-74 %% 2531 ["NISTIR 5287" ]: matches XNSS 288811 %% 2532 ["NISTIR 5381" ]: matches XNSS 288811 %% 2533 ["NISTIR~89--4225" ]: matches TR/AB/3-43.7-3/AB %% 2534 ["NM-8518" ]: matches TR-2189 %% 2535 ["NM-9017" ]: matches TR-2189 %% 2536 ["NM-9018" ]: matches TR-2189 %% 2537 ["NM-N8801" ]: matches TR/AB/3-43.7-3/AB %% 2538 ["NM-R8501" ]: matches TR/AB/3-43.7-3/AB %% 2539 ["NM-R8702" ]: matches TR/AB/3-43.7-3/AB %% 2540 ["NM-R8719" ]: matches TR/AB/3-43.7-3/AB %% 2541 ["NM-R8903" ]: matches TR/AB/3-43.7-3/AB %% 2542 ["NM-R8915" ]: matches TR/AB/3-43.7-3/AB %% 2543 ["NM-R9004" ]: matches TR/AB/3-43.7-3/AB %% 2544 ["NM-R9014" ]: matches TR/AB/3-43.7-3/AB %% 2545 ["NM-R9015" ]: matches TR/AB/3-43.7-3/AB %% 2546 ["NM-R9107" ]: matches TR/AB/3-43.7-3/AB %% 2547 ["NM-R9301" ]: matches TR/AB/3-43.7-3/AB %% 2548 ["NM-R9414" ]: matches TR/AB/3-43.7-3/AB %% 2549 ["NM-R9421" ]: matches TR/AB/3-43.7-3/AB %% 2550 ["NN 24" ]: matches XNSS 288811 %% 2551 ["NOC TR170" ]: matches PN LPS5001 %% 2552 ["NOC TR176" ]: matches PN LPS5001 %% 2553 ["NOC TR177" ]: matches PN LPS5001 %% 2554 ["NOC TR205" ]: matches PN LPS5001 %% 2555 ["NOC TR209" ]: matches PN LPS5001 %% 2556 ["NOC TR210" ]: matches PN LPS5001 %% 2557 ["NOC TR224" ]: matches PN LPS5001 %% 2558 ["NOC TR228" ]: matches PN LPS5001 %% 2559 ["NP 1201" ]: matches XNSS 288811 %% 2560 ["NP1168" ]: matches LPS0064 %% 2561 ["NPS-53-86-012" ]: matches TR/AB/3-43.7-3/AB %% 2562 ["NPS-MA-88-009" ]: matches UMIAC-TR-89-11 %% 2563 ["NPS-MA-89-001" ]: matches UMIAC-TR-89-11 %% 2564 ["NPS-MA-89-014" ]: matches UMIAC-TR-89-11 %% 2565 ["NPS-MA-90-004" ]: matches UMIAC-TR-89-11 %% 2566 ["NPS-MA-91-009" ]: matches UMIAC-TR-89-11 %% 2567 ["NPS-MA-92-004" ]: matches UMIAC-TR-89-11 %% 2568 ["NPS-MA-92-010" ]: matches UMIAC-TR-89-11 %% 2569 ["NPS-MA-93-014" ]: matches UMIAC-TR-89-11 %% 2570 ["NPS-MA-94-001" ]: matches UMIAC-TR-89-11 %% 2571 ["NPS-MA-94-003" ]: matches UMIAC-TR-89-11 %% 2572 ["NPS012-81-005" ]: matches GG24-3611-00 %% 2573 ["NR 15" ]: matches XNSS 288811 %% 2574 ["NSWC TR 85-54" ]: matches TR/AB/3-43.7-3/AB %% 2575 ["NUREG/CR-3624, SAND83-2365"]: matches TR/AB/3-43.7-3/AB %% 2576 ["NUREG/CR-4478, ORNL/TDMC-4, NRC FIN A9100"]: matches TR/AB/3-43.7-3/AB %% 2577 ["NW 11" ]: matches XNSS 288811 %% 2578 ["NW 18" ]: matches XNSS 288811 %% 2579 ["NW 24" ]: matches XNSS 288811 %% 2580 ["NW 3" ]: matches XNSS 288811 %% 2581 ["NW 6" ]: matches XNSS 288811 %% 2582 ["NW 66" ]: matches XNSS 288811 %% 2583 ["NW 7" ]: matches XNSS 288811 %% 2584 ["NW 8" ]: matches XNSS 288811 %% 2585 ["NW 9" ]: matches XNSS 288811 %% 2586 ["NW 93" ]: matches XNSS 288811 %% 2587 ["NW 98" ]: matches XNSS 288811 %% 2588 ["NYO-9083" ]: matches TR-2189 %% 2589 ["NYU Report No. DOE/ER/03077-277"]: matches TR/AB/3-43.7-3/AB %% 2590 ["Ni-80-03" ]: matches ANL-30-74 %% 2591 ["No. 1008" ]: matches TR/AB/3-43.7-3/AB %% 2592 ["No. 103B" ]: matches TR/AB/3-43.7-3/AB %% 2593 ["No. 105" ]: matches TR/AB/3-43.7-3/AB %% 2594 ["No. 108" ]: matches TR/AB/3-43.7-3/AB %% 2595 ["No. 1168" ]: matches TR/AB/3-43.7-3/AB %% 2596 ["No. 139" ]: matches TR/AB/3-43.7-3/AB %% 2597 ["No. 1428" ]: matches TR/AB/3-43.7-3/AB %% 2598 ["No. 1469" ]: matches TR/AB/3-43.7-3/AB %% 2599 ["No. 1470" ]: matches TR/AB/3-43.7-3/AB %% 2600 ["No. 149" ]: matches TR/AB/3-43.7-3/AB %% 2601 ["No. 17" ]: matches TR/AB/3-43.7-3/AB %% 2602 ["No. 171" ]: matches TR/AB/3-43.7-3/AB %% 2603 ["No. 172" ]: matches TR/AB/3-43.7-3/AB %% 2604 ["No. 175" ]: matches TR/AB/3-43.7-3/AB %% 2605 ["No. 176" ]: matches TR/AB/3-43.7-3/AB %% 2606 ["No. 180" ]: matches TR/AB/3-43.7-3/AB %% 2607 ["No. 182" ]: matches TR/AB/3-43.7-3/AB %% 2608 ["No. 210" ]: matches TR/AB/3-43.7-3/AB %% 2609 ["No. 22" ]: matches TR/AB/3-43.7-3/AB %% 2610 ["No. 223" ]: matches TR/AB/3-43.7-3/AB %% 2611 ["No. 237" ]: matches TR/AB/3-43.7-3/AB %% 2612 ["No. 239" ]: matches TR/AB/3-43.7-3/AB %% 2613 ["No. 241" ]: matches TR/AB/3-43.7-3/AB %% 2614 ["No. 242" ]: matches TR/AB/3-43.7-3/AB %% 2615 ["No. 254" ]: matches TR/AB/3-43.7-3/AB %% 2616 ["No. 26" ]: matches TR/AB/3-43.7-3/AB %% 2617 ["No. 265" ]: matches TR/AB/3-43.7-3/AB %% 2618 ["No. 276" ]: matches TR/AB/3-43.7-3/AB %% 2619 ["No. 277" ]: matches TR/AB/3-43.7-3/AB %% 2620 ["No. 279" ]: matches TR/AB/3-43.7-3/AB %% 2621 ["No. 28" ]: matches TR/AB/3-43.7-3/AB %% 2622 ["No. 2832" ]: matches TR/AB/3-43.7-3/AB %% 2623 ["No. 289" ]: matches TR/AB/3-43.7-3/AB %% 2624 ["No. 2xx" ]: matches TR/AB/3-43.7-3/AB %% 2625 ["No. 32" ]: matches TR/AB/3-43.7-3/AB %% 2626 ["No. 45" ]: matches TR/AB/3-43.7-3/AB %% 2627 ["No. 49" ]: matches TR/AB/3-43.7-3/AB %% 2628 ["No. 619" ]: matches TR/AB/3-43.7-3/AB %% 2629 ["No. 67" ]: matches TR/AB/3-43.7-3/AB %% 2630 ["No. 791" ]: matches TR/AB/3-43.7-3/AB %% 2631 ["No. 8201" ]: matches TR/AB/3-43.7-3/AB %% 2632 ["No. 830" ]: matches TR/AB/3-43.7-3/AB %% 2633 ["No. 86" ]: matches TR/AB/3-43.7-3/AB %% 2634 ["No. 880" ]: matches TR/AB/3-43.7-3/AB %% 2635 ["No. 881" ]: matches TR/AB/3-43.7-3/AB %% 2636 ["No. 89" ]: matches TR/AB/3-43.7-3/AB %% 2637 ["No. 90-32" ]: matches TR/AB/3-43.7-3/AB %% 2638 ["No. 91" ]: matches TR/AB/3-43.7-3/AB %% 2639 ["No. 97" ]: matches TR/AB/3-43.7-3/AB %% 2640 ["No. CS41" ]: matches TR/AB/3-43.7-3/AB %% 2641 ["No. G320-3558x" ]: matches TR/AB/3-43.7-3/AB %% 2642 ["No. UCB/ERL M77/21" ]: matches TR/AB/3-43.7-3/AB %% 2643 ["No. UCB/ERL M77/23" ]: matches TR/AB/3-43.7-3/AB %% 2644 ["Nr. 70/17" ]: matches TR/AB/3-43.7-3/AB %% 2645 ["Nr. 70/8" ]: matches TR/AB/3-43.7-3/AB %% 2646 ["Number SR-2081, Version 5.0"]: matches TR/AB/3-43.7-3/AB %% 2647 ["Numerical Analysis Manuscript 90-10"]: matches TR/AB/3-43.7-3/AB %% 2648 ["O-79-1" ]: matches ANL-30-74 %% 2649 ["ORC~87--4" ]: matches TR/AB/3-43.7-3/AB %% 2650 ["ORNL 6190" ]: matches XNSS 288811 %% 2651 ["ORNL-1574" ]: matches TR-2189 %% 2652 ["ORNL-5532" ]: matches TR-2189 %% 2653 ["ORNL-5970" ]: matches TR-2189 %% 2654 ["ORNL-6150" ]: matches TR-2189 %% 2655 ["ORNL-6190" ]: matches TR-2189 %% 2656 ["ORNL-6211" ]: matches TR-2189 %% 2657 ["ORNL-6335" ]: matches TR-2189 %% 2658 ["ORNL-NSF-EATC-7" ]: matches TR/AB/3-43.7-3/AB %% 2659 ["ORNL/CSD-48" ]: matches TR/AB/3-43.7-3/AB %% 2660 ["ORNL/CSD-59" ]: matches TR/AB/3-43.7-3/AB %% 2661 ["ORNL/CSD/TM-265" ]: matches TR/AB/3-43.7-3/AB %% 2662 ["ORNL/TM 10835" ]: matches TR/AB/3-43.7-3/AB %% 2663 ["ORNL/TM 11261" ]: matches TR/AB/3-43.7-3/AB %% 2664 ["ORNL/TM 11373" ]: matches TR/AB/3-43.7-3/AB %% 2665 ["ORNL/TM 11407" ]: matches TR/AB/3-43.7-3/AB %% 2666 ["ORNL/TM 12050" ]: matches TR/AB/3-43.7-3/AB %% 2667 ["ORNL/TM 7051" ]: matches TR/AB/3-43.7-3/AB %% 2668 ["ORNL/TM-10367" ]: matches TR/AB/3-43.7-3/AB %% 2669 ["ORNL/TM-10400" ]: matches TR/AB/3-43.7-3/AB %% 2670 ["ORNL/TM-10581" ]: matches TR/AB/3-43.7-3/AB %% 2671 ["ORNL/TM-10691" ]: matches TR/AB/3-43.7-3/AB %% 2672 ["ORNL/TM-10865" ]: matches TR/AB/3-43.7-3/AB %% 2673 ["ORNL/TM-10866" ]: matches TR/AB/3-43.7-3/AB %% 2674 ["ORNL/TM-10881" ]: matches TR/AB/3-43.7-3/AB %% 2675 ["ORNL/TM-10937" ]: matches TR/AB/3-43.7-3/AB %% 2676 ["ORNL/TM-10938" ]: matches TR/AB/3-43.7-3/AB %% 2677 ["ORNL/TM-10945" ]: matches TR/AB/3-43.7-3/AB %% 2678 ["ORNL/TM-11375" ]: matches TR/AB/3-43.7-3/AB %% 2679 ["ORNL/TM-11655" ]: matches TR/AB/3-43.7-3/AB %% 2680 ["ORNL/TM-11669" ]: matches TR/AB/3-43.7-3/AB %% 2681 ["ORNL/TM-11760" ]: matches TR/AB/3-43.7-3/AB %% 2682 ["ORNL/TM-11826" ]: matches TR/AB/3-43.7-3/AB %% 2683 ["ORNL/TM-11847" ]: matches TR/AB/3-43.7-3/AB %% 2684 ["ORNL/TM-12003" ]: matches TR/AB/3-43.7-3/AB %% 2685 ["ORNL/TM-12006" ]: matches TR/AB/3-43.7-3/AB %% 2686 ["ORNL/TM-12126" ]: matches TR/AB/3-43.7-3/AB %% 2687 ["ORNL/TM-12231" ]: matches TR/AB/3-43.7-3/AB %% 2688 ["ORNL/TM-12318" ]: matches TR/AB/3-43.7-3/AB %% 2689 ["ORNL/TM-12404" ]: matches TR/AB/3-43.7-3/AB %% 2690 ["ORNL/TM-12470" ]: matches TR/AB/3-43.7-3/AB %% 2691 ["ORNL/TM-12680" ]: matches TR/AB/3-43.7-3/AB %% 2692 ["ORNL/TM-12999" ]: matches TR/AB/3-43.7-3/AB %% 2693 ["ORNL/TM-8776" ]: matches TR/AB/3-43.7-3/AB %% 2694 ["OR~3186--90--MS" ]: matches TR/AB/3-43.7-3/AB %% 2695 ["OSD/FCTC-82/017" ]: matches TR/AB/3-43.7-3/AB %% 2696 ["OSD/FSTC-82/021 (FCVS 78)"]: matches TR/AB/3-43.7-3/AB %% 2697 ["OSU-CISRC-4\slash 87-TR9"]: matches TR/AB/3-43.7-3/AB %% 2698 ["OSU-CISRC-7/88-TR22" ]: matches TR/AB/3-43.7-3/AB %% 2699 ["OSU-CISRC-7/90-TR18" ]: matches TR/AB/3-43.7-3/AB %% 2700 ["OU-PPI, TR-85-02" ]: matches TR/AB/3-43.7-3/AB %% 2701 ["OU-PPI-TR-85-05" ]: matches TR/AB/3-43.7-3/AB %% 2702 ["P-4428" ]: matches TR-2189 %% 2703 ["P-72" ]: matches TR-2189 %% 2704 ["P-7578" ]: matches TR-2189 %% 2705 ["P10-11944" ]: matches SP43-29 %% 2706 ["P11-87-19" ]: matches GG24-3611-00 %% 2707 ["P11-87-302" ]: matches GG24-3611-00 %% 2708 ["P11-87-303" ]: matches GG24-3611-00 %% 2709 ["P11-87-452" ]: matches GG24-3611-00 %% 2710 ["P11-88-402" ]: matches GG24-3611-00 %% 2711 ["P2 - 11589" ]: matches TR/AB/3-43.7-3/AB %% 2712 ["P2-80-436" ]: matches GG24-3611-00 %% 2713 ["P2-86-825" ]: matches GG24-3611-00 %% 2714 ["P2-86-848" ]: matches GG24-3611-00 %% 2715 ["P2-88-769" ]: matches GG24-3611-00 %% 2716 ["P3" ]: matches LPS0064 %% 2717 ["PAM-212" ]: matches TR-2189 %% 2718 ["PAM-343" ]: matches TR-2189 %% 2719 ["PAM-352" ]: matches TR-2189 %% 2720 ["PAM-579" ]: matches TR-2189 %% 2721 ["PB-251 845" ]: matches PB-251 845 %% 2722 ["PB-291 725 CER76-77TJ-HJM48"]: matches TR/AB/3-43.7-3/AB %% 2723 ["PB-291 762 CER75-76TJ-HJM36"]: matches TR/AB/3-43.7-3/AB %% 2724 ["PCS-TR86-134" ]: matches TN-K\slash 27-70 %% 2725 ["PDR 3171" ]: matches XNSS 288811 %% 2726 ["PEL 126" ]: matches XNSS 288811 %% 2727 ["PFC/RR-82-4" ]: matches TR/AB/3-43.7-3/AB %% 2728 ["PN LPS5001" ]: matches PN LPS5001 %% 2729 ["PN LPS5002" ]: matches PN LPS5001 %% 2730 ["PNW GTR-211" ]: matches TR/AB/3-43.7-3/AB %% 2731 ["PP 93/061" ]: matches TR/AB/3-43.7-3/AB %% 2732 ["PPR-4-83" ]: matches ANL-30-74 %% 2733 ["PR/PA/92/10" ]: matches TR/AB/3-43.7-3/AB %% 2734 ["PRG 58" ]: matches XNSS 288811 %% 2735 ["PRG-63" ]: matches TR-2189 %% 2736 ["PRG-74" ]: matches TR-2189 %% 2737 ["PRG-TR-9-91" ]: matches UMIAC-TR-89-11 %% 2738 ["PRR 76/17" ]: matches TR/AB/3-43.7-3/AB %% 2739 ["PRR 77/9" ]: matches TR/AB/3-43.7-3/AB %% 2740 ["PS-16" ]: matches TR-2189 %% 2741 ["PUB-1255" ]: matches TR-2189 %% 2742 ["PURE, no. 44" ]: matches TR/AB/3-43.7-3/AB %% 2743 ["Preprint 690" ]: matches XNSS 288811 %% 2744 ["Preprint MCS-P144-0390"]: matches TR/AB/3-43.7-3/AB %% 2745 ["Preprint SC 88-2" ]: matches TR/AB/3-43.7-3/AB %% 2746 ["Pt 1" ]: matches XNSS 288811 %% 2747 ["Pt 10" ]: matches XNSS 288811 %% 2748 ["Pt 11" ]: matches XNSS 288811 %% 2749 ["Pt 12" ]: matches XNSS 288811 %% 2750 ["Pt 2" ]: matches XNSS 288811 %% 2751 ["Pt 3" ]: matches XNSS 288811 %% 2752 ["Pt 4" ]: matches XNSS 288811 %% 2753 ["Pt 5" ]: matches XNSS 288811 %% 2754 ["Pt 7" ]: matches XNSS 288811 %% 2755 ["Pt 8" ]: matches XNSS 288811 %% 2756 ["Pt 9" ]: matches XNSS 288811 %% 2757 ["QTP-TF-234" ]: matches CS-TR-2189 %% 2758 ["QTP.770921.01" ]: matches TR/AB/3-43.7-3/AB %% 2759 ["QTP.770927.02" ]: matches TR/AB/3-43.7-3/AB %% 2760 ["QTP.771205.03" ]: matches TR/AB/3-43.7-3/AB %% 2761 ["QTP.780503.04" ]: matches TR/AB/3-43.7-3/AB %% 2762 ["QTP.780614.05" ]: matches TR/AB/3-43.7-3/AB %% 2763 ["QTP.780703.06" ]: matches TR/AB/3-43.7-3/AB %% 2764 ["QTP.780725.07" ]: matches TR/AB/3-43.7-3/AB %% 2765 ["QTP.780822.08" ]: matches TR/AB/3-43.7-3/AB %% 2766 ["QTP.780825.09" ]: matches TR/AB/3-43.7-3/AB %% 2767 ["R-2572-1-AF" ]: matches TR/AB/3-43.7-3/AB %% 2768 ["R-73" ]: matches TR-2189 %% 2769 ["R-82-139" ]: matches ANL-30-74 %% 2770 ["R-86-1246" ]: matches ANL-30-74 %% 2771 ["R-87-1373" ]: matches ANL-30-74 %% 2772 ["R-Math-01/90 0233-2876"]: matches TR/AB/3-43.7-3/AB %% 2773 ["R.10533" ]: matches TR/AB/3-43.7-3/AB %% 2774 ["R12.1281" ]: matches TR/AB/3-43.7-3/AB %% 2775 ["R7470" ]: matches LPS0064 %% 2776 ["R8730" ]: matches LPS0064 %% 2777 ["RADC-TR-82-78" ]: matches UMIAC-TR-89-11 %% 2778 ["RAL 92-086" ]: matches TR/AB/3-43.7-3/AB %% 2779 ["RAL 92-087" ]: matches TR/AB/3-43.7-3/AB %% 2780 ["RAL 93-036" ]: matches TR/AB/3-43.7-3/AB %% 2781 ["RAL 93-055" ]: matches TR/AB/3-43.7-3/AB %% 2782 ["RAL 93-064" ]: matches TR/AB/3-43.7-3/AB %% 2783 ["RAL 93-066" ]: matches TR/AB/3-43.7-3/AB %% 2784 ["RAL 93-072" ]: matches TR/AB/3-43.7-3/AB %% 2785 ["RAL 94-019" ]: matches TR/AB/3-43.7-3/AB %% 2786 ["RAL-92-075" ]: matches ANL-30-74 %% 2787 ["RAL-92-086" ]: matches ANL-30-74 %% 2788 ["RAL-93-064" ]: matches ANL-30-74 %% 2789 ["RAL-93-072" ]: matches ANL-30-74 %% 2790 ["RAL-95-001" ]: matches ANL-30-74 %% 2791 ["RC 10260" ]: matches XNSS 288811 %% 2792 ["RC 10580" ]: matches XNSS 288811 %% 2793 ["RC 11094 (\#49829)" ]: matches TR/AB/3-43.7-3/AB %% 2794 ["RC 11407" ]: matches XNSS 288811 %% 2795 ["RC 11408 (\#51330)" ]: matches TR/AB/3-43.7-3/AB %% 2796 ["RC 11506" ]: matches XNSS 288811 %% 2797 ["RC 11676" ]: matches XNSS 288811 %% 2798 ["RC 12150" ]: matches XNSS 288811 %% 2799 ["RC 12327 (\#55257)" ]: matches TR/AB/3-43.7-3/AB %% 2800 ["RC 12515" ]: matches XNSS 288811 %% 2801 ["RC 12595 (\#56575)" ]: matches TR/AB/3-43.7-3/AB %% 2802 ["RC 12849" ]: matches XNSS 288811 %% 2803 ["RC 13245 (\#59268)" ]: matches TR/AB/3-43.7-3/AB %% 2804 ["RC 13844" ]: matches XNSS 288811 %% 2805 ["RC 14160" ]: matches XNSS 288811 %% 2806 ["RC 14211 (\#63576)" ]: matches TR/AB/3-43.7-3/AB %% 2807 ["RC 15101 (\#67356)" ]: matches TR/AB/3-43.7-3/AB %% 2808 ["RC 15202(\#67767)" ]: matches RJ 34(49) %% 2809 ["RC 19991 (88480)" ]: matches TR/AB/3-43.7-3/AB %% 2810 ["RC 20085 (88832)" ]: matches TR/AB/3-43.7-3/AB %% 2811 ["RC 3259" ]: matches XNSS 288811 %% 2812 ["RC 4608" ]: matches XNSS 288811 %% 2813 ["RC 4962" ]: matches XNSS 288811 %% 2814 ["RC 6203" ]: matches XNSS 288811 %% 2815 ["RC 7681" ]: matches XNSS 288811 %% 2816 ["RC 8348" ]: matches XNSS 288811 %% 2817 ["RC 8425 (\#36568)" ]: matches TR/AB/3-43.7-3/AB %% 2818 ["RC 8743" ]: matches XNSS 288811 %% 2819 ["RC 9009" ]: matches XNSS 288811 %% 2820 ["RC 9203 (#39787)" ]: matches TR/AB/3-43.7-3/AB %% 2821 ["RC 9577" ]: matches XNSS 288811 %% 2822 ["RC 9582 (42314)" ]: matches TR/AB/3-43.7-3/AB %% 2823 ["RC 9789" ]: matches XNSS 288811 %% 2824 ["RC-12686" ]: matches TR-2189 %% 2825 ["RC-55" ]: matches TR-2189 %% 2826 ["RC-6026" ]: matches TR-2189 %% 2827 ["RC-6903" ]: matches TR-2189 %% 2828 ["RC-8644" ]: matches TR-2189 %% 2829 ["RC11719(52739)" ]: matches TR/AB/3-43.7-3/AB %% 2830 ["RC12878" ]: matches LPS0064 %% 2831 ["RC13429" ]: matches LPS0064 %% 2832 ["RC7776" ]: matches LPS0064 %% 2833 ["RC~15030~(67093)" ]: matches TR/AB/3-43.7-3/AB %% 2834 ["RC~15886" ]: matches TR/AB/3-43.7-3/AB %% 2835 ["RFP-624" ]: matches TR-2189 %% 2836 ["RIFIS-TR-CS-105" ]: matches TR/AB/3-43.7-3/AB %% 2837 ["RIFIS-TR-CS-110" ]: matches TR/AB/3-43.7-3/AB %% 2838 ["RIFIS-TR-CS-111" ]: matches TR/AB/3-43.7-3/AB %% 2839 ["RIFIS-TR-CS-117" ]: matches TR/AB/3-43.7-3/AB %% 2840 ["RIFIS-TR-CS-122" ]: matches TR/AB/3-43.7-3/AB %% 2841 ["RJ 9925 (87305)" ]: matches TR/AB/3-43.7-3/AB %% 2842 ["RJ-1218" ]: matches TR-2189 %% 2843 ["RJ3441 (40927)" ]: matches TR/AB/3-43.7-3/AB %% 2844 ["RJ3455 (41061)" ]: matches TR/AB/3-43.7-3/AB %% 2845 ["RJ3503" ]: matches LPS0064 %% 2846 ["RJ~5923" ]: matches TR/AB/3-43.7-3/AB %% 2847 ["RJ~6327" ]: matches TR/AB/3-43.7-3/AB %% 2848 ["RJ~6486" ]: matches TR/AB/3-43.7-3/AB %% 2849 ["RJ~6638~(63949)" ]: matches TR/AB/3-43.7-3/AB %% 2850 ["RJ~7720~(71585)" ]: matches TR/AB/3-43.7-3/AB %% 2851 ["RJ~7872~(72532)" ]: matches TR/AB/3-43.7-3/AB %% 2852 ["RM-4867-PR" ]: matches TR/AB/3-43.7-3/AB %% 2853 ["RM-5618" ]: matches TR-2189 %% 2854 ["RM-5618-PR" ]: matches TR/AB/3-43.7-3/AB %% 2855 ["RM-6248-PR" ]: matches TR/AB/3-43.7-3/AB %% 2856 ["RM-86-13" ]: matches ANL-30-74 %% 2857 ["RM-88-17" ]: matches ANL-30-74 %% 2858 ["RMI 87 -- 02" ]: matches TR/AB/3-43.7-3/AB %% 2859 ["RMI 90--01" ]: matches TR/AB/3-43.7-3/AB %% 2860 ["RNR-90-022" ]: matches ANL-30-74 %% 2861 ["RNR-91-025" ]: matches ANL-30-74 %% 2862 ["RNR-93-004" ]: matches ANL-30-74 %% 2863 ["RNR-93-008" ]: matches ANL-30-74 %% 2864 ["RNR-94-013" ]: matches ANL-30-74 %% 2865 ["RR 2475" ]: matches XNSS 288811 %% 2866 ["RR No 1200" ]: matches Computer Science Report 100 %% 2867 ["RR YALEU/DCS/R-766" ]: matches TR/AB/3-43.7-3/AB %% 2868 ["RR YALEU/DCS/RR-831" ]: matches TR/AB/3-43.7-3/AB %% 2869 ["RR-520" ]: matches TR-2189 %% 2870 ["RR-616" ]: matches TR-2189 %% 2871 ["RR-629" ]: matches TR-2189 %% 2872 ["RR-91-01" ]: matches ANL-30-74 %% 2873 ["RR-91-11" ]: matches ANL-30-74 %% 2874 ["RR-91-15" ]: matches ANL-30-74 %% 2875 ["RR-92-16" ]: matches ANL-30-74 %% 2876 ["RR-92-48" ]: matches ANL-30-74 %% 2877 ["RR-93-03" ]: matches ANL-30-74 %% 2878 ["RR-93-11" ]: matches ANL-30-74 %% 2879 ["RR-93-33" ]: matches ANL-30-74 %% 2880 ["RR1698" ]: matches LPS0064 %% 2881 ["RRR~25--90" ]: matches TR/AB/3-43.7-3/AB %% 2882 ["RRR~46--89" ]: matches TR/AB/3-43.7-3/AB %% 2883 ["RRR~67--90" ]: matches TR/AB/3-43.7-3/AB %% 2884 ["RR~457" ]: matches TR/AB/3-43.7-3/AB %% 2885 ["RT-BIO (68) 1" ]: matches TR/AB/3-43.7-3/AB %% 2886 ["RT/APO/94/2" ]: matches TR/AB/3-43.7-3/AB %% 2887 ["RT/APO/94/4" ]: matches TR/AB/3-43.7-3/AB %% 2888 ["RZ-166" ]: matches TR-2189 %% 2889 ["Rand Publication CP84 (4/83)"]: matches TR/AB/3-43.7-3/AB %% 2890 ["Rap. 04.93" ]: matches TR/AB/3-43.7-3/AB %% 2891 ["Report 91-09" ]: matches TR/AB/3-43.7-3/AB %% 2892 ["Report A1.1, Alvey Project SE/065"]: matches TR/AB/3-43.7-3/AB %% 2893 ["Report A1.2, Alvey Project SE/065"]: matches TR/AB/3-43.7-3/AB %% 2894 ["Report ANL-90/3" ]: matches TR/AB/3-43.7-3/AB %% 2895 ["Res.R. No.R" ]: matches TR/AB/3-43.7-3/AB %% 2896 ["Research Report RJ 5440."]: matches TR/AB/3-43.7-3/AB %% 2897 ["Research Report YALEU/ DCS/ RR-461"]: matches TR/AB/3-43.7-3/AB %% 2898 ["Rice COMP TR476-029-4" ]: matches TR/AB/3-43.7-3/AB %% 2899 ["Ris{\o}-M-564" ]: matches CS-TR-2189 %% 2900 ["Ris{\o}-M-957" ]: matches CS-TR-2189 %% 2901 ["S-22" ]: matches TR-2189 %% 2902 ["S-22(H)" ]: matches TR/AB/3-43.7-3/AB %% 2903 ["S1" ]: matches LPS0064 %% 2904 ["S2" ]: matches LPS0064 %% 2905 ["S544-3421" ]: matches SP43-29 %% 2906 ["S701" ]: matches LPS0064 %% 2907 ["SAE\slash SP-95\slash 1080"]: matches TR-2189 %% 2908 ["SAND-77-0898" ]: matches ANL-30-74 %% 2909 ["SAND-85-2727" ]: matches ANL-30-74 %% 2910 ["SAND85-2752" ]: matches SP43-29 %% 2911 ["SAND89-8691" ]: matches SP43-29 %% 2912 ["SAND90-8723" ]: matches SP43-29 %% 2913 ["SAND91-8240" ]: matches SP43-29 %% 2914 ["SAND92-8548" ]: matches SP43-29 %% 2915 ["SARL-2" ]: matches TR-2189 %% 2916 ["SC 88-1" ]: matches TR/AB/3-43.7-3/AB %% 2917 ["SC 88-2" ]: matches TR/AB/3-43.7-3/AB %% 2918 ["SC 89-4" ]: matches TR/AB/3-43.7-3/AB %% 2919 ["SC 89-6" ]: matches TR/AB/3-43.7-3/AB %% 2920 ["SC 90-1" ]: matches TR/AB/3-43.7-3/AB %% 2921 ["SC 91--3" ]: matches TR/AB/3-43.7-3/AB %% 2922 ["SDS 90 00 03 C" ]: matches Computer Science Report 100 %% 2923 ["SEI-93-TR-4" ]: matches TR/AB/3-43.7-3/AB %% 2924 ["SERC-TR-0-P" ]: matches TR/AB/3-43.7-3/AB %% 2925 ["SERC-TR-4-P" ]: matches TR/AB/3-43.7-3/AB %% 2926 ["SERC-TR-41-P" ]: matches TR/AB/3-43.7-3/AB %% 2927 ["SERC-TR-49-F" ]: matches TR/AB/3-43.7-3/AB %% 2928 ["SERC-TR-55-P" ]: matches TR/AB/3-43.7-3/AB %% 2929 ["SERC-TR-9-P" ]: matches TR/AB/3-43.7-3/AB %% 2930 ["SERC-TR-92-P" ]: matches TR/AB/3-43.7-3/AB %% 2931 ["SETL Newsletter \#102" ]: matches Computer Science Report 100 %% 2932 ["SLAC-PUB-1118" ]: matches CS-TR-2189 %% 2933 ["SLAC-PUB-1183" ]: matches CS-TR-2189 %% 2934 ["SLAC-PUB-1188" ]: matches CS-TR-2189 %% 2935 ["SLAC-PUB-2725" ]: matches CS-TR-2189 %% 2936 ["SLAC-PUB-795" ]: matches CS-TR-2189 %% 2937 ["SLL-73-0225" ]: matches ANL-30-74 %% 2938 ["SM-0017" ]: matches TR-2189 %% 2939 ["SOL 77-7 (NTIS AD/A-044 905)"]: matches TR/AB/3-43.7-3/AB %% 2940 ["SOL 78-19" ]: matches TR/AB/3-43.7-3/AB %% 2941 ["SOL 82-10" ]: matches TR/AB/3-43.7-3/AB %% 2942 ["SOL 82-9" ]: matches TR/AB/3-43.7-3/AB %% 2943 ["SOL 83-20R" ]: matches TR/AB/3-43.7-3/AB %% 2944 ["SOL 86-2" ]: matches TR/AB/3-43.7-3/AB %% 2945 ["SOL 94-4" ]: matches TR/AB/3-43.7-3/AB %% 2946 ["SOL~85--5" ]: matches TR/AB/3-43.7-3/AB %% 2947 ["SOL~86--7" ]: matches TR/AB/3-43.7-3/AB %% 2948 ["SOL~88--10" ]: matches TR/AB/3-43.7-3/AB %% 2949 ["SOL~88--14" ]: matches TR/AB/3-43.7-3/AB %% 2950 ["SOL~88--9" ]: matches TR/AB/3-43.7-3/AB %% 2951 ["SOL~89--6" ]: matches TR/AB/3-43.7-3/AB %% 2952 ["SOL~90--16" ]: matches TR/AB/3-43.7-3/AB %% 2953 ["SOL~90--4" ]: matches TR/AB/3-43.7-3/AB %% 2954 ["SOL~90--6" ]: matches TR/AB/3-43.7-3/AB %% 2955 ["SOL~90-8" ]: matches TR/AB/3-43.7-3/AB %% 2956 ["SOL~91--10" ]: matches TR/AB/3-43.7-3/AB %% 2957 ["SOL~91--2" ]: matches TR/AB/3-43.7-3/AB %% 2958 ["SOL~91-3" ]: matches TR/AB/3-43.7-3/AB %% 2959 ["SOL~91-7" ]: matches TR/AB/3-43.7-3/AB %% 2960 ["SOR~88--3" ]: matches TR/AB/3-43.7-3/AB %% 2961 ["SOR~88--5" ]: matches TR/AB/3-43.7-3/AB %% 2962 ["SOR~89--21" ]: matches TR/AB/3-43.7-3/AB %% 2963 ["SOR~90--03" ]: matches TR/AB/3-43.7-3/AB %% 2964 ["SOR~90--08" ]: matches TR/AB/3-43.7-3/AB %% 2965 ["SOR~90--14" ]: matches TR/AB/3-43.7-3/AB %% 2966 ["SOR~91--18" ]: matches TR/AB/3-43.7-3/AB %% 2967 ["SOR~91--7" ]: matches TR/AB/3-43.7-3/AB %% 2968 ["SP43-29" ]: matches SP43-29 %% 2969 ["SP85-1/5.1E" ]: matches TR/AB/3-43.7-3/AB %% 2970 ["SP85-1/5E" ]: matches TR/AB/3-43.7-3/AB %% 2971 ["SPI//1" ]: matches TR/AB/3-43.7-3/AB %% 2972 ["SPI//2" ]: matches TR/AB/3-43.7-3/AB %% 2973 ["SR-0009" ]: matches TR-2189 %% 2974 ["SR-2079 5.0" ]: matches TR/AB/3-43.7-3/AB %% 2975 ["SR-2079 6.0" ]: matches TR/AB/3-43.7-3/AB %% 2976 ["SR-2079" ]: matches TR-2189 %% 2977 ["SR-3071, SR-3072, SR-3073, SR-3074"]: matches TR/AB/3-43.7-3/AB %% 2978 ["SR-3071, SR-3072, SR-3074"]: matches TR/AB/3-43.7-3/AB %% 2979 ["SR-3772" ]: matches TR-2189 %% 2980 ["SRC TR 89-61r1" ]: matches TR/AB/3-43.7-3/AB %% 2981 ["SRC-TR-94-130" ]: matches UMIAC-TR-89-11 %% 2982 ["SRI-CSL-90-16" ]: matches UMIAC-TR-89-11 %% 2983 ["SSL91-16/P91-00143" ]: matches TR/AB/3-43.7-3/AB %% 2984 ["ST4" ]: matches LPS0064 %% 2985 ["STAN CS-TR-2238, UMIACS-TR-89-45"]: matches TR/AB/3-43.7-3/AB %% 2986 ["STAN-CS-70-163" ]: matches UMIAC-TR-89-11 %% 2987 ["STAN-CS-72-270" ]: matches UMIAC-TR-89-11 %% 2988 ["STAN-CS-73-374" ]: matches UMIAC-TR-89-11 %% 2989 ["STAN-CS-75-478" ]: matches UMIAC-TR-89-11 %% 2990 ["STAN-CS-75-496" ]: matches UMIAC-TR-89-11 %% 2991 ["STAN-CS-75-511" ]: matches UMIAC-TR-89-11 %% 2992 ["STAN-CS-76-535" ]: matches UMIAC-TR-89-11 %% 2993 ["STAN-CS-76-548" ]: matches UMIAC-TR-89-11 %% 2994 ["STAN-CS-76-585" ]: matches UMIAC-TR-89-11 %% 2995 ["STAN-CS-77-595" ]: matches UMIAC-TR-89-11 %% 2996 ["STAN-CS-77-602" ]: matches UMIAC-TR-89-11 %% 2997 ["STAN-CS-77-622" ]: matches UMIAC-TR-89-11 %% 2998 ["STAN-CS-77-623" ]: matches UMIAC-TR-89-11 %% 2999 ["STAN-CS-78-648" ]: matches UMIAC-TR-89-11 %% 3000 ["STAN-CS-78-656" ]: matches UMIAC-TR-89-11 %% 3001 ["STAN-CS-78-675" ]: matches UMIAC-TR-89-11 %% 3002 ["STAN-CS-78-684" ]: matches UMIAC-TR-89-11 %% 3003 ["STAN-CS-78-685" ]: matches UMIAC-TR-89-11 %% 3004 ["STAN-CS-78-698" ]: matches UMIAC-TR-89-11 %% 3005 ["STAN-CS-79-713" ]: matches UMIAC-TR-89-11 %% 3006 ["STAN-CS-79-762" ]: matches UMIAC-TR-89-11 %% 3007 ["STAN-CS-80-780" ]: matches UMIAC-TR-89-11 %% 3008 ["STAN-CS-80-787" ]: matches UMIAC-TR-89-11 %% 3009 ["STAN-CS-80-795" ]: matches UMIAC-TR-89-11 %% 3010 ["STAN-CS-80-803" ]: matches UMIAC-TR-89-11 %% 3011 ["STAN-CS-80-817" ]: matches UMIAC-TR-89-11 %% 3012 ["STAN-CS-80-824" ]: matches UMIAC-TR-89-11 %% 3013 ["STAN-CS-81-848" ]: matches UMIAC-TR-89-11 %% 3014 ["STAN-CS-81-886" ]: matches UMIAC-TR-89-11 %% 3015 ["STAN-CS-82-901" ]: matches UMIAC-TR-89-11 %% 3016 ["STAN-CS-82-914" ]: matches UMIAC-TR-89-11 %% 3017 ["STAN-CS-83-965" ]: matches UMIAC-TR-89-11 %% 3018 ["STAN-CS-83-966" ]: matches UMIAC-TR-89-11 %% 3019 ["STAN-CS-83-971" ]: matches UMIAC-TR-89-11 %% 3020 ["STAN-CS-83-974" ]: matches UMIAC-TR-89-11 %% 3021 ["STAN-CS-83-977" ]: matches UMIAC-TR-89-11 %% 3022 ["STAN-CS-83-978" ]: matches UMIAC-TR-89-11 %% 3023 ["STAN-CS-83-980" ]: matches UMIAC-TR-89-11 %% 3024 ["STAN-CS-83-981" ]: matches UMIAC-TR-89-11 %% 3025 ["STAN-CS-83-985" ]: matches UMIAC-TR-89-11 %% 3026 ["STAN-CS-83-987" ]: matches UMIAC-TR-89-11 %% 3027 ["STAN-CS-84-1013" ]: matches UMIAC-TR-89-11 %% 3028 ["STAN-CS-84-1027" ]: matches UMIAC-TR-89-11 %% 3029 ["STAN-CS-85-1074" ]: matches UMIAC-TR-89-11 %% 3030 ["STAN-CS-86-1095" ]: matches UMIAC-TR-89-11 %% 3031 ["STAN-CS-86-1097" ]: matches UMIAC-TR-89-11 %% 3032 ["STAN-CS-88-1223" ]: matches UMIAC-TR-89-11 %% 3033 ["STAN-CS-89-04, NA-89-04"]: matches TR/AB/3-43.7-3/AB %% 3034 ["STAN-CS-89-08, NA-89-08"]: matches TR/AB/3-43.7-3/AB %% 3035 ["STAN-CS-89-1251" ]: matches UMIAC-TR-89-11 %% 3036 ["STAN-CS-TR-2001" ]: matches TR/AB/3-43.7-3/AB %% 3037 ["STAN-CS-TR-2002" ]: matches TR/AB/3-43.7-3/AB %% 3038 ["STL-86-13" ]: matches ANL-30-74 %% 3039 ["STL-88-21" ]: matches ANL-30-74 %% 3040 ["STL-89-25" ]: matches ANL-30-74 %% 3041 ["STL-89-26" ]: matches ANL-30-74 %% 3042 ["STP-172-86" ]: matches ANL-30-74 %% 3043 ["Section 914, Internal Computing Memorandum 337"]: matches TR/AB/3-43.7-3/AB %% 3044 ["Special Publication 424"]: matches Computer Science Report 100 %% 3045 ["Standard 8613" ]: matches XNSS 288811 %% 3046 ["Suppl 1" ]: matches XNSS 288811 %% 3047 ["Supplement" ]: matches Computer Science Report 100 %% 3048 ["T" ]: matches Computer Science Report 100 %% 3049 ["T-11" ]: matches TR-2189 %% 3050 ["T.P. 322" ]: matches TR/AB/3-43.7-3/AB %% 3051 ["T62-3" ]: matches SP43-29 %% 3052 ["T62-4" ]: matches SP43-29 %% 3053 ["TAU 86-04" ]: matches TR/AB/3-43.7-3/AB %% 3054 ["TBD" ]: matches Computer Science Report 100 %% 3055 ["TC-NA-94-1" ]: matches UMIAC-TR-89-11 %% 3056 ["TC-NA-94-2" ]: matches UMIAC-TR-89-11 %% 3057 ["TC-NA-94-3" ]: matches UMIAC-TR-89-11 %% 3058 ["TC-NA-94-4" ]: matches UMIAC-TR-89-11 %% 3059 ["TC-NA-94-5" ]: matches UMIAC-TR-89-11 %% 3060 ["TC-PC-95-1" ]: matches UMIAC-TR-89-11 %% 3061 ["TEC 715" ]: matches XNSS 288811 %% 3062 ["TEC 816 Canada" ]: matches Computer Science Report 100 %% 3063 ["TH.2548-CERN" ]: matches TR/AB/3-43.7-3/AB %% 3064 ["TIM005" ]: matches LPS0064 %% 3065 ["TIM007.A" ]: matches TR/AB/3-43.7-3/AB %% 3066 ["TIM009.A" ]: matches TR/AB/3-43.7-3/AB %% 3067 ["TIM010.A" ]: matches TR/AB/3-43.7-3/AB %% 3068 ["TIM011" ]: matches LPS0064 %% 3069 ["TIM012" ]: matches LPS0064 %% 3070 ["TIM013" ]: matches LPS0064 %% 3071 ["TIM015.A" ]: matches TR/AB/3-43.7-3/AB %% 3072 ["TIM016.A" ]: matches TR/AB/3-43.7-3/AB %% 3073 ["TIM017.A" ]: matches TR/AB/3-43.7-3/AB %% 3074 ["TIM018.A" ]: matches TR/AB/3-43.7-3/AB %% 3075 ["TIM020" ]: matches LPS0064 %% 3076 ["TIM021" ]: matches LPS0064 %% 3077 ["TIM022.A" ]: matches TR/AB/3-43.7-3/AB %% 3078 ["TIM023" ]: matches LPS0064 %% 3079 ["TIM024" ]: matches LPS0064 %% 3080 ["TIM026" ]: matches LPS0064 %% 3081 ["TIM027" ]: matches LPS0064 %% 3082 ["TM X-73904" ]: matches TR/AB/3-43.7-3/AB %% 3083 ["TM-12231" ]: matches TR-2189 %% 3084 ["TM-385" ]: matches TR-2189 %% 3085 ["TM-73203" ]: matches TR-2189 %% 3086 ["TM-78665" ]: matches TR-2189 %% 3087 ["TM-78733" ]: matches TR-2189 %% 3088 ["TM-78816" ]: matches TR-2189 %% 3089 ["TM-81-11271-9" ]: matches TR/AB/3-43.7-3/AB %% 3090 ["TM-85710" ]: matches TR-2189 %% 3091 ["TM-85945" ]: matches TR-2189 %% 3092 ["TM-85965" ]: matches TR-2189 %% 3093 ["TM-90-04" ]: matches ANL-30-74 %% 3094 ["TM/OA/79-13" ]: matches TR/AB/3-43.7-3/AB %% 3095 ["TMC-148, PL87-7" ]: matches TR/AB/3-43.7-3/AB %% 3096 ["TMC-184" ]: matches TR-2189 %% 3097 ["TN D-7653" ]: matches TR/AB/3-43.7-3/AB %% 3098 ["TN D-8372" ]: matches TR/AB/3-43.7-3/AB %% 3099 ["TN D-8430, D-8431" ]: matches TR/AB/3-43.7-3/AB %% 3100 ["TN--87--32" ]: matches TR/AB/3-43.7-3/AB %% 3101 ["TN-109" ]: matches TR-2189 %% 3102 ["TN-K/27-70" ]: matches TR/AB/3-43.7-3/AB %% 3103 ["TN-K\slash 27-70" ]: matches TN-K\slash 27-70 %% 3104 ["TN309" ]: matches LPS0064 %% 3105 ["TNN--94" ]: matches TR/AB/3-43.7-3/AB %% 3106 ["TNN-1" ]: matches TR-2189 %% 3107 ["TNN-105" ]: matches TR-2189 %% 3108 ["TNN-12" ]: matches TR-2189 %% 3109 ["TNN-14" ]: matches TR-2189 %% 3110 ["TNN-2" ]: matches TR-2189 %% 3111 ["TNN-20" ]: matches TR-2189 %% 3112 ["TNN-21" ]: matches TR-2189 %% 3113 ["TNN-3" ]: matches TR-2189 %% 3114 ["TNN-30" ]: matches TR-2189 %% 3115 ["TNN-39" ]: matches TR-2189 %% 3116 ["TNN-4" ]: matches TR-2189 %% 3117 ["TNN-46" ]: matches TR-2189 %% 3118 ["TNN-5" ]: matches TR-2189 %% 3119 ["TNN-9" ]: matches TR-2189 %% 3120 ["TNN-94" ]: matches TR-2189 %% 3121 ["TNN-96" ]: matches TR-2189 %% 3122 ["TR 1026" ]: matches XNSS 288811 %% 3123 ["TR 1086" ]: matches XNSS 288811 %% 3124 ["TR 1098" ]: matches XNSS 288811 %% 3125 ["TR 1099" ]: matches XNSS 288811 %% 3126 ["TR 1137" ]: matches XNSS 288811 %% 3127 ["TR 394" ]: matches XNSS 288811 %% 3128 ["TR 479" ]: matches XNSS 288811 %% 3129 ["TR 69-31" ]: matches TR/AB/3-43.7-3/AB %% 3130 ["TR 7" ]: matches XNSS 288811 %% 3131 ["TR 75.91.20" ]: matches TR/AB/3-43.7-3/AB %% 3132 ["TR 78-352" ]: matches TR/AB/3-43.7-3/AB %% 3133 ["TR 78-354" ]: matches TR/AB/3-43.7-3/AB %% 3134 ["TR 79-4" ]: matches TR/AB/3-43.7-3/AB %% 3135 ["TR 80-423" ]: matches TR/AB/3-43.7-3/AB %% 3136 ["TR 80-430" ]: matches TR/AB/3-43.7-3/AB %% 3137 ["TR 80-431" ]: matches TR/AB/3-43.7-3/AB %% 3138 ["TR 81-454" ]: matches TR/AB/3-43.7-3/AB %% 3139 ["TR 82-521" ]: matches TR/AB/3-43.7-3/AB %% 3140 ["TR 83-554" ]: matches TR/AB/3-43.7-3/AB %% 3141 ["TR 83-565" ]: matches TR/AB/3-43.7-3/AB %% 3142 ["TR 836" ]: matches XNSS 288811 %% 3143 ["TR 84-603" ]: matches TR/AB/3-43.7-3/AB %% 3144 ["TR 85-664" ]: matches TR/AB/3-43.7-3/AB %% 3145 ["TR 85-675" ]: matches TR/AB/3-43.7-3/AB %% 3146 ["TR 86-789" ]: matches TR/AB/3-43.7-3/AB %% 3147 ["TR 86.3" ]: matches Version 3.20 %% 3148 ["TR 869" ]: matches XNSS 288811 %% 3149 ["TR 87-803" ]: matches TR/AB/3-43.7-3/AB %% 3150 ["TR 87-812" ]: matches TR/AB/3-43.7-3/AB %% 3151 ["TR 88-30" ]: matches TR/AB/3-43.7-3/AB %% 3152 ["TR 89-10" ]: matches TR/AB/3-43.7-3/AB %% 3153 ["TR 89-21" ]: matches TR/AB/3-43.7-3/AB %% 3154 ["TR 89-9" ]: matches TR/AB/3-43.7-3/AB %% 3155 ["TR 90-1" ]: matches TR/AB/3-43.7-3/AB %% 3156 ["TR 90-29" ]: matches TR/AB/3-43.7-3/AB %% 3157 ["TR 90-34" ]: matches TR/AB/3-43.7-3/AB %% 3158 ["TR 90-43" ]: matches TR/AB/3-43.7-3/AB %% 3159 ["TR 90-60r1" ]: matches TR/AB/3-43.7-3/AB %% 3160 ["TR 90.40" ]: matches Version 3.20 %% 3161 ["TR 916" ]: matches XNSS 288811 %% 3162 ["TR 92-1280" ]: matches TR/AB/3-43.7-3/AB %% 3163 ["TR 92-1291" ]: matches TR/AB/3-43.7-3/AB %% 3164 ["TR 92-23" ]: matches TR/AB/3-43.7-3/AB %% 3165 ["TR 92-47" ]: matches TR/AB/3-43.7-3/AB %% 3166 ["TR 92.12" ]: matches Version 3.20 %% 3167 ["TR 92.13" ]: matches Version 3.20 %% 3168 ["TR 921" ]: matches XNSS 288811 %% 3169 ["TR 93-1371" ]: matches TR/AB/3-43.7-3/AB %% 3170 ["TR 93-2" ]: matches TR/AB/3-43.7-3/AB %% 3171 ["TR 930" ]: matches XNSS 288811 %% 3172 ["TR 96-740" ]: matches TR/AB/3-43.7-3/AB %% 3173 ["TR 965" ]: matches XNSS 288811 %% 3174 ["TR 996" ]: matches XNSS 288811 %% 3175 ["TR 997" ]: matches XNSS 288811 %% 3176 ["TR AM-87-11" ]: matches TR/AB/3-43.7-3/AB %% 3177 ["TR CSc-84-15" ]: matches TR/AB/3-43.7-3/AB %% 3178 ["TR STAN-CS-76-556" ]: matches TR/AB/3-43.7-3/AB %% 3179 ["TR--87--13" ]: matches TR/AB/3-43.7-3/AB %% 3180 ["TR--89--01" ]: matches TR/AB/3-43.7-3/AB %% 3181 ["TR--91--15" ]: matches TR/AB/3-43.7-3/AB %% 3182 ["TR--91--22" ]: matches TR/AB/3-43.7-3/AB %% 3183 ["TR--91--26" ]: matches TR/AB/3-43.7-3/AB %% 3184 ["TR-1648" ]: matches TR-2189 %% 3185 ["TR-1859, UMIACS-TR-87-20"]: matches TR/AB/3-43.7-3/AB %% 3186 ["TR-2101" ]: matches TR-2189 %% 3187 ["TR-219" ]: matches TR-2189 %% 3188 ["TR-22-78" ]: matches ANL-30-74 %% 3189 ["TR-2339" ]: matches TR-2189 %% 3190 ["TR-24 (Revised \# TR-24R)"]: matches TR/AB/3-43.7-3/AB %% 3191 ["TR-2714" ]: matches TR-2189 %% 3192 ["TR-3" ]: matches TR-2189 %% 3193 ["TR-3064" ]: matches TR-2189 %% 3194 ["TR-31" ]: matches TR-2189 %% 3195 ["TR-31-81" ]: matches ANL-30-74 %% 3196 ["TR-3133" ]: matches TR-2189 %% 3197 ["TR-3145" ]: matches TR-2189 %% 3198 ["TR-3238" ]: matches TR-2189 %% 3199 ["TR-3263" ]: matches TR-2189 %% 3200 ["TR-328" ]: matches TR-2189 %% 3201 ["TR-3306" ]: matches TR-2189 %% 3202 ["TR-3307" ]: matches TR-2189 %% 3203 ["TR-3345" ]: matches TR-2189 %% 3204 ["TR-408" ]: matches TR-2189 %% 3205 ["TR-456" ]: matches TR-2189 %% 3206 ["TR-458" ]: matches TR-2189 %% 3207 ["TR-571" ]: matches TR-2189 %% 3208 ["TR-683" ]: matches TR-2189 %% 3209 ["TR-696" ]: matches TR-2189 %% 3210 ["TR-7" ]: matches TR-2189 %% 3211 ["TR-708" ]: matches TR-2189 %% 3212 ["TR-77-2" ]: matches ANL-30-74 %% 3213 ["TR-82-522" ]: matches ANL-30-74 %% 3214 ["TR-85.2" ]: matches TR/AB/3-43.7-3/AB %% 3215 ["TR-85.3" ]: matches TR/AB/3-43.7-3/AB %% 3216 ["TR-87.2" ]: matches TR/AB/3-43.7-3/AB %% 3217 ["TR-88" ]: matches TR-2189 %% 3218 ["TR-88-53" ]: matches ANL-30-74 %% 3219 ["TR-89-9" ]: matches ANL-30-74 %% 3220 ["TR-9" ]: matches TR-2189 %% 3221 ["TR-91-023" ]: matches ANL-30-74 %% 3222 ["TR-91-042" ]: matches ANL-30-74 %% 3223 ["TR-91-35" ]: matches ANL-30-74 %% 3224 ["TR-93-040" ]: matches ANL-30-74 %% 3225 ["TR-94-017" ]: matches ANL-30-74 %% 3226 ["TR-CS-82-10" ]: matches UMIAC-TR-89-11 %% 3227 ["TR-CS-82-11" ]: matches UMIAC-TR-89-11 %% 3228 ["TR-CS-92-17" ]: matches UMIAC-TR-89-11 %% 3229 ["TR. UTUDCDS-??" ]: matches TR/AB/3-43.7-3/AB %% 3230 ["TR.CSG 8" ]: matches TR/AB/3-43.7-3/AB %% 3231 ["TR/PA/91/63" ]: matches TR/AB/3-43.7-3/AB %% 3232 ["TR/PA/92/70" ]: matches TR/AB/3-43.7-3/AB %% 3233 ["TR/PA/92/85" ]: matches TR/AB/3-43.7-3/AB %% 3234 ["TR/PA/93/05" ]: matches TR/AB/3-43.7-3/AB %% 3235 ["TR/PA/93/10" ]: matches TR/AB/3-43.7-3/AB %% 3236 ["TR/PA/93/26" ]: matches TR/AB/3-43.7-3/AB %% 3237 ["TR/PA/93/27" ]: matches TR/AB/3-43.7-3/AB %% 3238 ["TR/PA/94/09" ]: matches TR/AB/3-43.7-3/AB %% 3239 ["TR/PA/95/02" ]: matches TR/AB/3-43.7-3/AB %% 3240 ["TR/PA/95/05" ]: matches TR/AB/3-43.7-3/AB %% 3241 ["TR04/92" ]: matches TR/AB/3-43.7-3/AB %% 3242 ["TR04/93" ]: matches TR/AB/3-43.7-3/AB %% 3243 ["TR1/92" ]: matches TR/AB/3-43.7-3/AB %% 3244 ["TR1/94 ATR/7 (NP2680)" ]: matches TR/AB/3-43.7-3/AB %% 3245 ["TR11/88" ]: matches TR/AB/3-43.7-3/AB %% 3246 ["TR1143" ]: matches LPS0064 %% 3247 ["TR19/93" ]: matches TR/AB/3-43.7-3/AB %% 3248 ["TR2/92" ]: matches TR/AB/3-43.7-3/AB %% 3249 ["TR2/93 (ATR/6) (NP2556)"]: matches TR/AB/3-43.7-3/AB %% 3250 ["TR26-92" ]: matches SP43-29 %% 3251 ["TR3/92 (ATR/1) (NP2490)"]: matches TR/AB/3-43.7-3/AB %% 3252 ["TR32/89" ]: matches TR/AB/3-43.7-3/AB %% 3253 ["TR4/92 (ATR/2) (NP2491)"]: matches TR/AB/3-43.7-3/AB %% 3254 ["TR5/92 (ATR/3) (NP2492)"]: matches TR/AB/3-43.7-3/AB %% 3255 ["TR6/90" ]: matches TR/AB/3-43.7-3/AB %% 3256 ["TR6/92 (ATR/4) (NP2493)"]: matches TR/AB/3-43.7-3/AB %% 3257 ["TR7/92 (ATR/5) (NP2522)"]: matches TR/AB/3-43.7-3/AB %% 3258 ["TR77-5" ]: matches SP43-29 %% 3259 ["TR8/90" ]: matches TR/AB/3-43.7-3/AB %% 3260 ["TR839" ]: matches LPS0064 %% 3261 ["TR84-1" ]: matches SP43-29 %% 3262 ["TR86-38" ]: matches SP43-29 %% 3263 ["TR86-7" ]: matches SP43-29 %% 3264 ["TR89/10" ]: matches TR/AB/3-43.7-3/AB %% 3265 ["TR90-54" ]: matches SP43-29 %% 3266 ["TR91/7" ]: matches TR/AB/3-43.7-3/AB %% 3267 ["TR91121" ]: matches LPS0064 %% 3268 ["TR92-17" ]: matches SP43-29 %% 3269 ["TR92-9" ]: matches SP43-29 %% 3270 ["TR93-01" ]: matches SP43-29 %% 3271 ["TR93-08" ]: matches SP43-29 %% 3272 ["TR93-09" ]: matches SP43-29 %% 3273 ["TR93-10" ]: matches SP43-29 %% 3274 ["TR93-45" ]: matches SP43-29 %% 3275 ["TR94--34" ]: matches TR/AB/3-43.7-3/AB %% 3276 ["TR94-13" ]: matches SP43-29 %% 3277 ["TRCS 91-15" ]: matches TR/AB/3-43.7-3/AB %% 3278 ["TRCS85-09" ]: matches SP43-29 %% 3279 ["TRCS88-27" ]: matches SP43-29 %% 3280 ["TRI-PP-83-95" ]: matches UMIAC-TR-89-11 %% 3281 ["TRITA-MEK-76-02" ]: matches UMIAC-TR-89-11 %% 3282 ["TRITA-MEK-76-03" ]: matches UMIAC-TR-89-11 %% 3283 ["TRITA-NA-8311" ]: matches CS-TR-2189 %% 3284 ["TRR-514" ]: matches TR-2189 %% 3285 ["TR~87--7" ]: matches TR/AB/3-43.7-3/AB %% 3286 ["TR~90--06" ]: matches TR/AB/3-43.7-3/AB %% 3287 ["TR~90--16R1" ]: matches TR/AB/3-43.7-3/AB %% 3288 ["TR~90--40" ]: matches TR/AB/3-43.7-3/AB %% 3289 ["TR~90--6" ]: matches TR/AB/3-43.7-3/AB %% 3290 ["TR~90--9" ]: matches TR/AB/3-43.7-3/AB %% 3291 ["TR~91--10" ]: matches TR/AB/3-43.7-3/AB %% 3292 ["TUM-I9120" ]: matches TR/AB/3-43.7-3/AB %% 3293 ["TUM-ISU-7830" ]: matches CS-TR-2189 %% 3294 ["Technical report ITPR-95022"]: matches TR/AB/3-43.7-3/AB %% 3295 ["Technion-PH-76-25" ]: matches UMIAC-TR-89-11 %% 3296 ["Technion-PH-77-36" ]: matches UMIAC-TR-89-11 %% 3297 ["UBLCS" ]: matches Computer Science Report 100 %% 3298 ["UBLCS-6" ]: matches TR-2189 %% 3299 ["UBLCS-7" ]: matches TR-2189 %% 3300 ["UBLCS-94-14" ]: matches ANL-30-74 %% 3301 ["UBLCS-94-5" ]: matches ANL-30-74 %% 3302 ["UCB/CSD 88/469" ]: matches TR/AB/3-43.7-3/AB %% 3303 ["UCB/CSD 94/802 4004667978"]: matches TR/AB/3-43.7-3/AB %% 3304 ["UCB/CSD 94/805" ]: matches TR/AB/3-43.7-3/AB %% 3305 ["UCB/CSD 95-870" ]: matches TR/AB/3-43.7-3/AB %% 3306 ["UCB/CSD-92-703" ]: matches TR/AB/3-43.7-3/AB %% 3307 ["UCB/CSD-94-793" ]: matches TR/AB/3-43.7-3/AB %% 3308 ["UCB/CSD-94-???" ]: matches TR/AB/3-43.7-3/AB %% 3309 ["UCB/ERL 84/5" ]: matches TR/AB/3-43.7-3/AB %% 3310 ["UCB/ERL M77/21" ]: matches TR/AB/3-43.7-3/AB %% 3311 ["UCB/ERL~M85/61" ]: matches TR/AB/3-43.7-3/AB %% 3312 ["UCID-17515" ]: matches TR-2189 %% 3313 ["UCID-18549" ]: matches TR-2189 %% 3314 ["UCID-18619" ]: matches TR-2189 %% 3315 ["UCID-20167" ]: matches TR-2189 %% 3316 ["UCID-21482" ]: matches TR-2189 %% 3317 ["UCID-30175" ]: matches TR-2189 %% 3318 ["UCLA/84/TEP/19" ]: matches TR/AB/3-43.7-3/AB %% 3319 ["UCP-19" ]: matches TR-2189 %% 3320 ["UCP-32" ]: matches TR-2189 %% 3321 ["UCP-33" ]: matches TR-2189 %% 3322 ["UCRL 85752" ]: matches XNSS 288811 %% 3323 ["UCRL 89913. CONF-831247--1"]: matches TR/AB/3-43.7-3/AB %% 3324 ["UCRL-500021-81" ]: matches ANL-30-74 %% 3325 ["UCRL-51186, Rev. 1" ]: matches TR/AB/3-43.7-3/AB %% 3326 ["UCRL-53401" ]: matches TR-2189 %% 3327 ["UCRL-76993, Rev. 1" ]: matches TR/AB/3-43.7-3/AB %% 3328 ["UCRL-78652" ]: matches TR-2189 %% 3329 ["UCRL-88710" ]: matches TR-2189 %% 3330 ["UCRL-91734" ]: matches TR-2189 %% 3331 ["UCRL-92077-II" ]: matches TR/AB/3-43.7-3/AB %% 3332 ["UCRL-93792" ]: matches TR-2189 %% 3333 ["UCRL-94464" ]: matches TR-2189 %% 3334 ["UCRL-95055" ]: matches TR-2189 %% 3335 ["UCRL-95278" ]: matches TR-2189 %% 3336 ["UCRL-95669" ]: matches TR-2189 %% 3337 ["UCRL-96034" ]: matches TR-2189 %% 3338 ["UCRL-97580" ]: matches TR-2189 %% 3339 ["UCRL-98508" ]: matches TR-2189 %% 3340 ["UIB-11" ]: matches TR-2189 %% 3341 ["UILU-ENG-85-1727" ]: matches UMIAC-TR-89-11 %% 3342 ["UIUCDCS-R-71-488" ]: matches UMIAC-TR-89-11 %% 3343 ["UIUCDCS-R-72-493" ]: matches UMIAC-TR-89-11 %% 3344 ["UIUCDCS-R-76-787" ]: matches UMIAC-TR-89-11 %% 3345 ["UIUCDCS-R-77, 883" ]: matches TR/AB/3-43.7-3/AB %% 3346 ["UIUCDCS-R-85-1129" ]: matches UMIAC-TR-89-11 %% 3347 ["UIUCDCS-R-85-1201" ]: matches UMIAC-TR-89-11 %% 3348 ["UIUCDCS-R-85-1203" ]: matches UMIAC-TR-89-11 %% 3349 ["UIUCDCS-R-86-1229" ]: matches UMIAC-TR-89-11 %% 3350 ["UMCS-90-9-1" ]: matches TR/AB/3-43.7-3/AB %% 3351 ["UMCS-93-7-1" ]: matches TR/AB/3-43.7-3/AB %% 3352 ["UMIACS-TR-89-11, CS-TR-2189, SRC-TR-89-13"]: matches TR/AB/3-43.7-3/AB %% 3353 ["UMINF 125.85" ]: matches Version 3.20 %% 3354 ["UMINF 92.11" ]: matches Version 3.20 %% 3355 ["UMINF 93.23" ]: matches Version 3.20 %% 3356 ["UMINF 94.03" ]: matches Version 3.20 %% 3357 ["UMINF 94.04" ]: matches Version 3.20 %% 3358 ["UMINF-132.86" ]: matches TR/AB/3-43.7-3/AB %% 3359 ["UMINF-136.87" ]: matches TR/AB/3-43.7-3/AB %% 3360 ["UMINF-154.88" ]: matches TR/AB/3-43.7-3/AB %% 3361 ["UMINF-155.88" ]: matches TR/AB/3-43.7-3/AB %% 3362 ["UMINF-58.77" ]: matches TR/AB/3-43.7-3/AB %% 3363 ["UMINF-91.29" ]: matches TR/AB/3-43.7-3/AB %% 3364 ["UMSI 86145" ]: matches XNSS 288811 %% 3365 ["UMSI 93-234" ]: matches TR/AB/3-43.7-3/AB %% 3366 ["UMSI 94-101" ]: matches TR/AB/3-43.7-3/AB %% 3367 ["UMSI 94-29" ]: matches TR/AB/3-43.7-3/AB %% 3368 ["UMSI 94-90" ]: matches TR/AB/3-43.7-3/AB %% 3369 ["UMSI-93/131" ]: matches TR/AB/3-43.7-3/AB %% 3370 ["UNIC-92-03" ]: matches ANL-30-74 %% 3371 ["UNIC-93-09" ]: matches ANL-30-74 %% 3372 ["UNIGRAZ-UTP 08/79" ]: matches TR/AB/3-43.7-3/AB %% 3373 ["URI-037" ]: matches TR-2189 %% 3374 ["URI-044" ]: matches TR-2189 %% 3375 ["USAS X3.9-1966" ]: matches TR/AB/3-43.7-3/AB %% 3376 ["USCG Op. Note No. 40" ]: matches TR/AB/3-43.7-3/AB %% 3377 ["USERDA/EY-76-S-02-2895*000/Tr/76/6"]: matches TR/AB/3-43.7-3/AB %% 3378 ["USGS-GD-73-030" ]: matches UMIAC-TR-89-11 %% 3379 ["USI-28" ]: matches TR-2189 %% 3380 ["USI-31" ]: matches TR-2189 %% 3381 ["USI-44" ]: matches TR-2189 %% 3382 ["USI-7" ]: matches TR-2189 %% 3383 ["USNRDL-TR-67-7, AD649288"]: matches TR/AB/3-43.7-3/AB %% 3384 ["UUCS-79-108" ]: matches ANL-30-74 %% 3385 ["UUCS-91-017" ]: matches ANL-30-74 %% 3386 ["UUICDCS-R-89-1539 and UILU-ENG-89-1758"]: matches TR/AB/3-43.7-3/AB %% 3387 ["UWE and CE-92-02" ]: matches TR/AB/3-43.7-3/AB %% 3388 ["UWFDM-658" ]: matches TR-2189 %% 3389 ["V" ]: matches Computer Science Report 100 %% 3390 ["VLSI-82-22" ]: matches ANL-30-74 %% 3391 ["Version 1.1" ]: matches Version 3.20 %% 3392 ["Version 3.20" ]: matches Version 3.20 %% 3393 ["WCAP-8261 Revision 1" ]: matches TR/AB/3-43.7-3/AB %% 3394 ["WSDG-AD-00002" ]: matches CS-TR-2189 %% 3395 ["WSU-CS-77-02" ]: matches UMIAC-TR-89-11 %% 3396 ["WSU-CS-90-01" ]: matches UMIAC-TR-89-11 %% 3397 ["WSU-CS-90-08" ]: matches UMIAC-TR-89-11 %% 3398 ["WSU-CS-90-10" ]: matches UMIAC-TR-89-11 %% 3399 ["WSU-CS-91-02" ]: matches UMIAC-TR-89-11 %% 3400 ["WUCS91-08" ]: matches SP43-29 %% 3401 ["Working Paper 851" ]: matches Computer Science Report 100 %% 3402 ["X-1707" ]: matches TR-2189 %% 3403 ["X-3286" ]: matches TR-2189 %% 3404 ["X-62282" ]: matches TR-2189 %% 3405 ["X-70477" ]: matches TR-2189 %% 3406 ["XNSS 288811" ]: matches XNSS 288811 %% 3407 ["YALEU DCS RR-339" ]: matches TR/AB/3-43.7-3/AB %% 3408 ["YALEU DCS RR-389" ]: matches TR/AB/3-43.7-3/AB %% 3409 ["YALEU DCS RR-428" ]: matches TR/AB/3-43.7-3/AB %% 3410 ["YALEU DCS RR-532" ]: matches TR/AB/3-43.7-3/AB %% 3411 ["YALEU DCS RR-569" ]: matches TR/AB/3-43.7-3/AB %% 3412 ["YALEU/ DCS/ RR- Draft" ]: matches TR/AB/3-43.7-3/AB %% 3413 ["YALEU/ DCS/ RR-463" ]: matches TR/AB/3-43.7-3/AB %% 3414 ["YALEU/DCS/RR-276" ]: matches TR/AB/3-43.7-3/AB %% 3415 ["YALEU/DCS/RR-292" ]: matches TR/AB/3-43.7-3/AB %% 3416 ["YALEU/DCS/RR-299" ]: matches TR/AB/3-43.7-3/AB %% 3417 ["YALEU/DCS/RR-339" ]: matches TR/AB/3-43.7-3/AB %% 3418 ["YALEU/DCS/RR-347" ]: matches TR/AB/3-43.7-3/AB %% 3419 ["YALEU/DCS/RR-363" ]: matches TR/AB/3-43.7-3/AB %% 3420 ["YALEU/DCS/RR-367" ]: matches TR/AB/3-43.7-3/AB %% 3421 ["YALEU/DCS/RR-368" ]: matches TR/AB/3-43.7-3/AB %% 3422 ["YALEU/DCS/RR-373" ]: matches TR/AB/3-43.7-3/AB %% 3423 ["YALEU/DCS/RR-381" ]: matches TR/AB/3-43.7-3/AB %% 3424 ["YALEU/DCS/RR-389" ]: matches TR/AB/3-43.7-3/AB %% 3425 ["YALEU/DCS/RR-397" ]: matches TR/AB/3-43.7-3/AB %% 3426 ["YALEU/DCS/RR-428" ]: matches TR/AB/3-43.7-3/AB %% 3427 ["YALEU/DCS/RR-443" ]: matches TR/AB/3-43.7-3/AB %% 3428 ["YALEU/DCS/RR-444" ]: matches TR/AB/3-43.7-3/AB %% 3429 ["YALEU/DCS/RR-458" ]: matches TR/AB/3-43.7-3/AB %% 3430 ["YALEU/DCS/RR-461" ]: matches TR/AB/3-43.7-3/AB %% 3431 ["YALEU/DCS/RR-462" ]: matches TR/AB/3-43.7-3/AB %% 3432 ["YALEU/DCS/RR-537" ]: matches TR/AB/3-43.7-3/AB %% 3433 ["YALEU/DCS/RR-539" ]: matches TR/AB/3-43.7-3/AB %% 3434 ["YALEU/DCS/RR-540" ]: matches TR/AB/3-43.7-3/AB %% 3435 ["YALEU/DCS/RR-542" ]: matches TR/AB/3-43.7-3/AB %% 3436 ["YALEU/DCS/RR-543" ]: matches TR/AB/3-43.7-3/AB %% 3437 ["YALEU/DCS/RR-544" ]: matches TR/AB/3-43.7-3/AB %% 3438 ["YALEU/DCS/RR-548" ]: matches TR/AB/3-43.7-3/AB %% 3439 ["YALEU/DCS/RR-552" ]: matches TR/AB/3-43.7-3/AB %% 3440 ["YALEU/DCS/RR-553" ]: matches TR/AB/3-43.7-3/AB %% 3441 ["YALEU/DCS/RR-554" ]: matches TR/AB/3-43.7-3/AB %% 3442 ["YALEU/DCS/RR-570" ]: matches TR/AB/3-43.7-3/AB %% 3443 ["YALEU/DCS/RR-594" ]: matches TR/AB/3-43.7-3/AB %% 3444 ["YALEU/DCS/RR-726" ]: matches TR/AB/3-43.7-3/AB %% 3445 ["YALEU/DCS/RR-880" ]: matches TR/AB/3-43.7-3/AB %% 3446 ["YALEU/DCS/RR-934" ]: matches TR/AB/3-43.7-3/AB %% 3447 ["YALEU/DCS/RR-942" ]: matches TR/AB/3-43.7-3/AB %% 3448 ["YALEU/DCS/TR-532" ]: matches TR/AB/3-43.7-3/AB %% 3449 ["\# 1030" ]: matches 23 %% 3450 ["\# 947" ]: matches 23 %% 3451 ["\# 963" ]: matches 23 %% 3452 ["\#167-O-310789" ]: matches TR/AB/3-43.7-3/AB %% 3453 ["\#180-O-170591" ]: matches TR/AB/3-43.7-3/AB %% 3454 ["\#191-O-191291" ]: matches TR/AB/3-43.7-3/AB %% 3455 ["\#20" ]: matches 23 %% 3456 ["\#26" ]: matches 23 %% 3457 ["\#59" ]: matches 23 %% 3458 ["\#961" ]: matches 23 %% 3459 ["\#985" ]: matches 23 %% 3460 ["liens-94-18" ]: matches ANL-30-74 %% 3461 ["pt.1" ]: matches TR/AB/3-43.7-3/AB %% 3462 ["pt.A" ]: matches TR/AB/3-43.7-3/AB %% 3463 ["special issue" ]: matches Computer Science Report 100 %% 3464 ["suppl. 2" ]: matches TR/AB/3-43.7-3/AB %% 3465 ["suppl. issue" ]: matches TR/AB/3-43.7-3/AB %% 3466 ["vol 12 pp 7.1-7.19" ]: matches TR/AB/3-43.7-3/AB %% 3467 ["vol. 7" ]: matches TR/AB/3-43.7-3/AB %% 3468 ["vyp. 90" ]: matches TR/AB/3-43.7-3/AB ?? 3469 ["{/DCS/RR-409}" ]: illegal value ?? 3470 ["{/DCS/RR-414}" ]: illegal value ?? 3471 ["{/DCS/RR-534}" ]: illegal value %% 3472 ["{AM}--87--13" ]: matches TR/AB/3-43.7-3/AB %% 3473 ["{AM}--88--09" ]: matches TR/AB/3-43.7-3/AB %% 3474 ["{CS}980" ]: matches LPS0064 %% 3475 ["{ICE-VS}06" ]: matches TR/AB/3-43.7-3/AB %% 3476 ["{NRL} Report 8179" ]: matches Computer Science Report 100 %% 3477 ["{SACLANTCEN} {CP}-19" ]: matches TR/AB/3-43.7-3/AB %% 3478 ["{SACLANTCEN} {SM}-72" ]: matches TR/AB/3-43.7-3/AB %% 3479 ["{STAN-CS-79-714}" ]: matches UMIAC-TR-89-11 %% 3480 ["{STAN-CS-88-1223}" ]: matches UMIAC-TR-89-11 %% 3481 ["{STAN-CS-89-1256}" ]: matches UMIAC-TR-89-11 %% 3482 ["{TR SRI-CSL-91-05}" ]: matches TR/AB/3-43.7-3/AB %% 3483 ["{TR90-141}" ]: matches SP43-29 %% 3484 [ ]: ignored %% 3485 [ ]: ignored %% 3486 ["1--26" ]: matches 23--27 ?? 3487 ["1--27 (or 3--28??)" ]: illegal value ?? 3488 ["1--28 (or 1--18??)" ]: illegal value ?? 3489 ["1--??" ]: illegal value ?? 3490 ["1-70" ]: illegal value ?? 3491 ["1.0--3.0" ]: illegal value ?? 3492 ["1.1--1.27" ]: illegal value ?? 3493 ["1.2/1--8" ]: illegal value ?? 3494 ["1.3/1--6" ]: illegal value ?? 3495 ["1.4/1--7" ]: illegal value ?? 3496 ["1.42--1.54" ]: illegal value ?? 3497 ["1.5/1--3" ]: illegal value ?? 3498 ["1/1--1/5" ]: illegal value ?? 3499 ["10 + 622" ]: illegal value ?? 3500 ["10 + [16]" ]: illegal value ?? 3501 ["10 + [2]" ]: illegal value ?? 3502 ["10 + [9]" ]: illegal value ?? 3503 ["10 -- 11" ]: illegal value ?? 3504 ["10 -- 15" ]: illegal value ?? 3505 ["10 computer disks guide + 2 templates."]: illegal value ?? 3506 ["10 videocassettes (ca. 253 min.), guide (vii + 104)"]: illegal value %% 3507 ["10, 11, 19" ]: matches 23, 27, 45 %% 3508 ["10, 12" ]: matches 23, 27 ?? 3509 ["10,560--10,574" ]: illegal value ?? 3510 ["10--??" ]: illegal value ?? 3511 ["10.1--10.29" ]: illegal value ?? 3512 ["10/1--2" ]: illegal value ?? 3513 ["10/1--25" ]: illegal value ?? 3514 ["100 -- 104" ]: illegal value ?? 3515 ["100--122 (of vi + 335)"]: illegal value ?? 3516 ["100--??" ]: illegal value ?? 3517 ["1001--??" ]: illegal value ?? 3518 ["1003--??" ]: illegal value ?? 3519 ["101 + [43]" ]: illegal value ?? 3520 ["101 -- 110" ]: illegal value ?? 3521 ["101--113 (or 51--60??)"]: illegal value ?? 3522 ["103 -- 123" ]: illegal value %% 3523 ["103, 117" ]: matches 23, 27 ?? 3524 ["104 -- 126" ]: illegal value ?? 3525 ["104 -- 133" ]: illegal value ?? 3526 ["104--116 (of xii + 199)"]: illegal value ?? 3527 ["105--127 (of x + 552)" ]: illegal value ?? 3528 ["1059 -- 1072" ]: illegal value %% 3529 ["106--108" ]: matches 23--27 ?? 3530 ["1065--1067 (vol. 2)" ]: illegal value ?? 3531 ["107." ]: illegal value ?? 3532 ["1075--1095 vol.2" ]: illegal value ?? 3533 ["108 -- 111" ]: illegal value ?? 3534 ["108 -- 128" ]: illegal value %% 3535 ["108--110, 112--115" ]: matches 23--27, 29--32 ?? 3536 ["1091 -- 1103" ]: illegal value ?? 3537 ["1099 -- 1114" ]: illegal value ?? 3538 ["11 + 13" ]: illegal value ?? 3539 ["11 + [12]" ]: illegal value ?? 3540 ["11 + [3]" ]: illegal value ?? 3541 ["11 + [5]" ]: illegal value ?? 3542 ["11 + [6]" ]: illegal value ?? 3543 ["11 -- 59" ]: illegal value %% 3544 ["11--14, 109--112" ]: matches 23--27, 29--32 ?? 3545 ["11.1--11.27" ]: illegal value ?? 3546 ["11/1--11/4" ]: illegal value ?? 3547 ["11/1--3" ]: illegal value ?? 3548 ["11/1--8" ]: illegal value ?? 3549 ["110 + [4]" ]: illegal value ?? 3550 ["111 -- 113, 106" ]: illegal value ?? 3551 ["111--123, 131" ]: illegal value ?? 3552 ["1112 -- 1120" ]: illegal value ?? 3553 ["112 + I20" ]: illegal value ?? 3554 ["112--1--112--15" ]: illegal value ?? 3555 ["114 -- 144" ]: illegal value ?? 3556 ["1144 -- 1156" ]: illegal value ?? 3557 ["115 + 5 + 3" ]: illegal value ?? 3558 ["115 -- 133" ]: illegal value ?? 3559 ["115 -- 137" ]: illegal value ?? 3560 ["115--120, 122" ]: illegal value ?? 3561 ["1152 columns" ]: illegal value ?? 3562 ["118--120, 136" ]: illegal value ?? 3563 ["119--129, 132" ]: illegal value ?? 3564 ["119." ]: illegal value ?? 3565 ["1193--1198 (vol. 2)" ]: illegal value ?? 3566 ["11P" ]: illegal value ?? 3567 ["12 + [14]" ]: illegal value ?? 3568 ["12 + [6] + A--18" ]: illegal value ?? 3569 ["12 computer disks" ]: illegal value ?? 3570 ["12 program files + 1 text file (MS--DOS + IBM--PC)"]: illegal value ?? 3571 ["12+" ]: illegal value ?? 3572 ["12--18, 81" ]: illegal value ?? 3573 ["12.1--12.15" ]: illegal value ?? 3574 ["120 -- 131" ]: illegal value ?? 3575 ["121 -- 139" ]: illegal value ?? 3576 ["121--122, 124, 126--127, 130, 132"]: illegal value %% 3577 ["122, 101" ]: matches 23, 27 %% 3578 ["122, 98" ]: matches 23, 27 ?? 3579 ["122--123, 106" ]: illegal value ?? 3580 ["1227 -- 1240" ]: illegal value ?? 3581 ["123--124, 126, 128" ]: illegal value ?? 3582 ["123--131 (or 122--129??)"]: illegal value ?? 3583 ["1233--1236 (vol. 3)" ]: illegal value ?? 3584 ["1233--1236 vol.3" ]: illegal value ?? 3585 ["1247-" ]: illegal value ?? 3586 ["126 + [4]" ]: illegal value ?? 3587 ["127 -- 148" ]: illegal value ?? 3588 ["127--134 (of xiv + 517)"]: illegal value ?? 3589 ["127-130" ]: illegal value ?? 3590 ["1279 -- 1292" ]: illegal value ?? 3591 ["129--130, 132--134, 136"]: illegal value ?? 3592 ["129--135 (or 129--136??)"]: illegal value ?? 3593 ["129--138 (vol. 1)" ]: illegal value ?? 3594 ["13 + 36 + [2]" ]: illegal value ?? 3595 ["13 + A1--11 + B1--6 + C1--10 + D1--8 + E1--5"]: illegal value ?? 3596 ["13 + A13" ]: illegal value ?? 3597 ["13 computer disks guide + codeview and utilities"]: illegal value ?? 3598 ["13 computer disks guide."]: illegal value ?? 3599 ["13--14, 16" ]: illegal value ?? 3600 ["13." ]: illegal value ?? 3601 ["13.1--13.16" ]: illegal value ?? 3602 ["1306 -- 1309" ]: illegal value ?? 3603 ["131 + [1]" ]: illegal value ?? 3604 ["131--142 (of ix + 394)"]: illegal value ?? 3605 ["1311 -- 1328" ]: illegal value ?? 3606 ["1329 -- 1347" ]: illegal value ?? 3607 ["1332-1350" ]: illegal value ?? 3608 ["134 pp" ]: illegal value ?? 3609 ["1347 -- 1362" ]: illegal value ?? 3610 ["135 -- 148" ]: illegal value ?? 3611 ["136 + 5" ]: illegal value ?? 3612 ["136 -- 140" ]: illegal value ?? 3613 ["137 + [1]" ]: illegal value ?? 3614 ["137 +" ]: illegal value %% 3615 ["138, 119" ]: matches 23, 27 %% 3616 ["138, 121" ]: matches 23, 27 ?? 3617 ["138." ]: illegal value ?? 3618 ["139--148 (or 139--147??)"]: illegal value ?? 3619 ["139--161 (or 138--151??)"]: illegal value ?? 3620 ["14 + 12" ]: illegal value ?? 3621 ["14 + 2.5" ]: illegal value ?? 3622 ["14 + 573" ]: illegal value ?? 3623 ["14 + [13]" ]: illegal value ?? 3624 ["14 + [24]" ]: illegal value ?? 3625 ["14 + [3] (env. 918 p.)"]: illegal value ?? 3626 ["14 -- 17" ]: illegal value ?? 3627 ["14 program files (IBM PC) on 2 computer disks"]: illegal value ?? 3628 ["14, 82--85" ]: illegal value ?? 3629 ["14.1--14.15" ]: illegal value ?? 3630 ["14.1.1--14.1.4" ]: illegal value ?? 3631 ["14/1/1--6" ]: illegal value ?? 3632 ["14/3/1--8" ]: illegal value ?? 3633 ["14/4/1--6" ]: illegal value ?? 3634 ["14/5/1--8" ]: illegal value ?? 3635 ["140--152 (or 148--160??)"]: illegal value ?? 3636 ["141 -- 156" ]: illegal value ?? 3637 ["141--148 (of xix + 453)"]: illegal value ?? 3638 ["142 -- 169" ]: illegal value ?? 3639 ["143--154 (of ix + 394)"]: illegal value ?? 3640 ["144--148, 150, 152, 154, 156, 158, 160--161"]: illegal value ?? 3641 ["146 -- 160" ]: illegal value ?? 3642 ["147---156" ]: illegal value %% 3643 ["147--156, 157--168" ]: matches 23--27, 29--32 ?? 3644 ["148--154, 156, 158, 160, 162, 164"]: illegal value ?? 3645 ["149 -- 158" ]: illegal value ?? 3646 ["15 + 8" ]: illegal value ?? 3647 ["15 + [1]" ]: illegal value %% 3648 ["15--18, 22--23" ]: matches 23--27, 29--32 ?? 3649 ["15--21, 110" ]: illegal value ?? 3650 ["15.1--15.24" ]: illegal value ?? 3651 ["15.1/1--4" ]: illegal value ?? 3652 ["15.2/1--4" ]: illegal value ?? 3653 ["15/1/1--4" ]: illegal value ?? 3654 ["150 -- 165" ]: illegal value ?? 3655 ["150 l." ]: illegal value ?? 3656 ["1509--1514 vol.2" ]: illegal value ?? 3657 ["152 -- 179" ]: illegal value %% 3658 ["152--160, 300--301" ]: matches 23--27, 29--32 ?? 3659 ["152--164, 166" ]: illegal value ?? 3660 ["155 -- 189" ]: illegal value ?? 3661 ["155--156, 158" ]: illegal value ?? 3662 ["1550 -- 1560" ]: illegal value %% 3663 ["1587, with 31 illustrations"]: matches 239, with 27 illustrations ?? 3664 ["159 ff." ]: illegal value ?? 3665 ["16 + 10" ]: illegal value ?? 3666 ["16 + [8]" ]: illegal value ?? 3667 ["16--17, 44" ]: illegal value ?? 3668 ["16--18, 20, 22" ]: illegal value ?? 3669 ["16.1--16.22" ]: illegal value ?? 3670 ["16/1/1--3" ]: illegal value ?? 3671 ["16/2/1--7" ]: illegal value ?? 3672 ["16/3/1--3" ]: illegal value ?? 3673 ["16/5/1--10" ]: illegal value ?? 3674 ["160F--??" ]: illegal value ?? 3675 ["161 -- 184" ]: illegal value ?? 3676 ["162--172, 174" ]: illegal value ?? 3677 ["163 -- 170" ]: illegal value ?? 3678 ["1647-1652" ]: illegal value ?? 3679 ["165 -- 170" ]: illegal value %% 3680 ["165--170, 499--511" ]: matches 23--27, 29--32 ?? 3681 ["166 + 61" ]: illegal value ?? 3682 ["166 columns." ]: illegal value ?? 3683 ["166--1f" ]: illegal value %% 3684 ["168--173, 175--176, 178--181"]: matches 23--27, 29--32, 35--37 ?? 3685 ["169 -- 176" ]: illegal value ?? 3686 ["169-" ]: illegal value ?? 3687 ["17 -- 24" ]: illegal value ?? 3688 ["17 -- 41" ]: illegal value ?? 3689 ["17 v. in 1" ]: illegal value ?? 3690 ["17--25 (discussion 27--28)"]: illegal value ?? 3691 ["17." ]: illegal value ?? 3692 ["170--181 (of xi + 528)"]: illegal value ?? 3693 ["171 -- 179" ]: illegal value ?? 3694 ["171 -- 187" ]: illegal value ?? 3695 ["172 pages." ]: illegal value ?? 3696 ["172--173, 175" ]: illegal value ?? 3697 ["172--176, 178, 180--182, 184, 186--187, 192--197]: illegal value ?? 3698 ["173 + 11 + 3" ]: illegal value ?? 3699 ["173 -- 177" ]: illegal value %% 3700 ["173--174, 191--192" ]: matches 23--27, 29--32 ?? 3701 ["173--176 (vol. 1)" ]: illegal value %% 3702 ["174, 176" ]: matches 23, 27 ?? 3703 ["175--178 (Vol. 1)" ]: illegal value ?? 3704 ["175--208 (or 175--207??)"]: illegal value ?? 3705 ["176, 196--206" ]: illegal value ?? 3706 ["177 -- 184" ]: illegal value ?? 3707 ["177 -- 197" ]: illegal value ?? 3708 ["177 -- 209" ]: illegal value ?? 3709 ["177--184 (or 171--176??)"]: illegal value ?? 3710 ["1784--1791 vol.4" ]: illegal value ?? 3711 ["179 -- 200" ]: illegal value ?? 3712 ["179--194 and 315--326" ]: illegal value ?? 3713 ["1792--1795 vol.4" ]: illegal value ?? 3714 ["1796--1799 vol.4" ]: illegal value ?? 3715 ["18 + [18]" ]: illegal value ?? 3716 ["18 + [21]" ]: illegal value ?? 3717 ["18 + [33]" ]: illegal value ?? 3718 ["18 + [58]" ]: illegal value ?? 3719 ["18 -- 24" ]: illegal value ?? 3720 ["18--20, 22, 24, 26, 91"]: illegal value ?? 3721 ["18." ]: illegal value ?? 3722 ["18/0/1--5" ]: illegal value ?? 3723 ["18/1/1--12" ]: illegal value ?? 3724 ["18/2/1--5" ]: illegal value ?? 3725 ["18/3/1--6" ]: illegal value ?? 3726 ["18/4/1--8" ]: illegal value ?? 3727 ["180." ]: illegal value ?? 3728 ["1800--1803 vol.4" ]: illegal value ?? 3729 ["181 -- 191" ]: illegal value ?? 3730 ["181 -- 198" ]: illegal value ?? 3731 ["181--182, 184" ]: illegal value ?? 3732 ["181-197" ]: illegal value ?? 3733 ["184 (Macintosh), 192 (Windows)"]: illegal value ?? 3734 ["187 -- 196" ]: illegal value ?? 3735 ["187 -- 209" ]: illegal value ?? 3736 ["187 -- 217" ]: illegal value ?? 3737 ["1876--1881 (vol. 3)" ]: illegal value ?? 3738 ["188--200 (or 201??)" ]: illegal value ?? 3739 ["19 + 4 + 1" ]: illegal value ?? 3740 ["19 -- 46" ]: illegal value ?? 3741 ["19 program files on 2 computer disks 1 user's guide"]: illegal value ?? 3742 ["19+117" ]: illegal value ?? 3743 ["19--27 (of xviii + 1621)"]: illegal value %% 3744 ["190, 192" ]: matches 23, 27 ?? 3745 ["191--197 vol.1" ]: illegal value ?? 3746 ["193--194, 196" ]: illegal value ?? 3747 ["193--206 (of ix + 453)"]: illegal value ?? 3748 ["193--6, 198" ]: illegal value %% 3749 ["194, 196" ]: matches 23, 27 ?? 3750 ["194--196, 198, 200, 202--203, 205--206, 208, 210"]: illegal value ?? 3751 ["195 -- 204" ]: illegal value ?? 3752 ["197 + [1]" ]: illegal value ?? 3753 ["2 + 2 + 335" ]: illegal value ?? 3754 ["2 + 2 + 354" ]: illegal value ?? 3755 ["2 + 216" ]: illegal value ?? 3756 ["2 + 4 (C source code)" ]: illegal value ?? 3757 ["2 + 475" ]: illegal value ?? 3758 ["2 + 7 + 227" ]: illegal value ?? 3759 ["2 + [6]." ]: illegal value ?? 3760 ["2 + xi + 237" ]: illegal value ?? 3761 ["2 -- 9" ]: illegal value ?? 3762 ["2 computer disks" ]: illegal value ?? 3763 ["2 microfiches (125 fr.)"]: illegal value ?? 3764 ["2 microfiches (134 fr.)"]: illegal value ?? 3765 ["2 microfiches (138 fr.)"]: illegal value ?? 3766 ["2 microfiches" ]: illegal value ?? 3767 ["2 program files (FORTRAN + IBM PC) on 1 computer disk"]: illegal value ?? 3768 ["2 pts. in 1" ]: illegal value ?? 3769 ["2 v" ]: illegal value ?? 3770 ["2 v." ]: illegal value ?? 3771 ["2--18--2--15" ]: illegal value ?? 3772 ["2.1--2.13" ]: illegal value ?? 3773 ["2/1--3" ]: illegal value ?? 3774 ["20 -- 21 \& 8 ff." ]: illegal value ?? 3775 ["20 transparencies. color. 10 x 12 in."]: illegal value ?? 3776 ["20 transparencies. color. 10x12 in."]: illegal value ?? 3777 ["20 videocassettes (VHS) (30 min. ea.) + book."]: illegal value ?? 3778 ["20, 22, 24--25" ]: illegal value ?? 3779 ["20--22 (or 20--23??)" ]: illegal value ?? 3780 ["20.21--20.25" ]: illegal value ?? 3781 ["2002 +" ]: illegal value %% 3782 ["201--202, 204--208" ]: matches 23--27, 29--32 ?? 3783 ["201--206 (or 201--207??)"]: illegal value ?? 3784 ["203 -- 229" ]: illegal value ?? 3785 ["2038 -- 2050" ]: illegal value ?? 3786 ["204 -- 217" ]: illegal value ?? 3787 ["204--206, 209--210, 212, 215--216, 218--221"]: illegal value ?? 3788 ["205 + [3] " ]: illegal value ?? 3789 ["205 -- 215" ]: illegal value ?? 3790 ["205 -- 240" ]: illegal value ?? 3791 ["2063 -- 2068" ]: illegal value %% 3792 ["207--220, 71--78" ]: matches 23--27, 29--32 ?? 3793 ["208." ]: illegal value ?? 3794 ["209--221 (or 209--222??)"]: illegal value ?? 3795 ["21 + 133 + 87" ]: illegal value ?? 3796 ["21--2--21--13" ]: illegal value ?? 3797 ["211 -- 213" ]: illegal value ?? 3798 ["211 -- 227" ]: illegal value ?? 3799 ["213 +" ]: illegal value ?? 3800 ["213 -- 216" ]: illegal value ?? 3801 ["213--216??" ]: illegal value ?? 3802 ["213--243, esp.~219--224"]: illegal value ?? 3803 ["215 -- 224" ]: illegal value ?? 3804 ["216--220, 222, 224--226, 228, 230, 232--234"]: illegal value %% 3805 ["217--250, 276--300, 372--389"]: matches 23--27, 29--32, 35--37 ?? 3806 ["218 -- 240" ]: illegal value ?? 3807 ["219--239 (of xii + 394)"]: illegal value ?? 3808 ["22 + 3" ]: illegal value ?? 3809 ["22 + 331 (Chapter 1), 8 + 373 (Chapter 2)"]: illegal value ?? 3810 ["22 cassettes. 2--track. mono."]: illegal value ?? 3811 ["221--222, 224, 226" ]: illegal value ?? 3812 ["221--224 (vol. 1)" ]: illegal value ?? 3813 ["221--231 (or 221--232??)"]: illegal value %% 3814 ["222--225, 227--235" ]: matches 23--27, 29--32 ?? 3815 ["223 + [8]" ]: illegal value ?? 3816 ["223 -- 227" ]: illegal value ?? 3817 ["223 -- 252" ]: illegal value ?? 3818 ["224 + [1]" ]: illegal value ?? 3819 ["224A--??" ]: illegal value ?? 3820 ["227 -- 234" ]: illegal value ?? 3821 ["228 -- 236" ]: illegal value ?? 3822 ["228ff" ]: illegal value ?? 3823 ["22:00--35:28" ]: illegal value ?? 3824 ["23 + iii" ]: illegal value ?? 3825 ["23 -- 27" ]: illegal value ?? 3826 ["231 -- 232" ]: illegal value ?? 3827 ["231 -- 240" ]: illegal value ?? 3828 ["231 -- 264" ]: illegal value ?? 3829 ["232-236" ]: illegal value ?? 3830 ["233--242 (of xix + 453)"]: illegal value ?? 3831 ["235--255 (of ix + 403)"]: illegal value ?? 3832 ["236--238, 240" ]: illegal value ?? 3833 ["237 + 15 + 18." ]: illegal value ?? 3834 ["237--253 (of xvii + 529)"]: illegal value ?? 3835 ["237-256" ]: illegal value ?? 3836 ["238 -- 251" ]: illegal value ?? 3837 ["239 + [2]" ]: illegal value ?? 3838 ["239 -- 259" ]: illegal value %% 3839 ["239, 240" ]: matches 23, 27 ?? 3840 ["239--242, 144" ]: illegal value ?? 3841 ["24 + 27" ]: illegal value ?? 3842 ["24 + [12]" ]: illegal value ?? 3843 ["24 -- 30" ]: illegal value ?? 3844 ["24--85 (or 42??)" ]: illegal value ?? 3845 ["24-30" ]: illegal value ?? 3846 ["240 -- 250" ]: illegal value %% 3847 ["240, 303" ]: matches 23, 27 ?? 3848 ["241--242 (?? check ??) or 696--698"]: illegal value %% 3849 ["241--244, 246--247" ]: matches 23--27, 29--32 ?? 3850 ["241-246" ]: illegal value ?? 3851 ["241-250" ]: illegal value ?? 3852 ["241-264" ]: illegal value ?? 3853 ["243 + 12 + 10 + 6" ]: illegal value ?? 3854 ["243 -- 248" ]: illegal value ?? 3855 ["243 -- 268" ]: illegal value ?? 3856 ["244-244" ]: illegal value ?? 3857 ["245 -- 255" ]: illegal value ?? 3858 ["246--260 (or 246--259??)"]: illegal value ?? 3859 ["246-250" ]: illegal value ?? 3860 ["247--250 vol.1" ]: illegal value ?? 3861 ["247-254" ]: illegal value ?? 3862 ["249 -- 259" ]: illegal value ?? 3863 ["249--252, 254, 256" ]: illegal value ?? 3864 ["25--28, 30--32, 34, 36, 38--39"]: illegal value ?? 3865 ["250 +" ]: illegal value ?? 3866 ["250--255 (of xii + 423)"]: illegal value ?? 3867 ["254 + [2]" ]: illegal value ?? 3868 ["255 -- 286" ]: illegal value ?? 3869 ["257--258, 260" ]: illegal value ?? 3870 ["257--258, 260, 262" ]: illegal value ?? 3871 ["257--284 (of x + 338)" ]: illegal value ?? 3872 ["258--287 (of viii + 655)"]: illegal value ?? 3873 ["259 -- 271" ]: illegal value ?? 3874 ["26 + 19" ]: illegal value ?? 3875 ["26 + 324 + 8" ]: illegal value ?? 3876 ["26 -- 43" ]: illegal value ?? 3877 ["260--274 (or 260--273??)"]: illegal value ?? 3878 ["261 +" ]: illegal value %% 3879 ["263, 267" ]: matches 23, 27 ?? 3880 ["265--266, 268" ]: illegal value %% 3881 ["265--271, 332--345" ]: matches 23--27, 29--32 %% 3882 ["265--272, 332--345" ]: matches 23--27, 29--32 ?? 3883 ["265--273, 341" ]: illegal value ?? 3884 ["267--283 (or 268--283??)"]: illegal value ?? 3885 ["268 + 106" ]: illegal value ?? 3886 ["268--270 (or 268--274??)"]: illegal value ?? 3887 ["268--274 (or 268--270??)"]: illegal value ?? 3888 ["269--288 (of ix + 453)"]: illegal value ?? 3889 ["27--30, 32, 34, 36" ]: illegal value ?? 3890 ["273--314 (of ix + 388)"]: illegal value ?? 3891 ["274 pp" ]: illegal value ?? 3892 ["275 +" ]: illegal value ?? 3893 ["275 -- 282" ]: illegal value ?? 3894 ["275 -- 297" ]: illegal value ?? 3895 ["276--280, 282, 284--285, 289--291, 293, 295, 299]: illegal value ?? 3896 ["277 +" ]: illegal value ?? 3897 ["279--289 (vol. 2)" ]: illegal value ?? 3898 ["279--290 (or 279--298??)"]: illegal value ?? 3899 ["2794 -- 2802" ]: illegal value ?? 3900 ["27:1--27:10" ]: illegal value ?? 3901 ["27P-28P" ]: illegal value ?? 3902 ["28 -- 41" ]: illegal value %% 3903 ["28, 29, 285" ]: matches 23, 27, 45 ?? 3904 ["28, 30, 32, 34, 36, 38, 91--92"]: illegal value ?? 3905 ["28, 30, 32, 34, 84, 86--87"]: illegal value ?? 3906 ["28, 30--31" ]: illegal value ?? 3907 ["28--35 (or 28--34??)" ]: illegal value ?? 3908 ["280 -- 294" ]: illegal value ?? 3909 ["2803 -- 2812" ]: illegal value ?? 3910 ["281 -- 294" ]: illegal value ?? 3911 ["282 -- 292" ]: illegal value ?? 3912 ["283 +" ]: illegal value ?? 3913 ["286 -- 300" ]: illegal value ?? 3914 ["286--2xx" ]: illegal value ?? 3915 ["287 -- 295" ]: illegal value ?? 3916 ["287 -- 301" ]: illegal value ?? 3917 ["287--290??" ]: illegal value ?? 3918 ["29 + 5 + 7 + 9 + 6" ]: illegal value ?? 3919 ["29 -- 42" ]: illegal value ?? 3920 ["29, 32--38" ]: illegal value ?? 3921 ["29--37 (of xix + 685)" ]: illegal value ?? 3922 ["29--49 (of xi + 425)" ]: illegal value ?? 3923 ["29--82 (of x + 415)" ]: illegal value ?? 3924 ["29." ]: illegal value ?? 3925 ["291 -- 309" ]: illegal value ?? 3926 ["292--296 (of xi + 437)"]: illegal value ?? 3927 ["293--312 (or 293--311??)"]: illegal value ?? 3928 ["295--296, 298" ]: illegal value ?? 3929 ["297-" ]: illegal value ?? 3930 ["2P-3P" ]: illegal value ?? 3931 ["2c6.1--??" ]: illegal value ?? 3932 ["2c6.9--??" ]: illegal value ?? 3933 ["3 + 6" ]: illegal value ?? 3934 ["3 + 810 + 15" ]: illegal value ?? 3935 ["3 + [11]" ]: illegal value ?? 3936 ["3 + [16] + [1]" ]: illegal value ?? 3937 ["3 books + 4 diskettes + 1 booklet."]: illegal value ?? 3938 ["3 computer disks" ]: illegal value ?? 3939 ["3 microfiches (221 im.)"]: illegal value ?? 3940 ["3 microfiches." ]: illegal value ?? 3941 ["3 pts." ]: illegal value ?? 3942 ["3 v. in 1" ]: illegal value ?? 3943 ["3 v." ]: illegal value ?? 3944 ["3+" ]: illegal value %% 3945 ["3, 18" ]: matches 23, 27 %% 3946 ["3, 20" ]: matches 23, 27 ?? 3947 ["3--" ]: illegal value ?? 3948 ["3--27 (or 3--28??)" ]: illegal value ?? 3949 ["3.1--3.10" ]: illegal value ?? 3950 ["3.1--3.13" ]: illegal value ?? 3951 ["3.4.1--3.4.4" ]: illegal value ?? 3952 ["3/206" ]: illegal value ?? 3953 ["3/308" ]: illegal value ?? 3954 ["30, 32--33" ]: illegal value ?? 3955 ["30.3/1--4" ]: illegal value ?? 3956 ["300 -- 308" ]: illegal value ?? 3957 ["301 -- 320" ]: illegal value ?? 3958 ["301 -- 331" ]: illegal value ?? 3959 ["301--321 (or 301--324??)"]: illegal value ?? 3960 ["301." ]: illegal value ?? 3961 ["303--304??" ]: illegal value ?? 3962 ["303--?" ]: illegal value ?? 3963 ["305 -- 316" ]: illegal value %% 3964 ["307, 307" ]: matches 23, 27 ?? 3965 ["309 -- 318" ]: illegal value ?? 3966 ["309 -- 322" ]: illegal value ?? 3967 ["309--323 (of viii + 426)"]: illegal value ?? 3968 ["309--328 (or 300--328??)"]: illegal value ?? 3969 ["309--376 (of xv + 608)"]: illegal value ?? 3970 ["31--45 (of 255)" ]: illegal value ?? 3971 ["310--" ]: illegal value ?? 3972 ["313." ]: illegal value ?? 3973 ["315 -- 327" ]: illegal value ?? 3974 ["315 -- 333" ]: illegal value ?? 3975 ["315--340 (or 315--339 ?? or 315--349 ??)"]: illegal value ?? 3976 ["317 -- 318, 503" ]: illegal value ?? 3977 ["317 -- 330" ]: illegal value ?? 3978 ["317--318, 503" ]: illegal value ?? 3979 ["317--365, 1870" ]: illegal value ?? 3980 ["319--326 (or 318--326??)"]: illegal value ?? 3981 ["32 + 36" ]: illegal value ?? 3982 ["32 + A1--A4" ]: illegal value ?? 3983 ["32 -- 45" ]: illegal value ?? 3984 ["32, 34, 38--39, 101" ]: illegal value %% 3985 ["32--48, 96--100" ]: matches 23--27, 29--32 ?? 3986 ["32." ]: illegal value ?? 3987 ["325--330 (of xiii + 426)"]: illegal value ?? 3988 ["327 (without CD--ROM), 388 (with CD--ROM)"]: illegal value ?? 3989 ["327 -- 329" ]: illegal value ?? 3990 ["327 -- 340" ]: illegal value ?? 3991 ["328-335" ]: illegal value ?? 3992 ["329 -- 345" ]: illegal value ?? 3993 ["33 + 26" ]: illegal value ?? 3994 ["33 + [9]" ]: illegal value ?? 3995 ["33 -- 41" ]: illegal value ?? 3996 ["33 slides (in carousel slide tray) col. 2 x 2 in."]: illegal value ?? 3997 ["33--43, 45" ]: illegal value ?? 3998 ["330 -- 340" ]: illegal value ?? 3999 ["330 -- 345" ]: illegal value ?? 4000 ["333 -- 365" ]: illegal value ?? 4001 ["337 -- 338" ]: illegal value ?? 4002 ["337 -- 340" ]: illegal value %% 4003 ["337--357, 458--474" ]: matches 23--27, 29--32 ?? 4004 ["338 -- 346, 250 -- 252, 97"]: illegal value ?? 4005 ["339--352 (of xvii + 559)"]: illegal value ?? 4006 ["34 + 16 + 15" ]: illegal value ?? 4007 ["34 + 25" ]: illegal value ?? 4008 ["34 slides (in carousel slide tray) col. 2 x 2 in."]: illegal value ?? 4009 ["341 -- 348" ]: illegal value ?? 4010 ["343--348 (or 343--347??)"]: illegal value ?? 4011 ["347--363 (or 347--364??)"]: illegal value ?? 4012 ["349--385 and 435--471" ]: illegal value ?? 4013 ["35 + 14" ]: illegal value ?? 4014 ["35 + [80]" ]: illegal value ?? 4015 ["35--62 (of xiv + 644)" ]: illegal value ?? 4016 ["35/1/1--13" ]: illegal value ?? 4017 ["35/2/1--6" ]: illegal value ?? 4018 ["35/4/1--5" ]: illegal value ?? 4019 ["350-353" ]: illegal value ?? 4020 ["354-" ]: illegal value ?? 4021 ["355 -- 358" ]: illegal value ?? 4022 ["357--428 (of ix + 523)"]: illegal value %% 4023 ["359, with 9 illustrations"]: matches 239, with 27 illustrations ?? 4024 ["36 + [4]" ]: illegal value ?? 4025 ["36 microfiche." ]: illegal value ?? 4026 ["36 slides (in carousel slide tray) col. 2 x 2 in."]: illegal value ?? 4027 ["36, 38, 40, 42, 86, 88--89"]: illegal value ?? 4028 ["36--38, 40, 42--44, 46--47, 50--51"]: illegal value %% 4029 ["361, 365" ]: matches 23, 27 ?? 4030 ["361--364, 366, 368" ]: illegal value ?? 4031 ["363--366 (of xviii + 654)"]: illegal value ?? 4032 ["363--394 (??)" ]: illegal value ?? 4033 ["363--8, 370, 372, 374, 376"]: illegal value ?? 4034 ["364 +" ]: illegal value ?? 4035 ["365 -- 392" ]: illegal value ?? 4036 ["365--375 (or 365--381??)"]: illegal value ?? 4037 ["369 -- 383" ]: illegal value ?? 4038 ["369--374 (??)" ]: illegal value ?? 4039 ["37 + [31]" ]: illegal value ?? 4040 ["373--377, 385" ]: illegal value ?? 4041 ["375 -- 412" ]: illegal value ?? 4042 ["375--378 (vol. 1)" ]: illegal value ?? 4043 ["375--386, discussion 386--388"]: illegal value %% 4044 ["38--42, 44--46, 48--51"]: matches 23--27, 29--32, 35--37 ?? 4045 ["38--45, 77" ]: illegal value ?? 4046 ["381--385, 387" ]: illegal value ?? 4047 ["382 -- 384" ]: illegal value ?? 4048 ["385,386,388,390,392,395"]: illegal value ?? 4049 ["38a + 1559" ]: illegal value ?? 4050 ["39 + [14]" ]: illegal value %% 4051 ["39--45, 48--52" ]: matches 23--27, 29--32 ?? 4052 ["39--84 (of xiii + 444)"]: illegal value ?? 4053 ["391-" ]: illegal value ?? 4054 ["391--394 (plus microfiche listing)"]: illegal value ?? 4055 ["395 -- 412" ]: illegal value ?? 4056 ["4 + 2 + 8" ]: illegal value ?? 4057 ["4 + 366" ]: illegal value ?? 4058 ["4 + 5" ]: illegal value ?? 4059 ["4 + [13]" ]: illegal value ?? 4060 ["4 + [2] + 8" ]: illegal value ?? 4061 ["4 + [3]" ]: illegal value ?? 4062 ["4 + [5]" ]: illegal value ?? 4063 ["4 + iv + 216" ]: illegal value ?? 4064 ["4 cassettes + 240 min."]: illegal value ?? 4065 ["4 computer disks" ]: illegal value ?? 4066 ["4 program files (IBM--PC) on 3 computer disks"]: illegal value ?? 4067 ["4 v. in 1" ]: illegal value ?? 4068 ["4 v." ]: illegal value ?? 4069 ["4.1--4.12" ]: illegal value ?? 4070 ["4.1--4.21" ]: illegal value ?? 4071 ["4/1--6" ]: illegal value ?? 4072 ["4/1--8" ]: illegal value ?? 4073 ["40 +" ]: illegal value %% 4074 ["40--42, 44--49" ]: matches 23--27, 29--32 ?? 4075 ["404-408" ]: illegal value ?? 4076 ["4053 -- 4062" ]: illegal value ?? 4077 ["407--422 (of x + 668)" ]: illegal value ?? 4078 ["408 -- 414" ]: illegal value ?? 4079 ["41 + x" ]: illegal value ?? 4080 ["41 -- 72" ]: illegal value ?? 4081 ["41--54 (or 41--47??)" ]: illegal value ?? 4082 ["413--440 (or 413--439??)"]: illegal value %% 4083 ["415--440, 517--523" ]: matches 23--27, 29--32 ?? 4084 ["417--429 (vol. 1)" ]: illegal value ?? 4085 ["418 -- 450" ]: illegal value ?? 4086 ["419-429" ]: illegal value ?? 4087 ["41P" ]: illegal value ?? 4088 ["42 + 8." ]: illegal value ?? 4089 ["42--46, 54, 57--79" ]: illegal value ?? 4090 ["421--430 (or 421--431??)"]: illegal value ?? 4091 ["424--436 (or 424--431??)"]: illegal value ?? 4092 ["425--?" ]: illegal value ?? 4093 ["425ff" ]: illegal value ?? 4094 ["426 +" ]: illegal value ?? 4095 ["428--434 (of xix + 453)"]: illegal value %% 4096 ["43, 126" ]: matches 23, 27 ?? 4097 ["431 +" ]: illegal value ?? 4098 ["433ff" ]: illegal value ?? 4099 ["434--443 vol.2" ]: illegal value ?? 4100 ["44 + [1]" ]: illegal value ?? 4101 ["44--45, 285" ]: illegal value ?? 4102 ["441 ff." ]: illegal value ?? 4103 ["445-507" ]: illegal value ?? 4104 ["449--461 vol.2" ]: illegal value %% 4105 ["45, 116" ]: matches 23, 27 ?? 4106 ["450 vol.1" ]: illegal value ?? 4107 ["450--453 (plus microfiche supplement)"]: illegal value %% 4108 ["46, 79, 82" ]: matches 23, 27, 45 ?? 4109 ["46--47, 286" ]: illegal value ?? 4110 ["463 -- 464" ]: illegal value ?? 4111 ["465 -- 471" ]: illegal value ?? 4112 ["466 + [14]" ]: illegal value ?? 4113 ["467--474 (vol. 1)" ]: illegal value ?? 4114 ["47 -- 66" ]: illegal value ?? 4115 ["473 +" ]: illegal value ?? 4116 ["476 + 88" ]: illegal value ?? 4117 ["479--514 (of 514)" ]: illegal value ?? 4118 ["48 + [2]" ]: illegal value ?? 4119 ["48--49, 287" ]: illegal value ?? 4120 ["48/1/1--8" ]: illegal value ?? 4121 ["48/5/1--7" ]: illegal value ?? 4122 ["481 +" ]: illegal value ?? 4123 ["484--488 vol.1" ]: illegal value ?? 4124 ["486 -- 487" ]: illegal value ?? 4125 ["49 -- 67" ]: illegal value ?? 4126 ["493--1099 + xviii + xvi + xviii"]: illegal value ?? 4127 ["494, with subject index, author index, and glossary"]: illegal value ?? 4128 ["5 + 86 [i.e. 89] + 5" ]: illegal value ?? 4129 ["5 + [3]" ]: illegal value ?? 4130 ["5 + [4] + 24" ]: illegal value ?? 4131 ["5 + [4]" ]: illegal value ?? 4132 ["5 + [6] + [1] + [4] + [1]"]: illegal value ?? 4133 ["5 cubic ft. + 10 panels + and 1 videotape."]: illegal value ?? 4134 ["5 v. in 1" ]: illegal value ?? 4135 ["5 v." ]: illegal value ?? 4136 ["5--9, 36" ]: illegal value ?? 4137 ["5.1--5.29" ]: illegal value ?? 4138 ["5/1--3" ]: illegal value ?? 4139 ["5/1--5/4" ]: illegal value ?? 4140 ["50 + [28]" ]: illegal value ?? 4141 ["50--51, 288" ]: illegal value ?? 4142 ["50--56, 58" ]: illegal value ?? 4143 ["50." ]: illegal value ?? 4144 ["501--504 vol.2" ]: illegal value ?? 4145 ["503 -- 524" ]: illegal value ?? 4146 ["509--519 (or 509--520??)"]: illegal value ?? 4147 ["51 + 38" ]: illegal value ?? 4148 ["51 + A--2 + 12" ]: illegal value ?? 4149 ["51 + [78]" ]: illegal value ?? 4150 ["51 -- 89" ]: illegal value ?? 4151 ["51--52, 54, 55" ]: illegal value ?? 4152 ["512 -- 521" ]: illegal value ?? 4153 ["515 +" ]: illegal value ?? 4154 ["519 -- 554" ]: illegal value ?? 4155 ["52, 54--56" ]: illegal value ?? 4156 ["52, 55--56, 58, 90" ]: illegal value ?? 4157 ["52--53, 289" ]: illegal value %% 4158 ["52--53, 56--58" ]: matches 23--27, 29--32 ?? 4159 ["53 + [1]" ]: illegal value ?? 4160 ["53 -- 65" ]: illegal value ?? 4161 ["53--142 (of xi + 499)" ]: illegal value ?? 4162 ["53--147 (of ix + 332)" ]: illegal value ?? 4163 ["531 -- 549" ]: illegal value ?? 4164 ["534 -- 544" ]: illegal value ?? 4165 ["535 + 16" ]: illegal value ?? 4166 ["536 -- 539" ]: illegal value ?? 4167 ["54 -- 99" ]: illegal value ?? 4168 ["54--55, 290" ]: illegal value ?? 4169 ["541--555 (of xiv + 644)"]: illegal value %% 4170 ["544, with 22 illustrations"]: matches 239, with 27 illustrations ?? 4171 ["55 + [28]" ]: illegal value ?? 4172 ["55 -- 73" ]: illegal value %% 4173 ["55, 57, 59" ]: matches 23, 27, 45 ?? 4174 ["55, 57--63" ]: illegal value %% 4175 ["55--62, 64--70" ]: matches 23--27, 29--32 ?? 4176 ["551 -- 560" ]: illegal value ?? 4177 ["552 -- 563" ]: illegal value ?? 4178 ["556 (v. 1), 1056 (v. 2)"]: illegal value ?? 4179 ["557--558, 578" ]: illegal value ?? 4180 ["557--558, 594" ]: illegal value ?? 4181 ["56 + 39" ]: illegal value ?? 4182 ["56, 58, 60--61, 101--102"]: illegal value ?? 4183 ["560 -- 566" ]: illegal value ?? 4184 ["566 o." ]: illegal value %% 4185 ["57--58, 61--68, 70--71"]: matches 23--27, 29--32, 35--37 ?? 4186 ["57-63" ]: illegal value ?? 4187 ["570--598 vol.1" ]: illegal value ?? 4188 ["572--578, 585" ]: illegal value ?? 4189 ["576--580 and 583" ]: illegal value ?? 4190 ["58 + [35]" ]: illegal value ?? 4191 ["58, 60, 62, 96, 98, 99"]: illegal value ?? 4192 ["58--78 (of 196)" ]: illegal value ?? 4193 ["581 -- 595" ]: illegal value ?? 4194 ["59 + 15" ]: illegal value %% 4195 ["59, 61" ]: matches 23, 27 ?? 4196 ["59, 62--64" ]: illegal value %% 4197 ["59--60, 63--64" ]: matches 23--27, 29--32 ?? 4198 ["593 -- 608" ]: illegal value ?? 4199 ["598--603, 643" ]: illegal value ?? 4200 ["6 + 379" ]: illegal value ?? 4201 ["6 + A2" ]: illegal value ?? 4202 ["6 + [2]" ]: illegal value ?? 4203 ["6 + [3]" ]: illegal value ?? 4204 ["6 + [6]" ]: illegal value ?? 4205 ["6 cartridges" ]: illegal value ?? 4206 ["6 computer disks guide."]: illegal value ?? 4207 ["6 motion pictures. sd. color. super 8 mm."]: illegal value ?? 4208 ["6 sound cassettes kit + program coding forms."]: illegal value ?? 4209 ["6 v. in 1" ]: illegal value %% 4210 ["6, 22" ]: matches 23, 27 ?? 4211 ["6." ]: illegal value ?? 4212 ["6.1--6.23" ]: illegal value ?? 4213 ["6/1--6/3" ]: illegal value ?? 4214 ["6/2/1--7" ]: illegal value ?? 4215 ["60--1--??" ]: illegal value ?? 4216 ["60." ]: illegal value ?? 4217 ["604 -- 621" ]: illegal value ?? 4218 ["604--609 (vol. 2)" ]: illegal value ?? 4219 ["61 -- 94" ]: illegal value ?? 4220 ["619--621 vol.2" ]: illegal value ?? 4221 ["62 + 70" ]: illegal value ?? 4222 ["628-666" ]: illegal value ?? 4223 ["63 + 45" ]: illegal value ?? 4224 ["63 + [51]" ]: illegal value ?? 4225 ["63 -- 94" ]: illegal value ?? 4226 ["63--66, 69--72, 77--78, 80"]: illegal value ?? 4227 ["64, 69--70" ]: illegal value ?? 4228 ["64--1--??" ]: illegal value ?? 4229 ["641--650 vol.1" ]: illegal value ?? 4230 ["644-653" ]: illegal value ?? 4231 ["645 -- 677" ]: illegal value ?? 4232 ["646--649 (vol. 2)" ]: illegal value ?? 4233 ["649 \& 703" ]: illegal value %% 4234 ["649, 703" ]: matches 23, 27 ?? 4235 ["64NA4--??" ]: illegal value ?? 4236 ["65 -- 88" ]: illegal value %% 4237 ["65--66, 68--69" ]: matches 23--27, 29--32 ?? 4238 ["65--68 (or 65--67??)" ]: illegal value ?? 4239 ["653 -- 660" ]: illegal value ?? 4240 ["654--662 (or 654--660??)"]: illegal value ?? 4241 ["657--658 (vol. 1)" ]: illegal value ?? 4242 ["65H--??" ]: illegal value ?? 4243 ["66 + 12" ]: illegal value ?? 4244 ["66--76, 130--139, 187--196, 246--261"]: illegal value ?? 4245 ["66--99 (of vi + 335)" ]: illegal value ?? 4246 ["668 -- 675" ]: illegal value ?? 4247 ["67--68, 70" ]: illegal value ?? 4248 ["67--68, 70, 72, 74--77, 79"]: illegal value ?? 4249 ["67--70, 72, 74, 77--78, 80--81"]: illegal value %% 4250 ["67--71, 115--116" ]: matches 23--27, 29--32 %% 4251 ["68--80, 98--102" ]: matches 23--27, 29--32 ?? 4252 ["69 -- 100" ]: illegal value ?? 4253 ["69 -- 88" ]: illegal value ?? 4254 ["691 -- 699" ]: illegal value ?? 4255 ["694 -- 695" ]: illegal value ?? 4256 ["7 + 4 + 12 + 25 + [5]" ]: illegal value ?? 4257 ["7 + 573" ]: illegal value ?? 4258 ["7 + 9 (C source code)" ]: illegal value ?? 4259 ["7 + [24]" ]: illegal value ?? 4260 ["7 + [2]" ]: illegal value ?? 4261 ["7 + [7]" ]: illegal value ?? 4262 ["7 -- 9" ]: illegal value ?? 4263 ["7 computer disks" ]: illegal value ?? 4264 ["7 fasc." ]: illegal value ?? 4265 ["7 v. in 1" ]: illegal value ?? 4266 ["7 v.in 1" ]: illegal value ?? 4267 ["7, 8, 10, 12, 13, 16" ]: illegal value ?? 4268 ["7." ]: illegal value ?? 4269 ["7.1--7.18" ]: illegal value ?? 4270 ["7/2/1--5" ]: illegal value ?? 4271 ["7/3/1--9" ]: illegal value ?? 4272 ["7/4/1--3" ]: illegal value ?? 4273 ["70 microfiches" ]: illegal value ?? 4274 ["701 -- 721" ]: illegal value ?? 4275 ["71 -- 95" ]: illegal value ?? 4276 ["71." ]: illegal value ?? 4277 ["714-736" ]: illegal value ?? 4278 ["718 + 95 + 16" ]: illegal value ?? 4279 ["72 + [6]" ]: illegal value %% 4280 ["72, 74, 76, 78" ]: matches 23, 27, 45, 98 ?? 4281 ["72, 74--75, 86--87" ]: illegal value ?? 4282 ["723--762 (of xix + 762)"]: illegal value ?? 4283 ["727--?? (or 158--??)" ]: illegal value ?? 4284 ["72IS/11--12" ]: illegal value ?? 4285 ["73 -- 78" ]: illegal value ?? 4286 ["73 -- 90" ]: illegal value %% 4287 ["73, 210" ]: matches 23, 27 ?? 4288 ["73--75, 78, 80--85 and 1"]: illegal value ?? 4289 ["730--734 vol.2" ]: illegal value ?? 4290 ["731--740, 798" ]: illegal value ?? 4291 ["738 -- 741" ]: illegal value ?? 4292 ["74 -- 86" ]: illegal value ?? 4293 ["742--749, 774" ]: illegal value ?? 4294 ["745 -- 755" ]: illegal value ?? 4295 ["74S--74S" ]: illegal value ?? 4296 ["75--78, 80--82, 84" ]: illegal value ?? 4297 ["75-89" ]: illegal value ?? 4298 ["754--760 (vol. 1)" ]: illegal value ?? 4299 ["76 + 6 + 3" ]: illegal value %% 4300 ["76--78, 180--188" ]: matches 23--27, 29--32 ?? 4301 ["762 -- 777" ]: illegal value ?? 4302 ["77 -- 84" ]: illegal value ?? 4303 ["77--78, 80" ]: illegal value ?? 4304 ["773 -- 782" ]: illegal value ?? 4305 ["78 + A34" ]: illegal value ?? 4306 ["78 + [26]" ]: illegal value ?? 4307 ["78 + [2]" ]: illegal value ?? 4308 ["79 + [76]" ]: illegal value ?? 4309 ["793--799, 803" ]: illegal value ?? 4310 ["797 -- 806" ]: illegal value ?? 4311 ["799 -- 806" ]: illegal value ?? 4312 ["8 + 1" ]: illegal value ?? 4313 ["8 + 196" ]: illegal value ?? 4314 ["8 + 223" ]: illegal value ?? 4315 ["8 + 24 + 20" ]: illegal value ?? 4316 ["8 + 4" ]: illegal value ?? 4317 ["8 + A--33" ]: illegal value ?? 4318 ["8 + [10]" ]: illegal value ?? 4319 ["8 + [15]" ]: illegal value ?? 4320 ["8 computer disks" ]: illegal value ?? 4321 ["8 microfiche." ]: illegal value ?? 4322 ["8 sound cassettes" ]: illegal value ?? 4323 ["8 sound tape reels (354 min.)"]: illegal value ?? 4324 ["8 videocassettes (ca. 45 min. ea.)"]: illegal value ?? 4325 ["8, 10--13" ]: illegal value ?? 4326 ["8--9, 11" ]: illegal value ?? 4327 ["8.1--8.24" ]: illegal value ?? 4328 ["80--83, 362" ]: illegal value ?? 4329 ["807 -- 815" ]: illegal value ?? 4330 ["81 -- 95" ]: illegal value ?? 4331 ["81." ]: illegal value ?? 4332 ["820--835 (or 820--834??)"]: illegal value ?? 4333 ["820--835 (or 836--855??)"]: illegal value ?? 4334 ["821 -- 833" ]: illegal value ?? 4335 ["83 -- 108" ]: illegal value ?? 4336 ["831 -- 847" ]: illegal value ?? 4337 ["84 -- 117" ]: illegal value ?? 4338 ["84, 86--89, 96--97" ]: illegal value ?? 4339 ["85 (or 86??)" ]: illegal value ?? 4340 ["85 -- 94" ]: illegal value ?? 4341 ["85--98 (or 85--97??)" ]: illegal value ?? 4342 ["852--873 (or 852--872??)"]: illegal value ?? 4343 ["86--100 (or 99??)" ]: illegal value ?? 4344 ["86--88, 90, 92, 94, 97"]: illegal value ?? 4345 ["87 -- 96" ]: illegal value ?? 4346 ["87--98 (or 87--97??)" ]: illegal value ?? 4347 ["88 -- 95" ]: illegal value ?? 4348 ["88--111 (of xii + 404)"]: illegal value ?? 4349 ["880--884 vol.2" ]: illegal value ?? 4350 ["885--888 (or 887?)" ]: illegal value ?? 4351 ["89--113 (or 89--114??)"]: illegal value ?? 4352 ["890--897 vol.2" ]: illegal value ?? 4353 ["891--905 (or 903??)" ]: illegal value ?? 4354 ["896--910 (or 896--911??)"]: illegal value ?? 4355 ["898--902 (vol. 2)" ]: illegal value ?? 4356 ["898--902 vol.2" ]: illegal value ?? 4357 ["8f--??" ]: illegal value ?? 4358 ["9 + 10 + 37" ]: illegal value ?? 4359 ["9 + [15]" ]: illegal value ?? 4360 ["9 + [16]" ]: illegal value ?? 4361 ["9 + [20] + [1]" ]: illegal value ?? 4362 ["9." ]: illegal value ?? 4363 ["9.1--9.25" ]: illegal value ?? 4364 ["9/1--7" ]: illegal value ?? 4365 ["90 + [1]" ]: illegal value ?? 4366 ["90--99 (or 90--98??)" ]: illegal value ?? 4367 ["91 + 5" ]: illegal value ?? 4368 ["91 +" ]: illegal value ?? 4369 ["91--103 (of ix + 394)" ]: illegal value ?? 4370 ["91--128 (of viii + 248)"]: illegal value ?? 4371 ["91--98 (of xiii + 623)"]: illegal value ?? 4372 ["92--105 (or 92--104??)"]: illegal value ?? 4373 ["93 +" ]: illegal value %% 4374 ["93--103, 108--110" ]: matches 23--27, 29--32 ?? 4375 ["94 -- 99" ]: illegal value %% 4376 ["94--104, 74--93" ]: matches 23--27, 29--32 ?? 4377 ["95 + 16" ]: illegal value ?? 4378 ["951--963 (vol. 2)" ]: illegal value ?? 4379 ["961 +" ]: illegal value ?? 4380 ["96A--??" ]: illegal value ?? 4381 ["96D--??" ]: illegal value ?? 4382 ["96NA1--??" ]: illegal value ?? 4383 ["97 -- 110" ]: illegal value ?? 4384 ["97--108 (or 97--107??)"]: illegal value ?? 4385 ["97--123." ]: illegal value ?? 4386 ["97--99 (or 87--99??)" ]: illegal value ?? 4387 ["98-101" ]: illegal value ?? 4388 ["984--1004, esp.\ 1001--1002"]: illegal value ?? 4389 ["99 + 8" ]: illegal value ?? 4390 ["99 -- 115" ]: illegal value ?? 4391 ["99--102, 117" ]: illegal value ?? 4392 ["996--1003 (vol. 2)" ]: illegal value ?? 4393 ["?" ]: illegal value ?? 4394 ["??" ]: illegal value ?? 4395 ["??--?? (of 178)" ]: illegal value ?? 4396 ["??--?? (of 514)" ]: illegal value ?? 4397 ["??--?? (of vi + 335)" ]: illegal value ?? 4398 ["??--?? (of xi + 468)" ]: illegal value ?? 4399 ["??--?? (of xiv + 644)" ]: illegal value ?? 4400 ["??--?? (of xv + 1243)" ]: illegal value ?? 4401 ["??--?? (of xvi + 694)" ]: illegal value ?? 4402 ["??--?? (of xviii + 654)"]: illegal value ?? 4403 ["??--?? (of xxii + 484)"]: illegal value ?? 4404 ["??--??" ]: illegal value ?? 4405 ["???" ]: illegal value ?? 4406 ["???--122" ]: illegal value ?? 4407 ["????" ]: illegal value ?? 4408 ["????--????" ]: illegal value ?? 4409 ["A--i--A--x, A--1--A--71"]: illegal value ?? 4410 ["A-1--A-66" ]: illegal value %% 4411 ["A14" ]: matches L23 ?? 4412 ["A14--1--A14--51 + A15--1--A15--6"]: illegal value %% 4413 ["A25" ]: matches L23 ?? 4414 ["ALL" ]: illegal value ?? 4415 ["AP-14" ]: illegal value ?? 4416 ["AP-15--AP-16" ]: illegal value ?? 4417 ["Appendix A" ]: illegal value ?? 4418 ["Approx 670" ]: illegal value ?? 4419 ["B 6 + II--4" ]: illegal value ?? 4420 ["B--i--B--iii, B--1--B--15"]: illegal value %% 4421 ["B121" ]: matches L23 %% 4422 ["B149" ]: matches L23 ?? 4423 ["B721-B729" ]: illegal value %% 4424 ["B97" ]: matches L23 ?? 4425 ["C--i--C--iii, C--1--C--28"]: illegal value ?? 4426 ["C-01--C-??" ]: illegal value ?? 4427 ["C-107--C-??" ]: illegal value ?? 4428 ["C-127--C-??" ]: illegal value ?? 4429 ["C-13--C-??" ]: illegal value ?? 4430 ["C-143--C-??" ]: illegal value ?? 4431 ["C-155--C-??" ]: illegal value ?? 4432 ["C-167--C-??" ]: illegal value ?? 4433 ["C-179--C-??" ]: illegal value ?? 4434 ["C-185--C-??" ]: illegal value ?? 4435 ["C-195--C-??" ]: illegal value ?? 4436 ["C-205--C-??" ]: illegal value ?? 4437 ["C-221--C-??" ]: illegal value ?? 4438 ["C-23--C-??" ]: illegal value ?? 4439 ["C-233--C-??" ]: illegal value ?? 4440 ["C-247--C-??" ]: illegal value ?? 4441 ["C-259--C-??" ]: illegal value ?? 4442 ["C-271--C-??" ]: illegal value ?? 4443 ["C-281--C-??" ]: illegal value ?? 4444 ["C-293--C-??" ]: illegal value ?? 4445 ["C-305--C-??" ]: illegal value ?? 4446 ["C-317--C-??" ]: illegal value ?? 4447 ["C-329--C-??" ]: illegal value ?? 4448 ["C-33--C-??" ]: illegal value ?? 4449 ["C-339--C-??" ]: illegal value ?? 4450 ["C-349--C-??" ]: illegal value ?? 4451 ["C-361--C-??" ]: illegal value ?? 4452 ["C-371--C-??" ]: illegal value ?? 4453 ["C-381--C-??" ]: illegal value ?? 4454 ["C-393--C-??" ]: illegal value ?? 4455 ["C-407--C-??" ]: illegal value ?? 4456 ["C-421--C-??" ]: illegal value ?? 4457 ["C-433--C-??" ]: illegal value ?? 4458 ["C-443--C-??" ]: illegal value ?? 4459 ["C-45--C-??" ]: illegal value ?? 4460 ["C-455--C-??" ]: illegal value ?? 4461 ["C-467--C-??" ]: illegal value ?? 4462 ["C-477--C-??" ]: illegal value ?? 4463 ["C-489--C-??" ]: illegal value ?? 4464 ["C-503--C-??" ]: illegal value ?? 4465 ["C-513--C-??" ]: illegal value ?? 4466 ["C-514--C-??" ]: illegal value ?? 4467 ["C-515--C-??" ]: illegal value ?? 4468 ["C-55--C-??" ]: illegal value ?? 4469 ["C-65--C-??" ]: illegal value ?? 4470 ["C-75--C-??" ]: illegal value ?? 4471 ["C-85--C-??" ]: illegal value ?? 4472 ["C-97--C-??" ]: illegal value ?? 4473 ["C/33--44" ]: illegal value %% 4474 ["C3" ]: matches L23 ?? 4475 ["C3--??" ]: illegal value ?? 4476 ["D--i--D--iii, D--1--D--16"]: illegal value ?? 4477 ["E--i--E--iv, E--1--E--27"]: illegal value ?? 4478 ["EL-1--EL-6" ]: illegal value ?? 4479 ["F--i--F--viii, F--1--F--61"]: illegal value ?? 4480 ["F53 + 1229 + B29" ]: illegal value ?? 4481 ["G--i--G--v, G--1--G--28"]: illegal value ?? 4482 ["H--i--H--iv, H--1--H--37"]: illegal value %% 4483 ["H439--H448" ]: matches L23--L27 ?? 4484 ["I" ]: illegal value ?? 4485 ["I--257, I--260" ]: illegal value ?? 4486 ["I--340" ]: illegal value ?? 4487 ["I--57--I--66" ]: illegal value ?? 4488 ["I-30 - I-44" ]: illegal value ?? 4489 ["I-45 - I-57" ]: illegal value ?? 4490 ["I181--5 (vol. 1)" ]: illegal value ?? 4491 ["II--103--II--106" ]: illegal value ?? 4492 ["II--297--II--300" ]: illegal value ?? 4493 ["II--305--II--308" ]: illegal value ?? 4494 ["II--337--II--340" ]: illegal value ?? 4495 ["II-282--II-283" ]: illegal value ?? 4496 ["II-653--II-658" ]: illegal value ?? 4497 ["II:351--II:358" ]: illegal value ?? 4498 ["III--125--III--133" ]: illegal value ?? 4499 ["III--2023" ]: illegal value ?? 4500 ["III--??" ]: illegal value ?? 4501 ["III-197--III-201" ]: illegal value ?? 4502 ["III.29--III.36" ]: illegal value ?? 4503 ["IV--??" ]: illegal value ?? 4504 ["IV-1 to IV-27" ]: illegal value %% 4505 ["IX + 215" ]: matches viii + 445 %% 4506 ["L115" ]: matches L23 %% 4507 ["L1331--L1337" ]: matches L23--L27 %% 4508 ["L169--L179" ]: matches L23--L27 ?? 4509 ["L227-L230" ]: illegal value ?? 4510 ["L383-L388" ]: illegal value %% 4511 ["L547--L551" ]: matches L23--L27 ?? 4512 ["L569-L573" ]: illegal value ?? 4513 ["L819-L823" ]: illegal value ?? 4514 ["LO-93--LO-97" ]: illegal value ?? 4515 ["PM01" ]: illegal value %% 4516 ["R114--R121" ]: matches L23--L27 %% 4517 ["R2183--R2186" ]: matches L23--L27 ?? 4518 ["Ri--Rx, R1--R163" ]: illegal value ?? 4519 ["S-10--S-??" ]: illegal value ?? 4520 ["S-11--S-??" ]: illegal value ?? 4521 ["S-12--S-??" ]: illegal value ?? 4522 ["S-13--S-??" ]: illegal value ?? 4523 ["S-14--S-??" ]: illegal value ?? 4524 ["S-16--S-??" ]: illegal value ?? 4525 ["S-18--S-??" ]: illegal value ?? 4526 ["S-2--S-??" ]: illegal value ?? 4527 ["S-20--S-??" ]: illegal value ?? 4528 ["S-21--S-??" ]: illegal value ?? 4529 ["S-22--S-??" ]: illegal value ?? 4530 ["S-23--S-??" ]: illegal value ?? 4531 ["S-24--S-??" ]: illegal value ?? 4532 ["S-25--S-??" ]: illegal value ?? 4533 ["S-26--S-??" ]: illegal value ?? 4534 ["S-27--S-??" ]: illegal value ?? 4535 ["S-28--S-??" ]: illegal value ?? 4536 ["S-3--S-??" ]: illegal value ?? 4537 ["S-30--S-??" ]: illegal value ?? 4538 ["S-33--S-??" ]: illegal value ?? 4539 ["S-34--S-??" ]: illegal value ?? 4540 ["S-35--S-??" ]: illegal value ?? 4541 ["S-36--S-??" ]: illegal value ?? 4542 ["S-37--S-??" ]: illegal value ?? 4543 ["S-38--S-??" ]: illegal value ?? 4544 ["S-4--S-??" ]: illegal value ?? 4545 ["S-40--S-??" ]: illegal value ?? 4546 ["S-42--S-??" ]: illegal value ?? 4547 ["S-44--S-??" ]: illegal value ?? 4548 ["S-45--S-??" ]: illegal value ?? 4549 ["S-46--S-??" ]: illegal value ?? 4550 ["S-48--S-??" ]: illegal value ?? 4551 ["S-5--S-??" ]: illegal value ?? 4552 ["S-6--S-??" ]: illegal value ?? 4553 ["S-8--S-??" ]: illegal value ?? 4554 ["S1--??" ]: illegal value ?? 4555 ["S1/19--??" ]: illegal value ?? 4556 ["S1/3--S1/17" ]: illegal value ?? 4557 ["S1/35--??" ]: illegal value ?? 4558 ["S1/47--??" ]: illegal value ?? 4559 ["S1/47--S1/61" ]: illegal value ?? 4560 ["S1/63--??" ]: illegal value ?? 4561 ["S1/89--??" ]: illegal value %% 4562 ["S148--S149" ]: matches L23--L27 ?? 4563 ["S2/109--??" ]: illegal value ?? 4564 ["S2/119--??" ]: illegal value ?? 4565 ["S2/137--??" ]: illegal value ?? 4566 ["S2/35--??" ]: illegal value ?? 4567 ["S2/5--??" ]: illegal value ?? 4568 ["S2/69--??" ]: illegal value ?? 4569 ["S2/83--??" ]: illegal value %% 4570 ["S201--S209" ]: matches L23--L27 ?? 4571 ["S435--438" ]: illegal value %% 4572 ["S539" ]: matches L23 ?? 4573 ["S565--569" ]: illegal value ?? 4574 ["ST-134--ST-143" ]: illegal value ?? 4575 ["ST-144" ]: illegal value ?? 4576 ["Sec. 33--4" ]: illegal value ?? 4577 ["Sound cassettes." ]: illegal value ?? 4578 ["T 532--534" ]: illegal value ?? 4579 ["T11, 1--8" ]: illegal value %% 4580 ["T141--T143" ]: matches L23--L27 %% 4581 ["T176--T177" ]: matches L23--L27 %% 4582 ["T181--T182" ]: matches L23--L27 %% 4583 ["T182--T184" ]: matches L23--L27 %% 4584 ["T188--T189" ]: matches L23--L27 %% 4585 ["T188--T190" ]: matches L23--L27 %% 4586 ["T190--T191" ]: matches L23--L27 %% 4587 ["T191--T193" ]: matches L23--L27 %% 4588 ["T197--T198" ]: matches L23--L27 %% 4589 ["T202--T204" ]: matches L23--L27 %% 4590 ["T207--T208" ]: matches L23--L27 %% 4591 ["T208--T209" ]: matches L23--L27 %% 4592 ["T217--T218" ]: matches L23--L27 %% 4593 ["T219--T220" ]: matches L23--L27 %% 4594 ["T220--T221" ]: matches L23--L27 %% 4595 ["T221--T223" ]: matches L23--L27 %% 4596 ["T222" ]: matches L23 %% 4597 ["T225--T226" ]: matches L23--L27 %% 4598 ["T229--T230" ]: matches L23--L27 %% 4599 ["T237--T238" ]: matches L23--L27 %% 4600 ["T240--T242" ]: matches L23--L27 %% 4601 ["T262--T263" ]: matches L23--L27 %% 4602 ["T263--T270" ]: matches L23--L27 %% 4603 ["T265--T266" ]: matches L23--L27 %% 4604 ["T270--T272" ]: matches L23--L27 %% 4605 ["T273--T274" ]: matches L23--L27 %% 4606 ["T274--T275" ]: matches L23--L27 %% 4607 ["T275--T277" ]: matches L23--L27 %% 4608 ["T282--T283" ]: matches L23--L27 %% 4609 ["T282--T284" ]: matches L23--L27 %% 4610 ["T284--T286" ]: matches L23--L27 %% 4611 ["T286--T287" ]: matches L23--L27 %% 4612 ["T288--T289" ]: matches L23--L27 %% 4613 ["T290--T292" ]: matches L23--L27 %% 4614 ["T291--T292" ]: matches L23--L27 %% 4615 ["T293--T295" ]: matches L23--L27 %% 4616 ["T294--T295" ]: matches L23--L27 %% 4617 ["T294--T296" ]: matches L23--L27 %% 4618 ["T296--T297" ]: matches L23--L27 %% 4619 ["T301--T304" ]: matches L23--L27 %% 4620 ["T308--T309" ]: matches L23--L27 ?? 4621 ["T309-T312" ]: illegal value %% 4622 ["T311--T313" ]: matches L23--L27 %% 4623 ["T313--T315" ]: matches L23--L27 %% 4624 ["T315--T317" ]: matches L23--L27 %% 4625 ["T319--T320" ]: matches L23--L27 %% 4626 ["T32--T33" ]: matches L23--L27 %% 4627 ["T33" ]: matches L23 %% 4628 ["T33--T35" ]: matches L23--L27 %% 4629 ["T331--T332" ]: matches L23--L27 %% 4630 ["T355--T357" ]: matches L23--L27 %% 4631 ["T379--T381" ]: matches L23--L27 ?? 4632 ["T380-T382" ]: illegal value %% 4633 ["T403--T404" ]: matches L23--L27 %% 4634 ["T404--T405" ]: matches L23--L27 %% 4635 ["T405--T407" ]: matches L23--L27 %% 4636 ["T407--T408" ]: matches L23--L27 %% 4637 ["T408--T410" ]: matches L23--L27 %% 4638 ["T416--T418" ]: matches L23--L27 %% 4639 ["T426--T427" ]: matches L23--L27 %% 4640 ["T428--T429" ]: matches L23--L27 %% 4641 ["T434--T436" ]: matches L23--L27 %% 4642 ["T493--T503" ]: matches L23--L27 %% 4643 ["T494--T495" ]: matches L23--L27 %% 4644 ["T50--T51" ]: matches L23--L27 %% 4645 ["T56" ]: matches L23 %% 4646 ["T59--T60" ]: matches L23--L27 %% 4647 ["T68--T69" ]: matches L23--L27 %% 4648 ["T69" ]: matches L23 %% 4649 ["T69--T71" ]: matches L23--L27 %% 4650 ["T69--T72" ]: matches L23--L27 %% 4651 ["T70--T71" ]: matches L23--L27 %% 4652 ["T71--T73" ]: matches L23--L27 %% 4653 ["T72--T73" ]: matches L23--L27 %% 4654 ["T72--T85" ]: matches L23--L27 %% 4655 ["T76--T79" ]: matches L23--L27 %% 4656 ["T79--T80" ]: matches L23--L27 ?? 4657 ["TBD" ]: illegal value ?? 4658 ["VI--73--VI--76" ]: illegal value ?? 4659 ["XIV--113" ]: illegal value ?? 4660 ["[10] + 138" ]: illegal value ?? 4661 ["[11] + 138" ]: illegal value ?? 4662 ["[11]." ]: illegal value ?? 4663 ["[18]" ]: illegal value ?? 4664 ["[1] + 24" ]: illegal value ?? 4665 ["[1] + iii + 61" ]: illegal value ?? 4666 ["[1] + vii + [46]" ]: illegal value ?? 4667 ["[256]" ]: illegal value ?? 4668 ["[2] + 12" ]: illegal value ?? 4669 ["[2] + 16" ]: illegal value ?? 4670 ["[2] + 3 + 248" ]: illegal value ?? 4671 ["[2] + 51 + [1]" ]: illegal value ?? 4672 ["[2]" ]: illegal value ?? 4673 ["[384]" ]: illegal value ?? 4674 ["[3] + 105" ]: illegal value ?? 4675 ["[3] + 152" ]: illegal value ?? 4676 ["[3] + 38" ]: illegal value ?? 4677 ["[3] + 39" ]: illegal value ?? 4678 ["[3] + 63" ]: illegal value ?? 4679 ["[4] + 16 [19]" ]: illegal value ?? 4680 ["[4] + 61" ]: illegal value ?? 4681 ["[5] + 14" ]: illegal value ?? 4682 ["[5] + 152 + 3--44" ]: illegal value ?? 4683 ["[5] + 20" ]: illegal value ?? 4684 ["[5] + 354" ]: illegal value ?? 4685 ["[5] 42 [4]" ]: illegal value ?? 4686 ["[6] + 22 + [2]" ]: illegal value ?? 4687 ["[6] + 25 + [1]" ]: illegal value ?? 4688 ["[6] + 41" ]: illegal value ?? 4689 ["[6] + 59" ]: illegal value ?? 4690 ["[6] + 77" ]: illegal value ?? 4691 ["[6] 182" ]: illegal value ?? 4692 ["[72] + 19 + 12" ]: illegal value ?? 4693 ["[7] + 52" ]: illegal value ?? 4694 ["[7] + 82 + [82]" ]: illegal value ?? 4695 ["[ca. 200]" ]: illegal value ?? 4696 ["[i] + 11" ]: illegal value ?? 4697 ["[ii] + 20" ]: illegal value ?? 4698 ["[iii] + 40" ]: illegal value ?? 4699 ["[v] + 164" ]: illegal value ?? 4700 ["[vi] + 246" ]: illegal value ?? 4701 ["[xiii] + 923" ]: illegal value ?? 4702 ["[xiv] + 144" ]: illegal value ?? 4703 ["b + [4]" ]: illegal value ?? 4704 ["ca. 1 program file (IBM PC) on 1 computer disk"]: illegal value ?? 4705 ["ca. 160" ]: illegal value ?? 4706 ["ca. 175" ]: illegal value ?? 4707 ["ca. 200" ]: illegal value ?? 4708 ["ca. 250" ]: illegal value ?? 4709 ["ca. 350" ]: illegal value ?? 4710 ["ca. 400" ]: illegal value ?? 4711 ["ca. 89" ]: illegal value ?? 4712 ["d42--??" ]: illegal value %% 4713 ["i + 109" ]: matches viii + 445 ?? 4714 ["i + 12 + [11]" ]: illegal value %% 4715 ["i + 12" ]: matches viii + 445 %% 4716 ["i + 13" ]: matches viii + 445 %% 4717 ["i + 135" ]: matches viii + 445 %% 4718 ["i + 15" ]: matches viii + 445 %% 4719 ["i + 23" ]: matches viii + 445 %% 4720 ["i + 27" ]: matches viii + 445 %% 4721 ["i + 28" ]: matches viii + 445 %% 4722 ["i + 30" ]: matches viii + 445 %% 4723 ["i + 31" ]: matches viii + 445 %% 4724 ["i + 311" ]: matches viii + 445 %% 4725 ["i + 33" ]: matches viii + 445 %% 4726 ["i + 39" ]: matches viii + 445 %% 4727 ["i + 45" ]: matches viii + 445 ?? 4728 ["i + 47 + 67" ]: illegal value %% 4729 ["i + 48" ]: matches viii + 445 %% 4730 ["i + 58" ]: matches viii + 445 %% 4731 ["i + 60" ]: matches viii + 445 %% 4732 ["i + 61" ]: matches viii + 445 %% 4733 ["i + 82" ]: matches viii + 445 %% 4734 ["i + 92" ]: matches viii + 445 ?? 4735 ["i, 1--10" ]: illegal value ?? 4736 ["i, 1--14" ]: illegal value ?? 4737 ["i--ii, 1--315" ]: illegal value %% 4738 ["ii + 104" ]: matches viii + 445 %% 4739 ["ii + 105" ]: matches viii + 445 %% 4740 ["ii + 115" ]: matches viii + 445 %% 4741 ["ii + 133" ]: matches viii + 445 %% 4742 ["ii + 136" ]: matches viii + 445 %% 4743 ["ii + 139" ]: matches viii + 445 %% 4744 ["ii + 14" ]: matches viii + 445 %% 4745 ["ii + 142" ]: matches viii + 445 %% 4746 ["ii + 15" ]: matches viii + 445 %% 4747 ["ii + 153" ]: matches viii + 445 ?? 4748 ["ii + 16 + [3]" ]: illegal value %% 4749 ["ii + 16" ]: matches viii + 445 %% 4750 ["ii + 17" ]: matches viii + 445 ?? 4751 ["ii + 18 + [26]" ]: illegal value %% 4752 ["ii + 18" ]: matches viii + 445 %% 4753 ["ii + 19" ]: matches viii + 445 %% 4754 ["ii + 20" ]: matches viii + 445 %% 4755 ["ii + 223" ]: matches viii + 445 %% 4756 ["ii + 24" ]: matches viii + 445 %% 4757 ["ii + 25" ]: matches viii + 445 %% 4758 ["ii + 259" ]: matches viii + 445 %% 4759 ["ii + 27" ]: matches viii + 445 %% 4760 ["ii + 28" ]: matches viii + 445 %% 4761 ["ii + 29" ]: matches viii + 445 %% 4762 ["ii + 293" ]: matches viii + 445 %% 4763 ["ii + 31" ]: matches viii + 445 ?? 4764 ["ii + 33 + [69]" ]: illegal value %% 4765 ["ii + 34" ]: matches viii + 445 %% 4766 ["ii + 35" ]: matches viii + 445 %% 4767 ["ii + 36" ]: matches viii + 445 ?? 4768 ["ii + 37 + 38" ]: illegal value %% 4769 ["ii + 37" ]: matches viii + 445 %% 4770 ["ii + 38" ]: matches viii + 445 %% 4771 ["ii + 41" ]: matches viii + 445 %% 4772 ["ii + 42" ]: matches viii + 445 %% 4773 ["ii + 43" ]: matches viii + 445 %% 4774 ["ii + 44" ]: matches viii + 445 ?? 4775 ["ii + 45 + [6]" ]: illegal value %% 4776 ["ii + 46" ]: matches viii + 445 %% 4777 ["ii + 5" ]: matches viii + 445 %% 4778 ["ii + 50" ]: matches viii + 445 %% 4779 ["ii + 52" ]: matches viii + 445 %% 4780 ["ii + 53" ]: matches viii + 445 %% 4781 ["ii + 57" ]: matches viii + 445 ?? 4782 ["ii + 61 + [3]" ]: illegal value %% 4783 ["ii + 61" ]: matches viii + 445 %% 4784 ["ii + 62" ]: matches viii + 445 %% 4785 ["ii + 64" ]: matches viii + 445 %% 4786 ["ii + 65" ]: matches viii + 445 ?? 4787 ["ii + 66 + [11]" ]: illegal value %% 4788 ["ii + 66" ]: matches viii + 445 %% 4789 ["ii + 744" ]: matches viii + 445 ?? 4790 ["ii + 91 + [2]" ]: illegal value ?? 4791 ["ii + A--H + 101" ]: illegal value ?? 4792 ["ii + [15]" ]: illegal value ?? 4793 ["ii, 1--9" ]: illegal value ?? 4794 ["ii--??" ]: illegal value %% 4795 ["iii + 101" ]: matches viii + 445 %% 4796 ["iii + 102" ]: matches viii + 445 %% 4797 ["iii + 103" ]: matches viii + 445 %% 4798 ["iii + 104" ]: matches viii + 445 %% 4799 ["iii + 105" ]: matches viii + 445 %% 4800 ["iii + 106" ]: matches viii + 445 %% 4801 ["iii + 107" ]: matches viii + 445 %% 4802 ["iii + 108" ]: matches viii + 445 %% 4803 ["iii + 112" ]: matches viii + 445 %% 4804 ["iii + 115" ]: matches viii + 445 %% 4805 ["iii + 116" ]: matches viii + 445 %% 4806 ["iii + 12" ]: matches viii + 445 %% 4807 ["iii + 125" ]: matches viii + 445 %% 4808 ["iii + 13" ]: matches viii + 445 %% 4809 ["iii + 130" ]: matches viii + 445 %% 4810 ["iii + 132" ]: matches viii + 445 %% 4811 ["iii + 134" ]: matches viii + 445 %% 4812 ["iii + 14" ]: matches viii + 445 ?? 4813 ["iii + 15 + [17]" ]: illegal value ?? 4814 ["iii + 150 + [6]" ]: illegal value %% 4815 ["iii + 16" ]: matches viii + 445 %% 4816 ["iii + 160" ]: matches viii + 445 %% 4817 ["iii + 171" ]: matches viii + 445 %% 4818 ["iii + 177" ]: matches viii + 445 %% 4819 ["iii + 18" ]: matches viii + 445 %% 4820 ["iii + 180" ]: matches viii + 445 %% 4821 ["iii + 181" ]: matches viii + 445 %% 4822 ["iii + 183" ]: matches viii + 445 %% 4823 ["iii + 19" ]: matches viii + 445 ?? 4824 ["iii + 199 + ix" ]: illegal value %% 4825 ["iii + 20" ]: matches viii + 445 %% 4826 ["iii + 21" ]: matches viii + 445 %% 4827 ["iii + 23" ]: matches viii + 445 %% 4828 ["iii + 24" ]: matches viii + 445 %% 4829 ["iii + 25" ]: matches viii + 445 %% 4830 ["iii + 257" ]: matches viii + 445 %% 4831 ["iii + 26" ]: matches viii + 445 %% 4832 ["iii + 268" ]: matches viii + 445 %% 4833 ["iii + 29" ]: matches viii + 445 %% 4834 ["iii + 30" ]: matches viii + 445 %% 4835 ["iii + 305" ]: matches viii + 445 %% 4836 ["iii + 31" ]: matches viii + 445 %% 4837 ["iii + 314" ]: matches viii + 445 %% 4838 ["iii + 32" ]: matches viii + 445 %% 4839 ["iii + 33" ]: matches viii + 445 %% 4840 ["iii + 34" ]: matches viii + 445 ?? 4841 ["iii + 343 + 25" ]: illegal value %% 4842 ["iii + 343" ]: matches viii + 445 %% 4843 ["iii + 35" ]: matches viii + 445 %% 4844 ["iii + 36" ]: matches viii + 445 %% 4845 ["iii + 39" ]: matches viii + 445 %% 4846 ["iii + 41" ]: matches viii + 445 %% 4847 ["iii + 42" ]: matches viii + 445 %% 4848 ["iii + 425" ]: matches viii + 445 %% 4849 ["iii + 43" ]: matches viii + 445 %% 4850 ["iii + 443" ]: matches viii + 445 %% 4851 ["iii + 45" ]: matches viii + 445 %% 4852 ["iii + 46" ]: matches viii + 445 %% 4853 ["iii + 47" ]: matches viii + 445 %% 4854 ["iii + 49" ]: matches viii + 445 %% 4855 ["iii + 5" ]: matches viii + 445 %% 4856 ["iii + 50" ]: matches viii + 445 %% 4857 ["iii + 51" ]: matches viii + 445 %% 4858 ["iii + 52" ]: matches viii + 445 %% 4859 ["iii + 55" ]: matches viii + 445 %% 4860 ["iii + 57" ]: matches viii + 445 %% 4861 ["iii + 58" ]: matches viii + 445 %% 4862 ["iii + 59" ]: matches viii + 445 %% 4863 ["iii + 6" ]: matches viii + 445 %% 4864 ["iii + 60" ]: matches viii + 445 %% 4865 ["iii + 61" ]: matches viii + 445 %% 4866 ["iii + 62" ]: matches viii + 445 %% 4867 ["iii + 63" ]: matches viii + 445 %% 4868 ["iii + 64" ]: matches viii + 445 %% 4869 ["iii + 65" ]: matches viii + 445 %% 4870 ["iii + 70" ]: matches viii + 445 %% 4871 ["iii + 72" ]: matches viii + 445 %% 4872 ["iii + 75" ]: matches viii + 445 %% 4873 ["iii + 77" ]: matches viii + 445 %% 4874 ["iii + 81" ]: matches viii + 445 %% 4875 ["iii + 82" ]: matches viii + 445 %% 4876 ["iii + 83" ]: matches viii + 445 %% 4877 ["iii + 84" ]: matches viii + 445 %% 4878 ["iii + 89" ]: matches viii + 445 ?? 4879 ["iii + 9, A-85" ]: illegal value %% 4880 ["iii + 90" ]: matches viii + 445 ?? 4881 ["iii + 93." ]: illegal value %% 4882 ["iii + 94" ]: matches viii + 445 %% 4883 ["iii + 99" ]: matches viii + 445 ?? 4884 ["iii + [152]" ]: illegal value ?? 4885 ["iii + [93]" ]: illegal value ?? 4886 ["iii" ]: illegal value ?? 4887 ["iii, 1--56" ]: illegal value ?? 4888 ["iii, 212" ]: illegal value ?? 4889 ["iii--iii" ]: illegal value ?? 4890 ["iii--v" ]: illegal value ?? 4891 ["iii--x + 263" ]: illegal value %% 4892 ["iv + 100" ]: matches viii + 445 %% 4893 ["iv + 101" ]: matches viii + 445 %% 4894 ["iv + 102" ]: matches viii + 445 %% 4895 ["iv + 103" ]: matches viii + 445 %% 4896 ["iv + 105" ]: matches viii + 445 %% 4897 ["iv + 106" ]: matches viii + 445 %% 4898 ["iv + 107" ]: matches viii + 445 %% 4899 ["iv + 108" ]: matches viii + 445 %% 4900 ["iv + 109" ]: matches viii + 445 %% 4901 ["iv + 110" ]: matches viii + 445 %% 4902 ["iv + 116" ]: matches viii + 445 %% 4903 ["iv + 117" ]: matches viii + 445 %% 4904 ["iv + 120" ]: matches viii + 445 %% 4905 ["iv + 124" ]: matches viii + 445 %% 4906 ["iv + 125" ]: matches viii + 445 %% 4907 ["iv + 127" ]: matches viii + 445 %% 4908 ["iv + 128" ]: matches viii + 445 %% 4909 ["iv + 129" ]: matches viii + 445 %% 4910 ["iv + 130" ]: matches viii + 445 %% 4911 ["iv + 131" ]: matches viii + 445 %% 4912 ["iv + 132" ]: matches viii + 445 %% 4913 ["iv + 136" ]: matches viii + 445 %% 4914 ["iv + 139" ]: matches viii + 445 %% 4915 ["iv + 15" ]: matches viii + 445 %% 4916 ["iv + 150" ]: matches viii + 445 %% 4917 ["iv + 153" ]: matches viii + 445 %% 4918 ["iv + 156" ]: matches viii + 445 %% 4919 ["iv + 158" ]: matches viii + 445 %% 4920 ["iv + 165" ]: matches viii + 445 %% 4921 ["iv + 167" ]: matches viii + 445 %% 4922 ["iv + 168" ]: matches viii + 445 ?? 4923 ["iv + 17 + [1]" ]: illegal value %% 4924 ["iv + 17" ]: matches viii + 445 %% 4925 ["iv + 171" ]: matches viii + 445 %% 4926 ["iv + 173" ]: matches viii + 445 %% 4927 ["iv + 174" ]: matches viii + 445 %% 4928 ["iv + 178" ]: matches viii + 445 %% 4929 ["iv + 188" ]: matches viii + 445 ?? 4930 ["iv + 19 + 11 + [66]" ]: illegal value %% 4931 ["iv + 19" ]: matches viii + 445 %% 4932 ["iv + 192" ]: matches viii + 445 %% 4933 ["iv + 197" ]: matches viii + 445 %% 4934 ["iv + 198" ]: matches viii + 445 ?? 4935 ["iv + 20 + 22 + 25" ]: illegal value %% 4936 ["iv + 20" ]: matches viii + 445 %% 4937 ["iv + 200" ]: matches viii + 445 %% 4938 ["iv + 201" ]: matches viii + 445 %% 4939 ["iv + 203" ]: matches viii + 445 %% 4940 ["iv + 207" ]: matches viii + 445 %% 4941 ["iv + 208" ]: matches viii + 445 %% 4942 ["iv + 215" ]: matches viii + 445 %% 4943 ["iv + 218" ]: matches viii + 445 %% 4944 ["iv + 22" ]: matches viii + 445 %% 4945 ["iv + 227" ]: matches viii + 445 ?? 4946 ["iv + 23 + [18]" ]: illegal value %% 4947 ["iv + 230" ]: matches viii + 445 %% 4948 ["iv + 24" ]: matches viii + 445 %% 4949 ["iv + 246" ]: matches viii + 445 %% 4950 ["iv + 25" ]: matches viii + 445 %% 4951 ["iv + 252" ]: matches viii + 445 %% 4952 ["iv + 255" ]: matches viii + 445 %% 4953 ["iv + 269" ]: matches viii + 445 %% 4954 ["iv + 270" ]: matches viii + 445 ?? 4955 ["iv + 28 + [1]" ]: illegal value %% 4956 ["iv + 28" ]: matches viii + 445 %% 4957 ["iv + 286" ]: matches viii + 445 %% 4958 ["iv + 29" ]: matches viii + 445 %% 4959 ["iv + 30" ]: matches viii + 445 %% 4960 ["iv + 300" ]: matches viii + 445 %% 4961 ["iv + 31" ]: matches viii + 445 %% 4962 ["iv + 33" ]: matches viii + 445 %% 4963 ["iv + 34" ]: matches viii + 445 %% 4964 ["iv + 353" ]: matches viii + 445 %% 4965 ["iv + 359" ]: matches viii + 445 %% 4966 ["iv + 36" ]: matches viii + 445 %% 4967 ["iv + 38" ]: matches viii + 445 %% 4968 ["iv + 383" ]: matches viii + 445 %% 4969 ["iv + 397" ]: matches viii + 445 ?? 4970 ["iv + 4 + 184" ]: illegal value %% 4971 ["iv + 40" ]: matches viii + 445 %% 4972 ["iv + 403" ]: matches viii + 445 %% 4973 ["iv + 426" ]: matches viii + 445 %% 4974 ["iv + 45" ]: matches viii + 445 %% 4975 ["iv + 456" ]: matches viii + 445 %% 4976 ["iv + 48" ]: matches viii + 445 %% 4977 ["iv + 489" ]: matches viii + 445 %% 4978 ["iv + 49" ]: matches viii + 445 %% 4979 ["iv + 492" ]: matches viii + 445 %% 4980 ["iv + 50" ]: matches viii + 445 %% 4981 ["iv + 509" ]: matches viii + 445 %% 4982 ["iv + 51" ]: matches viii + 445 %% 4983 ["iv + 52" ]: matches viii + 445 %% 4984 ["iv + 53" ]: matches viii + 445 %% 4985 ["iv + 54" ]: matches viii + 445 %% 4986 ["iv + 548" ]: matches viii + 445 %% 4987 ["iv + 55" ]: matches viii + 445 %% 4988 ["iv + 56" ]: matches viii + 445 %% 4989 ["iv + 59" ]: matches viii + 445 ?? 4990 ["iv + 6 + 22 + 30" ]: illegal value %% 4991 ["iv + 61" ]: matches viii + 445 %% 4992 ["iv + 63" ]: matches viii + 445 %% 4993 ["iv + 64" ]: matches viii + 445 ?? 4994 ["iv + 64." ]: illegal value %% 4995 ["iv + 65" ]: matches viii + 445 %% 4996 ["iv + 67" ]: matches viii + 445 %% 4997 ["iv + 68" ]: matches viii + 445 %% 4998 ["iv + 7" ]: matches viii + 445 %% 4999 ["iv + 70" ]: matches viii + 445 ?? 5000 ["iv + 73 [i.e. 165]" ]: illegal value %% 5001 ["iv + 73" ]: matches viii + 445 %% 5002 ["iv + 74" ]: matches viii + 445 %% 5003 ["iv + 76" ]: matches viii + 445 ?? 5004 ["iv + 77 + [1]" ]: illegal value %% 5005 ["iv + 77" ]: matches viii + 445 %% 5006 ["iv + 79" ]: matches viii + 445 ?? 5007 ["iv + 79." ]: illegal value %% 5008 ["iv + 82" ]: matches viii + 445 %% 5009 ["iv + 83" ]: matches viii + 445 %% 5010 ["iv + 84" ]: matches viii + 445 %% 5011 ["iv + 85" ]: matches viii + 445 %% 5012 ["iv + 86" ]: matches viii + 445 %% 5013 ["iv + 90" ]: matches viii + 445 %% 5014 ["iv + 91" ]: matches viii + 445 %% 5015 ["iv + 93" ]: matches viii + 445 %% 5016 ["iv + 95" ]: matches viii + 445 %% 5017 ["iv + 96" ]: matches viii + 445 %% 5018 ["iv + 99" ]: matches viii + 445 ?? 5019 ["iv+86" ]: illegal value ?? 5020 ["iv, 1--88" ]: illegal value ?? 5021 ["iv, 101--126, 201--239, 301--380, 401--441"]: illegal value %% 5022 ["ix + 101" ]: matches viii + 445 ?? 5023 ["ix + 160 + [7] + [64]" ]: illegal value ?? 5024 ["ix + 168 l" ]: illegal value %% 5025 ["ix + 171" ]: matches viii + 445 ?? 5026 ["ix + 187 + 3 appendices"]: illegal value ?? 5027 ["ix + 194 + 68" ]: illegal value %% 5028 ["ix + 663" ]: matches viii + 445 ?? 5029 ["ix + 664 + [53]" ]: illegal value %% 5030 ["ix + 67" ]: matches viii + 445 %% 5031 ["ix + 99" ]: matches viii + 445 ?? 5032 ["ix + [171]" ]: illegal value ?? 5033 ["ix + [234]" ]: illegal value ?? 5034 ["ix + iv + 429" ]: illegal value ?? 5035 ["ix" ]: illegal value ?? 5036 ["ix--xxi" ]: illegal value %% 5037 ["l + 273" ]: matches viii + 445 ?? 5038 ["l v." ]: illegal value %% 5039 ["lvi + 1405" ]: matches viii + 445 %% 5040 ["lviii + 1387" ]: matches viii + 445 %% 5041 ["lviii + 1540" ]: matches viii + 445 %% 5042 ["lviii + 2034" ]: matches viii + 445 %% 5043 ["lxv + 644" ]: matches viii + 445 %% 5044 ["lxxi + 719" ]: matches viii + 445 %% 5045 ["lxxiv + 790" ]: matches viii + 445 ?? 5046 ["program files (IBM PC) on 1 computer disk manual."]: illegal value ?? 5047 ["s118-s138" ]: illegal value %% 5048 ["s139--s154" ]: matches L23--L27 ?? 5049 ["s139-s154" ]: illegal value ?? 5050 ["s14-s26" ]: illegal value %% 5051 ["s155--s165" ]: matches L23--L27 ?? 5052 ["s155-s165" ]: illegal value %% 5053 ["s166--s202" ]: matches L23--L27 ?? 5054 ["s166-s202" ]: illegal value %% 5055 ["s2--s13" ]: matches L23--L27 ?? 5056 ["s2-s13" ]: illegal value ?? 5057 ["s203-s219" ]: illegal value %% 5058 ["s220--s226" ]: matches L23--L27 ?? 5059 ["s220-s226" ]: illegal value %% 5060 ["s227--s287" ]: matches L23--L27 ?? 5061 ["s227-s287" ]: illegal value ?? 5062 ["s27-s42" ]: illegal value ?? 5063 ["s43-s58" ]: illegal value ?? 5064 ["s59-s72" ]: illegal value ?? 5065 ["s73-s95" ]: illegal value ?? 5066 ["s96-s117" ]: illegal value ?? 5067 ["to appear" ]: illegal value ?? 5068 ["to be published" ]: illegal value %% 5069 ["v + 104" ]: matches viii + 445 %% 5070 ["v + 105" ]: matches viii + 445 %% 5071 ["v + 112" ]: matches viii + 445 ?? 5072 ["v + 1152 + [80] (doubled--up)"]: illegal value %% 5073 ["v + 117" ]: matches viii + 445 %% 5074 ["v + 29" ]: matches viii + 445 ?? 5075 ["v + 308 + x" ]: illegal value ?? 5076 ["v + 491 + ii + 97 + ii + 107 + 12"]: illegal value ?? 5077 ["v + 60 + 3" ]: illegal value ?? 5078 ["v + 60 + [19]" ]: illegal value ?? 5079 ["v + 60 + [23]" ]: illegal value ?? 5080 ["v + 60 + [24]" ]: illegal value %% 5081 ["v + 60" ]: matches viii + 445 ?? 5082 ["v + 61 + 7" ]: illegal value ?? 5083 ["v + 81 + [34]" ]: illegal value ?? 5084 ["v + [285]" ]: illegal value ?? 5085 ["v + [338]" ]: illegal value ?? 5086 ["v" ]: illegal value ?? 5087 ["v, 1--51" ]: illegal value ?? 5088 ["v, 1--85" ]: illegal value ?? 5089 ["v--vi" ]: illegal value ?? 5090 ["v. <1--2 >" ]: illegal value ?? 5091 ["v." ]: illegal value ?? 5092 ["various (??)" ]: illegal value ?? 5093 ["various" ]: illegal value %% 5094 ["vi + 100" ]: matches viii + 445 ?? 5095 ["vi + 1152 + [79]" ]: illegal value ?? 5096 ["vi + 1152 columns" ]: illegal value ?? 5097 ["vi + 1232 + [75] (doubled--up)"]: illegal value ?? 5098 ["vi + 1232 + [75]" ]: illegal value %% 5099 ["vi + 136" ]: matches viii + 445 ?? 5100 ["vi + 136--341" ]: illegal value ?? 5101 ["vi + 228 + 1" ]: illegal value %% 5102 ["vi + 448" ]: matches viii + 445 ?? 5103 ["vi + 45 + 1" ]: illegal value ?? 5104 ["vi + 50 + 10" ]: illegal value ?? 5105 ["vi + 53[1]" ]: illegal value ?? 5106 ["vi + 64." ]: illegal value ?? 5107 ["vi + 65 + [2]" ]: illegal value %% 5108 ["vi + 65" ]: matches viii + 445 %% 5109 ["vi + 658" ]: matches viii + 445 ?? 5110 ["vi + 66 + [45] + [1]" ]: illegal value ?? 5111 ["vi + [124]" ]: illegal value ?? 5112 ["vi + [25]" ]: illegal value ?? 5113 ["vii + 1232 columns" ]: illegal value ?? 5114 ["vii + 2--154" ]: illegal value ?? 5115 ["vii + 217 + 16 [i.e. 17]"]: illegal value ?? 5116 ["vii + 282 + [113]" ]: illegal value ?? 5117 ["vii + 357 + xvi" ]: illegal value ?? 5118 ["vii + 9 + [3] + 1" ]: illegal value %% 5119 ["vii + 96" ]: matches viii + 445 ?? 5120 ["vii + 97 l" ]: illegal value ?? 5121 ["vii + I--59" ]: illegal value ?? 5122 ["vii + [100]" ]: illegal value ?? 5123 ["vii + [111]" ]: illegal value ?? 5124 ["vii + [192]" ]: illegal value ?? 5125 ["vii + [200]" ]: illegal value ?? 5126 ["vii + [various]" ]: illegal value ?? 5127 ["vii" ]: illegal value ?? 5128 ["vii--??" ]: illegal value %% 5129 ["viii + 100" ]: matches viii + 445 ?? 5130 ["viii + 12 + 794 + [173]"]: illegal value ?? 5131 ["viii + 191 + [52]" ]: illegal value ?? 5132 ["viii + 216 + 43" ]: illegal value ?? 5133 ["viii + 216 + iii + 43" ]: illegal value %% 5134 ["viii + 216" ]: matches viii + 445 ?? 5135 ["viii + 36 + 9" ]: illegal value %% 5136 ["viii + 36" ]: matches viii + 445 %% 5137 ["viii + 98" ]: matches viii + 445 ?? 5138 ["viii + [125]" ]: illegal value ?? 5139 ["viii + [181]" ]: illegal value %% 5140 ["x + 100" ]: matches viii + 445 ?? 5141 ["x + 125." ]: illegal value ?? 5142 ["x + 198 + 48 + 6" ]: illegal value ?? 5143 ["x + 48 + [25]" ]: illegal value ?? 5144 ["x + 492 (A1--A18 and B1--B14 and I1--I19)"]: illegal value ?? 5145 ["x + 492 + A22 + B16 + I18"]: illegal value ?? 5146 ["x + 492 + appendices" ]: illegal value ?? 5147 ["x + 92 + [1]" ]: illegal value ?? 5148 ["x + [241]" ]: illegal value ?? 5149 ["x+235" ]: illegal value ?? 5150 ["x+578" ]: illegal value %% 5151 ["xi + 108" ]: matches viii + 445 ?? 5152 ["xi + 201 + 105" ]: illegal value ?? 5153 ["xi + 45 + 201 + 105" ]: illegal value %% 5154 ["xi + 450" ]: matches viii + 445 %% 5155 ["xi + 669" ]: matches viii + 445 ?? 5156 ["xi + 679 + 36 + 7" ]: illegal value ?? 5157 ["xi" ]: illegal value ?? 5158 ["xi--xii" ]: illegal value ?? 5159 ["xi--xvi" ]: illegal value %% 5160 ["xii + 100" ]: matches viii + 445 ?? 5161 ["xii + 1084 + 12" ]: illegal value ?? 5162 ["xii + 152 + [91]" ]: illegal value ?? 5163 ["xii + 157 + [2]" ]: illegal value ?? 5164 ["xii + 162 + 97" ]: illegal value ?? 5165 ["xii + 377 + 23" ]: illegal value ?? 5166 ["xii + 384 + [55]" ]: illegal value %% 5167 ["xii + 385" ]: matches viii + 445 %% 5168 ["xii + 387" ]: matches viii + 445 ?? 5169 ["xii + 389 + 76 + 16" ]: illegal value ?? 5170 ["xii + 408 + [5]" ]: illegal value ?? 5171 ["xii + 460 + [6]" ]: illegal value ?? 5172 ["xii + 522 (or xii + 514??)"]: illegal value ?? 5173 ["xii + 538 + 57" ]: illegal value ?? 5174 ["xii + 607 + A18 + B16 + I18"]: illegal value ?? 5175 ["xii+241" ]: illegal value ?? 5176 ["xiii + 423 + 33 + 3" ]: illegal value %% 5177 ["xiii + 457, with 230 illustrations"]: matches viii + 445, with 30 illustrations ?? 5178 ["xiii + 464 + 10" ]: illegal value ?? 5179 ["xiii" ]: illegal value ?? 5180 ["xiii, 320" ]: illegal value ?? 5181 ["xiii, 555" ]: illegal value ?? 5182 ["xiv + 383 + 4" ]: illegal value ?? 5183 ["xiv + 432 + 8" ]: illegal value ?? 5184 ["xiv + 518 + 9" ]: illegal value ?? 5185 ["xix + 1041 + iv" ]: illegal value ?? 5186 ["xix + 310 (or xv + 377)"]: illegal value ?? 5187 ["xix + 525 + 52 pages back matter"]: illegal value ?? 5188 ["xv + 118 + listings" ]: illegal value ?? 5189 ["xv + 199 + 8" ]: illegal value ?? 5190 ["xv + 527 + 4" ]: illegal value ?? 5191 ["xv + 534 + 117 + [41]" ]: illegal value ?? 5192 ["xvi + 102 + 6" ]: illegal value ?? 5193 ["xvi + 404 + [68]" ]: illegal value ?? 5194 ["xvi + 570 + Appendix + Index"]: illegal value ?? 5195 ["xvi + 595 (or xix + 861??)"]: illegal value ?? 5196 ["xvi + 637 + 67 + 7" ]: illegal value ?? 5197 ["xvi + 984, with 686 illustrations, 40 in color"]: illegal value ?? 5198 ["xvi + x + 390" ]: illegal value ?? 5199 ["xvii + 254 + 12" ]: illegal value ?? 5200 ["xviii + 568 + 92" ]: illegal value ?? 5201 ["xviii + [265]" ]: illegal value ?? 5202 ["xx + 1241 + 1" ]: illegal value ?? 5203 ["xx + 1269 + 5" ]: illegal value ?? 5204 ["xx + 525 [63]" ]: illegal value ?? 5205 ["xx + 793 " ]: illegal value ?? 5206 ["xxi + 567 + [4]" ]: illegal value ?? 5207 ["xxi + 640 + [30]" ]: illegal value ?? 5208 ["xxi + 666 + 119" ]: illegal value ?? 5209 ["xxii + 416 + 6" ]: illegal value ?? 5210 ["xxiii + 491 + 509 + 502"]: illegal value ?? 5211 ["xxiv + 648 + appendices"]: illegal value ?? 5212 ["xxvi + 438 + A182 + B62 + C6 + D4 + E4"]: illegal value ?? 5213 ["xxvi + 779 + Appendix + Index"]: illegal value ?? 5214 ["xxvii + 797 + vii" ]: illegal value ?? 5215 ["xxvii" ]: illegal value ?? 5216 ["xxviii + 594 + appendices"]: illegal value ?? 5217 ["xxviii + 638 + [169]" ]: illegal value ?? 5218 ["xxxvii + 23 + 2154" ]: illegal value ?? 5219 [ pages = {154--165} ]: illegal value ?? 5220 [ pages = {1973--1986}]: illegal value ?? 5221 [ pages = {3--29} ]: illegal value ?? 5222 [ pages = {360--361} ]: illegal value ?? 5223 [ pages = {491-496} ]: illegal value ?? 5224 [ pages = {937--940} ]: illegal value ?? 5225 [" 24 -- 85" ]: illegal value ?? 5226 [" 356-372" ]: illegal value ?? 5227 ["" ]: illegal value ?? 5228 ["(1--29)-(1--58)" ]: illegal value ?? 5229 ["(1--59)-(1--113)" ]: illegal value ?? 5230 ["(to appear)" ]: illegal value ?? 5231 ["(various)" ]: illegal value ?? 5232 ["0-12-696201-4" ]: illegal value ?? 5233 ["1 + 22" ]: illegal value ?? 5234 ["1 -- 10" ]: illegal value ?? 5235 ["1 -- 11" ]: illegal value ?? 5236 ["1 -- 17" ]: illegal value ?? 5237 ["1 -- 22" ]: illegal value ?? 5238 ["1 -- 40" ]: illegal value ?? 5239 ["1 -- 6" ]: illegal value ?? 5240 ["1 -- 62" ]: illegal value ?? 5241 ["1 -- 7" ]: illegal value ?? 5242 ["1 -- 74, " ]: illegal value ?? 5243 ["1 -- 8" ]: illegal value ?? 5244 ["1 card" ]: illegal value ?? 5245 ["1 cassette." ]: illegal value ?? 5246 ["1 computer disk" ]: illegal value ?? 5247 ["1 microfiche" ]: illegal value ?? 5248 ["1 program file (IBM PC) on 2 computer disks manuals."]: illegal value ?? 5249 ["1 program file (IBM--PC) on 1 computer disk manual."]: illegal value ?? 5250 ["1 program file on 6 computer disks"]: illegal value ?? 5251 ["1 reel + 5 min." ]: illegal value ?? 5252 ["1 reel + 6 min." ]: illegal value ?? 5253 ["1 reel + 7 min." ]: illegal value ?? 5254 ["1 reel + 8 min." ]: illegal value ?? 5255 ["1 reel + ca. 20 min." ]: illegal value ?? 5256 ["1 roll. guide." ]: illegal value ?? 5257 ["1 v" ]: illegal value ?? 5258 ["1 v. (various paging) 29 cm."]: illegal value ?? 5259 ["1 v. (various pagings)"]: illegal value ?? 5260 ["1 v. disks (5 1/4 in.)"]: illegal value ?? 5261 ["1 video cassette + 25 min. b and w."]: illegal value ?? 5262 ["1 videocassette (13 min.)"]: illegal value ?? 5263 ["1 videocassette (32 min.)"]: illegal value %% 5264 ["1, 113" ]: matches 23, 27 %% 5265 ["1, 141" ]: matches 23, 27 %% 5266 ["1, 16" ]: matches 23, 27 %% 5267 ["1, 17" ]: matches 23, 27 ?? 5268 ["1, 3--13, 16--19" ]: illegal value ?? 5269 ["1, 3--4, 6" ]: illegal value %% 5270 ["1, 4, 13" ]: matches 23, 27, 45 ?? 5271 ["1--10 (of xii + 323)" ]: illegal value ?? 5272 ["1--13 (of x + 787)" ]: illegal value %% 5273 [ ]: ignored %% 5274 [ ]: ignored ?? 5275 ["" ]: illegal value ?? 5276 ["(Fourth Series) 1" ]: illegal value ?? 5277 ["(to appear)" ]: illegal value %% 5278 ["0" ]: matches 27 %% 5279 ["01" ]: matches 27 %% 5280 ["02" ]: matches 27 %% 5281 ["07" ]: matches 27 %% 5282 ["09" ]: matches 27 ?? 5283 ["1 (1837--1853)" ]: illegal value %% 5284 ["1" ]: matches 27 ?? 5285 ["1(4)" ]: illegal value ?? 5286 ["1.2" ]: illegal value %% 5287 ["1/1977" ]: matches 27/3 %% 5288 ["1/2" ]: matches 27/3 %% 5289 ["10" ]: matches 27 ?? 5290 ["10, 11" ]: illegal value %% 5291 ["10-11" ]: matches SMC-13 %% 5292 ["100" ]: matches 27 %% 5293 ["109A" ]: matches 27A %% 5294 ["11 and 12" ]: matches 11 and 12 ?? 5295 ["11, 4" ]: illegal value ?? 5296 ["11, 9" ]: illegal value ?? 5297 ["113-C" ]: illegal value %% 5298 ["114/115" ]: matches 27/3 %% 5299 ["116A" ]: matches 27A %% 5300 ["11D" ]: matches 27A %% 5301 ["12 and 13" ]: matches 11 and 12 ?? 5302 ["12, 1" ]: illegal value %% 5303 ["12/13" ]: matches 27/3 ?? 5304 ["122/3/4" ]: illegal value ?? 5305 ["1259-V" ]: illegal value %% 5306 ["127A" ]: matches 27A %% 5307 ["12A" ]: matches 27A ?? 5308 ["13, 14" ]: illegal value ?? 5309 ["13, 2" ]: illegal value ?? 5310 ["13, 4" ]: illegal value ?? 5311 ["134, No. 2" ]: illegal value %% 5312 ["135B" ]: matches 27A ?? 5313 ["14 (or 9?)" ]: illegal value ?? 5314 ["14--15" ]: illegal value %% 5315 ["140B" ]: matches 27A %% 5316 ["148B" ]: matches 27A ?? 5317 ["15 (1-2)" ]: illegal value ?? 5318 ["15, 2" ]: illegal value ?? 5319 ["15.1" ]: illegal value ?? 5320 ["15.3" ]: illegal value %% 5321 ["152/153" ]: matches 27/3 %% 5322 ["154-156" ]: matches SMC-13 %% 5323 ["161B" ]: matches 27A ?? 5324 ["162--164" ]: illegal value %% 5325 ["162-164" ]: matches SMC-13 %% 5326 ["167B" ]: matches 27A %% 5327 ["16S" ]: matches 27A ?? 5328 ["17, no. 3" ]: illegal value %% 5329 ["18 Supl" ]: matches Special issue A ?? 5330 ["18, 4" ]: illegal value %% 5331 ["18/19" ]: matches 27/3 ?? 5332 ["183, 292" ]: illegal value ?? 5333 ["185, 186" ]: illegal value %% 5334 ["18\slash 19" ]: matches 27 ?? 5335 ["19, 1" ]: illegal value ?? 5336 ["19, 3" ]: illegal value ?? 5337 ["19, No. 3" ]: illegal value ?? 5338 ["19. Jahrg." ]: illegal value %% 5339 ["19/20" ]: matches 27/3 %% 5340 ["197/198" ]: matches 27/3 %% 5341 ["1984/24" ]: matches 27/3 %% 5342 ["1S" ]: matches 27A ?? 5343 ["2(4)" ]: illegal value ?? 5344 ["2. Anwendungen" ]: illegal value %% 5345 ["2/85" ]: matches 27/3 ?? 5346 ["20 (or 19??)" ]: illegal value %% 5347 ["20 B" ]: matches Special issue A ?? 5348 ["20, 23, 25" ]: illegal value %% 5349 ["20/21" ]: matches 27/3 ?? 5350 ["203, 204" ]: illegal value %% 5351 ["208/209" ]: matches 27/3 ?? 5352 ["21, 2" ]: illegal value ?? 5353 ["21, Supplement 6" ]: illegal value %% 5354 ["212/213" ]: matches 27/3 %% 5355 ["217A" ]: matches 27A %% 5356 ["22 B" ]: matches Special issue A ?? 5357 ["221 (or 213??)" ]: illegal value ?? 5358 ["23(9)" ]: illegal value %% 5359 ["2304-16" ]: matches SMC-13 %% 5360 ["239/240" ]: matches 27/3 ?? 5361 ["24, 3" ]: illegal value ?? 5362 ["24, no. 9" ]: illegal value ?? 5363 ["249, 250" ]: illegal value ?? 5364 ["25 (or 26??)" ]: illegal value ?? 5365 ["254, 255" ]: illegal value ?? 5366 ["258, 259" ]: illegal value ?? 5367 ["26 (or 25??)" ]: illegal value ?? 5368 ["26, 2" ]: illegal value ?? 5369 ["26.4" ]: illegal value %% 5370 ["26A" ]: matches 27A %% 5371 ["26B" ]: matches 27A ?? 5372 ["27, no. 12" ]: illegal value %% 5373 ["27S" ]: matches 27A ?? 5374 ["298, Series III" ]: illegal value %% 5375 ["299/300" ]: matches 27/3 %% 5376 ["2S" ]: matches 27A ?? 5377 ["3, 2" ]: illegal value ?? 5378 ["3, 4" ]: illegal value ?? 5379 ["3--4" ]: illegal value ?? 5380 ["3. Algorithms and applications"]: illegal value %% 5381 ["3/1975" ]: matches 27/3 %% 5382 ["3/1979" ]: matches 27/3 %% 5383 ["3/4" ]: matches 27/3 ?? 5384 ["30--31" ]: illegal value %% 5385 ["307/308" ]: matches 27/3 ?? 5386 ["32, no. 2" ]: illegal value %% 5387 ["32-1" ]: matches SMC-13 %% 5388 ["32-2" ]: matches SMC-13 ?? 5389 ["33,34" ]: illegal value %% 5390 ["35-37" ]: matches SMC-13 ?? 5391 ["351, 352" ]: illegal value ?? 5392 ["36 (or 38??)" ]: illegal value ?? 5393 ["36, no. 12" ]: illegal value ?? 5394 ["365, 366" ]: illegal value ?? 5395 ["37??" ]: illegal value %% 5396 ["37A" ]: matches 27A %% 5397 ["38A" ]: matches 27A %% 5398 ["39B" ]: matches 27A %% 5399 ["3M" ]: matches 27A %% 5400 ["3S" ]: matches 27A ?? 5401 ["4 (No. 1)" ]: illegal value ?? 5402 ["4 (or 11??)" ]: illegal value ?? 5403 ["40, 41" ]: illegal value ?? 5404 ["40--41" ]: illegal value %% 5405 ["40A" ]: matches 27A ?? 5406 ["41, 4" ]: illegal value ?? 5407 ["41, pt. 1" ]: illegal value %% 5408 ["41B" ]: matches 27A %% 5409 ["42A" ]: matches 27A %% 5410 ["44A" ]: matches 27A ?? 5411 ["46--47" ]: illegal value ?? 5412 ["47.1 - 47.7" ]: illegal value %% 5413 ["475A" ]: matches 27A %% 5414 ["47A" ]: matches 27A %% 5415 ["4M" ]: matches 27A ?? 5416 ["5 (1976)" ]: illegal value ?? 5417 ["5 (??)" ]: illegal value ?? 5418 ["5, 1" ]: illegal value ?? 5419 ["5, Numerical Methods in Thermal Problems"]: illegal value ?? 5420 ["50, Pt. 4" ]: illegal value ?? 5421 ["505, 506" ]: illegal value %% 5422 ["52/53" ]: matches 27/3 %% 5423 ["54/55" ]: matches 27/3 ?? 5424 ["551, 552" ]: illegal value %% 5425 ["55B" ]: matches 27A %% 5426 ["56A" ]: matches 27A %% 5427 ["5S" ]: matches 27A ?? 5428 ["6 (No. 3)" ]: illegal value ?? 5429 ["62--63" ]: illegal value %% 5430 ["62A" ]: matches 27A ?? 5431 ["63(4)" ]: illegal value %% 5432 ["634-677" ]: matches SMC-13 ?? 5433 ["63:207" ]: illegal value %% 5434 ["63A" ]: matches 27A %% 5435 ["6A" ]: matches 27A %% 5436 ["6B" ]: matches 27A %% 5437 ["6S" ]: matches 27A ?? 5438 ["70, no. 6" ]: illegal value %% 5439 ["71B" ]: matches 27A ?? 5440 ["728-P" ]: illegal value %% 5441 ["74b" ]: matches 27A %% 5442 ["76-3" ]: matches SMC-13 ?? 5443 ["78--257" ]: illegal value %% 5444 ["78/9" ]: matches 27/3 %% 5445 ["79-1458" ]: matches SMC-13 %% 5446 ["7A" ]: matches 27A %% 5447 ["7B" ]: matches 27A ?? 5448 ["800, 801" ]: illegal value ?? 5449 ["81--1025" ]: illegal value ?? 5450 ["81--1027" ]: illegal value ?? 5451 ["81--1245" ]: illegal value %% 5452 ["81-1028" ]: matches SMC-13 %% 5453 ["81-1259" ]: matches SMC-13 %% 5454 ["81/6" ]: matches 27/3 %% 5455 ["81A" ]: matches 27A ?? 5456 ["82--0931" ]: illegal value ?? 5457 ["82--0976" ]: illegal value %% 5458 ["82/1" ]: matches 27/3 ?? 5459 ["83--0034" ]: illegal value ?? 5460 ["83--0124" ]: illegal value ?? 5461 ["83--1885" ]: illegal value ?? 5462 ["83--1896" ]: illegal value ?? 5463 ["83--1945" ]: illegal value %% 5464 ["83-1893" ]: matches SMC-13 %% 5465 ["83A" ]: matches 27A %% 5466 ["84-0093" ]: matches SMC-13 ?? 5467 ["85--0017" ]: illegal value ?? 5468 ["85--0295" ]: illegal value ?? 5469 ["85--1493--CP" ]: illegal value ?? 5470 ["85--1500" ]: illegal value ?? 5471 ["85--1523CP" ]: illegal value %% 5472 ["85-0293" ]: matches SMC-13 ?? 5473 ["85-1508-CP" ]: illegal value %% 5474 ["85A" ]: matches 27A ?? 5475 ["86--1063" ]: illegal value ?? 5476 ["86--1081" ]: illegal value %% 5477 ["86/87" ]: matches 27/3 ?? 5478 ["87--0275" ]: illegal value ?? 5479 ["87--0353" ]: illegal value ?? 5480 ["87--0560" ]: illegal value ?? 5481 ["87--0602" ]: illegal value ?? 5482 ["87--1152 CP" ]: illegal value ?? 5483 ["87--2627--CP" ]: illegal value ?? 5484 ["88--0224" ]: illegal value ?? 5485 ["88--0715" ]: illegal value ?? 5486 ["88-1997 CP" ]: illegal value %% 5487 ["88/89" ]: matches 27/3 ?? 5488 ["89--0121" ]: illegal value ?? 5489 ["89--0274" ]: illegal value ?? 5490 ["89--0338" ]: illegal value ?? 5491 ["89--0548" ]: illegal value %% 5492 ["89-1791" ]: matches SMC-13 %% 5493 ["89-1949" ]: matches SMC-13 %% 5494 ["89-1953" ]: matches SMC-13 %% 5495 ["89/2" ]: matches 27/3 ?? 5496 ["91--1572" ]: illegal value ?? 5497 ["91--1596" ]: illegal value %% 5498 ["91-101" ]: matches SMC-13 ?? 5499 ["92--0449" ]: illegal value ?? 5500 ["93--0677" ]: illegal value %% 5501 ["93-0236" ]: matches SMC-13 %% 5502 ["93B" ]: matches 27A %% 5503 ["95/2" ]: matches 27/3 %% 5504 ["96A" ]: matches 27A %% 5505 ["99B" ]: matches 27A ?? 5506 ["??" ]: illegal value ?? 5507 ["????" ]: illegal value %% 5508 ["A 248" ]: matches Special issue A %% 5509 ["A 323" ]: matches Special issue A %% 5510 ["A" ]: matches VIII ?? 5511 ["A(2)" ]: illegal value %% 5512 ["A-12" ]: matches SMC-13 %% 5513 ["A-2" ]: matches SMC-13 %% 5514 ["A-48" ]: matches SMC-13 %% 5515 ["A-52" ]: matches SMC-13 %% 5516 ["A12" ]: matches Special issue A %% 5517 ["A128" ]: matches Special issue A %% 5518 ["A14" ]: matches Special issue A %% 5519 ["A15" ]: matches Special issue A %% 5520 ["A16" ]: matches Special issue A %% 5521 ["A20" ]: matches Special issue A %% 5522 ["A258" ]: matches Special issue A %% 5523 ["A298" ]: matches Special issue A %% 5524 ["A39" ]: matches Special issue A %% 5525 ["A405" ]: matches Special issue A ?? 5526 ["A: Tutorials" ]: illegal value %% 5527 ["AC-16" ]: matches SMC-13 %% 5528 ["AC-22" ]: matches SMC-13 %% 5529 ["AC-23" ]: matches SMC-13 %% 5530 ["AC-24" ]: matches SMC-13 %% 5531 ["AC-25" ]: matches SMC-13 %% 5532 ["AC-26" ]: matches SMC-13 %% 5533 ["AC-27" ]: matches SMC-13 %% 5534 ["AC-28" ]: matches SMC-13 %% 5535 ["AC-29" ]: matches SMC-13 %% 5536 ["AC-30" ]: matches SMC-13 %% 5537 ["AC-32" ]: matches SMC-13 %% 5538 ["AC-33" ]: matches SMC-13 %% 5539 ["AC-34" ]: matches SMC-13 %% 5540 ["AC-35" ]: matches SMC-13 %% 5541 ["AC-36" ]: matches SMC-13 %% 5542 ["AC-37" ]: matches SMC-13 %% 5543 ["AC-39" ]: matches SMC-13 ?? 5544 ["AC-??" ]: illegal value %% 5545 ["AES 24" ]: matches Special issue A %% 5546 ["AES-11" ]: matches SMC-13 %% 5547 ["AES-12" ]: matches SMC-13 %% 5548 ["AES-22" ]: matches SMC-13 %% 5549 ["AES-23" ]: matches SMC-13 %% 5550 ["AES-5" ]: matches SMC-13 ?? 5551 ["AMD vo. 86" ]: illegal value %% 5552 ["AP-24" ]: matches SMC-13 %% 5553 ["AP-33" ]: matches SMC-13 %% 5554 ["AP-34" ]: matches SMC-13 %% 5555 ["ASSP-24" ]: matches SMC-13 %% 5556 ["ASSP-27" ]: matches SMC-13 %% 5557 ["ASSP-28" ]: matches SMC-13 %% 5558 ["ASSP-29" ]: matches SMC-13 %% 5559 ["ASSP-31" ]: matches SMC-13 %% 5560 ["ASSP-32" ]: matches SMC-13 %% 5561 ["ASSP-34" ]: matches SMC-13 %% 5562 ["ASSP-35" ]: matches SMC-13 %% 5563 ["ASSP-36" ]: matches SMC-13 %% 5564 ["ASSP-37" ]: matches SMC-13 ?? 5565 ["Annual Conference Series, 1995"]: illegal value %% 5566 ["B" ]: matches VIII %% 5567 ["B-10" ]: matches SMC-13 %% 5568 ["B1" ]: matches Special issue A %% 5569 ["B177" ]: matches Special issue A %% 5570 ["B207" ]: matches Special issue A %% 5571 ["B28" ]: matches Special issue A %% 5572 ["B288" ]: matches Special issue A %% 5573 ["B329" ]: matches Special issue A %% 5574 ["B354" ]: matches Special issue A %% 5575 ["B368" ]: matches Special issue A %% 5576 ["B374" ]: matches Special issue A %% 5577 ["B376" ]: matches Special issue A %% 5578 ["B380" ]: matches Special issue A %% 5579 ["B401" ]: matches Special issue A %% 5580 ["B7" ]: matches Special issue A %% 5581 ["B84" ]: matches Special issue A ?? 5582 ["B: Formal Models and Semantics"]: illegal value %% 5583 ["C" ]: matches VIII ?? 5584 ["C--22" ]: illegal value ?? 5585 ["C--35" ]: illegal value ?? 5586 ["C--36" ]: illegal value %% 5587 ["C-17" ]: matches SMC-13 %% 5588 ["C-18" ]: matches SMC-13 %% 5589 ["C-19" ]: matches SMC-13 %% 5590 ["C-20" ]: matches SMC-13 %% 5591 ["C-22" ]: matches SMC-13 %% 5592 ["C-23" ]: matches SMC-13 %% 5593 ["C-24" ]: matches SMC-13 %% 5594 ["C-25" ]: matches SMC-13 %% 5595 ["C-26" ]: matches SMC-13 %% 5596 ["C-27" ]: matches SMC-13 %% 5597 ["C-28" ]: matches SMC-13 %% 5598 ["C-29" ]: matches SMC-13 %% 5599 ["C-30" ]: matches SMC-13 %% 5600 ["C-31" ]: matches SMC-13 %% 5601 ["C-32" ]: matches SMC-13 %% 5602 ["C-33" ]: matches SMC-13 %% 5603 ["C-34" ]: matches SMC-13 %% 5604 ["C-35" ]: matches SMC-13 %% 5605 ["C-36" ]: matches SMC-13 %% 5606 ["C-37" ]: matches SMC-13 %% 5607 ["C-39" ]: matches SMC-13 %% 5608 ["C-40" ]: matches SMC-13 %% 5609 ["C25" ]: matches Special issue A %% 5610 ["C26" ]: matches Special issue A %% 5611 ["CAD-1" ]: matches SMC-13 %% 5612 ["CAD-4" ]: matches SMC-13 ?? 5613 ["CAS--28" ]: illegal value %% 5614 ["CAS-26" ]: matches SMC-13 %% 5615 ["CAS-34" ]: matches SMC-13 %% 5616 ["CE-29" ]: matches SMC-13 %% 5617 ["COM-30" ]: matches SMC-13 %% 5618 ["COM-31" ]: matches SMC-13 %% 5619 ["CP 3224" ]: matches Special issue A %% 5620 ["CXXIV" ]: matches VIII %% 5621 ["D" ]: matches VIII %% 5622 ["D40" ]: matches Special issue A %% 5623 ["E" ]: matches VIII %% 5624 ["E74" ]: matches Special issue A ?? 5625 ["E75-A" ]: illegal value ?? 5626 ["E76--D" ]: illegal value ?? 5627 ["E77-A" ]: illegal value %% 5628 ["EC-11" ]: matches SMC-13 %% 5629 ["EC-13" ]: matches SMC-13 %% 5630 ["EC-14" ]: matches SMC-13 %% 5631 ["EC-8" ]: matches SMC-13 ?? 5632 ["ED--30, 9" ]: illegal value %% 5633 ["ED-30" ]: matches SMC-13 %% 5634 ["EWS-10" ]: matches SMC-13 %% 5635 ["F51" ]: matches Special issue A %% 5636 ["F55" ]: matches Special issue A %% 5637 ["F70" ]: matches Special issue A %% 5638 ["FIPS 152" ]: matches Special issue A %% 5639 ["GE-22" ]: matches SMC-13 %% 5640 ["H6" ]: matches Special issue A %% 5641 ["I 301" ]: matches Special issue A %% 5642 ["I" ]: matches VIII ?? 5643 ["I, Architecture" ]: illegal value ?? 5644 ["I, Univariate Series" ]: illegal value ?? 5645 ["I: Finite Difference Methods---Solution of Equations"]: illegal value %% 5646 ["IEEE Computer Society Order Number 655"]: matches Special issue A ?? 5647 ["II --- Software" ]: illegal value %% 5648 ["II" ]: matches VIII ?? 5649 ["II, Multivariate Series, Prediction and Control"]: illegal value ?? 5650 ["II, Software" ]: illegal value ?? 5651 ["II: Matrix Theory and Analysis"]: illegal value %% 5652 ["III" ]: matches VIII ?? 5653 ["III, Algorithms \& Applications"]: illegal value ?? 5654 ["III: Hearing Disorders"]: illegal value %% 5655 ["IT-17" ]: matches SMC-13 %% 5656 ["IT-18" ]: matches SMC-13 %% 5657 ["IT-31" ]: matches SMC-13 %% 5658 ["IT-32" ]: matches SMC-13 ?? 5659 ["IV (XIII)" ]: illegal value %% 5660 ["IV" ]: matches VIII %% 5661 ["IX" ]: matches VIII ?? 5662 ["In press." ]: illegal value %% 5663 ["J67D" ]: matches Special issue A %% 5664 ["J68D" ]: matches Special issue A ?? 5665 ["J76D-II" ]: illegal value ?? 5666 ["J77-A" ]: illegal value %% 5667 ["LVI" ]: matches VIII %% 5668 ["LXVIII" ]: matches VIII %% 5669 ["LXX" ]: matches VIII %% 5670 ["Libraries" ]: matches VIII %% 5671 ["NS-30" ]: matches SMC-13 %% 5672 ["New Series Number 53" ]: matches Special issue A ?? 5673 ["PAMI--10(4)" ]: illegal value %% 5674 ["PAMI-6" ]: matches SMC-13 %% 5675 ["PAMI-9" ]: matches SMC-13 %% 5676 ["PC-15" ]: matches SMC-13 %% 5677 ["PC-16" ]: matches SMC-13 %% 5678 ["PC-18" ]: matches SMC-13 %% 5679 ["PC-20" ]: matches SMC-13 %% 5680 ["PC-23" ]: matches SMC-13 %% 5681 ["PC-24" ]: matches SMC-13 %% 5682 ["PC-27" ]: matches SMC-13 %% 5683 ["PC-29" ]: matches SMC-13 %% 5684 ["PC-30" ]: matches SMC-13 %% 5685 ["PC-32" ]: matches SMC-13 ?? 5686 ["Pt. E" ]: illegal value %% 5687 ["R-29" ]: matches SMC-13 %% 5688 ["R-32" ]: matches SMC-13 %% 5689 ["R-34" ]: matches SMC-13 ?? 5690 ["RC 12794 (\#57573)" ]: illegal value %% 5691 ["S-2" ]: matches SMC-13 %% 5692 ["S10" ]: matches Special issue A %% 5693 ["S13" ]: matches Special issue A %% 5694 ["S7" ]: matches Special issue A %% 5695 ["S8" ]: matches Special issue A %% 5696 ["S9" ]: matches Special issue A %% 5697 ["SC-17" ]: matches SMC-13 %% 5698 ["SC-19" ]: matches SMC-13 ?? 5699 ["SCD User document version 1.2"]: illegal value %% 5700 ["SE-10" ]: matches SMC-13 %% 5701 ["SE-11" ]: matches SMC-13 %% 5702 ["SE-12" ]: matches SMC-13 %% 5703 ["SE-13" ]: matches SMC-13 %% 5704 ["SE-16" ]: matches SMC-13 %% 5705 ["SE-2" ]: matches SMC-13 %% 5706 ["SE-3" ]: matches SMC-13 %% 5707 ["SE-5" ]: matches SMC-13 %% 5708 ["SE-7" ]: matches SMC-13 %% 5709 ["SE-8" ]: matches SMC-13 %% 5710 ["SE-9" ]: matches SMC-13 %% 5711 ["SMC-14" ]: matches SMC-13 %% 5712 ["SP-1128" ]: matches SMC-13 %% 5713 ["SPE 7687" ]: matches Special issue A ?? 5714 ["SPIE Vol. 1360" ]: illegal value ?? 5715 ["SPIE Vol. 2186" ]: illegal value ?? 5716 ["Ser. I, 295" ]: illegal value ?? 5717 ["Ser. I, 296" ]: illegal value ?? 5718 ["Ser. I, 298" ]: illegal value %% 5719 ["Special issue A" ]: matches Special issue A %% 5720 ["Special issue B" ]: matches Special issue A %% 5721 ["Special issue D" ]: matches Special issue A %% 5722 ["Special issue E" ]: matches Special issue A %% 5723 ["Special issue" ]: matches Special issue A ?? 5724 ["Suppl. 2" ]: illegal value ?? 5725 ["Suppl. XIII" ]: illegal value ?? 5726 ["Suppl." ]: illegal value %% 5727 ["TBD" ]: matches VIII %% 5728 ["To appear" ]: matches Special issue A %% 5729 ["UCP-19" ]: matches SMC-13 %% 5730 ["UMINF" ]: matches VIII %% 5731 ["V" ]: matches VIII ?? 5732 ["V, {Design of Computers, Theory of Automata}"]: illegal value %% 5733 ["VI" ]: matches VIII %% 5734 ["VII" ]: matches VIII %% 5735 ["VIII" ]: matches VIII ?? 5736 ["Vol.2" ]: illegal value ?? 5737 ["Vol.81" ]: illegal value ?? 5738 ["Volume 91, Issue 16" ]: illegal value %% 5739 ["X" ]: matches VIII %% 5740 ["XIV" ]: matches VIII %% 5741 ["XLI" ]: matches VIII %% 5742 ["XLVIII" ]: matches VIII %% 5743 ["XXI" ]: matches VIII %% 5744 ["XXIII" ]: matches VIII %% 5745 ["XXV" ]: matches VIII %% 5746 ["XXVIII" ]: matches VIII %% 5747 ["XXXV" ]: matches VIII %% 5748 ["c-21" ]: matches SMC-13 ?? 5749 ["n. 15" ]: illegal value %% 5750 ["one" ]: matches VIII ?? 5751 ["t. 306, S{\/e}rie I" ]: illegal value ?? 5752 ["t. 309, S{\/e}rie I" ]: illegal value ?? 5753 ["t. 315, Serie I" ]: illegal value %% 5754 ["two" ]: matches VIII %% 5755 ["{19-20}" ]: matches SMC-13 %% 5756 ["{ASSP-35}" ]: matches SMC-13 %% 5757 ["{ASSP-37}" ]: matches SMC-13 %% 5758 ["{Heft 2}" ]: matches Special issue A ?? 5759 ["{II}/13" ]: illegal value %% 5760 ["{I}" ]: matches VIII ?? 5761 ["{Reihe VI, Band 30}" ]: illegal value %% 5762 ["{\em 16}" ]: matches 27 %% 5763 ["{\noopsort{1986a}}A" ]: matches 27A %% 5764 [ ]: ignored %% 5765 [ ]: ignored ?? 5766 [" 1988" ]: illegal value ?? 5767 ["" ]: illegal value ?? 5768 ["(submitted)" ]: illegal value ?? 5769 ["1190" ]: illegal value ?? 5770 ["1785" ]: illegal value %% 5771 ["1837" ]: matches 1892 %% 5772 ["1840" ]: matches 1892 %% 5773 ["1841" ]: matches 1892 %% 5774 ["1846" ]: matches 1892 %% 5775 ["1850" ]: matches 1892 %% 5776 ["1851" ]: matches 1892 %% 5777 ["1854" ]: matches 1892 %% 5778 ["1859" ]: matches 1892 %% 5779 ["1869" ]: matches 1892 %% 5780 ["1870" ]: matches 1892 %% 5781 ["1873" ]: matches 1892 %% 5782 ["1874" ]: matches 1892 %% 5783 ["1881" ]: matches 1892 %% 5784 ["1884" ]: matches 1892 %% 5785 ["1890" ]: matches 1892 %% 5786 ["1894" ]: matches 1892 %% 5787 ["1896" ]: matches 1892 %% 5788 ["1897" ]: matches 1892 ?? 5789 ["19" ]: illegal value ?? 5790 ["19..(?)" ]: illegal value %% 5791 ["1901" ]: matches 1992 %% 5792 ["1902" ]: matches 1992 %% 5793 ["1904" ]: matches 1992 %% 5794 ["1908" ]: matches 1992 %% 5795 ["1909" ]: matches 1992 %% 5796 ["1911" ]: matches 1992 %% 5797 ["1914" ]: matches 1992 %% 5798 ["1916" ]: matches 1992 %% 5799 ["1917" ]: matches 1992 %% 5800 ["1918" ]: matches 1992 %% 5801 ["1922" ]: matches 1992 %% 5802 ["1923" ]: matches 1992 %% 5803 ["1924" ]: matches 1992 %% 5804 ["1925" ]: matches 1992 %% 5805 ["1927" ]: matches 1992 %% 5806 ["1929" ]: matches 1992 %% 5807 ["1930" ]: matches 1992 %% 5808 ["1931" ]: matches 1992 %% 5809 ["1932" ]: matches 1992 %% 5810 ["1933" ]: matches 1992 %% 5811 ["1934" ]: matches 1992 %% 5812 ["1935" ]: matches 1992 %% 5813 ["1936" ]: matches 1992 %% 5814 ["1937" ]: matches 1992 %% 5815 ["1938" ]: matches 1992 %% 5816 ["1939" ]: matches 1992 %% 5817 ["1940" ]: matches 1992 %% 5818 ["1941" ]: matches 1992 %% 5819 ["1942" ]: matches 1992 %% 5820 ["1943" ]: matches 1992 %% 5821 ["1944" ]: matches 1992 %% 5822 ["1945" ]: matches 1992 %% 5823 ["1946" ]: matches 1992 %% 5824 ["1947" ]: matches 1992 %% 5825 ["1948" ]: matches 1992 %% 5826 ["1949" ]: matches 1992 %% 5827 ["1949, 1951, 1969" ]: matches 1989, 1990, 1991 %% 5828 ["1949, 1951, 1970" ]: matches 1989, 1990, 1991 %% 5829 ["1950" ]: matches 1992 %% 5830 ["1951" ]: matches 1992 %% 5831 ["1952" ]: matches 1992 %% 5832 ["1953" ]: matches 1992 %% 5833 ["1954" ]: matches 1992 %% 5834 ["1955" ]: matches 1992 %% 5835 ["1956" ]: matches 1992 %% 5836 ["1957" ]: matches 1992 %% 5837 ["1958" ]: matches 1992 %% 5838 ["1959" ]: matches 1992 ?? 5839 ["1960 (or 1969??)" ]: illegal value %% 5840 ["1960" ]: matches 1992 %% 5841 ["1961" ]: matches 1992 %% 5842 ["1961, 1962" ]: matches 1989, 1990 %% 5843 ["1962" ]: matches 1992 %% 5844 ["1963" ]: matches 1992 ?? 5845 ["1964 (or 1967??)" ]: illegal value %% 5846 ["1964" ]: matches 1992 %% 5847 ["1965" ]: matches 1992 ?? 5848 ["1966 (or 1960??)" ]: illegal value %% 5849 ["1966" ]: matches 1992 %% 5850 ["1967" ]: matches 1992 ?? 5851 ["1967/1968" ]: illegal value ?? 5852 ["1968 (??)" ]: illegal value %% 5853 ["1968" ]: matches 1992 ?? 5854 ["1969 (??)" ]: illegal value ?? 5855 ["1969 (vol. 2)" ]: illegal value %% 5856 ["1969" ]: matches 1992 %% 5857 ["1969, 1979" ]: matches 1989, 1990 ?? 5858 ["1970 (??)" ]: illegal value ?? 5859 ["1970 (or 1975??)" ]: illegal value ?? 5860 ["1970 (or 1978??)" ]: illegal value ?? 5861 ["1970 (or 1979??)" ]: illegal value %% 5862 ["1970" ]: matches 1992 ?? 5863 ["1970--1971" ]: illegal value ?? 5864 ["1970/71" ]: illegal value %% 5865 ["1971" ]: matches 1992 ?? 5866 ["1971--1972" ]: illegal value %% 5867 ["1972" ]: matches 1992 ?? 5868 ["1972--1973" ]: illegal value ?? 5869 ["1972{\noopsort{a}}" ]: illegal value ?? 5870 ["1972{\noopsort{b}}" ]: illegal value %% 5871 ["1973" ]: matches 1992 ?? 5872 ["1973--1981" ]: illegal value ?? 5873 ["1973\noopsort{a}" ]: illegal value %% 5874 ["1974" ]: matches 1992 ?? 5875 ["1975 (??)" ]: illegal value %% 5876 ["1975" ]: matches 1992 %% 5877 ["1976" ]: matches 1992 %% 5878 ["1976, 1982, 1983" ]: matches 1989, 1990, 1991 ?? 5879 ["1976/1977" ]: illegal value ?? 5880 ["1977 and 1978" ]: illegal value %% 5881 ["1977" ]: matches 1992 %% 5882 ["1978" ]: matches 1992 %% 5883 ["1979" ]: matches 1992 %% 5884 ["1979, 1980" ]: matches 1989, 1990 ?? 5885 ["1979/1980" ]: illegal value ?? 5886 ["197x" ]: illegal value ?? 5887 ["1980 (or 1984??)" ]: illegal value ?? 5888 ["1980 (or 1987??)" ]: illegal value ?? 5889 ["1980 (or 1988??)" ]: illegal value %% 5890 ["1980" ]: matches 1992 ?? 5891 ["1981 (??)" ]: illegal value %% 5892 ["1981" ]: matches 1992 %% 5893 ["1981, 1983" ]: matches 1989, 1990 %% 5894 ["1981, 1984, 1989" ]: matches 1989, 1990, 1991 ?? 5895 ["1982 (??)" ]: illegal value %% 5896 ["1982" ]: matches 1992 ?? 5897 ["1983 (??)" ]: illegal value %% 5898 ["1983" ]: matches 1992 %% 5899 ["1984" ]: matches 1992 ?? 5900 ["1984--1993" ]: illegal value ?? 5901 ["1984-1993" ]: illegal value ?? 5902 ["1984/85" ]: illegal value %% 5903 ["1985" ]: matches 1992 ?? 5904 ["1985/86" ]: illegal value ?? 5905 ["1985?" ]: illegal value ?? 5906 ["1986 (??)" ]: illegal value ?? 5907 ["1986 (summer)" ]: illegal value %% 5908 ["1986" ]: matches 1992 ?? 5909 ["1986/87" ]: illegal value ?? 5910 ["1987 (??)" ]: illegal value %% 5911 ["1987" # "\unskip--" ]: matches "1989" # "\unskip--" %% 5912 ["1987" ]: matches 1992 ?? 5913 ["1987--date{}" ]: illegal value ?? 5914 ["1987-88" ]: illegal value ?? 5915 ["1987/88" ]: illegal value ?? 5916 ["1988 (??)" ]: illegal value ?? 5917 ["1988 (summer)" ]: illegal value %% 5918 ["1988" # "\unskip--" ]: matches "1989" # "\unskip--" %% 5919 ["1988" ]: matches 1992 ?? 5920 ["1988--1989" ]: illegal value ?? 5921 ["1988-89" ]: illegal value ?? 5922 ["1988/1990" ]: illegal value %% 5923 ["1989" # "\unskip--" ]: matches "1989" # "\unskip--" %% 5924 ["1989" ]: matches 1992 ?? 5925 ["1989--date{}" ]: illegal value ?? 5926 ["1989--present" ]: illegal value ?? 5927 ["198?" ]: illegal value ?? 5928 ["198x" ]: illegal value %% 5929 ["1990" ]: matches 1992 ?? 5930 ["1990, 12 Juni" ]: illegal value ?? 5931 ["1990--1991" ]: illegal value ?? 5932 ["1990/91" ]: illegal value ?? 5933 ["1990?" ]: illegal value ?? 5934 ["1991 (to appear)" ]: illegal value %% 5935 ["1991" ]: matches 1992 %% 5936 ["1991--2" ]: matches 1991--2 ?? 5937 ["1991-2" ]: illegal value ?? 5938 ["1991/1992" ]: illegal value ?? 5939 ["1991/92" ]: illegal value ?? 5940 ["1992 (??)" ]: illegal value %% 5941 ["1992" ]: matches 1992 ?? 5942 ["1992-93" ]: illegal value %% 5943 ["1993" ]: matches 1992 ?? 5944 ["1993?" ]: illegal value ?? 5945 ["1994 (invited)" ]: illegal value %% 5946 ["1994" ]: matches 1992 ?? 5947 ["1994--" ]: illegal value ?? 5948 ["1994--1995" ]: illegal value ?? 5949 ["1995 (??)" ]: illegal value ?? 5950 ["1995 (in press)" ]: illegal value ?? 5951 ["1995 (invited)" ]: illegal value ?? 5952 ["1995 (to appear)" ]: illegal value %% 5953 ["1995" ]: matches 1992 %% 5954 ["1996" ]: matches 1992 %% 5955 ["1997" ]: matches 1992 %% 5956 ["1998" ]: matches 1992 ?? 5957 ["199x" ]: illegal value ?? 5958 ["19xx" ]: illegal value ?? 5959 ["83" ]: illegal value ?? 5960 ["??" ]: illegal value ?? 5961 ["????" ]: illegal value ?? 5962 ["In progress." ]: illegal value ?? 5963 ["March 20 -- 23, 1989" ]: illegal value ?? 5964 ["Spring 1985" ]: illegal value ?? 5965 ["TBD" ]: illegal value ?? 5966 ["To appear" ]: illegal value ?? 5967 ["To appear" ]: illegal value %% 5968 ["\noopsort{1996}" ]: matches 1992 ?? 5969 ["in preparation" ]: illegal value ?? 5970 ["in print" ]: illegal value ?? 5971 ["in progress" ]: illegal value ?? 5972 ["submitted" ]: illegal value %% 5973 ["{\noopsort{1968a}}1968"]: matches {\noopsort{1985a}}1985 %% 5974 ["{\noopsort{1968b}}1973"]: matches {\noopsort{1985a}}1985 %% 5975 ["{\noopsort{1968c}}1969"]: matches {\noopsort{1985a}}1985 %% 5976 ["{\noopsort{1972a}}1972"]: matches {\noopsort{1985a}}1985 %% 5977 ["{\noopsort{1972b}}1973"]: matches {\noopsort{1985a}}1985 %% 5978 ["{\noopsort{1985a}}1985"]: matches {\noopsort{1985a}}1985 %% 5979 ["{\noopsort{1985b}}1985"]: matches {\noopsort{1985a}}1985 %% 5980 ["{\noopsort{1986a}}1986"]: matches {\noopsort{1985a}}1985 %% 5981 ["{\noopsort{1986b}}1986"]: matches {\noopsort{1985a}}1985 %% 5982 ["{\noopsort{1986c}}1986"]: matches {\noopsort{1985a}}1985 %% 5983 ["{\noopsort{1986d}}1986"]: matches {\noopsort{1985a}}1985 %% 5984 ["{\noopsort{1986e}}1986"]: matches {\noopsort{1985a}}1985 %% 5985 ["{\noopsort{1992a}}1992"]: matches {\noopsort{1985a}}1985 %% 5986 ["{\noopsort{1992b}}1992"]: matches {\noopsort{1985a}}1985 %% 5987 ["{\noopsort{1992c}}1992"]: matches {\noopsort{1985a}}1985 %% 5988 ["{\noopsort{1992d}}1992"]: matches {\noopsort{1985a}}1985 ?? 5989 ["{\noopsort{a}}1978" ]: illegal value ?? 5990 ["{\noopsort{a}}1987" ]: illegal value ?? 5991 ["{\noopsort{a}}1988" ]: illegal value ?? 5992 ["{\noopsort{a}}1990" ]: illegal value ?? 5993 ["{\noopsort{a}}1991" ]: illegal value ?? 5994 ["{\noopsort{b}}1978" ]: illegal value ?? 5995 ["{\noopsort{b}}1987" ]: illegal value ?? 5996 ["{\noopsort{b}}1988" ]: illegal value ?? 5997 ["{\noopsort{b}}1990" ]: illegal value ?? 5998 ["{\noopsort{b}}1991" ]: illegal value bibclean-2.11.4.1.orig/romtol.lok0000644000175200017520000000323005322651162015711 0ustar debiandebianromtol(): i -> 1 Remainder = [] romtol(): ii -> 2 Remainder = [] romtol(): iii -> 3 Remainder = [] romtol(): iiii -> 4 Remainder = [] romtol(): iv -> 4 Remainder = [] romtol(): v -> 5 Remainder = [] romtol(): vi -> 6 Remainder = [] romtol(): vii -> 7 Remainder = [] romtol(): viii -> 8 Remainder = [] romtol(): viiii -> 9 Remainder = [] romtol(): ix -> 9 Remainder = [] romtol(): x -> 10 Remainder = [] romtol(): xi -> 11 Remainder = [] romtol(): xii -> 12 Remainder = [] romtol(): xiii -> 13 Remainder = [] romtol(): xiiii -> 14 Remainder = [] romtol(): xiv -> 14 Remainder = [] romtol(): xv -> 15 Remainder = [] romtol(): xvi -> 16 Remainder = [] romtol(): xvii -> 17 Remainder = [] romtol(): xviii -> 18 Remainder = [] romtol(): xviiii -> 19 Remainder = [] romtol(): xix -> 19 Remainder = [] romtol(): xx -> 20 Remainder = [] romtol(): xxx -> 30 Remainder = [] romtol(): xxxx -> 40 Remainder = [] romtol(): xxxxx -> 50 Remainder = [] romtol(): l -> 50 Remainder = [] romtol(): c -> 100 Remainder = [] romtol(): cc -> 200 Remainder = [] romtol(): cd -> 400 Remainder = [] romtol(): d -> 500 Remainder = [] romtol(): dc -> 600 Remainder = [] romtol(): cm -> 900 Remainder = [] romtol(): m -> 1000 Remainder = [] romtol(): mcm -> 1900 Remainder = [] romtol(): mcmxcii -> 1992 Remainder = [] romtol(): mxmii -> 1992 Remainder = [] romtol(): abc -> 0 Remainder = [abc] romtol(): iabc -> 1 Remainder = [abc] romtol(): vabc -> 5 Remainder = [abc] romtol(): xabc -> 10 Remainder = [abc] romtol(): labc -> 50 Remainder = [abc] romtol(): cabc -> 100 Remainder = [abc] romtol(): dabc -> 500 Remainder = [abc] romtol(): mabc -> 1000 Remainder = [abc] bibclean-2.11.4.1.orig/vaxvms.c0000644000175200017520000006203706142465630015374 0ustar debiandebian/* -*-C-*- vaxvms.c */ /*-->vaxvms*/ /**********************************************************************/ /****************************** vaxvms ********************************/ /**********************************************************************/ /*********************************************************************** This file provides alternative functions for several VMS VMS C library routines which either unacceptable, or incorrect, implementations. They have been developed and tested under VMS Version 4.4, but indications are that they apply to earlier versions, back to 3.2 at least. They should be retested with each new release of VMS C. Some of these (memxxx(), strxxx(), and system()) are available with VMS C 2.3 or later, but these versions should still work. Under VAX VMS 5.2, system(), sscanf(), and strtod() are in the run-time library. However, the run-time library version of system() returns a VMS-style exit code, not a UNIX-style code; for portability, our version below is preferred. Contents: FSEEK FTELL GETCHAR GETENV READ UNGETC getjpi -- system-service access getlogin memchr memcmp memcpy memmove memset stricmp strtok strtol system tell unlink utime The VAX VMS file system record structure has unfortunate consequences for random access files. By default, text files written by most system utilities, and languages other than C, have a variable length record format, in which a 16-bit character count is aligned on an even-byte boundary in the disk block b(always 512 bytes in VMS, independent of record and file formats), followed by bytes of data. Binary files, such as .EXE, .OBJ, and TeX .DVI and font files, all use a 512-byte fixed record format which has no explicit length field. No file byte count is stored; instead, the block count, and the offset of the last data byte in the last block are recorded in the file header (do ``DUMP/HEADER filespec'' to see it). For binary files with fixed-length records, the last block is normally assumed to be full, and consequently, file transfer of binary data from other machines via Kermit, FTP, or DCL COPY from ANSI tapes, generally fails because the input file length is not a multiple of 512. This record organization may be contrasted with the STREAM, STREAM_LF, and STREAM_CR organizations supported from Version 4.0; in these, disk blocks contain a continuous byte stream in which nothing, or LF, or CR, is recognized as a record terminator. These formats are similar to the UNIX and TOPS-20 file system formats which also use continuous byte streams. For C, this means that a program operating on a file in record format cannot count input characters and expect that count to be the same value as the offset parameter passed to fseek(), which numerous C programs assume to be the case. The 15-Dec-1989 C Standard, and Harbison and Steele's ``C Reference Manual'', emphasize that only values returned by ftell() should be used as arguments to fseek(), allowing the program to return to a position previously read or written. UNFORTUNATELY, VMS C ftell() DOES NOT RETURN A CORRECT OFFSET VALUE FOR RECORD FILES. Instead, for record files, it returns the byte offset of the start of the current record, no matter where in that record the current position may be. This misbehavior is completely unnecessary, since the replacements below perform correctly, and are written entirely in C. Another problem is that ungetc(char c, FILE *fp) is unreliable. VMS C implements characters as signed 8-bit integers (so do many other C implementations). fgetc(FILE *fp) returns an int, not a char, whose value is EOF (-1) in the event of end-of-file; however, this value will also be returned for a character 0xFF, so it is essential to use feof(FILE *fp) to test for a true end-of-file condition when EOF is returned. ungetc() checks the sign of its argument c, and if it is negative (which it will be for 128 of the 256 signed bytes), REFUSES TO PUT IT BACK IN THE INPUT STREAM, on the assumption that c is really EOF. This too can be fixed; ungetc() should only do nothing if feof() indicates a true end-of-file condition. The overhead of this is trivial, since feof() is actually implemented as a macro which does nothing more than a logical AND and compare-with-zero. getchar() waits for a to be typed when stdin is a terminal; the replacement vms_getchar() remedies this. Undoubtedly other deficiencies in VMS C will reveal themselves. VMS read() returns only a single disk block on each call. Its replacement, vms_read(), will return the requested number of bytes, if possible. [29-Apr-1987] Brendan Mackay (munnari!anucsd.oz!bdm@seismo.CSS.GOV) This fix has been incorporated in vms_read() below. Here are Brendan's comments: >> The code for vms_read() has problems. One is that you don't test for >> end of file. The other is that there is a bug in the C library which >> prevents you asking for more than 65535 bytes at a time. It is >> documented that no more than 65535 bytes will be returned, but not >> that you can't ask for more. If you do, it reduces your request mod >> 65536! There are also a few UNIX standard functions which are unimplemented. getlogin() and unlink() have VMS equivalents provided below. tell() is considered obsolete, since its functionality is available from lseek(), but it is still seen in a few programs, so is provided below. getenv() fails if the name contains a colon; its replacement allows the colon, and ignores letter case. In the interest of minimal source perturbation, replacements for VMS functions are given the same names, but prefixed "vms_". For readability, the original names are preserved, but are converted to upper-case: #define FTELL vms_ftell #define FSEEK vms_fseek #define GETCHAR vms_getchar #define GETENV vms_getenv #define UNGETC vms_ungetc These are only defined to work correctly for fixed length 512-byte records, and no check is made that the file has that organization (it is possible, but not without expensive calls to fstat(), or access to internal library structures). [02-Apr-1987] -- Nelson H. F. Beebe, University of Utah Center for Scientific Computing [13-Apr-1988] -- added memxxx(), strxxx(), fixed return code in system() ***********************************************************************/ #ifdef VMS /* so this compiles anywhere */ #undef VOIDP #if 0 /* prior to VMS C 2.3 */ #define VOIDP char* /* char *prior to Standard C */ #define const /* const is a type modifier in Standard C */ #else /* NOT 1 */ #define VOIDP void* /* char *prior to Standard C */ #endif /* 1 */ #define FTELL vms_ftell #define FSEEK vms_fseek #define GETENV vms_getenv #define GETCHAR vms_getchar #define READ vms_read #define UNGETC vms_ungetc #include #include #if defined(HAVE_STDLIB_H) #include #endif #if defined(HAVE_STRING_H) #include #endif #if defined(HAVE_TYPES_H) #include #endif #if defined(HAVE_CTYPE_H) #include #endif #if defined(HAVE_DESCRIP_H) #include #endif #if defined(HAVE_ERRNO_H) #include /* need for utime() */ #endif #if defined(HAVE_IODEF_H) #include /* need for vms_getchar() */ #endif #if defined(HAVE_RMS_H) #include /* need for utime() */ #endif #if defined(HAVE_SSDEF_H) #include #endif #if defined(HAVE_STAT_H) #include #endif #if defined(HAVE_STRING_H) #include #endif #if defined(HAVE_TIME_H) #include #endif #if defined(HAVE_UNIXIO_H) #include #endif #if defined(__ALPHA) int lib$spawn(struct dsc$descriptor *t_,int,int,int,int,int,int *stat_); void lib$stop(int status_); int sys$assign(void *desc_,int *channel_,int n1_,int n2_); int sys$bintim(struct dsc$descriptor_s *time_desc_, int xab_element_); int sys$close(struct FAB *fab_); int sys$qiow(int, int channel_, int flags_, int n1_, int n2_, int n3_, int *ret_char_, int n4_, int n5_, int n6_, int n7_, int n8_); int sys$open(struct FAB *fab_); int system(const char *s_); #else /* VAX VMS 6.1 has these header files */ #include /* for lib$spawn(), lib$stop() */ #include /* for sys$assign(), sys$bintim(), sys$close(), sys$exit(), sys$open(), sys$qiow() */ #endif long vms_fseek(FILE *fp_, long n_, long dir_); long vms_ftell(FILE *fp_); char *vms_getenv(char *name_); int vms_getchar(void); int vms_read(int file_desc_, char *buffer_, int nbytes_); long vms_ungetc(char c_, FILE *fp_); static char rcsid[] = "$Id: vaxvms.c,v 1.2 1996/05/03 20:23:16 beebe Exp beebe $"; /**********************************************************************/ /*-->FSEEK*/ /* VMS fseek() and ftell() on fixed-length record files work correctly only at block boundaries. This replacement code patches in the offset within the block. Directions from current position and from end-of-file are converted to absolute positions, and then the code for that case is invoked. */ long #if defined(HAVE_STDC) FSEEK( FILE *fp, long n, long dir ) #else /* NOT defined(HAVE_STDC) */ FSEEK(fp,n,dir) FILE *fp; long n; long dir; #endif /* defined(HAVE_STDC) */ { long k,m,pos,val,oldpos; struct stat buffer; for (;;) /* loops only once or twice */ { switch (dir) { case 0: /* from BOF */ oldpos = FTELL(fp); /* get current byte offset in file */ k = n & 511; /* offset in 512-byte block */ m = n >> 9; /* relative block number in file */ if (((*fp)->_cnt) && ((oldpos >> 9) == m)) /* still in same block */ { val = 0; /* success */ (*fp)->_ptr = ((*fp)->_base) + k; /* reset pointers to requested byte */ (*fp)->_cnt = 512 - k; } else { val = fseek(fp,m << 9,0); /* move to start of requested 512-byte block */ if (val == 0) /* success */ { (*fp)->_cnt = 0; /* indicate empty buffer */ (void)fgetc(fp); /* force refill of buffer */ (*fp)->_ptr = ((*fp)->_base) + k; /* reset pointers to requested byte */ (*fp)->_cnt = 512 - k; } } return (val); case 1: /* from current pos */ pos = FTELL(fp); if (pos == EOF) /* then error */ return (EOF); n += pos; dir = 0; break; /* go do case 0 */ case 2: /* from EOF */ val = fstat((int)fileno(fp),&buffer); if (val == EOF) /* then error */ return (EOF); n += buffer.st_size - 1; /* convert filesize to offset and */ /* add to requested offset */ dir = 0; break; /* go do case 0 */ default: /* illegal direction parameter */ return (EOF); } } } /**********************************************************************/ /*-->FTELL*/ /* With fixed-length record files, ftell() returns the offset of the start of block. To get the true position, this must be biased by the offset within the block. */ long #if defined(HAVE_STDC) FTELL( FILE *fp ) #else /* NOT defined(HAVE_STDC) */ FTELL(fp) FILE *fp; #endif /* defined(HAVE_STDC) */ { char c; long pos; long val; if ((*fp)->_cnt == 0) /* buffer empty--force refill */ { c = fgetc(fp); val = UNGETC(c,fp); if (val != c) return (EOF); /* should never happen */ } pos = ftell(fp); /* this returns multiple of 512 (start of block) */ if (pos >= 0) /* then success--patch in offset in block */ pos += ((*fp)->_ptr) - ((*fp)->_base); return (pos); } /**********************************************************************/ /*-->GETCHAR*/ static int tt_channel = -1; /* terminal channel for image QIO's */ #define FAILED(status) (~(status) & 1) /* failure if LSB is 0 */ int GETCHAR(VOID) { int ret_char; /* character returned */ int status; /* system service status */ static $DESCRIPTOR(sys_in,"TT:"); if (tt_channel == -1) /* then first call--assign channel */ { status = sys$assign(&sys_in,&tt_channel,0,0); if (FAILED(status)) lib$stop(status); } ret_char = 0; status = sys$qiow(0,tt_channel,IO$_TTYREADALL | IO$M_NOECHO,0,0,0, &ret_char,1,0,0,0,0); if (FAILED(status)) lib$stop(status); return (ret_char); } /**********************************************************************/ /*-->memchr*/ /* This is a simple implementation of memchr(), which searches for the first occurrence of a byte in the first n bytes of a byte string. A library version should use hardware moves, or unrolled loops, or other tricks for greater efficiency. */ #if !defined(HAVE_MEMCHR) VOIDP #if defined(HAVE_STDC) memchr( const VOIDP s, int c, size_t n ) #else /* NOT defined(HAVE_STDC) */ memchr(s,c,n) const VOIDP s; int c; size_t n; #endif /* defined(HAVE_STDC) */ { unsigned char *ss = (unsigned char*)s; for (; n > 0; ss++,--n) { if (*ss == (unsigned char)c) return ((VOIDP)ss); } return ((VOIDP)NULL); } #endif /**********************************************************************/ /*-->memcmp*/ /* This is a simple implementation of memcmp(), which compares two objects byte by byte, stopping after n bytes. A library version should use hardware moves, or unrolled loops, or other tricks for greater efficiency. */ #if !defined(HAVE_MEMCMP) int #if defined(HAVE_STDC) memcmp( const VOIDP s1, const VOIDP s2, size_t n ) #else /* NOT defined(HAVE_STDC) */ memcmp(s1,s2,n) const VOIDP s1; const VOIDP s2; size_t n; #endif /* defined(HAVE_STDC) */ { unsigned char *t1; unsigned char *t2; for (t1 = (unsigned char*)s1, t2 = (unsigned char*)s2; n > 0; --n, t1++, t2++) { if (*t1 < *t2) return (-(int)(t2 - (unsigned char*)s2)); else if (*t1 > *t2) return ((int)(t2 - (unsigned char*)s2)); } return (0); } #endif /**********************************************************************/ /*-->memcpy*/ /* This is a simple implementation of memcpy(), which copies source to target with undefined behavior in the event of overlap. This particular implementation copies from first to last byte, in order. */ #if !defined(HAVE_MEMCPY) VOIDP #if defined(HAVE_STDC) memcpy( VOIDP t, /* target */ const VOIDP s, /* source */ size_t n ) #else /* NOT defined(HAVE_STDC) */ memcpy(t,s,n) VOIDP t; /* target */ const VOIDP s; /* source */ size_t n; #endif /* defined(HAVE_STDC) */ { unsigned char *ss = (unsigned char*)s; unsigned char *tt = (unsigned char*)t; for (; n > 0; --n) *tt++ = *ss++; /* always copy in forward order */ return (t); } #endif /**********************************************************************/ /*-->memmove*/ /* This is a simple implementation of memmove(), which copies as if the source were first completely copied to a temporary area, then that area were copied to the target. A library version should use hardware moves, or unrolled loops, or other tricks for greater efficiency. */ #if !defined(HAVE_MEMMOVE) VOIDP #if defined(HAVE_STDC) memmove( VOIDP t, /* target */ const VOIDP s, /* source */ size_t n ) #else /* NOT defined(HAVE_STDC) */ memmove(t,s,n) VOIDP t; /* target */ const VOIDP s; /* source */ size_t n; #endif /* defined(HAVE_STDC) */ { unsigned char *ss = (unsigned char*)s; unsigned char *tt = (unsigned char*)t; if ((ss < tt) && ((ss + n) > tt)) /* source overlaps target from below */ for (ss += n, tt += n; n > 0; --n) *tt-- = *ss--; /* copy in reverse order */ else for (; n > 0; --n) *tt++ = *ss++; /* copy in forward order */ return (t); } #endif /**********************************************************************/ /*-->memset*/ /* This is a simple implementation of memset(). A library version should use hardware moves, or unrolled loops, or other tricks for greater efficiency. */ #if !defined(HAVE_MEMSET) VOIDP #if defined(HAVE_STDC) memset( VOIDP s, /* target */ int ch, /* fill character (treated as unsigned char) */ size_t n /* fill count */ ) #else /* NOT defined(HAVE_STDC) */ memset(s,ch,n) VOIDP s; /* target */ int ch; /* fill character (treated as unsigned char) */ size_t n; /* fill count */ #endif /* defined(HAVE_STDC) */ { unsigned char *ss = (unsigned char *)s; for (; n > 0; --n) *ss++ = (unsigned char)ch; return (s); } #endif /**********************************************************************/ /*-->READ*/ int #if defined(HAVE_STDC) READ( register int file_desc, register char *buffer, register int nbytes ) #else /* NOT defined(HAVE_STDC) */ READ(file_desc,buffer,nbytes) register int file_desc; register char *buffer; register int nbytes; #endif /* defined(HAVE_STDC) */ { register int ngot; register int left; for (left = nbytes; left > 0; /* NOOP */) { ngot = read(file_desc,buffer,(left > 65024 ? 65024 : left)); if (ngot < 0) return (-1); /* error occurred */ if (ngot == 0) /* eof occurred */ return (nbytes-left); buffer += ngot; left -= ngot; } return (nbytes-left); } /**********************************************************************/ /*-->UNGETC*/ long #if defined(HAVE_STDC) UNGETC( char c, FILE *fp ) #else /* NOT defined(HAVE_STDC) */ UNGETC(c,fp) /* VMS ungetc() is a no-op if c < 0 (which is half the time!) */ char c; FILE *fp; #endif /* defined(HAVE_STDC) */ { if ((c == EOF) && feof(fp)) return (EOF); /* do nothing at true end-of-file */ else if ((*fp)->_cnt >= 512)/* buffer full--no fgetc() done in this block!*/ return (EOF); /* must be user error if this happens */ else /* put the character back in the buffer */ { (*fp)->_cnt++; /* increase count of characters left */ (*fp)->_ptr--; /* backup pointer to next available char */ *((*fp)->_ptr) = c; /* save the character */ return (c); /* and return it */ } } /**********************************************************************/ /*-->getenv*/ char* #if defined(HAVE_STDC) GETENV( char *name ) #else /* NOT defined(HAVE_STDC) */ GETENV(name) char *name; #endif /* defined(HAVE_STDC) */ { char *p; char *result; char ucname[256]; p = ucname; while (*name) /* VMS logical names must be upper-case */ { *p++ = islower(*name) ? toupper(*name) : *name; ++name; } *p = '\0'; p = strchr(ucname,':'); /* colon in name? */ if (p == (char *)NULL) /* no colon in name */ result = getenv(ucname); else /* try with and without colon */ { result = getenv(ucname); if (result == (char *)NULL) { *p = '\0'; result = getenv(ucname); *p = ':'; } } return (result); } /**********************************************************************/ /*-->getjpi*/ /*********************************************************************** Return a system job/process value obtained from the VMS system call LIB$GETJPI. This call can return either 32-bit integer values, or strings. The obtained value is stored in an internal static buffer which is overwritten on subsequent calls. The function return is a (char*) pointer to that buffer, which must be coerced to (long*) if an integer value is obtained. String values are guaranteed to be NUL terminated, with no trailing blanks. The argument, jpi_code, is one of the values defined in . In the event of an error return from LIB$GETJPI, (char*)NULL is returned instead. [30-Oct-1987] ***********************************************************************/ #define LIB$_INVARG 0x158234 /* not defined in standard .h files */ char* #if defined(HAVE_STDC) getjpi( int jpi_code /* values defined in */ ) #else /* NOT defined(HAVE_STDC) */ getjpi(jpi_code) int jpi_code; /* values defined in */ #endif /* defined(HAVE_STDC) */ { short retlen = 0; long retval; static char buffer[256]; /* space for up to 255-char results */ static $DESCRIPTOR(strdes,buffer); strdes.dsc$w_length = sizeof(buffer)-1; /* $DESCRIPTOR doesn't set this */ /* lib$getjpi() will normally return a string representation. Try first to get the integer representation, then if an invalid argument is signalled, get the string representation. */ retval = lib$getjpi(&jpi_code,0L,0L,&buffer[0]); if (retval == LIB$_INVARG) { retval = lib$getjpi(&jpi_code,0L,0L,&buffer[0],&strdes,&retlen); buffer[retlen] = '\0'; /* terminate any string value */ while ((retlen > 0) && (buffer[--retlen] == ' ')) buffer[retlen] = '\0'; } return ((retval == SS$_NORMAL) ? (char*)(&buffer[0]) : (char*)NULL); } /**********************************************************************/ /*-->getlogin*/ char* getlogin(VOID) { return ((char *)getenv("USER")); /* use equivalent VMS routine */ } /**********************************************************************/ /*-->system*/ int #if defined(HAVE_STDC) system( const char *s ) #else /* NOT defined(HAVE_STDC) */ system(s) const char *s; #endif /* defined(HAVE_STDC) */ { struct dsc$descriptor t; int stat; t.dsc$w_length = strlen(s); t.dsc$a_pointer = s; t.dsc$b_class = DSC$K_CLASS_S; t.dsc$b_dtype = DSC$K_DTYPE_T; /******************************************************************* UNIX system() always returns 0 on success; interpretation of non-zero returns varies with the particular implementation of UNIX, but always means some kind of failure. BSD UNIX returns 127 if the shell, sh, cannot be executed, and otherwise returns 256*(program exit code) + (wait() return value). The 3 low-order bits of stat return by LIB$SPAWN are: 0 warning 1 success 2 error 3 information 4 severe or fatal error DCL returns 0 in the low-order bits for undefined commands, and CC returns 0 for correctable syntax errors (it issues warnings for them). We therefore consider values of 1 or 3 to be success. LIB$SPAWN will usually return SS$_NORMAL, independent of the value of stat, but if it fails, we follow BSD UNIX and return 127. *******************************************************************/ if (lib$spawn(&t,0,0,0,0,0,&stat) != SS$_NORMAL) return (127); switch (stat & 7) { case 0: return (256); case 1: case 3: return (0); default: return (stat << 8); } } /**********************************************************************/ /*-->tell*/ long #if defined(HAVE_STDC) tell( int handle ) #else /* NOT defined(HAVE_STDC) */ tell(handle) int handle; #endif /* defined(HAVE_STDC) */ { return (lseek(handle,0L,1)); } /**********************************************************************/ /*-->unlink*/ int #if defined(HAVE_STDC) unlink( char *filename ) #else /* NOT defined(HAVE_STDC) */ unlink(filename) char *filename; #endif /* defined(HAVE_STDC) */ { return (delete(filename)); /* use equivalent VMS routine */ } /**********************************************************************/ /*-->utime*/ /* utime(path,times) sets the access and modification times of the file 'path' to the UNIX binary time values, 'times'. Return 0 on success, and -1 on error (setting errno as well). */ #if defined(HAVE_STDC) utime( char *path, time_t times[2] ) #else /* NOT defined(HAVE_STDC) */ utime(path,times) /* VAX VMS C version */ char *path; time_t times[2]; #endif /* defined(HAVE_STDC) */ { int status; struct dsc$descriptor_s time_desc; char *ftime = "23-OCT-1907 12:34:56"; struct tm *the_timeval; static char *months[] = {"JAN","FEB","MAR","APR","MAY","JUN", "JUL","AUG","SEP","OCT","NOV","DEC"}; struct FAB fab1; struct XABRDT xab1; /* Zero FAB and XAB structures */ (void)memset(&fab1,'\0',sizeof(fab1)); (void)memset(&xab1,'\0',sizeof(xab1)); /* Convert UNIX binary time to ASCII string for sys$bintime(). We use localtime() instead of ctime(), because although ctime() is simpler, it drops the seconds field, which we would rather preserve. */ the_timeval = (struct tm*)localtime(×[0]); sprintf(ftime,"%02d-%3s-19%02d %02d:%02d:%02d", the_timeval->tm_mday, months[the_timeval->tm_mon], the_timeval->tm_year, the_timeval->tm_hour, the_timeval->tm_min, the_timeval->tm_sec); /* Setup fab1 and rab fields. */ fab1.fab$b_bid = FAB$C_BID; fab1.fab$b_bln = FAB$C_BLN; fab1.fab$l_fop = FAB$V_UFO; fab1.fab$b_fac = FAB$V_GET; fab1.fab$l_fna = path; fab1.fab$b_fns = strlen(path); fab1.fab$l_xab = (char*)&xab1; xab1.xab$b_bln = XAB$C_RDTLEN; xab1.xab$b_cod = XAB$C_RDT; xab1.xab$l_nxt = (char*)NULL; /* Open the file */ status = sys$open(&fab1); if (status != RMS$_NORMAL) { errno = ENOENT; return (-1); } /* Convert the time string to a VMS binary time value in the XAB */ time_desc.dsc$w_length = strlen(ftime); time_desc.dsc$a_pointer = ftime; time_desc.dsc$b_class = DSC$K_CLASS_S; time_desc.dsc$b_dtype = DSC$K_DTYPE_T; status = sys$bintim(&time_desc,&xab1.xab$q_rdt); if (status != SS$_NORMAL) { status = sys$close(&fab1); errno = EFAULT; return (-1); } /* Close the file, updating the revision date/time value */ status = sys$close(&fab1); if (status != RMS$_NORMAL) { errno = EACCES; return (-1); } return (0); } #else static int this_is_not_vms = 0; /* to provide SOMETHING to compile */ #endif /* VMS */ bibclean-2.11.4.1.orig/token.h0000644000175200017520000000073206034271201015154 0ustar debiandebian#ifndef TOKEN_H_DEFINED_ #define TOKEN_H_DEFINED_ #if !defined(MAX_TOKEN) #define MAX_TOKEN 4093 /* internal buffer size; no BibTeX string value may be larger than this. */ #endif /* !defined(MAX_TOKEN) */ #define MAX_TOKEN_SIZE (MAX_TOKEN + 3) /* Arrays are always dimensioned MAX_TOKEN_SIZE, so as to have space for an additional pair of braces and a trailing NUL, without tedious subscript checking in inner loops. */ #endif /* TOKEN_H_DEFINED_ */ bibclean-2.11.4.1.orig/testscr2.eok0000644000175200017520000000000005304617564016137 0ustar debiandebianbibclean-2.11.4.1.orig/delete.h0000644000175200017520000000043506034271216015304 0ustar debiandebian#ifndef DELETE_H_DEFINED_ #define DELETE_H_DEFINED_ #define DELETE_CHAR (INT_MAX - 1) /* magic value for out_c() */ #define DELETE_LINE (INT_MAX - 2) /* magic value for out_c() */ #define DELETE_WHITESPACE (INT_MAX - 3) /* magic value for out_c() */ #endif /* DELETE_H_DEFINED_ */ bibclean-2.11.4.1.orig/bibclean.h0000644000175200017520000003557406656613240015624 0ustar debiandebian/* WARNING: Do NOT edit this file. It was created automatically with the command "make bibclean.h" by beebe@plot79.math.utah.edu in /u/sy/beebe/tex/bibclean/2-11-4 on Fri Feb 5 09:04:47 MST 1999 */ "Command-line switches may be abbreviated to a unique leading\n", "prefix, and letter case is not significant. All options are parsed\n", "before any input bibliography files are read, no matter what their\n", "order on the command line. Options that correspond to a yes/no\n", "setting of a flag have a form with a prefix \"no-\" to set the flag\n", "to no. For such options, the last setting determines the flag\n", "value used. This is significant when options are also specified in\n", "initialization files (see the INITIALIZATION FILES manual section).\n", "\n", "The leading hyphen that distinguishes an option from a filename may\n", "be doubled, for compatibility with GNU and POSIX conventions.\n", "Thus, -author and --author are equivalent.\n", "\n", "To avoid confusion with options, if a filename begins with a\n", "hyphen, it must be disguised by a leading absolute or relative\n", "directory path, e.g., /tmp/-foo.bib or ./-foo.bib.\n", "\n", "-author Display an author credit on the standard error unit,\n", " stderr, and then exit with a success return code.\n", " Sometimes an executable program is separated from its\n", " documentation and source code; this option provides a way\n", " to recover from that.\n", "\n", "-error-log filename\n", " Redirect stderr to the indicated file, which will then\n", " contain all of the error and warning messages. This\n", " option is provided for those systems that have difficulty\n", " redirecting stderr.\n", "\n", "-help or -?\n", " Display a help message on stderr, giving a usage\n", " description, similar to this section of the manual pages,\n", " and then exit with a success return code.\n", "\n", "-init-file filename\n", " Provide an explicit value pattern initialization file.\n", " It will be processed after any system-wide and job-wide\n", " initialization files found on the PATH (for VAX VMS,\n", " SYS$SYSTEM) and BIBINPUTS search paths, respectively, and\n", " may override them. It in turn may be overridden by a\n", " subsequent file-specific initialization file. The\n", " initialization file name can be changed at compile time,\n", " or at run time through a setting of the environment\n", " variable BIBCLEANINI, but defaults to .bibcleanrc on\n", " UNIX, and to bibclean.ini elsewhere. For further\n", " details, see the INITIALIZATION FILES manual section.\n", "\n", "-max-width nnn\n", " bibclean normally limits output line widths to 72\n", " characters, and in the interests of consistency, that\n", " value should not be changed. Occasionally, special-\n", " purpose applications may require different maximum line\n", " widths, so this option provides that capability. The\n", " number following the option name can be specified in\n", " decimal, octal (starting with 0), or hexadecimal\n", " (starting with 0x). A zero or negative value is\n", " interpreted to mean unlimited, so -max-width 0 can be\n", " used to ensure that each field/value pair appears on a\n", " single line.\n", "\n", " When -no-prettyprint requests bibclean to act as a\n", " lexical analyzer, the default line width is unlimited,\n", " unless overridden by this option.\n", "\n", " When bibclean is prettyprinting, line wrapping will be\n", " done only at a space. Consequently, a long non-blank\n", " character sequence may result in the output exceeding the\n", " requested line width.\n", "\n", " When bibclean is lexing, line wrapping is done by\n", " inserting a backslash-newline pair when the specified\n", " maximum is reached, so no line length will ever exceed\n", " the maximum.\n", "\n", "-[no-]align-equals\n", " With the positive form, align the equals sign in\n", " key/value assignments at the same column, separated by a\n", " single space from the value string. Otherwise, the\n", " equals sign follows the key, separated by a single space.\n", " Default: no.\n", "\n", "-[no-]check-values\n", " With the positive form, apply heuristic pattern matching\n", " to field values in order to detect possible errors (e.g.,\n", " ``year = \"192\"'' instead of ``year = \"1992\"''), and issue\n", " warnings when unexpected patterns are found.\n", "\n", " This checking is usually beneficial, but if it produces\n", " too many bogus warnings for a particular bibliography\n", " file, you can disable it with the negative form of this\n", " option. Default: yes.\n", "\n", "-[no-]delete-empty-values\n", " With the positive form, remove all field/value pairs for\n", " which the value is an empty string. This is helpful in\n", " cleaning up bibliographies generated from text editor\n", " templates. Compare this option with -[no-]remove-OPT-\n", " prefixes described below. Default: no.\n", "\n", "-[no-]file-position\n", " With the positive form, give detailed file position\n", " information in warning and error messages. Default: no.\n", "\n", "-[no-]fix-font-changes\n", " With the positive form, supply an additional brace level\n", " around font changes in titles to protect against\n", " downcasing by some BibTeX styles. Font changes that\n", " already have more than one level of braces are not\n", " modified.\n", "\n", " For example, if a title contains the Latin phrase {\\em\n", " Dictyostelium Discoideum} or {\\em {D}ictyostelium\n", " {D}iscoideum}, then downcasing will incorrectly convert\n", " the phrase to lower-case letters. Most BibTeX users are\n", " surprised that bracing the initial letters does not\n", " prevent the downcase action. The correct coding is {{\\em\n", " Dictyostelium Discoideum}}. However, there are also\n", " legitimate cases where an extra level of bracing wrongly\n", " protects from downcasing. Consequently, bibclean will\n", " normally not supply an extra level of braces, but if you\n", " have a bibliography where the extra braces are routinely\n", " missing, you can use this option to supply them.\n", "\n", " If you think that you need this option, it is strongly\n", " recommended that you apply bibclean to your bibliography\n", " file with and without -fix-font-changes, then compare the\n", " two output files to ensure that extra braces are not\n", " being supplied in titles where they should not be\n", " present. You will have to decide which of the two output\n", " files is the better choice, then repair the incorrect\n", " title bracing by hand.\n", "\n", " Since font changes in titles are uncommon, except for\n", " cases of the type which this option is designed to\n", " correct, it should do more good than harm. Default: no.\n", "\n", "-[no-]fix-initials\n", " With the positive form, insert a space after a period\n", " following author initials. Default: yes.\n", "\n", "-[no-]fix-names\n", " With the positive form, reorder author and editor name\n", " lists to remove commas at brace level zero, placing first\n", " names or initials before last names. Default: yes.\n", "\n", "-[no-]German-style\n", " With the positive form, interpret quote characters [\"]\n", " inside braced value strings at brace level 1 according to\n", " the conventions of the TeX style file german.sty, which\n", " overloads quote to simplify input and representation of\n", " German umlaut accents, sharp-s (es-zet), ligature\n", " separators, invisible hyphens, raised/lowered quotes,\n", " French guillemets, and discretionary hyphens. Recognized\n", " character combinations will be braced to prevent BibTeX\n", " from interpreting the quote as a string delimiter.\n", "\n", " Quoted strings receive no special handling from this\n", " option, and since German nouns in titles must anyway be\n", " protected from the downcasing operation of most BibTeX\n", " bibliography styles, German value strings that use the\n", " overloaded quote character can always be entered in the\n", " form \"{...}\", without the need to specify this option at\n", " all.\n", "\n", " Default: no.\n", "\n", "-[no-]keep-linebreaks\n", " Normally, line breaks inside value strings are collapsed\n", " into a single space, so that long value strings can later\n", " be broken to provide lines of reasonable length.\n", "\n", " With the positive form, linebreaks are preserved in value\n", " strings. If -max-width is set to zero, this preserves\n", " the original line breaks. Spacing outside value strings\n", " remains under bibclean's control, and is not affected by\n", " this option.\n", "\n", " Default: no.\n", "\n", "-[no-]keep-parbreaks\n", " With the positive form, preserve paragraph breaks (either\n", " formfeeds, or lines containing only spaces) in value\n", " strings. Normally, paragraph breaks are collapsed into a\n", " single space. Spacing outside value strings remains\n", " under bibclean's control, and is not affected by this\n", " option. Default: no.\n", "\n", "-[no-]keep-preamble-spaces\n", " With the positive form, preserve all whitespace in\n", " @Preamble{...} entries. Default: no.\n", "\n", "-[no-]keep-spaces\n", " With the positive form, preserve all spaces in value\n", " strings. Normally, multiple spaces are collapsed into a\n", " single space. This option can be used together with\n", " -keep-linebreaks, -keep-parbreaks, and -max-width 0 to\n", " preserve the form of value strings while still providing\n", " syntax and value checking. Spacing outside value strings\n", " remains under bibclean's control, and is not affected by\n", " this option. Default: no.\n", "\n", "-[no-]keep-string-spaces\n", " With the positive form, preserve all whitespace in\n", " @String{...} entries. Default: no.\n", "\n", "-[no-]parbreaks\n", " With the negative form, a paragraph break (either a\n", " formfeed, or a line containing only spaces) is not\n", " permitted in value strings, or between field/value pairs.\n", " This may be useful to quickly trap runaway strings\n", " arising from mismatched delimiters. Default: yes.\n", "\n", "-[no-]prettyprint\n", " Normally, bibclean functions as a prettyprinter.\n", " However, with the negative form of this option, it acts\n", " as a lexical analyzer instead, producing a stream of\n", " lexical tokens. See the LEXICAL ANALYSIS manual section\n", " for further details. Default: yes.\n", "\n", "-[no-]print-patterns\n", " With the positive form, print the value patterns read\n", " from initialization files as they are added to internal\n", " tables. Use this option to check newly-added patterns,\n", " or to see what patterns are being used.\n", "\n", " When bibclean is compiled with native pattern-matching\n", " code (the default), these patterns are the ones that will\n", " be used in checking value strings for valid syntax, and\n", " all of them are specified in initialization files, rather\n", " than hard-coded into the program. For further details,\n", " see the INITIALIZATION FILES manual section. Default:\n", " no.\n", "\n", "-[no-]read-init-files\n", " With the negative form, suppress loading of system-,\n", " user-, and file-specific initialization files.\n", " Initializations will come only from those files\n", " explicitly given by -init-file filename options.\n", " Default: yes.\n", "\n", "-[no-]remove-OPT-prefixes\n", " With the positive form, remove the ``OPT'' prefix from\n", " each field name where the corresponding value is not an\n", " empty string. The prefix ``OPT'' must be entirely in\n", " upper-case to be recognized.\n", "\n", " This option is for bibliographies generated with the help\n", " of the GNU Emacs BibTeX editing support, which generates\n", " templates with optional fields identified by the ``OPT''\n", " prefix. Although the function M-x bibtex-remove-OPT\n", " normally bound to the keystrokes C-c C-o does the job,\n", " users often forget, with the result that BibTeX does not\n", " recognize the field name, and ignores the value string.\n", " Compare this option with -[no-]delete-empty-values\n", " described above. Default: no.\n", "\n", "-[no-]scribe\n", " With the positive form, accept input syntax conforming to\n", " the Scribe document system. The output will be converted\n", " to conform to BibTeX syntax. See the SCRIBE BIBLIOGRAPHY\n", " FORMAT manual section for further details. Default: no.\n", "\n", "-[no-]trace-file-opening\n", " With the positive form, record in the error log file the\n", " names of all files which bibclean attempts to open. Use\n", " this option to identify where initialization files are\n", " located. Default: no.\n", "\n", "-[no-]warnings\n", " With the positive form, allow all warning messages. The\n", " negative form is not recommended since it may mask\n", " problems that should be repaired. Default: yes.\n", "\n", "-version Display the program version number on stderr, and then\n", " exit with a success return code. This will also include\n", " an indication of who compiled the program, the host name\n", " on which it was compiled, the time of compilation, and\n", " the type of string-value matching code selected, when\n", " that information is available to the compiler.\n", "\n", (const char*)NULL, bibclean-2.11.4.1.orig/bibclean.man0000644000175200017520000012373606526116574016152 0ustar debiandebian.\"===================================================================== .\" @Troff-man-file{ .\" author = "Nelson H. F. Beebe", .\" version = "2.11.4", .\" date = "09 May 1998", .\" time = "23:28:54 MDT", .\" filename = "bibclean.man", .\" address = "Center for Scientific Computing .\" University of Utah .\" Department of Mathematics, 322 INSCC .\" 155 S 1400 E RM 233 .\" Salt Lake City, UT 84112-0090 .\" USA .\" telephone = "+1 801 581 5254", .\" FAX = "+1 801 585 1640, +1 801 581 4148", .\" URL = "http://www.math.utah.edu/~beebe", .\" checksum = "54020 1566 6469 42974", .\" email = "beebe@math.utah.edu, beebe@acm.org, .\" beebe@ieee.org (Internet)", .\" codetable = "ISO/ASCII", .\" keywords = "bibliography, BibTeX, prettyprint", .\" supported = "yes", .\" docstring = "This file is the UNIX nroff/troff manual page .\" documentation for bibclean, a prettyprinter .\" and syntax checker for BibTeX bibliography .\" data base files. .\" .\" The checksum field above contains a CRC-16 .\" checksum as the first value, followed by the .\" equivalent of the standard UNIX wc (word .\" count) utility output of lines, words, and .\" characters. This is produced by Robert .\" Solovay's checksum utility.", .\" } .\"===================================================================== .\" .if t .ds Bi B\s-2IB\s+2T\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X .if n .ds Bi BibTeX .\" .if t .ds Sc S\s-2CRIBE\s+2 .if n .ds Sc Scribe .\" .if t .ds Te T\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X .if n .ds Te TeX .\" .\"===================================================================== .TH BIBCLEAN 1 "09 May 1998" "Version 2.11.4" .\"===================================================================== .SH NAME bibclean \- prettyprint and syntax check BibTeX and Scribe bibliography \ data base files .\"===================================================================== .SH SYNOPSIS .B bibclean [ .B \-author ] [ .BI \-error-log " filename" ] [ .B \-help ] .if n .ti +9n [ .B '\-?' ] [ .BI \-init-file " filename" ] .if t .ti +.5i [ .BI \-max-width " nnn" ] .if n .ti +9n [ .B \-[no-]align-equals ] [ .B \-[no-]check-values ] .if n .ti +9n [ .B \-[no-]delete-empty-values ] .if n .ti +9n .if t .ti +.5i [ .B \-[no-]file-position ] [ .B \-[no-]fix-font-changes ] .if n .ti +9n [ .B \-[no-]fix-initials ] [ .B \-[no-]fix-names ] .if n .ti +9n .if t .ti +.5i [ .B \-[no-]German-style ] [ .B \-[no-]keep-linebreaks ] .if n .ti +9n [ .B \-[no-]keep-parbreaks ] .if n .ti +9n .if t .ti +.5i [ .B \-[no-]keep-preamble-spaces ] .if n .ti +9n [ .B \-[no-]keep-spaces ] [ .B \-[no-]keep-string-spaces ] .if n .ti +9n .if t .ti +.5i [ .B \-[no-]parbreaks ] [ .B \-[no-]prettyprint ] .if n .ti +9n [ .B \-[no-]print-patterns ] .if t .ti +.5i [ .BI \-[no-]read-init-files ] .if n .ti +9n [ .B \-[no-]remove-OPT-prefixes ] [ .B \-[no-]scribe ] .if n .ti +9n .if t .ti +.5i [ .B \-[no-]trace-file-opening ] [ .B \-[no-]warnings ] .if n .ti +9n [ .B \-version ] .if n .ti +9n .if t .ti +.5i .IR "outfile" .PP All options can be abbreviated to a unique leading prefix. .PP An explicit file name of ``\-'' represents standard input; it is assumed if no input files are specified. .PP On VAX VMS and IBM PC DOS, the leading ``\-'' on option names may be replaced by a slash, ``/''; however, the ``\-'' option prefix is always recognized. .\"===================================================================== .SH DESCRIPTION .B bibclean prettyprints input \*(Bi\& files to .IR stdout , and checks the brace balance and bibliography entry syntax as well. It can be used to detect problems in \*(Bi\& files that sometimes confuse even \*(Bi\& itself, and importantly, can be used to normalize the appearance of collections of \*(Bi\& files. .PP Here is a summary of the formatting actions: .TP \w'\(bu'u+2n \(bu \*(Bi\& items are formatted into a consistent structure with one \fIfield = "value"\fP pair per line, and the initial @ and trailing right brace in column 1. .TP \(bu Tabs are expanded into blank strings; their use is discouraged because they inhibit portability, and can suffer corruption in electronic mail. .TP \(bu Long string values are split at a blank and continued onto the next line with leading indentation. .TP \(bu A single blank line separates adjacent bibliography entries. .TP \(bu Text outside \*(Bi\& entries is passed through verbatim. .TP \(bu Outer parentheses around entries are converted to braces. .TP \(bu Personal names in .I author and .I editor field values are normalized to the form ``P. D. Q. Bach'', from ``P.D.Q. Bach'' and ``Bach, P.D.Q.''. .TP \(bu Hyphen sequences in page numbers are converted to en-dashes. .TP \(bu Month values are converted to standard \*(Bi\& string abbreviations. .TP \(bu In titles, sequences of upper-case characters at brace level zero are braced to protect them from being converted to lower-case letters by some bibliography styles. .TP \(bu CODEN, ISBN (International Standard Book Number) and ISSN (International Standard Serial Number) entry values are examined to verify the checksums of each listed number, and correct ISBN hyphenation is automatically supplied. .PP The standardized format of the output of .B bibclean facilitates the later application of simple filters, such as .BR bibcheck (1), .BR bibdup (1), .BR bibextract (1), .BR bibindex (1), .BR bibjoin (1), .BR biblabel (1), .BR biblook (1), .BR biborder (1), .BR bibsort (1), .BR citefind (1), and .BR citetags (1), to process the text, and also is the one expected by the GNU Emacs \*(Bi\& support functions. .\"===================================================================== .SH OPTIONS Command-line switches may be abbreviated to a unique leading prefix, and letter case is .I not significant. All options are parsed before any input bibliography files are read, no matter what their order on the command line. Options that correspond to a yes/no setting of a flag have a form with a prefix "no-" to set the flag to .IR no . For such options, the last setting determines the flag value used. This is significant when options are also specified in initialization files (see the .B "INITIALIZATION FILES" manual section). .PP The leading hyphen that distinguishes an option from a filename may be doubled, for compatibility with GNU and POSIX conventions. Thus, .B \-author and .B \-\-author are equivalent. .PP To avoid confusion with options, if a filename begins with a hyphen, it must be disguised by a leading absolute or relative directory path, e.g., .I /tmp/-foo.bib or .IR ./-foo.bib . .\"----------------------------------------------- .TP \w'\-[no-]remove-OPT-prefixes'u+3n .B \-author Display an author credit on the standard error unit, .IR stderr , and then exit with a success return code. Sometimes an executable program is separated from its documentation and source code; this option provides a way to recover from that. .\"----------------------------------------------- .TP .BI \-error-log " filename" Redirect .I stderr to the indicated file, which will then contain all of the error and warning messages. This option is provided for those systems that have difficulty redirecting .IR stderr . .\"----------------------------------------------- .TP .BR \-help " or " \-? Display a help message on .IR stderr , giving a usage description, similar to this section of the manual pages, and then exit with a success return code. .\"----------------------------------------------- .TP .BI \-init-file " filename" Provide an explicit value pattern initialization file. It will be processed .I after any system-wide and job-wide initialization files found on the .B PATH (for VAX VMS, .BR SYS$SYSTEM ) and .B BIBINPUTS search paths, respectively, and may override them. It in turn may be overridden by a subsequent file-specific initialization file. The initialization file name can be changed at compile time, or at run time through a setting of the environment variable .BR BIBCLEANINI , but defaults to .I .bibcleanrc on UNIX, and to .I bibclean.ini elsewhere. For further details, see the .B "INITIALIZATION FILES" manual section. .\"----------------------------------------------- .TP .BI \-max-width " nnn" .B bibclean normally limits output line widths to 72 characters, and in the interests of consistency, that value should not be changed. Occasionally, special-purpose applications may require different maximum line widths, so this option provides that capability. The number following the option name can be specified in decimal, octal (starting with 0), or hexadecimal (starting with 0x). A zero or negative value is interpreted to mean unlimited, so .BI \-max-width " 0" can be used to ensure that each field/value pair appears on a single line. .IP When .B \-no-prettyprint requests .B bibclean to act as a lexical analyzer, the default line width is unlimited, unless overridden by this option. .IP When .B bibclean is prettyprinting, line wrapping will be done only at a space. Consequently, a long non-blank character sequence may result in the output exceeding the requested line width. .IP When .B bibclean is lexing, line wrapping is done by inserting a backslash-newline pair when the specified maximum is reached, so no line length will ever exceed the maximum. .\"----------------------------------------------- .TP .B \-[no-]align-equals With the positive form, align the equals sign in key/value assignments at the same column, separated by a single space from the value string. Otherwise, the equals sign follows the key, separated by a single space. .RI "Default: " no . .\"----------------------------------------------- .TP .B \-[no-]check-values With the positive form, apply heuristic pattern matching to field values in order to detect possible errors (e.g., ``\fIyear = "192"\fP'' instead of ``\fIyear = "1992"\fP''), and issue warnings when unexpected patterns are found. .IP This checking is usually beneficial, but if it produces too many bogus warnings for a particular bibliography file, you can disable it with the negative form of this option. .RI "Default: " yes . .\"----------------------------------------------- .TP .B \-[no-]delete-empty-values With the positive form, remove all field/value pairs for which the value is an empty string. This is helpful in cleaning up bibliographies generated from text editor templates. Compare this option with .B \-[no-]remove-OPT-prefixes described below. .RI "Default: " no . .\"----------------------------------------------- .TP .B \-[no-]file-position With the positive form, give detailed file position information in warning and error messages. .RI "Default: " no . .\"----------------------------------------------- .TP .B \-[no-]fix-font-changes With the positive form, supply an additional brace level around font changes in titles to protect against downcasing by some \*(Bi\& styles. Font changes that already have more than one level of braces are not modified. .IP For example, if a title contains the Latin phrase .I "{\eem Dictyostelium Discoideum}" or .IR "{\eem {D}ictyostelium {D}iscoideum}" , then downcasing will incorrectly convert the phrase to lower-case letters. Most \*(Bi\& users are surprised that bracing the initial letters does not prevent the downcase action. The correct coding is .IR "{{\eem Dictyostelium Discoideum}}" . However, there are also legitimate cases where an extra level of bracing wrongly protects from downcasing. Consequently, .B bibclean will normally .I not supply an extra level of braces, but if you have a bibliography where the extra braces are routinely missing, you can use this option to supply them. .IP If you think that you need this option, it is .I strongly recommended that you apply .B bibclean to your bibliography file with and without .BR \-fix-font-changes , then compare the two output files to ensure that extra braces are not being supplied in titles where they should not be present. You will have to decide which of the two output files is the better choice, then repair the incorrect title bracing by hand. .IP Since font changes in titles are uncommon, except for cases of the type which this option is designed to correct, it should do more good than harm. .RI "Default: " no . .\"----------------------------------------------- .TP .B \-[no-]fix-initials With the positive form, insert a space after a period following author initials. .RI "Default: " yes . .\"----------------------------------------------- .TP .B \-[no-]fix-names With the positive form, reorder .I author and .I editor name lists to remove commas at brace level zero, placing first names or initials before last names. .RI "Default: " yes . .\"----------------------------------------------- .TP .B \-[no-]German-style With the positive form, interpret quote characters ["] inside .I braced value strings at brace level 1 according to the conventions of the \*(Te\& style file .IR german.sty , which overloads quote to simplify input and representation of German umlaut accents, sharp-s (es-zet), ligature separators, invisible hyphens, raised/lowered quotes, French guillemets, and discretionary hyphens. Recognized character combinations will be braced to prevent \*(Bi\& from interpreting the quote as a string delimiter. .IP Quoted strings receive no special handling from this option, and since German nouns in titles must anyway be protected from the downcasing operation of most \*(Bi\& bibliography styles, German value strings that use the overloaded quote character can always be entered in the form "{.\|.\|.}", without the need to specify this option at all. .IP .RI "Default: " no . .\"----------------------------------------------- .TP .B \-[no-]keep-linebreaks Normally, line breaks inside value strings are collapsed into a single space, so that long value strings can later be broken to provide lines of reasonable length. .IP With the positive form, linebreaks are preserved in value strings. If .B \-max-width is set to zero, this preserves the original line breaks. Spacing .I outside value strings remains under .BR bibclean 's control, and is not affected by this option. .IP .RI "Default: " no . .\"----------------------------------------------- .TP .B \-[no-]keep-parbreaks With the positive form, preserve paragraph breaks (either formfeeds, or lines containing only spaces) in value strings. Normally, paragraph breaks are collapsed into a single space. Spacing .I outside value strings remains under .BR bibclean 's control, and is not affected by this option. .RI "Default: " no . .\"----------------------------------------------- .TP .B \-[no-]keep-preamble-spaces With the positive form, preserve all whitespace in @Preamble{.\|.\|.} entries. .RI "Default: " no . .\"----------------------------------------------- .TP .B \-[no-]keep-spaces With the positive form, preserve all spaces in value strings. Normally, multiple spaces are collapsed into a single space. This option can be used together with .BR \-keep-linebreaks , .BR \-keep-parbreaks , and .BI \-max-width " 0" to preserve the form of value strings while still providing syntax and value checking. Spacing .I outside value strings remains under .BR bibclean 's control, and is not affected by this option. .RI "Default: " no . .\"----------------------------------------------- .TP .B \-[no-]keep-string-spaces With the positive form, preserve all whitespace in @String{.\|.\|.} entries. .RI "Default: " no . .\"----------------------------------------------- .TP .B \-[no-]parbreaks With the negative form, a paragraph break (either a formfeed, or a line containing only spaces) is not permitted in value strings, or between field/value pairs. This may be useful to quickly trap runaway strings arising from mismatched delimiters. .RI "Default: " yes . .\"----------------------------------------------- .TP .B \-[no-]prettyprint Normally, .B bibclean functions as a prettyprinter. However, with the negative form of this option, it acts as a lexical analyzer instead, producing a stream of lexical tokens. See the .B "LEXICAL ANALYSIS" manual section for further details. .RI "Default: " yes . .\"----------------------------------------------- .TP .B \-[no-]print-patterns With the positive form, print the value patterns read from initialization files as they are added to internal tables. Use this option to check newly-added patterns, or to see what patterns are being used. .IP When .B bibclean is compiled with native pattern-matching code (the default), these patterns are the ones that will be used in checking value strings for valid syntax, and all of them are specified in initialization files, rather than hard-coded into the program. For further details, see the .B "INITIALIZATION FILES" manual section. .RI "Default: " no . .\"----------------------------------------------- .TP .B \-[no-]read-init-files With the negative form, suppress loading of system-, user-, and file-specific initialization files. Initializations will come .I only from those files explicitly given by .BI \-init-file " filename" options. .RI "Default: " yes . .\"----------------------------------------------- .TP .B \-[no-]remove-OPT-prefixes With the positive form, remove the ``OPT'' prefix from each field name where the corresponding value is .I not an empty string. The prefix ``OPT'' must be entirely in upper-case to be recognized. .IP This option is for bibliographies generated with the help of the GNU Emacs \*(Bi\& editing support, which generates templates with optional fields identified by the ``OPT'' prefix. Although the function .I M-x bibtex-remove-OPT normally bound to the keystrokes .I C-c C-o does the job, users often forget, with the result that \*(Bi\& does not recognize the field name, and ignores the value string. Compare this option with .B \-[no-]delete-empty-values described above. .RI "Default: " no . .\"----------------------------------------------- .TP .B \-[no-]scribe With the positive form, accept input syntax conforming to the \*(Sc\& document system. The output will be converted to conform to \*(Bi\& syntax. See the .B "SCRIBE BIBLIOGRAPHY FORMAT" manual section for further details. .RI "Default: " no . .\"----------------------------------------------- .TP .B \-[no-]trace-file-opening With the positive form, record in the error log file the names of all files which .B bibclean attempts to open. Use this option to identify where initialization files are located. .RI "Default: " no . .\"----------------------------------------------- .TP .B \-[no-]warnings With the positive form, allow all warning messages. The negative form is .I not recommended since it may mask problems that should be repaired. .RI "Default: " yes . .\"----------------------------------------------- .TP .B \-version Display the program version number on .IR stderr , and then exit with a success return code. This will also include an indication of who compiled the program, the host name on which it was compiled, the time of compilation, and the type of string-value matching code selected, when that information is available to the compiler. .\"===================================================================== .SH "ERROR RECOVERY AND WARNINGS" When .B bibclean detects an error, it issues an error message to both .I stderr and .IR stdout . That way, the user is clearly notified, and the output bibliography also contains the message at the point of error. .PP Error messages begin with a distinctive pair of queries, ??, beginning in column 1, followed by the input file name and line number. If the .B \-file-position option was specified, they also contain the input and output positions of the current file, entry, and value. Each position includes the file byte number, the line number, and the column number. In the event of a runaway string argument, the entry and value positions should precisely pinpoint the erroneous bibliography entry, and the file positions will indicate where it was detected, which may be rather later in the files. .PP Warning messages identify possible problems, and are therefore sent only to .IR stderr , and not to .IR stdout , so they never appear in the output file. They are identified by a distinctive pair of percents, %%, beginning in column 1, and as with error messages, may be followed by file position messages if the .B \-file-position option was specified. .PP For convenience, the first line of each error and warning message sent to .I stderr is formatted according to the expectations of the GNU Emacs .I next-error command. You can invoke .B bibclean with the Emacs .I "M-x compilebibclean filename.bib >filename.new" command, then use the .I next-error command, normally bound to .I "C-x `" (that's a grave, or back, accent), to move to the location of the error in the input file. .PP If error messages are ignored, and left in the output bibliography file, they will precipitate an error when the bibliography is next processed with \*(Bi\&. .PP After issuing an error message, .B bibclean then resynchronizes its input by copying it verbatim to .I stdout until a new bibliography entry is recognized on a line in which the first non-blank character is an at-sign (@). This ensures that nothing is lost from the input file(s), allowing corrections to be made in either the input or the output files. However, if .B bibclean detects an internal error in its data structures, it will terminate abruptly without further input or output processing; this kind of error should never happen, and if it does, it should be reported immediately to the author of the program. Errors in initialization files, and running out of dynamic memory, will also immediately terminate .BR bibclean . .\"===================================================================== .SH "INITIALIZATION FILES" .B bibclean can be compiled with one of three different types of pattern matching; the choice is made by the installer at compile time: .RS .TP \w'\(bu'u+2n \(bu The original version uses explicit hand-coded tests of value-string syntax. .TP \(bu The second version uses regular-expression pattern-matching host library routines together with regular-expression patterns that come entirely from initialization files. .TP \(bu The third version uses special patterns that come entirely from initialization files. .RE .PP The second and third versions are the ones of most interest here, because they allow the user to control what values are considered acceptable. However, command-line options can also be specified in initialization files, no matter which pattern matching choice was selected. .PP When .B bibclean starts, it searches for initialization files, finding the first one in the system executable program search path (on UNIX and IBM PC DOS, .BR PATH ) and the first one in the .B BIBINPUTS search path, and processes them in turn. Then, when command-line arguments are processed, any additional files specified by .BI \-init-file filename options are also processed. Finally, immediately before each .I named bibliography file is processed, an attempt is made to process an initialization file with the same name, but with the extension changed to .IR .ini . The default extension can be changed by a setting of the environment variable .BR BIBCLEANEXT . This scheme permits system-wide, user-wide, session-wide, and file-specific initialization files to be supported. .PP When input is taken from .IR stdin , there is no file-specific initialization. .PP For precise control, the .B \-no-read-init-files option suppresses all initialization files except those explicitly named by .BI \-init-file filename options, either on the command line, or in requested initialization files. .PP Recursive execution of initialization files with nested .B \-init-file options is permitted; if the recursion is circular, .B bibclean will finally get a non-fatal initialization file open failure after opening too many files. This terminates further initialization file processing. As the recursion unwinds, the files are all closed, then execution proceeds normally. .PP An initialization file may contain empty lines, comments from percent to end of line (just like \*(Te\&), option switches, and field/pattern or field/pattern/message assignments. Leading and trailing spaces are ignored. This is best illustrated by a short example: .PP .nf \fC % This is a small bibclean initialization file -init-file /u/math/bib/.bibcleanrc %% departmental patterns chapter = "\e"D\e"" %% 23 pages = "\e"D--D\e"" %% 23--27 volume = "\e"D \e\ean\e\ed D\e"" %% 11 and 12 year = \e "\e"dddd, dddd, dddd\e"" \e "Multiple years specified." %% 1989, 1990, 1991 -no-fix-names %% do not modify author/editor lists .fi \fP .PP Long logical lines can be split into multiple physical lines by breaking at a backslash-newline pair; the backslash-newline pair is discarded. This processing happens while characters are being read, before any further interpretation of the input stream. .PP Each logical line must contain a complete option (and its value, if any), or a complete field/pattern pair, or a field/pattern/message triple. .PP Comments are stripped during the parsing of the field, pattern, and message values. The comment start symbol is not recognized inside quoted strings, so it can be freely used in such strings. .PP Comments on logical lines that were input as multiple physical lines via the backslash-newline convention must appear on the .I last physical line; otherwise, the remaining physical lines will become part of the comment. .PP Pattern strings must be enclosed in quotation marks; within such strings, a backslash starts an escape mechanism that is commonly used in UNIX software. The recognized escape sequences are: .RS .TP .B "\ea" alarm bell (octal 007) .TP .B "\eb" backspace (octal 010) .TP .B "\ef" formfeed (octal 014) .TP .B "\en" newline (octal 012) .TP .B "\er" carriage return (octal 015) .TP .B "\et" horizontal tab (octal 011) .TP .B "\ev" vertical tab (octal 013) .TP .B "\eooo" character number octal .I ooo (e.g .B "\e012" is linefeed). Up to 3 octal digits may be used. .TP .B "\e0xhh" character number hexadecimal .I hh (e.g., .B "\e0x0a" is linefeed). .I xhh may be in either letter case. Any number of hexadecimal digits may be used. .RE .PP Backslash followed by any other character produces just that character. Thus, \e% gets a literal percent into a string (preventing its interpretation as a comment), \e" produces a quotation mark, and \e\e produces a single backslash. .PP An ASCII NUL .I "(\e0)" in a string will terminate it; this is a feature of the C programming language in which .B bibclean is implemented. .PP Field/pattern pairs can be separated by arbitrary space, and optionally, either an equals sign or colon functioning as an assignment operator. Thus, the following are equivalent: .PP .nf \fC pages="\e"D--D\e"" pages:"\e"D--D\e"" pages "\e"D--D\e"" pages = "\e"D--D\e"" pages : "\e"D--D\e"" pages "\e"D--D\e"" .fi \fP .PP Each field name can have an arbitrary number of patterns associated with it; however, they must be specified in separate field/pattern assignments. .PP An empty pattern string causes previously-loaded patterns for that field name to be forgotten. This feature permits an initialization file to completely discard patterns from earlier initialization files. .PP Patterns for value strings are represented in a tiny special-purpose language that is both convenient and suitable for bibliography value-string syntax checking. While not as powerful as the language of regular-expression patterns, its parsing can be portably implemented in less than 3% of the code in a widely-used regular-expression parser (the GNU .B regexp package). .PP The patterns are represented by the following special characters: .RS .TP \w''u+2n .B one or more spaces .TP .B a exactly one letter .TP .B A one or more letters .TP .B d exactly one digit .TP .B D one or more digits .TP .B r exactly one Roman numeral .TP .B R one or more Roman numerals (i.e. a Roman number) .TP .B w exactly one word (one or more letters and digits) .TP .B W one or more space-separated words, beginning and ending with a word .TP .B . one `special' character, one of the characters \|!\|#\|(\|)\|*\|+\|,\|-\|.\|/\|:\|;\|?\|[\|]\|~, a subset of punctuation characters that are typically used in string values .TP .B : one or more `special' characters .TP .B X one or more `special'-separated words, beginning and ending with a word .TP .B \ex exactly one x (x is any character), possibly with an escape sequence interpretation given earlier .TP .B x exactly the character x (x is anything but one of these pattern characters: a\|A\|d\|D\|r\|R\|w\|W\|.\|:\|\|\e\|) .RE .PP The .B X pattern character is very powerful, but generally inadvisable, since it will match almost anything likely to be found in a \*(Bi\& value string. The reason for providing pattern matching on the value strings is to uncover possible errors, not mask them. .PP There is no provision for specifying ranges or repetitions of characters, but this can usually be done with separate patterns. It is a good idea to accompany the pattern with a comment showing the kind of thing it is expected to match. Here is a portion of an initialization file giving a few of the patterns used to match .I number value strings: .PP .nf \fC number = "\e"D\e"" %% 23 number = "\e"A AD\e"" %% PN LPS5001 number = "\e"A D(D)\e"" %% RJ 34(49) number = "\e"A D\e"" %% XNSS 288811 number = "\e"A D\e\e.D\e"" %% Version 3.20 number = "\e"A-A-D-D\e"" %% UMIAC-TR-89-11 number = "\e"A-A-D\e"" %% CS-TR-2189 number = "\e"A-A-D\e\e.D\e"" %% CS-TR-21.7 .fi \fP .PP For a bibliography that contains only .I article entries, this list should probably be reduced to just the first pattern, so that anything other than a digit string fails the pattern-match test. This is easily done by keeping bibliography-specific patterns in a corresponding file with extension .IR .ini , since that file is read automatically. .PP You should be sure to use empty pattern strings in this pattern file to discard patterns from earlier initialization files. .PP The value strings passed to the pattern matcher contain surrounding quotes, so the patterns should also. However, you could use a pattern specification like "\e"D" to match an initial digit string followed by anything else; the omission of the final quotation mark \e" in the pattern allows the match to succeed without checking that the next character in the value string is a quotation mark. .PP Because the value strings are intended to be processed by \*(Te\&, the pattern matching ignores braces, and \*(Te\& control sequences, together with any space following those control sequences. Spaces around braces are preserved. This convention allows the pattern fragment .I A-AD-D to match the value string .IR TN-K\eslash\ 27-70 , because the value is implicitly collapsed to .I TN-K27-70 during the matching operation. .PP .BR bibclean 's normal action when a string value fails to match any of the corresponding patterns is to issue a .I warning message something like this: \fI"Unexpected value in ``year = "192"''\fP. In most cases, that is sufficient to alert the user to a problem. In some cases, however, it may be desirable to associate a different message with a particular pattern. This can be done by supplying a message string following the pattern string. Format items .I %% (single percent), .I %e (entry name), .I %f (field name), .I %k (citation key), and .I %v (string value) are available to get current values expanded in the messages. Here is an example: .PP .nf \fC chapter = "\e"D:D\e"" "Colon found in ``%f = %v''" %% 23:2 .fi \fP .PP To be consistent with other messages output by .BR bibclean , the message string should .I not end with punctuation. .PP If you wish to make the message an error, rather than just a warning, begin it with a query (?), like this: .PP .nf \fC chapter = "\e"D:D\e"" "?Colon found in ``%f = %v''" %% 23:2 .fi \fP .PP The query will not be included in the output message. .PP Escape sequences are supported in message strings, just as they are in pattern strings. You can use this to advantage for fancy things, such as terminal display mode control. If you rewrite the previous example as .PP .nf \fC chapter = "\e"D:D\e"" \e "?\e033[7mColon found in ``%f = %v''\e033[0m" %% 23:2 .fi \fP .PP the error message will appear in inverse video on display screens that support ANSI terminal control sequences. Such practice is not normally recommended, since it may have undesirable effects on some output devices. Nevertheless, you may find it useful for restricted applications. .PP For some types of bibliography fields, .B bibclean contains special-purpose code to supplement or replace the pattern matching: .RS .TP \w'\(bu'u+2n \(bu .IR CODEN , .I ISBN and .I ISSN field values are handled this way because their validation requires evaluation of checksums that cannot be expressed by simple patterns; no patterns are even used in these three cases. .TP \(bu When .B bibclean is compiled with pattern-matching code support, .IR chapter , .IR number , .IR pages , and .I volume values are checked only by pattern matching. .TP \(bu .I month values are first checked against the standard \*(Bi\& month abbreviations, and only if no match is found are patterns then used. .TP \(bu .I year values are first checked against patterns, then if no match is found, the year numbers are found and converted to integer values for testing against reasonable bounds. .RE .PP Values for other fields are checked only against patterns. You can provide patterns for .I any field you like, even ones .B bibclean does not already know about. New ones are simply added to an internal table that is searched for each string to be validated. .PP The special field, .IR key , represents the bibliographic citation key. It can be given patterns, like any other field. Here is an initialization file pattern assignment that will match an author name, a colon, an alphabetic string, and a two-digit year: .PP .nf \fC key = "A:Add" %% Knuth:TB86 .fi \fP .PP Notice that no quotation marks are included in the pattern, because the citation keys are not quoted. You can use such patterns to help enforce uniform naming conventions for citation keys, which is increasingly important as your bibliography data base grows. .\"===================================================================== .SH "LEXICAL ANALYSIS" When .B \-no-prettyprint is specified, .B bibclean acts as a lexical analyzer instead of a prettyprinter, producing output in lines of the form .PP .RS .nf "" .fi .RE .PP Each output line contains a single complete token, identified by a small integer number for use by a computer program, a token type name for human readers, and a string value in quotes. .PP Special characters in the token value string are represented with ANSI/ISO Standard C escape sequences, so all characters other than NUL are representable, and multi-line values can be represented in a single line. .PP Here are the token numbers and token type names that can appear in the output when .B \-prettyprint is specified: .PP .RS .nf 0 UNKNOWN 1 ABBREV 2 AT 3 COMMA 4 COMMENT 5 ENTRY 6 EQUALS 7 FIELD 8 INCLUDE 9 INLINE 10 KEY 11 LBRACE 12 LITERAL 13 NEWLINE 14 PREAMBLE 15 RBRACE 16 SHARP 17 SPACE 18 STRING 19 VALUE .fi .RE .PP Programs that parse such output should also be prepared for lines beginning with the warning prefix, %%, or the error prefix, ??, and for ANSI/ISO Standard C line number directives of the form .RS # line 273 "texbook1.bib" .RE which record the line number and file name of the current input file. .PP If a .BI \-max-width " nnn" command-line option was specified, long output lines will be wrapped at a backslash-newline pair, and consequently, software that processes the lexical token stream should be prepared to collapse such wrapped lines back into single lines. .PP As an example of the use of .BR \-no-prettyprint , the UNIX command pipeline .RS .nf \fBbibclean \-no-prettyprint\fP \fImylib.bib\fP | \e \fBawk\fP '$2 == "KEY" {print $3}' | \e \fBsed\fP -e 's/"//g' | \e \fBsort\fP .fi .RE will extract a sorted list of all citation keys in the file .IR mylib.bib . .PP A certain amount of processing will have been done on the tokens. In particular, delimiters equivalent to braces will have been replaced by braces, and braced strings will have become quoted strings. .PP The LITERAL token type is used for arbitrary text that .B bibclean does not examine further, such as the contents of a @Preamble{.\|.\|.} or a @Comment{.\|.\|.}. .PP The UNKNOWN token type should never appear in the output stream. It is used internally to initialize token type variables. .\"===================================================================== .SH "SCRIBE BIBLIOGRAPHY FORMAT" .BR bibclean 's support for the \*(Sc\& bibliography format is based on the syntax description in the \*(Sc\& Introductory User's Manual, 3rd Edition, May 1980. \*(Sc\& was originally developed by Brian Reid at Carnegie-Mellon University, and is now marketed by Unilogic, Ltd. .PP The \*(Bi\& bibliography format was strongly influenced by \*(Sc\&, and indeed, with care, it is possible to share bibliography files between the two systems. Nevertheless, there are some differences, so here is a summary of features of the \*(Sc\& bibliography file format: .TP \w'(10)'u+2n (1) Letter case is not significant in field names and entry names, but case is preserved in value strings. .TP (2) In field/value pairs, the field and value may be separated by one of three characters: =, /, or space. Space may optionally surround these separators. .TP (3) Value delimiters are any of these seven pairs: { } [ ] ( ) < > ' ' " " ` ` .TP (4) Value delimiters may not be nested, even though with the first four delimiter pairs, nested balanced delimiters would be unambiguous. .TP (5) Delimiters can be omitted around values that contain only letters, digits, sharp (#), ampersand (&), period (.), and percent (%). .TP (6) Outside of delimited values, a literal at-sign (@) is represented by doubled at-signs (@@). .TP (7) Bibliography entries begin with @name, as for \*(Bi\&, but any of the seven \*(Sc\& value delimiter pairs may be used to surround the values in field/value pairs. As in (4), nested delimiters are forbidden. .TP (8) Arbitrary space may separate entry names from the following delimiters. .TP (9) @Comment is a special command whose delimited value is discarded. As in (4), nested delimiters are forbidden. .TP (10) The special form .IP .nf @Begin{comment} .\|.\|. @End{comment} .fi .IP permits encapsulating arbitrary text containing any characters or delimiters, other than ``@End{comment}''. Any of the seven delimiter pairs may be used around the word ``comment'' following the ``@Begin'' or ``@End''; the delimiters in the two cases need not be the same, and consequently, ``@Begin{comment}''/``@End{comment}'' pairs may .I not be nested. .TP (11) The .I key field is required in each bibliography entry. .TP (12) A backslashed quote in a string will be assumed to be a \*(Te\& accent, and braced appropriately. While such accents do not conform to \*(Sc\& syntax, \*(Sc\&-format bibliographies have been found that appear to be intended for \*(Te\& processing. .PP Because of this loose syntax, .BR bibclean 's normal error detection heuristics are less effective, and consequently, \*(Sc\& mode input is not the default; it must be explicitly requested. .\"===================================================================== .SH "ENVIRONMENT VARIABLES" .TP \w'BIBCLEANEXT'u+2n .B BIBCLEANEXT File extension of bibliography-specific initialization files. Default: .IR .ini . .TP .B BIBCLEANINI Name of .B bibclean initialization files. Default: .IR .bibcleanrc " (UNIX)," .IR bibclean.ini " (non-UNIX)." .TP .B BIBINPUTS Search path for .B bibclean and \*(Bi input files. On UNIX, this is a colon-separated list of directories that are searched in order from first to last. It is not an error for a specified directory to not exist. .IP On other operating systems, the directory names should be separated by whatever character is used in system search path specifications, such as a semicolon on IBM PC DOS. .TP .B PATH On Atari TOS, IBM PC DOS, IBM PC OS/2, Microsoft NT, and UNIX, search path for system executable files. The system-wide .B bibclean initialization file is searched for in this path. .TP .B SYS$SYSTEM On VAX VMS, search path for system executable files and the system-wide .B bibclean initialization file. .\"===================================================================== .SH FILES .TP \w'\fIbibclean.ini\fP'u+3n .I *.bib \*(Bi\& and \*(Sc\& bibliography data base files. .TP .I *.ini File-specific initialization files. .TP .I .bibcleanrc UNIX system-wide and user-specific initialization files. .TP .I bibclean.ini Non-UNIX system-wide and user-specific initialization files. .\"===================================================================== .SH "SEE ALSO" .BR bibcheck (1), .BR bibdup (1), .BR bibextract (1), .BR bibindex (1), .BR bibjoin (1), .BR biblabel (1), .BR biblex (1), .BR biblook (1), .BR biborder (1), .BR bibparse (1), .BR bibsort (1), .BR bibtex (1), .BR bibunlex (1), .BR citefind (1), .BR citesub (1), .BR citetags (1), .BR latex (1), .BR scribe (1), .BR tex (1). .\"===================================================================== .SH AUTHOR .nf Nelson H. F. Beebe Center for Scientific Computing University of Utah Department of Mathematics, 322 INSCC 155 S 1400 E RM 233 Salt Lake City, UT 84112-0090 USA Tel: +1 801 581 5254 FAX: +1 801 585 1640, +1 801 581 4148 Email: beebe@math.utah.edu, beebe@acm.org, beebe@ieee.org (Internet) URL: http://www.math.utah.edu/~beebe .fi .\"===================================================================== .\" This is for GNU Emacs file-specific customization: .\" Local Variables: .\" fill-column: 50 .\" End: bibclean-2.11.4.1.orig/testbib6.bok0000644000175200017520000001633606525171464016130 0ustar debiandebian@Article{x, month = MAR # "\slash " # APR, month = MAR # "\slash" # APR, month = mar # "\slash " # apr, month = mar # "\slash" # apr, month = MAR # "- " # APR, month = MAR # "-" # APR, month = mar # "- " # apr, month = mar # "-" # apr, month = MAR # "-- " # APR, month = MAR # "--" # APR, month = mar # "-- " # apr, month = mar # "--" # apr, month = MAR # " -- " # APR, month = MAR # "--" # APR, month = mar # " -- " # apr, month = mar # "--" # apr, month = MAR # " \endash{} " # APR, month = MAR # "\endash{} " # APR, month = mar # " \endash{} " # apr, month = mar # "\endash{} " # apr, month = MAR # " \endash " # APR, month = MAR # "\endash " # APR, month = mar # " \endash " # apr, month = mar # "\endash " # apr, month = mar # "\slash " # APR, month = mar # "\slash" # APR, month = mar # "\slash " # apr, month = mar # "\slash" # apr, month = mar # "- " # APR, month = mar # "-" # APR, month = mar # "- " # apr, month = mar # "-" # apr, month = mar # "-- " # APR, month = mar # "--" # APR, month = mar # "-- " # apr, month = mar # "--" # apr, month = mar # " -- " # APR, month = mar # "--" # APR, month = mar # " -- " # apr, month = mar # "--" # apr, month = mar # " \endash{} " # APR, month = mar # "\endash{} " # APR, month = mar # " \endash{} " # apr, month = mar # "\endash{} " # apr, month = mar # " \endash " # APR, month = mar # "\endash " # APR, month = mar # " \endash " # apr, month = mar # "\endash " # apr, month = MAR # "\slash " # apr, month = MAR # "\slash" # apr, month = mar # "\slash " # apr, month = mar # "\slash" # apr, month = MAR # "- " # apr, month = MAR # "-" # apr, month = mar # "- " # apr, month = mar # "-" # apr, month = MAR # "-- " # apr, month = MAR # "--" # apr, month = mar # "-- " # apr, month = mar # "--" # apr, month = MAR # " -- " # apr, month = MAR # "--" # apr, month = mar # " -- " # apr, month = mar # "--" # apr, month = MAR # " \endash{} " # apr, month = MAR # "\endash{} " # apr, month = mar # " \endash{} " # apr, month = mar # "\endash{} " # apr, month = MAR # " \endash " # apr, month = MAR # "\endash " # apr, month = mar # " \endash " # apr, month = mar # "\endash " # apr, month = mar # "\slash " # apr, month = mar # "\slash" # apr, month = mar # "\slash " # apr, month = mar # "\slash" # apr, month = mar # "- " # apr, month = mar # "-" # apr, month = mar # "- " # apr, month = mar # "-" # apr, month = mar # "-- " # apr, month = mar # "--" # apr, month = mar # "-- " # apr, month = mar # "--" # apr, month = mar # " -- " # apr, month = mar # "--" # apr, month = mar # " -- " # apr, month = mar # "--" # apr, month = mar # " \endash{} " # apr, month = mar # "\endash{} " # apr, month = mar # " \endash{} " # apr, month = mar # "\endash{} " # apr, month = mar # " \endash " # apr, month = mar # "\endash " # apr, month = mar # " \endash " # apr, month = mar # "\endash " # apr, month = MAR # "\slash " # APR, month = MAR # "\slash" # APR, month = mar # "\slash " # apr, month = mar # "\slash" # apr, month = MAR # "- " # APR, month = MAR # "-" # APR, month = mar # "- " # apr, month = mar # "-" # apr, month = MAR # "-- " # APR, month = MAR # "--" # APR, month = mar # "-- " # apr, month = mar # "--" # apr, month = MAR # " -- " # APR, month = MAR # "--" # APR, month = mar # " -- " # apr, month = mar # "--" # apr, month = MAR # " \endash{} " # APR, month = MAR # "\endash{} " # APR, month = mar # " \endash{} " # apr, month = mar # "\endash{} " # apr, month = MAR # " \endash " # APR, month = MAR # "\endash " # APR, month = mar # " \endash " # apr, month = mar # "\endash " # apr, month = mar # "\slash " # APR, month = mar # "\slash" # APR, month = mar # "\slash " # apr, month = mar # "\slash" # apr, month = mar # "- " # APR, month = mar # "-" # APR, month = mar # "- " # apr, month = mar # "-" # apr, month = mar # "-- " # APR, month = mar # "--" # APR, month = mar # "-- " # apr, month = mar # "--" # apr, month = mar # " -- " # APR, month = mar # "--" # APR, month = mar # " -- " # apr, month = mar # "--" # apr, month = mar # " \endash{} " # APR, month = mar # "\endash{} " # APR, month = mar # " \endash{} " # apr, month = mar # "\endash{} " # apr, month = mar # " \endash " # APR, month = mar # "\endash " # APR, month = mar # " \endash " # apr, month = mar # "\endash " # apr, month = MAR # "\slash " # apr, month = MAR # "\slash" # apr, month = mar # "\slash " # apr, month = mar # "\slash" # apr, month = MAR # "- " # apr, month = MAR # "-" # apr, month = mar # "- " # apr, month = mar # "-" # apr, month = MAR # "-- " # apr, month = MAR # "--" # apr, month = mar # "-- " # apr, month = mar # "--" # apr, month = MAR # " -- " # apr, month = MAR # "--" # apr, month = mar # " -- " # apr, month = mar # "--" # apr, month = MAR # " \endash{} " # apr, month = MAR # "\endash{} " # apr, month = mar # " \endash{} " # apr, month = mar # "\endash{} " # apr, month = MAR # " \endash " # apr, month = MAR # "\endash " # apr, month = mar # " \endash " # apr, month = mar # "\endash " # apr, month = mar # "\slash " # apr, month = mar # "\slash" # apr, month = mar # "\slash " # apr, month = mar # "\slash" # apr, month = mar # "- " # apr, month = mar # "-" # apr, month = mar # "- " # apr, month = mar # "-" # apr, month = mar # "-- " # apr, month = mar # "--" # apr, month = mar # "-- " # apr, month = mar # "--" # apr, month = mar # " -- " # apr, month = mar # "--" # apr, month = mar # " -- " # apr, month = mar # "--" # apr, month = mar # " \endash{} " # apr, month = mar # "\endash{} " # apr, month = mar # " \endash{} " # apr, month = mar # "\endash{} " # apr, month = mar # " \endash " # apr, month = mar # "\endash " # apr, month = mar # " \endash " # apr, month = mar # "\endash " # apr, } bibclean-2.11.4.1.orig/Makefile0000644000175200017520000010073507133432612015335 0ustar debiandebian# Generated automatically from Makefile.in by configure. #======================================================================= # Makefile for BibTeX .bib file prettyprinter # # Current target list: (these include all GNU Project standard targets) # all build bibclean # bclproto obsolete; build an early prototype of bibclean # bibclean executable for bibclean # bibclean.h documentation strings for help() function # bibclean.hlp VAX VMS help file (automatically converted # from bibclean.txt) # bibclean.html HTML version of formatted manual pages # bibclean.i C preprocessor output from bibclean.c # bibclean.pdf Adobe Portable Document Format version # of bibclean.man # bibclean.ps PostScript version of bibclean.man # bibclean.tar tar archive file for ftp distribution # bibclean.txt nroff'ed bibclean.man manual page file # bibclean.zip Info-zip archive file for ftp distribution # bibclean.zoo zoo archive file for ftp distribution # check same as test (see below) # clean clean up all but executables and time stamps # clobber clean up everything # distclean remove everything make can rebuild at remote site # docs make bibclean.txt, bibclean.hlp, and bibclean.ps # install install executable and man pages # install.time internal target for install # install-exe install executable # install-man install man pages # install-ftp install .tar, .zip, and .zoo files in ftp tree # install-ftp.time internal target for install-ftp # lint check for code problems # mostlyclean same as clean # maintainer-clean for program author only: remove everything # make can rebuild at author's site # romtol build and run test program for romtol() # TAGS GNU Emacs tags file # test test bibclean on BibTeX and Scribe # bibliographies # test-bibtex test 1,2,3 bibclean on BibTeX bibliographies # test-bibtex-1 test 1 bibclean on BibTeX bibliographies # test-bibtex-2 test 2 bibclean on BibTeX bibliographies # test-bibtex-3 test 3 ISBN and ISSN verification # test-scribe test 1,2,3 bibclean on Scribe bibliographies # test-scribe-1 test 1 bibclean on Scribe bibliographies # test-scribe-2 test 2 bibclean on Scribe bibliographies # test-scribe-3 test 3 bibclean on Scribe bibliographies # test-version test extraction of version number # uninstall remove files installed by "make install" # uninstall-ftp remove installed files in anonymous ftp # directory # # [01-Jul-1996] -- add targets bibclean.pdf and DISTILL macro, and update # DIST-FILES list # [03-May-1996] -- add targets match, romtol, test-match, and test-romtol, # and update DIST-FILES list for version 2.11.3 release # [25-Apr-1996] -- add target for bibclean.html, with associated # support Makefile variables # [20-Sep-1995] -- revise to use GNU autoconf and configure # [08-Mar-1995] -- Change TARGET to TARGETS to avoid conflict with # built-in macro on Cray systems. Add -D_POSIX_SOURCE # to dec-alpha-osf1-c++ CC definition to work around # bug in C++ signal.h header file on OSF/1 3.x. # [21-Nov-1994] -- add cray-el94 target # [11-Nov-1994] -- add sun-sparc-solaris2-lcc and sun-sparc-sunos5-lcc # targets # [18-Oct-1994] -- add isbn.[co] to file lists # [16-Oct-1994] -- add strist.[co] to file lists # [04-Jun-1994] -- update for version 2.10 # add lint target # [31-Dec-1993] -- final polishing of Makefile for public release # after TUGboat publication # [24-Sep-1993] #======================================================================= #### Start of system configuration section. #### prefix = /usr/local exec_prefix = $(prefix) bindir = $(exec_prefix)/bin datadir = $(prefix)/lib infodir = $(prefix)/info libdir = $(prefix)/lib srcdir = . # This setting is specific to the developer's site, and not needed elsewhere FTPDIR = /u/ftp/pub/tex/bib # Need new awk (nawk) or gawk here: AWK = /usr/local/bin/gawk CC = CC CXX = c++ CFLAGS = -g $(OPT) CHARSET = @CHARSET@ CXXFLAGS = -g -O2 $(OPT) DEFS = -DHAVE_CONFIG_H INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ LDFLAGS = $(OPT) LIBOBJS = strtol.o LIBS = OPT = # Where to install the manual pages. mandir = $(prefix)/man/man1 # Extension (not including `.') for the installed manual page filenames. manext = 1 #### End of system configuration section. #### # For testing purposes, make sure we always have the same # initialization file BIBCLEAN = ./bibclean -init-file bibclean.ini BIBTEX = bibtex BIBTEX-TESTS = testbib1.org testbib2.org testbib3.org testbib4.org \ testbib5.org testbib6.org testisxn.org testcodn.org # This program is freely available at ftp://ftp.math.utah.edu/pub/misc/checksum-x-y.* CHECKSUM = checksum CHMOD = chmod COMPRESS = compress # Use the -p flag where available to preserve file time stamps # All known UNIX implementations have an rcp that supports -p, # but not all have similar support in cp. CP = /bin/cp -p CP = /bin/cp CP = rcp -p DIST-FILES = ChangeLog README Makefile Makefile.in bibclean.c \ bibclean.h bibclean.hlp bibclean.html bibclean.ini \ bibclean.man bibclean.pdf bibclean.ps bibclean.reg \ bibclean.txt build-all.sh ch.h chek.c config.h \ config.hin configure configure.in configure.sed \ custom.h delete.h do.c fix.c fndfil.c isbn.c \ keybrd.c keybrd.h match.c match.dat match.h \ match.lok option.c pattern.h rofvms.awk romtol.c \ romtol.dat romtol.lok strist.c strtol.c token.h \ toklst.h vaxvms.c vmswild.c xctype.h xerrno.h \ xlimits.h xpwd.h xstat.h xstdlib.h xstring.h \ xtypes.h xunistd.h yesorno.h $(BIBTEX-TESTS) \ $(BIBTEX-TESTS:.org=.bok) $(BIBTEX-TESTS:.org=.eok) \ testbib2.ltx $(SCRIBE-TESTS) \ $(SCRIBE-TESTS:.org=.bok) $(SCRIBE-TESTS:.org=.eok) \ testscr2.bo2 testscr2.eo2 doc/Makefile \ doc/bibclean.aux doc/bibclean.bbl doc/bibclean.bib \ doc/bibclean.blg doc/bibclean.dvi doc/bibclean.idx \ doc/bibclean.ilg doc/bibclean.ind doc/bibclean.log \ doc/bibclean.lot doc/bibclean.ltx doc/bibclean.sok \ doc/bibclean.sty doc/bibclean.toc doc/is-plain.bst \ doc/ltugboat.sty doc/path.sty doc/texnames.sty \ doc/tugboat.cmn ibmpc/dos/README \ ibmpc/dos/msc5p1/bibclean.exe \ ibmpc/dos/msc5p1/config.h \ ibmpc/dos/msc5p1/ibmclean.bat \ ibmpc/dos/msc5p1/ibmtest.bat \ ibmpc/dos/msc5p1/msc51bld.bat \ ibmpc/dos/msc5p1/msc51pth.bat \ ibmpc/dos/msc6p0/bibclean.exe \ ibmpc/dos/msc6p0/bibclean.map \ ibmpc/dos/msc6p0/config.h \ ibmpc/dos/msc6p0/ibmclean.bat \ ibmpc/dos/msc6p0/ibmtest.bat \ ibmpc/dos/msc6p0/msc60bld.bat \ ibmpc/dos/msc6p0/msc60pth.bat \ ibmpc/dos/msc7p0/config.h \ ibmpc/dos/msc7p0/ibmclean.bat \ ibmpc/dos/msc7p0/ibmtest.bat \ ibmpc/dos/msc7p0/msc70bld.bat \ ibmpc/dos/msc7p0/msc70pth.bat \ ibmpc/dos/tcc2p0/bibclean.exe \ ibmpc/dos/tcc2p0/config.h \ ibmpc/dos/tcc2p0/ibmclean.bat \ ibmpc/dos/tcc2p0/ibmtest.bat \ ibmpc/dos/tcc2p0/tcc20bld.bat \ ibmpc/dos/tcc2p0/tcc20pth.bat \ ibmpc/dos/tcc3p0/bibclean.exe \ ibmpc/dos/tcc3p0/config.h \ ibmpc/dos/tcc3p0/ibmclean.bat \ ibmpc/dos/tcc3p0/ibmtest.bat \ ibmpc/dos/tcc3p0/tcc30bld.bat \ ibmpc/dos/tcc3p0/tcc30pth.bat \ ibmpc/dos/tpp3p0/bibclean.exe \ ibmpc/dos/tpp3p0/config.h \ ibmpc/dos/tpp3p0/ibmclean.bat \ ibmpc/dos/tpp3p0/ibmtest.bat \ ibmpc/dos/tpp3p0/tcc30pth.bat \ ibmpc/dos/tpp3p0/tpp30bld.bat \ ibmpc/dos/wat10/wcc/bibclean.exe \ ibmpc/dos/wat10/wcc/bibclean.map \ ibmpc/dos/wat10/wcc/config.h \ ibmpc/dos/wat10/wcc/ibmclean.bat \ ibmpc/dos/wat10/wcc/ibmtest.bat \ ibmpc/dos/wat10/wcc/watcpp.bat \ ibmpc/dos/wat10/wcc/watpath.bat \ ibmpc/dos/wat10/wcc/watwcc.bat \ ibmpc/dos/wat10/wcc386/bibclean.exe \ ibmpc/dos/wat10/wcc386/config.h \ ibmpc/dos/wat10/wcc386/dos4gw.doc \ ibmpc/dos/wat10/wcc386/dos4gw.exe \ ibmpc/dos/wat10/wcc386/ibmclean.bat \ ibmpc/dos/wat10/wcc386/ibmtest.bat \ ibmpc/dos/wat10/wcc386/wat10bld.bat \ ibmpc/dos/wat10/wcc386/watpath.bat \ ibmpc/dos/wat10/wpp386/bibclean.exe \ ibmpc/dos/wat10/wpp386/config.h \ ibmpc/dos/wat10/wpp386/dos4gw.doc \ ibmpc/dos/wat10/wpp386/dos4gw.exe \ ibmpc/dos/wat10/wpp386/ibmclean.bat \ ibmpc/dos/wat10/wpp386/ibmtest.bat \ ibmpc/dos/wat10/wpp386/w386cpp.bat \ ibmpc/dos/wat10/wpp386/watpath.bat ibmpc/linux/bibclean \ save/Makefile save/config.h save/configure \ vms/alpha/recomp.com vms/alpha/vmsclean.com \ vms/alpha/vmsmake.com vms/alpha/vmstest.com vms/vax/README \ vms/vax/bibclean.exe vms/vax/bibclean.obj vms/vax/chek.obj \ vms/vax/config.h vms/vax/do.obj vms/vax/fix.obj \ vms/vax/fndfil.obj vms/vax/getoneheader.com \ vms/vax/getvmsheaders.com vms/vax/isbn.obj \ vms/vax/keybrd.obj vms/vax/match.obj vms/vax/option.obj \ vms/vax/recomp.com vms/vax/romtol.obj vms/vax/strist.obj \ vms/vax/vaxvms.obj vms/vax/vmsclean.com vms/vax/vmsmake.com \ vms/vax/vmstest.com vms/vax/vmswild.obj DISTILL = distill DITROFF = ditroff ## AT&T DITROFF = groff ## GNU # Some systems define HOST or HOSTNAME, but others don't, so we # generate it at compile time with the hostname utility. HOST = `hostname` # This program is freely available at ftp://ftp.math.utah.edu/pub/sgml/sp-* HTML-NCHECK = html-ncheck # This program is freely available at ftp://ftp.math.utah.edu/pub/sgml/htmlpty-x.y.* HTML-PRETTY = html-pretty LATEX = latex LINT = lint LINTFLAGS = -bchx -I. LN = ln # This program will not likely be available at other than the author's # site, so the .html file is preserved unless a "make maintainer-clean" # is done. It may be freely distributed at some point, so if you want # it, ask the author about its status. MAN2HTML = $(AWK) -f $$HOME/public_html/support/myman2html/man2html.awk MV = /bin/mv NROFF = nroff RM = /bin/rm -f SCRIBE-TESTS-1 = testscr1.org testscr2.org # Do NOT use SCRIBE-TESTS-1 in this list, because MIPS 6280 RISCos 5.0 # make then fails to correctly expand $(SCRIBE-TESTS:.org=.xyz). SCRIBE-TESTS = testscr1.org testscr2.org testscr3.org SED = /bin/sed SHELL = /bin/sh SRC = bibclean.c chek.c do.c fix.c fndfil.c isbn.c \ keybrd.c match.c option.c romtol.c strist.c strtol.c STRIP = strip # Only the subdirectories with Makefiles are listed here SUBDIRS = doc TAGS-FILES = bibclean.c bibclean.h ch.h chek.c config.h custom.h \ delete.h do.c fix.c fndfil.c isbn.c keybrd.c \ keybrd.h match.c match.h option.c pattern.h romtol.c \ strist.c strtol.c token.h toklst.h vaxvms.c \ vmswild.c xctype.h xerrno.h xlimits.h xpwd.h xstat.h \ xstdlib.h xstring.h xtypes.h xunistd.h yesorno.h UNZIP = unzip VERSION = `$(AWK) '/^[ \t]*version *= *"[0-9.]+", *$$/ \ { gsub(/[^0-9.]/,"",$$3); print $$3 }' bibclean.c` ZIP = zip ZOO = zoo #======================================================================= .SUFFIXES: .SUFFIXES: .o .i .c .bib-new .bib-old .bib .bib.bib-new: -$(BIBCLEAN) <$< >$@ .bib.bib-old: ./bclproto <$< >$@ .c.i: $(CC) -E -I. -I$(srcdir) $(DEFS) $(CPPFLAGS) $(CFLAGS) $< 2>&1 | \ grep -v '^[ ]*$$' >$@ .c.o: $(CC) -c -I. -I$(srcdir) $(DEFS) $(CPPFLAGS) $(CFLAGS) $< #======================================================================= all: bibclean ### bibclean-specific building targets ### bibclean.dvi: bibclean.texi cd $(srcdir); texi2dvi bibclean.texi bibclean.html: bibclean.man -$(CHMOD) u+w $@ $(MAN2HTML) $$PWD/$< | $(HTML-PRETTY) -f $$PWD/$@ | $(CHECKSUM) >$@ $(CHMOD) a-w $@ $(HTML-NCHECK) $@ bibclean.info: bibclean.texi cd $(srcdir); makeinfo bibclean.texi BIBCLEAN-OBJS = bibclean.o chek.o do.o fix.o fndfil.o isbn.o \ keybrd.o match.o option.o romtol.o strist.o \ $(LIBOBJS) bibclean: $(BIBCLEAN-OBJS) $(CC) -o bibclean $(CFLAGS) $(BIBCLEAN-OBJS) $(LIBS) # This target converts the option descriptions from the manual pages # to C code for inclusion in bibclean.c. The first awk command # augments the bibclean.man file in a pipe with some small changes # after the .TH line (which sets page dimensions) to get longer # unhyphenated ragged-right lines without page headers, and reduces # the option description indentation. # # Here are the magic nroff incantations: # # .pl 100i set page length to 100in # .nr LL 7.2i set LL register (page width) to 7.2in # .nh no hyphenation # .na no right-adjusting # # That output feeds into nroff for formatting, col for removal of # underlining and escape sequences, expand for tab removal, sed to # backslash all quotes, and a final awk step to select the lines # between OPTIONS and ERROR headers for conversion to C code. bibclean.h: bibclean.man -$(RM) $@ echo '/* WARNING: Do NOT edit this file. It was created automatically'\ >$@ echo ' with the command "make bibclean.h" by '$$USER@`hostname` \ >>$@ echo ' in '$$PWD' on '`date`' */' >>$@ echo >>$@ $(AWK) '{ if ($$0 ~ /^.TH/) \ printf("%s\n.pl 100i\n.nr LL 7.2i\n.nh\n.na",$$0); \ else if ($$0 ~ /^.TP .*remove-OPT-prefixes.*/) \ print ".TP 1in"; \ else \ print $$0}' >$@ echo ' (const char*)NULL,' >>$@ # VAX VMS help file format from bibclean.txt bibclean.hlp: bibclean.txt rofvms.awk $(AWK) -f rofvms.awk bibclean.hlp bibclean.i: bibclean.c ch.h config.h custom.h delete.h keybrd.h \ match.h pattern.h token.h toklst.h xctype.h \ xlimits.h xstdlib.h xstring.h xtypes.h xunistd.h \ Makefile bibclean.o: bibclean.c ch.h config.h custom.h delete.h keybrd.h \ match.h pattern.h token.h toklst.h xctype.h \ xlimits.h xstdlib.h xstring.h xtypes.h xunistd.h bibclean.pdf: bibclean.ps $(DISTILL) bibclean.ps bibclean.ps: bibclean.man $(DITROFF) -Tps -man $? >$@ bibclean.tar: subdist $(DIST-FILES) -$(RM) bibclean.tar bibclean.tar-lst tar chf bibclean.tar $(DIST-FILES) -mkdir bibclean-$(VERSION) cd bibclean-$(VERSION); tar xf ../bibclean.tar tar cf bibclean-$(VERSION).tar bibclean-$(VERSION) -$(RM) -r bibclean-$(VERSION) -$(RM) bibclean.tar $(LN) bibclean-$(VERSION).tar bibclean.tar bibclean.txt: bibclean.man $(NROFF) -man bibclean.man | col -b | expand >$@ bibclean.zip: subdist $(DIST-FILES) -$(RM) bibclean*.zip -$(RM) bibclean*.zip-lst $(ZIP) bibclean-$(VERSION).zip $(DIST-FILES) $(UNZIP) -v bibclean-$(VERSION).zip >bibclean-$(VERSION).zip-lst $(LN) bibclean-$(VERSION).zip bibclean.zip bibclean.zoo: subdist $(DIST-FILES) -$(RM) bibclean*.zoo -$(RM) bibclean*.zoo-lst $(ZOO) a bibclean-$(VERSION).zoo $(DIST-FILES) $(ZOO) v bibclean-$(VERSION).zoo >bibclean-$(VERSION).zoo-lst $(LN) bibclean-$(VERSION).zoo bibclean.zoo clean: -$(RM) $(BIBTEX-TESTS:.org=.bib) -$(RM) $(SCRIBE-TESTS:.org=.bib) -$(RM) *.aux -$(RM) *.bbl -$(RM) *.blg -$(RM) *.dvi -$(RM) *.err -$(RM) *.i -$(RM) *.log -$(RM) *.o -$(RM) *~ -$(RM) \#* -$(RM) bibclean.tar bibclean-?.??.tar -$(RM) bibclean.tar-lst -$(RM) bibclean-$(VERSION).tar -$(RM) bibclean.zip bibclean-?.??.zip -$(RM) bibclean.zip-lst bibclean-?.??.zip-lst -$(RM) bibclean.zoo bibclean-?.??.zoo -$(RM) bibclean.zoo-lst bibclean-?.??.zoo-lst -$(RM) configure.tmp -$(RM) core -$(RM) match match.lst -$(RM) romtol romtol.lst -$(RM) testcodn.bib -$(RM) testisxn.bib -$(RM) testscr2.bi2 testscr2.er2 -for d in $(SUBDIRS) ; do (cd $$d ; make clean ) ; done clobber: clean -$(RM) bclproto bibclean match -$(RM) bibclean.hlp -$(RM) bibclean.ps -$(RM) bibclean.txt -$(RM) install.time install-ftp.time -for d in $(SUBDIRS) ; do (cd $$d ; make clobber ) ; done docs: bibclean.txt bibclean.hlp bibclean.ps chek.i: chek.c config.h custom.h match.h token.h xctype.h \ xstat.h xstring.h yesorno.h Makefile chek.o: chek.c config.h custom.h match.h token.h xctype.h \ xstat.h xstring.h yesorno.h do.i: do.c ch.h config.h custom.h delete.h keybrd.h \ match.h pattern.h token.h toklst.h xctype.h \ xstdlib.h xstring.h xunistd.h yesorno.h Makefile do.o: do.c ch.h config.h custom.h delete.h keybrd.h \ match.h pattern.h token.h toklst.h xctype.h \ xstdlib.h xstring.h xunistd.h yesorno.h fix.i: fix.c config.h custom.h token.h xctype.h xstring.h \ yesorno.h Makefile fix.o: fix.c config.h custom.h token.h xctype.h xstring.h \ yesorno.h fndfil.i: fndfil.c config.h custom.h xctype.h xpwd.h xstdlib.h \ xstring.h xunistd.h Makefile fndfil.o: fndfil.c config.h custom.h xpwd.h xstdlib.h \ xstring.h xunistd.h isbn.i: isbn.c config.h custom.h xctype.h xstring.h xstdlib.h \ Makefile isbn.o: isbn.c config.h custom.h xctype.h xstring.h xstdlib.h keybrd.i: ch.h config.h custom.h xstring.h xunistd.h yesorno.h \ Makefile keybrd.o: ch.h config.h custom.h xctype.h xstring.h xunistd.h yesorno.h # Build a test program for match() match: match.c romtol.o -$(RM) match.O if [ -f match.o ] ; then $(MV) match.o match.O ; fi -$(RM) match.o $(CC) -I. -I$(srcdir) $(DEFS) $(CPPFLAGS) $(CFLAGS) -DTEST -o match \ match.c romtol.o -$(RM) match.o if [ -f match.O ] ; then $(MV) match.O match.o ; fi match.i: match.c config.h custom.h match.h xctype.h xstdlib.h \ xstring.h Makefile match.o: match.c config.h custom.h match.h xctype.h xstdlib.h \ xstring.h mostlyclean: clean -for d in $(SUBDIRS) ; do (cd $$d ; make mostlyclean ) ; done option.i: option.c bibclean.h ch.h config.h custom.h xstdlib.h \ xstring.h yesorno.h Makefile # When HOST, USER, __DATE__, and __TIME__ are available, # bibclean preserves them for its version output option.o: option.c bibclean.h ch.h config.h custom.h xstdlib.h \ xstring.h yesorno.h $(CC) -I. -I$(srcdir) $(CFLAGS) -c -DHOST=\"$(HOST)\" -DUSER=\"$(USER)\" option.c # Build a test program for romtol() romtol: romtol.c -$(RM) romtol.O if [ -f romtol.o ] ; then $(MV) romtol.o romtol.O ; fi -$(RM) romtol.o $(CC) -I. -I$(srcdir) $(DEFS) $(CPPFLAGS) $(CFLAGS) -DTEST -o romtol romtol.c -$(RM) romtol.o if [ -f romtol.O ] ; then $(MV) romtol.O romtol.o ; fi romtol.i: romtol.c config.h custom.h xctype.h xstring.h xstdlib.h \ Makefile romtol.o: romtol.c config.h custom.h xctype.h xstring.h xstdlib.h strist.i: strist.c config.h custom.h xctype.h xstring.h Makefile strist.o: strist.c config.h custom.h xctype.h xstring.h strtol.i: strtol.c config.h custom.h xctype.h xstdlib.h xstring.h \ Makefile strtol.o: strtol.c config.h custom.h xctype.h xstdlib.h xstring.h # Subdirectory makes needed for distribution file creation subdist: -for d in $(SUBDIRS) ; do (cd $$d ; make ) ; done #======================================================================= ### targets required by GNU Coding standards ### Makefile: Makefile.in config.status ./config.status config.status: configure $(srcdir)/configure --srcdir=$(srcdir) --no-create configure: configure.in configure.sed cd $(srcdir); autoconf # Apply needed fixup for C++ with configure mv configure configure.tmp $(SED) -f configure.sed configure -$(RM) configure.tmp $(CHMOD) +x configure distclean: clobber -$(RM) Makefile -$(RM) config.status -$(RM) config.cache -for d in $(SUBDIRS) ; do (cd $$d ; make distclean ) ; done maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." -$(CHMOD) u+w bibclean.html -$(RM) bibclean.html -$(RM) bibclean.pdf -$(RM) TAGS -$(RM) configure -for d in $(SUBDIRS) ; do (cd $$d ; make maintainer-clean ) ; done TAGS: Makefile $(TAGS-FILES) cd $(srcdir); etags $(TAGS-FILES) #======================================================================= install: install.time install.time: install-exe install-man touch install.time install-exe: bibclean if test -f $(bindir)/bibclean ; \ then \ $(MV) $(bindir)/bibclean $(bindir)/bibclean.old ; \ fi -$(RM) $(bindir)/bibclean-$(VERSION) $(CP) bibclean $(bindir)/bibclean -$(STRIP) $(bindir)/bibclean $(LN) $(bindir)/bibclean $(bindir)/bibclean-$(VERSION) $(CHMOD) 775 $(bindir)/bibclean $(CP) bibclean.ini $(bindir)/.bibcleanrc $(CHMOD) 664 $(bindir)/.bibcleanrc install-man: bibclean.man if test -f $(mandir)/bibclean.$(manext) ; \ then \ $(MV) $(mandir)/bibclean.$(manext) $(mandir)/bibclean.old.$(manext) ; \ fi $(CP) bibclean.man $(mandir)/bibclean.$(manext) -$(RM) $(mandir)/../cat$(manext)/bibclean.$(manext) -$(RM) $(mandir)/bibclean-$(VERSION).$(manext) $(LN) $(mandir)/bibclean.$(manext) $(mandir)/bibclean-$(VERSION).$(manext) $(CHMOD) 664 $(mandir)/bibclean.$(manext) install-ftp: install-ftp.time install-ftp.time: bibclean.tar bibclean.zip bibclean.zoo tar tvf bibclean-$(VERSION).tar >$(FTPDIR)/bibclean-$(VERSION).tar-lst $(COMPRESS) $(FTPDIR)/bibclean-$(VERSION).tar.gz $(CP) bibclean-$(VERSION).zip $(FTPDIR) $(CP) bibclean-$(VERSION).zip-lst $(FTPDIR) $(CP) bibclean-$(VERSION).zoo $(FTPDIR) $(CP) bibclean-$(VERSION).zoo-lst $(FTPDIR) ls -l $(FTPDIR)/bibclean* date >install-ftp.time lint: $(LINT) $(LINTFLAGS) $(SRC) test check: test-match test-romtol test-bibtex test-scribe # Test bibclean on Part 1 of the Reduce bibliography, testbib2.org. The # output file, testbib2.bib, is compared against a correct output file, # testbib2.bok, from the author's site, and then the bibliography is # additionally tested by LaTeX and BibTeX. test-bibtex: bibclean test-bibtex-1 test-bibtex-2 test-bibtex-3 \ test-bibtex-4 test-bibtex-5 test-bibtex-6 test-bibtex-7 \ test-bibtex-8 test-bibtex-1: bibclean testbib1.org @echo @echo "==================== begin BibTeX test 1 =====================" @echo -@$(RM) testbib1.err testbib1.bib @echo -$(BIBCLEAN) testbib1.org >testbib1.bib 2>testbib1.err @echo @echo "There should be no differences found:" @echo "diff testbib1.bok testbib1.bib" -@if diff testbib1.bok testbib1.bib ; then $(RM) testbib1.bib ; fi @echo @echo "There should be no differences found:" @echo "diff testbib1.eok testbib1.err" -@if diff testbib1.eok testbib1.err ; then $(RM) testbib1.err ; fi @echo @echo "===================== end BibTeX test 1 ======================" @echo test-bibtex-2: bibclean testbib2.org @echo @echo "==================== begin BibTeX test 2 =====================" @echo @-$(RM) testbib2.aux testbib2.bbl testbib2.bib testbib2.blg \ testbib2.dvi testbib2.log @echo -$(BIBCLEAN) -no-check-values testbib2.org >testbib2.bib 2>testbib2.err @echo @echo "There should be no differences found:" -diff testbib2.bok testbib2.bib @echo @echo "There should be no differences found:" @echo "diff testbib2.eok testbib2.err" -@if diff testbib2.eok testbib2.err ; then $(RM) testbib2.err ; fi @echo $(LATEX) testbib2.ltx >/dev/null @echo @echo "Expect 6 BibTeX warnings:" -$(BIBTEX) testbib2 @if cmp testbib2.bok testbib2.bib 2>/dev/null ; \ then $(RM) testbib2.bib ; fi @echo $(LATEX) testbib2.ltx >/dev/null @echo $(LATEX) testbib2.ltx @echo @echo "===================== end BibTeX test 2 ======================" @echo test-bibtex-3: bibclean testbib3.org @echo @echo "==================== begin BibTeX test 3 =====================" @echo @-$(RM) testbib3.bib testbib3.err @echo -$(BIBCLEAN) -fix-font-change testbib3.org >testbib3.bib 2>testbib3.err @echo @echo "There should be no differences found:" -@if diff testbib3.bok testbib3.bib ; then $(RM) testbib3.bib ; fi @echo @echo "There should be no differences found:" @echo "diff testbib3.eok testbib3.err" -@if diff testbib3.eok testbib3.err ; then $(RM) testbib3.err ; fi @echo @echo "===================== end BibTeX test 3 ======================" @echo test-bibtex-4: bibclean testbib4.org @echo @echo "==================== begin BibTeX test 4 =====================" @echo @-$(RM) testbib4.bib testbib4.err @echo -$(BIBCLEAN) -fix-font-change testbib4.org >testbib4.bib 2>testbib4.err @echo @echo "There should be no differences found:" -@if diff testbib4.bok testbib4.bib ; then $(RM) testbib4.bib ; fi @echo @echo "There should be no differences found:" @echo "diff testbib4.eok testbib4.err" -@if diff testbib4.eok testbib4.err ; then $(RM) testbib4.err ; fi @echo @echo "===================== end BibTeX test 4 ======================" @echo test-bibtex-5: bibclean testbib5.org @echo @echo "==================== begin BibTeX test 5 =====================" @echo @-$(RM) testbib5.bib testbib5.err @echo -$(BIBCLEAN) -German-style testbib5.org >testbib5.bib 2>testbib5.err @echo @echo "There should be no differences found:" -@if diff testbib5.bok testbib5.bib ; then $(RM) testbib5.bib ; fi @echo @echo "There should be no differences found:" @echo "diff testbib5.eok testbib5.err" -@if diff testbib5.eok testbib5.err ; then $(RM) testbib5.err ; fi @echo @echo "===================== end BibTeX test 5 ======================" @echo test-bibtex-6: bibclean testbib6.org @echo @echo "==================== begin BibTeX test 6 =====================" @echo -$(BIBCLEAN) testbib6.org >testbib6.bib 2>testbib6.err @echo @echo "There should be no differences found:" @echo "diff testbib6.bok testbib6.bib" -@if diff testbib6.bok testbib6.bib ; then $(RM) testbib6.bib ; fi @echo @echo "There should be no differences found:" @echo "diff testbib6.eok testbib6.err" -@if diff testbib6.eok testbib6.err ; then $(RM) testbib6.err ; fi @echo @echo "===================== end BibTeX test 6 ======================" @echo # Test bibclean verification of ISBN and ISSN values. The test file, # testisxn.org, contains several hundred correct values, and also # several hundred erroneous values. We therefore discard error and # warning messages, we ignore the return code, and we don't try to use # the output with LaTeX or BibTeX. test-bibtex-7: bibclean testisxn.org @echo @echo "==================== begin BibTeX test 7 =====================" @echo -$(BIBCLEAN) testisxn.org >testisxn.bib 2>testisxn.err @echo @echo "There should be no differences found:" @echo "diff testisxn.bok testisxn.bib" -@if diff testisxn.bok testisxn.bib ; then $(RM) testisxn.bib ; fi @echo @echo "There should be no differences found:" @echo "diff testisxn.eok testisxn.err" -@if diff testisxn.eok testisxn.err ; then $(RM) testisxn.err ; fi @echo @echo "===================== end BibTeX test 7 ======================" @echo # Test bibclean verification of CODEN values. The test file, # testcodn.org, contains about 1200 correct values, and also several # hundred erroneous values. We therefore discard error and warning # messages, we ignore the return code, and we don't try to use the # output with LaTeX or BibTeX. test-bibtex-8: bibclean testcodn.org @echo @echo "==================== begin BibTeX test 8 =====================" @echo -$(BIBCLEAN) testcodn.org >testcodn.bib 2>testcodn.err @echo @echo "There should be no differences found:" @echo "diff testcodn.bok testcodn.bib" -@if diff testcodn.bok testcodn.bib ; then $(RM) testcodn.bib ; fi @echo @echo "There should be no differences found:" @echo "diff testcodn.eok testcodn.err" -@if diff testcodn.eok testcodn.err ; then $(RM) testcodn.err ; fi @echo @echo "===================== end BibTeX test 8 ======================" @echo test-match: match @echo @echo "===================== begin match test =======================" @echo ./match match.lst @echo "There should be no differences found:" diff match.lok match.lst @if cmp match.lok match.lst 2>/dev/null ; then $(RM) match.lst ; fi @echo @echo "====================== end match test ========================" @echo test-romtol: romtol @echo @echo "===================== begin romtol test ======================" @echo ./romtol romtol.lst @echo "There should be no differences found:" diff romtol.lok romtol.lst @if cmp romtol.lok romtol.lst 2>/dev/null ; then $(RM) romtol.lst ; fi @echo @echo "====================== end romtol test =======================" @echo # Test bibclean on a collection of Scribe bibliographies containing # test cases to exhibit variations in Scribe bibliography syntax. test-scribe: bibclean test-scribe-1 test-scribe-2 test-scribe-3 # The peculiar step using tr to prepare the .aux files is needed to # overcome inconsistencies in the handling of backslashes by the IBM # RS/6000 shell. The documented behavior in the SunOS 4.1.1 manual # pages is (emphasis mine): # All characters enclosed between a pair of single quote marks # (''), except a single quote, are quoted by the shell. BACKSLASH # HAS NO SPECIAL MEANING INSIDE A PAIR OF SINGLE QUOTES. A single # quote may be quoted inside a pair of double quote marks (for # example, "'"). # On SunOS, HP UX, IBM 3090 AIX, NeXT Mach, and SGI IRIX, the shells # csh, sh, bash, and ksh agree with this. However, on IBM RS/6000 # AIX 3.2, backslashes in single quotes are untouched by csh, but # expanded by sh and ksh. This is clearly a bug, because the INFO # hypertext node on bsh/rsh says: # All characters, except the enclosing single quotation marks, are # taken literally, with any special meaning removed. # test-scribe-1: bibclean $(SCRIBE-TESTS-1) @echo @echo "==================== begin Scribe test 1 =====================" @echo -@for f in $(SCRIBE-TESTS-1) ; \ do \ BASENAME=`basename $$f .org` ; \ echo ; \ echo "----------------------------------------------------" ; \ echo ; \ echo "$(BIBCLEAN) -scribe -no-check $$f >$$BASENAME.bib" ; \ $(BIBCLEAN) -scribe -no-check $$f >$$BASENAME.bib \ 2>$$BASENAME.err; \ echo ; \ echo "There should be no differences found:" ; \ echo "diff $$BASENAME.bok $$BASENAME.bib" ; \ diff $$BASENAME.bok $$BASENAME.bib ; \ echo ; \ echo "There should be no differences found:" ; \ echo "diff $$BASENAME.eok $$BASENAME.err" ; \ if diff $$BASENAME.eok $$BASENAME.err ; \ then $(RM) $$BASENAME.err ; fi ; \ echo ; \ echo 'Bbibstyle{plain}NBcitation{*}NBbibdata{'$$BASENAME'}' | \ tr BN '\134\012' >$$BASENAME.aux ; \ if [ "$$BASENAME" = "testscr1" ] ; \ then echo "Expect 5 BibTeX warnings" ; fi ; \ if [ "$$BASENAME" = "testscr2" ] ; \ then echo "There should be no BibTeX warnings:" ; fi ; \ echo "$(BIBTEX) $$BASENAME" ; \ $(BIBTEX) $$BASENAME; \ if cmp $$BASENAME.bok $$BASENAME.bib 2>/dev/null ; \ then $(RM) $$BASENAME.bib ; fi ; \ done @echo "===================== end Scribe test 1 ======================" @echo test-scribe-2: bibclean testscr2.org @echo @echo "==================== begin Scribe test 2 =====================" @echo -$(BIBCLEAN) -scribe -file -no-check testscr2.org \ >testscr2.bib 2>testscr2.err @echo @echo "There should be no differences found:" @echo "diff testscr2.bok testscr2.bib" -@if diff testscr2.bok testscr2.bib ; then $(RM) testscr2.bib ; fi @echo @echo "There should be no differences found:" @echo "diff testscr2.eok testscr2.err" -@if diff testscr2.eok testscr2.err ; then $(RM) testscr2.err ; fi @echo @echo -$(BIBCLEAN) -scribe -file -no-check -no-par testscr2.org \ >testscr2.bi2 2>testscr2.er2 @echo @echo "There should be no differences found:" @echo "diff testscr2.bo2 testscr2.bi2" -@if diff testscr2.bo2 testscr2.bi2 ; then $(RM) testscr2.bi2 ; fi @echo @echo "There should be no differences found:" @echo "diff testscr2.eo2 testscr2.er2" -@if diff testscr2.eo2 testscr2.er2 ; then $(RM) testscr2.er2 ; fi @echo @echo "===================== end Scribe test 2 ======================" @echo test-scribe-3: bibclean testscr3.org @echo @echo "==================== begin Scribe test 3 =====================" @echo -$(BIBCLEAN) -scribe -no-check testscr3.org >testscr3.bib 2>testscr3.err @echo @echo "There should be no differences found:" @echo "diff testscr3.bok testscr3.bib" -@if diff testscr3.bok testscr3.bib ; then $(RM) testscr3.bib ; fi @echo @echo "There should be no differences found:" @echo "diff testscr3.eok testscr3.err" -@if diff testscr3.eok testscr3.err ; then $(RM) testscr3.err ; fi @echo @echo "===================== end Scribe test 3 ======================" @echo test-version: Makefile @echo "Version number is ""'"$(VERSION)"'" uninstall: -$(RM) $(bindir)/bibclean $(bindir)/bibclean-$(VERSION) \ $(bindir)/.bibcleanrc \ $(mandir)/bibclean.$(manext) \ $(mandir)/bibclean-$(VERSION).$(manext) \ $(mandir)/../cat$(manext)/bibclean.$(manext) \ $(mandir)/../cat$(manext)/bibclean-$(VERSION).$(manext) -$(RM) install.time uninstall-ftp: -$(RM) $(FTPDIR)/bibclean-$(VERSION).tar -$(RM) $(FTPDIR)/bibclean-$(VERSION).tar-lst -$(RM) $(FTPDIR)/bibclean-$(VERSION).zip -$(RM) $(FTPDIR)/bibclean-$(VERSION).zip-lst -$(RM) $(FTPDIR)/bibclean-$(VERSION).zoo -$(RM) $(FTPDIR)/bibclean-$(VERSION).zoo-lst -$(RM) install-ftp.time # Prevent GNU make v3 from overflowing arg limit on SysV. .NOEXPORT: bibclean-2.11.4.1.orig/testbib5.eok0000644000175200017520000000024305650354435016117 0ustar debiandebian%% "testbib5.org", line 2: Unexpected quote usage in German-style braced string. %% "testbib5.org", line 14: Unexpected quote usage in German-style braced string. bibclean-2.11.4.1.orig/match.h0000644000175200017520000000044205335472576015153 0ustar debiandebiantypedef struct s_pattern { const char *pattern; const char *message; } MATCH_PATTERN; YESorNO match_pattern ARGS((const char *s_, const char *pattern_)); #define BIBTEX_HIDDEN_DELIMITER '\001' /* brackets inline comments in values */ /* to hide them from pattern matching */ bibclean-2.11.4.1.orig/ChangeLog0000644000175200017520000011730006525721001015440 0ustar debiandebianSun May 10 06:28:55 1998 Nelson H. F. Beebe * Version 2.11.4 completed. * Files changed with this release: ChangeLog Makefile.in README bibclean.c bibclean.h bibclean.html bibclean.man custom.h fix.c isbn.c option.c. * New files with this release: testbib6.bok testbib6.eok testbib6.org. * Makefile.in: Add testbib6.org to the BIBTEX-TESTS list to exercise the bug fix in fix_month() described below. Change modes of installed files to permit group write access. Change the mode of the installed .bibcleanrc file to ensure readability. Save any old installed version of bibclean as bibclean.old during "make install". Create a hard link from the installed bibclean to bibclean-2.11.4, and similarly, for the installed manual page. That way, if a later version comes out and is installed, then bibclean-2.11.4 will still remain accessible. [I'm doing this for all of my software distributions; extensive experience with GNUware, and even commercial packages like Matlab and Maple, on ten architectures, has shown the desirability of having multiple versions available as a check when a suspected bug turns up.] The "make uninstall" command will remove the version-number-specific installed files, if you wish to back out of an install. Change symbolic links to hard links; they are all used in a context where this has no side effects. Change CP to mean "rcp -p", so as to preserve file time stamps on installation. * README: Update my mailing addresses. * bibclean.c: Update my mailing addresses in the file header. * bibclean.h: Automatically generated from the formatted output of bibclean.man to include that file's changes. * bibclean.hhtml: Automatically generated from bibclean.man to include that file's changes. * bibclean.man: Update my mailing addresses in the file header and the AUTHOR section. Document the new exit behavior for -author and -version. Documen the new GNU/POSIX --option support, and add a paragraph on the handling of filenames that would be confused with option names. Add cross references to bibcheck(1), bibdup(1), bibjoin(1), biblabel(), and biborder(1). * custom.h: Change type of sleep() on NeXT from int to unsigned int. * fix.c: Fix a rarely-encountered, but long-standing, bug in fix_month(). Prior to this version, a value mar # "\slash" # apr would be incorrectly transformed month = mar # "\slash" # " # apr # " because in_quoted_string was incorrect for the remaineder of the value. If the input value was changed to mar # "\slash " # apr then that space inside the quoted string preserved the correctness of in_quoted_string, and the output was correct. * isbn.c: Add several countries to the list of recognized ISBN prefixes. Similar updates have been added to the Emacs Lisp file, isbn.el, available in a separate software distribution. Update my mailing addresses in the file header. * option.c: : Update my mailing addresses on opt_author(). Add support for GNU/POSIX-style --options. Update bibclean version number. Make -author and -version handling exit with a success code after their output on stderr. Sat May 4 07:52:26 1996 Nelson H. F. Beebe * Version 2.11.3 (final edits before public release) * Build and test bibclean under 8 IBM PC DOS C and C++ compilers, and under VAX VMS 6.1. bibclean already builds and tests successfully under about 40 C and C++ compilers on 10 different UNIX architectures. * Update README, ibmpc/dos/README and vms/vax/README files. * In bibclean.c, move sanity checks on HAVE_xxx pattern matching flags to custom.h. * In bibclean.man, update version release date to match that set in option.c. * In chek.c, update computation of stdlog_on_stdout to be stricter. Fix off-by-one error in loop termination condition in u72copy_element(). Add code in copy_element() to skip trailing space and hyphens, to avoid generating bogus warnings about checksum mismatches. * In configure.in, remove -g from CFLAGS if we are compiling with lcc because it produces bad debug symbol tables on Sun Solaris 2.x. * In do.c, remove unused LAST_SCREEN_LINE macro. Change open of bibliography files to use binary mode in OS_PCDOS. * In fix.c, change types of n and nupper in fix_title() from int to size_t to avoid type conflict warnings from some compilers. * In fndfil.c, remove unused NEWLINE() macro. Update remainder of code to match fndfil.c in DVI 3.0 development tree. * In isbn.c, add workaround for bug in Watcom 10.0 C++ compilers in ISBN_hyphenate(). Fix serious bug in squeeze_ISBN() that had gone undetected for a very long time: the loop exit condition referred to in_ISBN instead of *in_ISBN. * In keybrd.c, add #include to get some needed library function headers. Remove some old unused macros. Update get_screen_lines() for VAX VMS 6.x. * In Makefile.in, remove some obsolete files and targets, update the DIST-FILES list, and add missing testbib5.org file to BIBTEX-TESTS list. Remove DIST-FILES-BIN list, since the share bundle option is no longer provided, and DIST-FILES now has all files listed. Add match, romtol, and subdist targets. Add dependency on subdist of distribution file targets. Add test-match and test-romtol targets. * In match.c, add month_patterns[], pages_patterns[], and volume_patterns[]. Update messages to include input line number. Modify process() to accept ``key = "value",'' lines that can be easily extracted from bibliography file collections. A test suite has been prepared in match.dat, and the test-match and match targets added to Makefile.in to support this testing. * In option.c, update release date in BIBCLEAN_VERSION. * In vaxvms.c, include and for more function prototypes. Update for VAX VMS 6.x. Add conditionals around memxxx() functions, so as to avoid linker warnings about duplicate symbols, and add missing return values in the memxxx() functions. Change LIB$SPAWN to lib$spawn. * In vmswild.c, remove unused LINSIZ macro. Sun Apr 28 08:54:38 1996 Nelson H. F. Beebe * Version 2.11.3 (continued): * Makefile.in (test-bibtex): Add test-bibtex-7 with test files testcodn.{org,bok,eok}, to test CODEN handling. Thu Apr 25 11:24:18 1996 Nelson H. F. Beebe * Version 2.11.3: * In bibclean.c, remove declarations of unused functions that were moved to new file chek.c in 2.11.0. Change one test (n <= 0) to (n == 0) to avoid compiler warnings about test of unsigned values for being negative. * Add CODEN validation support to chek.c, and completely rewrite the ISBN and ISSN handling. The reason for the latter is that by defining a simple list grammar for CODEN, ISBN, and ISSN string values, the code becomes cleaner and more rigorous, and parts of it can be shared for the checking of all three types. Future versions of bibclean may add support for additional key/value pairs for which the string values can also be validated, and such support will then be very simple to supply. New functions added: check_CODEN(), bad_CODEN(), copy_element(), incomplete_CODEN(), is_CODEN_char(), is_ISBN_char(), is_ISSN_char(), parse_list(), parse_element(), parse_separator(), validate_CODEN(), validate_ISBN(), validate_ISSN(). New typedef added: parse_data. These improvements necessitated a change in testisxn.eok, since the recognition of ISBN values (and also CODEN and ISSN values) is now quite strict, so some of the erroneous ISBNs in testisxn.org are now handled slightly differently. The same number of error messages are issued in both 2.11.2 and 2.11.3 however. * Add mention of the CODEN validations to bibclean.man. * Add CODEN entry in out_value() checks[] array in do.c. Mon Mar 4 16:23:20 1996 Nelson H. F. Beebe * Version 2.11.2: This version adds six new command-line options: -[no]-align-equals, -[no]-keep-preamble-spaces, and -[no]-keep-string-spaces. The first pair of these was suggested by Matthew Morley who contributed an implementation for a much older version of bibclean (2.05); the idea has been used, but not the contributed code. The second and third pairs supply a need that has developed as the TUG and BibNet bibliography collections have grown: namely, sometimes bibliographies have rather long, and carefully spaced, @Preamble{} and @String{} entries, and these new options allow the internal spacing in those entries to be preserved. * bibclean.c: Add the six new options to the file header comments. Add function out_verbatim() to handle output without space fiddling. Add new macros KEEP_PREAMBLE_SPACES() and KEEP_STRING_SPACES(), and use them in get_next_non_blank() and out_string(). * bibclean.man: Document the new -[no]-align-equals, -[no]-keep-preamble-spaces, and -[no]-keep-string-spaces options. * do.c: Add new macros KEEP_PREAMBLE_SPACES() and KEEP_STRING_SPACES(), and use them in several places. Add new global variables keep_preamble_spaces and keep_string_spaces. Make in_preamble instead of static, since it is now needed in bibclean.c too. Add new functions do_preamble_2() and do_string_2() to hold old bodies of do_preamble() and do_string(), to simplify setting of in_preamble and in_string flags. Add support in out_equals() for -align-equals option. The code for -keep-preamble-spaces and -keep-string-spaces turned out to be quite hard to get right, largely because of the design flaw (for which I alone hold responsibility) that input space is discarded at a rather low level, rather than being collected as a legitimate token that is carried up to the highest levels, and then discarded, or otherwise modified. * fix.c: Add additional checks in fix_pages() to avoid inserting en-dashes where they don't belong. * keybrd.c: Add MIN() macro. Add new functions beep() and erase_characters() to shorten coding. Move search code out of do_more() into separate function do_search(). Add support for word-erase, line-erase, and line-reprint in do_search(). When a search string is reused, print it again. Beep if too many characters are entered in a search string. Add support for forward-paragraph and backward-paragraph commands. Correct binding of M-> to be KEYBOARD_END instead of KEYBOARD_HOME. Add support for X Window System arrow keys, and PgUP and PgDn keys. * option.c: Add new functions opt_align_equals(), opt_keep_preamble_spaces(), and opt_keep_string_spaces(), plus corresponding entries in the options[] array, and document them in the opt_help() help_lines[] and usage() usage_lines[] arrays. Sat Oct 7 08:59:48 1995 Nelson H. F. Beebe * Version 2.11: The major change for this new version is the conversion of the source code to use the GNU autoconf system so that on UNIX systems, the configure script can automatically prepare a header file, config.h, that deals with the variations in UNIX and compiler implementations. This entailed: (a) the creation of 3 new files: Makefile.in, config.hin, and configure.in; (b) elimination of 12 header files: machdefs.h os.h osatari.h ospcdos.h osprimos.h osrmx.h ostops20.h osunix.h osvaxvms.h osvmcms.h unixlib.h xstddef.h; (c) adjustments of #include statements, protecting most with #if HAVE_xxx ... #endif; (d) change of the NEW_STYLE and STDC macros to HAVE_STDC; (e) replacement of free() calls by macro FREE(), so as to be able to hide some typecasting to deal with defective C/C++ implementations. * bibclean.c: The code in this file became too large for IBM PC DOS compilers, so it has been split into 10 new header files: ch.h config.h custom.h delete.h keybrd.h pattern.h token.h toklst.h xunistd.h yesorno.h and 5 additional source code files: chek.c do.c fix.c keybrd.c option.c. [The name is chek.c, rather than check.c, to avoid a conflict with the GNU standard Makefile target, check.] The 683-line revision history has been moved from bibclean.c into this new ChangeLog file (see below), following GNU Project conventions; I've not bothered to revise the recording style to match that supported by the GNU Emacs add-change-log-entry-other-window command. This file splitting reduced bibclean.c from 8K lines to 2K lines, and the file do.c, at 2.9K lines, is now the largest source code file. Here is a current source code line count: % wc -l *.c | sort +0nr -1 11626 total 2885 do.c 2094 bibclean.c 1051 vmswild.c 880 vaxvms.c 790 isbn.c 774 chek.c 606 keybrd.c 572 fix.c 569 fndfil.c 551 option.c 395 match.c 240 strtol.c 174 romtol.c 45 strist.c % wc -l *.h | sort +0nr -1 835 total 260 bibclean.h 178 config.h 81 custom.h 51 toklst.h 47 keybrd.h 37 ch.h 26 xctype.h 18 xstring.h 17 xstdlib.h 16 xstat.h 15 token.h 12 xtypes.h 12 xunistd.h 11 pattern.h 10 delete.h 10 match.h 9 xerrno.h 9 xlimits.h 9 xpwd.h 7 yesorno.h Despite the increased number of source files between versions 2.10 and 2.11, the total source code has been reduced from 16.6K lines to 12.5K lines, largely due to the use of GNU configure. Of course, one must factor in about 1K new lines in Makefile.in, config.hin, and configure.in, and 1.6K lines in the automatically-generated configure script. In summary, although this was my first use of autoconf, and the development effort stretched over 3 otherwise very busy weeks, I believe the payoff for other programs will be significant, because their config.in and configure.in files will be very similar to those for bibclean, so the conversion effort will be much smaller. Once config.h files are manually generated generated for other operating systems, they too will be largely reusable for most of my other programs in C/C++. * do.c: In get_line(), change if (*(p-1) == '\\') to if ((p > &line[0]) && (*(p-1) == '\\')) in order to avoid possible out-of-bounds pointer reference. * fix.c: In fix_pages(), add code * match.c: In next_s(), change for (++s; ; ) to for (++s; *s; ) to eliminate compiler warnings about the final return() being unreachable. The additional test of *s against '\0' is of no significance for execution time. * Makefile.in: remove vaxvms.c and vmswild.c, since they will be handled now by a separate Makefile for VAX VMS and OpenVMS. * README: Completely rewrite, with new installation instructions for UNIX using the configure script, and new subsections containing status reports of installation attempts on all major UNIX variants. Revision history (reverse time order): [08-Mar-1995] 2.10.1 In get_braced_string(), handle overlooked case of \"{x}. [04-Jun-1994]--[18-Oct-1994] 2.10 Add support for simple forward and backward searches in help display in do_more(). Add World-Wide Web URI, URL, and URN names to the list of field names that are forced to uppercase. Disable code in out_s() that breaks lines at punctuation characters, because this can introduce unwanted line breaks in file names and WWW names. Add code in out_c() to preserve last line in output buffer, so that a subsequent DELETE_LINE operation will have a complete line to delete. Previously, with -delete-empty, if the output buffer filled up in the middle of a line that was going to be deleted, the initial part of the line would be (incorrectly) output. This was a hard bug to track down, because it happened very rarely. Extend out_flush() to force out all buffered output. Change bad_ISBN() to not put incorrect hyphens back into ISBNs. ISBN hyphen positions vary, because large publishers get short prefixes, and small publishers get long prefixes. The ISBN is a 10-character value of the form countrygroupnumber-publishernumber-booknumber-checkdigit where the first three fields are of variable width and contain only the digits [0-9], and the last single-character checkdigit field contains [0-9X]. Larger country groups or publishers have smaller numbers, and correspondingly larger booknumbers. Thus, the TeXbook ISBN, 0-201-13447-0, consists of 0 for English-language countries, 201 for Addison-Wesley, 13447 for the book number, and 0 for the check digit. Although it is permissible to use spaces instead of hyphends, we prefer the latter in order to have unbreakable text for improved readability and editing convenience. Add code in fix_title() to supply braces around brace-level-zero TeX control words containing upper-case letters, to obtain conversions like these: "\TeX{} for the Impatient" -> "{\TeX} for the Impatient" "\TeX\ for the Impatient" -> "{\TeX} for the Impatient" in order to protect the control words from downcasing in some BibTeX styles. Change DELETE_CHAR and DELETE_LINE values to be outside the range of possible signed or unsigned character values, so as not to interfere with handling of 8-bit character data. Add new functions bcolumn(), bdelc(), bdelline(), bflush(), blastc(), bpeekc(), and bputc() to localize access to the output buffer, buf[], and the variables that record line number, column number, and output byte position. Completely rewrite out_c() to use these new functions, substantially simplifying the code. Add original_file initialized to the_file in error() and warning(), and used in out_status(), to more accurately reflect output file positions. Previously, the error messages themselves resulted in modification of these values. In new_entry(), initialize non_white_chars to zero. Previously, if multiple input files were specified, the first entry in files after the first was not correctly recognized if it started on the first line. This bug went undetected for so long because bibclean is rarely used with multiple input files. At most calls of out_with_parbreak_error(), put the current character back into the input stream so that it is output after the error message instead of before. This is more likely to avoid splitting an input token. The remaining fixes are for bugs and problems caught by Alf-Christian Achilles who maintains a very large bibliography collection on ftp.ira.uka.de in /pub/bibliography consisting of about 300 bibliographies, and 800 bibcleaned files, occupying about 100MB. In trim_value(), check for final "\" control sequence, and discard it; previously, only the space was discarded, leaving an erroneous bare backslash. In get_braced_string(), add missing additional boundary check in loop to convert braced string to quoted string. Add DELETE_WHITESPACE support. In out_c(), this requests discarding of all trailing whitespace in the output buffer. In do_BibTeX_entry(), do_group(), do_preamble(), and do_Scribe_entry(), if prettyprinting, call out_c(DELETE_WHITESPACE) after parsing optional space following the @ and the name. Previously, a newline following the @ or the name would be preserved, which is legal, but not desirable in prettyprinted output. At end of do_one_file(), call out_c(DELETE_WHITESPACE) to discard trailing space at end of file. Add -[no-]German-style option to provide for special treatment of quote characters inside braced strings, following the conventions of german.sty, which overloads quote to simplify input and representation of German umlaut accents, sharp-s (es-zet), ligature separators, invisible hyphens, raised/lowered quotes, French guillemets, and discretionary hyphens. Add external file isbn.c, and call to ISBN_hyphenate() in bad_ISBN() and check_ISBN(), so that correct hyphenation of ISBNs is automatically supplied. [01-Mar-1994] 2.09 Add -[no-]keep-linebreaks, -[no-]keep-parbreaks, and -[no-]keep-spaces. This required usurping two control characters, Ctl-N and Ctl-P, for LINEBREAK and PARBREAK respectively; should such characters occur in an input string value, they will be misinterpreted, and will not be preserved in the output. This restriction could be eliminated if value strings had such characters converted to escape sequences which were converted back again on output; however, this would pose a substantial complication for column position tracking, and carry a run-time penalty from the extra conversions. Since control characters are not expected to be present in value strings, loss of two of them is not expected to be a problem. [24-Sep-1993] 2.08 Update bibclean.c to handle characters in range 128..255 when char is a signed data type, and extend testbib1.bib with more tests of the complete character set. Augment Makefile with convenience targets for each host environment. Add private input character pushback support, because ANSI/ISO Standard C only guarantees one character of pushback, and bibclean needs at least 3. [04-Jun-1993] 2.07 Update *.h files from DVI development to include support for DEC Alpha 3000/500x OSF 1.2 (cc, c89, cxx), and HP 9000/735 HP-UX A.09.01 (cc, c89, CC, gcc, g++). Private memset() below is not compiled on DEC Alpha to avoid conflicts with vendor-supplied version. [30-Nov-1992 -- 29-Jan-1993] 2.06 [1] Extend fix_author() to handle conversion of "Smith, Jr., A. B." to "A. B. {Smith, Jr.}", and "Smith Jr., A. B." to "A. B. {Smith Jr.}". Introduce new auxiliary function check_junior() called by fix_author(). [2] Extend month_pair[] table to include abbreviated month names. Add new function month_token() and rewrite fix_month() to use it to do a token-based parse of the current_value[] string in order to be able to handle conversions like these: "January" --> jan "Jan." --> jan "January 24" --> jan # " 24" "24 Jan." --> "24 " # jan "May/June" --> may # "/" # jun "February and May" --> feb # " and " # may New test input files have been added, with new expected output and error files. [3] Add -[no-]fix-font-changes switch and new function opt_fix_font_changes() to supply additional braces around font changes in titles to prevent letter case conversion by some BibTeX stylos. The real work is done in the new function brace_font_changes() called at the end of fix_title(). [4] Fix bug in out_value() with -delete-empty-fields requested. The code incorrectly assumed that a string value of 2 or fewer characters was an empty string. That is correct if the string value is a quoted string, but wrong if the string value is a 1- or 2-character macro. The code now correctly checks explicitly for empty string, rather than using its length to make the deletion decision. Thanks to Manfred Aben for reporting this bug! [5] Fix bug in get_token(); the code must test for a non-NULL pointer before calling SKIP_SPACE(). Thanks to Gil Webster for reporting this bug! [And thanks to the Internet funding agencies, who make worldwide collaboration like this possible.] [6] Add support for Roman numeral matching in match.c. New file romtol.c contains romtol(), isroman(), and a test program. [7] Add calls to perror() at file open failures. [8] Fix stupid error in brace_font_changes(); s[] was not NUL-terminated before the final call to strcpy(). [9] In format(), make newmsg[] an internal static array instead of reusing shared_string; otherwise, a warning message from check_length() wipes out the current string value. [10] In main(), initialize the_file.input.filename to an empty string, to avoid dereferencing a NULL pointer in warning() during command-line option parsing. [11] In do_args(), add code to display erroneous option switches. [12] In apply_function(), make string comparisons use longer of the minimum match length and the option switch length, so that all characters of the option switch are tested. Previously, option misspellings after the minimum match length went undetected. [13] Add -[no-]prettyprint support, with new functions do_string(), opt_prettyprint(), out_at(), out_close_brace(), out_comma(), out_newline(), out_open_brace(), out_other(), and out_token(), and new data type token_t. Move do_comma() processing out of do_field_value_pair() so that it can be used by do_string(). [14] Add BYTE_VAL() macro for printing of characters with octal formats. [15] Change tag/key to key/field to agree with Appendix B of LaTeX User's Guide and Reference Manual. Change format items %t/%k to %k/%f to match key/field terminology. The user impact of this rather large source code and documentation change should be minimal, and the removal of the disagreement with the LaTeX book needs to be done now, rather than later. bibclean.ini does not use either of the changed format items. [16] Change keyboard uses of key to keyboard, so key now refers exclusively to bibliography citation keys. [17] Change MAX_COLUMN to MAX_WIDTH and add -max-width support, with new function opt_max_width() and new variable max_width. Include "xlimits.h". [18] Add BIBCLEAN_EXT and BIBCLEAN_INI to define environment variables that can supply alternate initialization file extension and name. Add GETDEFAULT() macro to simplify coding. [19] Rename put_char() to out_c(), and remove macro out_c(). [20] Add line wrapping support for lexical analysis output in out_c(). [21] Add ``# line nnn "filename"'' output from out_token() for lexical analysis output. [22] Add strdup macro to redefine that name as strdup_private to avoid problems with incorrect declarations of that function (for DEC Alpha OSF/1). [23] Add out_input_position() and token_start so that out_token() can record both starting and ending line numbers of a multi-line value token in lexical analyzer output. [24] Add check for non-zero brace level at end-of-file in do_one_file(). [25] Add support for @Include{...}, a proposed extension of BibTeX. [26] Add append_value(), do_newline(), do_optional_inline_comment(), do_optional_space(), do_space(), get_inline_comment(), get_optional_space(), and out_complex_value() so that intervening space can be output when lexing, and so that we can support in-line comments as well as horizontal and vertical space between lexical items, according to the proposed grammar for BibTeX. Add do_preamble() to do rigorous parse of @Preamble{...}. Revise do_BibTeX_value() to support recognition of optional space between tokens of a string expression, splitting it into two separate functions do_BibTeX_value_1() and do_BibTeX_value_2() to handle the two cases of prettyprinting and lexical analysis. Add out_string() to localize test for output style. [27] Add checks for end-of-file in quoted and braced strings so these errors get reported. Suppress pattern value checking for empty values; some of the check_xxx() functions did this already, but some did not. Now the test is localized in one place, in out_value(), for all of them. [16-Nov-1992 -- 24-Nov-1992] 2.05 Add Makefile steps to automatically extract help() text from output of manual pages into new file bibclean.h, so the built-in documentation stays up-to-date. The usage messages still need manual adjustment if switches are added or changed. Add missing test of check_values in check_patterns(). Add support for optional warning messages with patterns from initialization files. New function: get_token(). New parsing code in do_new_pattern() to handle optional warning message strings. Add message argument to add_pattern(). Remove strip_comments() since comment processing is now handled by get_token() and do_new_pattern(). This permits unescaped comment characters inside quoted strings. Write bibclean.reg, an initialization file similar to bibclean.ini, but with regular expressions. Replace cascaded if statements for regular expression testing with loop over patterns in check_patterns(). Move inclusion of match.h to after definition of typedef YESorNO, and change type of match_pattern() from int to YESorNO. Add do_fileinit() and code in main() to call do_fileinit() for each named input file with an extension, replacing that extension with INITFILE_EXT (default .ini). This adds a bibliography-specific initialization capability to the system-wide, user-wide, and job-wide files already supported. Change -keep-initials and -keep-names to -fix-initials and -fix-names, making them positive, rather than negative, options. Also, make them independent by moving invocations of fix_periods() outside of fix_author(), and by checking fix_names in fix_author() instead of at start of fix_namelist(). Add -[no-]read-init-files option to allow control over which initialization files are read. Add -[no-]trace-file-opening option to allow easy tracing of file opening attempts by the program. A similar feature in my DVI drivers has proved enormously valuable in tracking down problems of missing files. Rename entry_name[] to current_entry_name[], key[] to current_key[], tag[] to current_tag[], and value[] to current_value[] to get more distinctive names for those global variables. Include the value string matching code selection in the version() message; this is needed so that users can prepare initialization files with the correct pattern syntax. Make several MAX_xxx symbolic constants definable at compile time. Add MAX_PATTERN_NAMES constant, and increase pattern_names[] table to that size, leaving empty slots for expansion. Extend add_pattern() so that unrecognized key names result in creation of new entries in pattern_names[], making the set of key/value pairs extensible without modification of the bibclean source code. Add check_other() to handle checking of other keywords. Add unexpected() to localize issuing of unexpected value warnings. Repair next_s() in match.c to skip past TeX control sequence; it was stopping one character early. Revise upper-case letter bracing code in fix_title() to handle more cases. Rewrite space collapsing code in fix_pages() to only collapse space around en-dashes. The previous code was too aggressive, so that "319 with 30 illustrations" became "319 with30illustrations". Add check_tag() called from do_tag_name(), and add second argument, value, to check_patterns(). Add format() called from error() and warning() to expand %e (@entry name), %k (key), %t (tag), %v (value), and %% (percent) format items in messages. This feature is needed so user-defined messages in initialization files can get key, tag, and value into messages. It also simplifies, and improves, calls to warning() and error(). Add some missing (void) typecasts before str***() calls. Change word_length() to return one more than true length at end of string. Change tests in out_s() to > MAX_COLUMN instead of >= MAX_COLUMN. Previously, if a line ended exactly at column MAX_COLUMN, bibclean could produce a spurious blank line, and would sometimes wrap a line earlier than necessary. Add additional punctuation wrap points in out_s(), and remove tests for non-blank whitespace in switch() statement. Change type of all string index variables from int to size_t. In get_simple_string(), use enum type for type codes if NEW_STYLE. In check_year(), validate all sequences of 1 or more digits. Use the C preprocessor to define memmove() to be Memmove(), so we always use our own version. Too many C and C++ implementations were found to be lacking it, sigh... Similarly, we provide our own version of strtol() (in a separate file) from the DVI 3.0 development, because it too is missing from older UNIX systems. Complete port to IBM PC DOS with Turbo C 2.0, and Turbo C and C++ 3.0. This required economization of storage for arrays of size [MAX_TOKEN_SIZE] to get global data below 64KB without having to reduce MAX_TOKEN. Added code in do_more() and preprocessor conditionals in out_lines() to handle character-at-a-time input for help paging on IBM PC DOS. Keyboard function keys PgUp, PgDn, End, Home, Up arrow and Down arrow are also recognized. This was easy to do because most PC DOS C compilers provide getch() to get a keyboard character without echo. No fiddling of terminal modes is needed like it is on other systems. The IBM PC DOS port exposed a problem in findfile(), where it was assumed that an environment variable would not be longer than the longest filename. Turbo C sets the latter to 80 characters, but environment variables can be set that are almost 128 characters long. Microsoft C 5.0 also sets it to 80, but C 5.1 sets it to 144, and C 6.0 and C and C++ 7.0 set it to 260. This has been handled by defining MAXPATHLEN at compile time, overriding the built-in defaults. Add support for character-at-a-time input for help paging on VAX VMS, and for getting the screen size in get_screen_lines(). Rename do_more_init() to kbopen(), do_more_term() to kbclose(), and use kbget() in do_more() to conceal the heavily-O/S dependent details of the kbxxx() functions. Introduce STREQUAL() macro to simplify coding. Introduce KEY_FUNCTION_ENTRY type and apply_function() to simplify coding, and use it in do_args(), do_preargs(), and out_value(). Argument actions are moved into separate functions, opt_xxx(). Rename show_author() to opt_author(), and help() to opt_help(). Rename do_file() to do_one_file(), and move file loop code from main() into new do_files(). Split large body of get_simple_string() into four new functions, get_braced_string(), get_digit_string(), get_quoted_string(), and get_identifier_string(). Add check_inodes() to determine whether stdlog and stdout are the same file. If so, we need to ensure that each warning message begins a new line, without double spacing unnecessarily when they are different files. Add memset() implementation for SunOS 4.1.1 CC (C++) and BSD 4.3 UNIX because it is missing from their run-time libraries. Replace fopen() by macro FOPEN() to work around erroneous fopen() prototype for SunOS 4.1.1 CC (C++). Complete port to IBM PC DOS with Microsoft C 5.1 and 6.0 compilers. Minor source changes (the CONST macro below) needed to work around compiler errors. [15-Nov-1992] 2.04 Minor changes to complete successful VAX VMS installation and test. [15-Nov-1992] 2.03 Add match_pattern() support for consistent pattern matching in the check_xxx() functions, using new code defined separately in match.c. Add support for run-time redefinition of patterns via one or more initialization file(s) found in the PATH (system-defined) and BIBINPUTS (user-defined) search paths. New functions: add_pattern(), check_patterns(), do_initfile(), do_new_pattern(), do_single_arg(), enlarge_table(), get_line(), strdup(), strip_comments(), and trim_value(). New C preprocessor symbols: HAVE_OLDCODE, HAVE_PATTERNS, HAVE_RECOMP, and HAVE_REGEXP. One of these should be defined at compile time; if none are, then HAVE_PATTERNS is the default. Since options can now be specified in initialization files, they each need negations so the command line can override values from an initialization file. Change all YES/NO flags to new type, YESorNO, for better type checking. Add do_more(), do_more_init(), and do_more_term(), for pausing during help output; a private version of screen paging is used instead of a pager invoked by system() for better portability across systems. Set SCREEN_LINES to 0 at compile time to suppress this feature. In fix_title(), add code to brace upper-case letters for cases like: "X11" -> "{X11}" "Standard C Library" -> "Standard {C} Library" "C++ Book" -> "{C}++ Book" leaving "A xxx" unchanged. [11-Nov-1992] 2.02 Add bad_ISBN(), bad_ISSN(), check_ISBN(), and check_ISSN() for validation of ISBN and ISSN values. ISBN == "International Standard Book Number", and ISSN = "International Standard Serial Number". Add testisxn.bib and testisxn.bok to the test collection, with steps in the Makefile to run the test. Add support for embedded \" in Scribe value strings (forgotten in 2.01 revision); they are converted from \"x to {\"x}. [10-Nov-1992] 2.01 Add support for conversion of level-0 \"x to {\"x} and x"y to x{"}y in value strings. Such input is illegal for BibTeX, and causes hard-to-find errors, since BibTeX raises an error at the line where it runs out of string collection space, rather than at the beginning of the collection point. [06-Nov-1992] 2.00 Add full Scribe .bib file input compatibility with -scribe command-line option. Add support for multiple .bib file arguments on command line, with new do_file() function to process them. Allow slash as well as hyphen for introducing command-line options on VAX VMS and IBM PC DOS. Add argument summary to help() (text extracted verbatim from the manual pages). Add new -delete-empty-fields, -keep-names, -no-parbreaks, -remove-OPT-prefixes, and -no-warnings command-line options and support code. Add new out_with_error() and out_with_parbreak_error() functions, and APPEND_CHAR() and EMPTY_STRING() macros to shorten and clarify coding. Add flush_inter_entry_space() function to standardize line spacing. Increase array sizes to MAX_TOKEN_SIZE (= MAX_TOKEN + 3) to reduce array bounds checking in inner loops. Add additional file position tracking to enhance error localization (structures IO_PAIR and POSITION, and functions new_io_pair(), new_position(), out_position(), and out_status()). Error messages are parsable by GNU Emacs M-x next-error (C-x `) when bibclean is run from Emacs by the command M-x compilebibclean foo.bib >foo.new Use arrays of constant strings for multiple string output via new function out_lines(), instead of multiple calls to fprintf(). Add additional checking via check_chapter(), check_month(), check_number(), check_pages(), check_volume(), check_year(), and match_regexp(). Supply implementation of memmove() library function missing from g++ 2.2.2 library. [03-Oct-1992] 1.06 Correct logic error in do_comma() that prevented correct recognition of @name(key = "value") where the last key/value pair did not have a trailing comma. Add C++ support. Add key_pair[] and entry_pair[] tables for standardization of letter case usage, and use the new NAME_PAIR type in fix_month(). Update author address. Rename author() to show_author() to avoid shadowing global names. Fix two assignments of constant strings to char* pointers. Remove variable at_line_number which was defined, but never used. [01-Aug-1992] 1.05 Add -keep-initials switch support (thanks to Karl Berry ). Internationalize telephone and FAX numbers. [02-Jan-1992] 1.04 Modify fix_title() to ignore macros. Modify fix_author()) to ignore author lists with parentheses (e.g. author = "P. D. Q. Bach (113 MozartStrasse, Vienna, Austria)"). [31-Dec-1991] 1.03 Add fix_title() to supply braces around unbraced upper-case acronyms in titles, and add private definition of MAX(). [15-Nov-1991] 1.02 Handle @String(...) and @Preamble(...), converting outer parentheses to braces. Insert spaces after author and editor initials, and normalize names to form "P. D. Q. Bach" instead of "Bach, P. D. Q.". [10-Oct-1991] 1.01 Increase MAX_TOKEN to match enlarged BibTeX, and add check against STD_MAX_TOKEN. Output ISBN and ISSN in upper case. Always surround = by blanks in key = "value". [19-Dec-1990] 1.00 (version number unchanged) Install Sun386i bug fix. [08-Oct-1990] 1.00 Original version. bibclean-2.11.4.1.orig/testscr3.eok0000644000175200017520000000000005304617566016142 0ustar debiandebianbibclean-2.11.4.1.orig/testscr3.bok0000644000175200017520000000065305304617630016145 0ustar debiandebian@Comment{Old style comment} @Comment{ This is a block comment with two lines. } @Comment{ This is a block comment with nested environments. @Begin{foo} @Begin{bar} @End"bar" @End"foo" } @Comment{ This is a block comment with two lines and embedded braces: {one} {two} {three} } @Comment{ This is a block comment with two lines and embedded braces: {one} {two} {three}. Here are some mismatched braces: { { { } } } {} {} } bibclean-2.11.4.1.orig/bibclean.hlp0000644000175200017520000015372207133432412016143 0ustar debiandebian2 User-Commands-----------------------------------------BIBCLEAN(1) User Commands BIBCLEAN(1) 1 BIBCLEAN bibclean - prettyprint and syntax check BibTeX and Scribe bibliography data base files 2 SYNOPSIS SYNOPSIS bibclean [ -author ] [ -error-log filename ] [ -help ] [ '-?' ] [ -init-file filename ] [ -max-width nnn ] [ -[no-]align-equals ] [ -[no-]check-values ] [ -[no-]delete-empty-values ] [ -[no-]file-position ] [ -[no-]fix-font-changes ] [ -[no-]fix-initials ] [ -[no-]fix-names ] [ -[no-]German-style ] [ -[no-]keep-linebreaks ] [ -[no-]keep-parbreaks ] [ -[no-]keep-preamble-spaces ] [ -[no-]keep-spaces ] [ -[no-]keep-string-spaces ] [ -[no-]parbreaks ] [ -[no-]prettyprint ] [ -[no-]print-patterns ] [ -[no-]read-init-files ] [ -[no-]remove-OPT-prefixes ] [ -[no-]scribe ] [ -[no-]trace-file-opening ] [ -[no-]warnings ] [ -version ] outfile All options can be abbreviated to a unique leading prefix. An explicit file name of ``-'' represents standard input; it is assumed if no input files are specified. On VAX VMS and IBM PC DOS, the leading ``-'' on option names may be replaced by a slash, ``/''; however, the ``-'' option prefix is always recognized. 2 DESCRIPTION DESCRIPTION bibclean prettyprints input BibTeX files to stdout, and checks the brace balance and bibliography entry syntax as well. It can be used to detect problems in BibTeX files that sometimes confuse even BibTeX itself, and importantly, can be used to normalize the appearance of collections of BibTeX files. Here is a summary of the formatting actions: o BibTeX items are formatted into a consistent structure with one field = "value" pair per line, and the initial @ and trailing right brace in column 1. o Tabs are expanded into blank strings; their use is discouraged because they inhibit portability, and can suffer corruption in electronic mail. o Long string values are split at a blank and continued onto the next line with leading indentation. 2 User-Commands-----------------------------------------BIBCLEAN(1) User Commands BIBCLEAN(1) o A single blank line separates adjacent bibliography entries. o Text outside BibTeX entries is passed through verbatim. o Outer parentheses around entries are converted to braces. o Personal names in author and editor field values are nor- malized to the form ``P. D. Q. Bach'', from ``P.D.Q. Bach'' and ``Bach, P.D.Q.''. o Hyphen sequences in page numbers are converted to en- dashes. o Month values are converted to standard BibTeX string abbreviations. o In titles, sequences of upper-case characters at brace level zero are braced to protect them from being con- verted to lower-case letters by some bibliography styles. o CODEN, ISBN (International Standard Book Number) and ISSN (International Standard Serial Number) entry values are examined to verify the checksums of each listed number, and correct ISBN hyphenation is automatically supplied. The standardized format of the output of bibclean facili- tates the later application of simple filters, such as bib- check(1), bibdup(1), bibextract(1), bibindex(1), bibjoin(1), biblabel(1), biblook(1), biborder(1), bibsort(1), citefind(1), and citetags(1), to process the text, and also is the one expected by the GNU Emacs BibTeX support func- tions. 2 OPTIONS OPTIONS Command-line switches may be abbreviated to a unique leading prefix, and letter case is not significant. All options are parsed before any input bibliography files are read, no matter what their order on the command line. Options that correspond to a yes/no setting of a flag have a form with a prefix "no-" to set the flag to no. For such options, the last setting determines the flag value used. This is signi- ficant when options are also specified in initialization files (see the INITIALIZATION FILES manual section). The leading hyphen that distinguishes an option from a filename may be doubled, for compatibility with GNU and POSIX conventions. Thus, -author and --author are equivalent. To avoid confusion with options, if a filename begins with a hyphen, it must be disguised by a leading absolute or 2 User-Commands-----------------------------------------BIBCLEAN(1) User Commands BIBCLEAN(1) relative directory path, e.g., /tmp/-foo.bib or ./-foo.bib. -author Display an author credit on the standard error unit, stderr, and then exit with a success return code. Sometimes an executable program is separated from its documentation and source code; this option provides a way to recover from that. -error-log filename Redirect stderr to the indicated file, which will then contain all of the error and warning messages. This option is pro- vided for those systems that have difficulty redirecting stderr. -help or -? Display a help message on stderr, giving a usage descrip- tion, similar to this section of the manual pages, and then exit with a success return code. -init-file filename Provide an explicit value pat- tern initialization file. It will be processed after any system-wide and job-wide ini- tialization files found on the PATH (for VAX VMS, SYS$SYSTEM) and BIBINPUTS search paths, respectively, and may override them. It in turn may be over- ridden by a subsequent file- specific initialization file. The initialization file name can be changed at compile time, or at run time through a setting of the environment variable BIB- CLEANINI, but defaults to .bib- cleanrc on UNIX, and to bibclean.ini elsewhere. For further details, see the INI- TIALIZATION FILES manual sec- tion. -max-width nnn bibclean normally limits output line widths to 72 characters, and in the interests of con- sistency, that value should not be changed. Occasionally, 2 User-Commands-----------------------------------------BIBCLEAN(1) User Commands BIBCLEAN(1) special-purpose applications may require different maximum line widths, so this option provides that capability. The number following the option name can be specified in decimal, octal (starting with 0), or hexade- cimal (starting with 0x). A zero or negative value is inter- preted to mean unlimited, so -max-width 0 can be used to ensure that each field/value pair appears on a single line. When -no-prettyprint requests bibclean to act as a lexical analyzer, the default line width is unlimited, unless overridden by this option. When bibclean is prettyprinting, line wrapping will be done only at a space. Consequently, a long non-blank character sequence may result in the output exceeding the requested line width. When bibclean is lexing, line wrapping is done by inserting a backslash-newline pair when the specified maximum is reached, so no line length will ever exceed the maximum. -[no-]align-equals With the positive form, align the equals sign in key/value assignments at the same column, separated by a single space from the value string. Otherwise, the equals sign follows the key, separated by a single space. Default: no. -[no-]check-values With the positive form, apply heuristic pattern matching to field values in order to detect possible errors (e.g., ``year = "192"'' instead of ``year = "1992"''), and issue warnings when unexpected patterns are found. 2 User-Commands-----------------------------------------BIBCLEAN(1) User Commands BIBCLEAN(1) This checking is usually benefi- cial, but if it produces too many bogus warnings for a par- ticular bibliography file, you can disable it with the negative form of this option. Default: yes. -[no-]delete-empty-values With the positive form, remove all field/value pairs for which the value is an empty string. This is helpful in cleaning up bibliographies generated from text editor templates. Compare this option with -[no-]remove- OPT-prefixes described below. Default: no. -[no-]file-position With the positive form, give detailed file position informa- tion in warning and error mes- sages. Default: no. -[no-]fix-font-changes With the positive form, supply an additional brace level around font changes in titles to pro- tect against downcasing by some BibTeX styles. Font changes that already have more than one level of braces are not modi- fied. For example, if a title contains the Latin phrase {\em Dictyos- telium Discoideum} or {\em {D}ictyostelium {D}iscoideum}, then downcasing will incorrectly convert the phrase to lower-case letters. Most BibTeX users are surprised that bracing the ini- tial letters does not prevent the downcase action. The correct coding is {{\em Dictyos- telium Discoideum}}. However, there are also legitimate cases where an extra level of bracing wrongly protects from downcas- ing. Consequently, bibclean will normally not supply an extra level of braces, but if you have a bibliography where the extra braces are routinely 2 User-Commands-----------------------------------------BIBCLEAN(1) User Commands BIBCLEAN(1) missing, you can use this option to supply them. If you think that you need this option, it is strongly recom- mended that you apply bibclean to your bibliography file with and without -fix-font-changes, then compare the two output files to ensure that extra braces are not being supplied in titles where they should not be present. You will have to decide which of the two output files is the better choice, then repair the incorrect title brac- ing by hand. Since font changes in titles are uncommon, except for cases of the type which this option is designed to correct, it should do more good than harm. Default: no. -[no-]fix-initials With the positive form, insert a space after a period following author initials. Default: yes. -[no-]fix-names With the positive form, reorder author and editor name lists to remove commas at brace level zero, placing first names or initials before last names. Default: yes. -[no-]German-style With the positive form, inter- pret quote characters ["] inside braced value strings at brace level 1 according to the conven- tions of the TeX style file german.sty, which overloads quote to simplify input and representation of German umlaut accents, sharp-s (es-zet), liga- ture separators, invisible hyphens, raised/lowered quotes, French guillemets, and discre- tionary hyphens. Recognized character combinations will be braced to prevent BibTeX from interpreting the quote as a 2 User-Commands-----------------------------------------BIBCLEAN(1) User Commands BIBCLEAN(1) string delimiter. Quoted strings receive no spe- cial handling from this option, and since German nouns in titles must anyway be protected from the downcasing operation of most BibTeX bibliography styles, Ger- man value strings that use the overloaded quote character can always be entered in the form "{...}", without the need to specify this option at all. Default: no. -[no-]keep-linebreaks Normally, line breaks inside value strings are collapsed into a single space, so that long value strings can later be bro- ken to provide lines of reason- able length. With the positive form, line- breaks are preserved in value strings. If -max-width is set to zero, this preserves the ori- ginal line breaks. Spacing out- side value strings remains under bibclean's control, and is not affected by this option. Default: no. -[no-]keep-parbreaks With the positive form, preserve paragraph breaks (either formfeeds, or lines containing only spaces) in value strings. Normally, paragraph breaks are collapsed into a single space. Spacing outside value strings remains under bibclean's con- trol, and is not affected by this option. Default: no. -[no-]keep-preamble-spaces With the positive form, preserve all whitespace in @Preamble{...} entries. Default: no. -[no-]keep-spaces With the positive form, preserve all spaces in value strings. Normally, multiple spaces are 2 User-Commands-----------------------------------------BIBCLEAN(1) User Commands BIBCLEAN(1) collapsed into a single space. This option can be used together with -keep-linebreaks, -keep- parbreaks, and -max-width 0 to preserve the form of value strings while still providing syntax and value checking. Spacing outside value strings remains under bibclean's con- trol, and is not affected by this option. Default: no. -[no-]keep-string-spaces With the positive form, preserve all whitespace in @String{...} entries. Default: no. -[no-]parbreaks With the negative form, a para- graph break (either a formfeed, or a line containing only spaces) is not permitted in value strings, or between field/value pairs. This may be useful to quickly trap runaway strings arising from mismatched delimiters. Default: yes. -[no-]prettyprint Normally, bibclean functions as a prettyprinter. However, with the negative form of this option, it acts as a lexical analyzer instead, producing a stream of lexical tokens. See the LEXICAL ANALYSIS manual sec- tion for further details. Default: yes. -[no-]print-patterns With the positive form, print the value patterns read from initialization files as they are added to internal tables. Use this option to check newly-added patterns, or to see what pat- terns are being used. When bibclean is compiled with native pattern-matching code (the default), these patterns are the ones that will be used in checking value strings for valid syntax, and all of them are specified in initialization files, rather than hard-coded 2 User-Commands-----------------------------------------BIBCLEAN(1) User Commands BIBCLEAN(1) into the program. For further details, see the INITIALIZATION FILES manual section. Default: no. -[no-]read-init-files With the negative form, suppress loading of system-, user-, and file-specific initialization files. Initializations will come only from those files explicitly given by -init-file filename options. Default: yes. -[no-]remove-OPT-prefixes With the positive form, remove the ``OPT'' prefix from each field name where the correspond- ing value is not an empty string. The prefix ``OPT'' must be entirely in upper-case to be recognized. This option is for bibliogra- phies generated with the help of the GNU Emacs BibTeX editing support, which generates tem- plates with optional fields identified by the ``OPT'' pre- fix. Although the function M-x bibtex-remove-OPT normally bound to the keystrokes C-c C-o does the job, users often forget, with the result that BibTeX does not recognize the field name, and ignores the value string. Compare this option with -[no- ]delete-empty-values described above. Default: no. -[no-]scribe With the positive form, accept input syntax conforming to the Scribe document system. The output will be converted to con- form to BibTeX syntax. See the SCRIBE BIBLIOGRAPHY FORMAT manual section for further details. Default: no. -[no-]trace-file-opening With the positive form, record in the error log file the names of all files which bibclean attempts to open. Use this option to identify where 2 User-Commands-----------------------------------------BIBCLEAN(1) User Commands BIBCLEAN(1) initialization files are located. Default: no. -[no-]warnings With the positive form, allow all warning messages. The nega- tive form is not recommended since it may mask problems that should be repaired. Default: yes. -version Display the program version number on stderr, and then exit with a success return code. This will also include an indi- cation of who compiled the pro- gram, the host name on which it was compiled, the time of compi- lation, and the type of string- value matching code selected, when that information is avail- able to the compiler. 2 ERROR-RECOVERY-AND-WARNINGS ERROR RECOVERY AND WARNINGS When bibclean detects an error, it issues an error message to both stderr and stdout. That way, the user is clearly notified, and the output bibliography also contains the mes- sage at the point of error. Error messages begin with a distinctive pair of queries, ??, beginning in column 1, followed by the input file name and line number. If the -file-position option was specified, they also contain the input and output positions of the current file, entry, and value. Each position includes the file byte number, the line number, and the column number. In the event of a runaway string argument, the entry and value positions should precisely pinpoint the erroneous bibliography entry, and the file positions will indicate where it was detected, which may be rather later in the files. Warning messages identify possible problems, and are there- fore sent only to stderr, and not to stdout, so they never appear in the output file. They are identified by a dis- tinctive pair of percents, %%, beginning in column 1, and as with error messages, may be followed by file position mes- sages if the -file-position option was specified. For convenience, the first line of each error and warning message sent to stderr is formatted according to the expec- tations of the GNU Emacs next-error command. You can invoke bibclean with the Emacs M-x compilebibclean filename.bib >filename.new command, then use the next-error 2 User-Commands-----------------------------------------BIBCLEAN(1) User Commands BIBCLEAN(1) command, normally bound to C-x ` (that's a grave, or back, accent), to move to the location of the error in the input file. If error messages are ignored, and left in the output bibliography file, they will precipitate an error when the bibliography is next processed with BibTeX. After issuing an error message, bibclean then resynchronizes its input by copying it verbatim to stdout until a new bibliography entry is recognized on a line in which the first non-blank character is an at-sign (@). This ensures that nothing is lost from the input file(s), allowing corrections to be made in either the input or the output files. However, if bibclean detects an internal error in its data structures, it will terminate abruptly without further input or output processing; this kind of error should never happen, and if it does, it should be reported immediately to the author of the program. Errors in ini- tialization files, and running out of dynamic memory, will also immediately terminate bibclean. 2 INITIALIZATION-FILES INITIALIZATION FILES bibclean can be compiled with one of three different types of pattern matching; the choice is made by the installer at compile time: o The original version uses explicit hand-coded tests of value-string syntax. o The second version uses regular-expression pattern- matching host library routines together with regular-expression patterns that come entirely from initialization files. o The third version uses special patterns that come entirely from initialization files. The second and third versions are the ones of most interest here, because they allow the user to control what values are considered acceptable. However, command-line options can also be specified in initialization files, no matter which pattern matching choice was selected. When bibclean starts, it searches for initialization files, finding the first one in the system executable program search path (on UNIX and IBM PC DOS, PATH) and the first one in the BIBINPUTS search path, and processes them in turn. Then, when command-line arguments are processed, any addi- tional files specified by -init-filefilename options are also processed. Finally, immediately before each named bibliography file is processed, an attempt is made to 2 User-Commands-----------------------------------------BIBCLEAN(1) User Commands BIBCLEAN(1) process an initialization file with the same name, but with the extension changed to .ini. The default extension can be changed by a setting of the environment variable BIB- CLEANEXT. This scheme permits system-wide, user-wide, session-wide, and file-specific initialization files to be supported. When input is taken from stdin, there is no file-specific initialization. For precise control, the -no-read-init-files option suppresses all initialization files except those explicitly named by -init-filefilename options, either on the command line, or in requested initialization files. Recursive execution of initialization files with nested -init-file options is permitted; if the recursion is circu- lar, bibclean will finally get a non-fatal initialization file open failure after opening too many files. This ter- minates further initialization file processing. As the recursion unwinds, the files are all closed, then execution proceeds normally. An initialization file may contain empty lines, comments from percent to end of line (just like TeX), option switches, and field/pattern or field/pattern/message assign- ments. Leading and trailing spaces are ignored. This is best illustrated by a short example: % This is a small bibclean initialization file -init-file /u/math/bib/.bibcleanrc %% departmental patterns chapter = "\"D\"" %% 23 pages = "\"D--D\"" %% 23--27 volume = "\"D \\an\\d D\"" %% 11 and 12 year = \ "\"dddd, dddd, dddd\"" \ "Multiple years specified." %% 1989, 1990, 1991 -no-fix-names %% do not modify author/editor lists Long logical lines can be split into multiple physical lines by breaking at a backslash-newline pair; the backslash- newline pair is discarded. This processing happens while characters are being read, before any further interpretation of the input stream. 2 User-Commands-----------------------------------------BIBCLEAN(1) User Commands BIBCLEAN(1) Each logical line must contain a complete option (and its value, if any), or a complete field/pattern pair, or a field/pattern/message triple. Comments are stripped during the parsing of the field, pat- tern, and message values. The comment start symbol is not recognized inside quoted strings, so it can be freely used in such strings. Comments on logical lines that were input as multiple physi- cal lines via the backslash-newline convention must appear on the last physical line; otherwise, the remaining physical lines will become part of the comment. Pattern strings must be enclosed in quotation marks; within such strings, a backslash starts an escape mechanism that is commonly used in UNIX software. The recognized escape sequences are: \a alarm bell (octal 007) \b backspace (octal 010) \f formfeed (octal 014) \n newline (octal 012) \r carriage return (octal 015) \t horizontal tab (octal 011) \v vertical tab (octal 013) \ooo character number octal ooo (e.g \012 is linefeed). Up to 3 octal digits may be used. \0xhh character number hexadecimal hh (e.g., \0x0a is linefeed). xhh may be in either letter case. Any number of hexadecimal digits may be used. Backslash followed by any other character produces just that character. Thus, \% gets a literal percent into a string (preventing its interpretation as a comment), \" produces a quotation mark, and \\ produces a single backslash. An ASCII NUL (\0) in a string will terminate it; this is a feature of the C programming language in which bibclean is implemented. Field/pattern pairs can be separated by arbitrary space, and optionally, either an equals sign or colon functioning as an 2 User-Commands-----------------------------------------BIBCLEAN(1) User Commands BIBCLEAN(1) assignment operator. Thus, the following are equivalent: pages="\"D--D\"" pages:"\"D--D\"" pages "\"D--D\"" pages = "\"D--D\"" pages : "\"D--D\"" pages "\"D--D\"" Each field name can have an arbitrary number of patterns associated with it; however, they must be specified in separate field/pattern assignments. An empty pattern string causes previously-loaded patterns for that field name to be forgotten. This feature permits an initialization file to completely discard patterns from earlier initialization files. Patterns for value strings are represented in a tiny special-purpose language that is both convenient and suit- able for bibliography value-string syntax checking. While not as powerful as the language of regular-expression pat- terns, its parsing can be portably implemented in less than 3% of the code in a widely-used regular-expression parser (the GNU regexp package). The patterns are represented by the following special char- acters: one or more spaces a exactly one letter A one or more letters d exactly one digit D one or more digits r exactly one Roman numeral R one or more Roman numerals (i.e. a Roman number) w exactly one word (one or more letters and digits) W one or more space-separated words, beginning and ending with a word . one `special' character, one of the characters !#()*+,-./:;?[]~, a subset of 2 User-Commands-----------------------------------------BIBCLEAN(1) User Commands BIBCLEAN(1) punctuation characters that are typically used in string values : one or more `special' characters X one or more `special'-separated words, begin- ning and ending with a word \x exactly one x (x is any character), possibly with an escape sequence interpretation given earlier x exactly the character x (x is anything but one of these pattern characters: aAdDrRwW.:\) The X pattern character is very powerful, but generally inadvisable, since it will match almost anything likely to be found in a BibTeX value string. The reason for providing pattern matching on the value strings is to uncover possible errors, not mask them. There is no provision for specifying ranges or repetitions of characters, but this can usually be done with separate patterns. It is a good idea to accompany the pattern with a comment showing the kind of thing it is expected to match. Here is a portion of an initialization file giving a few of the patterns used to match number value strings: number = "\"D\"" %% 23 number = "\"A AD\"" %% PN LPS5001 number = "\"A D(D)\"" %% RJ 34(49) number = "\"A D\"" %% XNSS 288811 number = "\"A D\\.D\"" %% Version 3.20 number = "\"A-A-D-D\"" %% UMIAC-TR-89-11 number = "\"A-A-D\"" %% CS-TR-2189 number = "\"A-A-D\\.D\"" %% CS-TR-21.7 For a bibliography that contains only article entries, this list should probably be reduced to just the first pattern, so that anything other than a digit string fails the pattern-match test. This is easily done by keeping bibliography-specific patterns in a corresponding file with extension .ini, since that file is read automatically. You should be sure to use empty pattern strings in this pat- tern file to discard patterns from earlier initialization files. The value strings passed to the pattern matcher contain sur- rounding quotes, so the patterns should also. However, you could use a pattern specification like "\"D" to match an 2 User-Commands-----------------------------------------BIBCLEAN(1) User Commands BIBCLEAN(1) initial digit string followed by anything else; the omission of the final quotation mark \" in the pattern allows the match to succeed without checking that the next character in the value string is a quotation mark. Because the value strings are intended to be processed by TeX, the pattern matching ignores braces, and TeX control sequences, together with any space following those control sequences. Spaces around braces are preserved. This con- vention allows the pattern fragment A-AD-D to match the value string TN-K\slash 27-70, because the value is impli- citly collapsed to TN-K27-70 during the matching operation. bibclean's normal action when a string value fails to match any of the corresponding patterns is to issue a warning mes- sage something like this: "Unexpected value in ``year = "192"''. In most cases, that is sufficient to alert the user to a problem. In some cases, however, it may be desir- able to associate a different message with a particular pat- tern. This can be done by supplying a message string fol- lowing the pattern string. Format items %% (single per- cent), %e (entry name), %f (field name), %k (citation key), and %v (string value) are available to get current values expanded in the messages. Here is an example: chapter = "\"D:D\"" "Colon found in ``%f = %v''" %% 23:2 To be consistent with other messages output by bibclean, the message string should not end with punctuation. If you wish to make the message an error, rather than just a warning, begin it with a query (?), like this: chapter = "\"D:D\"" "?Colon found in ``%f = %v''" %% 23:2 The query will not be included in the output message. Escape sequences are supported in message strings, just as they are in pattern strings. You can use this to advantage for fancy things, such as terminal display mode control. If you rewrite the previous example as chapter = "\"D:D\"" \ "?\033[7mColon found in ``%f = %v''\033[0m" %% 23:2 the error message will appear in inverse video on display screens that support ANSI terminal control sequences. Such practice is not normally recommended, since it may have undesirable effects on some output devices. Nevertheless, you may find it useful for restricted applications. 2 User-Commands-----------------------------------------BIBCLEAN(1) User Commands BIBCLEAN(1) For some types of bibliography fields, bibclean contains special-purpose code to supplement or replace the pattern matching: o CODEN, ISBN and ISSN field values are handled this way because their validation requires evaluation of checksums that cannot be expressed by simple pat- terns; no patterns are even used in these three cases. o When bibclean is compiled with pattern-matching code support, chapter, number, pages, and volume values are checked only by pattern matching. o month values are first checked against the standard BibTeX month abbreviations, and only if no match is found are patterns then used. o year values are first checked against patterns, then if no match is found, the year numbers are found and converted to integer values for testing against rea- sonable bounds. Values for other fields are checked only against patterns. You can provide patterns for any field you like, even ones bibclean does not already know about. New ones are simply added to an internal table that is searched for each string to be validated. The special field, key, represents the bibliographic cita- tion key. It can be given patterns, like any other field. Here is an initialization file pattern assignment that will match an author name, a colon, an alphabetic string, and a two-digit year: key = "A:Add" %% Knuth:TB86 Notice that no quotation marks are included in the pattern, because the citation keys are not quoted. You can use such patterns to help enforce uniform naming conventions for citation keys, which is increasingly important as your bibliography data base grows. 2 LEXICAL-ANALYSIS LEXICAL ANALYSIS When -no-prettyprint is specified, bibclean acts as a lexi- cal analyzer instead of a prettyprinter, producing output in lines of the form "" Each output line contains a single complete token, identi- fied by a small integer number for use by a computer 2 User-Commands-----------------------------------------BIBCLEAN(1) User Commands BIBCLEAN(1) program, a token type name for human readers, and a string value in quotes. Special characters in the token value string are represented with ANSI/ISO Standard C escape sequences, so all characters other than NUL are representable, and multi-line values can be represented in a single line. Here are the token numbers and token type names that can appear in the output when -prettyprint is specified: 0 UNKNOWN 1 ABBREV 2 AT 3 COMMA 4 COMMENT 5 ENTRY 6 EQUALS 7 FIELD 8 INCLUDE 9 INLINE 10 KEY 11 LBRACE 12 LITERAL 13 NEWLINE 14 PREAMBLE 15 RBRACE 16 SHARP 17 SPACE 18 STRING 19 VALUE Programs that parse such output should also be prepared for lines beginning with the warning prefix, %%, or the error prefix, ??, and for ANSI/ISO Standard C line number direc- tives of the form # line 273 "texbook1.bib" which record the line number and file name of the current input file. If a -max-width nnn command-line option was specified, long output lines will be wrapped at a backslash-newline pair, and consequently, software that processes the lexical token stream should be prepared to collapse such wrapped lines back into single lines. As an example of the use of -no-prettyprint, the UNIX com- mand pipeline bibclean -no-prettyprint mylib.bib | \ awk '$2 == "KEY" {print $3}' | \ sed -e 's/"//g' | \ sort 2 User-Commands-----------------------------------------BIBCLEAN(1) User Commands BIBCLEAN(1) will extract a sorted list of all citation keys in the file mylib.bib. A certain amount of processing will have been done on the tokens. In particular, delimiters equivalent to braces will have been replaced by braces, and braced strings will have become quoted strings. The LITERAL token type is used for arbitrary text that bib- clean does not examine further, such as the contents of a @Preamble{...} or a @Comment{...}. The UNKNOWN token type should never appear in the output stream. It is used internally to initialize token type variables. 2 SCRIBE-BIBLIOGRAPHY-FORMAT SCRIBE BIBLIOGRAPHY FORMAT bibclean's support for the Scribe bibliography format is based on the syntax description in the Scribe Introductory User's Manual, 3rd Edition, May 1980. Scribe was originally developed by Brian Reid at Carnegie-Mellon University, and is now marketed by Unilogic, Ltd. The BibTeX bibliography format was strongly influenced by Scribe, and indeed, with care, it is possible to share bibliography files between the two systems. Nevertheless, there are some differences, so here is a summary of features of the Scribe bibliography file format: (1) Letter case is not significant in field names and entry names, but case is preserved in value strings. (2) In field/value pairs, the field and value may be separated by one of three characters: =, /, or space. Space may optionally surround these separators. (3) Value delimiters are any of these seven pairs: { } [ ] ( ) < > ' ' " " ` ` (4) Value delimiters may not be nested, even though with the first four delimiter pairs, nested balanced delim- iters would be unambiguous. (5) Delimiters can be omitted around values that contain only letters, digits, sharp (#), ampersand (&), period (.), and percent (%). (6) Outside of delimited values, a literal at-sign (@) is represented by doubled at-signs (@@). (7) Bibliography entries begin with @name, as for BibTeX, but any of the seven Scribe value delimiter pairs may 2 User-Commands-----------------------------------------BIBCLEAN(1) User Commands BIBCLEAN(1) be used to surround the values in field/value pairs. As in (4), nested delimiters are forbidden. (8) Arbitrary space may separate entry names from the fol- lowing delimiters. (9) @Comment is a special command whose delimited value is discarded. As in (4), nested delimiters are forbid- den. (10) The special form @Begin{comment} ... @End{comment} permits encapsulating arbitrary text containing any characters or delimiters, other than ``@End{comment}''. Any of the seven delimiter pairs may be used around the word ``comment'' following the ``@Begin'' or ``@End''; the delimiters in the two cases need not be the same, and consequently, ``@Begin{comment}''/``@End{comment}'' pairs may not be nested. (11) The key field is required in each bibliography entry. (12) A backslashed quote in a string will be assumed to be a TeX accent, and braced appropriately. While such accents do not conform to Scribe syntax, Scribe-format bibliographies have been found that appear to be intended for TeX processing. Because of this loose syntax, bibclean's normal error detec- tion heuristics are less effective, and consequently, Scribe mode input is not the default; it must be explicitly requested. 2 ENVIRONMENT-VARIABLES ENVIRONMENT VARIABLES BIBCLEANEXT File extension of bibliography-specific ini- tialization files. Default: .ini. BIBCLEANINI Name of bibclean initialization files. Default: .bibcleanrc (UNIX), bibclean.ini (non-UNIX). BIBINPUTS Search path for bibclean and BibTeX input files. On UNIX, this is a colon-separated list of directories that are searched in order from first to last. It is not an error for a speci- fied directory to not exist. 2 User-Commands-----------------------------------------BIBCLEAN(1) User Commands BIBCLEAN(1) On other operating systems, the directory names should be separated by whatever character is used in system search path specifications, such as a semicolon on IBM PC DOS. PATH On Atari TOS, IBM PC DOS, IBM PC OS/2, Micro- soft NT, and UNIX, search path for system exe- cutable files. The system-wide bibclean ini- tialization file is searched for in this path. SYS$SYSTEM On VAX VMS, search path for system executable files and the system-wide bibclean initializa- tion file. 2 FILES FILES *.bib BibTeX and Scribe bibliography data base files. *.ini File-specific initialization files. .bibcleanrc UNIX system-wide and user-specific initiali- zation files. bibclean.ini Non-UNIX system-wide and user-specific ini- tialization files. 2 SEE-ALSO SEE ALSO bibcheck(1), bibdup(1), bibextract(1), bibindex(1), bib- join(1), biblabel(1), biblex(1), biblook(1), biborder(1), bibparse(1), bibsort(1), bibtex(1), bibunlex(1), citefind(1), citesub(1), citetags(1), latex(1), scribe(1), tex(1). 2 AUTHOR AUTHOR Nelson H. F. Beebe Center for Scientific Computing University of Utah Department of Mathematics, 322 INSCC 155 S 1400 E RM 233 Salt Lake City, UT 84112-0090 USA Tel: +1 801 581 5254 FAX: +1 801 585 1640, +1 801 581 4148 Email: beebe@math.utah.edu, beebe@acm.org, beebe@ieee.org (Internet) URL: http://www.math.utah.edu/~beebe bibclean-2.11.4.1.orig/testbib5.bok0000644000175200017520000000356005650354435016121 0ustar debiandebian@Misc{label, abstract = "\TeX{} ben{"o}tigt eine gro{"s}e Anzahl von Hilfskomponenten (Dateien und Programme), deren Bedeutung und gegenseitige \verb={"a}bc{"}=", abstract2 = "\TeX{} ben{"o}tigt eine gro{"s}e Anzahl von Hilfskomponenten (Dateien und Programme), deren Bedeutung und gegenseitige {\verb="abc"=}", note = "\TeX{} ben{\"o}tigt eine gro{\"s}e Anzahl von Hilfskomponenten (Dateien und Programme), deren Bedeutung und gegenseitige {\tt"}\verb=abc={\tt"}", note2 = "\TeX{} ben{\"o}tigt eine gro{\"s}e Anzahl von Hilfskomponenten (Dateien und Programme), deren Bedeutung und gegenseitige {\verb="abc"=}", verbatim1 = "\verb={"a}bc{"}", verbatim2 = "{\verb="abc"}", verbatim3 = "{\verb="abc"}", everything1 = "umlaut accents: {"a}, {"e}, {"i}, {"o}, {"u}, {"A}, {"E}, {"I}, {"O}, {"U},\\ sharp s: {"s},\\ German quotes: {"`} (left), {"'} (right),\\ French quotes: {"<} (left), {">} (right),\\ discretionary hyphens: ba{"c}ken, Bet{"t}uch, xx{"f}fxx\\ ligature separator: Auf{"|}lage,\\ super discretionary hyphen: Rechen{"-}fehler,\\ invisible hyphen: /usr{""}/spool{""}/news", everything2 = "{umlaut accents: "a, "e, "i, "o, "u, "A, "E, "I, "O, "U,\\ sharp s: "s,\\ German quotes: "` (left), "' (right),\\ French quotes: "< (left), "> (right),\\ discretionary hyphens: ba"cken, Bet"tuch, xx"ffxx\\ ligature separator: Auf"|lage,\\ super discretionary hyphen: Rechen"-fehler,\\ invisible hyphen: /usr""/spool""/news}", } bibclean-2.11.4.1.orig/xpwd.h0000644000175200017520000000017706027724000015023 0ustar debiandebian#ifndef XPWD_H_DEFINED_ #define XPWD_H_DEFINED_ #ifdef HAVE_PWD_H #include #else #endif #endif /* XPWD_H_DEFINED_ */ bibclean-2.11.4.1.orig/bibclean.ps0000644000175200017520000022534007133432413015777 0ustar debiandebian%!PS-Adobe-3.0 %%Creator: groff version 1.15 %%CreationDate: Thu Jul 13 15:30:51 2000 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic %%+ font Courier %%DocumentSuppliedResources: procset grops 1.15 0 %%Pages: 12 %%PageOrder: Ascend %%Orientation: Portrait %%EndComments %%BeginProlog %%BeginResource: procset grops 1.15 0 /setpacking where{ pop currentpacking true setpacking }if /grops 120 dict dup begin /SC 32 def /A/show load def /B{0 SC 3 -1 roll widthshow}bind def /C{0 exch ashow}bind def /D{0 exch 0 SC 5 2 roll awidthshow}bind def /E{0 rmoveto show}bind def /F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def /G{0 rmoveto 0 exch ashow}bind def /H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def /I{0 exch rmoveto show}bind def /J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def /K{0 exch rmoveto 0 exch ashow}bind def /L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def /M{rmoveto show}bind def /N{rmoveto 0 SC 3 -1 roll widthshow}bind def /O{rmoveto 0 exch ashow}bind def /P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def /Q{moveto show}bind def /R{moveto 0 SC 3 -1 roll widthshow}bind def /S{moveto 0 exch ashow}bind def /T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def /SF{ findfont exch [exch dup 0 exch 0 exch neg 0 0]makefont dup setfont [exch/setfont cvx]cvx bind def }bind def /MF{ findfont [5 2 roll 0 3 1 roll neg 0 0]makefont dup setfont [exch/setfont cvx]cvx bind def }bind def /level0 0 def /RES 0 def /PL 0 def /LS 0 def /MANUAL{ statusdict begin/manualfeed true store end }bind def /PLG{ gsave newpath clippath pathbbox grestore exch pop add exch pop }bind def /BP{ /level0 save def 1 setlinecap 1 setlinejoin 72 RES div dup scale LS{ 90 rotate }{ 0 PL translate }ifelse 1 -1 scale }bind def /EP{ level0 restore showpage }bind def /DA{ newpath arcn stroke }bind def /SN{ transform .25 sub exch .25 sub exch round .25 add exch round .25 add exch itransform }bind def /DL{ SN moveto SN lineto stroke }bind def /DC{ newpath 0 360 arc closepath }bind def /TM matrix def /DE{ TM currentmatrix pop translate scale newpath 0 0 .5 0 360 arc closepath TM setmatrix }bind def /RC/rcurveto load def /RL/rlineto load def /ST/stroke load def /MT/moveto load def /CL/closepath load def /FL{ currentgray exch setgray fill setgray }bind def /BL/fill load def /LW/setlinewidth load def /RE{ findfont dup maxlength 1 index/FontName known not{1 add}if dict begin { 1 index/FID ne{def}{pop pop}ifelse }forall /Encoding exch def dup/FontName exch def currentdict end definefont pop }bind def /DEFS 0 def /EBEGIN{ moveto DEFS begin }bind def /EEND/end load def /CNT 0 def /level1 0 def /PBEGIN{ /level1 save def translate div 3 1 roll div exch scale neg exch neg exch translate 0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit []0 setdash /setstrokeadjust where{ pop false setstrokeadjust }if /setoverprint where{ pop false setoverprint }if newpath /CNT countdictstack def userdict begin /showpage{}def }bind def /PEND{ clear countdictstack CNT sub{end}repeat level1 restore }bind def end def /setpacking where{ pop setpacking }if %%EndResource %%IncludeResource: font Times-Roman %%IncludeResource: font Times-Bold %%IncludeResource: font Times-Italic %%IncludeResource: font Courier grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron /scaron/zcaron/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent /ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen /period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon /semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O /P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex /underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y /z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft /guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl /endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut /dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash /quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen /brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft /logicalnot/minus/registered/macron/degree/plusminus/twosuperior /threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior /ordmasculine/guilsinglright/onequarter/onehalf/threequarters /questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE /Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn /germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla /egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis /eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash /ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def /Courier@0 ENC0/Courier RE/Times-Italic@0 ENC0/Times-Italic RE /Times-Bold@0 ENC0/Times-Bold RE/Times-Roman@0 ENC0/Times-Roman RE %%EndProlog %%Page: 1 1 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 342.18(BIBCLEAN\(1\) BIBCLEAN\(1\))72 48 R/F1 9 /Times-Bold@0 SF -.18(NA)72 84 S(ME).18 E F0 (bibclean \255 prettyprint and syntax check BibT)108 96 Q (eX and Scribe bibliograph)-.7 E 2.5(yd)-.05 G(ata base \214les)-2.5 E F1(SYNOPSIS)72 112.8 Q/F2 10/Times-Bold@0 SF(bibclean)108 124.8 Q F0([) 2.5 E F2(\255author)2.5 E F0 2.5(][)2.5 G F2(\255err)A(or)-.18 E(-log) -.37 E/F3 10/Times-Italic@0 SF(\214lename)2.5 E F0 2.5(][)2.5 G F2 (\255help)A F0 2.5(][)2.5 G F2('\255?')A F0 2.5(][)5 G F2 (\255init-\214le)A F3(\214lename)2.5 E F0(])2.5 E([)144 136.8 Q F2 (\255max-width)2.5 E F3(nnn)2.5 E F0 2.5(][)2.5 G F2 (\255[no-]align-equals)A F0 2.5(][)2.5 G F2(\255[no-]check-v)A(alues)-.1 E F0 2.5(][)2.5 G F2(\255[no-]delete-empty-v)A(alues)-.1 E F0(])2.5 E([) 144 148.8 Q F2(\255[no-]\214le-position)2.5 E F0 2.5(][)2.5 G F2 (\255[no-]\214x-f)A(ont-changes)-.25 E F0 2.5(][)2.5 G F2 (\255[no-]\214x-initials)A F0 2.5(][)2.5 G F2(\255[no-]\214x-names)A F0 (])2.5 E([)144 160.8 Q F2(\255[no-]German-style)2.5 E F0 2.5(][)2.5 G F2 (\255[no-]k)A(eep-linebr)-.1 E(eaks)-.18 E F0 2.5(][)2.5 G F2 (\255[no-]k)A(eep-parbr)-.1 E(eaks)-.18 E F0(])2.5 E([)144 172.8 Q F2 (\255[no-]k)2.5 E(eep-pr)-.1 E(eamble-spaces)-.18 E F0 2.5(][)2.5 G F2 (\255[no-]k)A(eep-spaces)-.1 E F0 2.5(][)2.5 G F2(\255[no-]k)A (eep-string-spaces)-.1 E F0(])2.5 E([)144 184.8 Q F2(\255[no-]parbr)2.5 E(eaks)-.18 E F0 2.5(][)2.5 G F2(\255[no-]pr)A(ettyprint)-.18 E F0 2.5 (][)2.5 G F2(\255[no-]print-patter)A(ns)-.15 E F0(])2.5 E([)144 196.8 Q F2(\255[no-]r)2.5 E(ead-init-\214les)-.18 E F0 2.5(][)2.5 G F2 (\255[no-]r)A(emo)-.18 E -.1(ve)-.1 G(-OPT).1 E(-pr)-.92 E(e\214xes)-.18 E F0 2.5(][)2.5 G F2(\255[no-]scribe)A F0(])2.5 E([)144 208.8 Q F2 (\255[no-]trace-\214le-opening)2.5 E F0 2.5(][)2.5 G F2(\255[no-]war)A (nings)-.15 E F0 2.5(][)2.5 G F2A(ersion)-.1 E F0(])2.5 E F3 (out\214le)144 232.8 Q F0(All options can be abbre)108 249.6 Q (viated to a unique leading pre\214x.)-.25 E(An e)108 266.4 Q (xplicit \214le name of `)-.15 E(`\255')-.74 E 2.5('r)-.74 G(epresents \ standard input; it is assumed if no input \214les are speci\214ed.)-2.5 E .216(On V)108 283.2 R .216(AX VMS and IBM PC DOS, the leading `)-1.35 F(`\255')-.74 E 2.716('o)-.74 G 2.716(no)-2.716 G .216 (ption names may be replaced by a slash, `)-2.716 F(`/')-.74 E .216 ('; ho)-.74 F(w-)-.25 E -2.15 -.25(ev e)108 295.2 T .8 -.4(r, t).25 H (he `).4 E(`\255')-.74 E 2.5('o)-.74 G(ption pre\214x is al)-2.5 E -.1 (wa)-.1 G(ys recognized.).1 E F1(DESCRIPTION)72 312 Q F2(bibclean)108 324 Q F0 1.344(prettyprints input B)3.844 F/F4 8/Times-Roman@0 SF(IB)A F0(T)A(E)-1.667 2.4 M 3.845<588c>-1.25 -2.4 O 1.345(les to)-3.845 F F3 (stdout)3.845 E F0 3.845(,a).68 G 1.345 (nd checks the brace balance and bibliograph)-3.845 F 3.845(ye)-.05 G (ntry)-3.845 E 1.295(syntax as well.)108 336 R 1.294 (It can be used to detect problems in B)6.295 F F4(IB)A F0(T)A(E)-1.667 2.4 M 3.794<588c>-1.25 -2.4 O 1.294(les that sometimes confuse e)-3.794 F -.15(ve)-.25 G 3.794(nB).15 G F4(IB)-3.794 E F0(T)A(E)-1.667 2.4 M(X) -1.25 -2.4 M(itself, and importantly)108 348 Q 2.5(,c)-.65 G (an be used to normalize the appearance of collections of B)-2.5 E F4 (IB)A F0(T)A(E)-1.667 2.4 M 2.5<588c>-1.25 -2.4 O(les.)-2.5 E (Here is a summary of the formatting actions:)108 364.8 Q 10<8342>108 381.6 S F4(IB)-10 E F0(T)A(E)-1.667 2.4 M 2.607(Xi)-1.25 -2.4 O .107 (tems are formatted into a consistent structure with one)-2.607 F F3 .108(\214eld = "value")2.608 F F0 .108(pair per line, and the ini-)2.608 F(tial @ and trailing right brace in column 1.)121.5 393.6 Q 10<8354>108 410.4 S .762(abs are e)-10.8 F .761 (xpanded into blank strings; their use is discouraged because the)-.15 F 3.261(yi)-.15 G .761(nhibit portability)-3.261 F 3.261(,a)-.65 G .761 (nd can)-3.261 F(suf)121.5 422.4 Q(fer corruption in electronic mail.) -.25 E 10<834c>108 439.2 S(ong string v)-10 E (alues are split at a blank and continued onto the ne)-.25 E (xt line with leading indentation.)-.15 E 10<8341>108 456 S (single blank line separates adjacent bibliograph)-7.5 E 2.5(ye)-.05 G (ntries.)-2.5 E 10<8354>108 472.8 S -.15(ex)-10.7 G 2.5(to).15 G (utside B)-2.5 E F4(IB)A F0(T)A(E)-1.667 2.4 M 2.5(Xe)-1.25 -2.4 O (ntries is passed through v)-2.5 E(erbatim.)-.15 E 10<834f>108 489.6 S (uter parentheses around entries are con)-10 E -.15(ve)-.4 G (rted to braces.).15 E 10<8350>108 506.4 S 1.193(ersonal names in)-10 F F3(author)3.693 E F0(and)3.693 E F3(editor)3.693 E F0 1.193(\214eld v) 3.693 F 1.194(alues are normalized to the form `)-.25 F(`P)-.74 E 3.694 (.D)-1.11 G 3.694(.Q)-3.694 G 6.194(.B)-3.694 G(ach')-6.194 E 1.194 (', from)-.74 F -.74(``)121.5 518.4 S -1.11(P.).74 G(D.Q. Bach')1.11 E 2.5('a)-.74 G(nd `)-2.5 E(`Bach, P)-.74 E(.D.Q.)-1.11 E -.74('')-.7 G(.) .74 E 10<8348>108 535.2 S(yphen sequences in page numbers are con)-10 E -.15(ve)-.4 G(rted to en-dashes.).15 E 10<834d>108 552 S(onth v)-10 E (alues are con)-.25 E -.15(ve)-.4 G(rted to standard B).15 E F4(IB)A F0 (T)A(E)-1.667 2.4 M 2.5(Xs)-1.25 -2.4 O(tring abbre)-2.5 E(viations.) -.25 E 10<8349>108 568.8 S 3.408(nt)-10 G .908 (itles, sequences of upper)-3.408 F .908(-case characters at brace le) -.2 F -.15(ve)-.25 G 3.407(lz).15 G .907 (ero are braced to protect them from being)-3.407 F(con)121.5 580.8 Q -.15(ve)-.4 G(rted to lo).15 E(wer)-.25 E (-case letters by some bibliograph)-.2 E 2.5(ys)-.05 G(tyles.)-2.5 E 10 <8343>108 597.6 S .98(ODEN, ISBN \(International Standard Book Number\)\ and ISSN \(International Standard Serial Num-)-10 F 2.304 (ber\) entry v)121.5 609.6 R 2.304(alues are e)-.25 F 2.304 (xamined to v)-.15 F 2.303(erify the checksums of each listed number) -.15 F 4.803(,a)-.4 G 2.303(nd correct ISBN)-4.803 F -.05(hy)121.5 621.6 S(phenation is automatically supplied.).05 E .533 (The standardized format of the output of)108 638.4 R F2(bibclean)3.034 E F0 -.1(fa)3.034 G .534 (cilitates the later application of simple \214lters, such as).1 F F2 (bibcheck)108 650.4 Q F0(\(1\),)A F2(bibdup)4.805 E F0(\(1\),)A F2 (bibextract)4.805 E F0(\(1\),)A F2(bibindex)4.804 E F0(\(1\),)A F2 (bibjoin)4.804 E F0(\(1\),)A F2(biblabel)4.804 E F0(\(1\),)A F2(biblook) 4.804 E F0(\(1\),)A F2(biborder)4.804 E F0(\(1\),)A F2(bibsort)108 662.4 Q F0(\(1\),)A F2(cite\214nd)2.558 E F0 .058(\(1\), and)B F2(citetags) 2.558 E F0 .058(\(1\), to process the te)B .058 (xt, and also is the one e)-.15 F .059(xpected by the GNU Emacs)-.15 F (B)108 674.4 Q F4(IB)A F0(T)A(E)-1.667 2.4 M 2.5(Xs)-1.25 -2.4 O (upport functions.)-2.5 E F1(OPTIONS)72 691.2 Q F0 1.098 (Command-line switches may be abbre)108 703.2 R 1.098 (viated to a unique leading pre\214x, and letter case is)-.25 F F3(not) 3.598 E F0(signi\214cant.)3.598 E .512(All options are parsed before an) 108 715.2 R 3.013(yi)-.15 G .513(nput bibliograph)-3.013 F 3.013<798c> -.05 G .513(les are read, no matter what their order on the com-)-3.013 F .612(mand line.)108 727.2 R .612 (Options that correspond to a yes/no setting of a \215ag ha)5.612 F .912 -.15(ve a f)-.2 H .612(orm with a pre\214x "no-" to set the).15 F -1.11 (Ve)72 768 S(rsion 2.11.4)1.11 E(09 May 1998)149.285 E(1)202.335 E EP %%Page: 2 2 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 342.18(BIBCLEAN\(1\) BIBCLEAN\(1\))72 48 R 1.83 (\215ag to)108 84 R/F1 10/Times-Italic@0 SF(no)4.33 E F0 6.83(.F).18 G 1.831(or such options, the last setting determines the \215ag v)-6.98 F 1.831(alue used.)-.25 F 1.831(This is signi\214cant when)6.831 F (options are also speci\214ed in initialization \214les \(see the)108 96 Q/F2 10/Times-Bold@0 SF(INITIALIZA)2.5 E(TION FILES)-.95 E F0 (manual section\).)2.5 E 1.028(The leading h)108 112.8 R 1.027(yphen th\ at distinguishes an option from a \214lename may be doubled, for compat\ ibility with)-.05 F(GNU and POSIX con)108 124.8 Q -.15(ve)-.4 G 2.5 (ntions. Thus,).15 F F2(\255author)2.5 E F0(and)2.5 E F2(\255\255author) 2.5 E F0(are equi)2.5 E -.25(va)-.25 G(lent.).25 E 1.619 -.8(To a)108 141.6 T -.2(vo).6 G .019(id confusion with options, if a \214lename be) .2 F .019(gins with a h)-.15 F .02 (yphen, it must be disguised by a leading abso-)-.05 F(lute or relati) 108 153.6 Q .3 -.15(ve d)-.25 H(irectory path, e.g.,).15 E F1 (/tmp/-foo.bib)2.5 E F0(or)2.5 E F1(./-foo.bib)2.5 E F0(.).23 E F2 (\255author)108 170.4 Q F0 1.621 (Display an author credit on the standard error unit,)91.87 F F1(stderr) 4.121 E F0 4.121(,a).73 G 1.62(nd then e)-4.121 F(xit)-.15 E .591 (with a success return code.)234.46 182.4 R .591(Sometimes an e)5.591 F -.15(xe)-.15 G .591(cutable program is separated).15 F 2.221 (from its documentation and source code; this option pro)234.46 194.4 R 2.221(vides a w)-.15 F 2.22(ay to)-.1 F(reco)234.46 206.4 Q -.15(ve)-.15 G 2.5(rf).15 G(rom that.)-2.5 E F2(\255err)108 223.2 Q(or)-.18 E(-log) -.37 E F1(\214lename)2.5 E F0(Redirect)46.06 E F1(stderr)3.014 E F0 .515 (to the indicated \214le, which will then contain all of the error)3.014 F .435(and w)234.46 235.2 R .435(arning messages.)-.1 F .435 (This option is pro)5.435 F .434(vided for those systems that ha)-.15 F -.15(ve)-.2 G(dif)234.46 247.2 Q(\214culty redirecting)-.25 E F1(stderr) 2.5 E F0(.).73 E F2(\255help)108 264 Q F0(or)2.5 E F22.5 E F0 .191 (Display a help message on)78.39 F F1(stderr)2.692 E F0 2.692(,g).73 G -.25(iv)-2.692 G .192(ing a usage description, similar to this).25 F (section of the manual pages, and then e)234.46 276 Q (xit with a success return code.)-.15 E F2(\255init-\214le)108 292.8 Q F1(\214lename)2.5 E F0(Pro)53.82 E .077(vide an e)-.15 F .077(xplicit v) -.15 F .076(alue pattern initialization \214le.)-.25 F .076 (It will be processed)5.076 F F1(after)2.576 E F0(an)234.46 304.8 Q 3.685(ys)-.15 G 1.185 (ystem-wide and job-wide initialization \214les found on the)-3.685 F F2 -.74(PA)3.685 G(TH)-.21 E F0(\(for)3.685 E -1.35(VA)234.46 316.8 S 3.716 (XV)1.35 G(MS,)-3.716 E F2(SYS$SYSTEM)3.716 E F0 3.716(\)a)C(nd)-3.716 E F2(BIBINPUTS)3.716 E F0 1.215(search paths, respecti)3.716 F -.15(ve) -.25 G(ly).15 E(,)-.65 E .668(and may o)234.46 328.8 R -.15(ve)-.15 G .668(rride them.).15 F .668(It in turn may be o)5.668 F -.15(ve)-.15 G .669(rridden by a subsequent \214le-).15 F 1.724 (speci\214c initialization \214le.)234.46 340.8 R 1.724 (The initialization \214le name can be changed at)6.724 F .958 (compile time, or at run time through a setting of the en)234.46 352.8 R .959(vironment v)-.4 F(ariable)-.25 E F2(BIBCLEANINI)234.46 364.8 Q F0 3.532(,b)C 1.031(ut def)-3.732 F 1.031(aults to)-.1 F F1(.bibcleanr) 3.531 E(c)-.37 E F0 1.031(on UNIX, and to)3.531 F F1(bibclean.ini)3.531 E F0(else)234.46 376.8 Q 3.26(where. F)-.25 F .76 (or further details, see the)-.15 F F2(INITIALIZA)3.26 E .76(TION FILES) -.95 F F0(manual)3.26 E(section.)234.46 388.8 Q F2(\255max-width)108 405.6 Q F1(nnn)2.5 E F2(bibclean)57.15 E F0 1.867 (normally limits output line widths to 72 characters, and in the)4.368 F 1.704(interests of consistenc)234.46 417.6 R 3.004 -.65(y, t)-.15 H 1.704(hat v).65 F 1.705(alue should not be changed.)-.25 F(Occasionally) 6.705 E(,)-.65 E .139(special-purpose applications may require dif) 234.46 429.6 R .139(ferent maximum line widths, so)-.25 F .327 (this option pro)234.46 441.6 R .327(vides that capability)-.15 F 5.327 (.T)-.65 G .327(he number follo)-5.327 F .327(wing the option name)-.25 F .346(can be speci\214ed in decimal, octal \(starting with 0\), or he) 234.46 453.6 R .345(xadecimal \(starting)-.15 F 1.901(with 0x\).)234.46 465.6 R 4.401(Az)6.901 G 1.901(ero or ne)-4.401 F -.05(ga)-.15 G(ti).05 E 2.202 -.15(ve v)-.25 H 1.902 (alue is interpreted to mean unlimited, so)-.1 F F2(\255max-width)234.46 477.6 Q F1(0)2.876 E F0 .375(can be used to ensure that each \214eld/v) 2.876 F .375(alue pair appears on a)-.25 F(single line.)234.46 489.6 Q (When)234.46 506.4 Q F2(\255no-pr)3.868 E(ettyprint)-.18 E F0(requests) 3.868 E F2(bibclean)3.868 E F0 1.368(to act as a le)3.868 F 1.368 (xical analyzer)-.15 F 3.868(,t)-.4 G(he)-3.868 E(def)234.46 518.4 Q (ault line width is unlimited, unless o)-.1 E -.15(ve)-.15 G (rridden by this option.).15 E(When)234.46 535.2 Q F2(bibclean)2.501 E F0 .001(is prettyprinting, line wrapping will be done only at a space.) 2.501 F(Consequently)234.46 547.2 Q 2.763(,al)-.65 G .263 (ong non-blank character sequence may result in the output)-2.763 F -.15 (ex)234.46 559.2 S(ceeding the requested line width.).15 E(When)234.46 576 Q F2(bibclean)3.727 E F0 1.227(is le)3.727 F 1.226 (xing, line wrapping is done by inserting a backslash-)-.15 F(ne)234.46 588 Q .323(wline pair when the speci\214ed maximum is reached, so no li\ ne length will)-.25 F -2.15 -.25(ev e)234.46 600 T 2.5(re).25 G (xceed the maximum.)-2.65 E F2(\255[no-]align-equals)108 616.8 Q F0 -.4 (Wi)48.53 G .132(th the positi).4 F .432 -.15(ve f)-.25 H .132 (orm, align the equals sign in k).15 F -.15(ey)-.1 G(/v).15 E .131 (alue assignments at the)-.25 F .204 (same column, separated by a single space from the v)234.46 628.8 R .204 (alue string.)-.25 F(Otherwise,)5.204 E(the equals sign follo)234.46 640.8 Q(ws the k)-.25 E -.15(ey)-.1 G 2.5(,s)-.5 G (eparated by a single space.)-2.5 E(Def)5 E(ault:)-.1 E F1(no)2.86 E F0 (.).18 E F2(\255[no-]check-v)108 657.6 Q(alues)-.1 E F0 -.4(Wi)45.87 G 1.157(th the positi).4 F 1.457 -.15(ve f)-.25 H 1.156 (orm, apply heuristic pattern matching to \214eld v).15 F 1.156 (alues in)-.25 F 1.629(order to detect possible errors \(e.g., `)234.46 669.6 R(`)-.74 E F1 1.629(year = "192")B F0 3.109 -.74('' i)D 1.629 (nstead of `).74 F(`)-.74 E F1 1.63(year =)B("1992")234.46 681.6 Q F0 -.74('')C(\), and issue w).74 E(arnings when une)-.1 E (xpected patterns are found.)-.15 E .201 (This checking is usually bene\214cial, b)234.46 698.4 R .201 (ut if it produces too man)-.2 F 2.7(yb)-.15 G .2(ogus w)-2.7 F(arn-)-.1 E 1.005(ings for a particular bibliograph)234.46 710.4 R 3.505<798c>-.05 G 1.005(le, you can disable it with the ne)-3.505 F -.05(ga)-.15 G(ti) .05 E -.15(ve)-.25 G(form of this option.)234.46 722.4 Q(Def)5 E(ault:) -.1 E F1(yes)3.24 E F0(.).27 E -1.11(Ve)72 768 S(rsion 2.11.4)1.11 E (09 May 1998)149.285 E(2)202.335 E EP %%Page: 3 3 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 342.18(BIBCLEAN\(1\) BIBCLEAN\(1\))72 48 R/F1 10 /Times-Bold@0 SF(\255[no-]delete-empty-v)108 84 Q(alues)-.1 E F0 -.4(Wi) 15.33 G .083(th the positi).4 F .383 -.15(ve f)-.25 H .083(orm, remo).15 F .382 -.15(ve a)-.15 H .082(ll \214eld/v).15 F .082 (alue pairs for which the v)-.25 F .082(alue is an)-.25 F .779 (empty string.)234.46 96 R .779 (This is helpful in cleaning up bibliographies generated from)5.779 F (te)234.46 108 Q 1.882(xt editor templates. Compare this option with) -.15 F F1(\255[no-]r)4.381 E(emo)-.18 E -.1(ve)-.1 G(-OPT).1 E(-pr)-.92 E(e-)-.18 E(\214xes)234.46 120 Q F0(described belo)2.5 E 3.8 -.65(w. D) -.25 H(ef).65 E(ault:)-.1 E/F2 10/Times-Italic@0 SF(no)2.86 E F0(.).18 E F1(\255[no-]\214le-position)108 136.8 Q F0 -.4(Wi)50.2 G 1.435 (th the positi).4 F 1.735 -.15(ve f)-.25 H 1.435(orm, gi).15 F 1.735 -.15(ve d)-.25 H 1.435(etailed \214le position information in w).15 F (arning)-.1 E(and error messages.)234.46 148.8 Q(Def)5 E(ault:)-.1 E F2 (no)2.86 E F0(.).18 E F1(\255[no-]\214x-f)108 165.6 Q(ont-changes)-.25 E F0 -.4(Wi)32.13 G .011(th the positi).4 F .311 -.15(ve f)-.25 H .011 (orm, supply an additional brace le).15 F -.15(ve)-.25 G 2.511(la).15 G .011(round font changes)-2.511 F 3.368(in titles to protect ag)234.46 177.6 R 3.369(ainst do)-.05 F 3.369(wncasing by some B)-.25 F/F3 8 /Times-Roman@0 SF(IB)A F0(T)A(E)-1.667 2.4 M 5.869(Xs)-1.25 -2.4 O 5.869 (tyles. F)-5.869 F(ont)-.15 E(changes that already ha)234.46 189.6 Q .3 -.15(ve m)-.2 H(ore than one le).15 E -.15(ve)-.25 G 2.5(lo).15 G 2.5 (fb)-2.5 G(races are not modi\214ed.)-2.5 E -.15(Fo)234.46 206.4 S 4.136 (re).15 G 1.636(xample, if a title contains the Latin phrase)-4.286 F F2 1.635({\\em Dictyostelium Dis-)4.135 F(coideum})234.46 218.4 Q F0(or) 4.967 E F2 2.467({\\em {D}ictyostelium {D}iscoideum})4.967 F F0 4.967 (,t)C 2.467(hen do)-4.967 F 2.468(wncasing will)-.25 F .487 (incorrectly con)234.46 230.4 R -.15(ve)-.4 G .487(rt the phrase to lo) .15 F(wer)-.25 E .487(-case letters.)-.2 F .486(Most B)5.487 F F3(IB)A F0(T)A(E)-1.667 2.4 M 2.986(Xu)-1.25 -2.4 O .486(sers are)-2.986 F 2.679 (surprised that bracing the initial letters does not pre)234.46 242.4 R -.15(ve)-.25 G 2.679(nt the do).15 F(wncase)-.25 E 2.755(action. The) 234.46 254.4 R .255(correct coding is)2.755 F F2 .255 ({{\\em Dictyostelium Discoideum}})2.755 F F0 5.255(.H)C -.25(ow)-5.255 G -2.15 -.25(ev e).25 H -.4(r,).25 G .435(there are also le)234.46 266.4 R .435(gitimate cases where an e)-.15 F .435(xtra le)-.15 F -.15(ve)-.25 G 2.935(lo).15 G 2.935(fb)-2.935 G .435(racing wrongly pro-)-2.935 F 1.395(tects from do)234.46 278.4 R 3.895(wncasing. Consequently)-.25 F (,)-.65 E F1(bibclean)3.895 E F0 1.395(will normally)3.895 F F2(not) 3.895 E F0(supply)3.895 E 1.856(an e)234.46 290.4 R 1.857(xtra le)-.15 F -.15(ve)-.25 G 4.357(lo).15 G 4.357(fb)-4.357 G 1.857(races, b)-4.357 F 1.857(ut if you ha)-.2 F 2.157 -.15(ve a b)-.2 H(ibliograph).15 E 4.357 (yw)-.05 G 1.857(here the e)-4.357 F(xtra)-.15 E (braces are routinely missing, you can use this option to supply them.) 234.46 302.4 Q .632(If you think that you need this option, it is)234.46 319.2 R F2(str)3.132 E(ongly)-.45 E F0 .632(recommended that you)3.132 F (apply)234.46 331.2 Q F1(bibclean)6.064 E F0 3.564(to your bibliograph) 6.064 F 6.064<798c>-.05 G 3.565(le with and without)-6.064 F F1 6.065 E(ont-)-.25 E(changes)234.46 343.2 Q F0 3.474(,t)C .974(hen compare the tw)-3.474 F 3.473(oo)-.1 G .973 (utput \214les to ensure that e)-3.473 F .973(xtra braces are)-.15 F .187(not being supplied in titles where the)234.46 355.2 R 2.688(ys)-.15 G .188(hould not be present.)-2.688 F -1.1(Yo)5.188 G 2.688(uw)1.1 G .188(ill ha)-2.688 F -.15(ve)-.2 G .823(to decide which of the tw)234.46 367.2 R 3.323(oo)-.1 G .823 (utput \214les is the better choice, then repair the)-3.323 F (incorrect title bracing by hand.)234.46 379.2 Q 1.798 (Since font changes in titles are uncommon, e)234.46 396 R 1.799 (xcept for cases of the type)-.15 F .406(which this option is designed \ to correct, it should do more good than harm.)234.46 408 R(Def)234.46 420 Q(ault:)-.1 E F2(no)2.86 E F0(.).18 E F1(\255[no-]\214x-initials)108 436.8 Q F0 -.4(Wi)57.42 G 1.27(th the positi).4 F 1.571 -.15(ve f)-.25 H 1.271(orm, insert a space after a period follo).15 F 1.271 (wing author ini-)-.25 F 2.5(tials. Def)234.46 448.8 R(ault:)-.1 E F2 (yes)3.24 E F0(.).27 E F1(\255[no-]\214x-names)108 465.6 Q F0 -.4(Wi) 59.1 G .07(th the positi).4 F .37 -.15(ve f)-.25 H .07(orm, reorder).15 F F2(author)2.57 E F0(and)2.57 E F2(editor)2.57 E F0 .07 (name lists to remo)2.57 F .37 -.15(ve c)-.15 H(om-).15 E 1.518 (mas at brace le)234.46 477.6 R -.15(ve)-.25 G 4.018(lz).15 G 1.518 (ero, placing \214rst names or initials before last names.)-4.018 F(Def) 234.46 489.6 Q(ault:)-.1 E F2(yes)3.24 E F0(.).27 E F1 (\255[no-]German-style)108 506.4 Q F0 -.4(Wi)41.89 G 1.522 (th the positi).4 F 1.822 -.15(ve f)-.25 H 1.522 (orm, interpret quote characters ["] inside).15 F F2(br)4.022 E(aced) -.15 E F0 -.25(va)4.022 G(lue).25 E 1.346(strings at brace le)234.46 518.4 R -.15(ve)-.25 G -6.345 3.846(l1 a).15 H 1.347 (ccording to the con)-3.846 F -.15(ve)-.4 G 1.347(ntions of the T).15 F (E)-1.667 2.4 M 3.847(Xs)-1.25 -2.4 O 1.347(tyle \214le)-3.847 F F2 -.1 (ge)234.46 530.4 S(rman.sty).1 E F0 3.592(,w).32 G 1.091(hich o)-3.592 F -.15(ve)-.15 G 1.091 (rloads quote to simplify input and representation of).15 F 3.881 (German umlaut accents, sharp-s \(es-zet\), lig)234.46 542.4 R 3.882 (ature separators, in)-.05 F(visible)-.4 E -.05(hy)234.46 554.4 S 4.824 (phens, raised/lo).05 F 4.823 (wered quotes, French guillemets, and discretionary)-.25 F -.05(hy) 234.46 566.4 S 5.062(phens. Recognized).05 F 2.563 (character combinations will be braced to pre)5.062 F -.15(ve)-.25 G(nt) .15 E(B)234.46 578.4 Q F3(IB)A F0(T)A(E)-1.667 2.4 M 2.5(Xf)-1.25 -2.4 O (rom interpreting the quote as a string delimiter)-2.5 E(.)-.55 E .512 (Quoted strings recei)234.46 595.2 R .812 -.15(ve n)-.25 H 3.012(os).15 G .512(pecial handling from this option, and since Ger)-3.012 F(-)-.2 E .73(man nouns in titles must an)234.46 607.2 R(yw)-.15 E .73 (ay be protected from the do)-.1 F .73(wncasing opera-)-.25 F .576 (tion of most B)234.46 619.2 R F3(IB)A F0(T)A(E)-1.667 2.4 M 3.075(Xb) -1.25 -2.4 O(ibliograph)-3.075 E 3.075(ys)-.05 G .575(tyles, German v) -3.075 F .575(alue strings that use the)-.25 F -.15(ove)234.46 631.2 S .28(rloaded quote character can al).15 F -.1(wa)-.1 G .281 (ys be entered in the form "{.).1 F 1.666(..)1.666 G .281(}", with-) -1.666 F(out the need to specify this option at all.)234.46 643.2 Q(Def) 234.46 660 Q(ault:)-.1 E F2(no)2.86 E F0(.).18 E F1(\255[no-]k)108 676.8 Q(eep-linebr)-.1 E(eaks)-.18 E F0(Normally)32.71 E 3.065(,l)-.65 G .565 (ine breaks inside v)-3.065 F .564 (alue strings are collapsed into a single space,)-.25 F .49 (so that long v)234.46 688.8 R .49(alue strings can later be brok)-.25 F .49(en to pro)-.1 F .49(vide lines of reasonable)-.15 F(length.)234.46 700.8 Q -.4(Wi)234.46 717.6 S .555(th the positi).4 F .855 -.15(ve f) -.25 H .555(orm, linebreaks are preserv).15 F .554(ed in v)-.15 F .554 (alue strings.)-.25 F(If)5.554 E F1(\255max-)3.054 E(width)234.46 729.6 Q F0 .268(is set to zero, this preserv)2.768 F .268 (es the original line breaks.)-.15 F(Spacing)5.269 E F2(outside)2.769 E F0 -1.11(Ve)72 768 S(rsion 2.11.4)1.11 E(09 May 1998)149.285 E(3)202.335 E EP %%Page: 4 4 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 342.18(BIBCLEAN\(1\) BIBCLEAN\(1\))72 48 R -.25 (va)234.46 84 S 1.057(lue strings remains under).25 F/F1 10/Times-Bold@0 SF(bibclean)3.557 E F0 2.156 -.55('s c)D 1.056(ontrol, and is not af).55 F 1.056(fected by this)-.25 F(option.)234.46 96 Q(Def)234.46 112.8 Q (ault:)-.1 E/F2 10/Times-Italic@0 SF(no)2.86 E F0(.).18 E F1(\255[no-]k) 108 129.6 Q(eep-parbr)-.1 E(eaks)-.18 E F0 -.4(Wi)33.27 G 2.304 (th the positi).4 F 2.604 -.15(ve f)-.25 H 2.304(orm, preserv).15 F 4.804(ep)-.15 G 2.305(aragraph breaks \(either formfeeds, or)-4.804 F .845(lines containing only spaces\) in v)234.46 141.6 R .844 (alue strings.)-.25 F(Normally)5.844 E 3.344(,p)-.65 G .844 (aragraph breaks)-3.344 F 1.861(are collapsed into a single space.) 234.46 153.6 R(Spacing)6.861 E F2(outside)4.361 E F0 -.25(va)4.361 G 1.861(lue strings remains).25 F(under)234.46 165.6 Q F1(bibclean)2.5 E F0 1.1 -.55('s c)D(ontrol, and is not af).55 E(fected by this option.) -.25 E(Def)5 E(ault:)-.1 E F2(no)2.86 E F0(.).18 E F1(\255[no-]k)108 182.4 Q(eep-pr)-.1 E(eamble-spaces)-.18 E F0 -.4(Wi)6.06 G .612 (th the positi).4 F .912 -.15(ve f)-.25 H .612(orm, preserv).15 F 3.112 (ea)-.15 G .612(ll whitespace in @Preamble{.)-3.112 F 1.666(..)1.666 G 3.112(}e)-1.666 G(ntries.)-3.112 E(Def)234.46 194.4 Q(ault:)-.1 E F2(no) 2.86 E F0(.).18 E F1(\255[no-]k)108 211.2 Q(eep-spaces)-.1 E F0 -.4(Wi) 49.76 G .296(th the positi).4 F .596 -.15(ve f)-.25 H .296(orm, preserv) .15 F 2.796(ea)-.15 G .296(ll spaces in v)-2.796 F .297(alue strings.) -.25 F(Normally)5.297 E 2.797(,m)-.65 G(ul-)-2.797 E 2.133 (tiple spaces are collapsed into a single space.)234.46 223.2 R 2.132 (This option can be used)7.132 F 1.088(together with)234.46 235.2 R F1 3.588 E(eep-linebr)-.1 E(eaks)-.18 E F0(,)A F13.588 E (eep-parbr)-.1 E(eaks)-.18 E F0 3.589(,a)C(nd)-3.589 E F1(\255max-width) 3.589 E F2(0)3.589 E F0(to)3.589 E(preserv)234.46 247.2 Q 4.166(et)-.15 G 1.666(he form of v)-4.166 F 1.665(alue strings while still pro)-.25 F 1.665(viding syntax and v)-.15 F(alue)-.25 E 3.4(checking. Spacing) 234.46 259.2 R F2(outside)3.4 E F0 -.25(va)3.4 G .9 (lue strings remains under).25 F F1(bibclean)3.4 E F0 2 -.55('s c)D (ontrol,).55 E(and is not af)234.46 271.2 Q(fected by this option.)-.25 E(Def)5 E(ault:)-.1 E F2(no)2.86 E F0(.).18 E F1(\255[no-]k)108 288 Q (eep-string-spaces)-.1 E F0 -.4(Wi)21.43 G 2.092(th the positi).4 F 2.392 -.15(ve f)-.25 H 2.092(orm, preserv).15 F 4.592(ea)-.15 G 2.092 (ll whitespace in @String{.)-4.592 F 1.666(..)1.666 G 4.592(}e)-1.666 G (ntries.)-4.592 E(Def)234.46 300 Q(ault:)-.1 E F2(no)2.86 E F0(.).18 E F1(\255[no-]parbr)108 316.8 Q(eaks)-.18 E F0 -.4(Wi)56.5 G .318 (th the ne).4 F -.05(ga)-.15 G(ti).05 E .618 -.15(ve f)-.25 H .319 (orm, a paragraph break \(either a formfeed, or a line con-).15 F .299 (taining only spaces\) is not permitted in v)234.46 328.8 R .299 (alue strings, or between \214eld/v)-.25 F(alue)-.25 E 2.8(pairs. This) 234.46 340.8 R .3(may be useful to quickly trap runa)2.8 F -.1(wa)-.15 G 2.8(ys).1 G .3(trings arising from mis-)-2.8 F(matched delimiters.) 234.46 352.8 Q(Def)5 E(ault:)-.1 E F2(yes)3.24 E F0(.).27 E F1 (\255[no-]pr)108 369.6 Q(ettyprint)-.18 E F0(Normally)52.62 E(,)-.65 E F1(bibclean)2.604 E F0 .103(functions as a prettyprinter)2.604 F 5.103 (.H)-.55 G -.25(ow)-5.103 G -2.15 -.25(ev e).25 H .903 -.4(r, w).25 H .103(ith the ne).4 F -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G .463 (form of this option, it acts as a le)234.46 381.6 R .463 (xical analyzer instead, producing a stream)-.15 F .881(of le)234.46 393.6 R .881(xical tok)-.15 F 3.381(ens. See)-.1 F(the)3.381 E F1 .881 (LEXICAL AN)3.381 F(AL)-.2 E(YSIS)-.92 E F0 .881(manual section for fur) 3.381 F(-)-.2 E(ther details.)234.46 405.6 Q(Def)5 E(ault:)-.1 E F2(yes) 3.24 E F0(.).27 E F1(\255[no-]print-patter)108 422.4 Q(ns)-.15 E F0 -.4 (Wi)39.81 G .45(th the positi).4 F .75 -.15(ve f)-.25 H .45 (orm, print the v).15 F .45 (alue patterns read from initialization \214les)-.25 F .778(as the) 234.46 434.4 R 3.278(ya)-.15 G .778(re added to internal tables.)-3.278 F .777(Use this option to check ne)5.777 F(wly-added)-.25 E (patterns, or to see what patterns are being used.)234.46 446.4 Q(When) 234.46 463.2 Q F1(bibclean)2.62 E F0 .12(is compiled with nati)2.62 F .42 -.15(ve p)-.25 H .12(attern-matching code \(the def).15 F(ault\),) -.1 E 1.24(these patterns are the ones that will be used in checking v) 234.46 475.2 R 1.24(alue strings for)-.25 F -.25(va)234.46 487.2 S .717 (lid syntax, and all of them are speci\214ed in initialization \214les,\ rather than).25 F 1.81(hard-coded into the program.)234.46 499.2 R -.15 (Fo)6.81 G 4.31(rf).15 G 1.81(urther details, see the)-4.31 F F1 (INITIALIZA-)4.31 E(TION FILES)234.46 511.2 Q F0(manual section.)2.5 E (Def)5 E(ault:)-.1 E F2(no)2.86 E F0(.).18 E F1(\255[no-]r)108 528 Q (ead-init-\214les)-.18 E F0 -.4(Wi)43.17 G .373(th the ne).4 F -.05(ga) -.15 G(ti).05 E .673 -.15(ve f)-.25 H .373 (orm, suppress loading of system-, user).15 F .373 (-, and \214le-speci\214c)-.2 F .725(initialization \214les.)234.46 540 R .725(Initializations will come)5.725 F F2(only)3.224 E F0 .724 (from those \214les e)3.224 F(xplicitly)-.15 E(gi)234.46 552 Q -.15(ve) -.25 G 2.5(nb).15 G(y)-2.5 E F1(\255init-\214le)2.5 E F2(\214lename)2.5 E F0 2.5(options. Def)2.5 F(ault:)-.1 E F2(yes)3.24 E F0(.).27 E F1 (\255[no-]r)108 568.8 Q(emo)-.18 E -.1(ve)-.1 G(-OPT).1 E(-pr)-.92 E (e\214xes)-.18 E F0 -.4(Wi)9.49 G 1.803(th the positi).4 F 2.103 -.15 (ve f)-.25 H 1.803(orm, remo).15 F 2.104 -.15(ve t)-.15 H 1.804(he `).15 F(`OPT')-.74 E 4.304('p)-.74 G 1.804(re\214x from each \214eld name) -4.304 F 1.045(where the corresponding v)234.46 580.8 R 1.045(alue is) -.25 F F2(not)3.545 E F0 1.044(an empty string.)3.545 F 1.044 (The pre\214x `)6.044 F(`OPT')-.74 E(')-.74 E(must be entirely in upper) 234.46 592.8 Q(-case to be recognized.)-.2 E .141(This option is for bi\ bliographies generated with the help of the GNU Emacs)234.46 609.6 R(B) 234.46 621.6 Q/F3 8/Times-Roman@0 SF(IB)A F0(T)A(E)-1.667 2.4 M 5.164 (Xe)-1.25 -2.4 O 2.663 (diting support, which generates templates with optional \214elds)-5.164 F .521(identi\214ed by the `)234.46 633.6 R(`OPT')-.74 E 3.021('p)-.74 G 3.021(re\214x. Although)-3.021 F .521(the function)3.021 F F2 .522 (M-x bibte)3.021 F(x-r)-.2 E(emo)-.37 E(ve-)-.1 E(OPT)234.46 645.6 Q F0 1.396(normally bound to the k)3.896 F -.15(ey)-.1 G(strok).15 E(es)-.1 E F2 1.396(C-c C-o)3.896 F F0 1.396(does the job, users often)3.896 F(for) 234.46 657.6 Q 1.029(get, with the result that B)-.18 F F3(IB)A F0(T)A (E)-1.667 2.4 M 3.529(Xd)-1.25 -2.4 O 1.029 (oes not recognize the \214eld name, and)-3.529 F 1.96(ignores the v) 234.46 669.6 R 1.96(alue string.)-.25 F 1.96(Compare this option with) 6.96 F F1(\255[no-]delete-empty-)4.46 E -.1(va)234.46 681.6 S(lues).1 E F0(described abo)2.5 E -.15(ve)-.15 G 5(.D).15 G(ef)-5 E(ault:)-.1 E F2 (no)2.86 E F0(.).18 E F1(\255[no-]scribe)108 698.4 Q F0 -.4(Wi)74.66 G .204(th the positi).4 F .504 -.15(ve f)-.25 H .205 (orm, accept input syntax conforming to the S).15 F F3(CRIBE)A F0(docu-) 2.705 E 1.003(ment system.)234.46 710.4 R 1.003(The output will be con) 6.003 F -.15(ve)-.4 G 1.002(rted to conform to B).15 F F3(IB)A F0(T)A(E) -1.667 2.4 M 3.502(Xs)-1.25 -2.4 O(yntax.)-3.502 E .327(See the)234.46 722.4 R F1 .327(SCRIBE BIBLIOGRAPHY FORMA)2.827 F(T)-.95 E F0 .328 (manual section for further)2.828 F -1.11(Ve)72 768 S(rsion 2.11.4)1.11 E(09 May 1998)149.285 E(4)202.335 E EP %%Page: 5 5 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 342.18(BIBCLEAN\(1\) BIBCLEAN\(1\))72 48 R 2.5 (details. Def)234.46 84 R(ault:)-.1 E/F1 10/Times-Italic@0 SF(no)2.86 E F0(.).18 E/F2 10/Times-Bold@0 SF(\255[no-]trace-\214le-opening)108 100.8 Q F0 -.4(Wi)25.22 G 1.587(th the positi).4 F 1.887 -.15(ve f)-.25 H 1.586(orm, record in the error log \214le the names of all \214les).15 F (which)234.46 112.8 Q F2(bibclean)3.029 E F0 .529(attempts to open.) 3.029 F .529(Use this option to identify where initial-)5.529 F (ization \214les are located.)234.46 124.8 Q(Def)5 E(ault:)-.1 E F1(no) 2.86 E F0(.).18 E F2(\255[no-]war)108 141.6 Q(nings)-.15 E F0 -.4(Wi) 60.91 G .97(th the positi).4 F 1.269 -.15(ve f)-.25 H .969(orm, allo).15 F 3.469(wa)-.25 G .969(ll w)-3.469 F .969(arning messages.)-.1 F .969 (The ne)5.969 F -.05(ga)-.15 G(ti).05 E 1.269 -.15(ve f)-.25 H .969 (orm is).15 F F1(not)234.46 153.6 Q F0 2.308 (recommended since it may mask problems that should be repaired.)4.808 F (Def)234.46 165.6 Q(ault:)-.1 E F1(yes)3.24 E F0(.).27 E F2108 182.4 Q(ersion)-.1 E F0 .221(Display the program v)89.75 F .221 (ersion number on)-.15 F F1(stderr)2.721 E F0 2.721(,a).73 G .221 (nd then e)-2.721 F .22(xit with a success)-.15 F .65(return code.) 234.46 194.4 R .65 (This will also include an indication of who compiled the pro-)5.65 F .094(gram, the host name on which it w)234.46 206.4 R .094 (as compiled, the time of compilation, and)-.1 F 1.389 (the type of string-v)234.46 218.4 R 1.389 (alue matching code selected, when that information is)-.25 F -.2(av) 234.46 230.4 S(ailable to the compiler)-.05 E(.)-.55 E/F3 9/Times-Bold@0 SF(ERR)72 247.2 Q(OR RECO)-.27 E(VER)-.45 E 2.25(YA)-.315 G(ND W)-2.25 E (ARNINGS)-1.08 E F0(When)108 259.2 Q F2(bibclean)2.882 E F0 .382 (detects an error)2.882 F 2.882(,i)-.4 G 2.882(ti)-2.882 G .382 (ssues an error message to both)-2.882 F F1(stderr)2.881 E F0(and)2.881 E F1(stdout)2.881 E F0 5.381(.T).68 G .381(hat w)-5.381 F(ay)-.1 E 2.881 (,t)-.65 G .381(he user is)-2.881 F (clearly noti\214ed, and the output bibliograph)108 271.2 Q 2.5(ya)-.05 G(lso contains the message at the point of error)-2.5 E(.)-.55 E .895 (Error messages be)108 288 R .895(gin with a distincti)-.15 F 1.195 -.15 (ve p)-.25 H .895(air of queries, ??, be).15 F .895 (ginning in column 1, follo)-.15 F .896(wed by the input)-.25 F .093 (\214le name and line number)108 300 R 5.093(.I)-.55 G 2.593(ft)-5.093 G (he)-2.593 E F2(\255\214le-position)2.592 E F0 .092(option w)2.592 F .092(as speci\214ed, the)-.1 F 2.592(ya)-.15 G .092 (lso contain the input and output)-2.592 F .334 (positions of the current \214le, entry)108 312 R 2.835(,a)-.65 G .335 (nd v)-2.835 F 2.835(alue. Each)-.25 F .335 (position includes the \214le byte number)2.835 F 2.835(,t)-.4 G .335 (he line number)-2.835 F(,)-.4 E .871(and the column number)108 324 R 5.871(.I)-.55 G 3.371(nt)-5.871 G .871(he e)-3.371 F -.15(ve)-.25 G .871 (nt of a runa).15 F -.1(wa)-.15 G 3.371(ys).1 G .87(tring ar)-3.371 F .87(gument, the entry and v)-.18 F .87(alue positions should)-.25 F 2.445(precisely pinpoint the erroneous bibliograph)108 336 R 4.945(ye) -.05 G(ntry)-4.945 E 4.945(,a)-.65 G 2.445 (nd the \214le positions will indicate where it w)-4.945 F(as)-.1 E (detected, which may be rather later in the \214les.)108 348 Q -.8(Wa) 108 364.8 S .836(rning messages identify possible problems, and are the\ refore sent only to).8 F F1(stderr)3.336 E F0 3.336(,a).73 G .836 (nd not to)-3.336 F F1(stdout)3.336 E F0 3.336(,s).68 G(o)-3.336 E(the) 108 376.8 Q 2.807(yn)-.15 G -2.15 -.25(ev e)-2.807 H 2.807(ra).25 G .307 (ppear in the output \214le.)-2.807 F(The)5.308 E 2.808(ya)-.15 G .308 (re identi\214ed by a distincti)-2.808 F .608 -.15(ve p)-.25 H .308 (air of percents, %%, be).15 F .308(ginning in)-.15 F 1.592 (column 1, and as with error messages, may be follo)108 388.8 R 1.592 (wed by \214le position messages if the)-.25 F F2(\255\214le-position) 4.091 E F0(option w)108 400.8 Q(as speci\214ed.)-.1 E -.15(Fo)108 417.6 S 3.29(rc).15 G(on)-3.29 E -.15(ve)-.4 G .79 (nience, the \214rst line of each error and w).15 F .791 (arning message sent to)-.1 F F1(stderr)3.291 E F0 .791 (is formatted according to)3.291 F .886(the e)108 429.6 R .886 (xpectations of the GNU Emacs)-.15 F F1(ne)3.385 E(xt-err)-.2 E(or)-.45 E F0 3.385(command. Y)3.385 F .885(ou can in)-1.1 F -.2(vo)-.4 G -.1(ke) .2 G F2(bibclean)3.485 E F0 .885(with the Emacs)3.385 F F1(M-x)3.385 E .106(compilebibclean \214lename)108 441.6 R .106(.bib >\214lename) -.15 F(.ne)-.15 E(w)-.15 E F0 .107(command, then use the)2.606 F F1(ne) 2.607 E(xt-err)-.2 E(or)-.45 E F0 .107(command, normally)2.607 F (bound to)108 453.6 Q F1(C-x `)2.5 E F0(\(that')2.5 E 2.5(sag)-.55 G(ra) -2.5 E -.15(ve)-.2 G 2.5(,o).15 G 2.5(rb)-2.5 G(ack, accent\), to mo) -2.5 E .3 -.15(ve t)-.15 H 2.5(ot).15 G (he location of the error in the input \214le.)-2.5 E .035 (If error messages are ignored, and left in the output bibliograph)108 470.4 R 2.534<798c>-.05 G .034(le, the)-2.534 F 2.534(yw)-.15 G .034 (ill precipitate an error when the)-2.534 F(bibliograph)108 482.4 Q 2.5 (yi)-.05 G 2.5(sn)-2.5 G -.15(ex)-2.5 G 2.5(tp).15 G(rocessed with B) -2.5 E/F4 8/Times-Roman@0 SF(IB)A F0(T)A(E)-1.667 2.4 M(X.)-1.25 -2.4 M .02(After issuing an error message,)108 499.2 R F2(bibclean)2.52 E F0 .021(then resynchronizes its input by cop)2.52 F .021(ying it v)-.1 F .021(erbatim to)-.15 F F1(stdout)2.521 E F0(until)2.521 E 3.371(an)108 511.2 S 1.371 -.25(ew b)-3.371 H(ibliograph).25 E 3.371(ye)-.05 G .87(n\ try is recognized on a line in which the \214rst non-blank character is\ an at-sign \(@\).)-3.371 F .12 (This ensures that nothing is lost from the input \214le\(s\), allo)108 523.2 R .12(wing corrections to be made in either the input or)-.25 F 1.93(the output \214les.)108 535.2 R(Ho)6.93 E(we)-.25 E -.15(ve)-.25 G 2.73 -.4(r, i).15 H(f).4 E F2(bibclean)4.43 E F0 1.929 (detects an internal error in its data structures, it will terminate) 4.43 F .197(abruptly without further input or output processing; this k\ ind of error should ne)108 547.2 R -.15(ve)-.25 G 2.697(rh).15 G .198 (appen, and if it does, it)-2.697 F .423 (should be reported immediately to the author of the program.)108 559.2 R .422(Errors in initialization \214les, and running out)5.422 F (of dynamic memory)108 571.2 Q 2.5(,w)-.65 G (ill also immediately terminate)-2.5 E F2(bibclean)2.5 E F0(.)A F3 (INITIALIZA)72 588 Q(TION FILES)-.855 E F2(bibclean)108 600 Q F0 .53 (can be compiled with one of three dif)3.03 F .53 (ferent types of pattern matching; the choice is made by the)-.25 F (installer at compile time:)108 612 Q 10<8354>144 628.8 S(he original v) -10 E(ersion uses e)-.15 E(xplicit hand-coded tests of v)-.15 E (alue-string syntax.)-.25 E 10<8354>144 645.6 S 2.179(he second v)-10 F 2.179(ersion uses re)-.15 F(gular)-.15 E(-e)-.2 E 2.179 (xpression pattern-matching host library routines together)-.15 F (with re)157.5 657.6 Q(gular)-.15 E(-e)-.2 E (xpression patterns that come entirely from initialization \214les.)-.15 E 10<8354>144 674.4 S(he third v)-10 E(ersion uses special patterns tha\ t come entirely from initialization \214les.)-.15 E 1.211 (The second and third v)108 691.2 R 1.211 (ersions are the ones of most interest here, because the)-.15 F 3.711 (ya)-.15 G(llo)-3.711 E 3.711(wt)-.25 G 1.212(he user to control)-3.711 F .433(what v)108 703.2 R .433(alues are considered acceptable.)-.25 F (Ho)5.432 E(we)-.25 E -.15(ve)-.25 G 1.232 -.4(r, c).15 H .432 (ommand-line options can also be speci\214ed in initializa-).4 F (tion \214les, no matter which pattern matching choice w)108 715.2 Q (as selected.)-.1 E -1.11(Ve)72 768 S(rsion 2.11.4)1.11 E(09 May 1998) 149.285 E(5)202.335 E EP %%Page: 6 6 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 342.18(BIBCLEAN\(1\) BIBCLEAN\(1\))72 48 R(When) 108 84 Q/F1 10/Times-Bold@0 SF(bibclean)3.131 E F0 .632(starts, it sear\ ches for initialization \214les, \214nding the \214rst one in the syste\ m e)3.131 F -.15(xe)-.15 G .632(cutable pro-).15 F .671 (gram search path \(on UNIX and IBM PC DOS,)108 96 R F1 -.74(PA)3.171 G (TH)-.21 E F0 3.171(\)a)C .67(nd the \214rst one in the)-3.171 F F1 (BIBINPUTS)3.17 E F0 .67(search path,)3.17 F .172 (and processes them in turn.)108 108 R .172(Then, when command-line ar) 5.172 F .172(guments are processed, an)-.18 F 2.672(ya)-.15 G .173 (dditional \214les speci-)-2.672 F .082(\214ed by)108 120 R F1 (\255init-\214le)2.582 E/F2 10/Times-Italic@0 SF(\214lename)1.91 E F0 .082(options are also processed.)2.582 F(Finally)5.082 E 2.582(,i)-.65 G .081(mmediately before each)-2.582 F F2(named)2.581 E F0(bibliograph) 2.581 E(y)-.05 E .14(\214le is processed, an attempt is made to process\ an initialization \214le with the same name, b)108 132 R .141 (ut with the e)-.2 F(xten-)-.15 E .644(sion changed to)108 144 R F2 (.ini)3.144 E F0 5.644(.T).36 G .644(he def)-5.644 F .644(ault e)-.1 F .643(xtension can be changed by a setting of the en)-.15 F .643 (vironment v)-.4 F(ariable)-.25 E F1(BIB-)3.143 E(CLEANEXT)108 156 Q F0 6.174(.T)C 1.174(his scheme permits system-wide, user)-6.174 F 1.175 (-wide, session-wide, and \214le-speci\214c initialization)-.2 F (\214les to be supported.)108 168 Q(When input is tak)108 184.8 Q (en from)-.1 E F2(stdin)2.5 E F0 2.5(,t).24 G (here is no \214le-speci\214c initialization.)-2.5 E -.15(Fo)108 201.6 S 3.335(rp).15 G .835(recise control, the)-3.335 F F1(\255no-r)3.334 E (ead-init-\214les)-.18 E F0 .834 (option suppresses all initialization \214les e)3.334 F .834 (xcept those e)-.15 F(xplicitly)-.15 E(named by)108 213.6 Q F1 (\255init-\214le)2.5 E F2(\214lename)1.91 E F0(options, either on the c\ ommand line, or in requested initialization \214les.)2.5 E(Recursi)108 230.4 Q .837 -.15(ve exe)-.25 H .537 (cution of initialization \214les with nested).15 F F1(\255init-\214le) 3.037 E F0 .538(options is permitted; if the recursion is cir)3.037 F(-) -.2 E(cular)108 242.4 Q(,)-.4 E F1(bibclean)2.9 E F0 .4 (will \214nally get a non-f)2.9 F .399 (atal initialization \214le open f)-.1 F .399 (ailure after opening too man)-.1 F 2.899<798c>-.15 G 2.899(les. This) -2.899 F 1.694(terminates further initialization \214le processing.)108 254.4 R 1.694 (As the recursion unwinds, the \214les are all closed, then)6.694 F -.15 (exe)108 266.4 S(cution proceeds normally).15 E(.)-.65 E .28(An initial\ ization \214le may contain empty lines, comments from percent to end of\ line \(just lik)108 283.2 R 2.78(eT)-.1 G(E)-4.447 2.4 M .28 (X\), option)-1.25 -2.4 N .92 (switches, and \214eld/pattern or \214eld/pattern/message assignments.) 108 295.2 R .92(Leading and trailing spaces are ignored.)5.92 F (This is best illustrated by a short e)108 307.2 Q(xample:)-.15 E/F3 10 /Courier@0 SF 6(%T)108 324 S (his is a small bibclean initialization file)-6 E (-init-file /u/math/bib/.bibcleanrc %% departmental patterns)108 348 Q (chapter = "\\"D\\"")108 372 Q(%% 23)102 E 12(pages =)108 396 R 78 ("\\"D--D\\"" %%)6 F(23--27)6 E 6(volume =)108 420 R ("\\"D \\\\an\\\\d D\\"")6 E(%% 11 and 12)42 E 18(year =)108 444 R(\\)6 E("\\"dddd, dddd, dddd\\"" \\)126 456 Q("Multiple years specified.")126 468 Q(%% 1989, 1990, 1991)36 E 12(-no-fix-names %%)108 492 R (do not modify author/editor lists)6 E F0 1.397 (Long logical lines can be split into multiple ph)108 508.8 R 1.396 (ysical lines by breaking at a backslash-ne)-.05 F 1.396 (wline pair; the)-.25 F(backslash-ne)108 520.8 Q .792 (wline pair is discarded.)-.25 F .792 (This processing happens while characters are being read, before an) 5.792 F(y)-.15 E(further interpretation of the input stream.)108 532.8 Q .063(Each logical line must contain a complete option \(and its v)108 549.6 R .063(alue, if an)-.25 F .063 (y\), or a complete \214eld/pattern pair)-.15 F 2.563(,o)-.4 G 2.563(ra) -2.563 G(\214eld/pattern/message triple.)108 561.6 Q 1.283(Comments are\ stripped during the parsing of the \214eld, pattern, and message v)108 578.4 R 3.784(alues. The)-.25 F 1.284(comment start)3.784 F(symbol is n\ ot recognized inside quoted strings, so it can be freely used in such s\ trings.)108 590.4 Q .484 (Comments on logical lines that were input as multiple ph)108 607.2 R .483(ysical lines via the backslash-ne)-.05 F .483(wline con)-.25 F -.15 (ve)-.4 G(ntion).15 E .355(must appear on the)108 619.2 R F2(last)2.855 E F0(ph)2.855 E .355(ysical line; otherwise, the remaining ph)-.05 F .356(ysical lines will become part of the com-)-.05 F(ment.)108 631.2 Q -.15(Pa)108 648 S .12(ttern strings must be enclosed in quotation marks\ ; within such strings, a backslash starts an escape mech-).15 F (anism that is commonly used in UNIX softw)108 660 Q 2.5(are. The)-.1 F (recognized escape sequences are:)2.5 E F1(\\a)144 676.8 Q F0 (alarm bell \(octal 007\))28.22 E F1(\\b)144 693.6 Q F0 (backspace \(octal 010\))27.66 E F1(\\f)144 710.4 Q F0 (formfeed \(octal 014\))29.89 E -1.11(Ve)72 768 S(rsion 2.11.4)1.11 E (09 May 1998)149.285 E(6)202.335 E EP %%Page: 7 7 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 342.18(BIBCLEAN\(1\) BIBCLEAN\(1\))72 48 R/F1 10 /Times-Bold@0 SF(\\n)144 84 Q F0(ne)27.66 E(wline \(octal 012\))-.25 E F1(\\r)144 100.8 Q F0(carriage return \(octal 015\))28.78 E F1(\\t)144 117.6 Q F0(horizontal tab \(octal 011\))29.89 E F1(\\v)144 134.4 Q F0 -.15(ve)28.22 G(rtical tab \(octal 013\)).15 E F1(\\ooo)144 151.2 Q F0 (character number octal)18.22 E/F2 10/Times-Italic@0 SF(ooo)2.5 E F0 (\(e.g)2.5 E F1(\\012)2.5 E F0(is linefeed\).)2.5 E (Up to 3 octal digits may be used.)5 E F1(\\0xhh)144 168 Q F0 1.343 (character number he)12.1 F(xadecimal)-.15 E F2(hh)3.843 E F0(\(e.g.,) 3.843 E F1(\\0x0a)3.843 E F0 1.343(is linefeed\).)3.843 F F2(xhh)6.343 E F0 1.343(may be in either letter)3.843 F 2.5(case. An)180 180 R 2.5(yn) -.15 G(umber of he)-2.5 E(xadecimal digits may be used.)-.15 E .347 (Backslash follo)108 196.8 R .347(wed by an)-.25 F 2.847(yo)-.15 G .347 (ther character produces just that character)-2.847 F 5.347(.T)-.55 G .347(hus, \\% gets a literal percent into)-5.347 F 2.78(as)108 208.8 S .28(tring \(pre)-2.78 F -.15(ve)-.25 G .281(nting its interpretation as\ a comment\), \\" produces a quotation mark, and \\\\ produces a single) .15 F(backslash.)108 220.8 Q .436(An ASCII NUL)108 237.6 R F2(\(\\0\)) 2.936 E F0 .435(in a string will terminate it; this is a feature of the\ C programming language in which)2.936 F F1(bibclean)108 249.6 Q F0 (is implemented.)2.5 E .519(Field/pattern pairs can be separated by arb\ itrary space, and optionally)108 266.4 R 3.019(,e)-.65 G .519 (ither an equals sign or colon func-)-3.019 F (tioning as an assignment operator)108 278.4 Q 5(.T)-.55 G (hus, the follo)-5 E(wing are equi)-.25 E -.25(va)-.25 G(lent:).25 E/F3 10/Courier@0 SF(pages="\\"D--D\\"")108 295.2 Q(pages:"\\"D--D\\"")108 307.2 Q(pages "\\"D--D\\"")108 319.2 Q(pages = "\\"D--D\\"")120 331.2 Q (pages : "\\"D--D\\"")120 343.2 Q 12(pages "\\"D--D\\"")108 355.2 R F0 .607(Each \214eld name can ha)108 372 R .907 -.15(ve a)-.2 H 3.107(na) .15 G .606(rbitrary number of patterns associated with it; ho)-3.107 F (we)-.25 E -.15(ve)-.25 G 1.406 -.4(r, t).15 H(he).4 E 3.106(ym)-.15 G .606(ust be speci-)-3.106 F (\214ed in separate \214eld/pattern assignments.)108 384 Q .444 (An empty pattern string causes pre)108 400.8 R .445 (viously-loaded patterns for that \214eld name to be for)-.25 F 2.945 (gotten. This)-.18 F(feature)2.945 E(permits an initialization \214le t\ o completely discard patterns from earlier initialization \214les.)108 412.8 Q -.15(Pa)108 429.6 S .025(tterns for v).15 F .025 (alue strings are represented in a tin)-.25 F 2.525(ys)-.15 G .025 (pecial-purpose language that is both con)-2.525 F -.15(ve)-.4 G .025 (nient and suit-).15 F 1.8(able for bibliograph)108 441.6 R 4.3(yv)-.05 G 1.8(alue-string syntax checking.)-4.55 F 1.801(While not as po)6.801 F 1.801(werful as the language of re)-.25 F(gular)-.15 E(-)-.2 E -.15(ex) 108 453.6 S .653(pression patterns, its parsing can be portably impleme\ nted in less than 3% of the code in a widely-used).15 F(re)108 465.6 Q (gular)-.15 E(-e)-.2 E(xpression parser \(the GNU)-.15 E F1 -.18(re)2.5 G(gexp).18 E F0(package\).)2.5 E (The patterns are represented by the follo)108 482.4 Q (wing special characters:)-.25 E F1()144 499.2 Q F0 (one or more spaces)8.76 E F1(a)144 516 Q F0 -.15(ex)38.49 G (actly one letter).15 E F1(A)144 532.8 Q F0(one or more letters)36.27 E F1(d)144 549.6 Q F0 -.15(ex)37.93 G(actly one digit).15 E F1(D)144 566.4 Q F0(one or more digits)36.27 E F1(r)144 583.2 Q F0 -.15(ex)39.05 G (actly one Roman numeral).15 E F1(R)144 600 Q F0 (one or more Roman numerals \(i.e. a Roman number\))36.27 E F1(w)144 616.8 Q F0 -.15(ex)36.27 G(actly one w).15 E (ord \(one or more letters and digits\))-.1 E F1(W)144 633.6 Q F0 (one or more space-separated w)33.49 E(ords, be)-.1 E (ginning and ending with a w)-.15 E(ord)-.1 E F1(.)144 650.4 Q F0 .723 (one `special' character)40.99 F 3.223(,o)-.4 G .723 (ne of the characters )-3.223 F 1.666(!#\(\)*+,-./:;?[]~)1.666 G 3.224(,as)-1.666 G .724(ubset of)-3.224 F (punctuation characters that are typically used in string v)187.49 662.4 Q(alues)-.25 E F1(:)144 679.2 Q F0(one or more `special' characters) 40.16 E F1(X)144 696 Q F0(one or more `special'-separated w)36.27 E (ords, be)-.1 E(ginning and ending with a w)-.15 E(ord)-.1 E F1(\\x)144 712.8 Q F0 -.15(ex)35.71 G .04(actly one x \(x is an).15 F 2.54(yc)-.15 G .04(haracter\), possibly with an escape sequence interpretation gi) -2.54 F -.15(ve)-.25 G(n).15 E(earlier)187.49 724.8 Q -1.11(Ve)72 768 S (rsion 2.11.4)1.11 E(09 May 1998)149.285 E(7)202.335 E EP %%Page: 8 8 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 342.18(BIBCLEAN\(1\) BIBCLEAN\(1\))72 48 R/F1 10 /Times-Bold@0 SF(x)144 84 Q F0 -.15(ex)38.49 G 5.257 (actly the character x \(x is an).15 F 5.258(ything b)-.15 F 5.258 (ut one of these pattern characters:)-.2 F 1.666(aAdDrRwW.:<)187.49 96 S -.834(space> \\ \))-1.666 F(The)108 112.8 Q F1(X)3.781 E F0 1.281 (pattern character is v)3.781 F 1.281(ery po)-.15 F 1.281(werful, b)-.25 F 1.28(ut generally inadvisable, since it will match almost an)-.2 F (ything)-.15 E(lik)108 124.8 Q .212(ely to be found in a B)-.1 F/F2 8 /Times-Roman@0 SF(IB)A F0(T)A(E)-1.667 2.4 M 2.712(Xv)-1.25 -2.4 O .213 (alue string.)-2.962 F .213(The reason for pro)5.213 F .213 (viding pattern matching on the v)-.15 F .213(alue strings)-.25 F (is to unco)108 136.8 Q -.15(ve)-.15 G 2.5(rp).15 G (ossible errors, not mask them.)-2.5 E .829(There is no pro)108 153.6 R .829(vision for specifying ranges or repetitions of characters, b)-.15 F .829(ut this can usually be done with)-.2 F .067(separate patterns.)108 165.6 R .067(It is a good idea to accompan)5.067 F 2.567(yt)-.15 G .067 (he pattern with a comment sho)-2.567 F .067 (wing the kind of thing it is)-.25 F -.15(ex)108 177.6 S .053 (pected to match.).15 F .053 (Here is a portion of an initialization \214le gi)5.053 F .052 (ving a fe)-.25 F 2.552(wo)-.25 G 2.552(ft)-2.552 G .052 (he patterns used to match)-2.552 F/F3 10/Times-Italic@0 SF(num-)2.552 E (ber)108 189.6 Q F0 -.25(va)2.5 G(lue strings:).25 E/F4 10/Courier@0 SF 6(number =)108 206.4 R 48("\\"D\\"" %%)42 F(23)6 E 6(number =)108 218.4 R("\\"A AD\\"")42 E(%% PN LPS5001)36 E 6(number =)108 230.4 R ("\\"A D\(D\)\\"")42 E(%% RJ 34\(49\))24 E 6(number =)108 242.4 R ("\\"A D\\"")42 E(%% XNSS 288811)42 E 6(number =)108 254.4 R ("\\"A D\\\\.D\\"")42 E(%% Version 3.20)18 E 6(number =)108 266.4 R 12 ("\\"A-A-D-D\\"" %%)42 F(UMIAC-TR-89-11)6 E 6(number =)108 278.4 R 24 ("\\"A-A-D\\"" %%)42 F(CS-TR-2189)6 E 6(number =)108 290.4 R ("\\"A-A-D\\\\.D\\"" %% CS-TR-21.7)42 E F0 -.15(Fo)108 307.2 S 2.546 (rab).15 G(ibliograph)-2.546 E 2.546(yt)-.05 G .046(hat contains only) -2.546 F F3(article)2.546 E F0 .046 (entries, this list should probably be reduced to just the \214rst pat-) 2.546 F .797(tern, so that an)108 319.2 R .796 (ything other than a digit string f)-.15 F .796 (ails the pattern-match test.)-.1 F .796(This is easily done by k)5.796 F(eeping)-.1 E(bibliograph)108 331.2 Q 1.126 (y-speci\214c patterns in a corresponding \214le with e)-.05 F(xtension) -.15 E F3(.ini)3.626 E F0 3.627(,s).36 G 1.127 (ince that \214le is read automati-)-3.627 F(cally)108 343.2 Q(.)-.65 E -1.1(Yo)108 360 S 2.675(us)1.1 G .175(hould be sure to use empty patter\ n strings in this pattern \214le to discard patterns from earlier initi\ aliza-)-2.675 F(tion \214les.)108 372 Q 1.32(The v)108 388.8 R 1.32(alu\ e strings passed to the pattern matcher contain surrounding quotes, so \ the patterns should also.)-.25 F(Ho)108 400.8 Q(we)-.25 E -.15(ve)-.25 G 1.501 -.4(r, y).15 H .701(ou could use a pattern speci\214cation lik).4 F 3.201(e")-.1 G .7(\\"D" to match an initial digit string follo)-3.201 F .7(wed by an)-.25 F(y-)-.15 E .887(thing else; the omission of the \ \214nal quotation mark \\" in the pattern allo)108 412.8 R .888 (ws the match to succeed without)-.25 F(checking that the ne)108 424.8 Q (xt character in the v)-.15 E(alue string is a quotation mark.)-.25 E 1.058(Because the v)108 441.6 R 1.058 (alue strings are intended to be processed by T)-.25 F(E)-1.667 2.4 M 1.058(X, the pattern matching ignores braces, and)-1.25 -2.4 N(T)108 453.6 Q(E)-1.667 2.4 M 3.258(Xc)-1.25 -2.4 O .758 (ontrol sequences, together with an)-3.258 F 3.258(ys)-.15 G .758 (pace follo)-3.258 F .758(wing those control sequences.)-.25 F .759 (Spaces around braces)5.759 F 4.462(are preserv)108 465.6 R 6.962 (ed. This)-.15 F(con)6.962 E -.15(ve)-.4 G 4.462(ntion allo).15 F 4.462 (ws the pattern fragment)-.25 F F3(A-AD-D)6.961 E F0 4.461 (to match the v)6.961 F 4.461(alue string)-.25 F F3(TN-K\\slash 27-70) 108 477.6 Q F0 2.5(,b).47 G(ecause the v)-2.5 E (alue is implicitly collapsed to)-.25 E F3(TN-K27-70)2.5 E F0 (during the matching operation.)2.5 E F1(bibclean)108 494.4 Q F0 1.611 -.55('s n)D .511(ormal action when a string v).55 F .512(alue f)-.25 F .512(ails to match an)-.1 F 3.012(yo)-.15 G 3.012(ft)-3.012 G .512 (he corresponding patterns is to issue a)-3.012 F F3(warning)108 506.4 Q F0 .776(message something lik)3.276 F 3.276(et)-.1 G(his:)-3.276 E F3 ("Une)3.276 E .776(xpected value in `)-.2 F .776(`year = "192"')-1.11 F (')-1.11 E F0 5.775(.I)C 3.275(nm)-5.775 G .775(ost cases, that is suf) -3.275 F<8c2d>-.25 E 1.07(cient to alert the user to a problem.)108 518.4 R 1.071(In some cases, ho)6.07 F(we)-.25 E -.15(ve)-.25 G 1.871 -.4(r, i).15 H 3.571(tm).4 G 1.071(ay be desirable to associate a dif) -3.571 F(ferent)-.25 E .944(message with a particular pattern.)108 530.4 R .943(This can be done by supplying a message string follo)5.943 F .943 (wing the pattern)-.25 F 3.593(string. F)108 542.4 R 1.093(ormat items) -.15 F F3(%%)3.593 E F0 1.093(\(single percent\),)3.593 F F3(%e)3.593 E F0 1.093(\(entry name\),)3.593 F F3(%f)3.593 E F0 1.093 (\(\214eld name\),)3.593 F F3(%k)3.593 E F0 1.093(\(citation k)3.593 F -.15(ey)-.1 G 1.094(\), and).15 F F3(%v)3.594 E F0(\(string v)108 554.4 Q(alue\) are a)-.25 E -.25(va)-.2 G(ilable to get current v).25 E (alues e)-.25 E(xpanded in the messages.)-.15 E(Here is an e)5 E (xample:)-.15 E F4 (chapter = "\\"D:D\\"" "Colon found in ``%f = %v''" %% 23:2)108 571.2 Q F0 2.002 -.8(To b)108 588 T 2.902(ec).8 G .402 (onsistent with other messages output by)-2.902 F F1(bibclean)2.902 E F0 2.902(,t)C .402(he message string should)-2.902 F F3(not)2.902 E F0 .401 (end with punctua-)2.902 F(tion.)108 600 Q(If you wish to mak)108 616.8 Q 2.5(et)-.1 G(he message an error)-2.5 E 2.5(,r)-.4 G (ather than just a w)-2.5 E(arning, be)-.1 E (gin it with a query \(?\), lik)-.15 E 2.5(et)-.1 G(his:)-2.5 E F4 (chapter = "\\"D:D\\"" "?Colon found in ``%f = %v''" %% 23:2)108 633.6 Q F0(The query will not be included in the output message.)108 650.4 Q .601(Escape sequences are supported in message strings, just as the)108 667.2 R 3.101(ya)-.15 G .601(re in pattern strings.)-3.101 F -1.1(Yo) 5.601 G 3.101(uc)1.1 G .602(an use this to)-3.101 F(adv)108 679.2 Q (antage for f)-.25 E(anc)-.1 E 2.5(yt)-.15 G (hings, such as terminal display mode control.)-2.5 E(If you re)5 E (write the pre)-.25 E(vious e)-.25 E(xample as)-.15 E F4 (chapter = "\\"D:D\\"" \\)108 696 Q ("?\\033[7mColon found in ``%f = %v''\\033[0m" %% 23:2)168 708 Q F0 2.008(the error message will appear in in)108 724.8 R -.15(ve)-.4 G 2.008(rse video on display screens that support ANSI terminal control) .15 F -1.11(Ve)72 768 S(rsion 2.11.4)1.11 E(09 May 1998)149.285 E(8) 202.335 E EP %%Page: 9 9 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 342.18(BIBCLEAN\(1\) BIBCLEAN\(1\))72 48 R 2.568 (sequences. Such)108 84 R .068 (practice is not normally recommended, since it may ha)2.568 F .368 -.15 (ve u)-.2 H .068(ndesirable ef).15 F .068(fects on some out-)-.25 F (put de)108 96 Q 2.5(vices. Ne)-.25 F -.15(ve)-.25 G (rtheless, you may \214nd it useful for restricted applications.).15 E -.15(Fo)108 112.8 S 2.72(rs).15 G .22(ome types of bibliograph)-2.72 F 2.72<798c>-.05 G(elds,)-2.72 E/F1 10/Times-Bold@0 SF(bibclean)2.72 E F0 .22(contains special-purpose code to supplement or replace the)2.72 F (pattern matching:)108 124.8 Q<83>144 141.6 Q/F2 10/Times-Italic@0 SF (CODEN)10 E F0(,)1.1 E F2(ISBN)3.812 E F0(and)3.812 E F2(ISSN)3.812 E F0 1.312(\214eld v)3.812 F 1.312(alues are handled this w)-.25 F 1.313 (ay because their v)-.1 F 1.313(alidation requires)-.25 F -.25(eva)157.5 153.6 S .14(luation of checksums that cannot be e).25 F .14 (xpressed by simple patterns; no patterns are e)-.15 F -.15(ve)-.25 G 2.64(nu).15 G(sed)-2.64 E(in these three cases.)157.5 165.6 Q 10<8357> 144 182.4 S(hen)-10 E F1(bibclean)3.034 E F0 .534 (is compiled with pattern-matching code support,)3.034 F F2 -.15(ch) 3.035 G(apter).15 E F0(,).73 E F2(number)3.035 E F0(,).73 E F2(pa)3.035 E -.1(ge)-.1 G(s).1 E F0 3.035(,a).27 G(nd)-3.035 E F2(volume)157.5 194.4 Q F0 -.25(va)2.5 G(lues are check).25 E (ed only by pattern matching.)-.1 E<83>144 211.2 Q F2(month)10 E F0 -.25 (va)2.585 G .084(lues are \214rst check).25 F .084(ed ag)-.1 F .084 (ainst the standard B)-.05 F/F3 8/Times-Roman@0 SF(IB)A F0(T)A(E)-1.667 2.4 M 2.584(Xm)-1.25 -2.4 O .084(onth abbre)-2.584 F .084 (viations, and only if no)-.25 F(match is found are patterns then used.) 157.5 223.2 Q<83>144 240 Q F2(year)10 E F0 -.25(va)3.138 G .638 (lues are \214rst check).25 F .638(ed ag)-.1 F .638 (ainst patterns, then if no match is found, the year numbers are)-.05 F (found and con)157.5 252 Q -.15(ve)-.4 G(rted to inte).15 E(ger v)-.15 E (alues for testing ag)-.25 E(ainst reasonable bounds.)-.05 E -1.11(Va) 108 268.8 S .767(lues for other \214elds are check)1.11 F .767 (ed only ag)-.1 F .767(ainst patterns.)-.05 F -1.1(Yo)5.766 G 3.266(uc) 1.1 G .766(an pro)-3.266 F .766(vide patterns for)-.15 F F2(any)3.266 E F0 .766(\214eld you lik)3.266 F(e,)-.1 E -2.15 -.25(ev e)108 280.8 T 3.343(no).25 G(nes)-3.343 E F1(bibclean)3.343 E F0 .843 (does not already kno)3.343 F 3.343(wa)-.25 G 3.343(bout. Ne)-3.343 F 3.343(wo)-.25 G .844(nes are simply added to an internal table that is) -3.343 F(searched for each string to be v)108 292.8 Q(alidated.)-.25 E .006(The special \214eld,)108 309.6 R F2 -.1(ke)2.506 G(y)-.2 E F0 2.506 (,r).32 G .006(epresents the bibliographic citation k)-2.506 F -.15(ey) -.1 G 5.006(.I)-.5 G 2.506(tc)-5.006 G .006(an be gi)-2.506 F -.15(ve) -.25 G 2.506(np).15 G .006(atterns, lik)-2.506 F 2.506(ea)-.1 G .305 -.15(ny o)-2.506 H .005(ther \214eld.).15 F 1.656(Here is an initializa\ tion \214le pattern assignment that will match an author name, a colon,\ an alphabetic)108 321.6 R(string, and a tw)108 333.6 Q(o-digit year:) -.1 E/F4 10/Courier@0 SF(key = "A:Add")108 350.4 Q(%% Knuth:TB86)126 E F0 .79(Notice that no quotation marks are included in the pattern, beca\ use the citation k)108 367.2 R -.15(ey)-.1 G 3.289(sa).15 G .789 (re not quoted.)-3.289 F -1.1(Yo)5.789 G(u)1.1 E .672 (can use such patterns to help enforce uniform naming con)108 379.2 R -.15(ve)-.4 G .673(ntions for citation k).15 F -.15(ey)-.1 G .673 (s, which is increasingly).15 F(important as your bibliograph)108 391.2 Q 2.5(yd)-.05 G(ata base gro)-2.5 E(ws.)-.25 E/F5 9/Times-Bold@0 SF (LEXICAL AN)72 408 Q(AL)-.18 E(YSIS)-.828 E F0(When)108 420 Q F1 (\255no-pr)2.69 E(ettyprint)-.18 E F0 .19(is speci\214ed,)2.69 F F1 (bibclean)2.69 E F0 .19(acts as a le)2.69 F .19 (xical analyzer instead of a prettyprinter)-.15 F 2.69(,p)-.4 G (roducing)-2.69 E(output in lines of the form)108 432 Q("") -.25 E .637(Each output line contains a single complete tok)108 465.6 R .637(en, identi\214ed by a small inte)-.1 F .638 (ger number for use by a com-)-.15 F(puter program, a tok)108 477.6 Q (en type name for human readers, and a string v)-.1 E(alue in quotes.) -.25 E .751(Special characters in the tok)108 494.4 R .751(en v)-.1 F .751 (alue string are represented with ANSI/ISO Standard C escape sequences,) -.25 F .09 (so all characters other than NUL are representable, and multi-line v) 108 506.4 R .09(alues can be represented in a single line.)-.25 F .037 (Here are the tok)108 523.2 R .037(en numbers and tok)-.1 F .037 (en type names that can appear in the output when)-.1 F F1(\255pr)2.536 E(ettyprint)-.18 E F0 .036(is speci-)2.536 F(\214ed:)108 535.2 Q 7.5(0U) 146.5 552 S(NKNO)-7.5 E(WN)-.35 E 7.5(1A)146.5 564 S(BBREV)-7.5 E 7.5 (2A)146.5 576 S(T)-8.61 E 7.5(3C)146.5 588 S(OMMA)-7.5 E 7.5(4C)146.5 600 S(OMMENT)-7.5 E 7.5(5E)146.5 612 S(NTR)-7.5 E(Y)-.65 E 7.5(6E)146.5 624 S -.1(QU)-7.5 G(ALS)-.3 E 7.5(7F)146.5 636 S(IELD)-7.5 E 7.5(8I) 146.5 648 S(NCLUDE)-7.5 E 7.5(9I)146.5 660 S(NLINE)-7.5 E 5(10 KEY)144 672 R 5(11 LBRA)144 684 R(CE)-.4 E 5(12 LITERAL)144 696 R 5(13 NEWLINE) 144 708 R 5(14 PREAMBLE)144 720 R -1.11(Ve)72 768 S(rsion 2.11.4)1.11 E (09 May 1998)149.285 E(9)202.335 E EP %%Page: 10 10 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 342.18(BIBCLEAN\(1\) BIBCLEAN\(1\))72 48 R 5 (15 RBRA)144 84 R(CE)-.4 E 5(16 SHARP)144 96 R 5(17 SP)144 108 R -.4(AC) -.92 G(E).4 E 5(18 STRING)144 120 R 5(19 V)144 132 R(ALUE)-1.35 E .526 (Programs that parse such output should also be prepared for lines be) 108 148.8 R .527(ginning with the w)-.15 F .527(arning pre\214x, %%,)-.1 F(or the error pre\214x, ??, and for ANSI/ISO Standard C line number di\ recti)108 160.8 Q -.15(ve)-.25 G 2.5(so).15 G 2.5(ft)-2.5 G(he form)-2.5 E 2.5(#l)144 172.8 S(ine 273 "te)-2.5 E(xbook1.bib")-.15 E(which record\ the line number and \214le name of the current input \214le.)108 184.8 Q .109(If a)108 201.6 R/F1 10/Times-Bold@0 SF(\255max-width)2.609 E/F2 10/Times-Italic@0 SF(nnn)2.608 E F0 .108(command-line option w)2.608 F .108(as speci\214ed, long output lines will be wrapped at a backslash-) -.1 F(ne)108 213.6 Q .453(wline pair)-.25 F 2.953(,a)-.4 G .453 (nd consequently)-2.953 F 2.953(,s)-.65 G(oftw)-2.953 E .453 (are that processes the le)-.1 F .453(xical tok)-.15 F .454 (en stream should be prepared to col-)-.1 F (lapse such wrapped lines back into single lines.)108 225.6 Q(As an e) 108 242.4 Q(xample of the use of)-.15 E F1(\255no-pr)2.5 E(ettyprint) -.18 E F0 2.5(,t)C(he UNIX command pipeline)-2.5 E F1 (bibclean \255no-pr)144 254.4 Q(ettyprint)-.18 E F2(mylib)2.5 E(.bib)-.4 E F0 2.5(|\\)2.5 G F1(awk)154 266.4 Q F0('$2 == "KEY" {print $3}' | \\) 2.5 E F1(sed)154 278.4 Q F0(-e ')2.5 E(s/"//g' | \\)-.55 E F1(sort)154 290.4 Q F0(will e)108 302.4 Q(xtract a sorted list of all citation k) -.15 E -.15(ey)-.1 G 2.5(si).15 G 2.5(nt)-2.5 G(he \214le)-2.5 E F2 (mylib)2.5 E(.bib)-.4 E F0(.).23 E 3.322(Ac)108 319.2 S .822 (ertain amount of processing will ha)-3.322 F 1.121 -.15(ve b)-.2 H .821 (een done on the tok).15 F 3.321(ens. In)-.1 F(particular)3.321 E 3.321 (,d)-.4 G .821(elimiters equi)-3.321 F -.25(va)-.25 G .821(lent to).25 F (braces will ha)108 331.2 Q .3 -.15(ve b)-.2 H (een replaced by braces, and braced strings will ha).15 E .3 -.15(ve b) -.2 H(ecome quoted strings.).15 E .143(The LITERAL tok)108 348 R .144 (en type is used for arbitrary te)-.1 F .144(xt that)-.15 F F1(bibclean) 2.644 E F0 .144(does not e)2.644 F .144(xamine further)-.15 F 2.644(,s) -.4 G .144(uch as the con-)-2.644 F(tents of a @Preamble{.)108 360 Q 1.666(..)1.666 G 2.5(}o)-1.666 G 2.5(ra@)-2.5 G -.834(Comment{. . .}.) -2.5 F 1.259(The UNKNO)108 376.8 R 1.259(WN tok)-.35 F 1.258 (en type should ne)-.1 F -.15(ve)-.25 G 3.758(ra).15 G 1.258 (ppear in the output stream.)-3.758 F 1.258 (It is used internally to initialize)6.258 F(tok)108 388.8 Q(en type v) -.1 E(ariables.)-.25 E/F3 9/Times-Bold@0 SF(SCRIBE BIBLIOGRAPHY FORMA)72 405.6 Q(T)-.855 E F1(bibclean)108 417.6 Q F0 2.41 -.55('s s)D 1.31 (upport for the S).55 F/F4 8/Times-Roman@0 SF(CRIBE)A F0(bibliograph) 3.81 E 3.811(yf)-.05 G 1.311 (ormat is based on the syntax description in the S)-3.811 F F4(CRIBE)A F0 1.237(Introductory User')108 429.6 R 3.737(sM)-.55 G 1.237 (anual, 3rd Edition, May 1980.)-3.737 F(S)6.236 E F4(CRIBE)A F0 -.1(wa) 3.736 G 3.736(so).1 G 1.236(riginally de)-3.736 F -.15(ve)-.25 G 1.236 (loped by Brian Reid at).15 F(Carne)108 441.6 Q(gie-Mellon Uni)-.15 E -.15(ve)-.25 G(rsity).15 E 2.5(,a)-.65 G(nd is no)-2.5 E 2.5(wm)-.25 G (ark)-2.5 E(eted by Unilogic, Ltd.)-.1 E .169(The B)108 458.4 R F4(IB)A F0(T)A(E)-1.667 2.4 M 2.669(Xb)-1.25 -2.4 O(ibliograph)-2.669 E 2.669 (yf)-.05 G .169(ormat w)-2.669 F .169(as strongly in\215uenced by S)-.1 F F4(CRIBE)A F0 2.669(,a)C .169(nd indeed, with care, it is possible to) -2.669 F 1.175(share bibliograph)108 470.4 R 3.675<798c>-.05 G 1.175 (les between the tw)-3.675 F 3.675(os)-.1 G 3.675(ystems. Ne)-3.675 F -.15(ve)-.25 G 1.175(rtheless, there are some dif).15 F 1.174 (ferences, so here is a)-.25 F(summary of features of the S)108 482.4 Q F4(CRIBE)A F0(bibliograph)2.5 E 2.5<798c>-.05 G(le format:)-2.5 E 12.5 (\(1\) Letter)108 499.2 R (case is not signi\214cant in \214eld names and entry names, b)2.5 E (ut case is preserv)-.2 E(ed in v)-.15 E(alue strings.)-.25 E 12.5 (\(2\) In)108 516 R(\214eld/v)3.35 E .85(alue pairs, the \214eld and v) -.25 F .85 (alue may be separated by one of three characters: =, /, or space.)-.25 F(Space may optionally surround these separators.)134.66 528 Q 12.5 (\(3\) V)108 544.8 R(alue delimiters are an)-1.11 E 2.5(yo)-.15 G 2.5 (ft)-2.5 G(hese se)-2.5 E -.15(ve)-.25 G 2.5(np).15 G(airs: { })-2.5 E 2.5([] \(\) <> '' "" ``)7.5 G 12.5(\(4\) V)108 561.6 R .664 (alue delimiters may not be nested, e)-1.11 F -.15(ve)-.25 G 3.164(nt) .15 G .664(hough with the \214rst four delimiter pairs, nested balanced) -3.164 F(delimiters w)134.66 573.6 Q(ould be unambiguous.)-.1 E 12.5 (\(5\) Delimiters)108 590.4 R .8(can be omitted around v)3.3 F .8 (alues that contain only letters, digits, sharp \(#\), ampersand \(&\),) -.25 F(period \(.\), and percent \(%\).)134.66 602.4 Q 12.5 (\(6\) Outside)108 619.2 R(of delimited v)2.5 E(alues, a literal at-sig\ n \(@\) is represented by doubled at-signs \(@@\).)-.25 E 12.5 (\(7\) Bibliograph)108 636 R 2.842(ye)-.05 G .342(ntries be)-2.842 F .341(gin with @name, as for B)-.15 F F4(IB)A F0(T)A(E)-1.667 2.4 M .341 (X, b)-1.25 -2.4 N .341(ut an)-.2 F 2.841(yo)-.15 G 2.841(ft)-2.841 G .341(he se)-2.841 F -.15(ve)-.25 G 2.841(nS).15 G F4(CRIBE)-2.841 E F0 -.25(va)2.841 G .341(lue delimiter).25 F .281 (pairs may be used to surround the v)134.66 648 R .282 (alues in \214eld/v)-.25 F .282(alue pairs.)-.25 F .282 (As in \(4\), nested delimiters are forbid-)5.282 F(den.)134.66 660 Q 12.5(\(8\) Arbitrary)108 676.8 R (space may separate entry names from the follo)2.5 E(wing delimiters.) -.25 E 12.5(\(9\) @Comment)108 693.6 R .717 (is a special command whose delimited v)3.217 F .716(alue is discarded.) -.25 F .716(As in \(4\), nested delimiters)5.716 F(are forbidden.)134.66 705.6 Q -1.11(Ve)72 768 S(rsion 2.11.4)1.11 E(09 May 1998)149.285 E(10) 197.335 E EP %%Page: 11 11 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 342.18(BIBCLEAN\(1\) BIBCLEAN\(1\))72 48 R 7.5 (\(10\) The)108 84 R(special form)2.5 E(@Be)134.66 100.8 Q(gin{comment}) -.15 E 1.666(...)137.16 112.8 S(@End{comment})134.66 124.8 Q .121 (permits encapsulating arbitrary te)134.66 141.6 R .122 (xt containing an)-.15 F 2.622(yc)-.15 G .122 (haracters or delimiters, other than `)-2.622 F(`@End{com-)-.74 E (ment}')134.66 153.6 Q 3.249('. An)-.74 F 3.249(yo)-.15 G 3.249(ft) -3.249 G .749(he se)-3.249 F -.15(ve)-.25 G 3.249(nd).15 G .749 (elimiter pairs may be used around the w)-3.249 F .748(ord `)-.1 F (`comment')-.74 E 3.248('f)-.74 G(ollo)-3.248 E .748(wing the)-.25 F -.74(``)134.66 165.6 S(@Be).74 E(gin')-.15 E 3.908('o)-.74 G 3.908(r`) -3.908 G(`@End')-4.648 E 1.408('; the delimiters in the tw)-.74 F 3.909 (oc)-.1 G 1.409(ases need not be the same, and consequently)-3.909 F(,) -.65 E -.74(``)134.66 177.6 S(@Be).74 E(gin{comment}')-.15 E('/`)-.74 E (`@End{comment}')-.74 E 2.5('p)-.74 G(airs may)-2.5 E/F1 10 /Times-Italic@0 SF(not)2.5 E F0(be nested.)2.5 E 7.5(\(11\) The)108 194.4 R F1 -.1(ke)2.5 G(y)-.2 E F0 (\214eld is required in each bibliograph)2.5 E 2.5(ye)-.05 G(ntry)-2.5 E (.)-.65 E 7.5(\(12\) A)108 211.2 R .072 (backslashed quote in a string will be assumed to be a T)2.572 F(E) -1.667 2.4 M 2.571(Xa)-1.25 -2.4 O .071(ccent, and braced appropriately) -2.571 F 5.071(.W)-.65 G(hile)-5.071 E .834 (such accents do not conform to S)134.66 223.2 R/F2 8/Times-Roman@0 SF (CRIBE)A F0 .834(syntax, S)3.334 F F2(CRIBE)A F0 .834 (-format bibliographies ha)B 1.134 -.15(ve b)-.2 H .834(een found that) .15 F(appear to be intended for T)134.66 235.2 Q(E)-1.667 2.4 M 2.5(Xp) -1.25 -2.4 O(rocessing.)-2.5 E 1.505(Because of this loose syntax,)108 252 R/F3 10/Times-Bold@0 SF(bibclean)4.004 E F0 2.604 -.55('s n)D 1.504 (ormal error detection heuristics are less ef).55 F(fecti)-.25 E -.15 (ve)-.25 G 4.004(,a).15 G 1.504(nd conse-)-4.004 F(quently)108 264 Q 2.5 (,S)-.65 G F2(CRIBE)-2.5 E F0(mode input is not the def)2.5 E (ault; it must be e)-.1 E(xplicitly requested.)-.15 E/F4 9/Times-Bold@0 SF(ENVIR)72 280.8 Q(ONMENT V)-.27 E(ARIABLES)-1.215 E F3(BIBCLEANEXT)108 292.8 Q F0(File e)6.65 E(xtension of bibliograph)-.15 E (y-speci\214c initialization \214les.)-.05 E(Def)5 E(ault:)-.1 E F1 (.ini)2.5 E F0(.).36 E F3(BIBCLEANINI)108 309.6 Q F0 .883(Name of)12.21 F F3(bibclean)3.383 E F0 .883(initialization \214les.)3.383 F(Def)5.883 E(ault:)-.1 E F1(.bibcleanr)3.383 E(c)-.37 E F0(\(UNIX\),)3.694 E F1 (bibclean.ini)3.384 E F0(\(non-)3.744 E(UNIX\).)187.44 321.6 Q F3 (BIBINPUTS)108 338.4 Q F0 .878(Search path for)25.54 F F3(bibclean)3.378 E F0 .878(and B)3.378 F F2(IB)A F0(T)A(E)-1.667 2.4 M 3.378(Xi)-1.25 -2.4 O .877(nput \214les.)-3.378 F .877 (On UNIX, this is a colon-separated)5.877 F 1.195 (list of directories that are searched in order from \214rst to last.) 187.44 350.4 R 1.196(It is not an error for a)6.196 F (speci\214ed directory to not e)187.44 362.4 Q(xist.)-.15 E .293(On oth\ er operating systems, the directory names should be separated by whate) 187.44 379.2 R -.15(ve)-.25 G 2.793(rc).15 G(har)-2.793 E(-)-.2 E 1.753 (acter is used in system search path speci\214cations, such as a semico\ lon on IBM PC)187.44 391.2 R(DOS.)187.44 403.2 Q F3 -.74(PA)108 420 S (TH)-.21 E F0 .16(On Atari T)53.35 F .16 (OS, IBM PC DOS, IBM PC OS/2, Microsoft NT)-.18 F 2.66(,a)-.74 G .16 (nd UNIX, search path for)-2.66 F .59(system e)187.44 432 R -.15(xe)-.15 G .591(cutable \214les.).15 F .591(The system-wide)5.591 F F3(bibclean) 3.091 E F0 .591(initialization \214le is searched for in)3.091 F (this path.)187.44 444 Q F3(SYS$SYSTEM)108 460.8 Q F0 .934(On V)14.98 F .934(AX VMS, search path for system e)-1.35 F -.15(xe)-.15 G .933 (cutable \214les and the system-wide).15 F F3(bibclean)3.433 E F0 (initialization \214le.)187.44 472.8 Q F4(FILES)72 489.6 Q F1(*.bib)108 501.6 Q F0(B)42.22 E F2(IB)A F0(T)A(E)-1.667 2.4 M 2.5(Xa)-1.25 -2.4 O (nd S)-2.5 E F2(CRIBE)A F0(bibliograph)2.5 E 2.5(yd)-.05 G (ata base \214les.)-2.5 E F1(*.ini)108 518.4 Q F0 (File-speci\214c initialization \214les.)44.44 E F1(.bibcleanr)108 535.2 Q(c)-.37 E F0(UNIX system-wide and user)17.6 E (-speci\214c initialization \214les.)-.2 E F1(bibclean.ini)108 552 Q F0 (Non-UNIX system-wide and user)15 E(-speci\214c initialization \214les.) -.2 E F4(SEE ALSO)72 568.8 Q F3(bibcheck)108 580.8 Q F0(\(1\),)A F3 (bibdup)6.47 E F0(\(1\),)A F3(bibextract)6.47 E F0(\(1\),)A F3(bibindex) 6.47 E F0(\(1\),)A F3(bibjoin)6.47 E F0(\(1\),)A F3(biblabel)6.47 E F0 (\(1\),)A F3(biblex)6.47 E F0(\(1\),)A F3(biblook)6.47 E F0(\(1\),)A F3 (biborder)108 592.8 Q F0(\(1\),)A F3(bibparse)2.607 E F0(\(1\),)A F3 (bibsort)2.607 E F0(\(1\),)A F3(bibtex)2.606 E F0(\(1\),)A F3(bib)2.606 E(unlex)-.2 E F0(\(1\),)A F3(cite\214nd)2.606 E F0(\(1\),)A F3(citesub) 2.606 E F0(\(1\),)A F3(citetags)2.606 E F0(\(1\),)A F3(latex)2.606 E F0 (\(1\),)A F3(scribe)108 604.8 Q F0(\(1\),)A F3(tex)2.5 E F0(\(1\).)A F4 -.45(AU)72 621.6 S(THOR).45 E F0(Nelson H. F)108 633.6 Q 2.5(.B)-.8 G (eebe)-2.5 E(Center for Scienti\214c Computing)108 645.6 Q(Uni)108 657.6 Q -.15(ve)-.25 G(rsity of Utah).15 E (Department of Mathematics, 322 INSCC)108 669.6 Q(155 S 1400 E RM 233) 108 681.6 Q(Salt Lak)108 693.6 Q 2.5(eC)-.1 G(ity)-2.5 E 2.5(,U)-.65 G 2.5(T8)-2.5 G(4112-0090)-2.5 E(USA)108 705.6 Q -.7(Te)108 717.6 S (l: +1 801 581 5254).7 E -.74(FA)108 729.6 S (X: +1 801 585 1640, +1 801 581 4148).74 E -1.11(Ve)72 768 S (rsion 2.11.4)1.11 E(09 May 1998)149.285 E(11)197.335 E EP %%Page: 12 12 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 342.18(BIBCLEAN\(1\) BIBCLEAN\(1\))72 48 R (Email: beebe@math.utah.edu, beebe@acm.or)108 84 Q(g, beebe@ieee.or)-.18 E 2.5(g\()-.18 G(Internet\))-2.5 E(URL: http://www)108 96 Q (.math.utah.edu/~beebe)-.65 E -1.11(Ve)72 768 S(rsion 2.11.4)1.11 E (09 May 1998)149.285 E(12)197.335 E EP %%Trailer end %%EOF bibclean-2.11.4.1.orig/README0000644000175200017520000006366606525232126014572 0ustar debiandebian%% /u/sy/beebe/tex/bibclean/2-11/README, Mon Oct 2 10:01:31 1995 %% Edit by Nelson H. F. Beebe ======================================================================== ========== Jump start ========== As with most GNUware, you can build, test, and install this program on most UNIX systems by these simple steps csh et amici: setenv CC ...your favorite C or C++ compiler... ./configure && make all check install sh et amici: CC=...your favorite C or C++ compiler... export CC ./configure && make all check install If you don't set the CC environment variable, then gcc (or cc, if gcc is not available) will be assumed. If you wish to undo a "make install", just do "make uninstall"; this will remove any files in system directories put there by "make install". See below for further details, and for instructions for non-UNIX systems. ============ Introduction ============ This directory contains bibclean, a BibTeX prettyprinter, portability verifier, and syntax checker. It can be used to find errors in .bib files, as well as to standardize their format for readability and editing convenience. It can also be used to convert Scribe-format bibliographies to BibTeX form. Binary executables for IBM PC DOS, DEC Alpha OpenVMS, DEC VAX VMS, and Intel x86 Linux may be included in the distribution. If you do not require either the IBM PC DOS or LINUX, or the DEC VMS (Alpha and VAX) versions, then you can save about 2.5MB of disk space by deleting the ibmpc and vms subdirectories. The default pattern matching in bibclean.c is selected by HAVE_PATTERNS; with it, no regular-expression library support is needed. Should you wish to compile with regular-expression support instead of the HAVE_PATTERNS code, and your system does not have compile()/step (HAVE_REGEXP), or re_comp()/re_exec() (HAVE_RECOMP), you may be able to use the regex-?-??.tar.Z distribution from the Free Software Foundation, available on prep.ai.mit.edu in /pub/gnu. In most cases, the HAVE_PATTERNS code is recommended, since it will give identical results across all machines. I was prompted to write it after discovering that there was considerable variety in the regular expression library codes that resulted in different matching on different machines, a most unsatisfactory situation. Please report all problems, suggestions, and comments to the author: Nelson H. F. Beebe Center for Scientific Computing University of Utah Department of Mathematics, 322 INSCC 155 S 1400 E RM 233 Salt Lake City, UT 84112-0090 USA Tel: +1 801 581 5254 FAX: +1 801 585 1640, +1 801 581 4148 Email: beebe@math.utah.edu, beebe@acm.org, beebe@ieee.org (Internet) WWW URL: http://www.math.utah.edu/~beebe/ ============ Installation ============ Starting with version 2.10.1, bibclean has been adapted to use the GNU autoconf automatic configuration system for UNIX installations. GNU autoconf is run at the author's site to produce the configure script from configure.in. The configure script is run at each installer's UNIX site to produce Makefile from Makefile.in, and config.h from config.hin. The configure script is a large (1800+ lines) Bourne shell program that investigates various aspects of the local C implementation, and records its conclusions in config.h. Interestingly, its probes uncovered a bug in one compiler: lcc 3.4b on Sun Solaris 2.x has an incorrect definition of toupper() in its ctype.h! autoconf, at least at the current 2.4 version, is not as C++-aware as it should be. The Makefile must carry out minor edits of the configure script to get it to even work with C++ compilers. The small test programs run by configure to determine the existence of assorted Standard C library functions all lead to incorrect conclusions for config.h, because they intentionally contain function prototypes with different argument types. Since C++ functions are compiled into external names that encode the function and argument types, along with the function name, these prototypes produce references to non-existent functions, causing program linking to fail. Fortunately, I've been able to fix this problem too with additional automatic edits, all carried out by "make configure". Should you do a "make maintainer-clean" [NOT recommended, except at the author's site], the configure script will be deleted, and you will need recent versions of both GNU m4 and autoconf correctly installed to reconstruct things, which can be done this way: autoconf # Regenerate unedited configure ./configure # Regenerate config.h and Makefile rm configure # delete configure make configure # Regenerate edited configure For convenience and safety, the distribution includes a subdirectory named save that contains read-only copies of the files Makefile, config.h, and configure created by autoconf and "make configure". This will allow recovery from a lost or damaged configure file. Suitable hand-crafted config.h files are provided for non-UNIX systems, and in the unlikely event of a failure of the configure script on a UNIX system, config.h can be manually produced from a copy of config.hin with a few minutes' editing work. If you do this, remember to save a copy of your config.h under a different name, because running configure will destroy it. If you have GNU autoconf installed (the installation is very simple and source code is available from prep.ai.mit.edu:/pub/gnu/autoconf-x.y.tar.gz), you might try augmenting config.hin instead, then run autoconf and configure. Thus, on UNIX, installation normally consists of just two steps (assuming a csh-compatible shell): setenv CC ...your favorite C or C++ compiler... ./configure && make all check install If you like, add OPT='your favorite optimization flags' to the make command; by default, only -g (debug) is assumed. If your compiler won't accept -g with other optimization levels, then set CFLAGS instead of OPT on the command line; be sure NOT to override any non-optimizing flags in the CFLAGS set in the Makefile. The GNU standard installation directories /usr/local/bin for binaries, and /usr/local/man/man1 for manual pages are assumed. The prefix /usr/local can be overridden by providing an alternate definition on the command line: make prefix=/some/other/path install After installation, you can do make distclean to restore the directories to their distribution state. You should also do this between builds for different architectures from the same source tree; neglecting to do to will almost certainly lead to failure, because the config.cache file created by configure will lead to an incorrect config.h for the next build. ============ UNIX Systems ============ The code can be compiled with either C (K&R or ISO/ANSI Standard C) or C++ compilers. With some C++ compilers, it may be necessary to supply additional switches for force the compiler to stay in C++ mode, rather than reverting to C mode (e.g. on DEC Alpha OSF/1, you must do setenv CC "cxx -x cxx"). On UNIX systems, the only changes that you are likely to need in the Makefile are the settings of CC and CFLAGS, and possibly, DEFINES, and if you wish to do "make install", the settings of bindir, MANDIR, and MANEXT. If you are installing bibclean on a new system, you should definitely run "make check" before installing it on your system. For the target test-bibtex-2, latex is needed. For test-bibtex-2 and test-scribe-1, bibtex is needed. Sample output of "make check" from a UNIX system is given below. The code has been tested under more than 55 different C and C++ compilers, and is in regular use to maintain the TeX User Group bibliography collection stored on ftp.math.utah.edu:/pub/tex/bib, as well as several other local bibliographies. These files total more than 1.08M lines and 62K bibliography entries. Some of these bibliographies are mirrored to the Comprehensive TeX Archive Network (CTAN) hosts. Do "finger ctan@pip.shsu.edu" to find a CTAN site on the Internet near you. bibclean is also used for the BibNet Project, which collects bibliographies in numerical analysis. The master collection is available on ftp.math.utah.edu:/pub/bibnet, and is mirrored from there to netlib servers at AT&T and Oak Ridge National Laboratory. If you port bibclean to a new system, please select maximal error and warning messages in your compiler, to better uncover problems. If you find massive numbers of errors complaining about function and argument type mismatches, it is likely that this can be remedied by suitable modifications of config.h. As C implementations move towards conformance with the December 1989 ISO/ANSI C Language Standard, the C language is a moving target that must be tracked by config.h, which is why that file is normally automatically generated on UNIX systems by the configure script. With C compilers, you can safely ignore complaints about implicit declaration of library functions; they are caused by deficiencies in the vendor-provided header files. If you have a C++ compiler, please try that as well. This code has been successfully compiled under at least 19 C++ compilers, and the stricter type checking has uncovered problems that slipped past other compilers. These programs have been successfully built with C and C++ compilers and tested on these systems for the 2.10.1 release: DECstation 5000 ULTRIX 4.2 cc, gcc, g++, lcc DEC Alpha OSF/1 3.0, 3.2c cc, c89, cxx, gcc, g++ HP 9000/375 BSD 4.3 cc, CC HP 9000/735 HP-UX 9.0 cc, c89, CC, gcc, g++ IBM RS/6000 AIX 3.2 cc, c89, xlC, gcc, g++ Intel 486 Linux 1.3.15 gcc, g++ MIPS RC6280 RISCos 2.1.1AC cc NeXT 68040 Mach 3.0 cc, cc -ObjC, gcc, g++ SGI 4D/210 IRIX 4.0.5c cc, gcc, lcc SGI Indigo/2 IRIX 5.3 cc, CC, gcc, g++, lcc SGI Power Challenge IRIX 6.0.1 cc, CC Sun SPARCstation Solaris 2.3,2.4 cc, CC, gcc, g++, lcc Sun SPARCstation SunOS 4.1.3 acc, cc, CC, gcc Further details are given below. Where builds have failed, it is usually because of conflicts between system header files. The author uses the build-all.sh script for these tests; it tries builds with every known compiler on the development systems. If your UNIX system has other compilers that can be tested, please send their full path names to the author. ========== IBM PC DOS ========== The ibmpc/dos/README file contains details of the builds and tests of bibclean under 8 IBM PC DOS C and C++ compilers, and instructions for building and testing bibclean with other compilers. Since bibclean uses no floating-point arithmetic, and PC DOS has no shared libraries, I expect that the executables will run on any version of DOS greater than 4.0. They may also run on earlier versions. At the time of writing, MS-DOS 6.22 is current, and the bibclean executables work fine on it. ================= DEC Alpha OpenVMS ================= The vms/alpha subdirectory contains these files for DEC Alpha OpenVMS: bibclean.exe bibclean executable program config.h hand-coded configuration file recomp.com do @recomp foo to recompile foo.c vmsclean.com do @vmsclean to cleanup after a build vmsmake.com do @vmsmake to build bibclean vmstest.com do @vmstest to test bibclean You will have to change one line in vmstest.com to define the disk location of bibclean.exe in the foreign command symbol for bibclean. Unlike the UNIX "make check", execution of vmstest.com does not require that latex or bibtex be installed on your system. [I didn't have either on the Alpha OpenVMS system that I built bibclean on.] =========== DEC VAX VMS =========== The vms/vax/README file contains details of the building and testing of bibclean on VAX VMS 6.1 Unlike the UNIX "make check", execution of vmstest.com does not require that latex or bibtex be installed on your system. [I didn't have either on the VAX VMS system that I built bibclean on.] On versions of VMS before 6.1, you may find differences in the vmstest output between testbib1.bok (correct Sun) and testbib1.bib (VAX VMS); characters with octal values 211--215 and 240 disappear from the VAX VMS output. The reason is that on VAX VMS 5.4 (and likely other versions of VAX VMS) isspace() from classifies those characters as spaces. This problem does NOT exist on DEC Alpha OpenVMS 1.5, or in VMS 6.1. As long as your .bib files do not use those six characters, execution should be correct; for portability, .bib files should restrict themselves to ASCII/ISO-8859 characters in the range 32--127, plus newline and tab. =================================== Sample "make check" Output for UNIX =================================== Here is a log of "make check" on Sun Solaris 2.5 using the native C++ compiler, CC: CC -c -I. -I. -DHAVE_CONFIG_H -g romtol.c /bin/rm -f match.O if [ -f match.o ] ; then /bin/mv match.o match.O ; fi /bin/rm -f match.o CC -I. -I. -DHAVE_CONFIG_H -g -DTEST -o match \ match.c romtol.o /bin/rm -f match.o if [ -f match.O ] ; then /bin/mv match.O match.o ; fi ===================== begin match test ======================= ./match match.lst There should be no differences found: diff match.lok match.lst ====================== end match test ======================== /bin/rm -f romtol.O if [ -f romtol.o ] ; then /bin/mv romtol.o romtol.O ; fi /bin/rm -f romtol.o CC -I. -I. -DHAVE_CONFIG_H -g -DTEST -o romtol romtol.c /bin/rm -f romtol.o if [ -f romtol.O ] ; then /bin/mv romtol.O romtol.o ; fi ===================== begin romtol test ====================== ./romtol romtol.lst There should be no differences found: diff romtol.lok romtol.lst ====================== end romtol test ======================= CC -c -I. -I. -DHAVE_CONFIG_H -g bibclean.c CC -c -I. -I. -DHAVE_CONFIG_H -g chek.c CC -c -I. -I. -DHAVE_CONFIG_H -g do.c CC -c -I. -I. -DHAVE_CONFIG_H -g fix.c CC -c -I. -I. -DHAVE_CONFIG_H -g fndfil.c CC -c -I. -I. -DHAVE_CONFIG_H -g isbn.c CC -c -I. -I. -DHAVE_CONFIG_H -g keybrd.c CC -c -I. -I. -DHAVE_CONFIG_H -g match.c CC -I. -I. -g -c -DHOST=\"`hostname`\" -DUSER=\"beebe\" option.c CC -c -I. -I. -DHAVE_CONFIG_H -g strist.c CC -c -I. -I. -DHAVE_CONFIG_H -g strtol.c CC -o bibclean -g bibclean.o chek.o do.o fix.o fndfil.o isbn.o keybrd.o match.o option.o romtol.o strist.o strtol.o ild: (Performing full relink) too many files changed ==================== begin BibTeX test 1 ===================== ./bibclean -init-file bibclean.ini testbib1.org >testbib1.bib 2>testbib1.err There should be no differences found: diff testbib1.bok testbib1.bib There should be no differences found: diff testbib1.eok testbib1.err ===================== end BibTeX test 1 ====================== ==================== begin BibTeX test 2 ===================== ./bibclean -init-file bibclean.ini -no-check-values testbib2.org >testbib2.bib 2>testbib2.err There should be no differences found: diff testbib2.bok testbib2.bib There should be no differences found: diff testbib2.eok testbib2.err latex testbib2.ltx >/dev/null Expect 6 BibTeX warnings: bibtex testbib2 Warning--empty year in Bennett Warning--empty year in Cejchan Warning--there's a number but no volume in Dubowsky:75 Warning--empty institution in Diver:88a Warning--empty booktitle in Diver:88 Warning--empty year in Diver (There were 6 warnings) latex testbib2.ltx >/dev/null latex testbib2.ltx This is TeX, Version 3.1415 (C version 6.1) (testbib2.ltx LaTeX Version 2.09 <14 January 1991> (/usr/local/lib/tex/latex/article.sty Document Style `article' <16 Mar 88>. (/usr/local/lib/tex/latex/art10.sty)) (testbib2.aux) (testbib2.bbl [1] [2] [3] Underfull \hbox (badness 1024) in paragraph at lines 261--264 [] []\tenrm L. M. Berkovich, V. P. Gerdt, Z. T. Kos-tova, and M. L. [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16]) [17] (testbib2.aux) ) (see the transcript file for additional information) Output written on testbib2.dvi (17 pages, 49032 bytes). Transcript written on testbib2.log. ===================== end BibTeX test 2 ====================== ==================== begin BibTeX test 3 ===================== ./bibclean -init-file bibclean.ini -fix-font-change testbib3.org >testbib3.bib 2>testbib3.err There should be no differences found: There should be no differences found: diff testbib3.eok testbib3.err ===================== end BibTeX test 3 ====================== ==================== begin BibTeX test 4 ===================== ./bibclean -init-file bibclean.ini -fix-font-change testbib4.org >testbib4.bib 2>testbib4.err There should be no differences found: There should be no differences found: diff testbib4.eok testbib4.err ===================== end BibTeX test 4 ====================== ==================== begin BibTeX test 5 ===================== ./bibclean -init-file bibclean.ini -German-style testbib5.org >testbib5.bib 2>testbib5.err There should be no differences found: There should be no differences found: diff testbib5.eok testbib5.err ===================== end BibTeX test 5 ====================== ==================== begin BibTeX test 6 ===================== ./bibclean -init-file bibclean.ini testisxn.org >testisxn.bib 2>testisxn.err There should be no differences found: diff testisxn.bok testisxn.bib There should be no differences found: diff testisxn.eok testisxn.err ===================== end BibTeX test 6 ====================== ==================== begin BibTeX test 7 ===================== ./bibclean -init-file bibclean.ini testcodn.org >testcodn.bib 2>testcodn.err There should be no differences found: diff testcodn.bok testcodn.bib There should be no differences found: diff testcodn.eok testcodn.err ===================== end BibTeX test 7 ====================== ==================== begin Scribe test 1 ===================== ---------------------------------------------------- ./bibclean -init-file bibclean.ini -scribe -no-check testscr1.org >testscr1.bib There should be no differences found: diff testscr1.bok testscr1.bib There should be no differences found: diff testscr1.eok testscr1.err Expect 5 BibTeX warnings bibtex testscr1 Warning--empty publisher in hanson-67 Warning--can't use both volume and number fields in kendeigh-52 Warning--empty author in singer-portion-chapter Warning--empty author in singer-portion-volume Warning--can't use both author and editor fields in wright-63 (There were 5 warnings) ---------------------------------------------------- ./bibclean -init-file bibclean.ini -scribe -no-check testscr2.org >testscr2.bib There should be no differences found: diff testscr2.bok testscr2.bib There should be no differences found: diff testscr2.eok testscr2.err There should be no BibTeX warnings: bibtex testscr2 ===================== end Scribe test 1 ====================== ==================== begin Scribe test 2 ===================== ./bibclean -init-file bibclean.ini -scribe -file -no-check testscr2.org \ >testscr2.bib 2>testscr2.err There should be no differences found: diff testscr2.bok testscr2.bib There should be no differences found: diff testscr2.eok testscr2.err ./bibclean -init-file bibclean.ini -scribe -file -no-check -no-par testscr2.org \ >testscr2.bi2 2>testscr2.er2 make: [test-scribe-2] Error 1 (ignored) There should be no differences found: diff testscr2.bo2 testscr2.bi2 There should be no differences found: diff testscr2.eo2 testscr2.er2 ===================== end Scribe test 2 ====================== ==================== begin Scribe test 3 ===================== ./bibclean -init-file bibclean.ini -scribe -no-check testscr3.org >testscr3.bib 2>testscr3.err There should be no differences found: diff testscr3.bok testscr3.bib There should be no differences found: diff testscr3.eok testscr3.err ===================== end Scribe test 3 ====================== ===================================== Details of UNIX installation attempts ===================================== Clean builds and validations with "setenv CC xxx && ./configure && make && make check" have been achieved on these systems: DEC Alpha OSF/1 3.0 /bin/cc /usr/ccs/bin/c89 /usr/ccs/bin/cc /usr/local/bin/g++ /usr/local/bin/gcc /usr/ucb/cc For /bin/cxx, compiler switches to c89 for .c files, and then gets an error which arises because /usr/include/sys/signal.h:468: error: Missing ")". stack_t is not defined by types.h except in Standard C or C++ mode. Recent versions of cxx have switch "-x cxx" to force use of C++ compilation for .c files, but older ones do not. On one such old system, I made an experiment with changing extensions from .c to .cxx and updating the Makefile accordingly. The build failed with: ``Fatal: An attempt to allocate memory failed.'' during compilation of bibclean.cxx, and with conflicting declarations of swab() from /usr/include/unistd.h and /usr/include/cxx/string.h during compilation of fndfil.cxx. These are both vendor problems that may be fixed in newer releases of the C++ compiler. DEC Alpha OSF/1 3.2C (Digital UNIX) /usr/ucb/cxx The problems with cxx experienced on OSF/1 3.0 have all disappeared, and I regularly use "cxx -x cxx" as my C/C++ compiler of choice on this system. [The DEC 2100-5/250 on which the compiler is installed has 3 CPUs and 2GB of RAM, and each CPU does 250Mflops in benchmarks, so it is a terrific development system!] DECstation ULTRIX 4.3 /bin/cc /usr/local/bin/g++ /usr/local/bin/gcc Got many "warning: missing prototype" messages for functions in system header files (because they are still K&R style) with: /usr/local/bin/lcc -A -A but build completed and validated. HP 9000/735 HP-UX 9.0.3 /bin/cc /bin/c89 /usr/bin/CC /usr/local/bin/g++ /usr/local/bin/gcc For /bin/cc, the compiler warns cc: "bibclean.c", line 3723: warning 30: Character constant contains undefined escape sequence. cc: "bibclean.c", line 3730: warning 30: Character constant contains undefined escape sequence. but the escape sequence ('\a') IS correctly translated. HP 9000/735 HP-UX 10.0.1 /bin/cc /bin/c89 /usr/bin/CC /usr/local/bin/g++ /usr/local/bin/gcc The warnings from /bin/cc no longer appear. IBM RS/6000 AIX 3.2.5 /bin/cc /bin/xlC /usr/bin/c89 /usr/local/bin/g++ /usr/local/bin/gcc IBM RS/6000 AIX 4.1 /bin/c89 /bin/xlC /usr/bin/c89 Intel 486 Linux 1.3.15 and 1.3.97 (POSIX) /usr/bin/g++ /usr/bin/gcc MIPS RC 6280 RISCos 2.1.1AC /bin/cc NeXT Turbostation Mach 3.0 Compilation with any compiler produces failing links with error: /bin/ld: multiple definitions of symbol _strtol The configure.in script attempts to deal with this by AC_REPLACE_FUNCS(strtol), but that results in the created Makefile having LIBOBJS=strtol. Building with make LIBOBJS= provides a temporary workaround. /usr/local/bin/gcc /bin/cc /usr/local/bin/g++ Many compilation "warning: missing prototype", plus bibclean.c:2774: undeclared identifier `__ctype' bibclean.c:3158: type error: pointer expected ... for /usr/local/bin/lcc -A -A lcc on this system is an old version (1.9); the current lcc elsewhere is 3.4b, but unfortunately, lcc 3.x dropped support for the Motorola 68xxx code generator. I'm therefore writing off lcc on the NeXT as not viable for software development. NeXT Turbostation Mach 3.1 /bin/cc /usr/local/bin/g++ /usr/local/bin/gcc Silicon Graphics Indigo IRIX 4.0.5F /usr/bin/cc /usr/local/bin/gcc /usr/local/bin/lcc -A -A Compilation fails with /usr/local/bin/g++ because of conflicts between system header files and g++ built-in library function declarations. Silicon Graphics Indigo-2 IRIX 5.3 /bin/cc /usr/local/bin/g++ /usr/local/bin/gcc /usr/local/bin/lcc -A -A Silicon Graphics Power Challenge IRIX 6.0.1 /bin/CC /bin/cc For /usr/local/bin/g++ and /usr/local/bin/gcc (2.7.0) get assembler errors from generated code. Sun SPARC 4/380 Sun SunOS 4.1.3 /bin/cc /usr/lang/acc /usr/lang/CC /usr/local/bin/gcc /usr/ucb/cc Linking fails with /usr/local/bin/g++ because of multiply defined symbols. These arise because g++ generates inline C-style interfaces to library functions like strchr(), but on this system, the library also contains C-style functions with the same name, so linking produces multiple definitions, and failure. Curiously, g++ 2.7.0 on other systems, including Sun Solaris 2.x, does not generate these interface functions, and so does not cause problems there. Compilation fails with /usr/local/bin/lcc -A -A because of a conflict in the definition of size_t between /usr/include/sys/stdtypes.h and /usr/local/include/lcc-3.4b/sparc-sun/stdlib.h. Sun SPARC 20 Sun Solaris 2.3 /opt/SUNWspro/bin/cc /opt/SUNWspro/bin/CC /usr/local/bin/gcc /usr/ucb/cc Linking failed for /usr/local/bin/g++ with MANY multiply-defined symbols (e.g. memchr in bibclean and fndfil) No problem on Solaris 2.4 with g++! The reason that configure says checking for strcspn... (cached) no checking for strdup... (cached) no checking for strspn... (cached) no checking for strstr... (cached) no checking for strtod... (cached) no checking for strtol... (cached) no is that it generates a test program with char $ac_func(); as the prototype. With C++, that is a separate function that cannot be found in the library. That is also why LIBOBJS is being set incorrectly. *** Need to check out g++ and lcc on this system *** Build failed for /usr/local/bin/lcc -A -A with message configure: error: can not run test program while cross compiling This happens because configure uses -g, which blows compilation because of unknown opcode ".stabd" errors in assembler. Can be fixed by manually changing configure line test "${CFLAGS+set}" = set || CFLAGS="-g" to test "${CFLAGS+set}" = set || CFLAGS="" There is another problem: STDC_HEADERS is not defined, because a test program created by configure detects an error in toupper(). This was traced to a bug in lcc's ctype.h, and has been reported to the lcc-bugs list. A manual patch to config.h solves the problem. ===============================[The End]=============================== bibclean-2.11.4.1.orig/do.c0000644000175200017520000022127006142464444014450 0ustar debiandebian#include #include "xctype.h" #include "xstdlib.h" #include "xstring.h" #include "xunistd.h" RCSID("$Id: do.c,v 1.6 1996/05/03 20:13:38 beebe Exp beebe $") #include "ch.h" #include "delete.h" #include "keybrd.h" #include "pattern.h" #include "token.h" #include "toklst.h" #include "yesorno.h" #include "match.h" /* must come AFTER yesorno.h */ #define APPEND_CHAR(s,n,c) (s[n] = (char)c, s[n+1] = (char)'\0') /* append c and NUL to s[] */ #if !defined(BIBCLEAN_SUFFIX) #define BIBCLEAN_EXT "BIBCLEANEXT" /* environment variable */ #endif #define EMPTY_STRING(s) (s[0] = (char)'\0', s) /* for return (EMPTY_STRING(foo))*/ #define GETDEFAULT(envname,default) \ ((getenv(envname) != (char *)NULL) ? getenv(envname) : default) #if !defined(INITFILE_EXT) #define INITFILE_EXT ".ini" /* file extension for initialization files */ #endif #define isfieldvalueseparator(c) (((c) == '=') || ((c) == ':')) #define KEEP_PREAMBLE_SPACES() ((in_preamble == YES) && \ (keep_preamble_spaces == YES)) #define KEEP_STRING_SPACES() ((in_string == YES) && \ (keep_string_spaces == YES)) #if defined(MAX) #undef MAX #endif #define MAX(a,b) (((a) > (b)) ? (a) : (b)) #if !defined(MAX_LINE) #define MAX_LINE 10240 /* maximum line length in initialization file */ #endif /* !defined(MAX_LINE) */ #define NOOP /* dummy statement */ #if OS_PCDOS #define OPEN_MODE_R "rb" /* bibliography files are read in binary mode */ /* so that we can handle Ctl-Z properly */ #else #define OPEN_MODE_R "r" #endif #define SKIP_SPACE(p) while (isspace((unsigned char)*p)) ++p #define TABLE_CHUNKS 25 /* how many table entries to allocate at once */ #define TOLOWER(c) (isupper(((unsigned char)c)) ? \ tolower(((unsigned char)c)) : (((unsigned char)c))) typedef struct s_name_pair { const char *old_name; const char *new_name; } NAME_PAIR; typedef struct s_option_function_entry { const char *name; /* option name */ size_t min_match; /* minimum length string match */ void (*function)(VOID); /* function to call when option matched */ } OPTION_FUNCTION_ENTRY; typedef struct s_position { const char *filename; long byte_position; long last_column_position; long column_position; long line_number; } POSITION; typedef struct s_pattern_table { MATCH_PATTERN *patterns; int current_size; int maximum_size; } PATTERN_TABLE; typedef struct s_pattern_names { const char *name; PATTERN_TABLE *table; } PATTERN_NAMES; typedef struct s_io_pair { POSITION input; POSITION output; } IO_PAIR; NAME_PAIR month_pair[] = { {"January", "jan"}, {"February", "feb"}, {"March", "mar"}, {"April", "apr"}, {"May", "may"}, {"June", "jun"}, {"July", "jul"}, {"August", "aug"}, {"September", "sep"}, {"October", "oct"}, {"November", "nov"}, {"December", "dec"}, {"Jan.", "jan"}, {"Feb.", "feb"}, {"Mar.", "mar"}, {"Apr.", "apr"}, {"Jun.", "jun"}, {"Jul.", "jul"}, {"Aug.", "aug"}, {"Sep.", "sep"}, {"Sept.", "sep"}, {"Oct.", "oct"}, {"Nov.", "nov"}, {"Dec.", "dec"}, {"Jan", "jan"}, {"Feb", "feb"}, {"Mar", "mar"}, {"Apr", "apr"}, {"Jun", "jun"}, {"Jul", "jul"}, {"Aug", "aug"}, {"Sep", "sep"}, {"Sept", "sep"}, {"Oct", "oct"}, {"Nov", "nov"}, {"Dec", "dec"}, {(const char*)NULL, (const char*)NULL}, }; extern YESorNO align_equals; /* NO: left-adjust equals */ extern int at_level; /* @ nesting level */ extern int brace_level; /* curly brace nesting level */ extern YESorNO check_values; /* NO: suppress value checks */ extern int close_char; /* BibTeX entry closing; may */ /* be right paren or brace */ extern char current_entry_name[]; /* entry name */ extern char current_field[]; /* field name */ extern char current_key[]; /* string value */ extern char current_value[]; /* string value */ extern YESorNO delete_empty_values; /* YES: delete empty values */ extern YESorNO discard_next_comma; /* YES: deleting field/value */ extern YESorNO eofile; /* set to YES at end-of-file */ extern int field_indentation; extern FILE *fpin; /* input file pointer */ extern YESorNO in_preamble; /* YES: in @Preamble{...} */ extern YESorNO in_string; /* YES: in @String{...} */ extern YESorNO in_value; /* YES: in value string */ extern YESorNO is_parbreak; /* get_next_non_blank() sets */ extern YESorNO keep_linebreaks; /* YES: keep linebreaks in values */ extern YESorNO keep_parbreaks; /* YES: keep parbreaks in values */ extern YESorNO keep_preamble_spaces; /* YES: keep spaces in @Preamble{} */ extern YESorNO keep_spaces; /* YES: keep spaces in values */ extern YESorNO keep_string_spaces; /* YES: keep spaces in @String{} */ extern int non_white_chars; /* used to test for legal @ */ extern YESorNO parbreaks; /* NO: parbreaks forbidden */ /* in strings and entries */ extern PATTERN_NAMES pattern_names[]; extern YESorNO prettyprint; /* NO: do lexical analysis */ extern char *program_name; /* set to argv[0] */ extern YESorNO print_patterns; /* YES: print value patterns */ extern YESorNO read_initialization_files;/* -[no-]read-init-files sets */ extern YESorNO remove_OPT_prefixes; /* YES: remove OPT prefix */ extern YESorNO rflag; /* YES: resynchronizing */ extern YESorNO Scribe; /* Scribe format input */ extern char shared_string[]; extern FILE *stdlog; /* usually stderr */ extern IO_PAIR token_start; /* used for # line output */ extern IO_PAIR the_entry; /* used in error messages */ extern IO_PAIR the_file; /* used in error messages */ extern IO_PAIR the_value; /* used in error messages */ extern int value_indentation; extern YESorNO wrapping; /* NO: verbatim output */ void do_files ARGS((int argc_, char *argv_[])); void do_other ARGS((void)); extern YESorNO apply_function ARGS((const char *option_, OPTION_FUNCTION_ENTRY table_[])); extern void check_length ARGS((size_t n_)); extern void check_key ARGS((void)); extern void check_chapter ARGS((void)); extern void check_CODEN ARGS((void)); extern void check_ISBN ARGS((void)); extern void check_ISSN ARGS((void)); extern void check_month ARGS((void)); extern void check_number ARGS((void)); extern void check_pages ARGS((void)); extern void check_other ARGS((void)); extern void check_volume ARGS((void)); extern void check_year ARGS((void)); extern void do_args ARGS((int argc_, char *argv_[])); extern void do_initfile ARGS((const char *pathlist_,const char *name_)); extern void error ARGS((const char *msg_)); extern void fatal ARGS((const char *msg_)); extern char *findfile ARGS((const char *pathlist_, const char *name_)); extern void fix_month ARGS((void)); extern void fix_namelist ARGS((void)); extern void fix_pages ARGS((void)); extern void fix_title ARGS((void)); extern void free_pattern_table_entries ARGS((PATTERN_TABLE *pt_)); extern int get_char ARGS((void)); extern int get_linebreak ARGS((void)); extern int get_next_non_blank ARGS((void)); extern char *initialization_file_name; extern int isidchar ARGS((int c_)); extern int isoptionprefix ARGS((int c)); extern keyboard_code_t kbcode ARGS((void)); extern int kbget ARGS((void)); extern void out_at ARGS((void)); extern void out_c ARGS((int c_)); extern void out_flush ARGS((void)); extern void out_newline ARGS((void)); extern void out_s ARGS((const char *s_)); extern void out_spaces ARGS((int n_)); extern void out_string ARGS((token_t type_, const char *token_)); extern void out_token ARGS((token_t type_, const char *token_)); extern void out_with_error ARGS((const char *s_,const char *msg_)); extern void out_with_parbreak_error ARGS((char *s_)); extern void put_back ARGS((int c_)); extern FILE *tfopen ARGS((const char *filename_, const char *mode_)); extern void warning ARGS((const char *msg_)); YESorNO German_style = NO; /* YES: " inside braced string value obeys german.sty style */ static long space_count = 0L; /* count of spaces in do_optional_space() */ static char Scribe_close_delims[] = "}])>'\"`"; static char Scribe_open_delims[] = "{[(<'\"`"; static void add_one_pattern ARGS((PATTERN_TABLE *pt_, const char *fieldname_, const char *pattern_, const char *msg_)); static void add_pattern ARGS((const char *fieldname_, const char *pattern_, const char *msg_)); static void append_value ARGS((const char *s_)); static void do_at ARGS((void)); static void do_BibTeX_entry ARGS((void)); static void do_BibTeX_value ARGS((void)); static void do_BibTeX_value_1 ARGS((void)); static void do_BibTeX_value_2 ARGS((void)); static void do_close_brace ARGS((void)); static void do_comma ARGS((void)); static void do_entry_name ARGS((void)); static void do_equals ARGS((void)); static void do_escapes ARGS((char *s_)); static void do_field ARGS((void)); static YESorNO do_field_value_pair ARGS((void)); static void do_fileinit ARGS((const char *bibfilename_)); static void do_group ARGS((void)); static void do_key_name ARGS((void)); static void do_new_pattern ARGS((char *s_)); static void do_newline ARGS((void)); static void do_one_file ARGS((FILE *fp_)); static void do_open_brace ARGS((void)); static void do_optional_inline_comment ARGS((void)); static void do_optional_space ARGS((void)); static void do_preamble ARGS((void)); static void do_preamble_2 ARGS((void)); static void do_Scribe_block_comment ARGS((void)); static void do_Scribe_close_delimiter ARGS((void)); static void do_Scribe_comment ARGS((void)); static void do_Scribe_entry ARGS((void)); static void do_Scribe_open_delimiter ARGS((void)); static void do_Scribe_separator ARGS((void)); static void do_Scribe_value ARGS((void)); static void do_single_arg ARGS((char *s_)); static void do_space ARGS((void)); static void do_string ARGS((void)); static void do_string_2 ARGS((void)); static void enlarge_table ARGS((PATTERN_TABLE *table_)); static void flush_inter_entry_space ARGS((void)); static char *get_braced_string ARGS((void)); static char *get_digit_string ARGS((void)); static char *get_identifier_string ARGS((void)); static char *get_inline_comment ARGS((void)); static char *get_line ARGS((FILE *fp_)); static char *get_optional_space ARGS((void)); static int get_parbreak ARGS((void)); static char *get_quoted_string ARGS((void)); static char *get_Scribe_delimited_string ARGS((void)); static char *get_Scribe_identifier_string ARGS((void)); static char *get_Scribe_string ARGS((void)); static char *get_simple_string ARGS((void)); static char *get_token ARGS((char *s_, char **nextp_, const char *terminators_)); static void new_entry ARGS((void)); static void new_io_pair ARGS((IO_PAIR *pair_)); static void new_position ARGS((POSITION *position_)); static void out_close_brace ARGS((void)); static void out_comma ARGS((void)); static void out_complex_value ARGS((void)); static void out_equals ARGS((void)); static void out_field ARGS((void)); static void out_open_brace ARGS((void)); static void out_other ARGS((const char *s_)); static void out_value ARGS((void)); static void prt_pattern ARGS((const char *fieldname_, const char *pattern_, const char *msg_)); static void put_back_string ARGS((const char *s_)); static void trim_value ARGS((void)); #if defined(HAVE_STDC) static void add_one_pattern(PATTERN_TABLE *pt, const char *fieldname, const char *pattern, const char *message) #else /* K&R style */ static void add_one_pattern(pt,fieldname,pattern,message) PATTERN_TABLE *pt; const char *fieldname; const char *pattern; const char *message; #endif { int m; /* index into pt->patterns[] */ if (STREQUAL(pattern,"")) /* then clear pattern table */ free_pattern_table_entries(pt); else /* otherwise add new pattern */ { if (pt->current_size == pt->maximum_size) /* then table full */ enlarge_table(pt); for (m = 0; m < pt->current_size; ++m) { /* Make sure this is not a duplicate; if it is, and its message */ /* is the same, then we just ignore the request. Duplicates */ /* are possible when the user and system search paths overlap. */ if (STREQUAL(pattern,pt->patterns[m].pattern)) { /* duplicate pattern found */ if (((pt->patterns[m].message) != (char*)NULL) && (message != (char*)NULL) && (STREQUAL(message,pt->patterns[m].message))) return; /* messages duplicate too */ pt->patterns[m].message = (message == (char*)NULL) ? message : (const char*)Strdup(message); /* replace message string */ prt_pattern(fieldname,pattern,message); return; } } /* We have a new and distinct pattern and message, so save them */ pt->patterns[pt->current_size].pattern = Strdup(pattern); pt->patterns[pt->current_size++].message = (message == (char*)NULL) ? message : (const char*)Strdup(message); } prt_pattern(fieldname,pattern,message); } #if defined(HAVE_STDC) static void add_pattern(const char *fieldname, const char *pattern, const char *message) #else /* K&R style */ static void add_pattern(fieldname,pattern,message) const char *fieldname; const char *pattern; const char *message; #endif { int k; /* index into pattern_names[] */ for (k = 0; pattern_names[k].name != (const char*)NULL; ++k) { /* find the correct pattern table */ if (stricmp(pattern_names[k].name,fieldname) == 0) { /* then found the required table */ add_one_pattern(pattern_names[k].table,fieldname,pattern,message); return; } } /* If we get here, then the pattern name is not in the built-in list, so create a new entry in pattern_names[] if space remains */ if (k >= (int)((MAX_PATTERN_NAMES - 1))) { /* too many pattern types */ (void)fprintf(stdlog, "%s Out of memory for pattern name [%s] -- pattern ignored\n", WARNING_PREFIX, fieldname); } else { /* sufficient table space remains */ pattern_names[k].name = Strdup(fieldname); /* add new table entry */ pattern_names[k].table = (PATTERN_TABLE*)malloc(sizeof(PATTERN_TABLE)); if (pattern_names[k].table == (PATTERN_TABLE*)NULL) fatal("Out of memory for pattern tables"); pattern_names[k].table->patterns = (MATCH_PATTERN*)NULL; pattern_names[k].table->current_size = 0; pattern_names[k].table->maximum_size = 0; add_one_pattern(pattern_names[k].table,fieldname,pattern,message); pattern_names[k+1].name = (char*)NULL; /* mark new end of table */ pattern_names[k+1].table = (PATTERN_TABLE*)NULL; } } #if defined(HAVE_STDC) static void append_value(const char *s) #else /* K&R style */ static void append_value(s) const char *s; #endif { size_t n_cv = strlen(current_value); size_t n_s = strlen(s); if ((n_cv + n_s) < MAX_TOKEN) (void)strcpy(¤t_value[n_cv],s); else /* string too long; concatenate into parts */ { out_s(current_value); (void)strcpy(current_value,s); out_with_error(" # ","Value too long for field ``%f''"); } } static void do_at(VOID) /* parse @name{...} */ { int c; token_start = the_file; /* remember location of token start */ c = get_char(); the_entry = the_file; if ((non_white_chars == 1) && (c == '@')) { at_level++; out_at(); if (brace_level != 0) { error( "@ begins line, but brace level is not zero after entry ``@%e{%k,''"); brace_level = 0; } } else if (c != EOF) { out_c(c); out_with_error("", "Expected @name{...} after entry ``@%e{%k,''"); } } static void do_BibTeX_entry(VOID) { /************************************************************* Parse a BibTeX entry, one of: @entry-name{key,field=value,field=value,...,} @string{name=value} @preamble{...} *************************************************************/ new_entry(); do_at(); if ((rflag == YES) || (eofile == YES)) return; do_optional_space(); if (prettyprint == YES) out_c(DELETE_WHITESPACE); /* discard any space that we found */ do_entry_name(); if (rflag == YES) return; if (STREQUAL(current_entry_name,"Include")) do_group(); else if (STREQUAL(current_entry_name,"Preamble")) do_preamble(); else if (STREQUAL(current_entry_name,"String")) do_string(); else /* expect @name{key, field = value, ... } */ { do_optional_space(); if (prettyprint == YES) out_c(DELETE_WHITESPACE); /* discard any space that we found */ do_open_brace(); if (rflag == YES) return; do_optional_space(); do_key_name(); if (rflag == YES) return; do_optional_space(); do_comma(); if (rflag == YES) return; do_optional_space(); while (do_field_value_pair() == YES) { do_optional_space(); do_comma(); /* this supplies any missing optional comma */ if ((rflag == YES) || (eofile == YES)) return; do_optional_space(); } if (rflag == YES) return; do_optional_space(); do_close_brace(); } flush_inter_entry_space(); } /*********************************************************************** BibTeX field values can take several forms, as illustrated by this simple BNF grammar: BibTeX-value-string: simple-string | simple-string # BibTeX-value-string simple-string: "quoted string" | {braced-string} | digit-sequence | alpha-sequence | ***********************************************************************/ static void do_BibTeX_value(VOID) /* process BibTeX value string */ { if (prettyprint == YES) do_BibTeX_value_1(); else do_BibTeX_value_2(); } static void do_BibTeX_value_1(VOID) /* process BibTeX value string */ { /* for prettyprinted output */ /* In order to support string value checking, we need to collect complete values, including intervening inline comments, which we bracket by magic delimiters so they can be ignored during pattern matching, and restored on output. Space between values is simply discarded. */ int c; the_value = the_file; current_value[0] = '\0'; append_value(get_simple_string()); do_optional_inline_comment(); while ((c = get_char()) == '#') { if (KEEP_PREAMBLE_SPACES()) append_value("#"); else if (KEEP_STRING_SPACES()) append_value("#"); else append_value(" # "); do_optional_inline_comment(); append_value(get_simple_string()); do_optional_inline_comment(); } put_back(c); out_value(); } static void do_BibTeX_value_2(VOID) /* process BibTeX value string */ { /* for lexical analysis output */ int c; the_value = the_file; (void)strcpy(current_value,get_simple_string()); out_string((current_value[0] == '"') ? TOKEN_VALUE : TOKEN_ABBREV, current_value); do_optional_space(); while ((c = get_char()) == '#') { out_string(TOKEN_SPACE," "); out_string(TOKEN_SHARP,"#"); out_string(TOKEN_SPACE," "); do_optional_space(); (void)strcpy(current_value,get_simple_string()); out_string((current_value[0] == '"') ? TOKEN_VALUE : TOKEN_ABBREV, current_value); do_optional_space(); } put_back(c); } static void do_close_brace(VOID) /* parse level 1 closing brace or parenthesis */ { int c; c = get_char(); if (c == EOF) return; else if (c == close_char) { if (c == ')') brace_level--; /* get_char() could not do this for us */ out_close_brace(); /* standardize parenthesis to brace */ if (brace_level != 0) out_with_error("", "Non-zero brace level after @name{...} processed. Last key = ``%k''"); } else /* raise error and try to resynchronize */ { out_c(c); out_with_error("", "Expected closing brace or parenthesis in entry ``@%e{%k,''"); } } static void do_comma(VOID) { int c; /* Parse a comma, or an optional comma before a closing brace or parenthesis; an omitted legal comma is supplied explicitly. A newline is output after the comma so that field = value pairs appear on separate lines. */ the_value = the_file; c = get_char(); if (c == EOF) NOOP; else if (c == ',') { if (discard_next_comma == NO) { out_comma(); out_newline(); } } else if (c == close_char) { /* supply missing comma for last field = value pair*/ if (c == ')') brace_level--; /* get_char() could not do this for us */ if (brace_level == 0) /* reached end of bibliography entry */ { if (c == ')') brace_level++; /* put_back() could not do this for us */ put_back(c); if (discard_next_comma == NO) { out_comma(); out_newline(); } } else /* no comma, and still in bibliography entry */ { out_c(c); out_with_error("","Non-zero brace level after @name{...} \ processed. Last entry = ``@%e{%k,''"); } } else /* raise error and try to resynchronize */ { out_c(c); out_with_error("", "Expected comma after last field ``%f''"); } discard_next_comma = NO; } static void do_entry_name(VOID) /* process BibTeX entry name */ { int c; size_t k; int n; static NAME_PAIR entry_pair[] = { /* entry name case change table */ { "Deathesis", "DEAthesis" }, { "Inbook", "InBook" }, { "Incollection", "InCollection" }, { "Inproceedings", "InProceedings" }, { "Mastersthesis", "MastersThesis" }, { "Phdthesis", "PhdThesis" }, { "Techreport", "TechReport" }, }; token_start = the_file; /* remember location of token start */ for (k = 0; ((c = get_char()) != EOF) && isidchar(c); ++k) { /* store capitalized entry name */ if ((k == 0) && !Isalpha(c)) error("Non-alphabetic character begins an entry name"); if ((k == 0) && Islower(c)) c = toupper(c); else if ((k > 0) && Isupper(c)) c = tolower(c); if ((parbreaks == NO) && (is_parbreak == YES)) { APPEND_CHAR(current_entry_name,k,c); out_with_parbreak_error(current_entry_name); return; } if (k >= MAX_TOKEN) { APPEND_CHAR(current_entry_name,k,c); out_with_error(current_entry_name, "@entry_name too long"); return; } current_entry_name[k] = (char)c; } current_entry_name[k] = (char)'\0'; if (c != EOF) put_back(c); /* Substitute a few entry names that look better in upper case */ for (n = 0; n < (int)(sizeof(entry_pair)/sizeof(entry_pair[0])); ++n) if (STREQUAL(current_entry_name,entry_pair[n].old_name)) (void)strcpy(current_entry_name,entry_pair[n].new_name); if (prettyprint == YES) out_s(current_entry_name); else if (STREQUAL(current_entry_name,"Include")) out_token(TOKEN_INCLUDE, current_entry_name); else if (STREQUAL(current_entry_name,"Preamble")) out_token(TOKEN_PREAMBLE, current_entry_name); else if (STREQUAL(current_entry_name,"String")) out_token(TOKEN_STRING, current_entry_name); else out_token(TOKEN_ENTRY, current_entry_name); check_length(k); } static void do_equals(VOID) /* process = in field = value */ { int c; the_value = the_file; token_start = the_file; /* remember location of token start */ c = get_char(); if (c == EOF) NOOP; else if (c == '=') out_equals(); else { out_c(c); out_with_error("", "Expected \"=\" after field ``%f''"); } out_spaces((int)(value_indentation - the_file.output.column_position)); /* supply leading indentation */ } #if defined(HAVE_STDC) static void do_escapes(char *s) #else /* K&R style */ static void do_escapes(s) char *s; #endif { /* reduce escape sequences in s[] */ int base; /* number base for strtol() */ char *endptr; /* pointer returned by strtol() */ char *p; /* pointer into output s[] */ if (s == (char*)NULL) /* nothing to do if no string */ return; for (p = s ; *s ; ++s) { if (*s == '\\') /* have escaped character */ { base = 8; /* base is tentatively octal */ switch (*++s) { case 'a': *p++ = CTL('G'); break; case 'b': *p++ = CTL('H'); break; case 'f': *p++ = CTL('L'); break; case 'n': *p++ = CTL('J'); break; case 'r': *p++ = CTL('M'); break; case 't': *p++ = CTL('I'); break; case 'v': *p++ = CTL('K'); break; case '0': if (TOLOWER(s[1]) == 'x') /* 0x means hexadecimal */ base = 16; /* FALL THROUGH */ case '1': case '2': case '3': case '4': case '5': case '6': case '7': *p++ = (char)strtol((const char*)s,&endptr,base); s = endptr - 1; /* point to last used character */ break; default: /* \x becomes x for all other x */ *p++ = *s; break; } } else /* not escaped, so just copy it */ *p++ = *s; } *p = '\0'; /* terminate final string */ } #if defined(HAVE_STDC) static void do_fileinit(const char *bibfilename) /* process one initialization file */ #else /* K&R style */ static void do_fileinit(bibfilename) /* process one initialization file */ const char *bibfilename; #endif { char *p; const char *ext; ext = GETDEFAULT(BIBCLEAN_EXT,INITFILE_EXT); if (strrchr(bibfilename,'.') != (char*)NULL) /* then have file extension */ { /* convert foo.bib to foo.ini and then process it as an init file */ if ((p = (char*)malloc(strlen(bibfilename) + strlen(ext) + 1)) != (char*)NULL) { (void)strcpy(p,bibfilename); (void)strcpy(strrchr(p,'.'),ext); do_initfile((char*)NULL,p); FREE(p); } } } static void do_field(VOID) /* process BibTeX field name */ { int c; size_t k; int n; static NAME_PAIR field_pair[] = { /* field name case change table */ { "ansi-standard-number", "ANSI-standard-number" }, { "coden", "CODEN" }, /* 5- and 6-letter standard journal identifier */ { "ieee-standard-number", "IEEE-standard-number" }, { "isbn", "ISBN" }, /* International Standard Book Number */ { "iso-standard-number", "ISO-standard-number" }, { "issn", "ISSN" }, /* International Standard Serials Number */ { "lccn", "LCCN" }, /* Library of Congress catalog number */ { "mrclass", "MRclass" }, /* Math Reviews class */ { "mrnumber", "MRnumber" }, /* Math Reviews number */ { "uri", "URI" }, /* WWW: Uniform Resource Identifier */ { "url", "URL" }, /* WWW: Uniform Resource Locator */ { "urn", "URN" }, /* WWW: Uniform Resource Name */ { "xxansi-standard-number", "xxANSI-standard-number" }, { "xxcoden", "xxCODEN" }, { "xxieee-standard-number", "xxIEEE-standard-number" }, { "xxisbn", "xxISBN" }, { "xxiso-standard-number", "xxISO-standard-number" }, { "xxissn", "xxISSN" }, { "xxmrclass", "xxMRclass" }, { "xxmrnumber", "xxMRnumber" }, { "xxuri", "xxURI" }, { "xxuri", "xxURI" }, { "xxurl", "xxURL" }, { "xxurn", "xxURN" }, }; the_value = the_file; token_start = the_file; /* remember location of token start */ for (k = 0, c = get_char(); (c != EOF) && isidchar(c); c = get_char(), k++) { if (k >= MAX_TOKEN) { APPEND_CHAR(current_field,k,c); out_with_error(current_field, "Entry field name too long"); return; } else if ((k == 0) && !Isalpha(c)) error("Non-alphabetic character begins a field name"); current_field[k] = (char)(((in_string == NO) && Isupper(c)) ? tolower(c) : c); } if (c != EOF) put_back(c); current_field[k] = (char)'\0'; if (in_string == NO) /* @String{...} contents untouched */ { /* Substitute a few field names that look better in upper case */ for (n = 0; n < (int)(sizeof(field_pair)/sizeof(field_pair[0])); ++n) { if (STREQUAL(current_field,field_pair[n].old_name)) { (void)strcpy(current_field,field_pair[n].new_name); break; } } if (strncmp("opt",current_field,3) == 0) { /* Emacs bibtex.el expects OPT */ (void)strncpy(current_field,"OPT",3); } } if (k > 0) out_field(); check_length(k); } static YESorNO do_field_value_pair(VOID) /* process field = value pair */ { if (eofile == YES) return (NO); do_field(); if ((rflag == YES) || (eofile == YES) || (current_field[0] == '\0')) return (NO); space_count = 0L; /* examined in do_Scribe_separator() */ do_optional_space(); /* and set here */ if (Scribe == YES) do_Scribe_separator(); else do_equals(); if ((rflag == YES) || (eofile == YES)) return (NO); do_optional_space(); if (Scribe == YES) do_Scribe_value(); else do_BibTeX_value(); if ((rflag == YES) || (eofile == YES)) return (NO); return (YES); } #if defined(HAVE_STDC) void do_files(int argc, char *argv[]) #else /* K&R style */ void do_files(argc,argv) int argc; char *argv[]; #endif { FILE *fp; int k = argc; /* index into argv[] */ /* set to argc to remove optimizer complaints about unused argument */ if (argv[1] == (char*)NULL) /* no files specified, so use stdin */ { the_file.input.filename = "stdin"; do_one_file(stdin); } else /* else use command-line files left in argv[] */ { for (k = 1; argv[k] != (char*)NULL; ++k) { if (STREQUAL(argv[k],"-")) { /* A filename of "-" is conventionally interpreted in the UNIX world as a synonym for stdin, since that system otherwise lacks true filenames for stdin, stdout, and stdlog. We process stdin with do_one_file(), but never close it so that subsequent read attempts will silently, and harmlessly, fail at end-of-file. */ the_file.input.filename = "stdin"; do_one_file(stdin); } else if ((fp = tfopen(argv[k], OPEN_MODE_R)) == (FILE*)NULL) { (void)fprintf(stdlog, "\n%s Ignoring open failure on file [%s]\n", ERROR_PREFIX, argv[k]); perror("perror() says"); } else /* open succeeded, so process file */ { if (k > 1) /* supply blank line between */ out_newline(); /* entries at file boundaries */ the_file.input.filename = argv[k]; if (read_initialization_files == YES) do_fileinit(the_file.input.filename); do_one_file(fp); (void)fclose(fp); /* close to save file resources */ } } } } static void do_group(VOID) /* copy a braced group verbatim */ { int c; char *s = shared_string; /* memory-saving device */ size_t k; /* index into s[] */ do_optional_space(); if (prettyprint == YES) { out_c(DELETE_WHITESPACE); /* discard any space that we found */ do_open_brace(); if (rflag == YES) return; out_c(DELETE_WHITESPACE); /* discard any space that we found */ while ((c = get_char()) != EOF) { if ((brace_level == 1) && (close_char == ')') && (c == close_char)) { /* end of @entry(...) */ brace_level = 0; c = '}'; } if ((non_white_chars == 1) && (c == '@')) error("@ begins line, but brace level is not zero after \ entry ``@%e{%k,''"); if ((brace_level == 0) && (c == '}')) { out_c(DELETE_WHITESPACE); /* discard any space that we found */ out_close_brace(); } else out_c(c); if (brace_level == 0) break; } } else /* prettyprint == NO */ { /* output entire braced group as one literal*/ token_start = the_file; /* remember location of token start */ c = get_char(); if (c == '{') close_char = '}'; else if (c == '(') { close_char = ')'; brace_level++; /* get_char() could not do this for us */ } else /* raise error and try to resynchronize */ { s[0] = (char)c; s[1] = '\0'; out_token(TOKEN_LITERAL,s); error( "Expected open brace or parenthesis. Last entry = ``@%e{%k,''"); return; } s[0] = '{'; /* standardize to outer braces */ for (k = 1; c != EOF;) { c = get_char(); if (k >= MAX_TOKEN) { error("Braced literal string too long for entry ``%e''"); s[k] = '\0'; out_token(TOKEN_LITERAL, s); return; } s[k++] = (char)c; if ((c == close_char) && (c == ')')) brace_level--; /* get_char() could not do this for us */ if (brace_level == 0) break; /* here's the normal loop exit */ } s[k-1] = '}'; /* standardize to outer braces */ s[k] = '\0'; /* terminate string */ out_token(TOKEN_LITERAL, s); } } #if defined(HAVE_STDC) void do_initfile(const char *pathlist, const char *name) #else /* K&R style */ void do_initfile(pathlist,name) const char *pathlist; const char *name; #endif { FILE *fp; char *p; if ((initialization_file_name = findfile(pathlist,name)) == (char*)NULL) return; /* silently ignore missing files */ if ((fp = tfopen(initialization_file_name,"r")) == (FILE*)NULL) return; /* silently ignore missing files */ while ((p = get_line(fp)) != (char *)NULL) { /* process init file lines */ SKIP_SPACE(p); if (isoptionprefix(*p)) do_single_arg(p); /* then expect -option [value] */ else do_new_pattern(p); /* else expect field = "value" */ } (void)fclose(fp); } static void do_key_name(VOID) /* process BibTeX citation key */ { int c; size_t k; token_start = the_file; /* remember location of token start */ for (k = 0, c = get_char(); (c != EOF) && (c != ',') && !Isspace(c); c = get_char(), k++) { if (k >= MAX_TOKEN) { APPEND_CHAR(current_key,k,c); out_with_error(current_key, "Citation key too long"); return; } current_key[k] = (char)c; } current_key[k] = (char)'\0'; if (c != EOF) put_back(c); if (check_values == YES) check_key(); out_string(TOKEN_KEY, current_key); check_length(k); } #if defined(HAVE_STDC) static void do_new_pattern(char *s) #else /* K&R style */ static void do_new_pattern(s) char *s; #endif { char *field; char *p = s; YESorNO saw_space; char *value; /******************************************************************* We expect s[] to contain field = "value" field : "value" field "value" field = "value" "message" field : "value" "message" field "value" "message" Empty lines are silently ignored. *******************************************************************/ field = get_token(p,&p,"=: \t\v\f"); if (field == (char*)NULL) return; /* then we have an empty line */ if (p != (char*)NULL) /* then we have more text */ { saw_space = Isspace(*p) ? YES : NO; SKIP_SPACE(p); if ((saw_space == YES) || isfieldvalueseparator(*p)) { if (isfieldvalueseparator(*p)) ++p; /* then move past separator */ SKIP_SPACE(p); if (*p == '"') /* then have quoted value */ { value = get_token(p,&p," \t\v\f"); if (value != (char*)NULL) { SKIP_SPACE(p); if (*p == '"') /* then have quoted message */ { add_pattern(field,value,get_token(p,&p," \t\v\f")); return; } else if ((*p == '\0') || (*p == COMMENT_PREFIX)) { /* have end of string s[] */ add_pattern(field,value,(char*)NULL); return; } } } } } (void)fprintf(stdlog,"%s Bad line [%s] in initialization file [%s]\n", ERROR_PREFIX, s, initialization_file_name); exit(EXIT_FAILURE); } static void do_newline(VOID) { int c; /* Newlines are standardized by bibclean inside bibliographic entries, */ /* so we only output a newline here if we are outside such an entry. */ c = get_char(); if (c == '\n') { if (brace_level == 0) out_newline(); else if (KEEP_PREAMBLE_SPACES()) out_newline(); else if (KEEP_STRING_SPACES()) out_newline(); } else put_back(c); } #if defined(HAVE_STDC) static void do_one_file(FILE *fp) /* process one input file on fp */ #else /* K&R style */ static void do_one_file(fp) /* process one input file on fp */ FILE *fp; #endif { fpin = fp; /* save file pointer globally for get_char() */ new_io_pair(&the_file); eofile = NO; new_entry(); while (eofile == NO) { do_optional_space(); do_other(); if (Scribe == YES) do_Scribe_entry(); else do_BibTeX_entry(); } if (prettyprint == YES) { out_c(DELETE_WHITESPACE); /* discard all trailing space */ out_c('\n'); /* supply final newline */ } out_flush(); /* flush all buffered output */ if (brace_level != 0) error("Non-zero brace level at end-of-file"); } static void do_open_brace(VOID) /* process open brace or parenthesis */ { int c; c = get_char(); if (c == EOF) return; else if (c == '{') { close_char = '}'; out_open_brace(); } else if (c == '(') { close_char = ')'; brace_level++; /* get_char() could not do this for us */ out_open_brace(); /* standardize parenthesis to brace */ } else /* raise error and try to resynchronize */ { out_c(c); out_with_error("", "Expected open brace or parenthesis. Last entry = ``@%e{%k,''"); } } static void do_optional_inline_comment(VOID) { size_t n; char *s; for (;;) { s = get_optional_space(); switch ((int)s[0]) { case BIBTEX_COMMENT_PREFIX: n = strlen(s); Memmove(s+1,s,n); s[0] = BIBTEX_HIDDEN_DELIMITER; s[n+1] = BIBTEX_HIDDEN_DELIMITER; s[n+2] = '\0'; append_value(s); break; case '\n': /* newline or */ case ' ': /* horizontal space token */ case '\f': case '\r': case '\t': case '\v': if (KEEP_PREAMBLE_SPACES()) append_value(s); else if (KEEP_STRING_SPACES()) append_value(s); break; /* else discard white space */ default: /* no more space or inline comments */ return; /* here's the loop exit */ } } } static void do_optional_space(VOID) { /* skip over optional horizontal space, newline, and in-line comments */ YESorNO save_wrapping; char *s; for (;;) { s = get_optional_space(); switch (s[0]) { case '\n': /* newline token */ space_count++; put_back((int)s[0]); do_newline(); break; case ' ': /* horizontal space token */ case '\f': case '\r': case '\t': case '\v': space_count++; put_back((int)s[0]); do_space(); break; case BIBTEX_COMMENT_PREFIX: /* in-line comment token */ save_wrapping = wrapping; wrapping = NO; /* inline comments are never line wrapped */ out_string(TOKEN_INLINE,s); wrapping = save_wrapping; break; default: /* not optional space */ return; /* here's the loop exit */ } } } void do_other(VOID) /* copy non-BibTeX text verbatim */ { int c; /* current input character */ size_t k; /* index into s[] */ YESorNO save_wrapping; char *s = shared_string; /* memory-saving device */ save_wrapping = wrapping; wrapping = NO; /* For the purposes of lexical analysis (-no-prettyprint), we collect complete lines, rather than single characters. */ for (k = 0, s[0] = (char)'\0'; (c = get_char()) != EOF; ) { if ((c == '@') && (non_white_chars == 1)) { /* new entry found */ put_back(c); break; } if (k >= MAX_TOKEN) { /* buffer full, empty it and start a new one */ APPEND_CHAR(s,k,c); out_other(s); k = 0; } else if (c == '\n') /* end of line */ { s[k] = (char)'\0'; out_other(s); /* output line contents */ out_newline(); /* and then separate newline token */ k = 0; } else if (Isspace(s[0])) /* then collecting whitespace */ { if (Isspace(c)) /* still collecting whitespace */ s[k++] = (char)c; else /* end of whitespace */ { s[k] = (char)'\0'; out_other(s); /* output whitespace token */ k = 0; s[k++] = (char)c; /* and start new one */ } } else s[k++] = (char)c; } s[k] = (char)'\0'; out_other(s); wrapping = save_wrapping; } static void do_preamble(VOID) { in_preamble = YES; do_preamble_2(); in_preamble = NO; } static void do_preamble_2(VOID) { do_optional_space(); if (prettyprint == YES) out_c(DELETE_WHITESPACE); /* discard any space that we found */ do_open_brace(); if (rflag == YES) return; do_optional_space(); do_BibTeX_value(); if (rflag == YES) return; do_optional_space(); do_close_brace(); } static void do_Scribe_block_comment(VOID) { int b_level = 0; /* brace level */ int c; int k; char *p; char s[3+1]; /* to hold "end" */ p = get_Scribe_string(); /* expect to get "comment" */ if (stricmp(p,"\"comment\"") == 0) { /* found start of @Begin{comment} */ for (k = 6; k > 0; --k) out_c(DELETE_CHAR); /* delete "@Begin" from output */ /* that was output by do_entry_name() */ out_s("@Comment{"); /* convert to BibTeX `comment' */ while ((c = get_char()) != EOF) { switch (c) { case '@': /* lookahead for "@End" */ s[0] = (char)get_char(); s[1] = (char)get_char(); s[2] = (char)get_char(); s[3] = (char)'\0'; if (stricmp(s,"end") == 0) { /* then we have @End */ p = get_Scribe_string(); /* so get what follows */ if (stricmp(p,"\"Comment\"") == 0) { out_close_brace();/* found @End{comment}, so finish conversion to @Comment{...} */ return; /* block comment conversion done! */ } else /* false alarm, just stuff lookahead */ { /* back into input stream */ put_back_string(p); put_back_string(s); } } else /* lookahead was NOT "@End" */ put_back_string(s); break; case '{': b_level++; break; case '}': if (b_level <= 0) out_open_brace(); /* keep output braces balanced */ else b_level--; break; } /* end switch(c) */ out_c(c); /* copy one comment character */ } /* end while ((c = ...)) */ } else /* was not @Begin{comment} after all */ put_back_string(p); } static void do_Scribe_close_delimiter(VOID) { int c; static char fmt[] = "Expected Scribe close delimiter `%c' [8#%03o], but \ found `%c' [8#%03o] instead for field ``%%f''"; char msg[sizeof(fmt)]; c = get_char(); if ((parbreaks == NO) && (is_parbreak == YES)) { APPEND_CHAR(msg,0,c); out_with_parbreak_error(msg); return; } if (c == EOF) return; else if (c == close_char) { if (c == ')') brace_level--; /* get_char() could not do this for us */ out_close_brace(); /* standardize parenthesis to brace */ } else /* raise error and try to resynchronize */ { out_c(c); (void)sprintf(msg, fmt, close_char, BYTE_VAL(close_char), (int)(Isprint(c) ? c : '?'), BYTE_VAL(c)); out_with_error("", msg); } } static void do_Scribe_comment(VOID) { int c; int b_level = 0; /* brace level */ /* BibTeX does not yet have a comment syntax, so we just output the Scribe comment in braces, ensuring that internal braces are balanced. */ do_optional_space(); do_Scribe_open_delimiter(); /* this outputs an opening brace */ if (rflag == YES) return; for (c = get_char(); (c != EOF) && (c != close_char); c = get_char()) { if (c == '{') b_level++; else if (c == '}') { b_level--; if (b_level < 0) { out_open_brace(); /* force matching internal braces */ b_level++; } } out_c(c); } for (; b_level > 0; b_level--) out_close_brace(); /* force matching internal braces */ out_close_brace(); } static void do_Scribe_entry(VOID) { /************************************************************* Parse a Scribe entry, one of: @entry-name{key,field=value,field=value,...,} @string{name=value} @comment{...} @begin{comment}...@end{comment} The = separator in field/value pairs may also be a space or a slash. Any of the seven Scribe delimiters can be used to surround the value(s) following @name, and to surround values of field value pairs. *************************************************************/ int save_close_char; new_entry(); do_at(); if ((rflag == YES) || (eofile == YES)) return; do_optional_space(); if (prettyprint == YES) out_c(DELETE_WHITESPACE); /* discard any space that we found */ do_entry_name(); if (rflag == YES) return; if (STREQUAL(current_entry_name,"Comment")) do_Scribe_comment(); else if (STREQUAL(current_entry_name,"Begin")) do_Scribe_block_comment(); else if (STREQUAL(current_entry_name,"String")) do_string(); else { do_optional_space(); if (prettyprint == YES) out_c(DELETE_WHITESPACE); /* discard any space that we found */ do_Scribe_open_delimiter(); if (rflag == YES) return; save_close_char = close_char; brace_level = 1; /* get_char() cannot do this for us */ do_optional_space(); do_key_name(); if (rflag == YES) return; do_optional_space(); do_comma(); if (rflag == YES) return; do_optional_space(); while (do_field_value_pair() == YES) { do_optional_space(); do_comma(); /* this supplies any missing optional comma */ if ((rflag == YES) || (eofile == YES)) return; do_optional_space(); } if (rflag == YES) return; do_optional_space(); close_char = save_close_char; do_Scribe_close_delimiter(); } flush_inter_entry_space(); } static void do_Scribe_open_delimiter(VOID) /* process open delimiter */ { int c; char *p; c = get_char(); if (c == EOF) return; else { p = strchr(Scribe_open_delims,c); if (p == (char*)NULL) { out_c(c); out_with_error("", "Expected Scribe open delimiter, one of { [ ( < ' \" ` for field ``%f''"); return; } close_char = Scribe_close_delims[(int)(p - Scribe_open_delims)]; out_open_brace(); /* standardize open delimiter to brace */ } } static void do_Scribe_separator(VOID) { int c; YESorNO saw_space = NO; the_value = the_file; saw_space = (space_count > 0L) ? YES : NO; c = get_char(); if ((parbreaks == NO) && (is_parbreak == YES)) { char msg[2]; APPEND_CHAR(msg,0,c); out_with_parbreak_error(msg); return; } if (c == EOF) NOOP; else if ((c == '=') || (c == '/')) out_equals(); else if (saw_space == YES) /* have field value with no binary operator */ { out_equals(); /* supply the missing = operator */ put_back(c); /* this is first character of value string */ } else /* looks like run-together fieldvalue */ { out_c(c); out_with_error("", "Expected Scribe separator \"=\", \"/\", or \" \" for field ``%f''"); } out_spaces((int)(value_indentation - the_file.output.column_position)); /* supply leading indentation */ } /*********************************************************************** Scribe field values can take several forms, as illustrated by this simple BNF grammar: Scribe-value-string: * | * ***********************************************************************/ static void do_Scribe_value(VOID) /* process Scribe value string */ { the_value = the_file; (void)strcpy(current_value,get_Scribe_string()); if ((rflag == YES) || (eofile == YES)) out_s(current_value); else out_value(); } #if defined(HAVE_STDC) static void do_single_arg(char *s) #else /* K&R style */ static void do_single_arg(s) char *s; #endif { /* expect -option or -option value */ char *temp_argv[4]; /* "program" "-option" "value" NULL */ int temp_argc; /* temporary argument count */ temp_argv[0] = program_name; /* 0th argument always program name */ temp_argv[1] = get_token(s,&s," \t\v\f"); /* option */ temp_argv[2] = get_token(s,&s," \t\v\f"); /* value */ temp_argv[3] = (char *)NULL; temp_argc = (temp_argv[2] == (char*)NULL) ? 2 : 3; do_args(temp_argc,temp_argv); } static void do_space(VOID) { int c; char *s = shared_string; /* memory-saving device */ size_t k; /* index into s[] */ token_start = the_file; /* remember location of token start */ c = get_char(); s[0] = '\0'; for (k = 0; (c != EOF) && Isspace(c) && (c != '\n'); ) { if (k >= MAX_TOKEN) { /* split long comments into multiple ones */ s[k] = '\0'; if (prettyprint == NO) out_token(TOKEN_SPACE,s); else if (keep_spaces == YES) out_s(s); else if (KEEP_PREAMBLE_SPACES()) out_s(s); else if (KEEP_STRING_SPACES()) out_s(s); /* else discard: spaces are standardized during prettyprinting */ k = 0; } s[k++] = (char)c; c = get_char(); } s[k] = '\0'; /* terminate token string */ if (prettyprint == NO) out_token(TOKEN_SPACE,s); else if (keep_spaces == YES) out_s(s); else if (KEEP_PREAMBLE_SPACES()) out_s(s); else if (KEEP_STRING_SPACES()) out_s(s); /* else discard: spaces are standardized during prettyprinting */ put_back(c); /* restore lookahead */ } static void do_string(VOID) /* process @String{abbrev = "value"} */ { in_string = YES; do_string_2(); in_string = NO; } static void do_string_2(VOID) /* process @String{abbrev = "value"} */ { do_optional_space(); if (prettyprint == YES) out_c(DELETE_WHITESPACE); /* discard any space that we found */ do { /* one trip loop */ do_open_brace(); if (rflag == YES) break; do_optional_space(); if (do_field_value_pair() == NO) break; if (rflag == YES) break; do_optional_space(); do_close_brace(); if (rflag == YES) break; } while (0); } #if defined(HAVE_STDC) static void enlarge_table(PATTERN_TABLE *table) #else /* K&R style */ static void enlarge_table(table) PATTERN_TABLE *table; #endif { if (table->maximum_size == 0) table->patterns = (MATCH_PATTERN*)malloc(sizeof(MATCH_PATTERN) * TABLE_CHUNKS); else table->patterns = (MATCH_PATTERN*)realloc((char*)table->patterns, sizeof(MATCH_PATTERN) * (table->maximum_size + TABLE_CHUNKS)); /* NB: Sun C++ requires (char*) cast */ if (table->patterns == (MATCH_PATTERN*)NULL) fatal("Out of memory for pattern table space"); table->maximum_size += TABLE_CHUNKS; } static void flush_inter_entry_space(VOID) /* standardize to 1 blank line between entries */ { int c; if (keep_spaces == YES) return; put_back((c = get_next_non_blank())); if (c != EOF) out_newline(); out_newline(); } static char * get_braced_string(VOID) { int b_level = 0; /* brace level */ int c; /* current input character */ size_t k; /* index into s[] */ size_t n; /* index into t[] */ char *s = shared_string; /* memory-saving device */ char t[MAX_TOKEN_SIZE]; /* working area for braced string */ in_value = YES; for (c = get_char(), k = 0, *s = '\0'; c != EOF; ) { if ((parbreaks == NO) && (is_parbreak == YES)) { put_back(c); /* so this comes AFTER error message */ out_with_parbreak_error(s); in_value = NO; return (EMPTY_STRING(s)); } else if (k >= MAX_TOKEN) { APPEND_CHAR(s,k,c); out_with_error(s, "BibTeX string too long for field ``%f''"); in_value = NO; return (EMPTY_STRING(s)); } else { if (c == '\n') c = get_parbreak(); else if (c == '\f') { if (keep_linebreaks == NO) c = (keep_parbreaks == YES) ? PARBREAK : ' '; } else if (Isspace(c)) c = ' '; /* change whitespace to real space */ else if (c == '{') b_level++; else if (c == '}') b_level--; else if (c == '\\') /* \\ -> \\ */ { s[k++] = (char)c; c = get_char(); if (c == '\\') /* found \\ */ { s[k++] = (char)c; c = get_linebreak(); } else /* \ -> \ */ { put_back(c); c = '\0'; } } if (c != '\0') s[k++] = (char)c; if (b_level == 0) break; /* here's the loop exit */ c = Isspace(c) ? get_next_non_blank() : get_char(); } } s[k] = (char)'\0'; /* Now convert braced string to quoted string */ for (b_level = 0, k = 0, n = 0; s[k] && (n < (MAX_TOKEN_SIZE-2)); ++k) { if (s[k] == '{') b_level++; else if (s[k] == '}') b_level--; if ((s[k] == '"') && (b_level == 1)) /* k > 0 if this is true */ { /* so we can omit that check */ if (German_style == YES) { switch (s[k+1]) { case '"': case '-': case '<': case '>': case 'A': case 'E': case 'I': case 'O': case 'U': case '\'': case '`': case 'a': case 'c': case 'e': case 'f': case 'i': case 'l': case 'm': case 'n': case 'o': case 'p': case 's': case 't': case 'u': case '|': t[n++] = (char)'{'; t[n++] = (char)'"'; t[n++] = s[++k]; t[n++] = (char)'}'; break; default: /* should never happen */ t[n++] = (char)'{'; t[n++] = (char)'"'; t[n++] = (char)'}'; warning( "Unexpected quote usage in German-style braced string"); break; } } else /* German_style == NO */ { if ((s[k-1] == '\\') && (s[k+1] == '{') && ((s[k+2] != '\0') && (s[k+2] != '{') && (s[k+2] != '}')) && (s[k+3] == '}')) /* change \"{x}y to {\"{x}}y */ { /* BUG FIX for overlooked case: this branch added [08-Mar-1995] */ n--; /* now t[n] == '\\' */ k--; /* now s[k] == '\\' */ t[n++] = (char)'{'; t[n++] = s[k++]; /* copy 5-char string \"{x} */ t[n++] = s[k++]; t[n++] = s[k++]; t[n++] = s[k++]; t[n++] = s[k]; t[n++] = (char)'}'; } else if (s[k-1] == '\\') /* change \"xy to {\"x}y */ { n--; /* overwriting t[n] == '\\' */ t[n++] = (char)'{'; t[n++] = (char)'\\'; t[n++] = (char)'"'; t[n++] = s[++k]; t[n++] = (char)'}'; } else /* change x" to x{"} */ { t[n++] = (char)'{'; t[n++] = (char)'"'; t[n++] = (char)'}'; } } } else t[n++] = s[k]; } t[0] = (char)'"'; /* change initial and final */ APPEND_CHAR(t,n-1,'"'); /* braces to quotes */ check_length(n); if (c == EOF) error("End-of-file in braced string"); in_value = NO; return (strcpy(s,t)); } static char * get_digit_string(VOID) { int c; /* current input character */ size_t k; /* index into s[] */ char *s = shared_string; /* memory-saving device */ k = 0; s[k++] = (char)'"'; /* convert to quoted string */ for (c = get_char(); (c != EOF) && Isdigit(c); ) { if (k >= MAX_TOKEN) { APPEND_CHAR(s,k,c); out_with_error(s, "BibTeX string too long for field ``%f''"); return (EMPTY_STRING(s)); } else { s[k++] = (char)c; c = get_char(); } } put_back(c); /* we read past end of digit string */ s[k++] = (char)'"'; /* supply terminating quote */ s[k] = (char)'\0'; check_length(k); return (s); } static char * get_identifier_string(VOID) { int c; /* current input character */ size_t k; /* index into s[] */ char *s = shared_string; /* memory-saving device */ for (c = get_char(), k = 0; (c != EOF) && isidchar(c); ) { if (k >= MAX_TOKEN) { APPEND_CHAR(s,k,c); out_with_error(s, "BibTeX string too long for field ``%f''"); return (EMPTY_STRING(s)); } else { s[k++] = (char)c; c = get_char(); } } put_back(c); /* we read past end of identifier string */ s[k] = (char)'\0'; check_length(k); return (s); } static char * get_inline_comment(VOID) { int c; /* current input character */ size_t k; /* index into s[] */ int newlines; char *s = shared_string; /* memory-saving device */ s[0] = '\0'; c = get_char(); if ((Scribe == NO) && (c == BIBTEX_COMMENT_PREFIX)) { token_start = the_file; /* remember location of token start */ for (s[0] = BIBTEX_COMMENT_PREFIX, c = get_char(), k = 1, newlines = 0; (c != EOF); ) { /* collect up to newline, plus following horizontal space */ if ((newlines == 1) && !Isspace(c)) break; /* here's a loop exit */ if (k >= MAX_TOKEN) { /* split long comments into multiple ones */ s[k++] = '\n'; put_back(c); /* restore lookahead */ c = BIBTEX_COMMENT_PREFIX; /* we put this back too later */ break; /* here's a loop exit */ } if (c == '\n') newlines++; if (newlines > 1) break; /* here's a loop exit */ s[k++] = (char)c; c = get_char(); } s[k] = '\0'; /* terminate token string */ } put_back(c); /* restore lookahead */ return (s); } #if defined(HAVE_STDC) static char * get_line(FILE *fp) #else /* K&R style */ static char * get_line(fp) FILE *fp; #endif { /* return a complete line to the caller, discarding backslash-newlines */ /* on consecutive lines, and discarding the final newline. At EOF, */ /* return (char*)NULL instead. */ static char line[MAX_LINE]; static char *p; static char *more; more = &line[0]; line[0] = (char)'\0'; /* must set in case we hit EOF */ while (fgets(more,(int)(&line[MAX_LINE] - more),fp) != (char *)NULL) { p = strchr(more,'\n'); if (p != (char*)NULL) /* did we get a complete line? */ { /* yes */ *p = '\0'; /* zap final newline */ if ((p > &line[0]) && (*(p-1) == '\\')) /* then have backslash-newline */ more = p - 1; /* so get another line */ else /* otherwise have normal newline */ break; /* so return the current line */ } else /* no, return partial line */ break; } return ((line[0] == '\0' && feof(fp)) ? (char*)NULL : &line[0]); } static char * get_optional_space(VOID) { int c; /* current input character */ char *s = shared_string; /* memory-saving device */ /* Space tokens are returned as single-character values, because */ /* do_optional_space() pushes them back into the input stream before */ /* calling do_newline() and do_space() for further processing. However, */ /* inline comments are returned as multiple-character values */ c = get_char(); switch (c) { case '\n': /* newline token */ case ' ': /* horizontal space token */ case '\f': case '\r': case '\t': case '\v': s[0] = (char)c; s[1] = '\0'; break; case BIBTEX_COMMENT_PREFIX: /* in-line comment token */ put_back(c); s = get_inline_comment(); break; default: /* not optional space */ put_back(c); s[0] = '\0'; break; } return (s); } static int get_parbreak(VOID) { /* This function is called when the current input character is a newline. If keep_linebreaks is YES, it returns a LINEBREAK. If keep_parbreaks is NO, then it returns a space. Otherwise, it looks ahead to the next non-blank character, and if a paragraph break was seen, the return value is a PARBREAK, and otherwise, a space, or a newline if keep_linebreaks is YES. */ if ((in_value == YES) && (keep_linebreaks == YES)) return (LINEBREAK); else if (KEEP_PREAMBLE_SPACES()) return (LINEBREAK); else if (KEEP_STRING_SPACES()) return (LINEBREAK); else if ((in_value == YES) && (keep_parbreaks == YES)) { put_back('\n'); /* so get_next_non_blank() finds it */ put_back(get_next_non_blank()); return ((is_parbreak == YES) ? PARBREAK : ((keep_linebreaks == YES) ? (int)'\n' : (int)' ')); } else return ((int)' '); } static char * get_quoted_string(VOID) { int b_level = 0; /* brace level */ int c; /* current input character */ size_t k; /* index into s[] */ char *s = shared_string; /* memory-saving device */ in_value = YES; for (c = get_char(), k = 0, *s = '\0'; c != EOF; ) { if ((parbreaks == NO) && (is_parbreak == YES)) { put_back(c); /* so this comes AFTER error message */ out_with_parbreak_error(s); in_value = NO; return (EMPTY_STRING(s)); } else if (k >= MAX_TOKEN) { APPEND_CHAR(s,k,c); out_with_error(s, "BibTeX string too long for field ``%f''"); in_value = NO; return (EMPTY_STRING(s)); } else { if (c == '\n') c = get_parbreak(); else if (c == '\f') { if (keep_linebreaks == NO) c = (keep_parbreaks == YES) ? PARBREAK : ' '; } else if (Isspace(c)) c = ' '; /* change whitespace to real space */ else if (c == '{') b_level++; else if (c == '}') b_level--; else if (c == '\\') /* \\ -> \\ */ { s[k++] = (char)c; c = get_char(); if (c == '\\') /* found \\ */ { s[k++] = (char)c; c = get_linebreak(); } else /* \ -> \ */ { put_back(c); c = '\0'; } } if (c != '\0') s[k++] = (char)c; if ((c == '"') && (k > 1) && (b_level == 0)) { if (s[k-2] == '\\') { /* convert \"x inside string at brace-level 0 to {\"x}: */ /* illegal, but hand-entered bibliographies have it */ c = get_char(); if (c != EOF) { k = k - 2; s[k++] = (char)'{'; s[k++] = (char)'\\'; s[k++] = (char)'"'; s[k++] = (char)c; s[k++] = (char)'}'; } } else break; /* here's the loop exit */ } c = Isspace(c) ? get_next_non_blank() : get_char(); } } s[k] = (char)'\0'; check_length(k); if (c == EOF) error("End-of-file in quoted string"); in_value = NO; return (s); } static char * get_Scribe_delimited_string(VOID) { int c; int close_delim; size_t k; int last_c = EOF; char *p; char *s = shared_string; /* memory-saving device */ c = get_char(); p = strchr(Scribe_open_delims,c); /* maybe delimited string? */ if (p == (char*)NULL) { APPEND_CHAR(s,0,c); out_with_error(s,"Expected Scribe value string for field ``%f''"); return (EMPTY_STRING(s)); } /* We have a delimited string */ close_delim = Scribe_close_delims[(int)(p - Scribe_open_delims)]; c = get_next_non_blank(); /* get first character in string */ /* ignoring leading space */ for (k = 0, s[k++] = (char)'"'; (c != EOF) && !((last_c != '\\') && (c == close_delim)) && (k < MAX_TOKEN); k++) { if ((parbreaks == NO) && (is_parbreak == YES)) { s[k] = '\0'; /* ensure string termination */ put_back(c); /* so this comes AFTER error message */ out_with_parbreak_error(s); return (EMPTY_STRING(s)); } if (c == '"') /* protect quotes inside string */ { if (s[k-1] == '\\') { /* then TeX accent in Scribe string */ last_c = c; c = get_char(); if (c == '{') /* change \"{ to {\" */ { s[k-1] = (char)'{'; s[k] = (char)'\\'; s[++k] = (char)'"'; } else /* change \". to {\".} (. = any) */ { s[k-1] = (char)'{'; s[k] = (char)'\\'; s[++k] = (char)'"'; s[++k] = (char)c; s[++k] = (char)'}'; } } else { s[k] = (char)'{'; s[++k] = (char)'"'; s[++k] = (char)'}'; } } else if (c == '\n') s[k] = (char)get_parbreak(); else if (c == '\f') s[k] = (keep_linebreaks == YES) ? (char)'\f' : ((keep_parbreaks == YES) ? (char)PARBREAK : (char)' '); else if (Isspace(c)) s[k] = (char)' '; /* change whitespace to real space */ else if (c == '\\') /* \\ -> \\ */ { s[k] = (char)c; c = get_char(); if (c == '\\') /* found \\ */ { s[++k] = (char)c; c = get_linebreak(); if (c != '\0') s[++k] = (char)c; } else /* \ -> \ */ put_back(c); } else s[k] = (char)c; last_c = c; c = Isspace(c) ? get_next_non_blank() : get_char(); } APPEND_CHAR(s,k,'"'); /* append close delimiter */ if (k >= MAX_TOKEN) { out_with_error(s, "Scribe string too long for field ``%f''"); return (EMPTY_STRING(s)); } check_length(k); return (s); } static char * get_Scribe_identifier_string(VOID) /* read undelimited identifier */ { /* and return quoted equivalent */ int c; size_t k; char *s = shared_string; /* memory-saving device */ c = get_char(); for (k = 0, s[k++] = (char)'"'; isidchar(c) && (k < MAX_TOKEN); k++, c = get_char()) { s[k] = (char)c; } put_back(c); /* put back lookahead */ APPEND_CHAR(s,k,'"'); if (k >= MAX_TOKEN) { out_with_error(s, "Scribe number string too long for field ``%f''"); return (EMPTY_STRING(s)); } ++k; check_length(k); return (s); } static char * get_Scribe_string(VOID) /* read Scribe string */ { int c; do_optional_space(); c = get_char(); /* peek ahead one character */ put_back(c); return (isidchar(c) ? get_Scribe_identifier_string() : get_Scribe_delimited_string()); } static char * get_simple_string(VOID) /* read simple BibTeX string */ { int c; /* current input character */ char *s = shared_string; /* memory-saving device */ *s = '\0'; c = get_next_non_blank(); /* peek ahead to next non-blank */ if (c == EOF) return (EMPTY_STRING(s)); else if ((parbreaks == NO) && (is_parbreak == YES)) { put_back(c); /* so this comes AFTER error message */ out_with_parbreak_error(s); return (EMPTY_STRING(s)); } put_back(c); /* put back lookahead */ token_start = the_file; /* remember location of string start */ if (c == '{') return (get_braced_string()); else if (Isdigit(c)) return (get_digit_string()); else if (c == '"') return (get_quoted_string()); else if (Isalpha(c)) return (get_identifier_string()); else { out_with_error("", "Expected BibTeX value string for field ``%f''"); return (EMPTY_STRING(s)); } } #if defined(HAVE_STDC) static char * get_token(char *s, char **nextp, const char *terminators) #else /* K&R style */ static char * get_token(s,nextp,terminators) char *s; char **nextp; const char *terminators; #endif { char *t = s; char *token; /******************************************************************* Ignoring leading space, find the next token in s[], stopping at end-of-string, or one of the characters in terminators[], whichever comes first. Replace the terminating character in s[] by a NUL. Set *nextp to point to the next character in s[], or to (char*)NULL if end-of-string was reached. Return (char*)NULL if no token was found, or else a pointer to its start in s[]. The job is terminated with an error message if a syntax error is detected. Quoted strings are correctly recognized as valid tokens, and returned with their surrounding quotes removed, and embedded escape sequences expanded. The comment character is recognized outside quoted strings, but not inside. *******************************************************************/ if (t != (char*)NULL) SKIP_SPACE(t); if ((t == (char*)NULL) || (*t == '\0') || (*t == COMMENT_PREFIX)) { /* initial sanity check */ t = (char*)NULL; /* save for *nextp later */ token = (char*)NULL; } else if (*t == '"') /* then collect quoted string */ { token = ++t; /* drop leading quote */ for ( ; *t && (*t != '"'); ++t) { /* find ending quote */ /* step over escape sequences; it doesn't matter if we have */ /* \123, since we are only looking for the ending quote */ if (*t == '\\') ++t; } if (*t == '"') /* then found valid string */ { *t++ = '\0'; /* terminate token */ do_escapes(token); /* and expand escape sequences */ } else { (void)fprintf(stdlog, "%s Bad line [%s] in initialization file [%s]\n", ERROR_PREFIX, s, initialization_file_name); exit(EXIT_FAILURE); } } else /* else collect unquoted string */ { for (token = t; *t && (*t != COMMENT_PREFIX) && (strchr(terminators,*t) == (char*)NULL); ++t) NOOP; /* scan over token */ if ((*t == '\0') || (*t == COMMENT_PREFIX)) /* then hit end of s[] */ t = (char*)NULL; /* save for *nextp later */ else /* else still inside s[] */ *t++ = '\0'; /* terminate token */ } *nextp = t; /* set continuation position */ return (token); } static void new_entry(VOID) /* initialize for new BibTeX @name{...} */ { at_level = 0; brace_level = 0; is_parbreak = NO; non_white_chars = 0; rflag = NO; /* already synchronized */ current_entry_name[0] = '\0'; /* empty current_xxx[] strings */ current_field[0] = '\0'; current_key[0] = '\0'; current_value[0] = '\0'; } #if defined(HAVE_STDC) static void new_io_pair(IO_PAIR *pair) #else /* K&R style */ static void new_io_pair(pair) IO_PAIR *pair; #endif { new_position(&pair->input); new_position(&pair->output); } #if defined(HAVE_STDC) static void new_position(POSITION *position) #else /* K&R style */ static void new_position(position) POSITION *position; #endif { position->byte_position = 0L; position->last_column_position = 0L; position->column_position = 0L; position->line_number = 1L; } static void out_close_brace(VOID) { out_string(TOKEN_RBRACE, "}"); } static void out_comma(VOID) { YESorNO save_wrapping; save_wrapping = wrapping; wrapping = NO; out_string(TOKEN_COMMA, ","); wrapping = save_wrapping; } static void out_complex_value(VOID) { char *s; char *p; /* A complex value may contain concatenated simple strings with */ /* intervening inline comments delimited by BIBTEX_HIDDEN_DELIMITER. */ /* We split it apart and output separate tokens. */ for (s = ¤t_value[0]; *s; ) { p = strchr(s,BIBTEX_HIDDEN_DELIMITER); if (p == (char*)NULL) { out_string((*s == '"') ? TOKEN_VALUE : TOKEN_ABBREV,s); check_length(strlen(s)); return; } *p = '\0'; out_string((*s == '"') ? TOKEN_VALUE : TOKEN_ABBREV,s); check_length(strlen(s)); s = p + 1; p = strchr(s,BIBTEX_HIDDEN_DELIMITER); if (p == (char*)NULL) /* should never happen, but recover safely */ p = strchr(s,'\0'); /* if it does */ *p = '\0'; out_string(TOKEN_INLINE,s); check_length(strlen(s)); s = p + 1; } } static void out_equals(VOID) { if (prettyprint == YES) { if (KEEP_PREAMBLE_SPACES()) out_c('='); else if (KEEP_STRING_SPACES()) out_c('='); else { out_c(' '); if (align_equals == YES) out_spaces((int)(value_indentation - the_file.output.column_position - 2)); out_c('='); /* standardize to = */ out_c(' '); /* always surround = by spaces */ } } else out_token(TOKEN_EQUALS,"="); } static void out_field(VOID) { if (prettyprint == YES) { if (in_string == NO) out_spaces(field_indentation); out_s(current_field); } else out_token((in_string == YES) ? TOKEN_ABBREV : TOKEN_FIELD, current_field); } static void out_open_brace(VOID) { out_string(TOKEN_LBRACE, "{"); } #if defined(HAVE_STDC) static void out_other(const char *s) /* output a non-BibTeX string */ #else /* K&R style */ static void out_other(s) const char *s; #endif { if (prettyprint == YES) out_s(s); else { if (Isspace(s[0])) /* do_other() guarantees whole token is whitespace */ out_token(TOKEN_SPACE, s); else if (s[0] == BIBTEX_COMMENT_PREFIX) out_token(TOKEN_INLINE, s); else out_token(TOKEN_LITERAL, s); } } static void out_value(VOID) { static OPTION_FUNCTION_ENTRY checks[] = { {"author", 6, check_other}, {"chapter", 7, check_chapter}, {"CODEN", 5, check_CODEN}, {"ISBN", 4, check_ISBN}, {"ISSN", 4, check_ISSN}, {"month", 5, check_month}, {"number", 6, check_number}, {"pages", 5, check_pages}, {"volume", 6, check_volume}, {"year", 4, check_year}, {(const char*)NULL, 0, (void (*)(VOID))NULL}, }; static OPTION_FUNCTION_ENTRY fixes[] = { {"author", 6, fix_namelist}, {"editor", 6, fix_namelist}, {"month", 5, fix_month}, {"pages", 5, fix_pages}, {"title", 5, fix_title}, {(const char*)NULL, 0, (void (*)(VOID))NULL}, }; trim_value(); if ((in_preamble == NO) && (in_string == NO)) { (void)apply_function(current_field,fixes); if ((check_values == YES) && !STREQUAL(current_value,"\"\"")) { if (apply_function(current_field,checks) == NO) check_other(); } if ((remove_OPT_prefixes == YES) && (strncmp(current_field,"OPT",3) == 0) && (strlen(current_field) > (size_t)3) && (strlen(current_value) > (size_t)2)) /* 2, not 0: quotes are included! */ { out_c(DELETE_LINE); Memmove(current_field,¤t_field[3], (size_t)(strlen(current_field)-3+1)); /* reduce "OPTname" to "name" */ out_field(); out_equals(); out_spaces((int)(value_indentation - the_file.output.column_position)); } else if ((delete_empty_values == YES) && (STREQUAL(current_value,"\"\""))) { /* 2, not 0, because quotes are included! */ out_c(DELETE_LINE); discard_next_comma = YES; return; } } out_complex_value(); } #if defined(HAVE_STDC) static void prt_pattern(const char *fieldname, const char *pattern, const char *message) #else /* K&R style */ static void prt_pattern(fieldname,pattern,message) const char *fieldname; const char *pattern; const char *message; #endif { if (print_patterns == YES) { if ((pattern == (const char*)NULL) || (*pattern == '\0')) (void)fprintf(stdlog, "\nfile=[%s] field=[%-12s] existing patterns discarded\n\n", initialization_file_name, fieldname); else if (message == (char*)NULL) (void)fprintf(stdlog, "file=[%s] field=[%-12s] pattern=[%s]\n", initialization_file_name, fieldname, pattern); else (void)fprintf(stdlog, "file=[%s] field=[%-12s] pattern=[%s] message[%s]\n", initialization_file_name, fieldname, pattern, message); } } #if defined(HAVE_STDC) static void put_back_string(const char *s) /* put string value back onto input stream */ #else /* K&R style */ static void put_back_string(s) /* put string value back onto input stream */ const char *s; #endif { const char *p; for (p = strchr(s,'\0') - 1; p >= s; p--) put_back(*p); } static void trim_value(VOID) { /* trim leading and trailing space from current_value[] */ size_t k; size_t n = strlen(current_value); if ((current_value[0] == '"') && Isspace(current_value[1])) { /* then quoted string value with leading space*/ for (k = 1; (k < n) && Isspace(current_value[k]); ++k) NOOP; Memmove(¤t_value[1], ¤t_value[k], (size_t)(n + 1 - k)); /* copy includes trailing NULL */ n = strlen(current_value); } if (current_value[n-1] == '"') { for (k = n; (k > 1) && Isspace(current_value[k-2]); --k) NOOP; if (current_value[k-2] == '\\') /* maybe have \ or \\ */ { if ((k > 2) && (current_value[k-3] != '\\')) --k; /* discard final \ */ } current_value[k-1] = (char)'"'; current_value[k] = (char)'\0'; } } bibclean-2.11.4.1.orig/custom.h0000644000175200017520000000735606525720206015370 0ustar debiandebian#ifndef CUSTOM_H_DEFINED_ #define CUSTOM_H_DEFINED_ /*********************************************************************** This file is included by config.h, but is not part of that file because it must be protected from autoconf twiddling. Its purpose is to provide workarounds for limitations of autoconf. ***********************************************************************/ /* Make a preliminary sanity check on which pattern matching we will use */ #if defined(HAVE_REGEXP) #if defined(HAVE_RECOMP) || defined(HAVE_PATTERNS) || defined(HAVE_OLDCODE) ?? Define only one of HAVE_OLDCODE, HAVE_PATTERNS, HAVE_REGEXP, and HAVE_RECOMP #endif #endif #if defined(HAVE_RECOMP) #if defined(HAVE_REGEXP) || defined(HAVE_PATTERNS) || defined(HAVE_OLDCODE) ?? Define only one of HAVE_OLDCODE, HAVE_PATTERNS, HAVE_REGEXP, and HAVE_RECOMP #endif #endif #if defined(HAVE_PATTERNS) #if defined(HAVE_RECOMP) || defined(HAVE_REGEXP) || defined(HAVE_OLDCODE) ?? Define only one of HAVE_OLDCODE, HAVE_PATTERNS, HAVE_REGEXP, and HAVE_RECOMP #endif #endif #if defined(HAVE_OLDCODE) #if defined(HAVE_PATTERNS) || defined(HAVE_RECOMP) || defined(HAVE_REGEXP) ?? Define only one of HAVE_OLDCODE, HAVE_PATTERNS, HAVE_REGEXP, and HAVE_RECOMP #endif #endif #if !(defined(HAVE_REGEXP) || defined(HAVE_RECOMP)) #if !(defined(HAVE_PATTERNS) || defined(HAVE_OLDCODE)) #define HAVE_PATTERNS 1 #endif #endif /* Ensure that only ONE of HAVE_TERMIOS_H, HAVE_TERMIO_H, and HAVE_SGTTY_H is defined, with preference in that order */ #if defined(HAVE_TERMIOS_H) #undef HAVE_TERMIO_H #undef HAVE_SGTTY_H #else #if defined(HAVE_TERMIO_H) #undef HAVE_TERMIOS_H #undef HAVE_SGTTY_H #endif #endif /* defined(HAVE_TERMIOS_H) */ #if !defined(HAVE_TERMIOS_H) && !defined(HAVE_TERMIO_H) && !defined(HAVE_SGTTY_H) #if defined(sun) /* Sun acc compiler produces warnings from inclusion of , causing configure to conclude that it is not available */ #define HAVE_SGTTY_H 1 #endif #endif #if (defined(__LCC__) || defined(__cplusplus) || defined(c_plusplus)) /* lcc is a strictly Standard C conforming compiler. However, because of an lcc 3.4b header file bug on Sun Solaris 2.x, configure will conclude that STDC_HEADERS and HAVE_STDC should NOT be defined. We therefore override any choices made in config.h. If a C++ compiler is used, override possibly erroneous conclusions made by configure about header files and prototypes. */ #undef STDC_HEADERS #define STDC_HEADERS 1 #undef HAVE_STDC #define HAVE_STDC 1 #undef ARGS #define ARGS(plist) plist #undef VOID #define VOID void #endif #if defined(__LCC__) extern int fileno ARGS((FILE *)); /* fileno() not in lcc */ #endif /* defined(__LCC__) */ #if defined(__NeXT__) && defined(__GNUG__) /* g++ on NeXT has its own libc.h which just includes stdlib.h, but that lacks prototypes for three functions that we need. The vendor-provided libc.h has them. */ extern "C" { extern int access ARGS((const char *, int)); extern int ioctl ARGS((int, long, ...)); extern unsigned int sleep ARGS((unsigned int seconds)); }; #endif /* Although Microsoft C 6.0 and 7.0 define _MSC_VER, compiler versions 5.0 and 5.1 do not, so the only distinguishing symbol left is M_I86, which Watcom C unfortunately also defines, sigh... */ #if defined(M_I86) && !defined(__WATCOMC__) #define CONST /* bug workaround for IBM PC Microsoft C compilers */ #else #define CONST const #endif /*********************************************************************** Put any other local customizations here, when configure does not automatically generate the config.h settings that you want. Please report them back to the package author, , for inclusion in future releases. ***********************************************************************/ #endif /* CUSTOM_H_DEFINED_ */ bibclean-2.11.4.1.orig/testscr3.org0000644000175200017520000000077305304620240016153 0ustar debiandebian@Comment "Old style comment" @Begin {CommENT} This is a block comment with two lines. @End @Begin {CommENT} This is a block comment with nested environments. @Begin{foo} @Begin{bar} @End{bar} @End{foo} @End @Begin {CommENT} This is a block comment with two lines and embedded braces: {one} {two} {three} @End @Begin {CommENT} This is a block comment with two lines and embedded braces: {one} {two} {three}. Here are some mismatched braces: { { { } } } } } @End bibclean-2.11.4.1.orig/romtol.c0000644000175200017520000001133306142465446015362 0ustar debiandebian/* -*-C-*- romtol.c */ /*-->romtol*/ /**********************************************************************/ /****************************** romtol ********************************/ /**********************************************************************/ #include #include "xctype.h" #include "xstring.h" #include "xstdlib.h" RCSID("$Id: romtol.c,v 1.1 1995/10/07 15:51:44 beebe Exp $") /* * $Log: romtol.c,v $ * Revision 1.1 1995/10/07 15:51:44 beebe * Initial revision * * Revision 1.1 1995/10/07 15:50:28 beebe * Initial revision * * Revision 1.2 1992/12/28 22:08:40 beebe * Add additional comments about Roman number system. * * Revision 1.1 1992/12/28 16:32:11 beebe * Initial revision * */ long romtol ARGS((const char *nptr_, char** endptr_)); int isroman ARGS((int c_)); static int roman_digit_value ARGS((int c_)); /*********************************************************************** This file provides two functions, romtol() (analogous to strtol()) for converting from Roman numbers to long integers, and isroman() for testing whether a character is a valid Roman numeral. Roman numbers are represented with the symbols i (1), v (5), x (10), l (50), c (100), d (500), m (1000), v-overbar (5000), x-overbar (10000), c-overbar (100000), m-overbar (1000000) in a peculiar way. There is no representation of zero at all, and letter case is NOT significant. `Digits' are ordinarily given in order of descending numerical values, with the number value being the sum of the digit values. However, if a larger digit follows a smaller one, then the smaller one is subtracted from the larger one. Thus, ix is -1 + 10 = 9, while xi is 10 + 1 = 11. One source that I consulted claimed that when digits are repeated, the subtraction rule is suppressed, so iiix would be 3 + 10 = 13, not 2 - 1 + 10 = 11. The current code does not implement this feature; iiix will evaluate to 11. The overbar representation for 5000 and up is not representable in most computer character sets, so we ignore it here. The Roman number representation is not unique. For example, clocks traditionally use iiii for 4, while iv is used elsewhere. 1990 can be written as mxm or mcmxc. ***********************************************************************/ #if defined(HAVE_STDC) long /* Convert Roman number to long */ romtol( const char *nptr, /* pointer to Roman number string */ char** endptr /* if non-NULL, set on return to */ /* point just beyond last character */ /* converted */ ) #else /* NOT defined(HAVE_STDC) */ long romtol(nptr,endptr) const char *nptr; char** endptr; #endif /* defined(HAVE_STDC) */ { long last_value; long number; const char *p; long value; if (nptr == (const char*)NULL) { if (endptr != (char**)NULL) *endptr = (char*)NULL; return 0L; } for (p = nptr; isspace(*p); ++p) /* ignore leading space */ /* NO-OP */; for (last_value = 0, number = 0L; *p; ++p) { value = (long)roman_digit_value((int)(*p)); if (value == 0L) break; if (value > last_value) number -= last_value; else number += last_value; last_value = value; } number += last_value; if (endptr != (char**)NULL) *endptr = (char*)p; return (number); } #if defined(HAVE_STDC) int isroman(int c) /* return 1 if c is Roman digit, otherwise 0 */ #else /* NOT defined(HAVE_STDC) */ int isroman(c) int c; #endif /* defined(HAVE_STDC) */ { return ((roman_digit_value(c) == 0) ? 0 : 1); } #if defined(HAVE_STDC) static int roman_digit_value(int c) /* return digit value, or 0 if non-digit */ #else /* NOT defined(HAVE_STDC) */ static int roman_digit_value(c) int c; #endif /* defined(HAVE_STDC) */ { static const char* roman_digits = "ivxlcdm"; static const int roman_values[] = { 1, 5, 10, 50, 100, 500, 1000 }; const char *p = strchr(roman_digits,isupper(c) ? tolower(c) : c); if (p == (const char*)NULL) return 0; else return roman_values[(int)(p - roman_digits)]; } #ifdef TEST /*********************************************************************** Simple test program for romtol(). Values are read from stdin, and the results are echoed to stdout. ***********************************************************************/ #ifndef EXIT_SUCCESS #define EXIT_SUCCESS 0 #endif /* EXIT_SUCCESS */ #if defined(HAVE_STDC) int main( int argc, char *argv[] ) #else /* NOT defined(HAVE_STDC) */ int main(argc,argv) int argc; char *argv[]; #endif /* defined(HAVE_STDC) */ { char s[25]; char *endptr; long n; while (gets(s) != (char*)NULL) { n = romtol(s,&endptr); (void)printf("romtol(): %s -> %ld\tRemainder = [%s]\n", s,n,(endptr == (char*)NULL) ? "" : endptr); } exit (EXIT_SUCCESS); return (0); } #endif /* TEST */ bibclean-2.11.4.1.orig/testbib5.org0000644000175200017520000000323105650271223016121 0ustar debiandebian@misc{label, abstract = {\TeX{} ben"otigt eine gro"se Anzahl von Hilfskomponenten (Dateien und Programme), deren Bedeutung und gegenseitige \verb="abc"=}, abstract2 = {\TeX{} ben"otigt eine gro"se Anzahl von Hilfskomponenten (Dateien und Programme), deren Bedeutung und gegenseitige {\verb="abc"=}}, note = {\TeX{} ben{\"o}tigt eine gro{\"s}e Anzahl von Hilfskomponenten (Dateien und Programme), deren Bedeutung und gegenseitige {\tt"}\verb=abc={\tt"}}, note2 = {\TeX{} ben{\"o}tigt eine gro{\"s}e Anzahl von Hilfskomponenten (Dateien und Programme), deren Bedeutung und gegenseitige {\verb="abc"=}}, verbatim1 = {\verb="abc"}, verbatim2 = {{\verb="abc"}}, verbatim3 = "{\verb="abc"}", everything1 = {umlaut accents: "a, "e, "i, "o, "u, "A, "E, "I, "O, "U,\\ sharp s: "s,\\ German quotes: "` (left), "' (right),\\ French quotes: "< (left), "> (right),\\ discretionary hyphens: ba"cken, Bet"tuch, xx"ffxx\\ ligature separator: Auf"|lage,\\ super discretionary hyphen: Rechen"-fehler,\\ invisible hyphen: /usr""/spool""/news}, everything2 = "{umlaut accents: "a, "e, "i, "o, "u, "A, "E, "I, "O, "U,\\ sharp s: "s,\\ German quotes: "` (left), "' (right),\\ French quotes: "< (left), "> (right),\\ discretionary hyphens: ba"cken, Bet"tuch, xx"ffxx\\ ligature separator: Auf"|lage,\\ super discretionary hyphen: Rechen"-fehler,\\ invisible hyphen: /usr""/spool""/news}", } bibclean-2.11.4.1.orig/save/0000755000175200017520000000000007133432654014633 5ustar debiandebianbibclean-2.11.4.1.orig/save/config.h0000444000175200017520000001224107133432055016242 0ustar debiandebian/* config.h. Generated automatically by configure. */ /* WARNING: Do NOT edit the config.h file; instead, put any needed changes in custom.h, so that they can override assumptions made in the automatically-generated config.h file */ /* #undef STDC_HEADERS */ /* #undef _ALL_SOURCE */ /* #undef _POSIX_SOURCE */ #define HAVE_STDC 1 /* Define if you want old pattern-less string matching in .ini files */ /* #undef HAVE_OLDCODE */ /* Define if you want standard bibclean-specific pattern in .ini files */ #define HAVE_PATTERNS 1 /* Define if you want regular-expression patterns in .ini files using re_comp() */ /* #undef HAVE_RECOMP */ /* #undef HAVE_REGEXP */ #if !(defined(__cplusplus) || defined(c_plusplus)) /* Define to empty if the keyword does not work, but do nothing in */ /* C++ environment, because autoconf 2.4 gets the wrong answer from */ /* the AC_C_CONST test program under C++ compilation. */ #define const #endif /* Define if your free() requires (char*) cast instead of (void*) */ /* #undef FREE_CAST_IS_CHAR_STAR */ /* Define if your compiler recognizes \a as an alert (ASCII BEL) character */ #define HAVE_ALERT_CHAR 1 /* Library functions that we need */ /* #undef HAVE_GETCWD */ /* #undef HAVE_GETWD */ /* #undef HAVE_STRCSPN */ /* #undef HAVE_STRDUP */ /* #undef HAVE_STRSPN */ /* #undef HAVE_STRSTR */ /* #undef HAVE_STRTOD */ /* #undef HAVE_STRTOL */ /* Header files that we might need */ /* #undef HAVE_CONIO_H */ #define HAVE_CTYPE_H 1 /* #undef HAVE_DESCRIP_H */ #define HAVE_ERRNO_H 1 #define HAVE_FCNTL_H 1 /* #undef HAVE_IODEF_H */ /* #undef HAVE_IO_H */ /* #undef HAVE_JPIDEF_H */ #define HAVE_LIMITS_H 1 /* #undef HAVE_OSFCN_H */ #define HAVE_PWD_H 1 #define HAVE_REGEXP_H 1 #define HAVE_REGEX_H 1 /* #undef HAVE_RMS_H */ #define HAVE_SGTTY_H 1 /* #undef HAVE_SSDEF_H */ /* #undef HAVE_STAT_H */ /* #undef HAVE_STDDEF_H */ #define HAVE_STDIO_H 1 #define HAVE_STDLIB_H 1 #define HAVE_STRING_H 1 #define HAVE_SYS_IOCTL_H 1 #define HAVE_SYS_PARAM_H 1 #define HAVE_SYS_STAT_H 1 #define HAVE_SYS_TYPES_H 1 #define HAVE_TERMIOS_H 1 #define HAVE_TERMIO_H 1 #define HAVE_TIME_H 1 /* #undef HAVE_TT2DEF_H */ /* #undef HAVE_TTDEF_H */ /* #undef HAVE_TYPES_H */ #define HAVE_UNISTD_H 1 /* #undef HAVE_UNIXIO_H */ #define HAVE_IOCTL_PROTOTYPE 1 #define RCSID(s) static char rcsid[] = s; #define OS_UNIX 1 #include /* NB: some systems have Standard C header files, but compilers that do not accept function prototypes (e.g. HP HP-UX 9.0.3 /bin/cc) */ #if defined(STDC_HEADERS) && (defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus)) #define ARGS(plist) plist #define VOID void #else #define ARGS(plist) () #define VOID #endif #define SCREEN_LINES 24 /*********************************************************************** The limit on file name lengths is non-standard: -------- ------------- ------------------------------------------ Name Definition System -------- ------------- ------------------------------------------ FNMAX PCC-20 MAXPATH Turbo C 2.0, C and C++ 3.0, and TopSpeed C _MAX_PATH Microsoft C 5.0, 6.0, 7.0 and TopSpeed C MAXPATHLEN Sun OS (4.2BSD), 4.3BSD, Gould UTX/32, HPUX, KCC-20, AIX (RT, RS, PS/2, 370), HP/Apollo DomainOS, DEC Alpha (OSF/1) PATH_MAX SYS V (Silicon Graphics) PATH_MAX POSIX, DEC Alpha (OSF/1) FILENAME_MAX Intel RMX, NeXT Mach, Turbo C/C++ 3.0 -------- ------------- ------------------------------------------ ***********************************************************************/ #if defined(HAVE_SYS_PARAM_H) #include #endif #if defined(HAVE_LIMITS_H) #include #endif #if defined(HAVE_STDLIB_H) #include #endif #if defined(HAVE_UNIXIO_H) #include #endif #if !defined(MAXPATHLEN) && defined(FNMAX) #define MAXPATHLEN FNMAX #endif #if !defined(MAXPATHLEN) && defined(MAXPATH) #define MAXPATHLEN MAXPATH #endif #if !defined(MAXPATHLEN) && defined(_MAX_PATH) #define MAXPATHLEN _MAX_PATH #endif #if !defined(MAXPATHLEN) && defined(PATH_MAX) #define MAXPATHLEN PATH_MAX #endif #if !defined(MAXPATHLEN) && defined(FILENAME_MAX) #define MAXPATHLEN FILENAME_MAX #endif #if !defined(MAXPATHLEN) && defined(FNMAX) #define MAXPATHLEN 1024 #endif #if OS_PCDOS #define SEP_COMP " ;,|" /* separators between filename components */ #define SEP_PATH "\\" /* separators between directory path and filename */ #endif #if OS_UNIX #define SEP_COMP " ;:,|" /* separators between filename components */ #define SEP_PATH "/" /* separators between directory path and filename */ #endif #if OS_VAXVMS #define SEP_COMP " ;,|" /* separators between filename components */ #define SEP_PATH ":]" /* separators between directory path and filename */ /* first char is what we default to */ #endif #if defined(__TURBOC__) /* #undef fileno */ #define fileno(f) ((f)->fd) #endif #include #if !defined(HAVE_IOCTL_PROTOTYPE) #if defined(__cplusplus) || defined(c_plusplus) /* system files should have: extern "C" {int ioctl ARGS((int, int, ...));} */ #else extern int ioctl ARGS((int, int, ...)); #endif #endif #if defined(FREE_CAST_IS_CHAR_STAR) #define FREE(p) free((char*)(p)) #else #define FREE(p) free((void*)(p)) #endif bibclean-2.11.4.1.orig/save/configure0000555000175200017520000017312407133430666016551 0ustar debiandebian#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated automatically using autoconf version 2.13 # Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. # Defaults: ac_help= ac_default_prefix=/usr/local # Any additions from configure.in: # Initialize some variables set by options. # The variables have the same names as the options, with # dashes changed to underlines. build=NONE cache_file=./config.cache exec_prefix=NONE host=NONE no_create= nonopt=NONE no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= target=NONE verbose= x_includes=NONE x_libraries=NONE bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datadir='${prefix}/share' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' infodir='${prefix}/info' mandir='${prefix}/man' # Initialize some other variables. subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Maximum number of lines to put in a shell here document. ac_max_here_lines=12 ac_prev= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval "$ac_prev=\$ac_option" ac_prev= continue fi case "$ac_option" in -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; *) ac_optarg= ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case "$ac_option" in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir="$ac_optarg" ;; -build | --build | --buil | --bui | --bu) ac_prev=build ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build="$ac_optarg" ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file="$ac_optarg" ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) datadir="$ac_optarg" ;; -disable-* | --disable-*) ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` # Reject names that are not valid shell variable names. if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } fi ac_feature=`echo $ac_feature| sed 's/-/_/g'` eval "enable_${ac_feature}=no" ;; -enable-* | --enable-*) ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` # Reject names that are not valid shell variable names. if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } fi ac_feature=`echo $ac_feature| sed 's/-/_/g'` case "$ac_option" in *=*) ;; *) ac_optarg=yes ;; esac eval "enable_${ac_feature}='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix="$ac_optarg" ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he) # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat << EOF Usage: configure [options] [host] Options: [defaults in brackets after descriptions] Configuration: --cache-file=FILE cache test results in FILE --help print this message --no-create do not create output files --quiet, --silent do not print \`checking...' messages --version print the version of autoconf that created configure Directory and file names: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [same as prefix] --bindir=DIR user executables in DIR [EPREFIX/bin] --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] --libexecdir=DIR program executables in DIR [EPREFIX/libexec] --datadir=DIR read-only architecture-independent data in DIR [PREFIX/share] --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data in DIR [PREFIX/com] --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] --libdir=DIR object code libraries in DIR [EPREFIX/lib] --includedir=DIR C header files in DIR [PREFIX/include] --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] --infodir=DIR info documentation in DIR [PREFIX/info] --mandir=DIR man documentation in DIR [PREFIX/man] --srcdir=DIR find the sources in DIR [configure dir or ..] --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names EOF cat << EOF Host type: --build=BUILD configure for building on BUILD [BUILD=HOST] --host=HOST configure for HOST [guessed] --target=TARGET configure for TARGET [TARGET=HOST] Features and packages: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR EOF if test -n "$ac_help"; then echo "--enable and --with options recognized:$ac_help" fi exit 0 ;; -host | --host | --hos | --ho) ac_prev=host ;; -host=* | --host=* | --hos=* | --ho=*) host="$ac_optarg" ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir="$ac_optarg" ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir="$ac_optarg" ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir="$ac_optarg" ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir="$ac_optarg" ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ | --locals | --local | --loca | --loc | --lo) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) localstatedir="$ac_optarg" ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir="$ac_optarg" ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir="$ac_optarg" ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix="$ac_optarg" ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix="$ac_optarg" ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix="$ac_optarg" ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name="$ac_optarg" ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir="$ac_optarg" ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir="$ac_optarg" ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site="$ac_optarg" ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir="$ac_optarg" ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir="$ac_optarg" ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target="$ac_optarg" ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers) echo "configure generated by autoconf version 2.13" exit 0 ;; -with-* | --with-*) ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` # Reject names that are not valid shell variable names. if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } fi ac_package=`echo $ac_package| sed 's/-/_/g'` case "$ac_option" in *=*) ;; *) ac_optarg=yes ;; esac eval "with_${ac_package}='$ac_optarg'" ;; -without-* | --without-*) ac_package=`echo $ac_option|sed -e 's/-*without-//'` # Reject names that are not valid shell variable names. if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } fi ac_package=`echo $ac_package| sed 's/-/_/g'` eval "with_${ac_package}=no" ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes="$ac_optarg" ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries="$ac_optarg" ;; -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } ;; *) if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then echo "configure: warning: $ac_option: invalid host type" 1>&2 fi if test "x$nonopt" != xNONE; then { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } fi nonopt="$ac_option" ;; esac done if test -n "$ac_prev"; then { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } fi trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 # File descriptor usage: # 0 standard input # 1 file creation # 2 errors and warnings # 3 some systems may open it to /dev/tty # 4 used on the Kubota Titan # 6 checking for... messages and results # 5 compiler messages saved in config.log if test "$silent" = yes; then exec 6>/dev/null else exec 6>&1 fi exec 5>./config.log echo "\ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. " 1>&5 # Strip out --no-create and --no-recursion so they do not pile up. # Also quote any args containing shell metacharacters. ac_configure_args= for ac_arg do case "$ac_arg" in -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c) ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) ac_configure_args="$ac_configure_args '$ac_arg'" ;; *) ac_configure_args="$ac_configure_args $ac_arg" ;; esac done # NLS nuisances. # Only set these to C if already set. These must not be set unconditionally # because not all systems understand e.g. LANG=C (notably SCO). # Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! # Non-C LC_CTYPE values break the ctype check. if test "${LANG+set}" = set; then LANG=C; export LANG; fi if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -rf conftest* confdefs.h # AIX cpp loses on an empty file, so make sure it contains at least a newline. echo > confdefs.h # A filename unique to this package, relative to the directory that # configure is in, which we can look for to find out if srcdir is correct. ac_unique_file=bibclean.c # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then its parent. ac_prog=$0 ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. srcdir=$ac_confdir if test ! -r $srcdir/$ac_unique_file; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } else { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } fi fi srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then if test "x$prefix" != xNONE; then CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" else CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then echo "loading site script $ac_site_file" . "$ac_site_file" fi done if test -r "$cache_file"; then echo "loading cache $cache_file" . $cache_file else echo "creating cache $cache_file" > $cache_file fi ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cc_cross ac_exeext= ac_objext=o if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then ac_n= ac_c=' ' ac_t=' ' else ac_n=-n ac_c= ac_t= fi else ac_n= ac_c='\c' ac_t= fi for ac_prog in gawk nawk mawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:534: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_AWK'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else case "$AWK" in /*) ac_cv_path_AWK="$AWK" # Let the user override the test with a path. ;; ?:/*) ac_cv_path_AWK="$AWK" # Let the user override the test with a dos path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then ac_cv_path_AWK="$ac_dir/$ac_word" break fi done IFS="$ac_save_ifs" ;; esac fi AWK="$ac_cv_path_AWK" if test -n "$AWK"; then echo "$ac_t""$AWK" 1>&6 else echo "$ac_t""no" 1>&6 fi test -n "$AWK" && break done echo $ac_n "checking whether we have NeXT system""... $ac_c" 1>&6 echo "configure:571: checking whether we have NeXT system" >&5 if test -d /NextAdmin then CFLAGS=-posix echo "$ac_t""yes" 1>&6 else echo "$ac_t""no" 1>&6 fi # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:582: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then ac_cv_prog_CC="gcc" break fi done IFS="$ac_save_ifs" fi fi CC="$ac_cv_prog_CC" if test -n "$CC"; then echo "$ac_t""$CC" 1>&6 else echo "$ac_t""no" 1>&6 fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:612: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_prog_rejected=no ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" break fi done IFS="$ac_save_ifs" if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# -gt 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift set dummy "$ac_dir/$ac_word" "$@" shift ac_cv_prog_CC="$@" fi fi fi fi CC="$ac_cv_prog_CC" if test -n "$CC"; then echo "$ac_t""$CC" 1>&6 else echo "$ac_t""no" 1>&6 fi if test -z "$CC"; then case "`uname -s`" in *win32* | *WIN32*) # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:663: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then ac_cv_prog_CC="cl" break fi done IFS="$ac_save_ifs" fi fi CC="$ac_cv_prog_CC" if test -n "$CC"; then echo "$ac_t""$CC" 1>&6 else echo "$ac_t""no" 1>&6 fi ;; esac fi test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 echo "configure:695: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF #line 706 "configure" #include "confdefs.h" main(){return(0);} EOF if { (eval echo configure:711: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then ac_cv_prog_cc_cross=no else ac_cv_prog_cc_cross=yes fi else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_prog_cc_works=no fi rm -fr conftest* ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cc_cross echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 echo "configure:737: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 echo "configure:742: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no fi fi echo "$ac_t""$ac_cv_prog_gcc" 1>&6 if test $ac_cv_prog_gcc = yes; then GCC=yes else GCC= fi ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 echo "configure:770: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else echo 'void f(){}' > conftest.c if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then ac_cv_prog_cc_g=yes else ac_cv_prog_cc_g=no fi rm -f conftest* fi echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 if test "$ac_test_CFLAGS" = set; then CFLAGS="$ac_save_CFLAGS" elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi for ac_prog in $CCC c++ g++ gcc CC cxx cc++ cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:806: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then ac_cv_prog_CXX="$ac_prog" break fi done IFS="$ac_save_ifs" fi fi CXX="$ac_cv_prog_CXX" if test -n "$CXX"; then echo "$ac_t""$CXX" 1>&6 else echo "$ac_t""no" 1>&6 fi test -n "$CXX" && break done test -n "$CXX" || CXX="gcc" echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6 echo "configure:838: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 ac_ext=C # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext << EOF #line 849 "configure" #include "confdefs.h" int main(){return(0);} EOF if { (eval echo configure:854: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cxx_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then ac_cv_prog_cxx_cross=no else ac_cv_prog_cxx_cross=yes fi else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_prog_cxx_works=no fi rm -fr conftest* ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cc_cross echo "$ac_t""$ac_cv_prog_cxx_works" 1>&6 if test $ac_cv_prog_cxx_works = no; then { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 echo "configure:880: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6 cross_compiling=$ac_cv_prog_cxx_cross echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6 echo "configure:885: checking whether we are using GNU C++" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.C <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gxx=yes else ac_cv_prog_gxx=no fi fi echo "$ac_t""$ac_cv_prog_gxx" 1>&6 if test $ac_cv_prog_gxx = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS="${CXXFLAGS+set}" ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS= echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6 echo "configure:913: checking whether ${CXX-g++} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else echo 'void f(){}' > conftest.cc if test -z "`${CXX-g++} -g -c conftest.cc 2>&1`"; then ac_cv_prog_cxx_g=yes else ac_cv_prog_cxx_g=no fi rm -f conftest* fi echo "$ac_t""$ac_cv_prog_cxx_g" 1>&6 if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS="$ac_save_CXXFLAGS" elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi echo $ac_n "checking whether we need _ALL_SOURCE""... $ac_c" 1>&6 echo "configure:946: checking whether we need _ALL_SOURCE" >&5 all=no cat > conftest.$ac_ext < #include struct winsize w; int main() { ; return 0; } EOF if { (eval echo configure:960: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then : else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* all=maybe fi rm -f conftest* if test $all = maybe ; then cat > conftest.$ac_ext < #include struct winsize w; int main() { ; return 0; } EOF if { (eval echo configure:983: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat >> confdefs.h <<\EOF #define _ALL_SOURCE 1 EOF all=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest* fi if test $all = maybe ; then all=no ; fi echo "$ac_t""$all" 1>&6 echo $ac_n "checking whether we need _POSIX_SOURCE""... $ac_c" 1>&6 echo "configure:999: checking whether we need _POSIX_SOURCE" >&5 posix=no cat > conftest.$ac_ext < #include struct stat buffer; int main() { ; return 0; } EOF if { (eval echo configure:1013: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then : else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* posix=maybe fi rm -f conftest* if test $posix = maybe ; then cat > conftest.$ac_ext < #include struct stat buffer; int main() { ; return 0; } EOF if { (eval echo configure:1036: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat >> confdefs.h <<\EOF #define _POSIX_SOURCE 1 EOF posix=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest* fi if test $posix = maybe ; then posix=no ; fi echo "$ac_t""$posix" 1>&6 echo $ac_n "checking for Standard C and C++ function declarations""... $ac_c" 1>&6 echo "configure:1052: checking for Standard C and C++ function declarations" >&5 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 cat >> confdefs.h <<\EOF #define HAVE_STDC 1 EOF else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* echo "$ac_t""no" 1>&6 fi rm -f conftest* echo $ac_n "checking for SunOS C++ free() argument type bug""... $ac_c" 1>&6 echo "configure:1078: checking for SunOS C++ free() argument type bug" >&5 freebug=no cat > conftest.$ac_ext < int main() { void *p; p = (void*)0; free(p) ; return 0; } EOF if { (eval echo configure:1088: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then : else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* freebug=maybe fi rm -f conftest* if test $freebug = maybe ; then cat > conftest.$ac_ext < int main() { void *p; p = (void*)0; free((char*)p) ; return 0; } EOF if { (eval echo configure:1107: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat >> confdefs.h <<\EOF #define FREE_CAST_IS_CHAR_STAR 1 EOF freebug=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest* fi if test $freebug = maybe ; then freebug=no ; fi echo "$ac_t""$freebug" 1>&6 echo $ac_n "checking for Standard C alert character""... $ac_c" 1>&6 echo "configure:1123: checking for Standard C alert character" >&5 havealert=yes if test "$cross_compiling" = yes; then havealert=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then havealert=yes cat >> confdefs.h <<\EOF #define HAVE_ALERT_CHAR 1 EOF else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* havealert=no fi rm -fr conftest* fi echo "$ac_t""$havealert" 1>&6 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 echo "configure:1154: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else # This must be in double quotes, not single quotes, because CPP may get # substituted into the Makefile and "${CC-cc}" will confuse make. CPP="${CC-cc} -E" # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:1175: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:1192: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:1209: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* CPP=/lib/cpp fi rm -f conftest* fi rm -f conftest* fi rm -f conftest* ac_cv_prog_CPP="$CPP" fi CPP="$ac_cv_prog_CPP" else ac_cv_prog_CPP="$CPP" fi echo "$ac_t""$CPP" 1>&6 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 echo "configure:1234: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include #include #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:1247: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* ac_cv_header_stdc=yes else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* ac_cv_header_stdc=no fi rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "memchr" >/dev/null 2>&1; then : else rm -rf conftest* ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "free" >/dev/null 2>&1; then : else rm -rf conftest* ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') #define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF if { (eval echo configure:1314: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* ac_cv_header_stdc=no fi rm -fr conftest* fi fi fi echo "$ac_t""$ac_cv_header_stdc" 1>&6 if test $ac_cv_header_stdc = yes; then cat >> confdefs.h <<\EOF #define STDC_HEADERS 1 EOF fi for ac_hdr in conio.h ctype.h descrip.h errno.h fcntl.h io.h \ iodef.h jpidef.h libc.h limits.h osfcn.h pwd.h regex.h regexp.h \ rms.h sgtty.h ssdef.h stat.h stdio.h stdlib.h string.h sys/ioctl.h \ sys/param.h sys/stat.h sys/types.h termio.h termios.h time.h \ tt2def.h ttdef.h types.h unistd.h unixio.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 echo "configure:1345: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:1355: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* eval "ac_cv_header_$ac_safe=yes" else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` cat >> confdefs.h <&6 fi done echo $ac_n "checking for working const""... $ac_c" 1>&6 echo "configure:1383: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; } ; return 0; } EOF if { (eval echo configure:1437: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* ac_cv_c_const=no fi rm -f conftest* fi echo "$ac_t""$ac_cv_c_const" 1>&6 if test $ac_cv_c_const = no; then cat >> confdefs.h <<\EOF #define const EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 echo "configure:1458: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS #include #include #endif EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "(^|[^a-zA-Z_0-9])mode_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then rm -rf conftest* ac_cv_type_mode_t=yes else rm -rf conftest* ac_cv_type_mode_t=no fi rm -f conftest* fi echo "$ac_t""$ac_cv_type_mode_t" 1>&6 if test $ac_cv_type_mode_t = no; then cat >> confdefs.h <<\EOF #define mode_t int EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 echo "configure:1491: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS #include #include #endif EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "(^|[^a-zA-Z_0-9])size_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then rm -rf conftest* ac_cv_type_size_t=yes else rm -rf conftest* ac_cv_type_size_t=no fi rm -f conftest* fi echo "$ac_t""$ac_cv_type_size_t" 1>&6 if test $ac_cv_type_size_t = no; then cat >> confdefs.h <<\EOF #define size_t unsigned EOF fi echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 echo "configure:1524: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF if { (eval echo configure:1537: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* ac_cv_struct_tm=sys/time.h fi rm -f conftest* fi echo "$ac_t""$ac_cv_struct_tm" 1>&6 if test $ac_cv_struct_tm = sys/time.h; then cat >> confdefs.h <<\EOF #define TM_IN_SYS_TIME 1 EOF fi if test $ac_cv_prog_gcc = yes; then echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6 echo "configure:1560: checking whether ${CC-cc} needs -traditional" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_pattern="Autoconf.*'x'" cat > conftest.$ac_ext < Autoconf TIOCGETP EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "$ac_pattern" >/dev/null 2>&1; then rm -rf conftest* ac_cv_prog_gcc_traditional=yes else rm -rf conftest* ac_cv_prog_gcc_traditional=no fi rm -f conftest* if test $ac_cv_prog_gcc_traditional = no; then cat > conftest.$ac_ext < Autoconf TCGETA EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "$ac_pattern" >/dev/null 2>&1; then rm -rf conftest* ac_cv_prog_gcc_traditional=yes fi rm -f conftest* fi fi echo "$ac_t""$ac_cv_prog_gcc_traditional" 1>&6 if test $ac_cv_prog_gcc_traditional = yes; then CC="$CC -traditional" fi fi echo $ac_n "checking whether utime accepts a null argument""... $ac_c" 1>&6 echo "configure:1606: checking whether utime accepts a null argument" >&5 if eval "test \"`echo '$''{'ac_cv_func_utime_null'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else rm -f conftestdata; > conftestdata # Sequent interprets utime(file, 0) to mean use start of epoch. Wrong. if test "$cross_compiling" = yes; then ac_cv_func_utime_null=no else cat > conftest.$ac_ext < #include main() { struct stat s, t; exit(!(stat ("conftestdata", &s) == 0 && utime("conftestdata", (long *)0) == 0 && stat("conftestdata", &t) == 0 && t.st_mtime >= s.st_mtime && t.st_mtime - s.st_mtime < 120)); } EOF if { (eval echo configure:1627: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_utime_null=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* ac_cv_func_utime_null=no fi rm -fr conftest* fi rm -f core core.* *.core fi echo "$ac_t""$ac_cv_func_utime_null" 1>&6 if test $ac_cv_func_utime_null = yes; then cat >> confdefs.h <<\EOF #define HAVE_UTIME_NULL 1 EOF fi for ac_func in strtol do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 echo "configure:1653: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else $ac_func(); #endif ; return 0; } EOF if { (eval echo configure:1681: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_func_$ac_func=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then echo "$ac_t""yes" 1>&6 ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` cat >> confdefs.h <&6 LIBOBJS="$LIBOBJS ${ac_func}.${ac_objext}" fi done for ac_func in getcwd getwd re_comp strcspn strdup strspn strstr strtod strtol do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 echo "configure:1710: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else $ac_func(); #endif ; return 0; } EOF if { (eval echo configure:1738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_func_$ac_func=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then echo "$ac_t""yes" 1>&6 ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` cat >> confdefs.h <&6 fi done echo $ac_n "checking for ioctl prototype""... $ac_c" 1>&6 echo "configure:1764: checking for ioctl prototype" >&5 cat > conftest.$ac_ext < #include EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "ioctl[ ]*[(]" >/dev/null 2>&1; then rm -rf conftest* cat >> confdefs.h <<\EOF #define HAVE_IOCTL_PROTOTYPE 1 EOF echo "$ac_t""yes" 1>&6 else rm -rf conftest* echo "$ac_t""no" 1>&6 fi rm -f conftest* if test "$CC" = "lcc" then CFLAGS="`echo $CFLAGS | sed -e 's/-g //g' -e 's/ -g$//g' -e 's/^-g$//'`" fi trap '' 1 2 15 cat > confcache <<\EOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs. It is not useful on other systems. # If it contains results you don't want to keep, you may remove or edit it. # # By default, configure uses ./config.cache as the cache file, # creating it if it does not exist already. You can give configure # the --cache-file=FILE option to use a different cache file; that is # what configure does when it calls configure scripts in # subdirectories, so they share the cache. # Giving --cache-file=/dev/null disables caching, for debugging configure. # config.status only pays attention to the cache file if you give it the # --recheck option to rerun configure. # EOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote substitution # turns \\\\ into \\, and sed turns \\ into \). sed -n \ -e "s/'/'\\\\''/g" \ -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' ;; esac >> confcache if cmp -s $cache_file confcache; then : else if test -w $cache_file; then echo "updating cache $cache_file" cat confcache > $cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Any assignment to VPATH causes Sun make to only execute # the first set of double-colon rules, so remove it if not needed. # If there is a colon in the path, we need to keep it. if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' fi trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 DEFS=-DHAVE_CONFIG_H # Without the "./", some shells look in PATH for config.status. : ${CONFIG_STATUS=./config.status} echo creating $CONFIG_STATUS rm -f $CONFIG_STATUS cat > $CONFIG_STATUS </dev/null | sed 1q`: # # $0 $ac_configure_args # # Compiler output produced by configure, useful for debugging # configure, is in ./config.log if it exists. ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" for ac_option do case "\$ac_option" in -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; -version | --version | --versio | --versi | --vers | --ver | --ve | --v) echo "$CONFIG_STATUS generated by autoconf version 2.13" exit 0 ;; -help | --help | --hel | --he | --h) echo "\$ac_cs_usage"; exit 0 ;; *) echo "\$ac_cs_usage"; exit 1 ;; esac done ac_given_srcdir=$srcdir trap 'rm -fr `echo "Makefile config.h:config.hin" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 EOF cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF $ac_vpsub $extrasub s%@SHELL@%$SHELL%g s%@CFLAGS@%$CFLAGS%g s%@CPPFLAGS@%$CPPFLAGS%g s%@CXXFLAGS@%$CXXFLAGS%g s%@FFLAGS@%$FFLAGS%g s%@DEFS@%$DEFS%g s%@LDFLAGS@%$LDFLAGS%g s%@LIBS@%$LIBS%g s%@exec_prefix@%$exec_prefix%g s%@prefix@%$prefix%g s%@program_transform_name@%$program_transform_name%g s%@bindir@%$bindir%g s%@sbindir@%$sbindir%g s%@libexecdir@%$libexecdir%g s%@datadir@%$datadir%g s%@sysconfdir@%$sysconfdir%g s%@sharedstatedir@%$sharedstatedir%g s%@localstatedir@%$localstatedir%g s%@libdir@%$libdir%g s%@includedir@%$includedir%g s%@oldincludedir@%$oldincludedir%g s%@infodir@%$infodir%g s%@mandir@%$mandir%g s%@AWK@%$AWK%g s%@CC@%$CC%g s%@CXX@%$CXX%g s%@CPP@%$CPP%g s%@LIBOBJS@%$LIBOBJS%g CEOF EOF cat >> $CONFIG_STATUS <<\EOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. ac_file=1 # Number of current file. ac_beg=1 # First line for current file. ac_end=$ac_max_sed_cmds # Line after last line for current file. ac_more_lines=: ac_sed_cmds="" while $ac_more_lines; do if test $ac_beg -gt 1; then sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file else sed "${ac_end}q" conftest.subs > conftest.s$ac_file fi if test ! -s conftest.s$ac_file; then ac_more_lines=false rm -f conftest.s$ac_file else if test -z "$ac_sed_cmds"; then ac_sed_cmds="sed -f conftest.s$ac_file" else ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" fi ac_file=`expr $ac_file + 1` ac_beg=$ac_end ac_end=`expr $ac_end + $ac_max_sed_cmds` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case "$ac_file" in *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; *) ac_file_in="${ac_file}.in" ;; esac # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. # Remove last slash and all that follows it. Not all systems have dirname. ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then # The file is in a subdirectory. test ! -d "$ac_dir" && mkdir "$ac_dir" ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" # A "../" for each directory in $ac_dir_suffix. ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` else ac_dir_suffix= ac_dots= fi case "$ac_given_srcdir" in .) srcdir=. if test -z "$ac_dots"; then top_srcdir=. else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; *) # Relative path. srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" top_srcdir="$ac_dots$ac_given_srcdir" ;; esac echo creating "$ac_file" rm -f "$ac_file" configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." case "$ac_file" in *Makefile*) ac_comsub="1i\\ # $configure_input" ;; *) ac_comsub= ;; esac ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` sed -e "$ac_comsub s%@configure_input@%$configure_input%g s%@srcdir@%$srcdir%g s%@top_srcdir@%$top_srcdir%g " $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file fi; done rm -f conftest.s* # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where # NAME is the cpp macro being defined and VALUE is the value it is being given. # # ac_d sets the value in "#define NAME VALUE" lines. ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)' ac_dB='\([ ][ ]*\)[^ ]*%\1#\2' ac_dC='\3' ac_dD='%g' # ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE". ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ac_uB='\([ ]\)%\1#\2define\3' ac_uC=' ' ac_uD='\4%g' # ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE". ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ac_eB='$%\1#\2define\3' ac_eC=' ' ac_eD='%g' if test "${CONFIG_HEADERS+set}" != set; then EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF fi for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case "$ac_file" in *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; *) ac_file_in="${ac_file}.in" ;; esac echo creating $ac_file rm -f conftest.frag conftest.in conftest.out ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` cat $ac_file_inputs > conftest.in EOF # Transform confdefs.h into a sed script conftest.vals that substitutes # the proper values into config.h.in to produce config.h. And first: # Protect against being on the right side of a sed subst in config.status. # Protect against being in an unquoted here document in config.status. rm -f conftest.vals cat > conftest.hdr <<\EOF s/[\\&%]/\\&/g s%[\\$`]%\\&%g s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp s%ac_d%ac_u%gp s%ac_u%ac_e%gp EOF sed -n -f conftest.hdr confdefs.h > conftest.vals rm -f conftest.hdr # This sed command replaces #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. cat >> conftest.vals <<\EOF s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */% EOF # Break up conftest.vals because some shells have a limit on # the size of here documents, and old seds have small limits too. rm -f conftest.tail while : do ac_lines=`grep -c . conftest.vals` # grep -c gives empty output for an empty file on some AIX systems. if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi # Write a limited-size here document to conftest.frag. echo ' cat > conftest.frag <> $CONFIG_STATUS sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS echo 'CEOF sed -f conftest.frag conftest.in > conftest.out rm -f conftest.in mv conftest.out conftest.in ' >> $CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail rm -f conftest.vals mv conftest.tail conftest.vals done rm -f conftest.vals cat >> $CONFIG_STATUS <<\EOF rm -f conftest.frag conftest.h echo "/* $ac_file. Generated automatically by configure. */" > conftest.h cat conftest.in >> conftest.h rm -f conftest.in if cmp -s $ac_file conftest.h 2>/dev/null; then echo "$ac_file is unchanged" rm -f conftest.h else # Remove last slash and all that follows it. Not all systems have dirname. ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then # The file is in a subdirectory. test ! -d "$ac_dir" && mkdir "$ac_dir" fi rm -f $ac_file mv conftest.h $ac_file fi fi; done EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF exit 0 EOF chmod +x $CONFIG_STATUS rm -fr confdefs* $ac_clean_files test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 bibclean-2.11.4.1.orig/save/Makefile0000444000175200017520000010073507133432612016271 0ustar debiandebian# Generated automatically from Makefile.in by configure. #======================================================================= # Makefile for BibTeX .bib file prettyprinter # # Current target list: (these include all GNU Project standard targets) # all build bibclean # bclproto obsolete; build an early prototype of bibclean # bibclean executable for bibclean # bibclean.h documentation strings for help() function # bibclean.hlp VAX VMS help file (automatically converted # from bibclean.txt) # bibclean.html HTML version of formatted manual pages # bibclean.i C preprocessor output from bibclean.c # bibclean.pdf Adobe Portable Document Format version # of bibclean.man # bibclean.ps PostScript version of bibclean.man # bibclean.tar tar archive file for ftp distribution # bibclean.txt nroff'ed bibclean.man manual page file # bibclean.zip Info-zip archive file for ftp distribution # bibclean.zoo zoo archive file for ftp distribution # check same as test (see below) # clean clean up all but executables and time stamps # clobber clean up everything # distclean remove everything make can rebuild at remote site # docs make bibclean.txt, bibclean.hlp, and bibclean.ps # install install executable and man pages # install.time internal target for install # install-exe install executable # install-man install man pages # install-ftp install .tar, .zip, and .zoo files in ftp tree # install-ftp.time internal target for install-ftp # lint check for code problems # mostlyclean same as clean # maintainer-clean for program author only: remove everything # make can rebuild at author's site # romtol build and run test program for romtol() # TAGS GNU Emacs tags file # test test bibclean on BibTeX and Scribe # bibliographies # test-bibtex test 1,2,3 bibclean on BibTeX bibliographies # test-bibtex-1 test 1 bibclean on BibTeX bibliographies # test-bibtex-2 test 2 bibclean on BibTeX bibliographies # test-bibtex-3 test 3 ISBN and ISSN verification # test-scribe test 1,2,3 bibclean on Scribe bibliographies # test-scribe-1 test 1 bibclean on Scribe bibliographies # test-scribe-2 test 2 bibclean on Scribe bibliographies # test-scribe-3 test 3 bibclean on Scribe bibliographies # test-version test extraction of version number # uninstall remove files installed by "make install" # uninstall-ftp remove installed files in anonymous ftp # directory # # [01-Jul-1996] -- add targets bibclean.pdf and DISTILL macro, and update # DIST-FILES list # [03-May-1996] -- add targets match, romtol, test-match, and test-romtol, # and update DIST-FILES list for version 2.11.3 release # [25-Apr-1996] -- add target for bibclean.html, with associated # support Makefile variables # [20-Sep-1995] -- revise to use GNU autoconf and configure # [08-Mar-1995] -- Change TARGET to TARGETS to avoid conflict with # built-in macro on Cray systems. Add -D_POSIX_SOURCE # to dec-alpha-osf1-c++ CC definition to work around # bug in C++ signal.h header file on OSF/1 3.x. # [21-Nov-1994] -- add cray-el94 target # [11-Nov-1994] -- add sun-sparc-solaris2-lcc and sun-sparc-sunos5-lcc # targets # [18-Oct-1994] -- add isbn.[co] to file lists # [16-Oct-1994] -- add strist.[co] to file lists # [04-Jun-1994] -- update for version 2.10 # add lint target # [31-Dec-1993] -- final polishing of Makefile for public release # after TUGboat publication # [24-Sep-1993] #======================================================================= #### Start of system configuration section. #### prefix = /usr/local exec_prefix = $(prefix) bindir = $(exec_prefix)/bin datadir = $(prefix)/lib infodir = $(prefix)/info libdir = $(prefix)/lib srcdir = . # This setting is specific to the developer's site, and not needed elsewhere FTPDIR = /u/ftp/pub/tex/bib # Need new awk (nawk) or gawk here: AWK = /usr/local/bin/gawk CC = CC CXX = c++ CFLAGS = -g $(OPT) CHARSET = @CHARSET@ CXXFLAGS = -g -O2 $(OPT) DEFS = -DHAVE_CONFIG_H INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ LDFLAGS = $(OPT) LIBOBJS = strtol.o LIBS = OPT = # Where to install the manual pages. mandir = $(prefix)/man/man1 # Extension (not including `.') for the installed manual page filenames. manext = 1 #### End of system configuration section. #### # For testing purposes, make sure we always have the same # initialization file BIBCLEAN = ./bibclean -init-file bibclean.ini BIBTEX = bibtex BIBTEX-TESTS = testbib1.org testbib2.org testbib3.org testbib4.org \ testbib5.org testbib6.org testisxn.org testcodn.org # This program is freely available at ftp://ftp.math.utah.edu/pub/misc/checksum-x-y.* CHECKSUM = checksum CHMOD = chmod COMPRESS = compress # Use the -p flag where available to preserve file time stamps # All known UNIX implementations have an rcp that supports -p, # but not all have similar support in cp. CP = /bin/cp -p CP = /bin/cp CP = rcp -p DIST-FILES = ChangeLog README Makefile Makefile.in bibclean.c \ bibclean.h bibclean.hlp bibclean.html bibclean.ini \ bibclean.man bibclean.pdf bibclean.ps bibclean.reg \ bibclean.txt build-all.sh ch.h chek.c config.h \ config.hin configure configure.in configure.sed \ custom.h delete.h do.c fix.c fndfil.c isbn.c \ keybrd.c keybrd.h match.c match.dat match.h \ match.lok option.c pattern.h rofvms.awk romtol.c \ romtol.dat romtol.lok strist.c strtol.c token.h \ toklst.h vaxvms.c vmswild.c xctype.h xerrno.h \ xlimits.h xpwd.h xstat.h xstdlib.h xstring.h \ xtypes.h xunistd.h yesorno.h $(BIBTEX-TESTS) \ $(BIBTEX-TESTS:.org=.bok) $(BIBTEX-TESTS:.org=.eok) \ testbib2.ltx $(SCRIBE-TESTS) \ $(SCRIBE-TESTS:.org=.bok) $(SCRIBE-TESTS:.org=.eok) \ testscr2.bo2 testscr2.eo2 doc/Makefile \ doc/bibclean.aux doc/bibclean.bbl doc/bibclean.bib \ doc/bibclean.blg doc/bibclean.dvi doc/bibclean.idx \ doc/bibclean.ilg doc/bibclean.ind doc/bibclean.log \ doc/bibclean.lot doc/bibclean.ltx doc/bibclean.sok \ doc/bibclean.sty doc/bibclean.toc doc/is-plain.bst \ doc/ltugboat.sty doc/path.sty doc/texnames.sty \ doc/tugboat.cmn ibmpc/dos/README \ ibmpc/dos/msc5p1/bibclean.exe \ ibmpc/dos/msc5p1/config.h \ ibmpc/dos/msc5p1/ibmclean.bat \ ibmpc/dos/msc5p1/ibmtest.bat \ ibmpc/dos/msc5p1/msc51bld.bat \ ibmpc/dos/msc5p1/msc51pth.bat \ ibmpc/dos/msc6p0/bibclean.exe \ ibmpc/dos/msc6p0/bibclean.map \ ibmpc/dos/msc6p0/config.h \ ibmpc/dos/msc6p0/ibmclean.bat \ ibmpc/dos/msc6p0/ibmtest.bat \ ibmpc/dos/msc6p0/msc60bld.bat \ ibmpc/dos/msc6p0/msc60pth.bat \ ibmpc/dos/msc7p0/config.h \ ibmpc/dos/msc7p0/ibmclean.bat \ ibmpc/dos/msc7p0/ibmtest.bat \ ibmpc/dos/msc7p0/msc70bld.bat \ ibmpc/dos/msc7p0/msc70pth.bat \ ibmpc/dos/tcc2p0/bibclean.exe \ ibmpc/dos/tcc2p0/config.h \ ibmpc/dos/tcc2p0/ibmclean.bat \ ibmpc/dos/tcc2p0/ibmtest.bat \ ibmpc/dos/tcc2p0/tcc20bld.bat \ ibmpc/dos/tcc2p0/tcc20pth.bat \ ibmpc/dos/tcc3p0/bibclean.exe \ ibmpc/dos/tcc3p0/config.h \ ibmpc/dos/tcc3p0/ibmclean.bat \ ibmpc/dos/tcc3p0/ibmtest.bat \ ibmpc/dos/tcc3p0/tcc30bld.bat \ ibmpc/dos/tcc3p0/tcc30pth.bat \ ibmpc/dos/tpp3p0/bibclean.exe \ ibmpc/dos/tpp3p0/config.h \ ibmpc/dos/tpp3p0/ibmclean.bat \ ibmpc/dos/tpp3p0/ibmtest.bat \ ibmpc/dos/tpp3p0/tcc30pth.bat \ ibmpc/dos/tpp3p0/tpp30bld.bat \ ibmpc/dos/wat10/wcc/bibclean.exe \ ibmpc/dos/wat10/wcc/bibclean.map \ ibmpc/dos/wat10/wcc/config.h \ ibmpc/dos/wat10/wcc/ibmclean.bat \ ibmpc/dos/wat10/wcc/ibmtest.bat \ ibmpc/dos/wat10/wcc/watcpp.bat \ ibmpc/dos/wat10/wcc/watpath.bat \ ibmpc/dos/wat10/wcc/watwcc.bat \ ibmpc/dos/wat10/wcc386/bibclean.exe \ ibmpc/dos/wat10/wcc386/config.h \ ibmpc/dos/wat10/wcc386/dos4gw.doc \ ibmpc/dos/wat10/wcc386/dos4gw.exe \ ibmpc/dos/wat10/wcc386/ibmclean.bat \ ibmpc/dos/wat10/wcc386/ibmtest.bat \ ibmpc/dos/wat10/wcc386/wat10bld.bat \ ibmpc/dos/wat10/wcc386/watpath.bat \ ibmpc/dos/wat10/wpp386/bibclean.exe \ ibmpc/dos/wat10/wpp386/config.h \ ibmpc/dos/wat10/wpp386/dos4gw.doc \ ibmpc/dos/wat10/wpp386/dos4gw.exe \ ibmpc/dos/wat10/wpp386/ibmclean.bat \ ibmpc/dos/wat10/wpp386/ibmtest.bat \ ibmpc/dos/wat10/wpp386/w386cpp.bat \ ibmpc/dos/wat10/wpp386/watpath.bat ibmpc/linux/bibclean \ save/Makefile save/config.h save/configure \ vms/alpha/recomp.com vms/alpha/vmsclean.com \ vms/alpha/vmsmake.com vms/alpha/vmstest.com vms/vax/README \ vms/vax/bibclean.exe vms/vax/bibclean.obj vms/vax/chek.obj \ vms/vax/config.h vms/vax/do.obj vms/vax/fix.obj \ vms/vax/fndfil.obj vms/vax/getoneheader.com \ vms/vax/getvmsheaders.com vms/vax/isbn.obj \ vms/vax/keybrd.obj vms/vax/match.obj vms/vax/option.obj \ vms/vax/recomp.com vms/vax/romtol.obj vms/vax/strist.obj \ vms/vax/vaxvms.obj vms/vax/vmsclean.com vms/vax/vmsmake.com \ vms/vax/vmstest.com vms/vax/vmswild.obj DISTILL = distill DITROFF = ditroff ## AT&T DITROFF = groff ## GNU # Some systems define HOST or HOSTNAME, but others don't, so we # generate it at compile time with the hostname utility. HOST = `hostname` # This program is freely available at ftp://ftp.math.utah.edu/pub/sgml/sp-* HTML-NCHECK = html-ncheck # This program is freely available at ftp://ftp.math.utah.edu/pub/sgml/htmlpty-x.y.* HTML-PRETTY = html-pretty LATEX = latex LINT = lint LINTFLAGS = -bchx -I. LN = ln # This program will not likely be available at other than the author's # site, so the .html file is preserved unless a "make maintainer-clean" # is done. It may be freely distributed at some point, so if you want # it, ask the author about its status. MAN2HTML = $(AWK) -f $$HOME/public_html/support/myman2html/man2html.awk MV = /bin/mv NROFF = nroff RM = /bin/rm -f SCRIBE-TESTS-1 = testscr1.org testscr2.org # Do NOT use SCRIBE-TESTS-1 in this list, because MIPS 6280 RISCos 5.0 # make then fails to correctly expand $(SCRIBE-TESTS:.org=.xyz). SCRIBE-TESTS = testscr1.org testscr2.org testscr3.org SED = /bin/sed SHELL = /bin/sh SRC = bibclean.c chek.c do.c fix.c fndfil.c isbn.c \ keybrd.c match.c option.c romtol.c strist.c strtol.c STRIP = strip # Only the subdirectories with Makefiles are listed here SUBDIRS = doc TAGS-FILES = bibclean.c bibclean.h ch.h chek.c config.h custom.h \ delete.h do.c fix.c fndfil.c isbn.c keybrd.c \ keybrd.h match.c match.h option.c pattern.h romtol.c \ strist.c strtol.c token.h toklst.h vaxvms.c \ vmswild.c xctype.h xerrno.h xlimits.h xpwd.h xstat.h \ xstdlib.h xstring.h xtypes.h xunistd.h yesorno.h UNZIP = unzip VERSION = `$(AWK) '/^[ \t]*version *= *"[0-9.]+", *$$/ \ { gsub(/[^0-9.]/,"",$$3); print $$3 }' bibclean.c` ZIP = zip ZOO = zoo #======================================================================= .SUFFIXES: .SUFFIXES: .o .i .c .bib-new .bib-old .bib .bib.bib-new: -$(BIBCLEAN) <$< >$@ .bib.bib-old: ./bclproto <$< >$@ .c.i: $(CC) -E -I. -I$(srcdir) $(DEFS) $(CPPFLAGS) $(CFLAGS) $< 2>&1 | \ grep -v '^[ ]*$$' >$@ .c.o: $(CC) -c -I. -I$(srcdir) $(DEFS) $(CPPFLAGS) $(CFLAGS) $< #======================================================================= all: bibclean ### bibclean-specific building targets ### bibclean.dvi: bibclean.texi cd $(srcdir); texi2dvi bibclean.texi bibclean.html: bibclean.man -$(CHMOD) u+w $@ $(MAN2HTML) $$PWD/$< | $(HTML-PRETTY) -f $$PWD/$@ | $(CHECKSUM) >$@ $(CHMOD) a-w $@ $(HTML-NCHECK) $@ bibclean.info: bibclean.texi cd $(srcdir); makeinfo bibclean.texi BIBCLEAN-OBJS = bibclean.o chek.o do.o fix.o fndfil.o isbn.o \ keybrd.o match.o option.o romtol.o strist.o \ $(LIBOBJS) bibclean: $(BIBCLEAN-OBJS) $(CC) -o bibclean $(CFLAGS) $(BIBCLEAN-OBJS) $(LIBS) # This target converts the option descriptions from the manual pages # to C code for inclusion in bibclean.c. The first awk command # augments the bibclean.man file in a pipe with some small changes # after the .TH line (which sets page dimensions) to get longer # unhyphenated ragged-right lines without page headers, and reduces # the option description indentation. # # Here are the magic nroff incantations: # # .pl 100i set page length to 100in # .nr LL 7.2i set LL register (page width) to 7.2in # .nh no hyphenation # .na no right-adjusting # # That output feeds into nroff for formatting, col for removal of # underlining and escape sequences, expand for tab removal, sed to # backslash all quotes, and a final awk step to select the lines # between OPTIONS and ERROR headers for conversion to C code. bibclean.h: bibclean.man -$(RM) $@ echo '/* WARNING: Do NOT edit this file. It was created automatically'\ >$@ echo ' with the command "make bibclean.h" by '$$USER@`hostname` \ >>$@ echo ' in '$$PWD' on '`date`' */' >>$@ echo >>$@ $(AWK) '{ if ($$0 ~ /^.TH/) \ printf("%s\n.pl 100i\n.nr LL 7.2i\n.nh\n.na",$$0); \ else if ($$0 ~ /^.TP .*remove-OPT-prefixes.*/) \ print ".TP 1in"; \ else \ print $$0}' >$@ echo ' (const char*)NULL,' >>$@ # VAX VMS help file format from bibclean.txt bibclean.hlp: bibclean.txt rofvms.awk $(AWK) -f rofvms.awk bibclean.hlp bibclean.i: bibclean.c ch.h config.h custom.h delete.h keybrd.h \ match.h pattern.h token.h toklst.h xctype.h \ xlimits.h xstdlib.h xstring.h xtypes.h xunistd.h \ Makefile bibclean.o: bibclean.c ch.h config.h custom.h delete.h keybrd.h \ match.h pattern.h token.h toklst.h xctype.h \ xlimits.h xstdlib.h xstring.h xtypes.h xunistd.h bibclean.pdf: bibclean.ps $(DISTILL) bibclean.ps bibclean.ps: bibclean.man $(DITROFF) -Tps -man $? >$@ bibclean.tar: subdist $(DIST-FILES) -$(RM) bibclean.tar bibclean.tar-lst tar chf bibclean.tar $(DIST-FILES) -mkdir bibclean-$(VERSION) cd bibclean-$(VERSION); tar xf ../bibclean.tar tar cf bibclean-$(VERSION).tar bibclean-$(VERSION) -$(RM) -r bibclean-$(VERSION) -$(RM) bibclean.tar $(LN) bibclean-$(VERSION).tar bibclean.tar bibclean.txt: bibclean.man $(NROFF) -man bibclean.man | col -b | expand >$@ bibclean.zip: subdist $(DIST-FILES) -$(RM) bibclean*.zip -$(RM) bibclean*.zip-lst $(ZIP) bibclean-$(VERSION).zip $(DIST-FILES) $(UNZIP) -v bibclean-$(VERSION).zip >bibclean-$(VERSION).zip-lst $(LN) bibclean-$(VERSION).zip bibclean.zip bibclean.zoo: subdist $(DIST-FILES) -$(RM) bibclean*.zoo -$(RM) bibclean*.zoo-lst $(ZOO) a bibclean-$(VERSION).zoo $(DIST-FILES) $(ZOO) v bibclean-$(VERSION).zoo >bibclean-$(VERSION).zoo-lst $(LN) bibclean-$(VERSION).zoo bibclean.zoo clean: -$(RM) $(BIBTEX-TESTS:.org=.bib) -$(RM) $(SCRIBE-TESTS:.org=.bib) -$(RM) *.aux -$(RM) *.bbl -$(RM) *.blg -$(RM) *.dvi -$(RM) *.err -$(RM) *.i -$(RM) *.log -$(RM) *.o -$(RM) *~ -$(RM) \#* -$(RM) bibclean.tar bibclean-?.??.tar -$(RM) bibclean.tar-lst -$(RM) bibclean-$(VERSION).tar -$(RM) bibclean.zip bibclean-?.??.zip -$(RM) bibclean.zip-lst bibclean-?.??.zip-lst -$(RM) bibclean.zoo bibclean-?.??.zoo -$(RM) bibclean.zoo-lst bibclean-?.??.zoo-lst -$(RM) configure.tmp -$(RM) core -$(RM) match match.lst -$(RM) romtol romtol.lst -$(RM) testcodn.bib -$(RM) testisxn.bib -$(RM) testscr2.bi2 testscr2.er2 -for d in $(SUBDIRS) ; do (cd $$d ; make clean ) ; done clobber: clean -$(RM) bclproto bibclean match -$(RM) bibclean.hlp -$(RM) bibclean.ps -$(RM) bibclean.txt -$(RM) install.time install-ftp.time -for d in $(SUBDIRS) ; do (cd $$d ; make clobber ) ; done docs: bibclean.txt bibclean.hlp bibclean.ps chek.i: chek.c config.h custom.h match.h token.h xctype.h \ xstat.h xstring.h yesorno.h Makefile chek.o: chek.c config.h custom.h match.h token.h xctype.h \ xstat.h xstring.h yesorno.h do.i: do.c ch.h config.h custom.h delete.h keybrd.h \ match.h pattern.h token.h toklst.h xctype.h \ xstdlib.h xstring.h xunistd.h yesorno.h Makefile do.o: do.c ch.h config.h custom.h delete.h keybrd.h \ match.h pattern.h token.h toklst.h xctype.h \ xstdlib.h xstring.h xunistd.h yesorno.h fix.i: fix.c config.h custom.h token.h xctype.h xstring.h \ yesorno.h Makefile fix.o: fix.c config.h custom.h token.h xctype.h xstring.h \ yesorno.h fndfil.i: fndfil.c config.h custom.h xctype.h xpwd.h xstdlib.h \ xstring.h xunistd.h Makefile fndfil.o: fndfil.c config.h custom.h xpwd.h xstdlib.h \ xstring.h xunistd.h isbn.i: isbn.c config.h custom.h xctype.h xstring.h xstdlib.h \ Makefile isbn.o: isbn.c config.h custom.h xctype.h xstring.h xstdlib.h keybrd.i: ch.h config.h custom.h xstring.h xunistd.h yesorno.h \ Makefile keybrd.o: ch.h config.h custom.h xctype.h xstring.h xunistd.h yesorno.h # Build a test program for match() match: match.c romtol.o -$(RM) match.O if [ -f match.o ] ; then $(MV) match.o match.O ; fi -$(RM) match.o $(CC) -I. -I$(srcdir) $(DEFS) $(CPPFLAGS) $(CFLAGS) -DTEST -o match \ match.c romtol.o -$(RM) match.o if [ -f match.O ] ; then $(MV) match.O match.o ; fi match.i: match.c config.h custom.h match.h xctype.h xstdlib.h \ xstring.h Makefile match.o: match.c config.h custom.h match.h xctype.h xstdlib.h \ xstring.h mostlyclean: clean -for d in $(SUBDIRS) ; do (cd $$d ; make mostlyclean ) ; done option.i: option.c bibclean.h ch.h config.h custom.h xstdlib.h \ xstring.h yesorno.h Makefile # When HOST, USER, __DATE__, and __TIME__ are available, # bibclean preserves them for its version output option.o: option.c bibclean.h ch.h config.h custom.h xstdlib.h \ xstring.h yesorno.h $(CC) -I. -I$(srcdir) $(CFLAGS) -c -DHOST=\"$(HOST)\" -DUSER=\"$(USER)\" option.c # Build a test program for romtol() romtol: romtol.c -$(RM) romtol.O if [ -f romtol.o ] ; then $(MV) romtol.o romtol.O ; fi -$(RM) romtol.o $(CC) -I. -I$(srcdir) $(DEFS) $(CPPFLAGS) $(CFLAGS) -DTEST -o romtol romtol.c -$(RM) romtol.o if [ -f romtol.O ] ; then $(MV) romtol.O romtol.o ; fi romtol.i: romtol.c config.h custom.h xctype.h xstring.h xstdlib.h \ Makefile romtol.o: romtol.c config.h custom.h xctype.h xstring.h xstdlib.h strist.i: strist.c config.h custom.h xctype.h xstring.h Makefile strist.o: strist.c config.h custom.h xctype.h xstring.h strtol.i: strtol.c config.h custom.h xctype.h xstdlib.h xstring.h \ Makefile strtol.o: strtol.c config.h custom.h xctype.h xstdlib.h xstring.h # Subdirectory makes needed for distribution file creation subdist: -for d in $(SUBDIRS) ; do (cd $$d ; make ) ; done #======================================================================= ### targets required by GNU Coding standards ### Makefile: Makefile.in config.status ./config.status config.status: configure $(srcdir)/configure --srcdir=$(srcdir) --no-create configure: configure.in configure.sed cd $(srcdir); autoconf # Apply needed fixup for C++ with configure mv configure configure.tmp $(SED) -f configure.sed configure -$(RM) configure.tmp $(CHMOD) +x configure distclean: clobber -$(RM) Makefile -$(RM) config.status -$(RM) config.cache -for d in $(SUBDIRS) ; do (cd $$d ; make distclean ) ; done maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." -$(CHMOD) u+w bibclean.html -$(RM) bibclean.html -$(RM) bibclean.pdf -$(RM) TAGS -$(RM) configure -for d in $(SUBDIRS) ; do (cd $$d ; make maintainer-clean ) ; done TAGS: Makefile $(TAGS-FILES) cd $(srcdir); etags $(TAGS-FILES) #======================================================================= install: install.time install.time: install-exe install-man touch install.time install-exe: bibclean if test -f $(bindir)/bibclean ; \ then \ $(MV) $(bindir)/bibclean $(bindir)/bibclean.old ; \ fi -$(RM) $(bindir)/bibclean-$(VERSION) $(CP) bibclean $(bindir)/bibclean -$(STRIP) $(bindir)/bibclean $(LN) $(bindir)/bibclean $(bindir)/bibclean-$(VERSION) $(CHMOD) 775 $(bindir)/bibclean $(CP) bibclean.ini $(bindir)/.bibcleanrc $(CHMOD) 664 $(bindir)/.bibcleanrc install-man: bibclean.man if test -f $(mandir)/bibclean.$(manext) ; \ then \ $(MV) $(mandir)/bibclean.$(manext) $(mandir)/bibclean.old.$(manext) ; \ fi $(CP) bibclean.man $(mandir)/bibclean.$(manext) -$(RM) $(mandir)/../cat$(manext)/bibclean.$(manext) -$(RM) $(mandir)/bibclean-$(VERSION).$(manext) $(LN) $(mandir)/bibclean.$(manext) $(mandir)/bibclean-$(VERSION).$(manext) $(CHMOD) 664 $(mandir)/bibclean.$(manext) install-ftp: install-ftp.time install-ftp.time: bibclean.tar bibclean.zip bibclean.zoo tar tvf bibclean-$(VERSION).tar >$(FTPDIR)/bibclean-$(VERSION).tar-lst $(COMPRESS) $(FTPDIR)/bibclean-$(VERSION).tar.gz $(CP) bibclean-$(VERSION).zip $(FTPDIR) $(CP) bibclean-$(VERSION).zip-lst $(FTPDIR) $(CP) bibclean-$(VERSION).zoo $(FTPDIR) $(CP) bibclean-$(VERSION).zoo-lst $(FTPDIR) ls -l $(FTPDIR)/bibclean* date >install-ftp.time lint: $(LINT) $(LINTFLAGS) $(SRC) test check: test-match test-romtol test-bibtex test-scribe # Test bibclean on Part 1 of the Reduce bibliography, testbib2.org. The # output file, testbib2.bib, is compared against a correct output file, # testbib2.bok, from the author's site, and then the bibliography is # additionally tested by LaTeX and BibTeX. test-bibtex: bibclean test-bibtex-1 test-bibtex-2 test-bibtex-3 \ test-bibtex-4 test-bibtex-5 test-bibtex-6 test-bibtex-7 \ test-bibtex-8 test-bibtex-1: bibclean testbib1.org @echo @echo "==================== begin BibTeX test 1 =====================" @echo -@$(RM) testbib1.err testbib1.bib @echo -$(BIBCLEAN) testbib1.org >testbib1.bib 2>testbib1.err @echo @echo "There should be no differences found:" @echo "diff testbib1.bok testbib1.bib" -@if diff testbib1.bok testbib1.bib ; then $(RM) testbib1.bib ; fi @echo @echo "There should be no differences found:" @echo "diff testbib1.eok testbib1.err" -@if diff testbib1.eok testbib1.err ; then $(RM) testbib1.err ; fi @echo @echo "===================== end BibTeX test 1 ======================" @echo test-bibtex-2: bibclean testbib2.org @echo @echo "==================== begin BibTeX test 2 =====================" @echo @-$(RM) testbib2.aux testbib2.bbl testbib2.bib testbib2.blg \ testbib2.dvi testbib2.log @echo -$(BIBCLEAN) -no-check-values testbib2.org >testbib2.bib 2>testbib2.err @echo @echo "There should be no differences found:" -diff testbib2.bok testbib2.bib @echo @echo "There should be no differences found:" @echo "diff testbib2.eok testbib2.err" -@if diff testbib2.eok testbib2.err ; then $(RM) testbib2.err ; fi @echo $(LATEX) testbib2.ltx >/dev/null @echo @echo "Expect 6 BibTeX warnings:" -$(BIBTEX) testbib2 @if cmp testbib2.bok testbib2.bib 2>/dev/null ; \ then $(RM) testbib2.bib ; fi @echo $(LATEX) testbib2.ltx >/dev/null @echo $(LATEX) testbib2.ltx @echo @echo "===================== end BibTeX test 2 ======================" @echo test-bibtex-3: bibclean testbib3.org @echo @echo "==================== begin BibTeX test 3 =====================" @echo @-$(RM) testbib3.bib testbib3.err @echo -$(BIBCLEAN) -fix-font-change testbib3.org >testbib3.bib 2>testbib3.err @echo @echo "There should be no differences found:" -@if diff testbib3.bok testbib3.bib ; then $(RM) testbib3.bib ; fi @echo @echo "There should be no differences found:" @echo "diff testbib3.eok testbib3.err" -@if diff testbib3.eok testbib3.err ; then $(RM) testbib3.err ; fi @echo @echo "===================== end BibTeX test 3 ======================" @echo test-bibtex-4: bibclean testbib4.org @echo @echo "==================== begin BibTeX test 4 =====================" @echo @-$(RM) testbib4.bib testbib4.err @echo -$(BIBCLEAN) -fix-font-change testbib4.org >testbib4.bib 2>testbib4.err @echo @echo "There should be no differences found:" -@if diff testbib4.bok testbib4.bib ; then $(RM) testbib4.bib ; fi @echo @echo "There should be no differences found:" @echo "diff testbib4.eok testbib4.err" -@if diff testbib4.eok testbib4.err ; then $(RM) testbib4.err ; fi @echo @echo "===================== end BibTeX test 4 ======================" @echo test-bibtex-5: bibclean testbib5.org @echo @echo "==================== begin BibTeX test 5 =====================" @echo @-$(RM) testbib5.bib testbib5.err @echo -$(BIBCLEAN) -German-style testbib5.org >testbib5.bib 2>testbib5.err @echo @echo "There should be no differences found:" -@if diff testbib5.bok testbib5.bib ; then $(RM) testbib5.bib ; fi @echo @echo "There should be no differences found:" @echo "diff testbib5.eok testbib5.err" -@if diff testbib5.eok testbib5.err ; then $(RM) testbib5.err ; fi @echo @echo "===================== end BibTeX test 5 ======================" @echo test-bibtex-6: bibclean testbib6.org @echo @echo "==================== begin BibTeX test 6 =====================" @echo -$(BIBCLEAN) testbib6.org >testbib6.bib 2>testbib6.err @echo @echo "There should be no differences found:" @echo "diff testbib6.bok testbib6.bib" -@if diff testbib6.bok testbib6.bib ; then $(RM) testbib6.bib ; fi @echo @echo "There should be no differences found:" @echo "diff testbib6.eok testbib6.err" -@if diff testbib6.eok testbib6.err ; then $(RM) testbib6.err ; fi @echo @echo "===================== end BibTeX test 6 ======================" @echo # Test bibclean verification of ISBN and ISSN values. The test file, # testisxn.org, contains several hundred correct values, and also # several hundred erroneous values. We therefore discard error and # warning messages, we ignore the return code, and we don't try to use # the output with LaTeX or BibTeX. test-bibtex-7: bibclean testisxn.org @echo @echo "==================== begin BibTeX test 7 =====================" @echo -$(BIBCLEAN) testisxn.org >testisxn.bib 2>testisxn.err @echo @echo "There should be no differences found:" @echo "diff testisxn.bok testisxn.bib" -@if diff testisxn.bok testisxn.bib ; then $(RM) testisxn.bib ; fi @echo @echo "There should be no differences found:" @echo "diff testisxn.eok testisxn.err" -@if diff testisxn.eok testisxn.err ; then $(RM) testisxn.err ; fi @echo @echo "===================== end BibTeX test 7 ======================" @echo # Test bibclean verification of CODEN values. The test file, # testcodn.org, contains about 1200 correct values, and also several # hundred erroneous values. We therefore discard error and warning # messages, we ignore the return code, and we don't try to use the # output with LaTeX or BibTeX. test-bibtex-8: bibclean testcodn.org @echo @echo "==================== begin BibTeX test 8 =====================" @echo -$(BIBCLEAN) testcodn.org >testcodn.bib 2>testcodn.err @echo @echo "There should be no differences found:" @echo "diff testcodn.bok testcodn.bib" -@if diff testcodn.bok testcodn.bib ; then $(RM) testcodn.bib ; fi @echo @echo "There should be no differences found:" @echo "diff testcodn.eok testcodn.err" -@if diff testcodn.eok testcodn.err ; then $(RM) testcodn.err ; fi @echo @echo "===================== end BibTeX test 8 ======================" @echo test-match: match @echo @echo "===================== begin match test =======================" @echo ./match match.lst @echo "There should be no differences found:" diff match.lok match.lst @if cmp match.lok match.lst 2>/dev/null ; then $(RM) match.lst ; fi @echo @echo "====================== end match test ========================" @echo test-romtol: romtol @echo @echo "===================== begin romtol test ======================" @echo ./romtol romtol.lst @echo "There should be no differences found:" diff romtol.lok romtol.lst @if cmp romtol.lok romtol.lst 2>/dev/null ; then $(RM) romtol.lst ; fi @echo @echo "====================== end romtol test =======================" @echo # Test bibclean on a collection of Scribe bibliographies containing # test cases to exhibit variations in Scribe bibliography syntax. test-scribe: bibclean test-scribe-1 test-scribe-2 test-scribe-3 # The peculiar step using tr to prepare the .aux files is needed to # overcome inconsistencies in the handling of backslashes by the IBM # RS/6000 shell. The documented behavior in the SunOS 4.1.1 manual # pages is (emphasis mine): # All characters enclosed between a pair of single quote marks # (''), except a single quote, are quoted by the shell. BACKSLASH # HAS NO SPECIAL MEANING INSIDE A PAIR OF SINGLE QUOTES. A single # quote may be quoted inside a pair of double quote marks (for # example, "'"). # On SunOS, HP UX, IBM 3090 AIX, NeXT Mach, and SGI IRIX, the shells # csh, sh, bash, and ksh agree with this. However, on IBM RS/6000 # AIX 3.2, backslashes in single quotes are untouched by csh, but # expanded by sh and ksh. This is clearly a bug, because the INFO # hypertext node on bsh/rsh says: # All characters, except the enclosing single quotation marks, are # taken literally, with any special meaning removed. # test-scribe-1: bibclean $(SCRIBE-TESTS-1) @echo @echo "==================== begin Scribe test 1 =====================" @echo -@for f in $(SCRIBE-TESTS-1) ; \ do \ BASENAME=`basename $$f .org` ; \ echo ; \ echo "----------------------------------------------------" ; \ echo ; \ echo "$(BIBCLEAN) -scribe -no-check $$f >$$BASENAME.bib" ; \ $(BIBCLEAN) -scribe -no-check $$f >$$BASENAME.bib \ 2>$$BASENAME.err; \ echo ; \ echo "There should be no differences found:" ; \ echo "diff $$BASENAME.bok $$BASENAME.bib" ; \ diff $$BASENAME.bok $$BASENAME.bib ; \ echo ; \ echo "There should be no differences found:" ; \ echo "diff $$BASENAME.eok $$BASENAME.err" ; \ if diff $$BASENAME.eok $$BASENAME.err ; \ then $(RM) $$BASENAME.err ; fi ; \ echo ; \ echo 'Bbibstyle{plain}NBcitation{*}NBbibdata{'$$BASENAME'}' | \ tr BN '\134\012' >$$BASENAME.aux ; \ if [ "$$BASENAME" = "testscr1" ] ; \ then echo "Expect 5 BibTeX warnings" ; fi ; \ if [ "$$BASENAME" = "testscr2" ] ; \ then echo "There should be no BibTeX warnings:" ; fi ; \ echo "$(BIBTEX) $$BASENAME" ; \ $(BIBTEX) $$BASENAME; \ if cmp $$BASENAME.bok $$BASENAME.bib 2>/dev/null ; \ then $(RM) $$BASENAME.bib ; fi ; \ done @echo "===================== end Scribe test 1 ======================" @echo test-scribe-2: bibclean testscr2.org @echo @echo "==================== begin Scribe test 2 =====================" @echo -$(BIBCLEAN) -scribe -file -no-check testscr2.org \ >testscr2.bib 2>testscr2.err @echo @echo "There should be no differences found:" @echo "diff testscr2.bok testscr2.bib" -@if diff testscr2.bok testscr2.bib ; then $(RM) testscr2.bib ; fi @echo @echo "There should be no differences found:" @echo "diff testscr2.eok testscr2.err" -@if diff testscr2.eok testscr2.err ; then $(RM) testscr2.err ; fi @echo @echo -$(BIBCLEAN) -scribe -file -no-check -no-par testscr2.org \ >testscr2.bi2 2>testscr2.er2 @echo @echo "There should be no differences found:" @echo "diff testscr2.bo2 testscr2.bi2" -@if diff testscr2.bo2 testscr2.bi2 ; then $(RM) testscr2.bi2 ; fi @echo @echo "There should be no differences found:" @echo "diff testscr2.eo2 testscr2.er2" -@if diff testscr2.eo2 testscr2.er2 ; then $(RM) testscr2.er2 ; fi @echo @echo "===================== end Scribe test 2 ======================" @echo test-scribe-3: bibclean testscr3.org @echo @echo "==================== begin Scribe test 3 =====================" @echo -$(BIBCLEAN) -scribe -no-check testscr3.org >testscr3.bib 2>testscr3.err @echo @echo "There should be no differences found:" @echo "diff testscr3.bok testscr3.bib" -@if diff testscr3.bok testscr3.bib ; then $(RM) testscr3.bib ; fi @echo @echo "There should be no differences found:" @echo "diff testscr3.eok testscr3.err" -@if diff testscr3.eok testscr3.err ; then $(RM) testscr3.err ; fi @echo @echo "===================== end Scribe test 3 ======================" @echo test-version: Makefile @echo "Version number is ""'"$(VERSION)"'" uninstall: -$(RM) $(bindir)/bibclean $(bindir)/bibclean-$(VERSION) \ $(bindir)/.bibcleanrc \ $(mandir)/bibclean.$(manext) \ $(mandir)/bibclean-$(VERSION).$(manext) \ $(mandir)/../cat$(manext)/bibclean.$(manext) \ $(mandir)/../cat$(manext)/bibclean-$(VERSION).$(manext) -$(RM) install.time uninstall-ftp: -$(RM) $(FTPDIR)/bibclean-$(VERSION).tar -$(RM) $(FTPDIR)/bibclean-$(VERSION).tar-lst -$(RM) $(FTPDIR)/bibclean-$(VERSION).zip -$(RM) $(FTPDIR)/bibclean-$(VERSION).zip-lst -$(RM) $(FTPDIR)/bibclean-$(VERSION).zoo -$(RM) $(FTPDIR)/bibclean-$(VERSION).zoo-lst -$(RM) install-ftp.time # Prevent GNU make v3 from overflowing arg limit on SysV. .NOEXPORT: bibclean-2.11.4.1.orig/chek.c0000644000175200017520000007110306142464350014752 0ustar debiandebian#include #include "xctype.h" #include "xstat.h" #include "xstring.h" RCSID("$Id: chek.c,v 1.3 1996/05/03 20:11:39 beebe Exp beebe $") #include "yesorno.h" #include "match.h" /* must come AFTER yesorno.h */ #include "token.h" typedef struct s_parse_data { YESorNO (*is_name_char) ARGS((int c_, size_t n_)); const char *s; /* pointer to next char in list */ const char *token; /* pointer to token in list */ int token_length; /* number of token characters (== (s - token)) */ } parse_data; typedef struct s_pattern_table { MATCH_PATTERN *patterns; int current_size; int maximum_size; } PATTERN_TABLE; typedef struct s_pattern_names { const char *name; PATTERN_TABLE *table; } PATTERN_NAMES; typedef struct s_name_pair { const char *old_name; const char *new_name; } NAME_PAIR; #if defined(HAVE_PATTERNS) #define PATTERN_MATCHES(string,pattern) (match_pattern(string,pattern) == YES) #else /* NOT defined(HAVE_PATTERNS) */ #define PATTERN_MATCHES(string,pattern) match_regexp(string,pattern) #endif /* defined(HAVE_PATTERNS) */ #define PT_CHAPTER 0 /* index in pattern_names[] */ #define PT_MONTH 1 /* index in pattern_names[] */ #define PT_NUMBER 2 /* index in pattern_names[] */ #define PT_PAGES 3 /* index in pattern_names[] */ #define PT_VOLUME 4 /* index in pattern_names[] */ #define PT_YEAR 5 /* index in pattern_names[] */ #define STD_MAX_TOKEN ((size_t)1000) /* Standard BibTeX limit */ #define UNKNOWN_CODEN "??????" #define MAX_CODEN (sizeof(UNKNOWN_CODEN)-1) #define UNKNOWN_ISBN "??????????" #define MAX_ISBN (sizeof(UNKNOWN_ISBN)-1) #define UNKNOWN_ISSN "????????" #define MAX_ISSN (sizeof(UNKNOWN_ISSN)-1) extern YESorNO check_values; /* NO: suppress value checks */ extern char current_field[]; /* field name */ extern char current_key[]; /* string value */ extern char current_value[]; /* string value */ extern NAME_PAIR month_pair[]; extern PATTERN_NAMES pattern_names[]; extern char shared_string[]; extern FILE *stdlog; /* usually stderr */ extern YESorNO stdlog_on_stdout; /* NO for separate files */ extern void error ARGS((const char *msg_)); extern void ISBN_hyphenate ARGS((char *s_,char *t_,size_t maxs_)); extern void warning ARGS((const char *msg_)); void check_chapter ARGS((void)); void check_CODEN ARGS((void)); void check_ISBN ARGS((void)); void check_ISSN ARGS((void)); YESorNO check_junior ARGS((const char *last_name_)); void check_key ARGS((void)); void check_length ARGS((size_t n_)); void check_month ARGS((void)); void check_number ARGS((void)); void check_other ARGS((void)); void check_pages ARGS((void)); YESorNO check_patterns ARGS((PATTERN_TABLE *pt_,const char *value_)); void check_volume ARGS((void)); void check_year ARGS((void)); static void bad_CODEN ARGS((char CODEN_[6])); static void bad_ISBN ARGS((char ISBN_[11])); static void bad_ISSN ARGS((char ISSN_[9])); static int CODEN_character_value ARGS((int c_)); static size_t copy_element ARGS((char *target_, size_t nt_, const char *source_, size_t ns_)); static void incomplete_CODEN ARGS((char CODEN_[6])); static YESorNO is_CODEN_char ARGS((int c_, size_t n_)); static YESorNO is_ISBN_char ARGS((int c_, size_t n_)); static YESorNO is_ISSN_char ARGS((int c_, size_t n_)); static void parse_list ARGS((const char *s, YESorNO (*is_name_char_) ARGS((int c_, size_t n_)), void (*validate_) ARGS((const char *CODEN_, size_t n_)))); static void parse_element ARGS((parse_data *pd_)); static void parse_separator ARGS((parse_data *pd_)); static void validate_CODEN ARGS((const char *CODEN_, size_t n_)); static void validate_ISBN ARGS((const char *ISBN_, size_t n_)); static void validate_ISSN ARGS((const char *ISSN_, size_t n_)); static void unexpected ARGS((void)); #define ISBN_DIGIT_VALUE(c) ((((c) == 'X') || ((c) == 'x')) ? 10 : \ ((c) - '0')) /* correct only if digits are valid; */ /* the code below ensures that */ #define ISSN_DIGIT_VALUE(c) ISBN_DIGIT_VALUE(c) /* ISSN digits are just like ISBN digits */ #if defined(HAVE_STDC) static void bad_CODEN(char CODEN[7]) #else /* K&R style */ static void bad_CODEN(CODEN) char CODEN[7]; #endif { static char fmt[] = "Invalid checksum for CODEN %c%c%c%c%c%c in ``%%f = %%v''"; char msg[sizeof(fmt)]; #define XCODEN(n) (int)((CODEN[n] == '\0') ? '?' : CODEN[n]) (void)sprintf(msg, fmt, XCODEN(1), XCODEN(2), XCODEN(3), XCODEN(4), XCODEN(5), XCODEN(6)); warning(msg); /* should be error(), but some journals might have */ /* invalid CODENs (some books have invalid ISBNs) */ } #if defined(HAVE_STDC) static void bad_ISBN(char ISBN[11]) #else /* K&R style */ static void bad_ISBN(ISBN) char ISBN[11]; #endif { #define MAXISBN (13+1) /* space for correctly hyphenated ISBN, plus NUL */ static char fmt[] = "Invalid checksum for ISBN %s in ``%%f = %%v''"; char msg[sizeof(fmt)+MAXISBN-1-2]; char s[MAXISBN]; char t[MAXISBN]; size_t n; (void)strcpy(s,UNKNOWN_ISBN); n = strlen(&ISBN[1]); (void)memcpy(s,&ISBN[1],(n > sizeof(s)) ? sizeof(s) : n); s[10] = '\0'; ISBN_hyphenate(s,t,sizeof(s)); (void)sprintf(msg, fmt, s); warning(msg); /* used to be error(), but some books actually have */ /* invalid ISBNs */ } #if defined(HAVE_STDC) static void bad_ISSN(char ISSN[9]) #else /* K&R style */ static void bad_ISSN(ISSN) char ISSN[9]; #endif { static char fmt[] = "Invalid checksum for ISSN %c%c%c%c-%c%c%c%c in ``%%f = %%v''"; char msg[sizeof(fmt)]; #define XISSN(n) (int)((ISSN[n] == '\0') ? '?' : ISSN[n]) (void)sprintf(msg, fmt, XISSN(1), XISSN(2), XISSN(3), XISSN(4), XISSN(5), XISSN(6), XISSN(7), XISSN(8)); warning(msg); /* used to be error(), but some journals might have */ /* invalid ISSNs (some books have invalid ISBNs) */ } void check_chapter(VOID) { #if defined(HAVE_OLDCODE) size_t k; size_t n = strlen(current_value) - 1; /* match patterns like "23" and "23-1" */ for (k = 1; k < n; ++k) { /* omit first and last characters -- they are quotation marks */ if (!(Isdigit(current_value[k]) || (current_value[k] == '-'))) break; } if (k == n) return; #else /* NOT defined(HAVE_OLDCODE) */ if (check_patterns(pattern_names[PT_CHAPTER].table,current_value) == YES) return; #endif /* defined(HAVE_OLDCODE) */ unexpected(); } void check_CODEN(VOID) { parse_list(current_value, is_CODEN_char, validate_CODEN); } void check_inodes(VOID) { struct stat buflog; struct stat bufout; stdlog_on_stdout = YES; /* assume the worst initially */ (void)fstat(fileno(stdlog),&buflog); (void)fstat(fileno(stdout),&bufout); #if OS_UNIX stdlog_on_stdout = ((buflog.st_dev == bufout.st_dev) && (buflog.st_ino == bufout.st_ino)) ? YES : NO; #endif /* OS_UNIX */ #if OS_PCDOS /* No inodes, so use other fields instead */ stdlog_on_stdout = ((buflog.st_dev == bufout.st_dev) && (buflog.st_mode == bufout.st_mode) && (buflog.st_size == bufout.st_size) && (buflog.st_ctime == bufout.st_ctime)) ? YES : NO; #endif /* OS_PCDOS */ #if OS_VAXVMS /* Inode field is 3 separate values */ stdlog_on_stdout = ((buflog.st_dev == bufout.st_dev) && (buflog.st_ino[0] == bufout.st_ino[0]) && (buflog.st_ino[1] == bufout.st_ino[1]) && (buflog.st_ino[2] == bufout.st_ino[2])) ? YES : NO; #endif /* OS_VAXVMS */ } void check_ISBN(VOID) { char t[MAX_TOKEN_SIZE]; /* Supply correct hyphenation for all ISBNs */ ISBN_hyphenate(current_value,t,sizeof(t)/sizeof(t[0])); parse_list(current_value, is_ISBN_char, validate_ISBN); } void check_ISSN(VOID) { parse_list(current_value, is_ISSN_char, validate_ISSN); } #if defined(HAVE_STDC) YESorNO check_junior(const char *last_name) #else /* K&R style */ YESorNO check_junior(last_name) const char *last_name; #endif { /* return YES: name is Jr.-like, else: NO */ int b_level; /* brace level */ static const char *juniors[] = { /* name parts that parse like "Jr." */ "Jr", "Jr.", "Sr", "Sr.", "SJ", "S.J.", "S. J.", (const char*)NULL, /* list terminator */ }; int k; /* index into juniors[] */ int n; /* index into last_name[] */ for (n = 0, b_level = 0; last_name[n]; ++n) { /* check for "Smith, Jr" and "Smith Jr" and */ switch (last_name[n]) /* convert to "{Smith, Jr}" and "{Smith Jr}" */ { case '{': b_level++; break; case '}': b_level--; break; case ',': if (b_level == 0) return (YES); break; case '\t': case ' ': /* test for Jr.-like name */ if (b_level == 0) { for (k = 0; juniors[k] != (const char*)NULL; ++k) { if (strnicmp(&last_name[n+1],juniors[k],strlen(juniors[k])) == 0) return (YES); } /* end for (k...) */ if (strcspn(&last_name[n+1],"IVX") == 0) return (YES); /* probably small upper-case Roman number */ } break; default: break; } /* end switch (last_name[n]) */ } /* end for (n = 0,...) */ return (NO); } void check_key(VOID) { int k; /* index into pattern_names[] */ for (k = 0; pattern_names[k].name != (const char*)NULL; ++k) { if (stricmp(pattern_names[k].name,current_key) == 0) { /* then found the required table */ if (check_patterns(pattern_names[k].table,current_key) == NO) warning("Unexpected citation key ``%k''"); return; } } } #if defined(HAVE_STDC) void check_length(size_t n) #else /* K&R style */ void check_length(n) size_t n; #endif { if ((check_values == YES) && (n >= STD_MAX_TOKEN)) warning("String length exceeds standard BibTeX limit for ``%f'' entry"); } void check_month(VOID) { int m; /* month index */ size_t n = strlen(current_value); if (n == 3) /* check for match against standard abbrevs */ { for (m = 0; month_pair[m].old_name != (const char*)NULL; ++m) { if (stricmp(month_pair[m].new_name,current_value) == 0) return; } } /* Hand coding for the remaining patterns is too ugly to contemplate, so we only provide the checking when real pattern matching is available. */ #if !defined(HAVE_OLDCODE) if (check_patterns(pattern_names[PT_MONTH].table,current_value) == YES) return; #endif /* !defined(HAVE_OLDCODE) */ unexpected(); } void check_number(VOID) { #if defined(HAVE_OLDCODE) size_t k; size_t n = strlen(current_value) - 1; /* We expect the value string to match the regexp "[0-9a-zA-Z---,/ ()]+ to handle values like "UMIACS-TR-89-11, CS-TR-2189, SRC-TR-89-13", "RJ 3847 (43914)", "{STAN-CS-89-1256}", "UMIACS-TR-89-3.1, CS-TR-2177.1", "TR\#89-24", "23", "23-27", and "3+4". */ for (k = 1; k < n; ++k) { /* omit first and last characters -- they are quotation marks */ if (!( Isalnum(current_value[k]) || Isspace(current_value[k]) || (current_value[k] == '-') || (current_value[k] == '+') || (current_value[k] == ',') || (current_value[k] == '.') || (current_value[k] == '/') || (current_value[k] == '#') || (current_value[k] == '\\') || (current_value[k] == '(') || (current_value[k] == ')') || (current_value[k] == '{') || (current_value[k] == '}') )) break; } if (k == n) return; #else /* NOT defined(HAVE_OLDCODE) */ if (check_patterns(pattern_names[PT_NUMBER].table,current_value) == YES) return; #endif /* defined(HAVE_OLDCODE) */ unexpected(); } void check_other(VOID) { int k; /* index into pattern_names[] */ for (k = 0; pattern_names[k].name != (const char*)NULL; ++k) { if (stricmp(pattern_names[k].name,current_field) == 0) { /* then found the required table */ if (check_patterns(pattern_names[k].table,current_value) == NO) unexpected(); return; } } } void check_pages(VOID) { /* Need to handle "B721--B729" as well as "721--729"; some physics journals use an initial letter in page number. */ #if defined(HAVE_OLDCODE) int number = 1; size_t k; size_t n = strlen(current_value) - 1; /* We expect the value string to match the regexps [0-9]+ or [0-9]+--[0-9]+ */ for (k = 1; k < n; ++k) { /* omit first and last characters -- they are quotation marks */ switch (current_value[k]) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (number > 2) { warning("More than 2 page numbers in ``%f = %v''"); return; } break; case '-': number++; if (current_value[k+1] != '-') /* expect -- */ { warning( "Use en-dash, --, to separate page numbers in ``%f = %v''"); return; } ++k; if (current_value[k+1] == '-') /* should not have --- */ { warning( "Use en-dash, --, to separate page numbers in ``%f = %v''"); return; } break; case ',': number++; break; default: unexpected(); return; } } #else /* NOT defined(HAVE_OLDCODE) */ if (check_patterns(pattern_names[PT_PAGES].table,current_value) == YES) return; #endif /* defined(HAVE_OLDCODE) */ unexpected(); } #if (defined(HAVE_PATTERNS) || defined(HAVE_REGEXP) || defined(HAVE_RECOMP)) #if defined(HAVE_STDC) YESorNO check_patterns(PATTERN_TABLE* pt,const char *value) #else /* K&R style */ YESorNO check_patterns(pt,value) PATTERN_TABLE* pt; const char *value; #endif { /* Return YES if current_value[] matches a pattern, or there are no patterns, and NO if there is a match failure. Any message associated with a successfully-matched pattern is printed before returning. */ int k; for (k = 0; k < pt->current_size; ++k) { if (PATTERN_MATCHES(value,pt->patterns[k].pattern)) { if (pt->patterns[k].message != (const char*)NULL) { if (pt->patterns[k].message[0] == '?') /* special error flag */ error(pt->patterns[k].message + 1); else /* just normal warning */ warning(pt->patterns[k].message); } return (YES); } } return ((pt->current_size == 0) ? YES : NO); } #endif /* (defined(HAVE_PATTERNS) || defined(HAVE_REGEXP) || defined(HAVE_RECOMP)) */ void check_volume(VOID) { #if defined(HAVE_OLDCODE) size_t k; size_t n = strlen(current_value) - 1; /* Match patterns like "27", "27A", "27/3", "27A 3", "SMC-13", "VIII", "B", "{IX}", "1.2", "Special issue A", and "11 and 12". However, NEVER match pattern like "11(5)", since that is probably an erroneous incorporation of issue number into the volume value. */ for (k = 1; k < n; ++k) { /* omit first and last characters -- they are quotation marks */ if (!( Isalnum(current_value[k]) || (current_value[k] == '-') || (current_value[k] == '/') || (current_value[k] == '.') || isspace(current_value[k]) || (current_value[k] == '{') || (current_value[k] == '}') )) { unexpected(); return; } } #else /* NOT defined(HAVE_OLDCODE) */ if (check_patterns(pattern_names[PT_VOLUME].table,current_value) == YES) return; #endif /* defined(HAVE_OLDCODE) */ unexpected(); } void check_year(VOID) { char *p; char *q; long year; #if defined(HAVE_OLDCODE) size_t k; size_t n; /* We expect the value string to match the regexp [0-9]+ */ for (k = 1, n = strlen(current_value) - 1; k < n; ++k) { /* omit first and last characters -- they are quotation marks */ if (!Isdigit(current_value[k])) { warning("Non-digit found in field value of ``%f = %v''"); return; } } #else /* NOT defined(HAVE_PATTERNS) */ if (check_patterns(pattern_names[PT_YEAR].table,current_value) == YES) return; unexpected(); #endif /* defined(HAVE_PATTERNS) */ for (p = current_value; *p ; ) /* now validate all digit strings */ { if (Isdigit(*p)) /* then have digit string */ { /* now make sure year is `reasonable' */ year = strtol(p,&q,10); if ((year < 1800L) || (year > 2099L)) warning("Suspicious year in ``%f = %v''"); p = q; } else /* ignore other characters */ p++; } } #if defined(HAVE_STDC) static int CODEN_character_value(int c) #else /* K&R style */ static int CODEN_character_value(c) int c; #endif { if (('a' <= c) && (c <= 'z')) return ((c - 'a' + 1)); else if (('A' <= c) && (c <= 'Z')) return ((c - 'A' + 1)); else if (('1' <= c) && (c <= '9')) return ((c - '1' + 27)); else if (c == '0') return (36); else return (-1); } #if defined(HAVE_STDC) static size_t copy_element(char *target, size_t nt, const char *source, size_t ns) #else /* K&R style */ static size_t copy_element(char *target, size_t nt, const char *source, size_t ns) #endif { /* Copy source[] into target[], excluding spaces and hyphens, and add a */ /* trailing NUL. Return the number of characters left in source[], */ /* after ignoring trailing spaces and hyphens. */ size_t ks; size_t kt; for (ks = 0, kt = 0; (ks < ns) && (kt < (nt - 1)); ++ks) { if (!((source[ks] == '-') || isspace(source[ks]))) target[kt++] = source[ks]; } target[kt] = '\0'; for ( ; (source[ks] == '-') || isspace(source[ks]); ++ks) /* NO-OP */; /* skip trailing space and hyphens */ return (size_t)(ns - ks); } #if defined(HAVE_STDC) static void incomplete_CODEN(char CODEN[7]) #else /* K&R style */ static void incomplete_CODEN(CODEN) char CODEN[7]; #endif { static char fmt[] = "Incomplete CODEN %c%c%c%c%c should be %c%c%c%c%c%c in ``%%f = %%v''"; char msg[sizeof(fmt)]; (void)sprintf(msg, fmt, CODEN[1], CODEN[2], CODEN[3], CODEN[4], CODEN[5], CODEN[1], CODEN[2], CODEN[3], CODEN[4], CODEN[5], CODEN[6]); warning(msg); /* should be error(), but some journals might have */ /* invalid CODENs (some books have invalid ISBNs) */ } #if defined(HAVE_STDC) static YESorNO is_CODEN_char(int c, size_t n) #else /* K&R style */ static YESorNO is_CODEN_char(c,n) int c; size_t n; #endif { static size_t n_significant = 0; /* number of significant chars already seen in current CODEN */ /* CODENs match [A-Z]-*[A-Z]-*[A-Z]-*[A-Z]-*[A-Z]-*[A-Z0-9], but we also allow lower-case letters. */ if (n == 0) /* start new CODEN */ n_significant = 0; /* embedded hyphens are accepted, but are not significant */ if ((n_significant > 0) && (c == '-')) return (YES); else if ((n_significant < 5) && isalpha(c)) { n_significant++; return (YES); } else if ((n_significant >= 5) && isalnum(c)) /* sixth char can be a digit */ { n_significant++; return (YES); } return (NO); } #if defined(HAVE_STDC) static YESorNO is_ISBN_char(int c, size_t n) #else /* K&R style */ static YESorNO is_ISBN_char(c,n) int c; size_t n; #endif { static size_t n_significant = 0; /* number of significant chars already seen in current CODEN */ /* ISBNs match [0-9][- ]*[0-9][- ]*[0-9][- ]*[0-9][- ]*[0-9][- ]* [0-9][- ]*[0-9][- ]*[0-9][- ]*[0-9][- ]*[0-9xX] */ if (n == 0) /* start new ISBN */ n_significant = 0; /* embedded hyphens and space are accepted, but are not significant */ if ((n_significant > 0) && ((c == '-') || isspace(c))) return (YES); else if ((n_significant < 9) && isdigit(c)) { n_significant++; return (YES); } else if ((n_significant >= 9) && (isdigit(c) || (c == 'X') || (c == 'x'))) { /* tenth character may be [0-9xX] */ n_significant++; return (YES); } return (NO); } #if defined(HAVE_STDC) static YESorNO is_ISSN_char(int c, size_t n) #else /* K&R style */ static YESorNO is_ISSN_char(c,n) int c; size_t n; #endif { static size_t n_significant = 0; /* number of significant chars already seen in current CODEN */ /* ISSNs match [0-9][- ]*[0-9][- ]*[0-9][- ]*[0-9][- ]* [0-9][- ]*[0-9][- ]*[0-9][- ]*[0-9xX] */ if (n == 0) /* start new ISSN */ n_significant = 0; /* embedded hyphens and space are accepted, but are not significant */ if ((n_significant > 0) && ((c == '-') || isspace(c))) return (YES); else if ((n_significant < 7) && isdigit(c)) { n_significant++; return (YES); } else if ((n_significant >= 7) && (isdigit(c) || (c == 'X') || (c == 'x'))) { /* eighth character may be [0-9xX] */ n_significant++; return (YES); } return (NO); } #if defined(HAVE_STDC) static void parse_list(const char *s, YESorNO (*is_name_char) ARGS((int c, size_t n)), void (*validate) ARGS((const char *s, size_t n))) #else /* K&R style */ static void parse_list(s, is_name_char, validate) const char *s; YESorNO (*is_name_char) ARGS((int c, size_t n)); void (*validate) ARGS((const char *s, size_t n)); #endif { parse_data pd; /******************************************************************* Parse a list of CODEN, ISBN, or ISSN elements, according to the grammar: LIST : NAME | NAME SEPARATOR LIST SEPARATOR : [not-a-token-char]+ | (nested balanced parentheses) NAME : SEPARATOR* NAME' NAME' : [token-char]+ This simple, and permissive, grammar accepts any strings that contain sequences of zero or more CODEN, ISBN, or ISSN elements, separated by one or more of characters which are not themselves legal element characters. The first element in the list may be preceded by any number of non-element characters. Comments are supported as arbitrary strings inside balanced parentheses, allowing lists like "0-387-97621-4 (invalid ISBN checksum), 3-540-97621-3" "0020-0190 (1982--1990), 0733-8716 (1991--)" "0-8493-0190-4 (set), 0-8493-0191-2 (v. 1), 0-8493-0192-0 (v. 2), 0-8493-0193-9 (v. 3)" The distinction between NAME' and SEPARATOR characters is made by the argument function, (*is_name_char)(), and the validation of the elements is done by the argument function (*validate)(). This generality makes it possible for the same code to be reused for at least CODEN, ISBN, and ISSN values, and possibly others in future versions of this program. Tokens are not copied from the list, so no additional dynamic string storage is required. *******************************************************************/ pd.s = s; pd.is_name_char = is_name_char; for (;;) { parse_separator(&pd); /* may produce a zero-length token */ parse_element(&pd); if (pd.token_length == 0) /* no more tokens in list */ return; (*validate)(pd.token, pd.token_length); } } #if defined(HAVE_STDC) static void parse_element(parse_data *pd) #else /* K&R style */ static void parse_element(pd) parse_data *pd; #endif { size_t n; for (n = 0, pd->token = pd->s; *pd->s && ((*pd->is_name_char)(*pd->s,n) == YES); n++, pd->s++) /* NO-OP */; pd->token_length = (int)(pd->s - pd->token); } #if defined(HAVE_STDC) static void parse_separator(parse_data *pd) #else /* K&R style */ static void parse_separator(pd) parse_data *pd; #endif { size_t n; int paren_level; /* parenthesis level */ pd->token = pd->s; for (n = 0, paren_level = 0; (*pd->s && (((*pd->is_name_char)(*pd->s,n) == NO) || (paren_level > 0))); n++, pd->s++) { if (*pd->s == '(') paren_level++; else if (*pd->s == ')') { paren_level--; if (paren_level == 0) n = 0; } } pd->token_length = (int)(pd->s - pd->token); if (paren_level != 0) warning("Non-zero parenthesis level in ``%f = %v''"); } static void unexpected(VOID) { warning("Unexpected value in ``%f = %v''"); } static void validate_CODEN(const char *the_CODEN, size_t n) { int checksum; char CODEN[1 + MAX_CODEN + 1]; /* saved CODEN for error messages */ /* (use slots 1..6 instead of 0..5) */ size_t k; /* index into CODEN[] */ size_t nleft; #define CODEN_CHECK_CHARACTER(n) "9ABCDEFGHIJKLMNOPQRSTUVWXYZ2345678"[n] /******************************************************************* CODEN values are 6-character strings from the set [A-Z0-9], with a check digit stored in the 6th position given by (11*N1 + 7*N2 + 5*N3 + 3*N4 + 1*N5) mod 34 == X where the Nk are 1..26 for A..Z, and 27..36 for 1..9..0. However, the checksum X (in 0..33) is represented by the corresponding character in the different 34-character range [9A-Z2-8], which excludes digits 0 and 1 to avoid confusion with letters O and I. In library catalogs, the 6th CODEN digit is often omitted, so when we find it missing in a CODEN value string, we print a warning to tell the user what it should be. However, we intentionally do NOT insert it into the bibclean output, because the value string may be corrupted, instead of just truncated. The largest possible sum above is 11*36 + 7*36 + 5*36 + 3*36 + 1*36 = 36*(11 + 7 + 5 + 3 + 1) = 36*27 = 972, corresponding to the CODEN value 00000T, since 972 mod 34 = 20, which maps to the letter T. In reality, the limit is lower than this, because the initial CODEN character is always alphabetic; the largest usable CODEN would then be Z0000, which has a checksum of 11*26 + 7*36 + 5*36 + 3*36 + 1*36 = 36*(11 + 7 + 5 + 3 + 1) - 10*11 = 862. Even 16-bit (short) integers are adequate for this computation. Old CODEN values may be stored with a hyphen between the 4th and 5th characters, e.g. "JACS-A" and "JACS-AT", as well as just "JACSA" and "JACSAT". Unlike ISBN and ISSN values, spaces are NOT used inside CODEN values. *******************************************************************/ (void)strcpy(&CODEN[1], UNKNOWN_CODEN); nleft = copy_element(&CODEN[1], sizeof(CODEN)-1, the_CODEN, n); for (checksum = 0, k = 1; CODEN[k]; ++k) { if (k < MAX_CODEN) { static int multiplier[] = { 0, 11, 7, 5, 3, 1 }; checksum += CODEN_character_value((int)CODEN[k]) * multiplier[k]; } else if (k == MAX_CODEN) { if (CODEN_CHECK_CHARACTER(checksum % 34) != CODEN[k]) bad_CODEN(CODEN); } } /* end for (loop over CODEN[]) */ if (strlen(&CODEN[1]) == (MAX_CODEN - 1)) { /* check digit omitted, so tell the user what it should be */ CODEN[MAX_CODEN] = CODEN_CHECK_CHARACTER(checksum % 34); incomplete_CODEN(CODEN); } else if ((strlen(&CODEN[1]) != MAX_CODEN) || (nleft > 0)) bad_CODEN(CODEN); } static void validate_ISBN(const char *the_ISBN, size_t n) { int checksum; char ISBN[1 + MAX_ISBN + 1]; /* saved ISBN for error messages */ /* (use slots 1..10 instead of 0..9) */ size_t k; /* index into ISBN[] */ size_t nleft; /******************************************************************* ISBN numbers are 10-character values from the set [0-9Xx], with a checksum given by (sum(k=1:9) digit(k) * k) mod 11 == digit(10) where digits have their normal value, X (or x) as a digit has value 10, and spaces and hyphens are ignored. The sum is bounded from above by 10*(1 + 2 + ... + 9) = 450, so even short (16-bit) integers are sufficient for the accumulation. ISBN digits are grouped into four parts separated by space or hyphen: countrygroupnumber-publishernumber-booknumber-checkdigit. *******************************************************************/ (void)strcpy(&ISBN[1],UNKNOWN_ISBN); nleft = copy_element(&ISBN[1], sizeof(ISBN)-1, the_ISBN, n); for (checksum = 0, k = 1; ISBN[k]; ++k) { if (k < MAX_ISBN) checksum += ISBN_DIGIT_VALUE(ISBN[k]) * k; else if (k == MAX_ISBN) { if ((checksum % 11) != ISBN_DIGIT_VALUE(ISBN[k])) bad_ISBN(ISBN); } } /* end for (loop over ISBN[]) */ if ((strlen(&ISBN[1]) != MAX_ISBN) || (nleft > 0)) bad_ISBN(ISBN); } static void validate_ISSN(const char *the_ISSN, size_t n) { int checksum; char ISSN[1 + MAX_ISSN + 1]; /* saved ISSN for error messages */ /* (use slots 1..8 instead of 0..7) */ size_t k; /* index into ISSN[] */ size_t nleft; /******************************************************************* ISSN numbers are 8-character values from the set [0-9Xx], with a checksum given by (sum(k=1:7) digit(k) * (k+2)) mod 11 == digit(8) where digits have their normal value, X (or x) as a digit has value 10, and spaces and hyphens are ignored. The sum is bounded from above by 10*(3 + 4 + ... + 9) = 420, so even short (16-bit) integers are sufficient for the accumulation. ISSN digits are grouped into two 4-digit parts separated by space or hyphen. *******************************************************************/ (void)strcpy(&ISSN[1],UNKNOWN_ISSN); nleft = copy_element(&ISSN[1], sizeof(ISSN)-1, the_ISSN, n); for (checksum = 0, k = 1; ISSN[k]; ++k) { if (k < MAX_ISSN) checksum += ISSN_DIGIT_VALUE(ISSN[k]) * (k + 2); else if (k == MAX_ISSN) { if ((checksum % 11) != ISSN_DIGIT_VALUE(ISSN[k])) bad_ISSN(ISSN); } } /* end for (loop over ISSN[]) */ if ((strlen(&ISSN[1]) != MAX_ISSN) || (nleft > 0)) bad_ISSN(ISSN); } bibclean-2.11.4.1.orig/config.hin0000644000175200017520000001156106720700303015634 0ustar debiandebian/* WARNING: Do NOT edit the config.h file; instead, put any needed changes in custom.h, so that they can override assumptions made in the automatically-generated config.h file */ #undef STDC_HEADERS #undef _ALL_SOURCE #undef _POSIX_SOURCE #undef HAVE_STDC /* Define if you want old pattern-less string matching in .ini files */ #undef HAVE_OLDCODE /* Define if you want standard bibclean-specific pattern in .ini files */ #define HAVE_PATTERNS 1 /* Define if you want regular-expression patterns in .ini files using re_comp() */ #undef HAVE_RECOMP #undef HAVE_REGEXP #if !(defined(__cplusplus) || defined(c_plusplus)) /* Define to empty if the keyword does not work, but do nothing in */ /* C++ environment, because autoconf 2.4 gets the wrong answer from */ /* the AC_C_CONST test program under C++ compilation. */ #undef const #endif /* Define if your free() requires (char*) cast instead of (void*) */ #undef FREE_CAST_IS_CHAR_STAR /* Define if your compiler recognizes \a as an alert (ASCII BEL) character */ #undef HAVE_ALERT_CHAR /* Library functions that we need */ #undef HAVE_GETCWD #undef HAVE_GETWD #undef HAVE_STRCSPN #undef HAVE_STRDUP #undef HAVE_STRSPN #undef HAVE_STRSTR #undef HAVE_STRTOD #undef HAVE_STRTOL /* Header files that we might need */ #undef HAVE_CONIO_H #undef HAVE_CTYPE_H #undef HAVE_DESCRIP_H #undef HAVE_ERRNO_H #undef HAVE_FCNTL_H #undef HAVE_IODEF_H #undef HAVE_IO_H #undef HAVE_JPIDEF_H #undef HAVE_LIMITS_H #undef HAVE_OSFCN_H #undef HAVE_PWD_H #undef HAVE_REGEXP_H #undef HAVE_REGEX_H #undef HAVE_RMS_H #undef HAVE_SGTTY_H #undef HAVE_SSDEF_H #undef HAVE_STAT_H #undef HAVE_STDDEF_H #undef HAVE_STDIO_H #undef HAVE_STDLIB_H #undef HAVE_STRING_H #undef HAVE_SYS_IOCTL_H #undef HAVE_SYS_PARAM_H #undef HAVE_SYS_STAT_H #undef HAVE_SYS_TYPES_H #undef HAVE_TERMIOS_H #undef HAVE_TERMIO_H #undef HAVE_TIME_H #undef HAVE_TT2DEF_H #undef HAVE_TTDEF_H #undef HAVE_TYPES_H #undef HAVE_UNISTD_H #undef HAVE_UNIXIO_H #undef HAVE_IOCTL_PROTOTYPE #define RCSID(s) static char rcsid[] = s; #define OS_UNIX 1 #include /* NB: some systems have Standard C header files, but compilers that do not accept function prototypes (e.g. HP HP-UX 9.0.3 /bin/cc) */ #if defined(STDC_HEADERS) && (defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus)) #define ARGS(plist) plist #define VOID void #else #define ARGS(plist) () #define VOID #endif #define SCREEN_LINES 24 /*********************************************************************** The limit on file name lengths is non-standard: -------- ------------- ------------------------------------------ Name Definition System -------- ------------- ------------------------------------------ FNMAX PCC-20 MAXPATH Turbo C 2.0, C and C++ 3.0, and TopSpeed C _MAX_PATH Microsoft C 5.0, 6.0, 7.0 and TopSpeed C MAXPATHLEN Sun OS (4.2BSD), 4.3BSD, Gould UTX/32, HPUX, KCC-20, AIX (RT, RS, PS/2, 370), HP/Apollo DomainOS, DEC Alpha (OSF/1) PATH_MAX SYS V (Silicon Graphics) PATH_MAX POSIX, DEC Alpha (OSF/1) FILENAME_MAX Intel RMX, NeXT Mach, Turbo C/C++ 3.0 -------- ------------- ------------------------------------------ ***********************************************************************/ #if defined(HAVE_SYS_PARAM_H) #include #endif #if defined(HAVE_LIMITS_H) #include #endif #if defined(HAVE_STDLIB_H) #include #endif #if defined(HAVE_UNIXIO_H) #include #endif #if !defined(MAXPATHLEN) && defined(FNMAX) #define MAXPATHLEN FNMAX #endif #if !defined(MAXPATHLEN) && defined(MAXPATH) #define MAXPATHLEN MAXPATH #endif #if !defined(MAXPATHLEN) && defined(_MAX_PATH) #define MAXPATHLEN _MAX_PATH #endif #if !defined(MAXPATHLEN) && defined(PATH_MAX) #define MAXPATHLEN PATH_MAX #endif #if !defined(MAXPATHLEN) && defined(FILENAME_MAX) #define MAXPATHLEN FILENAME_MAX #endif #if !defined(MAXPATHLEN) && defined(FNMAX) #define MAXPATHLEN 1024 #endif #if OS_PCDOS #define SEP_COMP " ;,|" /* separators between filename components */ #define SEP_PATH "\\" /* separators between directory path and filename */ #endif #if OS_UNIX #define SEP_COMP " ;:,|" /* separators between filename components */ #define SEP_PATH "/" /* separators between directory path and filename */ #endif #if OS_VAXVMS #define SEP_COMP " ;,|" /* separators between filename components */ #define SEP_PATH ":]" /* separators between directory path and filename */ /* first char is what we default to */ #endif #if defined(__TURBOC__) #undef fileno #define fileno(f) ((f)->fd) #endif #include #if !defined(HAVE_IOCTL_PROTOTYPE) #if defined(__cplusplus) || defined(c_plusplus) /* system files should have: extern "C" {int ioctl ARGS((int, int, ...));} */ #else extern int ioctl ARGS((int, int, ...)); #endif #endif #if defined(FREE_CAST_IS_CHAR_STAR) #define FREE(p) free((char*)(p)) #else #define FREE(p) free((void*)(p)) #endif bibclean-2.11.4.1.orig/testbib1.bok0000644000175200017520000003033505574125665016123 0ustar debiandebian@Misc{value-test, comment = "This entry contains several value patterns designed to pass the value pattern checks in bibclean 2.05 or later.", comment = "The following values should all be accepted.", chapter = "13", month = "31 " # aug, number = "23 + 24", number = "23 / 24", number = "23 \& 24", number = "23+24", number = "23/24", number = "23\&24", number = "3+4", number = "TR\#89-24", number = "UMIACS-TR-89-3.1, CS-TR-2177.1", number = "{STAN-CS-88-1223}", pages = "1, 3, 5, 7", pages = "1--3", pages = "12, 13, 17", pages = "12--13", pages = "L301--L305", pages = "ix + 399", pages = "viii + 445, with 30 illustrations", pages = "viii + 445", price = "UK\pounds 12.95", price = "US\$12.95", price = "US\$13", volume = "23", volume = "23-1", volume = "23a", volume = "One", volume = "XXIII", volume = "xxiii", year = "1978 (1985)", year = "1987" # "\unskip--", year = "2001", comment = "The following values should raise warnings.", chapter = "23.", chapter = "Two", month = "janvier", pages = "1,3,5,7", pages = "1--3, 5, 7", pages = "10,560--10,574", pages = "12--13, 17, 18", pages = "12--13, 17--18", pages = "147--156, 157--168", pages = "445 + viii with 30 illustrations", pages = "445 + viii", price = "DM\$60.5", price = "DM\$60.537", price = "US\$12.9", price = "\$12.95", price = "\$13", price = "\pounds 13", volume = "1.", volume = "12(5)", volume = "1:", year = "(1985)", year = "1789", year = "23", year = "2525", year = "????", } @Testcharset{Test-8-bit-set, charset = "\000", charset = "\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017", charset = "\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037", charset = "\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057", charset = "\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077", charset = "\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117", charset = "\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137", charset = "\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157", charset = "\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177", charset = "\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217", charset = "\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237", charset = "\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257", charset = "\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277", charset = "\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317", charset = "\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337", charset = "\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357", charset = "\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377", charset = "\004\b\t\n\v\f\r ", charset = " \032", charset = "!{"}#$%&'()*+,-./", charset = "0123456789:;<=>?", charset = "@ABCDEFGHIJKLMNO", charset = "PQRSTUVWXYZ[\]^_", charset = "`abcdefghijklmno", charset = "pqrstuvwxyz{|}~", charset = "€‚ƒ„…†‡ˆ‰Š‹ŒŽ", charset = "‘’“”•–—˜™š›œžŸ", charset = " ¡¢£¤¥¦§¨©ª«¬­®¯", charset = "°±²³´µ¶·¸¹º»¼½¾¿", charset = "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ", charset = "ÐÑÒÓÔÕÖרÙÚÛÜÝÞß", charset = "àáâãäåæçèéêëìíîï", charset = "ðñòóôõö÷øùúûüýþÿ", } %%% This entry enumerates all 256 characters of an 8-bit character %%% set, except for these 10 characters that are required for other %%% purposes: %%% %%% NUL string delimiter in C %%% CTL-A BIBTEX-HIDDEN-DELIMITER (internal marker) %%% CTL-I..CTL-M,SPACE whitespace characters %%% LEFT-BRACE, RIGHT-BRACE BibTeX character protectors %%% %%% Each entry contains the octal representation of a character value %%% followed by =, except for the above %%% 10 exceptions, for which is replaced by a %%% . %%% %%% If bibclean is working properly, the remaining 246 characters %%% should be passed through untouched. With the default indentation, %%% the output of bibclean on this example should be exactly the same %%% as the input. @Testcharset{Test-8-bit-set, charset = "\000 = ", charset = "\001 = ", charset = "\002 = ", charset = "\003 = ", charset = "\004 = ", charset = "\005 = ", charset = "\006 = ", charset = "\007 = ", charset = "\010 = ", charset = "\011 = ", charset = "\012 = ", charset = "\013 = ", charset = "\014 = ", charset = "\015 = ", charset = "\016 = ", charset = "\017 = ", charset = "\020 = ", charset = "\021 = ", charset = "\022 = ", charset = "\023 = ", charset = "\024 = ", charset = "\025 = ", charset = "\026 = ", charset = "\027 = ", charset = "\030 = ", charset = "\031 = ", charset = "\032 = ", charset = "\033 = ", charset = "\034 = ", charset = "\035 = ", charset = "\036 = ", charset = "\037 = ", charset = "\040 = ", charset = "\041 = !", charset = "\042 = {"}", charset = "\043 = #", charset = "\044 = $", charset = "\045 = %", charset = "\046 = &", charset = "\047 = '", charset = "\050 = (", charset = "\051 = )", charset = "\052 = *", charset = "\053 = +", charset = "\054 = ,", charset = "\055 = -", charset = "\056 = .", charset = "\057 = /", charset = "\060 = 0", charset = "\061 = 1", charset = "\062 = 2", charset = "\063 = 3", charset = "\064 = 4", charset = "\065 = 5", charset = "\066 = 6", charset = "\067 = 7", charset = "\070 = 8", charset = "\071 = 9", charset = "\072 = :", charset = "\073 = ;", charset = "\074 = <", charset = "\075 = =", charset = "\076 = >", charset = "\077 = ?", charset = "\100 = @", charset = "\101 = A", charset = "\102 = B", charset = "\103 = C", charset = "\104 = D", charset = "\105 = E", charset = "\106 = F", charset = "\107 = G", charset = "\110 = H", charset = "\111 = I", charset = "\112 = J", charset = "\113 = K", charset = "\114 = L", charset = "\115 = M", charset = "\116 = N", charset = "\117 = O", charset = "\120 = P", charset = "\121 = Q", charset = "\122 = R", charset = "\123 = S", charset = "\124 = T", charset = "\125 = U", charset = "\126 = V", charset = "\127 = W", charset = "\130 = X", charset = "\131 = Y", charset = "\132 = Z", charset = "\133 = [", charset = "\134 = {\}", charset = "\135 = ]", charset = "\136 = ^", charset = "\137 = _", charset = "\140 = `", charset = "\141 = a", charset = "\142 = b", charset = "\143 = c", charset = "\144 = d", charset = "\145 = e", charset = "\146 = f", charset = "\147 = g", charset = "\150 = h", charset = "\151 = i", charset = "\152 = j", charset = "\153 = k", charset = "\154 = l", charset = "\155 = m", charset = "\156 = n", charset = "\157 = o", charset = "\160 = p", charset = "\161 = q", charset = "\162 = r", charset = "\163 = s", charset = "\164 = t", charset = "\165 = u", charset = "\166 = v", charset = "\167 = w", charset = "\170 = x", charset = "\171 = y", charset = "\172 = z", charset = "\173 = ", charset = "\174 = |", charset = "\175 = ", charset = "\176 = ~", charset = "\177 = ", charset = "\200 = €", charset = "\201 = ", charset = "\202 = ‚", charset = "\203 = ƒ", charset = "\204 = „", charset = "\205 = …", charset = "\206 = †", charset = "\207 = ‡", charset = "\210 = ˆ", charset = "\211 = ‰", charset = "\212 = Š", charset = "\213 = ‹", charset = "\214 = Œ", charset = "\215 = ", charset = "\216 = Ž", charset = "\217 = ", charset = "\220 = ", charset = "\221 = ‘", charset = "\222 = ’", charset = "\223 = “", charset = "\224 = ”", charset = "\225 = •", charset = "\226 = –", charset = "\227 = —", charset = "\230 = ˜", charset = "\231 = ™", charset = "\232 = š", charset = "\233 = ›", charset = "\234 = œ", charset = "\235 = ", charset = "\236 = ž", charset = "\237 = Ÿ", charset = "\240 =  ", charset = "\241 = ¡", charset = "\242 = ¢", charset = "\243 = £", charset = "\244 = ¤", charset = "\245 = ¥", charset = "\246 = ¦", charset = "\247 = §", charset = "\250 = ¨", charset = "\251 = ©", charset = "\252 = ª", charset = "\253 = «", charset = "\254 = ¬", charset = "\255 = ­", charset = "\256 = ®", charset = "\257 = ¯", charset = "\260 = °", charset = "\261 = ±", charset = "\262 = ²", charset = "\263 = ³", charset = "\264 = ´", charset = "\265 = µ", charset = "\266 = ¶", charset = "\267 = ·", charset = "\270 = ¸", charset = "\271 = ¹", charset = "\272 = º", charset = "\273 = »", charset = "\274 = ¼", charset = "\275 = ½", charset = "\276 = ¾", charset = "\277 = ¿", charset = "\300 = À", charset = "\301 = Á", charset = "\302 = Â", charset = "\303 = Ã", charset = "\304 = Ä", charset = "\305 = Å", charset = "\306 = Æ", charset = "\307 = Ç", charset = "\310 = È", charset = "\311 = É", charset = "\312 = Ê", charset = "\313 = Ë", charset = "\314 = Ì", charset = "\315 = Í", charset = "\316 = Î", charset = "\317 = Ï", charset = "\320 = Ð", charset = "\321 = Ñ", charset = "\322 = Ò", charset = "\323 = Ó", charset = "\324 = Ô", charset = "\325 = Õ", charset = "\326 = Ö", charset = "\327 = ×", charset = "\330 = Ø", charset = "\331 = Ù", charset = "\332 = Ú", charset = "\333 = Û", charset = "\334 = Ü", charset = "\335 = Ý", charset = "\336 = Þ", charset = "\337 = ß", charset = "\340 = à", charset = "\341 = á", charset = "\342 = â", charset = "\343 = ã", charset = "\344 = ä", charset = "\345 = å", charset = "\346 = æ", charset = "\347 = ç", charset = "\350 = è", charset = "\351 = é", charset = "\352 = ê", charset = "\353 = ë", charset = "\354 = ì", charset = "\355 = í", charset = "\356 = î", charset = "\357 = ï", charset = "\360 = ð", charset = "\361 = ñ", charset = "\362 = ò", charset = "\363 = ó", charset = "\364 = ô", charset = "\365 = õ", charset = "\366 = ö", charset = "\367 = ÷", charset = "\370 = ø", charset = "\371 = ù", charset = "\372 = ú", charset = "\373 = û", charset = "\374 = ü", charset = "\375 = ý", charset = "\376 = þ", charset = "\377 = ÿ", } bibclean-2.11.4.1.orig/xunistd.h0000644000175200017520000000032706032536770015547 0ustar debiandebian#ifndef XUNISTD_H_DEFINED_ #define XUNISTD_H_DEFINED_ #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_LIBC_H #include /* e.g. NeXT Mach 3.x system */ #endif #endif /* XUNISTD_H_DEFINED_ */ bibclean-2.11.4.1.orig/bibclean.txt0000644000175200017520000015367207133432412016203 0ustar debiandebian User Commands BIBCLEAN(1) NAME bibclean - prettyprint and syntax check BibTeX and Scribe bibliography data base files SYNOPSIS bibclean [ -author ] [ -error-log filename ] [ -help ] [ '-?' ] [ -init-file filename ] [ -max-width nnn ] [ -[no-]align-equals ] [ -[no-]check-values ] [ -[no-]delete-empty-values ] [ -[no-]file-position ] [ -[no-]fix-font-changes ] [ -[no-]fix-initials ] [ -[no-]fix-names ] [ -[no-]German-style ] [ -[no-]keep-linebreaks ] [ -[no-]keep-parbreaks ] [ -[no-]keep-preamble-spaces ] [ -[no-]keep-spaces ] [ -[no-]keep-string-spaces ] [ -[no-]parbreaks ] [ -[no-]prettyprint ] [ -[no-]print-patterns ] [ -[no-]read-init-files ] [ -[no-]remove-OPT-prefixes ] [ -[no-]scribe ] [ -[no-]trace-file-opening ] [ -[no-]warnings ] [ -version ] outfile All options can be abbreviated to a unique leading prefix. An explicit file name of ``-'' represents standard input; it is assumed if no input files are specified. On VAX VMS and IBM PC DOS, the leading ``-'' on option names may be replaced by a slash, ``/''; however, the ``-'' option prefix is always recognized. DESCRIPTION bibclean prettyprints input BibTeX files to stdout, and checks the brace balance and bibliography entry syntax as well. It can be used to detect problems in BibTeX files that sometimes confuse even BibTeX itself, and importantly, can be used to normalize the appearance of collections of BibTeX files. Here is a summary of the formatting actions: o BibTeX items are formatted into a consistent structure with one field = "value" pair per line, and the initial @ and trailing right brace in column 1. o Tabs are expanded into blank strings; their use is discouraged because they inhibit portability, and can suffer corruption in electronic mail. o Long string values are split at a blank and continued onto the next line with leading indentation. Version 2.11.4 Last change: 09 May 1998 1 User Commands BIBCLEAN(1) o A single blank line separates adjacent bibliography entries. o Text outside BibTeX entries is passed through verbatim. o Outer parentheses around entries are converted to braces. o Personal names in author and editor field values are nor- malized to the form ``P. D. Q. Bach'', from ``P.D.Q. Bach'' and ``Bach, P.D.Q.''. o Hyphen sequences in page numbers are converted to en- dashes. o Month values are converted to standard BibTeX string abbreviations. o In titles, sequences of upper-case characters at brace level zero are braced to protect them from being con- verted to lower-case letters by some bibliography styles. o CODEN, ISBN (International Standard Book Number) and ISSN (International Standard Serial Number) entry values are examined to verify the checksums of each listed number, and correct ISBN hyphenation is automatically supplied. The standardized format of the output of bibclean facili- tates the later application of simple filters, such as bib- check(1), bibdup(1), bibextract(1), bibindex(1), bibjoin(1), biblabel(1), biblook(1), biborder(1), bibsort(1), citefind(1), and citetags(1), to process the text, and also is the one expected by the GNU Emacs BibTeX support func- tions. OPTIONS Command-line switches may be abbreviated to a unique leading prefix, and letter case is not significant. All options are parsed before any input bibliography files are read, no matter what their order on the command line. Options that correspond to a yes/no setting of a flag have a form with a prefix "no-" to set the flag to no. For such options, the last setting determines the flag value used. This is signi- ficant when options are also specified in initialization files (see the INITIALIZATION FILES manual section). The leading hyphen that distinguishes an option from a filename may be doubled, for compatibility with GNU and POSIX conventions. Thus, -author and --author are equivalent. To avoid confusion with options, if a filename begins with a hyphen, it must be disguised by a leading absolute or Version 2.11.4 Last change: 09 May 1998 2 User Commands BIBCLEAN(1) relative directory path, e.g., /tmp/-foo.bib or ./-foo.bib. -author Display an author credit on the standard error unit, stderr, and then exit with a success return code. Sometimes an executable program is separated from its documentation and source code; this option provides a way to recover from that. -error-log filename Redirect stderr to the indicated file, which will then contain all of the error and warning messages. This option is pro- vided for those systems that have difficulty redirecting stderr. -help or -? Display a help message on stderr, giving a usage descrip- tion, similar to this section of the manual pages, and then exit with a success return code. -init-file filename Provide an explicit value pat- tern initialization file. It will be processed after any system-wide and job-wide ini- tialization files found on the PATH (for VAX VMS, SYS$SYSTEM) and BIBINPUTS search paths, respectively, and may override them. It in turn may be over- ridden by a subsequent file- specific initialization file. The initialization file name can be changed at compile time, or at run time through a setting of the environment variable BIB- CLEANINI, but defaults to .bib- cleanrc on UNIX, and to bibclean.ini elsewhere. For further details, see the INI- TIALIZATION FILES manual sec- tion. -max-width nnn bibclean normally limits output line widths to 72 characters, and in the interests of con- sistency, that value should not be changed. Occasionally, Version 2.11.4 Last change: 09 May 1998 3 User Commands BIBCLEAN(1) special-purpose applications may require different maximum line widths, so this option provides that capability. The number following the option name can be specified in decimal, octal (starting with 0), or hexade- cimal (starting with 0x). A zero or negative value is inter- preted to mean unlimited, so -max-width 0 can be used to ensure that each field/value pair appears on a single line. When -no-prettyprint requests bibclean to act as a lexical analyzer, the default line width is unlimited, unless overridden by this option. When bibclean is prettyprinting, line wrapping will be done only at a space. Consequently, a long non-blank character sequence may result in the output exceeding the requested line width. When bibclean is lexing, line wrapping is done by inserting a backslash-newline pair when the specified maximum is reached, so no line length will ever exceed the maximum. -[no-]align-equals With the positive form, align the equals sign in key/value assignments at the same column, separated by a single space from the value string. Otherwise, the equals sign follows the key, separated by a single space. Default: no. -[no-]check-values With the positive form, apply heuristic pattern matching to field values in order to detect possible errors (e.g., ``year = "192"'' instead of ``year = "1992"''), and issue warnings when unexpected patterns are found. Version 2.11.4 Last change: 09 May 1998 4 User Commands BIBCLEAN(1) This checking is usually benefi- cial, but if it produces too many bogus warnings for a par- ticular bibliography file, you can disable it with the negative form of this option. Default: yes. -[no-]delete-empty-values With the positive form, remove all field/value pairs for which the value is an empty string. This is helpful in cleaning up bibliographies generated from text editor templates. Compare this option with -[no-]remove- OPT-prefixes described below. Default: no. -[no-]file-position With the positive form, give detailed file position informa- tion in warning and error mes- sages. Default: no. -[no-]fix-font-changes With the positive form, supply an additional brace level around font changes in titles to pro- tect against downcasing by some BibTeX styles. Font changes that already have more than one level of braces are not modi- fied. For example, if a title contains the Latin phrase {\em Dictyos- telium Discoideum} or {\em {D}ictyostelium {D}iscoideum}, then downcasing will incorrectly convert the phrase to lower-case letters. Most BibTeX users are surprised that bracing the ini- tial letters does not prevent the downcase action. The correct coding is {{\em Dictyos- telium Discoideum}}. However, there are also legitimate cases where an extra level of bracing wrongly protects from downcas- ing. Consequently, bibclean will normally not supply an extra level of braces, but if you have a bibliography where the extra braces are routinely Version 2.11.4 Last change: 09 May 1998 5 User Commands BIBCLEAN(1) missing, you can use this option to supply them. If you think that you need this option, it is strongly recom- mended that you apply bibclean to your bibliography file with and without -fix-font-changes, then compare the two output files to ensure that extra braces are not being supplied in titles where they should not be present. You will have to decide which of the two output files is the better choice, then repair the incorrect title brac- ing by hand. Since font changes in titles are uncommon, except for cases of the type which this option is designed to correct, it should do more good than harm. Default: no. -[no-]fix-initials With the positive form, insert a space after a period following author initials. Default: yes. -[no-]fix-names With the positive form, reorder author and editor name lists to remove commas at brace level zero, placing first names or initials before last names. Default: yes. -[no-]German-style With the positive form, inter- pret quote characters ["] inside braced value strings at brace level 1 according to the conven- tions of the TeX style file german.sty, which overloads quote to simplify input and representation of German umlaut accents, sharp-s (es-zet), liga- ture separators, invisible hyphens, raised/lowered quotes, French guillemets, and discre- tionary hyphens. Recognized character combinations will be braced to prevent BibTeX from interpreting the quote as a Version 2.11.4 Last change: 09 May 1998 6 User Commands BIBCLEAN(1) string delimiter. Quoted strings receive no spe- cial handling from this option, and since German nouns in titles must anyway be protected from the downcasing operation of most BibTeX bibliography styles, Ger- man value strings that use the overloaded quote character can always be entered in the form "{...}", without the need to specify this option at all. Default: no. -[no-]keep-linebreaks Normally, line breaks inside value strings are collapsed into a single space, so that long value strings can later be bro- ken to provide lines of reason- able length. With the positive form, line- breaks are preserved in value strings. If -max-width is set to zero, this preserves the ori- ginal line breaks. Spacing out- side value strings remains under bibclean's control, and is not affected by this option. Default: no. -[no-]keep-parbreaks With the positive form, preserve paragraph breaks (either formfeeds, or lines containing only spaces) in value strings. Normally, paragraph breaks are collapsed into a single space. Spacing outside value strings remains under bibclean's con- trol, and is not affected by this option. Default: no. -[no-]keep-preamble-spaces With the positive form, preserve all whitespace in @Preamble{...} entries. Default: no. -[no-]keep-spaces With the positive form, preserve all spaces in value strings. Normally, multiple spaces are Version 2.11.4 Last change: 09 May 1998 7 User Commands BIBCLEAN(1) collapsed into a single space. This option can be used together with -keep-linebreaks, -keep- parbreaks, and -max-width 0 to preserve the form of value strings while still providing syntax and value checking. Spacing outside value strings remains under bibclean's con- trol, and is not affected by this option. Default: no. -[no-]keep-string-spaces With the positive form, preserve all whitespace in @String{...} entries. Default: no. -[no-]parbreaks With the negative form, a para- graph break (either a formfeed, or a line containing only spaces) is not permitted in value strings, or between field/value pairs. This may be useful to quickly trap runaway strings arising from mismatched delimiters. Default: yes. -[no-]prettyprint Normally, bibclean functions as a prettyprinter. However, with the negative form of this option, it acts as a lexical analyzer instead, producing a stream of lexical tokens. See the LEXICAL ANALYSIS manual sec- tion for further details. Default: yes. -[no-]print-patterns With the positive form, print the value patterns read from initialization files as they are added to internal tables. Use this option to check newly-added patterns, or to see what pat- terns are being used. When bibclean is compiled with native pattern-matching code (the default), these patterns are the ones that will be used in checking value strings for valid syntax, and all of them are specified in initialization files, rather than hard-coded Version 2.11.4 Last change: 09 May 1998 8 User Commands BIBCLEAN(1) into the program. For further details, see the INITIALIZATION FILES manual section. Default: no. -[no-]read-init-files With the negative form, suppress loading of system-, user-, and file-specific initialization files. Initializations will come only from those files explicitly given by -init-file filename options. Default: yes. -[no-]remove-OPT-prefixes With the positive form, remove the ``OPT'' prefix from each field name where the correspond- ing value is not an empty string. The prefix ``OPT'' must be entirely in upper-case to be recognized. This option is for bibliogra- phies generated with the help of the GNU Emacs BibTeX editing support, which generates tem- plates with optional fields identified by the ``OPT'' pre- fix. Although the function M-x bibtex-remove-OPT normally bound to the keystrokes C-c C-o does the job, users often forget, with the result that BibTeX does not recognize the field name, and ignores the value string. Compare this option with -[no- ]delete-empty-values described above. Default: no. -[no-]scribe With the positive form, accept input syntax conforming to the Scribe document system. The output will be converted to con- form to BibTeX syntax. See the SCRIBE BIBLIOGRAPHY FORMAT manual section for further details. Default: no. -[no-]trace-file-opening With the positive form, record in the error log file the names of all files which bibclean attempts to open. Use this option to identify where Version 2.11.4 Last change: 09 May 1998 9 User Commands BIBCLEAN(1) initialization files are located. Default: no. -[no-]warnings With the positive form, allow all warning messages. The nega- tive form is not recommended since it may mask problems that should be repaired. Default: yes. -version Display the program version number on stderr, and then exit with a success return code. This will also include an indi- cation of who compiled the pro- gram, the host name on which it was compiled, the time of compi- lation, and the type of string- value matching code selected, when that information is avail- able to the compiler. ERROR RECOVERY AND WARNINGS When bibclean detects an error, it issues an error message to both stderr and stdout. That way, the user is clearly notified, and the output bibliography also contains the mes- sage at the point of error. Error messages begin with a distinctive pair of queries, ??, beginning in column 1, followed by the input file name and line number. If the -file-position option was specified, they also contain the input and output positions of the current file, entry, and value. Each position includes the file byte number, the line number, and the column number. In the event of a runaway string argument, the entry and value positions should precisely pinpoint the erroneous bibliography entry, and the file positions will indicate where it was detected, which may be rather later in the files. Warning messages identify possible problems, and are there- fore sent only to stderr, and not to stdout, so they never appear in the output file. They are identified by a dis- tinctive pair of percents, %%, beginning in column 1, and as with error messages, may be followed by file position mes- sages if the -file-position option was specified. For convenience, the first line of each error and warning message sent to stderr is formatted according to the expec- tations of the GNU Emacs next-error command. You can invoke bibclean with the Emacs M-x compilebibclean filename.bib >filename.new command, then use the next-error Version 2.11.4 Last change: 09 May 1998 10 User Commands BIBCLEAN(1) command, normally bound to C-x ` (that's a grave, or back, accent), to move to the location of the error in the input file. If error messages are ignored, and left in the output bibliography file, they will precipitate an error when the bibliography is next processed with BibTeX. After issuing an error message, bibclean then resynchronizes its input by copying it verbatim to stdout until a new bibliography entry is recognized on a line in which the first non-blank character is an at-sign (@). This ensures that nothing is lost from the input file(s), allowing corrections to be made in either the input or the output files. However, if bibclean detects an internal error in its data structures, it will terminate abruptly without further input or output processing; this kind of error should never happen, and if it does, it should be reported immediately to the author of the program. Errors in ini- tialization files, and running out of dynamic memory, will also immediately terminate bibclean. INITIALIZATION FILES bibclean can be compiled with one of three different types of pattern matching; the choice is made by the installer at compile time: o The original version uses explicit hand-coded tests of value-string syntax. o The second version uses regular-expression pattern- matching host library routines together with regular-expression patterns that come entirely from initialization files. o The third version uses special patterns that come entirely from initialization files. The second and third versions are the ones of most interest here, because they allow the user to control what values are considered acceptable. However, command-line options can also be specified in initialization files, no matter which pattern matching choice was selected. When bibclean starts, it searches for initialization files, finding the first one in the system executable program search path (on UNIX and IBM PC DOS, PATH) and the first one in the BIBINPUTS search path, and processes them in turn. Then, when command-line arguments are processed, any addi- tional files specified by -init-filefilename options are also processed. Finally, immediately before each named bibliography file is processed, an attempt is made to Version 2.11.4 Last change: 09 May 1998 11 User Commands BIBCLEAN(1) process an initialization file with the same name, but with the extension changed to .ini. The default extension can be changed by a setting of the environment variable BIB- CLEANEXT. This scheme permits system-wide, user-wide, session-wide, and file-specific initialization files to be supported. When input is taken from stdin, there is no file-specific initialization. For precise control, the -no-read-init-files option suppresses all initialization files except those explicitly named by -init-filefilename options, either on the command line, or in requested initialization files. Recursive execution of initialization files with nested -init-file options is permitted; if the recursion is circu- lar, bibclean will finally get a non-fatal initialization file open failure after opening too many files. This ter- minates further initialization file processing. As the recursion unwinds, the files are all closed, then execution proceeds normally. An initialization file may contain empty lines, comments from percent to end of line (just like TeX), option switches, and field/pattern or field/pattern/message assign- ments. Leading and trailing spaces are ignored. This is best illustrated by a short example: % This is a small bibclean initialization file -init-file /u/math/bib/.bibcleanrc %% departmental patterns chapter = "\"D\"" %% 23 pages = "\"D--D\"" %% 23--27 volume = "\"D \\an\\d D\"" %% 11 and 12 year = \ "\"dddd, dddd, dddd\"" \ "Multiple years specified." %% 1989, 1990, 1991 -no-fix-names %% do not modify author/editor lists Long logical lines can be split into multiple physical lines by breaking at a backslash-newline pair; the backslash- newline pair is discarded. This processing happens while characters are being read, before any further interpretation of the input stream. Version 2.11.4 Last change: 09 May 1998 12 User Commands BIBCLEAN(1) Each logical line must contain a complete option (and its value, if any), or a complete field/pattern pair, or a field/pattern/message triple. Comments are stripped during the parsing of the field, pat- tern, and message values. The comment start symbol is not recognized inside quoted strings, so it can be freely used in such strings. Comments on logical lines that were input as multiple physi- cal lines via the backslash-newline convention must appear on the last physical line; otherwise, the remaining physical lines will become part of the comment. Pattern strings must be enclosed in quotation marks; within such strings, a backslash starts an escape mechanism that is commonly used in UNIX software. The recognized escape sequences are: \a alarm bell (octal 007) \b backspace (octal 010) \f formfeed (octal 014) \n newline (octal 012) \r carriage return (octal 015) \t horizontal tab (octal 011) \v vertical tab (octal 013) \ooo character number octal ooo (e.g \012 is linefeed). Up to 3 octal digits may be used. \0xhh character number hexadecimal hh (e.g., \0x0a is linefeed). xhh may be in either letter case. Any number of hexadecimal digits may be used. Backslash followed by any other character produces just that character. Thus, \% gets a literal percent into a string (preventing its interpretation as a comment), \" produces a quotation mark, and \\ produces a single backslash. An ASCII NUL (\0) in a string will terminate it; this is a feature of the C programming language in which bibclean is implemented. Field/pattern pairs can be separated by arbitrary space, and optionally, either an equals sign or colon functioning as an Version 2.11.4 Last change: 09 May 1998 13 User Commands BIBCLEAN(1) assignment operator. Thus, the following are equivalent: pages="\"D--D\"" pages:"\"D--D\"" pages "\"D--D\"" pages = "\"D--D\"" pages : "\"D--D\"" pages "\"D--D\"" Each field name can have an arbitrary number of patterns associated with it; however, they must be specified in separate field/pattern assignments. An empty pattern string causes previously-loaded patterns for that field name to be forgotten. This feature permits an initialization file to completely discard patterns from earlier initialization files. Patterns for value strings are represented in a tiny special-purpose language that is both convenient and suit- able for bibliography value-string syntax checking. While not as powerful as the language of regular-expression pat- terns, its parsing can be portably implemented in less than 3% of the code in a widely-used regular-expression parser (the GNU regexp package). The patterns are represented by the following special char- acters: one or more spaces a exactly one letter A one or more letters d exactly one digit D one or more digits r exactly one Roman numeral R one or more Roman numerals (i.e. a Roman number) w exactly one word (one or more letters and digits) W one or more space-separated words, beginning and ending with a word . one `special' character, one of the characters !#()*+,-./:;?[]~, a subset of Version 2.11.4 Last change: 09 May 1998 14 User Commands BIBCLEAN(1) punctuation characters that are typically used in string values : one or more `special' characters X one or more `special'-separated words, begin- ning and ending with a word \x exactly one x (x is any character), possibly with an escape sequence interpretation given earlier x exactly the character x (x is anything but one of these pattern characters: aAdDrRwW.:\) The X pattern character is very powerful, but generally inadvisable, since it will match almost anything likely to be found in a BibTeX value string. The reason for providing pattern matching on the value strings is to uncover possible errors, not mask them. There is no provision for specifying ranges or repetitions of characters, but this can usually be done with separate patterns. It is a good idea to accompany the pattern with a comment showing the kind of thing it is expected to match. Here is a portion of an initialization file giving a few of the patterns used to match number value strings: number = "\"D\"" %% 23 number = "\"A AD\"" %% PN LPS5001 number = "\"A D(D)\"" %% RJ 34(49) number = "\"A D\"" %% XNSS 288811 number = "\"A D\\.D\"" %% Version 3.20 number = "\"A-A-D-D\"" %% UMIAC-TR-89-11 number = "\"A-A-D\"" %% CS-TR-2189 number = "\"A-A-D\\.D\"" %% CS-TR-21.7 For a bibliography that contains only article entries, this list should probably be reduced to just the first pattern, so that anything other than a digit string fails the pattern-match test. This is easily done by keeping bibliography-specific patterns in a corresponding file with extension .ini, since that file is read automatically. You should be sure to use empty pattern strings in this pat- tern file to discard patterns from earlier initialization files. The value strings passed to the pattern matcher contain sur- rounding quotes, so the patterns should also. However, you could use a pattern specification like "\"D" to match an Version 2.11.4 Last change: 09 May 1998 15 User Commands BIBCLEAN(1) initial digit string followed by anything else; the omission of the final quotation mark \" in the pattern allows the match to succeed without checking that the next character in the value string is a quotation mark. Because the value strings are intended to be processed by TeX, the pattern matching ignores braces, and TeX control sequences, together with any space following those control sequences. Spaces around braces are preserved. This con- vention allows the pattern fragment A-AD-D to match the value string TN-K\slash 27-70, because the value is impli- citly collapsed to TN-K27-70 during the matching operation. bibclean's normal action when a string value fails to match any of the corresponding patterns is to issue a warning mes- sage something like this: "Unexpected value in ``year = "192"''. In most cases, that is sufficient to alert the user to a problem. In some cases, however, it may be desir- able to associate a different message with a particular pat- tern. This can be done by supplying a message string fol- lowing the pattern string. Format items %% (single per- cent), %e (entry name), %f (field name), %k (citation key), and %v (string value) are available to get current values expanded in the messages. Here is an example: chapter = "\"D:D\"" "Colon found in ``%f = %v''" %% 23:2 To be consistent with other messages output by bibclean, the message string should not end with punctuation. If you wish to make the message an error, rather than just a warning, begin it with a query (?), like this: chapter = "\"D:D\"" "?Colon found in ``%f = %v''" %% 23:2 The query will not be included in the output message. Escape sequences are supported in message strings, just as they are in pattern strings. You can use this to advantage for fancy things, such as terminal display mode control. If you rewrite the previous example as chapter = "\"D:D\"" \ "?\033[7mColon found in ``%f = %v''\033[0m" %% 23:2 the error message will appear in inverse video on display screens that support ANSI terminal control sequences. Such practice is not normally recommended, since it may have undesirable effects on some output devices. Nevertheless, you may find it useful for restricted applications. Version 2.11.4 Last change: 09 May 1998 16 User Commands BIBCLEAN(1) For some types of bibliography fields, bibclean contains special-purpose code to supplement or replace the pattern matching: o CODEN, ISBN and ISSN field values are handled this way because their validation requires evaluation of checksums that cannot be expressed by simple pat- terns; no patterns are even used in these three cases. o When bibclean is compiled with pattern-matching code support, chapter, number, pages, and volume values are checked only by pattern matching. o month values are first checked against the standard BibTeX month abbreviations, and only if no match is found are patterns then used. o year values are first checked against patterns, then if no match is found, the year numbers are found and converted to integer values for testing against rea- sonable bounds. Values for other fields are checked only against patterns. You can provide patterns for any field you like, even ones bibclean does not already know about. New ones are simply added to an internal table that is searched for each string to be validated. The special field, key, represents the bibliographic cita- tion key. It can be given patterns, like any other field. Here is an initialization file pattern assignment that will match an author name, a colon, an alphabetic string, and a two-digit year: key = "A:Add" %% Knuth:TB86 Notice that no quotation marks are included in the pattern, because the citation keys are not quoted. You can use such patterns to help enforce uniform naming conventions for citation keys, which is increasingly important as your bibliography data base grows. LEXICAL ANALYSIS When -no-prettyprint is specified, bibclean acts as a lexi- cal analyzer instead of a prettyprinter, producing output in lines of the form "" Each output line contains a single complete token, identi- fied by a small integer number for use by a computer Version 2.11.4 Last change: 09 May 1998 17 User Commands BIBCLEAN(1) program, a token type name for human readers, and a string value in quotes. Special characters in the token value string are represented with ANSI/ISO Standard C escape sequences, so all characters other than NUL are representable, and multi-line values can be represented in a single line. Here are the token numbers and token type names that can appear in the output when -prettyprint is specified: 0 UNKNOWN 1 ABBREV 2 AT 3 COMMA 4 COMMENT 5 ENTRY 6 EQUALS 7 FIELD 8 INCLUDE 9 INLINE 10 KEY 11 LBRACE 12 LITERAL 13 NEWLINE 14 PREAMBLE 15 RBRACE 16 SHARP 17 SPACE 18 STRING 19 VALUE Programs that parse such output should also be prepared for lines beginning with the warning prefix, %%, or the error prefix, ??, and for ANSI/ISO Standard C line number direc- tives of the form # line 273 "texbook1.bib" which record the line number and file name of the current input file. If a -max-width nnn command-line option was specified, long output lines will be wrapped at a backslash-newline pair, and consequently, software that processes the lexical token stream should be prepared to collapse such wrapped lines back into single lines. As an example of the use of -no-prettyprint, the UNIX com- mand pipeline bibclean -no-prettyprint mylib.bib | \ awk '$2 == "KEY" {print $3}' | \ sed -e 's/"//g' | \ sort Version 2.11.4 Last change: 09 May 1998 18 User Commands BIBCLEAN(1) will extract a sorted list of all citation keys in the file mylib.bib. A certain amount of processing will have been done on the tokens. In particular, delimiters equivalent to braces will have been replaced by braces, and braced strings will have become quoted strings. The LITERAL token type is used for arbitrary text that bib- clean does not examine further, such as the contents of a @Preamble{...} or a @Comment{...}. The UNKNOWN token type should never appear in the output stream. It is used internally to initialize token type variables. SCRIBE BIBLIOGRAPHY FORMAT bibclean's support for the Scribe bibliography format is based on the syntax description in the Scribe Introductory User's Manual, 3rd Edition, May 1980. Scribe was originally developed by Brian Reid at Carnegie-Mellon University, and is now marketed by Unilogic, Ltd. The BibTeX bibliography format was strongly influenced by Scribe, and indeed, with care, it is possible to share bibliography files between the two systems. Nevertheless, there are some differences, so here is a summary of features of the Scribe bibliography file format: (1) Letter case is not significant in field names and entry names, but case is preserved in value strings. (2) In field/value pairs, the field and value may be separated by one of three characters: =, /, or space. Space may optionally surround these separators. (3) Value delimiters are any of these seven pairs: { } [ ] ( ) < > ' ' " " ` ` (4) Value delimiters may not be nested, even though with the first four delimiter pairs, nested balanced delim- iters would be unambiguous. (5) Delimiters can be omitted around values that contain only letters, digits, sharp (#), ampersand (&), period (.), and percent (%). (6) Outside of delimited values, a literal at-sign (@) is represented by doubled at-signs (@@). (7) Bibliography entries begin with @name, as for BibTeX, but any of the seven Scribe value delimiter pairs may Version 2.11.4 Last change: 09 May 1998 19 User Commands BIBCLEAN(1) be used to surround the values in field/value pairs. As in (4), nested delimiters are forbidden. (8) Arbitrary space may separate entry names from the fol- lowing delimiters. (9) @Comment is a special command whose delimited value is discarded. As in (4), nested delimiters are forbid- den. (10) The special form @Begin{comment} ... @End{comment} permits encapsulating arbitrary text containing any characters or delimiters, other than ``@End{comment}''. Any of the seven delimiter pairs may be used around the word ``comment'' following the ``@Begin'' or ``@End''; the delimiters in the two cases need not be the same, and consequently, ``@Begin{comment}''/``@End{comment}'' pairs may not be nested. (11) The key field is required in each bibliography entry. (12) A backslashed quote in a string will be assumed to be a TeX accent, and braced appropriately. While such accents do not conform to Scribe syntax, Scribe-format bibliographies have been found that appear to be intended for TeX processing. Because of this loose syntax, bibclean's normal error detec- tion heuristics are less effective, and consequently, Scribe mode input is not the default; it must be explicitly requested. ENVIRONMENT VARIABLES BIBCLEANEXT File extension of bibliography-specific ini- tialization files. Default: .ini. BIBCLEANINI Name of bibclean initialization files. Default: .bibcleanrc (UNIX), bibclean.ini (non-UNIX). BIBINPUTS Search path for bibclean and BibTeX input files. On UNIX, this is a colon-separated list of directories that are searched in order from first to last. It is not an error for a speci- fied directory to not exist. Version 2.11.4 Last change: 09 May 1998 20 User Commands BIBCLEAN(1) On other operating systems, the directory names should be separated by whatever character is used in system search path specifications, such as a semicolon on IBM PC DOS. PATH On Atari TOS, IBM PC DOS, IBM PC OS/2, Micro- soft NT, and UNIX, search path for system exe- cutable files. The system-wide bibclean ini- tialization file is searched for in this path. SYS$SYSTEM On VAX VMS, search path for system executable files and the system-wide bibclean initializa- tion file. FILES *.bib BibTeX and Scribe bibliography data base files. *.ini File-specific initialization files. .bibcleanrc UNIX system-wide and user-specific initiali- zation files. bibclean.ini Non-UNIX system-wide and user-specific ini- tialization files. SEE ALSO bibcheck(1), bibdup(1), bibextract(1), bibindex(1), bib- join(1), biblabel(1), biblex(1), biblook(1), biborder(1), bibparse(1), bibsort(1), bibtex(1), bibunlex(1), citefind(1), citesub(1), citetags(1), latex(1), scribe(1), tex(1). AUTHOR Nelson H. F. Beebe Center for Scientific Computing University of Utah Department of Mathematics, 322 INSCC 155 S 1400 E RM 233 Salt Lake City, UT 84112-0090 USA Tel: +1 801 581 5254 FAX: +1 801 585 1640, +1 801 581 4148 Email: beebe@math.utah.edu, beebe@acm.org, beebe@ieee.org (Internet) URL: http://www.math.utah.edu/~beebe Version 2.11.4 Last change: 09 May 1998 21 bibclean-2.11.4.1.orig/testscr2.eo20000644000175200017520000000214505574126306016060 0ustar debiandebian?? "testscr2.org", line 21: Unexpected paragraph break for field ``title''. ?? File positions: input [testscr2.org] output [stdout] ?? Entry input byte=489 line=19 column= 1 output byte=474 line=17 column= 0 ?? Value input byte=547 line=21 column=14 output byte=538 line=19 column=17 ?? Current input byte=564 line=23 column= 0 output byte=553 line=19 column=32 ?? "testscr2.org", line 45: Unexpected paragraph break for field ``title''. ?? File positions: input [testscr2.org] output [stdout] ?? Entry input byte=919 line=43 column= 1 output byte=1309 line=46 column= 0 ?? Value input byte=977 line=45 column=14 output byte=1373 line=48 column=17 ?? Current input byte=994 line=47 column= 0 output byte=1388 line=48 column=32 ?? "testscr2.org", line 67: Unexpected paragraph break for field ``title''. ?? File positions: input [testscr2.org] output [stdout] ?? Entry input byte=1337 line=65 column= 1 output byte=2146 line=74 column= 0 ?? Value input byte=1393 line=67 column=14 output byte=2210 line=76 column=17 ?? Current input byte=1410 line=69 column= 0 output byte=2225 line=76 column=32