summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/cell
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/cell
Initial commit
Diffstat (limited to 'macros/latex/contrib/cell')
-rw-r--r--macros/latex/contrib/cell/README12
-rw-r--r--macros/latex/contrib/cell/cell.bst1468
-rw-r--r--macros/latex/contrib/cell/cell.sty108
3 files changed, 1588 insertions, 0 deletions
diff --git a/macros/latex/contrib/cell/README b/macros/latex/contrib/cell/README
new file mode 100644
index 0000000000..b94974b5a0
--- /dev/null
+++ b/macros/latex/contrib/cell/README
@@ -0,0 +1,12 @@
+for the journal Cell
+http://www.cell.com/
+cell.bst
+cell.sty
+
+ Dr. Thomas D. Schneider
+ National Institutes of Health
+ schneidt@mail.nih.gov
+ toms@alum.mit.edu (permanent)
+ http://alum.mit.edu/www/toms
+
+(public domain)
diff --git a/macros/latex/contrib/cell/cell.bst b/macros/latex/contrib/cell/cell.bst
new file mode 100644
index 0000000000..7ed95f6957
--- /dev/null
+++ b/macros/latex/contrib/cell/cell.bst
@@ -0,0 +1,1468 @@
+% (changes from apalike to cell by Tom Schneider are public domain.)
+%
+% BibTex `cell' bibliography style
+% version = 1.28 of cell.bst 2009 Jul 21
+% 2009 Jul 21, 1.28 upgrade documentation
+% 2009 Jul 13, 1.27 suppress notes in article
+% 2009 Jul 11, 1.26 upgrade to modern cell: &->and, give titles, \emph{vol}
+% 1994 Oct 15, 1.25 from version = 1.27 of jmb.bst 1992 October 22
+
+% This bibliography style is for the journal Cell.
+% http://www.cell.com/
+
+% Dr. Thomas D. Schneider
+% National Institutes of Health
+% schneidt@mail.nih.gov
+% toms@alum.mit.edu (permanent)
+% http://alum.mit.edu/www/toms
+
+% previous history:
+%
+% conversion from JMB to Cell by:
+% changing emphasis to roman (\em to \rm)
+% bold face to roman (\bf to \rm) (on volume)
+% making the volume be italics
+% removing the comma after the journal name
+%
+% Thomas Schneider
+% National Cancer Institute
+% Laboratory of Mathematical Biology
+% Frederick, Maryland 21702-1013
+% toms@ncifcrf.gov
+%
+% This file is available by anonymous ftp from ncifcrf.gov in pub/delila.
+%
+% TITLES can be turned on and off!
+% Just nocite the reference TitlesOn in the paper (i.e. \nocite{TitlesOn})
+% and have a bibliography article in your database with that cite key!
+%
+% WARNING: Since I use mostly article, book and inproceedings, these
+% are formatted pretty closely to the Journal of Theoretical Biology style
+% while other things are neglected. Also, I can't guarantee that the style
+% is exactly right.
+%
+% The following documentation is identical from the source of jmb.bst,
+% which was the apalike.bst taken from the Clarkson archive on 1989 June 19.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% BibTeX `apalike' bibliography style (24-Jan-88 version)
+% Adapted from the `alpha' style, version 0.99a; for BibTeX version 0.99a.
+%
+% Copyright (C) 1988, 2010 Oren Patashnik.
+% Unlimited copying and redistribution of this file are permitted as long as
+% it is unmodified. Modifications (and redistribution of modified versions)
+% are also permitted, but only if the resulting file is renamed.
+%
+% Differences between this style and `alpha' are generally heralded by a `%'.
+% The file btxbst.doc has the documentation for alpha.bst.
+%
+% This style should be used with the `apalike' LaTeX style (apalike.sty).
+% \cite's come out like "(Jones, 1986)" in the text but there are no labels
+% in the bibliography, and something like "(1986)" comes out immediately
+% after the author. Author (and editor) names appear as last name, comma,
+% initials. A `year' field is required for every entry, and so is either
+% an author (or in some cases, an editor) field or a key field.
+%
+% Editorial note:
+% Many journals require a style like `apalike', but I strongly, strongly,
+% strongly recommend that you not use it if you have a choice---use something
+% like `plain' instead. Mary-Claire van Leunen (A Handbook for Scholars,
+% Knopf, 1979) argues convincingly that a style like `plain' encourages better
+% writing than one like `apalike'. Furthermore the strongest arguments for
+% using an author-date style like `apalike'---that it's "the most practical"
+% (The Chicago Manual of Style, University of Chicago Press, thirteenth
+% edition, 1982, pages 400--401)---fall flat on their face with the new
+% computer-typesetting technology. For instance page 401 anachronistically
+% states "The chief disadvantage of [a style like `plain'] is that additions
+% or deletions cannot be made after the manuscript is typed without changing
+% numbers in both text references and list." LaTeX sidesteps the disadvantage.
+%
+% History:
+% 15-sep-86 (SK,OP) Original version, by Susan King and Oren Patashnik.
+% 10-nov-86 (OP) Truncated the sort.key$ string to the correct length
+% in bib.sort.order to eliminate error message.
+% 24-jan-88 (OP) Updated for BibTeX version 0.99a, from alpha.bst 0.99a;
+% apalike now sorts by author, then year, then title;
+% THIS `apalike' VERSION DOES NOT WORK WITH BIBTEX 0.98i.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The program was further modified by Tom Schneider:
+%
+% 1989 June 19 (TDS) Renamed jmb.bst. Items that do not have years were
+% listed in the bibliography without identifiers. However, they
+% have identifiers in the text. The identifier was added.
+% Titles were removed :-(.
+%
+% 1989 October 2 (TDS) Made labels in the paper use the & symbol rather
+% than `and', as required by JMB.
+% 1989 October 3 (TDS) Made et~al. be in italics.
+% Removed comma after journal name. (actually, all
+% mid sentence commas go!)
+% Made volume number be bold faced.
+% Converted colon (:) after volume number to a comma (,).
+% If a journal name does NOT end in a period, add
+% a comma after the name.
+% 1989 October 14 (TDS) Without a year the program used to sort on the
+% title. I made it sort on the cite$ if there is no year.
+% 1989 October 18 (TDS) If there is one reference without a year, put
+% an "a" at the end of its label, so that it comes out
+% as (Smith, a) in the text. in FUNCTION {forward.pass}
+% 1989 November 2 (TDS) Unpublished papers now give the title.
+% 1989 November 18 (TDS) TITLES can be turned on and off!
+% Just nocite the reference TitlesOn in the paper
+% and have a bibliography article in your database
+% with that cite key!
+% 1989 December 5 (TDS) I can't stand sorting to fall back on the
+% titles of the article - no control! So in function
+% bib.sort.order the default is now cite$.
+% 1990 November 14 (TDS) Changes to match JTB better:
+% Names in the bibliography are now connected
+% with "\&" instead of "and", since this fits JTB better.
+% "In" is now "In:".
+% "editors" and "editor" are now "eds" and "ed".
+% booktitle follows editors. editors in parenthesis.
+% pp. and p. instead of pages and page.
+% location followed by colon (:) and then publisher.
+% 1992 October 22 (TDS) Publisher address is at the end of books.
+% with no colon after address.
+% no comma before & in name list in bibliography.
+% The extra.label (as the a of 1991a) is emphasized.
+% "In:" goes back to "In"!
+% publisher address is at the end of inproceedings.
+% volume is "vol.", with comma after number.
+% ed.", and comma after ) closing editors.
+% as a colon (:), JMB does NOT want the next
+% ed, but the format.title function uses
+% which leaves it capitalized. To fix this, a
+% place change.case$ must be written.
+%
+% When a title has a colon (:), JMB does NOT want the next
+% word capitalized, but the format.title function uses
+% change.case$, which leaves it capitalized. To fix this, a
+% function to replace change.case$ was written:
+% special.change.case
+%
+% edition should follow TITLE for books!
+
+% possible bug: sorting order probably should be first author followed
+% by year; but this is not absolutely clear. Sorting here is (I think)
+% by all authors (or perhaps the key) then year.
+
+
+ENTRY % declare variables that have a value for each entry on the list
+ { address
+ author
+ booktitle
+ chapter
+ edition
+ editor
+ howpublished
+ institution
+ journal
+ key
+% month not used in apalike
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ volume
+ year
+ }
+ {}
+ { label extra.label sort.label }
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block
+ docomma givetitles }
+
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+ #1 'mid.sentence :=
+ #2 'after.sentence :=
+ #3 'after.block :=
+
+ #0 'docomma := % if it is 0 then don't do commas, otherwise do them.
+}
+
+FUNCTION {init.toggle.switches}
+{% set switches for controlling the output!
+ #0 'givetitles := % if it is 0 then don't give titles, otherwise do them.
+}
+
+STRINGS { s t }
+
+FUNCTION {output.nonnull}
+{ 's :=
+ output.state mid.sentence =
+% "in of output.nonnull" warning$
+
+% % { ", " * write$ } % the comma here is responsible for every comma!
+% % % But JMB doesn't want commas, so away it goes!
+% { " " * write$ } % That does it!
+
+ { % doing a comma is controlled specifically in JMB using docomma
+ docomma #0 =
+ { " " * write$ }
+ { ", " * write$ }
+ if$
+ }
+ { 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
+% "out of output.nonnull" warning$
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.check}
+{ 't :=
+% "in output.check" warning$
+ duplicate$ empty$
+ { t "title" =
+ { pop$ } % jmb ignores titles and does not object if missing
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ if$
+ }
+ 'output.nonnull % block periods
+ % { pop$ } % don't do anything
+ if$
+% "ouT of output.check" warning$
+}
+
+% t "title" =
+% { "zowie" warning$ }
+% { duplicate$ empty$
+% { pop$ "EmPtY " t * " in " * cite$ * warning$ }
+% 'output.nonnull
+% }
+% if$
+% if$
+%}
+
+% apalike needs this function because
+% the year has special punctuation;
+% apalike ignores the month
+FUNCTION {output.year.check}
+{ year empty$
+ {
+ "empty year in " cite$ ", using label: " extra.label * * * warning$
+ write$
+% " (" extra.label * ")" * % TDS UNemphasized label
+
+% zzz here is the problem:
+% extra.label "BLURB" * warning$
+ " ({\rm{" extra.label * "}})" * % TDS emphasized label
+% "BLORB" warning$
+
+ { label "{\rm{" extra.label "}}" * * * 'label :=}
+% "BLUBEL" warning$
+
+ mid.sentence 'output.state :=
+% "BLIP" warning$
+ }
+ { write$
+
+% " (" year * extra.label * ")" * % TDS UNemphasized label
+ " (" year * "{\rm{" extra.label "}}" * * * ")" * % TDS emphasized label
+
+ mid.sentence 'output.state :=
+ }
+ if$
+% "POW" warning$
+}
+
+FUNCTION {output.bibitem}
+{ newline$
+ "\bibitem[" write$
+ label write$
+ "]{" 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.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+ { pop$ "" }
+ 'skip$
+ if$
+}
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "{\rm " swap$ * "}" * }
+ if$
+}
+
+INTEGERS { nameptr namesleft numnames }
+
+FUNCTION {format.names}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ 't := % last name first
+ nameptr #1 >
+ { namesleft #1 >
+ { ", " * t * }
+ { numnames #2 >
+% { "," * } % remove this comma TDS
+ { " " * }
+ 'skip$
+ if$
+ t "others" =
+ { " {\rm et~al.}" * }
+ %{ " \& " * t * }
+ % 2009 Jul 11: return to 'and'
+ { " and " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {format.authors}
+{ author empty$
+ { "" }
+ { author format.names }
+ if$
+}
+
+FUNCTION {format.key} % this function is just for apalike
+{ empty$
+ { key field.or.null }
+ { "" }
+ if$
+}
+
+FUNCTION {format.editors}
+{ editor empty$
+ { "" }
+ { editor format.names
+ editor num.names$ #1 >
+ { ", eds" * } % TDS
+ { ", ed." * } % TDS
+ if$
+ }
+ if$
+}
+
+FUNCTION {special.change.case}
+% change the entire string to lower case except
+% for the first letter and things inside {}
+% That is, force the first letter after a colon (:) to be lower case
+% but otherwise use the change.case$ rules.
+{
+% title "t" change.case$ % TDS this line was the original method
+
+% start with the first letter of the title, hang on stack
+title #1 #1 substring$
+
+% unearth this to see the breakpoint
+%"|---|" *
+
+% take the title, change to entire lower case.
+title "l" change.case$
+
+% take from second position of lowered title to end of title
+#2
+global.max$
+substring$
+
+% concatenate first letter to rest of title
+*
+}
+
+FUNCTION {format.title}
+{ title empty$
+ { "" }
+ { % decide whether to give the title or not
+% givetitles #1 =
+%% { title "t" change.case$ } % produce the title % TDS original function
+% { special.change.case } % produce the title
+% { title pop$ "" } % don't produce the title
+% if$
+% 2009 Jul 11: give the title for Cell now
+ title
+ }
+ 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.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 % TDS
+ { "vol." volume "," * tie.or.space.connect % made vol.
+ series empty$
+ 'skip$
+ { " of " * series emphasize * }
+ if$
+% "volume and number" number either.or.check % TDS
+ "vol. and num." number either.or.check % made vol.
+ }
+ 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.pages}
+{ pages empty$
+ { "" }
+ { pages multi.page.check
+ { "pp." pages n.dashify tie.or.space.connect } % TDS
+ { "p." pages tie.or.space.connect } % TDS
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.vol.num.pages}
+% { "{\rm " volume "}" * * field.or.null % make volume bold face
+{ "\emph{" volume "}" * * field.or.null % make volume italics 2009 jul 11
+
+% cell does not take numbers
+% number empty$
+% 'skip$
+%% { " (" number * ")" * *
+% { " ({\em " number "\/}" * * ")" * * % CELL IS ITALICS
+%% zzz
+% volume empty$
+% { "there's a number but no volume in " cite$ * warning$ }
+% 'skip$
+% if$
+% }
+% if$
+
+ pages empty$
+ 'skip$
+ { duplicate$ empty$
+ { pop$ format.pages }
+% { ":" * pages n.dashify * } % no more colons after the volume
+ { ", " * pages n.dashify * } % comma's instead
+ 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 * } % TDS
+ { "In " booktitle emphasize * ", " * % That's the comma after the title
+ "(" format.editors ")," * * * } % TDS
+ if$
+ }
+ 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}
+{ "In" % this is for apalike % TDS
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.book.crossref}
+{ volume empty$
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ "In " % TDS
+ }
+ { "Volume" volume tie.or.space.connect
+ " of " *
+ }
+ if$
+ "\cite{" * crossref * "}" * % this is for apalike
+}
+
+FUNCTION {format.incoll.inproc.crossref}
+{ "In" % this is for apalike % TDS
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION {article}
+{
+ cite$ "TitlesOn" =
+ 'skip$ % Don't write out an article of this kind, it's a toggle switch!
+ {
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % special for
+% "===> about to" warning$
+ output.year.check % apalike
+% "===> after it" warning$
+ new.block
+% yyy
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { % figure out the last character of the journal name.
+ % "<<" journal #-1 #1 substring$ ">>" * * % for testing
+ % "<" journal ">" * * % this works ok % for testing
+
+ journal #-1 #1 substring$ "." =
+ { journal } % journal ended in period so don't do anything
+% { journal ", " *} % journal ended without period, so add comma
+ { journal " " *} % journal ended without period, so add comma NONE FOR CELL
+ if$
+ emphasize "journal" output.check
+
+% journal * emphasize "journal" output.check % the original method
+
+ format.vol.num.pages output
+ }
+ { format.article.crossref output.nonnull
+ format.pages output
+ }
+ if$
+% new.block % 2009 jul 13: suppress notes
+% note output % 2009 jul 13: suppress notes
+ fin.entry
+ }
+ if$
+}
+
+FUNCTION {book}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check
+ editor format.key output
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ output.year.check % special for apalike
+ new.block
+ format.btitle "title" output.check
+ #1 'docomma := % TURN COMMAS ON FOR JMB
+ crossref missing$
+ {
+ format.bvolume output
+ new.block
+ format.number.series output
+ format.edition output % TDS JMB position for edition
+% new.sentence
+% #0 'docomma := % no comma after address
+% address ":" * output % TDS
+ publisher "publisher" output.check % TDS
+% #1 'docomma := % comma back on
+% publisher "publisher" output.check
+% address output
+ address output % TDS - no colon!
+ }
+ { new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+% format.edition output % TDS original position of edition
+ new.block
+ note output
+ fin.entry
+ #0 'docomma := % TURN COMMAS OFF
+}
+
+FUNCTION {booklet}
+{ output.bibitem
+ format.authors output
+ author format.key output % special for
+ output.year.check % apalike
+ new.block
+ format.title "title" output.check
+ new.block
+ howpublished output
+ address output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check
+ editor format.key output
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ output.year.check % special for apalike
+ 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
+ #0 'docomma := % no comma after address
+ address ":" * output % TDS
+ publisher "publisher" output.check % TDS
+ #1 'docomma := % comma back on
+% 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
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output % special for
+ output.year.check % apalike
+ 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.incoll.inproc.crossref output.nonnull
+ format.chapter.pages output
+ }
+ if$
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {inproceedings}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output % special for
+ output.year.check % apalike
+ new.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ {
+% #1 'docomma := % TURN COMMAS ON FOR JMB, BUT NOT FOR JTB: inconsistent. TDS NOW
+ format.in.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.pages
+ pages empty$
+ { output }
+ { "," * output } % TDS toss in comma instead of period
+ if$
+
+% address output % TDS address is below for JTB
+% new.sentence % TDS remove period
+ organization output
+ #0 'docomma := % NO COMMA AFTER ADDRESS
+ publisher "publisher" output.check % TDS
+ #1 'docomma := % comma back on
+
+% publisher output % are simpler
+ address output % TDS
+ #0 'docomma := % TURN COMMAS OFF
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {manual}
+{ output.bibitem
+ format.authors output
+ author format.key output % special for
+ output.year.check % apalike
+ new.block
+ format.btitle "title" output.check
+ organization address new.block.checkb
+ organization output
+ address output
+ format.edition output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output % special for
+ output.year.check % apalike
+ new.block
+ format.title "title" output.check
+ new.block
+ "Master's thesis" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {misc}
+{ output.bibitem
+ format.authors output
+ author format.key output % special for
+ output.year.check % apalike
+ new.block
+ format.title output
+ new.block
+ howpublished output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {phdthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output % special for
+ output.year.check % apalike
+ new.block
+ format.btitle "title" output.check
+ new.block
+ "PhD thesis," format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+ format.editors output
+ editor format.key output % special for
+ output.year.check % apalike
+ new.block
+ format.btitle "title" output.check
+ format.bvolume output
+ format.number.series output
+ address output % for apalike
+ new.sentence % we always output
+ organization output % a nonempty organization
+ publisher output % here
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output % special for
+ output.year.check % apalike
+ new.block
+ format.title "title" output.check
+ new.block
+ format.tr.number output.nonnull
+ institution "institution" output.check
+ address output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output % special for
+% "===> about to unpuBLISH" warning$
+ output.year.check % apalike
+% "===> out of to unpuBLISH" warning$
+ new.block
+% "===> PLEASE PLEASE BE HERE" warning$
+
+% Since format.title is out of commission, the original method won't work:
+% format.title "title" output.check
+% so do the equivalent of the format.title procedure: (TDS)
+ title empty$
+ { "" }
+ { title "t" change.case$ } % produce the title
+ if$
+% "===> perfidity 1" warning$
+ "title" output.check
+% "===> perfidity" warning$
+
+ new.block
+ note "note" output.check
+ fin.entry
+
+% "===> GOlly done" warning$
+}
+
+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 {check.for.titlecommand}
+% go through each entry and see if one of them has the key
+% 'TitlesOn'. If this is found, then do titles!
+% 1989 November 18 TDS
+{
+% "|" label "|" * * write$ newline$ % |Arrhenius {\rm et~al.}, 1986|
+% "|" cite$ "|" * * write$ newline$ % |Arrhenius1986|
+% so cite$ is the thing I want to detect...
+
+ cite$ "TitlesOn" =
+ { % got it!
+% "FOUND TitlesOn" write$ newline$
+ "Titles Will Be Printed" warning$
+ #1 'givetitles := % give titles!
+ }
+ 'skip$
+ if$
+}
+EXECUTE {init.toggle.switches}
+ITERATE {check.for.titlecommand}
+% ***********************************************************
+
+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$
+}
+
+% There are three apalike cases: one person (Jones),
+% two (Jones and de~Bruijn), and more (Jones et~al.).
+% This function is much like format.crossref.editors.
+%
+FUNCTION {format.lab.names}
+{ 's :=
+ s #1 "{vv~}{ll}" format.name$
+ s num.names$ duplicate$
+ #2 >
+ { pop$ " {\rm et~al.}" * }
+ { #2 <
+ 'skip$
+ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " {\rm et~al.}" * }
+ % { " \& " * s #2 "{vv~}{ll}" format.name$ * }
+ % note new use of & rather than `and'. TDS
+ % 2009 jul 11: return to 'and'
+ { " and " * s #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key % apalike uses the whole key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key % apalike uses the whole key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.label}
+{ editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key % apalike uses the whole key, no organization
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {calc.label}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.key.label
+ { type$ "proceedings" =
+ 'editor.key.label % apalike ignores organization
+ 'author.key.label % for labeling and sorting
+ if$
+ }
+ if$
+ ", " % these three lines are
+ * % for apalike, which
+ year field.or.null purify$ #-1 #4 substring$ % uses all four digits
+ *
+ 'label :=
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { nameptr #1 >
+ { " " * }
+ 'skip$
+ if$ % apalike uses initials
+ s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't := % <= here
+ nameptr numnames = t "others" = and
+ { "{\rm 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 {editor.sort}
+{ editor empty$
+ { key empty$
+ { "to sort, need editor or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+% apalike uses two sorting passes; the first one sets the
+% labels so that the `a's, `b's, etc. can be computed;
+% the second pass puts the references in "correct" order.
+% The presort function is for the first pass. It computes
+% label, sort.label, and title, and then concatenates.
+FUNCTION {presort}
+{ calc.label
+ label sortify
+ " "
+ *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.sort
+ { type$ "proceedings" =
+ 'editor.sort
+ 'author.sort
+ if$
+ }
+ if$
+ #1 entry.max$ substring$ % for
+ 'sort.label := % apalike
+ sort.label % style
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE {presort}
+
+SORT % by label, sort.label, title---for final label calculation
+
+STRINGS { last.label next.extra } % apalike labels are only for the text;
+
+INTEGERS { last.extra.num } % there are none in the bibliography
+
+FUNCTION {initialize.extra.label.stuff} % and hence there is no `longest.label'
+{ #0 int.to.chr$ 'last.label :=
+ "" 'next.extra :=
+ #0 'last.extra.num :=
+}
+
+FUNCTION {forward.pass}
+% pass through the references forward
+{
+%"\\ label=" label "//" * * write$ newline$ % display the label
+%"\\last.label=" last.label "//" * * write$ newline$ % display the label
+
+ last.label label = % if the label repeats the previous label...
+ { % then increment the extra number
+ last.extra.num #1 + 'last.extra.num :=
+ % and convert it to a label
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { % else set things up for the next entry
+ "a" chr.to.int$ 'last.extra.num :=
+
+ % However, if the year was missing, tack on an extra "a". TDS
+ year empty$
+ {"a" 'extra.label :=}
+ {"" 'extra.label :=}
+ if$
+
+% "" 'extra.label := % the original method was not to do anything TDS
+
+ label 'last.label := % capture this label for next time
+ }
+ if$
+%"\\extra.label = " extra.label "//" * * write$ newline$ % display the label
+}
+
+FUNCTION {reverse.pass}
+% pass through the references backwards
+% add extra characters to the end of the label string
+{
+%"{{" label "}}" * * write$ newline$ % display the label
+ next.extra "b" =
+% original logic:
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+
+% next.extra "b" = { "next.extra was = b" write$ newline$} 'skip$ if$
+
+% new as of 1989 Oct 18
+% { "a" 'extra.label := }
+% { % Put on an "a" at the end of the label if the year is missing. TDS
+% year empty$
+% { "a" 'extra.label := }
+% %{ label "a" * 'label := }
+% 'skip$ % otherwise leave it alone (orignial method)
+% if$ }
+% if$
+
+% label extra.label * 'label := % TDS ORIGINAL LABEL METHOD
+
+% stick {\rm } around extra.label if it's not empty TDS
+ extra.label "" =
+ 'skip$
+ { label "{\rm{" extra.label "}}" * * * 'label :=}
+ if$
+
+ extra.label 'next.extra :=
+%"{{" label "}}" * * write$ newline$ % display the label
+}
+
+FUNCTION {bib.sort.order}
+% Generate the sort.key$ variables for sorting.
+% The sorting is first on the sort.label (ie, author's name), followed
+% by the year then the title. If there is no year, the cite$ is used.
+{
+ sort.label % this is based on the author name
+ " " * % tack on some space
+% original apa command was to use the year or an empty string:
+% year field.or.null sortify
+%
+% Replace that with the use of the cite$, when there is no year:
+ year duplicate$ empty$
+ {pop$ cite$}
+ 'skip$
+ if$
+
+ * " " * % tack on some space
+
+% I CAN'T STAND SORTING ON TITLE!!! TDS 1989 Dec 5
+% title field.or.null
+% sort.format.title
+% * % attach them together
+ cite$
+ * % use cite$ instead!!
+
+ % note: if there is no year, then the cite$ will override the sorting
+ % on the title. Oh well. Title sorting is sorta (ha ha) awful.
+
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+
+ % The following line helps debug the program. It shows what the sort.key$ is.
+ % "%" sort.key$ * write$ newline$
+}
+
+% Here is the place that the actual executions of the labeling and sorting
+% functions are done.
+
+
+EXECUTE {initialize.extra.label.stuff} % initialize variables
+ITERATE {bib.sort.order} % set up the sorting keys
+SORT % by sort.label, year, title---giving final bibliography order
+% Having sorted NOW we apply the extra letters at the end!
+ITERATE {forward.pass}
+REVERSE {reverse.pass}
+
+FUNCTION {begin.bib}
+{ preamble$ empty$ % no \etalchar in apalike
+ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{}" write$ newline$ % no labels in apalike
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION {end.bib}
+{ newline$
+ "\end{thebibliography}" write$ newline$
+}
+
+EXECUTE {end.bib}
diff --git a/macros/latex/contrib/cell/cell.sty b/macros/latex/contrib/cell/cell.sty
new file mode 100644
index 0000000000..bc5fb1ca8d
--- /dev/null
+++ b/macros/latex/contrib/cell/cell.sty
@@ -0,0 +1,108 @@
+% (changes from apalike to cell by Tom Schneider are public domain)
+%
+% version = 2.03 of cell.sty 2009 Jul 21
+% 2009 Jul 21, 2.03: upgrade documentation
+% 2009 Jul 15, 2.02: no bib indent
+% 2009 Jul 14, 2.01: simplify
+% 2009 Jul 13, 2.00: modernize to match current version of Cell
+% 1998 Mar 3, 1.00: original version of cell.sty
+
+% Dr. Thomas D. Schneider
+% National Institutes of Health
+% schneidt@mail.nih.gov
+% toms@alum.mit.edu (permanent)
+% http://alum.mit.edu/www/toms
+
+% This is a simple style file for the journal Cell.
+% http://www.cell.com/
+
+% change commas to semicolons between references in text:
+% \RequirePackageWithOptions[nosort,nocompress]{cite} % crashes
+\RequirePackage{cite}
+
+% \renewcommand\citepunct{;~}
+\renewcommand\citepunct{;\ } % to allow line breaks in the best place.
+
+% Use parens instead of brackets for \cite
+\renewcommand\citeleft{(}
+\renewcommand\citeright{)}
+
+% no label in the bibliography
+% \def\@biblabel#1{} % that would indent
+\def\@biblabel#1{\hspace{-\labelsep}} % avoid bib indent
+
+% Thanks for suggestions from Donald Arseneau:
+% http://tug.org/pipermail/texhax/2009-July/012892.html
+
+% ******************************************************************************
+
+% old history:
+% cell.sty is the same as jmb.sty,
+% which is identical to apalike.sty 1989 June 19
+%
+% apalike.sty notice:
+%
+% Copyright (C) 1986, 1987, 2010 Oren Patashnik.
+% Unlimited copying and redistribution of this file are permitted as long as
+% it is unmodified. Modifications (and redistribution of modified versions)
+% are also permitted, but only if the resulting file is renamed.
+%
+% apalike.sty style, used in conjunction with apalike.bst,
+% will produce an apa-like bibliography style:
+%
+% 1) Bibliography entries formatted alphabetically, last name
+% first, each entry having a hanging indentation and no label.
+% 2) References in the following formats:
+% (Author, 1986)
+% (Author and Author, 1986)
+% (Author et al., 1986).
+% 3) Multiple references in the form (Author1, 1986; Author2, 1987)
+%
+% To be used as an optional argument to the \documentstyle command; for example
+% \documentstyle[11pt,apalike]{book}
+%
+% 16-Sep-86, original version by Susan King and Oren Patashnik.
+% 13-Oct-87 changes:
+% Fixed bug in last line by adding the {} that disappeard when
+% the \hbox{} was removed from the pre-APALIKE definition;
+% added club and widow penalties;
+% patched the \newblock LaTeX bug from `-.07em' to simply `.07em';
+% and made this work for document styles that don't define `chapter'.
+
+% 2009 Jul 13
+% OLD CODE:
+
+% 2009 jul 13: bibliography does not hang in cell anymore!
+% Set length of hanging indentation for bibliography entries
+%
+%\newlength{\bibhang}
+%\setlength{\bibhang}{2em}
+%
+% \thebibliography environment depends on whether or not `chapter's can exist
+%
+%\@ifundefined{chapter}{\def\thebibliography#1{\section*{References\@mkboth
+% \@ifundefined{chapter}{\def\thebibliography#1{\section*{{\bf References}\@mkboth
+% {REFERENCES}{REFERENCES}}\list
+% {\relax}{\setlength{\labelsep}{0em}
+% \setlength{\itemindent}{-\bibhang}
+% \setlength{\leftmargin}{\bibhang}}
+% \def\newblock{\hskip .11em plus .33em minus .07em}
+% \sloppy\clubpenalty4000\widowpenalty4000
+% \sfcode`\.=1000\relax}}%
+% {\def\thebibliography#1{\chapter*{Bibliography\@mkboth
+% {BIBLIOGRAPHY}{BIBLIOGRAPHY}}\list
+% {\relax}{\setlength{\labelsep}{0em}
+% \setlength{\itemindent}{-\bibhang}
+% \setlength{\leftmargin}{\bibhang}}
+% \def\newblock{\hskip .11em plus .33em minus .07em}
+% \sloppy\clubpenalty4000\widowpenalty4000
+% \sfcode`\.=1000\relax}}
+
+% `; ' goes between cites, and there's no \hbox around individual cites
+%
+% \def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
+% \def\@citea{}\@cite{\@for\@citeb:=#2\do
+% {\@citea\def\@citea{; }\@ifundefined
+% {b@\@citeb}{{\bf ?}\@warning
+% {Citation `\@citeb' on page \thepage \space undefined}}%
+% {\csname b@\@citeb\endcsname}}}{#1}}