《**社会科学》CSL 建议
Closed this issue · 1 comments
zepinglee commented
有人在群里询问了《**社会科学》CSL 的问题,我看了对应的代码后提出以下建议供参考:
- “出版时间不详”应该使用
no date
term,而目前使用的anonymous
是对应“佚名”的。 - “卷3,光绪三年苏州文学山房活字本”:其中“3”可以填在
volume
字段,“光绪三年”填在issued
,“苏州文学山房活字本”填在edition
,这样比较符合各个字段的功能。 - 期刊的出版地建议填在 Zotero 的
Extra
字段中,比如Publisher Place: Beijing
,参考 https://www.zotero.org/support/kb/item_types_and_fields#citing_fields_from_extra,这样比“Loc. in Archive”更符合字段的意义。 - 建议代码中保持良好的缩进,这样更利于阅读代码和查找问题。如果用 VS Code 的话可以用 XML 插件自动将代码格式化为缩进后的版式。
- 在软件工程中,通常相同结构的代码要尽量封装起来。这样更便于维护,可避免修改其中一处时忘记同步更新其他部分。像
citation
和bibliography
的中文layout
其实非常接近,建议使用macro
封装起来。 - 尽量避免将“,”、“:”等分隔符写在
prefix
或suffix
中,而是使用group
结构并填在delimiter
中。这样在某些字段缺失时更容易避免多余或缺失的分隔符。比如book
类型有一段相关代码
<text variable="title" prefix="《" suffix="》"/>
<text variable="collection-number" prefix="第" suffix="册"/>
<text variable="edition"/>
<text variable="volume" prefix="第" suffix="卷"/>
<text macro="secondAuthor" prefix=","/>
<text variable="publisher-place" prefix="," suffix=":"/>
<text variable="publisher"/>
正常情况下可以输出“《国史旧闻》,北京:中华书局”,但是如果 publisher-place
缺失,输出结果就会变成“《国史旧闻》中华书局”,导致题名与出版社之间的分隔符缺失。而使用 group
可以解决这一问题,这是因为 group
更能表达文献字段的层次结构。上述代码可以改成:
<group delimiter=",">
<group>
<text variable="title" prefix="《" suffix="》"/>
<text variable="collection-number" prefix="第" suffix="册"/>
<text variable="edition"/>
<text variable="volume" prefix="第" suffix="卷"/>
</group>
<text macro="secondAuthor"/>
<group delimiter=":">
<text variable="publisher-place"/>
<text variable="publisher"/>
</group>
</group>
这样在 publisher-place
缺失时输出为“《国史旧闻》,中华书局”。
另外还有一个中文 CSL 项目 https://github.com/redleafnew/Chinese-STD-GB-T-7714-related-csl,主要是基于 GB/T 7714 格式修改的,也欢迎交流。
EdwardSaidZhou commented
感谢反馈,让我这个小白好好吸收一下这么多新的知识点