作者年制标注以年份排序,文献表以作者排序(citation的顺序和bibliography的顺序如何不关联)
sphcn opened this issue · 16 comments
为什么加sortcase没有用?加了sortcase, bibliography的顺序依然跟着citation一起变?
你要实现什么功能,能再描述一下么,就看你的提问不知道如何下手?
嗯,抱歉啊,是我描述得不够清楚。
我是想实现”多个citation内部按year-name排序“,后面的”参考文献列表按name-year-title排序“。
我先用sorting设置了一下,发现两个都会变,后面查了文档说sorting是sortcase管理“Whether or not to sort the bibliography and the list of shorthands case-sensitively”,可改了也不起作用。
还是新手,不知我理解的对不对,希望作者能给予解答,非常感谢。
我现在用手机,只能给你简单回答。
文献表要按name year title,那么加选项sorting=nyt
引用标签中的顺序,默认按给出的顺序,加sortcites=true后会按文献表的顺序给出。
你说的多个citation内部按year name顺序排。我还不是很明白,能给个例子么?
谢谢您的回复,我想实现的是\cite{NameA2012, NameB2013, NameC2014}时,cite内部的(NameA, 2012; NameB, 2013; NameC, 2014) 三篇文献在正文引用中自动按year name排序,而后面的文献列表按name year title排序。现在我用了一个奇怪的组合实现了这个结果,我将biblatex的参数设置为:
sorting = nyt, sortcites=false, sortcase=false,
uniquename=false, uniquelist=false, maxcitenames=1,
并将gb7714-2015ay.cbx的\RequireCitationStyle{authoryear}修改为:
\RequireCitationStyle{authoryear-comp}
且在使用\cite{}时,按引用文献的发表年代手动调整了先后顺序。
这一组合基本实现了我想要的效果,但是对于引文关键字重名的文献,比如(NameA, 2012; NameB, 2012; NameA, 2014)的情况,NameA还不能自动合并,但也可以用了吧。
不知道我说清楚了没有,对您的回复和贡献再次表示感谢!
你这个方式很神奇,请问你用的样式是怎么设置的?
貌似把:
sorting = nyt, sortcites=false, sortcase=false,
去掉,把 \RequireCitationStyle{authoryear-comp} 也换回
\RequireCitationStyle{authoryear}
也行,效果跟我想要的一样。尴尬了,抱歉打扰。
你的style怎么设的?
加载biblatex的这行的完整代码给出来看一下?
全部设置是
\usepackage[backend=biber, isbn=false, hyperref=true,
bibstyle=gb7714-2015ay, citestyle=gb7714-2015ay,
gbnamefmt=lowercase, natbib=true, gbnoauthor=true,
uniquename=false, uniquelist=false, maxcitenames=1,
url=false, gbtype=false, gbpub=true
]{biblatex}
除了(NameA, 2012; NameB, 2012; NameA, 2014)中的NameA不能自动合并,其他都可以
你把citestyle设为authoryear-comp就可以合并了。
你这是什么期刊的要求啊,挺复杂的?
让citestyle=authoryear-comp的话,gb7714-2015ay.cbx文件里的设置就没有了。
另外,如果把gb7714-2015ay.cbx里的\RequireCitationStyle{authoryear}改为 \RequireCitationStyle{authoryear-comp} 的话,会引入authoryear-comp的默认设置sortcites=true,而这个设置是说citation的顺序要和bibliography context的sorting保持一致。这样,一用authoryear-comp,citation里的顺序又变成bibliography的默认顺序name-year-title,所以不能用。
所以只能自己写好顺序,也不好合并。
我是在写博士论文啊,以前都用的word和endnote,现在公式、图和文献都太多了,所以用latex。
谢谢您的帮助啊!Thanks♪(・ω・)ノ
另外,我把gb7714-2015ay.bbx文件里"% 修改作者数量超过限定值,做省略时的处理格式“下面的两个”{\finalandcomma}“去掉了一个,把"\defversion{3.8}{dateextra}{"里的
\DeclareDelimFormat[textcite]{nameyeardelim}{\addcomma\space}
改成了
\DeclareDelimFormat[textcite]{nameyeardelim}{\space}
好让natbib里的\citet{}能用,效果是把Chen, et al., (2012)改成了Chen et al. (2012)。
同时\cite{}的效果也由(Chen, et al., 2012)变成了(Chen et al., 2012)。
我觉得都可以接受,这样用citet的时候也更方便一些。
你的问题我明白了,主要是文献表按nyt排,标注用ynt排,但有相同作者又要合并。要实现标签自动排序必须要用sortcites=true,但一旦排序相同作者不同年份的文献就不能排在一起,也就不能压缩了,这里是个矛盾没有办法解决。
现在你有两种方式可以采用,
一是全自动排序,
宏包加载时使用
gb7714-2015ay,sortcites,sorting=ynt
然后在文献打印前加
\newrefcontext[sorting=nyt]
这种方式自动排序但没有合并。
二,实现合并,但标注中按年份手动排,且相同作者放一起。
这种方式是把7714-2015ay.cbx中的authoryear换成comp,然后加载时加上sortcites=false
这种方式,能达到要求,但是要手动排序。
试了一下,两种方式都对,非常感谢!
方法一我这里打印文献变成了英文在前。现在应该可以用
\usepackage[backend = biber, style = gb7714-2015ay, doi=false, url=false, sorting=ynt]{biblatex}
....
\newrefcontext[sorting=gb7714-2015]
\printbibliography[heading = bibintoc, title = {参考文献}]