#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 ...