2016-03-09 2 views
0

J'ai eu ce petit problème depuis un certain temps maintenant et je n'ai pas été capable de trouver une solution même après un googling excessif. Dans this guide, il est décrit comment LaTeX peut être écrit et compilé en utilisant npp ++ et nppExec avec SumatraPDF.Compilation de LaTeX à partir du bloc-notes ++ et ouverture avec sumatra. ForwardSearch ne fonctionne pas si le chemin du fichier contient des trémas

Grâce à des scripts intelligents et l'utilisation de commandes DDE (via CMCDDE.exe), il est même possible d'utiliser ForwardSearch de sumatra pour passer d'un fichier .tex au fichier .pdf. Tout fonctionne très bien, sauf si le chemin vers le fichier .tex contient un caractère qui n'est pas dans l'alphabet anglais (par exemple åäö).

La commande CMCDDE échoue alors car le chemin envoyé à ForwardSearch de sumatra lit (par exemple) C:\†„” au lieu de C:\åäö. Cela doit être un problème d'encodage et je n'ai pas été capable de trouver une solution de travail.

Donc, si j'ai ce fichier .tex C:\åäö\MWE.tex avec

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

il ne sera pas ouvert correctement lorsque vous utilisez le script batch décrit dans le link above. Ce sont les lignes de fichiers par lots problématiques:

::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) 

Les idées que je l'ai eu et essayé:

  • J'ai essayé de changer l'encodage en utilisant 65001 chcp et chcp 865 mais n'ont pas été en mesure d'obtenir pour travailler.
  • J'ai également essayé d'utiliser un search and replace script passer par le fichier cmcdde.tmp avant de l'exécuter, mais il n'a pas réussir (je ne suis pas sûr de signes que je dois chercher à échanger contre des ÅÄÖ, † « » ou à ¥ äö ou ├Ñ├ñ├ ou autre?)
  • J'ai aussi essayé de mettre cmd/c ou cmd/a/c avant que les commandes d'écho (comme une sorte de décrit here) mais ça ne semble pas faire la différence.

S'il vous plaît laissez-moi savoir si quelque chose quelles parties de la question qui ne sont pas claires.

Répondre

0

J'ai réussi à trouver une solution. Il s'avère que l'utilisation de la page de code 1252 résout le problème.

La mise en place de chcp 1252 au début du fichier batch est la solution. Cependant, si vous utilisez d'autres caractères non standard que moi (autres que ceux de l'alphabet nordique), je suppose que vous pourriez avoir besoin d'une autre page de code.

Expérimentez et testez différents modèles jusqu'à ce que vous l'obteniez.