Встановіть розмір поля при перетворенні з Markdown в PDF за допомогою pandoc


179

Я створив файл RMarkdown в RStudio і встиг зв'язати його за допомогою в'язального файлу в HTML і .md файл. Далі я використовував pandoc для перетворення .md-файлу у PDF-файл (я отримую помилку, якщо намагаюся перетворити з .html-файлу). Однак PDF-файл, який створюється, має величезні поля (наприклад, http://johnmacfarlane.net/pandoc/demo/example13.pdf ). Як я можу змусити Pandoc виготовити щось із меншими полями? Я переглянув посібник користувача pandoc, але не знайшов нічого корисного.

Відповіді:


241

Останні версії rmarkdown та pandoc

В останніх версіях rmarkdown налаштування поля можна проводити в заголовку YAML через елемент верхнього рівня geometry. Те, що ви вказали в geometryтезі, буде записано в шаблон LaTeX, який постачається з Pandoc за допомогою наступного фрагмента LaTeX

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

Наприклад, щоб вказати поля, що мають ширину 2 см, один би включав

---
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 надає PDF в LaTeX - те, з чим ви пов’язані, представляє поля за замовчуванням для документа LaTeX.

Геометрія Латекс пакет, наприклад , може бути використаний для зміни полех сторінок. Однак вам знадобиться спосіб сказати Pandoc використовувати це, включивши його до заголовка LaTeX, застосованого до перетвореного файлу md.

Як це зробити, задокументовано в Посібнику користувача Pandoc . Див. Зокрема --template=FILEаргумент командного рядка та розділ Шаблони . По суті, або знайдіть і змініть шаблон за замовчуванням, щоб включити інструкції LaTeX, які ви хочете використовувати, або запустити власний шаблон з нуля та розмістити його у відповідному місці; див --data-dir. аргумент командного рядка.


Ще одна альтернатива, якщо ви використовуєте останню версію Pandoc - це використовувати аргумент змінної (встановлений або з -V KEY[=VAL]або --variable=KEY[:VAL]). geometryПакет був доданий в шаблон LaTeX за замовчуванням в травні 2012 року (див цього обговорення ). Таким чином, якщо ви хочете змінити поля сторінки, ви можете використовувати:

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

34
Якщо ви використовуєте останню версію Pandoc, ви також можете встановити це за допомогою variableкоманди, замість того, щоб робити шаблон з нуля або жорстко кодувати поля в шаблоні за замовчуванням. Наприклад, для 1-дюймових запасів можна використовувати pandoc -V geometry:margin=1in -o output.pdf input.md.
A5C1D2H2I1M1N2O1R2T1

@mrdwab Це саме те, що мені потрібно. Дуже дякую. Хочете опублікувати це як відповідь, щоб я міг прийняти це?
mchangun

8
@mchangun, я відредагував відповідь Гевіна, щоб включити свій коментар, оскільки це дійсний, який може бути корисним користувачам, які хочуть використовувати інші користувацькі пакети LaTeX, не включені до шаблонів Pandoc за замовчуванням.
A5C1D2H2I1M1N2O1R2T1

1
Дуже новинка для пандока. Я виявив, що -V geometry:margin=1inваріант не дав ефекту. Через googling я десь знайшов (вибачте, загублене посилання) документацію, в якій сказано, що ця опція не впливає, якщо використовується шаблон за замовчуванням. Я просто хочу перетворити файл розмітки на одній сторінці в PDF, щоб надіслати комусь як флієр. Моє швидке рішення: Відредагуйте файл шаблону безпосередньо та додайте рядок \usepackage[margin=1.0in]{geometry}. На моєму встановленні файл знаходиться в:/usr/share/pandoc-1.9.1.1/templates
Стів Кох

Чи є спосіб, завдяки командному рядку вплинути на один із поля? У всій моїй книзі внизу є гігантський пробіл, і я просто хочу вплинути на цей край. -V геометрія: margin: bottom, здається, не працює.
Остін Фатірі

105

В останніх версіях pandoc ви можете встановити ряд параметрів у заголовку YAML . Тут ви можете встановити геометрію, наприклад:

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

body text of document

Коли pandoc перетворює його в pdf, він повинен мати правильні поля.


Це набагато краще рішення! Це дуже корисно , коли ви автоматично будувати документ в редакторі , наприклад , Kileабо Sublime Text 2/3і змінюючи аргументи командного рядка , буде біль.
Абхінав
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.