%D \module %D [ file=bibl-apa, %D version=2004.7.16, %D title=APA bibliography style, %D subtitle=Publications, %D author={Taco Hoekwater}, %D date=\currentdate, %D copyright={Public Domain}] %C %C (Slightly modified to SSA-like 2005.3.24, David Wooten) %C Donated to the public domain. Use at your own risk \unprotect \setupcite [author,year] [\c!andtext={ and }, \c!otherstext={ et al.}, \c!pubsep={, }, \c!lastpubsep={ and }, \c!compress=\v!no, \c!inbetween={ }, \c!left={(}, \c!right={)}] \setupcite [authoryear] [\c!andtext={ and }, \c!otherstext={ et al.}, \c!pubsep={, }, \c!lastpubsep={ and }, \c!compress=\v!yes, \c!inbetween={ }, \c!left={(}, \c!right={)}] \setupcite [authoryears] [\c!andtext={ and }, \c!otherstext={ et al.}, \c!pubsep={, }, \c!lastpubsep={ and }, \c!compress=\v!yes, \c!inbetween={, }, \c!left={(}, \c!right={)}] \setupcite [key,serial,authornum,page,short,type,doi,url] [\c!andtext={ and }, \c!otherstext={ et al.}, \c!pubsep={, }, \c!lastpubsep={ and }, \c!compress=\v!no, \c!inbetween={ }, \c!left={[}, \c!right={]}] \setupcite [num] [\c!andtext={ and }, \c!otherstext={ et al.}, \c!pubsep={, }, \c!lastpubsep={ and }, \c!compress=\v!yes, \c!inbetween={--}, \c!left={[}, \c!right={]}] \setuppublications[% \c!sorttype=, \c!criterium=, \c!refcommand=authoryears, \c!numbering=\v!no, \c!autohang=\v!no] \setuppublicationlist [\c!width=24pt, \c!artauthor=\toggledauthor, %TH \c!editor=\toggledauthor, \c!author=\toggledauthor, \c!namesep={, }, \c!lastnamesep={ and }, \c!finalnamesep={ and }, \c!firstnamesep={, }, \c!juniorsep={ }, \c!vonsep={ }, \c!surnamesep={, }, \c!authoretallimit=5, \c!editoretallimit=5, \c!artauthoretallimit=5, \c!authoretaldisplay=5, \c!editoretaldisplay=5, \c!artauthoretaldisplay=5, \c!authoretaltext={ et al.}, \c!editoretaltext={ et al.}, \c!artauthoretaltext={ et al.}, ] \def\maybeyear#1{#1} \def\etalchar#1{#1} %D \macros {invertedauthor,normalauthor,toggledauthor} %D %D These are redefinitions of the core versions. \def\invertedauthor#1#2#3#4#5% {\bibdoif{#2}{#2\bibalternative\c!vonsep}% \uppercased{#3}\bibalternative\c!surnamesep \bibdoif{#5}{#5\bibalternative\c!juniorsep}% \bibdoif{#1}{#1\unskip}} \def\normalauthor#1#2#3#4#5% {\bibdoif{#1}{#1}\bibdoif{#2}{#2 } \uppercased{#3}% \bibdoif{#5}{#5\unskip}} %TH %D The \type{\scratchcounter} is incremented by \specialbibinsert %D before each author/editor is typeset, so the only thing that needs %D doing is testing its value to decide which of the two `standard' %D author formatting macros to call. %D %D The \type{\normalauthor} definition above is a bit altered/stripped %D down, because the 'glue items' like \type{firstnamesep} got in the %D way. \def\toggledauthor#1#2#3#4#5% {\relax \ifnum \scratchcounter > 1 \normalauthor{#1}{#2}{#3}{#4}{#5}% \else \invertedauthor{#1}{#2}{#3}{#4}{#5}% \fi } %TH %D Below, each \type{\setuppublicationlayout} macro's body will %D start by setting a global toggle to true, that controls whether %D or not the next \type{\insertartauthors},\type{\insertauthors} %D or \type{\inserteditors} has to store it's contents for comparison. %D All three are instances of the generic macro \type{\specialbibinsert}. %D The net result of this trick is that the first typeset block of %D names will be saved, regardless of whether they are book authors, %D article authors, or editors. \newif\ifsetstoredauthor %D save the normal meaning, because it will be redefined \let\normalspecialbibinsert\specialbibinsert %D This is a typical call (use) of \type{\specialbibinsert}, for %D reference: %D \starttyping %D \specialbibinsert{author}{\author@num}{}{}{} %D \stoptyping \def\specialbibinsert#1#2#3#4#5% {\relax \ifsetstoredauthor \global\setstoredauthorfalse % RESET \putcurrentinallstuff{#1}{#2}% \ifx\allstuff\oldstuff % do nothing \else \normalspecialbibinsert{#1}{#2}{#3}{#4}{#5}% \fi \global\let\oldstuff\allstuff \else \normalspecialbibinsert{#1}{#2}{#3}{#4}{#5}% \fi} %D initialize \type{\oldstuff} \def\oldstuff{} %D \#1 = authors %D \#2 = \type{\author@num} \def\putcurrentinallstuff#1#2% {{\gdef\allstuff{}% \def\tempx##1##2##3##4##5% {\xdef\allstuff{\allstuff !!##1!##2!##3!##4!##5}}% \@EA\dorecurse\@EA{#2}% {\@EA\@EA\@EA\tempx \csname @@pb@#1\recurselevel\endcsname}% }} %D \macros{insertchapter,insertpublisher} %D Some shortcuts. % ((#1(type\ |)chapter#2)|#3) \def\insertchap#1#2#3% {\insertchapter {#1\insertbibtype{}{\ }{chapter\ }}{#2}% {#3}} \def\insertpublisher#1#2#3% {\insertpubname {#1}{\insertcity {, } {\insertcountry{, }{}{#2}}% {\insertcountry{, }{}{#2}}}% {\insertcity {}{\insertcountry{, }{}{#2}}% {\insertcountry{#1}{#2}{#3}}}% } \setuppublicationlayout[article]{% %TH all items below do this as well ... \global\setstoredauthortrue \insertartauthors{}{.}{\insertthekey{}{ }{}}\hfill\break% \insertpubyear{}{. }{\unskip.}% \insertarttitle{\bgroup ``}{\egroup'', }{ }% \insertjournal{\bgroup in \it}{\egroup} {\insertcrossref{in }{}{}}% \insertvolume {, } {\insertissue{(}{)}{}\insertpages{:}{.}{.}} {\insertpages{, pages }{.}{.}}% \insertnote{ }{.}{}% \insertcomment{}{.}{}% } \newif\ifeditedbook \setuppublicationlayout[book]{% \global\setstoredauthortrue \insertauthors{}{.}{\inserteditors{}{, editor% \ifnum\getvalue{editor@num}> 1 s\fi \ \global\editedbooktrue }{\insertthekey{}{. }{}}}\hfill\break% \insertpubyear{}{. }{\unskip.}% \inserttitle {\bgroup\it }% {\/\egroup \ifeditedbook \global\editedbookfalse \insertvolume { Number~}% {\insertseries { in~\bgroup}% {\egroup. }% {\insertcrossref{ in~}{}{. }}}% {\insertseries{ }{.}{} }% \else \insertcrossref {\insertchap{, }{}{}% \insertpages{, pages }{. }{. }% \insertvolume{Volume~}{ of~}{}% }% {}% {\insertvolume {, volume~}% {\insertseries { of~\bgroup\it}% {\egroup} {}} {}% \insertchap{, }{}{}% \insertpages{, pages }{. }{. }% }% \fi}% { }% \insertpublisher {}% {\insertedition{, }{ edition. }{}}% {\insertedition{, }{ edition. }{}}% \insertpages{}{p. }{}% \insertnote{ }{.}{}% } \setuppublicationlayout[inbook]{% \global\setstoredauthortrue \insertauthors{}{ }{\inserteditors{}{, editor% \ifnum\getvalue{editor@num}> 1 s\fi \ \global\editedbooktrue }{\insertthekey{}{. }{}}}\hfill\break% \insertpubyear{}{. }{\unskip.}% \inserttitle {\bgroup\it }% {\/\egroup \ifeditedbook \global\editedbookfalse \insertvolume { number~}% {\insertseries { in~\bgroup}% {\egroup. }% {\insertcrossref{ in~}{}{. }}}% {\insertseries{ }{.}{} }% \else \insertcrossref {\insertchap{, }{}{}% \insertpages{, pages }{. }{. }% \insertvolume{Volume~}{ of~}{}% }% {}% {\insertvolume {, volume~}% {\insertseries { of~\bgroup\it}% {\egroup} {}} {}% \insertchap{, }{}{}% \insertpages{, pages }{. }{. }% }% \fi}% { }% \insertpublisher {}% {\insertedition{, }{ edition. }{. }}% {\insertedition{, }{ edition. }{}}% \insertnote{ }{.}{}% } \setuppublicationlayout[booklet]{% \global\setstoredauthortrue \insertauthors{}{ }{\insertthekey{}{. }{}}\hfill\break% \insertpubyear{}{. }{}% \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}% \insertpublisher {}% {\insertedition{, }{ edition. }{. }}% {\insertedition{, }{ edition. }{}}% \insertpages{}{p. }{}% \insertnote{ }{.}{}% } \setuppublicationlayout[manual]{% \global\setstoredauthortrue \insertauthors{}{ }{\insertthekey{}{. }{}}\hfill\break% \insertpubyear{}{. }{}% \inserttitle{\bgroup \it }{\/\egroup \insertseries{ (}{)}{}. }{}% \insertorganization {}% {\insertcity{, }% {\insertedition{, }{ edition. }{. }}% {\insertedition{, }{ edition. }{. }}}% {\insertedition{, }{ edition. }{}}% \insertpages{}{p. }{}% \insertnote{ }{.}{}% } \setuppublicationlayout[incollection]{% \global\setstoredauthortrue \insertartauthors{}{ }{\insertthekey{}{. }{}}\hfill\break% \insertpubyear{}{. }{}% \insertarttitle{\bgroup }{\egroup. }{}% \inserttitle {In \inserteditors{}% {, editor\ifnum\getvalue{editor@num}> 1 s\fi, }% {}% \bgroup\it}% {\egroup \insertseries {\insertvolume{, number }{~in }{ }}% {}% {}% \insertchap{\unskip, }{ }{ }% \insertpages{\unskip, pages~}{. }{\unskip. }% \insertpublisher {}% {\insertedition{, }{ edition. }{. }}% {\insertedition{, }{ edition. }{}}% }% {In \insertcrossref{}{}{}% \insertchap{\unskip, }{ }{ }% \insertpages{\unskip, pages~}{. }{\unskip. }% }% \insertnote{ }{.}{}% } \setuppublicationlayout[inproceedings]{% \global\setstoredauthortrue \insertauthors{}{ }{}\hfill\break% \insertpubyear{}{. }{}% \insertarttitle{\bgroup }{\egroup. }{}%% \inserttitle {In \inserteditors{}% {, editor\ifnum\getvalue{editor@num}> 1 s\fi, }% {}% \bgroup\it}% {\egroup \insertseries {\insertvolume{, number }{~in }{ }}% {}% {}% \insertchap{\unskip, }{ }{ }% \insertpages {\unskip, pages~} {\insertcity{, }{. }{. }} {\unskip. }% \insertorganization {}% {\insertpubname{, }{. }{. }}% {\insertpubname{}{. }{}}% was {, }{. }{} }% {In \insertcrossref{}{}{}% \insertchap{\unskip, }{ }{ }% \insertpages{\unskip, pages~}{. }{\unskip. }% }% \insertnote{ }{.}{}% } \setuppublicationlayout[proceedings]{% \global\setstoredauthortrue \inserteditors{}{, editor% \ifnum\getvalue{editor@num}> 1 s\fi \ \global\editedbooktrue }{\insertthekey{}{ }{}}\hfill\break% \insertpubyear{}{. }{}% \inserttitle {\bgroup\it}% {\egroup \insertseries {\insertvolume{, number }{~in }{ }}% {}% {}% \insertchap{\unskip, }{ }{ }% \insertpages{\unskip, pages~}{\insertcity{, }{. }{. }} {\unskip\insertcity{, }{. }{. }}% \insertorganization {}% {\insertpubname{, }{. }{. }}% {\insertpubname{, }{. }{}}% }% {}% \insertnote{ }{.}{}% } \setuppublicationlayout[mastersthesis]{% \global\setstoredauthortrue \insertauthors{}{ }{}\hfill\break% \insertpubyear{}{. }{}% \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}% \insertbibtype{}{, }{Master's thesis, }% \insertpublisher{}{. }{}% \insertpages{}{p. }{}% \insertnote{ }{.}{}% } \setuppublicationlayout[phdthesis]{% \global\setstoredauthortrue \insertauthors{}{ }{}\hfill\break% \insertpubyear{}{. }{}% \inserttitle{\bgroup\it }{\egroup \insertseries{ (}{)}{}. }{}% \insertbibtype{}{, }{PhD thesis, }% \insertpublisher{}{. }{}% \insertpages{}{p. }{}% \insertnote{ }{.}{}% } \setuppublicationlayout[misc]{% \global\setstoredauthortrue \insertauthors{}{ }{\insertthekey{}{. }{}}\hfill\break% \insertpubyear{}{. }{}% \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}. }{}% \insertpublisher{}{. }{}% \insertpages{}{p. }{}% \insertnote{ }{.}{}% } \setuppublicationlayout[techreport]{% \global\setstoredauthortrue \insertauthors{}{ }{}\hfill\break% \insertpubyear{}{. }{}% \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}% \insertbibtype{}{\insertvolume{ }{, }{, }}{Technical Report, }% \insertpublisher{}{. }{}% \insertpages{}{p. }{}% \insertnote{ }{.}{}% } \setuppublicationlayout[unpublished]{% \global\setstoredauthortrue \insertauthors{}{ }{}\hfill\break% \insertpubyear{}{. }{}% \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}% \insertpublisher{}{. }{}% \insertpages{}{p. }{}% \insertbibtype{(}{)}{}% \insertnote{ }{.}{}% } \protect