blob: ccf5fcd16ebe8a0cb825d4cc36f8cd21d3ff461e (
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
|
%% Copyright 2016-… Maïeul Rouquette
%
% 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 Maïeul Rouquette
% This work consists of the files claves.dbx, claves.bbx
% 0. Preamble
\ProvidesFile{claves.dbx}[2017/04/09 v1.2.0 biblatex bibliography style (MR)]
\ifdef{\biblatexmultipledm@bibstyle}
{\RequireBibliographyStyle{\biblatexmultipledm@bibstyle}}
{\RequireBibliographyStyle{verbose}}
\RequirePackage{xpatch}
% 1. Tools to declare new clavis
\newcommand{\AddBiblatexClavis}[1]{%
\appto\biblatex@claves{#1,}%
\DeclareStyleSourcemap{%
\maps[datatype=bibtex]{%
\map[overwrite]{%
\step[fieldsource=#1,final]%
\step[fieldset=claves,fieldvalue={\string\multiclavesseparator\space\string\clavisformat{#1}\string\clavisseparator{}},append]%
\step[fieldset=claves,origfieldval, append]
}%
\map[overwrite]{%
\step[fieldsource=entrykey,match=\regexp{^#1$},final]
\step[fieldset=claves_definition, origfieldval]
}%
}%
}%
}
% 2. Format
\newcommand{\multiclavesseparator}{\addsemicolon\ifpunct{\addspace}{}}
\newcommand{\clavisseparator}{\addspace}
\DeclareFieldFormat{claves}{\mkbibparens{#1}}
\DeclareFieldFormat{claves_definition}{\clavisformat{#1}}
\newcommand{\clavisformat}[1]{#1}
% 3. Patching macro standard to add claves
\newcommand{\@biblatex@claves@bibmacronotpatched}[1]{%
\PackageError{biblatex-claves}{Fail when patching `#1' bibmacro}%
}%
\xpatchbibmacro{title}
{\newunit}
{\usebibmacro{claves}}
{}
{\@biblatex@claves@bibmacronotpatched{title}}
\newbibmacro{claves}{%
\iffieldundef{claves}%
{}%
{
\nopunct%
\setunit{\addspace}%
\printfield{claves}
}%
\newunit%
}
%4. List of claves
\newcommand{\citeallclaves}{\nocite{\biblatex@claves}}
\newcommand{\@biblatex@claves@bibdrivernotpatched}[1]{%
\PackageError{biblatex-claves}{Fail when patching `#1' bibdriver}%
}%
\newcommand{\clavesadddashinset}{%
\xpatchbibdriver{set}
{\booltrue{bbx@inset}}
{}%
{}%
{\@biblatex@claves@bibdrivernotpatched{claves}}%
}
\defbibenvironment{claves}%Inspired from shorthand environment
{\list
{\printtext[claves_definition]{\printfield[labelwidth]{entrykey}}}
{\setlength{\labelwidth}{\shorthandwidth}%
\setlength{\leftmargin}{\labelwidth}%
\setlength{\labelsep}{\biblabelsep}%
\addtolength{\leftmargin}{\labelsep}%
\setlength{\itemsep}{\bibitemsep}%
\setlength{\parsep}{\bibparsep}%
\renewcommand*{\makelabel}[1]{##1\hss}%
\renewcommand{\entrysetpunct}{\endgraf}%Break between set of an enty
\clavesadddashinset%Add the dash inside set (modify default style)
}%
}
{\endlist}
{\item}
\DeclareSortingScheme{claves}{
\sort{
\field{entrykey}
}
}
%5. Inheritance
\DeclareDataInheritance{*}{*}{%
\noinherit{claves_definition}%
}%
\DeclareDataInheritance{*}{inbook}{%
\noinherit{claves}%
}%
\endinput
|