我想在knitr
文档中为我的绘图使用一致的字体。现在我正在cairo_pdf
和pdf
之间切换。我在某些情节中使用cairo_pdf
的原因是在某些情况下避免使用短划线。但是当我的系统调用cairo_pdf
时,我得到一个Arial字体;而pdf
使用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}
理想情况下,我想选择字体(而不仅仅是Arial或Helvetica)。但是,我无法安装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 :(得分: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}