Đặt kích thước lề khi chuyển đổi từ Markdown sang PDF bằng pandoc


179

Tôi đã tạo một tệp RMarkdown trong RStudio và quản lý để đan nó với đan vào một tệp HTML và .md. Tiếp theo, tôi đã sử dụng pandoc để chuyển đổi tệp .md thành tệp PDF (tôi gặp lỗi nếu tôi thử và chuyển đổi từ tệp .html). Tuy nhiên, bản PDF được tạo ra có tỷ suất lợi nhuận lớn (như http://johnmacfarlane.net/pandoc/demo/example13.pdf này ). Làm thế nào tôi có thể có được pandoc để sản xuất một cái gì đó với lợi nhuận nhỏ hơn? Tôi đã xem qua hướng dẫn sử dụng pandoc, nhưng không tìm thấy gì hữu ích.

Câu trả lời:


241

Các phiên bản gần đây của rmarkdown và pandoc

Trong các phiên bản gần đây hơn của rmarkdown , cài đặt lề có thể được thực hiện trong tiêu đề YAML thông qua phần tử cấp cao nhất geometry. Những gì bạn chỉ định trong geometrythẻ sẽ được chuyển vào mẫu LaTeX đi kèm với Pandoc thông qua đoạn mã LaTeX sau

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

Ví dụ: để chỉ định lề có chiều rộng 2cm, người ta sẽ bao gồm

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

Để các thông số kỹ thuật phức tạp hơn được chuyển đến gói LaTeX hình học , các tùy chọn chuỗi cùng nhau như bạn làm với LaTeX:

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

Câu trả lời gốc

Đây là một câu hỏi LaTeX vì Pandoc đang hiển thị thành PDF thông qua LaTeX - những gì bạn đã liên kết để thể hiện lề mặc định trên tài liệu LaTeX.

Các hình học gói LaTeX ví dụ có thể được sử dụng để thay đổi lề của trang. Tuy nhiên, bạn sẽ cần một cách để bảo Pandoc sử dụng điều này bằng cách đưa nó vào tiêu đề LaTeX được áp dụng cho tệp md đã chuyển đổi.

Cách bạn làm điều này được ghi lại trong Hướng dẫn sử dụng Pandoc . Xem cụ thể --template=FILEđối số dòng lệnh và phần Mẫu . Về cơ bản, hãy tìm và sửa đổi mẫu mặc định để bao gồm các hướng dẫn LaTeX bạn muốn sử dụng hoặc bắt đầu mẫu của riêng bạn từ đầu và đặt nó vào vị trí thích hợp; xem --data-dirđối số dòng lệnh.


Một cách khác nếu bạn đang sử dụng một phiên bản gần đây của Pandoc là sử dụng đối số biến (được đặt bằng -V KEY[=VAL]hoặc --variable=KEY[:VAL]). Các geometrygói đã được thêm vào mẫu LaTeX mặc định tháng năm 2012 (xem thảo luận này ). Như vậy, nếu bạn muốn thay đổi lề trang, bạn có thể sử dụng:

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

Bạn có thể chỉ định nhiều giá trị biến quá. Ví dụ: nếu bạn muốn tạo pdf 4 x 6 inch với lề nửa inch, bạn có thể sử dụng:

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

33
Nếu bạn đang sử dụng phiên bản mới nhất của Pandoc, bạn cũng có thể đặt variablelệnh này bằng lệnh thay vì phải tạo một mẫu từ đầu hoặc mã hóa cứng các lề trong mẫu mặc định. Ví dụ, đối với lề 1 inch, bạn có thể sử dụng pandoc -V geometry:margin=1in -o output.pdf input.md.
A5C1D2H2I1M1N2O1R2T1

@mrdwab Đó chính xác là những gì tôi cần. Cảm ơn rất nhiều. Bạn muốn đăng nó như một câu trả lời để tôi có thể chấp nhận nó?
mchangun

8
@mchangun, tôi đã chỉnh sửa câu trả lời của Gavin để bao gồm nhận xét của tôi vì đây là câu trả lời hợp lệ có thể hữu ích cho người dùng muốn sử dụng các gói LaTeX tùy chỉnh khác không có trong các mẫu Pandoc mặc định.
A5C1D2H2I1M1N2O1R2T1

1
Rất mới với pandoc. Tôi đã thấy rằng -V geometry:margin=1intùy chọn này không có hiệu lực. Qua googling, tôi tìm thấy tài liệu ở đâu đó (xin lỗi bị mất liên kết) nói rằng tùy chọn này không có hiệu lực nếu sử dụng mẫu mặc định. Tôi chỉ muốn chuyển đổi một tập tin đánh dấu một trang thành một tệp PDF để gửi cho ai đó như một tờ quảng cáo. Giải pháp nhanh chóng của tôi: Chỉnh sửa tệp mẫu trực tiếp và thêm dòng \usepackage[margin=1.0in]{geometry}. Khi tôi cài đặt, tập tin nằm trong:/usr/share/pandoc-1.9.1.1/templates
Steve Koch

Có cách nào, từ dòng lệnh chỉ ảnh hưởng đến một trong các lề không? Toàn bộ cuốn sách của tôi có một khoảng cách lớn ở phía dưới và tôi chỉ muốn ảnh hưởng đến lề đó. -V hình học: lề: đáy dường như không hoạt động.
Austin Chaee

105

Trong các phiên bản gần đây hơn của pandoc, bạn có thể đặt một số tham số trong tiêu đề YAML . Bạn có thể đặt hình học ở đây, ví dụ:

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

body text of document

Khi pandoc chuyển đổi nó thành pdf, nó sẽ có lề chính xác.


Đây là một giải pháp tốt hơn nhiều! Nó khá hữu ích khi bạn tự động xây dựng tài liệu trong trình soạn thảo như Kilehoặc Sublime Text 2/3thay đổi đối số dòng lệnh sẽ là một điều khó khăn.
Abhinav
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.