EdwardSaidZhou/CSL-Chinese-IR-CSSCI-Journals

《**社会科学》CSL 建议

Closed this issue · 1 comments

有人在群里询问了《**社会科学》CSL 的问题,我看了对应的代码后提出以下建议供参考:

  1. “出版时间不详”应该使用 no date term,而目前使用的 anonymous 是对应“佚名”的。
  2. “卷3,光绪三年苏州文学山房活字本”:其中“3”可以填在 volume 字段,“光绪三年”填在 issued,“苏州文学山房活字本”填在 edition,这样比较符合各个字段的功能。
  3. 期刊的出版地建议填在 Zotero 的 Extra 字段中,比如 Publisher Place: Beijing,参考 https://www.zotero.org/support/kb/item_types_and_fields#citing_fields_from_extra,这样比“Loc. in Archive”更符合字段的意义。
  4. 建议代码中保持良好的缩进,这样更利于阅读代码和查找问题。如果用 VS Code 的话可以用 XML 插件自动将代码格式化为缩进后的版式。
  5. 在软件工程中,通常相同结构的代码要尽量封装起来。这样更便于维护,可避免修改其中一处时忘记同步更新其他部分。像 citationbibliography 的中文 layout 其实非常接近,建议使用 macro 封装起来。
  6. 尽量避免将“,”、“:”等分隔符写在 prefixsuffix 中,而是使用 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 格式修改的,也欢迎交流。

感谢反馈,让我这个小白好好吸收一下这么多新的知识点