summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/publ-ini.mkxl
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkiv/publ-ini.mkxl')
-rw-r--r--tex/context/base/mkiv/publ-ini.mkxl2029
1 files changed, 0 insertions, 2029 deletions
diff --git a/tex/context/base/mkiv/publ-ini.mkxl b/tex/context/base/mkiv/publ-ini.mkxl
deleted file mode 100644
index 7c1671528..000000000
--- a/tex/context/base/mkiv/publ-ini.mkxl
+++ /dev/null
@@ -1,2029 +0,0 @@
-%D \module
-%D [ file=publ-ini,
-%D version=2013.05.12,
-%D title=\CONTEXT\ Publication Support,
-%D subtitle=Initialization,
-%D author=Hans Hagen,
-%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.
-
-% TODO: some clf_ can be public implementers instead
-
-% TODO: s! vs v! for default and neutral key/values
-% todo: too many refs in list
-
-% TODO A.-B. Foo (dash as connector, see JMH)
-
-% todo: no need for all these %'s
-
-% todo: tagging
-% todo: we cannot use 'default' as this wipes metadata names (maybe no longer do that)
-% todo: \v!cite => \s!cite
-% todo: interface with (ml)bibtex (export -> call -> import)
-% todo: check if 'all' etc are ok ... either use list or use other criterium
-% todo: \the\everysetupbtxciteplacement probably too often
-
-% \definecolor[btx:field] [darkred]
-% \definecolor[btx:crossref][darkblue]
-% \definecolor[btx:key] [darkgreen]
-% \definecolor[btx:todo] [darkyellow]
-
-%D We operate on several axis:
-%D
-%D \startitemize[packed]
-%D \startitem we can have several databases (or combinations) \stopitem
-%D \startitem we can add entries to them if needed (coded in tex) \stopitem
-%D \startitem we can have several lists each using one of the databases \stopitem
-%D \startitem we can render each list or citation independently \stopitem
-%D \stopitemize
-%D
-%D We assume that the rendering of a list entry is consistent in a document,
-%D although one can redefine properties if needed. Adding more granularity would
-%D complicate the user interface beyond comprehension.
-
-\writestatus{loading}{ConTeXt Publication Support / Initialization}
-
-\registerctxluafile{publ-dat}{}
-\registerctxluafile{publ-ini}{}
-\registerctxluafile{publ-sor}{}
-\registerctxluafile{publ-aut}{}
-\registerctxluafile{publ-usr}{}
-\registerctxluafile{publ-oth}{} % this could become an option
-\registerctxluafile{publ-fnd}{} % new method (for the moment only local)
-\registerctxluafile{publ-jrn}{}
-\registerctxluafile{publ-reg}{}
-
-\unprotect
-
-\startcontextdefinitioncode
-
-%D These are currently not interfaced.
-
-\definesystemconstant {btx}
-
-\definesystemconstant {btxset}
-\definesystemconstant {btxref}
-\definesystemconstant {btxint}
-\definesystemconstant {btxltx}
-\definesystemconstant {btxrtx}
-\definesystemconstant {btxatx}
-\definesystemconstant {btxbtx}
-\definesystemconstant {btxspc}
-\definesystemconstant {btxlst}
-\definesystemconstant {btxcom}
-
-\defineinterfacevariable {btxcite} {btxcite}
-\defineinterfacevariable {btxlist} {btxlist}
-\defineinterfacevariable {btxrendering} {btxrendering}
-
-\definelabelclass[btxlabel][2]
-
-\clf_definelabels{btxlabel}{btx}\s!false\relax
-
-% It is not that trivial to come up with a proper organization of setup
-% and control commands for publications. This is because we have complex
-% inline as well as extensive list rendering. The rules are partially
-% driven by somewhat archaic bibtex specifications and evolving journal
-% (or field) specific demands. The logic in the standards is often so
-% complex that it looks like manual rendering is assumed. But, we want to
-% automate the process as much as possible.
-%
-% Another complication is that in manuals we want to demonstrate different
-% properties of the implementation and therefore we need a way to handle
-% independent standards, databases, etc. This has resulted in the following
-% organization:
-%
-% - general setup (rather minimal)
-% - list setup (rendering)
-% - cite setup
-% - dataset setup
-%
-% The rendering is mostly driven by setups. In there we can call for fields
-% in the database but also for virtual fields or combinations.
-
-% The main rendering style (standard driven).
-
-%D We assume that a specification is global or used grouped. It doesn't make much sense
-%D to split between cite and list here as it only complicates matters (timing) and is
-%D not clear either.
-
-\mutable\let\currentbtxspecification \empty
-\mutable\let\currentbtxspecificationfallback\empty
-
-\installmacrostack\currentbtxspecification
-\installmacrostack\currentbtxspecificationfallback
-
-\permanent\protected\def\startbtxrenderingdefinitions[#1]%
- {\unprotect
- \push_macro_currentbtxspecification
- \edef\currentbtxspecification{#1}}
-
-\permanent\protected\def\stopbtxrenderingdefinitions
- {\pop_macro_currentbtxspecification
- \protect}
-
-\permanent\protected\def\loadfoundpublicationfile#1#2% name foundname / not a user command
- {\input{#2}}
-
-\permanent\protected\def\loadbtxdefinitionfile [#1]{\clf_btxloaddefinitionfile {#1}} % can be public implementer
-\permanent\protected\def\loadbtxreplacementfile[#1]{\clf_btxloadreplacementfile{#1}} % can be public implementer
-
-\protected\def\publ_specification_push#1%
- {\push_macro_currentbtxspecification
- \push_macro_currentbtxspecificationfallback
- \edef\currentbtxspecification{#1}%
- \edef\currentbtxspecificationfallback{\namedbtxparameter\currentbtxspecification\c!default}%
- \ifx\currentbtxspecificationfallback\currentbtxspecification
- \let\currentbtxspecificationfallback\empty
- \fi
- \clf_btxsetspecification{\currentbtxspecification}}
-
-\protected\def\publ_specification_pop
- {\pop_macro_currentbtxspecificationfallback
- \pop_macro_currentbtxspecification
- \clf_btxsetspecification{\currentbtxspecification}}
-
-\protected\def\publ_specification_set#1% beware: is global
- {\edef\currentbtxspecification{#1}%
- \edef\currentbtxspecificationfallback{\namedbtxparameter\currentbtxspecification\c!default}%
- \ifx\currentbtxspecificationfallback\currentbtxspecification
- \let\currentbtxspecificationfallback\empty
- \fi
- % has to be done explicitly: \loadbtxdefinitionfile[\currentbtxspecification]%
- \ifempty\currentbtxspecification
- % we set default at the end
- \else
- \clf_btxsetspecification{\currentbtxspecification}%
- \fi}% todo: ,true == also load
-
-\installcorenamespace {btx}
-
-\installswitchcommandhandler \??btx {btx} \??btx
-
-% because we have lots of setups we provide a checker for sloppy users
-
-\protected\def\btx_check_chain#1#2#3%
- {\doifelsesomething{#3}
- {\writestatus{btx #1}{defining\space"#2"\space as\space descendant\space of\space"#3"}% we're in definition regime (no space)
- \definebtx[#2][#3]}
- {\writestatus{btx #1}{defining\space"#2"}%
- \definebtx[#2]}}
-
-% \protected\def\btxcheckdefine#1#2{\doifelsecommandhandler\??btx{#1}\donothing{\btx_check_chain{define}{#1}{#2}}}
-% \protected\def\btxchecksetup #1#2{\doifelsecommandhandler\??btx{#1}\donothing{\btx_check_chain {setup}{#1}{#2}}}
-
-\permanent\protected\def\btxcheckdefine#1{\doifelsecommandhandler\??btx{#1}\gobbleoneargument{\btx_check_chain{define}{#1}}} % {#2}
-\permanent\protected\def\btxchecksetup #1{\doifelsecommandhandler\??btx{#1}\gobbleoneargument{\btx_check_chain {setup}{#1}}} % {#2}
-
-% for the moment experimental:
-
-\permanent\protected\def\btxenableautodefine
- {\prependtoks
- \clf_checkinterfacechain{\currentbtx}{btxcheckdefine}%
- \to \everydefinebtx
- \prependtoks
- \ifnum\btxsetupmode=\doingrootsetupnamed
- \clf_checkinterfacechain{\currentbtx}{btxchecksetup}%
- \fi
- \to \everysetupbtx
- \let\btxenableautodefine\relax}
-
-\appendtoks
- \ifnum\btxsetupmode=\doingrootsetuproot
- \publ_specification_set{\btxparameter\c!specification}%
- \orelse\ifnum\btxsetupmode=\doingrootsetupnamed
- \doifelsecommandhandler\??btx\currentbtx
- {\publ_specification_set{\btxparameter\c!specification}}%
- {}% maybe a warning
- \fi
-\to \everysetupbtx
-
-\appendtoks
- \ifnum\btxsetupmode=\doingrootsetuproot
- \edef\currentbtxdataset{\clf_btxsetdataset{\btxparameter\c!dataset}{\currentbtxdataset}}%
- \fi
-\to \everysetupbtx
-
-\appendtoks
- \publ_specification_set{\btxparameter\c!specification}%
-\to \everyjob
-
-\protected\def\startusingbtxspecification[#1]%
- {\publ_specification_push{#1}}
-
-\let\stopusingbtxspecification\publ_specification_pop
-
-% \setupbtxlist[alternative=paragraph,width=auto,distance=\emwidth]
-% \setupbtxlist[alternative=paragraph,width=auto,distance=\emwidth,margin=2em] % useless
-% \setupbtxlist[alternative=paragraph,width=fit,distance=\emwidth]
-% \setupbtxlist[alternative=paragraph,width=fit,distance=\emwidth,margin=2em]
-
-% here starts the bib stuff
-
-\installcorenamespace {btxdataset}
-\installcorenamespace {btxrendering}
-\installcorenamespace {btxregister}
-\installcorenamespace {btxcommand}
-\installcorenamespace {btxrenderingdefinition}
-
-\installcommandhandler \??btxdataset {btxdataset} \??btxdataset
-\installcommandhandler \??btxregister {btxregister} \??btxregister
-\installcommandhandler \??btxrendering {btxrendering} \??btxrendering
-
-\permanent\protected\def\setbtxparameterset#1#2%
- {\edef\currentbtx
- {\ifcsname\??btx\currentbtxspecification:#1:#2:\s!parent\endcsname
- \currentbtxspecification:%
- \orelse\ifempty\currentbtxspecificationfallback
- \orelse\ifcsname\??btx\currentbtxspecificationfallback:#1:#2:\s!parent\endcsname
- \currentbtxspecificationfallback:%
- \fi#1:#2}}
-
-\permanent\protected\def\setbtxparametersetroot#1%
- {\edef\currentbtx
- {\ifcsname\??btx\currentbtxspecification:#1:\s!parent\endcsname
- \currentbtxspecification:#1%
- \orelse\ifempty\currentbtxspecificationfallback
- \orelse\ifcsname\??btx\currentbtxspecificationfallback:#1:\s!parent\endcsname
- \currentbtxspecificationfallback:#1%
- \fi}}
-
-\permanent\protected\def\setbtxrendering
- {\edef\currentbtxrendering
- {\ifcsname\??btx\currentbtxspecification:\s!parent\endcsname
- \currentbtxspecification
- \orelse\ifempty\currentbtxspecificationfallback
- \orelse\ifcsname\??btx\currentbtxspecificationfallback:\s!parent\endcsname
- \currentbtxspecificationfallback
- \fi}}
-
-\permanent\protected\def\setbtxlist % maybe simplify this one, always list=rendering?
- {\edef\currentbtxlist
- {\ifcsname\??btx\currentbtxrendering:\s!parent\endcsname
- \currentbtxrendering
- \orelse\ifcsname\??btx\currentbtxspecification:\s!parent\endcsname
- \currentbtxspecification
- \orelse\ifempty\currentbtxspecificationfallback
- \orelse\ifcsname\??btx\currentbtxspecificationfallback:\s!parent\endcsname
- \currentbtxspecificationfallback
- \fi}%
- \edef\currentlist{\s!btx:\currentbtxlist}}
-
-\permanent\protected\def\usebtxdataset
- {\begingroup
- \dotripleempty\publ_use_dataset}
-
-\def\publ_use_dataset[#1][#2][#3]%
- {\getdummyparameters[\c!specification=\currentbtxspecification,#3]%
- \ifsecondargument
- \clf_btxusedataset
- specification {\dummyparameter\c!specification}%
- dataset {#1}%
- filename {#2}%
- \relax
- \orelse\iffirstargument
- \clf_btxusedataset
- specification {\dummyparameter\c!specification}%
- dataset {\v!default}%
- filename {#1}%
- \relax
- \fi
- \endgroup}
-
-\definebtxdataset
- [\v!default]
-% [\c!language=] % nothing set so use current
-
-% \usebtxdataset
-% [default]
-% [mybibs.bib]
-
-%D These can be overloaded in the traditional module so we go \type {\frozen}
-%D instead of \type {\permanent}.
-
-\frozen\let\stoppublication\relax
-
-\frozen\tolerant\protected\def\startpublication[#1]#*[#2]%
- {\begingroup
- \catcode\commentasciicode\othercatcode
- \ifparameters
- \expandafter\publ_set_publication_default
- \or
- \expandafter\publ_set_publication_checked
- \or
- \expandafter\publ_set_publication_indeed
- \fi{#1}{#2}}
-
-\def\publ_set_publication_default#1#2%
- {\publ_set_publication_indeed\v!default{#1}}
-
-\def\publ_set_publication_checked#1#2%
- {\doifelseassignment{#1}
- {\publ_set_publication_indeed\v!default{#1}}
- {\publ_set_publication_indeed{#1}{}}}
-
-\def\publ_set_publication_indeed#1#2#3\stoppublication
- {\clf_btxaddentry{#1}{#2}{\detokenize{#3}}%
- \endgroup
- \ignorespaces}
-
-% commands
-
-\permanent\protected\def\btxcommand#1%
- {\ifcsname\??btxcommand#1\endcsname
- \expandafter\publ_command_yes
- \else
- \expandafter\publ_command_nop
- \fi{#1}}
-
-\newtoks\t_btx_cmd
-\newbox \b_btx_cmd
-
-\t_btx_cmd{\global\setbox\b_btx_cmd\hpack{\clf_btxcmdstring}}
-
-\aliased\let\btxcmd\btxcommand
-
-\def\publ_command_yes#1%
- {\csname\??btxcommand#1\endcsname}
-
-\def\publ_command_nop#1%
- {\ifcsname#1\endcsname
- \showmessage\m!publications{10}{#1,#1}%
- \global\letcsname\??btxcommand#1\expandafter\endcsname\csname#1\endcsname
- \orelse\ifcsname\utfupper{#1}\endcsname
- \showmessage\m!publications{10}{#1}{\utfupper{#1}}%
- \global\letcsname\??btxcommand#1\expandafter\endcsname\csname\utfupper{#1}\endcsname
- \else
- \showmessage\m!publications{11}{#1}%
- \setugvalue{\??btxcommand#1}{\underbar{\tttf#1}}%
- \fi
- \publ_command_yes{#1}}
-
-\permanent\protected\def\definebtxcommand#1% {body} #1..#n{body}
- {\setuvalue{\??btxcommand\csstring#1}}%
-
-% access
-
-\let\currentbtxtag \empty
-\let\currentbtxdataset\v!default
-
-\permanent\protected\def\setbtxentry[#1]% or maybe btxsetentry
- {\edef\currentbtxtag{\clf_btxsetentry{\currentbtxdataset}{#1}}}
-
-% \let\btxsetdataset\setbtxdataset
-% \let\btxsetentry \setbtxentry
-
-% todo: no need for the currents as we can keep them at the lua end so we will have
-%
-% \btxfield : current
-% \btxspecificfield : dataset,tag,key
-
-% todo we can pick up the current's at the lua end (implementers)
-
-%permanent\def\btxfield #1{\clf_btxfield {\currentbtxdataset}{\currentbtxtag}{#1}}
-%permanent\def\btxdetail #1{\clf_btxdetail {\currentbtxdataset}{\currentbtxtag}{#1}}
-%permanent\def\btxflush #1{\clf_btxflush {\currentbtxdataset}{\currentbtxtag}{#1}}
-%permanent\def\btxdirect #1{\clf_btxdirect {\currentbtxdataset}{\currentbtxtag}{#1}}
-\permanent\def\btxfieldname #1{\clf_btxfieldname {\currentbtxdataset}{\currentbtxtag}{#1}}
-\permanent\def\btxfieldtype #1{\clf_btxfieldtype {\currentbtxdataset}{\currentbtxtag}{#1}}
-\permanent\def\btxfoundname #1{\clf_btxfoundname {\currentbtxdataset}{\currentbtxtag}{#1}}
-\permanent\def\btxfoundtype #1{\clf_btxfoundtype {\currentbtxdataset}{\currentbtxtag}{#1}}
-\permanent\def\btxauthorfield#1{\clf_btxauthorfield \currentbtxauthorindex{#1}}
-\permanent\def\btxdoifelse #1{\clf_btxdoifelse {\currentbtxdataset}{\currentbtxtag}{#1}}
-\permanent\def\btxdoif #1{\clf_btxdoif {\currentbtxdataset}{\currentbtxtag}{#1}}
-\permanent\def\btxdoifnot #1{\clf_btxdoifnot {\currentbtxdataset}{\currentbtxtag}{#1}}
-
-\aliased\let\btxsetup\fastsetup
-
-\permanent\def\btxfield #1{\dostarttagged\t!pubfld{#1}\clf_btxfield {\currentbtxdataset}{\currentbtxtag}{#1}\dostoptagged}
-\permanent\def\btxdetail #1{\dostarttagged\t!pubfld{#1}\clf_btxdetail{\currentbtxdataset}{\currentbtxtag}{#1}\dostoptagged}
-\permanent\def\btxflush #1{\dostarttagged\t!pubfld{#1}\clf_btxflush {\currentbtxdataset}{\currentbtxtag}{#1}\dostoptagged}
-\permanent\def\btxdirect #1{\dostarttagged\t!pubfld{#1}\clf_btxdirect{\currentbtxdataset}{\currentbtxtag}{#1}\dostoptagged}
-%permanent\def\btxauthorfield#1{\dostarttagged\t!pubfld{#1}\clf_btxauthorfield \currentbtxauthorindex{#1}\dostoptagged}
-
-%D How complex will we go? Can we assume that e.g. an apa style will not be mixed
-%D with another one? I think this assumption is okay. For manuals we might want to
-%D mix but we can work around it.
-
-%D Rendering.
-
-\permanent\protected\def\btxspace {\removeunwantedspaces\space}
-\permanent\protected\def\btxnobreakspace {\removeunwantedspaces\nobreakspace} % these two are
-\permanent\protected\def\btxnbsp {\removeunwantedspaces\nbsp} % the same anyway
-\permanent\protected\def\btxperiod {\removeunwantedspaces.\space}
-\permanent\protected\def\btxcomma {\removeunwantedspaces,\space}
-\permanent\protected\def\btxcommabreak {\removeunwantedspaces,\hskip\zeropoint plus .5\emwidth\relax}
-\permanent\protected\def\btxcolon {\removeunwantedspaces:\space}
-\permanent\protected\def\btxsemicolon {\removeunwantedspaces;\space}
-\permanent\protected\def\btxlparent {\removeunwantedspaces\space(} % obsolete
-\permanent\protected\def\btxrparent {\removeunwantedspaces)\space} % obsolete
-\permanent\protected\def\btxleftparenthesis {\removeunwantedspaces\space(}
-\permanent\protected\def\btxrightparenthesis {\removeunwantedspaces)\space}
-\permanent\protected\def\btxrightparenthesisperiod{\removeunwantedspaces).\space}
-\permanent\protected\def\btxrightparenthesiscomma {\removeunwantedspaces),\space}
-\permanent\protected\def\btxleftbracket {\removeunwantedspaces\space[}
-\permanent\protected\def\btxrightbracket {\removeunwantedspaces]\space}
-\permanent\protected\def\btxrightbracketperiod {\removeunwantedspaces].\space}
-\permanent\protected\def\btxrightbracketcomma {\removeunwantedspaces],\space}
-
-%D Variables:
-
-\mutable\let\currentbtxbacklink \empty \permanent\protected\def\btxsetbacklink {\def\currentbtxbacklink}
-\mutable\let\currentbtxcategory \empty \permanent\protected\def\btxsetcategory {\def\currentbtxcategory}
-\mutable\let\currentbtxcombis \empty \permanent\protected\def\btxsetcombis {\def\currentbtxcombis}
-\mutable\let\currentbtxdataset \empty \permanent\protected\def\btxsetdataset {\def\currentbtxdataset}
-\mutable\let\currentbtxfirst \empty \permanent\protected\def\btxsetfirst {\def\currentbtxfirst}
-\mutable\let\currentbtxsecond \empty \permanent\protected\def\btxsetsecond {\def\currentbtxsecond}
-\mutable\let\currentbtxsuffix \empty \permanent\protected\def\btxsetsuffix {\def\currentbtxsuffix}
-\mutable\let\currentbtxinternal \empty \permanent\protected\def\btxsetinternal {\def\currentbtxinternal}
-\mutable\let\currentbtxlefttext \empty \permanent\protected\def\btxsetlefttext {\def\currentbtxlefttext}
-\mutable\let\currentbtxrighttext \empty \permanent\protected\def\btxsetrighttext {\def\currentbtxrighttext}
-\mutable\let\currentbtxbefore \empty \permanent\protected\def\btxsetbefore {\def\currentbtxbefore}
-\mutable\let\currentbtxafter \empty \permanent\protected\def\btxsetafter {\def\currentbtxafter}
-\mutable\let\currentbtxlanguage \empty \permanent\protected\def\btxsetlanguage {\def\currentbtxlanguage}
-\mutable\let\currentbtxtag \empty \permanent\protected\def\btxsettag {\def\currentbtxtag}
-\mutable\let\currentbtxnumber \empty \permanent\protected\def\btxsetnumber {\def\currentbtxnumber}
-\mutable\let\currentbtxfirstinternal\empty \permanent\protected\def\btxsetfirstinternal{\def\currentbtxfirstinternal}
-\mutable\let\currentbtxlastinternal \empty \permanent\protected\def\btxsetlastinternal {\def\currentbtxlastinternal}
-
-\mutable\let\currentbtxauthorvariant\v!normal \permanent\protected\def\btxsetauthorvariant{\def\currentbtxauthorvariant}
-\mutable\let\currentbtxfirstnames \empty \permanent\protected\def\btxsetfirstnames {\let\currentbtxfirstnames\currentbtxfirstnames_indeed}
-\mutable\let\currentbtxinitials \empty \permanent\protected\def\btxsetinitials {\let\currentbtxinitials \currentbtxinitials_indeed }
-\mutable\let\currentbtxjuniors \empty \permanent\protected\def\btxsetjuniors {\let\currentbtxjuniors \currentbtxjuniors_indeed }
-\mutable\let\currentbtxsurnames \empty \permanent\protected\def\btxsetsurnames {\let\currentbtxsurnames \currentbtxsurnames_indeed }
-\mutable\let\currentbtxvons \empty \permanent\protected\def\btxsetvons {\let\currentbtxvons \currentbtxvons_indeed }
-
-\newconstant\currentbtxoverflow \permanent\protected\def\btxsetoverflow #1{\currentbtxoverflow #1\relax}
-\newconstant\currentbtxconcat \permanent\protected\def\btxsetconcat #1{\currentbtxconcat #1\relax}
-\newconstant\currentbtxcount \permanent\protected\def\btxsetcount #1{\currentbtxcount #1\relax}
-\newconstant\currentbtxauthorindex %permanent\protected\def\btxsetauthorindex#1{\currentbtxauthorindex#1\relax} % passed directly
-\newconstant\currentbtxauthorcount %permanent\protected\def\btxsetauthorcount#1{\currentbtxauthorcount#1\relax} % passed directly
-\newconstant\currentbtxauthorstate \permanent\protected\def\btxsetauthorstate#1{\currentbtxauthorstate#1\relax}
-
-\protected\def\currentbtxfirstnames_indeed{\clf_btxcurrentfirstnames\numexpr\currentbtxauthorindex\relax}
-\protected\def\currentbtxinitials_indeed {\clf_btxcurrentinitials \numexpr\currentbtxauthorindex\relax}
-\protected\def\currentbtxjuniors_indeed {\clf_btxcurrentjuniors \numexpr\currentbtxauthorindex\relax}
-\protected\def\currentbtxsurnames_indeed {\clf_btxcurrentsurnames \numexpr\currentbtxauthorindex\relax}
-\protected\def\currentbtxvons_indeed {\clf_btxcurrentvons \numexpr\currentbtxauthorindex\relax}
-
-\mutable\let\currentbtxfirstpage \empty \permanent\protected\def\btxsetfirstpage#1{\def\currentbtxfirstpage{\btx_page_number{#1}}}
-\mutable\let\currentbtxlastpage \empty \permanent\protected\def\btxsetlastpage #1{\def\currentbtxlastpage {\btx_page_number{#1}}}
-
-\mutable\let\currentbtxfield \empty
-\mutable\let\currentbtxfielddoi \empty
-\mutable\let\currentbtxfieldmonth \empty
-\mutable\let\currentbtxfieldyear \empty
-\mutable\let\currentbtxfieldurl \empty
-\mutable\let\currentbtxcriterium \empty
-\mutable\let\currentbtxlist \empty
-\mutable\let\currentbtxlistentry \empty
-\mutable\let\currentbtxlistindex \empty
-\mutable\let\currentbtxreference \empty
-\mutable\let\currentbtxrenderingtitle \empty
-\mutable\let\currentbtxcitetag \empty
-
-\mutable\def\currentbtxauthorvariant{normal}
-
-\protected\def\btx_reset_list % not needed as we're grouped
- {\let\currentbtxcombis \empty
- \let\currentbtxcategory \empty
- \let\currentbtxinternal \empty
- \let\currentbtxlefttext \empty
- \let\currentbtxrighttext\empty
- \let\currentbtxbefore \empty
- \let\currentbtxafter \empty
- \let\currentbtxbacklink \empty
- \let\currentbtxlanguage \empty
- \let\currentbtxsuffix \empty
- %\let\currentbtxdataset \empty % will always be set
- %\let\currentbtxtag \empty % will always be set
- \let\currentbtxnumber \empty}
-
-\protected\def\btx_reset_cite % check for less .. not all resets needed when we're grouped (only subcites)
- {\let \currentbtxfirst \empty
- \let \currentbtxsecond \empty
- \let \currentbtxsuffix \empty
- \let \currentbtxinternal \empty
- \let \currentbtxlefttext \empty
- \let \currentbtxrighttext \empty
- \let \currentbtxbefore \empty
- \let \currentbtxafter \empty
- \let \currentbtxbacklink \empty
- \let \currentbtxlanguage \empty
- %\let \currentbtxdataset \empty % will always be set, beware of local reset ~
- %\let \currentbtxtag \empty % will always be set, beware of local reset ~
- \let \currentbtxnumber \empty
- \setconstant\currentbtxoverflow \zerocount
- \setconstant\currentbtxconcat \zerocount
- \setconstant\currentbtxcount \zerocount}
-
-\protected\def\btx_reset_page % probably not needed
- {\let \currentbtxfirstpage \empty
- \let \currentbtxlastpage \empty
- \let \currentbtxfirstinternal\empty
- \let \currentbtxlastinternal \empty
- \setconstant\currentbtxoverflow \zerocount
- \setconstant\currentbtxconcat \zerocount
- \setconstant\currentbtxcount \zerocount}
-
-\protected\def\btx_reset_numbering % probably not needed
- {\let \currentbtxfirst \empty
- \let \currentbtxsecond\empty
- \let \currentbtxsuffix\empty
- \setconstant\currentbtxconcat\zerocount}
-
-%D Pages:
-
-\protected\def\btx_page_number#1%
- {\def\currentlistindex{#1}%
- \structurelistpagenumber}
-
-%D Language:
-
-\mutable\def\mainbtxlanguage{\currentmainlanguage}
-
-\protected\def\btx_check_language
- {\let\mainbtxlanguage\currentlanguage
- \ifempty\currentbtxlanguage
- \let\currentbtxlanguage\currentlanguage
- \else
- \btx_check_language_indeed
- \fi}
-
-\protected\def\btx_check_language_indeed
- {\edef\currentbtxlanguage{\reallanguagetag\currentbtxlanguage}%
- \ifempty\currentbtxlanguage
- \let\currentbtxlanguage\currentlanguage
- \orelse\ifx\currentbtxlanguage\currentlanguage\else
- \setcurrentlanguage\currentmainlanguage\currentbtxlanguage
- \fi}
-
-%D Tracing
-
-\newconditional\c_btx_trace % not used yet
-
-\installtextracker
- {btxrendering}
- {\settrue \c_btx_trace}
- {\setfalse\c_btx_trace}
-
-%D Rendering lists and citations.
-
-\permanent\protected\def\btxtodo#1{[#1]}
-
-%D Lists:
-
-\newdimen\d_publ_number_width
-
-\ifdefined\btxblock \else \newcount\btxblock \fi \btxblock\plusone
-\ifdefined\btxcitecounter \else \newcount\btxcitecounter \fi % maybe pass this to lua
-
-\newtoks\everysetupbtxlistplacement % name will change
-\newtoks\everysetupbtxciteplacement % name will change
-
-\definelist % only used for selecting
- [\s!btx]
-
-\setuplist
- [\s!btx]
- [\c!prefixstopper=:,
- \c!state=\v!start,
- \c!alternative=a,
- \c!interaction=\v!none,
- %\c!alternative=\v!paragraph,
- %\c!width=\v!auto,
- %\c!distance=\emwidth,
- \c!before=\blank,
- \c!after=\blank]
-
-\permanent\tolerant\protected\def\setupbtxlist[#1]#*[#2]%
- {\ifarguments\or
- \setuplist[\s!btx][#1]%
- \or
- \setuplist[\s!btx:#1][#2]%
- \fi}
-
-\appendtoks
- \ifempty\currentbtxrenderingparent
- \definelist
- [\s!btx:\currentbtxrendering]%
- [\s!btx]%
- \orelse\ifx\currentbtxrenderingparent\s!btx
- \definelist
- [\s!btx:\currentbtxrendering]%
- [\s!btx]%
- \else
- \definelist
- [\s!btx:\currentbtxrendering]%
- [\s!btx:\currentbtxrenderingparent]%
- \fi
-\to \everydefinebtxrendering
-
-\newconditional\c_btx_list_texts
-
-\appendtoks
- \doifelse{\btxrenderingparameter\c!textstate}\v!start
- \settrue\setfalse\c_btx_list_texts
-\to \everysetupbtxlistplacement
-
-\newconditional\c_btx_list_pages
-
-\appendtoks
- \doifelse{\btxrenderingparameter\c!pagestate}\v!start
- \settrue\setfalse\c_btx_list_pages
-\to \everysetupbtxlistplacement
-
-\protected\def\btx_entry_inject_pages % for the moment only normal
- {\dontleavehmode
- \begingroup
- \setbtxlist % probably already set
- \btx_reset_page
- \setbtxparameterset\s!list\s!page
- \btxparameter\c!command
- {\usebtxstyleandcolor\c!style\c!color
- \btxparameter\c!left
- \clf_btxflushpages{\currentbtxdataset}{\currentbtxtag}%
- \btxparameter\c!right}%
- \endgroup}
-
-\permanent\protected\def\btxpagesetup#1% there will be no left|right|command|style at this inner level
- {\begingroup
- \publ_fast_setup\plusfive\s!list\s!page
- \endgroup
- \btx_reset_page} % probably not needed
-
-\permanent\protected\def\btxnumberingsetup#1%
- {\begingroup
- \dostarttagged\t!listtag\empty
- \setbtxparameterset{\c!list:\s!numbering}\currentbtxnumbering % brrrr \setbtxlist
- \btxparameter\c!left
- \publ_fast_setup\plusthree{\s!list:\s!numbering}{#1}%
- \btxparameter\c!right
- \dostoptagged
- \endgroup
- \btx_reset_numbering} % probably not needed
-
-% end of page stuff
-
-\permanent\protected\def\btxflushlisttext
- {\begingroup
- \usebtxstyleandcolor\c!style\c!color
- \ignorespaces
- \publ_fast_setup\plusfour\s!list\currentbtxcategory
- \removeunwantedspaces
- \endgroup}
-
-\permanent\protected\def\btxflushlistcombis
- {\begingroup
- \processcommacommand[\currentbtxcombis]\btx_entry_inject_combi % maybe in lua
- \endgroup}
-
-\def\btx_entry_inject_list_text
- {\publ_fast_setup\plusfour\s!list\s!text}
-
-\ifdefined\dotagpublication \else \aliased\let\dotagpublication\gobbletwoarguments \fi
-
-\protected\def\btx_entry_inject
- {\begingroup
- \dostarttagged\t!publication\empty
- \dotagpublication\currentbtxdataset\currentbtxtag
- \redoconvertfont % see (**) in strc-lst, this will become an configuration option
- \edef\currentbtxcategory{\btxfield{category}}%
- \ignorespaces
- \ifconditional\c_btx_list_texts
- \dostarttagged\t!listtext\s!left
- \currentbtxbefore
- \dostoptagged
- \fi
- %\dostarttagged\t!listcontent\empty
- \btx_entry_inject_list_text
- %\dostoptagged
- \ifconditional\c_btx_list_pages
- \dostarttagged\t!listpage\empty
- \btx_entry_inject_pages
- \dostoptagged
- \fi
- \ifconditional\c_btx_list_texts
- \dostarttagged\t!listtext\s!right
- \currentbtxafter
- \dostoptagged
- \fi
- \dostoptagged
- \endgroup}
-
-\permanent\protected\def\btxshowentryinline[#1]#*[#2]%
- {\ifarguments
- \ctxcommand{showbtxentry("\currentbtxdataset","\currentbtxtag")}
- \or
- \ctxcommand{showbtxentry("\currentbtxdataset","#1")}
- \or
- \ctxcommand{showbtxentry("#1","#2")}
- \fi}
-
-\permanent\protected\def\btxstartcombientry
- {\begingroup}
-
-\permanent\protected\def\btxstopcombientry
- {\endgroup}
-
-\permanent\protected\def\btxhandlecombientry
- {\btx_reference_indeed}
-
-\def\btx_entry_inject_combi#1%
- {\begingroup
- \def\currentbtxtag{#1}%
- \ignorespaces
- \publ_fast_setup\plusfour\s!list\currentbtxcategory
- \removeunwantedspaces
- \endgroup}
-
-% uses reference when set
-
-% \def\btx_entry_inject_combi#1%
-% {\begingroup
-% \def\currentbtxtag{#1}%
-% \ignorespaces
-% \btxdoifelsecombiinlist\currentbtxdataset\currentbtxtag
-% {\clf_btxflushlistcombi{\currentbtxdataset}{\currentbtxtag}}
-% {\publ_fast_setup\plusfour\s!list\currentbtxcategory}%
-% \removeunwantedspaces
-% \endgroup}
-
-\newtoks\everybtxlistrendering
-
-\appendtoks
- \setbtxlist
- %
- \edef\currentbtxcriterium{\btxrenderingparameter\c!criterium}% \v!cite will become \s!cite
- \ifempty\currentbtxcriterium
- \let\currentbtxcriterium\v!previous
- \orelse\ifx\currentbtxcriterium\v!cite
- \let\currentbtxcriterium\v!here
- \fi
- %
- \iflocation
- \letinteractionparameter\c!style\empty
-% \letinteractionparameter\c!color\empty
-% \letinteractionparameter\c!contrastcolor\empty
- \fi
-\to \everybtxlistrendering
-
-\def\nofbtxlistentries {0}
-\def\currentbtxlistentry{0}
-\def\currentbtxlistindex{0} % only for internal use (points back to big list)
-
-\newconditional\c_publ_prefixed
-
-\permanent\protected\def\btxsetnoflistentries #1{\edef\nofbtxlistentries {#1}}
-\permanent\protected\def\btxsetcurrentlistentry#1{\edef\currentbtxlistentry{#1}}
-\permanent\protected\def\btxsetcurrentlistindex#1{\edef\currentbtxlistindex{#1}}
-
-\permanent\protected\def\btxdoifelsesameaspreviouschecked#1#2% #1 == always | doublesided
- {\clf_btxdoifelsesameasprevious
- {\currentbtxdataset}%
- \currentbtxlistentry%
- {#2}%
- \c_btx_list_reference
- {#1}}
-
-\permanent\protected\def\btxdoifelsesameasprevious
- {\btxdoifelsesameaspreviouschecked\v!doublesided}
-
-\permanent\protected\def\btxdoifelsecombiinlist#1#2%
- {\clf_btxdoifelsecombiinlist{#1}{#2}}
-
-\aliased\let\btxdoifsameaspreviouscheckedelse\btxdoifelsesameaspreviouschecked
-\aliased\let\btxdoifsameaspreviouselse \btxdoifelsesameasprevious
-\aliased\let\btxdoifcombiinlistelse \btxdoifelsecombiinlist
-
-\tolerant\def\publ_place_list_indeed#1#2[#3]#*[#4]%
- {\begingroup
- \ifparameters
- \let\currentbtxrendering\currentbtxspecification
- \or
- \ifhastok={#3}%
- % [settings]
- \let\currentbtxrendering\currentbtxspecification
- \setupcurrentbtxrendering[#3]%
- \edef\p_specification{\btxrenderingparameter\c!specification}%
- \ifempty\p_specification\else
- \let\currentbtxspecification\p_specification
- \let\currentbtxrendering\currentbtxspecification % tricky
- \fi
- \else
- \edef\currentbtxrendering{#3}%
- \edef\p_specification{\btxrenderingparameter\c!specification}%
- \ifempty\p_specification\else
- \let\currentbtxspecification\p_specification
- \fi
- \fi
- \or
- % [rendering] [settings]
- \edef\currentbtxrendering{#3}%
- \setupcurrentbtxrendering[#4]%
- \edef\p_specification{\btxrenderingparameter\c!specification}%
- \ifempty\p_specification\else
- \let\currentbtxspecification\p_specification
- \fi
- \fi
- \setbtxparameterset\currentbtxspecification\s!list
- \the\everybtxlistrendering
- \ifconditional#1\relax
- \edef\currentbtxrenderingtitle{\btxrenderingparameter\c!title}%
- \ifempty\currentbtxrenderingtitle
- \normalexpanded{\startnamedsection[\v!chapter][\c!reference=\currentbtxrendering,\c!title={\headtext{\currentbtxrendering}}]}%
- \else
- \normalexpanded{\startnamedsection[\v!chapter][\c!reference=\currentbtxrendering,\c!title={\currentbtxrenderingtitle}]}%
- \fi
- \fi
- \ifempty\currentbtxrendering
- \setbtxrendering % hm
- \fi
- \edef\currentbtxdataset{\btxrenderingparameter\c!dataset}%
- \uselanguageparameter\btxdatasetparameter % new
- \setbtxlist
- \the\everystructurelist
- \the\everysetupbtxlistplacement
- % why not pass this with collect .. todo
- % here we just collect items
- \clf_btxcollectlistentries
- names {\s!btx}%
- criterium {\currentbtxcriterium}%
- reference {\btxrenderingparameter\c!reference}%
- method {\btxrenderingparameter\c!method}%
- dataset {\currentbtxdataset}%
- keyword {\btxrenderingparameter\c!keyword}%
- sorttype {\btxrenderingparameter\c!sorttype}%
- repeated {\btxrenderingparameter\c!repeat}%
- ignored {\btxrenderingparameter\c!ignore}%
- group {\btxrenderingparameter\c!group}%
- filter {\btxrenderingparameter\c!filter}%
- \relax
- \ifnum\nofbtxlistentries>\zerocount
- \forgetall
- \btxrenderingparameter\c!before
- \ifconditional#2\relax
- \edef\p_command{\btxrenderingparameter\c!command}%
- \ifempty\p_command
- \edef\p_setups{\btxrenderingparameter\c!setups}%
- \ifempty\p_setups
- \else
- \directsetup{\p_setups}%
- \fi
- \else
- \expandafter\p_command\expandafter{\number\nofbtxlistentries}\relax
- \fi
- \else
- \dostarttagged\t!publications\currentbtxrendering
- \dostarttagged\t!list{btx}%
- \startpacked[\v!blank]%
- % sorting and so
- \clf_btxpreparelistentries{\currentbtxdataset}% could be put in collect
- % next we analyze the width
- \ifempty\currentbtxnumbering \else
- \edef\p_width{\listparameter\c!width}%
- \ifx\p_width\v!auto
- \setbox\scratchbox\vbox \bgroup
- \settrialtypesetting
- \clf_btxfetchlistentries{\currentbtxdataset}%
- \egroup
- \d_publ_number_width\wd\scratchbox
- \letlistparameter\c!width\d_publ_number_width
- \fi
- \fi
- \doifelse{\listparameter\c!prefix}\v!yes\settrue\setfalse\c_publ_prefixed
- % this actually typesets them, we loop here as otherwise the whole
- % bunch gets flushed at once
- \dorecurse\nofbtxlistentries
- {\let\currentbtxlistentry\recurselevel
- \clf_btxflushlistentry{\currentbtxdataset}\currentbtxlistentry\relax}%
- \stoppacked
- \dostoptagged
- \dostoptagged
- \fi
- \btxrenderingparameter\c!after
- \fi
- \ifconditional#1\relax
- \stopnamedsection
- \fi
- \global\advance\btxblock\plusone
- \endgroup}
-
-\permanent\protected\def\placebtxrendering {\publ_place_list_indeed\conditionalfalse\conditionalfalse}
-\permanent\protected\def\completebtxrendering{\publ_place_list_indeed\conditionaltrue \conditionalfalse}
-\permanent\protected\def\flushbtxrendering {\publ_place_list_indeed\conditionalfalse\conditionaltrue }
-
-\aliased\let\completelistofpublications\completebtxrendering % for old times sake
-\aliased\let\placelistofpublications \placebtxrendering % for old times sake
-
-%D This is somewhat special (for Alan of course):
-%D
-%D \starttyping
-%D % #1 is number of entries
-%D
-%D \starttexdefinition unexpanded btx:for:alan:wrapper #1
-%D \bTABLE
-%D % we can have a command or setups
-%D \flushbtxentries[command=\texdefinition{btx:for:alan:content}]
-%D \eTABLE
-%D \stoptexdefinition
-%D
-%D % #1 is tag
-%D
-%D \starttexdefinition unexpanded btx:for:alan:content #1
-%D \bTR
-%D \bTD
-%D \btxsettag{#1}
-%D \btxfield{name}
-%D \eTD
-%D \eTR
-%D \stoptexdefinition
-%D
-%D % we can have a command or setups
-%D
-%D \flushbtxrendering [method=dataset,command=\texdefinition{btx:for:alan:wrapper}]
-%D \stoptyping
-%D
-%D Because we want to be ungrouped we use a special loop construct.
-
-\permanent\protected\def\btxsetlisttag#1%
- {\clf_btxflushlisttag{\currentbtxdataset}#1\relax}
-
-\newcount\c_btx_list_index
-
-\let\m_btx_list_action\empty
-
-\def\publ_flush_list_step_command
- {\btxsetlisttag{\c_btx_list_index}
- \expandafter\m_btx_list_action\expandafter{\currentbtxtag}%
- \ifnum\c_btx_list_index<\nofbtxlistentries
- \advance\c_btx_list_index\plusone
- \expandafter\publ_flush_list_step_command
- \else
- \glet\m_btx_list_action\relax
- \fi}
-
-\def\publ_flush_list_step_setup
- {\btxsetlisttag{\c_btx_list_index}
- \directsetup{\m_btx_list_action}%
- \ifnum\c_btx_list_index<\nofbtxlistentries
- \advance\c_btx_list_index\plusone
- \expandafter\publ_flush_list_step_setup
- \else
- \glet\m_btx_list_action\relax
- \fi}
-
-\permanent\protected\def\flushbtxentries[#1]%
- {\begingroup
- \getdummyparameters[\c!command=,\c!setups=,#1]%
- \xdef\m_btx_list_action{\dummyparameter\c!command}%
- \ifempty\m_btx_list_action
- \xdef\m_btx_list_action{\dummyparameter\c!setups}%
- \ifempty\m_btx_list_action
- \endgroup
- \c_btx_list_index\zerocount
- \else
- \endgroup
- \c_btx_list_index\plusone
- \doubleexpandafter\publ_flush_list_step_command
- \fi
- \else
- \endgroup
- \c_btx_list_index\plusone
- \expandafter\publ_flush_list_step_command
- \fi}
-
-%D So far.
-
-\permanent\def\currentbtxblock{\number\btxblock}
-
-% called at the lua end, for determining the width
-
-\permanent\protected\def\btxchecklistentry
- {\begingroup
- % todo, switch to font
- \hbox{\btx_reference_checked}%
- \par
- \endgroup}
-
-% called at the lua end, the real rendering
-
-% we could have a yes and no where o nils the btx_reference_indeed ... saves a check there
-
-\installstructurelistprocessor{\s!btx}
- {\let\currentlistentrynumber \btx_reference_indeed
- \let\currentlistentrytitle \btx_entry_indeed
- \let\currentlistentrypagenumber\btx_page_indeed
- \strc_lists_apply_renderingsetup}
-
-\def\btx_entry_indeed
- {\dostarttagged\t!listcontent\empty
- \btx_list_reference_inject
- \btx_entry_inject
- \dostoptagged}
-
-\def\btx_page_indeed
- {}
-
-\permanent\protected\def\btxhandlelistentry
- {\strc_lists_entry_process}
-
-\permanent\protected\def\btxstartlistentry % maybe pass i
- {\begingroup
- \global\advance\c_btx_list_reference\plusone}
-
-\permanent\protected\def\btxstoplistentry
- {\iftrialtypesetting
- \global\advance\c_btx_list_reference\minusone
- \fi
- \endgroup}
-
-\newtoks\everybtxlistentry
-
-\permanent\protected\def\btxlistsetup#1% used for the reference in the list
- {\the\everybtxlistentry
- \everybtxlistentry\emptytoks % so only once per entry to be sure
- \publ_fast_setup\plusfour\s!list{#1}}
-
-\appendtoks
- \btx_check_language
-\to \everybtxlistentry
-
-\protected\def\btx_reference_indeed
- {\begingroup
- % redundant will go away:
- \setbtxparameterset{\c!list:\s!numbering}\currentbtxnumbering
- %
- \ifempty\currentbtxnumbering
- % nothing
- \orelse\ifx\currentbtxnumbering\v!no
- % nothing
- \else
- \usebtxstyleandcolor\c!style\c!color % new, needed?
- \ifconditional\c_publ_prefixed\btxlistprefixednumber\fi
- \clf_btxlistvariant % some can go
- {\currentbtxdataset}%
- {\currentbtxblock}%
- {\currentbtxtag}%
- {\currentbtxnumbering}%
- {\currentbtxnumber}%
- \relax
- \fi
- \endgroup}
-
-\permanent\protected\def\btxlistprefixednumber % hack but alan needs it
- {\clf_listprefixednumber
- {\currentlist}%
- \currentbtxlistindex
- {%
- prefix {\listparameter\c!prefix}%
- separatorset {\listparameter\c!prefixseparatorset}%
- conversionset {\listparameter\c!prefixconversionset}%
- starter {\listparameter\c!prefixstarter}%
- stopper {\listparameter\c!prefixstopper}%
- set {\listparameter\c!prefixset}%
- segments {\listparameter\c!prefixsegments}%
- connector {\listparameter\c!prefixconnector}%
- }%
- \relax}
-
-\protected\def\btx_reference_checked
- {\dontleavehmode\hbox\bgroup % \hpack
- \btx_reference_indeed
- \egroup}
-
-\newcount\c_btx_list_reference
-
-\protected\def\btx_list_reference_inject
- {\dontleavehmode\begingroup % no box
- \iftrialtypesetting\else
- \btx_list_reference_inject_now
- \fi
- % \btx_reference_indeed % else double entry in list
- \endgroup}
-
-\def\btx_list_reference_inject_now
- {\strc_references_direct_full_user
- {\ifx\currentbtxdataset\v!default\else\s!btxset=\currentbtxdataset,\fi%
- \s!btxref=\currentbtxtag,%
- \s!btxspc=\currentbtxspecification,%
- \s!btxlst=\number\c_btx_list_reference,% check if needed
- %\ifempty\currentbtxcombis \else\s!btxcom={\currentbtxcombis},\fi%
- \ifempty\currentbtxbefore \else\s!btxbtx={\currentbtxbefore},\fi%
- \ifempty\currentbtxafter \else\s!btxatx={\currentbtxafter },\fi%
- \ifempty\currentbtxbacklink\else\s!btxint=\number\currentbtxbacklink\fi
- }%
- {\s!btx::\v!list::\number\c_btx_list_reference}%
- {\currentbtxnumber}}
-
-\newconditional\c_btx_cite_reference_injected
-
-\permanent\protected\def\btx_cite_reference_inject
- {\ifconditional\c_btx_cite_reference_injected \else
- \dontleavehmode
- \iftrialtypesetting \else
- \ifempty\currentbtxbacklink
- % can be made empty when combining author / year
- \orelse\ifnum\currentbtxbacklink>\zerocount
- \btx_cite_reference_inject_indeed
- \settrue\c_btx_cite_reference_injected
- \fi
- \fi
- \fi}
-
-\newtoks\t_btx_reference_inject
-
-\def\btx_cite_reference_inject_indeed
- {\the\t_btx_reference_inject
- \strc_lists_inject_direct % todo: make like \btx_list_reference_inject_now with { }
- [\s!btx]%
- [\c!type=\s!btx]% \c!location=\v!none
- [\ifx\currentbtxdataset\v!default\else\s!btxset=\currentbtxdataset,\fi%
- \s!btxref=\currentbtxtag,%
- %\ifempty\currentbtxcombis \else\s!btxcom={\currentbtxcombis},\fi%
- \ifempty\currentbtxbefore \else\s!btxbtx={\currentbtxbefore},\fi%
- \ifempty\currentbtxafter \else\s!btxatx={\currentbtxafter },\fi%
- \ifempty\currentbtxbacklink\else\s!btxint=\number\currentbtxbacklink,\fi
- \ifempty\currentbtxciteuservariables\else,\currentbtxciteuservariables\fi]}
-
-\permanent\def\currentbtxuservariable #1{\clf_btxuservariable {\currentbtxdataset}{#1}}
-\permanent\def\btxdoifelseuservariable#1{\clf_btxdoifelseuservariable{\currentbtxdataset}{#1}}
-
-\aliased\let\btxdoifuservariableelse\btxdoifelseuservariable
-
-\aliased\let\btxcitereference\btx_cite_reference_inject
-
-\mutable\let\currentbtxnumbering \empty
-\mutable\let\currentbtxcitealternative \empty
-
-\appendtoks
- \edef\currentbtxnumbering{\btxrenderingparameter\c!numbering}%
- \ifx\currentbtxnumbering\v!yes
- \def\currentbtxnumbering{num}% convenient alias
- \letbtxrenderingparameter\c!numbering\currentbtxnumbering
- \letlistparameter\c!headnumber\v!always
- \orelse\ifx\currentbtxnumbering\v!no
- \letlistparameter\c!headnumber\v!no
- \let\currentbtxnumbering\empty
- % \letlistparameter\c!textcommand\outdented % needed? we can use titlealign
- \letlistparameter\c!symbol \v!none
- \letlistparameter\c!aligntitle \v!yes
- \letlistparameter\c!numbercommand\firstofoneargument % for the moment, no doubling needed
- \else
- \letlistparameter\c!headnumber\v!always
- \fi
- \let\currentlistmethod\s!btx
-\to \everysetupbtxlistplacement
-
-\permanent\tolerant\protected\def\btxremapauthor[#1]#*[#2]%
- {\clf_btxremapauthor{#1}{#2}}
-
-\permanent\protected\def\btxshowauthorremapping
- {\clf_btxshowauthorremapping}
-
-\permanent\protected\def\btxflushauthor
- {\doifelsenextoptionalcs\btx_flush_author_yes\btx_flush_author_nop}
-
-\permanent\protected\def\btxflushsuffix
- {\ifempty\currentbtxsuffix
- % nothing
- \else
- \characters{\currentbtxsuffix}% todo : rendering specific converter
- \fi}
-
-\def\btx_flush_author_yes[#1]{\btx_flush_author{#1}}
-\def\btx_flush_author_nop {\btx_flush_author{\btxparameter\c!authorconversion}}
-
-\protected\def\btx_flush_author#1#2%
- {\begingroup
- \edef\currentbtxfield{#2}%
- \setbtxparameterset\s!list\currentbtxfield
-% \let\currentbtxlistvariant\currentbtxfield
- \clf_btxauthor
- {\currentbtxdataset}%
- {\currentbtxtag}%
- {\currentbtxfield}%
- {%
- combiner {#1}%
- kind {list}%
- etallimit {\btxparameter\c!etallimit}%
- etaldisplay {\btxparameter\c!etaldisplay}%
- etaloption {\btxparameter\c!etaloption}%
- symbol {\btxparameter{\c!stopper:initials}}%
- connector {\btxparameter{\c!connector:initials}}%
- }%
- \relax
- \endgroup}
-
-% yes or no: maybe just \flushauthor{...}{...}
-
-\permanent\protected\def\btxflushauthorname {\btx_flush_author{name}} % #1
-\permanent\protected\def\btxflushauthornormal {\btx_flush_author{normal}} % #1
-\permanent\protected\def\btxflushauthornormalshort {\btx_flush_author{normalshort}} % #1
-\permanent\protected\def\btxflushauthorinverted {\btx_flush_author{inverted}} % #1
-\permanent\protected\def\btxflushauthorinvertedshort{\btx_flush_author{invertedshort}} % #1
-
-\mutable\let\currentbtxauthorfield\s!author
-
-\permanent\protected\def\btxsetauthorfield#1{\edef\currentbtxauthorfield{#1}}
-
-\permanent\protected\def\currentbtxciteauthorbyfield
- {\begingroup
- %\setbtxparameterset\s!cite\s!author
- % the alternatives inherit from cite:author
- % and APA distinguishes authoryears from authoryear ("and" vs. "&")
- \setbtxparameterset\s!cite\currentbtxcitealternative
- \clf_btxauthor
- {\currentbtxdataset}%
- {\currentbtxtag}%
- {\currentbtxauthorfield}%
- {%
- combiner {\btxparameter\c!authorconversion}%
- kind {cite}%
- etallimit {\btxparameter\c!etallimit}%
- etaldisplay {\btxparameter\c!etaldisplay}%
- etaloption {\btxparameter\c!etaloption}%
- symbol {\btxparameter{\c!stopper:initials}}%
- }%
- \relax
- \endgroup}
-
-\permanent\protected\def\currentbtxciteauthor
- {\let\currentbtxauthorfield\s!author
- \currentbtxciteauthorbyfield} % always author
-
-\permanent\protected\def\btxstartauthor#1#2#3% a state > 0 signals that some authors can clash
- {\begingroup
- \currentbtxauthorindex#1\relax
- \currentbtxauthorcount#2\relax
- \currentbtxauthorstate#3\relax}
-
-\permanent\protected\def\btxstopauthor
- {\endgroup}
-
-\permanent\protected\def\btxciteauthorsetup#1{\fastsetup{\s!btx:\s!cite:\s!author:#1}}
-\permanent\protected\def\btxlistauthorsetup#1{\fastsetup{\s!btx:\s!list:\s!author:#1}}
-
-% \btxflushauthor{author}
-% \btxflushauthor{editor}
-%
-% \btxflushauthor[name]{author}
-% \btxflushauthor[normal]{author}
-% \btxflushauthor[normalshort]{author}
-% \btxflushauthor[inverted]{author}
-% \btxflushauthor[invertedshort]{author}
-
-% \btxflushauthor{author}
-% \btxflushauthor{editor}
-
-% Interaction
-%
-% Because we have more complex entries in lists we don't use the normal list
-% interaction features.
-
-\newconditional\btxinteractive
-\newconditional\btxinteractivenumber
-\newconditional\btxinteractivetext
-\newconditional\btxinteractivepage
-
-\mutable\let\currentbtxinteraction\empty
-
-\installcorenamespace{btxinteraction}
-
-\setvalue{\??btxinteraction\v!number}{\settrue\btxinteractivenumber}
-\setvalue{\??btxinteraction\v!text }{\settrue\btxinteractivetext}
-\setvalue{\??btxinteraction\v!page }{\settrue\btxinteractivepage}
-\setvalue{\??btxinteraction\v!all }{\settrue\btxinteractivenumber
- \settrue\btxinteractivetext
- \settrue\btxinteractivepage}
-
-% \setupbtx[interaction=page] % or text or number or all
-% \setupbtxrendering[pagestate=start]
-
-\appendtoks
- \iflocation
- \edef\currentbtxinteraction{\btxparameter\c!interaction}%
- \ifx\currentbtxinteraction\v!stop
- \setfalse\btxinteractive
- \else
- \let\structurelistlocation\empty
- \settrue\btxinteractive
- \begincsname\??btxinteraction\currentbtxinteraction\endcsname
- \fi
- \else
- \setfalse\btxinteractive
- \fi
-\to \everysetupbtxlistplacement
-
-\appendtoks
- \iflocation
- \edef\currentbtxinteraction{\btxparameter\c!interaction}%
- \ifx\currentbtxinteraction\v!stop
- \setfalse\btxinteractive
- \else
- \settrue\btxinteractive
- \fi
- \else
- \setfalse\btxinteractive
- \fi
-\to \everysetupbtxciteplacement
-
-%D When a publication is cited, we need to signal that somehow. This is done with the
-%D following (not user) command. We could tag without injecting a node but this way
-%D we also store the location, which makes it possible to ask local lists.
-
-%D \macros{cite,nocite,citation,nocitation,usecitation}
-%D
-%D The inline \type {\cite} command creates a (often) short reference to a publication
-%D and for historic reasons uses a strict test for brackets. This means, at least
-%D in the default case that spaces are ignored in the argument scanner. The \type
-%D {\citation} commands is more liberal but also gobbles following spaces. Both
-%D commands insert a reference as well as a visual clue.
-%D
-%D The \type {no} commands all do the same (they are synonyms): they make sure that
-%D a reference is injected but show nothing. However, they do create a node so best
-%D attach them to some text in order to avoid spacing interferences. A slightly
-%D less efficient alternative is \type {\cite[none][tag]}.
-
-% [tags]
-% [settings|variant][tags]
-% [base::tags]
-% [settings|variant][base::tags]
-
-% these need to be sort of protected:
-
-% methods:
-%
-% hidden : mark for list, don't show in text
-% list : mark for list, show in text only when in list
-% text : not to list, show in text
-% always : mark for list, show in text
-
-\let\p_publ_cite_before \empty
-\let\p_publ_cite_after \empty
-\let\p_publ_cite_lefttext \empty
-\let\p_publ_cite_righttext\empty
-
-\mutable\let\currentbtxciteuservariables\empty
-\mutable\let\currentbtxcitealternative \empty
-
-\permanent\protected\def\btxhybridcite % so one can alias the old
- {\dontleavehmode
- \begingroup
- \strictdoifelsenextoptional\publ_cite_tags_options\publ_cite_tags_indeed}
-
-\protected\def\publ_cite_tags_options[#1]%
- {\strictdoifelsenextoptional{\publ_cite_tags_options_indeed{#1}}{\publ_cite_tags_indeed{#1}}}
-
-\protected\def\publ_cite_tags_indeed#1%
- {\letinteractionparameter\c!style\empty
- \setbtxparametersetroot\s!cite % we need to get the default
- \edef\currentbtxcitealternative{\btxparameter\c!alternative}%
- \setbtxparameterset\s!cite\currentbtxcitealternative
- \edef\currentbtxcitetag{#1}%
- \the\everysetupbtxciteplacement
- \publ_cite_variant
- \endgroup}
-
-\protected\def\publ_cite_tags_options_indeed#1%
- {\doifelseassignment{#1}\publ_cite_tags_settings_indeed\publ_cite_tags_variants_indeed{#1}}
-
-\def\publ_cite_tags_settings_indeed#1[#2]%
- {\letinteractionparameter\c!style\empty
- %\letinteractionparameter\c!color\empty
- \letdummyparameter\c!reference \empty
- \letdummyparameter\c!alternative\empty
- \letdummyparameter\c!before \empty
- \letdummyparameter\c!after \empty
- \letdummyparameter\c!lefttext \empty
- \letdummyparameter\c!righttext \empty
- \getdummyparameters[#1]%
- \edef\p_reference{\dummyparameter\c!reference}%
- \ifempty\p_reference
- \edef\currentbtxcitetag{#2}%
- \else
- \let\currentbtxcitetag\p_reference
- \edef\currentbtxciteuservariables{#2}%
- \fi
- \edef\p_specification{\dummyparameter\c!specification}%
- \ifempty\p_specification
- \else
- \let\currentbtxspecification\p_specification
- \fi
- \edef\p_alternative{\dummyparameter\c!alternative}%
- \ifempty\p_alternative
- \setbtxparametersetroot\s!cite
- \edef\currentbtxcitealternative{\btxparameter\c!alternative}%
- \else
- \let\currentbtxcitealternative\p_alternative
- \fi
- \setbtxparameterset\s!cite\currentbtxcitealternative
- \setupcurrentbtx[#1]%
- %
- \edef\p_publ_cite_before {\dummyparameter\c!before}%
- \edef\p_publ_cite_after {\dummyparameter\c!after}%
- \edef\p_publ_cite_lefttext {\dummyparameter\c!lefttext}%
- \edef\p_publ_cite_righttext{\dummyparameter\c!righttext}%
- %
- \the\everysetupbtxciteplacement
- \publ_cite_variant
- \endgroup}
-
-\def\publ_cite_tags_variants_indeed#1[#2]%
- {\letinteractionparameter\c!style\empty
- \edef\currentbtxcitealternative{#1}%
- \edef\currentbtxcitetag{#2}%
- \setbtxparameterset\s!cite\currentbtxcitealternative
- \the\everysetupbtxciteplacement
- \publ_cite_variant
- \endgroup}
-
-\newconditional\btxcitecompress
-
-\mutable\let\currentbtxcitemethod\v!hidden
-
-\def\publ_cite_variant
- {\begingroup
- \publ_cite_handle_variant_indeed[\currentbtxcitetag]}
-
-\protected\def\publ_cite_handle_variant#1%
- {\begingroup
- \edef\currentbtxcitealternative{#1}%
- \setbtxparameterset\s!cite\currentbtxcitealternative
- \the\everysetupbtxciteplacement
- \publ_cite_handle_variant_indeed}
-
-\permanent\protected\def\publ_cite_handle_variant_blob
- {\clf_btxhandlecite
- dataset {\currentbtxdataset}%
- reference {\currentbtxreference}%
- method {\currentbtxcitemethod}%
- variant {\currentbtxcitealternative}%
- sorttype {\btxparameter\c!sorttype}%
- compress {\btxparameter\c!compress}%
- author {\btxparameter\c!author}%
- authorconversion {\c!authorconversion}%
- lefttext {\p_publ_cite_lefttext}%
- righttext {\p_publ_cite_righttext}%
- before {\p_publ_cite_before}%
- after {\p_publ_cite_after}%
- \relax
- \iftrialtypesetting\else
- %\clf_btxflushmarked
- \fi}
-
-\aliased\let\dobtxcitevariantblob\publ_cite_handle_variant_blob % command can use it via lua
-
-\tolerant\def\publ_cite_handle_variant_indeed[#1]%
- {\letbtxparameter\c!alternative\currentbtxcitealternative
- \edef\currentbtxreference{#1}%
- \saverunningstyleandcolor
- \usebtxstyleandcolor\c!style\c!color
- \uselanguageparameter\btxdatasetparameter % new
- \btxparameter\c!left
- \btxparameter\c!command{\dobtxcitevariantblob}% {\publ_cite_handle_variant_blob}%
- \btxparameter\c!right
- \endgroup}
-
-\permanent\protected\def\btxlistcitation {\publ_citation\v!list}
-\permanent\protected\def\btxtextcitation {\publ_citation\v!text}
-\permanent\protected\def\btxalwayscitation{\publ_citation\v!always}
-
-\tolerant\def\publ_citation#1[#2]#*[#3]% could be made more efficient but not now
- {\dontleavehmode
- \begingroup
- \let\currentbtxcitemethod#1%
- \ifparameter#3\or
- \publ_cite_tags_options_indeed{#2}[#3]%
- \else
- \publ_cite_tags_indeed{#2}%
- \fi}
-
-\permanent\tolerant\protected\def\btxhiddencitation[#1]%
- {\iftrialtypesetting \else
- \begingroup
- \let\currentbtxcitemethod\v!hidden
- \edef\currentbtxreference{#1}%
- \clf_btxhandlenocite
- method {\currentbtxcitemethod}%
- dataset {\currentbtxdataset}%
- reference {\currentbtxreference}%
- \relax
- %\clf_btxflushmarked
- \endgroup
- \fi}
-
-\permanent\protected\def\btxmissing#1%
- {\dontleavehmode{\tttf<#1>}}
-
-%D Compatibility:
-
-\aliased\let\hiddencitation\btxhiddencitation \aliased\let\hiddencite\hiddencitation
-\aliased\let\listcitation \btxlistcitation \aliased\let\listcite \listcitation
-\aliased\let\textcitation \btxtextcitation \aliased\let\textcite \textcitation
-\aliased\let\alwayscitation\btxalwayscitation \aliased\let\alwayscite\alwayscitation
-
-\permanent\protected\def\citation {\doifelsenextoptionalcs\btxlistcitation \btxdirectlistcite}
-\permanent\protected\def\nocitation{\doifelsenextoptionalcs\btxhiddencitation\btxdirecthiddencite}
-
-\aliased\let\cite \citation
-\aliased\let\nocite \nocitation
-\aliased\let\usecitation\nocitation
-
-\protected\def\publ_entry_citation {\doifelsenextoptionalcs\btxlistcitation \btxdirectlistcite}
-\protected\def\publ_entry_nocitation{\doifelsenextoptionalcs\btxhiddencitation\btxdirecthiddencite}
-
-\appendtoks
- \enforced\let\cite \publ_entry_citation
- \enforced\let\nocite\publ_entry_nocitation
-\to \everybtxlistrendering
-
-\permanent\protected\def\btxdirectlistcite #1{\btxlistcitation [#1]\relax} % no optional arguments
-\permanent\protected\def\btxdirecthiddencite#1{\btxhiddencitation[#1]\relax} % no optional arguments
-
-%D Setup helpers, beware, we need to wrap this .. now we need to know
-%D how setups are implemented.
-
-\setvalue{\??setup:\s!btx:\s!unknown}#1{\inframed{\tttf#1}}
-
-\def\publ_fast_setup_yes#1#2%
- {\csname\??setup:\s!btx:%
- \ifcsname\??setup:\s!btx:\currentbtxspecification:#1:#2\endcsname
- \currentbtxspecification:#1:#2%
- \orelse\ifcsname\??setup:\s!btx:\currentbtxspecificationfallback:#1:#2\endcsname
- \currentbtxspecificationfallback:#1:#2%
- \orelse\ifcsname\??setup:\s!btx:#1:#2\endcsname
- #1:#2%
- \orelse\ifcsname\??setup:\s!btx:\currentbtxspecification:#1:\s!unknown\endcsname
- \currentbtxspecification:#1:\s!unknown
- \orelse\ifcsname\??setup:\s!btx:\currentbtxspecificationfallback:#1:\s!unknown\endcsname
- \currentbtxspecificationfallback:#1:\s!unknown
- \else
- #1:\s!unknown
- \fi
- \endcsname{#2}}
-
-\def\publ_fast_setup_nop#1#2%
- {\csname\??setup:\s!btx:%
- \ifcsname\??setup:\s!btx:\currentbtxspecification:#1:#2\endcsname
- \currentbtxspecification:#1:#2%
- \orelse\ifcsname\??setup:\s!btx:#1:#2\endcsname
- #1:#2%
- \orelse\ifcsname\??setup:\s!btx:\currentbtxspecification:#1:\s!unknown\endcsname
- \currentbtxspecification:#1:\s!unknown
- \else
- #1:\s!unknown
- \fi
- \endcsname{#2}}
-
-\newconstant\btxsetuptype
-
-% 0 = unknown darkred
-% 1 = cite darkblue
-% 2 = subcite darkgreen
-% 3 = numbering darkorange
-% 4 = list darkcyan
-% 5 = page darkmagenta
-% 6 = unknown darkred
-
-\protected\def\publ_fast_btx_setup_chain_inbetween{\allowbreak->\allowbreak}
-\protected\def\publ_fast_btx_setup_colon_inbetween{\allowbreak :\allowbreak}
-
-\protected\def\publ_fast_btx_setup_chain_yes#1#2%
- {\dontleavehmode\begingroup
- \let\:\publ_fast_btx_setup_colon_inbetween
- \infofont
- \ifcase\btxsetuptype\darkred\or\darkblue\or\darkgreen\or\darkcyan\or\darkmagenta\else\darkred\fi
- [\prewordbreak
- \currentbtxspecification \:#1\:#2\ifcsname\??setup:\s!btx:\currentbtxspecification:#1:#2\endcsname\else
- \publ_fast_btx_setup_chain_inbetween
- \currentbtxspecificationfallback\:#1\:#2\ifcsname\??setup:\s!btx:\currentbtxspecificationfallback:#1:#2\endcsname\else
- \publ_fast_btx_setup_chain_inbetween
- #1\:#2\ifcsname\??setup:\s!btx:#1:#2\endcsname\else
- \publ_fast_btx_setup_chain_inbetween
- \currentbtxspecification \:#1\:\s!unknown\ifcsname\??setup:\s!btx:\currentbtxspecification:#1:\s!unknown\endcsname\else
- \publ_fast_btx_setup_chain_inbetween
- \currentbtxspecificationfallback\:#1\:\s!unknown\ifcsname\??setup:\s!btx:\currentbtxspecificationfallback:#1:\s!unknown\endcsname\else
- \publ_fast_btx_setup_chain_inbetween
- unset\fi\fi\fi\fi\fi
- \space @\space
- \currentbtx
- \prewordbreak]%
- \endgroup}
-
-\protected\def\publ_fast_btx_setup_chain_nop#1#2%
- {\dontleavehmode\begingroup
- \let\:\publ_fast_btx_setup_colon_inbetween
- \infofont
- \darkred
- [\prewordbreak
- \currentbtxspecification\:#1\:#2\ifcsname\??setup:\s!btx:\currentbtxspecification:#1:#2\endcsname\else
- \publ_fast_btx_setup_chain_inbetween
- #1\:#2\ifcsname\??setup:\s!btx:#1:#2\endcsname\else
- \publ_fast_btx_setup_chain_inbetween
- \currentbtxspecification\:#1\:\s!unknown\ifcsname\??setup:\s!btx:\currentbtxspecification:#1:\s!unknown\endcsname\else
- \publ_fast_btx_setup_chain_inbetween
- unset\fi\fi\fi
- \space @\space
- \currentbtx
- \prewordbreak]%
- \endgroup}
-
-\protected\def\publ_fast_btx_setup_normal#1%
- {\btxsetuptype#1\relax
- \ifempty\currentbtxspecificationfallback
- \expandafter\publ_fast_setup_nop
- \else
- \expandafter\publ_fast_setup_yes
- \fi}
-
-\protected\def\publ_fast_btx_setup_visual#1#2#3%
- {\btxsetuptype#1\relax
- \ifempty\currentbtxspecificationfallback
- \expandafter\publ_fast_btx_setup_chain_nop
- \else
- \expandafter\publ_fast_btx_setup_chain_yes
- \fi{#2}{#3}%
- \ifempty\currentbtxspecificationfallback
- \expandafter\publ_fast_setup_nop
- \else
- \expandafter\publ_fast_setup_yes
- \fi{#2}{#3}}
-
-\installtextracker
- {publications.setups}
- {\let\publ_fast_setup\publ_fast_btx_setup_visual}
- {\let\publ_fast_setup\publ_fast_btx_setup_normal}
-
-\let\publ_fast_setup\publ_fast_btx_setup_normal
-
-%D Cite helpers:
-
-\newtoks\everybtxciteentry
-
-\prependtoks
- \setfalse\c_btx_cite_reference_injected
-\to \everybtxciteentry
-
-\permanent\protected\def\btxcitesetup#1%
- {\the\everybtxciteentry
- \everybtxciteentry\emptytoks % tricky maybe not when subcites
- \publ_fast_setup\plusone\s!cite{#1}} % no \btxcitereset as we loose dataset and such
-
-\permanent\protected\def\btxsubcitesetup#1%
- {\the\everybtxciteentry
- \everybtxciteentry\emptytoks % tricky maybe not when subcites
- \publ_fast_setup\plustwo\s!cite{#1}} % no \btxcitereset as we loose dataset and such
-
-\appendtoks
- \btx_check_language
-\to \everybtxciteentry
-
-\permanent\protected\def\btxstartsubcite#1%
- {\begingroup
- \btx_reset_cite % todo: limited set
- % \saverunningstyleandcolor % let's see when Alan needs it
- \def\currentbtxcitealternative{#1}%
- \setbtxparameterset\s!cite\currentbtxcitealternative
- \usebtxstyleandcolor\c!style\c!color
- \btxparameter\c!left
- \relax}
-
-\permanent\protected\def\btxstopsubcite
- {\relax
- \btxparameter\c!right
- \endgroup}
-
-\permanent\protected\def\btxstartciterendering[#1]%
- {\begingroup
- \edef\currentbtxcitealternative{#1}%
- \setbtxparameterset\s!cite\currentbtxcitealternative
- \usebtxstyleandcolor\c!style\c!color
- \btxparameter\c!left
- \relax}
-
-\permanent\protected\def\btxstopciterendering
- {\relax
- \btxparameter\c!right
- \endgroup}
-
-\aliased\let\btxstartciteauthor\begingroup
-\aliased\let\btxstopciteauthor \endgroup
-
-\permanent\protected\def\btxstartcite{\begingroup\btx_reset_cite}
-\aliased \let\btxstopcite \endgroup
-
-%D Whatever helpers:
-
-\permanent\protected\def\btxsingularplural#1{\clf_btxsingularorplural{\currentbtxdataset}{\currentbtxtag}{#1}}
-\permanent\protected\def\btxoneorrange #1{\clf_btxoneorrange {\currentbtxdataset}{\currentbtxtag}{#1}}
-\permanent\protected\def\btxfirstofrange #1{\clf_btxfirstofrange {\currentbtxdataset}{\currentbtxtag}{#1}}
-
-\aliased\let\btxsingularorplural\btxsingularplural
-
-\stopcontextdefinitioncode
-
-%D Journals
-
-\permanent\protected\def\btxloadjournallist [#1]{\clf_btxloadjournallist{#1}}
-\permanent\protected\def\btxsavejournallist [#1]{\clf_btxsavejournallist{#1}}
-\permanent\protected\def\btxaddjournal [#1][#2]{\clf_btxaddjournal{#1}{#2}}
-\permanent \def\btxexpandedjournal #1{\clf_btxexpandedjournal{#1}} % \protected ?
-\permanent \def\btxabbreviatedjournal#1{\clf_btxabbreviatedjournal{#1}} % \protected ?
-
-% \installcorenamespace{btxjournal}
-%
-% \letvalue{\s!btxjournal\v!long }\btxexpandedjournal
-% \letvalue{\s!btxjournal\v!short }\btxabbreviatedjournal
-% \letvalue{\s!btxjournal\v!normal}\firstofoneargument
-%
-% \protected\def\btxcheckedjournal
-% {\expandnamespaceparameter\s!btxjournal\btxrenderingparameter\c!journalconversion}
-
-% \btxloadjournallist[list.txt] % Foo Journal of Bars = FBJ \n ....
-%
-% \btxexpandedjournal[fbj]
-% \btxabbreviatedjournal[foo journal of bars]
-
-%D Saving data:
-
-\tolerant\permanent\protected\def\savebtxdataset[#1]#*[#2]#*[#3]
- {\ifarguments
- % bad news
- \or
- \ifhastok={#1}%
- \publ_save_dataset_indeed[\s!default][\jobname-saved.bib][#1]%
- \else
- \publ_save_dataset_indeed[\s!default][#1][]%
- \fi
- \or
- \ifhastok={#2}%
- \publ_save_dataset_indeed[\s!default][#1][#2]%
- \else
- \publ_save_dataset_indeed[#1][#2][]%
- \fi
- \or
- \publ_save_dataset_indeed[#1][#2][#3]%
- \fi}
-
-\protected\def\publ_save_dataset_indeed[#1][#2][#3]%
- {\begingroup
- \getdummyparameters
- [\c!criterium=\v!all,%
- \c!type=,%
- \c!dataset=#1,%
- \c!file=#2,%
- #3]% % all or used
- \clf_btxsavedataset
- dataset {\dummyparameter\c!dataset}%
- filename {\dummyparameter\c!file}%
- filetype {\dummyparameter\c!type}%
- criterium {\dummyparameter\c!criterium}%
- \relax
- \endgroup}
-
-% \savebtxdataset[default][e:/tmp/foo.bib]
-% \savebtxdataset[default][e:/tmp/foo.lua]
-% \savebtxdataset[default][e:/tmp/foo.xml]
-
-%D In-text entries:
-
-\protected\def\placecitation{\citation[entry]} % [#1]
-
-\permanent\protected\def\btxhandleciteentry
- {\dontleavehmode
- \begingroup
- \def\currentbtxcitealternative{entry}%
- \setbtxparameterset\s!cite\currentbtxcitealternative % needs checking
- \btxcitereference
- \btx_entry_inject
- \endgroup}
-
-%D Registers
-
-% \setupbtxregister
-% [\c!state=\v!start,
-% \c!dataset=\v!all,
-% \c!method=\v!always]
-
-\protected\def\publ_registers_set
- {\ifempty\currentbtxregister \else
- \clf_btxsetregister
- specification {\currentbtxspecification}%
- name {\currentbtxregister}%
- state {\btxregisterparameter\c!state}%
- dataset {\btxregisterparameter\c!dataset}%
- field {\btxregisterparameter\c!field}%
- register {\btxregisterparameter\c!register}%
- method {\btxregisterparameter\c!method}%
- alternative {\btxregisterparameter\c!alternative}%
- \relax
- \fi}
-
-\appendtoks
- \publ_registers_set
-\to \everydefinebtxregister
-
-\appendtoks
- \publ_registers_set
-\to \everysetupbtxregister
-
-\appendtoks
- \normalexpanded{%
- \defineprocessor
- [\s!btx:r:\currentbtxregister]%
- [\c!style=\noexpand\namedbtxregisterparameter{\currentbtxregister}\noexpand\c!style,
- \c!color=\noexpand\namedbtxregisterparameter{\currentbtxregister}\noexpand\c!color]}%
-\to \everydefinebtxregister
-
-\appendtoks
- \clf_btxtoregister{\currentbtxdataset}{\currentbtxtag}%
-\to \t_btx_reference_inject
-
-\permanent\protected\def\btxindexedauthor#1#2#3#4#5#6% alternative von last initials first junior
- {\begingroup
- \def\currentbtxcitealternative{#1}%
- \ifempty\currentbtxcitealternative
- \edef\currentbtxcitealternative{invertedshort}% maybe we need some default here too?
- \fi
- %let\currentbtxlistvariant\currentbtxcitealternative % we inherit
- \the\everysetupbtxciteplacement
- \def\currentbtxvons {#2}%
- \def\currentbtxsurnames {#3}%
- \def\currentbtxinitials {#4}%
- \def\currentbtxfirstnames {#5}%
- \def\currentbtxjuniors {#6}%
- \setbtxparameterset\s!cite\currentbtxcitealternative
- \fastsetup{\s!btx:\s!cite:\s!author:\currentbtxcitealternative}%
- \endgroup}
-
-\permanent\protected\def\btxregisterauthor
- {\doifelsenextoptionalcs\publ_register_author_yes\publ_register_author_nop}
-
-\def\publ_register_author_yes[#1]#2%
- {\clf_btxauthortoregister{#1}{#2}\relax}
-
-\def\publ_register_author_nop#1%
- {\clf_btxauthortoregister{\currentbtxdataset}{#1}\relax}
-
-%D We hook some setters in the definition sets:
-
-% \installdefinitionsetmember \??btx {btxspecification} \??btxcitevariant {btxcitevariant}
-% \installdefinitionsetmember \??btx {btxspecification} \??btxlistvariant {btxlistvariant}
-% \installdefinitionsetmember \??btx {btxspecification} \??btxlist {btxlist}
-% \installdefinitionsetmember \??btx {btxspecification} \??btxrendering {btxrendering}
-% \installdefinitionsetmember \??btx {btxspecification} \??btx {btx}
-
-%D And more helpers ... a never ending story these publications:
-
-% \definebtx
-% [btx:apa:list:article:title]
-% [style=bolditalic,
-% command=\WORD]
-%
-% \btxstartstyle[btx:apa:list:article:title]
-% \btxusecommand[btx:apa:list:article:title]{foo}
-% \btxstopstyle
-
-\let\savedcurrentbtx\empty
-
-\permanent\protected\def\btxstartstyle[#1]%
- {\begingroup
- \let\savedcurrentbtx\currentbtx
- \def\currentbtx{#1}%
- \usebtxstyle\c!style
- \let\currentbtx\savedcurrentbtx}
-
-\permanent\protected\def\btxstartcolor[#1]%
- {\begingroup
- \let\savedcurrentbtx\currentbtx
- \def\currentbtx{#1}%
- \usebtxcolor\c!color
- \let\currentbtx\savedcurrentbtx}
-
-\permanent\protected\def\btxstartstyleandcolor[#1]%
- {\begingroup
- \let\savedcurrentbtx\currentbtx
- \def\currentbtx{#1}%
- \usebtxstyleandcolor\c!style\c!color
- \let\currentbtx\savedcurrentbtx}
-
-\aliased\let\btxstopstyle \endgroup
-\aliased\let\btxstopcolor \endgroup
-\aliased\let\btxstopstyleandcolor\endgroup
-
-\permanent\protected\def\btxusecommand[#1]#2% using #2 permits space after []
- {\namedbtxparameter{#1}\c!command{#2}}
-
-\permanent\protected\def\startbtxrunningstyleandcolor
- {\dontleavehmode
- \begingroup
- \restorerunningstyleandcolor}
-
-\permanent\protected\def\stopbtxrunningstyleandcolor
- {\endgroup}
-
-%D Maybe handy:
-
-\permanent\protected\def\btxdoifelsematches#1#2#3%
- {\clf_btxdoifelsematches{#1}{#2}{#3}}
-
-%D Defaults:
-
-\setupbtxrendering
- [\c!interaction=\v!start, % \v!all
- \c!specification=\btxparameter\c!specification,
- \c!dataset=\v!default,
- \c!repeat=\v!no,
- \c!continue=\v!no,
- \c!method=\v!global,
- % \c!setups=btx:\btxrenderingparameter\c!alternative:initialize, % not the same usage as cite !
- \c!sorttype=\v!default,
- \c!criterium=\v!text,
- \c!refcommand=authoryears, % todo
- \c!numbering=\v!yes,
- %\c!saveinlist=\v!no, % maybe for before/after
- \c!pagestate=\v!stop,
- \c!textstate=\v!start,
- \c!width=\v!auto,
- \c!separator={\removepunctuation;\space},
- \c!distance=1.5\emwidth]
-
-% Quite some interpunction and labels are the same of at least consistent within
-% a standard when citations and list entries are involved. We assume that each
-% standard defines its own set but it can fall back on these defaults.
-
-\setupbtx
- [\c!interaction=\v!start,
- \c!alternative=num, % default cite form, normally defined in the cite namespace
- \c!inbetween=\btxspace,
- % \c!range=\endash, % separator:range?
- \c!range=\directdiscretionary\endash,
- \c!compress=\v!yes, % was no?
- \c!authorconversion=normal,
- \c!sorttype=normal, % normal, reverse or none
- \c!etallimit=3,
- \c!etaldisplay=\btxparameter\c!etallimit,
- \c!otherstext={\btxspace et al.},
- \c!separator:firstnames={\btxspace},
- \c!separator:juniors={\btxspace},
- \c!separator:vons={\btxspace},
- \c!separator:initials={\btxspace},
- \c!stopper:initials={.},
- %\c!surnamesep={\btxcomma}, % is this used anywhere?
- \c!separator:invertedinitials={\btxcomma},
- \c!separator:invertedfirstnames={\btxcomma},
- \c!separator:names:2={\btxcomma}, % separates multiple names
- \c!separator:names:3=\btxparameter{\c!separator:2}, % before last name in a list
- \c!separator:names:4=\btxparameter{\c!separator:2}, % between only two names
- \c!separator:2={\btxsemicolon}, % aka pubsep - separates multiple objects
- \c!separator:3=\btxparameter{separator:2}, % before last object in a list
- \c!separator:4=\btxparameter{separator:2}] % between only two objects
-
-% Do we want these in the format? Loading them delayed is somewhat messy.
-
-\loadbtxdefinitionfile[commands]
-\loadbtxdefinitionfile[definitions]
-
-\loadbtxdefinitionfile[cite]
-\loadbtxdefinitionfile[list]
-\loadbtxdefinitionfile[page]
-\loadbtxdefinitionfile[author]
-
-% we assume that the users sets up the right specification and if not ... well,
-% hope for the best that something shows up and consult the manual otherwise
-
-\permanent\protected\def\usebtxdefinitions[#1]%
- {\loadbtxdefinitionfile[#1]% % for hh
- \setupbtx[\c!specification=#1]} % for ab
-
-\setupbtx
- [\c!specification=\s!default,
- \c!dataset=\v!default,
- \c!default=\v!default]
-
-\loadbtxdefinitionfile
- [\s!default]
-
-%D Delayed loading:
-
-\fetchruntimecommand \showbtxdatasetfields \f!publ_tra
-\fetchruntimecommand \showbtxdatasetcompleteness \f!publ_tra
-\fetchruntimecommand \showbtxdatasetauthors \f!publ_tra
-\fetchruntimecommand \showbtxhashedauthors \f!publ_tra
-\fetchruntimecommand \showbtxfields \f!publ_tra
-\fetchruntimecommand \showbtxtables \f!publ_tra
-
-%D Some potential crap:
-%D
-%D Because I consider this bad data management and a weird mix of languages only one
-%D accessor is provided.
-
-\permanent\tolerant\protected\def\btxshortcut[#1]#:#2%
- {\clf_btxshortcut{\ifparameter#1\or#1\else\s!default\fi}{#2}}
-
-\protect