2013-03-04 15 views
5

In concomitanza con il tentativo di trovare una soluzione per me in relazione a this question, mi ritrovo immerso nel tentativo di scrivere un markup Rd valido. Quello che voglio è aggiungere una sezione denominata Raw Function Code e inserire il codice della funzione sotto di essa. Ho raggiunto un successo limitato in questo senso scrivendo uno script per modificare i file da includere RdCome posso mantenere lo spazio bianco iniziale in una riga quando si scrive la documentazione Rd?

\section{Raw Function Code}{\code{ 
# some piece of R script will eventally provide this part of the text 
}} 

Tuttavia, anche se manualmente distanziate testo nel file .rd (utilizzando sia gli spazi o le schede), il lo spazio bianco iniziale di ogni linea sembra essersi spogliato lasciando una funzione dall'aspetto indesiderato. Ho notato che se fornisco un carattere di partenza prima dello spazio bianco, lo spazio bianco viene mantenuto. Tuttavia, non volevo fornire un carattere di partenza perché mi piacerebbe che le persone potessero copiare e incollare direttamente dal PDF prodotto.

Ho esaminato parseRd e so che ci sono tre tipi di testo come LaTeX- , simile a R e letterale. Ho provato a inserire il mio codice funzione in \ code e in \ verb e nessuno dei due ha prodotto i risultati desiderati. Cosa posso fare per mantenere il mio spazio bianco iniziale?

+0

Hai provato '\ begin {verbatim} ... \ end {verbatim}' –

+0

\ begin e \ end sono macro sconosciute quando si utilizza R CMD Rd2pdf. Forse devo usare Rdconv e quindi aggiungere il mio codice extra in latex piuttosto che in Rd. Sembra strano che non ci sia un modo per aggiungere i rientri al codice. – russellpierce

risposta

1

Il \section macro contiene tipo LaTeX di testo, ma come si vuole scrivere il codice, è possibile utilizzare \synopsis macro, vale a dire

\synopsis 
# some piece of R script will eventally provide this part of the text 
} 

C'è un problema con questo, però; non puoi dare un nome a questa sezione, viene automaticamente indicata come un'altra sezione di utilizzo. La stessa cosa potrebbe essere ottenuta usando la macro \examples, ma ora il nome della sezione è Esempi, che è probabilmente ancora più dubbio (per non parlare del fatto che probabilmente hai già la sezione Esempi).

+0

Wow è frustrante. Le macro '\ examples' e' \ usage' sono esattamente ciò che voglio. Sono nella modalità R-like. '\ synopsis' è in modalità verbatim che è realizzabile ma sotto-par. Sembra che \ Sexpr dovrebbe essere in grado di fornire quello che voglio, ma la sezione? == qualche volta ... quindi chissà cosa significa. – russellpierce

+1

Sembra che "\ Sexpr" possa funzionare all'interno della sezione e con le opzioni eval = FALSE, results = rd e echo = TRUE farebbe esattamente quello che vuoi, ma potrei farlo funzionare correttamente ... –

+0

Dovrebbe funzionare in teoria. In pratica, non riesco a farlo funzionare. Sono incappato nelle opzioni "stage" e "results" ma non ho trovato una combinazione affidabile. Non posso dire se stai dicendo che eri o non sei riuscito a farlo funzionare. Se lo fosse, per favore condividi il codice .Rd come risposta. – russellpierce

1

Non è possibile senza modificare le sezioni di utilizzo o esempi del codice Rd. Vedi la risposta di Hemmo per una soluzione utilizzabile. Produce testo in modalità verbatim che è sub-ottimale, ma molto meglio di niente.

(Questa risposta è impostata comunità Wiki nel caso in cui questo stato di cose cambi. Questo risultato è aggiornata al R-2.15.1)

0

Se si desidera un modo super hacky per farlo, è possibile utilizzare \Sexpr per rendere zero caratteri di larghezza e aggiungere gli spazi tra di loro:

#' first line \cr 
#'\Sexpr{"\u200B"} \Sexpr{"\u200B"} \Sexpr{"\u200B"} \Sexpr{"\u200B"} indented line 

un avvertimento però - il pacchetto costruirà bene, ma R CMD CONTROLLO lancerà un attacco.