diff options
author | Karl Berry <karl@freefriends.org> | 2020-05-14 17:35:54 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-05-14 17:35:54 +0000 |
commit | 4aabfd8ab8cb4d327dcbac9b7318ff1718e505d5 (patch) | |
tree | 39509aeadb4deb06d2610285986446e96505b5c5 | |
parent | 28443ba668a2d048d92018c30bf17fd6b78746a7 (diff) |
tikztosvg linked script
git-svn-id: svn://tug.org/texlive/trunk@55137 c570f23f-e606-0410-a88d-b1316a301751
-rwxr-xr-x | Build/source/texk/texlive/linked_scripts/tikztosvg/tikztosvg | 181 |
1 files changed, 181 insertions, 0 deletions
diff --git a/Build/source/texk/texlive/linked_scripts/tikztosvg/tikztosvg b/Build/source/texk/texlive/linked_scripts/tikztosvg/tikztosvg new file mode 100755 index 00000000000..8e9523347c4 --- /dev/null +++ b/Build/source/texk/texlive/linked_scripts/tikztosvg/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 + |