Sublime Text 2 - makeglossaries внутри системы сборки

Мне нужно, чтобы моя система сборки запускала makeglossaries с аргументом "main" в качестве единственного аргумента, но sublime всегда добавляет текущее имя файла в качестве окончательного параметра. Как я могу предотвратить это?

Команда выполнения выглядит следующим образом (в командной строке):

$: makeglossaries main

Мой текущий .sublime-build файл выглядит так:

{
    // General settings; DO NOT MODIFY!!!
    "target": "make_pdf",
    "selector": "text.tex.latex",

    // Windows-specific settings
    // -------------------------
    "windows":
        {

            "cmd": ["texify", 
                    "-b", "-p",
                    "--tex-option=\"--synctex=1\""
            ],

            "cmd": ["makeglossaries",
                    "main"
            ],

            "cmd": ["texify", 
                    "-b", "-p",
                    "--tex-option=\"--synctex=1\""
            ],          

            "path": "",

            "file_regex": "^((?:.:)?[^:\n\r]*):([0-9]+):?([0-9]+)?:? (.*)$"
        },

}

Если вы спросите, почему я хочу позвонить texify дважды, это потому что makeglossaries должен иметь предварительно собранную версию tex, в которую он может добавить глоссарий. После инъекции я хочу получить конечный результат.

К сожалению, это не работает так, как я хочу. Надеюсь, ты сможешь мне помочь.

1 ответ

Решение

Предполагая, что вы работаете в OSX/Linux, вы можете создать быстрый bash-скрипт, который просто игнорирует любые дополнительные аргументы, и использовать этот скрипт как свой "cmd", Сохраните следующее в ~/bin как makeglossaries_main.sh:

#!/bin/bash
/path/to/makeglossaries main

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

"cmd": ["/home/adrian/bin/makeglossaries_main.sh"]

и у тебя все будет готово.

Другие вопросы по тегам