2013-03-12 18 views
5

Utilizzo Windows 7, R2.15.3 e RStudio 0.97.320 con knitr 1.1. Non sono sicuro di quale sia la mia versione pandoc, ma l'ho scaricata un paio di giorni fa.Codifica: file knitr e figlio

sessionInfo()
versione R 2.15.3 (2013/03/01) Piattaforma: x86_64-W64-mingw32/x64 (64-bit)

locale: 
[1] LC_COLLATE=Spanish_Argentina.1252 LC_CTYPE=Spanish_Argentina.1252 LC_MONETARY=Spanish_Argentina.1252 
[4] LC_NUMERIC=C      LC_TIME=Spanish_Argentina.1252  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

loaded via a namespace (and not attached): 
[1] tools_2.15.3 

vorrei per ottenere i miei rapporti sia in html e Word, quindi sto usando markdown e pandoc. Scrivo in spagnolo con accenti su vocali e tilde sul numero: á-ú e ñ.

Ho letto molti post e vedo problemi simili a quello che sto avendo risolto con le nuove versioni di knitr. Ma c'è un problema per il quale non ho trovato una soluzione.

Quando ho iniziato, ho usato il 'system default' codifica che appare nella finestra di dialogo RStudio, vale a dire ISO 8859-1, e le anteprime RStudio funzionava benissimo. Tuttavia, quando ho cercato di ottenere documenti di Word, pandoc soffocato sulle vocali accentuate. Ho trovato un post che mostra come risolvere il problema utilizzando iconv:

iconv -t utf-8 "myfile.md" | pandoc -o "myfile.docx" | iconv -f UTF-8

Anche se questo ha fatto risolvere pandoc's non riconosciuti utf-8 personaggi reclami, per qualche ragione pandoc fermate trovare le mie trame, con un errore come questo:

Pandoc: Impossibile trovare immagini `figure/Parent.png ', saltando ...

Se utilizzo solo caratteri non accentati, pandoc trova le immagini senza problemi. Ho guardato i due .md file con un editor hex, e non riesco a vedere alcuna differenza quando metto a confronto le sezioni che gestiscono le cifre:
![plot of chunk Parent](figure/Parent.png)
anche se ovviamente i caratteri accentuati sono completamente diversi ... Ho verificato che i file immagine esistono nella cartella figure

In ogni caso, dopo aver letto molti post ho deciso di impostare RStudio per utilizzare la codifica UTF-8. Con un solo livello di file le cose funzionano alla grande. Ad esempio, posso -independently- maglia e poi Pandoc in Word i seguenti 2 file RMD:

Parent - SAVED WITH utf-8 encoding in RStudio 
======================================================== 

u with an accent: "ú" SAVED WITH utf-8 encoding in RStudio 

```{r fig.width=7, fig.height=6} 
plot(cars, main='Parent ú') 
``` 

e separatamente:

Child - SAVED WITH utf-8 encoding in RStudio 
======================================================== 

u with an accent: "ú" Child file 

```{r fig.width=7, fig.height=6} 
plot(cars, main='One File Child ú') 
``` 

e ottengo entrambi 2 prevues perfette in RStudio e 2 Parola perfetta documenti da pandoc.

Il problema si presenta quando provo a chiamare la parte secondaria dalla parte padre.In altre parole, se si aggiunge al primo file le seguenti righe:

```{r CallChild, child='TestUTFChild.Rmd'} 

``` 

poi tutti gli accenti del file secondario diventano incomprensibili come se il UTF-8 è stato interpretato come beeing ISO 8859-1. Pandoc interrompe la lettura del file, lamentandosi del fatto che non è utf-8.

Se qualcuno mi potrebbe punto nella giusta direzione, sia:

1. Con pandoc non trovare le trame se rimango con ISO 8859-1. Ho anche provato Windows-1252 perché è quello che ho visto nello sessionInfo, ma il risultato è lo stesso.

o

2. Con la chiamata al file secondario, se UTF-8 è la strada da percorrere. Ho cercato un modo per impostare un'opzione per forzare la codifica nella chiamata figlio, ma non l'ho ancora trovata.

Grazie mille!

+0

sembra un errore in 'knitr'; Lo esaminerò –

+0

@Yihui Grazie! Sono nuovo di R, markdown e knitr, ma sono già stupito dall'energia della comunità e dal tuo contributo ad esso! – ap53

risposta

3

Penso che questo problema dovrebbe essere risolto nell'ultima versione di sviluppo. Vedere le istruzioni in the development repository su come installare la versione di sviluppo. Quindi dovresti essere in grado di scegliere UTF-8 in RStudio e ottenere un file di output con codifica UTF-8.

Nel caso in cui qualcuno fosse interessato ai dettagli cruenti: il motivo dell'errore precedente era che scrivevo l'output figlio con la codifica che hai fornito, ma non lo leggevo con la stessa codifica. Ora evito semplicemente di scrivere file di output per child documents.

+0

Funziona alla grande !! Grazie ancora! – ap53