Open earthmoon opened 1 year ago
这个按默认处理吧,因为没有标准说明应该如何处理。如果需要额外的处理,可以单独调整。
这个按默认处理吧,因为没有标准说明应该如何处理。如果需要额外的处理,可以单独调整。
但是还是有个问题:这个文献在文末以Dis排序,这是对的。但是在文末,V被大写,an又没有大写。就有点突兀:
这个可以修改。
\newbibmacro*{name:gbuppercase}[4]{\bibauthorfont%
\gbcaselocalset%
\ifuseprefix%
{\usebibmacro{name:delim}{#3#1}%
\usebibmacro{name:hook}{#3#1}%
\ifdefvoid{#3}{}{%
\ifcapital%
{\mkbibnameprefix{\MakeUppercase{#3}}\isdot}%
{\mkbibnameprefix{#3}\isdot}%
\ifprefchar{}{\bibnamedelimc}}%
\ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot%
\ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital
\ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%后缀前加逗号
{\usebibmacro{name:delim}{#1}%
\usebibmacro{name:hook}{#1}%
\ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot%
\ifboolexpe{%
test {\ifdefvoid{#2}}
and
test {\ifdefvoid{#3}}}
{}{\revsdnamepunct}%
\ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital
\ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}%
\ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%%后缀前加逗号
}
或者:不使用前缀,使用选项 useprefix=false
seprefix=false
谢谢!
这个可以修改。
\newbibmacro*{name:gbuppercase}[4]{\bibauthorfont% \gbcaselocalset% \ifuseprefix% {\usebibmacro{name:delim}{#3#1}% \usebibmacro{name:hook}{#3#1}% \ifdefvoid{#3}{}{% \ifcapital% {\mkbibnameprefix{\MakeUppercase{#3}}\isdot}% {\mkbibnameprefix{#3}\isdot}% \ifprefchar{}{\bibnamedelimc}}% \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot% \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%后缀前加逗号 {\usebibmacro{name:delim}{#1}% \usebibmacro{name:hook}{#1}% \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot% \ifboolexpe{% test {\ifdefvoid{#2}} and test {\ifdefvoid{#3}}} {}{\revsdnamepunct}% \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}% \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%%后缀前加逗号 }
我搞错了,截图是以E开头排序的,让van都小写最好。
\newbibmacro*{name:gbuppercase}[4]{\bibauthorfont%
\gbcaselocalset%
\ifuseprefix%
{\usebibmacro{name:delim}{#3#1}%
\usebibmacro{name:hook}{#3#1}%
\ifdefvoid{#3}{}{%
\ifcapital%
{\mkbibnameprefix{\MakeLowercase{#3}}\isdot}%
{\mkbibnameprefix{#3}\isdot}%
\ifprefchar{}{\bibnamedelimc}}%
\ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot%
\ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital
\ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%后缀前加逗号
{\usebibmacro{name:delim}{#1}%
\usebibmacro{name:hook}{#1}%
\ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot%
\ifboolexpe{%
test {\ifdefvoid{#2}}
and
test {\ifdefvoid{#3}}}
{}{\revsdnamepunct}%
\ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital
\ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}%
\ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%%后缀前加逗号
}
\newbibmacro*{name:gbuppercase}[4]{\bibauthorfont% \gbcaselocalset% \ifuseprefix% {\usebibmacro{name:delim}{#3#1}% \usebibmacro{name:hook}{#3#1}% \ifdefvoid{#3}{}{% \ifcapital% {\mkbibnameprefix{\MakeLowercase{#3}}\isdot}% {\mkbibnameprefix{#3}\isdot}% \ifprefchar{}{\bibnamedelimc}}% \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot% \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%后缀前加逗号 {\usebibmacro{name:delim}{#1}% \usebibmacro{name:hook}{#1}% \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot% \ifboolexpe{% test {\ifdefvoid{#2}} and test {\ifdefvoid{#3}}} {}{\revsdnamepunct}% \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}% \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%%后缀前加逗号 }
牛,搞定!
您好。我又发现一个问题:
Pinyin.pm
,van
被小写了还是参与了排序。大部分的期刊不使用前缀进行排序
\documentclass{article}
\usepackage{ctex}
\begin{filecontents}[force]{\jobname.bib} @article{mikkonen2018, title = {Geochemical Indices and Regression Tree Models for Estimation of Ambient Background Concentrations of Copper, Chromium, Nickel and Zinc in Soil}, author = { family=Graaff, given=Robert, prefix=van de, useprefix=true and Clarke, Bradley O. and Dasika, Raghava and Wallis, Christian J. and Reichman, Suzie M.}, date = {2018-11-01}, journaltitle = {Chemosphere}, volume = {210}, pages = {193--203}, issn = {0045-6535}, doi = {10.1016/j.chemosphere.2018.06.138}, } @article{first, title = {The firstl}, author = { Go}, date = {6}, journaltitle = {5}, volume = {4}, pages = {3}, issn = {2}, doi = {1}, } @article{second, title = {The firstl}, author = { Rr}, date = {6}, journaltitle = {5}, volume = {4}, pages = {3}, issn = {2}, doi = {1}, } \end{filecontents}
\usepackage[style=gb7714-2015ay]{biblatex} %,defernumbers=true \addbibresource{\jobname}
\begin{document} \newbibmacro{name:gbuppercase}[4]{\bibauthorfont% \gbcaselocalset% \ifuseprefix% {\usebibmacro{name:delim}{#3#1}% \usebibmacro{name:hook}{#3#1}% \ifdefvoid{#3}{}{% \ifcapital% {\mkbibnameprefix{\MakeLowercase{#3}}\isdot}% {\mkbibnameprefix{#3}\isdot}% \ifprefchar{}{\bibnamedelimc}}% \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot% \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%后缀前加逗号 {\usebibmacro{name:delim}{#1}% \usebibmacro{name:hook}{#1}% \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot% \ifboolexpe{% test {\ifdefvoid{#2}} and test {\ifdefvoid{#3}}} {}{\revsdnamepunct}% \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}% \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%%后缀前加逗号 } text\nocite{}
\printbibliography
\end{document}
输出:
![image](https://github.com/hushidong/biblatex-gb7714-2015/assets/45897471/039e49c7-10c6-40d8-b9fc-9372bfd70de7)
2. 如果使用`key`域进行排序,则未必可以正确使用`family name`进行排序,比如:
\documentclass{article} \usepackage{ctex}
\begin{filecontents}[force]{\jobname.bib}
@article{mikkonen2018,
title = {Geochemical Indices and Regression Tree Models for Estimation of Ambient Background Concentrations of Copper, Chromium, Nickel and Zinc in Soil},
author = { family=Graaff, given=Robert, prefix=van de, useprefix=true and Clarke, Bradley O. and Dasika, Raghava and Wallis, Christian J. and Reichman, Suzie M.},
date = {2018-11-01},
journaltitle = {Chemosphere},
volume = {210},
pages = {193--203},
issn = {0045-6535},
doi = {10.1016/j.chemosphere.2018.06.138},
key = { family=Graaff, given=Robert, prefix=van de, useprefix=true and Clarke, Bradley O. and Dasika, Raghava and Wallis, Christian J. and Reichman, Suzie M.},
}
@article{first,
title = {The firstl},
author = { Go},
date = {6},
journaltitle = {5},
volume = {4},
pages = {3},
issn = {2},
doi = {1},
key = {Go},
}
@article{second,
title = {The firstl},
author = { Rr},
date = {6},
journaltitle = {5},
volume = {4},
pages = {3},
issn = {2},
doi = {1},
key = {Rr},
}
\end{filecontents}
\usepackage[style=gb7714-2015ay]{biblatex} %,defernumbers=true \addbibresource{\jobname}
\begin{document} \newbibmacro{name:gbuppercase}[4]{\bibauthorfont% \gbcaselocalset% \ifuseprefix% {\usebibmacro{name:delim}{#3#1}% \usebibmacro{name:hook}{#3#1}% \ifdefvoid{#3}{}{% \ifcapital% {\mkbibnameprefix{\MakeLowercase{#3}}\isdot}% {\mkbibnameprefix{#3}\isdot}% \ifprefchar{}{\bibnamedelimc}}% \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot% \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%后缀前加逗号 {\usebibmacro{name:delim}{#1}% \usebibmacro{name:hook}{#1}% \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot% \ifboolexpe{% test {\ifdefvoid{#2}} and test {\ifdefvoid{#3}}} {}{\revsdnamepunct}% \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}% \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%%后缀前加逗号 } text\nocite{}
\printbibliography
\end{document}
输出:
![image](https://github.com/hushidong/biblatex-gb7714-2015/assets/45897471/6b0dd756-061f-4c87-aaf1-0818f117420a)
可以将前缀统一小写,并以Family name进行排序?
好像电脑重启一次,Pinyin.pm
就会被替换一次。所以修改Pinyin.pm
这一策略是不是可行度不太高?
你设为只读,不会每次都替换的,那biber不是慢死了,本来就慢,还老是要解资源。
可能是biber更新等导致的。更新后,第一次运行是会更换路径的。所以要重新拷过去。
你前面的第一个问题,只要使用useprefix=true,那就会参与排序,所以这是biblatex默认的,不知道这是不是英文的习惯。
第二个问题是,你把key改一下就好了。这种单独的个别文献出问题,你手动修改就好了。
那biber不是慢死了,本来就慢,还老是要解资源。
可能是biber更新等导致的。更新后,第一次运行是会更换路径的。所以要重新拷过去。
你好,可以帮忙把Pinyin.pm
中的长
改为chang2
吗?因为有部分文献和长江出版社有关。谢谢。
- 你前面的第一个问题,只要使用useprefix=true,那就会参与排序,所以这是biblatex默认的,不知道这是不是英文的习惯。
- 第二个问题是,你把key改一下就好了。这种单独的个别文献出问题,你手动修改就好了。
如果使用useprefix=false
,van de
会消失。而且使用useprefix=true
,使用key
域进行排序,既没有按照前缀排序,也没有按照Family Name进行排序,就很奇怪。这应该是一个反常的情况吧。
key = { family=Graaff, given=Robert, prefix=van de, useprefix=true and Clarke, Bradley O. and Dasika, Raghava and Wallis, Christian J. and Reichman, Suzie M.},
你看看这个key,第一个字符是空格,加下来是f,怎么能正常排呢?仔细点。
key = { family=Graaff, given=Robert, prefix=van de, useprefix=true and Clarke, Bradley O. and Dasika, Raghava and Wallis, Christian J. and Reichman, Suzie M.},
你看看这个key,第一个字符是空格,加下来是f,怎么能正常排呢?仔细点。
谢谢!我对这些空格没有准确的理解。很多时候我觉得空格毫无影响,有些时候可能造成很大的影响。我其实不知道怎么辨别什么时候空格会产生很大的影响,因为我看The TeX book一书中,空格和回车符在大部分时候时是一样的,而回车符常出现在bib文件中。我并没有观察到这里有一个空格,不过若我观察到,我也意识不到这会产生问题。不过,在删除这个空格后,情况仍旧是一样的,貌似以de
进行排序了。
\documentclass{article}
\usepackage{ctex}
\begin{filecontents}[force]{\jobname.bib}
@article{mikkonen2018,
title = {Geochemical Indices and Regression Tree Models for Estimation of Ambient Background Concentrations of Copper, Chromium, Nickel and Zinc in Soil},
author = {family=Graaff, given=Robert, prefix=van de, useprefix=true and Clarke, Bradley O. and Dasika, Raghava and Wallis, Christian J. and Reichman, Suzie M.},
date = {2018-11-01},
journaltitle = {Chemosphere},
volume = {210},
pages = {193--203},
issn = {0045-6535},
doi = {10.1016/j.chemosphere.2018.06.138},
key = {family=Graaff, given=Robert, prefix=van de, useprefix=true and Clarke, Bradley O. and Dasika, Raghava and Wallis, Christian J. and Reichman, Suzie M.},
}
@article{first,
title = {The firstl},
author = { Go},
date = {6},
journaltitle = {5},
volume = {4},
pages = {3},
issn = {2},
doi = {1},
key = {Go},
}
@article{second,
title = {The firstl},
author = { Rr},
date = {6},
journaltitle = {5},
volume = {4},
pages = {3},
issn = {2},
doi = {1},
key = {Rr},
}
\end{filecontents}
\usepackage[style=gb7714-2015ay]{biblatex} %,defernumbers=true
\addbibresource{\jobname}
\begin{document}
\newbibmacro*{name:gbuppercase}[4]{\bibauthorfont%
\gbcaselocalset%
\ifuseprefix%
{\usebibmacro{name:delim}{#3#1}%
\usebibmacro{name:hook}{#3#1}%
\ifdefvoid{#3}{}{%
\ifcapital%
{\mkbibnameprefix{\MakeLowercase{#3}}\isdot}%
{\mkbibnameprefix{#3}\isdot}%
\ifprefchar{}{\bibnamedelimc}}%
\ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot%
\ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital
\ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%后缀前加逗号
{\usebibmacro{name:delim}{#1}%
\usebibmacro{name:hook}{#1}%
\ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot%
\ifboolexpe{%
test {\ifdefvoid{#2}}
and
test {\ifdefvoid{#3}}}
{}{\revsdnamepunct}%
\ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital
\ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}%
\ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%%后缀前加逗号
}
text\nocite{*}
\printbibliography
\end{document}
输出结果为:
也许我哪里又操作错了。
排序总得要一样的东西再排吧,你看上面的三个key的内容是一个东西不?
key的生成工具是次要的,关键是内容,你想怎么排内容就要怎么写,但总需要是一类东西噻,你即便填个1,2,3数字,也比不同类的东西在那乱排好噻
改成下面这样不就好了么?
@article{mikkonen2018,
title = {Geochemical Indices and Regression Tree Models for Estimation of Ambient Background Concentrations of Copper, Chromium, Nickel and Zinc in Soil},
author = {family=Graaff, given=Robert, prefix=van de, useprefix=true and Clarke, Bradley O. and Dasika, Raghava and Wallis, Christian J. and Reichman, Suzie M.},
date = {2018-11-01},
journaltitle = {Chemosphere},
volume = {210},
pages = {193--203},
issn = {0045-6535},
doi = {10.1016/j.chemosphere.2018.06.138},
key = {Graaff},
}
@article{first,
title = {The firstl},
author = { Go},
date = {6},
journaltitle = {5},
volume = {4},
pages = {3},
issn = {2},
doi = {1},
key = {Go},
}
@article{second,
title = {The firstl},
author = { Rr},
date = {6},
journaltitle = {5},
volume = {4},
pages = {3},
issn = {2},
doi = {1},
key = {Rr},
}
排序总得要一样的东西再排吧,你看上面的三个key的内容是一个东西不?
key的生成工具是次要的,关键是内容,你想怎么排内容就要怎么写,但总需要是一类东西噻,你即便填个1,2,3数字,也比不同类的东西在那乱排好噻
改成下面这样不就好了么?
@article{mikkonen2018, title = {Geochemical Indices and Regression Tree Models for Estimation of Ambient Background Concentrations of Copper, Chromium, Nickel and Zinc in Soil}, author = {family=Graaff, given=Robert, prefix=van de, useprefix=true and Clarke, Bradley O. and Dasika, Raghava and Wallis, Christian J. and Reichman, Suzie M.}, date = {2018-11-01}, journaltitle = {Chemosphere}, volume = {210}, pages = {193--203}, issn = {0045-6535}, doi = {10.1016/j.chemosphere.2018.06.138}, key = {Graaff}, } @article{first, title = {The firstl}, author = { Go}, date = {6}, journaltitle = {5}, volume = {4}, pages = {3}, issn = {2}, doi = {1}, key = {Go}, } @article{second, title = {The firstl}, author = { Rr}, date = {6}, journaltitle = {5}, volume = {4}, pages = {3}, issn = {2}, doi = {1}, key = {Rr}, }
谢谢您!明白了,就是key
域不能像author
域一样接受参数。
您好,
现在有一篇文献:
这篇文献在文中正确,因
van
不大写。但是有几个问题:v
进行排序,一般van
不参与排序;v
被大写,应当保持小写;v
进行排序,实际应该以Dis
还是以Zg Y. T
进行排序?我也不确定,但应该在这两者之中。谢谢!