![仅当没有作者时才将编辑作为排序名称?](https://linux22.com/image/248224/%E4%BB%85%E5%BD%93%E6%B2%A1%E6%9C%89%E4%BD%9C%E8%80%85%E6%97%B6%E6%89%8D%E5%B0%86%E7%BC%96%E8%BE%91%E4%BD%9C%E4%B8%BA%E6%8E%92%E5%BA%8F%E5%90%8D%E7%A7%B0%EF%BC%9F.png)
我按照以下方式编辑了 biblatex 的 authoryear.bbx:
\DeclareNameAlias{author}{sortname}
%\DeclareNameAlias{editor}{sortname} this I commented out
%\DeclareNameAlias{translator}{sortname} this I commented out
它非常适合按“姓氏、名字和名字姓氏”等对作者进行排序。但现在没有作者、只有编辑的书籍仍然按“名字姓氏”排序,但我希望它们的格式与作者相同。但仅适用于没有作者的书籍,不适用于合集或论文集等。
我尝试这样做,但显然它不起作用:
\DeclareNameAlias{author}{sortname}
\DeclareNameAlias{collection}{editor}{sortname}
%\DeclareNameAlias{translator}{sortname}
这是需要的,并且应当保留:
Kahn, Douglas 2007:《巴赫与吟游诗人之间:早期计算机艺术中的生产性约束》,载于 Oliver Grau(编辑):《媒体艺术史》,马萨诸塞州剑桥:麻省理工学院出版社,第 423–451 页。
但这不是:
卡洛琳·伯德索尔/Anthony Enns(编辑)2008:《声音调解:身体声音技术》,泰恩河畔纽卡斯尔:剑桥学者出版社。
这应该改成:
伯德索尔,卡罗琳/Anthony Enns(编辑)2008:《声音调解:身体声音技术》,泰恩河畔纽卡斯尔:剑桥学者出版社。
如果我取消注释 \DeclareNameAlias{editor}{sortname},将会发生以下情况:
Kahn, Douglas 2007: 巴赫与吟游诗人之间:早期计算机艺术中的生产性约束,奥利弗·格劳(编辑):《MediaArtHistories》,马萨诸塞州剑桥:麻省理工学院出版社,第 423–451 页。
这是不受欢迎的。
这是三个 .bbx 文件中的完整代码。抱歉,太混乱了。我是新手。感谢这些代码的所有作者。由于我不知道如何在不手动缩进 4 个空格的情况下正确粘贴较长的代码脚本。我将链接其他两个文件。
http://algorhythmics.com/latexstuff/sm-002.bbx http://algorhythmics.com/latexstuff/philosophy-standard.bbx
以下是我修改的 authoryear 部分:
\DeclareNameAlias{author}{sortname}
\DeclareNameAlias{editor}{sortname}
\DeclareNameAlias{default}{first-last}
\DeclareNameAlias{byeditor}{default}
%\DeclareNameAlias{translator}{sortname}
请帮助我。谢谢!
答案1
在 中sm-002.bbx
,incollection
和参考书目驱动程序用一个名为 的新宏inproceedings
替换该宏,定义如下。byeditor+others
editorincoll
\newbibmacro*{editorincoll}{%
\ifthenelse{\ifuseeditor\AND\NOT\ifnameundef{editor}}
{\ifthenelse{\iffieldequals{author}{editor}\AND
\NOT\iffirstonpage}
{\bibnamedash}
{\printnames[upshape]{editor}\addspace
\savefield{namehash}{\bbx@lasthash}}%
\usebibmacro{editorstrg}%
\clearname{editor}}
{\global\undef\bbx@lasthash}}
如果将 替换upshape
为first-last
,您将在名称列表中获得所需的顺序。