Проблема с Noob при латексной компиляции с makefile - PullRequest
0 голосов
/ 23 сентября 2019

Я совершенно не разбираюсь в компиляции командной строки Unix-типа, и теперь я обременен документом, написанным на LaTEX, для компиляции с использованием предоставленного make-файла.

Достаточно плохая ситуация, но она ухудшается:Я работаю под Windows, установил все компоненты латекса, названные документацией, включая Pygmentize, я даже установил Make для Windows, но все еще не могу заставить его работать.

Прежде всего, что правильноСинтаксис при вызове «Make», чтобы он использовал make-файл: просто «make» или «make», за которым следует имя целевого pdf-файла назначения?

Я пробовал оба, первый результат привел:

No rule to make target "command" needed by "pdf". Stop.

Второй достался мне:

No rule to make target "User_manual.pdf". Stop.

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

Так может ли кто-нибудь сказать мне, что я сделал неправильно?

Вот содержимое make-файла, если оно используется:

CURRFILE=User_manual
TEXFILES := $(wildcard *.tex) $(wildcard */*.tex) $(wildcard */*/*.tex)
KBFEXAMPLES := $(wildcard KBF/*.kbf)
PYGEXAMPLES := $(wildcard KBF/*.pyg)
KBFCEXAMPLES := $(patsubst %.kbf,%.pyg,$(KBFEXAMPLES))
CHAPTERNUM := 1 2 3 4 5
PDFLATEX := $(shell command -v pdflatex 2>&1)
BIBTEX := $(shell command -v bibtex 2>&1)
MKINDEX := $(shell command -v makeindex 2>&1)
PDFOPTION=-shell-escape
DICOFILES := $(wildcard *.cfg)
# implement automatic PATH check
PYGMZE_PATH := $(shell command -v pygmentize 2>&1)
# $(shell command -v pygmentize >/dev/null 2>&1 || { @echo >&2 "Missing pygmentize in PATH."; })

all : pdf flat dico

pdf: $(PYGMZE_PATH)
ifeq ($(strip $(PYGMZE_PATH)),)
    ${info PYGMZE_PATH = $(PYGMZE_PATH)}
    $(error ERROR missing pygmentize in PATH)
endif
ifeq ($(strip $(PDFLATEX)),)
    ${info PDFLATEX = $(PDFLATEX)}
    $(error ERROR missing pdflatex in PATH)
endif
    $(PDFLATEX) $(PDFOPTION) $(CURRFILE).tex
    $(MKINDEX) $(CURRFILE).nlo -s nomencl.ist -o $(CURRFILE).nls -t $(CURRFILE).nlg
    $(BIBTEX) $(CURRFILE)
    $(PDFLATEX) $(PDFOPTION) $(CURRFILE).tex
    $(PDFLATEX) $(PDFOPTION) $(CURRFILE).tex

fast: $(KBFEXAMPLES)
    $(PDFLATEX) $(PDFOPTION) $(CURRFILE).tex

flat:
    #cleartool ls Flat.tex | grep -q CHECKEDOUT || cleartool co -q -nc Flat.tex
    latexpand $(CURRFILE).tex > Flat.tex

dico: apollo_input_dictionary.cfg

apollo_input_dictionary.cfg: Flat.tex
    echo "Generating dictionary"
    ./dictionarygen.sh

updatepyg: $(KBFEXAMPLES)

KBF/%.pyg: KBF/%.kbf
    rm $@


Tex/%.tex: updatepyg FORCE
    sed -n '1,/begin{document}/ p' $(CURRFILE).tex > _region.tex
    cat $@ >> _region.tex
    echo "\end{document}" >> _region.tex
    $(PDFLATEX) $(PDFOPTION) _region.tex
    $(PDFLATEX) $(PDFOPTION) _region.tex

clean: $(PYGEXAMPLES)
    @for f in $(PYGEXAMPLES); do mv $$f $$f.old; done
    rm -f $(TEXFILES:.tex=.aux)
    rm -f $(CURRFILE).log $(CURRFILE).dvi $(CURRFILE).bbl $(CURRFILE).blg $(CURRFILE).toc $(CURRFILE).lof $(CURRFILE).lot $(CURRFILE).ind $(CURRFILE).out $(CURRFILE).nls $(CURRFILE).nlo $(CURRFILE).nlg $(CURRFILE).kbf $(CURRFILE).dhdf $(CURRFILE).hdf

distclean: clean
    rm -f $(CURRFILE).pdf
    rm -f Flat.tex inputkeyword apollo_input_dictionary.cfg outputkeyword apollo_output_dictionary.cfg

FORCE :

stop:
    $(error ERROR make failed)

Я должен использовать make-файл как есть, так как это то, что ожидает клиент, я просто должен знать, как заставить его работать в Windows ...

Спасибо за любую помощь, которую вы можете предоставить!

1 Ответ

1 голос
/ 25 сентября 2019

Как отмечалось в комментариях, проблема была в синтаксисе, используемом в make-файле, который вызывал специфичные для Unix команды, поэтому он не мог работать в чистой системе Windows.Транспортировка пакета в Linux сделала свое дело.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...