2016-05-16 64 views
1

我想在我的图中使用一致的字体在knitr文档中。现在我在cairo_pdfpdf之间切换。我在某些情节中使用cairo_pdf的原因是在某些情况下避免使用连字符。但是当我的系统上调用cairo_pdf时,我得到一个Arial字体;而pdf使用Helvetica。cairo_pdf使用Arial而不是Helvetica

\documentclass{article} 

\begin{document} 

<<>>= 
knitr::opts_chunk$set(fig.height = 1, out.height = "1in", fig.width=1, out.width="1in") 
@ 

<<pdf, dev='pdf'>>= 
library(ggplot2) 
qplot(x = 1, y = 1, geom = "blank") + 
    xlab("RQac") 
@ 

<<cairo, dev='cairo_pdf'>>= 
qplot(x = 1, y = 1, geom = "blank") + 
    xlab("RQac") 
@ 

\end{document} 

enter image description here

理想情况下,我想选择字体(而不仅仅是宋体或黑体)。但是,我无法安装extrafonts包。

install.packages("extrafonts") 

导致安装Rttf2pt1的提示无法编译。

Warning: running command 'make --no-print-directory -f "Makefile.win"' had status 2 
ERROR: compilation failed for package 'Rttf2pt1' 
* removing 'C:/R/R-3.3.0/library/Rttf2pt1' 

如何在每个块中使用Arial字体?我如何在每个块中使用Helvetica?

+0

的'帮助页面cairo_pdf'说,你应该看的 “开罗字体” 部分的X11页面。你有吗? –

+0

我在'cairo_pdf'帮助文件中看不到那个交叉引用。 'X11'的字体部分似乎表明只能使用Arial(或Times或者等宽字体)。真的吗? – Hugh

+0

?cairo_pdf的用法部分中的'family'项目说:“请参阅X11帮助中的'Cairo字体'部分。”这不是我写的吗?你对这部分的阅读与我的阅读也有很大不同。我没有看到任何说你在选择字体方面受到限制的东西。 –

回答

2

我的临时解决方案是使用showtext包。缺点是我必须通过主题指定脸部。然而,这种缺点可以通过使用默认主题来缓解。当我在LaTeX中使用\usepackage{helvet}时,此解决方案还确保我使用相同的系列作为正文文本,而不是(非常接近)的克隆。

使用tikz似乎是一个似是而非的解决方案,虽然相当笨拙。 (几乎所有的图表需要注意外knitr。)

\documentclass[a4paper,10pt]{article} 

\begin{document} 

<<font_add>>= 
library(showtext) 
library(sysfonts) 
library(knitr) 
font.add("helvet", 
     regular = "C:/Program Files/MiKTeX 2.9/fonts/type1/urw/helvetic/uhvr8a.pfb", 
     bold = "C:/Program Files/MiKTeX 2.9/fonts/type1/urw/helvetic/uhvb8a.pfb", 
     italic = "C:/Program Files/MiKTeX 2.9/fonts/type1/urw/helvetic/uhvro8a.pfb") 

my_pdf <- function(file, width, height){ 
    pdf(file = file, width = width, height = height 
     # ,family = "helvet" 
    ) 
} 
@ 

<<>>= 
knitr::opts_chunk$set(fig.height = 1, out.height = "1in", fig.width=5, out.width="5in") 
@ 

\subsubsection*{No distinction between hyphens and negative symbols} 
<<pdf, dev='pdf'>>= 
library(ggplot2) 
qplot(x = 1, y = 1, geom = "blank") + 
    xlab(paste0("RQac 2012-13", "\U2212", "500")) 
@ 

\subsubsection*{Wrong family, though distinction preserved} 
<<cairo, dev='cairo_pdf'>>= 
qplot(x = 1, y = 1, geom = "blank") + 
    xlab(paste0("RQac 2012-13", "\U2212", "500")) 
@ 

\subsubsection*{Correct family and distinction, though the base family must be called} 
<<my_pdf, dev='my_pdf', fig.ext='pdf', fig.showtext=TRUE>>= 
qplot(x = 1, y = 1, geom = "blank") + 
    theme_gray(base_family = "helvet") + 
    xlab(paste0("RQac 2012-13", "\U2212", "500")) 
@ 

\end{document} 

original pdf

cairo pdf

showtext