Рассмотрите возможность использования механизма шаблонов, такого как Jinja2 с Python.
Возможно, вы захотите изменить синтаксис по умолчанию {%, {{и т. Д., Чтобы сделать его более совместимым с собственным LaTeX. Например:
env = jinja2.Environment(
loader=jinja2.FileSystemLoader( JINJA_DIRS ),
comment_start_string='["', # don't conflict with e.g. {#1
comment_end_string = '"]',
block_start_string = '[%',
block_end_string = '%]',
variable_start_string = '[=',
variable_end_string = ']',
autoescape=True,
finalize=_jinja2_finalize_callback, # make a function that escapes TeX
)
template = env.get_template( self.template )
tex = template.render( content )
В дополнение к функциям, которые передаются в среду шаблона, Jinja2 поддерживает макросы . Например, приведенный выше код должен работать так, как ожидается:
[% macro blah(egg, spam) -%]
foo [=egg] \to [=spam] bar
[%- endmacro %]
[= blah("chicken","pork") ]
% substitutes with "foo chicken \to pork"
Я не уверен, каковы ваши цели, и это требует небольшой работы, но это не является непреодолимой проблемой, если вы знакомы с Python.
Надеюсь, это поможет.