summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/biblatex-gb7714-2015/example/updatehistoryold.tex
blob: 19bf26f12e527a2a8dad4d88df22e6f1ec7373f4 (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
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242

%============================
\updateinfo[2018-01-20]{update to version 1.0j}\label{up:180120}
\begin{enumerate}
\item 增加gbtype选项用于控制是否输出题名后的标识符,见\ref{sec:added:opt} 节。
\item 进一步修改了版本判断机制,以使最新版本的兼容性更强。
\item 根据刘小涛的需求和建议,增加了gbnamefmt选项用于控制姓名的大小写和输出格式,同时根据zotero从cnki识别输出中文文献姓名中带逗号的情况做了兼容性处理,见\ref{sec:opt:namefmt}节。
\item 为统一样式增加的选项,将原来的align选项修改为gbalign。
\item 通过正确使用nameyeardelim相关命令,修正了作者年制,标注和著录表中的中作者与年份之间的标点符号。
\item 根据ghiclgi的建议,增加了yearcite命令以满足,作者年制中作者已经给出仅需要年份信息而不需要页码信息的情况,
    说明和测试见\ref{sec:test:book},\ref{sec:cite:cmd:test}节。
\end{enumerate}

%============================
\updateinfo[2017-11-21]{update to version 1.0i}\label{up:171121}
\begin{enumerate}
\item 因为biblatex版本升级,3.8及以上版的set类型不再复制第一个子条目的信息,因此增加使用关联条目的解决方案,详见
\ref{sec:multilan:implement}节。

\item 修正了一个liubenyuan发现的bug。当标题中含有\verb|\LaTeX{}|这样的宏时,cjk判断函数出错。这个问题是这样的,
    因为在cjk判断函数中,使用了xtring的StrChar函数来抽取字符,但这个函数默认情况下需要其参数完全展开。因为\verb|\LaTeX{}|宏比较复杂,展开时会出现问题。设置该函数不展开或展开一次,都可以解决判断出错的问题。比如:
    \begin{texlist}
    \expandarg
    %
    \StrChar{english}{1}[\tempa]%
    \tempa

    \StrChar{中文}{1}[\tempa]%
    \tempa

    \StrChar{english \LaTeX{} abc}{1}[\tempa]%
    \tempa
    \end{texlist}
    但解决的是直接给出文本的情况,在biblatex使用中需要用 thefield 取出文本,显然 thefield 不止展开一次,因此不展开或者展开一次,都会出现问题,所以无解。只能从另外一个角度出发。考虑到动态数据修改时,也可以利用正则表达式抽取数据,因此利用它来将title 信息的第一个非特殊符号字符抽取出来,放到userd 中用于cjk判断,这样就避开了\verb|\LaTeX{}|展开的问题。
    
\item 针对biblatex3.8a的更新做了兼容性处理,主要是修改版本判断和处理机制,替换新的宏包选项,替换新的排序格式命令。

\item 重写了范围解析函数。

\end{enumerate}

\updateinfo[2017-04-11]{update to version 1.0h}\label{up:170411}
\begin{enumerate}
\item texlive2017中biblatex3.7对于authoryear样式中的date+extrayear宏有一定的修改,从原来texlive2016中的命令printdateextralabel 转换到了printlabeldateextra。因此做修改。

    如下的简单方法似乎有点问题:
    \begin{texlist}
    \let\printdateextralabel=\printlabeldateextra
    \end{texlist}

\item 根据(zjsdut@163.com)发现的问题,修改一个bug,感谢。当online 类型仅有url 信息时,url前面多了一个点。这是modifydate宏设计中printtext位置导致标点异步处理机制失效所产生现象。因此对newbibmacro*\{modifydate\}宏作出修改。

\item 增加一个选项gbnoauthor。当给出选项gbnoauthor=true时,作者年制中当作者缺省时,使用佚名或noauthor代替,即将佚名或noauthor作为作者处理。默认情况下gbnoauthor=true不处理,即当无作者进行处理。同时也修改了中英文排序判断和佚名代替的机制。

\item 修改多语言参考文献间的分割符号,即将par改为newline,避免采用gb7714-2015的项对齐方式时,不同语言的参考文献间的分段导致没有缩进。(测试结果见:\ref{sec:align:test}节的项对齐方式)

    \begin{texlist}
    %\renewcommand*{\entrysetpunct}{\adddot\par\nobreak}
    \renewcommand*{\entrysetpunct}{\adddot\newline\nobreak}
    \end{texlist}

\item Zeping Lee 发现了一个小问题,感谢,一直没有注意到这个问题。这里做出修改:主要是作者年制中,期刊析出的文献中,当卷信息不存在时,期刊名和期是连在一起的,而不是中间有个逗号,例如GB/T 7714-2015 中第10.2.4 节中的“刘彻东条目”。结果测试见:\ref{sec:article:novol}节)。

\item wayne508同学提出了一个需求,就是不希望使用出版项缺省时的默认处理,即不使用[出版地不详],[出版者不详],[S.l.],[s.n.]等填充,因此增加了一个宏包选项gbpub,当等于false时,去掉自动处理,使用biblatex 的标准处理方式。

\end{enumerate}

%============================
\updateinfo[2017-02-26]{update to version 1.0g}\label{up:170226}
\begin{enumerate}
\item 进一步增加兼容性,支持条目类型比如MASTERSTHESIS,PHDTHESIS,www,electronic,standard,techreport,conference等,支持本样式增加的newspaper类型。因此在bib文件中可以直接使用这些条目类型。具体的测试详见\ref{sec:entrytype:compatibility}节。

    为了实现兼容,主要从三个方面进行修改,包括用户层数据源映射,样式层的数据源映射,驱动。

    因为biblatex提供的一些类型的别名的处理是在驱动层数据源映射时处理,所以要实现完全的兼容,还需要在用户层或者样式层进一步处理,首先是标识符的问题。因为以前做的标识符处理时在用户层映射中,这里仍然如此。

    其次,因为biblatex标准样式在处理条目别名是在驱动层的映射中,这里面引入了一些对于gb7714样式来说不需要的信息,比如type信息,因此需要将其去掉,所以在样式层映射中进行处理。因为standard条目可能用book也可能用inbook驱动输出,所以转换过程就需要有选择。这里有两种方式可以处理,
    
    一是用域是否存在进行判断(比如booktitle域),然后分别转换为book 类型和inbook类型,
    二是直接都转换成inbook类型,然后对inbook驱动进行修改,因为inbook 驱动与book驱动的差异仅在于所析出源文献那一块,所以,在驱动中用booktitle 域进行判断,如果该域不存在,那么去掉这一块的处理,inbook驱动可以等价于book 驱动,但是这种方式中处理标识符后面的标点可能存在问题,biblatex 中处理标点的机制有很多好处,但是当样式作者在修改域格式是引入一些诸如[]之类符号时处理时比较麻烦的。这里采用第一种方式。

\item 在online类型中,公告日期改为首选用date实现,然后用enddate,当没有date 和enddate时则用eventdate输出。

\item 为方便bib文件生成,构建可以从gb7714-2015格式的参考文献表文本转bib 文件的perl 程序,利用它可以批量解析参考文献信息并转换为bib数据源文件。详见:\href{run:./gb7714texttobib.pl}{gb7714texttobib.pl},
    测试文件见:\href{run:./gb7714texteg.dat}{gb7714texteg.dat}。

\item 在输出标识符的usera域格式中考虑标准样式的url选项,以便实现对是否打印url和urldate的控制。这个需求是Wenbo Sheng提出的,这里做出修改。

\item 在一些条目类型如inbook等的标识符后面(如[M]//)加入一个不可断行短空格,使紧跟其后的单词能正确断行,当然也可以增加一个可断行的短空格addthinspace,方便直接在//后面断行。
    \begin{texlist}
    \usebibmacro{title}%
    \printtext{\texttt{//}\addnbthinspace}%%\texttt{//}
    \usebibmacro{bybookauthor}%
    \end{texlist}

\item 对参考文献的一些域中存在的一些特殊字符比如\&,\%,\#等进行处理,方法是利用动态数据修改。同时因为texlive2015/texlive2016中biblatex 版本的不同分别进行处理。这个需求是湘厦人提出的,这里做出修改。


\end{enumerate}

%============================
\updateinfo[2016-12-31]{update to version 1.0f}\label{up:161231}
\begin{enumerate}
\item 利用biblatex提供的iffieldequalstr函数替换用于判断note域值等于new 或standard 的函数。

\item 之前1.0e版增加gbalign选项的时候,没有测试对texlive2015的兼容性,所以导致一些错误。因为texlive2015的biblatex3.0版本的DeclareBibliographyOption 命令定义选项时不像texlive2016的biblatex3.4版的是带类型说明的。所以做出一定的处理,把该命令分两个版本进行设置。同时需要注意新定义的参考文献表环境在texlive2015中的biblatex3.0中无效且出错,所以直接去掉,因此文献表的标签的项对齐效果在texlive2015中的biblatex3.0 版中无法实现。

\item 之前1.0e版解决编组符号包围的责任者的中英文判断问题的时候,没有测试对texlive2015的兼容性,所以导致一些错误。因为使用了xstring宏包的功能,但texlive2015的biblatex3.0版本不默认加载xstring宏包,所以在修改样式文件,在其中加载一下该宏包。
\begin{texlist}
\RequirePackage{xstring}%为兼容texlive2015的biblatex3.0不加载xstring包的问题
\end{texlist}

\end{enumerate}

%============================
\updateinfo[2016-12-07]{update to version 1.0e}\label{up:161207}
\begin{enumerate}
\item 应海阔天空和xmtangjun等朋友的要求,在同一文献中可以使用上标或非上标的标注方式,修改顺序编码制的标注样式文件,去掉parencite命令的上标模式,恢复非上标方式。这样可以在同一文章中使用cite命令标注上标,而parencite命令标注非上标。而作者年制没有这一问题,不做修改。

\item 给宏包增加了一个选项gbalign,用于控制顺序编码制的参考文献表的标签对齐方式,默认是right即右对齐,可以设置left即左对齐,也可以设置gb7714-2015,即以各条参考文献自身为基准对齐实现对齐。增加一个选项,真正实现起来并不复杂,但在未明白其运行机制之前尝试了好长时间,显得很麻烦。


\item map中当有append选项时也需要overwrite选项,这不知道是不是texlive 2016 中biber 升级后的原因。之前使用texlive2015的时候没有问题。所以修改为:

\item 顺序制中,出版项后没有日期的情况下,出现逗号这是有问题的,所以做修改。

\item 当urldate域给出的信息不全时,比如只有年和月,而没有日,那么就需要进行判断,只输出存在的信息,因此对urldate域格式做修改。


\item 当责任者等需要判断中英文的信息是用编组符号包含的时候,原来的CJK判断函数会出现问题,所以利用xstring宏包做一定的修改,修改完成后可以应对信息中存在编组的情况。
\end{enumerate}

%============================
\updateinfo[2016-11-24]{update to version 1.0d}
\begin{enumerate}
\item 用于usera域的gbtypeflag域打印格式,明明在aritle/book类中没有问题,但在beamer中就会出现问题,多出一个点了。到现在还没有搞明白怎么会多出点来,printtext命令明明没有输出点,不像S.l.还有一个点的输出,这里只有]符号,但就是多了一个点。从最后修改成功看,这里就是多了一个点,而且是literal period,所以后面的点无法覆盖它,所以需要先用adddot命令将其转换为缩写的点,而且似乎用isdot 也不行,其原因还得再分析分析。

还需要注意的是如果gbtypeflag域格式中不直接输出[],而用mkbibbrackets也能解决这些个问题,但是会因为ctex对于中英文间空格的的默认处理加入空格,所以只能采用上面的方式。

还有beamer类中很多不同域之间的空格似乎比其它类中更宽,不知道原因,难道是beamer重新定义了\textbackslash space命令? 这是beamer中做patch后导致的,biblatex升级后已经消除。

\item 在参考文献表中加入逐字文本(原样文本,如实文本),也就是直接插入文本信息,或者用printtext插入都会导致一些问题,上面的第1点就是典型问题之一,还比如出版项缺省等问题。在有利用printtext 插入原样文本的时候,要特别注意在driver中该命令前后几行的代码后加注释,否则容易带入空格,注释后就可以消除。

\item 同样的periodical条目类型的title输出也修改了printtext[title]的结束编组位置。journaltitle域格式也加了isdot。patent 的title 也修改了printtext[title]的结束编组位置。

\item 修改了location+institution+date的s.n.的处理方式与publisher+location+date的方式类似。中英文判断也往外放到一层,与publisher+location+date一致,这样就不会出现不判断的问题。

\item 3.3版以后的family-given格式的given name用全大写代替首字母大写。
\end{enumerate}


%============================
\updateinfo[2016-11-14]{update}\label{up:20161114}
\begin{enumerate}
\item 很早之前思考的利用biber的动态修改数据功能来进行佚名问题处理是合理的,因为biblatex不能在tex处理过程中添加域的信息,所以任何要进入域的信息都需要在运行biber命令之时或者之前处理。利用正则表达式可以完成一定的区分,尽管可能有一些特殊情况无法涵盖,但如下的处理可以基本正确的实现功能。

\item 关于文种分集排序的问题,之前要求用户自己往userb域填信息,现在通过如下处理,可以避免,也是用的正则表达式判断,但有些特殊情况可能会有问题,出现问题的话,手动在bib源文件中添加userb域信息是可以解决的。到这里为止,在使用本样式文件时,除了必须要输入的引文的信息外,其它信息都不需要再输入了,包括原来就已经处理的usera域(用于添加文献类型标识符的),这里的userb域用于文种分集排序的,都不必输入了。v1.0k版本以后改用language域代替userb域做处理。

\item 增加了一个yearpagescite命令用于处理: 作者年制文中已有作者只需要年份和页码的情况,而顺序制的情况下该命令与pagescite命令作用相同。

\item 在出版者缺省的情况下,当出版者后面没有更多信息的情况下,缺省字符串后面应该有一个点,因此做修正。


\item 反向链接,backref的格式并没有要求,但考虑到中文环境还是将其格式改一下,因此修改英文本地化字符串为“引用页”。


\item 在处理姓名相关的问题时,利用DeclareNameFormat的方式控制需要的姓和名的前后顺序,当maxbibnames和maxcitenames不一致时,可能用到last-first/first-last(biblatex3.2以前的版本)/family-given/given-family(3.3以后版本),其中第一个姓名和后面姓名的姓和名的前后顺序时不同的。可以直接利用其中的name:first-last和name:last-first或name:family-given和name:given-family宏做修改控制具体姓名成分的格式,而避免重定义DeclareNameFormat格式。

\item 作者年制区分文献表和引用中的作者名数量,引用相关的选项设置需要放到cbx 文件中,否则可能失效。同时因为一些特殊情况下,姓名数量截短为1个的引用标签,可能无法区分文献,所以默认情况下,biblatex会增加作者数量用于区分,这是因为uniquelist会自动重设maxcitenames和mincitenames,因此修改uniquelist选项为minyear,明确在年份也一样的情况下再利用增加姓名进行区分。
\end{enumerate}

%============================
\updateinfo[2016-11-11]{update}
\begin{enumerate}
\item 说明文档增加了版本和修改时间信息,修正了一些错误和不妥的说法,增加了一些说明比如报纸版次,报告条目域格式等,去掉一些不必要的注释,简化各样式文件内容。

\item 由Harry Chen提议,将english本地化文件中的参考文献标题信息改为中文的,因为本样式多在中文环境下使用,修改为中文后,printbibliography命令中不提供title信息的情况下,参考文献列表标题默认为参考文献。感谢Harry Chen在github上的commit!

\item 当作者名只有一个,但又有and others表示多个作者的时候,标准样式中作者名和et al.之间是空格而不是逗号链接,但gb7714-2015要求在等之前用逗号,所以做出修改。

\item 给report和manual驱动添加了译者域,这在实际中是用的到的,同时打印version域的格式也做了处理,并且修改中文判断函数,增加了注释符以避免带入空格,这个问题在之前体现为版本域前多了一个空格。


\item 把作者年制的参考文献列表和引用中的作者名数量做区分。列表中最大为3 个,引用中最大为1个。(这里还有点问题,进一步修改见2016-11-14的更新。)
\end{enumerate}

%============================
\updateinfo[2016-10-22]{update}
\begin{enumerate}
\item 修改版本判断机制,版本3.3以后的版本设置判断标签iftexlivesix为真,采用新的姓名处理机制。
\end{enumerate}

%============================
\updateinfo[2016-10-11]{update}
\begin{enumerate}
\item 真的是需求推动事物发展,秋平同学提出需要把顺序编码制的参考文献序号标签设为左对齐。所以增加标签左对齐功能。左对齐还是右对齐其实还是看个人喜好,个人其实觉得右对齐挺好的。

\item 测试了老电脑装的texlive2014,没有问题通过。
\end{enumerate}

%============================
\updateinfo[2016-10-04]{update}
\begin{enumerate}
\item 广州的秋平同学使用更新后的biblatex3.6版出错。原因在于bbx文件中的版本判断只有3.4和其它,所以增加对于3.6 的判断。这个问题以后可能还会出现因为biblatex会不断的更新,所以需要设计一个更合理的判断,这个等实现以后再更新。

\item 在说明文档中增加了一些说明,修改了一些错别字。
\end{enumerate}

%============================
\updateinfo[2016-07-20]{update}
\begin{enumerate}
\item 去掉texlive2016和texlive2015选项,直接根据biblatex宏包的版本进行判断。

\item 增加了unpublished条目类型驱动,并按报告report进行处理,但文献标识码用Z表示。
\end{enumerate}

%============================
\updateinfo[2016-07-01]{update}
\begin{enumerate}
\item 增加了pagescite命令,实现GB/T7714-2015对于引用标注中输出页码的特殊格式要求。

\item 测试了texlive2015,texlive2016,发现其中关于名字域格式的差异,并作出修改。增加了两个宏包选项,一个是texlive2016,另一个是texlive2015。使用texlive2016版本时,带选项texlive2016即可,其它情况带选项texlive2015
\end{enumerate}

%============================
\updateinfo[2016-06-20]{update}
\begin{enumerate}
\item 利用判断CJK字符的函数,判断条目中著者,译者域是否是CJK字符,做相应的处理。

\item 利用范围解析函数,可对卷期等进行解析,并按GB/T7714-2015要求输出。
\end{enumerate}

%============================
\updateinfo[2016-05-20]{update}
基本完成样式文件,实现的功能包括:
\begin{enumerate}
\item 实现GB/T7714-2015要求的参考文献著录格式。

\item 利用map功能使录入参考文献数据时不需要文献类别标识符。

\item 多语言文献的处理方法和条目格式。
\end{enumerate}