2

C-c %コメントアウトするためのemacsauctexモードのショートカットになるはずです。(C-c ;マークされた領域をコメントアウトするものもありますが、それは機能します)。今では、1行をコメントアウトすることもあれば、その行とその上の行をコメントアウトすることもあります。それは非常に一貫した振る舞いをしていないようです。

私が本当にやりたいのは、開始タグまたは終了タグにある場合を除いて、カーソルが置かれている行をコメントアウトすることです。この場合、環境全体をコメントアウトします。(実際には、コメントマクロの少し奇妙な動作を理解するだけで解決します...)

4

1 に答える 1

3

C-c %実行しTeX-comment-or-uncomment-paragraphます。ここで正確に段落と見なされるものについては、マニュアルを参照してください。

コマンド:TeX-comment-or-uncomment-paragraph
( )現在の段落の各行の先頭からC-c %追加または削除します。%文字を削除する場合、段落は、最初の非コメント行まで、。で%始まる前後のすべての行で構成されていると見なされます。%


これがあなたが望むことを多かれ少なかれ行うコメント機能です。環境のコメント解除は、そうである場合にのみ機能しますLaTeX-syntactic-comments(その場合tでも、常にうまくいくとは限りません)。

(defun LaTeX-comment-environment-or-line (arg)
  "Comment or uncomment the current line.
If the current line is the \\begin or \\end line of an environment, comment
or uncomment the whole environment."
  (interactive "*P")
  (save-match-data
    (save-excursion
      (beginning-of-line)
      (cond
       ((looking-at (concat "\\s-*\\(" TeX-comment-start-regexp "\\)?\\s-*"
                            (regexp-quote TeX-esc) "begin"))
        (let ((begin (point)))
          (goto-char (match-end 0))
          (LaTeX-find-matching-end)
          (TeX-comment-or-uncomment-region begin (point) arg)))
       ((looking-at (concat "\\s-*\\(" TeX-comment-start-regexp "\\)?\\s-*"
                            (regexp-quote TeX-esc) "end"))
        (let ((end (save-excursion (end-of-line) (point))))
          (LaTeX-find-matching-begin)
          (beginning-of-line)
          (TeX-comment-or-uncomment-region (point) end arg)))
       (t
        (TeX-comment-or-uncomment-region
         (point) (save-excursion (end-of-line) (point)) arg))))))
于 2010-11-24T23:16:24.010 に答える