一丢丢前言

很久之前曾试图以Rmarkdown编译pdf文档,无奈怎么鼓捣都会error,搜索了很久都没能找到比较好的解决方案。在配置上将编译器调成了xeLaTeX后就不了了之。这两天心血来潮研究了一下xeLaTeX,终于明白之前为什么总是失败了。入LaTeX门的时候一心一意盯着pdfLaTeX的后果就是入了过时的CJK包的坑,想要扩展的时候就跳不出来了。如今爽快的以xeLaTeX+xeCJK来处理之后终于打通了Rmarkdown编译中文pdf文档的任督二脉,且让我暗自欣喜一阵:)不是什么大神,仅给出最简的配置方法大家自己鼓捣去吧~


接下来是塞牙缝的最简配置:

配置

  1. 安装 R、Rstudio 以及 MiKTeX (推荐直接上 CTeX 的贼船)。
  2. Rstudio 中的配置:Tools -- Global Options -- General, 设置缺省的编码格式为UTF-8(Default text coding: UTF-8)。当然,如果是默认的[Ask]状态,Rstudio弹框框出来的时候再选 UTF-8 也是可以的。
  3. 依然是 Rstudio , Tools -- Global Options -- Sweave,将编译器设置为 xeLaTeX. 另外,最上面有一个 Weave Rnw file using 的选项,在 Github 里有一个不错的 Rnw 编译pdf的解决方案,xccds / ggplot2.Rnw, 如果想要用以上方式进行中文编译的话,别忘了将这个选项设为 knitr. 啊哈,想当年遍寻中文编译方案无果的时候这位仁兄让我看到了一丝曙光~
  4. Rmd 里的 yaml 栏(就是最上面的那两个三条横线中间的部分)需要玩耍一些小 trick 噢:)详见下。
  5. 还需要在 Rmd 文件路径下放置一个header.tex来包含tex文件的基本信息。详见下。

文本内容

Rmd 文件

---
title: "这是一个标题"
author: "hi,我是作者"
output:
pdf_document:
includes:
in_header: header.tex
keep_tex: yes
latex_engine: xelatex
word_document: default
html_document: default
--- 我要打中文!!让我说句 helloworld 吧!
  • 自己手动敲的话注意缩进!!!Rmd 的 yaml 栏比较傲娇,有一些缩进缺了就会 error 了喵~

需要注意的就是latex_engine:xelatex 了。即使设置了默认的编译器为xeLaTeX依旧要手动再声明一遍编译器(我也不知道为什么R这么傲娇)

而对于 in_header:header.tex,想对 LaTeX 动手动脚的话就是它啦~


header.tex

首先,tex文件最好也存为 UTF-8 格式,特别是在声明xeCJK字体时用到了中文的情况下。

然后,嗯,最简的解决方案不是么?哦呵呵~


法一:站在巨人的肩膀上——CTex

如果你安装了CTeX套装,一句话足矣~

header.tex

\usepackage{ctex}

法二:调戏一下 xeCJK

header.tex

%\documentclass{article} %虽然加了注释号,但请注意这一行绝对不能注释掉!因为pandoc后生成的tex文件已含有此句
\usepackage[BoldFont,SlantFont,CJKsetspaces,CJKchecksingle]{xeCJK}
\setCJKmainfont[BoldFont=SimSun]{Microsoft YaHei} %我是雅黑控
\setCJKmonofont{SimSun}% 设置缺省中文字体
\parindent 2em %段首缩进

\documentclass{article} 一句万万不能加上!!表手多一时顺手打上了,酱紫直接就跪了。因为 knitr 使用的 md 转 tex 的编译器 pandoc 在生成 tex 的时候就会首先加上\documentclass{article}, 所以如果在 header.tex 里又来一遍的话会error。而上述ctex解决方案里不出现这个问题应该是将documentclass语句视为覆盖设置。


So?

header 的运用可以各种的化腐朽为神奇呐,棒棒哒~~~

想加载其它 package 的时候就在 header 里加上是一件多爽快的事情呐~~~

提点一个小 trick,就是,在Rstudio编译error了以后,可以到路径下看一看pandoc调戏出来的tex文件,纠错什么的看tex顺眼多了,而且tex才是最实质的导致编译进程停止的罪魁祸首喵~


Last but not least, 如果要做精细排版的话,还是直接在文本编辑器里敲 TeX 吧。去绕 R 呀 markdown 呀什么的其实只是为了感慨一下 R 的无所不能而已。嗯,以上。

R+markdown+LaTeX 中文编译解决方案的更多相关文章

  1. Atom+latex+中文环境

    最近在写论文,的路上.很多idea都受限于官方给的模板不能够添加自己即时的中文idea,所以添加中文到文献中很有必要,这里记录自己添加中文的几个小步骤 1. 受限将atom中的latex packag ...

  2. JSP中pageEncoding和charset区别,中文乱码解决方案(转载)

    转载自:JSP中pageEncoding和charset区别,中文乱码解决方案 JSP指令标签中<%@ page contentType="text/html;charset=GB23 ...

  3. boost::xml——基本操作以及中文乱码解决方案 (续)

    本博文主要想说明以下两点: 1.对于上一篇的<boost::xml——基本操作以及中文乱码解决方案>解释,这篇博文基本解决了正确输入输出中英文问题,但是好像还没有解决修改中文出现乱码的问题 ...

  4. Ubuntu下LaTex中文环境安装与配置

    转载自:http://www.linuxidc.com/Linux/2012-06/62456.htm LaTeX是一个强大的排版软件,但是其最初只是为英文排版而设计的.为了使其能够胜任中文排版的重任 ...

  5. 基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案

    基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案 两个月前做C++课设的时候,电脑编译器编译结果出现了中文乱码,寻求了百度和大神们,都没有解决这个问题,百度上一堆解释是对编译器 ...

  6. R贡献文件中文

    贡献文件 注意: 贡献文件的CRAN区域被冻结,不再被主动维护. 英文 --- 其他语言 手册,教程等由R用户提供.R核心团队对内容不承担任何责任,但我们非常感谢您的努力,并鼓励大家为此列表做出贡献! ...

  7. Latex中文utf-8编码的三种方式

    我们知道Latex一般用CJK和CTEX宏包支持中文编辑,CJK和CTEX的默认编码是GBK,而windows下的默然编码就是GBK,因此CJK和CTEX不需要特殊配置就可以直接支持中文Latex编译 ...

  8. Ubuntu系统配置Zabbix前端及中文乱码解决方案

    Ubuntu系统配置Zabbix前端及中文乱码解决方案  作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装zabbix 博主推荐阅读: https://www.cnblogs ...

  9. latex中文支持ubuntu

    latex安装: sudo apt install texlive-full 中文字体安装: sudo apt-get install latex-cjk-all      字体包中包含bsmi,bk ...

随机推荐

  1. NHibernate & INotifyPropertyChanged

    One of the things that make NHibernate easy to use is that it fully support the POCO model. But one ...

  2. Nhibernate工具Profiler配置

    1.使用之前需要确认Framework的Version,如果是4.0那么使用如下程序集需要在 创建ISessionFactory的项目中引用NHProfiler安装目录下的 HibernatingRh ...

  3. Linux下代理服务器(proxy)配置

    Linux下有很多程序都只有命令行接口,对于这类程序,它们通过代理服务器(proxy)访问网络的方式也不尽相同.在本文中Easwy总结了一些常用Linux程序配置代理服务器的方法. [ 通用代理服务器 ...

  4. ORM实例介绍

    http://blog.csdn.net/RonoTian/article/details/2900714

  5. 20165101刘天野 2018-2019-2《网络对抗技术》Exp2 后门原理与实践

    目录 20165101刘天野 2018-2019-2<网络对抗技术>Exp2 后门原理与实践 1. 实验内容 1.1 使用netcat获取主机操作Shell,cron启动 1.2 使用so ...

  6. Linux下解压分包文件zip(zip/z01/z02)【转】

    本文转载自:https://www.cnblogs.com/EasonJim/p/7227109.html?utm_source=itdadao&utm_medium=referral Lin ...

  7. 利用Metasploit进行Linux提权

    利用Metasploit进行Linux提权 Metasploit 拥有msfpayload 和msfencode 这两个工具,这两个工具不但可以生成exe 型后门,一可以生成网页脚本类型的webshe ...

  8. 搭建maven项目步骤

    整体项目结构如下: 第一步 第二步 第三步:删除src目录,只留pom文件 第四步: 第五步: 6 7 8 9 10 11 12

  9. Hibernate -- 检索方式 HQL

    Hibernate 提供了以下几种检索对象的方式 导航对象图检索方式:  根据已经加载的对象导航到其他对象 OID 检索方式: 按照对象的OID 来检索对象 HQL 检索方式:使用面向对象的HQL查询 ...

  10. python 之Tornado

    一.Tomado Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google 的 webap ...