如何在emacs中的文本块周围插入LaTeX环境?

如何在emacs中的文本块周围插入LaTeX环境?,emacs,latex,latex-environment,auctex,Emacs,Latex,Latex Environment,Auctex,我正在使用带有cdlatex模式的emacs来编辑LaTeX文件。我想知道如何在已经编写的文本块周围插入LaTeX环境,以便\begin{}位于所选文本之前,\end{}位于所选文本之后。我尝试使用cdlatex环境功能,但这样做会删除所选文本。AUCTeX 如果您使用: 标记要包含在环境中的文本块 按C-C-e 输入您选择的环境类型(只能键入一些字符并使用制表符完成),然后按Enter键 有关详细信息,请参阅 请注意,有一种类似的方法将标记的文本括在宏中。按1–3执行,但改为按C-C-e或C-

我正在使用带有cdlatex模式的emacs来编辑LaTeX文件。我想知道如何在已经编写的文本块周围插入LaTeX环境,以便
\begin{}
位于所选文本之前,
\end{}
位于所选文本之后。我尝试使用cdlatex环境功能,但这样做会删除所选文本。

AUCTeX 如果您使用:

  • 标记要包含在环境中的文本块
  • 按C-C-e
  • 输入您选择的环境类型(只能键入一些字符并使用制表符完成),然后按Enter键
  • 有关详细信息,请参阅

    请注意,有一种类似的方法将标记的文本括在宏中。按1–3执行,但改为按C-C-e或C-C Enter键。有关详细信息,请参阅

    雅斯尼佩特 如果使用,则可以创建行为与上面类似的代码段。例如,您可以使用以下内容(您已将“keybinding”替换为适当的keybinding):

    如果您也需要宏的代码段,可以使用以下内容:

    # -*- mode: snippet -*-
    # name: LaTeX macro
    # key: "keybinding"
    # --
    \$1{`yas/selected-text`$0}
    
    艾利斯普 即使我推荐上述方法,也可能会出现您希望使用一些简单的elisp函数的情况。以下只是一些粗略的东西,其功能远不如上述方法:

    (定义ltx环境(开始-结束环境)
    “插入LaTeX环境。”
    (交互式“r\n环境类型:”)
    (省去远足
    (如果(区域-active-p)
    (项目
    (转到字符结束)
    (新行)
    (插入“\\end{“env”}”)
    (转到字符开始)
    (插入“\\begin{“env”}”)(换行)
    (插入“\\begin{“env”}”)(换行)(换行)
    (插入“\\end{“env”}”))
    
    对于宏,如果您也需要:

    (定义ltx宏(开始-结束环境)
    “插入LaTeX宏。”
    (交互式“r\nsMacro:”)
    (省去远足
    (如果(区域-active-p)
    (项目
    (转到字符结尾)(插入“}”)
    (转到字符开始)(插入“\\”环境“{”))
    (插入“\\”环境“{}”))
    

    要使用它们,请将它们分别放在.emacs和M-x
    ltx环境
    ltx宏
    中。

    按照Tikhon Jelvis在回答中的建议,我查看了latex模式文档(C-h M),并发现提到了该功能

    latex-insert-block
    
    这似乎正是你想要的


    快捷键是C-C-t(无论何时处于latex模式)。

    请尝试专业的latex stackexchange。@Marcin因为这是一个Emacs问题,所以在这里可能仍然有意义。@N.N.当然,但OP在那里可能会得到更多的乐趣。@Marcin它更(正式)关于主题,但我的经验是,在SO和SU上使用Emacs比在TeX.SX上更容易获得帮助。感谢您的回答,但我没有使用auctex。我使用的是cdlatex模式、org cdlatex模式和org模式。@DavidAgnon您对yasnippet解决方案感兴趣吗?我认为您可以轻松地使yasnippet与上述命令类似。但是,组织模式和yasnippet之间可能存在冲突。谢谢!我已经安装了yasnippets,并创建了一个简单的代码片段,它完全符合我的要求。为了在环境中包含标记的文本,我使用了
    #expand env:((yas/wrap-around region't))
    在代码段的标题中。@DavidGagnon这很好听。为了完整起见,我在回答中添加了一个代码段,但我使用了
    yas/selected text
    。我想这会导致类似的行为。
    latex-insert-block