Conversation
otherwise, it won't render properly in dark themes
Otherwise, I think the different will be too jarring for most folks
Apparently pandoc uses th's align attribute to align content which gets overwritten by bs4 CSS. We'll be conservative here and only route align to text-align when we're in bs4, but this should maybe be done more generally
Co-Authored-By: Joe Cheng <joe@rstudio.com>
…rt with 4 Co-Authored-By: Joe Cheng <joe@rstudio.com>
Co-authored-by: Christophe Dervieux <christophe.dervieux@gmail.com>
|
Thanks for the great feedback @cderv, 7982cb6 should address the As for |
cderv
left a comment
There was a problem hiding this comment.
That is what I thought about the breaking change. This is the type of things we would like to change (fix) but we can't really as it comes with a cost. 😞
Last thing I feel is missing is that this PR won't help improve code coverage 😅
Some of the helper could benefit some simple test. rmarkdown is not the package with the more unit test but I hope to improve that soon. So no need to rush, I can do it later. I believe you have tested this PR with a lot of examples throughout the year of work on this one.
Thanks for the work on this, this is a great feature !
|
Thanks! Keep in mind that I'll be giving our QA team a handful of examples to do manual testing with, and I'll likely also be adding some automated tests to https://github.com/rstudio/shinycoreci-apps |
|
Oh nice! I was not aware of (forgot 🙄 ) that! That is great ! |
yihui
left a comment
There was a problem hiding this comment.
Thanks! It looks good to me overall! I just hope bslib could get on CRAN soon.
do you feel this is a breaking change worth taking on?
No, let's just keep the current behavior of html_dependency_bootstrap(). We could export bootstrap_dependencies() if any other package authors want to use a function that always returns a list of dependencies. If we are going to export it, I'd probably rename it to something like html_dependency_bstheme() for consistency with other html_dependency_*() functions.
Don't we all 😅.
It seems a better (near-term) option would be to label |
|
Also, are y'all totally against bumping to 2.7.0 to signify this fairly significant feature (I've been using 2.7.0 to signal messages in |
Co-authored-by: Yihui Xie <xie@yihui.name>
That sounds good to me.
The next CRAN release will be v2.7. We bump |
|
Ah, ok, I changed the version to |
Merge branch 'master' of https://github.com/rstudio/rmarkdown * 'master' of https://github.com/rstudio/rmarkdown: (111 commits) get rid of names, otherwise the returned vector will have names like this: Only run testrmd if pandoc is available Warn that cropping is disabled if pdfcrop or ghostscript are not found. (rstudio#2017) Add shiny to remotes (rstudio#2014) file.path.ci is too loose with file matching (rstudio#2012) improve error messages for the new theme argument behavior Add Bootstrap 4 support (rstudio#1706) amend rstudio#1965: do not force `options(htmltools.preserve.raw = TRUE)` when this option has been set, otherwise it is impossible for other packages to turn this option off, e.g., yihui/xaringan#293 htmltools 0.5.1 is on CRAN now remove download stats use on.exit to remove file (rstudio#2001) use only the TinyTeX-1 version in CI (rstudio#1998) Cache should work on Windows with recent version of R (rstudio#1997) exclude renv folder from render_site() copied resources (rstudio#1996) Update CI to last Pandoc 2.11.3.1 (rstudio#1992) Revert "return div not nil for non-qualifying latex div" Add missing NEWS item for v2.6 release return div not nil for non-qualifying latex div Add `output_format_filter` function to `default_site_generator()`. (rstudio#1989) Improvements to latex-div (rstudio#1984) ... # Conflicts: # NEWS.md # R/render.R # man/render.Rd
* master: (111 commits) get rid of names, otherwise the returned vector will have names like this: Only run testrmd if pandoc is available Warn that cropping is disabled if pdfcrop or ghostscript are not found. (rstudio#2017) Add shiny to remotes (rstudio#2014) file.path.ci is too loose with file matching (rstudio#2012) improve error messages for the new theme argument behavior Add Bootstrap 4 support (rstudio#1706) amend rstudio#1965: do not force `options(htmltools.preserve.raw = TRUE)` when this option has been set, otherwise it is impossible for other packages to turn this option off, e.g., yihui/xaringan#293 htmltools 0.5.1 is on CRAN now remove download stats use on.exit to remove file (rstudio#2001) use only the TinyTeX-1 version in CI (rstudio#1998) Cache should work on Windows with recent version of R (rstudio#1997) exclude renv folder from render_site() copied resources (rstudio#1996) Update CI to last Pandoc 2.11.3.1 (rstudio#1992) Revert "return div not nil for non-qualifying latex div" Add missing NEWS item for v2.6 release return div not nil for non-qualifying latex div Add `output_format_filter` function to `default_site_generator()`. (rstudio#1989) Improvements to latex-div (rstudio#1984) ...
…l shiny::bootstrapLib() inside html_document_base()'s preprocessor (instead of at run()-time) The former time-point is too early -- it doesn't allow other output formats like flex_dashboard to modify the theme before passing it to html_document_base()
…l shiny::bootstrapLib() inside html_document_base()'s preprocessor (instead of at run()-time) The former time-point is too early -- it doesn't allow other output formats like flex_dashboard to modify the theme before passing it to html_document_base()
…l shiny::bootstrapLib() inside html_document_base()'s preprocessor (instead of at run()-time) The former time-point is too early -- it doesn't allow other output formats like flex_dashboard to modify the theme before passing it to html_document_base()
This was a regression introduced by #1706 for bslib support where classes were mixed-up.
| <div class="row-fluid"> | ||
| <div class="row"> |
There was a problem hiding this comment.
@cpsievert was this change necessary for bslib and bootstrap 4 supports ?
Asking because it changes some layout for some custom format based on html_document().
For example: Bioconductor/BiocStyle#86 (see both doc examples paragraph width)
it is a small difference but I am wondering if this could impact other custom formats. So asking for your knowledge on this row vs row-fluid.
Thanks.
There was a problem hiding this comment.
.row-fluid is a Bootstrap 2 class that changed to .row in Bootstrap 3 https://getbootstrap.com/docs/3.4/migration/
There was a problem hiding this comment.
Thanks. I understand now.
This means that about the paragraph width change, this is because html_document was using an old class and no bootstrap CSS was used. Switching to BS3 row-fluid class makes this CSS rule to apply
.row {
margin-right: -15px;
margin-left: -15px;
}this lead to a change in style for all html_document output.
A side effect of this PR. Glad I know about that now. I may document that in NEWS maybe.
rmarkdown 2.8 ================================================================================ - Fix a issue with Pandoc 2.5 and `latex-div.lua` - documents can now be rendered as expected without error (thanks, @DAVIDWALES, #2121). - Fix an issue with styling and code folding button behavior when default is `code-folding: show`. The Button can now be correctly style according to state as `aria-expanded` attributes is correctly updated. Also, new classes has been added on the button to allow styling during transition: `btn-collapsing` and `btn-expanding` are respectively applied during transition Show to Hide and Hide to Show. (This follow [Bootstrap behavior for the collapsible block](https://getbootstrap.com/docs/3.4/javascript/#collapse)) (thanks, @steveharoz, #2085). - Fix an issue with `citation_package` having no effect when using `.md` file as input to `render()` with latex and PDF output formats (thanks, @andrewheiss, #2113). - A new internal option `rmarkdown.knit.ext` has been added to control the extension of the intermediary knit output during a rendering. It defaults to `md` to produce `*.knit.md`. Only useful for very advanced usage (#2098). - `render()` won't produce any `*.utf8.md` intermediary file anymore. This was a leftover from previous versions of **rmarkdown**. Since **knitr** 1.24 and **rmarkdown** 2.0, only UTF-8 input files are allowed. (#2098). - Fix an `Invalid cross-device link` error when `tempdir()` is used for `intermediates_dir` in `render()` (thanks, @gorgitko, #2096). - Fix a regression in HTML default template with floating toc incorrectly placed on small size window (thanks, @grimbough, #2071) - Provided a `runtime: shiny` fix for output formats that pass a modified `bslib::bs_theme()` object to `html_document_base()`'s `theme` (thanks, @cpsievert, #2049). - Rendering using `runtime: shiny_prerendered` or `runtime: shinyrmd` will now produce valid HTML by not inserting anymore the full document as body in the resulting shiny apps (thanks, @dakep, #1912). Header content usually containing html dependencies will be inserted in the HTML document at the end of the head before `</head>`, unless the rendered HTML contains `<!-- HEAD_CONTENT -->` special comment (see `htmltools::renderDocument()`). A new Pandoc variable is set in for shiny prerendered document to allow conditional insertion of such content in the the HTML template using `$if(shiny-prerendered)$`. This has been done in all HTML template in this package. Users of custom template should make this change to provide support for this runtime. See **rmarkdown** default template (`default.html`) for an example (#2064). - Added `tectonic` as a supported LaTeX engine for generating PDF output (thanks, @dpryan79, #2078). You can specify to use this by adding `engine: "tectonic"` to your output format in YAML, such as `pdf_document`. - When no `output_format` is provided in any way but an `output_file` is provided in `render()`, the default format will be determined based on the extension: `"pdf_document"` for `.pdf`, or `"word_document"` for `.docx`. Otherwise, it will be `"html_document"` as previous version (thanks, @pearsonca, #1569). - Added a new global option `rmarkdown.render.message`. When set `FALSE`, `render()` will not output the message starting by `Output created: ` allowing RStudio IDE to open a preview of the document. This is useful for package developers that would need to emit there own output message for there custom format. See `?render_site` for more info on this special message (#2092). - Internal changes regarding Lua filters. They have now an explicit Pandoc version minimal requirement: A filter will be skipped with a warning printed by the Lua filter if this requirement is not met. For now, all filters work for Pandoc 2.1 and above (thanks, @atusy, #2088). There is also now a new mechanism to have a share Lua filter script loadable by other Lua files: `render()` will set the `RMARKDOWN_LUA_SHARED` env var to the path of Lua filter `shared.lua` so that other filters can access functions defined in it using `dofile(os.getenv 'RMARKDOWN_LUA_SHARED')`. This is for internal usage only to avoid duplication (thanks, @tarleb, #2103). - `html_document_base` gains a `css` argument, to which `html_document`'s `css` argument is now passed. This also fix an issue when `.sass` or `.scss` files are used with this `css` argument when `self_contained: FALSE`. Moreover, **sass** caching mechanism can now be used when passing `.sass` or `.scss` files to the `css` argument (thanks, @cpsievert, #2095). - The `fig_crop` option of PDF document formats (such as `pdf_document` and `beamer_presentation`) supports the value `"auto"` now, which means `fig_crop = TRUE` when figure cropping tools `pdfcrop` and `ghostscript` are available. - The default value of the `fig_crop` option of PDF output formats has been changed from `TRUE` to `"auto"` (#2077). - `rmarkdown::tufte_handout` has been deprecated and will be removed in the future from this package. It has been moved to the **tufte** package since **rmarkdown** 0.9.5 (released on 2016-02-22). Please use `tufte::tufte_handout` instead. rmarkdown 2.7 ================================================================================ - `html_document` (and `html_document_base`)'s `theme` parameter now understands `bslib::bs_theme()` objects/arguments, meaning that one may opt-into Bootstrap 4 and more easily create custom themes. For examples, see <rstudio/rmarkdown#1706>, and for context, see <https://rstudio.github.io/bslib/> (thanks, @cpsievert, #1706). - Files with `.scss`/`.sass` extension (i.e., Sass files) provided to `html_document`'s `css` parameter are now compiled to CSS using the `{sass}` package. Also, if `theme` is a `{bslib}` object, these Sass files may utilize Sass code inside the `theme` (thanks, @cpsievert, #1706). - Fix an issue with line numbering in code chunks when `.numberlines` with Pandoc's highlighting (thanks, @aosavi, #1876). - Fix an issue with shiny runtime and `global.R` (thanks, @liaojiahui-r, rstudio/flexdashboard#298). - Accept `latex="{options}"`, `latex=1`, or `latex=true` for Latex Divs. - Add `output_format_filter` function to `default_site_generator()`. Enables custom site generators to customize or even entirely replace the output format right before rendering of each page. - Automatically exclude **renv** directory for `render_site()` (thanks, @jmbuhr, #1996) - Do not force `options(htmltools.preserve.raw = TRUE)` when this option has been set, otherwise it is impossible for other packages to turn this option off, e.g., yihui/xaringan#293. - `knitr_options_pdf()` will now throw a warning when `fig_crop = TRUE` but is disabled because required tools `pdfcrop` and/or `ghostscript` are missing (thanks, @netique, #2016). - Eliminated the unnecessary padding in code blocks in the `html_document` output with Bootstrap 4 themes (thanks, @atusy, #2019). - `github_document()` will produce a working TOC even if some headers start with number (#2039). - Fix an issue with `knit_print.data.frame`. The `...` arguments are no more passed to `print()` to avoid passing `knit_print()` arguments `options` and `encoding` to custom `print()` methods (#2047). rmarkdown 2.6 ================================================================================ - Encoding is correctly handled now in `html_vignette` when checking for identical title and vignette index entry (thanks, @py-b, #1978). - `clean_site()` now default to `preview = TRUE` and will no more remove files without notice. This change will affect the "Clean All" button in the "Build" pane for website project. `clean_site(preview = FALSE)` must be run to effectively remove files (#1973). - The intermediate `.tex` file is now correctly deleted if `keep_tex = FALSE` when the R Markdown document is not rendered from the working directory (thanks, @vqv, #1308). - Fix a bug causing certain resources files to be deleted as intermediate files when `intermediates_dir` is the same as the input (thanks, @bellma-lilly, #1248). - Fix issues with `anchor_sections = TRUE` and **learnr** (thanks, @gadenbuie, #1938). - Enable use of `server.R` and `global.R` alongside `runtime: shinyrmd` documents. - `pkg_file_lua()` now works with `devtools::load_all()` and **testthat** when used in other packages. - Fix `pandoc_convert(citeproc = TRUE)` not supressing the `--natbib` or `--biblatex` options (thanks, @atusy, #1932). - `pandoc-citeproc` is now activated if a `bibliography` field is defined in another YAML block instead of the first YAML block (thanks, @bwiernik, #1364). - Specify that `htmltools::htmlPreserve()` should use the pandoc raw attribute rather than preservation tokens when pandoc >= v2.0. Note that this option will have the intended effect only for versions of htmltools >= 0.5.0.9003. - `anchor_sections` in `html_documents()` now defaults to `FALSE`. It was introduced in previous version with a default to `TRUE`, but it is reverted now after hearing feedbacks from the community (thank you!). The `#` is still used as the character for the anchor but you can easily change that using CSS rules. Examples have been added to the help page `?html_document`. - Using Pandoc's default for `--email-obfuscation` now. Previously, it was set to `none` explicitly, which is the default for Pandoc 1.17.2+ anyway. Only users with a Pandoc version before 1.17.2 may see a change in the content of the html source file produced if the document contains email addresses. This change allows to pass the Pandoc's command line flag if you want to set it to another value (thanks,@seankross, #1969). ````yaml output: html_document: pandoc_args: ["--email-obfuscation", "javascript"] ```` See [Pandoc's manual](https://pandoc.org/MANUAL.html#option--email-obfuscation) for the meaning of this option. - Fix Fontawesome 5 icons in navbar by correctly handling new prefix as `fa` has been deprecated in favor of `fas` or `fab` (#1967) rmarkdown 2.5 ================================================================================ - Tables without header rows (wich can be possible in Pandoc's [simple table](https://pandoc.org/MANUAL.html#extension-simple_tables)) are now formatted correctly when using `html_document()` format (thanks, @fkohrt, #1893). - `html_document()` gains the `anchor_sections` argument, which is `TRUE` by default, so that readers can get links to section headers easily---when you mouse over a section header, you will see a hash symbol `#` at the end of the header, which contains the anchor link to this header. You can click on this link and get the URL in the addres bar of your web browser, or right-click on it and copy the URL from the context menu. The hash symbol is defined by the CSS rule `a.anchor-section::before {content: '#';}`. You can customize it by overriding this rule (e.g., via the `css` argument of `html_document`) and use any other symbols or icons, e.g., `content: "\02AD8;"` (thanks, @atusy, #1884). - `pkg_file_lua()` should have thrown an error if the expected Lua file does not exist. - Provide `files_dir` and `intermediates_dir` as attributes on return from `render()` when `run_pandoc = FALSE`. - Supports new Pandoc 2.11 `--citeproc` flags usage instead of `pandoc-citeproc` external filter. `pandoc_convert()` and `pandoc_citeproc_convert()` will now use the correct flags according to the Pandoc version used. The logic is exported in `pandoc_citeproc_args()`. See [Pandoc release note](https://github.com/jgm/pandoc/releases/tag/2.11) for more information about the new `citeproc` processing (#1916). - Fixed the code highlighting when code block is hidden. Previous version introduced a regression where non default code highlighting was still shown when `code_folding` is activated and code block is hidden (thanks, @matthewcarlucci, #1921). - The minimal required version for the **xfun** package (v0.15) has been specified for R Markdown Notebooks to work properly (thanks, @jmcphers, #1923). - Fixed a bug in `convert_ipynb()` when the language is not specified in the `.ipynb` file (thanks, @acca3003, #1925). - Introduce `runtime: shinyrmd` as a more user friendly alias for `runtime: shiny_prerendered`. rmarkdown 2.4 ================================================================================ - Lua filters handling has been improved internally with some - user-facing changes (#1899): New exported function - `pandoc_lua_filter_args()` to return the Pandoc command-line - argument to add a Lua filter. New argument `lua_filters` in - `pandoc_options()` to pass the Lua filter paths to use with a - format. This allow output format authors to add filters for a - custom format using the `pandoc` argument of `output_format()` - and to get filters from a format using `fmt$pandoc$lua_filters`. - The Lua filters of an output format are now passed to Pandoc in - `render()`. By default, they are passed to Pandoc before any - other format-defined or user-defined Pandoc arguments (usually - via the `pandoc_args` option of an output format). This ensures - that filters of an output format are executed first. To change - the default, you need to deal with it in a custom format (i.e., - modify the elements in `fmt$pandoc$lua_filters`, such as - reordering them). New exported function `pkg_file_lua()` to get - the full system path of a Lua filter included in a package - source within the `inst/rmarkdown/lua` folder (thanks, @atusy, - #1903). - Fixed the path separators for the `css` parameter in YAML frontmatter for HTML output files under Windows. Previously, forward slashes in `css` paths were converted to backslashes (thanks, @jonathan-g, #1862). - Since **rmarkdown** 1.16, Pandoc's fenced `Div`'s are converted to LaTeX environments when the output format is LaTeX, e.g., `::: {.center data-latex=""}` is converted to `\begin{center}`. The attribute `data-latex` of the `Div` was mandatory, even if it is empty. In **rmarkdown** 2.2, we silently drop this requirement, which means `::: {.center}` is converted to `\begin{center}`. This turns out to be a bad idea, because users have no control over which Div's to be converted to LaTeX environments. Previously, they could opt-in by the `data-latex` attribute, but with **rmarkdown** 2.3, all Div's are converted to LaTeX environments unconditionally. What's more, this change led to bugs like https://stackoverflow.com/q/62340425/559676 and rstudio/bookdown#883. Therefore the `data-latex` attribute became mandatory again in this version. If the LaTeX environment does not need arguments, you may use `data-latex=""`. - The two Lua fitlers `pagebreak.lua` and `latex-div.lua` (introduced in **rmarkdown** 1.16) are also applied to the output format `beamer_presentation` now (thanks, @XiangyunHuang, #1815). - When customizing formats with the `output_format` function, `pre_knit`, `opts_hooks`, and `knit_hooks` can now refer to `rmarkdown::metadata`. Previously, `rmarkdown::metadata` returned `list()` in these functions (thanks, @atusy, #1855). - `rmarkdown::find_external_resources()` now discovers external template files. This in turn fixes the rendering issue of `html_document` with the `shiny` runtime and `intermediate_dir` set (thanks, @atusy, @cderv, #1865). - Added the `number_sections` argument to following formats: `github_document`, `ioslides_presentation`, `md_document`, `odt_document`, `powerpoint_presentation`, `rtf_document`, `slidy_presentation`, `word_document`. These are powered by a Lua filter and requires Pandoc > 2.0. It will silently have no effect has before with previous pandoc version (thanks @atusy 1893). Pandoc >= 2.10.1 adds `--number-sections` for docx format, and thus `word_document` prefers the native feature to the Lua filter (thanks, @jooyoungseo, #1869). - For the output format `pdf_document`, the option `fig_crop` will not be enabled unless both the programs `pdfcrop` and `ghostscript` are found (thanks, @dalupus, yihui/knitr#954). - Fixed a bug that a chunk with a class `fold-hide` hides the rest of the chunks even the output format setting `html_document(code_folding = "show")` (thanks, @atusy, #1906). - Updated documentation for `render()` to make it clearer how options are set for the `output_format` parameter (thanks, @jonathan-g, #1907 and rstudio/bookdown#930). - Ported some CSS styles (e.g., underlines, small caps, and multi-column layouts) from the latest Pandoc's HTML template into **rmarkdown**s HTML templates (thanks, @atusy, #1878, #1908).
This PR has been merged. If you want to test this feature, please install the dev version of rmarkdown:
This PR allows the
themeparameter ofhtml_document()(andhtml_document_base()) to understandbslib::bs_theme()objects, meaning that you can opt-in to Bootstrap 4 this way (Closes #1260):Moreover, if
themeis a list of values, those values are now implicitly supplied tobs_theme(), meaning this an equivalent way to opt-into Bootstrap 4.Note that, with
bs_theme(), you can use any Bootswatch 4 (or 3) theme:Or, implement your own custom theme (this one inspired by Material's dark mode suggestions).
This PR also adds integration with
bslib::bs_themer()allowingruntime: shinydocuments to be interactively themed.Lastly, if you want to supply custom Sass rules that utilize the underlying
theme's Sass, you can now supply.scss/.sassfiles to thecssparameter and those Sass files will be compiled with thetheme. For example, say you want to define a new class that extends a group of BS4 utility classes to add padding and border around tabsets: