PythonでJinja2などのテンプレートエンジンを使用することを検討してください。
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に精通している場合は、克服できない問題ではありません。
それがお役に立てば幸いです。