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

[功能请求] 统一中文引号使用 #4186

Closed
Tracked by #4702
CCXXXI opened this issue Aug 8, 2022 · 31 comments · Fixed by #4792
Closed
Tracked by #4702

[功能请求] 统一中文引号使用 #4186

CCXXXI opened this issue Aug 8, 2022 · 31 comments · Fixed by #4792

Comments

@CCXXXI
Copy link
Contributor

CCXXXI commented Aug 8, 2022

我遇到的问题是

当前格式手册中有如下内容:

请特别注意,我们通常习惯使用 来提高 中文引号 的辨识度。

但站内仍存在大量 「」 “” 混用。

我希望能有这样的解决方案

由 bot 自动将 “” 替换为 「」

我觉得这些备选方案也可以接受

  • build 时替换
  • 渲染时替换
@ouuan
Copy link
Member

ouuan commented Feb 1, 2023

引号里是英文 / 引号所在段落是英文的情况应该用哪种引号呢 🤔 另外,使用 " 似乎是比使用 “” 更加严重的错误?

@Great-designer
Copy link
Contributor

Great-designer commented Feb 1, 2023

对于全角引号的替换,应该放进格式化bot中作为一条替换规则,因为代码中没有全角引号。

对于半角引号,建议不操作。

@CCXXXI
Copy link
Contributor Author

CCXXXI commented Feb 1, 2023

引号里是英文 / 引号所在段落是英文的情况应该用哪种引号呢 🤔

根据知乎上的这些讨论,主流做法是与引号外内容保持一致:

@CCXXXI CCXXXI changed the title [功能请求] 统一引号使用 [功能请求] 统一中文引号使用 Feb 1, 2023
@CoelacanthusHex
Copy link
Member

我认为应当避免 “”‘’,因其在 Unicode 中全半角共享码点,渲染为全半角完全取决于字体、渲染库和上下文。我个人认为应当全部使用「」""''以取得较好的显示效果。

@Great-designer
Copy link
Contributor

我认为应当避免 “”‘’,因其在 Unicode 中全半角共享码点,渲染为全半角完全取决于字体、渲染库和上下文。我个人认为应当全部使用「」""''以取得较好的显示效果。

需要交给bot

@r-value
Copy link
Contributor

r-value commented Feb 1, 2023

需要交给bot

bot 如何区分何时替换, 何时不替换? 如上所述, “”‘’ 在 Unicode 中全半角的编码是完全一致的, bot 不能在编码上区分. 如果全部替换会将半角语境下的英文引号一同替换.

@CCXXXI
Copy link
Contributor Author

CCXXXI commented Feb 1, 2023

需要交给bot

bot 如何区分何时替换, 何时不替换? 如上所述, “”‘’ 在 Unicode 中全半角的编码是完全一致的, bot 不能在编码上区分. 如果全部替换会将半角语境下的英文引号一同替换.

OI-wiki 极少(如果不是从不)出现半角语境下的英文引号,人工转义一下应该足够了;或者也许可以根据引文前后的空格判断?

@Great-designer
Copy link
Contributor

Great-designer commented Feb 3, 2023

bot 如何区分何时替换, 何时不替换? 如上所述, “”‘’ 在 Unicode 中全半角的编码是完全一致的, bot 不能在编码上区分. 如果全部替换会将半角语境下的英文引号一同替换.

欸,刚刚理解这是在说啥,这确实是个问题。有两个基本事实:

  • 全半角的码位相同,bot无法区分
  • 方引号 「」 难以输入

接下来考虑渲染。浏览器是如何渲染全半角引号的?

“” "" '' ‘’

这四个测试了一下,虽然同一个码位,但是在GitHub Talk上竟然可以区分。第1个和第4个是全角,第2个和第3个是半角。

或者可以根据出现的位置判断:凡是出现在正文中的,一律替换。对于 这个位置、LaTeX、代码段等,所有带有特殊格式的,一律不替换……

@r-value
Copy link
Contributor

r-value commented Feb 3, 2023

这四个测试了一下,虽然同一个码位,但是在GitHub Talk上竟然可以区分。第1个和第4个是全角,第2个和第3个是半角。

您举例中的这四个并非同一码位. 您在第2与第3个示例中使用的是所谓的 "傻瓜引号", 正如前文中 @ouuan 所提出的, 使用该引号也是很值得质疑的行为. 语法上讲英语不应当使用 "傻瓜引号". 详细的内容可以参见 Wikipedia: Quotation mark

@Great-designer
Copy link
Contributor

您举例中的这四个并非同一码位. 您在第2与第3个示例中使用的是所谓的 "傻瓜引号", 正如前文中 @ouuan 所提出的, 使用该引号也是很值得质疑的行为. 语法上讲英语不应当使用 "傻瓜引号". 详细的内容可以参见 Wikipedia: Quotation mark

那么问题已经解决了。对于傻瓜引号,一律不处理,其余一律处理。因为程序代码中的引号一定是傻瓜引号,只要保证bot不会干扰程序代码就行了。

LaTeX中的撇号自然也是傻瓜引号(或者其他什么东西),也可以不处理。

@r-value
Copy link
Contributor

r-value commented Feb 3, 2023

那么问题已经解决了。对于傻瓜引号,一律不处理,其余一律处理。因为程序代码中的引号一定是傻瓜引号,只要保证bot不会干扰程序代码就行了。

但是英文语境中本就应当使用 “”, 所以我质疑一律处理会将英文语境中的引号替换为中文直角引号.

@Great-designer
Copy link
Contributor

Great-designer commented Feb 3, 2023

但是英文语境中本就应当使用 “”, 所以我质疑一律处理会将英文语境中的引号替换为中文直角引号.

本站为中文网站。现需要举一个现存在本站的“英文语境且使用引号”的具体位置。(感觉这种情形本身较为罕见)

另注:希望举例的目的是,找出这种罕见的情形具有怎样的特征,从而方便工作,而不是对观点的否定或肯定。

另注,直角引号甚至不在128~255的扩展ASCII范围内,从而确实不便输入。见 #4694

@CoelacanthusHex
Copy link
Member

但是英文语境中本就应当使用 “”, 所以我质疑一律处理会将英文语境中的引号替换为中文直角引号.

本站为中文网站。现需要举一个现存在本站的“英文语境且使用引号”的具体位置。(感觉这种情形本身较为罕见)

另注,直角引号甚至不在128~255的扩展ASCII范围内,从而确实不便输入。见 #4694

直角引号位于中国国家强制标准 GB2312 中,无法输入该符号的输入系统皆不符合中华人民共和国通行标准。

@Great-designer
Copy link
Contributor

另注,直角引号甚至不在128~255的扩展ASCII范围内,从而确实不便输入。见 #4694

直角引号位于中国国家强制标准 GB2312 中,无法输入该符号的输入系统皆不符合中华人民共和国通行标准。

另强调:“不便输入”不是“无法输入”。

宪法规定每个正常的公民均有被选举权,从而理论上你可以被选举为国家主席,这里不是“无法”。

@r-value
Copy link
Contributor

r-value commented Feb 3, 2023

本站为中文网站。

但是外部链接不一定是中文. 英文外部引用中的标题中出现引号是合理的潜在需求, 如果用 bot 强制替换那么会留下祸根, 到时候只能选择回滚 bot.

@Great-designer
Copy link
Contributor

Great-designer commented Feb 3, 2023

但是外部链接不一定是中文. 英文外部引用中的标题中出现引号是合理的潜在需求, 如果用 bot 强制替换那么会留下祸根, 到时候只能选择回滚 bot.

已列举第一种情况:对引用不处理。如果在引用中确实有中文引号,作为少数情形,则管理员手动调一下就行。

这是一个很好的开始,证明使用bot修改的总方向无误。剩余的可以头脑风暴,不再解释。

@r-value
Copy link
Contributor

r-value commented Feb 3, 2023

已列举第一种情况:对引用不处理

您需要提供一个合理的实现来判断此条件. 替换的想法是好的, 但是我这里想说的是实现是困难的.

@Great-designer
Copy link
Contributor

Great-designer commented Feb 3, 2023

您需要提供一个合理的实现来判断此条件. 替换的想法是好的, 但是我这里想说的是实现是困难的.

引用位于ref中。如果是一个网址,或者如果位于

  • 这个位置

不处理。

这样做确实会漏过一些

  • 这个位置

的情形。但是一篇正常的文章不可能通篇都是

  • 这个位置

的中文引号,从而特例不多。

@Great-designer
Copy link
Contributor

Great-designer commented Feb 3, 2023

但是我这里想说的是实现是困难的.

思路没错,并且承认其确实有些难度。

另注:其实这个跟“OI wiki里要不要放代码”的议题很像。通篇纸上谈兵的效果就是这样,一个代码没有,读者也很费解。见#4685

@r-value
Copy link
Contributor

r-value commented Feb 3, 2023

您需要提供一个合理的实现来判断此条件. 替换的想法是好的, 但是我这里想说的是实现是困难的.

引用位于ref中。如果是一个网址,或者如果位于

  • 这个位置

不处理。

这样做确实会漏过一些

  • 这个位置

的情形。但是一篇正常的文章不可能通篇都是

  • 这个位置

的中文引号,从而特例不多。

看上去您已经对新功能的实现有了明确的思路, 那么不妨请您来实现.

@Great-designer
Copy link
Contributor

Great-designer commented Feb 3, 2023

看上去您已经对新功能的实现有了明确的思路, 那么不妨请您来实现.

瑟瑟发抖,不会写bot。如果负责写bot的同学确实不会,本着不难为同学的原则,那就算了。

@Enter-tainer
Copy link
Member

@Great-designer 感觉corner case有点多,最近不考虑

@Great-designer
Copy link
Contributor

感觉corner case有点多,最近不考虑

  • 交由编写者或者管理员输入直角,鉴于不便捷,无法实现。
  • 交由bot处理,实现麻烦。

总结:暂时搁置,作为长期问题

@CoelacanthusHex
Copy link
Member

@Great-designer #4186 (comment)
纸上谈兵的明显是您吧,群里bot开发者一直在积极和其他贡献者讨论技术上的可行性

@Great-designer
Copy link
Contributor

纸上谈兵的明显是您吧,群里bot开发者一直在积极和其他贡献者讨论技术上的可行性

我没说“不是我”,也没说“不积极”,仅在作冷静陈述,其上的感情为读者的臆想。以后对于这种一概不回复

@CCXXXI
Copy link
Contributor Author

CCXXXI commented Feb 3, 2023

另外,使用 " 似乎是比使用 “” 更加严重的错误?

这可能并不是什么严重错误,实际上,英文维基百科甚至要求使用直引号代替弯引号

https://en.wikipedia.org/wiki/Wikipedia:Manual_of_Style#Quotation_characters

@CCXXXI
Copy link
Contributor Author

CCXXXI commented Feb 3, 2023

对于全角引号的替换,应该放进格式化bot中作为一条替换规则

在不了解技术细节的情况下,最好不要尝试提出具体实现方案,这通常难以落实

因为代码中没有全角引号。

全角引号可能出现于代码中的字符串等位置

对于半角引号,建议不操作。

无论如何,半角引号的处理不属于本 issue 内容

@CCXXXI
Copy link
Contributor Author

CCXXXI commented Feb 3, 2023

语法上讲英语不应当使用 "傻瓜引号". 详细的内容可以参见 Wikipedia: Quotation mark

在该条目本身中就出现了数次傻瓜引号,这一用法也是英文维基百科的共识

@CCXXXI
Copy link
Contributor Author

CCXXXI commented Feb 3, 2023

本站为中文网站。现需要举一个现存在本站的“英文语境且使用引号”的具体位置。(感觉这种情形本身较为罕见)

使用 VS Code 等工具进行搜索即可找到,比如 https://oi-wiki.org/lang/csl/bitset/

另注,直角引号甚至不在128~255的扩展ASCII范围内,从而确实不便输入。见 #4694

是否便于输入和本 issue 试图解决的问题无关

OI Wiki 是一个编程竞赛知识整合站点,提供有趣又实用的编程竞赛知识以及其他有帮助的内容,帮助广大编程竞赛爱好者更快更深入地学习编程竞赛

@CCXXXI
Copy link
Contributor Author

CCXXXI commented Feb 3, 2023

但是外部链接不一定是中文. 英文外部引用中的标题中出现引号是合理的潜在需求

这种情况已经存在,比如:https://oi-wiki.org/ds/seg/#参考

@CCXXXI
Copy link
Contributor Author

CCXXXI commented Feb 3, 2023

但是我这里想说的是实现是困难的.

感觉corner case有点多

特殊情况的出现频率很低,可以人工处理,目前全站仅有:

  1. https://oi-wiki.org/contest/oi/#isij (顺带一提,ISIJ 官网自己用的是直引号)
  2. https://oi-wiki.org/ds/seg/#参考
  3. https://oi-wiki.org/graph/dmst/#参考文献
  4. https://oi-wiki.org/lang/csl/bitset/#介绍
  5. https://oi-wiki.org/string/sam/#在线性时间内构造
  6. https://oi-wiki.org/tools/latex/#更多阅读
  7. https://oi-wiki.org/tools/editor/vscode/#clangd-简介
OI Wiki 是一个编程竞赛知识整合站点,提供有趣又实用的编程竞赛知识以及其他有帮助的内容,帮助广大编程竞赛爱好者更快更深入地学习编程竞赛

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants