summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/biblatex-claves/claves.bbx
blob: 2b8a9fa74468a729ffb8f79699f782e1a9432ffd (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
%% 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}[2016/09/11 v1.0.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#1\string\clavisseparator{}},append]%
  			\step[fieldset=claves,origfieldval, append]
  			}%
    }%
  }%
  
}

% 2. Format
\newcommand{\multiclavesseparator}{\addsemicolon\ifpunct{\addspace}{}}
\newcommand{\clavisseparator}{\addspace}
\DeclareFieldFormat{claves}{\mkbibparens{#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
     {\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}
  }
}

\endinput