0

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ポイントとマークが反転したときに実行するなど、ポイントとマークが反転していないことを確認する方法はありますか?

また、正規表現には他にも問題があります。たとえば、近くに他の括弧があると貪欲になります。

ありがとう

4

1 に答える 1