web-dev-qa-db-ja.com

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

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

145
mchangun

Rmarkdownおよびpandocの最新バージョン

rmarkdownの最近のバージョンでは、マージンの設定はトップレベル要素geometryを介してYAMLヘッダーで行うことができます。 geometryタグで指定したものは、次の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
---

より複雑な仕様をgeometryLaTeXパッケージに渡すには、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ドキュメントのデフォルトのマージンを表します。

たとえば、geometryLaTeXパッケージを使用して、ページのマージンを変更できます。ただし、変換された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
193
Gavin Simpson

Pandocの最近のバージョンでは、 YAMLヘッダー で多くのパラメーターを設定できます。ここでジオメトリを設定できます、例えば:

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

body text of document

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

93
naught101