Автоматическая фокусировка xdvi после запуска viewdvi в Emacs с AUCTeX

Я использую emacs с режимом AUCTeX для редактирования своих латексных документов уже несколько дней, но есть кое-что, что меня действительно беспокоит. Как и должно быть, всякий раз, когда я делаю Cc Cc RET, он компилирует файл, и, если повторить команду, он просматривает вывод в xdvi. Он также установлен в мини-режим TeX-source-specials-mode, поэтому вместо открытия нового окна в xdvi он только перезагружает окно, которое уже открыто, переносит его на передний план и отправляет меня туда, куда был указатель в emacs. (прямой поиск).

Теперь вот проблема:
Хотя окно xdvi выведено на передний план, оно не сфокусировано. Вместо этого окна emacs остаются в фокусе (и это то, что делает любой ввод с клавиатуры). И я постоянно забываю об этом, что приводит меня к случайному редактированию исходного файла при попытке навигации в xdvi. Не говоря уже о том, что я вынужден использовать alt-tab, чтобы сосредоточиться на xdvi, и дважды нажать alt-tab, если я просто хочу вернуться к emacs.

Есть ли способ обойти эту проблему? Я просто хочу, чтобы xdvi фокусировался всякий раз, когда я запускаю команду view из emacs.

РЕДАКТИРОВАТЬ: я обнаружил, что я могу сфокусировать окно xdvi с помощью команды wmctrl -a main (main - это заголовок окна xdvi). Как настроить emacs на автоматическое добавление этой команды в конец команды просмотра?

3 ответа

Решение

После долгих копаний, я думаю, я нашел способ. Это кажется немного неуклюжим, поэтому не стесняйтесь предлагать лучший способ.

Команда представления по умолчанию состоит из "xdvi", за которым следуют несколько аргументов, определенных некоторыми переменными, за которыми следует имя файла. Последний аргумент перед именем файла определяется переменной "Флаги редактора представления спецсредств Tex Source", и его значение по умолчанию: "-editor"% cS ""(без крайних кавычек).

Я добавил строку "% d && wmctrl -a $ (echo% d | sed -e 's /.dvi // g') #" (опять же, без кавычек) в конец этой переменной. Помните, что это последний аргумент в команде view перед именем файла.

  • % d предназначен для замены имени файла dvi, необходимого для команды xdvi.
  • && заканчивает команду xdvi (view).
  • wmctrl -a даст фокус окну под названием: echo %d | sed -e 's/.dvi//g' (это имя файла dvi без расширения.dvi).
  • наконец, просто говорит

    Баш, чтобы игнорировать все, что будет дальше. В нашем случае это имя файла, которое emacs автоматически добавляет после всего этого.

Для редактирования этой переменной я использовал меню настройки emacs для латекса.

Вот альтернативное решение вашей проблемы (то есть, если я прав: иметь немедленный просмотр вашего вновь скомпилированного документа): просто откройте файл dvi в новом буфере и установите его в режим auto-revert-mode. Теперь каждый раз, когда вы будете компилировать ваш документ, этот буфер должен показывать вам изменения без необходимости оставлять emacs и его чистоту. Обратите внимание, вы можете попробовать это с pdf в качестве результата компиляции; По крайней мере, мне кажется, что автореверт намного более отзывчив с PDF-файлами.

Это не совсем сработало для меня, так как в моем окне emacs есть имя файла tex. Это означает, что wmctrl дает фокус emacs вместо xdvi.

Однако, небольшое изменение исправило это для меня. Вместо этого я добавил следующую строку:

%d && wmctrl -a xdvik #
Другие вопросы по тегам