У меня была эта небольшая проблема уже довольно давно, и я не смог найти решение даже после чрезмерного поиска в 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 перед эхо-командами (как описано здесь), но, похоже, это не имеет значения.
Пожалуйста, дайте мне знать, если что-то, какие части вопроса неясны.