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 '…-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 .
_______________________________________________
ctan-ann mailing list -- [email protected]
To unsubscribe send an email to [email protected]