Skip to content

chore(better.bib): update Better BibTeX for Zotero - #8

Merged
YDX-2147483647 merged 1 commit into
typst-doc-cn:mainfrom
YDX-2147483647:better
Oct 12, 2026
Merged

YDX-2147483647 merged 1 commit into
typst-doc-cn:mainfrom
YDX-2147483647:better

Conversation

@YDX-2147483647

@YDX-2147483647 YDX-2147483647 commented Oct 12, 2026 •

Copy link
Copy Markdown
Member

retorquere/zotero-better-bibtex@v9.0.68...v9.0.70 时部分number变成了eid:

人工智能的分析

eid/number 的处理逻辑在 translators/bibtex/biblatex.ts(Better BibLaTeX 导出)中有实质性修改,对应 issue #3609("Journal article with volume, issue, and article number (eid)")。

具体改动

1. issue 字段的写入条件改了:

// 旧逻辑(v9.0.64)
entry.add({
  name: allows(entry.entrytype, 'issue') || entry.has.number ? 'issue' : 'number',
  value: entry.normalizeDashes(item.issue),
})

// 新逻辑(v9.0.71)
entry.add({
  name: allows(entry.entrytype, 'issue') && !(looks_like_number_field(item.issue) && !entry.has.number)
    ? 'issue'
    : 'number',
  value: entry.normalizeDashes(item.issue),
})

2. 新增辅助函数 looks_like_number_field(),用来判断 issue 值是否"看起来像数字"(纯数字、罗马数字、数字范围如 1-2、Suppl. 2、3es 这类短标识符):

function looks_like_number_field(value?: string | null): boolean {
  if (!value?.length) return false
  return value.split(/\s*[-–—]\s*/).every(range => {
    if (range.match(/^(?:[0-9]+|[ivxlcdm]+)$/i)) return true
    return !!range.match(/^(?:\p{L}{1,3}[.\s]*)?\d+(?:\s?[a-z]{1,3})?$/iu)
  })
}

item.number → eid/number 那行本身没变,但受上面 issue 逻辑影响。

行为变化

按照 biblatex 手册的语义(注释里大段引用):issue 是给 "Spring"/"Summer" 这类非数字标识用的,纯数字/数字范围的 issue 应该进 number 字段。所以现在是:

  • issue 是数字样式(如 2、1-2、Suppl. 2)且当前还没写 number → 写进 number
  • issue 是非数字样式(如 Summer)→ 仍写进 issue
  • item.number(Zotero 的 article number)→ 优先 eid(若 entrytype 允许 eid 或已有 number)

同时 patch 里新增了对应测试 fixture:

  • Journal article with volume, issue, and article number (eid) #3609
  • Article numbers without numeric issues #3609(非数字 issue 的场景)
  • 并更新了旧的 Duplicate number field causes export error #1448 fixture

如果你是从 ≤9.0.64 升级,且文献的 issue 是纯数字,导出 BibLaTeX 时该值会从 issue = {...} 变成 number = {...},这是预期行为而非 bug。

@YDX-2147483647
YDX-2147483647 merged commit 2001618 into typst-doc-cn:main Oct 12, 2026
1 check passed
@YDX-2147483647
YDX-2147483647 deleted the better branch October 12, 2026 01:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant