Запишите код способом, который является самым легким поддержать и понять для среднего программиста, который работает над Вашим кодом.
Никогда не видел, чтобы это было сделано, но 2 недоработанные идеи:
Если причина, по которой вы хотите развернуть все эти макросы встроенными, связана с отладкой, тогда установите \ tracingmacros = 1
в вашем документе развернет все ваши макросы, но выходные данные будут записаны в файл журнала.
Архив CTAN предоставляет пакет , который вы можете использовать для встраивания расширений в определений (но не newcommand), но я не знал, можете ли вы взглянуть и увидеть, насколько болезненным может быть изменение для выполнения встроенных расширений \ newcommand вместо \ def.
Рассмотрите возможность использования механизма шаблонов, такого как 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.
Надеюсь, это поможет.
VOILÀ http://www.ctan.org/tex-archive/support/de-macro
Это - это Python, который:
[...] расширяет макросы, определенные в командах (re) newcommand или (re) newenvironment, внутри документа или в «частном» файле пакета документа.