Я предполагаю, что проблема, которую вы пытаетесь решить, состоит в том, чтобы иметь документ уценки, который ссылается на некоторый фрагмент кода, и вы хотели бы избежать копирования и вставки кода в документ и кошмара синхронизации двух версий с помощью рука. Итак, вы попытались решить проблему, включив исходные файлы в документ уценки через фильтр.
Я решил ту же проблему другим способом. Я сохранил весь (соответствующий) исходный код в документе уценки и написал инструмент, который извлекает весь исходный код. Мой конкретный вариант использования заключался в том, что я писал слайды для лекций, и каждый раз, когда я компилировал свои слайды, я также извлекал код и следил за его компиляцией. Я также собрал весь код в zip-архив для удобства моих студентов.
Мой инструмент доступен здесь: https://github.com/josefs/CodeExtract
Вы можете написать такие блоки кода:
~~~ {.haskell file="Hello.hs"}
main = putStrLn "Hello World!"
~~~
При запуске документа, содержащего такие блоки кода, через мой маленький инструмент будет создан файл Hello.hs
, содержащий код в блоке.
Существует также более продвинутая функция, поддерживающая несколько фрагментов кода, которые могут оказаться в одном документе. Например, у вас может быть два таких блока кода:
~~~ {.haskell template="Hello.hs.tmpl" var="mainfkn"}
main = putStrLn str
~~~
~~~ {.haskell template="Hello.hs.tmpl" var="misc"}
str = "Hello World!"
~~~
И затем файл шаблона, Hello.hs.tmpl
подобный следующему (он использует тот же формат шаблона, что и pandoc):
~~~
module Main where
$mainfkn$
$misc$
~~~
Он сгенерирует файл Hello.hs
, содержащий файл шаблона, но с заменой переменной соответствующим блоком кода в файле уценки. Это очень удобно.
Я надеюсь, что вы найдете мой инструмент полезным, хотя я понимаю, что он может не решить вашу конкретную проблему.
person
svenningsson
schedule
05.02.2014