Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svg 为什么一个模式规则有效,而另一个则无效?_Svg_Makefile_Latex_Inkscape - Fatal编程技术网

Svg 为什么一个模式规则有效,而另一个则无效?

Svg 为什么一个模式规则有效,而另一个则无效?,svg,makefile,latex,inkscape,Svg,Makefile,Latex,Inkscape,我很难理解为什么makefile中的一个模式规则可以正常工作,但另一个却不行,因为它们看起来与我非常相似。我尝试使用makefile编译LaTeX文档,包括从Inkscape导出的SVG插图: #Program paths LATEX = latex BIBTEX = bibtex PDFLATEX = pdflatex INKSCAPE_PATH = inkscape #Options LATEX_OPS=-interaction=nonstopmode BIBTEX_OPS= PDFLAT

我很难理解为什么makefile中的一个模式规则可以正常工作,但另一个却不行,因为它们看起来与我非常相似。我尝试使用makefile编译LaTeX文档,包括从Inkscape导出的SVG插图:

#Program paths
LATEX = latex
BIBTEX = bibtex
PDFLATEX = pdflatex
INKSCAPE_PATH = inkscape

#Options
LATEX_OPS=-interaction=nonstopmode
BIBTEX_OPS=
PDFLATEX_OPS=
INKSCAPE_OPS=-D -z --export-latex

#File paths
LATEX_PATH=.
PICS_PATH=/path/to/user\ name/pics

all: my_illustration.svg my_pdf_file.pdf

#Generate files for including SVG illustration
%.svg: $(PICS_PATH)/%.svg
    $(INKSCAPE_PATH) $(INKSCAPE_OPS) --file="$^" --export-pdf="$(subst svg,pdf,$^)"

#Generate PDF
%.pdf: $(LATEX_PATH)/%.tex
    -$(LATEX) $(LATEX_OPS) $^
    -$(BIBTEX) $(BIBTEX_OPS) $(LATEX_PATH)/$(subst .pdf,,$@).aux
    $(PDFLATEX) $(PDFLATEX_OPS) $^
    $(PDFLATEX) $(PDFLATEX_OPS) $^
现在,仅生成
my_pdf_file.pdf
就可以了,但是SVG规则失败了:

No rule to make target `my_illustration.svg', needed by `all'.  Stop.

我做错了什么?提前谢谢你。

你必须比较一下。当您尝试
制作我的插图.svg
而不只是
制作
时会发生什么?使用更简单的
PICS\u路径时会发生什么情况?当您使
我的插图.svg
依赖于
/my\u pdf\u file.tex
?和
$(PICS\u路径)/my\u插图.svg
存在时会发生什么?这难道不是目标生成pdf文件而不是svg文件的方法吗?所以,这不是“违反”了的规则2吗?您的svg配方并没有输出svg,请不要这样做。您可以定义另一个pdf模式,如
$(PICS_PATH)/%.pdf:%.svg
@EtanReisner,如果该模式为true,请更改为true,然后重试。哦。对您不能在目标名称或先决条件名称中使用空格,因此会取得很大成功。那无疑是你的问题。正如博士所说,“不要那样做”。