• CTAN update: plantuml

    From CTAN Announcements via ctan-ann@erik@ctan.org to ctan-ann on Wed Jul 1 22:24:30 2026
    From Newsgroup: comp.text.tex

    Oliver Kopp submitted an update to the

    plantuml

    package.

    Version: 0.7.0 2026-06-29
    License: lppl1.3c

    Summary description: Support for rendering UML diagrams using PlantUML

    Announcement text: --------------------------------------------------------------------------------
    ### Added

    - Added support for `pdflatex`. PlantUML is now driven directly via shell escape, mirroring the LuaLaTeX path (same `plantuml.jar` invocation and MD5-based source caching). [#1](https://github.com/koppor/plantuml/issues/1)
    - Added [architecture decision record 0001](docs/decisions/0001-support-pdflatex-via-shell-escape.md) explaining why pdfLaTeX is driven via shell escape rather than via `hvextern`, `pythontex`, or `bashful`. [#1](https://github.com/koppor/plantuml/issues/1)
    - Added `example-class-visibility--latex.tex`, `example-class-visibility--png.tex`, and `example-class-visibility--svg.tex` demonstrating class member visibility, including the protected marker `#`, which is written as-is (the diagram body is verbatim, so no LaTeX escaping). [#24](https://github.com/koppor/plantuml/issues/24)
    - Added support for rendering `png` and `svg` diagrams through a [PlantUML server](https://github.com/plantuml/plantuml-server) over HTTP, configured via the `server` package option or the `PLANTUML_SERVER` environment variable. This needs only `curl`, not a local `plantuml.jar`/Java, which is convenient on CI. The source is sent hex-encoded (the `~h` server marker). `latex`/TikZ output cannot be produced by a server and continues to use the local jar. Includes `example-server--png.tex` and `example-server--svg.tex`. [#6](https://github.com/koppor/plantuml/issues/6)
    - Documented and tested that `@startuml`/`@enduml` are optional: when the diagram body omits them, PlantUML adds them automatically, so the `plantuml` environment may contain just the diagram. All examples now omit the markers. [#4](https://github.com/koppor/plantuml/issues/4)
    - Added `\plantumlinput{<file>}` to render a diagram from an external PlantUML source file (like minted's `\inputminted` and listings' `\lstinputlisting`). It honors the `output` mode and reuses the same caching, server, and `-output-directory` handling as the `plantuml` environment, on both LuaLaTeX and pdfLaTeX. Includes `example-input-file.tex`. [#3](https://github.com/koppor/plantuml/issues/3)
    - Added a global PlantUML preamble (e.g. `skinparam` styling) applied to every diagram, set inline via the `plantumlpreamble` environment or from a file via `\plantumlpreamblefile{<file>}`. The local jar applies it through PlantUML's `-config`; the server prepends it to the source. The preamble is folded into the diagram cache key, so changing it regenerates the diagrams. Includes `example-preamble.tex`. [#5](https://github.com/koppor/plantuml/issues/5)
    - Documented and tested that diagrams work in `beamer`: a frame containing a `plantuml` environment just needs to be declared `[fragile]` (the environment is verbatim). Added `example-beamer.tex` using the `moloch` theme. [#11](https://github.com/koppor/plantuml/issues/11)
    - Added `caption`, `label`, and `float` options for diagrams: a numbered, `\ref`-able caption that is typeset in place by default (like listings' `caption=`, avoiding the erratic placement of a bare `figure`) or in a floating `figure` with `float`. `\plantumlinput` takes them as an optional argument; for the `plantuml` environment they are set with `\plantumlset{...}` (a verbatim environment cannot carry an optional argument). Includes `example-caption.tex`. [#8](https://github.com/koppor/plantuml/issues/8)

    ### Changed

    - Diagram text in `latex`/TikZ output is now rendered sans-serif by default (via the new `\PlantUmlTikzFont`, overridable with `\renewcommand`), matching the font PlantUML uses to size the boxes so the text fits with even margins instead of overflowing or sitting off-centre under the document's serif font. Includes `example-mindmap.tex`. [#14](https://github.com/koppor/plantuml/issues/14)
    - Generated diagrams are now cached by a content hash (minted/memoize style): each diagram is written to `plantuml-<md5>-converted-to.<ext>` and PlantUML (or the server) is invoked only when no file for that hash exists yet. Identical, repeated, or reordered diagrams reuse the cached output, so recompiles are fast and only edited diagrams are regenerated. The `-converted-to` suffix keeps the files covered by the standard TeX `.gitignore` (`*-converted-to.*`), so no extra ignore entry is needed. [#2](https://github.com/koppor/plantuml/issues/2)
    - A diagram that cannot be generated (for example when `PLANTUML_JAR` is not set, no server is configured, or PlantUML fails) no longer aborts the LaTeX run. A visible placeholder is typeset in the document instead, similar to a missing reference. [#16](https://github.com/koppor/plantuml/issues/16)
    - The README preview images are now sharp vector SVG instead of raster PNG, and the README's `example-minimal.tex` / `example-class-relations--svg.tex` use the `cerulean-outline` PlantUML theme for a cleaner look than the colourful default. `release.sh` installs `librsvg2-bin` so pandoc can embed the SVGs when building `plantuml.pdf`.

    ### Fixed

    - Fixed `Unable to access jarfile` when `PLANTUML_JAR` contains spaces (e.g. `C:\Program Files (x86)\PlantUML\plantuml.jar`) on the LuaLaTeX path, by quoting the jar path in the PlantUML invocation. The pdfLaTeX path already quoted it. [#7](https://github.com/koppor/plantuml/issues/7)
    - Fixed `lualatex` failing with `I can't write on file 'rCa-plantuml.txt'` under the paranoid `openout_any=p` setting (the default of local TeX Live and MiKTeX installations). The generated source file is now written with a relative path whenever possible, falling back to the absolute working directory only when the write is redirected (e.g. by Overleaf's output directory), so the Overleaf fix keeps working. [#47](https://github.com/koppor/plantuml/issues/47), [#50](https://github.com/koppor/plantuml/issues/50), [#42](https://github.com/koppor/plantuml/pull/42)
    - Fixed PlantUML diagrams not being found when LaTeX is run with `-output-directory`. The generated source is now read from, and the diagram written to, that directory (located via `TEXMF_OUTPUT_DIRECTORY`). The variable is additionally cleared for the PlantUML subprocess, which otherwise hangs when it holds a relative path. Works for both `lualatex` and `pdflatex`. [#27](https://github.com/koppor/plantuml/issues/27)
    - Fixed garbled text in the SVG examples by exporting text as paths (`--export-text-to-path`) in the Inkscape conversion rule, making the rendering independent of the fonts available to Inkscape. [#25](https://github.com/koppor/plantuml/issues/25)

    ### Removed

    - Removed the unused, never-wired-up `pythontex` dependency from the non-LuaTeX code path. [#1](https://github.com/koppor/plantuml/issues/1)
    --------------------------------------------------------------------------------

    This package is located at
    https://mirrors.ctan.org/macros/luatex/latex/plantuml

    More information is at
    https://ctan.org/pkg/plantuml


    --------------------------------------------------------------------------------

    Thanks for the upload.

    For the CTAN Team
    Erik Braun


    CTAN is run entirely by volunteers and supported by TeX user groups.
    Please join a user group or donate to one, see https://ctan.org/lugs .
    --- Synchronet 3.22a-Linux NewsLink 1.2