как заменить латексные макросы их определениями (использующий латекс)

Запишите код способом, который является самым легким поддержать и понять для среднего программиста, который работает над Вашим кодом.

9
задан Yoo 2 October 2009 в 03:17
поделиться

3 ответа

Никогда не видел, чтобы это было сделано, но 2 недоработанные идеи:

  1. Если причина, по которой вы хотите развернуть все эти макросы встроенными, связана с отладкой, тогда установите \ tracingmacros = 1 в вашем документе развернет все ваши макросы, но выходные данные будут записаны в файл журнала.

  2. Архив CTAN предоставляет пакет , который вы можете использовать для встраивания расширений в определений (но не newcommand), но я не знал, можете ли вы взглянуть и увидеть, насколько болезненным может быть изменение для выполнения встроенных расширений \ newcommand вместо \ def.

1
ответ дан 3 November 2019 в 01:02
поделиться

Рассмотрите возможность использования механизма шаблонов, такого как 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.

Надеюсь, это поможет.

1
ответ дан 3 November 2019 в 01:02
поделиться

VOILÀ http://www.ctan.org/tex-archive/support/de-macro

Это - это Python, который:

[...] расширяет макросы, определенные в командах (re) newcommand или (re) newenvironment, внутри документа или в «частном» файле пакета документа.

9
ответ дан 3 November 2019 в 01:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: