..... use tbl and troff \-ms .if \nP=0 .IM .TL Updating Publication Lists .AU M. E. Lesk .NH Introduction. .PP .\".if \nP>0 .pn 14 This note describes several commands to update the publication lists. The data base consisting of these lists is kept in a set of files in the directory .I /usr/dict/papers on the Version 7 .UX system. The reason for having special commands to update these files is that they are indexed, and the only reasonable way to find the items to be updated is to use the index. However, altering the files destroys the usefulness of the index, and makes further editing difficult. So the recommended procedure is to .IP (1) Prepare additions, deletions, and changes in separate files. .IP (2) Update the data base and reindex. .LP Whenever you make changes, etc. it is necessary to run the ``add & index'' step before logging off; otherwise the changes do not take effect. The next section shows the format of the files in the data base. After that, the procedures for preparing additions, preparing changes, preparing deletions, and updating the public data base are given. .NH Publication Format. .PP The format of a data base entry is given completely in ``Some Applications of Inverted Indexes on UNIX'' by M. E. Lesk, the first part of this report, .if \nP=0 (also TM 77-1274-17) and is summarized here via a few examples. In each example, first the output format for an item is shown, and then the corresponding data base entry. .LP .DS .ti 0 Journal article: .fi .ll 5i A. V. Aho, D. J. Hirschberg, and J. D. Ullman, ``Bounds on the Complexity of the Maximal Common Subsequence Problem,'' .I J. Assoc. Comp. Mach., .R vol. 23, no. 1, pp. 1-12 (Jan. 1976). .nf .ll .sp %T Bounds on the Complexity of the Maximal Common Subsequence Problem %A A. V. Aho %A D. S. Hirschberg %A J. D. Ullman %J J. Assoc. Comp. Mach. %V 23 %N 1 %P 1-12 %D Jan. 1976 .if \nP=0 %M TM 75-1271-7 .if \nP>0 %M Memo abcd... .DE .DS .ti 0 Conference proceedings: .fi .ll 5i B. Prabhala and R. Sethi, ``Efficient Computation of Expressions with Common Subexpressions,'' .I Proc. 5th ACM Symp. on Principles of Programming Languages, .R pp. 222-230, Tucson, Ariz. (January 1978). .nf .ll .sp %A B. Prabhala %A R. Sethi %T Efficient Computation of Expressions with Common Subexpressions %J Proc. 5th ACM Symp. on Principles of Programming Languages %C Tucson, Ariz. %D January 1978 %P 222-230 .DE .DS .ti 0 Book: .fi .ll 5i B. W. Kernighan and P. J. Plauger, .I Software Tools, .R Addison-Wesley, Reading, Mass. (1976). .nf .ll .sp %T Software Tools %A B. W. Kernighan %A P. J. Plauger %I Addison-Wesley %C Reading, Mass. %D 1976 .DE .DS .ti 0 Article within book: .fi .ll 5i J. W. de Bakker, ``Semantics of Programming Languages,'' pp. 173-227 in .I Advances in Information Systems Science, Vol. 2, .R ed. J. T. Tou, Plenum Press, New York, N. Y. (1969). .nf .ll .sp %A J. W. de Bakker %T Semantics of programming languages %E J. T. Tou %B Advances in Information Systems Science, Vol. 2 %I Plenum Press %C New York, N. Y. %D 1969 %P 173-227 .DE .DS .ti 0 Technical Report: .fi .ll 5i F. E. Allen, ``Bibliography on Program Optimization,'' Report RC-5767, IBM T. J. Watson Research Center, Yorktown Heights, N. Y. (1975). .nf .ll .sp %A F. E. Allen %D 1975 %T Bibliography on Program Optimization %R Report RC-5767 %I IBM T. J. Watson Research Center %C Yorktown Heights, N. Y. .DE .DS .di xx .ti 0 Technical Memorandum: .fi .ll 5i A. V. Aho, B. W. Kernighan and P. J. Weinberg, ``AWK \- Pattern Scanning and Processing Language'', TM 77-1271-5, TM 77-1273-12, TM 77-3444-1 (1977). .nf .ll .sp %T AWK \- Pattern Scanning and Processing Language %A A. V. Aho %A B. W. Kernighan %A P. J. Weinberger %M TM 77-1271-5, TM 77-1273-12, TM 77-3444-1 %D 1977 .di .if \nP=0 .xx .rm xx .DE .LP Other forms of publication can be entered similarly. Note that conference proceedings are entered as if journals, with the conference name on a .I %J line. This is also sometimes appropriate for obscure publications such as series of lecture notes. When something is both a report and an article, or both a memorandum and an article, enter all necessary information for both; see the first article above, for example. Extra information (such as ``In preparation'' or ``Japanese translation'') should be placed on a line beginning .I %O . The most common use of %O lines now is for ``Also in ...'' to give an additional reference to a secondary appearance of the same paper. .PP Some of the possible fields of a citation are: .TS c c 5 c c a l a l . Letter Meaning Letter Meaning A Author K Extra keys B Book including item N Issue number C City of publication O Other D Date P Page numbers E Editor of book R Report number I Publisher (issuer) T Title of item J Journal name V Volume number .TE Note that .I %B is used to indicate the title of a book containing the article being entered; when an item is an entire book, the title should be entered with a .I %T as usual. .PP Normally, the order of items does not matter. The only exception is that if there are multiple authors (%A lines) the order of authors should be that on the paper. If a line is too long, it may be continued on to the next line; any line not beginning with % or . (dot) is assumed to be a continuation of the previous line. Again, see the first article above for an example of a long title. Except for authors, do not repeat any items; if two %J lines are given, for example, the first is ignored. Multiple items on the same file should be separated by blank lines. .PP Note that in formatted printouts of the file, the exact appearance of the items is determined by a set of macros and the formatting programs. Do not try to adjust fonts, punctuation, etc. by editing the data base; it is wasted effort. In case someone has a real need for a differently-formatted output, a new set of macros can easily be generated to provide alternative appearances of the citations. .NH Updating and Re-indexing. .PP This section describes the commands that are used to manipulate and change the data base. It explains the procedures for (a) finding references in the data base, (b) adding new references, (c) changing existing references, and (d) deleting references. Remember that all changes, additions, and deletions are done by preparing separate files and then running an `update and reindex' step. .PP .I Checking what's there now. .R Often you will want to know what is currently in the data base. There is a special command .I lookbib to look for things and print them out. It searches for articles based on words in the title, or the author's name, or the date. For example, you could find the first paper above with .DS lookbib aho ullman maximal subsequence 1976 .DE or .DS lookbib aho ullman hirschberg .DE .LP If you don't give enough words, several items will be found; if you spell some wrong, nothing will be found. There are around 4300 papers in the public file; you should always use this command to check when you are not sure whether a certain paper is there or not. .PP .I Additions. .R To add new papers, just type in, on one or more files, the citations for the new papers. Remember to check first if the papers are already in the data base. For example, if a paper has a previous memo version, this should be treated as a change to an existing entry, rather than a new entry. If several new papers are being typed on the same file, be sure that there is a blank line between each two papers. .PP .I Changes. .R To change an item, it should be extracted onto a file. This is done with the command .DS pub.chg key1 key2 key3 ... .DE where the items key1, key2, key3, etc. are a set of keys that will find the paper, as in the .I lookbib command. That is, if .DS lookbib johnson yacc cstr .DE will find a item (to, in this case, Computing Science Technical Report No. 32, ``YACC: Yet Another Compiler-Compiler,'' by S. C. Johnson) then .DS pub.chg johnson yacc cstr .DE will permit you to edit the item. The .I pub.chg command extracts the item onto a file named ``bibxxx'' where ``xxx'' is a 3-digit number, e.g. ``bib234''. The command will print the file name it has chosen. If the set of keys finds more than one paper (or no papers) an error message is printed and no file is written. Each reference to be changed must be extracted with a separate .I pub.chg command, and each will be placed on a separate file. You should then edit the ``bibxxx'' file as desired to change the item, using the UNIX editor. Do not delete or change the first line of the file, however, which begins .I %# and is a special code line to tell the update program which item is being altered. You may delete or change other lines, or add lines, as you wish. The changes are not actually made in the public data base until you run the update command .I pub.run (see below). Thus, if after extracting an item and modifying it, you decide that you'd rather leave things as they were, delete the ``bibxxx'' file, and your change request will disappear. .PP .I Deletions. .R To delete an entry from the data base, type the command .DS pub.del key1 key2 key3 ... .DE where the items key1, key2, etc. are a set of keys that will find the paper, as with the .I lookbib command. That is, if .DS lookbib aho hirschberg ullman .DE will find a paper, .DS pub.del aho hirschberg ullman .DE deletes it. Upper and lower case are equivalent in keys; the command .DS pub.del Aho Hirschberg Ullman .DE is an equivalent .I pub.del command. The .I pub.del command will print the entry being deleted. It also gives the name of a ``bibxxx'' file on which the deletion command is stored. The actual deletion is not done until the changes, additions, etc. are processed, as with the .I pub.chg command. If, after seeing the item to be deleted, you change your mind about throwing it away, delete the ``bibxxx'' file and the delete request disappears. Again, if the list of keys does not uniquely identify one paper, an error message is given. .PP Remember that the default versions of the commands described here edit a public data base. Do not delete items unless you are sure deletion is proper; usually this means that there are duplicate entries for the same paper. Otherwise, view requests for deletion with skepticism; even if one person has no need for a particular item in the data base, someone else may want it there. .PP If an item is correct, but should not appear in the ``List of Publications'' as normally produced, add the line .DS %K DNL .DE to the item. This preserves the item intact, but implies ``Do Not List'' to the to the commands that print publication lists. The DNL line is normally used for some technical reports, minor memoranda, or other low-grade publications. .PP .I Update and reindex. .R When you have completed a session of changes, you should type the command .DS pub.run file1 file2 ... .DE where the names ``file1'', ... are the new files of additions you have prepared. You need not list the ``bibxxx'' files representing changes and deletions; they are processed automatically. All of the new items are edited into the standard public data base, and then a new index is made. This process takes about one minute of processor time. The index is not made by re-analyzing and re-sorting the entire data base; the new or changed items are indexed in the usual way and then merged with the previous data files. A complete re-index would be much slower for small changes. .PP Normally, you should execute .I pub.run just before you logoff after performing some edit requests. However, if you don't, the various change request files remain in your directory until you finally do execute .I pub.run. When the changes are processed, the ``bibxxx'' files are deleted. It is not desirable to wait too long before processing changes, however, to avoid conflicts with someone else who wishes to change the same file. If executing .I pub.run produces the message ``File bibxxx too old'' it means that someone else has been editing the same file between the time you prepared your changes, and the time you typed .I pub.run. You must delete such old change files and re-enter them. .PP Note that although .I pub.run discards the ``bibxxx'' files after processing them, your files of additions are left around even after .I pub.run is finished. If they were typed in only for purposes of updating the data base, you may delete them after they have been processed by .I pub.run. .PP .I Example. .R Suppose, for example, that you wish to .IP (1) Add to the data base the memos ``The Dilogarithm Function of a Real Argument'' by R. Morris, and ``UNIX Software Distribution by Communication Link,'' by M. E. Lesk and A. S. Cohen; .IP (2) Delete from the data base the item ``Cheap Typesetters'', by M. E. Lesk, SIGLASH Newsletter, 1973; and .IP (3) Change ``J. Assoc. Comp. Mach.'' to ``Jour. ACM'' in the citation for Aho, Hirschberg, and Ullman shown above. .LP The procedure would be as follows. First, you would make a file containing the additions, here called ``new.1'', in the normal way using the UNIX editor. In the script shown below, the computer prompts are .if n underlined. .if t in italics. .DS .if n _$ ed new.1 .if t \f2$\f1 ed new.1 .if n _? .if t \f2?\f1 a %T The Dilogarithm Function of a Real Argument %A Robert Morris .if \nP=0 %M TM 78-1271-1 .if \nP>0 %M abcd %D 1978 %T UNIX Software Distribution by Communication Link %A M. E. Lesk %A A. S. Cohen .if \nP=0 %M TM 78-1274-1, 78-8234-1 .if \nP>0 %M abcd %D 1978 . w new.1 .if n _1_9_9 .if t \f2199\f1 q .DE Next you would specify the deletion, which would be done with the .I pub.del command: .DS .if n _$ pub.del lesk cheap typesetters siglash .if t \f2$\f1 pub.del lesk cheap typesetters siglash .ti 0 to which the computer responds: .if n W_i_l_l_ d_e_l_e_t_e_:_ (_f_i_l_e_ b_i_b_1_7_6_)_ .if t \f2Will delete: (file bib176)\f1 .if n %_T_ C_h_e_a_p_ T_y_p_e_s_e_t_t_e_r_s_ .if t \f2%T Cheap Typesetters\f1 .if n %_A_ M_._ E_._ L_e_s_k_ .if t \f2%A M. E. Lesk\f1 .if n %_J_ A_C_M_ S_I_G_L_A_S_H_ N_e_w_s_l_e_t_t_e_r_ .if t \f2%J ACM SIGLASH Newsletter\f1 .if n %_V_ 6_ .if t \f2%V 6\f1 .if n %_N_ 4_ .if t \f2%N 4\f1 .if n %_P_ 1_4_-_1_6_ .if t \f2%P 14-16\f1 .if n %_D_ O_c_t_o_b_e_r_ 1_9_7_3_ .if t \f2%D October 1973\f1 .DE And then you would extract the Aho, Hirschberg and Ullman paper. The dialogue involved is shown below. First run .I pub.chg to extract the paper; it responds by printing the citation and informing you that it was placed on file \f2bib123\f1. That file is then edited. .DS .if n _$ pub.chg aho hirschberg ullman .if t \f2$\f1 pub.chg aho hirschberg ullman .if n _E_x_t_r_a_c_t_i_n_g _a_s _f_i_l_e _b_i_b_1_2_3 .if t \f2Extracting as file bib123\f1 .if n _%_T _B_o_u_n_d_s _o_n _t_h_e _C_o_m_p_l_e_x_i_t_y _o_f _t_h_e _M_a_x_i_m_a_l .if t \f2%T Bounds on the Complexity of the Maximal\f1 .if n _C_o_m_m_o_n _S_u_b_s_e_q_u_e_n_c_e _P_r_o_b_l_e_m .if t \f2Common Subsequence Problem\f1 .if n _%_A _A_. _V_. _A_h_o .if t \f2%A A. V. Aho\f1 .if n _%_A _D_. _S_. _H_i_r_s_c_h_b_e_r_g .if t \f2%A D. S. Hirschberg\f1 .if n _%_A _J_. _D_. _U_l_l_m_a_n .if t \f2%A J. D. Ullman\f1 .if n _%_J _J_. _A_s_s_o_c_. _C_o_m_p_. _M_a_c_h_. .if t \f2%J J. Assoc. Comp. Mach.\f1 .if n _%_V _2_3 .if t \f2%V 23\f1 .if n _%_N _1 .if t \f2%N 1\f1 .if n _%_P _1_-_1_2 .if t \f2%P 1-12\f1 .if \nP=0 .if n _%_M _T_M _7_5_-_1_2_7_1_-_7 .if \nP>0 .if n %_M_ M_e_m_o_ n_u_m_b_e_r_ .if \nP=0 .if t \f2%M TM 75-1271-7\f1 .if \nP>0 .if t \f2%M abcd\f1 .if n _%_D _J_a_n_. _1_9_7_6 .if t \f2%D Jan. 1976\f1 .if n _$ ed bib123 .if t \f2$\f1 ed bib123 .if n _3_1_2 .if t \f2312\f1 /Assoc/s/ J/ Jour/p .if n _%_J _J_o_u_r_. _A_s_s_o_c_. _C_o_m_p_. _M_a_c_h_. .if t \f2%J Jour. Assoc. Comp. Mach.\f1 s/Assoc.*/ACM/p .if n _%_J _J_o_u_r_. _A_C_M .if t \f2%J Jour. ACM\f1 1,$p .if n _%_# _/_u_s_r_/_d_i_c_t_/_p_a_p_e_r_s_/_p_7_6 _2_3_3 _2_4_5 _c_h_a_n_g_e .if t \f2%# /usr/dict/papers/p76 233 245 change\f1 .if n _%_T _B_o_u_n_d_s _o_n _t_h_e _C_o_m_p_l_e_x_i_t_y _o_f _t_h_e _M_a_x_i_m_a_l .if t \f2%T Bounds on the Complexity of the Maximal\f1 .if n _C_o_m_m_o_n _S_u_b_s_e_q_u_e_n_c_e _P_r_o_b_l_e_m .if t \f2Common Subsequence Problem\f1 .if n _%_A _A_. _V_. _A_h_o .if t \f2%A A. V. Aho\f1 .if n _%_A _D_. _S_. _H_i_r_s_c_h_b_e_r_g .if t \f2%A D. S. Hirschberg\f1 .if n _%_A _J_. _D_. _U_l_l_m_a_n .if t \f2%A J. D. Ullman\f1 .if n _%_J _J_o_u_r_. _A_C_M .if t \f2%J Jour. ACM\f1 .if n _%_V _2_3 .if t \f2%V 23\f1 .if n _%_N _1 .if t \f2%N 1\f1 .if n _%_P _1_-_1_2 .if t \f2%P 1-12\f1 .if \nP=0 .if n _%_M _T_M _7_5_-_1_2_7_1_-_7 .if \nP>0 .if n _%_M _M_e_m_o _n_u_m_b_e_r .if \nP=0 .if t \f2%M TM 75-1271-7\f1 .if \nP>0 .if t \f2%M abcd\f1 .if n _%_D _J_a_n_. _1_9_7_6 .if t \f2%D Jan. 1976\f1 w .if n _2_9_2 .if t \f2292\f1 q .if n _$ .if t \f2$\f1 .DE Finally, execute .I pub.run , making sure to remember that you have prepared a new file ``new.1'': .DS \f2$\f1 pub.run new.1 .DE Currently, this takes about 1 minute of 11/70 processor time. .NH Printing a Publication List .PP There are two commands for printing a publication list, depending on whether you want to print one person's list, or the list of many people. To print a list for one person, use the .I pub.indiv command: .DS pub.indiv M Lesk .DE This runs off the list for M. Lesk and puts it in file ``output''. Note that no `.' is given after the initial. In case of ambiguity two initials can be used. Similarly, to get the list for group of people, say .DS pub.org xxx .DE which prints all the publications of the members of organization .I xxx , taking the names for the list in the file .I /usr/dict/papers/centlist/xxx . This command should normally be run in the background; it takes perhaps 15 minutes. Two options are available with these commands: .DS pub.indiv \-p M Lesk .DE prints only the papers, leaving out unpublished notes, patents, etc. Also .DS pub.indiv \-t M Lesk | gcat .DE prints a typeset copy, instead of a computer printer copy. In this case it has been directed to an alternate typesetter with the `gcat' command. These options may be used together, and may be used with the .I pub.org command as well. For example, to print only the papers for all of organization zzz and typeset them, you could type .DS pub.center \-t \-p zzz | gcat & .DE These publication lists are printed double column with a citation style taken from a set of publication list macros; the macros, of course, can be changed easily to adjust the format of the lists.