更改 rmarkdown 生成的 PDF 中的字体

Posted

技术标签:

【中文标题】更改 rmarkdown 生成的 PDF 中的字体【英文标题】:Changing font in PDF produced by rmarkdown 【发布时间】:2014-08-16 18:11:46 【问题描述】:

我正在使用 rmarkdown 生成报告。编织 PDF 时

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

我想指定用于创建 PDF 的字体。官方documentation(参见“LaTeX 选项”部分)说我可以做到这一点。 但是,我从未使用过 LaTeX,也无法理解如何在 rmarkdown 包使用的 .Rmd 文档顶部的 YAML 选项中进行此类选择。

问题:如何更改rmarkdown生成的PDF中的字体?

会话信息() 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,也不想在这个妈妈身上涉足它

【问题讨论】:

您想具体更改什么,大小或字体系列?您链接到的文档提供了在 YAML 标头中使用 geometry 的示例(它将其设置为 margin=1in),因此可能会引导您以相同的方式尝试其他参数。我猜你已经安装了确实包含xelatex的MiKTeX,所以据称你可以以类似的方式设置mainfont。我目前无法访问它,但请尝试:output:\n pdf_document:\n mainfont: Times New Roman(\n 表示 CR 和缩进)并查看它的作用。你可能也需要latex_engine: xelatex 是的,我有 MiKTeX 并使用 xelatex。不幸的是,您建议的 cod 不起作用 - 它会产生错误,可能是因为语法错误。类似的方式不起作用:yaml 不接受诸如 mainfont: phv 之类的命令,例如,给出错误“未使用的参数” 看我的回答,你是对的,我只是不知道如何实现语法。谢谢! 很高兴听到。因为我无法测试代码,所以我不想发布答案;所以因为我使用的是评论,所以我无法显示缩进。我可能会更强调适当缩进的必要性,很高兴你明白了。 【参考方案1】:

YAML 选项中的缩进是有意义的。正如说明指出的那样,“请注意,这些选项不会出现在输出部分下方,而是与标题、作者等一起出现在顶层)”。所以,

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

会产生一个未使用的参数错误,而

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

将完成这项工作。此外,在 YAML 之后插入的 LaTeX 命令似乎会覆盖它:所以

---
output:
  pdf_document:
    latex_engine: xelatex
    sansfont: Calibri Light
---
\fontsize1222
\fontseriesb
\selectfont

使用默认字体生成 PDF,而不是 Calibri,但是,字体选项通过正常。

【讨论】:

现在还有classoption: 12pt 中间选项(这里是第二块)对我不起作用。 @hpesoj626 您能否提供一个使用 classoption: 12pt 的示例?我已经在我的 YAML 中输入了它,它似乎没有任何效果。 如果您需要在代码块更改字体大小,请确保将块选项设置为results = "asis",您可以使用cat("\\fontsize1515 \\ \\selectfont \\ ") 【参考方案2】:

只是一个简单的例子。 将这些行添加到您的 RMD 主文本区域并查看效果。

\fontfamilycmr
\fontsize1222
\fontseriesb
\selectfont

希望对你有帮助

【讨论】:

这部分有效。它对字体大小和行大小很敏感,但 \fontfamily ,例如 \fontfamilyphv 不会影响 PDF。当然是一个好的开始!谢谢!【参考方案3】:

我使用 pdfLatex,所以在我使用“header-includes”之前几乎没有任何效果,如下所示:

---
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
  \usepackagefloat

  % It has several commands to have more control over the tables (at least I use it for this)
  \usepackagearray

  % For custom headers and footers
  \usepackagefancyhdr

  % This line allows me to manipulate images within latex
  \usepackagegraphicx

  % This package has several uses, for this document I used it to manage hyperlinks and introduce metadata to the document
  \usepackagehyperref

  % These lines define the font that I want to use in the document
  \usepackagehelvet
  \renewcommand\familydefault\sfdefault
---

通过此更改,生成的 pdf 将如下所示:

其他解决方案只能做到这一点:

只是我需要的字体的一部分文本。

【讨论】:

谢谢@andres。这极大地改进了默认的 PDF 输出格式。您能否添加 cmets 来指示您的每条 \usepackage 行的作用? @Stan 我已在 \usepackage 中添加了 cmets,希望对您有所帮助,问候

以上是关于更改 rmarkdown 生成的 PDF 中的字体的主要内容,如果未能解决你的问题,请参考以下文章

更改 R DataTables (DT) 中的字体大小

在 rmarkdown 文档的 ggplot2 图表中嵌入字体

使用没有 PDF 导航按钮的 rmarkdown 渲染导出为 PDF

循环遍历 Rmarkdown 中的分组 id 列并呈现 PDF

Rmarkdown 文件中的 DiagrammeR/mermaid 流程图,输出格式为 PDF/LaTex

Rmarkdown 文本突出显示未显示在 PDF 输出中