Компиляция LaTeX из notepad++ и открытие с помощью Sumatra. ForwardSearch не работает, если путь к файлу содержит умляуты

У меня была эта небольшая проблема уже довольно давно, и я не смог найти решение даже после чрезмерного поиска в Google. В этом руководстве описано, как можно написать LaTeX и скомпилирован с использованием npp++ и nppExec вместе с SumatraPDF.

С помощью некоторых умных сценариев и использования команд DDE (через CMCDDE.exe) , можно даже использовать ForwardSearch на Суматре для перехода от .tex к .pdf и обратно. Все отлично работает, если только путь к файлу .tex не содержит символ, которого нет в английском алфавите (например, åäö).

Затем команда CMCDDE завершается ошибкой, поскольку путь, отправленный в ForwardSearch суматра, читает (например) C:\†„” вместо C:\åäö. Это должна быть проблема с кодировкой, и я не смог найти работающее решение.

Итак, если у меня есть этот файл .tex C:\åäö\MWE.tex с

\documentclass{article}
\begin{document}
Hello World!
\end{document}

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

::Writes the commands that are to be executed using CMCDDE.exe (through cmcdde.tmp)
echo SUMATRA>"%~dp1build\cmcdde.tmp"
::%~dp1build transforms into C:\åäö\build for the MWE
echo control>>"%~dp1build\cmcdde.tmp"
echo [ForwardSearch("%~dp1build\%~n1.pdf", "%~f1", %2, 0, 0, 0)]>>"%~dp1build\cmcdde.tmp" 
:: This gives the following line in cmcdde.tmp: [ForwardSearch("P:\Documents\†„”\build\MWE.pdf", "P:\Documents\†„”\MWE.tex", 3, 0, 0, 0)] (in ANSI encoding)

"P:\Documents\localtexmf\cmcdde.exe" @"%~dp1build\cmcdde.txt"
:: This fails because the path P:\Documents\†„”\build doesn't exist (P:\Documents\åäö\build does)

Идеи, которые у меня были и которые я пробовал:

  • Я попытался изменить кодировку с помощью chcp 65001 и chcp 865, но не смог заставить ее работать.
  • Я также пытался использовать скрипт поиска и замены для просмотра файла cmcdde.tmp перед его выполнением, но это не удалось (я не уверен, какие знаки мне следует искать для обмена на åäö, †„ ” или åäö или ├Ñ├ñ├ или другое?)
  • Я также пробовал помещать cmd /c или cmd /a /c перед эхо-командами (как описано здесь), но, похоже, это не имеет значения.

Пожалуйста, дайте мне знать, если что-то, какие части вопроса неясны.


person Community    schedule 09.03.2016    source источник


Ответы (1)


Мне удалось найти решение. Оказывается, использование кодовой страницы 1252 решает проблему.

Таким образом, размещение chcp 1252 в начале пакетного файла является решением. Однако, если вы используете другие нестандартные символы, кроме меня (кроме символов скандинавского алфавита), я предполагаю, что вам может понадобиться другая кодовая страница.

Экспериментируйте и тестируйте разные, пока не заработаете.

person Community    schedule 11.03.2016