почему я получаю tikzexternaldisable как неопределенный с помощью pgfSweave?

#r #sweave #tikz

#r #sweave #tikz

Вопрос:

Простой случай.

  • R-2.13.2
  • pgfSweave 1.2.1
  • pgf 2.10

Я определяю очень простой файл для тестирования.

 documentclass{article}
title{Testing pgfSweave figures with tikz device}
begin{document}maketitle
<<testfigure, fig=T, tikz=T>>=
plot(density(rnorm(1000)))
@
end{document}
 

но когда я запускаю pgfSweave("test.Rnw", pdf=T, compile.tex=T) , я получаю эту ошибку.

 ! Undefined control sequence.
l.379 {tikzexternaldisable
 

И то, что выходит в pdf, является тарабарщиной. Что не так?

Ответ №1:

Вы должны usepackage{tikz}

Комментарии:

1. Разве pgfSweave не должен добавлять это автоматически?

2. @AndrewRedd — Я не уверен, должен ли pgfSweave , но мне тоже нужно включить эту строку в сценарий. Когда я этого не делаю, я получаю только сообщение об ошибке, которое вы сделали. Кроме того, обе виньетки pgfSweave включают usepackage{tikz} директивы в свои примеры .Rnw сценариев.

3. На самом деле, я помню pgfSweave , что он автоматически добавится usepackage{tikz} в ваш документ tex, но по какой-то причине он больше не работает. Я называю подобные вещи header компонентом в моем пакете, который принимает разумные значения по умолчанию, и пользователи также могут определить его и будут добавлены раньше begin{document} .

4. pgfSweave добавит другие материалы в ваш документ, но нет usepackage{tikz} , причина в том, что вы можете захотеть добавить его, а затем использовать свои собственные библиотеки tikz.