CTAN Comprehensive TeX Archive Network

Directory graphics/pgf/contrib/tikz-chemlab

README.md

tikz-chemlab

Version: v1.0.0

A TikZ-based reimplementation of the well-known pst-labo package for drawing chemical laboratory glassware.

Overview

tikz-chemlab provides macros for a variety of devices used mainly for chemical applications. Since most of these devices have a standardised design, tikz-chemlab spares you the trouble of having to create them manually. All basic objects are included in the file tikz-chemlabObj.tex and are loaded during the start of tikz-chemlab.

This is a TikZ port of pst-labo (v2.07, 2025/07/15) by Denis Girou, Christophe Jorssen, Manuel Luque, and Herbert Voß. The port uses English command names with the tkz prefix instead of the original French pst names, and all option keys have been translated to English.

Files

File Role
tikz-chemlab.sty package wrapper (loads TikZ + main file)
tikz-chemlab.tex Main implementation (parameter system + high-level macros)
tikz-chemlabObj.tex Shape library (low-level drawing primitives)

Place these three files in the same directory or in the search path.

Installation

Load the package in the preamble:

\usepackage{tikz-chemlab}

This automatically loads TikZ and the required libraries (arrows.meta, calc, patterns, shadings, decorations.pathmorphing, decorations.pathreplacing).

Compilation

tikz-chemlab works with any engine that supports TikZ:

  • pdflatex — fully supported (unlike pst-labo, which requires PostScript)
  • xelatex — fully supported
  • lualatex — fully supported
  • tectonic — fully supported

No PostScript dependency. No latex → dvips → ps2pdf pipeline needed.

Quick Start

\documentclass{standalone}
\usepackage{tikz-chemlab}
\begin{document}
\begin{tikzpicture}[scale=0.5]
  \tkzTestTube
\end{tikzpicture}
\end{document}

Available Macros

Macro Description
\tkzTestTube Test tube / glass container (tube, roundFlask, beaker, erlenmeyer, reagentBottle, volumetricFlask, watchGlass)
\tkzHeatTube Test tube with heating (Bunsen burner, hotplate, bubbling)
\tkzRoundFlask Round-bottom flask (with reflux condenser, double tube)
\tkzHeatFlask Round-bottom flask with Bunsen burner
\tkzFunnel Funnel with test tube
\tkzGraduatedCylinder Graduated cylinder (measuring cylinder)
\tkzPipette Pipette
\tkzLargePipette Large pipette
\tkzTitration Titration setup (burette + beaker + optional pH-meter)
\tkzDistillation Fractional distillation apparatus
\tkzSeparatoryFunnel Separating funnel on support stand
\tkzStand Support stand (retort stand) with clamp
\tkzColumn Distillation column

Key Options

Option Default Description
glassType tube Type of glass container
stopper false Insert a stopper
clamp false Attach a test-tube clamp
tiltAngle 0 Tilt angle in degrees (−65…+65)
liquidLevel1/2/3 50/0/0 Liquid levels (0–100, percentage)
liquidStyle1/2/3 liquidStyle1/2/3 Liquid styles
substance (empty) Substance macro
solid (empty) Solid substance macro
burette true Show/hide burette
pHMeter false Show pH-meter
magneticStirrer true Show magnetic stirrer / hotplate
bunsenBurner true Show Bunsen burner
bubbling false Add bubbling test tube
gasCollection false Add gas-collection vessel
label false Display label
Number (empty) Label text
buretteLevel 20 Burette liquid level
buretteColor VeryPaleOrange Burette liquid colour
TapOpen false Separating funnel tap open/closed

Line Width Styles

Six predefined styles available via \chemlabset{style=...}:

Style Outline Ellipse Tube ellipse Graduation
default 0.053 cm 0.07 cm 0.08 cm 0.02 cm
publication 0.4 pt 0.6 pt 0.8 pt 0.4 pt
presentation 0.8 pt 1.2 pt 1.6 pt 0.6 pt
schematic 0.6 pt 0.8 pt 1.2 pt 0.4 pt
draft 0.4 pt 0.4 pt 0.4 pt 0.4 pt
bold 1.2 pt 1.6 pt 1.6 pt 0.8 pt

Line widths automatically scale with the TikZ scale factor.

Migration from pst-labo

pst-labo tikz-chemlab
\pstTubeEssais \tkzTestTube
\pstDosage \tkzTitration
\pstEprouvette \tkzGraduatedCylinder
\pstBallon \tkzRoundFlask
\pstEntonnoir \tkzFunnel
\pstSeparateFunnel \tkzSeparatoryFunnel
\pstChauffageTube \tkzHeatTube
\pstChauffageBallon \tkzHeatFlask
\pstDistillation \tkzDistillation
\pstpipette \tkzPipette
\pstSupport \tkzStand
\pscolon \tkzColumn

Key mappings: tubePenchetiltAngle, niveauLiquide1liquidLevel1, bouchonstopper, becBunsenbunsenBurner, etiquettelabel, etc.

See the full documentation for complete mapping tables.

Documentation

  • tikz-chemlab-doc.tex / tikz-chemlab-doc.pdf — English documentation
  • tikz-chemlab-zh-doc.tex / tikz-chemlab-zh-doc.pdf — Chinese documentation (中文使用手册)

Credits

Original pst-labo authors:

  • Denis Girou
  • Christophe Jorssen
  • Manuel Luque
  • Herbert Voß

tikz-chemlab is a TikZ port that preserves the original visual appearance and default values as closely as possible. All shape coordinates were derived from the original pst-laboObj.tex.

License

This work is distributed under the Project Public License v1.3c.

Download the contents of this package in one zip archive (648.3k).

tikz-chemlab – A -based reimplementation for drawing chemical laboratory glassware

This package provides macros for drawing a variety of devices used mainly for chemical applications. Since most of these devices have a standardised design, tikz-chemlab spares you the trouble of having to create them manually. All basic objects are included in the file tikz-chemlabObj.tex and are loaded during the start of the package.

tikz-chemlab works with any engine that supports . No PostScript dependency. No latexdvipsps2pdf pipeline needed.

This is a port of pst-labo (v2.07, 2025/07/15) by Denis Girou, Christophe Jorssen, Manuel Luque, and Herbert Voß. The port uses English command names with the tkz prefix instead of the original French pst names, and all option keys have been translated to English.

Packagetikz-chemlab
Bug tracker
Repository
Developers
Version1.0.0 2026-08-03
LicensesThe Project Public License 1.3c
MaintainerAihua Wang
Contained inTeX Live as tikz-chemlab
TopicsPGF
Chemistry
...
Guest Book Sitemap Contact Contact Author