1. ホーム
  2. r

[解決済み】pandocでMarkdownからPDFに変換する際に余白の大きさを設定する。

2022-04-06 11:39:13

質問

RStudioでRMarkdownファイルを作成し、knitrでHTMLと.mdファイルに編むことに成功しました。 次に、pandocを使って.mdファイルをPDFファイルに変換しました(.htmlファイルから変換しようとするとエラーが出ます)。 しかし、生成されたPDFは大量の余白がある(このように http://johnmacfarlane.net/pandoc/demo/example13.pdf ). どうすれば、pandocに余白の少ないものを作らせることができるのでしょうか? pandocのユーザーガイドに目を通しましたが、役に立つものは見つかりませんでした。

解決方法は?

rmarkdownとpandocの最新バージョン

の最近のバージョンでは rmarkdown マージンの設定はトップレベル要素である geometry . で指定した内容は geometry タグはPandocに同梱されているLaTeXテンプレートに以下のLaTeXスニペットでパイプされます。

$if(geometry)$
\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry}
$endif$

例えば、幅2cmの余白を指定する場合は、以下のようになります。

---
title: "Habits"
author: John Doe
date: March 22, 2005
geometry: margin=2cm
output: pdf_document
---

に渡すより複雑な仕様の場合は ジオメトリ LaTeXパッケージと同じように、オプションを文字列で繋げます。

---
title: "Habits"
author: John Doe
date: March 22, 2005
geometry: "left=3cm,right=3cm,top=2cm,bottom=2cm"
output: pdf_document
---


オリジナル回答

これは、PandocがLaTeX経由でPDFにレンダリングするため、LaTeXに関する質問です。あなたがリンクしたものは、LaTeXドキュメントのデフォルトの余白を表しています。

その ジオメトリー 例えばLaTeXパッケージは、ページの余白を変更するために使用することができます。しかし、変換されたmdファイルに適用されるLaTeXヘッダーにそれを含めることによって、Pandocにこれを使うように指示する方法が必要です。

この方法は Pandocユーザーガイド . 特に --template=FILE コマンドライン引数、および テンプレートセクション . 基本的には、使いたいLaTeX命令を含むデフォルトのテンプレートを見つけて修正するか、あるいは、自分で一からテンプレートを作って、適切な場所に配置します。 --data-dir コマンドライン引数で指定します。


Pandoc の最近のバージョンを使っている場合、もうひとつの方法として variable 引数 (この引数には -V KEY[=VAL] または --variable=KEY[:VAL] ). また geometry パッケージは、2012年5月にデフォルトのLaTeXテンプレートに追加されました(詳しくは 本論 ). そのため、ページ余白を変更したい場合、以下のようになります。

pandoc -V geometry:margin=1in -o output.pdf input.md

変数の値も複数指定できる。例えば、4×6インチのpdfを半インチの余白で作りたい場合、以下のようになります。

pandoc -V geometry:paperwidth=4in -V geometry:paperheight=6in -V geometry:margin=.5in -o output.pdf input.md