diff options
Diffstat (limited to 'tex/context/base/mkiv/bibl-bib.mkxl')
-rw-r--r-- | tex/context/base/mkiv/bibl-bib.mkxl | 982 |
1 files changed, 0 insertions, 982 deletions
diff --git a/tex/context/base/mkiv/bibl-bib.mkxl b/tex/context/base/mkiv/bibl-bib.mkxl deleted file mode 100644 index f8a8a7cd9..000000000 --- a/tex/context/base/mkiv/bibl-bib.mkxl +++ /dev/null @@ -1,982 +0,0 @@ -%D \module -%D [ file=bibl-bib, -%D version=2007.08.17, -%D title=\CONTEXT\ Bibliography Support, -%D subtitle=Initialization, -%D author=Hans Hagen \& Taco Hoekwater, -%D date=\currentdate, -%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] -%C -%C This module is part of the \CONTEXT\ macro||package and is -%C therefore copyrighted by \PRAGMA. See mreadme.pdf for -%C details. - -%D This is really obsolete in \LMTX. For now I keep it but it will either go -%D away. The code is not upgraded, we only deal with macro protection. - -\writestatus{loading}{ConTeXt Bibliography Support / Experimental BibTeX} - -\registerctxluafile{bibl-bib}{} - -\unprotect - -% todo: et al limiters -% todo: split: citationvariant and publicationvariant - -%D This interface is under development. As I don't use \BIBTEX\ myself I need some -%D motivation to spend time on it, and an occasional question on the list can be a -%D reason. A few examples. As \BIBTEX\ databases can be poluted by local commands, -%D we need to catch: -%D -%D \startbuffer -%D \defbibtexcommand\MF {MF} -%D \defbibtexcommand\MP {MP} -%D \defbibtexcommand\TUB {TUGboat} -%D \defbibtexcommand\Mc {Mac} -%D \defbibtexcommand\sltt{\tt} -%D \defbibtexcommand\<#1>{\type{#1}} -%D \defbibtexcommand\acro#1{#1} -%D \stopbuffer -%D -%D \typebuffer -%D -%D Let's define a session and load a few databases. We convert to \UTF\ and strip -%D commands. -%D -%D \startbuffer -%D \definebibtexsession [somebibtex] -%D \registerbibtexfile [somebibtex] [tugboat.bib] -%D \registerbibtexfile [somebibtex] [komoedie.bib] -%D \preparebibtexsession [somebibtex] [convert,strip] -%D \stopbuffer -%D -%D \typebuffer -%D -%D This loads an mapping (work in progress): -%D -%D \startbuffer -%D \def\currentbibtexformat{apa} \input bxml-\currentbibtexformat.mkiv -%D \stopbuffer -%D -%D \typebuffer -%D -%D There are several ways to handle the \XML. It helps if you're a bit familiar with -%D \XML\ processing in \MKIV. -%D -%D Here we regular setups. Three elements are mapped but only one is actually used -%D and applied to root element \type {/bibtex}. -%D -%D \startbuffer -%D \startxmlsetups bibtex -%D \xmlregistereddocumentsetups{#1}{} -%D \xmlsetsetup{#1}{bibtex|entry|field}{bibtex:*} -%D \xmlmain{#1} -%D \stopxmlsetups -%D -%D \startxmlsetups bibtex:bibtex -%D \xmlfilter{#1}{ -%D /entry[@category='article'] -%D /field[@name='author' and (find(text(),'Hagen') or find(text(),'Hoekwater'))] -%D /../command(bibtex:format) -%D } -%D \stopxmlsetups -%D -%D \applytobibtexsession[somebibtex][bibtex] -%D \stopbuffer -%D -%D \typebuffer -%D -%D A simpler setup is given next. Here we just apply a setup to the root element -%D directly: -%D -%D \startbuffer -%D \startxmlsetups bibtex:list -%D \xmlfilter{#1}{/bibtex/entry/command(bibtex:format)} -%D \stopxmlsetups -%D -%D \applytobibtexsession[somebibtex][bibtex:list] -%D \stopbuffer -%D -%D \typebuffer -%D -%D A slightly more complex expression: -%D -%D \startbuffer -%D \startxmlsetups bibtex:filter -%D \xmlfilter{#1}{ -%D /bibtex -%D /entry[@category='article'] -%D /field[@name='author' and (find(text(),'Hagen') or find(text(),'Hoekwater'))] -%D /../command(bibtex:format) -%D } -%D \stopxmlsetups -%D -%D \applytobibtexsession[somebibtex][bibtex:filter] -%D \stopbuffer -%D -%D \typebuffer - -\newtoks \everydefinebibtexsession -\newtoks \everypreparebibtexsession -\newtoks \everysetupbibtexsession -\setfalse \tracebibtexformat - -\protected\def\definebibtexsession {\dosingleargument\dodefinebibtexsession} - \def\preparebibtexsession{\dodoubleempty \dopreparebibtexsession} -\protected\def\setupbibtexsession {\dodoubleargument\dosetupbibtexsession} - -\def\dodefinebibtexsession [#1]{\edef\currentbibtexsession{#1}% - \ctxcommand{definebibtexsession("#1")}% - \the\everydefinebibtexsession} - -\def\dopreparebibtexsession[#1][#2]{\edef\currentbibtexsession{#1}% - \ctxcommand{preparebibtexsession("#1","bibtex:#1","#2")}% - \the\everypreparebibtexsession} - -\def\dosetupbibtexsession [#1][#2]{\edef\currentbibtexsession{#1}% - \getparameters[\??pb#1][#2]% - \the\everysetupbibtexsession} - -\def\registerbibtexfile {\dodoubleargument\doregisterbibtexfile} -\def\registerbibtexentry {\dodoubleargument\doregisterbibtexentry} -\def\applytobibtexsession {\dodoubleargument\doapplytobibtexsession} - -\def\doregisterbibtexfile [#1][#2]{\ctxcommand{registerbibtexfile("#1","#2")}} -\def\doregisterbibtexentry [#1][#2]{\ctxcommand{registerbibtexentry("#1","#2")}} -\def\doapplytobibtexsession[#1][#2]{\xmlprocess{bibtex:#1}{#2}{#2}} - -\protected\def\bibtexcommand#1% - {\ifcsname\??pb:c:#1\endcsname \else - \fakebibtexcommand{#1}% - \fi - \csname\??pb:c:#1\endcsname} - -\def\fakebibtexcommand#1% - {\ifcsname#1\endcsname - \writestatus{bibtex}{unknown command: #1, using built-in context variant}% - \setugvalue{\??pb:c:#1}{\dosomebibtexcommand{#1}}% - \else - \writestatus{bibtex}{unknown command: #1}% - \setugvalue{\??pb:c:#1}{\dofakebibtexcommand{#1}}% - \fi} - -\let\dosomebibtexcommand \getvalue -\def\dofakebibtexcommand#1{{\tttf#1}} -\def\defbibtexcommand #1{\setuvalue{\strippedcsname#1}} - -\def\bibxmldoifelse#1{\xmldoifelse\currentbibxmlnode{/field[@name='#1']}} -\def\bibxmldoif #1{\xmldoif \currentbibxmlnode{/field[@name='#1']}} -\def\bibxmldoifnot #1{\xmldoifnot \currentbibxmlnode{/field[@name='#1']}} -\def\bibxmlflush #1{\xmlcontext \currentbibxmlnode{/field[@name='#1']}} -\def\bibxmlsetup {\xmlsetup \currentbibxmlnode} % {#1} - -\def\currentbibtexformat{apa} % how to interface this, maybe split loading and key -\def\currentbibxmlnode {unset} -\def\currentbibxmltag {unset} - -\startxmlsetups bibtex - \xmlregistereddocumentsetups{#1}{} - \xmlsetsetup{#1}{bibtex|entry|field}{bibtex:*} - \xmlmain{#1} -\stopxmlsetups - -\startxmlsetups bibtex:format - \bibtexpublicationsparameter\c!before\relax % prevents lookahead - \edef\currentbibxmlnode {#1} - \edef\currentbibxmltag {\xmlatt{#1}{tag}} - \edef\currentbibxmlcategory{\xmlatt{#1}{category}} - \ifconditional\tracebibtexformat - \tracedbibxmlintro\currentbibxmltag - \tracedbibxmlintro\currentbibxmlcategory - \fi - \ignorespaces - \xmlcommand{#1}{.}{bibtex:\currentbibtexformat:\currentbibxmlcategory} - \removeunwantedspaces - \bibtexpublicationsparameter\c!after\relax % prevents lookahead -\stopxmlsetups - -\startxmlsetups bibtex:list - \xmlfilter{#1}{/bibtex/entry/command(bibtex:format)} -\stopxmlsetups - -\startxmlsetups bibtex:bibtex - \xmlfilter{#1}{/entry/command(bibtex:format)} -\stopxmlsetups - -% formatters - -\let\normalbibxmlflush\bibxmlflush - -\definecolor[bibtextracecolor:field] [darkred] -\definecolor[bibtextracecolor:crossref][darkblue] -\definecolor[bibtextracecolor:key] [darkgreen] - -\def\tracedbibxmlintro #1{{\tttf#1 -> }} -\def\tracedbibxmlflush #1{\color[bibtextracecolor:field] {\tttf[#1]}} -\def\tracedbibxmltexts #1{\color[bibtextracecolor:field] {\tttf<#1>}} -\def\tracedbibxmlcrossref#1{\color[bibtextracecolor:crossref]{\tttf#1}} -\def\tracedbibxmlkey #1{\color[bibtextracecolor:key] {\tttf#1}} - -\def\tracedbibxmltext - {\ifconditional\tracebibtexformat - \expandafter\tracedbibxmltexts % plural - \else - \expandafter\firstofoneargument - \fi} - -\def\bibxmlflush - {\ifconditional\tracebibtexformat - \expandafter\tracedbibxmlflush - \else - \expandafter\normalbibxmlflush - \fi} - -\startxmlsetups bibtex:format:crossref - \ifconditional\tracebibtexformat - \tracedbibxmlcrossref{\xmlfirst\currentbibxmlnode{/field[@name='crossref']/lower()}} - \else - \cite[\xmlfirst\currentbibxmlnode{/field[@name='crossref']/lower()}] - \fi -\stopxmlsetups - -\startxmlsetups bibtex:format:key - \ifconditional\tracebibtexformat - \tracedbibxmlkey{\normalbibxmlflush{key}} - \else - \bibxmlflush{key} - \fi -\stopxmlsetups - -\startxmlsetups bibtex:format:common:author - \ifconditional\tracebibtexformat - \bibxmlflush\currentbibtexvariant - \else - \xmlfilter{#1}{/field[@name='\currentbibtexvariant']/bibtexconcat('\currentbibtexvariant')} - \fi -\stopxmlsetups - -\startxmlsetups bibtex:format:author - \begingroup - \def\currentbibtexvariant{author} - \xmlsetup{#1}{bibtex:format:common:author} - \endgroup -\stopxmlsetups - -\startxmlsetups bibtex:format:artauthor - \begingroup - \def\currentbibtexvariant{artauthor} - \xmlsetup{#1}{bibtex:format:common:author} - \endgroup -\stopxmlsetups - -\startxmlsetups bibtex:format:editor - \begingroup - \def\currentbibtexvariant{editor} - \xmlsetup{#1}{bibtex:format:common:author} - \endgroup -\stopxmlsetups - -\startxmlsetups bibtex:format:doi -% \bibdoifelse{\@@pb@doi}{#1\expanded{\bibgotoDOI{\@@pb@thekey}{\@@pb@doi}}#2}{#3} - *doi* -\stopxmlsetups - -\startxmlsetups bibtex:format:doi -% \bibdoifelse{\@@pb@biburl}{#1\expanded{\bibgotoURL{\@@pb@thekey}{\@@pb@biburl}}#2}{#3} - *url* -\stopxmlsetups - -\startxmlsetups bibtex:format:month -% {\bibdoifelse\@@pb@month -% {#1\doifnumberelse\@@pb@month -% {\doifconversiondefinedelse\@@pbmonthconversion -% {\convertnumber\@@pbmonthconversion\@@pb@month}{\@@pb@month}}% -% {\@@pb@month}#2}% -% {#3} - *month* -\stopxmlsetups - -% lists - -\def\bibtexlistprocessor - {\ctxlua{bibtex.hacks.add(structures.lists.uservalue("\currentlist",\currentlistindex,"bibref"),\currentlistindex)}} - -\appendtoks - \definelist[\currentbibtexsession]% - \setuplist[\currentbibtexsession][\c!state=\v!start,\c!width=]% - \installstructurelistprocessor{\currentbibtexsession:userdata}{\bibtexlistprocessor}% -\to \everydefinebibtexsession - -% \def\installbibtexsorter#1#2% -% {\setvalue{\??pb:\c!sort:#1}{#2}} - -% \installbibtexsorter\v!no {no} -% \installbibtexsorter\v!author {au} -% \installbibtexsorter\v!title {ti} -% \installbibtexsorter\v!short {ab} -% \installbibtexsorter\empty {no} -% \installbibtexsorter\s!default{no} - -% \setupbibtex -% [\c!sorttype=\v!cite, -% \c!sort=no] - -% \protected\def\startpublication#1\stoppublication -% {\blank -% todo -% \blank} - -% \let\stoppublication\relax - -\protected\def\bibtexspace {\removeunwantedspaces\space} -\protected\def\bibtexperiod {\removeunwantedspaces.\space} -\protected\def\bibtexcomma {\removeunwantedspaces,\space} -\protected\def\bibtexlparent {\removeunwantedspaces\space(} -\protected\def\bibtexrparent {\removeunwantedspaces)\space} -\protected\def\bibtexlbracket{\removeunwantedspaces\space[} -\protected\def\bibtexrbracket{\removeunwantedspaces]\space} - -% interfacing - -% todo : lang en language -% todo : directions - -% variables - -\ifdefined\bibtexblock \else \newcount\bibtexblock \fi \bibtexblock\plusone -\ifdefined\bibtexcounter \else \newcount\bibtexcounter \fi - -\newtoks \everysetupbibtexpublications -\newtoks \everysetupbibtexcitations - -\def\bibtexrefprefix{\number\bibtexblock:} - -\let\currentbibtexsession\s!default -\let\currentbibtexvariant\s!default - -% parameters: session+variant variant session shared - -\def\bibtexpublicationsparameter#1% - {\csname - \ifcsname\??pb\currentbibtexsession:\currentbibtexvariant#1\endcsname - \??pb\currentbibtexsession:\currentbibtexvariant#1% - \else\ifcsname\??pb:\currentbibtexvariant#1\endcsname - \??pb:\currentbibtexvariant#1% - \else\ifcsname\??pb\currentbibtexsession#1\endcsname - \??pb\currentbibtexsession#1% - \else\ifcsname\??pb#1\endcsname - \??pb#1% - \else - \s!empty - \fi\fi\fi\fi - \endcsname} - -\def\bibtexcitationparameter#1% - {\csname - \ifcsname\??pv\currentbibtexsession:\currentbibtexvariant#1\endcsname - \??pv\currentbibtexsession:\currentbibtexvariant#1% - \else\ifcsname\??pv:\currentbibtexvariant#1\endcsname - \??pv:\currentbibtexvariant#1% - \else\ifcsname\??pv\currentbibtexsession#1\endcsname - \??pv\currentbibtexsession#1% - \else\ifcsname\??pv#1\endcsname - \??pv#1% - \else - \s!empty - \fi\fi\fi\fi - \endcsname} - -% setup commands - -\protected\def\setupbibtexpublications - {\let\currentpublicationclass\??pb - \let\everysetupbibtexwhatever\everysetupbibtexpublications - \dodoubleargument\dosetupbibtexwhatever} - -\protected\def\setupbibtexcitations - {\let\currentpublicationclass\??pv - \let\everysetupbibtexwhatever\everysetupbibtexcitations - \dodoubleargument\dosetupbibtexwhatever} - -\protected\def\setupbibtexpublicationvariants - {\let\currentpublicationclass\??pb - \let\everysetupbibtexwhatever\everysetupbibtexpublications - \dotripleargument\dosetupbibtexwhatevervariant} - -\protected\def\setupbibtexcitationvariants - {\let\currentpublicationclass\??pv - \let\everysetupbibtexwhatever\everysetupbibtexcitations - \dotripleargument\dosetupbibtexwhatevervariant} - -\def\dosetupbibtexwhatever[#1][#2]% [sessionlist] [setup] - {\ifsecondargument - % sessions setups - \def\dobtxcommand##1{\getparameters[\currentpublicationclass##1][#2]}% - \processcommalist[#1]\dobtxcommand - \else - % setups - \getparameters[\currentpublicationclass][#1]% - \the\everysetupbibtexwhatever - \fi} - -\def\dosetupbibtexwhatevervariant[#1][#2][#3]% [sessionlist] [variantlist] [setup] - {\ifthirdargument - % sessions variants setups - \def\dobtxcommand##1% - {\def\dodobtxcommand####1{\getparameters[\currentpublicationclass##1:####1][#3]}% - \processcommalist[#2]\dodobtxcommand}% - \processcommalist[#1]\docbtxommand - \else\ifsecondargument - % variants setups - \def\dobtxcommand##1{\getparameters[\currentpublicationclass:##1][#2]}% - \processcommalist[#1]\dobtxcommand - \else - % setups - \getparameters[\currentpublicationclass][#1]% - \the\everysetupbibtexwhatever - \fi\fi} - -% some initializations - -\setupbibtexcitationvariants - [author,authoryear,authoryears] - [\c!namesep={, }] - -% loading alternatives (apa etc) - -\def\doloadbibtexpublicationalternative - {\ifproductionrun - \edef\bibtexpublicationsalternative{\@@pbalternative}% parent - \ifx\bibtexpublicationsalternative\empty \else - \processcommacommand[\bibtexpublicationsalternative]\dodoloadbibtexpublicationalternative - \let\@@pbalternative\empty - \fi - \fi} - -\def\dodoloadbibtexpublicationalternative#1% - {\doonlyonce{#1} - {\startreadingfile - \readsysfile{bxml-#1.mkiv} - {\showmessage\m!publications{6}{bxml-#1}} - {\showmessage\m!publications{1}{bxml-#1}}% - \stopreadingfile}} - -\appendtoks - \doloadbibtexpublicationalternative -\to \everysetupbibtexpublications - -% we expect at least one invocation of the setup commands -% because otherwise we always load the apa style even if -% no publications are used -% -% \appendtoks -% \doloadbibtexpublicationalternative -% \to \everystarttext - -% whatever, should be key - -\def\bibtexleftnumber#1{#1\hfill~} - -% testing - -% \showmessage\m!publications{5}{#1 is unknown}\secondoftwoarguments} - -\let\doifbibreferencefoundelse\secondofthreearguments - -% lists - -\newtoks\everysetupbibtexlistplacement - -% this will change as we need it too often .. we will use context.thebibtexnamesep - -\appendtoks - \ctxlua {bibtex.authors.setsettings { - namesep = \!!bs\bibtexpublicationsparameter\c!namesep\!!es, - lastnamesep = \!!bs\bibtexpublicationsparameter\c!lastnamesep\!!es, - finalnamesep = \!!bs\bibtexpublicationsparameter\c!finalnamesep\!!es, - firstnamesep = \!!bs\bibtexpublicationsparameter\c!firstnamesep\!!es, - juniorsep = \!!bs\bibtexpublicationsparameter\c!juniorsep\!!es, - vonsep = \!!bs\bibtexpublicationsparameter\c!vonsep\!!es, - surnamesep = \!!bs\bibtexpublicationsparameter\c!surnamesep\!!es, - namesep = \!!bs\bibtexpublicationsparameter\c!namesep\!!es, - lastnamesep = \!!bs\bibtexpublicationsparameter\c!lastnamesep\!!es, - finalnamesep = \!!bs\bibtexpublicationsparameter\c!finalnamesep\!!es, - author = { - etallimit = \!!bs\bibtexpublicationsparameter\c!authoretallimit\!!es, - etaldisplay = \!!bs\bibtexpublicationsparameter\c!authoretaldisplay\!!es, - etaltext = \!!bs\bibtexpublicationsparameter\c!authoretaltext\!!es, - }, - editor = { - etallimit = \!!bs\bibtexpublicationsparameter\c!editoretallimit\!!es, - etaldisplay = \!!bs\bibtexpublicationsparameter\c!editoretaldisplay\!!es, - etaltext = \!!bs\bibtexpublicationsparameter\c!editoretaltext\!!es, - }, - artauthor = { - etallimit = \!!bs\bibtexpublicationsparameter\c!artauthoretallimit\!!es, - etaldisplay = \!!bs\bibtexpublicationsparameter\c!artauthoretaldisplay\!!es, - etaltext = \!!bs\bibtexpublicationsparameter\c!artauthoretaltext\!!es, - }, - } }% -\to \everysetupbibtexlistplacement - -\def\completebibtexpublications{\dodoubleempty\docompletebibtexpublications} -\protected\def\placebibtexpublications {\dodoubleempty\doplacebibtexpublications} - -\def\docompletebibtexpublications[#1][#2]% title might become obsolete, just headtext - {\begingroup - \edef\currentbibtexsession{#1}% - \let\currentlist\currentbibtexsession - \setuplist[\currentbibtexsession][\c!criterium=\v!previous,#2] - \edef\currentbibtexsessiontitle{\namedlistparameter\currentbibtexsession\c!title}% - \ifx\currentbibtexsessiontitle\empty - \normalexpanded{\startnamedsection[\v!chapter][\c!reference=\currentbibtexsession,\c!title={\headtext{\currentbibtexsession}}]}% - \else - \normalexpanded{\startnamedsection[\v!chapter][\c!reference=\currentbibtexsession,\c!title={\currentbibtexsessiontitle}]}% - \fi - \dodoplacebibtexpublications - \stopnamedsection - \endgroup} - -\def\doplacebibtexpublications[#1][#2]% - {\begingroup - \edef\currentbibtexsession{#1}% - \let\currentlist\currentbibtexsession - \setuplist[\currentbibtexsession][\c!criterium=\v!previous,#2]% - \dodoplacebibtexpublications - \endgroup} - -\def\dodoplacebibtexpublications - {\determinelistcharacteristics[\currentbibtexsession]% - \the\everysetupbibtexlistplacement - \forgetall - \typesetbibtexlist - \global\advance\bibtexblock\plusone} - -\setvalue{\??pb:\c!numbering:\v!short}#1% todo var s -> short tag - {\bibtexlistnumberbox{\bibtexpublicationsparameter\c!numbercommand{\bibtexgetshort\currentpublicationtag}}} - -\setvalue{\??pb:\c!numbering:\v!bib}#1% todo var n -> number - {\bibtexlistnumberbox{\bibtexpublicationsparameter\c!numbercommand{\bibtexgetnumber\currentpublicationtag}}} - -\setvalue{\??pb:\c!numbering:\s!unknown}#1% - {\bibtexlistnumberbox{\bibtexpublicationsparameter\c!numbercommand{#1}}} - -\def\@@pblimitednumber % name - {\csname\??pb:\c!numbering:% - \ifcsname\??pb:\c!numbering:\currentbibtexnumbering\endcsname - \currentbibtexnumbering - \else - \s!unknown - \fi - \endcsname} - -\appendtoks - \edef\currentbibtexnumbering{\bibtexpublicationsparameter\c!numbering}% - \ifx\currentbibtexnumbering\v!no - \setuplist[\currentbibtexsession][\c!numbercommand=,\c!symbol=\v!none,\c!textcommand=\outdented]% - \else - \setuplist[\currentbibtexsession][\c!numbercommand=\@@pblimitednumber]% - \fi -\to \everysetupbibtexlistplacement - -\newdimen\bibtexnumberwidth - -\def\bibtexlistnumberbox{\hbox \ifcase\bibtexnumberwidth\else to \bibtexnumberwidth\fi} - -\appendtoks - \doifelse{\bibtexpublicationsparameter\c!autohang}\v!yes - {\ifx\currentbibtexnumbering\v!short - \setbox\scratchbox\hbox{\bibtexpublicationsparameter\c!numbercommand{\bibtexpublicationsparameter\c!samplesize}}% - \else - \setbox\scratchbox\hbox{\bibtexpublicationsparameter\c!numbercommand{\ctxlua{tex.write(structures.lists.size())}}}% - \fi - \bibtexnumberwidth\wd\scratchbox - \setuplist[\currentbibtexsession][\c!distance=\zeropoint]} - {\doifelsenothing{\bibtexpublicationsparameter\c!width} - {\bibtexnumberwidth\zeropoint} - {\bibtexnumberwidth\bibtexpublicationsparameter\c!width}}% - \setuplist[\currentbibtexsession][\c!width=\bibtexnumberwidth]% -\to \everysetupbibtexlistplacement - -\appendtoks - \let\maybeyear\gobbleoneargument - \let\noopsort \gobbleoneargument -\to \everysetupbibtexlistplacement - -\appendtoks - \doifelse{\bibtexpublicationsparameter\c!maybeyear}\v!off - {\let\maybeyear\gobbleoneargument} - {\let\maybeyear\firstofoneargument}% -\to \everysetupbibtexlistplacement - -\appendtoks - \doifnot{\bibtexpublicationsparameter\c!option}\v!continue - {\global\bibtexcounter\zerocount}% -\to \everysetupbibtexlistplacement - -\appendtoks - \edef\currentbibtexcriterium{\namedlistparameter\currentbibtexsession\c!criterium}% -\to \everysetupbibtexlistplacement - -\def\typesetbibtexlist - {\begingroup - \startpacked[\v!blank]% - \doif{\namedlistparameter\currentbibtexsession\c!criterium}\v!cite - {\setuplist[\currentbibtexsession][\c!criterium=\v!here]}% - \doifelse{\bibtexpublicationsparameter\c!method}\v!local - {\ctxlua{bibtex.hacks.reset(1)}}% function can take method - {\ctxlua{bibtex.hacks.reset(2)}}% - \strc_lists_place_current - {\currentbibtexsession} - {\currentbibtexcriterium} - {}% - {\namedlistparameter\currentbibtexsession\c!extras}% - {\namedlistparameter\currentbibtexsession\c!order}% - \ctxlua{bibtex.hacks.flush("\bibtexpublicationsparameter\c!sorttype")}% - \stoppacked - \endgroup} - -\protected\def\typesetbibtexpublication#1% - {\edef\currentbibtexsessiontag{#1}% - \ifx\currentbibtexsessiontag\empty - % can't really happen - \else\ifx\currentbibtexcriterium\v!all - \dotypesetbibtexpublication % was \doplacepublicationindeed - \else - \ctxlua{bibtex.hacks.doifalreadyplaced("\currentbibtexsessiontag")} - \donothing - \dotypesetbibtexpublication - \fi\fi} - -\def\dotypesetbibtexpublication - {\doifelsebibreferencefound\currentbibtexsessiontag - {\global\advance\bibtexcounter\plusone - \ctxlua{bibtex.hacks.registerplaced("\currentbibtexsessiontag")}% - \let\currentlist\currentbibtexsession - \let\currentlistentrynumber \bibtexcounter - \let\currentlistentrytitle \thebibtexpublicationlistelement - \let\currentlistentrypagenumber\empty - \strc_lists_apply_renderingsetup} - {}} % invalid - -\def\thebibtexpublicationlistelement - {\strut - \expanded{\reference[\bibtexrefprefix\currentbibtexsessiontag]{\number\bibtexcounter}}% - \dotypesetabibtexpublication\currentbibtexsessiontag - \strut} - -\def\dotypesetabibtexpublication#1% - {\begingroup - \ignorespaces - \xmlfilter{bibtex:\currentbibtexsession}{/bibtex/entry[@tag='#1']/command(bibtex:format)}% - \removeunwantedspaces -% \ignorespaces -% \bibalternative{\bibgetvart{#1}}% -% \removeunwantedspaces - \endgroup} - -\def\doprocessbibtexentry#1{\typesetbibtexpublication{#1}} - -% citations - -\protected\def\bibtexcitation[#1]% - {\edef\currentbibtexsession{#1}% - \strictdoifelsenextoptional\dobibtexcitation\dobibtexref} - -\def\dobibtexref#1% - {\dodobibtexcitation[#1][]} - -\def\dobibtexcitation[#1]% - {\strictdoifelsenextoptional{\dodobibtexcitation[#1]}{\dodobibtexcitation[#1][]}} - -\def\dodobibtexcitation[#1][#2]% - {\dontleavehmode - \begingroup - \doifelsenothing{#2}\secondargumentfalse\secondargumenttrue - \ifsecondargument - \dowhateverbibtexcitation{#1}{#2}% - \else - \donumberedbibtexcitation{#1}% - \fi - \endgroup} - -\def\dowhatevercitation#1#2% - {\processcommalist[#2]\dobibtexcitationindeed - \setupinteraction[\c!style=]% use flag instead - \doifelseassignment{#1} - {\getparameters[\??pb\??pb][\c!alternative=,\c!extras=,#1]% - \edef\currentbibtexvariant{\@@pb@@pbalternative}% - \ifx\currentbibtexvariant\empty - \edef\currentbibtexvariant{\bibtexpublicationparameter\c!refcommand}% - \fi - \ifx\@@pb@@pbextras\empty - \setupcite[\currentbibtexvariant][#1]% - \else - \edef\@@pb@@pbextras{{\@@pb@@pbextras\ifdefined\@@pb@@pbright\@@pb@@pbright\else\bibtexpublicationparameter\c!right\fi}}% - \expanded{\setupcite[\currentbibtexvariant][#1,\c!right=\@@pb@@pbextras]}% - \fi}% - {\def\currentbibtexvariant{#1}}% - \getvalue{bibtex\currentbibtexvariant ref}[#2]} - -\def\donumberedbibtexcitation#1% - {\processcommalist[#1]\dobibtexcitationindeed - \setupinteraction[\c!style=]% - \edef\currentbibtexvariant{\bibtexcitationparameter\c!refcommand}% - \getvalue{bibtex\currentbibtexvariant ref}[#1]} - -\def\dobibtexcitationindeed#1% - {\iftrialtypesetting \else - \expanded{\writedatatolist[\currentbibtexsession][bibref=#1]}% - \fi} - -\def\nobibtexcitation[#1]% - {\processcommalist[#1]\dobibtexcitationindeed} - -\def\bibtexnumref[#1]% - {\dontleavehmode - \begingroup - \bibtexcitationparameter\v!left - \penalty\plustenthousand - \ctxlua{bibtex.hacks.resolve("","\number\bibtexblock","#1")}% - \bibtexcitationparameter\v!right - \endgroup} - -\def\dowithbibtexnumrefconnector#1#2% - {\ifnum#1>\plusone - \ifnum#2>\plusone - \ifnum#2=#1\relax - \bibtexpublicationsparameter\c!lastpubsep - \else - \bibtexpublicationsparameter\c!pubsep - \fi - \fi - \fi} - -\def\dowithbibtexnumref#1#2#3#4#5% n, i, prefix block ref - {\dowithbibtexnumrefconnector{#1}{#2}% - \def\bibtexrefprefix{#4:}% - \inbiblink[#5]} - -\def\dowithbibtexnumrefrange#1#2#3#4#5#6#7% n, i, prefix block ref - {\dowithbibtexnumrefconnector{#1}{#2}% - \def\bibtexrefprefix{#4:}% - \inbiblink[#5]% - \endash - \def\bibtexrefprefix{#6:}% - \inbiblink[#7]} - -\def\nobibtexnumref#1% - {[#1]} - -% hm - -% \def\@@pbinumbercommand{\executeifdefined{\??pb:\c!numbercommand:\@@pbnumbering}\firstofoneargument} - -% \letvalue{\??pb:\c!numbercommand:\v!yes }\firstofoneargument -% \letvalue{\??pb:\c!numbercommand:\v!no }\gobbleoneargument -% \setvalue{\??pb:\c!numbercommand:\v!short}{\bibtexgetshort\currentpublicationtag\gobbleoneargument} -% \setvalue{\??pb:\c!numbercommand:\v!bib }{\bibtexgetnumber\currentpublicationtag\gobbleoneargument} - -% \def\bibalternative#1{\csname\??pv\@@currentalternative#1\endcsname} - -% basic setup - -% parent -> publicationlist -% -% \setuplist -% [\currentbibtexsession] -% [\c!samplesize={AA99}, -% \c!alternative=a, -% \c!interaction=, -% \c!pagenumber=\v!no, -% #1, -% \c!command=] - -% \setuppublicationlist -% [\c!title=, -% \c!command=\dospecialbibinsert, -% \c!maybeyear=\v!on] - -\setupbibtexpublications - [\c!monthconversion=, - \c!alternative=apa, - \c!method=\v!global, - \c!refcommand=num, - \c!numbercommand=\bibtexleftnumber] - -\setupbibtexcitations % command ? - [\c!refcommand=num] - -% helpers - -\protected\def\doifelsebibtexinteraction - {\iflocation - \edef\temp{\bibtexcitationparameter\c!interaction}% - \ifx\temp\v!stop - \doubleexpandafter\secondoftwoarguments - \else - \doubleexpandafter\firstoftwoarguments - \fi - \else - \expandafter\secondoftwoarguments - \fi} - -\let\doifbibtexinteractionelse\doifelsebibtexinteraction - -% variants - -% todo: lastsep here - -\newconditional\firstbibtexrefsep - -\def\bibtexresetrefsep - {\settrue\firstbibtexrefsep} - -\def\bibtexinsertrefsep - {\ifconditional\firstbibtexrefsep - \setfalse\firstbibtexrefsep - \else - \bibtexcitationparameter\c!pubsep - \fi} - -\def\inbibtexlink#1#2% - {\doifelsereferencefound{\bibtexrefprefix#1} - {\goto{#2}[\bibtexrefprefix#1]} - {!#1!}} - -\def\dobibtexgotolink#1#2% - {\doifelsereferencefound{\bibtexrefprefix#1} - {\goto{#2}[\bibtexrefprefix#1]} - {!#1!}} - -\def\dobibattexlink#1#2% - {\doifelsereferencefound{\bibtexrefprefix#1} - {\at{#2}[\bibtexrefprefix#1]} - {!#1!}} - -\def\dobibtexurllink#1#2% - {\expanded{\useURL[bibtex:url:#1][#2]}% - \doifelsebibtexinteraction - {\goto{\url[bibtex:url:#1]}[url(bibtex:url:#1)]} - {\url[bibtex:url:#1]}} - -% todo: style, color - -\protected\def\bibtexdataref {\dodoubleargument\dobibtexdataref} -\protected\def\bibtextyperef {\dodoubleargument\dobibtextyperef} -\protected\def\bibtexkeyref {\dodoubleargument\dobibtexkeyref} -\protected\def\bibtexserialref {\dodoubleargument\dobibtexserialref} -\protected\def\bibtexurlref {\dodoubleargument\dobibtexurlref} -\protected\def\bibtexdoiref {\dodoubleargument\dobibtexdoiref} -\protected\def\bibtexpageref {\dodoubleargument\dobibtexpageref} -\protected\def\bibtexnoneref {\dodoubleargument\dobibtexnoneref} -\protected\def\bibtexshortref {\dodoubleargument\dobibtexshortref} -\protected\def\bibtexyearref {\dodoubleargument\dobibtexyearref} -\protected\def\bibtexauthorref {\dodoubleargument\dobibtexauthorref} -\protected\def\bibtexauthoryearref {\dodoubleargument\dobibtexauthoryearref} -\protected\def\bibtexauthoryearsref{\dodoubleargument\dobibtexauthoryearsref} - -\def\dobibtexdataref {\doprocessbibtexref\dodobibtexdataref {ref}} % [#1][#2] -\def\dobibtextyperef {\doprocessbibtexref\dodobibtextyperef {type}} % [#1][#2] -\def\dobibtexkeyref {\doprocessbibtexref\dodobibtexkeyref {key}} % [#1][#2] -\def\dobibtexserialref {\doprocessbibtexref\dodobibtexserialref {serial}} % [#1][#2] -\def\dobibtexurlref {\doprocessbibtexref\dodobibtexurlref {url}} % [#1][#2] -\def\dobibtexdoiref {\doprocessbibtexref\dodobibtexdoiref {doi}} % [#1][#2] -\def\dobibtexpageref {\doprocessbibtexref\dodobibtexpageref {page}} % [#1][#2] -\def\dobibtexnoneref {\doprocessbibtexref\dodobibtexnoneref {none}} % [#1][#2] -\def\dobibtexshortref {\doprocessbibtexref\dodobibtexshortref {short}} % [#1][#2] -\def\dobibtexyearref {\doprocessbibtexref\dodobibtexyearref {year}} % [#1][#2] -\def\dobibtexauthorref {\doprocessbibtexref\dodobibtexauthorref {author}} % [#1][#2] -\def\dobibtexauthoryearref {\doprocessbibtexref\dodobibtexauthoryearref {authoryear}} % [#1][#2] -\def\dobibtexauthoryearsref{\doprocessbibtexref\dodobibtexauthoryearsref{authoryears}} % [#1][#2] - -\def\doprocessbibtexref#1#2[#3][#4]% - {\edef\currentbibtexsession{#3}% - \edef\currentbibtexvariant{#2}% - \def\dodoprocessbibtexref##1% - {% test for existence - \edef\currentbibtextag{##1}% - \bibtexinsertrefsep - #1{##1}}% - \bibtexresetrefsep - \bibtexcitationparameter\v!left - \processcommalist[#4]\dodoprocessbibtexref\relax - \bibtexcitationparameter\v!right} - -\def\dodobibtexdataref#1% - {\dotypesetabibtexpublication{#1}} - -\def\dodobibtextyperef#1% - {\edef\bibtexrefcontent{\xmlfilter{bibtex:\currentbibtexsession}{/bibtex/entry[@tag='#1']/attribute('category')}}% - \bibtexrefcontent} - -\def\dodobibtexkeyref#1% - {\edef\bibtexrefcontent{\xmlfilter{bibtex:\currentbibtexsession}{/bibtex/entry[@tag='key']/context()}}% - \dobibtexgotolink{#1}{\bibtexrefcontent}} - -\def\dodobibtexserialref#1% - {\edef\bibtexrefcontent{\xmlfilter{bibtex:\currentbibtexsession}{/bibtex/entry[@tag='#1']/match()}}% - \dobibtexgotolink{#1}{\bibtexrefcontent}} - -\def\dodobibtexurlref#1% - {\edef\bibtexrefcontent{\xmlfilter{bibtex:\currentbibtexsession}{/bibtex/entry[@tag='#1']/field[@name='url']/context()}}% - \dobibtexurllink{#1}{\bibtexrefcontent}} - -\def\dodobibtexdoiref#1% - {\edef\bibtexrefcontent{\xmlfilter{bibtex:\currentbibtexsession}{/bibtex/entry[@tag='#1']/field[@name='doi']/context()}}% - \dobibtexurllink{#1}{http://dx.doi.org/\bibtexrefcontent}} - -\def\dodobibtexpageref#1% - {\dobibtexatlink{#1}{}} % second argument can become 'page' - -\def\dodobibtexnoneref#1% - {} - -\def\dodobibtexshortref#1% - {\edef\bibtexrefcontent{\xmlfilter{bibtex:\currentbibtexsession}{/bibtex/entry[@tag='#1']/bibtexshort()}}% - \dobibtexgotolink{#1}{\bibtexrefcontent}} - -\def\dodobibtexyearref#1% - {\edef\bibtexrefcontent{\xmlfilter{bibtex:\currentbibtexsession}{/bibtex/entry[@tag='#1']/field[@name='year']/context()}}% - \bibtexrefcontent} - -% \def\bibmaybeinteractive#1#2% -% {\doifelsevalue{@@pv\@@currentalternative\c!compress} -% {\ifbibinteractionelse{\gotobiblink{#2}[#1]}{#2}} -% {#2}} - -% \def\bibauthornumref[#1]% -% {\getcommalistsize[#1]% -% \global\bibitemcounter\commalistsize -% \bibresetrefsep -% \processcommalist[#1]\dobibauthornumref } -% -% \def\dobibauthornumref#1% -% {\bibinsertrefsep -% \doifbibreferencefoundelse{#1} -% {\begingroup -% \bibgetvara{#1}% -% \bibalternative\c!inbetween -% \setuppublications[\c!refcommand=num]% -% \cite[#1]% -% \endgroup} -% {}} - -% compress years -% andtext namesep -% otherstext authoretallimit - -% we will use context.* instead at the lua end because it saves us passing settings - -% \def\thebibtexpubsep {\bibtexpublicationsparameter\c!pubsep} -% \def\thebibtexlastpubsep {\bibtexpublicationsparameter\c!lastpubsep} -% \def\thebibtexfinalpubseparator{\bibtexpublicationsparameter\c!lastpubsep} - -\def\dodobibtexauthorref #1{\ctxlua{bibtex.authorref ("bibtex:\currentbibtexsession","#1","normal","author")}} -\def\dodobibtexauthoryearref #1{\ctxlua{bibtex.authoryearref ("bibtex:\currentbibtexsession","#1","normal","author")}} -\def\dodobibtexauthoryearsref#1{\ctxlua{bibtex.authoryearsref("bibtex:\currentbibtexsession","#1","normal","author")}} - -\protected\def\bibtexsingularplural#1#2{\ctxlua{bibtex.singularorplural(\!!bs#1\!!es,\!!bs#2\!!es)}} - -\protect \endinput - |