46 lines
1.3 KiB
Bash
Executable File
46 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Generate docx files from source.dj and target.dj
|
|
# Usage: ./make-docx.sh [dir]
|
|
# dir defaults to current directory, must contain source.dj and target.dj
|
|
|
|
set -euo pipefail
|
|
DIR="${1:-.}"
|
|
DIR="$(realpath "$DIR")"
|
|
BASENAME="$(basename "$DIR")"
|
|
|
|
SRC="$DIR/source.dj"
|
|
TGT="$DIR/target.dj"
|
|
CMP="$DIR/comparison.dj"
|
|
|
|
if [[ ! -f "$SRC" ]]; then echo "ERROR: $SRC not found"; exit 1; fi
|
|
if [[ ! -f "$TGT" ]]; then echo "ERROR: $TGT not found"; exit 1; fi
|
|
|
|
# Generate comparison.dj (ZH line, then EN line)
|
|
python3 - "$SRC" "$TGT" "$CMP" << 'PYEOF'
|
|
import sys
|
|
src_path, tgt_path, cmp_path = sys.argv[1:]
|
|
src = open(src_path).read()
|
|
tgt = open(tgt_path).read()
|
|
sl = src.split('\n')
|
|
tl = tgt.split('\n')
|
|
out = []
|
|
for i in range(max(len(sl), len(tl))):
|
|
zh = sl[i] if i < len(sl) else ''
|
|
en = tl[i] if i < len(tl) else ''
|
|
if zh == '' and en == '':
|
|
out.append('')
|
|
else:
|
|
out.append(zh)
|
|
out.append(en)
|
|
open(cmp_path, 'w').write('\n'.join(out))
|
|
print(f'comparison.dj: {len(out)} lines')
|
|
PYEOF
|
|
|
|
# Convert to docx
|
|
pandoc "$CMP" -f djot -t docx -o "$DIR/${BASENAME}-中英对照.docx"
|
|
pandoc "$TGT" -f djot -t docx -o "$DIR/${BASENAME}-英文版.docx"
|
|
|
|
echo "Done:"
|
|
echo " $DIR/${BASENAME}-中英对照.docx"
|
|
echo " $DIR/${BASENAME}-英文版.docx"
|