Rmarkdown安装配置、输出PDF正文中文以及图片中文配置

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012111465/article/details/79945372

如果想用R的markdown做HTML或者word,OK,直接安装Rmarkdown即可(在安装此包之前需要安装knitr包),也不用担心中文乱码的问题。
实际上用上面得到的HTML或者word转化为也OK,然而对于有完美主义者的人来说,绝不会这么做,因为这样得到的PDF太垃圾,图简直TMD太糟糕。
事实上,好的东东是要付出代价的。

配置

  1. 安装 R、Rstudio 、 pandoc(转化格式功能)、MiKTeX(小型LaTeX)
  2. Rstudio 中最好配置一下配置编码格式utf-8
  3. Rstudio中将编译器设置为 xeLaTeX , Tools -- Global Options -- Sweave,配置如下:
    这里写图片描述
  4. 需要注意rmd 里的 yaml 栏设置(代码开头设置),在 rmd 文件的同一路径下放header.tex文件(tex文件的基本信息)。

Rmd 文件


---
title: "PDF测试"
author: "douzi"
date: "2018/4/14"
CJKmainfont: Microsoft YaHei
output:
  pdf_document:
    includes:
      in_header: header.tex
    keep_tex: yes  
    latex_engine: xelatex
---

以上就是rmd 里的 yaml 设置,一定要注意换行的空格,设置了默认的编译器为xeLaTeX还需要这个参数latex_engine:xelatex

header.tex

注意:

  • header.tex文件一定要是UTF-8 格式
  • header.tex一定要与rmd放在同一路径下

header.tex文件内容

%\documentclass{article} 
\usepackage[BoldFont,SlantFont,CJKsetspaces,CJKchecksingle]{xeCJK}
\setCJKmainfont[BoldFont=SimSun]{Microsoft YaHei} % 设置为雅黑字体
\setCJKmonofont{SimSun} % 设置缺省中文字体
\parindent 2em   % 设置段首缩进

注意:
\documentclass{article} 千万不能加上,因为 knitr 使用的 md 转 tex 的编译器 pandoc 在生成 tex 的时会自动加上该设置, 多此一举会报错。

上述的一切足以输出一个高质量的PDF,而问题往往没有折磨容易解决。

pdf中的图确实是高清,正文也确实是中文,可惜可惜的是,图!TMD中文给我整哪里去了,八嘎!恶心极了!

这里写图片描述

表急,搜了好久,终于逆袭了!

那就是showtext,love u!

表说话,安装就对了。

在代码中加入fig.showtext = TRUE, fig.align='center',同时,需要library(showtext)showtext::showtext.begin()showtext::showtext.end()

“`{r fig.showtext = TRUE, fig.align=’center’,echo=FALSE, message=FALSE, warning=FALSE}
library(showtext)
showtext::showtext.begin()
ggplot(data= china_edge_avg_url_rt, aes(x=date, y=avg_url_rt, group=CDN_ISP, shape=CDN_ISP, color=CDN_ISP )) +
#geom_smooth(size=1)
geom_line(linetype = 2,size =1) +
geom_point(size =2)+
xlab(”) +
ylab(‘平均响应时间:ms’) +
labs(title=’xxxxxxxxxxxxxxxxxxx’)+
theme(legend.position=”top”,axis.text.x = element_text(angle = 60, hjust = 0.5, vjust = 0.5),
text = element_text(color = “black”, size = 13),plot.title = element_text(hjust = 0.5))
showtext::showtext.end()

这里写图片描述

OK!完美!

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页