запускать команды оболочки script / bash в латексной сборке Sublime Text без каких-либо аргументов файла

У меня есть превосходная система сборки текста для работы с латексом. Я использую сценарий оболочки (без аргументов) для удаления различных расширений, созданных латексом. Проблема в том, что возвышенный текст считает filename.tex аргументом скрипта.

Итак, я попробовал следующий сценарий:

    {

// General settings
"target": "make_pdf",
"selector": "text.tex.latex",


"cmd": ["latexmk", "-e","\\$dvipdf = 'dvipdfmx %O -o %D %S'", "-e", "\\$latex = 'latex %O -interaction=nonstopmode -synctex=1 %S'","-f", "-pdfdvi"],

"variants":
[

    { "cmd":["my_script.sh"],
      "name": "clean"
    }
  ]
}

Здесь я использовал ls вместо скрипта для иллюстрации. Когда я запускаю файл сборки, он пытается запустить

my_script.sh filename.tex

вместо my_script.sh. Что я могу сделать, чтобы запустить только это из файла сборки?


person me10240    schedule 19.04.2013    source источник


Ответы (1)


Я был там и сделал это . . . туда и обратно . . . и посещал снова и снова. . .

Решение состоит в том, чтобы использовать собственный плагин (не обязательно полагающийся на .sublime-build, но это тоже возможно), чтобы вы могли ссылаться на открытый файл * .tex. У меня есть несколько решений, о которых вы, вероятно, не знаете, одно из которых мое собственное, а другое я модифицирую популярный плагин LaTexTools.

latexmk очищает с помощью большого -C (все) или небольшого -c (некоторые вещи, которые предопределены, и дополнительные вещи, которые могут быть определены пользователем), поэтому нет необходимости использовать отдельный настраиваемый скрипт очистки.

https://github.com/lawlist/LaTexTools-Unofficial-Modification

https://github.com/lawlist/ST2-plugin-latexmk-save-build-clean

К вашему сведению: я рекомендую указать латекс (или что-то в этом роде) в теме вашего вопроса - я почти пропустил ваш вопрос. . . случайно увидел краткое изложение и понял, что кое-что знаю об этой проблеме.


SAMPLE - для плагина MultiTaskBuild, расположенного здесь: https://github.com/bizoo/MultiTaskBuild

{
    "cmd": {

        "latexmk -pvc . . .": {
            "cmd": ["latexmk", "-r", "/Users/HOME/.latexmkrc", "$file"]
        },

        "latexmk -pv . . .": {
            "cmd": ["latexmk",
        "-e", "\\$pdflatex = 'pdflatex -enable-write18 %O -interaction=nonstopmode -synctex=1 %S'",
         "-recorder-", "-pvc-", "-f", "-pdf", "-pv", "$file"]
        },

        "latexmk -c": {
            "cmd": ["latexmk", "-c", "$file"]           
        },

        "latexmk -C": {
            "cmd": ["latexmk", "-C", "$file"]
        }
    },
"path": "$PATH:/usr/texbin:/usr/local/bin",
    "file_regex": "^(...*?):([0-9]+): ([0-9]*)([^\\.]+)",
    "selector": "text.tex.latex",
    "default_task": "latexmk -pv . . .",
    "target": "multi_task_exec"
}
person lawlist    schedule 21.04.2013
comment
Я добавил латекс в тему вопроса, следуя вашему предложению. Два упомянутых выше решения не решают мою проблему. У меня уже есть чистая команда, настроенная с использованием latexmk, но проблема в том, что в многофайловом документе с использованием команды \ include есть расширения .aux, созданные для каждого файла, а не только для корневого документа. Если у вас есть метод, который бы их тоже очистил, это поможет. Кроме того, я хотел бы знать, как я могу выполнить простую команду вроде cmd: [/ usr / bin / ls -la] в приведенном выше файле сборки; - person me10240; 22.04.2013
comment
Если вы используете make_pdf (он же makePDF.py) из LaTexTools, то место для вызова вашего скрипта находится внутри этого makePDF.py. В моей модификации этого файла я выбрал соответствующие моменты начала и окончания процесса сборки. Подпроцесс вызова python позволяет выполнять такие вещи, как сценарий, который вы хотите использовать - образец использования subprocess.call находится во второй предоставленной мной ссылке. Если вы не используете makePDF.py из LaTexTools, мне понадобится дополнительная информация, чтобы помочь вам. - person lawlist; 22.04.2013
comment
Я добавлю вариант сборки на основе варианта плагина, который немного отличается от того, что вы делаете, но отчасти похож. . . Плагин - MultiTaskBuild. - person lawlist; 22.04.2013
comment
Вы также можете выполнить сценарий с помощью сочетания клавиш: { "keys": [""], "command": "exec", "args": { "cmd": ["/path/to/script.sh", "-options", "-additional_options" ] } }, - person lawlist; 22.04.2013
comment
Если вы можете превратить LaTeX.sublime-build для LaTexTools в вариантную сборку, опубликуйте свое решение - меня бы заинтересовала альтернатива MultiTaskBuild, относящаяся к LaTexTools. - person lawlist; 22.04.2013
comment
Вас также может заинтересовать решение от bjmorgan: gist.github.com/bjmorgan/4349538 Этот вариант использует CMD для сценария, но включает другой файл сборки - слишком много на мой личный вкус. - person lawlist; 22.04.2013
comment
Я рассмотрю вашу идею с использованием сочетания клавиш дальше; Мне это очень нравится, но, признаюсь, я не очень разбираюсь в вашей многозадачной сборке. Не совсем понимаю, как это работает. Мой сценарий сборки с вариантами размещен здесь: stackoverflow.com/questions/14034941/ Как я уже сказал, я могу обойтись этим, я могу выбрать любой из 3 режимы для генерации вывода pdf, а также очистить корневые расширения tex. - person me10240; 22.04.2013
comment
Я предложил пример MultiTaskBuild, потому что он похож на то, что вы пытаетесь достичь, изменяя LaTeX.sublime-build для LaTexTools. target того, что вы пытаетесь изменить, - makePDF.py, поэтому, естественно, любой вариант этого файла LaTeX.sublime-build будет нацелен на этот сценарий, и, вероятно, именно поэтому ваш собственный сценарий не выполняет то, что вы хотели бы. Вот ссылка на плагин MultiTaskBuild, который может больше соответствовать вашим потребностям: github.com/bizoo/MultiTaskBuild. - person lawlist; 22.04.2013