9

LaTeXファイルを編集するためにcdlatex-modeでemacsを使用しています。\begin{}選択したテキストの前に、選択したテキストの後に行くように、すでに書き込まれているテキストのブロックの周りにLaTeX環境を挿入する方法を知りたい\end{}です。cdlatex-environment関数を使用しようとしましたが、使用すると、選択したテキストが消去されます。

4

2 に答える 2

9

AUCTeX

を使用する場合:

  1. 環境で囲みたいテキストのブロックをマークします。
  2. を押しC-c C-eます。
  3. 選択した環境タイプを入力し (一部の文字のみを入力し、タブ補完を使用できます)、 を押しEnterます。

詳しくはマニュアルをご覧ください。

マークされたテキストをマクロで囲む同様の方法があることに注意してください。C-c C-e1 ~ 3 と同じですが、代わりにまたはを押しC-c Enterます。詳しくはマニュアルをご覧ください。

ヤスニペット

YASnippetを使用すると、上記と同様の動作を持つスニペットを作成できます。たとえば、次を使用できます (「キーバインド」を適切なキーバインドに置き換えます)。

# -*- mode: snippet -*-
# name: LaTeX environment
# key: "keybinding"
# --
\begin{$1}
  `yas/selected-text`$0
\end{$1}

マクロのスニペットも必要な場合は、次のようなものを使用できます。

# -*- mode: snippet -*-
# name: LaTeX macro
# key: "keybinding"
# --
\$1{`yas/selected-text`$0}

エリスプ

上記のアプローチをお勧めしますが、単純な elisp 関数を代わりに使用したい場合があります。以下は、上記のアプローチよりも機能がはるかに少ない大まかなものです。

(defun ltx-environment (start end env)
  "Insert LaTeX environment."
  (interactive "r\nsEnvironment type: ")
  (save-excursion
    (if (region-active-p)
    (progn
      (goto-char end)
      (newline)
      (insert "\\end{" env "}")
      (goto-char start)
      (insert "\\begin{" env "}") (newline))
      (insert "\\begin{" env "}") (newline) (newline)
      (insert "\\end{" env "} "))))

マクロも必要な場合は、次のようにします。

(defun ltx-macro (start end env)
  "Insert LaTeX macro."
  (interactive "r\nsMacro: ")
  (save-excursion
    (if (region-active-p)
    (progn
      (goto-char end) (insert "}")
      (goto-char start) (insert "\\" env "{"))
      (insert "\\" env "{}"))))

それらを使用するには、それらを .emacs に入れて、それぞれM-x ltx-environmentorを実行しますltx-macro

于 2012-01-31T16:23:12.107 に答える
0

ここでのTikhon Jelvis による回答の提案に従って、ラテックス モードのドキュメント (Ch m) を調べたところ、関数についての言及が見つかりました。

latex-insert-block

これはまさにあなたが望むことをするようです。

ショートカット キーは Cc Ct (ラテックス モードの場合) です。

于 2013-04-08T13:56:41.173 に答える