可移动式智能行情,现在使用Retsin

回到八月,我发表了一篇文章描述如何将直引号转换为曲线引号可动类型博客模板我修复了一些错误,改进了智能引号算法,并利用了最新版本的新功能布拉德乔特的MT插件如果您使用Movable Type,请继续阅读以获取详细信息。

[2002年11月13日:如果您使用的是Movable Type 2.5或更高版本,这些说明现在已被我的新版本废弃SmartyPants插件]

如果你想切入追逐,请继续阅读完整的指导(这是原始文章的URL,但它现在包含更新的说明。)

变化

  • 由于我引用传递给Perl脚本的文本的方式,原始指令包含一个非常愚蠢的错误我正在使用PerlQ()运算符,使用括号作为分隔符如果你试图发布一个包含不平衡的parens的帖子 - 最常见的是因为表情符号::-)- MT将无法发布文章,你会看到神秘的错误(如果你不说Perl,这可能看起来像是彻头彻尾的胡言乱语)这已经修复了。

  • 执行引用教育的正则表达式在一些边缘情况下失败例如,以下文本中的结束引用将被错误地转换为开头引用:

    引号内有一些“<em> italics </ em>”

    这已经修复了。

  • Brad Choate的最新版本MTPerlScriptMTMacro插件(分别为1.3和1.5)现在相互集成,这使得为执行Perl脚本的MT模板创建伪标签变得容易。

    在原始说明中,您需要在模板中使用这样的内容(忽略愚蠢Q()BUG):

    <h1><MTPerlScript>
            print educate_quotes::educate( q(<$MTEntryTitle$>) );
        </MTPerlScript></h1>
    
        <MTPerlScript>
            print educate_quotes::educate( q(<$MTEntryBody$>) );
        </MTPerlScript>

    现在,您可以使用此代码:

    <MTMacroApply>
        <h1><educate_quotes><MTEntryTitle></educate_quotes></h1>
    
        <educate_quotes><MTEntryBody></educate_quotes>
        </MTMacroApply>

智能足够聪明?

我的算法仍然失败的一种情况是,如果在前导收缩中使用单个撇号,例如以下任一示例:

during the '80s

    'Twas the night before Christmas...

该算法将两个撇号转换为开盘single quotes; they should be closing quotes在没有特殊情况的情况下,这是一个难以解决的问题事实上,我尝试过的每个文字处理器都会出现同样的问题我认为如果BBEdit,Word和QuarkXPress不够智能,无法做到这一点,我不在乎我的脚本是否也是如此。

另外,在缩写的几十年的特定情况下,我的风格是这样写:

在80年代......

哪个工作得很好。

别处

Matthew Mullenweg提供自己的一套说明,使用Brad Choate的MTRegex插件但是,我不相信只使用正则表达式正确教育HTML标记中的引号是可能的Mullenweg comes close, but his implementation will do bad things with perfectly valid markup like this:

<p>链接<a href = "foo">此</a>宝贝。</ p>

where by “bad things”, I mean it will curl the quotes around the href attribute inside the tag如果像通常那样将属性放在等号旁边,则不会发生这种情况:

HREF = “foo” 的

但是我对于有效标记失败感到不舒服,特别是在这种情况下,它会阻止标记工作。

Mullenweg’s implementation also fails if the quotes contain only one character:

<p>字母“a”怎么样?</ p>

因为他的正则表达式模式要求引号之间至少有两个字符才能匹配。

以前: Linktoberfest
下一个: 事关Unix