add mksvg function

This commit is contained in:
Yan Lin 2025-11-29 00:02:06 +01:00
parent 1eada14ed1
commit d6b58e7e83
2 changed files with 63 additions and 8 deletions

View file

@ -36,6 +36,7 @@
"localsend" "localsend"
"calibre" "calibre"
"linearmouse" "linearmouse"
"omnigraffle"
]; ];
taps = [ taps = [
# Additional repositories if needed # Additional repositories if needed

View file

@ -23,24 +23,23 @@
if [[ -z "$tex_file" ]]; then if [[ -z "$tex_file" ]]; then
# Build all .tex files in current directory # Build all .tex files in current directory
local tex_files=(*.tex) local found=0
if [[ ''${#tex_files[@]} -eq 0 ]] || [[ ! -f "''${tex_files[0]}" ]]; then for file in *.tex(N); do
echo "No .tex files found in current directory" found=1
return 1
fi
for file in "''${tex_files[@]}"; do
echo "Building $file..." echo "Building $file..."
latexmk -pdf -bibtex -shell-escape -interaction=nonstopmode \ latexmk -pdf -bibtex -shell-escape -interaction=nonstopmode \
-output-directory="$output_dir" -f "$file" -output-directory="$output_dir" -f "$file"
# Copy PDF to current directory
local basename="''${file%.tex}" local basename="''${file%.tex}"
if [[ -f "$output_dir/$basename.pdf" ]]; then if [[ -f "$output_dir/$basename.pdf" ]]; then
cp "$output_dir/$basename.pdf" "./" cp "$output_dir/$basename.pdf" "./"
echo "Copied $basename.pdf to current directory" echo "Copied $basename.pdf to current directory"
fi fi
done done
if [[ $found -eq 0 ]]; then
echo "No .tex files found in current directory"
return 1
fi
else else
if [[ ! -f "$tex_file" ]]; then if [[ ! -f "$tex_file" ]]; then
echo "File not found: $tex_file" echo "File not found: $tex_file"
@ -59,6 +58,61 @@
fi fi
} }
# Generate standalone PDF from LaTeX equation
# Usage: mksvg <equation> <filename>
# Example: mksvg 'E = mc^2' energy
function mksvg() {
local equation="''${1}"
local filename="''${2}"
if [[ -z "$equation" ]] || [[ -z "$filename" ]]; then
echo "Usage: mksvg <equation> <filename>"
echo "Example: mksvg 'E = mc^2' energy"
return 1
fi
printf '%s\n' "$equation" > "''${filename}.texeq"
local temp_tex="''${filename}_temp.tex"
{
printf '%s\n' '\documentclass{standalone}'
printf '%s\n' '\usepackage{amsmath}'
printf '%s\n' '\usepackage{amssymb}'
printf '%s\n' '\begin{document}'
printf '%s%s%s\n' '$' "$equation" '$'
printf '%s\n' '\end{document}'
} > "$temp_tex"
pdflatex -interaction=nonstopmode "$temp_tex" > /dev/null 2>&1
if [[ -f "''${filename}_temp.pdf" ]]; then
mv "''${filename}_temp.pdf" "''${filename}.pdf"
echo "Generated ''${filename}.pdf"
else
echo "Failed to generate PDF"
rm -f "$temp_tex"
return 1
fi
rm -f "$temp_tex" "''${filename}_temp.aux" "''${filename}_temp.log"
}
# Regenerate PDFs from all .texeq files in current directory
function mksvg-all() {
local found=0
for file in *.texeq(N); do
found=1
local filename="''${file%.texeq}"
local equation="$(cat "$file")"
echo "Regenerating ''${filename}.pdf..."
mksvg "$equation" "$filename"
done
if [[ $found -eq 0 ]]; then
echo "No .texeq files found in current directory"
return 1
fi
}
# Continuous compilation mode - watch and auto-rebuild # Continuous compilation mode - watch and auto-rebuild
# Usage: mkpdf-watch <file.tex> # Usage: mkpdf-watch <file.tex>
function mkpdf-watch() { function mkpdf-watch() {