【发布时间】:2014-05-14 22:58:13
【问题描述】:
我的 knitr 文档中的特殊字符有问题。普通文本可以正常工作,但图片上标题或轴名称中的波兰字母不能。
我试图通过安装 cairoDevice 包来解决这个问题。但它仍然不起作用。实际上我不确定这个包是否正常工作,因为我还必须安装 Rgtk2 包并且它也存在问题。除了 cairoDevice 之外,还有什么其他的方法可以让字母变亮吗?如果不是如何让它正常工作?
这是我的 knitr 文件problem.Rnw:
\documentclass[12 pt, a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{polski}
\usepackage{geometry}
\geometry{total={210mm, 297mm}, left=17mm, right=17mm, top=17mm, bottom=17mm}
\usepackage[font=footnotesize,labelfont=bf]{caption}
\usepackage{url}
\usepackage[colorlinks=true]{hyperref}
\hypersetup{linkcolor=blue}
<<include=F>>=
source("My path/plot.R")
@
<<include=F>>=
library(knitr)
library(RGtk2)
library(Cairo)
library(cairoDevice)
#ustawienia globalne
opts_chunk$set(fig.path='figure/', fig.align='center', fig.show='asis', fig.pos='ht!', dev='CairoPDF')
@
\begin{document}
<<MusicBad, echo=F, fig.width=5, fig.height=5, out.width='.5\\linewidth', fig.cap='Błędne zastosowanie wykresu liniowego.'>>=
plot.music.bad
@
\end{document}
这里是我的plot.R 文件:
library(ggplot2)
#create data frame
music <- c("Blues", "Hip-hop", "Jazz", "Metal", "Rock")
number <- c(8, 7, 4, 6, 11)
df.music <- data.frame(music, number)
#create line graph
plot.music.bad <- ggplot(data=df.music, aes(x=music, y=number, group=1)) +
geom_line(size=1, color="#333333") +
geom_point(size=3, color="#333333") +
xlab("Rodzaj muzyki") +
ylab("Liczba studentów") +
ylim(c(0,11)) +
ggtitle("Ulubiony typ muzyki wśród studentów")
你知道如何解决这个问题吗?我只想在图形中有波兰语字母。谢谢。
编辑 我的会话信息:
sessionInfo()
R version 2.15.3 (2013-03-01)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=Polish_Poland.1250 LC_CTYPE=Polish_Poland.1250
[3] LC_MONETARY=Polish_Poland.1250 LC_NUMERIC=C
[5] LC_TIME=Polish_Poland.1250
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] tools_2.15.3
如果我从控制台运行这个情节,它工作正常。我在将其保存为 pdf 时遇到了同样的问题,但如果我运行 cairo_pdf(name, width=width, height=height) 而不是 pdf(name, width=width, height=height) 它会使用特殊字符保存。
【问题讨论】:
-
可能有助于说明您的
sessionInfo()(尤其是语言环境和操作系统)。如果你只是从控制台绘制,你会得到好的结果吗? -
在此页面上搜索
Encoding:yihui.name/knitr/demo/graphics -
另外,尝试在第一个块中调用
Sys.setlocale('LC_CTYPE', 'Polish_Poland.UTF-8')(不过我不确定它是否适用于 Windows)