Самый простой способ заменить заполнители (переменные) в тексте уценки?

#markdown #placeholder #pandoc

#markdown #плейсхолдер #pandoc

Вопрос:

Мне нужен открытый формат для написания историй общим способом (с заполнителем / переменными). Чтобы сделать истории конкретными, я хотел бы задать список пар ключ / значение и применять их при публикации. Я также хочу отделить стиль от содержимого, чтобы я мог легко публиковать в Интернете, PDF и т.д.

Пример: @varname@ is a great place.

Я выбрал Markdown для решения проблемы разделения содержимого и стиля, но я не знаю простого способа параметризовать определенные части текста и заполнить их при создании выходных данных html / pdf с помощью такого инструмента, как pandoc.

Есть предложения? Можно ли это сделать с помощью markdown или есть подходящее расширение markdown?

Комментарии:

1. Вы также работаете с определенным языком программирования? Мне кажется, что создание шаблонов, выводящих Markdown, — ваш лучший выбор, но детали этого подхода будут сильно зависеть от вашего стека.

2. @Chris: Не используется определенный язык программирования. Я просто ищу простое в использовании / настраиваемое решение для ключей / значений, например pandoc-extension, для замены определенных строк (ключей) соответствующими значениями при публикации содержимого markdown в любом типе вывода (pdf, html, docx).

Ответ №1:

Лично я бы использовал что-то вроде sed или даже funnelweb , но вы могли бы сделать это с помощью фильтра pandoc либо в haskell, либо (возможно, проще) с помощью pandocfilters библиотеки python, доступной здесь

Ответ №2:

Для Интернета вы могли бы использовать шаблоны Jekyll с жидкостью. Сложные выражения, заключенные в двойные фигурные скобки {{}} , интерпретируются при преобразовании в HTML. Пример (по ссылке):

 {{ site.time | date_to_string }}
  

07 ноября 2008

Я думаю, что можно также определить пользовательские переменные.

Комментарии:

1. лучший ответ, который я нашел на этот вопрос, спасибо

Ответ №3:

Markdown от Pandoc позволяет встраивать необработанный LaTeX и даже заменяет простые определения, которые можно использовать с помощью фильтра Lua. Например.;

 defvarname{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 ...