Documentos dinâmicos

odfWeave

Prof. Walmes Zeviani

2018-03-15

Justificativa:

Objetivos

odfWeave

Detalhes

odfWeave: Sweave processing of Open Document Format (ODF) files

Open Document Format

Extensão Tipo de documento
.odt Documento de texto
.ods Planilha eletrônica
.odp Apresentação de slides
.odb Banco de dados
.odg Desenho vetorial
.odf Equação matemática

Anatomia do pacote odfWeave

library(odfWeave)
## Loading required package: lattice
## Loading required package: XML
## Loading required package: methods
ls("package:odfWeave")
##  [1] "adjustImageSize"     "announce"            "getImageDefs"       
##  [4] "getStyleDefs"        "getStyles"           "listString"         
##  [7] "matrixPaste"         "odfCat"              "odfFigureCancel"    
## [10] "odfFigureCaption"    "odfInsertPlot"       "odfItemize"         
## [13] "odfPageBreak"        "odfSetPageStyle"     "odfTable"           
## [16] "odfTableCaption"     "odfTable.character"  "odfTable.data.frame"
## [19] "odfTable.matrix"     "odfTable.numeric"    "odfTmpDir"          
## [22] "odfTranslate"        "odfWeave"            "odfWeaveControl"    
## [25] "pkgVersions"         "RweaveOdf"           "RweaveOdfSetup"     
## [28] "setImageDefs"        "setStyleDefs"        "setStyles"          
## [31] "tableStyles"
# Código XML de uma tabela.
odfTable(iris[1:3, 1:2])
## 
## <table:table table:name="Table481"  table:style-name="RTable1" >
##   <table:table-column table:number-columns-repeated="3"/>
##    <table:table-header-rows>
## 
##     <table:table-row>
## 
##     <table:table-cell  table:style-name="lowerBorder" office:value-type="string">
##       <text:p  text:style-name="ArialCenteredBold" ></text:p>
##     </table:table-cell>
##     <table:table-cell  table:style-name="lowerBorder" office:value-type="string">
##       <text:p  text:style-name="ArialCenteredBold" >Sepal.Length</text:p>
##     </table:table-cell>
##     <table:table-cell  table:style-name="lowerBorder" office:value-type="string">
##       <text:p  text:style-name="ArialCenteredBold" >Sepal.Width</text:p>
##     </table:table-cell>
##     </table:table-row>
##    </table:table-header-rows>
## <table:table-row>
##  <table:table-cell office:value-type="string"   table:style-name="noBorder"  >
##        <text:p text:style-name="ArialCentered" >1</text:p>
##   </table:table-cell>
## 
##  
##  <table:table-cell office:value-type="string"   table:style-name="noBorder"  >
##        <text:p text:style-name="ArialCentered" >5.1</text:p>
##   </table:table-cell>
## 
##  
##  <table:table-cell office:value-type="string"   table:style-name="noBorder"  >
##        <text:p text:style-name="ArialCentered" >3.5</text:p>
##   </table:table-cell>
## 
## </table:table-row>
##  <table:table-row>
##  <table:table-cell office:value-type="string"   table:style-name="noBorder"  >
##        <text:p text:style-name="ArialCentered" >2</text:p>
##   </table:table-cell>
## 
##  
##  <table:table-cell office:value-type="string"   table:style-name="noBorder"  >
##        <text:p text:style-name="ArialCentered" >4.9</text:p>
##   </table:table-cell>
## 
##  
##  <table:table-cell office:value-type="string"   table:style-name="noBorder"  >
##        <text:p text:style-name="ArialCentered" >3.0</text:p>
##   </table:table-cell>
## 
## </table:table-row>
##  <table:table-row>
##  <table:table-cell office:value-type="string"   table:style-name="noBorder"  >
##        <text:p text:style-name="ArialCentered" >3</text:p>
##   </table:table-cell>
## 
##  
##  <table:table-cell office:value-type="string"   table:style-name="noBorder"  >
##        <text:p text:style-name="ArialCentered" >4.7</text:p>
##   </table:table-cell>
## 
##  
##  <table:table-cell office:value-type="string"   table:style-name="noBorder"  >
##        <text:p text:style-name="ArialCentered" >3.2</text:p>
##   </table:table-cell>
## 
## </table:table-row>
## 
## </table:table>
# Código XML de uma lista de tópicos
odfItemize(colors()[1:3])
##      <text:list text:style-name="Rbullet" > 
##      <text:list-item>
##       <text:p text:style-name="RbulletParagraph" > white        </text:p>
##      </text:list-item>
##      <text:list-item>
##       <text:p text:style-name="RbulletParagraph" > aliceblue    </text:p>
##      </text:list-item>
##      <text:list-item>
##       <text:p text:style-name="RbulletParagraph" > antiquewhite </text:p>
##      </text:list-item>
##     </text:list>
# Para ver as definições padrão do pacote para o documento.
getImageDefs()
## $type
## [1] "png"
## 
## $device
## [1] "png"
## 
## $plotHeight
## [1] 480
## 
## $plotWidth
## [1] 480
## 
## $dispHeight
## [1] 5
## 
## $dispWidth
## [1] 5
## 
## $args
## list()
getStyleDefs()
## $ArialCenteredBold
## $ArialCenteredBold$type
## [1] "Paragraph"
## 
## $ArialCenteredBold$parentStyleName
## [1] ""
## 
## $ArialCenteredBold$textAlign
## [1] "center"
## 
## $ArialCenteredBold$fontName
## [1] "Arial"
## 
## $ArialCenteredBold$fontSize
## [1] "12pt"
## 
## $ArialCenteredBold$fontType
## [1] "bold"
## 
## $ArialCenteredBold$fontColor
## [1] "#000000"
## 
## 
## $ArialNormal
## $ArialNormal$type
## [1] "Paragraph"
## 
## $ArialNormal$parentStyleName
## [1] ""
## 
## $ArialNormal$textAlign
## [1] "left"
## 
## $ArialNormal$fontName
## [1] "Arial"
## 
## $ArialNormal$fontSize
## [1] "12pt"
## 
## $ArialNormal$fontType
## [1] "normal"
## 
## $ArialNormal$fontColor
## [1] "#000000"
## 
## 
## $ArialCentered
## $ArialCentered$type
## [1] "Paragraph"
## 
## $ArialCentered$parentStyleName
## [1] ""
## 
## $ArialCentered$textAlign
## [1] "center"
## 
## $ArialCentered$fontName
## [1] "Arial"
## 
## $ArialCentered$fontSize
## [1] "12pt"
## 
## $ArialCentered$fontType
## [1] "normal"
## 
## $ArialCentered$fontColor
## [1] "#000000"
## 
## 
## $ArialHighlight
## $ArialHighlight$type
## [1] "Paragraph"
## 
## $ArialHighlight$parentStyleName
## [1] ""
## 
## $ArialHighlight$textAlign
## [1] "center"
## 
## $ArialHighlight$fontName
## [1] "Arial"
## 
## $ArialHighlight$fontSize
## [1] "12pt"
## 
## $ArialHighlight$fontType
## [1] "bold"
## 
## $ArialHighlight$fontColor
## [1] "#ff0000"
## 
## 
## $ttBlue
## $ttBlue$type
## [1] "Paragraph"
## 
## $ttBlue$parentStyleName
## [1] ""
## 
## $ttBlue$textAlign
## [1] "left"
## 
## $ttBlue$fontName
## [1] "Courier New"
## 
## $ttBlue$fontSize
## [1] "10pt"
## 
## $ttBlue$fontType
## [1] "normal"
## 
## $ttBlue$fontColor
## [1] "#000080"
## 
## 
## $ttRed
## $ttRed$type
## [1] "Paragraph"
## 
## $ttRed$parentStyleName
## [1] ""
## 
## $ttRed$textAlign
## [1] "left"
## 
## $ttRed$fontName
## [1] "Courier New"
## 
## $ttRed$fontSize
## [1] "10pt"
## 
## $ttRed$fontType
## [1] "normal"
## 
## $ttRed$fontColor
## [1] "#800000"
## 
## 
## $noBorder
## $noBorder$type
## [1] "Table Cell"
## 
## $noBorder$backgroundColor
## [1] "transparent"
## 
## $noBorder$padding
## [1] "0.0382in"
## 
## $noBorder$verticalAlign
## [1] "automatic"
## 
## $noBorder$padding
## [1] "0.0382in"
## 
## $noBorder$leftBorder
## [1] "none"
## 
## $noBorder$rightBorder
## [1] "none"
## 
## $noBorder$topBorder
## [1] "none"
## 
## $noBorder$bottomBorder
## [1] "none"
## 
## 
## $lowerBorder
## $lowerBorder$type
## [1] "Table Cell"
## 
## $lowerBorder$backgroundColor
## [1] "#FFFFFF"
## 
## $lowerBorder$padding
## [1] "0.0382in"
## 
## $lowerBorder$verticalAlign
## [1] "automatic"
## 
## $lowerBorder$leftBorder
## [1] "none"
## 
## $lowerBorder$rightBorder
## [1] "none"
## 
## $lowerBorder$topBorder
## [1] "none"
## 
## $lowerBorder$bottomBorder
## [1] "0.0007in solid #000000"
## 
## 
## $RTable1
## $RTable1$type
## [1] "Table"
## 
## $RTable1$marginLeft
## [1] "0.05in"
## 
## $RTable1$marginRight
## [1] "0.05in"
## 
## $RTable1$marginTop
## [1] "0.05in"
## 
## $RTable1$marginBottom
## [1] "0.05in"
## 
## $RTable1$align
## [1] "margins"
## 
## 
## $Rbullet
## $Rbullet$type
## [1] "Bullet List"
## 
## $Rbullet$paraStyle
## [1] "ArialNormal"
## 
## $Rbullet$bulletChar
## [1] "●"
## 
## $Rbullet$spaceBefore
## [1] "0.25in"
## 
## $Rbullet$minLabelWidth
## [1] "0.25in"
## 
## 
## $basicFigFrame
## $basicFigFrame$type
## [1] "Figure Frame"
## 
## $basicFigFrame$verticalPosition
## [1] "from-top"
## 
## $basicFigFrame$verticalRelates
## [1] "paragraph"
## 
## $basicFigFrame$horizontalPosition
## [1] "center"
## 
## $basicFigFrame$horizontalRelates
## [1] "paragraph"
## 
## $basicFigFrame$frameAnchor
## [1] "paragraph"
## 
## $basicFigFrame$imageAnchor
## [1] "paragraph"
## 
## $basicFigFrame$wrap
## [1] "none"
## 
## $basicFigFrame$backgroundColor
## [1] "transparent"
## 
## $basicFigFrame$padding
## [1] "0.02in"
## 
## $basicFigFrame$leftBorder
## [1] "0.0008in solid #ffffff"
## 
## $basicFigFrame$rightBorder
## [1] "0.0008in solid #ffffff"
## 
## $basicFigFrame$topBorder
## [1] "0.0008in solid #ffffff"
## 
## $basicFigFrame$bottomBorder
## [1] "0.0008in solid #ffffff"
## 
## 
## $RlandscapePage
## $RlandscapePage$type
## [1] "Page"
## 
## $RlandscapePage$printOrientation
## [1] "landscape"
## 
## $RlandscapePage$numFormat
## [1] "1"
## 
## $RlandscapePage$pageWidth
## [1] "11in"
## 
## $RlandscapePage$pageHeight
## [1] "8.5in"
## 
## $RlandscapePage$marginLeft
## [1] "1.25in"
## 
## $RlandscapePage$marginRight
## [1] "1.25in"
## 
## $RlandscapePage$marginTop
## [1] "1in"
## 
## $RlandscapePage$marginBottom
## [1] "1in"
getStyles()
## $paragraph
## [1] "ArialNormal"
## 
## $input
## [1] "ttRed"
## 
## $output
## [1] "ttBlue"
## 
## $table
## [1] "RTable1"
## 
## $cell
## [1] "noBorder"
## 
## $header
## [1] "lowerBorder"
## 
## $cellText
## [1] "ArialCentered"
## 
## $headerText
## [1] "ArialCenteredBold"
## 
## $bullet
## [1] "Rbullet"
## 
## $figureFrame
## [1] "basicFigFrame"
## 
## $page
## [1] "RlandscapePage"
# Para modificar as definições.
setImageDefs()
setStyleDefs()
setStyles()

O processo

  1. Escrever um documento odf com fragmentos de código em blocos (<<>>= ... @) ou em linha (\Sexpr{...}).
  2. Compilar o documento para o código ser avaliado.
library(odfWeave)

# Nome dos arquivos.
inFile <- "fonte.odt"
outFile <- "resultado.odt"

# Modifique as opções que preferir.
imageDefs <- getImageDefs()
imageDefs$dispWidth <- 4.5
imageDefs$dispHeight<- 4.5
setImageDefs(imageDefs)

# Parâmetros obrigatórios.
odfWeave(file = inFile,
         dest = outFile)

# Todos os parâmetros.
odfWeave(file = inFile,
         dest = outFile,
         workDir = odfTmpDir(),
         control = odfWeaveControl())

Praticando com odfWeave

MOSTRAR COMO FAZER

Dicas para maior produtividade

Próxima aula