#!/usr/bin/env bash set -euo pipefail usage() { echo "Usage: $(basename "$0") [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