diff options
author | Norbert Preining <norbert@preining.info> | 2020-12-21 03:01:35 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2020-12-21 03:01:35 +0000 |
commit | 4cc7922324b7a08ba0418e8f245cf1dcfa1891ac (patch) | |
tree | cd90cb6c072285e779f7555a85966b81a8757e15 /graphics/circuit_macros/examples/nsvg/dev/tikztosvg | |
parent | 2d9d44100d72263a7df34c12aaa89dbe6ee6fe0c (diff) |
CTAN sync 202012210301
Diffstat (limited to 'graphics/circuit_macros/examples/nsvg/dev/tikztosvg')
-rw-r--r-- | graphics/circuit_macros/examples/nsvg/dev/tikztosvg | 181 |
1 files changed, 181 insertions, 0 deletions
diff --git a/graphics/circuit_macros/examples/nsvg/dev/tikztosvg b/graphics/circuit_macros/examples/nsvg/dev/tikztosvg new file mode 100644 index 0000000000..8e9523347c --- /dev/null +++ b/graphics/circuit_macros/examples/nsvg/dev/tikztosvg @@ -0,0 +1,181 @@ +#!/bin/bash + +puts() +{ + echo "[$1] $2" +} + +error() +{ + puts "ERROR" "$1" r + + if [ -n "$2" ] + then + exit $2 + else + exit 1 + fi +} + +message() +{ + puts "TIKZTOSVG" "$1" g +} + +showHelp() +{ + man tikztosvg + exit 0 +} + +showVersion() +{ + echo 0.1.0 + exit 0 +} + +if [ -z "$(which xelatex)" ] +then + error "xelatex could not be found" +fi + +if [ -z "$(which pdf2svg)" ] +then + error "pdf2svg could not be found" +fi + +# Parsing the arguments +PACKAGES=() +while [ $# -gt 1 ] +do + case "$1" in + -h|--help) + showHelp + ;; + -v|--version) + showVersion + ;; + -p|--package) + if [ -z "$2" ] + then + error "Unnexpected EOF" + else + PACKAGES+=("$2") + shift + shift + fi + ;; + -o|--output) + if [ -n "$OUTPUT" ] + then + error "The output path was specified multiple times" + else if [ -z "$2" ] + then + error "Unexpected EOF" + exit 1 + else + OUTPUT="$2" + shift + shift + fi + fi + ;; + -q|--quit) + QUIET=1 + shift + ;; + *) + error "Unexpected token: \"$1\"" + ;; + esac +done + +case "$1" in + -h|--help) + showHelp + ;; + -v|--version) + showVersion + ;; + "") + error "No input path provided" + ;; + *) + INPUT="$1" +esac + +if [ -z "$OUTPUT" ] +then + OUTPUT="$(echo $(basename $INPUT) | cut -d "." -f1)" +fi + +TEMP_DIR="$(mktemp -d)" +TEX_FILE="$TEMP_DIR/tmp.tex" + +# Generate the LaTeX document +echo "\documentclass[crop,tikz,multi=false]{standalone}" > $TEX_FILE + +for PACKAGE in "${PACKAGES[@]}" +do + echo "\usepackage{$PACKAGE}" >> $TEX_FILE +done + +echo "\begin{document}" >> $TEX_FILE +echo "\huge" >> $TEX_FILE + +cat $INPUT >> $TEX_FILE + +if [ $? -ne 0 ] +then + rm $TEMP_DIR -r + error "File not found: $INPUT" +fi + +echo "\end{document}" >> $TEX_FILE + +if [ -z "$QUIET" ] +then + message "Rendering the LaTeX document. . ." + xelatex -output-directory=$TEMP_DIR $TEX_FILE +else + xelatex -halt-on-error -output-directory=$TEMP_DIR $TEX_FILE 1> /dev/null 2>&1 +fi + +S=$? +if [ $S -ne 0 ] +then + rm $TEMP_DIR -r + if [ -z "$QUIET" ] + then + error "xelatex exited with code $S" $S + else + exit $S + fi +fi + +if [ -z "$QUIET" ] +then + message "Converting the output to SVG. . ." +fi + +pdf2svg "$TEMP_DIR/tmp.pdf" $OUTPUT 1 + +S=$? +if [ $S -ne 0 ] +then + rm $TEMP_DIR -r + if [ -z "$QUIET" ] + then + error "pdf2svg exited with code $S" $S + else + exit $S + fi +fi + +if [ -z "$QUIET" ] +then + message "Done!" +fi + +rm "$TEMP_DIR" -r + |