У меня есть проект латекса, содержащий как минимум два варианта: printable
(ведьма положила ссылку на сноску) и monochrome
(ведьма положила документ шерсти на черный). Эти параметры могут использоваться как единый параметр или его можно использовать одновременно (если мне нужен монохромный документ со ссылками в сносках).Использование множественных и комбинируемых целей makefile
Таким образом, это скелет моего Makefile:
printable:
${TEX} -jobname=${NAME} "\def\isprintable{1} \input{main.tex}"
monochrome:
${TEX} -jobname=${NAME} "\def\ismonochrome{1} \input{main.tex}"
Этот код только позволяет мне получить документ о формате для печати X или монохромного документа. Но не дважды в одно и то же время.
Я попытался целью printable monochrome:
, но в этом случае, я всегда получаю печатный и монохромный документ, а также, когда я призываю сделать с только из printable
или monochrome
цели. Я не могу получить только монохромный документ или единственный документ, пригодный для печати.
Итак, возможно ли создать структуру ifthen перед целями в make-файле для оценки целей, вставленных перед выполнением?
Что-то вроде:
if targets contain monochrome
then: ARG=${ARG} "\def\ismonochrome{1}"
if tragets contain printable
then: ARG=${ARG} "\def\isprintable{1}"
${TEX} -jobname=${NAME} "${ARG} \input{main.tex}"
Можно ли сделать это с помощью Makefile или я должен разработать другой способ?
Кажется, что работает, кроме одной детали: оператор '+ =' помещает пробел между первым контентом и следующим контентом. Например, с 'VAR + = 1; VAR + = 2 переменная 'VAR' будет равна' 1 2', а не '12'. Есть способ исправить это? Возможно, другой оператор конкатенации? – fauve
Лучший оператор для использования здесь: ': ='. Он не пустил места. Итак, вы могли бы @Beta отредактировать сообщение, чтобы исправить его для других пользователей? Спасибо. – fauve
@fauve: пространство там по дизайну; ваш вопрос не совсем ясен, но он настоятельно предполагает, что опустить пространство было бы неправильно. Возможно, вы захотите изменить свой вопрос, чтобы показать нужную командную строку. – Beta