1

Я использую 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 ответа3

1

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

1

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

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

%d && wmctrl -a xdvik #
0

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

Команда представления по умолчанию состоит из "xdvi", за которым следуют несколько аргументов, определенных некоторыми переменными, за которыми следует имя файла. Последний аргумент перед именем файла определяется переменной « Флаги редактора представления специальных исходных данных Tex », и его значение по умолчанию: « -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 для латекса.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .