como detectar se dentro de um ambiente matemático LaTeX?

12

P: existe uma maneira de detectar se o ponto está dentro de um ambiente matemático do LaTeX?

Como seria um ponto de detectar se é ou não dentro de um ambiente de matemática LaTeX, se delineado inline $...$ou por ambientes nomeados ( equation, displaymath, etc.)?

Dan
fonte

Respostas:

10

A função texmathpdefinida no AUCTeX (carregada automaticamente a partir de texmathp) faz exatamente isso (ok, na verdade, faz um pouco mais).

Utilizado de forma interativa, ele fornecerá mais informações, incluindo se o ponto está em uma construção matemática.

Usado no elisp, será tem matemática, nilcaso contrário. As peças adicionais de informações são, em seguida, armazenado na variável texmathp-why.

Quando texmathpretorna t, trata-se de contras (MATCH . POSITION), onde MATCHestá uma sequência que contém o comando TeX ou o nome do ambiente que acionou o modo matemático e POSITIONé a posição em que essa sequência foi encontrada no buffer. MATCHé algo como "$", "$$", "\\(", "\\[" "\\ensuremath", "displaymath", "equation", ... Quando texmathpretorna nil, a variável texmathp-whyé (nil . pos)onde posé o começo do parágrafo.

Aviso da docstring:

As funções pressupõem que você tenha (quase) sintaticamente (La) TeX correto no buffer.

Ele está ciente de todos os ambientes que AUCTeXsabe de (por exemplo, para font-bloqueio), e você pode adicionar mais usando a variável texmathp-tex-commands.

T. Verron
fonte
Observe também que (autopromoção desavergonhada adiante) esse comando é muito conveniente quando misturado com expressões regulares do emacs: tex.stackexchange.com/a/91175/9517
T. Verron
Auto-promoção é um adendo ao compartilhar informações úteis e relevantes :)
Sean Allred