Sublime Text3: инструменты LaTeX с пользовательской командой работают неправильно

Мне нужно было настроить параметры из инструментов LaTeX, чтобы пакет глоссариев работал.

Теперь все работает нормально. Но я также хочу иметь временные файлы в одной папке и созданный PDF-файл в файле .tex.

Первое работает отлично: все находится в папке сборки. Но я не могу получить PDF-файл из этой папки, потому что мои кавычки будут удалены в командах скрипта.

Вот мои скриптовые команды для сборки:

"script_commands": [
  "latexmk -cd -e -f -pdf -synctex=1 -interaction=nonstopmode  -auxdir=build -outdir=build",
  "makeglossaries -d build",
  "latexmk -cd -e -f -pdf -synctex=1 -interaction=nonstopmode  -auxdir=build -outdir=build",
  "move /y \"build/$file_base_name.pdf\" \"$file_base_name.pdf\"",
  "move /y \"build/$file_base_name.synctex.gz\" \"$file_base_name.synctex.gz\"",
  // "move /y \"build/$file_base_name.log\" \"$file_base_name.log\""
]

Первые три команды работают нормально. PDF правильно строится. Но команда перемещения не работает. Я также пытался использовать полный путь, но проблема заключалась в том, что я не могу сделать знак \, чтобы вызов выглядел как move /y C:\path\to\the\texdocument/build/Document.pdf, что также не сработало. Я также пытался использовать знаки '. И скопировать как замену для перемещения. Но не помогает.

Кто-нибудь может мне помочь?

P.S.: Я использую Windows.

// Редактировать: у меня также есть вопрос относительно Logoutput: возможно ли отображать ошибки и предупреждения с помощью инструментов LaTeX? Нравятся встроенные конструкторы?

Теперь это система построения сценариев.

Спасибо


person CodeRain    schedule 07.06.2016    source источник
comment
Проблема в том, что LaTeXTools вызывает команду построителя скриптов с shell установленным на False. Следовательно, команда move недоступна. Вы используете cygwin или у вас есть Coreutils? Можете ли вы открыть cmd и написать where mv?   -  person r-stein    schedule 07.06.2016
comment
@r-stein Спасибо за ответ. Я установил coreutils сейчас. where mv направляет меня к C:\Program Files (x86)\GnuWin32\bin\mv.exe. Но как я могу теперь включить shell, чтобы это было правдой. Или лучше, как я могу заставить его работать сейчас?   -  person CodeRain    schedule 07.06.2016


Ответы (1)


Ваш скрипт не работает, потому что LaTeXTools устанавливает shell в False при вызове команды сборки. Следовательно, вы можете вызывать только программы, а не команды оболочки, такие как move. Если у вас установлены Cygwin или Coreutils, они поставляют программу mv, которая представляет собой команду перемещения unix. Он устанавливается как программа, а не как команда, и может использоваться в билдере.

Просто измените свою сборку на:

"script_commands": [
  "latexmk -cd -e -f -pdf -synctex=1 -interaction=nonstopmode  -auxdir=build -outdir=build",
  "makeglossaries -d build",
  "latexmk -cd -e -f -pdf -synctex=1 -interaction=nonstopmode  -auxdir=build -outdir=build",
  "mv -f \"build\\$file_base_name.pdf\" \"$file_base_name.pdf\"",
  "mv -f \"build\\$file_base_name.synctex.gz\" \"$file_base_name.synctex.gz\"",
  "mv -f \"build\\$file_base_name.log\" \"$file_base_name.log\""
]

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

person r-stein    schedule 07.06.2016
comment
Спасибо за вашу помощь. Но это также говорит каждый раз COULD NOT COMPILE!. Команда, которую он вызывает, — Invoking 'mv -f 'build\Thesis.pdf' Thesis.pdf'.... Все выглядит нормально: файл построен. Но команда копирования не работает. Я скопировал команду, и похоже, что это снова 'sign, который является проблемой. Я пробовал без, с / вместо ``, но не сработало. У тебя есть идея? - person CodeRain; 07.06.2016
comment
@CodeRain странно, это работает для меня. Не могли бы вы установить для параметра display_log внутри builder_settings значение true? Это показывает вывод оболочки каждой команды на панели вывода и должен дать подсказку о проблеме. - person r-stein; 07.06.2016
comment
Вот это действительно странно. Я скопировал в точности ваши команды. Это не сработало. Я включил журнал... Это сработало. Что это...? Странный. Спасибо за помощь! - person CodeRain; 07.06.2016
comment
@CodeRain рад помочь. Поскольку LaTeXTools делает то же самое, за исключением записи вывода, я предполагаю, что есть другая причина. Это может быть закрытие и открытие Sublime Text, чтобы обновить переменные среды. - person r-stein; 07.06.2016