Расширение синтаксического анализатора matplotlib mathtext - PullRequest
9 голосов
/ 13 февраля 2012

Для большинства моих интерактивных черчений с помощью matplotlib я не хочу использовать латексную обработку математики. (В основном потому, что он слишком медленный, но также и потому, что он слишком размытый для частого использования. ИМХО.) Но я также все время использую свои собственные макросы при написании латекса. В качестве одного примера, вместо того, чтобы делать что-то вроде $M_{\odot}$, я определяю $\Msun$. Поэтому, когда я использую matplotlib, у меня есть тенденция просто написать последнее автоматически, а затем получить ошибку и исправить ее. Это только один особенно простой пример, и я хотел бы иметь возможность переопределять макрос в моих работах и ​​на графиках одновременно без особой работы.

Итак, есть ли какой-нибудь разумный способ расширить синтаксический анализатор математического текста для понимания таких вещей, как $\Msun$? Или мне придется взломать mathtext.py или что-то еще?

(Мой запасной вариант определяет Msun как строку r'M_{\odot}', чтобы я мог написать что-то вроде r'$M = 10\,' + Msun + '$', но это неприятно и, конечно, не будет более автоматическим для меня.)

Ответы [ 2 ]

4 голосов
/ 14 февраля 2012

Макросы не поддерживаются mathtext в matplotlib, вам придется отредактировать mathtext.py.Возможно, проще всего сделать собственное расширение макроса перед передачей строки в синтаксический анализатор математического текста, например text(x,y,expand(r'$M = \Msun$')), где expand заменяет ваши собственные макросы, такие как \Msun, на его значение.

0 голосов
/ 13 февраля 2012

Вы можете добавить свои латексные \newcommand s в преамбулу, как здесь: Рабочий каталог латекса Matplotlib / путь поиска

...