Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CSL 咨询] CSL是否可以完成对标题引号的替换? #204

Closed
northword opened this issue Sep 8, 2023 · 10 comments
Closed

[CSL 咨询] CSL是否可以完成对标题引号的替换? #204

northword opened this issue Sep 8, 2023 · 10 comments

Comments

@northword
Copy link
Member

描述

@zepinglee 李同学好,

打扰了,我想咨询一个与 CSL 有关的问题:

有用户反馈说部分样式要求标题以双引号包裹,那么标题里的引号就需要替换为单引号;书名号同理。

直觉告诉我这一替换应由 CSL 完成,但我在 CSL 规范里没有找到相关描述,Quotes 引号,我想咨询这种是需要用户自己将标题里的双引号替换为单引号吗?

感谢!

相关议题

northword/zotero-format-metadata#72

@northword northword changed the title [CSL 咨询] CSL是否可以完成对字段特定字符的替换? [CSL 咨询] CSL是否可以完成对标题引号的替换? Sep 8, 2023
@yzy1228682367
Copy link

描述

@zepinglee 李同学好,

打扰了,我想咨询一个与 CSL 有关的问题:

有用户反馈说部分样式要求标题以双引号包裹,那么标题里的引号就需要替换为单引号;书名号同理。

直觉告诉我这一替换应由 CSL 完成,但我在 CSL 规范里没有找到相关描述,Quotes 引号,我想咨询这种是需要用户自己将标题里的双引号替换为单引号吗?

感谢!

相关议题

northword/zotero-format-metadata#72

大佬你好,这个问题我在这里问过了的,是不能的,抱歉我应该在上一问题之中引用以下链接(/ω\)。详情参见#202

@northword
Copy link
Member Author

@yzy1228682367 收到,谢谢!

@zepinglee
Copy link
Collaborator

直觉告诉我这一替换应由 CSL 完成,但我在 CSL 规范里没有找到相关描述,Quotes 引号

Spec 里确实没提到,但是 test-suiteflipflop_* 中有相当一部分是关于自动转换引号的。

我想咨询这种是需要用户自己将标题里的双引号替换为单引号吗?

不需要。

@northword
Copy link
Member Author

northword commented Sep 9, 2023

结合 #202 ,也就是 CSL 可以正常处理引号 "" -> ''“” -> ‘’,但是不能处理书名号《》 -> <>,是这样子嘛?

解决了,是我在测试的时候没有把引号两边加空格,所以一直没试出来:

图片

图片

图片

图片

感谢!

@zepinglee
Copy link
Collaborator

zepinglee commented Sep 9, 2023

结合 #202 ,也就是 CSL 可以正常处理引号 "" -> ''“” -> ‘’

CSL 输出的引号是按照 locale 的设置,不是固定的映射关系。这是因为引号在不同语言的使用习惯差异很大,见 https://en.wikipedia.org/wiki/Quotation_mark#Summary_table

但是不能处理书名号《》 -> <>,是这样子嘛?

总的来说不能。书名号比较特殊,据我了解只有中韩语言有这种用法。它相当于独立于引号的一套规则,但是 CSL 只有引号这一种 flip-flop 的方式。有一种方法是在 locale 中将 open-quote, close-quote 改为书名号,但是这样会将引号错误地转为书名号。比如标题输入为 “北斗一号”监控管理网设计与实现,在加了书名号后输出为 《〈北斗一号〉监控管理网设计与实现》。所以这种方式并不可行。

解决了,是我在测试的时候没有把引号两边加空格,所以一直没试出来:

中文的引号在 Unicode 编码上无法与西文引号区分,一般使用中文的字体显示为全角形式,所以不宜加空格。

这里的问题在于,CSL 是按照西文的习惯判断直引号是开启还是结束,比如前后是否有空格等。这主要是由于西文的右引号跟撇号(比如 don't 表示缩写)在有歧义。但这一逻辑不适用于中文。所以中文标题应使用弯引号。

@zepinglee
Copy link
Collaborator

测试中就存在引号被错误地转为书名号的问题。

这主要是因为官方 locale 中将 open-quote 设成了书名号。

https://github.com/citation-style-language/locales/blob/8bbac89b216f551ca3d4f77860818938d678badd/locales-zh-CN.xml#L157-L160

    <term name="open-quote">《</term>
    <term name="close-quote">》</term>
    <term name="open-inner-quote">〈</term>
    <term name="close-inner-quote">〉</term>

我查了一下 commit 记录,是某不熟悉大陆标点用法的台湾人提交的。

@northword
Copy link
Member Author

我也尝试过在 CSL 样式中将 open-quote 和 close-quote 设置为书名号,但是会将正常的引号转为书名号。

我觉得可以在插件中实现转换单双书名号的转行,不妨在给插件(比如茉莉花)作者提 feature request。

有一点儿复杂,希望我理解的没有太大的偏差:

也就是如果插件实现的话,如果主要考虑中文和英文两种语言环境,只需要实现中文引号 “ ” <-> ‘ ’ 和中文书名号 《 》 <-> 〈 〉 的转换,英文的引号不要动是比较安全的,是这样嘛?

还是说这种替换最好根据 language 来,仅在 zh 时进行替换,en 不用管?

@zepinglee
Copy link
Collaborator

我也尝试过在 CSL 样式中将 open-quote 和 close-quote 设置为书名号,但是会将正常的引号转为书名号。
我觉得可以在插件中实现转换单双书名号的转行,不妨在给插件(比如茉莉花)作者提 feature request。

有一点儿复杂,希望我理解的没有太大的偏差:

也就是如果插件实现的话,如果主要考虑中文和英文两种语言环境,只需要实现中文引号 “ ” <-> ‘ ’ 和中文书名号 《 》 <-> 〈 〉 的转换,英文的引号不要动是比较安全的,是这样嘛?

还是说这种替换最好根据 language 来,仅在 zh 时进行替换,en 不用管?

只需要转换中文的书名号即可,引号不需要改。

@northword
Copy link
Member Author

只需要转换中文的书名号即可,引号不需要改。

收到,非常感谢!

northword added a commit to northword/zotero-format-metadata that referenced this issue Sep 9, 2023
@yzy1228682367
Copy link

明白!感谢两位大佬❤️

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

No branches or pull requests

3 participants