TYPOSCRIPT:stdWrap.replacement 仅在文本字段中

TYPOSCRIPT: stdWrap.replacement in text fields only

我通常通过 stdWrap 搜索并替换为德语引号。

lib content {
    20 < styles.content.get
    20.select.where = colPos = 0
    stdWrap.replacement{
         20 {
            search = #(&quot;)#
            replace = |*| &bdquo;||&ldquo; |*|
            useRegExp = 1
            useOptionSplitReplace = 1
        }
    }
}

从来没有遇到过问题,但现在我想将 CO2 替换为 CO2。但是:文件和图像的名称中也包含 CO2。此搜索和替换还会替换路径和文件名中的字符串。

有谁知道如何将 stdWrap-function 限制为仅文本字段(文本、header、标题)或排除特定字段(图像、文件)?

感谢您的帮助:)

马丁

仅替换文本(来自例如 bodytext)将非常复杂,并且可能只能在该特定字段的输出(拼写错误或 FLUID)上完成。
但是,如果文本包含文件名中包含 CO2 的文件的 link 怎么办?
几乎不可能捕捉到。

您可以尝试使用正则表达式来仅捕获单词(受限于空格或标点符号,不用于文件名)。

更好的解决方案意味着编辑需要做更多的工作:
不要只替换 CO2,而是使其像 __CO2__##CO2##.
一样独一无二 虽然这个字符序列在文件名中也是可能的,但它的概率远低于 CO2

您可以使用具有前瞻性的正则表达式:

lib.content {
  20 < styles.content.get
  20.select.where = colPos = 0
  stdWrap.replacement{
    20 {
      search = #(?![^<>]*>)(co2)#i
      replace = CO<sub>2</sub>
      useRegExp = 1
    }
  }
}

(?![^<>]*>) 将确保 < 和 > 之间的任何文本都不会被替换。