微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

正则表达式 – 如何将常规引号(即’,“)转换为LaTeX / TeX引号(即`’,“”)

给出用正常引号写的文档,例如

Ben said "buttons,dear sir".
I replied "Did you say 'buttons'?" to him.

有什么方法可以用适当的语义将这些东西变成LaTeX引号.即

Ben said ``buttons,dear sir''.
I replied ``Did you say `buttons'?'' to him.

所以LaTeX产生:

Ben said “buttons,dear sir”.
I replied “Did you say ‘buttons’?”

我的第一个想法是转向正则表达式.但是,我没有从谷歌或正则表达式库获得任何点击“LaTeX引用正则表达式”,当然“TeX引用正则表达式”似乎返回太多.

谢谢.

解决方法

一般来说,这个问题比看起来更难.

最简单的情况可以用正则表达式来处理,但是对于更一般的情况,你几乎肯定需要构建一个递归解析器:正则表达式只有在没有嵌套时才能工作.

最大的问题是与识别未配对的单个“ – ”相关联 – 收缩(“不”中的“”不应该改变,不应该配对).

让我们看看我们是否可以编写可用的EBNF描述:

input:       text+
text:        uquote|squote|dquote
squote       "'" text "'"
dquote       """ text """
uquote:      [contraction|.]+
contraction: [A-Za-z]+ "'" [A-Za-z]+

仅限于在单词中间带有“’”的收缩.除了squote和dquote术语在适当时替换引号之外,所有相关操作都将回显输入.

我使用正则表达式,然后使用人工修复程序进行相当简单的一次性操作,但对于正在进行的工作而言,这将是劳动密集型的.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐