19458


## 現状の問題

Pandocを利用してMarkdownで書かれたファイルをPDFに変換しようとしています。  
現在、Markdownのファイルは下記のようなフォルダ構成で配置しています。

[code]

    root/
     +- images/
          +- test.png
     +- docs/
          +- doc1.md
    
[/code]

doc1.mdのファイル内容は下記のようになっています。

[code]

    # テストドキュメント
    
    ![テストイメージ](../images/test.png)
    
[/code]

上記のような構成で、rootフォルダ上で下記のコマンドを実行します。

[code]

    pandoc docs/doc1.md -o doc1.pdf -V documentclass=ltjarticle --latex-engine=lualatex
    
[/code]

すると、下記のエラーが発生してしまいます。

[code]

    pandoc.exe: Could not find image `../images/test.png', skipping...
    
[/code]

イメージのパスを`./images/test.png`とすれば正常に出力されることはわかっているのですが、doc1.mdはHTMLとしても表示したいため、doc1.mdファイル内のイメージへのパスを書き換えることなくPDFへの出力を実現したいと考えています。

当初はimagesフォルダをrootフォルダと同階層にコピーして実行することで解消していましたが、docsフォルダ内をさらにサブフォルダに分割したところ、imagesフォルダへの相対パスが深くなってしまったため、imagesフォルダのコピーでは手順が面倒になってしまった次第です。

## 知りたいこと

  * Pandocでの生成時にドキュメントベースを指定できるようなオプションはないでしょうか？
  * MarkdownからPDFへの変換は一度Latexにされるのですが、Latexのオプションでドキュメントベースを指定できるようなオプションはないでしょうか？
  * Markdownファイル内の記述についてHTMLでも利用可能な共通的なパスの指定方法はありませんか？
  * その他こうしたほうが良いなど


CC BY-SA 3.0
2015-11-30T01:52:49.990
19453
2015-11-30T03:56:37.593
10724
question
markdown pandoc
PandocでMarkdownからPDFを生成する際のイメージへのパスが「Could not find image」となる問題について


> Pandocでの生成時にドキュメントベースを指定できるようなオプションはないでしょうか？

こちら [Request for change: adding optione to define basepath・Issue
#785](https://github.com/jgm/pandoc/issues/785) を読む限りでは、

[code]

    $ (cd docs && pandoc doc1.md -o ../doc1.pdf -V documentclass=ltjarticle --latex-engine=lualatex)
    
[/code]

などとするしかない様です。

その他には pandoc の `--filter` オプションを使う方法があります。

**filter.sh**

[code]

    #!/bin/sh
    sed -r 's:(../)+images/:./images/:g'
    
[/code]

pandoc の内部では JSON 形式に変換したデータを扱っていますので `jq` コマンドなどを使うべきなのですが、ここでは簡便に `sed`
コマンドを利用します。

[code]

    $ pandoc docs/doc1.md --filter='./filter.sh' -o doc1.pdf -V documentclass=ltjarticle --latex-engine=lualatex
    
[/code]

ただ、ご質問には `pandoc.exe` とありますので、Windows 環境で上記の処理が実行可能かどうかは不明です。


CC BY-SA 3.0
2015-11-30T03:56:37.593
19458
2015-11-30T03:56:37.593
19453
answer