\LaTeX{} is), and _, ^, # and & outside math warn.input_mode = "document" renders a LaTeX document body, or a whole pasted paper, wrapped at max_width (see vignette("documents")). Markdown is now laid out the same way, so its paragraphs, styled spans and tables stay within their box.latex_options(device_math = TRUE) renders $…$ math in base graphics labels.load_font() names a font file or an installed family, with its bold and italic files, and available_fonts() lists them. latex_options() takes main_font, sans_font and mono_font, the fonts of the body, \textsf and \texttt. load_math_font(), available_math_fonts() and check_math_fonts() are superseded by load_font() and available_fonts(); they still work.load_font() is measured and drawn from the font file, so it looks the same on every device, base pdf() included, where a font file never worked before. Other families are still the device's.render_mode = "typeface" was actually asked for, and at most once per device. A figure holding many math labels no longer repeats it.unloadNamespace() left both them and the shared object in place. All are now released.\text{} is drawn a line at a time rather than a letter at a time, so kerning is applied, PDF/SVG output can be searched for a phrase, and files are several times smaller. Text given a max_width is drawn a word at a time, since the spaces are where it breaks.max_width.markdown_grob() and grid.markdown() render inline markdown with LaTeX math; markdown_box_grob() renders a block document.geom_markdown() and element_markdown() for ggplot2, both taking style. A title containing headings or lists is laid out as blocks, not flattened.$$…$$, links and inline HTML. A fenced code block keeps its indentation and is syntax-highlighted when it names a language.register_highlighter() and available_highlighters(). R, Python, SQL, shell, C++, YAML, JSON, Stan, Julia and LaTeX are built in, along with the usual GitHub aliases; token colours are CSS classes (.kw, .co, .st, …), the names knitr already writes into HTML output. Grammars are KDE syntax XML files.markdown_style() and md_style() style markdown through a CSS cascade of HTML tag names; the body rule styles the box itself.latex_options(markdown_style = ) sets a document-wide default."github" style preset, shipped as a CSS file.<div class=> and <div style=> style a chunk of markdown; <span class=> styles an inline run.justify and line_break arguments control paragraph line breaking.\includegraphics[width=,height=,scale=,keepaspectratio]{file} draws PNG, JPEG and SVG images inline in a formula; it previously parsed and drew nothing. The extension may be omitted and \graphicspath{} is searched, as in LaTeX. An SVG is drawn as real vector, so it stays sharp at any output resolution.p{len} column type gives tabular fixed-width, wrapping cells.\url{} and \href{}{} render as styled text instead of literally.load_font() is renamed load_math_font(); the old name is deprecated.check_fonts() is renamed check_math_fonts(); the old name is deprecated.\rotatebox past a quarter turn drew text and glyphs 180 degrees out, so a \rotatebox{90} label came out upside down.\textrm{} now returns text to gp$fontfamily; it previously did nothing.\texttt{} drew in the body font instead of a monospace one.max_width is now honoured by content containing \\ line breaks."mixed" mode a line break was kept inside the text rather than breaking the formula, so anything after it was drawn beside the whole block instead of on its own line. A pasted \caption landed to the left of its table, and math following a line break sat between the lines.\- offered a line break but drew no hyphen at it.& in text was read as an alignment tab and everything after it was dropped, so "Treatment & Control" rendered as "Treatment ".tabular* failed to parse, reporting an invalid alignment; its width argument is now dropped along with the star.strtod() and strtol() through other headers, such as clang 23.grobX()/grobY() boundary points.geom_latex(fontsize = ) was ignored."mixed" mode.\text{} runs no longer pushes a viewport on the caller's
device. The push/pop was recorded on the graphics engine display list, so the
device looked like it already held a plot and knitr emitted a spurious blank
figure ahead of the real one.input_mode defaults to "mixed"; use \textbf{} etc. instead of gp$fontface.xtable::print.xtable() / knitr::kable() / booktabs output.\thickhline and \cline{a-b}.itemize and enumerate list environments. Lists may nest.$…$ inside tabular cells no longer chops the table.align*, eqnarray*, …) now render.latex_wrap() is now vectorised over its input, matching its
documented contract, and errors on NA input instead of rendering "NA".\mark{} macro survives a microtex_release() /
re-init cycle.gp$col transparency is now honoured (alpha passed through to MicroTeX).load_font() example so CRAN's donttest additional checks no longer fail on the unreliable CTAN font download.\def commandgrobMark.ggplot2 integration.ggplot2 integration respects latex_options.systemfonts registration of the bundled Lete and STIX fonts to first render. This avoids the XType: Using static font registry. notice that older macOS SDKs emit on Core Text font registration, which had caused spurious WARN/NOTEs on r-oldrel-macos-arm64.Initial release.