% -------------------------------------------------------------------------- % the CNLTX bundle % % LaTeX source code and output % % -------------------------------------------------------------------------- % Clemens Niederberger % Web: https://github.com/cgnieder/cnltx/ % E-Mail: contact@mychemistry.eu % -------------------------------------------------------------------------- % Copyright 2013--2019 Clemens Niederberger % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 % of this license or (at your option) any later version. % The latest version of this license is in % http://www.latex-project.org/lppl.txt % and version 1.3 or later is part of all distributions of LaTeX % version 2005/12/01 or later. % % This work has the LPPL maintenance status `maintained'. % % The Current Maintainer of this work is Clemens Niederberger. % -------------------------------------------------------------------------- % If you have any ideas, questions, suggestions or bugs to report, please % feel free to contact me. % -------------------------------------------------------------------------- \RequirePackage{cnltx-base} \ProvidesFile{cnltx.bbx}[\cnltx@@date\space \cnltx@@version\space \cnltx@@info] \cnltx@load@modules{example,tools,translations,names} \RequireBiber \RequireBibliographyStyle{alphabetic} \ExecuteBibliographyOptions{block=ragged,useprefix=true} \DeclareBibliographyDriver{latex}{% \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author}% \usebibmacro{maintainer}% \setunit{\labelnamepunct}\newblock \usebibmacro{title+subtitle}% \usebibmacro{version+date}% \newunit\newblock \usebibmacro{url+urldate}% \newunit\newblock \usebibmacro{finentry}% } \DeclareBibliographyAlias{package}{latex} \DeclareBibliographyAlias{class}{latex} \DeclareBibliographyAlias{bundle}{latex} \newbibmacro*{title+subtitle}{% \iffieldundef{title}{}{% \printfield{title}% \ifbibindex{\indexfield{title}}{}% \setunit{\adddot\addspace}% \iffieldundef{subtitle}{}{% \printfield{subtitle}% \setunit{\adddot\addspace}% }% }% } \NewBibliographyString{version} \NewBibliographyString{or-newer} \DefineBibliographyStrings{english}{ version = {version} , or-newer = {or newer} } \DefineBibliographyStrings{german}{ version = {Version} , or-newer = {oder neuer} } \newbibmacro*{version+date}{% \iffieldundef{version}{}{% \bibstring{version}% \addspace \printfield{version}% \addcomma\addspace }% \usebibmacro{date}% \addspace \bibstring[\mkbibparens]{or-newer}% \setunit{\adddot\addspace}% } \newbibmacro*{maintainer}{% \printtext{% \ifnameundef{maintainer} {} {% \addcomma\addspace \ifnumgreater{\value{maintainer}}{1} {\GetTranslation{cnltx-maintainers}} {\GetTranslation{cnltx-maintainer}}% \addcolon\addspace \printnames{maintainer}% }% }% } \renewcommand*\mkbibnamefamily[1]{\cnltx@write@lastname{#1}} \renewcommand*\mkbibnamegiven[1]{\cnltx@write@firstname{#1}} \renewcommand*\mkbibnameprefix[1]{\cnltx@write@lastname{#1}} \DeclareNameAlias[package]{maintainer}{default} \DeclareNameAlias[class]{maintainer}{default} \DeclareNameAlias[bundle]{maintainer}{default} \RequirePackage{translations} \DeclareTranslationFallback{cnltx-maintainer}{current maintainer} \DeclareTranslation{English}{cnltx-maintainer}{current maintainer} \DeclareTranslation{German}{cnltx-maintainer}{aktueller Maintainer} \DeclareTranslationFallback{cnltx-maintainers}{current maintainers} \DeclareTranslation{English}{cnltx-maintainers}{current maintainers} \DeclareTranslation{German}{cnltx-maintainers}{aktuelle Maintainer} \DeclareFieldFormat[package]{title}{\pkg*{#1}} \DeclareFieldFormat[class]{title}{\cls*{#1}} \DeclareFieldFormat[bundle]{title}{\bnd*{#1}} \DeclareFieldFormat[package]{version}{#1} \DeclareFieldFormat[class]{version}{#1} \DeclareFieldFormat[bundle]{version}{#1} \DeclareIndexFieldFormat[package]{title}{% \ifstrequal{#1}{\KOMAScript} {\pkgidx[KOMA-Script]{\KOMAScript}} {\pkgidx{#1}}% } \DeclareIndexFieldFormat[class]{title}{% \ifstrequal{#1}{\KOMAScript} {\clsidx[KOMA-Script]{\KOMAScript}} {\clsidx{#1}}% } \DeclareIndexFieldFormat[bundle]{title}{% \ifstrequal{#1}{\KOMAScript} {\bndidx[KOMA-Script]{\KOMAScript}} {\bndidx{#1}}% } \DeclareIndexFieldFormat[package]{indextitle}{% \ifstrequal{#1}{\KOMAScript} {\pkgidx[KOMA-Script]{\KOMAScript}} {\pkgidx{#1}}% } \DeclareIndexFieldFormat[class]{indextitle}{% \ifstrequal{#1}{\KOMAScript} {\clsidx[KOMA-Script]{\KOMAScript}} {\clsidx{#1}}% } \DeclareIndexFieldFormat[bundle]{indextitle}{% \ifstrequal{#1}{\KOMAScript} {\bndidx[KOMA-Script]{\KOMAScript}} {\bndidx{#1}}% } \DeclareIndexNameFormat{cnltx}{% \nameparts{#1}% \expandafter\notblank\expandafter{\namepartgiven}{% \usebibmacro{index:entry}{\index}{% \namepartfamily, \namepartgiven \actualoperator \expandafter\notblank\expandafter{\namepartprefix} {\cnltx@write@lastname\namepartprefix\space} {}% \cnltx@write@lastname\namepartfamily, \cnltx@write@firstname\namepartgiven }% }{% \usebibmacro{index:entry}{\index}{% \namepartfamily \actualoperator \expandafter\notblank\expandafter{\namepartprefix} {\cnltx@write@lastname\namepartprefix\space} {}% \cnltx@write@lastname\namepartfamily }% }% } \DeclareIndexNameAlias{labelname}{cnltx} \DeclareIndexNameAlias{author}{cnltx} \DeclareIndexNameAlias{maintainer}{cnltx} \DeclareIndexNameAlias{labelname}{cnltx} \DeclareIndexNameAlias{author}{cnltx} \DeclareIndexNameAlias{maintainer}{cnltx} \DeclareIndexNameAlias{labelname}{cnltx} \DeclareIndexNameAlias{author}{cnltx} \DeclareIndexNameAlias{maintainer}{cnltx} \DeclareFieldFormat[package]{subtitle}{\mkbibemph{#1}} \DeclareFieldFormat[class]{subtitle}{\mkbibemph{#1}} \DeclareFieldFormat[bundle]{subtitle}{\mkbibemph{#1}} \DeclareLabelname[package,class,bundle]{% \field{shortauthor} \field{author} \field{maintainer} \field{shorteditor} \field{editor} \field{translator} } \DeclareDriverSourcemap[datatype=bibtex]{ \map{ \step[fieldsource=info, fieldtarget=subtitle] } } \endinput HISTORY: 2013/09/14 v0.4 - first version added to the bundle 2013/10/04 v0.7a - added drivers `@class' and `@bundle' 2013/11/22 v0.9 - made independent from the `cnltx-doc' class 2014/03/11 v0.11 - change name format so that names are printed according to the format of the \newname commands from the `tools' module; this is going to need tests if it really is consistent for different types of name formats (prefixes, affixes...) 2016/03/11 v0.13b - adapt bib style to biblatex v3.3 2017/02/04 v0.14 - new bibmacro `version+date', use said macro in the `latex' driver 2019/11/01 v0.15 - fix problems with name format