在标记文本中替换占位符(变量)的最简单方法?

时间:2014-06-30 21:43:24

标签: markdown placeholder pandoc

我需要一种开放式格式来以通用方式编写故事(使用占位符/变量)。为了使故事具体化,我想设置一个键/值对列表,并在发布时应用它们。我还想将样式与内容分开,以便我可以轻松地发布到网页,pdf等。

示例:@varname@ is a great place.

我选择Markdown来解决内容/样式分离,但我不知道一种简单的方法来参数化文本的某些部分,并在使用像pandoc这样的工具生成html / pdf输出时填写它们。

有什么建议吗?这可以通过降价来完成,还是有合适的降价延期?

3 个答案:

答案 0 :(得分:2)

就个人而言,我使用sed甚至funnelweb之类的东西,但是您可以使用pandoc过滤器,在haskell或(可能更容易)使用{{1 python库可用here

答案 1 :(得分:0)

对于网络,您可以使用Jekyll templates with Liquid。转换为HTML时,将解释由双括号{{}}包围的复杂表达式。示例(来自链接):

{{ site.time | date_to_string }}
     

2008年11月7日

我认为也可以定义自定义变量。

答案 2 :(得分:0)

Pandoc 的 Markdown 允许嵌入原始 LaTeX,甚至可以替换简单的定义,这些定义可以使用 Lua filter 加以利用。例如;

\def\varname{Berlin}

\varname is a great place.

将在生成 PDF 输出时立即工作。

下面是一个 Lua 过滤器,它使这个技巧适用于所有输出格式:

-- file: tex-macros.lua
function RawInline (r)
  -- Inline expanded TeX commands.
  if r.format == 'tex' and r.text:match '^[^\\]' then
    return pandoc.Str(r.text)
  end
end

通过 --lua-filter(或 -L)命令行选项传递它来使用它:

pandoc --lua-filter tex-macros.lua ...