MathJax

HTML

LyX: Прямой и обратный поиск


Как это настраивается, рассказано вот здесь. Я просто расскажу, как это делал я на русском языке. Итак. Мы используем непортабельную версию SumatraPDF. Вот мы ее скачали, установили. Далее в "Пуск>Программы по умолчанию>Сопоставление типов файлов или протоколов отдельным программам" делаем так, чтобы файлы .pdf открывались с помощью SumatraPDF. Затем идем в папку C:\Users\ИВАН\AppData\Roaming\SumatraPDF. Оттуда, следуя совету по приведенной ссылке, скопируем в какое-нибудь место файл SumatraPDF-settings.txt. Далее нужно было добавить каким-либо способом путь к папке, содержащей открывающий программу SumatraPDF файл (у меня это папка C:\Program Files\SumatraPDF) в РАТН. Я почему-то добавил это в Переменные среды пользователя для ИВАН. Далее, путь к папке, содержащей файл, запускающий программу LyX (у меня это C:\Program Files\LyX 2.0\bin), тоже должен содержаться в РАТН. Далее, пойдем в папку
C:\Program Files\SumatraPDF, откроем файл SumatraPDF.exe. В появившемся окне программы SumatraPDF щелкаем левой кнопкой мышки 3 горизонтальные полоски в левом верхнем углу (а, может, угле)) ), далее, Настройки>Расширенные настройки. При этом в блокноте откроется тот самый файл SumatraPDF-settings.txt, копию которого мы до этого поместили в какое-нибудь укромное место, так что теперь с этим файлом мы можем делать все, что нам заблагорассудится. А делать мы станем с ним следующее. Вот список некоторых переменных вместе со своими значениями:

ReuseInstance = true
ReloadModifiedDocuments = true
InverseSearchCmdLine = lyxeditor.cmd "%f" %l
EnableTeXEnhancements = true
UseTabs = true


Так вот. В файле SumatraPDF-settings.txt проверяем наличие этих переменных (слов, стоящих слева от знака равенства), если они там есть, мы проверяем совпадения значения (слов, стоящих справа от знака равенства) найденных в этом файле переменных из приведенного списка со значениями таких же переменных из этого списка. Если бы в приведенном списке значение какой-либо переменной отличалось от значения соответствующей переменной, в файле, нужно было бы переделать значение этой переменной на такое же, как из приведенного выше списка. Если бы какой-либо переменной из списка вместе со своим значением не было в файле, нам бы просто нужно было скопировать переменную вместе с ее значением в файл. Ну, лично я ничего не менял в этом файле: все перечисленные в списке переменные уже существовали в файле и всем этим переменным в файле присвоились соответствующие значения, приведенные в списке, непосредственно при установке SumatraPDF. Закрываем, сохраняем изменения. Все, SumatraPDF после этого станет настроена. Переходим к настройке LyX. Итак, открываем программу LyX, если до сих пор она не была открыта или по каким-то причинам была закрыта. Идем в Инструменты>Настройки...>Пути. В текстовое поле Канал сервера LyX вписываем

\\.\pipe\lyxpipe

Далее идем в Инструменты>Настройки...>Обработка файлов>Конверторы. Там в области под словосочетанием Определения конверторов выбираем левой кнопкой мышки LaTeX (pdflatex) -> PDF (pdflatex). Далее удаляем из текстового поля Конвертер его содержимое и вставляем (ну, или вписываем руками) следующее:

pdflatex -interaction=nonstopmode -synctex=1 $$i

А из текстового поля Дополнительно удаляем его содержимое. Нажимаем кнопку Изменить. Затем Сохранить. Повторно заходим в Инструменты>Настройки...>Обработка файлов>Конверторы. Проверяем, сохранились ли настройки. У меня, когда я туда вот сейчас, при работающих в обе стороны поисках, вхожу, после нажатия левой кнопкой мышки LaTeX (pdflatex) -> PDF (pdflatex), то место настроек выглядит так:
Далее идем в Инструменты>Настройки..>Вывод>Общие. Там в текстовое поле Команда PDF вводим следующую команду:

SumatraPDF -forward-search "$$t" $$n "$$o"

, нажимаем Применить. Таким образом, это место станет выглядеть так:
Пойдем в Инструменты>Настройки..>Обработка файлов>Форматы файлов. Там в выпадающем списке Формат установим, выбирая левой кнопкой мышки значение PDF (pdflatex), в выпадающем списке Просмотрщик значение Задано пользователем, а в текстовое поле справа от этого списка вписываем

SumatraPDF

В настоящий момент там так:
И, наконец, в папке C:\Program Files\LyX 2.0\bin создаем файл с именем lyxeditor и расширением .cmd (по сути, получается, это тот же батник) следующего содержания:

@echo off
SETLOCAL enabledelayedexpansion
set file=%1
set row=%2
REM remove quotes from variables
set file=!file:"=!
set row=!row:"=!
%comspec% /q /c (@echo LYXCMD:revdvi:server-goto-file-row:%file% %row%)> \\.\pipe\lyxpipe.in&&type \\.\pipe\lyxpipe.out
endlocal


код этого батника я взял отсюда, когда перешел по ссылке на странице на английском языке, содержание которой я здесь пересказываю (ссылка на эту страницу дана мной здесь, только выше). Честно говоря, про создание батника на странице на английском языке рассказано намного раньше, чем это сделано у меня, но какая разница? Кстати, код этого батника натолкнул меня на мысль, как вводить команды в командную строку, чтобы они с этой строки вводились в открытое окно программы LyX, что послужило почвой для написания вот этой статьи. А до этого я пробовал вставлять команды из командной строки в окно программы LyX, беря эти команды из мануала, например, пытался выполнить из командной строки такую команду:

echo "LYXCMD:test:get-xy:" >~/.lyxpipe.in

, но у меня ничего не получалось. Ну, и вот, возвращаясь к поиску, связанному с LyX. Как этим пользоваться? А очень просто. Вот если мы сделали предпросмотр открытого файла .lyx, то при нажатии Навигация>Forward search на короткое время в соответствующем окне SumatraPDF выделяется фиолетовым (по крайней мере, у меня) цветом несколько строк, содержащих то же слово, около соответствующему которому в окне LyX в настоящий момент мигает курсор. При двойном щелчке в окне SumatraPDF фокус переносится в окно LyX и там начинает мигать курсор, при этом при щелчке в разных местах окна SumatraPDF курсор начинает мигать в разных местах окна LyX. Ничего более конкретного о связи положения курсора в LyX со строками, выделяемыми в SumatraPDF, ровно как и о связи положения двойного щелчка в SumatraPDF с местом в окне LyX, в котором начинает мигать курсор, сказать не могу. Так, задача довольно-таки сложная, поэтому давайте я здесь еще приведу перевод той страницы, содержание которой я тут пересказываю, сделанный браузером Гугл: вдруг я что-то упустил. Итак.
=================================================================
Из MyNotes [Обновлено для последней версии 2.3.3 2019] Пользователям MiKTeX рекомендуется выполнить обновление до последней версии перед установкой LyX 2.3.3+ для Windows. Если у вас есть постоянная установка SumatraPDF, вам нужно только установить -inverse-search ONCE, равно как и с помощью вкладок, нам не нужно тратить время на решение, какой сеанс адресовать. Обратите внимание, что в SumatraPDF можно иметь несколько окон и сессий, но это выходит за рамки этого ответа. InverseSearchCmdLine = постоянно хранится в SumatraPDF-settings.txt. Он не должен настраиваться редактором, если вам не нужно переустанавливать или иным образом заменять SumatraPDF-settings.txt (сделайте резервную копию!)

Настройки в SumatraPDF

Заметное отличие состоит в том, что мы возвращаемся к более стабильному cmd-файлу Okular (Okular использует точно такую ​​же систему вызовов, что и SumatraPDF), что позволяет избежать ненужных вызовов. SumatraPDF должен быть установлен таким образом, чтобы он функционировал из любого системного вызова, как SumatraPDF, это означает, что он должен быть «в пути» (если используется переносная версия, SumatraPDF.exe должен быть временно добавлен в путь пользователя до первого вызова Lyx) Запустите SumatraPDF и перейдите в «Настройки»> «Дополнительные параметры». Это откроет файл SumatraPDF-settings.txt в NotePad, теперь, проверив записи, проверьте или измените следующее.

ReuseInstance = true
ReloadModifiedDocuments = true
InverseSearchCmdLine = lyxeditor.cmd "%f" %l
EnableTeXEnhancements = true
UseTabs = true


Помните, что% l - это строчная буква L, и не забудьте нажать CTRL + S (Сохранить файл). Если вам нужно добавить c: ... LyX \ bin \ к этому InverseSearchCmdLine , значит, вы неправильно установили LyX. Файл .cmd находится в папке bin, которая ДОЛЖНА быть в системном пути.

Настройки в LyX

Следуйте инструкциям SyncTeX в https://wiki.lyx.org/LyX/SyncTeX.

«(Примечание: обратный поиск файлов .lyx с пробелами или другими специальными символами в имени файла не всегда работает с таким подходом в некоторых системах Windows)»

Мои заметки из-за этого уникального метода вызова канала [1], используемого LyX в Windows , иногда требуется, чтобы рабочий файл и его путь НЕ ДОЛЖНЫ ИМЕТЬ ПРОБЕЛ, Так что, если это не сработает, вам нужно будет поднять любые проблемы с поддержкой LyX. Если они предоставляют более простой способ вызова активного сеанса LyXserver с удаленным путем в кавычках, то оставьте комментарий ниже. Проблема в том, что LyXserver ожидает два последовательных значения: 1) SyncTeX предоставил .tex имя файла 2), за которым следует номер строки, поэтому, когда имя файла содержит пробелы, первая часть может быть недействительной как имя файла, а вторая часть явно не является числом , Это может работать, если имена файлов анализируются как более старый формат 8.3, но большинство современных файлов Windows используют формат LFN. файл lyxeditor.cmd пытается обойти эти проблемы. Заметные различия по сравнению с любым другим подходом Не добавляйте ненужные и устаревшие -reuse-instance или -inverse-searchопции / директивы (они не нужны и замедляют правильный -forward-searchзапрос.)


Инструменты → Настройки → Путь
• Добавьте каталог, в котором находится SumatraPDF.exe, в строку префикса PATH. (Это не нужно для постоянной установки, но может помочь для портативного использования).
• Установите для линии LyXServer pipe \\.\pipe\lyxpipe( НЕ использовать кнопку обзора).
Инструменты → Настройки → Обработка файлов → Конвертеры
• Выберите формат LaTeX (pdflatex) -> PDF (pdflatex)
• Установите для конвертера ввода значение pdflatex -interaction=nonstopmode -synctex=1 $$i




• Нажмите «Изменить» (в противном случае изменение будет отменено).
• Это изменение необходимо, чтобы MikTeX или TeX Live создали файл FILE.synctex.gz.


Выйдите и вернитесь, чтобы проверить, что он модифицирован, мне потребовалось несколько изменений, чтобы сбросить его и закрепить от одного сеанса к другому.


Инструменты → Настройки → Вывод → Общие.
• В разделе «прямой поиск» задайте для команды ввода PDF значение SumatraPDF -forward-search "$$t" $$n "$$o"

Инструменты → Настройки → Обработка файлов → Форматы файлов
• Выберите формат PDF (pdflatex)
• Установите для поля «Просмотр» значение «Пользовательский» с помощью команды SumatraPDF

• Возможно, вам придется закрыть все окна SumatraPDF и использовать «Документ → Просмотр».
• Вы можете установить команду обратного поиска непосредственно в SumatraPDF, перейдя в «Настройки → Дополнительные параметры», как указано выше, и установить обратный поиск. В этом случае вы уменьшаете команду «Просмотр» до

SumatraPDF




ЛЮБЫЕ проблемы с этим вызовом Inverse Search должны возникать при поддержке Lyx, так как это их рекомендуемый метод, а не мой!

[1] В принципе, использование именованных каналов в памяти ускоряет и уменьшает необходимость вызывать приложение через параметры командной оболочки, однако, подобно методам DDE или D-bus, оно незнакомо большинству пользователей и может быть проблематичным для устранения проблем.

Примечание. Убедитесь, что у lyx открыт файл, Enable Forward/Reverse button is active then compile and view finally right click and select about 6 options downвыполните поиск вперед.

Места не 1 на 1 (страницы могут показаться "выключенными"). Это может помочь увидеть прямой поиск, установив в SumatraPDF-settings.txt

HighlightPermanent = true

Чтобы вернуться на соответствующую страницу, просто дважды щелкните любое место в SumatraPDF, чтобы он вызывал lyxeditor.cmd. =================================================================
Как видно, здесь имеются-таки некоторые нюансы, неупомянутые мной. Впрочем, мне, когда я это все настраивал, эти нюансы просто не понадобились.

Комментариев нет:

Отправить комментарий

Архив блога