summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/biblatex-contrib/biblatex-software/software.bbx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/biblatex-contrib/biblatex-software/software.bbx')
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-software/software.bbx231
1 files changed, 231 insertions, 0 deletions
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-software/software.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-software/software.bbx
new file mode 100644
index 0000000000..3b7f8d0736
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-software/software.bbx
@@ -0,0 +1,231 @@
+%
+% Reference implementation of a BibLaTeX style for the software family of bibliographic entries
+%
+% 2020/04/02 Roberto Di Cosmo <roberto@dicosmo.org>
+%
+\RequireBiber[3]
+\RequirePackage{xurl}
+%
+% Toggles for typesetting additional ids and printing labels
+%
+\newtoggle{bbx:halid}
+\newtoggle{bbx:swhid}
+\newtoggle{bbx:vcs}
+\newtoggle{bbx:swlabels}
+\newtoggle{bbx:license}
+
+\DeclareBibliographyOption[boolean]{halid}[true]{%
+ \settoggle{bbx:halid}{#1}}
+\DeclareBibliographyOption[boolean]{swhid}[true]{%
+ \settoggle{bbx:swhid}{#1}}
+\DeclareBibliographyOption[boolean]{swlabels}[true]{%
+ \settoggle{bbx:swlabels}{#1}}
+\DeclareBibliographyOption[boolean]{vcs}[true]{%
+ \settoggle{bbx:vcs}{#1}}
+\DeclareBibliographyOption[boolean]{license}[true]{%
+ \settoggle{bbx:license}{#1}}
+
+\ExecuteBibliographyOptions{halid,swhid,swlabels,vcs,license}
+
+%
+% Declare inheritance rules (valid only in LaTeX preamble!)
+%
+\DeclareDataInheritance{software}{softwareversion,softwaremodule,codefragment}{\inherit{*}{*}}
+\DeclareDataInheritance{softwareversion}{softwaremodule,codefragment}{\inherit{*}{*}}
+\DeclareDataInheritance{softwaremodule}{codefragment}{\inherit{*}{*}}
+
+%
+% Localization
+%
+\DeclareLanguageMapping{english}{english-software}
+\DeclareLanguageMapping{french}{french-software}
+
+%
+% Formatting fields for the software entries
+%
+
+\DeclareFieldFormat[softwaremodule,codefragment]{subtitle}{\mkbibquote{#1\isdot}}
+\DeclareFieldFormat[software,softwareversion,softwaremodule,codefragment]{url}{
+ \iftoggle{bbx:url}%
+ {\mkbibacro{URL}\addcolon\addspace%
+ \ifhyperref%
+ {\href{#1}{\nolinkurl{#1}}}%
+ {\nolinkurl{#1}}%
+ }%
+ {}%
+}
+\DeclareFieldFormat[software,softwareversion,softwaremodule,codefragment]{hal_id}{
+ \iftoggle{bbx:halid}%
+ {\mkbibacro{HAL}\addcolon\addspace%
+ \ifhyperref%
+ {\href{https://hal.archives-ouvertes.fr/#1\thefield{hal_version}}{\(\langle\)\nolinkurl{#1\thefield{hal_version}}\(\rangle\)}}%
+ {\(\langle\)\nolinkurl{#1\thefield{hal_version}}\(\rangle\)}%
+ }%
+ {}%
+}
+\DeclareFieldFormat[software,softwareversion,softwaremodule,codefragment]{swhid}{%
+ \iftoggle{bbx:swhid}%
+ {\mkbibacro{SWHID}\addcolon\addspace%
+ \ifhyperref%
+ {\href{http://archive.softwareheritage.org/#1}{\(\langle\)\nolinkurl{#1}\(\rangle\)}}%
+ {\(\langle\)\nolinkurl{#1}\(\rangle\)}%
+ }%
+ {}%
+}
+\DeclareFieldFormat[software,softwareversion,softwaremodule,codefragment]{repository}{%
+ \iftoggle{bbx:vcs}%
+ {\mkbibacro{VCS}\addcolon\addspace%
+ \ifhyperref%
+ {\href{#1}{\nolinkurl{#1}}}%
+ {\nolinkurl{#1}}%
+ }%
+ {}%
+}
+\DeclareListFormat[software,softwareversion,softwaremodule,codefragment]{license}{%
+ \usebibmacro{list:delim}{#1}%
+ #1\isdot
+ \usebibmacro{list:andothers}}
+
+%
+% Macros to format output
+%
+\newbibmacro*{swtitleauthoreditoryear}{%
+ \printnames{author}\addcomma%
+ \setunit{\addspace}%
+ \printfield{title}\addspace%
+ \printfield{version}\addspace%
+ \ifnameundef{editor}%
+ {}%
+ {\printtext[parens]{%
+ \bibstring{edited}\addspace%
+ \printnames{editor}}}%
+ \addcomma%
+ \addspace%
+ \printdate%
+}
+
+%
+\newbibmacro*{swsubtitleauthoreditoryear}{%
+ \printnames{author}\addcomma%
+ \setunit{\addspace}%
+ \iffieldundef{subtitle}%
+ {}
+ {\printfield{subtitle}\addcomma\addspace%
+ \bibstring{swpartof}\addspace
+ }%
+ \printfield{title}\addspace%
+ \printfield{version}\addspace%
+ \ifnameundef{editor}%
+ {}
+ {\printtext[parens]{%
+ \bibstring{edited}\addspace%
+ \printnames{editor}}}%
+ \addcomma%
+ \addspace%
+ \printdate%
+}
+
+\newbibmacro*{codefragmenttitleauthoreditoryear}{%
+ \printnames{author}\addcomma%
+ \setunit{\addspace}%
+ \iffieldundef{subtitle}%
+ {}
+ {\printfield{subtitle}\addcomma\addspace%
+ \bibstring{swexc}\addspace
+ }%
+ \printfield{title}\addspace%
+ \printfield{version}\addspace%
+ \ifnameundef{editor}%
+ {}
+ {\printtext[parens]{%
+ \bibstring{edited}\addspace%
+ \printnames{editor}}}%
+ \setunit*{\addcomma\addspace}%
+ \printdate%
+}
+
+\newbibmacro{licenses}{%
+ \iflistundef{license}
+ {}
+ {\iftoggle{bbx:license}%
+ {\newunitpunct
+ \mkbibacro{Lic}\addcolon
+ \printlist{license}
+ }%
+ {}%
+ }
+}
+
+\newbibmacro*{swids}{%
+ \printfield{doi}%
+ \setunit*{\addcomma\addspace}%
+ \printfield{hal_id}%
+ \setunit*{\addcomma\addspace}%
+ \printfield{url}%
+ \setunit*{\addcomma\addspace}%
+ \printfield{repository}%
+ \setunit*{\addcomma\addspace}%
+ \printfield{swhid}%
+}
+
+\newbibmacro*{swrelated}{%
+ \iffieldundef{related}%
+ {}%
+ {\usebibmacro{related}}%
+}
+
+%
+% Formatting the entries
+%
+
+\DeclareBibliographyDriver{software}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \iftoggle{bbx:swlabels}{\bibstring{software}{\addspace}}{}%
+ \usebibmacro{swtitleauthoreditoryear}%
+ \newunit\newblock%
+ \usebibmacro{licenses}%
+ \newunit\newblock%
+ \usebibmacro{swids}%
+ \newunit\newblock%
+ \usebibmacro{swrelated}%
+ \usebibmacro{finentry}}
+
+\DeclareBibliographyDriver{softwareversion}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \iftoggle{bbx:swlabels}{\bibstring{swversion}\addspace}{}%
+ \usebibmacro{swsubtitleauthoreditoryear}%
+ \newunit\newblock%
+ \usebibmacro{licenses}%
+ \newunit\newblock%
+ \usebibmacro{swids}%
+ \newunit\newblock%
+ \usebibmacro{swrelated}%
+ \usebibmacro{finentry}}
+
+\DeclareBibliographyDriver{softwaremodule}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \iftoggle{bbx:swlabels}{\bibstring{swmodule}\addspace}{}%
+ \usebibmacro{swsubtitleauthoreditoryear}%
+ \newblock\newblock%
+ \usebibmacro{licenses}%
+ \newunit\newblock%
+ \usebibmacro{swids}%
+ \newunit\newblock%
+ \usebibmacro{swrelated}%
+ \usebibmacro{finentry}}
+
+\DeclareBibliographyDriver{codefragment}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \iftoggle{bbx:swlabels}{\bibstring{swexcerpt}\addspace}{}%
+ \usebibmacro{codefragmenttitleauthoreditoryear}%
+ \newunit\newblock%
+ \usebibmacro{licenses}%
+ \newunit\newblock%
+ \usebibmacro{swids}%
+ \newunit\newblock%
+ \usebibmacro{swrelated}%
+ \usebibmacro{finentry}}