Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

作者年制标注以年份排序,文献表以作者排序(citation的顺序和bibliography的顺序如何不关联) #30

Closed
sphcn opened this issue Apr 19, 2018 · 16 comments

Comments

@sphcn
Copy link

sphcn commented Apr 19, 2018

为什么加sortcase没有用?加了sortcase, bibliography的顺序依然跟着citation一起变?

@hushidong
Copy link
Owner

你要实现什么功能,能再描述一下么,就看你的提问不知道如何下手?

@sphcn
Copy link
Author

sphcn commented Apr 20, 2018

嗯,抱歉啊,是我描述得不够清楚。

我是想实现”多个citation内部按year-name排序“,后面的”参考文献列表按name-year-title排序“。
我先用sorting设置了一下,发现两个都会变,后面查了文档说sorting是sortcase管理“Whether or not to sort the bibliography and the list of shorthands case-sensitively”,可改了也不起作用。

还是新手,不知我理解的对不对,希望作者能给予解答,非常感谢。

@hushidong
Copy link
Owner

我现在用手机,只能给你简单回答。

文献表要按name year title,那么加选项sorting=nyt

引用标签中的顺序,默认按给出的顺序,加sortcites=true后会按文献表的顺序给出。

你说的多个citation内部按year name顺序排。我还不是很明白,能给个例子么?

@sphcn
Copy link
Author

sphcn commented Apr 20, 2018

谢谢您的回复,我想实现的是\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还不能自动合并,但也可以用了吧。
不知道我说清楚了没有,对您的回复和贡献再次表示感谢!

@hushidong
Copy link
Owner

你这个方式很神奇,请问你用的样式是怎么设置的?

@sphcn
Copy link
Author

sphcn commented Apr 20, 2018

貌似把:

sorting = nyt, sortcites=false, sortcase=false,

去掉,把 \RequireCitationStyle{authoryear-comp} 也换回

\RequireCitationStyle{authoryear}

也行,效果跟我想要的一样。尴尬了,抱歉打扰。

@hushidong
Copy link
Owner

你的style怎么设的?

@hushidong
Copy link
Owner

加载biblatex的这行的完整代码给出来看一下?

@sphcn
Copy link
Author

sphcn commented Apr 20, 2018

全部设置是

\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不能自动合并,其他都可以

@hushidong
Copy link
Owner

你把citestyle设为authoryear-comp就可以合并了。

@hushidong
Copy link
Owner

你这是什么期刊的要求啊,挺复杂的?

@sphcn
Copy link
Author

sphcn commented Apr 20, 2018

让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♪(・ω・)ノ

@sphcn
Copy link
Author

sphcn commented Apr 20, 2018

另外,我把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的时候也更方便一些。

@hushidong
Copy link
Owner

hushidong commented Apr 20, 2018

你的问题我明白了,主要是文献表按nyt排,标注用ynt排,但有相同作者又要合并。要实现标签自动排序必须要用sortcites=true,但一旦排序相同作者不同年份的文献就不能排在一起,也就不能压缩了,这里是个矛盾没有办法解决。

现在你有两种方式可以采用,

一是全自动排序,
宏包加载时使用
gb7714-2015ay,sortcites,sorting=ynt

然后在文献打印前加
\newrefcontext[sorting=nyt]

这种方式自动排序但没有合并。

二,实现合并,但标注中按年份手动排,且相同作者放一起。
这种方式是把7714-2015ay.cbx中的authoryear换成comp,然后加载时加上sortcites=false
这种方式,能达到要求,但是要手动排序。

@sphcn
Copy link
Author

sphcn commented Apr 20, 2018

试了一下,两种方式都对,非常感谢!

@hushidong hushidong changed the title citation的顺序和bibliography的顺序如何不关联 作者年制标注以年份排序,文献表以作者排序(citation的顺序和bibliography的顺序如何不关联) Mar 25, 2020
@ErnestDong
Copy link

ErnestDong commented May 30, 2024

方法一我这里打印文献变成了英文在前。现在应该可以用

\usepackage[backend = biber, style = gb7714-2015ay, doi=false, url=false, sorting=ynt]{biblatex}

....
\newrefcontext[sorting=gb7714-2015]
\printbibliography[heading = bibintoc, title = {参考文献}]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants