--- title: "Example 17: Code Insertion" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Example 17: Code Insertion} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` The **reporter** package allows users to insert code directly with `report_options(allow_code = TRUE)`. This feature is currently available only for RTF and HTML outputs. ### Outline{#top} * [Insert RTF Code](#rtf) * [Insert HTML Code](#html) ## Insert RTF Code{#rtf} The **reporter** package let's you insert RTF code in data sets, titles, footnotes, headers, and footers. Let's prepare a data set with RTF code: ```{r eval=FALSE, echo=TRUE} df <- read.table(header = TRUE, text = ' var label A B "ampg" "\\li360 N" "19" "13" "ampg" "\\li360 Mean" "18.8" "22.0 (4.9)" "ampg" "\\li360 Median" "16.4{\\sub mm}" "21.4{\\super 2}" "ampg" "\\li360 {\\cf12 Q1 - Q3}" "15.1 - 21.2" "19.2 - 22.8" "ampg" "\\li360 Range" "{\\cf2 10.4 - 33.9}" "14.7 - 32.4" "cyl" "\\li360 8\\line Cylinder" "\\ul 10 ( 52.6%) \\ul0" "4 ( 30.8%)" "cyl" "\\li360 6\\line {\\cf11 Cylinder and more perhaps more}" "4 ( 21.1%)" "3 ( 23.1%)" "cyl" "\\li360 4\\line Cylinder" "\\ul 5 ( 26.3%) \\ul0" "6 ( 46.2%)"') ``` Example image A Observe that there are several RTF formatting codes in the data set: * Indentation with `\\li` * Subscript and Superscript with `\\sub` and `\\super` * Coloring with `\\cf` * Underline with `\\ul` Now let's do some more manipulation of the RTF in the **reporter** code: ```{r eval=FALSE, echo=TRUE} fp <- file.path(tempdir(), "example17.rtf") # Create table tbl <- create_table(df, first_row_blank = TRUE, borders = c("all")) |> stub(c("var", "label"), width = .8) |> define(var, blank_after = TRUE, label_row = TRUE, format = c(ampg = "\\i Here is a italic label \\i0.", cyl = "\\ul Under line label \\ul0")) |> define(A, label = "\\shad {{\\cf6 Group A}} {common::supsc('2')}\\shad0", align = "center", n = 19) |> define(B, label = "\\outl Group B \\outl0", align = "center", n = 13) |> footnotes("\\i\\fs14 * Italic Small Table Footnote \\fs18") # Create report and add content rpt <- create_report(fp, orientation = "portrait", output_type = "RTF", font = "Times") |> report_options(allow_code = TRUE) |> page_header(left = "\\strike Strikethrough header \\strike0", right = "Study: Cars") |> titles("\\b\\i {{\\highlight7 This is yellow italic highlight}} \\b0\\i0", "\\fs0\\fs28 {{\\cf2 This is a blue big title}} \\fs18") |> add_content(tbl) |> footnotes("\\i\\fs14 * Italic Small Report Footnote \\fs18") |> page_footer(left = "Left", center = "Confidential", right = "Page [pg] of [tpg]") ``` Note that in the **reporter** package, curly braces are normally reserved for the glue replacement feature. Therefore, if you want to use curly braces as part of your RTF code insertion, they must be doubled, i.e.`{{\\cf6 Group A}}`. The single curly braces will still be available as glue replacements. Here is the result: Example image A As seen above, all the RTF code insertion worked as expected: * Header is formatted with strike through. * Titles are formatted with yellow highlight, italic, bold, blue color, and bigger font size. * Column labels are formatted with red, shadow, and outline. * Row labels are formatted with italic and underline. * Subscript and superscript are displayed. * Data values are formatted with blue, purple, underline, and indentation. * Footnotes are formatted with italic and smaller font size. ### RTF Color Table The above example contains several references to the RTF color table. Here is the complete color table: * `\cf1` : Black * `\cf2` : Blue * `\cf3` : Cyan * `\cf4` : Lime Green * `\cf5` : Magenta * `\cf6` : Red * `\cf7` : Yellow * `\cf8` : White * `\cf9` : Navy Blue * `\cf10` : Teal * `\cf11` : Green * `\cf12` : Purple * `\cf13` : Maroon/ Dark Red * `\cf14` : Olive * `\cf15` : Gray * `\cf16` : Light Gray The above color references are the same as those used by SAS ODS RTF. [top](#top) ## Insert HTML Code{#html} The **reporter** package also allows you insert HTML code in data sets, titles, footnotes, headers, and footers. Let's prepare a data set with HTML code: Example image A Now let's do some more manipulation of the HTML in the **reporter** code: ```{r eval=FALSE, echo=TRUE} fp <- file.path(tempdir(), "example17b.html") # Create table tbl <- create_table(dat, borders = "outside") %>% titles('

Blue 18 px Title: Page [pg] of [tpg]

', "Bold table title") %>% footnotes("Italic footnote: Page [pg] of [tpg]", "Emphasize Super") %>% define(var, label = "Name") %>% define(A, label = "Treatment A mg2") %>% define(B, label = "Treatment B mg2") # Create Report rpt <- create_report(fp, output_type = "html", font = fnt, font_size = fsz, orientation = "landscape") %>% report_options(allow_code = TRUE) %>% set_margins(top = 1, bottom = 1) %>% add_content(tbl) %>% add_content(tbl) %>% titles("Mark Title: Page [pg] of [tpg]") %>% footnotes("Small footnote: Page [pg] of [tpg]", borders = "none") %>% page_header('Code Style Page [pg] of [tpg]', right = 'Strikethrough') %>% page_footer("Footer: Page [pg] of [tpg]", right = "Footer: Page [pg] of [tpg]") res <- write_report(rpt) ``` Example image A As seen above, all the HTML code insertion worked as expected: * Headers are formatted with red code style and strike through. * Titles are formatted with yellow highlight, blue 18px, and bold. * Column headers are formatted with superscript. * Data values are formatted with underline, indentation, color, bold, and background color. * Footnotes are formatted with italic, superscript, and smaller font size. * Footers are formatted with subscript. [top](#top) Next: [Example 18: Report Options](reporter-report_options.html)