更改 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 中的字体的主要内容,如果未能解决你的问题,请参考以下文章
在 rmarkdown 文档的 ggplot2 图表中嵌入字体
使用没有 PDF 导航按钮的 rmarkdown 渲染导出为 PDF
循环遍历 Rmarkdown 中的分组 id 列并呈现 PDF