Skip to content

如何修复英文参考文献中的“等”?

如何修复英文参考文献中的“等”?

著录多著者文献时可能省略部分作者,这时著录中文应加“等”,著录英文则应加“et al.”。然而目前 Typst 只支持用#set text(lang: …)统一选择“等”("zh")或“et al.”("en"),不支持逐文献设置。

若需按文献语言自动选择“等”或“et al.”,主要有以下两类办法:

本页会依次介绍这些方法;此外也可考虑手动录入参考文献

法一:替换字符

导入 modern-nju-thesisbilingual-bibliography 函数,将英文参考文献中的等汉字替换为英文。

typst
// 在文档开头引入
#import "@preview/modern-nju-thesis:0.4.0": bilingual-bibliography

// 将原本的 #bibliography("refs.bib") 替换为
#bilingual-bibliography(bibliography: bibliography.with("refs.bib"))
完整测试例子
typst
#import "@preview/modern-nju-thesis:0.4.0": bilingual-bibliography

- 中文@吴伟仁2017
- 英文@su2025

#let bib = ```bib
@article{吴伟仁2017,
  title = {软着陆任务设计},
  author = {{吴伟仁} and {王琼} and {唐玉华} and {于国斌} and {刘继忠} and {张玮} and {宁远明} and {卢亮亮}},
}
@article{su2025,
  title = {South {{Pole}}–{{Aitken}}},
  author = {Su, Bin and Chen, Yi and Wang, Zeling and Zhang, Di and Chen, Haojie and Gou, Sheng and Yue, Zongyu and Liu, Yanhong and Yuan, Jiangyan and Tang, Guoqiang and Guo, Shun and Li, Qiuli and Lin, Yang-Ting and Li, Xian-Hua and Wu, Fu-Yuan},
}
```.text

#bilingual-bibliography(bibliography: bibliography.with(bytes(bib)))
Typst compiled image

替换参考文献引擎

法一基于 Typst 内置的参考文献引擎,另一类方法是替换参考文献引擎,具体有 citextgb7714-bilingual 等选择。这类方法有如下共同特点。

  • 共同优点
    • 真正按文献语言自动切换渲染方式
  • 共同缺点
    • 同一处引用多篇文献时,(因show cite规则限制)不能单纯@key-a @key-b,必须调用专门的mulcitemulticite函数
    • 对文字之外的格式支持不好(例:长URL折行时,链接可能异常[1]
    • 不支持导出为 HTML(因为使用了gridhide等语义弱的函数)

法二:换用 citext

使用 citext 替换 Typst 内置的参考文献引擎。

  1. 安装 citext

    citext 未发布至 Typst Universe,需手动安装。具体有两种选择:

    • 单纯下载仓库,把package/文件夹保存为自己项目内的./local-package/citext/
    • README 提示,安装为 local package。

    第一种方法相对简单,而且支持 typst.app 在线应用,可优先尝试。

  2. 在文档开头引入

    typst
    #import "./local-package/citext/lib.typ": *
    // 若安装为 local package,请将上一行替换为:
    // #import "@local/citext:0.4.0": *
    
    #let bib = init-citation(read("refs.bib"))
    #show: show-extcite.with(bib: bib, gen-id: true)
  3. #bibliography("refs.bib")前后添加

    typst
    #show bibliography: none
    #bibliography("refs.bib") // 与其它方法不同,法二需保留这行
    
    = 参考文献
    #extbib(bib)
  • 优点

  • 缺点

    • 性能很差

      由于替换了引擎,会显著降低从零编译文档的速度(从一秒慢到十几秒),请在编写过程中妥善利用 Typst 的增量编译能力(typst watch/tinymist preview)。

    • 替换参考文献引擎的若干共同缺点

更多细节请阅读 citext 的 README

citext 的技术栈

Typst 的参考文献样式采用 CSL 标准,但 CSL 无法描述如何按文献语言切换渲染方式。CSL-M 扩展增加了这一功能,但 Typst 所用参考文献引擎尚不支持。

citext 使用 citation.js + QuickJS + WebAssembly + CtxJS 替代了 Typst 原生的参考文献功能,从而可以通过 citation.js 调用 citeproc-js 来支持 CSL-M。

完整测试例子
typst
#import "@local/citext:0.4.0": extbib, init-citation, show-extcite

#let bib-content = ```bib
@article{吴伟仁2017,
  title = {软着陆任务设计},
  author = {{吴伟仁} and {王琼} and {唐玉华} and {于国斌} and {刘继忠} and {张玮} and {宁远明} and {卢亮亮}},
  language = {zh},
}
@article{su2025,
  title = {South {{Pole}}–{{Aitken}}},
  author = {Su, Bin and Chen, Yi and Wang, Zeling and Zhang, Di and Chen, Haojie and Gou, Sheng and Yue, Zongyu and Liu, Yanhong and Yuan, Jiangyan and Tang, Guoqiang and Guo, Shun and Li, Qiuli and Lin, Yang-Ting and Li, Xian-Hua and Wu, Fu-Yuan},
  language = {en},
}
```.text

#let bib = init-citation(bib-content)
#show: show-extcite.with(bib: bib, gen-id: true)

- 中文@吴伟仁2017
- 英文@su2025

#show bibliography: none
#bibliography(bytes(bib-content))

= 参考文献
#extbib(bib)
Typst compiled image

法三:换用 gb7714-bilingual

使用 gb7714-bilingual 替换 Typst 内置的参考文献引擎。

typst
// 在文档开头引入
#import "@preview/gb7714-bilingual:0.2.1": init-gb7714, gb7714-bibliography
#show: init-gb7714.with(read("refs.bib"), style: "numeric", version: "2015")

// 将原本的 #bibliography("refs.bib") 替换为
#gb7714-bibliography()
  • 优点

    • 真正按文献语言自动切换渲染方式
    • 性能较好,仅略微慢于 Typst 内置方式,实用基本无感
  • 缺点

    • 可能增加其它文字格式问题,因为该引擎是2026年1月新开发的,尚不稳定
    • 替换参考文献引擎的若干共同缺点

更多细节请阅读 gb7714-bilingual – Typst Universe

另外还可使用同作者开发的 citrus(又名 citeproc-typst),原理相同,支持一般 CSL,但因为代码逻辑更复杂而性能相对低下。

完整测试例子
typst
#import "@preview/gb7714-bilingual:0.2.1": gb7714-bibliography, init-gb7714

#let bib = ```bib
@article{吴伟仁2017,
  title = {软着陆任务设计},
  author = {{吴伟仁} and {王琼} and {唐玉华} and {于国斌} and {刘继忠} and {张玮} and {宁远明} and {卢亮亮}},
}
@article{su2025,
  title = {South {{Pole}}–{{Aitken}}},
  author = {Su, Bin and Chen, Yi and Wang, Zeling and Zhang, Di and Chen, Haojie and Gou, Sheng and Yue, Zongyu and Liu, Yanhong and Yuan, Jiangyan and Tang, Guoqiang and Guo, Shun and Li, Qiuli and Lin, Yang-Ting and Li, Xian-Hua and Wu, Fu-Yuan},
}
```.text

#show: init-gb7714.with(bib, style: "numeric", version: "2015")

- 中文@吴伟仁2017
- 英文@su2025

#gb7714-bibliography()
Typst compiled image

另请参见


  1. gb7714-bilingual 已经基本修复了这一问题,不过不如 CSLHayagriva 全面。 ↩︎

Comments
  • Latest
  • Oldest
  • Hottest

基于 MIT 许可发布