summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-jmw.cbx
blob: 9b21ea69f4e0441ec1eac994c3017eabe6d2c90e (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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
%%
%% ---------------------------------------------------------------
%% css.cbx --- A citation style of journal of management world in china
%% modified from gb7714-2015
%% Maintained by huzhenzhen
%% E-mail: hzzmail@163.com
%% Released under the LaTeX Project Public License v1.3c or later
%% ---------------------------------------------------------------
%%
%%用法:类似于标准的样式在biblatex加载时设置样式
%%文献表正常处理,标注命令主要用cite和textcite

\ProvidesFile{chinese-jmw.cbx}[v1.0a a biblatex citation style for jmw]

%==================================================
%加载gb样式
%==================================================
\RequireCitationStyle{gb7714-2015ay} %


%
%   增加一个控制标注中标点是英文还是中文的选项
%   20220222,v1.0a,hzz
\DeclareBibliographyOption{gbcitepunctcn}[true]{%biblatex低版本
  \ifstrequal{#1}{false}{\execgbpunctencite}{}}

\def\gbpunctcommacite{,}%
\def\gbpunctmarkcite{、}%
\def\gbpunctsemicoloncite{;}%
\def\gbpunctparenlcite{(}%
\def\gbpunctparenrcite{)}
\def\execgbpunctencite{%
\def\gbpunctcommacite{\addcomma\addspace}%
\def\gbpunctmarkcite{\addcomma\addspace}%
\def\gbpunctsemicoloncite{\addsemicolon\addspace}%
\def\gbpunctparenlcite{(}%
\def\gbpunctparenrcite{)}
}

%==================================================
%选项设置
%==================================================
\ExecuteBibliographyOptions{
    maxcitenames=2,
    mincitenames=1,
}

\DeclareDelimFormat[textcite]{delimandincitecn}{和}%\addcomma\space
\DeclareDelimFormat[parencite]{delimandincitecn}{\gbpunctmarkcite}%\addcomma\space
\DeclareDelimFormat[textcite]{delimandincite}{和}%\addcomma\space
\DeclareDelimFormat[parencite]{delimandincite}{ and }%\addcomma\space
\DeclareDelimFormat[textcite]{delimandothersincite}{\str@andotherscn}%\addcomma\space
\DeclareDelimFormat[parencite]{delimandothersincite}{et al\adddot}%\addcomma\space

\DefineBibliographyStrings{english}{
    andincitecn = {\printdelim{delimandincitecn}},
    andincite   = {\printdelim{delimandincite}},
    %andothersincitecn={\str@andotherscn},
    andothersincite={\printdelim{delimandothersincite}},
}

%==================================================
%引用命令设置,主要用cite和textcite
%包括标点设置
%==================================================
\renewcommand*{\multicitedelim}{\gbpunctsemicoloncite}%\addsemicolon\addspace;
\renewcommand*{\textcitedelim}{%
  \iffinalcitedelim
    {\ifnumgreater{\value{textcitetotal}}{2}
       {}{}%\iftextcitepunct{\finalandsemicolon}{\finalandcomma}
     \addspace\gbpunctmarkcite}%\addspace\bibstring{andincitecn}
    {\iftextcitepunct{\addsemicolon\space}{\addspace\gbpunctmarkcite}}%\addcomma
}%\space

\DeclareDelimFormat[textcite]{nameyeardelim}{\addspace}%\addcomma\space
\DeclareDelimFormat[parencite]{nameyeardelim}{\gbpunctcommacite}
\DeclareDelimFormat[textcite]{andothersdelim}{\addspace}%
\DeclareDelimFormat[parencite]{andothersdelim}{\iffieldequalstr{userf}{chinese}{}{\addspace}}%


%去掉footfullcite后面的点
%注意由于usedriver中biblatex自动把\finenty设置为空,所以userdriver最后本来没有标点
%默认了加了period所以把它去掉
\renewcommand{\bibfootnotewrapper}[1]{%
  \bibsentence#1}%


%标注压缩时,直接用date+extradate代替extradate实现2006a,2006b的效果
%\DeclareDelimFormat*{compcitedelim}{\gbpunctmarkcite}%\addcomma\addspace
\newbibmacro*{cite:extradate}{%
  \iffieldundef{extradate}
    {}
    {\printtext[bibhyperref]{\addspace\printlabeldateextra}}}%\printfield{extradate}\printlabeldateextra \printfield{labelyear}\printfield{extradate}

%\AtEveryCite{%
%\let\parentext=\parentexttrack%
%\let\bibopenparen=(%
%\let\bibcloseparen=)}

%添加前后空格
\DeclareCiteCommand{\parencite}%[\mkbibparens]
  {\usebibmacro{cite:init}%
   \unspace\printtext{\gbpunctparenlcite}\usebibmacro{prenote}}%\addspace
  {\usebibmacro{citeindex}%
   \usebibmacro{cite}}
  {}
  {\usebibmacro{postnote}%
  \gbpunctparenrcite}%\addspace

%原版
%\DeclareCiteCommand{\cite}[\mkbibparens]
%  {\usebibmacro{cite:init}%
%   \usebibmacro{prenote}}%)
%  {\usebibmacro{citeindex}%
%   \usebibmacro{cite}}
%  {}
%  {\usebibmacro{postnote}}

%
%添加后面空格
%\DeclareCiteCommand{\cbx@textcite}
%  {\usebibmacro{cite:init}}
%  {\usebibmacro{citeindex}%
%   \usebibmacro{textcite}}
%  {}
%  {\usebibmacro{textcite:postnote}\addspace}

\newbibmacro*{textcite}{%
  \iffieldequals{namehash}{\cbx@lasthash}
    {\iffieldundef{shorthand}
       {\ifthenelse{\iffieldequals{labelyear}{\cbx@lastyear}\AND
                    \(\value{multicitecount}=0\OR\iffieldundef{postnote}\)}
          {\setunit{\addcomma}%
           \usebibmacro{cite:extradate}}
          {\setunit{\compcitedelim}%
           \usebibmacro{cite:labeldate+extradate}%
           \savefield{labelyear}{\cbx@lastyear}}}
       {\setunit{\compcitedelim}%
        \usebibmacro{cite:shorthand}%
        \global\undef\cbx@lastyear}}
    {\ifnameundef{labelname}
       {\iffieldundef{shorthand}
          {\usebibmacro{cite:label}%
           \setunit{%
             \global\booltrue{cbx:parens}%
             \printdelim{nonameyeardelim}\unspace\gbpunctparenlcite}%\bibopenparen
           \ifnumequal{\value{citecount}}{1}
             {\usebibmacro{prenote}}
             {}%
           \usebibmacro{cite:labeldate+extradate}}
          {\usebibmacro{cite:shorthand}}}
       {\printnames{labelname}%
        \setunit{%
          \global\booltrue{cbx:parens}%
          \printdelim{nameyeardelim}\unspace\gbpunctparenlcite}%\bibopenparen
        \ifnumequal{\value{citecount}}{1}
          {\usebibmacro{prenote}}
          {}%
        \iffieldundef{shorthand}
          {\iffieldundef{labelyear}
             {\usebibmacro{cite:label}}
             {\usebibmacro{cite:labeldate+extradate}}%
           \savefield{labelyear}{\cbx@lastyear}}
          {\usebibmacro{cite:shorthand}%
           \global\undef\cbx@lastyear}}%
     \stepcounter{textcitecount}%
     \savefield{namehash}{\cbx@lasthash}}%
  \setunit{%
    \ifbool{cbx:parens}
      {\gbpunctparenrcite\global\boolfalse{cbx:parens}}%\bibcloseparen
      {}%
    \textcitedelim}}

\newbibmacro*{textcite:postnote}{%
  \usebibmacro{postnote}%
  \ifthenelse{\value{multicitecount}=\value{multicitetotal}}
    {\setunit{}%
     \printtext{%
       \ifbool{cbx:parens}
         {\gbpunctparenrcite\global\boolfalse{cbx:parens}}%\bibcloseparen
         {}}}
    {\setunit{%
       \ifbool{cbx:parens}
         {\gbpunctparenrcite\global\boolfalse{cbx:parens}}%\bibcloseparen
         {}%
       \textcitedelim}}}

\let\citet=\textcite
\let\citep=\parencite
\let\cite=\parencite