load_sty() and latex_options(packages = ) load LaTeX packages, including many of CTAN's own files (the real physics.sty, esdiff, centernot and tensor among them).pt, cm, mm and in and image sizes scale with the font size.tblr tables, R's regression tables (dcolumn, siunitx S columns), tikz-cd and Markdown (faster code blocks, raw HTML blocks, H~2~O, x^2^) read more of what they are given.\bm and \boldsymbol drawn upright, \big sizes, \left...\right delimiters too small for tall contents, fractions in scripts and nested fractions too large, \frac, braced groups, a:b, \implies and \dots spaced wrongly, \overbrace{a} 18pt wide, accents widening their base, \framebox[3cm] too wide, \fboxsep=0pt ignored, and a crash on \[\tag{1}\].\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.