Pandoc ile Markdown'dan PDF'ye dönüştürürken kenar boşluğu boyutunu ayarlama


179

RStudio'da bir RMarkdown dosyası oluşturdum ve knitr ile bir HTML ve .md dosyasına örmeyi başardım. Daha sonra, .md dosyasını bir PDF dosyasına dönüştürmek için pandoc kullandım (.html dosyasından dönüştürmeyi denediğimde bir hata alıyorum). Bununla birlikte, üretilen PDF'nin büyük kenar boşlukları vardır (bu http://johnmacfarlane.net/pandoc/demo/example13.pdf ). Daha küçük marjlı bir şey üretmek için pandocu nasıl edinebilirim? Pandoc kullanıcı kılavuzunu inceledim, ancak yararlı bir şey bulamadım.

Yanıtlar:


241

Rmarkdown ve pandoc'un son sürümleri

Yeniden işaretlemenin daha yeni sürümlerinde, kenar boşlukları ayarları YAML başlığında üst düzey öğe aracılığıyla yapılabilir geometry. geometryEtikette belirttiğiniz , aşağıdaki LaTeX snippet'i aracılığıyla Pandoc ile birlikte gelen LaTeX şablonuna eklenecektir

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

Örneğin, genişliği 2 cm olan kenar boşlukları belirtmek için

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

Geometri LaTeX paketine iletilecek daha karmaşık özellikler için seçenekleri LaTeX ile yaptığınız gibi dize edin:

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

Orijinal cevap

Pandoc, LaTeX aracılığıyla PDF'ye dönüştürdüğü için bir LaTeX sorusudur - bağlandığınız şey LaTeX belgesindeki varsayılan kenar boşluklarını temsil eder.

Geometri , örneğin Latex paketi sayfanın kenar değiştirmek için kullanılabilir. Ancak Pandoc'a bunu, dönüştürülmüş MD dosyasına uygulanan LaTeX başlığına ekleyerek kullanmasını söylemenin bir yolunu bulmanız gerekir.

Bunu nasıl yapacağınız Pandoc Kullanıcı Kılavuzu'nda belgelenmiştir . Özellikle --template=FILEkomut satırı argümanına ve Şablonlar bölümüne bakın . Temel olarak, kullanmak istediğiniz LaTeX talimatlarını içerecek şekilde varsayılan şablonu bulup değiştirin veya kendi şablonunuzu sıfırdan başlatın ve uygun konuma yerleştirin; bkz --data-dirkomut satırı argümanı.


Pandoc'un son bir sürümünü kullanıyorsanız başka bir alternatif de ( -V KEY[=VAL]veya ile ayarlanmış) değişken argümanını kullanmaktır --variable=KEY[:VAL]. geometryPaket Mayıs 2012'de varsayılan LaTeX şablonuna eklendi (bkz bu tartışma ). Bu nedenle, sayfa kenar boşluklarını değiştirmek istiyorsanız şunları kullanabilirsiniz:

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

Çok değişkenli değerler de belirleyebilirsiniz. Örneğin, yarım inç kenar boşluklarına sahip bir 4 x 6 inç pdf oluşturmak istiyorsanız, aşağıdakileri kullanabilirsiniz:

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

34
Pandoc'un en son sürümünü kullanıyorsanız, variablesıfırdan bir şablon yapmak veya varsayılan şablondaki kenar boşluklarını sabit kodlamak yerine komutu kullanarak da ayarlayabilirsiniz . Örneğin, 1 inç kenar boşlukları için kullanabilirsiniz pandoc -V geometry:margin=1in -o output.pdf input.md.
A5C1D2H2I1M1N2O1R2T1

@mrdwab Tam da ihtiyacım olan bu. Çok teşekkürler. Kabul edebilmem için bir cevap olarak göndermek ister misiniz?
mchangun

8
@mchangun, varsayılan Pandoc şablonlarında bulunmayan diğer özel LaTeX paketlerini kullanmak isteyen kullanıcılar için yararlı olabilecek geçerli bir yanıt olduğu için Gavin'in cevabımı yorumumu da ekledim.
A5C1D2H2I1M1N2O1R2T1

1
Pando için çok yeni. Bu -V geometry:margin=1inseçeneğin bir etkisi olmadığını görüyordum. Google üzerinden, varsayılan şablon kullanılırsa bu seçeneğin bir etkisi olmadığını söyleyen bir yerde (üzgünüm bağlantıyı kaybetti) belgeler buldum. Sadece bir sayfa işaretleme dosyasını PDF'ye dönüştürmek istiyorum. Hızlı çözümüm: Şablon dosyasını doğrudan düzenleyin ve satırı ekleyin \usepackage[margin=1.0in]{geometry}. Yüklememde dosya şu durumda:/usr/share/pandoc-1.9.1.1/templates
Steve Koch

Komut satırından kenar boşluklarından sadece birini etkilemenin bir yolu var mı? Kitabımın alt kısmında dev bir boşluk var ve sadece bu marjı etkilemek istiyorum. -V geometrisi: kenar boşluğu: alt kısım çalışmıyor gibi görünüyor.
Austin Fatheree

105

Pandoc'un daha yeni sürümlerinde, YAML başlığında bir dizi parametre ayarlayabilirsiniz . Geometriyi burada ayarlayabilirsiniz, örneğin:

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

body text of document

Pandoc bunu bir pdf'ye dönüştürdüğünde, doğru kenar boşluklarına sahip olmalıdır.


Bu çok daha iyi bir çözüm! Belgeyi benzer bir düzenleyicide otomatik olarak oluştururken Kileveya Sublime Text 2/3komut satırı argümanlarını değiştirmek acı verici olurken oldukça kullanışlıdır .
Abhinav
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.