R fait du LaTeX     Franck ARNAUDGroupe dUtilisateurs de R Mercredi 8 février 2011
R & LaTeX – Principe général●Intérêt : automatiser des opérations répétitives (cahier devariantes, simulation, évaluation ...
R & LaTeX – Exemple
R et LaTeX – Schéma densembleSchéma en trois temps :● ● R crée les objets individuels (tableaux, graphiques, textes)    Ou...
R & LateX – Créer un graphiqueExport de graphiques au format eps :●postscript(file="fig1.eps",horizontal=TRUE,width=8,heig...
R & LateX – Créer un tableauFonction latex du package MASS●Mais ça peut sécrire à la main, si on veut personnaliser :●late...
R et LaTeX – Exemple de tableau●Exemple ad hoc :tab<-matrix(1:8,ncol=4)colnames(tab)<-paste("Col",1:ncol(tab),sep="")rowna...
R et LaTeX – Adapter du texte (1)Le message → fichier pattern.txt :●  Lindividu %@IDNOM@% a débuté son activité lannée %@A...
R et LaTeX – Adapter du texte (2)Transformation du message :●transformation<-function(message_init,id_correspondance){    ...
R et LaTeX – Adapter du texte (3)●La table de correspondance :correspondance<-read.table(file=stdin(),sep=";",header=TRUE)...
R & LaTeX – Structure globaleOn commence par créer tous les tableaux et graphiques :●pps<-function(file) postscript(file=f...
R & LaTeX - FinalLe fichier compilé se compose, outre le préambule, de :begin{document}input{global.tex}end{document}Il ne...
R & LaTeX – Ze cherry on ze cake●   R lance la compilation LaTeX :     ● Fichier bat :        set path=C:/Progra~1/MiKTeX~...
R & LaTeX – Zi endMerci de votre attention          Des questions ?
Upcoming SlideShare
Loading in...5
×

R fait du la tex

3,684

Published on

Faire du latex sous R sans Sweave, par Franck Arnaud
Visit http://fltaur.wordpress.com/

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,684
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
21
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

R fait du la tex

  1. 1. R fait du LaTeX Franck ARNAUDGroupe dUtilisateurs de R Mercredi 8 février 2011
  2. 2. R & LaTeX – Principe général●Intérêt : automatiser des opérations répétitives (cahier devariantes, simulation, évaluation de modèles) → Utile dinterfacer R et LaTeX.Hors-champ : création automatique de discours●Méthode :●● Les analyses statistiques sont lancées dans R● Les résultats sont exportés sous forme de tableaux, graphiques, et de textes● LaTeX les compile → PDF
  3. 3. R & LaTeX – Exemple
  4. 4. R et LaTeX – Schéma densembleSchéma en trois temps :● ● R crée les objets individuels (tableaux, graphiques, textes) Output : fichiers eps, fichiers tex ● R crée le code LaTeX qui agence les objets individuels Output : fichier(s) tex, qui appelle les précédents ● Puis on compile le code LaTeX Output : fichier pdfLa cerise sur le gâteau :● ● R lance la compilation et laffichage du PDF → pénible une fois
  5. 5. R & LateX – Créer un graphiqueExport de graphiques au format eps :●postscript(file="fig1.eps",horizontal=TRUE,width=8,height=5)graphe(individu1)dev.off()Nhésitez pas à utiliser les possibilités dagence de graphes :●● Simple : par(mrow=c(1,2))● Plus complexe : layout(matrix=c(1,1,2,1,1,3,4,5,6),3,3,byrow=TRUE)
  6. 6. R & LateX – Créer un tableauFonction latex du package MASS●Mais ça peut sécrire à la main, si on veut personnaliser :●latextab<-function(tab,file){ sink(file) cat("begin{table}[!htbp]begin{center}") cat("begin{tabular}{c|",rep("c",ncol(tab)),"}n",sep="") cat(NULL,colnames(tab),sep=" & ") cat(" nhline") fff<-function(x) paste( paste(x,collapse=" & "), "") cat(apply(cbind(rownames(tab),tab),1,fff),sep="n") cat("hlinenend{tabular}end{center}end{table}n") sink()}
  7. 7. R et LaTeX – Exemple de tableau●Exemple ad hoc :tab<-matrix(1:8,ncol=4)colnames(tab)<-paste("Col",1:ncol(tab),sep="")rownames(tab)<-paste("Ind",1:nrow(tab),sep="")latextab(tab,file="test.tex")●Output : le fichier test.texbegin{table}[!htbp]begin{center}begin{tabular}{c|cccc} & Col1 & Col2 & Col3 & Col4hlineInd1 & 1 & 3 & 5 & 7 Ind2 & 2 & 4 & 6 & 8 hlineend{tabular}end{center}end{table}●On peut ajouter des captions, des labels, etc.
  8. 8. R et LaTeX – Adapter du texte (1)Le message → fichier pattern.txt :● Lindividu %@IDNOM@% a débuté son activité lannée %@ANDEB@%. Illiquide sa carrière lannée %@ANFIN@% avec %@NTVAL@% trimestresvalidés dont %@NTCOT@% trimestres cotisés. La première année, sa pensionvaut %@NIVPENS@%, ce qui représente %@TXREMPLDERN@% de sondernier salaire.Ensuite, on remplace chaque identifiant par une valeur●●On peut enrichir avec des comportements particuliers →écriture totalement automatique de rapports
  9. 9. R et LaTeX – Adapter du texte (2)Transformation du message :●transformation<-function(message_init,id_correspondance){ message_trans<-message_init debut<-gregexpr(pattern="%@",message_init)[[1]] fin<-gregexpr(pattern="@%",message_init)[[1]] n<-length(debut) for (i in seq_along(debut)) { catch<-substr(message_init,debut[i]+2,fin[i]-1) remplac<-as.character(correspondance[3,catch]) message_trans<-sub(pattern=paste("%@",catch,"@%",sep=""),rep=remplac,x=message_trans) } return(message_trans)}Fonction globale :●R2LaTeX_text<-function(file_message,id_correspondance,file){ message<-readLines(file_message) sink(file) cat(transformation(message_init=message, id_correspondance=id_correspondance)) sink()}
  10. 10. R et LaTeX – Adapter du texte (3)●La table de correspondance :correspondance<-read.table(file=stdin(),sep=";",header=TRUE)IDNOM;SEXE;ANDEB;ANFIN;NTVAL;NTCOT;NIVPENS;TXREMPLDERN;NBENFHerbert Léonard;H;1965;2005;165;160;1850;60%;NAPatrick Juvet;H;1972;2008;142;127;1250;65%;2Wanda Maria Ribeiro Furtado Tavares deVasconcelos;F;1982;2018;180;150;1800;50%;5transformation<-function(message_init,id_correspondance)●On applique la fonction à un individu :id_indiv<-3R2LaTeX_text(file_message="pattern.txt",id_correspondance=id_indiv,file=paste("Indiv",id_indiv,"resume.tex",sep=""))●Output :Lindividu Wanda Maria Ribeiro Furtado Tavares de Vasconcelos a débuté sonactivité lannée 1982. Il liquide sa carrière lannée 2018 avec 180 trimestresvalidés dont 150 trimestres cotisés. La première année, sa pension vaut 1800,ce qui représente 50% de son dernier salaire.
  11. 11. R & LaTeX – Structure globaleOn commence par créer tous les tableaux et graphiques :●pps<-function(file) postscript(file=file,horizontal=TRUE,width=8,height=5)for (i in 1:n_indiv){ individu<-get(paste("indiv",i,sep="") pps(file=paste("fig",i,".eps",sep="")) graphe(individu) dev.off() latextab(tableau(individu),file=paste("tab",i,".tex",sep=""))}Puis on insère tout ça dans un fichier global :●sink("global.tex")for (i in 1:n_indiv){ cat("section*{Résumé de lindividu ",i,"}n") cat("includegraphics{fig",i,"}n",sep="") cat("input{tab",i,"}n",sep="") cat("clearpagen")}sink()
  12. 12. R & LaTeX - FinalLe fichier compilé se compose, outre le préambule, de :begin{document}input{global.tex}end{document}Il nest pas inutile de dater les fichier de sortie ou les tableaux :temps<-Sys.time() #class(temps);?format.POSIXctjour<-format(temps,"%A %d %B %Y")heure<-format(temps,"%Hh%Mm%Ss")cat("Tableau créé le",jour,"à",heure)
  13. 13. R & LaTeX – Ze cherry on ze cake● R lance la compilation LaTeX : ● Fichier bat : set path=C:/Progra~1/MiKTeX~1.9/miktex/bin;C:Progra~1gsgs8.70bin latex --src -interaction=nonstopmode -include-directory "F:PretImmoLaTeX" %1.tex dvips -P pdf "%1.dvi" gswin32c.exe -sPAPERSIZE=a4 -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile="%1.pdf" -c save pop -f "%1.ps" ● Exécution du fichier bat : system(command=paste("compil.bat",fichier))● R ouvre Acrobat Reader : system(paste("C:/Progra~1/Adobe/Reader~1.0/Reader/AcroRd32.exe",fichier,".pdf",sep=""),wait=FALSE)● Difficulté : adapter les chemins à linstallation
  14. 14. R & LaTeX – Zi endMerci de votre attention Des questions ?
  1. Gostou de algum slide específico?

    Recortar slides é uma maneira fácil de colecionar informações para acessar mais tarde.

×