Typografické skripty
Stránka shromažďuje skripty, užitečné pro typografické úpravy textů.
Skripty pro bash
editovatZnění skriptu je možno užít po jeho zkopírování do textového souboru s příponou .sh
a jeho nastavení za spustitelný. Spuštění provedeme v linuxovém terminálu zadáním příkazu
sh názevsouboruskriptu názevzpracovávanéhosouboru
(nutno uzpůsobit pro nbsp a thinsp namísto vlnovek, opravit nefunkční prvky)
#!/bin/bash
# Skript pro provádění typografických náhrad v českých textech
# Uzpůsobeno pro původní existenci toliko dvou druhů mezer v dokumentech, obyčejné a nezlomitelné, zadané vlnovkou
VSTUP=$1
##################################################
# MEZERY PO JEDNOPÍSMENNÝCH PŘEDLOŽKÁCH
# Nahradí obyčejné mezery po jednopísmenných předložkách za vlnovku,
# jest-li předložka na začátku řádku, po mezeře běžné či vlnovce,
# nebo po některém ze znaků ([{‚„»"
for i in `seq 1 3`; do # zopakovati třikráte
sed -i 's/^\([AaIiKkOoSsUuVvZz]\) /\1~/g' $VSTUP
# nahrazení na začátcích řádků
sed -i 's/\([(\[\{ "‚„»~]\)\([AaIiKkOoSsUuVvZz]\) /\1\2~/g' $VSTUP
# nahrazení po daných znacích
done
##################################################
# VÝPUSTKY
# Nahradí tři tečky za výpustku
sed -i 's/\.\.\./…/g' $VSTUP
##################################################
# NÁHRADA SPOJOVNÍKŮ ZA POMLČKY
# Nahradí spojovník za pomlčku, je-li obklopen mezerami či stojí na začátku řádku a mezera následuje.
(Nutno doplnit pro spojovníky obalené pevnými mezerami)
sed -i 's/ - / – /g' $VSTUP # spojovník obklopen mezerami
sed -i 's/^- /– /g' $VSTUP # spojovník na začátku řádku, následovaný mezerami
##################################################
# UVOZOVKY
# Nahradí řetězec "text" za „text“
palce=\"
zuvozovky=„
kuvozovky=“
sed -i "s/$palce\([^$palce]*\)$palce/$zuvozovky\1$kuvozovky/g" $VSTUP
##################################################
# REDUKCE MEZER
# Zruší libovolný počet mezer před či za daným znakem, kupříkladu koncovou závorkou
znak="N"
sed -i "s/ \+$znak/$znak/g" $VSTUP # zrušení mezer před znakem
sed -i "s/$znak \+/$znak/g" $VSTUP # zrušení mezer po znakem
##################################################
# PŘIDÁNÍ MEZER
# Přidá mezery za znak (kupříkladu tečku), pokud chybí
# (nefunguje při opakováních, např. "nnn" → "n nn" místo kýženého "n n n ")
znak="n"
sed -i "s/$znak\([^ ]\)/$znak \1/g" $VSTUP
##################################################
# MEZERY V DATECH
# Náhrada obyčejné či chybějící mezery mezi číslem dne a měsícem (kupříkladu „27. ledna“) za nezlomitelnou.
msc[1]="leden"; msc[2]="ledna"
msc[3]="únor"; msc[4]="února"
msc[5]="březen"; msc[6]="března"
msc[7]="duben"; msc[8]="dubna"
msc[9]="květen"; msc[10]="května"
msc[11]="máj"; msc[12]="máje"
msc[13]="červen"; msc[14]="června"
msc[15]="červenec"; msc[16]="července"
msc[17]="srpen"; msc[18]="srpna"
msc[19]="září"; # genitiv totožný
msc[20]="říjen"; msc[21]="října"
msc[22]="listopad"; msc[23]="listopadu"
msc[24]="prosinec"; msc[24]="prosince"
for i in ${msc[*]}
do
sed -i "s/\([1-3]?[0-9]\.\)\($i\)/\1$nzm\2/g" $VSTUP
sed -i "s/\([1-3]?[0-9]\.\) \($i\)/\1$nzm\2/g" $VSTUP
done
##################################################
# SPOJENÍ SKUPIN ČÍSLIC
# Spojí nezalomitelnou mezerou skupiny číslic, oddělené doposavad běžnou mezerou.
sed -i "s/\([0-9]{3}\) \([0-9]{3}\)/\1$nzm$2/g" $VSTUP
#################################################
# REDUKCE VÍCENÁSOBNÝCH MEZER
# Vícenásobné mezery nahradí jedinou
sed -i "s/ \+/ /g" $VSTUP