У меня есть файл Sweave, JMP.Rnw, который вводит несколько других файлов в тот же каталог.Соответствующая выдержка из JMP.Rnw (в разделе «Введение»):
\SweaveInput{intro.tex}
И все же, когда я запускаю Sweave из командной строки, я получаю сообщение об ошибке, что intro.tex не может быть найден.
> Sweave("JMP.Rnw")
Error in SweaveReadFile(c(ifile, file), syntax, encoding = encoding) :
no Sweave file with name ‘./intro.tex ’ found
>
Тем не менее, файл определенно существует:
$ find . -name intro.tex
./intro.tex
$
Этот вход, кажется, работает для других входных файлов, но я не могу обнаружить шаблон, который объясняет, почему некоторые могут быть импортированыа другие не могут.По-видимому, существует ряд проблем с Sweave и кодировкой файлов (см. Похоже, что Sweave не получает правильную кодировку файлов .Rnw ), но здесь, похоже, это не проблема ---все файлы закодированы в us-ascii:
$ file -bi JMP.Rnw
text/x-tex; charset=us-ascii
$ file -bi intro.tex
text/x-tex; charset=us-ascii
$
Действительно странная вещь заключается в том, что у меня есть отдельная настройка Sweave paper, и я просто перемещаю intro.tex в этот каталог и добавляю \ SweaveInput {intro.tex}к этому мастер-файл работает отлично (то есть, сборки без каких-либо проблем).Этот другой документ использует другой шаблон LaTeX, но это может показаться неуместным, так как я понимаю, что Sweave в основном игнорирует все это, пока все блоки кода не будут идентифицированы и выполнены (хотя мое понимание здесь может быть оченьнеправильно).
Я работаю с версией R 2.14.2 на компьютере x86_64-pc-linux-gnu (64-bit).
Обновление : исследуя ответ от https://stackoverflow.com/users/210673/aaron, я обнаружил, что в моей альтернативной статье, где \ SweaveInput {} работает, сообщение об ошибке, сгенерированное при попытке вызватьнесуществующий файл не содержит дополнительный пробел, т. е.
> Sweave("allocating_visibility.Rnw")
Error in SweaveReadFile(c(ifile, file), syntax, encoding = encoding) :
no Sweave file with name ‘./nothere.Rnw’ found
>
Теперь я понятия не имею, почему эта конечная пустая вещь происходит в одном месте, а не в другом, но этокажется наиболее вероятной причиной проблемы.
Обновление II : Так что я думаю, что это все-таки проблема с кодировкой.Когда я изначально создал свой основной файл .Rnw, я вставил в него какой-то текст в кодировке utf-8.Я преобразовал файл обратно в ascii, используя http://billposer.org/Software/uni2ascii.html, и все еще получил ошибку пробела при запуске Sweave.Однако, когда я удалил исходную строку \ SweaveInput {} и набрал ее заново, проблема исчезла (т. Е. Она создается правильно и лишнее пространство в сообщении об ошибке исчезло).