From 7ac36a0e53fae3396c4bca7909310f66c13cecf8 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 21 Feb 2010 23:13:11 +0000 Subject: biblist doc (21feb09) git-svn-id: svn://tug.org/texlive/trunk@17116 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/doc/latex/biblist/biblist.bst-dist | 2110 ++++++++++++++++++++ Master/texmf-dist/doc/latex/biblist/biblist.pdf | Bin 0 -> 202969 bytes Master/texmf-dist/doc/latex/biblist/biblist.tex | 653 ++++++ 3 files changed, 2763 insertions(+) create mode 100644 Master/texmf-dist/doc/latex/biblist/biblist.bst-dist create mode 100644 Master/texmf-dist/doc/latex/biblist/biblist.pdf create mode 100644 Master/texmf-dist/doc/latex/biblist/biblist.tex (limited to 'Master/texmf-dist/doc/latex/biblist') diff --git a/Master/texmf-dist/doc/latex/biblist/biblist.bst-dist b/Master/texmf-dist/doc/latex/biblist/biblist.bst-dist new file mode 100644 index 00000000000..90e7ef0f91b --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblist/biblist.bst-dist @@ -0,0 +1,2110 @@ +Below is a shar with a diff to btxbst.doc and biblist.bst. btxbst.doc +is renamed to itibst.doc. Enjoy. + +-- +Joachim // PLEASE NOTE CHANGE OF EMAIL ADDRESS !! + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +Joachim Schrod Email: schrod@iti.informatik.th-darmstadt.de +Computer Science Department +Technical University of Darmstadt, Germany + + +================ snip snap ======================================== +#! /bin/sh +# This is a shell archive. Remove anything before this line, then unpack +# it by saving it into a file and typing "sh file". To overwrite existing +# files, type "sh file -c". You can also feed this as standard input via +# unshar, or by typing "sh 'itibst.diff' <<'END_OF_FILE' +X*** 1.1 1991/10/15 10:34:27 +X--- itibst.doc 1992/01/13 14:00:36 +X*************** +X*** 1,54 **** +X! % BibTeX `plain' family +X! % version 0.99b for BibTeX versions 0.99a or later, LaTeX version 2.09. +X! % Copyright (C) 1985, all rights reserved. +X! % Copying of this file is authorized only if either +X! % (1) you make absolutely no changes to your copy, including name, or +X! % (2) if you do make changes, you name it something other than +X! % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst. +X! % This restriction helps ensure that all standard styles are identical. +X! % The file btxbst.doc has the documentation for this style. +X! % Please notify Oren Patashnik (PATASHNIK@SCORE.STANFORD.EDU) of any bugs in +X! % these standard styles or in this documentation file. +X % +X! % This is file btxbxt.doc; it helps document bibliography styles, +X % and is also a template file that you can use to make +X % several different style files, if you have access to a C preprocessor. +X! % For example, the standard styles were made by doing something like +X! % cpp -P -DPLAIN btxbst.doc plain.txt +X! % cpp -P -DUNSRT btxbst.doc unsrt.txt +X! % cpp -P -DALPHA btxbst.doc alpha.txt +X! % cpp -P -DABBRV btxbst.doc abbrv.txt +X! % and then renaming after removing unwanted comments and blank lines. +X! % If you don't have access, +X! % you can edit this file by hand to imitate the preprocessor, +X! % with the following explanation of the C preprocessor constructs used here. +X! % +X! % The output of the preprocessor is the same as the input, except that certain +X! % lines will be excluded (and some blank lines will be added). The sequence +X! % #if VAR +X! % lines to be included when VAR is not zero +X! % #else +X! % lines to be included when VAR is zero +X! % #endif +X! % (with the #-signs appearing in column 1) means that one set or the other of +X! % the lines are to be included depending on the value of VAR. +X! % The #else part is optional. Comments can be added after #else and #endif. +X! % Variables can be set by +X! % #define VAR value +X! % and one can also use #ifdef VAR to see if VAR has any value, and #ifndef +X! % to see if it has none. +X! % Another #if form used in this file is #if !VAR, which includes the lines +X! % after the #if only if VAR is zero. +X! % +X! % Convention: Use all uppercase identifiers for these preprocessor variables +X! % so you can spot them easily +X! % +X! % The command line to the preprocessor should define one of PLAIN, UNSRT, ALPHA +X! % or ABBRV (though PLAIN will be used by default if none is given), +X! % and the following lines will set various boolean variables to control the +X! % various lines that are chosen from the rest of the file. +X! % Each boolean variable should be set true (1) or false (0) in each style. +X! % Here are the current variables, and their meanings: +X % LAB_ALPH: an alphabetic label is used (if false then a numeric +X % label is used) +X % SORTED: the entries should be sorted by label (if nonnumeric) +X--- 1,71 ---- +X! %% $Id: itibst.doc,v 1.3 1992/01/13 13:59:34 schrod Exp schrod $ +X! %%---------------------------------------------------------------------- +X! %% BibTeX `THD/ITI' family of bibliography styles +X! %% The file itibst.doc has the documentation for this style. +X! %% Please notify Joachim Schrod (schrod@iti.informatik.th-darmstadt.de) of +X! %% any bugs in these styles or in this documentation file. +X! %% +X! %% CAVEAT: This is experimental software in an alpha-test version. +X! %% The documentation is not complete, installation instructions +X! %% are missing (or perhaps not updated), etc. Please send +X! %% bug reports (and, of course, repairs) to me, but do not expect +X! %% that I will react very soon. I will collect the stuff and will +X! %% incorporate it at a later date. +X! %% +X! % +X! % $Log: itibst.doc,v $ +X! % Revision 1.3 1992/01/13 13:59:34 schrod +X! % In biblist style titles will not be lowered. The user should see +X! % what's in the database. +X! % +X! % The Id tag is now propagated to the styles. One must see from which +X! % version they were created. +X! % +X! % Replaced function format.annote with output.annote. The former +X! % concatenated the annote field which yielded an overflow of the +X! % global-string-size (at max. 1000). +X! % Well, I learned now that fields which might be very large (ie, +X! % more than 1000 chars) must not be used with operations like "*", only +X! % with functions like empty$, write$, etc. Of course, these arbitrary +X! % limits are not documented... +X! % (This error was pointed out by Joseph Gil .) +X! % +X! % Revision 1.2 1991/10/15 10:35:32 schrod +X! % added support for GERMAN, ISBN, ANNOTATE, and LIBRARY. +X! % added REFERENCE. +X! % added styles ALPH_ABBRV and BIBLIST. +X! % defined ATIT_LOWER conditionally. +X % +X! % checked in for alpha distribution. +X! % +X! % +X! % This is file itibst.doc; it helps document bibliography styles, +X % and is also a template file that you can use to make +X % several different style files, if you have access to a C preprocessor. +X! % +X! % identifiers: +X! % +X! % UNSRT bst unsrt: numbers, unsorted, unabbreviated +X! % ALPHA bst alpha: short alphabetics, sorted, unabbreviated +X! % ABBRV bst abbrv: numbers, sorted, abbreviated +X! % ALPH_ABBRV bst alph-abbrv: short alphabetics, sorted, abbreviated +X! % PLAIN bst plain: numbers, sorted, unabbreviated +X! % (all 5 by default with lowered titles) +X! % +X! % BIBLIST bst biblist: for listings of bib files, +X! % cite keys, unsorted, unabbreviated, not lowered +X! % (defines REFERENCE and sets ATIT_LOWER to 0) +X! % +X! % GERMAN not-lowered titles +X! % german texts (not complete!!!) +X! % REFERENCE sets ISBN, ANNOTATE, LIBRARY +X! % +X! % ISBN adds support for ISBN and ISSN +X! % ANNOTATE adds support for annotations +X! % LIBRARY adds support for library info +X! % +X! % +X! % in fact, the following identifiers are used internally: +X % LAB_ALPH: an alphabetic label is used (if false then a numeric +X % label is used) +X % SORTED: the entries should be sorted by label (if nonnumeric) +X*************** +X*** 57,114 **** +X % NAME_FULL: the authors, editors, etc., get the full names as +X % given in the bibliography file (if false, the first +X % names become initials) +X- % ATIT_LOWER: titles of non-"books" (e.g., articles) should be +X- % converted to lower-case, except the first letter or +X- % first letter after a colon +X- % (if false then they appear as in the database) +X % MONTH_FULL: months are spelled out in full (if false, then +X % they're abbreviated) +X % JOUR_FULL: macro journal names are spelled out in full +X % (if false then they are abbreviated, currently +X % as they appear in ACM publications) +X! #ifndef UNSRT +X! # ifndef ALPHA +X! # ifndef ABBRV +X! # define PLAIN 1 +X! # endif +X! # endif +X! #endif +X! #ifdef PLAIN +X! % plain style (sorted numbers) +X! # define LAB_ALPH 0 +X! # define SORTED 1 +X! # define NAME_FULL 1 +X! # define ATIT_LOWER 1 +X! # define MONTH_FULL 1 +X! # define JOUR_FULL 1 +X #endif +X #ifdef UNSRT +X! % unsrt style (unsorted numbers) +X # define LAB_ALPH 0 +X # define SORTED 0 +X # define NAME_FULL 1 +X! # define ATIT_LOWER 1 +X # define MONTH_FULL 1 +X # define JOUR_FULL 1 +X #endif +X #ifdef ALPHA +X! % alpha style (sorted short alphabetics) +X # define LAB_ALPH 1 +X # define SORTED 1 +X! # define NAME_FULL 1 +X # define ATIT_LOWER 1 +X # define MONTH_FULL 1 +X # define JOUR_FULL 1 +X #endif +X #ifdef ABBRV +X! % abbrv style (sorted numbers, with abbreviations) +X # define LAB_ALPH 0 +X # define SORTED 1 +X # define NAME_FULL 0 +X # define ATIT_LOWER 1 +X # define MONTH_FULL 0 +X # define JOUR_FULL 0 +X #endif +X % +X % Entry formatting: Similar to that recommended by Mary-Claire van Leunen +X % in "A Handbook for Scholars". Book-like titles are italicized +X--- 74,185 ---- +X % NAME_FULL: the authors, editors, etc., get the full names as +X % given in the bibliography file (if false, the first +X % names become initials) +X % MONTH_FULL: months are spelled out in full (if false, then +X % they're abbreviated) +X % JOUR_FULL: macro journal names are spelled out in full +X % (if false then they are abbreviated, currently +X % as they appear in ACM publications) +X! % +X! % this might be set on request: +X! % ATIT_LOWER: titles of non-"books" (e.g., articles) should be +X! % converted to lower-case, except the first letter or +X! % first letter after a colon +X! % (if false then they appear as in the database) +X! % +X! % PLAIN is default! +X! % +X! % +X! % creation: +X! % +X! % /lib/cpp -P [ defines ] itibst.doc | +X! % perl -n -e 's/^%$//; s/^%[^%].*//; print unless $_ eq "\n";' \ +X! % >style.bst +X! % +X! #ifdef GERMAN +X! %% german texts +X! # define ATIT_LOWER 0 +X #endif +X #ifdef UNSRT +X! %% unsrt style (unsorted numbers) +X # define LAB_ALPH 0 +X # define SORTED 0 +X # define NAME_FULL 1 +X! # ifndef ATIT_LOWER +X! # define ATIT_LOWER 1 +X! # endif +X # define MONTH_FULL 1 +X # define JOUR_FULL 1 +X #endif +X #ifdef ALPHA +X! %% alpha style (sorted short alphabetics) +X # define LAB_ALPH 1 +X # define SORTED 1 +X! # define NAME_FULL 0 +X! #ifndef ATIT_LOWER +X # define ATIT_LOWER 1 +X+ #endif +X # define MONTH_FULL 1 +X # define JOUR_FULL 1 +X #endif +X #ifdef ABBRV +X! %% abbrv style (sorted numbers, with abbreviations) +X # define LAB_ALPH 0 +X # define SORTED 1 +X # define NAME_FULL 0 +X+ #ifndef ATIT_LOWER +X+ # define ATIT_LOWER 1 +X+ #endif +X+ # define MONTH_FULL 0 +X+ # define JOUR_FULL 0 +X+ #endif +X+ #ifdef ALPH_ABBRV +X+ %% alph-abbrv style (sorted short alphabetics, with abbreviations) +X+ # define LAB_ALPH 1 +X+ # define SORTED 1 +X+ # define NAME_FULL 0 +X+ #ifndef ATIT_LOWER +X # define ATIT_LOWER 1 +X+ #endif +X # define MONTH_FULL 0 +X # define JOUR_FULL 0 +X #endif +X+ #ifdef BIBLIST +X+ %% biblist style (unsorted, for listings of bib files) +X+ # define LAB_ALPH 0 +X+ # define SORTED 0 +X+ # define NAME_FULL 1 +X+ #ifndef ATIT_LOWER +X+ # define ATIT_LOWER 0 +X+ #endif +X+ # define MONTH_FULL 1 +X+ # define JOUR_FULL 1 +X+ # define REFERENCE +X+ #endif +X+ #ifndef SORTED /* use PLAIN */ +X+ %% plain style (sorted numbers) +X+ # define LAB_ALPH 0 +X+ # define SORTED 1 +X+ # define NAME_FULL 1 +X+ # ifndef ATIT_LOWER +X+ # define ATIT_LOWER 1 +X+ # endif +X+ # define MONTH_FULL 1 +X+ # define JOUR_FULL 1 +X+ #endif +X+ #ifdef REFERENCE +X+ # define ISBN 1 +X+ # define ANNOTATE 1 +X+ # define LIBRARY 1 +X+ #endif +X+ #ifndef ISBN +X+ # define ISBN 0 +X+ #endif +X+ #ifndef ANNOTATE +X+ # define ANNOTATE 0 +X+ #endif +X+ #ifndef LIBRARY +X+ # define LIBRARY 0 +X+ #endif +X % +X % Entry formatting: Similar to that recommended by Mary-Claire van Leunen +X % in "A Handbook for Scholars". Book-like titles are italicized +X*************** +X*** 199,206 **** +X % however, it's the address of the conference; for those two entry +X % types, include the publisher's or organization's address, if +X % necessary, in the publisher or organization field. +X! % annote +X % Long annotation---for annotated bibliographies (begins sentence). +X author +X % Name(s) of author(s), in BibTeX name format. +X booktitle +X--- 270,279 ---- +X % however, it's the address of the conference; for those two entry +X % types, include the publisher's or organization's address, if +X % necessary, in the publisher or organization field. +X! #if ANNOTATE +X! annote +X % Long annotation---for annotated bibliographies (begins sentence). +X+ #endif +X author +X % Name(s) of author(s), in BibTeX name format. +X booktitle +X*************** +X*** 218,228 **** +X--- 291,311 ---- +X % How something strange has been published (begins sentence). +X institution +X % Sponsoring institution of a technical report. +X+ #if ISBN +X+ isbn +X+ % ISBN of book +X+ issn +X+ % ISSN of periodical +X+ #endif +X journal +X % Journal name (macros are provided for many). +X key +X % Alphabetizing, labeling, and cross-referencing key +X % (needed when an entry has no author or editor). +X+ #if LIBRARY +X+ library +X+ % Library signature +X+ #endif +X month +X % Month (macros are provided). +X note +X*************** +X*** 380,385 **** +X--- 463,491 ---- +X % output.state := before.all +X % END +X % +X+ #if ANNOTATE +X+ % The output.annote function writes the annotation for the current +X+ % entry. It must not use the concatenation operator since an +X+ % annotation may be rather long and BibTeX has an arbitrary limit +X+ % (1000) on the length of strings. +X+ % +X+ % In fact, this function is defined later, since it needs new.block +X+ % which is not defined yet. +X+ % +X+ % output.annote == +X+ % BEGIN +X+ % if not empty$(annote) then +X+ % new.block +X+ % prepare for output of "\annote " +X+ % newline$ +X+ % write$("\annote ") +X+ % write$(annote) +X+ % newline$ +X+ % push "\endannote" on stack % for fin.entry +X+ % fi +X+ % END +X+ % +X+ #endif +X % The fin.entry function finishes off an entry by adding a period to the +X % string remaining on the stack. If the state is still before.all +X % then nothing was produced for this entry, so the result will look bad, +X*************** +X*** 503,508 **** +X--- 609,629 ---- +X if$ +X } +X +X+ #if ANNOTATE +X+ FUNCTION {output.annote} +X+ { +X+ annote empty$ +X+ { } +X+ { +X+ new.block "\annote " output +X+ newline$ write$ +X+ annote write$ newline$ +X+ "\endannote" +X+ } +X+ if$ +X+ } +X+ #endif +X+ +X % These three functions pop one or two (integer) arguments from the stack +X % and push a single one, either 0 or 1. +X % The 'skip$ in the `and' and `or' functions are used because +X*************** +X*** 591,597 **** +X % emphasize(s) == +X % BEGIN +X % if empty$(s) then return "" +X! % else return "{\em " * s * "}" +X % +X % The format.names function formats the argument (which should be in +X % BibTeX name format) into "First Von Last, Junior", separated by commas +X--- 712,718 ---- +X % emphasize(s) == +X % BEGIN +X % if empty$(s) then return "" +X! % else return "{\it " * s * "}" +X % +X % The format.names function formats the argument (which should be in +X % BibTeX name format) into "First Von Last, Junior", separated by commas +X*************** +X*** 615,626 **** +X--- 736,755 ---- +X % t := format.name$(s, nameptr, "{f.~}{vv~}{ll}{, jj}") +X % if nameptr > 1 then +X % if namesleft > 1 then nameresult := nameresult * ", " * t +X+ #ifndef GERMAN +X % else if numnames > 2 +X % then nameresult := nameresult * "," +X % fi +X % if t = "others" +X+ #else /* GERMAN */ +X+ % else if t = "others" +X+ #endif /* GERMAN */ +X % then nameresult := nameresult * " et~al." +X+ #ifndef GERMAN +X % else nameresult := nameresult * " and " * t +X+ #else /* GERMAN */ +X+ % else nameresult := nameresult * " und " * t +X+ #endif /* GERMAN */ +X % fi +X % fi +X % else nameresult := t +X*************** +X*** 672,678 **** +X FUNCTION {emphasize} +X { duplicate$ empty$ +X { pop$ "" } +X! { "{\em " swap$ * "}" * } +X if$ +X } +X +X--- 801,807 ---- +X FUNCTION {emphasize} +X { duplicate$ empty$ +X { pop$ "" } +X! { "{\it " swap$ * "}" * } +X if$ +X } +X +X*************** +X*** 692,704 **** +X--- 821,841 ---- +X nameptr #1 > +X { namesleft #1 > +X { ", " * t * } +X+ #ifndef GERMAN +X { numnames #2 > +X { "," * } +X 'skip$ +X if$ +X t "others" = +X+ #else /* GERMAN */ +X+ { t "others" = +X+ #endif /* GERMAN */ +X { " et~al." * } +X+ #ifndef GERMAN +X { " and " * t * } +X+ #else /* GERMAN */ +X+ { " und " * t * } +X+ #endif /* GERMAN */ +X if$ +X } +X if$ +X*************** +X*** 730,735 **** +X--- 867,898 ---- +X if$ +X } +X +X+ #if ISBN +X+ FUNCTION {format.isbn} +X+ { isbn empty$ +X+ { "" } +X+ { new.sentence "ISBN~" isbn * } +X+ if$ +X+ } +X+ +X+ FUNCTION {format.issn} +X+ { issn empty$ +X+ { "" } +X+ { new.sentence "ISSN~" issn * } +X+ if$ +X+ } +X+ #endif +X+ +X+ #if LIBRARY +X+ FUNCTION {format.library} +X+ { library empty$ +X+ { "" } +X+ { "\library{" library * "}" * } +X+ if$ +X+ } +X+ #endif +X+ +X+ +X % The format.title function is used for non-book-like titles. +X % For most styles we convert to lowercase (except for the very first letter, +X % and except for the first one after a colon (followed by whitespace)), +X*************** +X*** 992,999 **** +X--- 1155,1167 ---- +X { pages empty$ +X { "" } +X { pages multi.page.check +X+ #ifndef GERMAN +X { "pages" pages n.dashify tie.or.space.connect } +X { "page" pages tie.or.space.connect } +X+ #else /* GERMAN */ +X+ { "Seiten" pages n.dashify tie.or.space.connect } +X+ { "Seite" pages tie.or.space.connect } +X+ #endif /* GERMAN */ +X if$ +X } +X if$ +X*************** +X*** 1151,1157 **** +X warning$ +X "" +X } +X! { "In {\em " journal * "\/}" * } +X if$ +X } +X { "In " key * } +X--- 1319,1325 ---- +X warning$ +X "" +X } +X! { "In {\it " journal * "\/}" * } +X if$ +X } +X { "In " key * } +X*************** +X*** 1172,1178 **** +X--- 1340,1350 ---- +X 'skip$ +X { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = +X { " et~al." * } +X+ #ifndef GERMAN +X { " and " * editor #2 "{vv~}{ll}" format.name$ * } +X+ #else +X+ { " und " * editor #2 "{vv~}{ll}" format.name$ * } +X+ #endif +X if$ +X } +X if$ +X*************** +X*** 1204,1210 **** +X crossref * warning$ +X "" * +X } +X! { "{\em " * series * "\/}" * } +X if$ +X } +X { key * } +X--- 1376,1382 ---- +X crossref * warning$ +X "" * +X } +X! { "{\it " * series * "\/}" * } +X if$ +X } +X { key * } +X*************** +X*** 1231,1237 **** +X crossref * warning$ +X "" +X } +X! { "In {\em " booktitle * "\/}" * } +X if$ +X } +X { "In " key * } +X--- 1403,1409 ---- +X crossref * warning$ +X "" +X } +X! { "In {\it " booktitle * "\/}" * } +X if$ +X } +X { "In " key * } +X*************** +X*** 1313,1318 **** +X--- 1485,1494 ---- +X +X FUNCTION {article} +X { output.bibitem +X+ #if LIBRARY +X+ format.library output +X+ new.sentence +X+ #endif +X format.authors "author" output.check +X new.block +X format.title "title" output.check +X*************** +X*** 1326,1338 **** +X--- 1502,1524 ---- +X format.pages output +X } +X if$ +X+ #if ISBN +X+ format.issn output +X+ #endif +X new.block +X note output +X+ #if ANNOTATE +X+ output.annote +X+ #endif +X fin.entry +X } +X +X FUNCTION {book} +X { output.bibitem +X+ #if LIBRARY +X+ format.library output +X+ new.sentence +X+ #endif +X author empty$ +X { format.editors "author and editor" output.check } +X { format.authors output.nonnull +X*************** +X*** 1358,1365 **** +X--- 1544,1557 ---- +X if$ +X format.edition output +X format.date "year" output.check +X+ #if ISBN +X+ format.isbn output +X+ #endif +X new.block +X note output +X+ #if ANNOTATE +X+ output.annote +X+ #endif +X fin.entry +X } +X +X*************** +X*** 1369,1374 **** +X--- 1561,1570 ---- +X +X FUNCTION {booklet} +X { output.bibitem +X+ #if LIBRARY +X+ format.library output +X+ new.sentence +X+ #endif +X format.authors output +X new.block +X format.title "title" output.check +X*************** +X*** 1378,1383 **** +X--- 1574,1582 ---- +X format.date output +X new.block +X note output +X+ #if ANNOTATE +X+ output.annote +X+ #endif +X fin.entry +X } +X +X*************** +X*** 1391,1396 **** +X--- 1590,1599 ---- +X +X FUNCTION {inbook} +X { output.bibitem +X+ #if LIBRARY +X+ format.library output +X+ new.sentence +X+ #endif +X author empty$ +X { format.editors "author and editor" output.check } +X { format.authors output.nonnull +X*************** +X*** 1418,1425 **** +X--- 1621,1634 ---- +X if$ +X format.edition output +X format.date "year" output.check +X+ #if ISBN +X+ format.isbn output +X+ #endif +X new.block +X note output +X+ #if ANNOTATE +X+ output.annote +X+ #endif +X fin.entry +X } +X +X*************** +X*** 1432,1437 **** +X--- 1641,1650 ---- +X +X FUNCTION {incollection} +X { output.bibitem +X+ #if LIBRARY +X+ format.library output +X+ new.sentence +X+ #endif +X format.authors "author" output.check +X new.block +X format.title "title" output.check +X*************** +X*** 1451,1458 **** +X--- 1664,1677 ---- +X format.chapter.pages output +X } +X if$ +X+ #if ISBN +X+ format.isbn output +X+ #endif +X new.block +X note output +X+ #if ANNOTATE +X+ output.annote +X+ #endif +X fin.entry +X } +X +X*************** +X*** 1465,1470 **** +X--- 1684,1693 ---- +X +X FUNCTION {inproceedings} +X { output.bibitem +X+ #if LIBRARY +X+ format.library output +X+ new.sentence +X+ #endif +X format.authors "author" output.check +X new.block +X format.title "title" output.check +X*************** +X*** 1492,1499 **** +X--- 1715,1729 ---- +X format.pages output +X } +X if$ +X+ #if ISBN +X+ format.isbn output +X+ format.issn output +X+ #endif +X new.block +X note output +X+ #if ANNOTATE +X+ output.annote +X+ #endif +X fin.entry +X } +X +X*************** +X*** 1507,1512 **** +X--- 1737,1746 ---- +X +X FUNCTION {manual} +X { output.bibitem +X+ #if LIBRARY +X+ format.library output +X+ new.sentence +X+ #endif +X author empty$ +X { organization empty$ +X 'skip$ +X*************** +X*** 1536,1541 **** +X--- 1770,1778 ---- +X format.date output +X new.block +X note output +X+ #if ANNOTATE +X+ output.annote +X+ #endif +X fin.entry +X } +X +X*************** +X*** 1545,1550 **** +X--- 1782,1791 ---- +X +X FUNCTION {mastersthesis} +X { output.bibitem +X+ #if LIBRARY +X+ format.library output +X+ new.sentence +X+ #endif +X format.authors "author" output.check +X new.block +X format.title "title" output.check +X*************** +X*** 1555,1560 **** +X--- 1796,1804 ---- +X format.date "year" output.check +X new.block +X note output +X+ #if ANNOTATE +X+ output.annote +X+ #endif +X fin.entry +X } +X +X*************** +X*** 1564,1569 **** +X--- 1808,1817 ---- +X +X FUNCTION {misc} +X { output.bibitem +X+ #if LIBRARY +X+ format.library output +X+ new.sentence +X+ #endif +X format.authors output +X title howpublished new.block.checkb +X format.title output +X*************** +X*** 1570,1577 **** +X--- 1818,1831 ---- +X howpublished new.block.checka +X howpublished output +X format.date output +X+ #if ISBN +X+ format.issn output +X+ #endif +X new.block +X note output +X+ #if ANNOTATE +X+ output.annote +X+ #endif +X fin.entry +X empty.misc.check +X } +X*************** +X*** 1582,1587 **** +X--- 1836,1845 ---- +X +X FUNCTION {phdthesis} +X { output.bibitem +X+ #if LIBRARY +X+ format.library output +X+ new.sentence +X+ #endif +X format.authors "author" output.check +X new.block +X format.btitle "title" output.check +X*************** +X*** 1592,1597 **** +X--- 1850,1858 ---- +X format.date "year" output.check +X new.block +X note output +X+ #if ANNOTATE +X+ output.annote +X+ #endif +X fin.entry +X } +X +X*************** +X*** 1605,1610 **** +X--- 1866,1875 ---- +X +X FUNCTION {proceedings} +X { output.bibitem +X+ #if LIBRARY +X+ format.library output +X+ new.sentence +X+ #endif +X editor empty$ +X { organization output } +X { format.editors output.nonnull } +X*************** +X*** 1633,1640 **** +X--- 1898,1912 ---- +X publisher output +X } +X if$ +X+ #if ISBN +X+ format.isbn output +X+ format.issn output +X+ #endif +X new.block +X note output +X+ #if ANNOTATE +X+ output.annote +X+ #endif +X fin.entry +X } +X +X*************** +X*** 1644,1649 **** +X--- 1916,1925 ---- +X +X FUNCTION {techreport} +X { output.bibitem +X+ #if LIBRARY +X+ format.library output +X+ new.sentence +X+ #endif +X format.authors "author" output.check +X new.block +X format.title "title" output.check +X*************** +X*** 1654,1659 **** +X--- 1930,1938 ---- +X format.date "year" output.check +X new.block +X note output +X+ #if ANNOTATE +X+ output.annote +X+ #endif +X fin.entry +X } +X +X*************** +X*** 1663,1668 **** +X--- 1942,1951 ---- +X +X FUNCTION {unpublished} +X { output.bibitem +X+ #if LIBRARY +X+ format.library output +X+ new.sentence +X+ #endif +X format.authors "author" output.check +X new.block +X format.title "title" output.check +X*************** +X*** 1669,1674 **** +X--- 1952,1960 ---- +X new.block +X note "note" output.check +X format.date output +X+ #if ANNOTATE +X+ output.annote +X+ #endif +X fin.entry +X } +X +X*************** +X*** 1683,1739 **** +X +X #if MONTH_FULL +X +X- MACRO {jan} {"January"} +X +X! MACRO {feb} {"February"} +X +X MACRO {mar} {"March"} +X- +X MACRO {apr} {"April"} +X- +X MACRO {may} {"May"} +X- +X MACRO {jun} {"June"} +X- +X MACRO {jul} {"July"} +X- +X MACRO {aug} {"August"} +X- +X MACRO {sep} {"September"} +X- +X MACRO {oct} {"October"} +X +X MACRO {nov} {"November"} +X +X! MACRO {dec} {"December"} +X +X- #else !MONTH_FULL +X +X! MACRO {jan} {"Jan."} +X +X- MACRO {feb} {"Feb."} +X +X! MACRO {mar} {"Mar."} +X +X MACRO {apr} {"Apr."} +X- +X MACRO {may} {"May"} +X- +X MACRO {jun} {"June"} +X- +X MACRO {jul} {"July"} +X- +X MACRO {aug} {"Aug."} +X- +X MACRO {sep} {"Sept."} +X- +X MACRO {oct} {"Oct."} +X +X MACRO {nov} {"Nov."} +X +X! MACRO {dec} {"Dec."} +X +X! #endif MONTH_FULL +X +X % Journals are either written out in full or abbreviated; +X % the abbreviations are like those found in ACM publications. +X--- 1969,2045 ---- +X +X #if MONTH_FULL +X +X +X! #ifndef GERMAN +X +X+ MACRO {jan} {"January"} +X+ MACRO {feb} {"February"} +X MACRO {mar} {"March"} +X MACRO {apr} {"April"} +X MACRO {may} {"May"} +X MACRO {jun} {"June"} +X MACRO {jul} {"July"} +X MACRO {aug} {"August"} +X MACRO {sep} {"September"} +X MACRO {oct} {"October"} +X+ MACRO {nov} {"November"} +X+ MACRO {dec} {"December"} +X +X+ #else /* GERMAN */ +X+ +X+ MACRO {jan} {"Januar"} +X+ MACRO {feb} {"Februar"} +X+ MACRO {mar} {"M{\accent 127 a}rz"} +X+ MACRO {apr} {"April"} +X+ MACRO {may} {"Mai"} +X+ MACRO {jun} {"Juni"} +X+ MACRO {jul} {"Juli"} +X+ MACRO {aug} {"August"} +X+ MACRO {sep} {"September"} +X+ MACRO {oct} {"Oktober"} +X MACRO {nov} {"November"} +X+ MACRO {dec} {"Dezember"} +X +X! #endif /* GERMAN */ +X +X +X! #else /* !MONTH_FULL */ +X +X +X! #ifndef GERMAN +X +X+ MACRO {jan} {"Jan."} +X+ MACRO {feb} {"Feb."} +X+ MACRO {mar} {"Mar."} +X MACRO {apr} {"Apr."} +X MACRO {may} {"May"} +X MACRO {jun} {"June"} +X MACRO {jul} {"July"} +X MACRO {aug} {"Aug."} +X MACRO {sep} {"Sept."} +X MACRO {oct} {"Oct."} +X+ MACRO {nov} {"Nov."} +X+ MACRO {dec} {"Dec."} +X+ +X+ #else /* GERMAN */ +X +X+ MACRO {jan} {"Jan."} +X+ MACRO {feb} {"Feb."} +X+ MACRO {mar} {"M{\accent 127 a}rz"} +X+ MACRO {apr} {"April"} +X+ MACRO {may} {"Mai"} +X+ MACRO {jun} {"Juni"} +X+ MACRO {jul} {"Juli"} +X+ MACRO {aug} {"Aug."} +X+ MACRO {sep} {"Sept."} +X+ MACRO {oct} {"Okt."} +X MACRO {nov} {"Nov."} +X+ MACRO {dec} {"Dez."} +X +X! #endif /* GERMAN */ +X! +X +X! #endif /* MONTH_FULL */ +X +X % Journals are either written out in full or abbreviated; +X % the abbreviations are like those found in ACM publications. +X*************** +X*** 1785,1791 **** +X +X MACRO {tcs} {"Theoretical Computer Science"} +X +X! #else !JOUR_FULL +X +X MACRO {acmcs} {"ACM Comput. Surv."} +X +X--- 2091,2097 ---- +X +X MACRO {tcs} {"Theoretical Computer Science"} +X +X! #else /* !JOUR_FULL */ +X +X MACRO {acmcs} {"ACM Comput. Surv."} +X +X*************** +X*** 1828,1834 **** +X +X MACRO {tcs} {"Theoretical Comput. Sci."} +X +X! #endif JOUR_FULL +X +X % Now we read in the .BIB entries. +X +X--- 2134,2140 ---- +X +X MACRO {tcs} {"Theoretical Comput. Sci."} +X +X! #endif /* JOUR_FULL */ +X +X % Now we read in the .BIB entries. +X +END_OF_FILE +if test 28321 -ne `wc -c <'itibst.diff'`; then + echo shar: \"'itibst.diff'\" unpacked with wrong size! +fi +# end of 'itibst.diff' +fi +if test -f 'biblist.bst' -a "${1}" != "-c" ; then + echo shar: Will not clobber existing file \"'biblist.bst'\" +else +echo shar: Extracting \"'biblist.bst'\" \(19478 characters\) +sed "s/^X//" >'biblist.bst' <<'END_OF_FILE' +X%% $Id: itibst.doc,v 1.3 1992/01/13 13:59:34 schrod Exp schrod $ +X%%---------------------------------------------------------------------- +X%% BibTeX `THD/ITI' family of bibliography styles +X%% The file itibst.doc has the documentation for this style. +X%% Please notify Joachim Schrod (schrod@iti.informatik.th-darmstadt.de) of +X%% any bugs in these styles or in this documentation file. +X%% +X%% CAVEAT: This is experimental software in an alpha-test version. +X%% The documentation is not complete, installation instructions +X%% are missing (or perhaps not updated), etc. Please send +X%% bug reports (and, of course, repairs) to me, but do not expect +X%% that I will react very soon. I will collect the stuff and will +X%% incorporate it at a later date. +X%% +X%% biblist style (unsorted, for listings of bib files) +XENTRY +X { address +X annote +X author +X booktitle +X chapter +X edition +X editor +X howpublished +X institution +X isbn +X issn +X journal +X key +X library +X month +X note +X number +X organization +X pages +X publisher +X school +X series +X title +X type +X volume +X year +X } +X {} +X { label } +XINTEGERS { output.state before.all mid.sentence after.sentence after.block } +XFUNCTION {init.state.consts} +X{ #0 'before.all := +X #1 'mid.sentence := +X #2 'after.sentence := +X #3 'after.block := +X} +XSTRINGS { s t } +XFUNCTION {output.nonnull} +X{ 's := +X output.state mid.sentence = +X { ", " * write$ } +X { output.state after.block = +X { add.period$ write$ +X newline$ +X "\newblock " write$ +X } +X { output.state before.all = +X 'write$ +X { add.period$ " " * write$ } +X if$ +X } +X if$ +X mid.sentence 'output.state := +X } +X if$ +X s +X} +XFUNCTION {output} +X{ duplicate$ empty$ +X 'pop$ +X 'output.nonnull +X if$ +X} +XFUNCTION {output.check} +X{ 't := +X duplicate$ empty$ +X { pop$ "empty " t * " in " * cite$ * warning$ } +X 'output.nonnull +X if$ +X} +XFUNCTION {output.bibitem} +X{ newline$ +X "\bibitem{" write$ +X cite$ write$ +X "}" write$ +X newline$ +X "" +X before.all 'output.state := +X} +XFUNCTION {fin.entry} +X{ add.period$ +X write$ +X newline$ +X} +XFUNCTION {new.block} +X{ output.state before.all = +X 'skip$ +X { after.block 'output.state := } +X if$ +X} +XFUNCTION {new.sentence} +X{ output.state after.block = +X 'skip$ +X { output.state before.all = +X 'skip$ +X { after.sentence 'output.state := } +X if$ +X } +X if$ +X} +XFUNCTION {output.annote} +X{ +X annote empty$ +X { } +X { +X new.block "\annote " output +X newline$ write$ +X annote write$ newline$ +X "\endannote" +X } +X if$ +X} +XFUNCTION {not} +X{ { #0 } +X { #1 } +X if$ +X} +XFUNCTION {and} +X{ 'skip$ +X { pop$ #0 } +X if$ +X} +XFUNCTION {or} +X{ { pop$ #1 } +X 'skip$ +X if$ +X} +XFUNCTION {new.block.checka} +X{ empty$ +X 'skip$ +X 'new.block +X if$ +X} +XFUNCTION {new.block.checkb} +X{ empty$ +X swap$ empty$ +X and +X 'skip$ +X 'new.block +X if$ +X} +XFUNCTION {new.sentence.checka} +X{ empty$ +X 'skip$ +X 'new.sentence +X if$ +X} +XFUNCTION {new.sentence.checkb} +X{ empty$ +X swap$ empty$ +X and +X 'skip$ +X 'new.sentence +X if$ +X} +XFUNCTION {field.or.null} +X{ duplicate$ empty$ +X { pop$ "" } +X 'skip$ +X if$ +X} +XFUNCTION {emphasize} +X{ duplicate$ empty$ +X { pop$ "" } +X { "{\it " swap$ * "}" * } +X if$ +X} +XINTEGERS { nameptr namesleft numnames } +XFUNCTION {format.names} +X{ 's := +X #1 'nameptr := +X s num.names$ 'numnames := +X numnames 'namesleft := +X { namesleft #0 > } +X { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := +X nameptr #1 > +X { namesleft #1 > +X { ", " * t * } +X { numnames #2 > +X { "," * } +X 'skip$ +X if$ +X t "others" = +X { " et~al." * } +X { " and " * t * } +X if$ +X } +X if$ +X } +X 't +X if$ +X nameptr #1 + 'nameptr := +X namesleft #1 - 'namesleft := +X } +X while$ +X} +XFUNCTION {format.authors} +X{ author empty$ +X { "" } +X { author format.names } +X if$ +X} +XFUNCTION {format.editors} +X{ editor empty$ +X { "" } +X { editor format.names +X editor num.names$ #1 > +X { ", editors" * } +X { ", editor" * } +X if$ +X } +X if$ +X} +XFUNCTION {format.isbn} +X{ isbn empty$ +X { "" } +X { new.sentence "ISBN~" isbn * } +X if$ +X} +XFUNCTION {format.issn} +X{ issn empty$ +X { "" } +X { new.sentence "ISSN~" issn * } +X if$ +X} +XFUNCTION {format.library} +X{ library empty$ +X { "" } +X { "\library{" library * "}" * } +X if$ +X} +XFUNCTION {format.title} +X{ title empty$ +X { "" } +X 'title +X if$ +X} +XFUNCTION {n.dashify} +X{ 't := +X "" +X { t empty$ not } +X { t #1 #1 substring$ "-" = +X { t #1 #2 substring$ "--" = not +X { "--" * +X t #2 global.max$ substring$ 't := +X } +X { { t #1 #1 substring$ "-" = } +X { "-" * +X t #2 global.max$ substring$ 't := +X } +X while$ +X } +X if$ +X } +X { t #1 #1 substring$ * +X t #2 global.max$ substring$ 't := +X } +X if$ +X } +X while$ +X} +XFUNCTION {format.date} +X{ year empty$ +X { month empty$ +X { "" } +X { "there's a month but no year in " cite$ * warning$ +X month +X } +X if$ +X } +X { month empty$ +X 'year +X { month " " * year * } +X if$ +X } +X if$ +X} +XFUNCTION {format.btitle} +X{ title emphasize +X} +XFUNCTION {tie.or.space.connect} +X{ duplicate$ text.length$ #3 < +X { "~" } +X { " " } +X if$ +X swap$ * * +X} +XFUNCTION {either.or.check} +X{ empty$ +X 'pop$ +X { "can't use both " swap$ * " fields in " * cite$ * warning$ } +X if$ +X} +XFUNCTION {format.bvolume} +X{ volume empty$ +X { "" } +X { "volume" volume tie.or.space.connect +X series empty$ +X 'skip$ +X { " of " * series emphasize * } +X if$ +X "volume and number" number either.or.check +X } +X if$ +X} +XFUNCTION {format.number.series} +X{ volume empty$ +X { number empty$ +X { series field.or.null } +X { output.state mid.sentence = +X { "number" } +X { "Number" } +X if$ +X number tie.or.space.connect +X series empty$ +X { "there's a number but no series in " cite$ * warning$ } +X { " in " * series * } +X if$ +X } +X if$ +X } +X { "" } +X if$ +X} +XFUNCTION {format.edition} +X{ edition empty$ +X { "" } +X { output.state mid.sentence = +X { edition "l" change.case$ " edition" * } +X { edition "t" change.case$ " edition" * } +X if$ +X } +X if$ +X} +XINTEGERS { multiresult } +XFUNCTION {multi.page.check} +X{ 't := +X #0 'multiresult := +X { multiresult not +X t empty$ not +X and +X } +X { t #1 #1 substring$ +X duplicate$ "-" = +X swap$ duplicate$ "," = +X swap$ "+" = +X or or +X { #1 'multiresult := } +X { t #2 global.max$ substring$ 't := } +X if$ +X } +X while$ +X multiresult +X} +XFUNCTION {format.pages} +X{ pages empty$ +X { "" } +X { pages multi.page.check +X { "pages" pages n.dashify tie.or.space.connect } +X { "page" pages tie.or.space.connect } +X if$ +X } +X if$ +X} +XFUNCTION {format.vol.num.pages} +X{ volume field.or.null +X number empty$ +X 'skip$ +X { "(" number * ")" * * +X volume empty$ +X { "there's a number but no volume in " cite$ * warning$ } +X 'skip$ +X if$ +X } +X if$ +X pages empty$ +X 'skip$ +X { duplicate$ empty$ +X { pop$ format.pages } +X { ":" * pages n.dashify * } +X if$ +X } +X if$ +X} +XFUNCTION {format.chapter.pages} +X{ chapter empty$ +X 'format.pages +X { type empty$ +X { "chapter" } +X { type "l" change.case$ } +X if$ +X chapter tie.or.space.connect +X pages empty$ +X 'skip$ +X { ", " * format.pages * } +X if$ +X } +X if$ +X} +XFUNCTION {format.in.ed.booktitle} +X{ booktitle empty$ +X { "" } +X { editor empty$ +X { "In " booktitle emphasize * } +X { "In " format.editors * ", " * booktitle emphasize * } +X if$ +X } +X if$ +X} +XFUNCTION {empty.misc.check} +X{ author empty$ title empty$ howpublished empty$ +X month empty$ year empty$ note empty$ +X and and and and and +X { "all relevant fields are empty in " cite$ * warning$ } +X 'skip$ +X if$ +X} +XFUNCTION {format.thesis.type} +X{ type empty$ +X 'skip$ +X { pop$ +X type "t" change.case$ +X } +X if$ +X} +XFUNCTION {format.tr.number} +X{ type empty$ +X { "Technical Report" } +X 'type +X if$ +X number empty$ +X { "t" change.case$ } +X { number tie.or.space.connect } +X if$ +X} +XFUNCTION {format.article.crossref} +X{ key empty$ +X { journal empty$ +X { "need key or journal for " cite$ * " to crossref " * crossref * +X warning$ +X "" +X } +X { "In {\it " journal * "\/}" * } +X if$ +X } +X { "In " key * } +X if$ +X " \cite{" * crossref * "}" * +X} +XFUNCTION {format.crossref.editor} +X{ editor #1 "{vv~}{ll}" format.name$ +X editor num.names$ duplicate$ +X #2 > +X { pop$ " et~al." * } +X { #2 < +X 'skip$ +X { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = +X { " et~al." * } +X { " and " * editor #2 "{vv~}{ll}" format.name$ * } +X if$ +X } +X if$ +X } +X if$ +X} +XFUNCTION {format.book.crossref} +X{ volume empty$ +X { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ +X "In " +X } +X { "Volume" volume tie.or.space.connect +X " of " * +X } +X if$ +X editor empty$ +X editor field.or.null author field.or.null = +X or +X { key empty$ +X { series empty$ +X { "need editor, key, or series for " cite$ * " to crossref " * +X crossref * warning$ +X "" * +X } +X { "{\it " * series * "\/}" * } +X if$ +X } +X { key * } +X if$ +X } +X { format.crossref.editor * } +X if$ +X " \cite{" * crossref * "}" * +X} +XFUNCTION {format.incoll.inproc.crossref} +X{ editor empty$ +X editor field.or.null author field.or.null = +X or +X { key empty$ +X { booktitle empty$ +X { "need editor, key, or booktitle for " cite$ * " to crossref " * +X crossref * warning$ +X "" +X } +X { "In {\it " booktitle * "\/}" * } +X if$ +X } +X { "In " key * } +X if$ +X } +X { "In " format.crossref.editor * } +X if$ +X " \cite{" * crossref * "}" * +X} +XFUNCTION {article} +X{ output.bibitem +X format.library output +X new.sentence +X format.authors "author" output.check +X new.block +X format.title "title" output.check +X new.block +X crossref missing$ +X { journal emphasize "journal" output.check +X format.vol.num.pages output +X format.date "year" output.check +X } +X { format.article.crossref output.nonnull +X format.pages output +X } +X if$ +X format.issn output +X new.block +X note output +X output.annote +X fin.entry +X} +XFUNCTION {book} +X{ output.bibitem +X format.library output +X new.sentence +X author empty$ +X { format.editors "author and editor" output.check } +X { format.authors output.nonnull +X crossref missing$ +X { "author and editor" editor either.or.check } +X 'skip$ +X if$ +X } +X if$ +X new.block +X format.btitle "title" output.check +X crossref missing$ +X { format.bvolume output +X new.block +X format.number.series output +X new.sentence +X publisher "publisher" output.check +X address output +X } +X { new.block +X format.book.crossref output.nonnull +X } +X if$ +X format.edition output +X format.date "year" output.check +X format.isbn output +X new.block +X note output +X output.annote +X fin.entry +X} +XFUNCTION {booklet} +X{ output.bibitem +X format.library output +X new.sentence +X format.authors output +X new.block +X format.title "title" output.check +X howpublished address new.block.checkb +X howpublished output +X address output +X format.date output +X new.block +X note output +X output.annote +X fin.entry +X} +XFUNCTION {inbook} +X{ output.bibitem +X format.library output +X new.sentence +X author empty$ +X { format.editors "author and editor" output.check } +X { format.authors output.nonnull +X crossref missing$ +X { "author and editor" editor either.or.check } +X 'skip$ +X if$ +X } +X if$ +X new.block +X format.btitle "title" output.check +X crossref missing$ +X { format.bvolume output +X format.chapter.pages "chapter and pages" output.check +X new.block +X format.number.series output +X new.sentence +X publisher "publisher" output.check +X address output +X } +X { format.chapter.pages "chapter and pages" output.check +X new.block +X format.book.crossref output.nonnull +X } +X if$ +X format.edition output +X format.date "year" output.check +X format.isbn output +X new.block +X note output +X output.annote +X fin.entry +X} +XFUNCTION {incollection} +X{ output.bibitem +X format.library output +X new.sentence +X format.authors "author" output.check +X new.block +X format.title "title" output.check +X new.block +X crossref missing$ +X { format.in.ed.booktitle "booktitle" output.check +X format.bvolume output +X format.number.series output +X format.chapter.pages output +X new.sentence +X publisher "publisher" output.check +X address output +X format.edition output +X format.date "year" output.check +X } +X { format.incoll.inproc.crossref output.nonnull +X format.chapter.pages output +X } +X if$ +X format.isbn output +X new.block +X note output +X output.annote +X fin.entry +X} +XFUNCTION {inproceedings} +X{ output.bibitem +X format.library output +X new.sentence +X format.authors "author" output.check +X new.block +X format.title "title" output.check +X new.block +X crossref missing$ +X { format.in.ed.booktitle "booktitle" output.check +X format.bvolume output +X format.number.series output +X format.pages output +X address empty$ +X { organization publisher new.sentence.checkb +X organization output +X publisher output +X format.date "year" output.check +X } +X { address output.nonnull +X format.date "year" output.check +X new.sentence +X organization output +X publisher output +X } +X if$ +X } +X { format.incoll.inproc.crossref output.nonnull +X format.pages output +X } +X if$ +X format.isbn output +X format.issn output +X new.block +X note output +X output.annote +X fin.entry +X} +XFUNCTION {conference} { inproceedings } +XFUNCTION {manual} +X{ output.bibitem +X format.library output +X new.sentence +X author empty$ +X { organization empty$ +X 'skip$ +X { organization output.nonnull +X address output +X } +X if$ +X } +X { format.authors output.nonnull } +X if$ +X new.block +X format.btitle "title" output.check +X author empty$ +X { organization empty$ +X { address new.block.checka +X address output +X } +X 'skip$ +X if$ +X } +X { organization address new.block.checkb +X organization output +X address output +X } +X if$ +X format.edition output +X format.date output +X new.block +X note output +X output.annote +X fin.entry +X} +XFUNCTION {mastersthesis} +X{ output.bibitem +X format.library output +X new.sentence +X format.authors "author" output.check +X new.block +X format.title "title" output.check +X new.block +X "Master's thesis" format.thesis.type output.nonnull +X school "school" output.check +X address output +X format.date "year" output.check +X new.block +X note output +X output.annote +X fin.entry +X} +XFUNCTION {misc} +X{ output.bibitem +X format.library output +X new.sentence +X format.authors output +X title howpublished new.block.checkb +X format.title output +X howpublished new.block.checka +X howpublished output +X format.date output +X format.issn output +X new.block +X note output +X output.annote +X fin.entry +X empty.misc.check +X} +XFUNCTION {phdthesis} +X{ output.bibitem +X format.library output +X new.sentence +X format.authors "author" output.check +X new.block +X format.btitle "title" output.check +X new.block +X "PhD thesis" format.thesis.type output.nonnull +X school "school" output.check +X address output +X format.date "year" output.check +X new.block +X note output +X output.annote +X fin.entry +X} +XFUNCTION {proceedings} +X{ output.bibitem +X format.library output +X new.sentence +X editor empty$ +X { organization output } +X { format.editors output.nonnull } +X if$ +X new.block +X format.btitle "title" output.check +X format.bvolume output +X format.number.series output +X address empty$ +X { editor empty$ +X { publisher new.sentence.checka } +X { organization publisher new.sentence.checkb +X organization output +X } +X if$ +X publisher output +X format.date "year" output.check +X } +X { address output.nonnull +X format.date "year" output.check +X new.sentence +X editor empty$ +X 'skip$ +X { organization output } +X if$ +X publisher output +X } +X if$ +X format.isbn output +X format.issn output +X new.block +X note output +X output.annote +X fin.entry +X} +XFUNCTION {techreport} +X{ output.bibitem +X format.library output +X new.sentence +X format.authors "author" output.check +X new.block +X format.title "title" output.check +X new.block +X format.tr.number output.nonnull +X institution "institution" output.check +X address output +X format.date "year" output.check +X new.block +X note output +X output.annote +X fin.entry +X} +XFUNCTION {unpublished} +X{ output.bibitem +X format.library output +X new.sentence +X format.authors "author" output.check +X new.block +X format.title "title" output.check +X new.block +X note "note" output.check +X format.date output +X output.annote +X fin.entry +X} +XFUNCTION {default.type} { misc } +XMACRO {jan} {"January"} +XMACRO {feb} {"February"} +XMACRO {mar} {"March"} +XMACRO {apr} {"April"} +XMACRO {may} {"May"} +XMACRO {jun} {"June"} +XMACRO {jul} {"July"} +XMACRO {aug} {"August"} +XMACRO {sep} {"September"} +XMACRO {oct} {"October"} +XMACRO {nov} {"November"} +XMACRO {dec} {"December"} +XMACRO {acmcs} {"ACM Computing Surveys"} +XMACRO {acta} {"Acta Informatica"} +XMACRO {cacm} {"Communications of the ACM"} +XMACRO {ibmjrd} {"IBM Journal of Research and Development"} +XMACRO {ibmsj} {"IBM Systems Journal"} +XMACRO {ieeese} {"IEEE Transactions on Software Engineering"} +XMACRO {ieeetc} {"IEEE Transactions on Computers"} +XMACRO {ieeetcad} +X {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} +XMACRO {ipl} {"Information Processing Letters"} +XMACRO {jacm} {"Journal of the ACM"} +XMACRO {jcss} {"Journal of Computer and System Sciences"} +XMACRO {scp} {"Science of Computer Programming"} +XMACRO {sicomp} {"SIAM Journal on Computing"} +XMACRO {tocs} {"ACM Transactions on Computer Systems"} +XMACRO {tods} {"ACM Transactions on Database Systems"} +XMACRO {tog} {"ACM Transactions on Graphics"} +XMACRO {toms} {"ACM Transactions on Mathematical Software"} +XMACRO {toois} {"ACM Transactions on Office Information Systems"} +XMACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} +XMACRO {tcs} {"Theoretical Computer Science"} +XREAD +XSTRINGS { longest.label } +XINTEGERS { number.label longest.label.width } +XFUNCTION {initialize.longest.label} +X{ "" 'longest.label := +X #1 'number.label := +X #0 'longest.label.width := +X} +XFUNCTION {longest.label.pass} +X{ number.label int.to.str$ 'label := +X number.label #1 + 'number.label := +X label width$ longest.label.width > +X { label 'longest.label := +X label width$ 'longest.label.width := +X } +X 'skip$ +X if$ +X} +XEXECUTE {initialize.longest.label} +XITERATE {longest.label.pass} +XFUNCTION {begin.bib} +X{ preamble$ empty$ +X 'skip$ +X { preamble$ write$ newline$ } +X if$ +X "\begin{thebibliography}{" longest.label * "}" * write$ newline$ +X} +XEXECUTE {begin.bib} +XEXECUTE {init.state.consts} +XITERATE {call.type$} +XFUNCTION {end.bib} +X{ newline$ +X "\end{thebibliography}" write$ newline$ +X} +XEXECUTE {end.bib} +END_OF_FILE +if test 19478 -ne `wc -c <'biblist.bst'`; then + echo shar: \"'biblist.bst'\" unpacked with wrong size! +fi +# end of 'biblist.bst' +fi +echo shar: End of shell archive. +exit 0 diff --git a/Master/texmf-dist/doc/latex/biblist/biblist.pdf b/Master/texmf-dist/doc/latex/biblist/biblist.pdf new file mode 100644 index 00000000000..2e4a618ee57 Binary files /dev/null and b/Master/texmf-dist/doc/latex/biblist/biblist.pdf differ diff --git a/Master/texmf-dist/doc/latex/biblist/biblist.tex b/Master/texmf-dist/doc/latex/biblist/biblist.tex new file mode 100644 index 00000000000..a6f57e07dae --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblist/biblist.tex @@ -0,0 +1,653 @@ +% $Id: biblist.doc,v 1.4 1992/01/13 16:35:56 schrod Exp schrod $ +%---------------------------------------------------------------------- +% Copyright (c) 1991 by J.Schrod . +% Distributed under the terms of the GNU General Public License. + +% +% LaTeX style option biblist for article style +% +% [LaTeX in MAKEPROG] + + +% +% $Log: biblist.doc,v $ +% Revision 1.4 1992/01/13 16:35:56 schrod +% Added examples, repaired headline. +% Called \reset@font where appropriate. +% October 91 version of LaTeX was delayed until December 91. Readers +% might be disturbed if there is the notion of a nonexistant version. +% +% Revision 1.3 1991/10/14 14:10:21 schrod +% mentioned that this option is supported. +% moved local guide section to separate file. +% +% Revision 1.2 1991/10/10 16:13:31 schrod +% changed email address. +% mentioned LaTeX 2.09 (just announced). +% +% Revision 1.1 1991/04/13 15:03:08 schrod +% Initial revision +% + + + + +\documentstyle[progltx,a4-9,rcs,names,biblist]{article} + + +% We need biblist for the examples and do therefore include it. But it +% sets the headline (see below ;-). So we just reset it again to the +% value it had before. Well, it's a kind of a kludge, but it works... +\pagestyle{plain} + +% The examples will consist of framed pseudo-output. We'll need a +% variable for the width of these examples. +\newdimen\examplewidth + + +\nofiles % don't need an aux file + + +\begin{document} + + +\title{The {\tt biblist\/} Style Option} +\author{% % LaTeX does not discard unnecessary glue... + Joachim Schrod% + \thanks{% + TU~Darmstadt, Alexanderstr.~10, D-6100 Darmstadt, Germany.\newline + Email: {\tt schrod@iti.informatik.th-darmstadt.de}.% + }% + } +\RCSdate $Date: 1992/01/13 16:35:56 $ + +\maketitle + + + +\chap What's this style option for?. + +This style option is appropriate to create a typeset listing of a +(possibly large) \BibTeX{} input file. With such large files -- +especially, if the cite keys are long -- the needed string space is +often exceeded. Often a Big\TeX{} is available to circumstance this +problem, but with this style option each \TeX{} will do it. + +You have to prepare a \LaTeX{} document which uses the |article| +style and the |biblist| style option. You may add almost all other +style options, as you wish, e.g., |twoside|, |german| (or other +language style options), |a4|, etc. This style option must be used +with a ragged bottom; this has the effect, that it cannot be used with +|twocolumn| or |multicol|. + +You must issue a |\bibliography| tag which names all \BibTeX{} +databases which you want to print. You may issue a +|\bibliographystyle| tag to specify how \BibTeX{} will process its +databases. (In fact, you usually must issue it since the default +bibliography style is not available on most installations; see +below.) You may issue |\nocite| commands if you want to print only +selected entries from the databases. + + +\sect If you have not issued the |\bibliographystyle| tag, the +|biblist| bibliography style will be used. This is a non-abbreviating +style which does not do any sorting and no case conversion to titles. +The field |isbn| is recognized for books (and parts of), and the +field |issn| is recognized for articles and such. In addition, it +provides the additional fields |library| and |annote| for all entry +types. The usage of these fields depends on the definition of +appropriate \TeX{} macros (which are supplied by this style option). + +On interest I can provide a diff to |btxbst.doc|. + + +\sect A ``bug'' you may encounter is that |\cite| tags within +\BibTeX{} entries will not be processed. Instead the cite key itself +will be printed. Note that this is not a bug, this is a feature! You +have to use |\nocite| tags for {\it all\/} entries that shall be +included in the listing. If you do not give any |\nocite| tag at all, +a listing with all entries is created. + +Note that this style option assumes that you use either a version of +\LaTeX{}~2.09 after December~1991, I\LaTeX{}, or the {\sf babel} +system. Particulary, it requires the definition of |\refname| (i.e., +the title of the ``references section'') which is supplied by these +systems. (Of course, you may supply this definition by yourself.) + + +\sect The entries in the resulting listing are formatted as follows: +% + \begin{description} + +\item[\tt cite key] \leavevmode \null \dotfill \quad {\sf (Library info)}\break + Author(s).\\ + Title.\\ + Publication info.\\ + Notes.\\ + \null \qquad {\footnotesize Annotation} + + \end{description} +% + I.e., an open format is used. Although this needs more space I think +the enhanced legibility pays back. + +Note that you will not get the `Library info' and the `Annotation' in +the above format if your bibliography style does not supply this +information with the assumed markup. (See above for the |biblist| +bibliography style.) The parenthesis around the library info are +produced by this style option, not by \BibTeX{}. + + +\sect {\it Example\/}:\quad Suppose, there is a file |typography.bib| +with references on typography. +% + \begin{quote} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{verbatim} +% typography.bib 13 Jan 92 +%------------------------------------------------------------ + +% +% References on Typographie, Typesetting, and Book Design +% + +% !!!! This is a kludge for biblist.doc !!!! +@preamble{" +\font\tenlogo=logo10 +\let\logo=\tenlogo +\def\MF{{\logo META}\-{\logo FONT}} +"} + +@book{typo:tschichold:selected, + author = {Jan Tschichold}, + title = {Ausgew\"ahlte Aufs\"atze \"uber Fragen der Gestalt des + Buches und der Typographie}, + publisher = {Birkh\"auser}, + address = {Basel}, + year = 1975, + isbn = {3-7643-1946-1}, + note = {A second, unchanged, edition appeared in~1987.}, + library = {}, + annote = {A collection of his ``classic'' papers. The best book on + typographic principles read so far. A definitive `{\it + must\/}' for everyone interested in typography, book design, + or typesetting.} +} + +@article{typo:blostein:music, + author = {Dorothea Blostein}, + title = {Justification of Printed Music}, + journal = cacm, + volume = 34, + number = 3, + month = mar, + year = 1991, + pages = {88-99}, + annote = {Presents problems and solutions of the task to create a + correct spacing while setting notes. The proposed method also + takes the temporal relationship of notes into account. + Handles two-dimensional layout, e.g., staffs and texts.} +} + +@book{typo:sta:zapf, + title = {Herrman Zapf and his Design Philosophy}, + publisher = {Society of Typographic Arts}, + address = {Chicago}, + year = 1987, + isbn = {0-941447-00-6}, + note = {}, + library = {}, + annote = {A valuable book. A chapter on his work around \MF{} is + included. Was among the most beautiful books of the year.} +} +\end{verbatim} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \end{quote} +% + Furthermore assume that the bibliography style |biblist| is +available. Then the \LaTeX{} file +% +\begin{verbatim} + \documentstyle[biblist]{article} + + \begin{document} + + \bibliography{typography} + + \end{document} +\end{verbatim} +% + may be used to create a listing with all entries. You have to run +\LaTeX{}, \BibTeX{}, and \LaTeX{}. (Careful readers will note that +there will be a \BibTeX{} warning about a missing author or editor in +the Zapf entry.) You do {\it not\/} need to run \LaTeX{} twice after +the \BibTeX{} run. The result looks like this: +% + \begin{quote} + \examplewidth=\linewidth + \advance\examplewidth by -2\fboxrule + \advance\examplewidth by -2\fboxsep + \fbox{% + \begin{minipage}{\examplewidth} + \section*{References} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% We must fake a little bit to include it here. \bibitem gobbles the +% next character since it thinks it's a line end. (This might be a +% problem for itself, but untill now all bibliography styles put +% \bibitem on an own line.) We must supply a token which might be +% eaten by \bibitem. Best to use a \relax for this. +% + \font\tenlogo=logo10 \let\logo=\tenlogo \def\MF{{\logo META}\-{\logo FONT}} +\begin{thebibliography}{1} + +\bibitem{typo:tschichold:selected}\relax +Jan Tschichold. +\newblock {\it Ausgew\"ahlte Aufs\"atze \"uber Fragen der Gestalt des Buches + und der Typographie}. +\newblock Birkh\"auser, Basel, 1975. ISBN~3-7643-1946-1. +\newblock A second, unchanged, edition appeared in~1987. +\newblock +\annote A collection of his ``classic'' papers. The best book on typographic + principles read so far. A definitive `{\it must\/}' for everyone interested + in typography, book design, or typesetting. +\endannote. + +\bibitem{typo:blostein:music}\relax +Dorothea Blostein. +\newblock Justification of Printed Music. +\newblock {\it Communications of the ACM}, 34(3):88--99, March 1991. +\newblock +\annote Presents problems and solutions of the task to create a correct spacing + while setting notes. The proposed method also takes the temporal relationship + of notes into account. Handles two-dimensional layout, e.g., staffs and + texts. +\endannote. + +\bibitem{typo:sta:zapf}\relax +{\it Herrman Zapf and his Design Philosophy}. +\newblock Society of Typographic Arts, Chicago, 1987. ISBN~0-941447-00-6. +\newblock +\annote A valuable book. A chapter on his work around \MF{} is included. Was + among the most beautiful books of the year. +\endannote. + +\end{thebibliography} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \end{minipage}% + } + \end{quote} + +\bigskip + +Otherwise -- without the |biblist| bibliography style -- you must issue +an appopriate tag. The following result was produced with |unsrt|: +% + \begin{quote} + \examplewidth=\linewidth + \advance\examplewidth by -2\fboxrule + \advance\examplewidth by -2\fboxsep + \fbox{% + \begin{minipage}{\examplewidth} + \section*{References} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Here the same reason for inserting \relax'es as in the previous +% example applies. +% + \font\tenlogo=logo10 \let\logo=\tenlogo \def\MF{{\logo META}\-{\logo FONT}} +\begin{thebibliography}{1} + +\bibitem{typo:tschichold:selected}\relax +Jan Tschichold. +\newblock {\em Ausgew\"ahlte Aufs\"atze \"uber Fragen der Gestalt des Buches + und der Typographie}. +\newblock Birkh\"auser, Basel, 1975. +\newblock A second, unchanged, edition appeared in~1987. + +\bibitem{typo:blostein:music}\relax +Dorothea Blostein. +\newblock Justification of printed music. +\newblock {\em Communications of the ACM}, 34(3):88--99, March 1991. + +\bibitem{typo:sta:zapf}\relax +{\em Herrman Zapf and his Design Philosophy}. +\newblock Society of Typographic Arts, Chicago, 1987. + +\end{thebibliography} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \end{minipage}% + } + \end{quote} + +Of course, the ISBN numbers and the annotations are missing, since +|unsrt| does not extract them from the database. (Careful readers +will notice another difference: The |biblist| bibliography style does +not lower titles of articles as the standard styles do.) + + +\sect The preferred style for this style option is |article|. In fact, +all styles which use |\raggedbottom| will work. This is because a page +break within an entry is not allowed and the flexibility at the page +bottom is needed. + + +\sect As a future enhancement one could place an info on the starting +and the finishing entry on this page in the headline, like in a +dictionary. + + +\sect This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License as +published by the Free Software Foundation; either version~1, or (at your +option) any later version. + +This program is distributed in the hope that it will be useful, but +{\bf without any warranty\/}; without even the implied warranty of +{\bf merchantability\/} or {\bf fitness for a particular purpose}. See +the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software Foundation, +Inc., 675~Mass Ave, Cambridge, MA~02139, USA. + + +\sect This style option is supported. Send bug reports, comments and +repairs. + + + + +\chap Implementation. + +The main work is to supply the environment |thebibliography|; in +fact, we implement it as a |description| environment. The environment +gets an (unused) argument. In addition we have to supply a correct +expansion for the |\bibitem| tag which takes the cite key as its +argument. Of course, this will result in an |\item|. After the +|\bibitem| a |\library| tag may follow, with one parameter followed +by a period. Then comes the reference, the (optional) annotation is +an own block, enclosed in |\annote| and |\endannote|. After +|\endannote| comes a period which should be discarded. (This should +be done in the \BibTeX{} style, but nevertheless\,\dots) + +Later we will look for the things which would not be needed, but make +life easier. + + +\sect Before we start we declare some shorthands for category codes. +By declaring the underscore~`(|_|)' as letter we can use it in our +macros. (I agree with {\sc D.~Knuth} that +|\identifier_several_words_long| is more readable than +|\IdentifierSeveralWordsLong| and in every case better than +|\p@@@s|.) As this is a \LaTeX{} style option the at sign is a letter +anyhow; so we can use the ``private'' Plain and \LaTeX{} macros; and +with the underscore we can make our own macros more readable. But as +we have to restore this category code at the end of this macro file +we store its former value in the control sequence |\uscode|. This +method is better than to use a group because not all macros have to +be defined global this way. + +\beginprog +\chardef\escape=0 +\chardef\open=1 +\chardef\close=2 +\chardef\letter=11 +\chardef\other=12 +%\chardef\active=13 % is defined in Plain already + +\chardef\uscode=\catcode`\_ % top level macro file! + +\catcode`\_=\letter +\endprog + + +\sect Another care activity is needed: Users of the New Font +Selection Scheme (NFSS) will perhaps change the fonts in an +unexpected manner. \LaTeX{} since December~1991 (and, of course, NFSS +itself) provides the macro |\reset@font| to reset the font selection +stuff to a defined state. Since this style might be used with older +\LaTeX{} versions (e.g., with I\LaTeX{}) we will provide this macro. + +\beginprog +\ifx \reset@font\undefined + \let\reset@font\relax +\fi +\endprog + + +\sect Within an entry we use a ragged right margin. To break within an +entry is always difficult and is made easier in this way. After all, +the open format we use gives a ragged impression anyhow. Within an +entry we dissallow page breaks and we do not treat periods as full +stops. + +\beginprog +\def\thebibliography#1{% + \description + \rightskip \z@ plus 2em + \interlinepenalty\@M + \sfcode`\.=\@m + } +\let\endthebibliography=\enddescription +\endprog + + +\sect |\bibitem| should look for the next token: If a library info +exists it must go in the same line, otherwise a line break must be +issued. + +But |\bibitem| itself is not of interest, it looks only for the +optional argument. We have to redefine |\@bibitem|. If an +bibliography style like |alpha| is used, |\bibitem| will be supplied +an optional argument. Then it expands to |\@lbibitem|; we will define +this to |\@bibitem| as well -- we ignore the print label supplied by +\BibTeX{}. + +After the argument(s) of |\bibitem| a line end occurs in any case. The +optional |\library| tag will follow on the next line. This means we +first have to gobble the line end char |^^M|, and have to check the +next token afterwards. If this next token is |\library| we will do +nothing since |\library| will itself end the line. Otherwise we do a +line break. Experiments have shown that the dotted line at the start +on every entry helps finding the different entries. + +\beginprog +\def\@lbibitem[#1]{\@bibitem} + +\def\@bibitem#1{% + \item[\tt #1]\leavevmode + \null \dotfill + \begingroup + \obeylines + \afterassignment\prepare_check_library + \let\next % gobble following ^^M + } +\def\prepare_check_library{% + \futurelet\next \check_library + } +\def\check_library{% + \ifx \next\library + \else \break + \fi + \endgroup + } +\endprog + + +\sect We assume that the library info and the cite key will fit into +one line. If this is not true, a two line solution must be set up. + +\beginprog +\def\library#1#2.{% #2 is only needed to gobble the period + \quad {\sf (#1)}\break + } +\endprog + + +\sect A reference is divided into blocks starting with |\newblock|. +Each block shall start a new line, we use |\newline| for this. A +special block is the one with an annotation in it. Since we want to +indent this block once more we must change the parshape. But then we +have to finish the paragraph first. The annotation block starts with +|\annote| and may be easily recognized in this way. + +\beginprog +\def\newblock{% + \futurelet\next \@checkAnnote + } +\def\@checkAnnote{% + \ifx \next\annote + \else \newline + \fi + } +\endprog + + +\sect The annotation is an own paragraph indented by |\leftmargin|. +Since it is not a paragraph in the logical sense we do not insert +vertical glue (i.e., |\parskip|) at the top. The annotation is typeset +in a smaller size. We assume that it consists of full sentences which +might be made up in a proper way. Therefore we don't use a ragged +margin here. + +The change of |\parshape| have to be reset after the group -- these +changes are not local. + +\beginprog +\def\annote{% + \endgraf + \vskip -\parsep + \begingroup + \reset@font\footnotesize + \rightskip \z@skip + \advance\linewidth -\leftmargin + \advance\@totalleftmargin \leftmargin + \parshape \@ne \@totalleftmargin \linewidth + } +\def\endannote#1.{% #1 is only needed to gobble the period + \endgraf + \endgroup + \parshape \@ne \@totalleftmargin \linewidth + } +\endprog + + +\sect In our files |\cite| will print the cite key in typewriter with +a framed box around. In fact, |\cite| expands to |\@citex|, which has +an optional argument. The flag |@tempswa| shows if this optional +argument is there. + +\beginprog +\def\@citex[#1]#2{\fbox{{\tt #2}\if@tempswa , #1\fi}} +\endprog + + + + +\sect Bells and Whistles. + +Since the task we want to support most is the print of complete +\BibTeX{} databases with the |biblist| bibliography style, we supply +appropriate |\nocite| and |\bibliographystyle| tags, if they are +missing. The |\bibliography| command shall create a heading as well. + +Furthermore we set up a headline. + + +\sect First the original meanings of the to-be-redefined control +sequences are saved. We define two macros which will issue the +default tags given above. These macros are not private, but +protected; a knowing user may redefine the `default bibliography +style' in this way. + +\beginprog +\let\@@nocite=\nocite +\let\@@bibliographystyle=\bibliographystyle +\let\@@bibliography=\bibliography + +\def\AddNocite{\nocite{*}} +\def\AddBibliographystyle{\bibliographystyle{biblist}} +\endprog + + +\sect If |\nocite| or |\bibliographystyle| is issued, the default +tags are discarded, the original meaning is restored, and the control +sequence is reissued again. + +\beginprog +\def\nocite{% + \let\AddNocite\relax + \let\nocite\@@nocite + \nocite + } +\def\bibliographystyle{% + \let\AddBibliographystyle\relax + \let\bibliographystyle\@@bibliographystyle + \bibliographystyle + } +\endprog + + +\sect The |\bibliography| tag will first issue the missing default +tags, will produce a heading afterwards, will setup the headline, and +will create the bibliography itself. For the heading we use |\refname| +which should be available -- either because the new \LaTeX{}, +I\LaTeX{}, or the {\sf babel} system is used. + +\beginprog +\def\bibliography#1{% + \AddNocite + \AddBibliographystyle + \section*{\refname}% + \mark_for_headline{#1}% + \@@bibliography{#1}% + } +\endprog + + +\sect The headline will consist of the database names given in the +|\bibliography| tag and the current date. We ignore the database name +|abbrev|, since this name is used for |@string| definitions at our +site. + +We do not issue a warning of no file name is given -- this will be +done by |\@@bibliography|. When a file name exists a comma and a +space will be prepended at the very beginning of |\bib_list|. The +comma is discarded after the loop. But when there was no file name +|\bib_list| will expand to an empty list, we supply a |\relax| as a +catch-up argument for |\@gobble|. + +\beginprog +\def\AbbrevFileName{abbrev} + +\def\mark_for_headline#1{% + \def\bib_list{}% + \@for \bib_file :=#1\do {% + \ifx \bib_file\AbbrevFileName + \else \edef\bib_list{\bib_list, \bib_file.bib}% + \fi + }% + \edef\bib_list{\expandafter\@gobble\bib_list \relax}% + \markboth{{\reset@font\tt \bib_list}}{{\reset@font\tt \bib_list}}% + } + +\def\@oddhead{\reset@font\rm \hfil \leftmark \quad (\today)} +\def\@evenhead{\reset@font\rm (\today)\quad \ignorespaces \rightmark \hfil} +\endprog + + +\sect We must restore our catcode and are finished. + +\beginprog +\catcode`\_=\uscode + +\endinput +\endprog + + + + +\end{document} -- cgit v1.2.3