如何在emacs中的文本块周围插入LaTeX环境?
我正在使用带有cdlatex模式的emacs来编辑LaTeX文件。我想知道如何在已经编写的文本块周围插入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-
\begin{}
位于所选文本之前,\end{}
位于所选文本之后。我尝试使用cdlatex环境功能,但这样做会删除所选文本。AUCTeX
如果您使用:
# -*- 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