Изменение шрифта в PDF, созданном rmarkdown

#r #pdf #latex #yaml #r-markdown

#r #PDF #Латекс #yaml #r-markdown

Вопрос:

Я создаю отчеты с использованием rmarkdown. При вязании PDF

 ---
title: "Untitled"
output: pdf_document
---
  

Я хотел бы указать шрифт, который будет использоваться при создании PDF. В официальной документации (см. Раздел «Параметры LaTeX) говорится, что я могу это сделать.
введите описание изображения здесь
Однако я никогда не использовал LaTeX и не понимаю, как такой выбор может быть сделан в параметрах YAML в верхней части документа .Rmd, используемого rmarkdown пакетом.

Вопрос: Как мне изменить шрифт в PDF, созданном rmarkdown?

sessionInfo() R версия 3.1.0 (2014-04-10) Платформа: x86_64-w64-mingw32 / x64 (64-разрядная версия)

 locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] grid      stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] ggplot2_1.0.0 RODBC_1.3-10  knitr_1.6     dplyr_0.2
  

Я никогда не использовал LaTeX и не хочу разбираться в этом сейчас

Комментарии:

1. Что конкретно вы хотите изменить, размер или семейство шрифтов? Документация, на которую вы ссылаетесь, содержит пример использования geometry в заголовке YAML (он устанавливает его margin=1in равным ), поэтому может привести к тому, что вы попробуете другие аргументы таким же образом. Я предполагаю, что у вас установлен MiKTeX, который включает xelatex в себя, поэтому вы якобы можете установить mainfont аналогичным образом. На данный момент он недоступен, но попробуйте: output:n pdf_document:n mainfont: Times New Roman (n подразумевает CR и отступ) и посмотрите, что это дает. Вам, вероятно latex_engine: xelatex , тоже нужно.

2. Да, у меня есть MiKTeX и я использую xelatex. К сожалению, предложенный вами код не работает — он выдает ошибку, вероятно, из-за неправильного синтаксиса. Аналогичный способ не работает: yaml не принимает такие команды, как mainfont: phv, например, выдает ошибку «Неиспользуемые аргументы»

3. смотрите мой ответ, вы были правы, я просто не знал, как реализовать синтаксис. Спасибо!

4. приятно слышать. Поскольку я не мог протестировать код, я не хотел публиковать ответ; поэтому, поскольку я использовал комментарий, я не мог показать отступ. Я, вероятно, мог бы больше подчеркнуть необходимость правильного отступа, рад, что вы это поняли.

Ответ №1:

Отступ в параметрах YAML имеет смысл. Как указано в инструкциях, «обратите внимание, что эти параметры не отображаются под разделом вывода, а отображаются на верхнем уровне вместе с заголовком, автором и т. Д.)». Итак,

 ---
output:
  pdf_document:
    latex_engine: xelatex
    sansfont: Calibri Light
---
  

приведет к ошибке неиспользуемого аргумента, в то время как

 ---
output:
  pdf_document:
    latex_engine: xelatex
sansfont: Calibri Light
---
  

выполнит свою работу. Кроме того, команды LaTeX, вставленные после YAML, похоже, переопределяют его: так

 ---
output:
  pdf_document:
    latex_engine: xelatex
    sansfont: Calibri Light
---
fontsize{12}{22}
fontseries{b}
selectfont
  

создает PDF со шрифтом по умолчанию, а не Calibri, однако параметр шрифта передается нормально.

Комментарии:

1. Есть и classoption: 12pt сейчас.

2. Средний вариант (2-й фрагмент здесь) не сработал для меня.

3. @hpesoj626 не могли бы вы привести пример использования classoption: 12pt? Я ввел его в свой YAML, и, похоже, это не имеет никакого эффекта.

4. Если вам нужно изменить размер шрифта в фрагменте кода, убедитесь, что для параметров фрагмента установлено значение results = "asis" и вы можете использовать cat("\fontsize{15}{15} \ \selectfont \ ") .

Ответ №2:

Просто краткий пример. добавьте эти строки в основную текстовую область RMD и посмотрите на эффекты.

 fontfamily{cmr}
fontsize{12}{22}
fontseries{b}
selectfont
  

Надеюсь, это может помочь

Комментарии:

1. Это частично работает. Это зависит от размера шрифта и размера строки, но fontfamily , например fontfamily{phv}, не влияет на PDF. Безусловно, хорошее начало! Спасибо!

Ответ №3:

Я использую pdfLatex, поэтому почти ничего не работало, пока я не использую «заголовок-включает», например:

 ---
title: "TITLE"
author: "ANDRES"
output: pdf_document
fontsize: 11pt
header-includes:
  % Allows me to use and print accented characters (document is in Spanish)
  usepackage[T1]{fontenc}
  usepackage[utf8]{inputenc}

  % Set up the document in Spanish
  usepackage[spanish]{babel}

  % It allows me to place the tables or images where I want, whether there is space or not
  usepackage{float}

  % It has several commands to have more control over the tables (at least I use it for this)
  usepackage{array}

  % For custom headers and footers
  usepackage{fancyhdr}

  % This line allows me to manipulate images within latex
  usepackage{graphicx}

  % This package has several uses, for this document I used it to manage hyperlinks and introduce metadata to the document
  usepackage{hyperref}

  % These lines define the font that I want to use in the document
  usepackage{helvet}
  renewcommand{familydefault}{sfdefault}
---  

С этим изменением сгенерированный PDF-файл будет выглядеть следующим образом:

введите описание изображения здесь

Другие решения достигли только этого:

введите описание изображения здесь

Просто часть текста в нужном мне шрифте.

Комментарии:

1. Спасибо @andres. Это значительно улучшает формат вывода PDF по умолчанию. Не могли бы вы добавить комментарии, указывающие, что делает каждая из ваших usepackage строк?

2. @Stan Я добавил комментарии в usepackage, надеюсь, они помогут вам, с уважением