English 中文

citrus 🍋

Fresh citations for Typst — a pure Typst implementation of CSL (Citation Style Language) processor. Squeeze the zest out of your references!

318/318
CSL Styles
762/845
Test Cases
9
Benchmark Styles

🧪 CSL Test Suite

Pass means output matches expected; exclusions cover citeproc-js-specific or non-applicable cases.

845
Total Tests
762
Compiled
0
Mismatches
83
Excluded
Failures

No mismatches.

Excluded Tests
  • affix_CommaAfterQuote
    citeproc-js converts ASCII quotes to typographic quotes in citation-item prefix/suffix. This smart quotes feature is not part of CSL spec.
  • affix_WithCommas
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • bugreports_AuthorPosition
    Input contains inline HTML markup (<i>...</i>) in title fields. HTML parsing is not supported.
  • bugreports_CreepingAddNames
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • bugreports_DelimiterOnLayout
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • bugreports_EnvAndUrb
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • bugreports_EtAlSubsequent
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • bugreports_NoCaseEscape
    Input contains inline HTML markup (<span class='nocase'>). HTML parsing is not supported.
  • bugreports_OldMhraDisambiguationFailure
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • bugreports_OverwriteCitationItems
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • bugreports_SmallCapsEscape
    Input contains inline HTML markup (<span style='font-variant: small-caps;'>). HTML parsing is not supported.
  • bugreports_ikeyOne
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • collapse_ChicagoAfterCollapse
    citeproc-js uses after-collapse-delimiter for all author groups when collapse is enabled. CSL spec states it should only be used 'after a collapsed cite group'. Our implementation follows the spec literally.
  • collapse_CitationNumberRangesInsert
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • decorations_NestedQuotesInnerReverse
    Requires parsing embedded HTML tags (<b>) inside quoted input. This HTML parsing is not supported.
  • decorations_SimpleFlipFlop
    Requires parsing <i> tags from input data to detect embedded italics. This HTML parsing is not supported.
  • disambiguate_BasedOnSubsequentFormWithBackref2
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • disambiguate_DisambiguationHang
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • disambiguate_YearSuffixFiftyTwoEntries
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • disambiguate_YearSuffixFiftyTwoEntriesByCite
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • flipflop_ApostropheInsideTag
    Requires parsing <span class='nocase'> from input data. This HTML parsing is not supported.
  • flipflop_BoldfaceNodeLevelMarkup
    Requires parsing embedded HTML tags (<b>) inside quoted input. This HTML parsing is not supported.
  • flipflop_ItalicsFlipped
    Requires parsing <i> tags from input data to detect embedded italics. This HTML parsing is not supported.
  • flipflop_ItalicsSimple
    Requires parsing <i> tags from input data to detect embedded italics. This HTML parsing is not supported.
  • group_ComplexNesting
    CSL spec: group is suppressed when 'at least one element calls a variable AND all called variables are empty'. The issued macro's else branch has year-suffix (empty) so group should be suppressed. citeproc-js outputs (n.d.) which contradicts the spec.
  • group_LegalWithAuthorDate
    Uses citeproc-js citation update format (>>[n] prefix) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • integration_DeleteName
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • integration_DisambiguateAddGivenname1
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • integration_DisambiguateAddGivenname2
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • integration_DuplicateItem
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • integration_DuplicateItem2
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • integration_FirstReferenceNoteNumberPositionChange
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • integration_IbidOnInsert
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • integration_IbidWithDifferentLocators
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • integration_SimpleFirstReferenceNoteNumber
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • integration_SimpleIbid
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • integration_SubsequentWhenInterveningFootnote
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • integration_YearSuffixOnOffOn
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • label_CollapsedPageNumberPluralDetection
    Uses citeproc-js specific escape sequence (\-) to prevent hyphen-to-en-dash conversion. This escape is not part of CSL spec and not supported.
  • magic_TermCapitalizationWithPrefix
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • name_HyphenatedNonDroppingParticle1
    Requires parsing embedded particles (al-, van, von, de) from family names. This heuristic pattern matching is citeproc-js specific behavior not defined in CSL spec.
  • name_HyphenatedNonDroppingParticle2
    Requires parsing embedded particles (al-, van, von, de) from family names. This heuristic pattern matching is citeproc-js specific behavior not defined in CSL spec.
  • name_InTextMarkupInitialize
    Embedded HTML markup in name fields (<b>John</b>). This is a citeproc-js specific feature not part of CSL spec.
  • name_InTextMarkupNormalizeInitials
    Embedded HTML markup in name fields (<b>John</b>). This is a citeproc-js specific feature not part of CSL spec.
  • name_InitialsInitializeTrue
    citeproc-js preserves pre-formatted initials (ME., Ph.) instead of re-initializing. Not in CSL spec.
  • name_InitialsInitializeTrueEmpty
    citeproc-js preserves pre-formatted initials with empty initialize-with. Not in CSL spec.
  • name_InitialsInitializeTruePeriod
    citeproc-js preserves pre-formatted initials with period. Not in CSL spec.
  • name_InitialsInitializeTruePeriodSpace
    citeproc-js preserves pre-formatted initials with period and space. Not in CSL spec.
  • name_ParseNames
    Requires parsing embedded particles (van, von, de, der) from family names for sorting. This heuristic is citeproc-js specific.
  • name_ParsedDroppingParticleWithApostrophe
    Requires parsing dropping-particle from end of given name (d' suffix). citeproc-js specific heuristic.
  • name_ParsedNonDroppingParticleWithApostrophe
    Requires parsing non-dropping-particle from family name (d'Aubignac -> d' + Aubignac). citeproc-js specific heuristic.
  • name_ParticleCaps3
    Requires parsing embedded particles (van) from family names and quote-protected names. citeproc-js specific heuristic.
  • name_ParticlesDemoteNonDroppingNever
    Test explicitly states it depends on citeproc-js specific formatting of particles and may not pass for other processors.
  • name_namepartAffixes
    Name-part affixes don't merge non-dropping particle into family group. Expected: particle inside family formatting. Actual: particle orphaned outside.
  • name_namepartAffixesNameAsSortOrder
    Name-part affixes in sort order don't merge particle into given group. Expected: particle joins given. Actual: particle orphaned.
  • name_namepartAffixesNameAsSortOrderDemoteNonDroppingParticle
    Complex name-part affixes with particles, sort order, and demote-non-dropping-particle. CSL-M extension feature with unclear spec behavior.
  • nameattr_NamesDelimiterOnBibliographyInCitation
    Cross-context attribute inheritance: bibliography settings applied to citation. CSL spec does not define this cross-pollination behavior.
  • nameattr_NamesDelimiterOnCitationInBibliography
    Cross-context attribute inheritance: citation settings applied to bibliography. CSL spec does not define this cross-pollination behavior.
  • number_PlainHyphenOrEnDashAlwaysPlural
    Contains duplicate CSL-JSON IDs in the fixture input. Duplicate IDs are not supported.
  • position_FirstTrueOnlyOnce
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • position_IbidInText
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • position_IbidSeparateCiteSameNote
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • position_IbidWithMultipleSoloCitesInBackref
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • position_IbidWithPrefixFullStop
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • position_NearNoteSameNote
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • position_ResetNoteNumbers
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • punctuation_FullMontyQuotesIn
    punctuation-in-quote with quoted content inside linked citations requires cross-node punctuation collapse. Exclamation/question marks not moved inside quotes, and period dedup fails across quote boundaries.
  • punctuation_SuppressPrefixPeriodForDelimiterSemicolon
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • sort_AuthorDateWithYearSuffix
    Uses citeproc-js citation update format (>>[n] prefix) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • sort_CitationNumberPrimaryAscendingViaMacroBibliography
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • sort_CitationNumberPrimaryAscendingViaMacroCitation
    Uses citeproc-js citation update format (>>[n] prefix) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • sort_CitationNumberPrimaryAscendingViaVariableBibliography
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • sort_CitationNumberPrimaryAscendingViaVariableCitation
    Uses citeproc-js citation update format (>>[n] prefix) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • sort_GroupedByAuthorstring
    Uses citeproc-js citation update format (>>[n] prefix) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • sort_RangeUnaffected
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • sort_StripMarkup
    Input contains inline HTML markup (<i>...</i>) in title fields. HTML parsing is not supported.
  • sort_WithAndInOneEntry
    Input contains inline HTML markup (<i>...</i>) in title fields. HTML parsing is not supported.
  • substitute_SuppressOrdinaryVariable
    Expects macro-internal variable suppression (variables rendered by nested macro calls suppress subsequent sibling elements in the same macro). CSL spec only mandates 'substituted variables are suppressed in the rest of the output', not intra-macro sibling suppression. This appears to be citeproc-js specific behavior.
  • testers_FirstAutoGeneratedZoteroPluginTest
    Uses citeproc-js citation update format (..[n] and >>[n] prefixes) for testing dynamic citation updates. Not applicable to static Typst compilation.
  • textcase_ImplicitNocase
    Requires parsing HTML formatting tags (<sc>, <sup>, <sub>) from input data. This inline HTML markup parsing is not supported.
  • textcase_Lowercase
    Requires parsing <span class='nocase'> from input data to preserve case. This HTML parsing is not supported.
  • textcase_SentenceCapitalization
    Requires parsing <span class='nocase'> from input data to preserve case. This HTML parsing is not supported.
  • textcase_Uppercase
    Requires parsing <span class='nocase'> from input data to preserve case. This HTML parsing is not supported.

📚 CSL Style Compatibility

Compilation success only indicates citrus can parse and process the style, not that output format is fully compliant.

318
Total Styles
318
Compiled
0
Failed
100.0%
Pass Rate
Total 318 styles
GB-T-7714—1987(顺序编码,双语)GB-T-7714—2005(著者-出版年,双语)GB-T-7714—2005(著者-出版年,双语,姓名不大写,无URL)GB-T-7714—2005(顺序编码,双语)GB-T-7714—2005(顺序编码,双语,姓名不大写,无URL)GB-T-7714—2015(注释,双语)GB-T-7714—2015(注释,双语,全角标点)GB-T-7714—2015(注释,双语,姓名不大写,无-URL、DOI)GB-T-7714—2015(注释,双语,姓名不大写,无URL、DOI)GB-T-7714—2015(注释,双语,姓名不大写,无URL、DOI,重复引用不省略)GB-T-7714—2015(注释,双语,重复引用不省略)GB-T-7714—2015(著者-出版年,双语)GB-T-7714—2015(著者-出版年,双语,全角标点)GB-T-7714—2015(著者-出版年,双语,姓名不大写)GB-T-7714—2015(著者-出版年,双语,姓名不大写,无URL、DOI)GB-T-7714—2015(著者-出版年,双语,姓名不大写,无URL、DOI,全角括号)GB-T-7714—2015(著者-出版年,双语,无URL、DOI)GB-T-7714—2015(顺序编码,双语)GB-T-7714—2015(顺序编码,双语,全角标点)GB-T-7714—2015(顺序编码,双语,姓名不大写)GB-T-7714—2015(顺序编码,双语,姓名不大写,全部作者)GB-T-7714—2015(顺序编码,双语,姓名不大写,全部作者,姓名不缩写)GB-T-7714—2015(顺序编码,双语,姓名不大写,引注有页码)GB-T-7714—2015(顺序编码,双语,姓名不大写,无URL、DOI)GB-T-7714—2015(顺序编码,双语,姓名不大写,无URL、DOI,引注有页码)GB-T-7714—2015(顺序编码,双语,姓名不大写,无URL、DOI,网络首发文献除外)GB-T-7714—2015(顺序编码,双语,姓名不大写,无URL)GB-T-7714—2015(顺序编码,双语,无URL、DOI)GB-T-7714—2025(注释,双语)GB-T-7714—2025(著者-出版年,双语)GB-T-7714—2025(顺序编码,双语)IEEE(双语)food-materials-researchjournal-of-meteorological-researchjournal-of-modern-power-systems-and-clean-energytransactions-of-nonferrous-metals-society-of-china上海交通大学上海大学上海对外经贸大学学报上海工程技术大学上海财经大学(本科)世界历史世界经济世界经济与政治世界经济与政治论坛东北大学东北林业大学东南大学中华医学会中华心血管病杂志中华炎性肠病杂志中南大学中南林业科技大学中南民族大学-生命科学学院中南财经政法大学中国人民大学中国人民大学(本科)中国公路学报中国农业大学-人文与发展学院中国农业大学-农学院中国农业大学中国农业大学学报中国农业科学中国农业科学院中国农村经济中国冶金中国地质大学(武汉)(本科,顺序编码)中国地质大学(著者-出版年)中国工业经济中国当代儿科杂志中国政法大学中国林业科学研究院中国海洋大学(理工农医类)中国现代文学研究丛刊中国生态农业学报中国电机工程学报中国矿业大学-外文学院(文学、翻译方向-MLA)中国矿业大学中国社会科学中国科学院大学(著者-出版年)中国科学院大学(顺序编码)中国科学:地球科学中国药科大学(本科)中国行政管理中国计量大学中国高等学校自然科学学报编排规范中外法学中央财经大学学报中山大学云南大学云南师范大学(本科)产业经济研究人口研究人文地理人民出版社人民出版社学术著作引证注释格式(修正版) 会计研究信息安全学报傳播與社會學刊公共行政评论兰州大学兽类学报农业工程学报农业技术经济农业机械学报分析化学化学进展北京大学(顺序编码)北京师范大学北京林业大学北京林业大学(本科)北京理工大学北京航空航天大学北方工业大学-英语专业(本科)华东师范大学华东理工大学-社会与公共管理学院华东理工大学(本科)华中农业大学华中科技大学-同济医学院华中科技大学-电气与电子工程学院华中科技大学-网络空间安全学院华中科技大学(理工科)华北农学报华北水利水电大学(研究生)华南农业大学华南农业大学(本科)华南师范大学-1202-工商管理学华南理工大学-公共管理学院南京中医药大学南京农业大学学报(自科版)南京农业大学(人文社科类,脚注)南京农业大学(自然科学类)南京工程学院南京理工大学学报(社会科学版)南京航空航天大学南京邮电大学南方民族考古南昌大学(本科生)历史研究原子核物理评论原子能科学技术合肥工业大学博士学位论文同济大学哈尔滨医科大学哈尔滨理工大学四川农业大学四川外国语大学-英语语言文学(语言学、教学法方向)四川大学-华西临床医学院四川大学-外国语学院(本科)园艺学报国防科技大学研究生学位论文国际关系研究国际安全研究国际政治研究国际新闻界国际法研究国际经贸探索国际金融研究地球物理学报地理学报地质学报复旦大学-大气与海洋科学系外交评论外国文学评论外语教学与研究外语教学理论与实践大连海事大学大连理工大学天津大学(顺序编码)天然气工业太平洋学报宁波大学安徽医科大学安徽理工大学导出作者、出版年导出作者、刊名、年卷期页导出全部作者导出刊名导出刊名、年卷期页导出笔记(@题名@作者@出版年)导出题名山东农业大学山东大学(顺序编码制)山西农业大学山西大学(本科生)岩石学报广东工业大学广州大学应用力学学报当代亚太微生物学报心理学报心理科学进展成都理工大学扬州大学探索与争鸣教育史研究数量经济技术经济研究文学评论文艺争鸣新疆农业大学动科学院新疆农业大学食品科学与药学学院新疆大学新金融新闻与传播研究无机材料学报昆明医科大学暨南大学材料导报林业科学林产化学与工业核农学报核聚变与等离子体物理植物保护学报植物生理学报植物科学学报植物遗传资源学报武汉大学(博士-水利水电学院)武汉大学(本科)武汉理工大学(本科)水利水运工程学报水生生物学报水科学进展江南大学江西财经大学沈阳农业大学河北农业大学河北医科大学河北大学研究生学位论文河北工业大学学河海大学法学引注手册(多语言)法学引注手册(多语言,重复引用不省略)法学引注手册(第二版,多语言)法学引注手册(第二版,多语言,重复引用不省略)法学引注手册(第二版,多语言,重复引用不省略,标注页码)济南大学研究生浙江大学浙江大学(社会科学类)海南大学-外国语学院海南大学海洋与湖沼深圳大学清华大学(人文社科)清华大学(著者-出版年)清华大学(顺序编码)湖北大学湖南大学(脚注)湖南大学(顺序编码)湖南师范大学澳門科技大學物理学报(双语)环境昆虫学报环境科学现代国际关系生态学报生物化学与生物物理进展生物多样性电子科技大学皮肤性病诊疗学杂志石河子大学(著者-出版年)石河子大学(顺序编码制)矿产勘查硅酸盐学报社会学研究福建农林大学福建师范大学(本科)科学学与科学技术管理科学学研究科学通报(双语)管理世界管理评论系统工程理论与实践经济与管理研究经济学(季刊)经济理论与经济管理经济研究经济社会体制比较经济管理综合性期刊文献引证技术规范(注释)综合性期刊文献引证技术规范(著者—出版年)考古臺大中文學報色谱营销科学学报西北农林科技大学西北农林科技大学(本科)西北工业大学西南交通大学(著者-出版年)西南交通大学(顺序编码)西南大学西南政法大学西南财经大学(本科)西安交通大学西安工程大学西安建筑科技大学西安理工大学西安电子科技大学西安电子科技大学(本科)计算机学报财经研究财贸经济贵州大学遥感学报郑州大学(研究生)重庆大学(著者-出版年)重庆大学(顺序编码)重庆邮电大学金融研究金融评论钢铁研究学报长江大学(硕士,理工农医类)食品工业科技食品科学首都医科大学马克思主义研究高分子学报黑龙江大学(本科)

📈 Performance Trends