几天来,我一直在使用 emacs 和 AUCTeX 模式编辑我的 latex 文档,但有些事情真的让我很烦恼。正如我所料,每当我这样做时Cc Cc RET它会编译文件,如果重复该命令,它会在 xdvi 中查看输出。它还设置为迷你模式TeX 源特殊模式,因此它不会在 xdvi 中打开新窗口,而是仅重新加载已打开的窗口,将其置于最前面,并将我发送到 emacs 中指针所在的位置(正向搜索)。
现在问题来了:
即使 xdvi 窗口被移到最前面,它也没有获得焦点。相反,emacs 窗口保持焦点(任何键盘输入都会进入该窗口)。我总是忘记这一点,这导致我在尝试在 xdvi 中导航时意外编辑了源文件。更不用说我不得不按 alt-tab 来聚焦 xdvi,如果我只想回到 emacs,我必须按两次 alt-tab。
有办法解决这个问题吗?我只希望每次从 emacs 运行 view 命令时 xdvi 都能获得焦点。
编辑:我发现我可以使用以下命令聚焦 xdvi 窗口wmctrl-a 主要(main 是 xdvi 窗口的标题)。如何设置 emacs 自动将此命令附加到 view 命令的末尾?
答案1
这是解决您问题的另一种方法(如果我没记错的话:可以立即查看您新编译的文档):只需在新缓冲区中打开 dvi 文件并将其设置为自动恢复模式。现在,每次您编译文档时,此缓冲区都会向您显示更改,而无需离开 emacs 及其平铺纯度。注意,您可能希望尝试使用 pdf 作为编译输出;至少对我来说,自动恢复对 pdf 的响应速度更快。
答案2
这对我来说不太管用,因为我的 emacs 窗口以 tex 文件作为其名称。这意味着 wmctrl 给予 emacs 焦点而不是 xdvi。
但是,稍微修改一下就可以解决这个问题。我添加了以下行:
%d && wmctrl -a xdvik #
答案3
经过大量的挖掘,我想我找到了一种方法。感觉有点笨重,所以请随意提出更好的方法。
默认的查看命令由“xdvi”组成,后面跟着一些由变量定义的参数,最后是文件名。文件名前的最后一个参数由变量“Tex Source Specials 查看编辑器标志",其默认值为:"-editor“%cS”“(没有最外面的引号)。
我添加了字符串“%d && wmctrl -a $(echo %d | sed -e's/.dvi//g')#“(同样,没有引号)到这个变量的末尾。请记住,这是文件名之前的 view 命令中的最后一个参数。
- %日用于替换 dvi 文件的名称,这是 xdvi 命令所必需的。
- &&结束 xdvi(查看)命令。
- 控制-a将焦点放在标题为:(
echo %d | sed -e 's/.dvi//g'
这是不带 .dvi 扩展名的 dvi 文件的名称)的窗口上。 最后,只是告诉
bash 忽略接下来的内容。在我们的例子中,这是 emacs 在所有这些之后自动附加的文件名。
为了编辑这个变量,我使用了 emacs 的 latex 自定义菜单。