背景

背景

背景

Markdown 文档使用某些需要以特殊方式排版的字符串。在本例中,我们希望将文本出现在源文档中的任何地方都排版a.m.p.m.小写。即:

11 a.m. → 11 AM
11 p.m. → 11 PM

ConTeXt LMTX,最新版本。

问题

连接到 ConTeXt 的文本处理算法。

代码

以下代码片段显示了两个部分。第一部分表示输入源文档。第二部分显示如何替换文本。

\starttext
  {\bf Markdown Input}

  Our grandmother clock rang 11 p.m. and we fled.

  Our grandmother clock rang 11 p.m., so we fled.

  Our grandmother clock rang 11 p.m. We fled.

  \blank[big]

  {\bf \ConTeXt{} Output}

  Our grandmother clock rang 11 \cap{pm} and we fled.

  Our grandmother clock rang 11 \cap{pm}, so we fled.

  Our grandmother clock rang 11 \cap{pm}. We fled.
\stoptext

英语使得这比直接替换更具挑战性。例如:

晚上11点,库克船长烹制了一块弯曲的黄瓜。

我们不要担心那个案子。

问题

如何在不修改源文档的情况下在 ConTeXt 中执行字符串替换?是否有类似以下内容:

\definereplacement[SubstPostmeridian][
  match={[Pp].[Mm].]}
  replace={\cap{pm}}
]

\definereplacement[SubstMac][
  match={Mc(\W)}
  replace={M\sup{c}\1}
]

第二个示例将“McGenius”更改为“MᶜGenius”。

答案1

您可以使用该translate模块:

\startbuffer
  Our grandmother clock rang 11 p.m. and we fled.

  Our grandmother clock rang 11 p.m., so we fled.

  Our grandmother clock rang 11 p.m. We fled.
\stopbuffer

\usemodule[translate]

\translateinput[ a.m.][ \cap{AM}]
\translateinput[ p.m.][ \cap{PM}]

\starttext
\getbuffer

\enableinputtranslation

\getbuffer

\disableinputtranslation

\getbuffer
\stoptext

相关内容