Я пишу (и переписываю) множество математических формул в LaTeX с помощью Emacs. Я часто сталкиваюсь с ситуациями, когда я хочу изменить пару соответствующих скобок, чтобы улучшить читаемость. Мой Emacs достаточно любезен, чтобы показать мне соответствующий разделитель, но как мне изменить его программно?
Например, измените внешние разделители за один раз:
( (\sqrt{a} + b)^{-1} + c^{-1} )
в
[ (\sqrt{a} + b)^{-1} + c^{-1} ]
latex
replace
balanced-parentheses
Mankka
источник
источник
\bigl(...\bigr)
на\Bigl(...\Bigr)
и т. Д.forward-sexp-function
(что, я предполагаю, TeX mode), либо он будет использоватьscan-sexps
для поиска возможного соответствия. В последнем случае совпадение не всегда будет правильным. Итак, если все, что вам нужно, это сопоставить совпадающие разделители, вы можете проверить синтаксис символа под точкой. Если это так$
, то у него должно быть совпадение, и вы можете использоватьforwad-sexp
его для сопоставления.Ответы:
Используйте
smartparens
пакет. Он включает в себя функцию под названиемsp-rewrap-sexp
, которая именно то, что вам нужно. На домашней странице проекта ( https://github.com/Fuco1/smartparens ) есть несколько картинок GIF, наглядно показывающих функциональность.источник
Для тех, кто использует зло, вы можете использовать злое окружение, которое дает вам
c s
движение (изменить, окружить).Для вашего примера просто сделайте
c s ( [
(движение, от типа парен, к типу парен)источник
Я использую код ниже и привязываю
yf/replace-or-delete-pair
кM-D
.Пример использования: с точкой
(
я нажимаю,M-D [
и()
пара становится[]
парой. Если вы нажметеM-D RET
вместо этого, пара будет удалена.В этом коде используется таблица синтаксиса, что означает, что для некоторых пар вам придется самостоятельно указывать закрывающую скобку. например, в html-режиме,
()
может быть заменено<>
нажатиемM-D <
. Тем не менее, во многих режимах<>
не распознанная пара иM-D <
будет говорить «Не знаю, как закрыть <». Вы можете тогда просто напечатать>
.источник
ar-parentized2bracketed-atpt
сделал бы задачу.Он приходит вместе со
ar-braced2parentized-atpt
всеми соответствующими комбинациями.Получите его из thingatpt-transform-delimited.el из
URL: https://github.com/andreas-roehler/thing-at-point-utils
Абстрактный класс команд преобразует все разделенные формы, например:
Эти командиры доставляются в том же репо
thingatpt-преобразование унифицированная-delimited.el
источник
Соответствующие скобки отображаются с
show-paren-mode
. Логический подход состоит в том, чтобы основать функцию, чтобы поменять парены на одну и ту же логику и функцию. Когда соответствующие парены выделены, вы можете вызвать функцию,toggle-parens
определенную ниже:источник