├── .github
├── .gitignore
└── workflows
│ ├── pkgdown.yaml
│ └── R-CMD-check.yaml
├── vignettes
├── .gitignore
├── titles.xlsx
├── Validate.pdf
├── atorus_logo.png
├── t14_4_01.Rdata
├── table10_img1.png
├── table11_img1.png
├── table12_img1.png
├── table13_img1.png
├── table14_img1.png
├── table15_img1.png
├── table16_img1.png
├── table1_img1.png
├── table1_img2.png
├── table2_img1.png
├── table3_img1.png
├── table4_img1.png
├── table5_img1.png
├── table6_img1.png
├── table6_img2.png
├── table7_img1.png
├── table8_img1.png
├── table9_img1.png
├── Validation
│ ├── vur_auto.Rds
│ ├── Test_Case_Code
│ │ ├── output
│ │ │ ├── test_10.RData
│ │ │ ├── test_11.RData
│ │ │ ├── test_23.RData
│ │ │ ├── test_24.RData
│ │ │ ├── test_25.RData
│ │ │ ├── test_26.RData
│ │ │ ├── test_27.RData
│ │ │ ├── test_28.RData
│ │ │ ├── test_29.RData
│ │ │ ├── test_3.RData
│ │ │ ├── test_30.RData
│ │ │ ├── test_31.RData
│ │ │ ├── test_32.RData
│ │ │ ├── test_33.RData
│ │ │ ├── test_34.RData
│ │ │ ├── test_35.RData
│ │ │ ├── test_36.RData
│ │ │ ├── test_37.RData
│ │ │ ├── test_38.RData
│ │ │ ├── test_39.RData
│ │ │ ├── test_4.RData
│ │ │ ├── test_40.RData
│ │ │ ├── test_5.RData
│ │ │ ├── test_6.RData
│ │ │ ├── test_7.RData
│ │ │ ├── test_8.RData
│ │ │ ├── test_9.RData
│ │ │ ├── ht_test_50.RData
│ │ │ ├── ht_test_51.RData
│ │ │ ├── ht_test_52.RData
│ │ │ ├── view_test_41.RData
│ │ │ ├── view_test_42.RData
│ │ │ ├── view_test_43.RData
│ │ │ ├── view_test_44.RData
│ │ │ ├── view_test_45.RData
│ │ │ ├── view_test_46.RData
│ │ │ ├── test_6.rtf
│ │ │ ├── test_54.rtf
│ │ │ ├── test_3.rtf
│ │ │ ├── test_11.rtf
│ │ │ ├── test_4.rtf
│ │ │ ├── test_5.rtf
│ │ │ ├── test_7.rtf
│ │ │ ├── test_8.rtf
│ │ │ ├── test_9.rtf
│ │ │ ├── test_1.rtf
│ │ │ ├── test_49.rtf
│ │ │ ├── test_52.rtf
│ │ │ ├── test_53.rtf
│ │ │ ├── test_51.rtf
│ │ │ ├── test_10.rtf
│ │ │ ├── test_47.rtf
│ │ │ └── test_48.rtf
│ │ └── input
│ │ │ └── titles_footnotes.xlsx
│ ├── val_script_calls.R
│ ├── Specifications
│ │ └── specification.Rmd
│ └── app.R
├── header.tex
├── file_path_example.r
├── specs.csv
└── roxy_block_details.R
├── LICENSE
├── docs
├── logo.png
├── favicon.ico
├── favicon-16x16.png
├── favicon-32x32.png
├── apple-touch-icon.png
├── apple-touch-icon-60x60.png
├── apple-touch-icon-76x76.png
├── articles
│ ├── table10_img1.png
│ ├── table11_img1.png
│ ├── table12_img1.png
│ ├── table13_img1.png
│ ├── table14_img1.png
│ ├── table15_img1.png
│ ├── table16_img1.png
│ ├── table1_img1.png
│ ├── table1_img2.png
│ ├── table2_img1.png
│ ├── table3_img1.png
│ ├── table4_img1.png
│ ├── table5_img1.png
│ ├── table6_img1.png
│ ├── table6_img2.png
│ ├── table7_img1.png
│ ├── table8_img1.png
│ ├── table9_img1.png
│ ├── Validate_files
│ │ ├── kePrint-0.0.1
│ │ │ └── kePrint.js
│ │ └── header-attrs-2.7
│ │ │ └── header-attrs.js
│ ├── pharmaRTF_files
│ │ └── header-attrs-2.7
│ │ │ └── header-attrs.js
│ ├── tf_from_file_files
│ │ └── header-attrs-2.7
│ │ │ └── header-attrs.js
│ ├── advanced_usage_files
│ │ └── header-attrs-2.7
│ │ │ └── header-attrs.js
│ ├── huxtable_tips_files
│ │ └── header-attrs-2.7
│ │ │ └── header-attrs.js
│ └── Validation
│ │ ├── Test_Cases
│ │ └── test_cases_files
│ │ │ └── header-attrs-2.7
│ │ │ └── header-attrs.js
│ │ └── Specifications
│ │ └── specification_files
│ │ └── header-attrs-2.7
│ │ └── header-attrs.js
├── reference
│ └── figures
│ │ └── logo.png
├── apple-touch-icon-120x120.png
├── apple-touch-icon-152x152.png
├── apple-touch-icon-180x180.png
├── pkgdown.yml
├── link.svg
├── bootstrap-toc.css
├── docsearch.js
├── pkgdown.js
└── bootstrap-toc.js
├── man
├── figures
│ └── logo.png
├── view_titles.Rd
├── view_footnotes.Rd
├── write_rtf.Rd
├── bold.Rd
├── index.Rd
├── italic.Rd
├── text.Rd
├── margins.Rd
├── orientation.Rd
├── add_titles_footnotes.Rd
├── pharmaRTF-package.Rd
├── header_rows.Rd
├── column_header_buffer.Rd
├── align.Rd
├── font_size.Rd
├── header_footer_height.Rd
├── pagesize.Rd
├── font.Rd
├── ignore_cell_padding.Rd
├── titles_and_footnotes_from_df.Rd
├── rtf_doc.Rd
└── hf_line.Rd
├── pkgdown
└── favicon
│ ├── favicon.ico
│ ├── favicon-16x16.png
│ ├── favicon-32x32.png
│ ├── apple-touch-icon.png
│ ├── apple-touch-icon-60x60.png
│ ├── apple-touch-icon-76x76.png
│ ├── apple-touch-icon-120x120.png
│ ├── apple-touch-icon-152x152.png
│ └── apple-touch-icon-180x180.png
├── tests
├── testthat
│ ├── data
│ │ └── titles.xlsx
│ ├── test_table_component_extractors.R
│ ├── headers1.txt
│ ├── headers2.txt
│ ├── test_read_df_from_file.R
│ ├── test_viewers.R
│ └── test_read_hf.r
└── testthat.R
├── cran-comments.md
├── pharmaRTF.Rproj
├── _pkgdown.yml
├── .Rbuildignore
├── azure-pipelines.yml
├── R
├── pharmaRTF.R
├── viewers.R
└── table_component_extractors.R
├── .gitignore
├── NEWS.md
├── LICENSE.md
├── DESCRIPTION
└── NAMESPACE
/.github/.gitignore:
--------------------------------------------------------------------------------
1 | *.html
2 |
--------------------------------------------------------------------------------
/vignettes/.gitignore:
--------------------------------------------------------------------------------
1 | *.html
2 | *.R
3 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | YEAR: 2020
2 | COPYRIGHT HOLDER: Atorus Research LLC
3 |
--------------------------------------------------------------------------------
/docs/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/docs/logo.png
--------------------------------------------------------------------------------
/docs/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/docs/favicon.ico
--------------------------------------------------------------------------------
/man/figures/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/man/figures/logo.png
--------------------------------------------------------------------------------
/vignettes/titles.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/titles.xlsx
--------------------------------------------------------------------------------
/docs/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/docs/favicon-16x16.png
--------------------------------------------------------------------------------
/docs/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/docs/favicon-32x32.png
--------------------------------------------------------------------------------
/vignettes/Validate.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validate.pdf
--------------------------------------------------------------------------------
/docs/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/docs/apple-touch-icon.png
--------------------------------------------------------------------------------
/vignettes/atorus_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/atorus_logo.png
--------------------------------------------------------------------------------
/vignettes/t14_4_01.Rdata:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/t14_4_01.Rdata
--------------------------------------------------------------------------------
/vignettes/table10_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/table10_img1.png
--------------------------------------------------------------------------------
/vignettes/table11_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/table11_img1.png
--------------------------------------------------------------------------------
/vignettes/table12_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/table12_img1.png
--------------------------------------------------------------------------------
/vignettes/table13_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/table13_img1.png
--------------------------------------------------------------------------------
/vignettes/table14_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/table14_img1.png
--------------------------------------------------------------------------------
/vignettes/table15_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/table15_img1.png
--------------------------------------------------------------------------------
/vignettes/table16_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/table16_img1.png
--------------------------------------------------------------------------------
/vignettes/table1_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/table1_img1.png
--------------------------------------------------------------------------------
/vignettes/table1_img2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/table1_img2.png
--------------------------------------------------------------------------------
/vignettes/table2_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/table2_img1.png
--------------------------------------------------------------------------------
/vignettes/table3_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/table3_img1.png
--------------------------------------------------------------------------------
/vignettes/table4_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/table4_img1.png
--------------------------------------------------------------------------------
/vignettes/table5_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/table5_img1.png
--------------------------------------------------------------------------------
/vignettes/table6_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/table6_img1.png
--------------------------------------------------------------------------------
/vignettes/table6_img2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/table6_img2.png
--------------------------------------------------------------------------------
/vignettes/table7_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/table7_img1.png
--------------------------------------------------------------------------------
/vignettes/table8_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/table8_img1.png
--------------------------------------------------------------------------------
/vignettes/table9_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/table9_img1.png
--------------------------------------------------------------------------------
/pkgdown/favicon/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/pkgdown/favicon/favicon.ico
--------------------------------------------------------------------------------
/docs/apple-touch-icon-60x60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/docs/apple-touch-icon-60x60.png
--------------------------------------------------------------------------------
/docs/apple-touch-icon-76x76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/docs/apple-touch-icon-76x76.png
--------------------------------------------------------------------------------
/docs/articles/table10_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/docs/articles/table10_img1.png
--------------------------------------------------------------------------------
/docs/articles/table11_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/docs/articles/table11_img1.png
--------------------------------------------------------------------------------
/docs/articles/table12_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/docs/articles/table12_img1.png
--------------------------------------------------------------------------------
/docs/articles/table13_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/docs/articles/table13_img1.png
--------------------------------------------------------------------------------
/docs/articles/table14_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/docs/articles/table14_img1.png
--------------------------------------------------------------------------------
/docs/articles/table15_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/docs/articles/table15_img1.png
--------------------------------------------------------------------------------
/docs/articles/table16_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/docs/articles/table16_img1.png
--------------------------------------------------------------------------------
/docs/articles/table1_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/docs/articles/table1_img1.png
--------------------------------------------------------------------------------
/docs/articles/table1_img2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/docs/articles/table1_img2.png
--------------------------------------------------------------------------------
/docs/articles/table2_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/docs/articles/table2_img1.png
--------------------------------------------------------------------------------
/docs/articles/table3_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/docs/articles/table3_img1.png
--------------------------------------------------------------------------------
/docs/articles/table4_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/docs/articles/table4_img1.png
--------------------------------------------------------------------------------
/docs/articles/table5_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/docs/articles/table5_img1.png
--------------------------------------------------------------------------------
/docs/articles/table6_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/docs/articles/table6_img1.png
--------------------------------------------------------------------------------
/docs/articles/table6_img2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/docs/articles/table6_img2.png
--------------------------------------------------------------------------------
/docs/articles/table7_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/docs/articles/table7_img1.png
--------------------------------------------------------------------------------
/docs/articles/table8_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/docs/articles/table8_img1.png
--------------------------------------------------------------------------------
/docs/articles/table9_img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/docs/articles/table9_img1.png
--------------------------------------------------------------------------------
/docs/reference/figures/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/docs/reference/figures/logo.png
--------------------------------------------------------------------------------
/tests/testthat/data/titles.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/tests/testthat/data/titles.xlsx
--------------------------------------------------------------------------------
/docs/apple-touch-icon-120x120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/docs/apple-touch-icon-120x120.png
--------------------------------------------------------------------------------
/docs/apple-touch-icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/docs/apple-touch-icon-152x152.png
--------------------------------------------------------------------------------
/docs/apple-touch-icon-180x180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/docs/apple-touch-icon-180x180.png
--------------------------------------------------------------------------------
/pkgdown/favicon/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/pkgdown/favicon/favicon-16x16.png
--------------------------------------------------------------------------------
/pkgdown/favicon/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/pkgdown/favicon/favicon-32x32.png
--------------------------------------------------------------------------------
/vignettes/Validation/vur_auto.Rds:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/vur_auto.Rds
--------------------------------------------------------------------------------
/pkgdown/favicon/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/pkgdown/favicon/apple-touch-icon.png
--------------------------------------------------------------------------------
/tests/testthat.R:
--------------------------------------------------------------------------------
1 | library(testthat)
2 | library(pharmaRTF)
3 | library(assertthat)
4 | library(huxtable)
5 |
6 | test_check("pharmaRTF")
7 |
--------------------------------------------------------------------------------
/pkgdown/favicon/apple-touch-icon-60x60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/pkgdown/favicon/apple-touch-icon-60x60.png
--------------------------------------------------------------------------------
/pkgdown/favicon/apple-touch-icon-76x76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/pkgdown/favicon/apple-touch-icon-76x76.png
--------------------------------------------------------------------------------
/pkgdown/favicon/apple-touch-icon-120x120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/pkgdown/favicon/apple-touch-icon-120x120.png
--------------------------------------------------------------------------------
/pkgdown/favicon/apple-touch-icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/pkgdown/favicon/apple-touch-icon-152x152.png
--------------------------------------------------------------------------------
/pkgdown/favicon/apple-touch-icon-180x180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/pkgdown/favicon/apple-touch-icon-180x180.png
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_10.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/test_10.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_11.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/test_11.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_23.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/test_23.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_24.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/test_24.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_25.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/test_25.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_26.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/test_26.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_27.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/test_27.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_28.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/test_28.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_29.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/test_29.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_3.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/test_3.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_30.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/test_30.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_31.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/test_31.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_32.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/test_32.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_33.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/test_33.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_34.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/test_34.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_35.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/test_35.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_36.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/test_36.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_37.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/test_37.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_38.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/test_38.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_39.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/test_39.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_4.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/test_4.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_40.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/test_40.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_5.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/test_5.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_6.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/test_6.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_7.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/test_7.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_8.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/test_8.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_9.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/test_9.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/ht_test_50.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/ht_test_50.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/ht_test_51.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/ht_test_51.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/ht_test_52.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/ht_test_52.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/view_test_41.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/view_test_41.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/view_test_42.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/view_test_42.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/view_test_43.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/view_test_43.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/view_test_44.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/view_test_44.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/view_test_45.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/view_test_45.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/view_test_46.RData:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/output/view_test_46.RData
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/input/titles_footnotes.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/atorus-research/pharmaRTF/HEAD/vignettes/Validation/Test_Case_Code/input/titles_footnotes.xlsx
--------------------------------------------------------------------------------
/tests/testthat/test_table_component_extractors.R:
--------------------------------------------------------------------------------
1 | context("table_component_extractors")
2 |
3 | test_that("The tests for these functions were done in test_rtf-code-generators", {
4 | expect_true(TRUE)
5 | })
6 |
--------------------------------------------------------------------------------
/cran-comments.md:
--------------------------------------------------------------------------------
1 | ## pharmaRTF 0.1.4
2 |
3 | No functionality changes. Update to fix bug with new version of tibble.
4 |
5 | ## Test environments
6 | * local Ubuntu 18.04.4 LTS, R 3.6.2
7 | * ubuntu-16.04 docker(azure ci)
8 |
9 | ## R CMD check results
10 | There were no ERRORs, WARNINGs, or NOTEs.
11 |
--------------------------------------------------------------------------------
/vignettes/header.tex:
--------------------------------------------------------------------------------
1 | \usepackage{titling}
2 | \usepackage{pdflscape}
3 |
4 | \newcommand{\blandscape}{\begin{landscape}}
5 | \newcommand{\elandscape}{\end{landscape}}
6 |
7 | \pretitle{%
8 | \begin{center}
9 | \LARGE
10 | \includegraphics[width=4cm,height=6cm]{atorus_logo.png}\\[\bigskipamount]
11 | }
12 | \posttitle{\end{center}}
13 |
--------------------------------------------------------------------------------
/docs/articles/Validate_files/kePrint-0.0.1/kePrint.js:
--------------------------------------------------------------------------------
1 | $(document).ready(function(){
2 | if (typeof $('[data-toggle="tooltip"]').tooltip === 'function') {
3 | $('[data-toggle="tooltip"]').tooltip();
4 | }
5 | if ($('[data-toggle="popover"]').popover === 'function') {
6 | $('[data-toggle="popover"]').popover();
7 | }
8 | });
9 |
--------------------------------------------------------------------------------
/docs/pkgdown.yml:
--------------------------------------------------------------------------------
1 | pandoc: 2.11.2
2 | pkgdown: 1.5.1
3 | pkgdown_sha: ~
4 | articles:
5 | Validate: Validate.html
6 | specification: Validation/Specifications/specification.html
7 | test_cases: Validation/Test_Cases/test_cases.html
8 | advanced_usage: advanced_usage.html
9 | huxtable_tips: huxtable_tips.html
10 | pharmaRTF: pharmaRTF.html
11 | tf_from_file: tf_from_file.html
12 | last_built: 2021-03-04T15:52Z
13 |
14 |
--------------------------------------------------------------------------------
/man/view_titles.Rd:
--------------------------------------------------------------------------------
1 | % Generated by roxygen2: do not edit by hand
2 | % Please edit documentation in R/viewers.R
3 | \name{view_titles}
4 | \alias{view_titles}
5 | \title{View title information}
6 | \usage{
7 | view_titles(doc)
8 | }
9 | \arguments{
10 | \item{doc}{\code{rtf_doc} object}
11 | }
12 | \value{
13 | \code{data.frame} of the title information
14 | }
15 | \description{
16 | View titles attached to an \code{rtf_doc} as a data.frame.
17 | }
18 |
--------------------------------------------------------------------------------
/pharmaRTF.Rproj:
--------------------------------------------------------------------------------
1 | Version: 1.0
2 |
3 | RestoreWorkspace: Default
4 | SaveWorkspace: Default
5 | AlwaysSaveHistory: Default
6 |
7 | EnableCodeIndexing: Yes
8 | UseSpacesForTab: Yes
9 | NumSpacesForTab: 2
10 | Encoding: UTF-8
11 |
12 | RnwWeave: Sweave
13 | LaTeX: pdfLaTeX
14 |
15 | AutoAppendNewline: Yes
16 | StripTrailingWhitespace: Yes
17 |
18 | BuildType: Package
19 | PackageUseDevtools: Yes
20 | PackageInstallArgs: --no-multiarch --with-keep.source
21 |
--------------------------------------------------------------------------------
/tests/testthat/headers1.txt:
--------------------------------------------------------------------------------
1 | {\header
2 |
3 | \par
4 |
5 | {
6 | \trowd
7 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl120 \clpadft3\clpadt120 \clpadfb3\clpadb120 \clpadfr3\clpadr120 \cellx2160
8 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl120 \clpadft3\clpadt120 \clpadfb3\clpadb120 \clpadfr3\clpadr120 \cellx4320 \pard\intbl\qr{\fs24 {1}}\cell
9 | \pard\intbl\ql{\fs24 {a}}\cell
10 | \row
11 | }
12 |
13 | }
--------------------------------------------------------------------------------
/man/view_footnotes.Rd:
--------------------------------------------------------------------------------
1 | % Generated by roxygen2: do not edit by hand
2 | % Please edit documentation in R/viewers.R
3 | \name{view_footnotes}
4 | \alias{view_footnotes}
5 | \title{View footnote information}
6 | \usage{
7 | view_footnotes(doc)
8 | }
9 | \arguments{
10 | \item{doc}{\code{rtf_doc} object}
11 | }
12 | \value{
13 | \code{data.frame} of the footnote information
14 | }
15 | \description{
16 | View footnotes attached to an \code{rtf_doc} as a data.frame.
17 | }
18 |
--------------------------------------------------------------------------------
/_pkgdown.yml:
--------------------------------------------------------------------------------
1 | destination: docs
2 |
3 | template:
4 | params:
5 | bootswatch: yeti
6 | ganalytics: UA-165685385-3
7 | opengraph:
8 | image:
9 | src: man/figures/logo.png
10 | alt: "pharmaRTF Hex Sticker"
11 | twitter:
12 | creator: "@AtorusR"
13 | card: summary_large_image
14 |
15 |
16 | articles:
17 | - title: pharmaRTF Vignettes
18 | navbar: pharmaRTF Vignettes
19 | contents:
20 | - advanced_usage
21 | - huxtable_tips
22 | - tf_from_file
23 |
--------------------------------------------------------------------------------
/.Rbuildignore:
--------------------------------------------------------------------------------
1 | ^.*\.Rproj$
2 | ^\.Rproj\.user$
3 | ^azure-pipelines\.yml$
4 | ^scripts$
5 | ^cran-comments\.md$
6 | ^doc$
7 | ^Meta$
8 | ^\.travis\.yml$
9 | ^vignettes/Validate\.Rmd$
10 | ^vignettes/Validation/val_script_calls\.R$
11 | ^vignettes/Validation/app\.R$
12 | ^vignetts/Validation/Test_Case_Code/input$
13 | ^vignetts/Validation/Test_Case_Code/output$
14 | ^vignettes/test_cases\.csv$
15 | ^vignettes/specs\.csv$
16 | ^vignettes/Validation$
17 | ^validation\.pdf$
18 | ^\.github$
19 | ^_pkgdown\.yml$
20 | ^docs$
21 | ^pkgdown$
22 | ^LICENSE\.md$
23 |
--------------------------------------------------------------------------------
/azure-pipelines.yml:
--------------------------------------------------------------------------------
1 | # Starter pipeline
2 | # Start with a minimal pipeline that you can customize to build and deploy your code.
3 | # Add steps that build, run tests, deploy, and more:
4 | # https://aka.ms/yaml
5 |
6 | trigger: none
7 |
8 | pool:
9 | vmImage: 'ubuntu-16.04'
10 |
11 | container: 'rocker/tidyverse:latest'
12 |
13 | steps:
14 | - script: Rscript -e 'R.version'
15 | displayName: 'R Version'
16 |
17 | - script: sudo Rscript -e 'install.packages(c("huxtable", "kableExtra")); devtools::check(cran = FALSE)'
18 | displayName: 'Package Check'
19 |
--------------------------------------------------------------------------------
/docs/articles/Validate_files/header-attrs-2.7/header-attrs.js:
--------------------------------------------------------------------------------
1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to
2 | // be compatible with the behavior of Pandoc < 2.8).
3 | document.addEventListener('DOMContentLoaded', function(e) {
4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child");
5 | var i, h, a;
6 | for (i = 0; i < hs.length; i++) {
7 | h = hs[i];
8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6
9 | a = h.attributes;
10 | while (a.length > 0) h.removeAttribute(a[0].name);
11 | }
12 | });
13 |
--------------------------------------------------------------------------------
/docs/articles/pharmaRTF_files/header-attrs-2.7/header-attrs.js:
--------------------------------------------------------------------------------
1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to
2 | // be compatible with the behavior of Pandoc < 2.8).
3 | document.addEventListener('DOMContentLoaded', function(e) {
4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child");
5 | var i, h, a;
6 | for (i = 0; i < hs.length; i++) {
7 | h = hs[i];
8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6
9 | a = h.attributes;
10 | while (a.length > 0) h.removeAttribute(a[0].name);
11 | }
12 | });
13 |
--------------------------------------------------------------------------------
/docs/articles/tf_from_file_files/header-attrs-2.7/header-attrs.js:
--------------------------------------------------------------------------------
1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to
2 | // be compatible with the behavior of Pandoc < 2.8).
3 | document.addEventListener('DOMContentLoaded', function(e) {
4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child");
5 | var i, h, a;
6 | for (i = 0; i < hs.length; i++) {
7 | h = hs[i];
8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6
9 | a = h.attributes;
10 | while (a.length > 0) h.removeAttribute(a[0].name);
11 | }
12 | });
13 |
--------------------------------------------------------------------------------
/docs/articles/advanced_usage_files/header-attrs-2.7/header-attrs.js:
--------------------------------------------------------------------------------
1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to
2 | // be compatible with the behavior of Pandoc < 2.8).
3 | document.addEventListener('DOMContentLoaded', function(e) {
4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child");
5 | var i, h, a;
6 | for (i = 0; i < hs.length; i++) {
7 | h = hs[i];
8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6
9 | a = h.attributes;
10 | while (a.length > 0) h.removeAttribute(a[0].name);
11 | }
12 | });
13 |
--------------------------------------------------------------------------------
/docs/articles/huxtable_tips_files/header-attrs-2.7/header-attrs.js:
--------------------------------------------------------------------------------
1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to
2 | // be compatible with the behavior of Pandoc < 2.8).
3 | document.addEventListener('DOMContentLoaded', function(e) {
4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child");
5 | var i, h, a;
6 | for (i = 0; i < hs.length; i++) {
7 | h = hs[i];
8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6
9 | a = h.attributes;
10 | while (a.length > 0) h.removeAttribute(a[0].name);
11 | }
12 | });
13 |
--------------------------------------------------------------------------------
/vignettes/Validation/val_script_calls.R:
--------------------------------------------------------------------------------
1 | #Validation Script
2 |
3 | library(pharmaRTF)
4 | library(tidyverse, lib.loc = .libPaths()[2])
5 | library(testthat)
6 | source("~/pharmaRTF/vignettes/helper_test_code.R")
7 |
8 | make_test_case_rmd("~/pharmaRTF/vignettes/test_cases.csv")
9 | make_specification_rmd("~/pharmaRTF/vignettes/specs.csv")
10 |
11 | # Source all of the files in the rtf_test_files directory
12 | lapply(list.files("~/pharmaRTF/vignettes/Validation/Test_Case_Code", full.names = TRUE,
13 | pattern = ".R$"), source)
14 |
15 | shiny::runApp("~/pharmaRTF/vignettes/Validation/app.R")
16 |
--------------------------------------------------------------------------------
/docs/articles/Validation/Test_Cases/test_cases_files/header-attrs-2.7/header-attrs.js:
--------------------------------------------------------------------------------
1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to
2 | // be compatible with the behavior of Pandoc < 2.8).
3 | document.addEventListener('DOMContentLoaded', function(e) {
4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child");
5 | var i, h, a;
6 | for (i = 0; i < hs.length; i++) {
7 | h = hs[i];
8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6
9 | a = h.attributes;
10 | while (a.length > 0) h.removeAttribute(a[0].name);
11 | }
12 | });
13 |
--------------------------------------------------------------------------------
/docs/articles/Validation/Specifications/specification_files/header-attrs-2.7/header-attrs.js:
--------------------------------------------------------------------------------
1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to
2 | // be compatible with the behavior of Pandoc < 2.8).
3 | document.addEventListener('DOMContentLoaded', function(e) {
4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child");
5 | var i, h, a;
6 | for (i = 0; i < hs.length; i++) {
7 | h = hs[i];
8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6
9 | a = h.attributes;
10 | while (a.length > 0) h.removeAttribute(a[0].name);
11 | }
12 | });
13 |
--------------------------------------------------------------------------------
/tests/testthat/headers2.txt:
--------------------------------------------------------------------------------
1 | {\header
2 | \qc
3 | {\f1\fs24 Text1}
4 | \par\qc
5 | {\f1\fs24\b Text2}
6 | \par\qc
7 | {\f1\fs24\i Text3}
8 | \par\qc
9 | {\f2\fs24 Text4}
10 | \par\qc
11 | {\f1\fs30 Text5}
12 | \par\ql\tx7245\tqr\tx12960
13 | {\f1\fs24 Text6}\pmartabqr
14 | {\f1\fs24 Text7}
15 | \par\qr
16 | {\f1\fs24 Text8}
17 | \par\ql
18 | {\f1\fs24 Text9}
19 | \par
20 |
21 | {
22 | \trowd
23 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl120 \clpadft3\clpadt120 \clpadfb3\clpadb120 \clpadfr3\clpadr120 \cellx2160
24 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl120 \clpadft3\clpadt120 \clpadfb3\clpadb120 \clpadfr3\clpadr120 \cellx4320 \pard\intbl\qr{\fs24 {1}}\cell
25 | \pard\intbl\ql{\fs24 {a}}\cell
26 | \row
27 | }
28 |
29 | }
--------------------------------------------------------------------------------
/R/pharmaRTF.R:
--------------------------------------------------------------------------------
1 | #' pharmaRTF
2 | #'
3 | #' @description
4 | #' Enhanced RTF wrapper written in R for use with existing R tables
5 | #' packages such as huxtable or GT. This package fills a gap where tables in
6 | #' certain packages can be written out to RTF, but cannot add certain metadata
7 | #' or features to the document that are required/expected in a report for a
8 | #' regulatory submission, such as multiple levels of titles and footnotes,
9 | #' making the document landscape, and controlling properties such as margins.
10 | #'
11 | #' This package intends to provide a flexible and reliable framework to connect
12 | #' R to a pharmaceutical reporting workflow.
13 | #'
14 | #' @section Future Plans:
15 | #' \itemize{
16 | #' \item{colors}
17 | #' \item{graphs}
18 | #' }
19 | #'
20 | "_PACKAGE"
21 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # History files
2 | .Rhistory
3 | .Rapp.history
4 |
5 | # Session Data files
6 | .RData
7 |
8 | # Example code in package build process
9 | *-Ex.R
10 |
11 | # Output files from R CMD build
12 | /*.tar.gz
13 |
14 | # Output files from R CMD check
15 | /*.Rcheck/
16 |
17 | # RStudio files
18 | .Rproj.user/
19 |
20 | # produced vignettes
21 | vignettes/*.html
22 | vignettes/*.pdf
23 |
24 | # OAuth2 token, see https://github.com/hadley/httr/releases/tag/v0.3
25 | .httr-oauth
26 |
27 | # knitr and R markdown default cache directories
28 | /*_cache/
29 | /cache/
30 |
31 | # Temporary files created by R markdown
32 | *.utf8.md
33 | *.knit.md
34 |
35 | # Shiny token, see https://shiny.rstudio.com/articles/shinyapps.html
36 | rsconnect/
37 | table_examples/outputs/
38 | inst/doc
39 | doc
40 | Meta
41 | LICENSE
42 | Validate.pdf
43 |
--------------------------------------------------------------------------------
/docs/link.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
13 |
--------------------------------------------------------------------------------
/NEWS.md:
--------------------------------------------------------------------------------
1 | # pharmaRTF 0.1.4
2 |
3 | No functionality changes. Bug fix for tibble 3.1.0 update identified in https://github.com/atorus-research/pharmaRTF/issues/6
4 |
5 | # pharmaRTF 0.1.3
6 |
7 | No functionality changes. Increment version number with updates for development version of R.
8 |
9 | # pharmaRTF 0.1.2
10 |
11 | No functionality changes. Increment version with new release of Huxtable
12 |
13 | # pharmaRTF 0.1.1
14 |
15 | ### API Changes
16 | This version is primarily used to adjust some internal functions to be
17 | compatilbe with huxtable 5.0. No major changes to user facing functionailty was made.
18 | Huxtable is now a hard dependancy on pharmaRTF.
19 |
20 | ### Enhansements
21 | The `header_row` attribute can now be set to 0 to print an `rtf_doc` with no headers. If the 'header_row' attribute is set to
22 | 0, only the titles and footnotes are repeated
23 |
--------------------------------------------------------------------------------
/tests/testthat/test_read_df_from_file.R:
--------------------------------------------------------------------------------
1 | library(huxtable)
2 |
3 | test_that("read_titles_from_df works as expected", {
4 |
5 | skip_if_not(require("readxl"))
6 |
7 | example_custom_reader <- function(..., table_number=NULL) {
8 |
9 | # If a column isn't populated then the type may be guessed wrong so force it
10 | col_types <- c('text', 'numeric', 'text', 'text', 'text', 'text', 'logical', 'logical', 'text')
11 | # pass through arguments from ...
12 | df <- readxl::read_excel(..., col_types=col_types)
13 |
14 | # Subset and return that dataframe
15 | df[df$table_number==table_number, !names(df) == 'table_number']
16 | }
17 | ht <- as_hux(mtcars)
18 |
19 | expect_silent(
20 | doc <- rtf_doc(ht) %>% titles_and_footnotes_from_df(
21 | from.file='./data/titles.xlsx',
22 | reader=example_custom_reader,
23 | table_number='test')
24 | )
25 |
26 | })
27 |
--------------------------------------------------------------------------------
/man/write_rtf.Rd:
--------------------------------------------------------------------------------
1 | % Generated by roxygen2: do not edit by hand
2 | % Please edit documentation in R/rtf-code-generators.R
3 | \name{write_rtf}
4 | \alias{write_rtf}
5 | \title{Write RTF document}
6 | \usage{
7 | write_rtf(doc, file = NULL)
8 | }
9 | \arguments{
10 | \item{doc}{The RTF document to be written.}
11 |
12 | \item{file}{A character string naming a file open for writing.}
13 | }
14 | \value{
15 | File is written to the file provided by sinking the console output.
16 | No output is returned to the R environment.
17 | }
18 | \description{
19 | Writes the RTF document to a specified file.
20 | }
21 | \examples{
22 | ## Create and write RTF document
23 | ht <- huxtable::huxtable(
24 | column1 = 1:5,
25 | column2 = letters[1:5]
26 | )
27 | rtf <- rtf_doc(ht)
28 |
29 | write_rtf(rtf, file=tempfile()) #writes a table with no header/footnotes to 'test.rtf'
30 |
31 | }
32 | \seealso{
33 | \url{http://www.biblioscape.com/rtf15_spec.htm},
34 | \url{http://latex2rtf.sourceforge.net/rtfspec_7.html#rtfspec_tabledef}
35 | }
36 |
--------------------------------------------------------------------------------
/tests/testthat/test_viewers.R:
--------------------------------------------------------------------------------
1 | context("viewers")
2 | library("huxtable")
3 |
4 | test_that("viewers return correct data.frame", {
5 | ht <- huxtable(
6 | column1 = 1:5,
7 | column2 = letters[1:5]
8 | )
9 | titles_l <- list(
10 | hf_line("test3"),
11 | hf_line("test2", index=2),
12 | hf_line("test1", index=1),
13 | hf_line("test4")
14 | )
15 | footers_l <- list(
16 | hf_line("ftest3"),
17 | hf_line("ftest2", index=2),
18 | hf_line("ftest1", index=1),
19 | hf_line("ftest4")
20 | )
21 | rtf <- rtf_doc(ht, titles = titles_l, footnotes = footers_l)
22 |
23 | ## I'm having trouble testing the viewer functions due to either conflicts
24 | # with View or how testthat interacts with the terminal.
25 | expect_true(TRUE)
26 |
27 | })
28 |
29 | test_that("Viewer functions throw error when no headers/footers to display", {
30 | ht <- huxtable(
31 | column1 = 1:5,
32 | column2 = letters[1:5]
33 | )
34 | rtf <- rtf_doc(ht)
35 |
36 | expect_error(view_hf(rtf), "attempt to select less than one element in get1index")
37 | })
38 |
--------------------------------------------------------------------------------
/man/bold.Rd:
--------------------------------------------------------------------------------
1 | % Generated by roxygen2: do not edit by hand
2 | % Please edit documentation in R/properties.R
3 | \name{bold}
4 | \alias{bold}
5 | \alias{bold<-}
6 | \alias{set_bold}
7 | \title{Return or set bold}
8 | \usage{
9 | bold(x, ...)
10 |
11 | bold(x) <- value
12 |
13 | set_bold(x, value)
14 | }
15 | \arguments{
16 | \item{x}{A \code{hf_line} object}
17 |
18 | \item{...}{Additonal arguments passed to method dispatch}
19 |
20 | \item{value}{A logical vector to set the value of the bold attribute}
21 | }
22 | \value{
23 | For \code{bold()}, the bold attribute of the supplied \code{hf_line}
24 | object. For \code{`bold<-`()} and \code{set_bold()}, the modified object.
25 | }
26 | \description{
27 | These property functions modify or return the bold attribute of a
28 | \code{hf_line} object.
29 | }
30 | \examples{
31 | library(huxtable)
32 | ht <- huxtable(
33 | column1 = 1:5,
34 | column2 = letters[1:5]
35 | )
36 | rtf <- rtf_doc(ht, list(hf_line("aTitle")))
37 |
38 | pharmaRTF::bold(rtf$titles[[1]])
39 | # Returns FALSE
40 |
41 | pharmaRTF::bold(rtf$titles[[1]]) <- TRUE
42 | # Sets bold to TRUE
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 | =====================
3 |
4 | Copyright © 2020 Atorus Research LLC
5 |
6 | Permission is hereby granted, free of charge, to any person
7 | obtaining a copy of this software and associated documentation
8 | files (the “Software”), to deal in the Software without
9 | restriction, including without limitation the rights to use,
10 | copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | copies of the Software, and to permit persons to whom the
12 | Software is furnished to do so, subject to the following
13 | conditions:
14 |
15 | The above copyright notice and this permission notice shall be
16 | included in all copies or substantial portions of the Software.
17 |
18 | THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
19 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
20 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
22 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
23 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
24 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
25 | OTHER DEALINGS IN THE SOFTWARE.
26 |
--------------------------------------------------------------------------------
/man/index.Rd:
--------------------------------------------------------------------------------
1 | % Generated by roxygen2: do not edit by hand
2 | % Please edit documentation in R/properties.R
3 | \name{index}
4 | \alias{index}
5 | \alias{index<-}
6 | \alias{set_index}
7 | \title{Return or set index}
8 | \usage{
9 | index(x, ...)
10 |
11 | index(x) <- value
12 |
13 | set_index(x, value)
14 | }
15 | \arguments{
16 | \item{x}{A \code{hf_line} object}
17 |
18 | \item{...}{Additonal arguments passed to method dispatch}
19 |
20 | \item{value}{Numeric value to order index}
21 | }
22 | \value{
23 | For \code{index()}, the index attribute of the supplied
24 | \code{hf_line} object. For \code{`index<-()`} and \code{set_index()}, the
25 | modified object.
26 | }
27 | \description{
28 | These property functions modify or return the index of a \code{hf_line}
29 | object. The index sets the order in which a title will appear. Indicies
30 | can be any numeric value as long as they are not duplicated.
31 | }
32 | \examples{
33 | library(huxtable)
34 | ht <- huxtable(
35 | column1 = 1:5,
36 | column2 = letters[1:5]
37 | )
38 | rtf <- rtf_doc(ht, list(hf_line("aTitle")))
39 |
40 | index(rtf$titles[[1]])
41 | # Returns NULL
42 |
43 | index(rtf$titles[[1]]) <- 2
44 | # Sets index of first titles to 2
45 |
46 | }
47 |
--------------------------------------------------------------------------------
/man/italic.Rd:
--------------------------------------------------------------------------------
1 | % Generated by roxygen2: do not edit by hand
2 | % Please edit documentation in R/properties.R
3 | \name{italic}
4 | \alias{italic}
5 | \alias{italic<-}
6 | \alias{set_italic}
7 | \title{Return or set italics}
8 | \usage{
9 | italic(x, ...)
10 |
11 | italic(x) <- value
12 |
13 | set_italic(x, value)
14 | }
15 | \arguments{
16 | \item{x}{A \code{hf_line} object}
17 |
18 | \item{...}{Additonal arguments passed to method dispatch}
19 |
20 | \item{value}{A logical vector to set the value of the bold attribute}
21 | }
22 | \value{
23 | For \code{italic()}, the italic attribute of the supplied
24 | \code{hf_line}. Fot \code{`italic<-()`} and \code{set_italic()} the
25 | modified object.
26 | }
27 | \description{
28 | These property functions modify or return the italics attribute of a \code{hf_line}
29 | object. The italic attribute takes on a logical value of TRUE or FALSE, where
30 | TRUE italicizes the text of the line.
31 | }
32 | \examples{
33 | library(huxtable)
34 | ht <- huxtable(
35 | column1 = 1:5,
36 | column2 = letters[1:5]
37 | )
38 | rtf <- rtf_doc(ht, list(hf_line("aTitle")))
39 |
40 | pharmaRTF::italic(rtf$titles[[1]])
41 | # Returns FALSE
42 |
43 | pharmaRTF::italic(rtf$titles[[1]]) <- TRUE
44 | # Sets italic to TRUE
45 |
46 | }
47 |
--------------------------------------------------------------------------------
/man/text.Rd:
--------------------------------------------------------------------------------
1 | % Generated by roxygen2: do not edit by hand
2 | % Please edit documentation in R/properties.R
3 | \name{text}
4 | \alias{text}
5 | \alias{text<-}
6 | \alias{set_text}
7 | \title{Return or set text}
8 | \usage{
9 | text(x, ...)
10 |
11 | text(x) <- value
12 |
13 | set_text(x, value)
14 | }
15 | \arguments{
16 | \item{x}{A \code{hf_line} object}
17 |
18 | \item{...}{Additonal arguments passed to method dispatch}
19 |
20 | \item{value}{A character vector of length 0, 1, or 2 to set the text value
21 | of a \code{hf_line} object.}
22 | }
23 | \value{
24 | For \code{text()}, the text vector of the supplied \code{hf_line}
25 | object. For \code{`text<-()`} and \code{set_text()}, the modfied object.
26 | }
27 | \description{
28 | These property functions modify or return the fonts of a \code{rtf_doc} object.
29 | \code{text()} will always return a vector of length 2. If the text is only
30 | of length one an empty string will be appended.
31 | }
32 | \examples{
33 | library(huxtable)
34 | ht <- huxtable(
35 | column1 = 1:5,
36 | column2 = letters[1:5]
37 | )
38 | rtf <- rtf_doc(ht, list(hf_line("aTitle")))
39 |
40 | text(rtf$titles[[1]])
41 | # Returns "aTitle" ""
42 |
43 | text(rtf$titles[[1]]) <- "aDifferentTitle"
44 | # Sets titles to "aDifferentTitle"
45 |
46 | }
47 |
--------------------------------------------------------------------------------
/man/margins.Rd:
--------------------------------------------------------------------------------
1 | % Generated by roxygen2: do not edit by hand
2 | % Please edit documentation in R/properties.R
3 | \name{margins}
4 | \alias{margins}
5 | \alias{margins<-}
6 | \alias{set_margins}
7 | \title{Return or set margins}
8 | \usage{
9 | margins(x, ...)
10 |
11 | margins(x) <- value
12 |
13 | set_margins(x, value)
14 | }
15 | \arguments{
16 | \item{x}{A \code{rtf_doc} object}
17 |
18 | \item{...}{Additonal arguments passed to method dispatch}
19 |
20 | \item{value}{A named list or vector detailing the page margins}
21 | }
22 | \value{
23 | For \code{margin()}, a named vector of the margin attribute of the
24 | supplied \code{rtf_doc}. For \code{`margin<-()`} and \code{set_margin()}
25 | the modified object.
26 | }
27 | \description{
28 | These property functions return or set the margin attribute of a \code{rtf_doc}
29 | object. These are stored as a named vector. Names should be \code{top},
30 | \code{bottom}, \code{left}, and \code{right}. Margins are measured in inches.
31 | }
32 | \examples{
33 | library(huxtable)
34 | ht <- huxtable(
35 | column1 = 1:5,
36 | column2 = letters[1:5]
37 | )
38 | rtf <- rtf_doc(ht, list(hf_line("aTitle")))
39 |
40 | margins(rtf)
41 | # Returns c(top = 1, bottom = 1, left = 1, right = 1)
42 |
43 | margins(rtf) <- c(top = 2)
44 | # Sets top margin to 2
45 |
46 | }
47 |
--------------------------------------------------------------------------------
/man/orientation.Rd:
--------------------------------------------------------------------------------
1 | % Generated by roxygen2: do not edit by hand
2 | % Please edit documentation in R/properties.R
3 | \name{orientation}
4 | \alias{orientation}
5 | \alias{orientation<-}
6 | \alias{set_orientation}
7 | \title{Return or set orientation}
8 | \usage{
9 | orientation(x, ...)
10 |
11 | orientation(x) <- value
12 |
13 | set_orientation(x, value)
14 | }
15 | \arguments{
16 | \item{x}{A \code{rtf_doc} object}
17 |
18 | \item{...}{Additonal arguments passed to method dispatch}
19 |
20 | \item{value}{A character vector of either 'landscape' or 'portrait'}
21 | }
22 | \value{
23 | For \code{orientation()}, the orientation attribute of the supplied
24 | \code{rtf_doc} object. For \code{`orientation<-()`} and
25 | \code{set_orientation()} the modified object.
26 | }
27 | \description{
28 | These property functions modify or return the orientation attribute of a
29 | \code{rtf_doc} object. Options are landscape or portrait. See the \code{\link{rtf_doc}}
30 | help page for important notes about this property.
31 | }
32 | \examples{
33 | library(huxtable)
34 | ht <- huxtable(
35 | column1 = 1:5,
36 | column2 = letters[1:5]
37 | )
38 | rtf <- rtf_doc(ht, list(hf_line("aTitle")))
39 |
40 | orientation(rtf)
41 | # Returns landscape
42 |
43 | orientation(rtf) <- "portrait"
44 | # Sets orientation to portrait
45 |
46 | }
47 |
--------------------------------------------------------------------------------
/vignettes/file_path_example.r:
--------------------------------------------------------------------------------
1 | library(pharmaRTF)
2 | library(huxtable)
3 |
4 | # Create the column headers data frame
5 | column_headers <- data.frame(
6 | Species = c("", "Species of Flower"),
7 | Sepal.Length = c("Sepal", "Length"),
8 | Sepal.Width = c("", "Width"),
9 | Petal.Length = c("Petal", "Length"),
10 | Petal.Width = c("", "Width"),
11 | stringsAsFactors = FALSE
12 | )
13 |
14 | # Create the huxtable table
15 | ht <- huxtable::as_hux(rbind(column_headers, iris)) %>%
16 | # Merge the Sepal cell over the Length and Width
17 | huxtable::merge_cells(1, 2:3) %>%
18 | # Merge the Petal cell over the Length and Width
19 | huxtable::merge_cells(1, 4:5) %>%
20 | # Align the top cells for both Sepal and Petal
21 | huxtable::set_align(1,2, 'center') %>%
22 | huxtable::set_align(1,4, 'center') %>%
23 | # Bold all the column header rows
24 | huxtable::set_bold(1:2, 1:ncol(iris), TRUE) %>%
25 | # Bottom border on 1st column header row
26 | huxtable::set_bottom_border(1, 2:4, 1) %>%
27 | # Bottom border on 2nd row
28 | huxtable::set_bottom_border(2, 1:ncol(iris), 2) %>%
29 | # Set the page width
30 | huxtable::set_width(1.5)
31 |
32 | # Create the RTF doc
33 | doc <- rtf_doc(ht, header_rows=2) %>%
34 | add_titles(hf_line("Text on the left", "FILE_PATH: Run from: %s", bold=TRUE, align='split'))
35 |
36 |
37 | write_rtf(doc, file="table15.rtf")
38 |
--------------------------------------------------------------------------------
/man/add_titles_footnotes.Rd:
--------------------------------------------------------------------------------
1 | % Generated by roxygen2: do not edit by hand
2 | % Please edit documentation in R/header-footer.R
3 | \name{add_titles}
4 | \alias{add_titles}
5 | \alias{add_footnotes}
6 | \title{Add \code{hf_line} title(s) and footnote(s) to a \code{rtf_doc} object}
7 | \usage{
8 | add_titles(doc, ..., replace = FALSE)
9 |
10 | add_footnotes(doc, ..., replace = FALSE)
11 | }
12 | \arguments{
13 | \item{doc}{\code{rtf_doc} on which hf_line object(s) (i.e. titles/footnotes)
14 | will be attached}
15 |
16 | \item{...}{A vector of \code{hf_line} objects to add passed to
17 | \code{add_hf()}}
18 |
19 | \item{replace}{If FALSE, lines will be appended/ordered with current
20 | header/footer lines. If TRUE, lines will replace the existing content.}
21 | }
22 | \value{
23 | \code{hf_line} object(s) (i.e. titles/footnotes) to be added
24 | }
25 | \description{
26 | Add \code{hf_line} titles/footnote objects to a \code{rtf_doc} object
27 | }
28 | \examples{
29 | # Adding titles after rtf_doc construction
30 | ht <- huxtable::huxtable(
31 | column1 = 1:5,
32 | column2 = letters[1:5]
33 | )
34 | rtf <- rtf_doc(ht)
35 |
36 | rtf <- add_titles(rtf, hf_line("The Title"))
37 |
38 | # Adding footnotes after rtf_doc construction
39 | ht <- huxtable::huxtable(
40 | column1 = 1:5,
41 | column2 = letters[1:5]
42 | )
43 | rtf <- rtf_doc(ht)
44 |
45 | rtf <- add_footnotes(rtf, hf_line("The Footnote"))
46 |
47 | }
48 |
--------------------------------------------------------------------------------
/.github/workflows/pkgdown.yaml:
--------------------------------------------------------------------------------
1 | on:
2 | push:
3 | branches: master
4 |
5 | name: pkgdown
6 |
7 | jobs:
8 | pkgdown:
9 | runs-on: macOS-latest
10 | env:
11 | GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
12 | steps:
13 | - uses: actions/checkout@v2
14 |
15 | - uses: r-lib/actions/setup-r@master
16 |
17 | - uses: r-lib/actions/setup-pandoc@master
18 |
19 | - name: Query dependencies
20 | run: |
21 | install.packages('remotes')
22 | saveRDS(remotes::dev_package_deps(dependencies = TRUE), ".github/depends.Rds", version = 2)
23 | writeLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), ".github/R-version")
24 | shell: Rscript {0}
25 |
26 | - name: Cache R packages
27 | uses: actions/cache@v1
28 | with:
29 | path: ${{ env.R_LIBS_USER }}
30 | key: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1-${{ hashFiles('.github/depends.Rds') }}
31 | restore-keys: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1-
32 |
33 | - name: Install dependencies
34 | run: |
35 | remotes::install_deps(dependencies = TRUE)
36 | install.packages("pkgdown")
37 | shell: Rscript {0}
38 |
39 | - name: Install package
40 | run: R CMD INSTALL .
41 |
42 | - name: Deploy package
43 | run: |
44 | git config --local user.email "actions@github.com"
45 | git config --local user.name "GitHub Actions"
46 | Rscript -e 'pkgdown::deploy_to_branch(new_process = FALSE)'
47 |
--------------------------------------------------------------------------------
/man/pharmaRTF-package.Rd:
--------------------------------------------------------------------------------
1 | % Generated by roxygen2: do not edit by hand
2 | % Please edit documentation in R/pharmaRTF.R
3 | \docType{package}
4 | \name{pharmaRTF-package}
5 | \alias{pharmaRTF}
6 | \alias{pharmaRTF-package}
7 | \title{pharmaRTF}
8 | \description{
9 | Enhanced RTF wrapper written in R for use with existing R tables
10 | packages such as huxtable or GT. This package fills a gap where tables in
11 | certain packages can be written out to RTF, but cannot add certain metadata
12 | or features to the document that are required/expected in a report for a
13 | regulatory submission, such as multiple levels of titles and footnotes,
14 | making the document landscape, and controlling properties such as margins.
15 |
16 | This package intends to provide a flexible and reliable framework to connect
17 | R to a pharmaceutical reporting workflow.
18 | }
19 | \section{Future Plans}{
20 |
21 | \itemize{
22 | \item{colors}
23 | \item{graphs}
24 | }
25 | }
26 |
27 | \seealso{
28 | Useful links:
29 | \itemize{
30 | \item Report bugs at \url{https://github.com/atorus-research/pharmaRTF/issues}
31 | }
32 |
33 | }
34 | \author{
35 | \strong{Maintainer}: Michael Stackhouse \email{mike.stackhouse@atorusresearch.com} (\href{https://orcid.org/0000-0001-6030-723X}{ORCID})
36 |
37 | Authors:
38 | \itemize{
39 | \item Eli Miller \email{eli.miller@atorusresearch.com} (\href{https://orcid.org/0000-0002-2127-9456}{ORCID})
40 | \item Ashley Tarasiewicz \email{Ashley.Tarasiewicz@atorusresearch.com}
41 | }
42 |
43 | Other contributors:
44 | \itemize{
45 | \item Atorus Research LLC [copyright holder]
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/man/header_rows.Rd:
--------------------------------------------------------------------------------
1 | % Generated by roxygen2: do not edit by hand
2 | % Please edit documentation in R/properties.R
3 | \name{header_rows}
4 | \alias{header_rows}
5 | \alias{header_rows<-}
6 | \alias{set_header_rows}
7 | \title{Return or set the header_rows}
8 | \usage{
9 | header_rows(x, ...)
10 |
11 | header_rows(x) <- value
12 |
13 | set_header_rows(x, value)
14 | }
15 | \arguments{
16 | \item{x}{A \code{rtf_doc} object}
17 |
18 | \item{...}{Additonal arguments passed to method dispatch}
19 |
20 | \item{value}{A numeric value to change the header_rows attribute.}
21 | }
22 | \value{
23 | For \code{header_rows()}, the header_rows attribute of the
24 | \code{rtf_doc} object. For \code{`header_rows<-`()} and
25 | \code{set_header_rows()}, the modified object.
26 | }
27 | \description{
28 | These property functions modify or return the header_rows attribute of a \code{rtf_doc}
29 | object. Only required and valid when the \code{rtf_doc} table object is a
30 | huxtable.
31 |
32 | The header rows control the number of rows taken from a huxtable table into
33 | the header of the document as the column header. When pulled into the
34 | headers, these rows are repeated on each page. Can be set to 0 to disable repeating column headers.
35 | }
36 | \examples{
37 | ht <- huxtable::huxtable(
38 | column1 = 1:5,
39 | column2 = letters[1:5]
40 | )
41 | rtf <- rtf_doc(ht, list(hf_line("aTitle")))
42 |
43 | header_rows(rtf)
44 | # This is a wrapper for header_rows(x$table)
45 | header_rows(rtf$table)
46 | # Both of these return 1, the default
47 |
48 | header_rows(rtf$table) <- 0
49 | # Sets header_rows to 0
50 |
51 | }
52 |
--------------------------------------------------------------------------------
/man/column_header_buffer.Rd:
--------------------------------------------------------------------------------
1 | % Generated by roxygen2: do not edit by hand
2 | % Please edit documentation in R/properties.R
3 | \name{column_header_buffer}
4 | \alias{column_header_buffer}
5 | \alias{column_header_buffer<-}
6 | \alias{set_column_header_buffer}
7 | \title{Return or set column_header_buffer attributes}
8 | \usage{
9 | column_header_buffer(x, ...)
10 |
11 | column_header_buffer(x) <- value
12 |
13 | set_column_header_buffer(x, ...)
14 | }
15 | \arguments{
16 | \item{x}{A \code{rtf_doc} object}
17 |
18 | \item{...}{Additonal arguments passed to method dispatch. Should include
19 | argument top and bottom with numeric elements.}
20 |
21 | \item{value}{A named vector detailing the top and bottom buffer.}
22 | }
23 | \value{
24 | For \code{column_header_buffer}, the column_header_buffer attribute
25 | of the supplied \code{rtf_doc}. For \code{`column_header_buffer<-`()} and
26 | \code{set_column_header_buffer()}, the modified object.
27 | }
28 | \description{
29 | These property functions modify and return the column header buffers of a
30 | \code{rtf_doc} object. These are stored as a named vector. Names should be \code{top} and
31 | \code{bottom}. This attribute adds rows to the top or bottom of the table
32 | column headers to pad it from the titles above or the table below.
33 | }
34 | \examples{
35 | library(huxtable)
36 | ht <- huxtable(
37 | column1 = 1:5,
38 | column2 = letters[1:5]
39 | )
40 | rtf <- rtf_doc(ht, list(hf_line("aTitle")))
41 |
42 | column_header_buffer(rtf)
43 | # Returns c(top = 0, bottom = 0), the default
44 |
45 | column_header_buffer(rtf) <- c(bottom = 1)
46 | # Sets the bottom column_header_buffer to 1
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/man/align.Rd:
--------------------------------------------------------------------------------
1 | % Generated by roxygen2: do not edit by hand
2 | % Please edit documentation in R/properties.R
3 | \name{align}
4 | \alias{align}
5 | \alias{align<-}
6 | \alias{set_align}
7 | \title{Return or set text alignment}
8 | \usage{
9 | align(x, ...)
10 |
11 | align(x) <- value
12 |
13 | set_align(x, value)
14 | }
15 | \arguments{
16 | \item{x}{\code{hf_line} object}
17 |
18 | \item{...}{Additional arguments passed to method dispatch.}
19 |
20 | \item{value}{A string representing the alignment.}
21 | }
22 | \value{
23 | For \code{align()}, the alignment of the supplied \code{hf_line} object.
24 | For \code{set_align()} and \code{`align<-`()}, the modified object.
25 | }
26 | \description{
27 | These property functions modify or return the text alignment in a \code{hf_line}
28 | object. Supported options are: 'left', 'right', 'center', and 'split'.
29 |
30 | An alignment option of 'split' requires that two text elements are provided
31 | in the titles/footnotes \code{hf_line} object. The first text element will
32 | be aligned on the left and the second on the right.
33 | }
34 | \examples{
35 | library(huxtable)
36 | ht <- huxtable(
37 | column1 = 1:5,
38 | column2 = letters[1:5]
39 | )
40 | rtf <- rtf_doc(ht, list(hf_line("aTitle")))
41 |
42 | pharmaRTF::align(rtf$titles[[1]])
43 | # Returns "center"
44 |
45 | pharmaRTF::align(rtf$titles[[1]]) <- "left"
46 | # Sets alignment to 'left'
47 |
48 | pharmaRTF::text(rtf$titles[[1]]) <- c("Left Text", "Right Text")
49 | pharmaRTF::align(rtf$titles[[1]]) <- "split"
50 | # When rtf is printed, "Left Text" will be left aligned, and "Right Text"
51 | # will be right aligned. Both will appear on the same line in the document.
52 |
53 | }
54 |
--------------------------------------------------------------------------------
/man/font_size.Rd:
--------------------------------------------------------------------------------
1 | % Generated by roxygen2: do not edit by hand
2 | % Please edit documentation in R/properties.R
3 | \name{font_size}
4 | \alias{font_size}
5 | \alias{font_size<-}
6 | \alias{set_font_size}
7 | \title{Return or set font size}
8 | \usage{
9 | font_size(x, ...)
10 |
11 | font_size(x) <- value
12 |
13 | set_font_size(x, value)
14 | }
15 | \arguments{
16 | \item{x}{\code{rtf_doc} object or a \code{hf_line} object.}
17 |
18 | \item{...}{Additonal arguments passed to method dispatch.}
19 |
20 | \item{value}{A numeric value for font size in points.}
21 | }
22 | \value{
23 | For \code{font_size()}, the font_size attribute of the supplied
24 | \code{rtf_doc} or \code{hf_line}. For \code{`font_size<-`()} and
25 | \code{set_font_size}, the modified object.
26 | }
27 | \description{
28 | These property functions modify or return the font sizes of an \code{rtf_doc} object
29 | or individual titles/footnotes objects of the \code{hf_line} class.
30 |
31 | When used on an rtf_doc object to retrieve font sizes, the document level
32 | default font size within the \code{rtf_doc} is returned. When used on an \code{rtf_doc} to
33 | set fonts, the default font size for the RTF document is set.
34 |
35 | When used on titles/footnotes (\code{hf_line} objects), the font size is either
36 | returned of set for that individual line.
37 | }
38 | \examples{
39 | library(huxtable)
40 | ht <- huxtable(
41 | column1 = 1:5,
42 | column2 = letters[1:5]
43 | )
44 | rtf <- rtf_doc(ht, list(hf_line("aTitle", font_size = 15)))
45 |
46 | pharmaRTF::font_size(rtf)
47 | # Returns 12
48 |
49 | pharmaRTF::font_size(rtf) <- 14
50 |
51 | pharmaRTF::font_size(rtf$titles[[1]])
52 | # Returns 15
53 | pharmaRTF::font_size(rtf)
54 | # Returns 14
55 |
56 |
57 | }
58 |
--------------------------------------------------------------------------------
/man/header_footer_height.Rd:
--------------------------------------------------------------------------------
1 | % Generated by roxygen2: do not edit by hand
2 | % Please edit documentation in R/properties.R
3 | \name{header_height}
4 | \alias{header_height}
5 | \alias{header_height<-}
6 | \alias{set_header_height}
7 | \alias{footer_height}
8 | \alias{footer_height<-}
9 | \alias{set_footer_height}
10 | \title{Return or set header/footer height}
11 | \usage{
12 | header_height(x, ...)
13 |
14 | header_height(x) <- value
15 |
16 | set_header_height(x, value)
17 |
18 | footer_height(x, ...)
19 |
20 | footer_height(x) <- value
21 |
22 | set_footer_height(x, value)
23 | }
24 | \arguments{
25 | \item{x}{A \code{rtf_doc} object}
26 |
27 | \item{...}{Additonal arguments passed to method dispatch}
28 |
29 | \item{value}{A numeric value to set the header_height/footer_height}
30 | }
31 | \value{
32 | For \code{header_height()}/\code{footer_height()}, the
33 | header_height/footer_height attribute of thesupplied \code{rtf_doc}
34 | object. For \code{`header_height<-()`}/ \code{`footer_height<-`()} and
35 | \code{set_header_height()}/ \code{set_footer_height()}, the modified
36 | object.
37 | }
38 | \description{
39 | These property functions modify or return the header_height/footer_height attribute
40 | of a \code{rtf_doc} object. The header/footer height is the default amount of
41 | space allocated to the header/footer from the margin. If the content of the
42 | header/footer exceeds this amount of space, it will be expanded.
43 | }
44 | \examples{
45 | library(huxtable)
46 | ht <- huxtable(
47 | column1 = 1:5,
48 | column2 = letters[1:5]
49 | )
50 | rtf <- rtf_doc(ht, list(hf_line("aTitle")))
51 |
52 | header_height(rtf)
53 | # Returns 0.5, the default
54 |
55 | footer_height(rtf) <- 1
56 | # Sets footer_height to 1
57 |
58 | }
59 |
--------------------------------------------------------------------------------
/DESCRIPTION:
--------------------------------------------------------------------------------
1 | Package: pharmaRTF
2 | Type: Package
3 | Title: Enhanced RTF Wrapper for Use with Existing Table Packages
4 | Version: 0.1.4
5 | Authors@R: c(
6 | person(family = "Miller", given = "Eli", email = "eli.miller@atorusresearch.com", role = "aut", comment = c(ORCID = "0000-0002-2127-9456")),
7 | person(family = "Tarasiewicz", given = "Ashley", email = "Ashley.Tarasiewicz@atorusresearch.com", role = "aut"),
8 | person(family = "Stackhouse", given = "Michael", email = "mike.stackhouse@atorusresearch.com", role = c("aut", "cre"), comment = c(ORCID = "0000-0001-6030-723X")),
9 | person(given = "Atorus Research LLC", role = "cph")
10 | )
11 | Description: Enhanced RTF wrapper written in R for use with existing R tables
12 | packages such as 'Huxtable' or 'GT'. This package fills a gap where tables in
13 | certain packages can be written out to RTF, but cannot add certain metadata
14 | or features to the document that are required/expected in a report for a
15 | regulatory submission, such as multiple levels of titles and footnotes,
16 | making the document landscape, and controlling properties such as margins.
17 | Depends: R (>= 3.5.0)
18 | License: MIT + file LICENSE
19 | BugReports: https://github.com/atorus-research/pharmaRTF/issues
20 | Encoding: UTF-8
21 | LazyData: true
22 | Imports:
23 | assertthat (>= 0.2.1),
24 | stringr (>= 1.4.0),
25 | purrr (>= 0.3.3),
26 | huxtable (>= 4.7.1)
27 | Suggests:
28 | testthat (>= 2.1.0),
29 | dplyr (>= 0.8.4),
30 | readr (>= 1.3.1),
31 | gt (>= 0.2.0),
32 | magrittr (>= 1.5),
33 | knitr (>= 1.28),
34 | rmarkdown (>= 2.1),
35 | readxl (>= 1.3.1),
36 | kableExtra (>= 1.1.0),
37 | plyr (>= 1.8.5),
38 | tidyverse (>= 1.3.0)
39 | RoxygenNote: 7.1.1
40 | VignetteBuilder: knitr
41 |
--------------------------------------------------------------------------------
/man/pagesize.Rd:
--------------------------------------------------------------------------------
1 | % Generated by roxygen2: do not edit by hand
2 | % Please edit documentation in R/properties.R
3 | \name{pagesize}
4 | \alias{pagesize}
5 | \alias{pagesize<-}
6 | \alias{set_pagesize}
7 | \title{Return or set pagesize}
8 | \usage{
9 | pagesize(x, ...)
10 |
11 | pagesize(x) <- value
12 |
13 | set_pagesize(x, value)
14 | }
15 | \arguments{
16 | \item{x}{A \code{rtf_doc} object}
17 |
18 | \item{...}{Additonal arguments passed to method dispatch}
19 |
20 | \item{value}{A named numeric vector with the names \code{height} and
21 | \code{width}.}
22 | }
23 | \value{
24 | For \code{pagesize()}, the pagesize attribute of the \code{rtf_doc}
25 | object. For \code{`pagesize<-`()} and \code{set_pagesize()}, the modified
26 | object.
27 | }
28 | \description{
29 | These property functions modify or return the \code{pagesize} attribute of a
30 | \code{rtf_doc} object. Stored as a named vector with \code{height} and
31 | \code{width} names.
32 | }
33 | \details{
34 | Note that when the orientation of the document is switched
35 | to 'portrait', the height and width will reverse when the RTF document is being
36 | written - but the attribute values will not change. This is because the default
37 | \code{rtf_doc} orientation is 'landscape', and switching the attributes of the
38 | object allows for a possibility of inadvertently overriding the functionality
39 | of the \code{orientation} attribute.
40 | }
41 | \examples{
42 | library(huxtable)
43 | ht <- huxtable(
44 | column1 = 1:5,
45 | column2 = letters[1:5]
46 | )
47 | rtf <- rtf_doc(ht, list(hf_line("aTitle")))
48 |
49 | pagesize(rtf)
50 | # Returns c(height = 8.5, width = 11.0)
51 |
52 | pagesize(rtf) <- c(height = 12)
53 | # Sets height of page to 12 inches
54 |
55 | orientation(rtf) <- 'portrait'
56 | pagesize(rtf)
57 | # width height
58 | # 8.5 12.0
59 | # Note: Despite changing orientation, attributes don't change
60 |
61 | }
62 |
--------------------------------------------------------------------------------
/man/font.Rd:
--------------------------------------------------------------------------------
1 | % Generated by roxygen2: do not edit by hand
2 | % Please edit documentation in R/properties.R
3 | \name{font}
4 | \alias{font}
5 | \alias{font<-}
6 | \alias{set_font}
7 | \title{Return or set font}
8 | \usage{
9 | font(x, ...)
10 |
11 | font(x) <- value
12 |
13 | set_font(x, value)
14 | }
15 | \arguments{
16 | \item{x}{\code{rtf_doc} object, the table of a \code{rtf_doc} object, or a
17 | \code{hf_line} object}
18 |
19 | \item{...}{Additional arguments passed to method dispatch}
20 |
21 | \item{value}{A string representing a font}
22 | }
23 | \value{
24 | For \code{font()}, the font attribute of the object in the case of
25 | \code{hf_line} and the table, or each unique font in the table, titles,
26 | footnotes, and the overall document in the case of \code{rtf_doc}. For
27 | \code{set_font()} and \code{`font<-`()}, the modified object.
28 | }
29 | \description{
30 | These property functions modify or return the fonts of an \code{rtf_doc} object or
31 | individual titles/footnotes objects of the \code{hf_line} class.
32 |
33 | When used on an \code{rtf_doc} object to retrieve fonts, the distinct set of fonts
34 | of all objects contained within the rtf_doc are returned. When used on an
35 | \code{rtf_doc} to set fonts, the default font for the RTF document is set.
36 |
37 | When used on titles/footnotes (\code{hf_line} objects), the font is either returned
38 | of set for that individual line.
39 | }
40 | \examples{
41 | library(huxtable)
42 | ht <- huxtable(
43 | column1 = 1:5,
44 | column2 = letters[1:5]
45 | )
46 | rtf <- rtf_doc(ht, list(hf_line("text", font = "Comic Sans")))
47 |
48 | pharmaRTF::font(rtf)
49 | # Returns "Courier New" "Comic Sans"
50 |
51 | pharmaRTF::font(rtf) <- "Times"
52 |
53 | pharmaRTF::font(rtf)
54 | # Returns "Times" "Comic Sans"
55 |
56 | pharmaRTF::font(rtf$titles[[1]]) <- "Windings"
57 |
58 | pharmaRTF::font(rtf)
59 | # Returns "Times" "Windings"
60 |
61 |
62 | }
63 |
--------------------------------------------------------------------------------
/R/viewers.R:
--------------------------------------------------------------------------------
1 | #' View header and footer information
2 | #'
3 | #' @param doc RTF document
4 | #' @param type type
5 | #'
6 | #' @import utils
7 | #' @noRd
8 | view_hf <- function(doc, type=NULL) {
9 |
10 | # Take out the lines
11 | lines = order_lines(doc[[type]])
12 |
13 | # Stop if nothing to view
14 | assert_that(length(lines) > 0,
15 | msg = sprintf('No %s to view', type))
16 |
17 | # Get the row length
18 | rows <- length(lines)
19 |
20 | # Create the template data frame
21 |
22 | .data <- data.frame(
23 | text1 = character(rows),
24 | text2 = character(rows),
25 | align = character(rows),
26 | bold = logical(rows),
27 | italic = logical(rows),
28 | font = character(rows),
29 | font_size = numeric(rows),
30 | index = numeric(rows),
31 | stringsAsFactors = FALSE
32 | )
33 |
34 | # Loop the lines and update rows in data frame
35 | for (i in 1:length(lines)) {
36 | l <- lines[[i]]
37 | .data$text1[i] <- text(l)[1]
38 | .data$text2[i] <- text(l)[2]
39 | .data$align[i] <- align(l)
40 | .data$bold[i] <- bold(l)
41 | .data$italic[i] <- italic(l)
42 | .data$font[i] <- font(l)
43 | .data$font_size[i] <- font_size(l)
44 | .data$index[i] <- index(l)
45 | }
46 |
47 | .data
48 | }
49 |
50 | #' View title information
51 | #'
52 | #' View titles attached to an \code{rtf_doc} as a data.frame.
53 | #'
54 | #' @param doc \code{rtf_doc} object
55 | #'
56 | #' @return \code{data.frame} of the title information
57 | #' @export
58 | view_titles <- function(doc) {
59 | view_hf(doc, type='titles')
60 | }
61 |
62 | #' View footnote information
63 | #'
64 | #' View footnotes attached to an \code{rtf_doc} as a data.frame.
65 | #'
66 | #' @param doc \code{rtf_doc} object
67 | #'
68 | #' @return \code{data.frame} of the footnote information
69 | #' @export
70 | view_footnotes <- function(doc) {
71 | view_hf(doc, type='footnotes')
72 | }
73 |
--------------------------------------------------------------------------------
/docs/bootstrap-toc.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap Table of Contents v0.4.1 (http://afeld.github.io/bootstrap-toc/)
3 | * Copyright 2015 Aidan Feldman
4 | * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */
5 |
6 | /* modified from https://github.com/twbs/bootstrap/blob/94b4076dd2efba9af71f0b18d4ee4b163aa9e0dd/docs/assets/css/src/docs.css#L548-L601 */
7 |
8 | /* All levels of nav */
9 | nav[data-toggle='toc'] .nav > li > a {
10 | display: block;
11 | padding: 4px 20px;
12 | font-size: 13px;
13 | font-weight: 500;
14 | color: #767676;
15 | }
16 | nav[data-toggle='toc'] .nav > li > a:hover,
17 | nav[data-toggle='toc'] .nav > li > a:focus {
18 | padding-left: 19px;
19 | color: #563d7c;
20 | text-decoration: none;
21 | background-color: transparent;
22 | border-left: 1px solid #563d7c;
23 | }
24 | nav[data-toggle='toc'] .nav > .active > a,
25 | nav[data-toggle='toc'] .nav > .active:hover > a,
26 | nav[data-toggle='toc'] .nav > .active:focus > a {
27 | padding-left: 18px;
28 | font-weight: bold;
29 | color: #563d7c;
30 | background-color: transparent;
31 | border-left: 2px solid #563d7c;
32 | }
33 |
34 | /* Nav: second level (shown on .active) */
35 | nav[data-toggle='toc'] .nav .nav {
36 | display: none; /* Hide by default, but at >768px, show it */
37 | padding-bottom: 10px;
38 | }
39 | nav[data-toggle='toc'] .nav .nav > li > a {
40 | padding-top: 1px;
41 | padding-bottom: 1px;
42 | padding-left: 30px;
43 | font-size: 12px;
44 | font-weight: normal;
45 | }
46 | nav[data-toggle='toc'] .nav .nav > li > a:hover,
47 | nav[data-toggle='toc'] .nav .nav > li > a:focus {
48 | padding-left: 29px;
49 | }
50 | nav[data-toggle='toc'] .nav .nav > .active > a,
51 | nav[data-toggle='toc'] .nav .nav > .active:hover > a,
52 | nav[data-toggle='toc'] .nav .nav > .active:focus > a {
53 | padding-left: 28px;
54 | font-weight: 500;
55 | }
56 |
57 | /* from https://github.com/twbs/bootstrap/blob/e38f066d8c203c3e032da0ff23cd2d6098ee2dd6/docs/assets/css/src/docs.css#L631-L634 */
58 | nav[data-toggle='toc'] .nav > .active > ul {
59 | display: block;
60 | }
61 |
--------------------------------------------------------------------------------
/docs/docsearch.js:
--------------------------------------------------------------------------------
1 | $(function() {
2 |
3 | // register a handler to move the focus to the search bar
4 | // upon pressing shift + "/" (i.e. "?")
5 | $(document).on('keydown', function(e) {
6 | if (e.shiftKey && e.keyCode == 191) {
7 | e.preventDefault();
8 | $("#search-input").focus();
9 | }
10 | });
11 |
12 | $(document).ready(function() {
13 | // do keyword highlighting
14 | /* modified from https://jsfiddle.net/julmot/bL6bb5oo/ */
15 | var mark = function() {
16 |
17 | var referrer = document.URL ;
18 | var paramKey = "q" ;
19 |
20 | if (referrer.indexOf("?") !== -1) {
21 | var qs = referrer.substr(referrer.indexOf('?') + 1);
22 | var qs_noanchor = qs.split('#')[0];
23 | var qsa = qs_noanchor.split('&');
24 | var keyword = "";
25 |
26 | for (var i = 0; i < qsa.length; i++) {
27 | var currentParam = qsa[i].split('=');
28 |
29 | if (currentParam.length !== 2) {
30 | continue;
31 | }
32 |
33 | if (currentParam[0] == paramKey) {
34 | keyword = decodeURIComponent(currentParam[1].replace(/\+/g, "%20"));
35 | }
36 | }
37 |
38 | if (keyword !== "") {
39 | $(".contents").unmark({
40 | done: function() {
41 | $(".contents").mark(keyword);
42 | }
43 | });
44 | }
45 | }
46 | };
47 |
48 | mark();
49 | });
50 | });
51 |
52 | /* Search term highlighting ------------------------------*/
53 |
54 | function matchedWords(hit) {
55 | var words = [];
56 |
57 | var hierarchy = hit._highlightResult.hierarchy;
58 | // loop to fetch from lvl0, lvl1, etc.
59 | for (var idx in hierarchy) {
60 | words = words.concat(hierarchy[idx].matchedWords);
61 | }
62 |
63 | var content = hit._highlightResult.content;
64 | if (content) {
65 | words = words.concat(content.matchedWords);
66 | }
67 |
68 | // return unique words
69 | var words_uniq = [...new Set(words)];
70 | return words_uniq;
71 | }
72 |
73 | function updateHitURL(hit) {
74 |
75 | var words = matchedWords(hit);
76 | var url = "";
77 |
78 | if (hit.anchor) {
79 | url = hit.url_without_anchor + '?q=' + escape(words.join(" ")) + '#' + hit.anchor;
80 | } else {
81 | url = hit.url + '?q=' + escape(words.join(" "));
82 | }
83 |
84 | return url;
85 | }
86 |
--------------------------------------------------------------------------------
/man/ignore_cell_padding.Rd:
--------------------------------------------------------------------------------
1 | % Generated by roxygen2: do not edit by hand
2 | % Please edit documentation in R/properties.R
3 | \name{ignore_cell_padding}
4 | \alias{ignore_cell_padding}
5 | \alias{ignore_cell_padding<-}
6 | \alias{set_ignore_cell_padding}
7 | \title{Return or set ignore_cell_padding}
8 | \usage{
9 | ignore_cell_padding(x, ...)
10 |
11 | ignore_cell_padding(x) <- value
12 |
13 | set_ignore_cell_padding(x, value)
14 | }
15 | \arguments{
16 | \item{x}{A \code{rtf_doc} object}
17 |
18 | \item{...}{Additonal arguments passed to method dispatch}
19 |
20 | \item{value}{A logical value to set the attribute}
21 | }
22 | \value{
23 | For \code{ignore_cell_padding()}, the ignore_cell_padding attribute
24 | of the supplied \code{rtf_doc} object. For
25 | \code{`ignore_cell_padding<-`()} and \code{set_ignore_cell_padding()}, the
26 | modified object.
27 | }
28 | \description{
29 | These property functions modify and return the ignore_cell_padding attribute of a
30 | \code{rtf_doc} object. By default, the huxtable package will pad rows of a
31 | table. This attribute will remove those default settings – which allow the
32 | cells to have a smaller amount of padding than setting the cell padding to
33 | 0. See the Details section for a more thorough description of the
34 | implementation.
35 | }
36 | \details{
37 | Cell padding in RTF code has multiple command words associated with it.
38 | Huxtable uses the command word \\clpadN to control the cell padding.
39 | This command word is additionally controlled by the command word
40 | \\clpadfN. There are two possible values for N in \\clpadfN:
41 |
42 | \itemize{
43 | \item{0: Null. This ignores \\clpad in favor of \\trgaph (Word 97
44 | style cell padding).}
45 | \item{3: Twips}
46 | }
47 |
48 | The ignore_cell_padding function toggles the \\clpadfN command words
49 | in the RTF document to 0 instead of 3. By using Word 97 style cell padding,
50 | the minimum amount of space is closer than using the 0 twips setting when the
51 | RTF is rendered inside Word. This effectively closes the gap between rows,
52 | which may be a desirable appearance in some outputs.
53 |
54 | More information on these RTF settings can be found
55 | \href{http://www.biblioscape.com/rtf15_spec.htm}{here}.
56 | }
57 | \examples{
58 | library(huxtable)
59 | ht <- huxtable(
60 | column1 = 1:5,
61 | column2 = letters[1:5]
62 | )
63 | rtf <- rtf_doc(ht, list(hf_line("aTitle")))
64 |
65 | ignore_cell_padding(rtf)
66 | # Returns FALSE, the default
67 |
68 | ignore_cell_padding(rtf) <- TRUE
69 | # Sets ignore_cell_padding to TRUE
70 |
71 | }
72 |
--------------------------------------------------------------------------------
/R/table_component_extractors.R:
--------------------------------------------------------------------------------
1 | #' Return the RTF string for header columns
2 | #'
3 | #' This function relys on the package that the table originated from to create
4 | #' a RTF string.
5 | #'
6 | #' @param doc \code{rtf_doc} object to return header string from.
7 | #'
8 | #' @return A RTF encoding string containing the header information
9 | #' @noRd
10 | get_column_headers <- function(doc) UseMethod('get_column_headers', object=doc$table)
11 |
12 | #' @noRd
13 | get_column_headers.huxtable <- function(doc) {
14 |
15 | if(header_rows(doc) == 0) return("")
16 |
17 | # Get the column header
18 | col_headers <- doc$table[1:header_rows(doc$table), ]
19 |
20 | if (needs_buffer(doc)){
21 | col_headers <- insert_buffer(doc, col_headers)
22 | }
23 |
24 | # Now reset the font size to the default for all the NAs because default doesn't carry forward
25 | cfs <- huxtable::font_size(col_headers)
26 | cfs[is.na(cfs)] <- font_size(doc)
27 | huxtable::font_size(col_headers) <- cfs
28 |
29 | # For huxtable simply return the header rows of the table - turn off cell padding if specified
30 |
31 | out <- huxtable::to_rtf(col_headers, fc_tables = huxtable::rtf_fc_tables(doc$table, extra_fonts = c("Times", font(doc))))
32 | if (ignore_cell_padding(doc)) {
33 | replace_cell_padding(out)
34 | } else {
35 | out
36 | }
37 | }
38 |
39 | # #' @noRd
40 | # get_column_headers.gt_tbl <- function(doc) {
41 | # data <- gt:::build_data(doc$table, context='rtf')
42 | # gt:::create_columns_component_r(data = data)
43 | # }
44 |
45 | #' Return the RTF string for the body of a table
46 | #'
47 | #' This function relys on the package that the table originated from to create
48 | #' a RTF string.
49 | #'
50 | #' @param doc \code{rtf_doc} object to return header string from.
51 | #'
52 | #' @return A RTF encoding string containing the header information
53 | #' @noRd
54 | get_table_body <- function(doc) UseMethod('get_table_body', object=doc$table)
55 |
56 | #' @noRd
57 | get_table_body.huxtable <- function(doc) {
58 | # For huxtable take everything after the header riws
59 | start_row <- header_rows(doc$table) + 1
60 | body <- doc$table[start_row:nrow(doc$table), ]
61 |
62 | # Turn off cell padding if specified
63 | out <- huxtable::to_rtf(body, fc_tables = huxtable::rtf_fc_tables(doc$table, extra_fonts = c("Times", font(doc))))
64 | if (ignore_cell_padding(doc)) {
65 | replace_cell_padding(out)
66 | } else {
67 | out
68 | }
69 | }
70 |
71 | # #' @noRd
72 | # get_table_body.gt_tbl <- function(doc) {
73 | # data <- gt:::build_data(doc$table, context='rtf')
74 | # gt:::create_body_component_r(data = data)
75 | # }
76 |
--------------------------------------------------------------------------------
/man/titles_and_footnotes_from_df.Rd:
--------------------------------------------------------------------------------
1 | % Generated by roxygen2: do not edit by hand
2 | % Please edit documentation in R/read_hf.R
3 | \name{titles_and_footnotes_from_df}
4 | \alias{titles_and_footnotes_from_df}
5 | \title{Read titles and footnotes from a dataframe}
6 | \usage{
7 | titles_and_footnotes_from_df(
8 | doc,
9 | from.df = NULL,
10 | from.file = NULL,
11 | reader = NULL,
12 | ...
13 | )
14 | }
15 | \arguments{
16 | \item{doc}{A \code{rtf_doc} object to append header and footnote
17 | information.}
18 |
19 | \item{from.df}{A \code{data.frame} object with title and footnote information.}
20 |
21 | \item{from.file}{A file path to a file with title and footnote information.}
22 |
23 | \item{reader}{A function to read the data from the from.file argument.}
24 |
25 | \item{...}{Parameters passed to \code{read_hf} where they are processed and
26 | constructed into \code{hf_line} objects.}
27 | }
28 | \value{
29 | A \code{rtf_doc} object with header/footnote information attached.
30 | }
31 | \description{
32 | Reads a data frame with header/footnote information and attaches it to an
33 | \code{rtf_doc} object.The most effective way to use this function is to pass
34 | information to a custom reader for your process. See Details section for more
35 | information.
36 | }
37 | \details{
38 | Titles_and_footnotes_from_df allows you to attach titles and footnotes
39 | (as hf_line objects) from a data.frame. This data.frame could be a
40 | data.frame in your local environment, or read in from an external file. The
41 | best way to utilize this method is to create a custom reader function. This
42 | custom reader function is a function that you develop to:
43 |
44 | \itemize{
45 | \item{Read a source file into a data.frame}
46 | \item{Preprocess as necessary to keep only necessary records and variables}
47 | \item{Ensure that variables are the correct data type}
48 | }
49 |
50 | Titles_and_footnotes_from_df allows you to pass arguments into the reader
51 | function, which gives you the capability to keep titles and footnotes for
52 | all of your outputs in a central file and pass a filtering option, or any
53 | additional parameters as necessary. For an example implementation, see our
54 | \href{https://atorus-research.github.io/tf_from_file.html}{vignette}.
55 | }
56 | \section{Required Columns}{
57 |
58 | The following columns are required fields in a data.frame passed to
59 | titles_and_footnotes_from_df:
60 | \itemize{
61 | \item{type(character - 'title' or 'footnote')}
62 | \item{text1(character)}
63 | \item{text2(character)}
64 | \item{align(character - left, right, center, or split)}
65 | \item{bold(logical)}
66 | \item{italic(logical)}
67 | \item{font(character)}
68 | \item{index(numeric)}
69 | }
70 | }
71 |
72 |
--------------------------------------------------------------------------------
/NAMESPACE:
--------------------------------------------------------------------------------
1 | # Generated by roxygen2: do not edit by hand
2 |
3 | S3method("align<-",hf_line)
4 | S3method("bold<-",hf_line)
5 | S3method("column_header_buffer<-",rtf_doc)
6 | S3method("font<-",hf_line)
7 | S3method("font<-",rtf_doc)
8 | S3method("font_size<-",hf_line)
9 | S3method("font_size<-",rtf_doc)
10 | S3method("footer_height<-",rtf_doc)
11 | S3method("header_height<-",rtf_doc)
12 | S3method("header_rows<-",gt_tbl)
13 | S3method("header_rows<-",huxtable)
14 | S3method("header_rows<-",rtf_doc)
15 | S3method("ignore_cell_padding<-",rtf_doc)
16 | S3method("index<-",hf_line)
17 | S3method("italic<-",hf_line)
18 | S3method("margins<-",rtf_doc)
19 | S3method("orientation<-",rtf_doc)
20 | S3method("pagesize<-",rtf_doc)
21 | S3method("text<-",hf_line)
22 | S3method(align,hf_line)
23 | S3method(bold,hf_line)
24 | S3method(column_header_buffer,rtf_doc)
25 | S3method(font,gt_tbl)
26 | S3method(font,hf_line)
27 | S3method(font,huxtable)
28 | S3method(font,rtf_doc)
29 | S3method(font_size,hf_line)
30 | S3method(font_size,rtf_doc)
31 | S3method(footer_height,rtf_doc)
32 | S3method(header_height,rtf_doc)
33 | S3method(header_rows,gt_tbl)
34 | S3method(header_rows,huxtable)
35 | S3method(header_rows,rtf_doc)
36 | S3method(ignore_cell_padding,rtf_doc)
37 | S3method(index,hf_line)
38 | S3method(italic,hf_line)
39 | S3method(margins,rtf_doc)
40 | S3method(orientation,rtf_doc)
41 | S3method(pagesize,rtf_doc)
42 | S3method(set_column_header_buffer,rtf_doc)
43 | S3method(text,hf_line)
44 | export("align<-")
45 | export("bold<-")
46 | export("column_header_buffer<-")
47 | export("font<-")
48 | export("font_size<-")
49 | export("footer_height<-")
50 | export("header_height<-")
51 | export("header_rows<-")
52 | export("ignore_cell_padding<-")
53 | export("index<-")
54 | export("italic<-")
55 | export("margins<-")
56 | export("orientation<-")
57 | export("pagesize<-")
58 | export("text<-")
59 | export(add_footnotes)
60 | export(add_titles)
61 | export(align)
62 | export(bold)
63 | export(column_header_buffer)
64 | export(font)
65 | export(font_size)
66 | export(footer_height)
67 | export(header_height)
68 | export(header_rows)
69 | export(hf_line)
70 | export(ignore_cell_padding)
71 | export(index)
72 | export(italic)
73 | export(margins)
74 | export(orientation)
75 | export(pagesize)
76 | export(rtf_doc)
77 | export(set_align)
78 | export(set_bold)
79 | export(set_column_header_buffer)
80 | export(set_font)
81 | export(set_font_size)
82 | export(set_footer_height)
83 | export(set_header_height)
84 | export(set_header_rows)
85 | export(set_ignore_cell_padding)
86 | export(set_index)
87 | export(set_italic)
88 | export(set_margins)
89 | export(set_orientation)
90 | export(set_pagesize)
91 | export(set_text)
92 | export(text)
93 | export(titles_and_footnotes_from_df)
94 | export(view_footnotes)
95 | export(view_titles)
96 | export(write_rtf)
97 | import(utils)
98 | importFrom(assertthat,assert_that)
99 | importFrom(assertthat,is.writeable)
100 | importFrom(huxtable,as_hux)
101 | importFrom(purrr,transpose)
102 | importFrom(stringr,str_replace_all)
103 |
--------------------------------------------------------------------------------
/.github/workflows/R-CMD-check.yaml:
--------------------------------------------------------------------------------
1 | # For help debugging build failures open an issue on the RStudio community with the 'github-actions' tag.
2 | # https://community.rstudio.com/new-topic?category=Package%20development&tags=github-actions
3 | on:
4 | push:
5 | branches:
6 | - main
7 | - master
8 | pull_request:
9 | branches:
10 | - main
11 | - master
12 |
13 | name: R-CMD-check
14 |
15 | jobs:
16 | R-CMD-check:
17 | runs-on: ${{ matrix.config.os }}
18 |
19 | name: ${{ matrix.config.os }} (${{ matrix.config.r }})
20 |
21 | strategy:
22 | fail-fast: false
23 | matrix:
24 | config:
25 | - {os: windows-latest, r: 'release'}
26 | - {os: macOS-latest, r: 'release'}
27 | - {os: ubuntu-20.04, r: 'release', rspm: "https://packagemanager.rstudio.com/cran/__linux__/focal/latest"}
28 | - {os: ubuntu-20.04, r: 'devel', rspm: "https://packagemanager.rstudio.com/cran/__linux__/focal/latest"}
29 |
30 | env:
31 | R_REMOTES_NO_ERRORS_FROM_WARNINGS: true
32 | RSPM: ${{ matrix.config.rspm }}
33 | GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
34 |
35 | steps:
36 | - uses: actions/checkout@v2
37 |
38 | - uses: r-lib/actions/setup-r@v1
39 | with:
40 | r-version: ${{ matrix.config.r }}
41 |
42 | - uses: r-lib/actions/setup-pandoc@v1
43 |
44 | - name: Query dependencies
45 | run: |
46 | install.packages('remotes')
47 | saveRDS(remotes::dev_package_deps(dependencies = TRUE), ".github/depends.Rds", version = 2)
48 | writeLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), ".github/R-version")
49 | shell: Rscript {0}
50 |
51 | - name: Restore R package cache
52 | if: runner.os != 'Windows'
53 | uses: actions/cache@v2
54 | with:
55 | path: ${{ env.R_LIBS_USER }}
56 | key: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1-${{ hashFiles('.github/depends.Rds') }}
57 | restore-keys: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1-
58 |
59 | - name: Install system dependencies
60 | if: runner.os == 'Linux'
61 | run: |
62 | while read -r cmd
63 | do
64 | eval sudo $cmd
65 | done < <(Rscript -e 'writeLines(remotes::system_requirements("ubuntu", "20.04"))')
66 |
67 | - name: Install dependencies
68 | run: |
69 | remotes::install_deps(dependencies = TRUE)
70 | remotes::install_cran("rcmdcheck")
71 | shell: Rscript {0}
72 |
73 | - name: Check
74 | env:
75 | _R_CHECK_CRAN_INCOMING_REMOTE_: false
76 | run: |
77 | options(crayon.enabled = TRUE)
78 | rcmdcheck::rcmdcheck(args = c("--no-manual", "--as-cran"), error_on = "warning", check_dir = "check")
79 | shell: Rscript {0}
80 |
81 | - name: Upload check results
82 | if: failure()
83 | uses: actions/upload-artifact@main
84 | with:
85 | name: ${{ runner.os }}-r${{ matrix.config.r }}-results
86 | path: check
87 |
--------------------------------------------------------------------------------
/vignettes/Validation/Specifications/specification.Rmd:
--------------------------------------------------------------------------------
1 | #' @section Last Updated By:
2 | #' Ashley Tarasiewicz
3 | #' @section Last Update Date:
4 | #' 6/16/2020
5 | + A: The RTF written out to a file can be opened in Microsoft Word
6 | + B: Paging of the table works appropriately
7 | + C: Changes to document level margins are reflected in the output document
8 | + D: Changes to document level header and footer height are reflected in the output document
9 | + E: Changes to document level page size are reflected in the output document
10 | + F: Changes to document level orientation are reflected in the output document
11 | + G: Changes to document level default font size are reflected in the output document
12 | + H: Changes to document level default font are reflected in the output document
13 | + I: Changes to document level header rows are reflected in the output document
14 | + J: Changes to document level column header buffer are reflected in the output document
15 | + K: Changes to document level ignore cell padding are reflected in the output document
16 | + L: Titles and footnotes can be manually entered in the RTF document creation
17 | + M: Titles and footnotes can be manually entered using add_titles/add_footnotes
18 | + N: Titles and footnotes can be manually entered importing from a separate file using a reader
19 | + O: PAGE_FORMAT for titles and footnotes works properly
20 | + P: DATE_FORMAT for titles and footnotes works properly
21 | + Q: FILE_PATH for titles and footnotes works properly
22 | + R: Bold titles/footnotes attributes update correctly when specified
23 | + S: Italic titles/footnotes attributes update correctly when specified
24 | + T: Align titles/footnotes attributes update correctly when specified, i.e. split titles/footnotes flush left and right as expected
25 | + U: Font titles/footnotes attributes update correctly when specified
26 | + V: Font size titles/footnotes attributes update correctly when specified
27 | + W: Index titles/footnotes attributes update correctly when specified, i.e. specified indices sort appropriately when entered in separte orders, NULL indices sort last
28 | + X: View functions (i.e. view_titles and view_footnotes) render data frames appropriately
29 | + Y: Updates to huxtable table bold table level property is properly formatted in the resulting RTF
30 | + Z: Updates to huxtable table italic table level property is properly formatted in the resulting RTF
31 | + AA: Updates to huxtable table alignment (center, left, right) table level property is properly formatted in the resulting RTF
32 | + AB: Updates to huxtable table vertical alignment (center, top, bottom) table level property is properly formatted in the resulting RTF
33 | + AC: Updates to huxtable table table width table level property is properly formatted in the resulting RTF
34 | + AD: Updates to huxtable table column width table level property is properly formatted in the resulting RTF
35 | + AE: Updates to huxtable table row height table level property is properly formatted in the resulting RTF
36 | + AF: Updates to huxtable table cell merging table level property is properly formatted in the resulting RTF
37 | + AG: When the header_rows attribute is 0, the column headers write to the RTF body instead of the document header
38 |
--------------------------------------------------------------------------------
/vignettes/specs.csv:
--------------------------------------------------------------------------------
1 | LineType,Level,SpecID,Text
2 | UpdatedBy,0,,Ashley Tarasiewicz
3 | UpdatedDate,0,,6/16/2020
4 | Specs,0,A,The RTF written out to a file can be opened in Microsoft Word
5 | Specs,0,B,Paging of the table works appropriately
6 | Specs,0,C,Changes to document level margins are reflected in the output document
7 | Specs,0,D,Changes to document level header and footer height are reflected in the output document
8 | Specs,0,E,Changes to document level page size are reflected in the output document
9 | Specs,0,F,Changes to document level orientation are reflected in the output document
10 | Specs,0,G,Changes to document level default font size are reflected in the output document
11 | Specs,0,H,Changes to document level default font are reflected in the output document
12 | Specs,0,I,Changes to document level header rows are reflected in the output document
13 | Specs,0,J,Changes to document level column header buffer are reflected in the output document
14 | Specs,0,K,Changes to document level ignore cell padding are reflected in the output document
15 | Specs,0,L,Titles and footnotes can be manually entered in the RTF document creation
16 | Specs,0,M,Titles and footnotes can be manually entered using add_titles/add_footnotes
17 | Specs,0,N,Titles and footnotes can be manually entered importing from a separate file using a reader
18 | Specs,0,O,PAGE_FORMAT for titles and footnotes works properly
19 | Specs,0,P,DATE_FORMAT for titles and footnotes works properly
20 | Specs,0,Q,FILE_PATH for titles and footnotes works properly
21 | Specs,0,R,Bold titles/footnotes attributes update correctly when specified
22 | Specs,0,S,Italic titles/footnotes attributes update correctly when specified
23 | Specs,0,T,"Align titles/footnotes attributes update correctly when specified, i.e. split titles/footnotes flush left and right as expected"
24 | Specs,0,U,Font titles/footnotes attributes update correctly when specified
25 | Specs,0,V,Font size titles/footnotes attributes update correctly when specified
26 | Specs,0,W,"Index titles/footnotes attributes update correctly when specified, i.e. specified indices sort appropriately when entered in separte orders, NULL indices sort last"
27 | Specs,0,X,View functions (i.e. view_titles and view_footnotes) render data frames appropriately
28 | Specs,0,Y,Updates to huxtable table bold table level property is properly formatted in the resulting RTF
29 | Specs,0,Z,Updates to huxtable table italic table level property is properly formatted in the resulting RTF
30 | Specs,0,AA,"Updates to huxtable table alignment (center, left, right) table level property is properly formatted in the resulting RTF"
31 | Specs,0,AB,"Updates to huxtable table vertical alignment (center, top, bottom) table level property is properly formatted in the resulting RTF"
32 | Specs,0,AC,Updates to huxtable table table width table level property is properly formatted in the resulting RTF
33 | Specs,0,AD,Updates to huxtable table column width table level property is properly formatted in the resulting RTF
34 | Specs,0,AE,Updates to huxtable table row height table level property is properly formatted in the resulting RTF
35 | Specs,0,AF,Updates to huxtable table cell merging table level property is properly formatted in the resulting RTF
36 | Specs,0,AG,"When the header_rows attribute is 0, the column headers write to the RTF body instead of the document header"
37 |
--------------------------------------------------------------------------------
/docs/pkgdown.js:
--------------------------------------------------------------------------------
1 | /* http://gregfranko.com/blog/jquery-best-practices/ */
2 | (function($) {
3 | $(function() {
4 |
5 | $('.navbar-fixed-top').headroom();
6 |
7 | $('body').css('padding-top', $('.navbar').height() + 10);
8 | $(window).resize(function(){
9 | $('body').css('padding-top', $('.navbar').height() + 10);
10 | });
11 |
12 | $('[data-toggle="tooltip"]').tooltip();
13 |
14 | var cur_path = paths(location.pathname);
15 | var links = $("#navbar ul li a");
16 | var max_length = -1;
17 | var pos = -1;
18 | for (var i = 0; i < links.length; i++) {
19 | if (links[i].getAttribute("href") === "#")
20 | continue;
21 | // Ignore external links
22 | if (links[i].host !== location.host)
23 | continue;
24 |
25 | var nav_path = paths(links[i].pathname);
26 |
27 | var length = prefix_length(nav_path, cur_path);
28 | if (length > max_length) {
29 | max_length = length;
30 | pos = i;
31 | }
32 | }
33 |
34 | // Add class to parent , and enclosing if in dropdown
35 | if (pos >= 0) {
36 | var menu_anchor = $(links[pos]);
37 | menu_anchor.parent().addClass("active");
38 | menu_anchor.closest("li.dropdown").addClass("active");
39 | }
40 | });
41 |
42 | function paths(pathname) {
43 | var pieces = pathname.split("/");
44 | pieces.shift(); // always starts with /
45 |
46 | var end = pieces[pieces.length - 1];
47 | if (end === "index.html" || end === "")
48 | pieces.pop();
49 | return(pieces);
50 | }
51 |
52 | // Returns -1 if not found
53 | function prefix_length(needle, haystack) {
54 | if (needle.length > haystack.length)
55 | return(-1);
56 |
57 | // Special case for length-0 haystack, since for loop won't run
58 | if (haystack.length === 0) {
59 | return(needle.length === 0 ? 0 : -1);
60 | }
61 |
62 | for (var i = 0; i < haystack.length; i++) {
63 | if (needle[i] != haystack[i])
64 | return(i);
65 | }
66 |
67 | return(haystack.length);
68 | }
69 |
70 | /* Clipboard --------------------------*/
71 |
72 | function changeTooltipMessage(element, msg) {
73 | var tooltipOriginalTitle=element.getAttribute('data-original-title');
74 | element.setAttribute('data-original-title', msg);
75 | $(element).tooltip('show');
76 | element.setAttribute('data-original-title', tooltipOriginalTitle);
77 | }
78 |
79 | if(ClipboardJS.isSupported()) {
80 | $(document).ready(function() {
81 | var copyButton = "";
82 |
83 | $(".examples, div.sourceCode").addClass("hasCopyButton");
84 |
85 | // Insert copy buttons:
86 | $(copyButton).prependTo(".hasCopyButton");
87 |
88 | // Initialize tooltips:
89 | $('.btn-copy-ex').tooltip({container: 'body'});
90 |
91 | // Initialize clipboard:
92 | var clipboardBtnCopies = new ClipboardJS('[data-clipboard-copy]', {
93 | text: function(trigger) {
94 | return trigger.parentNode.textContent;
95 | }
96 | });
97 |
98 | clipboardBtnCopies.on('success', function(e) {
99 | changeTooltipMessage(e.trigger, 'Copied!');
100 | e.clearSelection();
101 | });
102 |
103 | clipboardBtnCopies.on('error', function() {
104 | changeTooltipMessage(e.trigger,'Press Ctrl+C or Command+C to copy');
105 | });
106 | });
107 | }
108 | })(window.jQuery || window.$)
109 |
--------------------------------------------------------------------------------
/vignettes/roxy_block_details.R:
--------------------------------------------------------------------------------
1 | #' @title Retrieve the value in a function specifiation block of a custom section
2 | #' @param tag name of the section, case insensitive.
3 | #' @param block character vector that holds the documentation block
4 | #' @return section value
5 | get_section_contents <- function(tag, block){
6 | tag_no <- which(grepl(pattern = tolower(tag), tolower(block)))
7 | gsub(pattern = "[[:space:]]^|[[:space:]]$", replacement = "",
8 | x = block[tag_no + 1])
9 | }
10 |
11 | #' @title Generate at data.frame from the function specification roxygen documentation
12 | #' block.
13 | #' @description May be used for specification or test case .Rmd files located
14 | #' in \code{function_specification} folder.
15 | #' @param one_file full filepath of the .Rmd file to scrape
16 | #' @return data.frame with variables: \code{title}, \code{last_update_by}, and
17 | #' \code{last_updated_date}.
18 | #' @examples
19 | #' \dontrun{
20 | #' library(here)
21 | #' library(magrittr)
22 | #' list.files(here("vignettes", "function_specifications", "test_cases"),
23 | #' full.names = TRUE)[1:4] %>%
24 | #' lapply(., scrape_function_specification_block) %>%
25 | #' do.call(rbind, .)
26 | #'
27 | #' list.files(here("vignettes", "function_specifications", "specifications"),
28 | #' full.names = TRUE)[1:4] %>%
29 | #' lapply(., scrape_function_specifications) %>%
30 | #' do.call(rbind, .)
31 | #' }
32 | scrape_function_specification_block <- function(one_file){
33 | lines <- readLines(one_file)
34 | rox_block <- gsub(pattern = "#' ", replacement = "",
35 | x = lines[grep(pattern = "#' ", x = lines)])
36 | data.frame(title = basename(one_file),
37 | last_update_by = get_section_contents("Last updated by", rox_block),
38 | last_updated_date = lubridate::parse_date_time(get_section_contents("last update date", rox_block),
39 | orders = c("ymd", "mdy")),
40 | stringsAsFactors = FALSE)
41 | }
42 |
43 |
44 | #' @title Generate at data.frame from the function roxygen documentation
45 | #' block.
46 | #' @description May be used for specification or test case .Rmd files located
47 | #' in \code{function_specification} folder.
48 | #' @param one_file full filepath of the .R file to scrape
49 | #' @return data.frame with variables: \code{title}, \code{author}, and
50 | #' \code{last_updated_date}.
51 | scrape_function_author_block <- function(one_file){
52 | refs <- parse(one_file, keep.source = TRUE,
53 | srcfile = srcfilecopy(one_file, lines, isFile = TRUE)) %>%
54 | utils::getSrcref()
55 | srcfile <- attr(refs[[1]], "srcfile")
56 | do.call(rbind, lapply(seq_along(refs), function(i) {
57 | first_byte <- refs[[i]][4]
58 | first_line <- ifelse(i == 1, 1, refs[[i - 1]][1])
59 | last_line <- refs[[i]][1] - 1
60 | last_byte <- refs[[i]][3]
61 | lloc <- c(first_line, first_byte, last_line, last_byte)
62 | out <- as.character(srcref(srcfile, lloc))
63 | out_cleaned <- out[grepl(out, pattern = "#' ")]
64 | if (length(out_cleaned) == 0 | length(grep(out_cleaned, pattern = "#' @section")) == 0) {
65 | return(data.frame())
66 | } else {
67 | roxy_block <- gsub(pattern = "#' ", replacement = "",
68 | out_cleaned[grep(pattern = "#' ", out_cleaned)])
69 | return(data.frame(title = as.character(parse(text = as.character(refs[[i]]))[[1]])[2],
70 | author = get_section_contents("updated by", roxy_block),
71 | last_updated_date = lubridate::parse_date_time(get_section_contents(" date", tolower(roxy_block)),
72 | orders = c("ymd", "mdy")),
73 | stringsAsFactors = FALSE))
74 | }
75 | }))
76 | }
77 |
--------------------------------------------------------------------------------
/vignettes/Validation/app.R:
--------------------------------------------------------------------------------
1 | library(shiny)
2 | library(shinydashboard)
3 | ui <- fluidPage(
4 | dashboardPage(
5 | dashboardHeader(title = "Validation User Application"),
6 | dashboardSidebar(disable = TRUE),
7 | dashboardBody(
8 | box(
9 | uiOutput("vurOutput"),
10 | actionButton("sendButton", "Submit"),
11 | actionButton("backButton", "Prev Question"),
12 | actionButton("nextButton", "Next Question"),
13 | actionButton("openButton" , "Open File"),
14 | verbatimTextOutput("checkInfo"),
15 | title = "Current Check"
16 | ),
17 | box(
18 | tableOutput("UserDf"),
19 | actionButton("saveButton", "Create Validation Document"),
20 | verbatimTextOutput("userInfo"),
21 | title = "User Tests"
22 | )
23 | )
24 | )
25 | )
26 |
27 | server <- function(input, output) {
28 |
29 | vur <- reactiveValues(df = {
30 | df <- read.csv("../test_cases.csv")
31 | df <- df[df$CheckType == "visual",]
32 | df$Response <- FALSE
33 | df$Log <- NA
34 | df$ID <- paste0(df$TestID, ".", df$CheckID)
35 | df
36 | })
37 |
38 | observeEvent(input$sendButton, {
39 | vur$df[((input$nextButton - input$backButton + input$sendButton - 1) %% nrow(vur$df)) + 1,
40 | "Response"] <- as.logical(input$vurButtons)
41 | vur$df[((input$nextButton - input$backButton + input$sendButton - 1) %% nrow(vur$df)) + 1,
42 | "Log"] <- paste0(Sys.getenv("LOGNAME"), ":", Sys.time())
43 | })
44 |
45 | output$vurOutput <- renderUI({
46 | radioButtons("vurButtons",
47 | vur$df[((input$nextButton - input$backButton + input$sendButton) %% nrow(vur$df)) + 1, "Text"],
48 | choices = c(TRUE, FALSE))
49 | })
50 |
51 | output$checkInfo <- renderText({
52 | paste0(
53 | "Current Test: ", vur$df[((input$nextButton - input$backButton + input$sendButton) %% nrow(vur$df)) + 1,
54 | "TestID"], "\n",
55 | "Current Check: " , vur$df[((input$nextButton - input$backButton + input$sendButton) %% nrow(vur$df)) + 1,
56 | "CheckID"], "\n",
57 | "Manual Check of: ", vur$df[((input$nextButton - input$backButton + input$sendButton) %% nrow(vur$df)) + 1,
58 | "OutputFile"]
59 | )
60 | })
61 |
62 | observeEvent(input$saveButton, {
63 | saveRDS(vur$df, "~/pharmaRTF/vignettes/Validation/vur_auto.Rds")
64 | showModal(modalDialog("Validation User Responses written"))
65 | rmarkdown::render("~/pharmaRTF/vignettes/Validate.Rmd", "pdf_document")
66 | # file.remove("~/pharmaRTF/vignettes/Validation/vur_auto.Rds")
67 | })
68 |
69 | output$UserDf <- renderTable(vur$df[, c("ID", "Text", "OutputFile", "Response")])
70 |
71 | output$userInfo <- renderText({
72 | paste0("User: ", Sys.getenv("USER"), "\n",
73 | "Tests Passed/Failed/Total: ",
74 | sum(vur$df$Response), "/",
75 | sum(!vur$df$Response), "/",
76 | length(vur$df$Response))
77 | })
78 |
79 | observeEvent(input$openButton, {
80 | filePath <- paste0(getwd(),
81 | "/Test_Case_Code/rtf-test-files/",
82 | vur$df[((input$nextButton - input$backButton + input$sendButton) %% nrow(vur$df)) + 1,
83 | "OutputFile"]
84 | )
85 | if(file.exists(filePath)){
86 | showModal(modalDialog("This doesn't work yet"))
87 | # system(filePath)
88 | } else {
89 | showModal(modalDialog("RTF File Not found"))
90 | }
91 | })
92 | }
93 |
94 | shinyApp(ui = ui, server = server)
95 |
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_6.rtf:
--------------------------------------------------------------------------------
1 | {\rtf1\ansi\deff1
2 | {\fonttbl
3 | {\f0 Times;}
4 | {\f1 Courier New;}
5 | }{\colortbl;;}
6 |
7 |
8 |
9 | \paperw12240\paperh15840\widowctrl\ftnbj\fet0\sectd\linex0
10 | \margl1440\margr1440\margt1440\margb1440
11 | \headery720\footery720\fs24
12 |
13 |
14 |
15 | {\header
16 |
17 | \par
18 |
19 | {
20 | \trowd
21 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
22 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{\fs24 {Header1}}\cell
23 | \pard\intbl\ql{\fs24 {Header2}}\cell
24 | \row
25 | }
26 |
27 | }
28 | {\footer
29 | \par
30 | }
31 | {
32 | \trowd
33 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
34 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{1}\cell
35 | \pard\intbl\ql{a}\cell
36 | \row
37 | }
38 |
39 | {
40 | \trowd
41 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
42 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{2}\cell
43 | \pard\intbl\ql{b}\cell
44 | \row
45 | }
46 |
47 | {
48 | \trowd
49 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
50 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{3}\cell
51 | \pard\intbl\ql{c}\cell
52 | \row
53 | }
54 |
55 | {
56 | \trowd
57 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
58 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{4}\cell
59 | \pard\intbl\ql{d}\cell
60 | \row
61 | }
62 |
63 | {
64 | \trowd
65 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
66 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{5}\cell
67 | \pard\intbl\ql{e}\cell
68 | \row
69 | }
70 |
71 | {
72 | \trowd
73 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
74 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{6}\cell
75 | \pard\intbl\ql{f}\cell
76 | \row
77 | }
78 |
79 | {
80 | \trowd
81 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
82 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{7}\cell
83 | \pard\intbl\ql{g}\cell
84 | \row
85 | }
86 |
87 | {
88 | \trowd
89 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
90 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{8}\cell
91 | \pard\intbl\ql{h}\cell
92 | \row
93 | }
94 |
95 | {
96 | \trowd
97 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
98 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{9}\cell
99 | \pard\intbl\ql{i}\cell
100 | \row
101 | }
102 |
103 | {
104 | \trowd
105 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
106 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{10}\cell
107 | \pard\intbl\ql{j}\cell
108 | \row
109 | }
110 |
111 | }
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_54.rtf:
--------------------------------------------------------------------------------
1 | {\rtf1\ansi\deff1
2 | {\fonttbl
3 | {\f0 Times;}
4 | {\f1 Courier New;}
5 | }{\colortbl;;}
6 |
7 |
8 |
9 | \paperw15840\paperh12240\widowctrl\ftnbj\fet0\sectd\linex0
10 | \lndscpsxn
11 | \margl1440\margr1440\margt1440\margb1440
12 | \headery720\footery720\fs24
13 |
14 |
15 |
16 | {\header
17 |
18 | \par
19 |
20 | }
21 | {\footer
22 | \par
23 | }
24 | {
25 | \trowd
26 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
27 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{Header1}\cell
28 | \pard\intbl\ql{Header2}\cell
29 | \row
30 | }
31 |
32 | {
33 | \trowd
34 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
35 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{1}\cell
36 | \pard\intbl\ql{a}\cell
37 | \row
38 | }
39 |
40 | {
41 | \trowd
42 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
43 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{2}\cell
44 | \pard\intbl\ql{b}\cell
45 | \row
46 | }
47 |
48 | {
49 | \trowd
50 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
51 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{3}\cell
52 | \pard\intbl\ql{c}\cell
53 | \row
54 | }
55 |
56 | {
57 | \trowd
58 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
59 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{4}\cell
60 | \pard\intbl\ql{d}\cell
61 | \row
62 | }
63 |
64 | {
65 | \trowd
66 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
67 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{5}\cell
68 | \pard\intbl\ql{e}\cell
69 | \row
70 | }
71 |
72 | {
73 | \trowd
74 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
75 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{6}\cell
76 | \pard\intbl\ql{f}\cell
77 | \row
78 | }
79 |
80 | {
81 | \trowd
82 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
83 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{7}\cell
84 | \pard\intbl\ql{g}\cell
85 | \row
86 | }
87 |
88 | {
89 | \trowd
90 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
91 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{8}\cell
92 | \pard\intbl\ql{h}\cell
93 | \row
94 | }
95 |
96 | {
97 | \trowd
98 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
99 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{9}\cell
100 | \pard\intbl\ql{i}\cell
101 | \row
102 | }
103 |
104 | {
105 | \trowd
106 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
107 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{10}\cell
108 | \pard\intbl\ql{j}\cell
109 | \row
110 | }
111 |
112 | }
--------------------------------------------------------------------------------
/man/rtf_doc.Rd:
--------------------------------------------------------------------------------
1 | % Generated by roxygen2: do not edit by hand
2 | % Please edit documentation in R/rtf_doc.R
3 | \name{rtf_doc}
4 | \alias{rtf_doc}
5 | \title{Create a \code{rtf_doc} object}
6 | \usage{
7 | rtf_doc(table, titles = list(), footnotes = list(), header_rows = 1)
8 | }
9 | \arguments{
10 | \item{table}{A table of a supported class.}
11 |
12 | \item{titles}{A list of \code{hf_line} objects containing table titles and
13 | associated formatting.}
14 |
15 | \item{footnotes}{A list of \code{hf_line} objects containing table footnotes
16 | and associated formatting.}
17 |
18 | \item{header_rows}{An integer determining how many rows of the table are
19 | column headers. Only used for huxtable tables. Can be set to 0 to disable repeating column headers.}
20 | }
21 | \value{
22 | A list with a table, titles, and footnotes component. Class of
23 | "rtf_doc" with the properties describled below.
24 | }
25 | \description{
26 | This constructs the main object that will be used for an RTF document. The
27 | object is composed of a table, titles(s), and footnote(s).
28 |
29 | A table contained in the \code{rtf_doc} object should be a supported class.
30 | The huxtable package is the most supported, however our intention is to
31 | support other packages capable of writing RTF tables as well. Currently, it
32 | is planned to support the \code{gt} package, but the \code{gt} package's RTF
33 | methods are not functional.
34 |
35 | The titles and footnotes are composed of \code{hf_line} objects.
36 |
37 | See the \href{https://atorus-research.github.io/pharmaRTF.html}{vignette}
38 | for a more complete view of intended usage.
39 | }
40 | \section{\code{rtf_doc} Properties}{
41 |
42 | Document level properties set the defaults and will be used where they are
43 | not overridden by \code{hf_line} or table properties.
44 | \itemize{
45 | \item{font - A string representing the font to display when it is not
46 | specified by the table or \code{hf_line}. Defaults to Courier New.}
47 | \item{font_size - A numeric value representing the size of the font in
48 | points. Defaults to 12.}
49 | \item{margins - Inches of margins in the document as a named vector. Names
50 | are \code{top}, \code{bottom}, \code{left}, and \code{right}. Defaults to 1
51 | for all.}
52 | \item{orientation - Orientation of the document. Defaults to 'landscape'. When 'portrait',
53 | the height and width are switched while writing the document to effectively rotate the document
54 | 90 degrees. For example, if width is 11" and height is 8.5", while writing the document will have a
55 | height of 11" and a width of 8.5". Additionally, when 'landscape', a keyword is written
56 | to the RTF to indicate that the document is landscape. .}
57 | \item{header_height - Height of the header where the titles and column
58 | headers are displayed. Defaults to .5 inches.}
59 | \item{footer_height - Height of the footer where the footnotes are displayed.
60 | Defaults to .5 inches.}
61 | \item{pagesize - Size of the page in inches. Defaults to 8.5(height) by
62 | 11(width). These defaults align with the default orientation of 'landscape'. When the orientation
63 | is switched to 'portrait', the height and width will switch while the RTF document is being generated,
64 | but the document attributes themselves will not change.}
65 | \item{header_rows - Huxtable table only. Number of rows that are defined as
66 | the header that will be repeated across pages. Defaults to 1. Can be set to 0 to disable repeating column headers.}
67 | \item{ignore_cell_padding - Huxtable table only. Flag to ignore cell padding padding
68 | that is added during RTF encoding. Minimizes the amount of space between
69 | rows. Defaults to FALSE.}
70 | \item{column_header_buffer} - This attribute adds rows to the top or bottom of the table
71 | column headers to pad it from the titles above or the table below.
72 | Defaults to 0 and 0.
73 | }
74 | }
75 |
76 | \examples{
77 | # Adding lines during rtf_doc construction
78 | ht <- huxtable::huxtable(
79 | column1 = 1:5,
80 | column2 = letters[1:5]
81 | )
82 | # Set table properties
83 | library(magrittr) #load in a pipe
84 | ht \%>\%
85 | huxtable::set_bold(1, 1:ncol(ht), TRUE) \%>\%
86 | huxtable::set_escape_contents(TRUE) \%>\%
87 | huxtable::set_col_width(c(0.25, 0.75))
88 |
89 | rtf <- rtf_doc(ht, titles = list(hf_line("My Header")))
90 | # Set document properties
91 | rtf <- rtf \%>\%
92 | set_font_size(15) \%>\%
93 | set_ignore_cell_padding(TRUE)
94 |
95 | names(rtf)
96 |
97 | write_rtf(rtf, file = tempfile())
98 |
99 | }
100 | \seealso{
101 | \code{\link{hf_line}}
102 | }
103 |
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_3.rtf:
--------------------------------------------------------------------------------
1 | {\rtf1\ansi\deff1
2 | {\fonttbl
3 | {\f0 Times;}
4 | {\f1 Courier New;}
5 | }{\colortbl;;}
6 |
7 |
8 |
9 | \paperw15840\paperh12240\widowctrl\ftnbj\fet0\sectd\linex0
10 | \lndscpsxn
11 | \margl2160\margr360\margt2880\margb720
12 | \headery720\footery720\fs24
13 |
14 |
15 |
16 | {\header
17 |
18 | \par
19 |
20 | {
21 | \trowd
22 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
23 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{\fs24 {Header1}}\cell
24 | \pard\intbl\ql{\fs24 {Header2}}\cell
25 | \row
26 | }
27 |
28 | }
29 | {\footer
30 | \par
31 | }
32 | {
33 | \trowd
34 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
35 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{1}\cell
36 | \pard\intbl\ql{a}\cell
37 | \row
38 | }
39 |
40 | {
41 | \trowd
42 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
43 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{2}\cell
44 | \pard\intbl\ql{b}\cell
45 | \row
46 | }
47 |
48 | {
49 | \trowd
50 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
51 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{3}\cell
52 | \pard\intbl\ql{c}\cell
53 | \row
54 | }
55 |
56 | {
57 | \trowd
58 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
59 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{4}\cell
60 | \pard\intbl\ql{d}\cell
61 | \row
62 | }
63 |
64 | {
65 | \trowd
66 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
67 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{5}\cell
68 | \pard\intbl\ql{e}\cell
69 | \row
70 | }
71 |
72 | {
73 | \trowd
74 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
75 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{6}\cell
76 | \pard\intbl\ql{f}\cell
77 | \row
78 | }
79 |
80 | {
81 | \trowd
82 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
83 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{7}\cell
84 | \pard\intbl\ql{g}\cell
85 | \row
86 | }
87 |
88 | {
89 | \trowd
90 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
91 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{8}\cell
92 | \pard\intbl\ql{h}\cell
93 | \row
94 | }
95 |
96 | {
97 | \trowd
98 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
99 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{9}\cell
100 | \pard\intbl\ql{i}\cell
101 | \row
102 | }
103 |
104 | {
105 | \trowd
106 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
107 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{10}\cell
108 | \pard\intbl\ql{j}\cell
109 | \row
110 | }
111 |
112 | }
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_11.rtf:
--------------------------------------------------------------------------------
1 | {\rtf1\ansi\deff1
2 | {\fonttbl
3 | {\f0 Times;}
4 | {\f1 Courier New;}
5 | }{\colortbl;;}
6 |
7 |
8 |
9 | \paperw15840\paperh12240\widowctrl\ftnbj\fet0\sectd\linex0
10 | \lndscpsxn
11 | \margl1440\margr1440\margt1440\margb1440
12 | \headery720\footery720\fs24
13 |
14 |
15 |
16 | {\header
17 |
18 | \par
19 |
20 | {
21 | \trowd
22 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl0\clpadl80 \clpadft0\clpadt80 \clpadfb0\clpadb80 \clpadfr0\clpadr80 \cellx2160
23 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl0\clpadl80 \clpadft0\clpadt80 \clpadfb0\clpadb80 \clpadfr0\clpadr80 \cellx4320 \pard\intbl\ql{\fs24 {Header1}}\cell
24 | \pard\intbl\ql{\fs24 {Header2}}\cell
25 | \row
26 | }
27 |
28 | }
29 | {\footer
30 | \par
31 | }
32 | {
33 | \trowd
34 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl0\clpadl80 \clpadft0\clpadt80 \clpadfb0\clpadb80 \clpadfr0\clpadr80 \cellx2160
35 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl0\clpadl80 \clpadft0\clpadt80 \clpadfb0\clpadb80 \clpadfr0\clpadr80 \cellx4320 \pard\intbl\ql{1}\cell
36 | \pard\intbl\ql{a}\cell
37 | \row
38 | }
39 |
40 | {
41 | \trowd
42 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl0\clpadl80 \clpadft0\clpadt80 \clpadfb0\clpadb80 \clpadfr0\clpadr80 \cellx2160
43 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl0\clpadl80 \clpadft0\clpadt80 \clpadfb0\clpadb80 \clpadfr0\clpadr80 \cellx4320 \pard\intbl\ql{2}\cell
44 | \pard\intbl\ql{b}\cell
45 | \row
46 | }
47 |
48 | {
49 | \trowd
50 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl0\clpadl80 \clpadft0\clpadt80 \clpadfb0\clpadb80 \clpadfr0\clpadr80 \cellx2160
51 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl0\clpadl80 \clpadft0\clpadt80 \clpadfb0\clpadb80 \clpadfr0\clpadr80 \cellx4320 \pard\intbl\ql{3}\cell
52 | \pard\intbl\ql{c}\cell
53 | \row
54 | }
55 |
56 | {
57 | \trowd
58 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl0\clpadl80 \clpadft0\clpadt80 \clpadfb0\clpadb80 \clpadfr0\clpadr80 \cellx2160
59 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl0\clpadl80 \clpadft0\clpadt80 \clpadfb0\clpadb80 \clpadfr0\clpadr80 \cellx4320 \pard\intbl\ql{4}\cell
60 | \pard\intbl\ql{d}\cell
61 | \row
62 | }
63 |
64 | {
65 | \trowd
66 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl0\clpadl80 \clpadft0\clpadt80 \clpadfb0\clpadb80 \clpadfr0\clpadr80 \cellx2160
67 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl0\clpadl80 \clpadft0\clpadt80 \clpadfb0\clpadb80 \clpadfr0\clpadr80 \cellx4320 \pard\intbl\ql{5}\cell
68 | \pard\intbl\ql{e}\cell
69 | \row
70 | }
71 |
72 | {
73 | \trowd
74 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl0\clpadl80 \clpadft0\clpadt80 \clpadfb0\clpadb80 \clpadfr0\clpadr80 \cellx2160
75 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl0\clpadl80 \clpadft0\clpadt80 \clpadfb0\clpadb80 \clpadfr0\clpadr80 \cellx4320 \pard\intbl\ql{6}\cell
76 | \pard\intbl\ql{f}\cell
77 | \row
78 | }
79 |
80 | {
81 | \trowd
82 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl0\clpadl80 \clpadft0\clpadt80 \clpadfb0\clpadb80 \clpadfr0\clpadr80 \cellx2160
83 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl0\clpadl80 \clpadft0\clpadt80 \clpadfb0\clpadb80 \clpadfr0\clpadr80 \cellx4320 \pard\intbl\ql{7}\cell
84 | \pard\intbl\ql{g}\cell
85 | \row
86 | }
87 |
88 | {
89 | \trowd
90 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl0\clpadl80 \clpadft0\clpadt80 \clpadfb0\clpadb80 \clpadfr0\clpadr80 \cellx2160
91 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl0\clpadl80 \clpadft0\clpadt80 \clpadfb0\clpadb80 \clpadfr0\clpadr80 \cellx4320 \pard\intbl\ql{8}\cell
92 | \pard\intbl\ql{h}\cell
93 | \row
94 | }
95 |
96 | {
97 | \trowd
98 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl0\clpadl80 \clpadft0\clpadt80 \clpadfb0\clpadb80 \clpadfr0\clpadr80 \cellx2160
99 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl0\clpadl80 \clpadft0\clpadt80 \clpadfb0\clpadb80 \clpadfr0\clpadr80 \cellx4320 \pard\intbl\ql{9}\cell
100 | \pard\intbl\ql{i}\cell
101 | \row
102 | }
103 |
104 | {
105 | \trowd
106 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl0\clpadl80 \clpadft0\clpadt80 \clpadfb0\clpadb80 \clpadfr0\clpadr80 \cellx2160
107 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl0\clpadl80 \clpadft0\clpadt80 \clpadfb0\clpadb80 \clpadfr0\clpadr80 \cellx4320 \pard\intbl\ql{10}\cell
108 | \pard\intbl\ql{j}\cell
109 | \row
110 | }
111 |
112 | }
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_4.rtf:
--------------------------------------------------------------------------------
1 | {\rtf1\ansi\deff1
2 | {\fonttbl
3 | {\f0 Times;}
4 | {\f1 Courier New;}
5 | }{\colortbl;;}
6 |
7 |
8 |
9 | \paperw15840\paperh12240\widowctrl\ftnbj\fet0\sectd\linex0
10 | \lndscpsxn
11 | \margl1440\margr1440\margt1440\margb1440
12 | \headery360\footery1440\fs24
13 |
14 |
15 |
16 | {\header
17 |
18 | \par
19 |
20 | {
21 | \trowd
22 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
23 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{\fs24 {Header1}}\cell
24 | \pard\intbl\ql{\fs24 {Header2}}\cell
25 | \row
26 | }
27 |
28 | }
29 | {\footer
30 | \par
31 | }
32 | {
33 | \trowd
34 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
35 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{1}\cell
36 | \pard\intbl\ql{a}\cell
37 | \row
38 | }
39 |
40 | {
41 | \trowd
42 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
43 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{2}\cell
44 | \pard\intbl\ql{b}\cell
45 | \row
46 | }
47 |
48 | {
49 | \trowd
50 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
51 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{3}\cell
52 | \pard\intbl\ql{c}\cell
53 | \row
54 | }
55 |
56 | {
57 | \trowd
58 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
59 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{4}\cell
60 | \pard\intbl\ql{d}\cell
61 | \row
62 | }
63 |
64 | {
65 | \trowd
66 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
67 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{5}\cell
68 | \pard\intbl\ql{e}\cell
69 | \row
70 | }
71 |
72 | {
73 | \trowd
74 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
75 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{6}\cell
76 | \pard\intbl\ql{f}\cell
77 | \row
78 | }
79 |
80 | {
81 | \trowd
82 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
83 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{7}\cell
84 | \pard\intbl\ql{g}\cell
85 | \row
86 | }
87 |
88 | {
89 | \trowd
90 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
91 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{8}\cell
92 | \pard\intbl\ql{h}\cell
93 | \row
94 | }
95 |
96 | {
97 | \trowd
98 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
99 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{9}\cell
100 | \pard\intbl\ql{i}\cell
101 | \row
102 | }
103 |
104 | {
105 | \trowd
106 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
107 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{10}\cell
108 | \pard\intbl\ql{j}\cell
109 | \row
110 | }
111 |
112 | }
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_5.rtf:
--------------------------------------------------------------------------------
1 | {\rtf1\ansi\deff1
2 | {\fonttbl
3 | {\f0 Times;}
4 | {\f1 Courier New;}
5 | }{\colortbl;;}
6 |
7 |
8 |
9 | \paperw17280\paperh12960\widowctrl\ftnbj\fet0\sectd\linex0
10 | \lndscpsxn
11 | \margl1440\margr1440\margt1440\margb1440
12 | \headery720\footery720\fs24
13 |
14 |
15 |
16 | {\header
17 |
18 | \par
19 |
20 | {
21 | \trowd
22 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
23 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{\fs24 {Header1}}\cell
24 | \pard\intbl\ql{\fs24 {Header2}}\cell
25 | \row
26 | }
27 |
28 | }
29 | {\footer
30 | \par
31 | }
32 | {
33 | \trowd
34 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
35 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{1}\cell
36 | \pard\intbl\ql{a}\cell
37 | \row
38 | }
39 |
40 | {
41 | \trowd
42 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
43 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{2}\cell
44 | \pard\intbl\ql{b}\cell
45 | \row
46 | }
47 |
48 | {
49 | \trowd
50 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
51 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{3}\cell
52 | \pard\intbl\ql{c}\cell
53 | \row
54 | }
55 |
56 | {
57 | \trowd
58 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
59 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{4}\cell
60 | \pard\intbl\ql{d}\cell
61 | \row
62 | }
63 |
64 | {
65 | \trowd
66 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
67 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{5}\cell
68 | \pard\intbl\ql{e}\cell
69 | \row
70 | }
71 |
72 | {
73 | \trowd
74 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
75 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{6}\cell
76 | \pard\intbl\ql{f}\cell
77 | \row
78 | }
79 |
80 | {
81 | \trowd
82 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
83 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{7}\cell
84 | \pard\intbl\ql{g}\cell
85 | \row
86 | }
87 |
88 | {
89 | \trowd
90 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
91 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{8}\cell
92 | \pard\intbl\ql{h}\cell
93 | \row
94 | }
95 |
96 | {
97 | \trowd
98 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
99 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{9}\cell
100 | \pard\intbl\ql{i}\cell
101 | \row
102 | }
103 |
104 | {
105 | \trowd
106 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
107 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{10}\cell
108 | \pard\intbl\ql{j}\cell
109 | \row
110 | }
111 |
112 | }
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_7.rtf:
--------------------------------------------------------------------------------
1 | {\rtf1\ansi\deff1
2 | {\fonttbl
3 | {\f0 Times;}
4 | {\f1 Courier New;}
5 | }{\colortbl;;}
6 |
7 |
8 |
9 | \paperw15840\paperh12240\widowctrl\ftnbj\fet0\sectd\linex0
10 | \lndscpsxn
11 | \margl1440\margr1440\margt1440\margb1440
12 | \headery720\footery720\fs28
13 |
14 |
15 |
16 | {\header
17 |
18 | \par
19 |
20 | {
21 | \trowd
22 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
23 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{\fs28 {Header1}}\cell
24 | \pard\intbl\ql{\fs28 {Header2}}\cell
25 | \row
26 | }
27 |
28 | }
29 | {\footer
30 | \par
31 | }
32 | {
33 | \trowd
34 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
35 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{1}\cell
36 | \pard\intbl\ql{a}\cell
37 | \row
38 | }
39 |
40 | {
41 | \trowd
42 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
43 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{2}\cell
44 | \pard\intbl\ql{b}\cell
45 | \row
46 | }
47 |
48 | {
49 | \trowd
50 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
51 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{3}\cell
52 | \pard\intbl\ql{c}\cell
53 | \row
54 | }
55 |
56 | {
57 | \trowd
58 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
59 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{4}\cell
60 | \pard\intbl\ql{d}\cell
61 | \row
62 | }
63 |
64 | {
65 | \trowd
66 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
67 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{5}\cell
68 | \pard\intbl\ql{e}\cell
69 | \row
70 | }
71 |
72 | {
73 | \trowd
74 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
75 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{6}\cell
76 | \pard\intbl\ql{f}\cell
77 | \row
78 | }
79 |
80 | {
81 | \trowd
82 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
83 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{7}\cell
84 | \pard\intbl\ql{g}\cell
85 | \row
86 | }
87 |
88 | {
89 | \trowd
90 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
91 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{8}\cell
92 | \pard\intbl\ql{h}\cell
93 | \row
94 | }
95 |
96 | {
97 | \trowd
98 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
99 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{9}\cell
100 | \pard\intbl\ql{i}\cell
101 | \row
102 | }
103 |
104 | {
105 | \trowd
106 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
107 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{10}\cell
108 | \pard\intbl\ql{j}\cell
109 | \row
110 | }
111 |
112 | }
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_8.rtf:
--------------------------------------------------------------------------------
1 | {\rtf1\ansi\deff1
2 | {\fonttbl
3 | {\f0 Times;}
4 | {\f1 Comic Sans;}
5 | }{\colortbl;;}
6 |
7 |
8 |
9 | \paperw15840\paperh12240\widowctrl\ftnbj\fet0\sectd\linex0
10 | \lndscpsxn
11 | \margl1440\margr1440\margt1440\margb1440
12 | \headery720\footery720\fs24
13 |
14 |
15 |
16 | {\header
17 |
18 | \par
19 |
20 | {
21 | \trowd
22 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
23 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{\fs24 {Header1}}\cell
24 | \pard\intbl\ql{\fs24 {Header2}}\cell
25 | \row
26 | }
27 |
28 | }
29 | {\footer
30 | \par
31 | }
32 | {
33 | \trowd
34 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
35 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{1}\cell
36 | \pard\intbl\ql{a}\cell
37 | \row
38 | }
39 |
40 | {
41 | \trowd
42 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
43 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{2}\cell
44 | \pard\intbl\ql{b}\cell
45 | \row
46 | }
47 |
48 | {
49 | \trowd
50 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
51 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{3}\cell
52 | \pard\intbl\ql{c}\cell
53 | \row
54 | }
55 |
56 | {
57 | \trowd
58 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
59 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{4}\cell
60 | \pard\intbl\ql{d}\cell
61 | \row
62 | }
63 |
64 | {
65 | \trowd
66 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
67 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{5}\cell
68 | \pard\intbl\ql{e}\cell
69 | \row
70 | }
71 |
72 | {
73 | \trowd
74 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
75 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{6}\cell
76 | \pard\intbl\ql{f}\cell
77 | \row
78 | }
79 |
80 | {
81 | \trowd
82 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
83 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{7}\cell
84 | \pard\intbl\ql{g}\cell
85 | \row
86 | }
87 |
88 | {
89 | \trowd
90 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
91 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{8}\cell
92 | \pard\intbl\ql{h}\cell
93 | \row
94 | }
95 |
96 | {
97 | \trowd
98 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
99 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{9}\cell
100 | \pard\intbl\ql{i}\cell
101 | \row
102 | }
103 |
104 | {
105 | \trowd
106 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
107 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{10}\cell
108 | \pard\intbl\ql{j}\cell
109 | \row
110 | }
111 |
112 | }
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_9.rtf:
--------------------------------------------------------------------------------
1 | {\rtf1\ansi\deff1
2 | {\fonttbl
3 | {\f0 Times;}
4 | {\f1 Courier New;}
5 | }{\colortbl;;}
6 |
7 |
8 |
9 | \paperw15840\paperh12240\widowctrl\ftnbj\fet0\sectd\linex0
10 | \lndscpsxn
11 | \margl1440\margr1440\margt1440\margb1440
12 | \headery720\footery720\fs24
13 |
14 |
15 |
16 | {\header
17 |
18 | \par
19 |
20 | {
21 | \trowd
22 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
23 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{\fs24 {Header1}}\cell
24 | \pard\intbl\ql{\fs24 {Header2}}\cell
25 | \row
26 | }
27 |
28 | {
29 | \trowd
30 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
31 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{\fs24 {1}}\cell
32 | \pard\intbl\ql{\fs24 {a}}\cell
33 | \row
34 | }
35 |
36 | }
37 | {\footer
38 | \par
39 | }
40 | {
41 | \trowd
42 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
43 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{2}\cell
44 | \pard\intbl\ql{b}\cell
45 | \row
46 | }
47 |
48 | {
49 | \trowd
50 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
51 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{3}\cell
52 | \pard\intbl\ql{c}\cell
53 | \row
54 | }
55 |
56 | {
57 | \trowd
58 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
59 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{4}\cell
60 | \pard\intbl\ql{d}\cell
61 | \row
62 | }
63 |
64 | {
65 | \trowd
66 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
67 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{5}\cell
68 | \pard\intbl\ql{e}\cell
69 | \row
70 | }
71 |
72 | {
73 | \trowd
74 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
75 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{6}\cell
76 | \pard\intbl\ql{f}\cell
77 | \row
78 | }
79 |
80 | {
81 | \trowd
82 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
83 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{7}\cell
84 | \pard\intbl\ql{g}\cell
85 | \row
86 | }
87 |
88 | {
89 | \trowd
90 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
91 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{8}\cell
92 | \pard\intbl\ql{h}\cell
93 | \row
94 | }
95 |
96 | {
97 | \trowd
98 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
99 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{9}\cell
100 | \pard\intbl\ql{i}\cell
101 | \row
102 | }
103 |
104 | {
105 | \trowd
106 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
107 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{10}\cell
108 | \pard\intbl\ql{j}\cell
109 | \row
110 | }
111 |
112 | }
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_1.rtf:
--------------------------------------------------------------------------------
1 | {\rtf1\ansi\deff1
2 | {\fonttbl
3 | {\f0 Times;}
4 | {\f1 Courier New;}
5 | }{\colortbl;;}
6 |
7 |
8 |
9 | \paperw15840\paperh12240\widowctrl\ftnbj\fet0\sectd\linex0
10 | \lndscpsxn
11 | \margl1440\margr1440\margt1440\margb1440
12 | \headery720\footery720\fs24
13 |
14 |
15 |
16 | {\header
17 | \qc
18 | {\f1\fs24 Title}
19 | \par
20 |
21 | {
22 | \trowd
23 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
24 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{\fs24 {Header1}}\cell
25 | \pard\intbl\ql{\fs24 {Header2}}\cell
26 | \row
27 | }
28 |
29 | }
30 | {\footer
31 | \qc
32 | {\f1\fs24 Footnote}\par
33 | }
34 | {
35 | \trowd
36 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
37 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{1}\cell
38 | \pard\intbl\ql{a}\cell
39 | \row
40 | }
41 |
42 | {
43 | \trowd
44 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
45 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{2}\cell
46 | \pard\intbl\ql{b}\cell
47 | \row
48 | }
49 |
50 | {
51 | \trowd
52 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
53 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{3}\cell
54 | \pard\intbl\ql{c}\cell
55 | \row
56 | }
57 |
58 | {
59 | \trowd
60 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
61 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{4}\cell
62 | \pard\intbl\ql{d}\cell
63 | \row
64 | }
65 |
66 | {
67 | \trowd
68 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
69 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{5}\cell
70 | \pard\intbl\ql{e}\cell
71 | \row
72 | }
73 |
74 | {
75 | \trowd
76 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
77 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{6}\cell
78 | \pard\intbl\ql{f}\cell
79 | \row
80 | }
81 |
82 | {
83 | \trowd
84 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
85 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{7}\cell
86 | \pard\intbl\ql{g}\cell
87 | \row
88 | }
89 |
90 | {
91 | \trowd
92 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
93 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{8}\cell
94 | \pard\intbl\ql{h}\cell
95 | \row
96 | }
97 |
98 | {
99 | \trowd
100 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
101 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{9}\cell
102 | \pard\intbl\ql{i}\cell
103 | \row
104 | }
105 |
106 | {
107 | \trowd
108 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
109 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{10}\cell
110 | \pard\intbl\ql{j}\cell
111 | \row
112 | }
113 |
114 | }
--------------------------------------------------------------------------------
/man/hf_line.Rd:
--------------------------------------------------------------------------------
1 | % Generated by roxygen2: do not edit by hand
2 | % Please edit documentation in R/header-footer.R
3 | \name{hf_line}
4 | \alias{hf_line}
5 | \title{Create a title line container}
6 | \usage{
7 | hf_line(
8 | ...,
9 | align = c("center", "left", "right", "split"),
10 | bold = FALSE,
11 | italic = FALSE,
12 | font = NA,
13 | font_size = NA,
14 | index = NA
15 | )
16 | }
17 | \arguments{
18 | \item{...}{A character list/vector. If \code{length(...)} is 2 and
19 | \code{align} is not 'split', values are pasted together.}
20 |
21 | \item{align}{Text alignment in document. Options are 'center', 'left',
22 | 'right', and 'split'. A 'split' alignment will left align the string in
23 | the first text item and right align the second. Defaults to center.}
24 |
25 | \item{bold}{\code{TRUE} or \code{FALSE}. Defaults to FALSE.}
26 |
27 | \item{italic}{\code{TRUE} or \code{FALSE}. Defaults to FALSE.}
28 |
29 | \item{font}{A string to specify the font display. Ensure the intended RTF
30 | reader can display the selected font. Fonts for all fields will default to
31 | the default font of the \code{rtf_doc} object, which unless otherwise
32 | assigned, is Courier New.}
33 |
34 | \item{font_size}{Font size in points. Font sizes for all fields will default to
35 | the default font size of the \code{rtf_doc} object, which unless otherwise
36 | assigned, is 12}
37 |
38 | \item{index}{Position to display header or footnote lines in the RTF
39 | document. Orders in ascending order with NAs last. Defaults to NA.}
40 | }
41 | \value{
42 | An object of class \code{hf_line} with the properties described in
43 | the Arguments section.
44 | }
45 | \description{
46 | \code{hf_line} objects represent individual title or footnote lines and
47 | their associated metadata. These objects are passed to an \code{rtf_doc} for
48 | display in the header or footer of an RTF document.
49 |
50 | A character vector of length <= 2 describes the text to display. Using a
51 | single text element, the text can be aligned left, right, or center. Using
52 | two text elements, the alignment can be set to “split”, which will left
53 | align the first element, and right align the second. If alignment is set to
54 | anything else, the text elements will be pasted together.
55 |
56 | Lines can either be passed to the titles/footnotes arguments in the call to
57 | \code{rtf_doc} or added later with the \code{add_titles} or
58 | \code{add_footnotes} functions. Supported properties are detailed in the
59 | arguments section.
60 | }
61 | \section{Supported Formatting}{
62 |
63 | Several special display formats are supported to display document data. When
64 | the \code{rtf_doc} is written, the package will determine if the text of an
65 | \code{hf_line} object starts with a keyword. Regular expression matching and
66 | replacement is used for formatting.
67 | \itemize{
68 | \item{PAGE_FORMAT: - Can take up to two replacements to format current
69 | page(first), and total number of pages(second). Page numbers are replaced in
70 | the string using \%s For example, for a format of Page 1 of 5, use
71 | PAGE_FORMAT: Page \%s of \%s. For a format of just 5, use
72 | PAGE_FORMAT: \%s.}
73 | \item{DATE_FORMAT: - Describes the date/time the document was generated.
74 | Formats are specified using standard R date formatting tokens. Details on
75 | formatting dates can be found
76 | \href{https://www.r-bloggers.com/2013/08/date-formats-in-r/}{here}.}
77 | \item{FILE_PATH: - Describes the file path the R session was executed from.
78 | The location of the executing file will be populated over the token
79 | replacement string "\%s". Formats can be specified like "FILE_PATH: Executed
80 | from: \%s" or simply "FILE_PATH: \%s". Note that the location of the executing
81 | file in R may not be intuitive. There are multiple ways to determine the
82 | containing R file based on how it was executed.
83 | \itemize{
84 | \item{When the file is executed using \code{Rscript}, this field will
85 | populated as the executed Rscript file.}
86 | \item{When the file is sourced, this field will populate with the
87 | location of the sourced file.}
88 | \item{When a file is run interactively (i.e. from the R console), this
89 | field will populate as .}
90 | }}
91 | }
92 | }
93 |
94 | \examples{
95 | # Adding lines during rtf_doc construction
96 | ht <- huxtable::huxtable(
97 | column1 = 1:5,
98 | column2 = letters[1:5]
99 | )
100 | titles_l <- list(
101 | hf_line(c("The Title Left", "The Titles Right"), align = "split"),
102 | hf_line("A Bold, italic Title", bold = TRUE, italic = TRUE,
103 | align = "left", font_size = 20, font = "Times New Roman")
104 | )
105 | rtf <- rtf_doc(ht, titles = titles_l)
106 |
107 | # Adding lines after rtf_doc construction
108 | rtf <- add_footnotes(rtf,
109 | hf_line("PAGE_FORMAT: Page \%s of \%s"),
110 | hf_line("DATE_FORMAT: \%H:\%M \%A, \%B \%d, \%Y"),
111 | hf_line("FILE_PATH: Source: \%s")
112 | )
113 |
114 | }
115 |
--------------------------------------------------------------------------------
/docs/bootstrap-toc.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap Table of Contents v0.4.1 (http://afeld.github.io/bootstrap-toc/)
3 | * Copyright 2015 Aidan Feldman
4 | * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */
5 | (function() {
6 | 'use strict';
7 |
8 | window.Toc = {
9 | helpers: {
10 | // return all matching elements in the set, or their descendants
11 | findOrFilter: function($el, selector) {
12 | // http://danielnouri.org/notes/2011/03/14/a-jquery-find-that-also-finds-the-root-element/
13 | // http://stackoverflow.com/a/12731439/358804
14 | var $descendants = $el.find(selector);
15 | return $el.filter(selector).add($descendants).filter(':not([data-toc-skip])');
16 | },
17 |
18 | generateUniqueIdBase: function(el) {
19 | var text = $(el).text();
20 | var anchor = text.trim().toLowerCase().replace(/[^A-Za-z0-9]+/g, '-');
21 | return anchor || el.tagName.toLowerCase();
22 | },
23 |
24 | generateUniqueId: function(el) {
25 | var anchorBase = this.generateUniqueIdBase(el);
26 | for (var i = 0; ; i++) {
27 | var anchor = anchorBase;
28 | if (i > 0) {
29 | // add suffix
30 | anchor += '-' + i;
31 | }
32 | // check if ID already exists
33 | if (!document.getElementById(anchor)) {
34 | return anchor;
35 | }
36 | }
37 | },
38 |
39 | generateAnchor: function(el) {
40 | if (el.id) {
41 | return el.id;
42 | } else {
43 | var anchor = this.generateUniqueId(el);
44 | el.id = anchor;
45 | return anchor;
46 | }
47 | },
48 |
49 | createNavList: function() {
50 | return $('');
51 | },
52 |
53 | createChildNavList: function($parent) {
54 | var $childList = this.createNavList();
55 | $parent.append($childList);
56 | return $childList;
57 | },
58 |
59 | generateNavEl: function(anchor, text) {
60 | var $a = $('');
61 | $a.attr('href', '#' + anchor);
62 | $a.text(text);
63 | var $li = $('');
64 | $li.append($a);
65 | return $li;
66 | },
67 |
68 | generateNavItem: function(headingEl) {
69 | var anchor = this.generateAnchor(headingEl);
70 | var $heading = $(headingEl);
71 | var text = $heading.data('toc-text') || $heading.text();
72 | return this.generateNavEl(anchor, text);
73 | },
74 |
75 | // Find the first heading level (``, then ``, etc.) that has more than one element. Defaults to 1 (for ``).
76 | getTopLevel: function($scope) {
77 | for (var i = 1; i <= 6; i++) {
78 | var $headings = this.findOrFilter($scope, 'h' + i);
79 | if ($headings.length > 1) {
80 | return i;
81 | }
82 | }
83 |
84 | return 1;
85 | },
86 |
87 | // returns the elements for the top level, and the next below it
88 | getHeadings: function($scope, topLevel) {
89 | var topSelector = 'h' + topLevel;
90 |
91 | var secondaryLevel = topLevel + 1;
92 | var secondarySelector = 'h' + secondaryLevel;
93 |
94 | return this.findOrFilter($scope, topSelector + ',' + secondarySelector);
95 | },
96 |
97 | getNavLevel: function(el) {
98 | return parseInt(el.tagName.charAt(1), 10);
99 | },
100 |
101 | populateNav: function($topContext, topLevel, $headings) {
102 | var $context = $topContext;
103 | var $prevNav;
104 |
105 | var helpers = this;
106 | $headings.each(function(i, el) {
107 | var $newNav = helpers.generateNavItem(el);
108 | var navLevel = helpers.getNavLevel(el);
109 |
110 | // determine the proper $context
111 | if (navLevel === topLevel) {
112 | // use top level
113 | $context = $topContext;
114 | } else if ($prevNav && $context === $topContext) {
115 | // create a new level of the tree and switch to it
116 | $context = helpers.createChildNavList($prevNav);
117 | } // else use the current $context
118 |
119 | $context.append($newNav);
120 |
121 | $prevNav = $newNav;
122 | });
123 | },
124 |
125 | parseOps: function(arg) {
126 | var opts;
127 | if (arg.jquery) {
128 | opts = {
129 | $nav: arg
130 | };
131 | } else {
132 | opts = arg;
133 | }
134 | opts.$scope = opts.$scope || $(document.body);
135 | return opts;
136 | }
137 | },
138 |
139 | // accepts a jQuery object, or an options object
140 | init: function(opts) {
141 | opts = this.helpers.parseOps(opts);
142 |
143 | // ensure that the data attribute is in place for styling
144 | opts.$nav.attr('data-toggle', 'toc');
145 |
146 | var $topContext = this.helpers.createChildNavList(opts.$nav);
147 | var topLevel = this.helpers.getTopLevel(opts.$scope);
148 | var $headings = this.helpers.getHeadings(opts.$scope, topLevel);
149 | this.helpers.populateNav($topContext, topLevel, $headings);
150 | }
151 | };
152 |
153 | $(function() {
154 | $('nav[data-toggle="toc"]').each(function(i, el) {
155 | var $nav = $(el);
156 | Toc.init($nav);
157 | });
158 | });
159 | })();
160 |
--------------------------------------------------------------------------------
/tests/testthat/test_read_hf.r:
--------------------------------------------------------------------------------
1 | context("read_hf")
2 | library(huxtable)
3 |
4 | ## NOTE: reading hf is assumed to be done by the reader so
5 | # that isn't tested here.
6 |
7 |
8 | test_that("read_hf returns the same data.frame it is passed if it is a valid df", {
9 | df <- data.frame(
10 | type = c("footnote", "title"),
11 | text1 = c("abc", "xyz"),
12 | text2 = c("abc", "xyz"),
13 | align = c("center", "center"),
14 | bold = c(FALSE, FALSE),
15 | italic = c(FALSE, FALSE),
16 | font = c("abc", "xyz"),
17 | font_size = c(10, 20),
18 | index = c(1, 2),
19 | stringsAsFactors = FALSE
20 | )
21 |
22 | expect_silent(read_hf(from.df=df))
23 | expect_equal(read_hf(from.df=df), df)
24 | })
25 |
26 | test_that("titles_and_footnotes_from_df can read a data.frame with only text1, and type", {
27 | df <- data.frame(
28 | type = c("footnote"),
29 | text1 = c("abc"),
30 | stringsAsFactors = FALSE
31 | )
32 | ht <- huxtable(
33 | column1 = 1:5,
34 | column2 = letters[1:5]
35 | )
36 | rtf <- rtf_doc(ht)
37 |
38 | rtf2 <- titles_and_footnotes_from_df(rtf, from.df = df)
39 |
40 | expect_equal(align(rtf2$footnotes[[1]]), "center")
41 | expect_equal(bold(rtf2$footnotes[[1]]), FALSE)
42 | expect_equal(italic(rtf2$footnotes[[1]]), FALSE)
43 | expect_true(is.na(font(rtf2$footnotes[[1]])))
44 | expect_true(is.na(font_size(rtf2$footnotes[[1]])))
45 | expect_true(is.na(index(rtf2$footnotes[[1]])))
46 | })
47 |
48 | test_that("fill_missing_data fills in data correctly", {
49 | columns <- c("type", "text1", "text2", "align", "bold", "italic", "font", "font_size", "index")
50 | df <- data.frame(
51 | type = c("footnote", "title"),
52 | text1 = c("abc", "xyz"),
53 | text2 = c(NA , "xyz"),
54 | align = c(NA, "split"),
55 | bold = c(FALSE, FALSE),
56 | italic = c(FALSE, FALSE),
57 | font = c("abc", NA),
58 | font_size = c(NA, 20),
59 | index = c(NA, 2),
60 | stringsAsFactors = FALSE
61 | )
62 |
63 | df2 <- data.frame(
64 | type = c("footnote", "title"),
65 | text1 = c("abc", "xyz"),
66 | text2 = c("", "xyz"),
67 | align = c("center", "split"),
68 | bold = c(FALSE, FALSE),
69 | italic = c(FALSE, FALSE),
70 | font = c("abc", as.character(NA)),
71 | font_size = c(as.numeric(NA), 20),
72 | index = c(NA, 2),
73 | stringsAsFactors = FALSE
74 | )
75 |
76 | expect_equal(fill_missing_data(df, columns), df2)
77 |
78 | })
79 |
80 | #### Errors ####
81 | test_that("read_hf throws error for bad from.df/from.file parameters", {
82 | expect_error(read_hf(from.df = data.frame(), from.file = "aFile"),
83 | "One of, and only one of")
84 | expect_error(read_hf(), "One of, and only one of")
85 | })
86 |
87 | test_that("read_hf throws error when presented a from.df thats not a df", {
88 | expect_error(read_hf(from.df = list()), "from.df does not inherit")
89 | })
90 |
91 | test_that("read_hf throws error for invalid from.file/reader", {
92 | expect_error(read_hf(from.file = "SomeNonexistantFile.txt", reader = "abc"), "Path 'SomeNonexistantFile.txt' does not exist")
93 | expect_error(read_hf(from.file = "test_read_hf.r", reader = "abc"), "reader is not a function")
94 | })
95 |
96 | test_that("validated_hf_dataframe throws errors for missing columns" ,{
97 | required_columns <- c("type", "text1")
98 | columns <- c("type", "text1", "text2", "align", "bold", "italic", "font", "font_size", "index")
99 | df <- data.frame(
100 | type = c("footnote", "title"),
101 | text1 = c("abc", "xyz"),
102 | text2 = c("abc", "xyz"),
103 | align = c("abc", "xyz"),
104 | bold = c(FALSE, FALSE),
105 | italic = c(FALSE, FALSE),
106 | stringsAsFactors = FALSE
107 | )
108 |
109 | ## Unable to get the full message as it is ecliplesd by the error
110 | expect_error(validate_hf_dataframe(df, required_columns, columns),
111 | "Errors were encountered in data.frame validation")
112 | })
113 |
114 | test_that("validated_hf_dataframe throws errors for wrong column types" ,{
115 | required_columns <- c("type", "text1")
116 | columns <- c("type", "text1", "text2", "align", "bold", "italic", "font", "font_size", "index")
117 | df <- data.frame(
118 | type = c("footnote", "title"),
119 | text1 = c(1, 2),
120 | text2 = c("abc", "xyz"),
121 | align = c("abc", "xyz"),
122 | bold = c(FALSE, FALSE),
123 | italic = c(FALSE, FALSE),
124 | font = c("abc", "xyz"),
125 | index = c(1, 2),
126 | stringsAsFactors = FALSE
127 | )
128 |
129 | ## Unable to get the full message as it is ecliplesd by the error
130 | expect_error(validate_hf_dataframe(df, required_columns, columns),
131 | "Errors were encountered in data.frame validation")
132 | })
133 |
134 | test_that("validated_hf_dataframe throws errors for bad entry in type" ,{
135 | required_columns <- c("type", "text1")
136 | columns <- c("type", "text1", "text2", "align", "bold", "italic", "font", "font_size", "index")
137 | df <- data.frame(
138 | type = c("abc", "xyz"),
139 | text1 = c("abc", "xyz"),
140 | text2 = c("abc", "xyz"),
141 | align = c("abc", "xyz"),
142 | bold = c(FALSE, FALSE),
143 | italic = c(FALSE, FALSE),
144 | font = c("abc", "xyz"),
145 | index = c(1, 2),
146 | stringsAsFactors = FALSE
147 | )
148 |
149 | ## Unable to get the full message as it is ecliplesd by the error
150 | expect_error(validate_hf_dataframe(df, required_columns, columns),
151 | "Errors were encountered in data.frame validation")
152 | })
153 |
154 |
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_49.rtf:
--------------------------------------------------------------------------------
1 | {\rtf1\ansi\deff1
2 | {\fonttbl
3 | {\f0 Times;}
4 | {\f1 Courier New;}
5 | }{\colortbl;;}
6 |
7 |
8 |
9 | \paperw15840\paperh12240\widowctrl\ftnbj\fet0\sectd\linex0
10 | \lndscpsxn
11 | \margl1440\margr1440\margt1440\margb1440
12 | \headery720\footery720\fs24
13 |
14 |
15 |
16 | {\header
17 |
18 | \par
19 |
20 | {
21 | \trowd
22 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
23 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\qr{\fs24 {Header1}}\cell
24 | \pard\intbl\ql{\fs24 {Header2}}\cell
25 | \row
26 | }
27 |
28 | }
29 | {\footer
30 | \par
31 | }
32 | {
33 | \trowd
34 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
35 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\qr{1}\cell
36 | \pard\intbl\ql{a}\cell
37 | \row
38 | }
39 |
40 | {
41 | \trowd
42 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
43 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\qr{2}\cell
44 | \pard\intbl\ql{b}\cell
45 | \row
46 | }
47 |
48 | {
49 | \trowd
50 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
51 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\qr{3}\cell
52 | \pard\intbl\ql{c}\cell
53 | \row
54 | }
55 |
56 | {
57 | \trowd
58 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
59 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\qr{4}\cell
60 | \pard\intbl\ql{d}\cell
61 | \row
62 | }
63 |
64 | {
65 | \trowd
66 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
67 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\qr{5}\cell
68 | \pard\intbl\ql{e}\cell
69 | \row
70 | }
71 |
72 | {
73 | \trowd
74 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
75 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\qr{6}\cell
76 | \pard\intbl\ql{f}\cell
77 | \row
78 | }
79 |
80 | {
81 | \trowd
82 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
83 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\qr{7}\cell
84 | \pard\intbl\ql{g}\cell
85 | \row
86 | }
87 |
88 | {
89 | \trowd
90 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
91 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\qr{8}\cell
92 | \pard\intbl\ql{h}\cell
93 | \row
94 | }
95 |
96 | {
97 | \trowd
98 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
99 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\qr{9}\cell
100 | \pard\intbl\ql{i}\cell
101 | \row
102 | }
103 |
104 | {
105 | \trowd
106 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
107 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\qr{10}\cell
108 | \pard\intbl\ql{j}\cell
109 | \row
110 | }
111 |
112 | {
113 | \trowd
114 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
115 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\qr{11}\cell
116 | \pard\intbl\ql{k}\cell
117 | \row
118 | }
119 |
120 | {
121 | \trowd
122 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
123 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\qr{12}\cell
124 | \pard\intbl\ql{l}\cell
125 | \row
126 | }
127 |
128 | {
129 | \trowd
130 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
131 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\qr{13}\cell
132 | \pard\intbl\ql{m}\cell
133 | \row
134 | }
135 |
136 | }
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_52.rtf:
--------------------------------------------------------------------------------
1 | {\rtf1\ansi\deff1
2 | {\fonttbl
3 | {\f0 Times;}
4 | {\f1 Courier New;}
5 | }{\colortbl;;}
6 |
7 |
8 |
9 | \paperw15840\paperh12240\widowctrl\ftnbj\fet0\sectd\linex0
10 | \lndscpsxn
11 | \margl1440\margr1440\margt1440\margb1440
12 | \headery720\footery720\fs24
13 |
14 |
15 |
16 | {\header
17 |
18 | \par
19 |
20 | {
21 | \trowd
22 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx1728
23 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx5184 \pard\intbl\ql{\fs24 {Header1}}\cell
24 | \pard\intbl\ql{\fs24 {Header2}}\cell
25 | \row
26 | }
27 |
28 | }
29 | {\footer
30 | \par
31 | }
32 | {
33 | \trowd
34 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx1728
35 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx5184 \pard\intbl\ql{1}\cell
36 | \pard\intbl\ql{a}\cell
37 | \row
38 | }
39 |
40 | {
41 | \trowd
42 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx1728
43 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx5184 \pard\intbl\ql{2}\cell
44 | \pard\intbl\ql{b}\cell
45 | \row
46 | }
47 |
48 | {
49 | \trowd
50 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx1728
51 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx5184 \pard\intbl\ql{3}\cell
52 | \pard\intbl\ql{c}\cell
53 | \row
54 | }
55 |
56 | {
57 | \trowd
58 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx1728
59 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx5184 \pard\intbl\ql{4}\cell
60 | \pard\intbl\ql{d}\cell
61 | \row
62 | }
63 |
64 | {
65 | \trowd
66 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx1728
67 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx5184 \pard\intbl\ql{5}\cell
68 | \pard\intbl\ql{e}\cell
69 | \row
70 | }
71 |
72 | {
73 | \trowd
74 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx1728
75 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx5184 \pard\intbl\ql{6}\cell
76 | \pard\intbl\ql{f}\cell
77 | \row
78 | }
79 |
80 | {
81 | \trowd
82 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx1728
83 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx5184 \pard\intbl\ql{7}\cell
84 | \pard\intbl\ql{g}\cell
85 | \row
86 | }
87 |
88 | {
89 | \trowd
90 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx1728
91 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx5184 \pard\intbl\ql{8}\cell
92 | \pard\intbl\ql{h}\cell
93 | \row
94 | }
95 |
96 | {
97 | \trowd
98 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx1728
99 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx5184 \pard\intbl\ql{9}\cell
100 | \pard\intbl\ql{i}\cell
101 | \row
102 | }
103 |
104 | {
105 | \trowd
106 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx1728
107 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx5184 \pard\intbl\ql{10}\cell
108 | \pard\intbl\ql{j}\cell
109 | \row
110 | }
111 |
112 | {
113 | \trowd
114 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx1728
115 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx5184 \pard\intbl\ql{11}\cell
116 | \pard\intbl\ql{k}\cell
117 | \row
118 | }
119 |
120 | {
121 | \trowd
122 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx1728
123 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx5184 \pard\intbl\ql{12}\cell
124 | \pard\intbl\ql{l}\cell
125 | \row
126 | }
127 |
128 | {
129 | \trowd
130 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx1728
131 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx5184 \pard\intbl\ql{13}\cell
132 | \pard\intbl\ql{m}\cell
133 | \row
134 | }
135 |
136 | }
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_53.rtf:
--------------------------------------------------------------------------------
1 | {\rtf1\ansi\deff1
2 | {\fonttbl
3 | {\f0 Times;}
4 | {\f1 Courier New;}
5 | }{\colortbl;;}
6 |
7 |
8 |
9 | \paperw15840\paperh12240\widowctrl\ftnbj\fet0\sectd\linex0
10 | \lndscpsxn
11 | \margl1440\margr1440\margt1440\margb1440
12 | \headery720\footery720\fs24
13 |
14 |
15 |
16 | {\header
17 |
18 | \par
19 |
20 | {
21 | \trowd
22 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
23 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{\fs24 {Header1}}\cell
24 | \pard\intbl\ql{\fs24 {Header2}}\cell
25 | \row
26 | }
27 |
28 | }
29 | {\footer
30 | \par
31 | }
32 | {
33 | \trowd
34 | \trqc \clmgf\clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
35 | \clmrg\clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{1}\cell
36 | \pard\intbl\ql{a}\cell
37 | \row
38 | }
39 |
40 | {
41 | \trowd
42 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
43 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{2}\cell
44 | \pard\intbl\ql{b}\cell
45 | \row
46 | }
47 |
48 | {
49 | \trowd
50 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
51 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{3}\cell
52 | \pard\intbl\ql{c}\cell
53 | \row
54 | }
55 |
56 | {
57 | \trowd
58 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
59 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{4}\cell
60 | \pard\intbl\ql{d}\cell
61 | \row
62 | }
63 |
64 | {
65 | \trowd
66 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
67 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{5}\cell
68 | \pard\intbl\ql{e}\cell
69 | \row
70 | }
71 |
72 | {
73 | \trowd
74 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
75 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{6}\cell
76 | \pard\intbl\ql{f}\cell
77 | \row
78 | }
79 |
80 | {
81 | \trowd
82 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
83 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{7}\cell
84 | \pard\intbl\ql{g}\cell
85 | \row
86 | }
87 |
88 | {
89 | \trowd
90 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
91 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{8}\cell
92 | \pard\intbl\ql{h}\cell
93 | \row
94 | }
95 |
96 | {
97 | \trowd
98 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
99 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{9}\cell
100 | \pard\intbl\ql{i}\cell
101 | \row
102 | }
103 |
104 | {
105 | \trowd
106 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
107 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{10}\cell
108 | \pard\intbl\ql{j}\cell
109 | \row
110 | }
111 |
112 | {
113 | \trowd
114 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
115 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{11}\cell
116 | \pard\intbl\ql{k}\cell
117 | \row
118 | }
119 |
120 | {
121 | \trowd
122 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
123 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{12}\cell
124 | \pard\intbl\ql{l}\cell
125 | \row
126 | }
127 |
128 | {
129 | \trowd
130 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
131 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{13}\cell
132 | \pard\intbl\ql{m}\cell
133 | \row
134 | }
135 |
136 | }
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_51.rtf:
--------------------------------------------------------------------------------
1 | {\rtf1\ansi\deff1
2 | {\fonttbl
3 | {\f0 Times;}
4 | {\f1 Courier New;}
5 | }{\colortbl;;}
6 |
7 |
8 |
9 | \paperw15840\paperh12240\widowctrl\ftnbj\fet0\sectd\linex0
10 | \lndscpsxn
11 | \margl1440\margr1440\margt1440\margb1440
12 | \headery720\footery720\fs24
13 |
14 |
15 |
16 | {\header
17 |
18 | \par
19 |
20 | {
21 | \trowd
22 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx6480
23 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx12960 \pard\intbl\ql{\fs24 {Header1}}\cell
24 | \pard\intbl\ql{\fs24 {Header2}}\cell
25 | \row
26 | }
27 |
28 | }
29 | {\footer
30 | \par
31 | }
32 | {
33 | \trowd
34 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx6480
35 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx12960 \pard\intbl\ql{1}\cell
36 | \pard\intbl\ql{a}\cell
37 | \row
38 | }
39 |
40 | {
41 | \trowd
42 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx6480
43 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx12960 \pard\intbl\ql{2}\cell
44 | \pard\intbl\ql{b}\cell
45 | \row
46 | }
47 |
48 | {
49 | \trowd
50 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx6480
51 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx12960 \pard\intbl\ql{3}\cell
52 | \pard\intbl\ql{c}\cell
53 | \row
54 | }
55 |
56 | {
57 | \trowd
58 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx6480
59 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx12960 \pard\intbl\ql{4}\cell
60 | \pard\intbl\ql{d}\cell
61 | \row
62 | }
63 |
64 | {
65 | \trowd
66 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx6480
67 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx12960 \pard\intbl\ql{5}\cell
68 | \pard\intbl\ql{e}\cell
69 | \row
70 | }
71 |
72 | {
73 | \trowd
74 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx6480
75 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx12960 \pard\intbl\ql{6}\cell
76 | \pard\intbl\ql{f}\cell
77 | \row
78 | }
79 |
80 | {
81 | \trowd
82 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx6480
83 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx12960 \pard\intbl\ql{7}\cell
84 | \pard\intbl\ql{g}\cell
85 | \row
86 | }
87 |
88 | {
89 | \trowd
90 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx6480
91 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx12960 \pard\intbl\ql{8}\cell
92 | \pard\intbl\ql{h}\cell
93 | \row
94 | }
95 |
96 | {
97 | \trowd
98 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx6480
99 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx12960 \pard\intbl\ql{9}\cell
100 | \pard\intbl\ql{i}\cell
101 | \row
102 | }
103 |
104 | {
105 | \trowd
106 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx6480
107 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx12960 \pard\intbl\ql{10}\cell
108 | \pard\intbl\ql{j}\cell
109 | \row
110 | }
111 |
112 | {
113 | \trowd
114 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx6480
115 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx12960 \pard\intbl\ql{11}\cell
116 | \pard\intbl\ql{k}\cell
117 | \row
118 | }
119 |
120 | {
121 | \trowd
122 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx6480
123 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx12960 \pard\intbl\ql{12}\cell
124 | \pard\intbl\ql{l}\cell
125 | \row
126 | }
127 |
128 | {
129 | \trowd
130 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx6480
131 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx12960 \pard\intbl\ql{13}\cell
132 | \pard\intbl\ql{m}\cell
133 | \row
134 | }
135 |
136 | }
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_10.rtf:
--------------------------------------------------------------------------------
1 | {\rtf1\ansi\deff1
2 | {\fonttbl
3 | {\f0 Times;}
4 | {\f1 Courier New;}
5 | }{\colortbl;;}
6 |
7 |
8 |
9 | \paperw15840\paperh12240\widowctrl\ftnbj\fet0\sectd\linex0
10 | \lndscpsxn
11 | \margl1440\margr1440\margt1440\margb1440
12 | \headery720\footery720\fs24
13 |
14 |
15 |
16 | {\header
17 |
18 | \par
19 |
20 | {
21 | \trowd
22 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
23 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{\fs24 {}}\cell
24 | \pard\intbl\ql{\fs24 {}}\cell
25 | \row
26 | }
27 |
28 | {
29 | \trowd
30 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
31 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{\fs24 {}}\cell
32 | \pard\intbl\ql{\fs24 {}}\cell
33 | \row
34 | }
35 |
36 | {
37 | \trowd
38 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
39 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{\fs24 {Header1}}\cell
40 | \pard\intbl\ql{\fs24 {Header2}}\cell
41 | \row
42 | }
43 |
44 | {
45 | \trowd
46 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
47 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{\fs24 {}}\cell
48 | \pard\intbl\ql{\fs24 {}}\cell
49 | \row
50 | }
51 |
52 | }
53 | {\footer
54 | \par
55 | }
56 | {
57 | \trowd
58 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
59 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{1}\cell
60 | \pard\intbl\ql{a}\cell
61 | \row
62 | }
63 |
64 | {
65 | \trowd
66 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
67 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{2}\cell
68 | \pard\intbl\ql{b}\cell
69 | \row
70 | }
71 |
72 | {
73 | \trowd
74 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
75 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{3}\cell
76 | \pard\intbl\ql{c}\cell
77 | \row
78 | }
79 |
80 | {
81 | \trowd
82 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
83 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{4}\cell
84 | \pard\intbl\ql{d}\cell
85 | \row
86 | }
87 |
88 | {
89 | \trowd
90 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
91 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{5}\cell
92 | \pard\intbl\ql{e}\cell
93 | \row
94 | }
95 |
96 | {
97 | \trowd
98 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
99 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{6}\cell
100 | \pard\intbl\ql{f}\cell
101 | \row
102 | }
103 |
104 | {
105 | \trowd
106 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
107 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{7}\cell
108 | \pard\intbl\ql{g}\cell
109 | \row
110 | }
111 |
112 | {
113 | \trowd
114 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
115 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{8}\cell
116 | \pard\intbl\ql{h}\cell
117 | \row
118 | }
119 |
120 | {
121 | \trowd
122 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
123 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{9}\cell
124 | \pard\intbl\ql{i}\cell
125 | \row
126 | }
127 |
128 | {
129 | \trowd
130 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
131 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{10}\cell
132 | \pard\intbl\ql{j}\cell
133 | \row
134 | }
135 |
136 | }
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_47.rtf:
--------------------------------------------------------------------------------
1 | {\rtf1\ansi\deff1
2 | {\fonttbl
3 | {\f0 Times;}
4 | {\f1 Courier New;}
5 | }{\colortbl;;}
6 |
7 |
8 |
9 | \paperw15840\paperh12240\widowctrl\ftnbj\fet0\sectd\linex0
10 | \lndscpsxn
11 | \margl1440\margr1440\margt1440\margb1440
12 | \headery720\footery720\fs24
13 |
14 |
15 |
16 | {\header
17 |
18 | \par
19 |
20 | {
21 | \trowd
22 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
23 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{\fs24 \b {Header1}\b0}\cell
24 | \pard\intbl\ql{\fs24 {Header2}}\cell
25 | \row
26 | }
27 |
28 | }
29 | {\footer
30 | \par
31 | }
32 | {
33 | \trowd
34 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
35 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql\b {1}\b0\cell
36 | \pard\intbl\ql{a}\cell
37 | \row
38 | }
39 |
40 | {
41 | \trowd
42 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
43 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql\b {2}\b0\cell
44 | \pard\intbl\ql{b}\cell
45 | \row
46 | }
47 |
48 | {
49 | \trowd
50 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
51 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql\b {3}\b0\cell
52 | \pard\intbl\ql{c}\cell
53 | \row
54 | }
55 |
56 | {
57 | \trowd
58 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
59 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql\b {4}\b0\cell
60 | \pard\intbl\ql{d}\cell
61 | \row
62 | }
63 |
64 | {
65 | \trowd
66 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
67 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql\b {5}\b0\cell
68 | \pard\intbl\ql{e}\cell
69 | \row
70 | }
71 |
72 | {
73 | \trowd
74 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
75 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql\b {6}\b0\cell
76 | \pard\intbl\ql{f}\cell
77 | \row
78 | }
79 |
80 | {
81 | \trowd
82 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
83 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql\b {7}\b0\cell
84 | \pard\intbl\ql{g}\cell
85 | \row
86 | }
87 |
88 | {
89 | \trowd
90 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
91 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql\b {8}\b0\cell
92 | \pard\intbl\ql{h}\cell
93 | \row
94 | }
95 |
96 | {
97 | \trowd
98 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
99 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql\b {9}\b0\cell
100 | \pard\intbl\ql{i}\cell
101 | \row
102 | }
103 |
104 | {
105 | \trowd
106 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
107 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql\b {10}\b0\cell
108 | \pard\intbl\ql{j}\cell
109 | \row
110 | }
111 |
112 | {
113 | \trowd
114 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
115 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql\b {11}\b0\cell
116 | \pard\intbl\ql{k}\cell
117 | \row
118 | }
119 |
120 | {
121 | \trowd
122 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
123 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql\b {12}\b0\cell
124 | \pard\intbl\ql{l}\cell
125 | \row
126 | }
127 |
128 | {
129 | \trowd
130 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
131 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql\b {13}\b0\cell
132 | \pard\intbl\ql{m}\cell
133 | \row
134 | }
135 |
136 | }
--------------------------------------------------------------------------------
/vignettes/Validation/Test_Case_Code/output/test_48.rtf:
--------------------------------------------------------------------------------
1 | {\rtf1\ansi\deff1
2 | {\fonttbl
3 | {\f0 Times;}
4 | {\f1 Courier New;}
5 | }{\colortbl;;}
6 |
7 |
8 |
9 | \paperw15840\paperh12240\widowctrl\ftnbj\fet0\sectd\linex0
10 | \lndscpsxn
11 | \margl1440\margr1440\margt1440\margb1440
12 | \headery720\footery720\fs24
13 |
14 |
15 |
16 | {\header
17 |
18 | \par
19 |
20 | {
21 | \trowd
22 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
23 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql{\fs24 \i {Header1}\i0}\cell
24 | \pard\intbl\ql{\fs24 {Header2}}\cell
25 | \row
26 | }
27 |
28 | }
29 | {\footer
30 | \par
31 | }
32 | {
33 | \trowd
34 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
35 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql\i {1}\i0\cell
36 | \pard\intbl\ql{a}\cell
37 | \row
38 | }
39 |
40 | {
41 | \trowd
42 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
43 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql\i {2}\i0\cell
44 | \pard\intbl\ql{b}\cell
45 | \row
46 | }
47 |
48 | {
49 | \trowd
50 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
51 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql\i {3}\i0\cell
52 | \pard\intbl\ql{c}\cell
53 | \row
54 | }
55 |
56 | {
57 | \trowd
58 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
59 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql\i {4}\i0\cell
60 | \pard\intbl\ql{d}\cell
61 | \row
62 | }
63 |
64 | {
65 | \trowd
66 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
67 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql\i {5}\i0\cell
68 | \pard\intbl\ql{e}\cell
69 | \row
70 | }
71 |
72 | {
73 | \trowd
74 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
75 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql\i {6}\i0\cell
76 | \pard\intbl\ql{f}\cell
77 | \row
78 | }
79 |
80 | {
81 | \trowd
82 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
83 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql\i {7}\i0\cell
84 | \pard\intbl\ql{g}\cell
85 | \row
86 | }
87 |
88 | {
89 | \trowd
90 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
91 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql\i {8}\i0\cell
92 | \pard\intbl\ql{h}\cell
93 | \row
94 | }
95 |
96 | {
97 | \trowd
98 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
99 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql\i {9}\i0\cell
100 | \pard\intbl\ql{i}\cell
101 | \row
102 | }
103 |
104 | {
105 | \trowd
106 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
107 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql\i {10}\i0\cell
108 | \pard\intbl\ql{j}\cell
109 | \row
110 | }
111 |
112 | {
113 | \trowd
114 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
115 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql\i {11}\i0\cell
116 | \pard\intbl\ql{k}\cell
117 | \row
118 | }
119 |
120 | {
121 | \trowd
122 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
123 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql\i {12}\i0\cell
124 | \pard\intbl\ql{l}\cell
125 | \row
126 | }
127 |
128 | {
129 | \trowd
130 | \trqc \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx2160
131 | \clbrdrt\clbrdrl\clbrdrb\clbrdrr\clvertalt\clNoWrap\clpadfl3\clpadl80 \clpadft3\clpadt80 \clpadfb3\clpadb80 \clpadfr3\clpadr80 \cellx4320 \pard\intbl\ql\i {13}\i0\cell
132 | \pard\intbl\ql{m}\cell
133 | \row
134 | }
135 |
136 | }
--------------------------------------------------------------------------------