l0o0 / jasminum

A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件,用于识别中文元数据
GNU Affero General Public License v3.0
5.58k stars 287 forks source link

姓名拆分合并后复原 #169

Open MrGongqi opened 1 year ago

MrGongqi commented 1 year ago

你好,姓名拆分合并这个功能很好用,但是我现在碰到一个难点,就是我错误将英文姓名也全部合并了,,,这样导致最后生成引文格式的时候姓名全乱了(与谷歌上的GB/T7714和该英文出版网站上的引文格式姓名的排列全不一样),由于遇到这个问题,我尝试了一下中文期刊的生成参考文献格式,发现了一个有趣的地方:当我将中文期刊的姓名合并后,生成的引文格式中姓名排列没有变化(和GB/T7714的标准一致)——如下图1和图2, image image 而当我将英文期刊的姓名合并后,生成的引文格式姓和名的顺序就变了(而真正正确的就是未进行姓名合并时的生成引文格式)——如图3和图4, image image 很明显,对于英文期刊,姓名合并操作前后,其生成的参考文献不一样了,而这点对于中文期刊则没有影响。

期望:能不能增添一项设置,可以将合并后的姓名还原到将该文献最开始导入zotero时生成的姓名样式。(PS:拆分合并后的姓名并不能恢复成最开始的式样——如下图5) image

zepinglee commented 1 year ago

是的,CSL 中 CJK 姓名总是使用“姓-名”的顺序输出。

你试一下 Zotero 自带的拆分姓名功能(点击姓名右侧、减号左侧的框),应该是可以正确拆为 Javadpour, F. 的。

我觉得可以考虑

  1. 将“拆分”、“合并”功能限制在 CJK 姓名,不处理西文姓名;
  2. 对西文姓名使用 Zotero 官方的拆分姓名功能。
MrGongqi commented 1 year ago

您能不能在插件中设置一个姓名恢复按键呢,,,这样操作起来就方便多了,可以一键选中统一恢复,,,因为系统自带的拆分处理起来太慢了,必须一条一条来弄。

zepinglee commented 1 year ago

您能不能在插件中设置一个姓名恢复按键呢,,,这样操作起来就方便多了,可以一键选中统一恢复,,,因为系统自带的拆分处理起来太慢了,必须一条一条来弄。

我是 CSL 开发者,对本项目不是完全了解。所以我只是从 CSL 的角度给插件提供一些思路。

据我了解,插件应该没有保存“最开始导入zotero时的姓名样式”,所以不太可能实现“恢复”功能。不过,批量调用官方的拆分功能应该是可以实现的。

MrGongqi commented 1 year ago

谢谢啦,非常感谢

MrGongqi commented 1 year ago

可以批量恢复元数据

l0o0 commented 1 year ago

@zepinglee

是的,CSL 中 CJK 姓名总是使用“姓-名”的顺序输出。

你试一下 Zotero 自带的拆分姓名功能(点击姓名右侧、减号左侧的框),应该是可以正确拆为 Javadpour, F. 的。

我觉得可以考虑

1. 将“拆分”、“合并”功能限制在 CJK 姓名,不处理西文姓名;

2. 对西文姓名使用 Zotero 官方的拆分姓名功能。

合并和拆分姓名功能就是针对中文姓名,后面又有了其他需求,主要是我对这个功能定位不明确。我觉得还是只针对中文比较合理。

@MrGongqi 你不小心合并的 英文文献 多么?

MrGongqi commented 1 year ago

@l0o0 额,我当时不太知道CSL的原理,以为CSL中姓-名顺序不会因为插件中的合并拆分操作而改变(也是我自以为合并拆分只是为了条目中作者一栏看着方便,不会影响CSL的输出),当时就全选中一键合并了姓名,,,英文期刊有400多篇

earthmoon commented 1 year ago

您能不能在插件中设置一个姓名恢复按键呢,,,这样操作起来就方便多了,可以一键选中统一恢复,,,因为系统自带的拆分处理起来太慢了,必须一条一条来弄。

我是 CSL 开发者,对本项目不是完全了解。所以我只是从 CSL 的角度给插件提供一些思路。

据我了解,插件应该没有保存“最开始导入zotero时的姓名样式”,所以不太可能实现“恢复”功能。不过,批量调用官方的拆分功能应该是可以实现的。

我觉得这一方案挺好。

jiaojiaodubai commented 1 month ago

应在插件的拆分逻辑中过滤西文名,避免对西文名执行中式的拆分合并。@l0o0 @northword

northword commented 1 month ago

应在插件的拆分逻辑中过滤西文名,避免对西文名执行中式的拆分合并。@l0o0 @northword

https://github.com/northword/zotero-format-metadata/blob/main/src%2Fmodules%2Frules%2Ffield-creators-pinyin.ts#L18-L19

Linter 在处理姓名时,会首先对姓作拼音拆分,只有符合拼音的才会进一步拆分名。

Linter 目前没有处理中文姓名,也没有提供西文作者姓名合并。

如果在这基础上有不期望的案例,请反馈一个例子。

jiaojiaodubai commented 1 month ago

Linter 目前没有处理中文姓名,也没有提供西文作者姓名合并。

按照之前的讨论,中文姓名现在推荐的做法是始终合并,但有些二字的中文名在网页上显示时为了视觉上的对齐会在中间增加空格,如果使用 ZU.cleanAuthor() 处理会导致姓名被拆分,虽然 translators_CN 已经在尽量避免这种情况,但不排除其他转换器抓取到这样的结果。