首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使在pdf之前不构建点文件

使在pdf之前不构建点文件
EN

Stack Overflow用户
提问于 2019-02-03 12:12:58
回答 1查看 87关注 0票数 0

我有我的项目的当前文件夹结构

代码语言:javascript
复制
.
├── Makefile
└── S6
    ├── CD_CS304.md
    ├── CN_CS306.md
    ├── DAA_CS302.md
    └── graphviz
        └── cs304_compilerphases.dot

2 directories, 5 files

我正在为每个markdown文件构建单独的pdf,这是我的Makefile

代码语言:javascript
复制
# Generate PDFs from the Markdown source files
#
# In order to use this makefile, you need some tools:
# - GNU make
# - Pandoc

# All markdown files are considered sources
MD_SOURCES := $(wildcard **/*.md)
OUTPUT_PDFS := $(MD_SOURCES:.md=.pdf)
DOT_SOURCES := $(wildcard **/*.dot)
OUTPUT_DOTPNGS := $(DOT_SOURCES:.dot=.png)

all: $(OUTPUT_DOTPNGS) $(OUTPUT_PDFS) 

# Recipe for building png files from dot files
%.png: %.dot
    dot \
        -Tpng $< \
        -o $@

# Recipe for converting a Markdown file into PDF using Pandoc
%.pdf: %.md
    pandoc \
        --variable fontsize=12pt \
        --variable date:"\today" \
        --variable geometry:a4paper \
        --variable documentclass:book \
        --table-of-contents \
        --number-sections \
        --filter pandoc-fignos \
        -f markdown  $< \
        -o $@


.PHONY : clean

clean: $(OUTPUT_PDFS) $(OUTPUT_DOTPNGS)
    $(RM) $^

我想将点程序的输出嵌入到latex的pdf中,但在这里,Makefile没有将点文件转换为png,而是直接编译pdf。

这会使pdf编译遇到错误,因为png文件不存在。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-03 12:37:58

如果要确保一个文件在另一个文件之前生成,请添加依赖项。

更改此设置:

代码语言:javascript
复制
%.pdf: %.md

要这样做:

代码语言:javascript
复制
%.pdf: %.md $(OUTPUT_DOTPNGS)

这个依赖关系告诉我们,“除非您已经构建了每个png文件,否则不要构建这个pdf文件。”

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54499899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档