2012-10-22 4 views
6

Cercando di scrivere il mio secondo file Latexflusso di lavoro tra lattice e R avvitato

\documentclass{article} 
\title{simple Sweave script} 
\usepackage{/Users/Brenden/Documents/R/R-2.15.1/share/texmf/tex/latex/Sweave} 
\begin{document} 
\maketitle 
This is a simple script to demonstrate Sweave. Let's 
begin by generating some results 
<<>>= 
x=rnorm(30) 
y=rnorm(30) 
mean(x) 
cor(x,y) 
@ 
and follow that up with some random text 
\end{document} 

file salvato con .Rnw come estensione. Potrei quindi utilizzare Sweave in R per convertire il file in tex. Quindi eseguo pdflatex sotto cmd per ottenere il mio file .pdf. R è memorizzato in/Users/Brenden/Documents. MiKTex è memorizzato in/Users/Brenden/Desktop.

Si dice che di solito la linea di "usepackage" non è necessario, come quando corro Sweave sotto R, una linea di "usepackage {Sweave}" verrà aggiunto al file tex che viene memorizzato in/Users/Brenden/Documenti. Tuttavia, se non inserisco la riga userpackage, quando eseguo pdflatex sotto cmd (sotto/Documents o/Desktop), ho ricevuto un messsage che dice "Sweave.sty non trovato". Quindi ho avuto questo problema aggiungendo sempre una riga di usepackage con un percorso dettagliato per aiutare a eludere il problema. Anche se il "Sweave.sty non trovato" problema viene aggirato, Ho notato che quando ho eseguito pdflatex sotto cmd, ho ricevuto la risposta

LaTeX Warning: You have requested package '/Users/Brenden/Documents/R/R- 
2.15.1/share/texmf/tex/latex/Sweave', but the package provides "Sweave'. 

Poi si attraversa diversi file con .sty sotto MiKTEX

(C:\Users\Brenden\Desktop\MiKTex\tex\latex\base\ifthen.sty) 
(C:\Users\Brenden\Desktop\MiKTex\tex\latex\graphics\graphicx.sty) 
(C:\Users\Brenden\Desktop\MiKTex\tex\latex\graphics\keyval.sty) 
(C:\Users\Brenden\Desktop\MiKTex\tex\latex\graphics\graphics.sty) 
(C:\Users\Brenden\Desktop\MiKTex\tex\latex\graphics\trig.sty) 
... 

per creare alla fine un .pdf

da un altro post su StackOverflow, si dice, "Questo percorso viene impostato automaticamente quando si installa LaTeX: è il vostro albero texmf personale e si può inserire qualsiasi file di stile o di classe che si desidera LaTeX per trovarlo lì. I nomi delle directory non sono opachi er, cerca ricorsivamente in loro per Sweave.sty ". Per me, tuttavia, chiaramente il mio MiKTex non è riuscito a trovare Sweave.sty a meno che non specificassi il percorso. E anche con le specifiche del percorso, LaTex mi dà ancora un avvertimento. Qualcuno potrebbe spiegarmi dove ho sbagliato (durante l'installazione di MiKTex, forse?) In modo da poter aiutare MiKtex a trovare il modo di Sweave senza specificare il percorso?

Grazie.

+0

Link al post indicato nell'OP: http://stackoverflow.com/a/7610315/210673 – Aaron

risposta

7

Nel programma Impostazioni MiKTeX, c'è una scheda chiamata "Roots". È lì che è possibile specificare dove trovare ulteriori file .sty. Nel tuo caso, credo che vorrai aggiungere C:\Users\Brenden\Documents\R\R-2.15.1\share\texmf come root aggiuntiva. In questo modo, uno qualsiasi dei programmi TeX sarà in grado di trovare se eseguito da R o dalla riga di comando.

+0

Grazie mille, Brian. Ha funzionato! Una domanda di follow-up per un principiante, queste informazioni sono fornite in uno dei documenti in MiKTex? Grazie ancora –

+1

R e MiKTeX hanno idee leggermente diverse su come questi file aggiuntivi devono essere gestiti. MiKTeX ha il proprio sistema di imballaggio e distribuzione che R non usa per i suoi file relativi a TeX. R patch ogni cosa quando le cose vengono chiamate da R alterando le variabili di ambiente (TEXINPUTS, credo), in modo che TeX possa trovare i file specifici di R. Ma quando chiamato da fuori R, manca questa colla. Vedi, per esempio, una discussione su questo: http://tolstoy.newcastle.edu.au/R/e14/help/11/05/2061.html –

4

Sospetto che il percorso indicato nell'altro post sia il percorso del tuo texmf tree personale, che non è dove lo colloca Sweave. Una possibilità è quella di spostare al vostro albero texmf personale, ma il metodo usuale al giorno d'oggi, io credo, è quello di eseguire pdflatex dall'interno R, in questo modo:

texi2dvi("foo.tex", pdf = TRUE) 

penso che si può anche avere Sweave aggiungere il percorso completo automaticamente aggiungendo

export SWEAVE_STYLEPATH_DEFAULT="TRUE" 

al .bashrc di file, o qualunque sia l'equivalente sarebbe sul vostro sistema.

+0

Grazie mille, Aaron. Ho effettivamente provato texi2dvi prima e fallito (errore del newbie). Ma poi ho scoperto che avevo bisogno di caricare prima il pacchetto di strumenti. –

2

Nella riga di comando, R CMD imposta l'ambiente con variabili appropriate per l'esecuzione di R, per esempio su Windows

C:\Users\mtmorgan> "c:\Program Files\R\R-2.15.1\bin\R" CMD set 

include (questo non viene trovato se un tipi set la riga di comando)

TEXINPUTS=.;c:/PROGRA~1/R/R-215~1/.1/share/texmf/tex/latex; 

e così

C:\Users\mtmorgan> "c:\Program Files\R\R-2.15.1\bin\R" CMD pdflatex myfile.tex 

troveranno Sweave.sty. Inoltre, tools::texi2dvi può essere richiamato da dentro R.

6

E 'fastidioso per essere sempre distratto da piccoli diavoli come questo (nuovo concetto texmf tree, infinite variabili d'ambiente TEXINPUTS, SWEAVE_STYLEPATH_DEFAULT, ...). Lei non potrà mai preoccuparsi di pacchetti LaTeX se si utilizza knitr, e se vi piace lo stile Sweave, si può semplicemente mettere render_sweave() nel documento come:

\documentclass{article} 
\title{simple Sweave script} 
<<setup, include=FALSE>>= 
render_sweave() 
@ 

\begin{document} 
\maketitle 
This is a simple script to demonstrate Sweave. Let's 
begin by generating some results 
<<>>= 
x=rnorm(30) 
y=rnorm(30) 
mean(x) 
cor(x,y) 
@ 
and follow that up with some random text 
\end{document} 

Salva come, ad esempio, test.Rnw e compilarlo con

E immagino che probabilmente starai meglio senza render_sweave() (ad esempio, usa lo stile LaTeX predefinito in knitr).