如何让CSL与citeproc按参考文献语言应用不同著录格式?
解决CSL按语言区分参考文献格式的正确配置方式
核心问题
你之前尝试自定义lang-zh变量判断中文文献,但CSL不识别这类自定义字段,正确做法是利用CSL原生语言匹配机制,结合标准BibTeX字段实现需求。
步骤1:修正.bib文件的语言字段
在BibTeX条目中使用标准language字段,填入符合BCP 47规范的语言代码,删除所有自定义字段:
@article{chen2012, title = {基于电无级变速器的内燃机最优控制策略及整车能量管理}, author = {陈骁 and 黄声华 and 万山明 and 庞珽}, journal = {电工技术学报}, volume = {27}, number = {2}, pages = {133--138}, year = {2012}, language = {zh-CN} % 简体中文用zh-CN,通用中文用zh,英文用en }
步骤2:修改CSL的语言判断逻辑
将CSL中自定义的<if variable="lang-zh">替换为原生语言判断语法:
<citation> ... <layout> <choose> <if lang="zh"> <!-- 中文参考文献使用全角逗号分隔 --> <group delimiter=","> <text macro="author-short-zh" /> <text macro="issued-year-zh" /> <text macro="citation-locator-zh" /> </group> </if> <else> <!-- 英文参考文献使用半角逗号分隔 --> <group delimiter=", "> <text macro="author-short" /> <text macro="issued-year" /> <text macro="citation-locator" /> </group> </else> </choose> </layout> </citation>
额外说明
- 若要匹配所有中文变体(如zh-CN、zh-TW等),可使用通配符写法:
<if lang="zh*"> - BCP 47常用语言代码:英文用
en,美式英文en-US,繁体中文zh-TW
内容的提问来源于stack exchange,提问作者Carlos Luis Rivera
相关产品推荐
相关产品推荐

