Компиляция LaTeX из Notepad++ и открытие с помощью Суматры. 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 перед командами echo (как описано здесь), но это, похоже, не имеет значения.
Пожалуйста, дайте мне знать, если что-то, какие части вопроса, которые неясны.
1 ответ
Мне удалось найти решение. Оказывается, использование кодовой страницы 1252 решает проблему.
Итак, выкладываю chcp 1252
в начале командного файла это решение. Однако, если вы используете не стандартные символы, кроме меня (кроме символов в нордическом алфавите), я думаю, вам может понадобиться другая кодовая страница.
Экспериментируйте и тестируйте разные, пока не заработаете.