Example of a CircuiTikz subcircuit demonstrating antiparallel MOSFETs and a current sense resistor.
This tutorial demonstrates utilizing the CircuiTikz package of LaTeX to create reusable circuits intended to be incorporated as part of a larger document (for example, a paper, poster, or system diagram) or as a standalone vector graphics asset for use in other documentation formats.
For broad compatibility, all tools utilized are constrained to those included
in a standard TeX Live distribution. Therefore, texlive
(linux), MacTeX
(macOS), MikTex
(Windows) or Container thereof is required.
Additionally, it's worth making sure that dvisvgm
successfully locates the GhostScript dynamic library on your system via
dvisvgm -V1
.
The included Makefile contains all commands to render the graphics assets.
Use the tex
target to generate the PDF output and the svg
target to
generate the SVG output. Note that the later command is dependent on the
former. For convenience, the all
target runs both sequential. Additionally,
the clean
removes the TeX artifacts while distclean
removes both artifacts
and outputs.
After considering various options, the most straightforward approach seemed
to be to use latexmk
to delegate latex
to generate DVI->PDF
and dvisvgm
to convert DVI->SVG
using a Makefile. As a more modern alternative, it's
also possible to use xelatex
to generate XDV->PDF
and dvisvgm
to convert
XDV->SVG
.
- Add GitHub Action for continuous integration
- Avoid specifying GhostScript dynamic library path via environmental variable
- Add option for using
xelatex
- Try
dvisvgm
TikZ package option
It's technically possible to use the standalone
LaTeX package to export
bitmap and vector graphics with the convert
configuration option. Martin
Scharrer, the author of standalone
, elaborates on that point in a Stack
Exchange answer. However, I had a
some difficulty getting this method to operate as intended with latexmk
.
At first, the conversion failed to execute without the latexmk -shell-escape
option. Note that latexmkrc
file would need entries like:
$latex = 'latex -shell-escape';
as a required option each interpreter(latex
, xelatex
, etc.). This would be
fine if not for the second issue.
After that, the conversion failed due to dvisvgm being unable to locate the GhostScript dynamic library path. This may be a primarily macOS and Homebrew issue. With:
export LIBGS=/opt/homebrew/Cellar/ghostscript/[version]/lib/libgs.dylib
the dvisvgm
generated the expected output with the Makefile.
However, as alluded to before with the -shell-escape
option, the dynamic
library path would need to be fixed globally for latexmk
to spawn another
shell to successfully execute the convert
configuration option.
To avoid adding any OS-specific configuration to this codebase, this repository will assume a functional GhostScript support until this issue can be resolved.