Feature request: 支持中英双语的参考文献
OrangeX4 opened this issue · comments
目前 Typst 不支持中英双语的参考文献,详见 typst/typst#2793 和 typst/citationberg#5
我有一个用来解决这个问题的 proof of concept:https://typst.app/project/rN08qR13YfLociKdV7b1Mx
不过目前只是普通的简单映射替换,还需要补充这个映射表,以及希望能够处理一些更特殊的情况。
可以通过比对 Citation Style Language 项目的 locales
得到完整的映射表
en-US
https://github.com/citation-style-language/locales/blob/master/locales-en-US.xmlzh-CN
https://github.com/citation-style-language/locales/blob/master/locales-zh-CN.xml
实际用到的词语不多,只需要对等
卷
册
处理应该就可以了。
我改了一个支持 修好了,您可以在 https://gist.github.com/csimide/fc0e3ef69775a69805fc6ba7af227c4c 查看。第x版
的,但是不知道为什么工作不正常,
理论上这种做法适用于 GB7714-2015 numeric 及其变体,但是由于“方言”很多,不能保证适配所有变体。
请问还有其他测试引文条目吗
我才看到,太强了,感谢补充的代码!我可以觉得可以将其用到模板里面了。
我目前也没有太多其他的测试引文条目,我觉得可以等到有更多用户反馈时再进行修改,这个 issue 可以暂且不用关闭,您也可以在 SEU-Typst-Template 也维护一个反馈的 issue。
以及 typst 还有一个多文件架构的问题,typst 会默认使用函数定义所在目录作为“相对路径父目录”,也就是说,调用 bilingual-bibliography("ref.bib")
默认使用的是模板目录,而不是用户目录。所以这里我有一个借助闭包来解决这个问题的 workaround。
目前判断中文的方法非常粗暴,我也不知道好不好用。
regex("[等卷册和版本章期页篇译间者(不详)]")
这一段关键字表是我看中文 locales
写的。之前看 LaTeX 文稿见过 日期不详.
之类的写法,我自己写东西引用的时候发现大部分 CSL 会将未给定的字段直接去除。因此虽然在这里对 不详
做了排除,但各种 不详
没有加到翻译表里。
我的想法是,如果做了上面的替换后,理论上应该把绝大部分单字多字的提示性文字去掉了。如果还残留有大于两个汉字,那么这条文献应该当作中文文献处理。这是一段“凭感觉”的代码,并不知道是否容易误判。如果有更好的判断方法,建议替换。
我刚发现我注释写的是
但代码写的是注释与代码不符,应该改成
regex("\p{sc=Hani}{2,}")
才对。
目前还需要大量文献条目测试。我在考虑
这里有一个default
情况,正常情况下是不会走到这个 default
里的(即:英文条目中不应该有汉语字符)。这里或许可以改成
mapping.at(itt.text, default: text(fill: red, itt.text))
甚至添加一些其他提示语,让用户报 issue 方便处理。
原本的代码中我也写错了,应该是
mapping.at(itt.text, default: itt.text)
才对,少了个.text
。
您也可以在 SEU-Typst-Template 也维护一个反馈的 issue。
SEU 用的是 GB/T 7714-2015 的方言,得找个时间改出符合要求的 CSL 来……
所以这里我有一个借助闭包来解决这个问题的 workaround。
我偷懒先套娃了(
#bilingual-bibliography(
bibliography(
"ref.bib",
style: "gb-t-7714-2015-numeric-seu.csl"
)
)
改了一下,现在支持根据译者数量自动选择 tran
还是 trans
了。判断数量的方法比较草率,可以看注释。
另外遇到了 等
译为 et al.
时补 .
和空格的问题,把 等
也单独做了一个替换逻辑。
特殊情况越做越多,怎么回事呢
已经传到 https://typst.app/project/rN08qR13YfLociKdV7b1Mx (它出现在了我的 typst.app 里)和 https://gist.github.com/csimide/fc0e3ef69775a69805fc6ba7af227c4c 了