pandocでMarkdownからPDFに変換するときのマージンサイズを設定する


179

RStudioでRMarkdownファイルを作成し、knitrを使用してHTMLファイルと.mdファイルに編成しました。次に、pandocを使用して.mdファイルをPDFファイルに変換しました(.htmlファイルから変換しようとするとエラーが発生します)。ただし、生成されるPDFには大きなマージンがあります(このhttp://johnmacfarlane.net/pandoc/demo/example13.pdfなど)。どうすればpandocに余白の小さいものを作成できますか?pandocのユーザーガイドを確認しましたが、有用なものは見つかりませんでした。

回答:


241

rmarkdownとpandocの最近のバージョン

rmarkdownの最近のバージョンでは、マージンの設定はトップレベルの要素を介してYAMLヘッダーで行うことができますgeometrygeometryタグで指定した内容は、次のLaTeXスニペットを介してPandocに付属する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パッケージに渡すには、LaTeXの場合と同じように文字列オプションを一緒に指定します。

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

元の答え

これはLaTeXの質問です。PandocはLaTeXを介してPDFにレンダリングしているため、リンク先はLaTeXドキュメントのデフォルトのマージンを表しています。

幾何学たとえば LaTeXパッケージは、ページのマージンを変更するために使用できます。ただし、変換されたmdファイルに適用されるLaTeXヘッダーに含めることで、これを使用するようPandocに指示する方法が必要です。

これを行う方法は、Pandocユーザーガイドに記載されています。特に--template=FILEコマンドライン引数とテンプレートセクションを参照してください。基本的に、デフォルトのテンプレートを見つけて変更し、使用するLaTeX命令を含めるか、独自のテンプレートを最初から作成して適切な場所に配置します。--data-dirコマンドライン引数を参照してください。


Pandocの最新バージョンを使用している場合の別の代替方法は、変数引数を使用することです( -V KEY[=VAL]またはで--variable=KEY[:VAL])。geometryパッケージは2012年5月のデフォルトのLaTeXのテンプレートに追加された(参照この議論を)。そのため、ページ余白を変更したい場合は、以下を使用できます。

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

複数の変数値を指定することもできます。たとえば、マージンが0.5インチの4 x 6インチのPDFを作成する場合は、次のように使用できます。

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

33
Pandocの最新バージョンを使用している場合はvariable、テンプレートを最初から作成したり、デフォルトのテンプレートのマージンをハードコーディングしたりする代わりに、コマンドを使用してこれを設定することもできます。たとえば、1インチの余白の場合、を使用できますpandoc -V geometry:margin=1in -o output.pdf input.md
A5C1D2H2I1M1N2O1R2T1

@mrdwabそれがまさに私が必要としていることです。どうもありがとう。それを回答として投稿して、承諾できるようにしますか?
mchangun

8
@mchangun、私はGavinの回答を編集してコメントを含めました。これは、デフォルトのPandocテンプレートに含まれていない他のカスタムLaTeXパッケージを使用したいユーザーに役立つ可能性がある有効なコメントだからです。
A5C1D2H2I1M1N2O1R2T1 2012年

1
pandocは非常に新しい。私は-V geometry:margin=1inオプションが効果がないことを発見していました。グーグルを介して、デフォルトのテンプレートを使用する場合、このオプションは効果がないと言っている(リンクを失った)ドキュメントをどこかで見つけました。1ページのマークダウンファイルをPDFに変換して、チラシとして送信したいだけです。私の簡単な解決策:テンプレートファイルを直接編集し、行を追加します\usepackage[margin=1.0in]{geometry}。:私のインストールでは、ファイルがである/usr/share/pandoc-1.9.1.1/templates
スティーブ・コッホ

コマンドラインからマージンの1つだけに影響を与える方法はありますか?私の本全体の下部には大きなギャップがあり、そのマージンに影響を与えたいだけです。-V geometry:margin:bottomが機能していないようです。
オースティン父親2017

105

最近のバージョンのpandocでは、YAMLヘッダーにいくつかのパラメーターを設定できます。ここでジオメトリを設定できます。次に例を示します。

---
title:  Pandoc nice margins example
author: naught101
geometry: margin=3cm
---

body text of document

pandocがPDFに変換するとき、正しいマージンが必要です。


これははるかに優れたソリューションです!KileまたはSublime Text 2/3などのエディターでドキュメントを自動的に構築する場合に非常に便利です。コマンドライン引数を変更するのは面倒です。
Abhinav、2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.