Books/2026.05-SGH-02/latex/latexquotes.sh
2026-06-30 08:19:02 -07:00

42 lines
1.0 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
usage() {
echo "Usage: $(basename "$0") <file.tex> [file2.tex ...]" >&2
exit 1
}
[[ $# -ge 1 ]] || usage
for FILE in "$@"; do
[[ -e "$FILE" ]] || { echo "Error: file not found: $FILE" >&2; continue; }
[[ -f "$FILE" ]] || { echo "Error: not a regular file: $FILE" >&2; continue; }
[[ -r "$FILE" ]] || { echo "Error: file not readable: $FILE" >&2; continue; }
[[ -w "$FILE" ]] || { echo "Error: file not writable: $FILE" >&2; continue; }
cp "$FILE" "$FILE.bak"
python3 - "$FILE" <<'EOF'
import re, sys
path = sys.argv[1]
with open(path, encoding='utf-8') as f:
text = f.read()
def to_latex(m):
return "``" + m.group(1) + "''"
result = text.replace('\u2018', '`')
result = result.replace('\u2019', "'")
result = re.sub('\u201c([^\u201d]*)\u201d', to_latex, result, flags=re.DOTALL)
result = re.sub(r'"((?:(?!\n\n).)*?)"', to_latex, result, flags=re.DOTALL)
with open(path, 'w', encoding='utf-8') as f:
f.write(result)
EOF
echo "Done: $FILE (backup: $FILE.bak)"
done