R+markdown+LaTeX 中文编译解决方案
一丢丢前言
很久之前曾试图以Rmarkdown编译pdf文档,无奈怎么鼓捣都会error,搜索了很久都没能找到比较好的解决方案。在配置上将编译器调成了xeLaTeX后就不了了之。这两天心血来潮研究了一下xeLaTeX,终于明白之前为什么总是失败了。入LaTeX门的时候一心一意盯着pdfLaTeX的后果就是入了过时的CJK包的坑,想要扩展的时候就跳不出来了。如今爽快的以xeLaTeX+xeCJK来处理之后终于打通了Rmarkdown编译中文pdf文档的任督二脉,且让我暗自欣喜一阵:)不是什么大神,仅给出最简的配置方法大家自己鼓捣去吧~
接下来是塞牙缝的最简配置:
配置
- 安装 R、Rstudio 以及 MiKTeX (推荐直接上 CTeX 的贼船)。
- Rstudio 中的配置:
Tools -- Global Options -- General, 设置缺省的编码格式为UTF-8(Default text coding: UTF-8)。当然,如果是默认的[Ask]状态,Rstudio弹框框出来的时候再选 UTF-8 也是可以的。 - 依然是 Rstudio ,
Tools -- Global Options -- Sweave,将编译器设置为 xeLaTeX. 另外,最上面有一个Weave Rnw file using的选项,在 Github 里有一个不错的 Rnw 编译pdf的解决方案,xccds / ggplot2.Rnw, 如果想要用以上方式进行中文编译的话,别忘了将这个选项设为 knitr. 啊哈,想当年遍寻中文编译方案无果的时候这位仁兄让我看到了一丝曙光~ - Rmd 里的 yaml 栏(就是最上面的那两个三条横线中间的部分)需要玩耍一些小 trick 噢:)详见下。
- 还需要在 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 中文编译解决方案的更多相关文章
- Atom+latex+中文环境
最近在写论文,的路上.很多idea都受限于官方给的模板不能够添加自己即时的中文idea,所以添加中文到文献中很有必要,这里记录自己添加中文的几个小步骤 1. 受限将atom中的latex packag ...
- JSP中pageEncoding和charset区别,中文乱码解决方案(转载)
转载自:JSP中pageEncoding和charset区别,中文乱码解决方案 JSP指令标签中<%@ page contentType="text/html;charset=GB23 ...
- boost::xml——基本操作以及中文乱码解决方案 (续)
本博文主要想说明以下两点: 1.对于上一篇的<boost::xml——基本操作以及中文乱码解决方案>解释,这篇博文基本解决了正确输入输出中英文问题,但是好像还没有解决修改中文出现乱码的问题 ...
- Ubuntu下LaTex中文环境安装与配置
转载自:http://www.linuxidc.com/Linux/2012-06/62456.htm LaTeX是一个强大的排版软件,但是其最初只是为英文排版而设计的.为了使其能够胜任中文排版的重任 ...
- 基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案
基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案 两个月前做C++课设的时候,电脑编译器编译结果出现了中文乱码,寻求了百度和大神们,都没有解决这个问题,百度上一堆解释是对编译器 ...
- R贡献文件中文
贡献文件 注意: 贡献文件的CRAN区域被冻结,不再被主动维护. 英文 --- 其他语言 手册,教程等由R用户提供.R核心团队对内容不承担任何责任,但我们非常感谢您的努力,并鼓励大家为此列表做出贡献! ...
- Latex中文utf-8编码的三种方式
我们知道Latex一般用CJK和CTEX宏包支持中文编辑,CJK和CTEX的默认编码是GBK,而windows下的默然编码就是GBK,因此CJK和CTEX不需要特殊配置就可以直接支持中文Latex编译 ...
- Ubuntu系统配置Zabbix前端及中文乱码解决方案
Ubuntu系统配置Zabbix前端及中文乱码解决方案 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装zabbix 博主推荐阅读: https://www.cnblogs ...
- latex中文支持ubuntu
latex安装: sudo apt install texlive-full 中文字体安装: sudo apt-get install latex-cjk-all 字体包中包含bsmi,bk ...
随机推荐
- NHibernate & INotifyPropertyChanged
One of the things that make NHibernate easy to use is that it fully support the POCO model. But one ...
- Nhibernate工具Profiler配置
1.使用之前需要确认Framework的Version,如果是4.0那么使用如下程序集需要在 创建ISessionFactory的项目中引用NHProfiler安装目录下的 HibernatingRh ...
- Linux下代理服务器(proxy)配置
Linux下有很多程序都只有命令行接口,对于这类程序,它们通过代理服务器(proxy)访问网络的方式也不尽相同.在本文中Easwy总结了一些常用Linux程序配置代理服务器的方法. [ 通用代理服务器 ...
- ORM实例介绍
http://blog.csdn.net/RonoTian/article/details/2900714
- 20165101刘天野 2018-2019-2《网络对抗技术》Exp2 后门原理与实践
目录 20165101刘天野 2018-2019-2<网络对抗技术>Exp2 后门原理与实践 1. 实验内容 1.1 使用netcat获取主机操作Shell,cron启动 1.2 使用so ...
- Linux下解压分包文件zip(zip/z01/z02)【转】
本文转载自:https://www.cnblogs.com/EasonJim/p/7227109.html?utm_source=itdadao&utm_medium=referral Lin ...
- 利用Metasploit进行Linux提权
利用Metasploit进行Linux提权 Metasploit 拥有msfpayload 和msfencode 这两个工具,这两个工具不但可以生成exe 型后门,一可以生成网页脚本类型的webshe ...
- 搭建maven项目步骤
整体项目结构如下: 第一步 第二步 第三步:删除src目录,只留pom文件 第四步: 第五步: 6 7 8 9 10 11 12
- Hibernate -- 检索方式 HQL
Hibernate 提供了以下几种检索对象的方式 导航对象图检索方式: 根据已经加载的对象导航到其他对象 OID 检索方式: 按照对象的OID 来检索对象 HQL 检索方式:使用面向对象的HQL查询 ...
- python 之Tornado
一.Tomado Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google 的 webap ...