2

Rake を使用して Markdown ファイルから PDF を生成します。マークダウン ファイルが の場合filename.md、PDF が でfilename.md.pdfはないことが好きfilename.pdfです。これにより、オートコンプリートが思いどおりに機能し、PDF ファイルのソースが明確になります。

私はこのRakeファイルを持っていますが、これは正常に動作します。

MDFILES = FileList["*.md"]
PDFS = MDFILES.ext("pdf")

desc "Build PDFs of all chapters"
task :pdfs => PDFS

# Build PDFs from Markdown source
rule ".pdf" => ".md" do |t|
  sh "pandoc #{t.source} -o #{t.name}"
end

私が実行した場合、rake pdfsまたはrake filename.pdfPDF は期待どおりに生成されますが、PDF の名前はfilename.pdf.

しかし、代わりにRakefileをこれにしたい:

MDFILES = FileList["*.md"]
PDFS = MDFILES.ext("md.pdf")

desc "Build PDFs of all chapters"
task :pdfs => PDFS

# Build PDFs from Markdown source
rule "md.pdf" => ".md" do |t|
  sh "pandoc #{t.source} -o #{t.name}"
end

を実行rake pdfsするかrake filename.md.pdf、エラーを返しますDon't know how to build task 'filename.md.pdf'

思い通りにファイル名を作成するにはどうすればよいですか?

ちなみに、このタイプのルールは Make でうまく機能します。

%.md.pdf : %.md
        pandoc $< -o $@
4

1 に答える 1

3

最近、ルールで複数のドットを含む拡張子を指定しようとしたときに、同様の問題が発生しました。ここで説明されているように、別のルール構文を使用して解決しました。

ルールに対して次のようなことを試してください。

rule( /\.md\.pdf$/ => [
    proc {|task_name| task_name.sub(/\.md\.pdf$/, '.md') }
]) do |t|
    sh "pandoc #{t.source} -o #{t.name}"
end
于 2013-05-10T16:09:11.653 に答える