| #' Make linebreak in LaTeX Table cells |
| #' |
| #' @description This function generate LaTeX code of `makecell` so that users |
| #' can have linebreaks in their table |
| #' |
| #' @param x A character vector |
| #' @param align Choose from "l", "c" or "r" |
| #' @param double_escape Whether special character should be double escaped. |
| #' Default is FALSE. |
| #' @param linebreaker Symbol for linebreaks to replace. Default is `\\n`. |
| #' |
| #' @export |
| linebreak <- function(x, align = c("l", "c", "r"), double_escape = F, |
| linebreaker = "\n") { |
| if (is.numeric(x) | is.logical(x)) return(x) |
| x <- as.character(x) |
| align <- vapply(align, match.arg, 'a', choices = c("l", "c", "r")) |
| if (double_escape) { |
| ifelse(str_detect(x, linebreaker), |
| paste0("\\\\makecell[", align, "]{", |
| str_replace_all(x, linebreaker, "\\\\\\\\\\\\\\\\"), "}"), |
| x) |
| } else { |
| ifelse(str_detect(x, linebreaker), |
| paste0("\\makecell[", align, "]{", |
| str_replace_all(x, linebreaker, "\\\\\\\\"), "}"), |
| x) |
| } |
| } |
| |
| linebreak_html <- function(x) { |
| if (is.numeric(x) | is.logical(x)) return(x) |
| ifelse(str_detect(x, "\n"), str_replace_all(x, "\n", "<br />"), x) |
| } |