summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/cnltx/cnltx.bbx
blob: 16b887ab95c94130cd8d2ab90d5061330dc014a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
\@ifclassloaded{cnltx-doc}{}{%
  \GenericError
    {(cnltx.bbx)\@spaces\@spaces\@spaces\@spaces}
    {cnltx bibliography style error: invalid class}
    {See the cnltx bundle documentation for explanation.}
    {%
      The `cnltx' bibliography style can only be used with the `cnltx-doc'
      document class%
    }%
}
\ProvidesFile{cnltx.bbx}[\cnltx@@date\space \cnltx@@version\space \cnltx@@info]

\RequireBibliographyStyle{alphabetic}
\ExecuteBibliographyOptions{block=ragged}

\DeclareBibliographyDriver{latex}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author}%
  \usebibmacro{maintainer}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{title+subtitle}%
  \printfield{version}%
  \setunit{\addcomma\addspace}%
  \usebibmacro{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}%
    }%
  }%
}

\newbibmacro*{maintainer}{%
  \printtext{%
    \ifnameundef{maintainer}
      {}
      {%
        \addcomma\addspace
        \ifnumgreater{\value{maintainer}}{1}
          {\GetTranslation{cnltx-maintainers}}
          {\GetTranslation{cnltx-maintainer}}%
        \addcolon\addspace
        \printnames{maintainer}%
      }%
  }%
}

\DeclareNameAlias[package]{maintainer}{default}
\DeclareNameAlias[class]{maintainer}{default}
\DeclareNameAlias[bundle]{maintainer}{default}

\DeclareIndexNameAlias[package]{maintainer}{default}
\DeclareIndexNameAlias[class]{maintainer}{default}
\DeclareIndexNameAlias[bundle]{maintainer}{default}

\DeclareFieldFormat[package]{title}{\pkg*{#1}}
\DeclareFieldFormat[class]{title}{\cls*{#1}}
\DeclareFieldFormat[bundle]{title}{\bnd*{#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}}%
}

\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/10/04 v0.7a - added drivers `@class' and `@bundle'