Dav*_*non 8 emacs latex latex-environment
我正在使用带有cdlatex-mode的emacs来编辑LaTeX文件.我想知道如何在已经写入的文本块周围插入LaTeX环境,以便\begin{}在所选文本之前移动并且\end{}在所选文本之后移动.我曾尝试使用cdlatex-environment函数,但这样做会删除所选文本.
如果你使用auctex:
有关详细信息,请参阅手册
请注意,有一种类似的方法可以在宏中包含标记文本.做为1-3,而是按C-c C-e或C-c Enter代替.有关详细信息,请参阅手册
如果您使用YASnippet,则可以创建一个与上述行为类似的代码段.例如,您可以使用以下内容(您已将"keybinding"替换为正确的键绑定):
# -*- mode: snippet -*-
# name: LaTeX environment
# key: "keybinding"
# --
\begin{$1}
`yas/selected-text`$0
\end{$1}
Run Code Online (Sandbox Code Playgroud)
如果您还需要宏的代码段,则可以使用以下内容:
# -*- mode: snippet -*-
# name: LaTeX macro
# key: "keybinding"
# --
\$1{`yas/selected-text`$0}
Run Code Online (Sandbox Code Playgroud)
即使我推荐上述方法,也有可能需要使用一些简单的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 "} "))))
Run Code Online (Sandbox Code Playgroud)
对于宏,如果你也想要它:
(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 "{}"))))
Run Code Online (Sandbox Code Playgroud)
要使用它们放在你的.emacs做M-x ltx-environment或ltx-macro分别.
| 归档时间: |
|
| 查看次数: |
1692 次 |
| 最近记录: |