{
  "_id": "6a3581f13efcd9bda43ee328",
  "Package": "ksTFL",
  "Type": "Package",
  "Title": "Framework for Clinical Tables, Figures, and Listings",
  "Version": "0.11.7",
  "Authors@R": "c(\nperson(\"Igor\", \"Aleschenkov\",\nemail = \"igor.aleschenkov@gmail.com\",\nrole = c(\"aut\", \"cre\", \"cph\")),\nperson(\"Vladimir\", \"Larchenko\",\nemail = \"crow16384@gmail.com\",\nrole = c(\"aut\", \"cph\"))\n)",
  "Author": "Igor Aleschenkov [aut, cre, cph], Vladimir Larchenko [aut, cph]",
  "Maintainer": "Igor Aleschenkov <igor.aleschenkov@gmail.com>",
  "Description": "Library provides framework for generation of clinical\nTFLs. The purpose is to provide functionality to prepare\nmetadata that describes TFL and pass this metadata together\nwith data to the C++ rendering engine to generate final DOCX\ndocuments with styles and deterministic pagination. Bundled\nthird-party components include vendored FreeType, HarfBuzz,\nminizip, and nlohmann/json code plus Liberation fonts under\ntheir respective compatible licenses; see LICENSE for\nredistribution details.",
  "License": "GPL-3 + file LICENSE",
  "URL": "https://crow16384.github.io/ksTFL/",
  "BugReports": "https://github.com/crow16384/ksTFL/issues",
  "Encoding": "UTF-8",
  "SystemRequirements": "C++20, GNU make",
  "VignetteBuilder": "knitr",
  "Roxygen": "list(markdown = TRUE)",
  "RoxygenNote": "8.0.0",
  "Config/pak/sysreqs": "make",
  "Repository": "https://crow16384.r-universe.dev",
  "Date/Publication": "2026-06-19 17:36:29 UTC",
  "RemoteUrl": "https://github.com/crow16384/ksTFL",
  "RemoteRef": "HEAD",
  "RemoteSha": "eb4993a748bf811db55fbdb2a4a60162faa6f692",
  "NeedsCompilation": "yes",
  "Packaged": {
    "Date": "2026-06-19 17:44:06 UTC",
    "User": "root"
  },
  "MD5sum": "ff2e84a0f2d03768f173c66d30fdbe0b",
  "_user": "crow16384",
  "_type": "src",
  "_file": "ksTFL_0.11.7.tar.gz",
  "_fileid": "8affe6fa800001ab872161964c191b4ee6fb067576ff772a99a09c0c9d813956",
  "_filesize": 10108430,
  "_sha256": "8affe6fa800001ab872161964c191b4ee6fb067576ff772a99a09c0c9d813956",
  "_created": "2026-06-19T17:44:06.000Z",
  "_published": "2026-06-19T17:52:49.818Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 82398538372,
      "time": 263,
      "config": "linux-devel-arm64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7755697391"
    },
    {
      "job": 82398538359,
      "time": 296,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7755704651"
    },
    {
      "job": 82398538396,
      "time": 298,
      "config": "linux-release-arm64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7755705553"
    },
    {
      "job": 82398538379,
      "time": 295,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7755704731"
    },
    {
      "job": 82398538472,
      "time": 128,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "FAIL",
      "artifact": ""
    },
    {
      "job": 82398538431,
      "time": 362,
      "config": "macos-oldrel-x86_64",
      "r": "4.5.3",
      "check": "FAIL",
      "artifact": ""
    },
    {
      "job": 82398538444,
      "time": 190,
      "config": "macos-release-arm64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7755679432"
    },
    {
      "job": 82398538384,
      "time": 186,
      "config": "macos-release-x86_64",
      "r": "4.6.0",
      "check": "FAIL",
      "artifact": ""
    },
    {
      "job": 82397516078,
      "time": 477,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7755630416"
    },
    {
      "job": 82398538362,
      "time": 219,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7755686227"
    },
    {
      "job": 82398538363,
      "time": 257,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7755694929"
    },
    {
      "job": 82398538368,
      "time": 272,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7755698653"
    },
    {
      "job": 82398538361,
      "time": 245,
      "config": "windows-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7755692221"
    }
  ],
  "_buildurl": "https://github.com/r-universe/crow16384/actions/runs/27840254324",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/crow16384/ksTFL",
  "_commit": {
    "id": "eb4993a748bf811db55fbdb2a4a60162faa6f692",
    "author": "Vladimir Larchenko <crow16384@gmail.com>",
    "committer": "Vladimir Larchenko <crow16384@gmail.com>",
    "message": "Update Master to version 0.11.7\n\n- Fix nlohmann/json.hpp vendor: eliminate char_traits<unsigned char> deprecation\n  warnings on macOS Apple Clang 21+ (no pragma; requires-clause member template\n  + explicit StringType on binary-format overloads)\n- Bump version to 0.11.7; update NEWS.md and rebuild pkgdown site\n",
    "time": 1781890589
  },
  "_maintainer": {
    "name": "Igor Aleschenkov",
    "email": "igor.aleschenkov@gmail.com",
    "login": "algarik",
    "description": "",
    "uuid": 179924434
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "Rcpp",
      "role": "LinkingTo"
    },
    {
      "package": "cli",
      "role": "Imports"
    },
    {
      "package": "checkmate",
      "role": "Imports"
    },
    {
      "package": "jsonlite",
      "role": "Imports"
    },
    {
      "package": "purrr",
      "role": "Imports"
    },
    {
      "package": "rlang",
      "role": "Imports"
    },
    {
      "package": "tidyselect",
      "role": "Imports"
    },
    {
      "package": "utils",
      "role": "Imports"
    },
    {
      "package": "digest",
      "role": "Imports"
    },
    {
      "package": "htmltools",
      "role": "Imports"
    },
    {
      "package": "rstudioapi",
      "role": "Imports"
    },
    {
      "package": "Rcpp",
      "version": ">= 1.0.0",
      "role": "Imports"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "ggplot2",
      "role": "Suggests"
    },
    {
      "package": "shiny",
      "role": "Suggests"
    },
    {
      "package": "colourpicker",
      "role": "Suggests"
    },
    {
      "package": "sortable",
      "role": "Suggests"
    },
    {
      "package": "shinyFiles",
      "role": "Suggests"
    }
  ],
  "_owner": "crow16384",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2025-50",
      "n": 5
    },
    {
      "week": "2025-51",
      "n": 54
    },
    {
      "week": "2025-52",
      "n": 22
    },
    {
      "week": "2026-09",
      "n": 33
    },
    {
      "week": "2026-10",
      "n": 86
    },
    {
      "week": "2026-11",
      "n": 29
    },
    {
      "week": "2026-12",
      "n": 22
    },
    {
      "week": "2026-13",
      "n": 20
    },
    {
      "week": "2026-14",
      "n": 13
    },
    {
      "week": "2026-15",
      "n": 4
    },
    {
      "week": "2026-16",
      "n": 3
    },
    {
      "week": "2026-17",
      "n": 5
    },
    {
      "week": "2026-19",
      "n": 7
    },
    {
      "week": "2026-22",
      "n": 8
    },
    {
      "week": "2026-23",
      "n": 2
    },
    {
      "week": "2026-24",
      "n": 2
    },
    {
      "week": "2026-25",
      "n": 16
    }
  ],
  "_tags": [
    {
      "name": "v0.7.7",
      "date": "2026-03-23"
    },
    {
      "name": "v0.7.8",
      "date": "2026-03-23"
    },
    {
      "name": "v0.7.9",
      "date": "2026-03-24"
    },
    {
      "name": "v0.8.0",
      "date": "2026-03-26"
    },
    {
      "name": "v0.9.0",
      "date": "2026-03-27"
    },
    {
      "name": "v0.10.0",
      "date": "2026-04-01"
    },
    {
      "name": "v0.10.1",
      "date": "2026-04-02"
    },
    {
      "name": "v0.11.1",
      "date": "2026-05-09"
    },
    {
      "name": "v0.11.6",
      "date": "2026-06-19"
    }
  ],
  "_stars": 0,
  "_contributors": [
    {
      "user": "crow16384",
      "count": 205,
      "uuid": 115039243
    },
    {
      "user": "algarik",
      "count": 95,
      "uuid": 179924434
    },
    {
      "user": "al-garik",
      "count": 23,
      "uuid": 248288395
    },
    {
      "user": "xakomowe",
      "count": 1,
      "uuid": 248909102
    }
  ],
  "_userbio": {
    "uuid": 115039243,
    "type": "user",
    "name": "crow16384",
    "followers": 0
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/ksTFL"
  },
  "_devurl": "https://github.com/crow16384/kstfl",
  "_pkgdown": "https://crow16384.github.io/ksTFL/",
  "_searchresults": 9,
  "_topics": [
    "zlib",
    "cpp"
  ],
  "_rbuild": "4.6.0",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/ksTFL.html",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "LICENSE",
    "manual.pdf"
  ],
  "_cranurl": false,
  "_exports": [
    "add_body_text",
    "add_footer",
    "add_footnote",
    "add_header",
    "add_span_header",
    "add_style",
    "add_subtitle",
    "add_title",
    "c_addrow",
    "c_clear",
    "c_glue",
    "c_merge",
    "c_pageBreak",
    "c_style",
    "clean_reports",
    "compute_cols",
    "create_figure",
    "create_report",
    "create_table",
    "create_text",
    "define_cols",
    "f_combine",
    "list_reports",
    "p_margins",
    "p_page",
    "replay_report",
    "run_replay_app",
    "run_styles_editor",
    "s_border",
    "s_borders",
    "s_font",
    "s_indents",
    "s_paragraph",
    "s_spacing",
    "s_table_style",
    "save_report",
    "set_document",
    "set_page_style",
    "tfl_font_status",
    "tfl_get_option",
    "tfl_get_options",
    "tfl_list_templates",
    "tfl_print_style_atoms",
    "tfl_rescan_fonts",
    "tfl_reset_options",
    "tfl_set_options",
    "tfl_spec_preview_prompt",
    "tfl_spec_preview_selection",
    "tfl_style_atoms_catalog",
    "view_tfl_spec",
    "write_doc"
  ],
  "_help": [
    {
      "page": "add_body_text",
      "title": "Add body text",
      "topics": [
        "add_body_text"
      ]
    },
    {
      "page": "add_body_text.default",
      "title": "Default method for add_body_text",
      "topics": [
        "add_body_text.default"
      ]
    },
    {
      "page": "add_body_text.TFL_options",
      "title": "Add body text for TFL_options",
      "topics": [
        "add_body_text.TFL_options"
      ]
    },
    {
      "page": "add_body_text.TFL_spec",
      "title": "Add body text for TFL_spec",
      "topics": [
        "add_body_text.TFL_spec"
      ]
    },
    {
      "page": "add_footer",
      "title": "Add a footer row",
      "topics": [
        "add_footer"
      ]
    },
    {
      "page": "add_footer.default",
      "title": "Default method for add_footer",
      "topics": [
        "add_footer.default"
      ]
    },
    {
      "page": "add_footer.TFL_options",
      "title": "Add a footer row for TFL_options",
      "topics": [
        "add_footer.TFL_options"
      ]
    },
    {
      "page": "add_footer.TFL_spec",
      "title": "Add a footer row for TFL_spec",
      "topics": [
        "add_footer.TFL_spec"
      ]
    },
    {
      "page": "add_footnote",
      "title": "Add a footnote",
      "topics": [
        "add_footnote"
      ]
    },
    {
      "page": "add_header",
      "title": "Add a header row",
      "topics": [
        "add_header"
      ]
    },
    {
      "page": "add_header.default",
      "title": "Default method for add_header",
      "topics": [
        "add_header.default"
      ]
    },
    {
      "page": "add_header.TFL_options",
      "title": "Add a header row for TFL_options",
      "topics": [
        "add_header.TFL_options"
      ]
    },
    {
      "page": "add_header.TFL_spec",
      "title": "Add a header row for TFL_spec",
      "topics": [
        "add_header.TFL_spec"
      ]
    },
    {
      "page": "add_span_header",
      "title": "Add stub (spanning) column definition",
      "topics": [
        "add_span_header"
      ]
    },
    {
      "page": "add_style",
      "title": "Add or update a style definition",
      "topics": [
        "add_style"
      ]
    },
    {
      "page": "add_style.default",
      "title": "Default method for add_style",
      "topics": [
        "add_style.default"
      ]
    },
    {
      "page": "add_style.TFL_options",
      "title": "Add or update a style definition for TFL_options",
      "topics": [
        "add_style.TFL_options"
      ]
    },
    {
      "page": "add_style.TFL_spec",
      "title": "Add or update a style definition for TFL_spec",
      "topics": [
        "add_style.TFL_spec"
      ]
    },
    {
      "page": "add_subtitle",
      "title": "Add a subtitle",
      "topics": [
        "add_subtitle"
      ]
    },
    {
      "page": "add_title",
      "title": "Add a title",
      "topics": [
        "add_title"
      ]
    },
    {
      "page": "c_addrow",
      "title": "Insert Additional Row in Conditional Rows",
      "topics": [
        "c_addrow"
      ]
    },
    {
      "page": "c_clear",
      "title": "Clear Cell Content in Conditional Rows",
      "topics": [
        "c_clear"
      ]
    },
    {
      "page": "c_glue",
      "title": "Concatenate a Value to Cell Text in Conditional Rows",
      "topics": [
        "c_glue"
      ]
    },
    {
      "page": "c_merge",
      "title": "Merge Adjacent Columns in Conditional Rows",
      "topics": [
        "c_merge"
      ]
    },
    {
      "page": "c_pageBreak",
      "title": "Insert a page break at the matching row",
      "topics": [
        "c_pageBreak"
      ]
    },
    {
      "page": "c_style",
      "title": "Apply Style to Columns in Conditional Rows",
      "topics": [
        "c_style"
      ]
    },
    {
      "page": "clean_reports",
      "title": "Clean Obsolete and Orphaned JSON Files from a Meta Folder",
      "topics": [
        "clean_reports"
      ]
    },
    {
      "page": "compute_cols",
      "title": "Define Conditional Row Actions for Tables",
      "topics": [
        "compute_cols"
      ]
    },
    {
      "page": "create_figure",
      "title": "Create a Figure Specification",
      "topics": [
        "create_figure"
      ]
    },
    {
      "page": "create_report",
      "title": "Combine Multiple TFL Specifications and/or Reports into a Single Report",
      "topics": [
        "create_report"
      ]
    },
    {
      "page": "create_table",
      "title": "Create a Table Specification",
      "topics": [
        "create_table"
      ]
    },
    {
      "page": "create_text",
      "title": "Create a Text Document Specification",
      "topics": [
        "create_text"
      ]
    },
    {
      "page": "define_cols",
      "title": "Define or modify column properties",
      "topics": [
        "define_cols"
      ]
    },
    {
      "page": "f_combine",
      "title": "Combine multiple style names for explicit grouping",
      "topics": [
        "f_combine"
      ]
    },
    {
      "page": "list_reports",
      "title": "List Saved Reports in a Meta Folder",
      "topics": [
        "list_reports"
      ]
    },
    {
      "page": "p_margins",
      "title": "Define page margins",
      "topics": [
        "p_margins"
      ]
    },
    {
      "page": "p_page",
      "title": "Define page settings",
      "topics": [
        "p_page"
      ]
    },
    {
      "page": "print.TFL_spec",
      "title": "Print method for TFL specification objects",
      "topics": [
        "print.TFL_spec"
      ]
    },
    {
      "page": "replay_report",
      "title": "Re-render a DOCX from Stored JSON",
      "topics": [
        "replay_report"
      ]
    },
    {
      "page": "run_replay_app",
      "title": "Launch the Combined Replay Shiny App",
      "topics": [
        "run_replay_app"
      ]
    },
    {
      "page": "run_styles_editor",
      "title": "Launch the styles template editor Shiny app",
      "topics": [
        "run_styles_editor"
      ]
    },
    {
      "page": "s_border",
      "title": "Define border properties",
      "topics": [
        "s_border"
      ]
    },
    {
      "page": "s_borders",
      "title": "Define borders for table cells or paragraphs",
      "topics": [
        "s_borders"
      ]
    },
    {
      "page": "s_font",
      "title": "Define font properties for a style",
      "topics": [
        "s_font"
      ]
    },
    {
      "page": "s_indents",
      "title": "Define indentation properties for paragraphs",
      "topics": [
        "s_indents"
      ]
    },
    {
      "page": "s_paragraph",
      "title": "Define paragraph properties for a style",
      "topics": [
        "s_paragraph"
      ]
    },
    {
      "page": "s_spacing",
      "title": "Define spacing properties for paragraphs",
      "topics": [
        "s_spacing"
      ]
    },
    {
      "page": "s_table_style",
      "title": "Define table-specific styling",
      "topics": [
        "s_table_style"
      ]
    },
    {
      "page": "save_report",
      "title": "Save TFL Report to JSON with Data Files",
      "topics": [
        "save_report"
      ]
    },
    {
      "page": "set_document",
      "title": "Set document properties",
      "topics": [
        "set_document"
      ]
    },
    {
      "page": "set_page_style",
      "title": "Set document style properties",
      "topics": [
        "set_page_style",
        "set_page_style.TFL_options",
        "set_page_style.TFL_spec"
      ]
    },
    {
      "page": "tfl_font_status",
      "title": "Show current font status",
      "topics": [
        "tfl_font_status"
      ]
    },
    {
      "page": "tfl_get_option",
      "title": "Retrieve a single package option",
      "topics": [
        "tfl_get_option"
      ]
    },
    {
      "page": "tfl_get_options",
      "title": "Return the active package options",
      "topics": [
        "tfl_get_options"
      ]
    },
    {
      "page": "tfl_list_templates",
      "title": "List available bundled templates",
      "topics": [
        "tfl_list_templates"
      ]
    },
    {
      "page": "tfl_print_style_atoms",
      "title": "Print all built-in style atoms to the console",
      "topics": [
        "tfl_print_style_atoms",
        "tfl_style_atoms_catalog"
      ]
    },
    {
      "page": "tfl_rescan_fonts",
      "title": "Rescan system fonts",
      "topics": [
        "tfl_rescan_fonts"
      ]
    },
    {
      "page": "tfl_reset_options",
      "title": "Reset all session options to package defaults",
      "topics": [
        "tfl_reset_options"
      ]
    },
    {
      "page": "tfl_set_options",
      "title": "Update the session package settings",
      "topics": [
        "tfl_set_options"
      ]
    },
    {
      "page": "tfl_spec_addins",
      "title": "RStudio Addins for TFL Specification Preview",
      "topics": [
        "tfl_spec_addins",
        "tfl_spec_preview_prompt",
        "tfl_spec_preview_selection"
      ]
    },
    {
      "page": "view_tfl_spec",
      "title": "Open the HTML TFL Specification Preview in the RStudio Viewer",
      "topics": [
        "view_tfl_spec"
      ]
    },
    {
      "page": "write_doc",
      "title": "Save and Render a TFL Report to DOCX",
      "topics": [
        "write_doc"
      ]
    }
  ],
  "_readme": "https://github.com/crow16384/ksTFL/raw/HEAD/README.md",
  "_rundeps": [
    "backports",
    "base64enc",
    "checkmate",
    "cli",
    "digest",
    "fastmap",
    "glue",
    "htmltools",
    "jsonlite",
    "lifecycle",
    "magrittr",
    "purrr",
    "Rcpp",
    "rlang",
    "rstudioapi",
    "tidyselect",
    "vctrs",
    "withr"
  ],
  "_sysdeps": [
    {
      "shlib": "libz",
      "package": "zlib1g",
      "headers": "zlib1g-dev",
      "source": "zlib",
      "version": "1:1.3.dfsg-3.1ubuntu2.1",
      "name": "zlib",
      "homepage": "http://zlib.net/",
      "description": "compression library - runtime"
    },
    {
      "shlib": "libstdc++",
      "package": "libstdc++6",
      "source": "gcc",
      "version": "14.2.0-4ubuntu2~24.04.1",
      "name": "c++",
      "homepage": "http://gcc.gnu.org/",
      "description": "GNU Standard C++ Library v3"
    }
  ],
  "_vignettes": [
    {
      "source": "Advanced_StyleRows.Rmd",
      "filename": "Advanced_StyleRows.html",
      "title": "Advanced StyleRows and Conditional Formatting in ksTFL",
      "author": "ksTFL Development Team",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Overview",
        "Category and prerequisites",
        "Core Concept: Lazy Evaluation",
        "Why Lazy Evaluation?",
        "The Three Action Functions",
        "c_style(): Conditional Styling",
        "c_merge(): Conditional Cell Merging",
        "c_addrow(): Conditional Row Insertion",
        "c_pageBreak(): Conditional Page Break",
        "Evaluation Context",
        "The Data Environment",
        "Available Helper Functions",
        "Advanced c_style() Patterns",
        "Multiple Column Styling",
        "Conditional Styling with Complex Logic",
        "Row-Level Styling",
        "Advanced c_merge() Patterns",
        "Multi-Column Grouping Merges",
        "Conditional Display Column Content",
        "Merging with Styling",
        "Advanced c_addrow() Patterns",
        "Summary Rows",
        "Header Rows",
        "c_glue(): Append or Prepend Text to Cell Values",
        "c_clear(): Blank Cell Content in Matching Rows",
        "Combining Actions Together",
        "Performance Tips",
        "1. Minimize compute_cols() Calls",
        "2. Use Vectorized Conditions",
        "3. Pre-Filter Data When Possible",
        "4. Style Consolidation",
        "Debugging and Inspection",
        "Viewing Captured Actions",
        "Testing Conditions Manually",
        "Incremental Building",
        "Common Patterns Library",
        "Pattern 1: Alternating Row Colors",
        "Pattern 2: Grouped Section Headers with Merging",
        "Pattern 3: Conditional Highlighting with Thresholds",
        "Pattern 4: Summary Rows with Totals",
        "Limitations and Workarounds",
        "Limitation 1: No Direct Aggregate Functions in Conditions",
        "Limitation 2: No Nested c_*() Functions",
        "Limitation 3: Style References Must Exist",
        "Integration with Other ksTFL Features",
        "Using with define_cols()",
        "Using with Invisible Columns",
        "Using in Multi-Spec Reports",
        "Best Practices",
        "Summary"
      ],
      "created": "2025-12-25 12:45:18",
      "modified": "2026-06-17 13:18:55",
      "commits": 23
    },
    {
      "source": "Column_Width_Management.Rmd",
      "filename": "Column_Width_Management.html",
      "title": "Column Width Management in ksTFL",
      "author": "ksTFL Development Team",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Overview",
        "Core Concepts",
        "Column States",
        "Initial Width Distribution",
        "The autoColWidth Option",
        "Width Locking Workflow",
        "Basic Locking",
        "Multiple Locked Columns",
        "Mixing Relative and Absolute Units",
        "Width Recalculation Algorithm",
        "Example Walkthrough",
        "Drift Correction",
        "Invisible Columns",
        "Making Columns Invisible",
        "Important Constraints",
        "Using Invisible Columns for Logic",
        "Manual Width Management",
        "Disabling Auto-Recalculation",
        "Why Use Manual Mode?",
        "Validation and Constraints",
        "Minimum Width Thresholds",
        "Space Constraint Validation",
        "Adjusting Minimum Width",
        "Common Patterns",
        "Pattern 1: ID Column + Auto Widths",
        "Pattern 2: Fixed-Width Text + Flex Numeric",
        "Pattern 3: All Manual Widths",
        "Pattern 4: Progressive Locking",
        "Troubleshooting",
        "Issue: \"Insufficient space for remaining columns\"",
        "Issue: Widths don't sum to exactly 100%",
        "Issue: Can't set width for invisible column",
        "Issue: Widths change unexpectedly after define_cols()",
        "Advanced: Width Metadata",
        "Best Practices",
        "Summary"
      ],
      "created": "2025-12-25 12:45:18",
      "modified": "2026-06-17 13:18:55",
      "commits": 15
    },
    {
      "source": "FAQ_with_ksTFL.Rmd",
      "filename": "FAQ_with_ksTFL.html",
      "title": "FAQ and Practical Gotchas in ksTFL",
      "author": "ksTFL Team",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Overview",
        "Data and spec behavior",
        "1. Why does cols not drop the other columns from my data?",
        "2. Can I hide a column and still use it in compute_cols()?",
        "3. Why can I not set colWidth on an invisible column?",
        "4. Why did the other column widths change after I locked one column?",
        "5. Why did c_glue() not modify a repeated value?",
        "Row actions and layout rules",
        "6. Why does compute_cols() not like aggregate logic such as mean(x)?",
        "7. Can I nest c_*() actions inside each other?",
        "8. Why does every add_span_header() call create a new row of headers?",
        "9. Can span headers overlap?",
        "10. How do I keep a small table under a figure on the same page?",
        "11. When should I use isGrouping, isPaging, and isColBreak?",
        "12. Why do my footnotes repeat on every page?",
        "Rendering, replay, and reproducibility",
        "13. What is the practical difference between write_doc(),",
        "14. When do I need a persistent metaPath instead of tempdir()?",
        "15. Can I delete the original figure file after saving a report?",
        "16. Why did different sections of one report use different templates?",
        "17. How do I force one template across every section?",
        "TOC and report assembly",
        "18. Why does a Table of Contents not appear even though I asked for one?",
        "19. Why is the TOC still just a placeholder when I open the DOCX?",
        "20. Can create_report() accept a named list of specs built in a loop?",
        "Practical column and action recipes",
        "21. How do I define several display columns in one place?",
        "22. How do I use NA to skip one column inside a batch define_cols() call?",
        "23. How do I hide a helper column but still use it to drive formatting?",
        "24. How do I turn a hidden grouping column into a stub header?",
        "25. How do I insert subtotals from a hidden total column?",
        "26. How do I apply one condition to several visible columns at once?",
        "27. How do I combine font and background styles for one rule?",
        "28. How do I give columns a base style and still add row-level",
        "29. How do I build a total line by combining c_merge(), c_clear(),",
        "30. How do I apply more than one action to the same condition without",
        "31. How do I build a two-level stub with one hidden column and two style rules?",
        "32. Can I combine multiple actions of the same or different types, and how do they work together?",
        "33. How can I create three- or four-level nested text in one column (for example Parameter/Visit/Statistic indentation)?",
        "Pattern A: detail rows only, hierarchy injected with c_addrow()",
        "Pattern B: placeholder hierarchy rows in data, collapsed with c_merge()",
        "34. How do I switch between continuous sections, repeating/not repeating headers, and row-break behavior across pages?",
        "Metadata workflows: replay, combine, and validation",
        "35. How do I replay a document from stored metadata without re-running R code?",
        "36. How do I combine multiple documents into a single DOCX with a Table of Contents?",
        "37. How do I filter and combine only the latest versions of documents?",
        "38. How do I match saved metadata with actual DOCX files for QC validation?",
        "39. How do I store metadata persistently for regulatory validation?",
        "40. How do I clean up obsolete metadata files while keeping the latest versions?"
      ],
      "created": "2026-06-17 13:18:55",
      "modified": "2026-06-18 12:40:59",
      "commits": 2
    },
    {
      "source": "Font_Management.Rmd",
      "filename": "Font_Management.html",
      "title": "Font Management in ksTFL",
      "author": "ksTFL Development Team",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Overview",
        "How Font Discovery Works",
        "Platform-Specific Directories",
        "Target Fonts and Fallbacks",
        "Checking Font Status",
        "Adding Custom Font Directories",
        "Option A: Set before loading",
        "Option B: Set and rescan after loading",
        "Rescanning Fonts",
        "Startup Messages",
        "Interaction with write_doc()",
        "FAQ",
        "Q: I see [fallback] for a font I know is installed. What's wrong?",
        "Q: Can I use custom fonts not in the target list?",
        "Q: Will documents look different on systems without the proprietary fonts?",
        "Q: How do I suppress the startup font warning?"
      ],
      "created": "2026-03-19 10:10:06",
      "modified": "2026-06-17 13:18:55",
      "commits": 6
    },
    {
      "source": "Getting_Started_with_ksTFL.Rmd",
      "filename": "Getting_Started_with_ksTFL.html",
      "title": "Getting Started with ksTFL",
      "author": "ksTFL Team",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Introduction",
        "How to use this guide",
        "General workflow",
        "High-level pipeline",
        "Anatomy of a TFL spec",
        "Quick 5-minute example",
        "Step 1: Create a TFL_spec",
        "Table spec (from data frame)",
        "Figure spec (from image file)",
        "Text spec (narrative content)",
        "Step 2: Customize columns (define_cols)",
        "Single column",
        "Batch update (multiple columns with single values)",
        "Per-column customization",
        "Step 3: Define styles (add_style)",
        "Step 4: Add spanning headers (span headers)",
        "Step 5: Add titles, footnotes, headers, footers",
        "Step 5b: Page layout and templates",
        "Page size, orientation, and margins",
        "Document templates",
        "Step 6: Combine specs into a report",
        "Passing a named list of specs",
        "Step 7: Apply conditional row actions (compute_cols)",
        "Step 8: Save and Render",
        "Option A: One step with write_doc() (recommended)",
        "Option B: Two steps with save_report() + replay_report()",
        "Step 9: JSON metadata — what it is and why you might need it",
        "What is the metadata folder?",
        "Why use a persistent metaPath?",
        "Managing metadata files",
        "Recommended production setup",
        "Understanding auto-generated values",
        "Column widths (auto-calculation)",
        "Data references (dataRef)",
        "Session-wide defaults with tfl_options",
        "Complete example: From data to document",
        "Key gotchas and tips",
        "RStudio Addins",
        "Styles Editor",
        "Replay Reports",
        "TFL Spec Preview (Selection)",
        "TFL Spec Preview (by name)",
        "Style Atoms Catalog",
        "Next steps",
        "Resources",
        "Quick reference table"
      ],
      "created": "2025-12-22 11:12:17",
      "modified": "2026-06-17 13:18:55",
      "commits": 37
    },
    {
      "source": "Real_Examples_with_ksTFL.Rmd",
      "filename": "Real_Examples_with_ksTFL.html",
      "title": "Real Examples of Clinical Outputs using ksTFL",
      "author": "ksTFL Team",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Purpose",
        "How examples are organised",
        "Session setup (shared across examples)",
        "Example 1 — Demographics table with conditional formatting",
        "Input data",
        "Building the specification",
        "Render",
        "Rendered output",
        "Switching style templates",
        "Example 2 — Demographics table (UTF-8 encoding support)",
        "Code",
        "Example 3 — Adverse Events table with complex spanning headers",
        "Example 4 — Data listing with automatic two-level TOC",
        "Splitting long tables across pages",
        "Split rendered output",
        "Example 5 — Figures and combined multi-spec reports with TOC",
        "Example 6 - Table under the figure",
        "Data",
        "Variation: adding an explicit table title",
        "Troubleshooting: When figure and table don't fit",
        "Example 7 - Gap between Spanning Header Lines"
      ],
      "created": "2026-03-21 08:52:04",
      "modified": "2026-06-18 12:40:59",
      "commits": 10
    },
    {
      "source": "Rendering_Pipeline.Rmd",
      "filename": "Rendering_Pipeline.html",
      "title": "Rendering Pipeline and Full C++ Architecture in ksTFL",
      "author": "ksTFL Development Team",
      "engine": "knitr::rmarkdown",
      "headings": [
        "1. End-to-End Architecture",
        "2. C++ Module Map",
        "2.1 Entry and orchestration",
        "2.2 Parsing and schema model",
        "2.3 Layout and table engine",
        "2.4 Font discovery, measurement, and pagination",
        "2.5 DOCX emission and packaging",
        "3. Detailed Rendering Pipeline",
        "4. Core Data Structures",
        "5. Text and Font Subsystem",
        "6. Pagination Internals",
        "7. Style Resolution Cascade",
        "8. R/C++ Integration",
        "9. Build and Dependencies",
        "10. Practical Trace (One Table Spec)"
      ],
      "created": "2026-03-13 12:05:32",
      "modified": "2026-06-17 13:18:55",
      "commits": 12
    },
    {
      "source": "Reporting_Examples_with_ksTFL.Rmd",
      "filename": "Reporting_Examples_with_ksTFL.html",
      "title": "Reporting Examples using ksTFL",
      "author": "ksTFL Team",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Category and scope",
        "Workflow overview",
        "1 — Simple minimal table",
        "2 — Simple minimal figure",
        "3 — Simple minimal text (narrative)",
        "4 — Define columns: single, batch, and parameter recycling",
        "Why define_cols()?",
        "Example 1: Single column definition",
        "Example 2: Batch update with single value (recycling to all columns)",
        "Example 3: Batch update with per-column values (1-to-N mapping)",
        "Example 4: Multiple define_cols() calls (chaining with |>)",
        "5 — Set document properties (hasData, content width, placement)",
        "6 — Combine table/figure/text into a single report",
        "Passing a named list of specs",
        "7 — Column widths: automatic calculation and locking",
        "How automatic column width works",
        "Example 1: Accept auto-calculated widths",
        "Example 2: Lock one column, auto-adjust others",
        "Example 3: Lock multiple columns with relative widths",
        "Example 4: Mixed units (percentages and absolute)",
        "Example 5: Width validation and constraints",
        "8 — Table with titles, subtitles and footnotes",
        "9 — span columns (spanning headers)",
        "Why spanning headers?",
        "Example 1: Single spanning header",
        "Example 1b: Using tidyselect helpers with spanning headers",
        "Example 2: Styled spanning headers",
        "Example 3: Paragraph borders on spanning headers",
        "10 — Styles and f_combine() for combined style references",
        "Why named styles?",
        "Example 1: Define base styles",
        "Example 2: Combine styles with f_combine()",
        "11 — Conditional row actions with compute_cols()",
        "Example 1: Conditional styling",
        "Example 2: Combining styles in conditional rows",
        "Example 3: Column merging in conditional rows",
        "Example 4: Inserting separator rows",
        "Example 4b: Page break insertion",
        "Example 5: Multiple actions on same rows",
        "12 — Render to DOCX with write_doc()",
        "What write_doc() does",
        "Example: Assemble and render a multi-spec report",
        "13 — Session-wide tfl_options: common headers/footers and default body text",
        "Why session options?",
        "Example 1: Set basic session options",
        "Example 2: Override session options in a specific spec",
        "Example 3: Check and reset session options",
        "Final notes"
      ],
      "created": "2025-12-22 11:12:17",
      "modified": "2026-06-17 13:18:55",
      "commits": 35
    },
    {
      "source": "Styling_Guide_with_ksTFL.Rmd",
      "filename": "Styling_Guide_with_ksTFL.html",
      "title": "Styling Guide (ksTFL)",
      "author": "ksTFL Team",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Overview",
        "Category and scope",
        "Styling philosophy and workflow",
        "Why declarative styles?",
        "Best practices workflow",
        "Style primitives (s_* helpers)",
        "s_font() — Font properties",
        "s_paragraph() — Paragraph properties",
        "s_spacing() — Line and paragraph spacing",
        "s_indents() — Indentation",
        "s_table_style() — Table cell properties",
        "s_borders() — Border specifications",
        "s_border() — Individual border line",
        "Paragraph-level borders",
        "Declaring named styles with add_style()",
        "Basic syntax",
        "Example: Define a complete style",
        "Multiple calls merge with last-win strategy",
        "Referencing and applying styles",
        "1. Column labels — labelStyleRef in define_cols()",
        "2. Column values — valueStyleRef in define_cols()",
        "3. Spanning headers — labelStyleRef in add_span_header()",
        "4. Content — styleRef in add_title(), add_footnote()",
        "Combining styles with f_combine()",
        "Basic usage",
        "When to use f_combine() vs named styles",
        "Combining with per-column mapping",
        "Allowed values (enumerations)",
        "Color names",
        "Font names (common)",
        "Alignment",
        "Border line styles",
        "Vertical alignment",
        "Text orientation",
        "Common styling patterns",
        "Pattern 1: Clinical table headers",
        "Pattern 2: Right-aligned numeric columns",
        "Pattern 3: ID/key columns (bold, wide)",
        "Pattern 4: Multi-level headers with styled stubs",
        "Troubleshooting",
        "Error: \"Context error\" or \"can only be used inside add_style()\"",
        "Error: \"Invalid parameter\" or \"Allowed values are...\"",
        "Styles not applied after create_report()",
        "Styles looking different in renderer than expected",
        "Advanced notes",
        "Style consolidation in create_report()",
        "Style reference resolution",
        "Built-in style atoms",
        "Complete atom reference",
        "Table-width shrink atoms (tw_*)",
        "See also"
      ],
      "created": "2025-12-22 11:12:17",
      "modified": "2026-06-17 13:18:55",
      "commits": 25
    }
  ],
  "_score": 5.36078268987328,
  "_indexed": true,
  "_nocasepkg": "kstfl",
  "_universes": [
    "crow16384",
    "algarik"
  ],
  "_previous": "0.11.6",
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.11.7",
      "date": "2026-06-19T17:48:39.000Z",
      "distro": "noble",
      "arch": "aarch64",
      "commit": "eb4993a748bf811db55fbdb2a4a60162faa6f692",
      "fileid": "75b4dbc92dd57dd07e1e051e57007414266662171a6b0a2c0d40db956b8e49f9",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/crow16384/actions/runs/27840254324"
    },
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.11.7",
      "date": "2026-06-19T17:49:07.000Z",
      "distro": "noble",
      "arch": "x86_64",
      "commit": "eb4993a748bf811db55fbdb2a4a60162faa6f692",
      "fileid": "cdeeae0192caed34fc1be327500782875b2de809fbf87597d00016fb8a34a4fd",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/crow16384/actions/runs/27840254324"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "0.11.7",
      "date": "2026-06-19T17:49:08.000Z",
      "distro": "noble",
      "arch": "aarch64",
      "commit": "eb4993a748bf811db55fbdb2a4a60162faa6f692",
      "fileid": "ae450c7950e9066580105c11fdcef6a8d21b816bb35d553fa63efc5bc8c8ae7e",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/crow16384/actions/runs/27840254324"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "0.11.7",
      "date": "2026-06-19T17:49:06.000Z",
      "distro": "noble",
      "arch": "x86_64",
      "commit": "eb4993a748bf811db55fbdb2a4a60162faa6f692",
      "fileid": "f0d35c89fb2efa2d32c031b8291418d6a063e2012678aeeaa2d5ebeb4fdb6962",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/crow16384/actions/runs/27840254324"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "0.11.7",
      "date": "2026-06-19T17:47:48.000Z",
      "arch": "aarch64",
      "commit": "eb4993a748bf811db55fbdb2a4a60162faa6f692",
      "fileid": "e7a1b1f05f428420a23c85863e75cdfea0bd273018f7e5416c4faf0f6873e401",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/crow16384/actions/runs/27840254324"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.11.7",
      "date": "2026-06-19T17:48:29.000Z",
      "arch": "emscripten",
      "commit": "eb4993a748bf811db55fbdb2a4a60162faa6f692",
      "fileid": "2bd5c81e7d0ba0a6be330b753d0e5fb96e3a7dec1aa9767d4314410d952d9213",
      "status": "success",
      "buildurl": "https://github.com/r-universe/crow16384/actions/runs/27840254324"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.11.7",
      "date": "2026-06-19T17:47:28.000Z",
      "arch": "x86_64",
      "commit": "eb4993a748bf811db55fbdb2a4a60162faa6f692",
      "fileid": "dc01ebf8689aea17f56c752124e904c34d776ba92eae090b6053f3fe39fa7c76",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/crow16384/actions/runs/27840254324"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.11.7",
      "date": "2026-06-19T17:47:26.000Z",
      "arch": "x86_64",
      "commit": "eb4993a748bf811db55fbdb2a4a60162faa6f692",
      "fileid": "f8983c3afa894781b1bf8ce1099735cb4b3bd6384a9dc9c2276b1d5ff7586557",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/crow16384/actions/runs/27840254324"
    },
    {
      "r": "4.6.0",
      "os": "win",
      "version": "0.11.7",
      "date": "2026-06-19T17:47:24.000Z",
      "arch": "x86_64",
      "commit": "eb4993a748bf811db55fbdb2a4a60162faa6f692",
      "fileid": "57615016f8fa43c2b279067ec85d688da9dfce855d442f175e967fc596b7c494",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/crow16384/actions/runs/27840254324"
    }
  ]
}