TeX-insert-macro
選択したテキストで AucTex コマンドを評価する次の Emacs マクロがあります。
(eval-after-load "latex"
'(progn
(define-key LaTeX-mode-map (kbd "C-c (")
(lambda ()
(interactive)
(TeX-insert-macro "command")))))
ただし、選択したテキストに対して正規表現を実行し、それをに渡すにはどうすればよいTeX-insert-macro
ですか?
例: 次のテキストがあるとします。
…図 (24) に示すように。
ここで、「(24)」を選択したとします。次に、それを次のように変換するコマンドが必要です。
…図 \command{eq:24} に示すように。
つまり、選択したテキストの正規表現バージョンで~/.emacs
実行される、配置できる新しい Emacs コマンドをどのように定義すればよいでしょうか?C-C RET command RET
次の正規表現が機能しないのはなぜですか?
(eval-after-load "latex"
'(progn
(define-key LaTeX-mode-map (kbd "C-c )")
(lambda ()
(interactive)
(query-replace-regexp "\(([0-9]+)\)" "\1")
(TeX-insert-macro "eq")
))))
マイナーな改善:
たとえば、左から右に「(45)」を選択し、入力してコードを実行すると、これはうまく機能しますC-c )
(eval-after-load "latex"
'(progn
(define-key LaTeX-mode-map (kbd "C-c )")
(lambda ()
(interactive)
(exchange-point-and-mark)
(replace-regexp "[\(\)]" "")
(TeX-insert-macro "eq")
))))
しかし、右から左に「(45)」を選択すると、ポイントとマークが反転してしまい動作しません。exchange-point-and-mark
ポイントとマークが反転したときに実行するなど、ポイントとマークが反転していないことを確認する方法はありますか?
また、正規表現には他にも問題があります。たとえば、近くに他の括弧があると貪欲になります。
ありがとう