summaryrefslogtreecommitdiff
path: root/Master/support/polish/gustprog/porzadki.pl
diff options
context:
space:
mode:
Diffstat (limited to 'Master/support/polish/gustprog/porzadki.pl')
-rwxr-xr-xMaster/support/polish/gustprog/porzadki.pl214
1 files changed, 214 insertions, 0 deletions
diff --git a/Master/support/polish/gustprog/porzadki.pl b/Master/support/polish/gustprog/porzadki.pl
new file mode 100755
index 00000000000..793eede8a9d
--- /dev/null
+++ b/Master/support/polish/gustprog/porzadki.pl
@@ -0,0 +1,214 @@
+#! /usr/bin/perl
+
+# Autor: Piotr Kłosowski <pklosows@press.umcs.lublin.pl> Wersja
+# pierwsza działaj±ca (0.1a): 1. lutego 1998 r.
+
+# Skrypt "porzadki" jest napisanym od nowa następc± awkowego skryptu
+# "normtext.awk" z lata 96 r., który z kolei był rozwinięciem pomysłów
+# Tomasza Przechlewskiego.
+
+# Filtr do robienia porz±dków w duchu TeX-a w plikach tekstowych
+# (przede wszystkim znaki przestankowe i wstawianie niełamliwych spacji)
+# Podstawowe zastosowanie to pomoc w konwersji tekstów napisanych w
+# różnych edytorach.
+
+# Główne założenia i ograniczenia:
+# - tekst jest podzielony na akapity pustymi wierszami,
+# - tekst jest w języku polskim (kodowanie iso-latin2),
+# - wnętrze akapitów z wyj±tkiem linijek zakończonych przez "\\" może ulegać
+# przeformatowaniu (próba usunięcia przeniesień wyrazów) (uwaga na ew.
+# znaki komentarza - "%"!)
+
+# ========================================================================
+# Stałe wykorzystywane w skrypcie
+
+$Odstep = "[\ \t~]";
+$NieOdstep = "[^\ \t~]";
+$Spojnik = "[aAiIoOuUwWzZ]";
+$Litera = "[a-zA-Z±ˇćĆęĘłŁńŃóÓ¶¦żŻĽ¬]";
+$NieLitera = "[^a-zA-Z±ˇćĆęĘłŁńŃóÓ¶¦żŻĽ¬]";
+$DuzaLitera = "[A-ZˇĆĘŁŃÓ¦Ż¬]";
+$MalaLitera = "[a-z±ćęłń󶿼]";
+$Cyfra = "[0-9]";
+$CyfraRzymska = "[IVXL]";
+
+$PominSrodowisko ="(tabular|array|tabbing|figure|equation|eqenarray|verbatim)";
+# ========================================================================
+sub PolaczWiersze {
+# usunięcie przeniesień
+ s/($Litera)-$Odstep*\n$Odstep*($MalaLitera)/$1$2/g;
+ s/($Litera)-$Odstep*\n$Odstep*-($Litera)/$1\\dywiz $2/g;
+ s/\n$Odstep+\n/\\\\\ \\\\\ /g;
+ tr/\n/\ /;
+};
+# ========================================================================
+sub PoprawAkapit {
+ &PoprawNielamliwe;
+ &PoprawPrzestankowe;
+};
+# ------------------------------------------------------------------------
+# Niełamliwe spacje
+sub PoprawNielamliwe {
+ &NielamliweSpojniki;
+ &NielamliweInicjaly;
+ &NielamliweDaty;
+ &NielamliweBibliograf;
+ &NielamliweJednostki;
+ &NielamliweTytuly;
+ &NielamliweInne;
+ &NielamliweWyliczenia;
+};
+# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+# niełamliwe spacje przy słowach jednoliterowych (uwaga na cyfrę rzymsk± "I")
+sub NielamliweSpojniki {
+ s/([\(,]|$Odstep+)($Spojnik)$Odstep+($Spojnik)$Odstep+/$1$2~$3~/g;
+ s/([\(,]|$Odstep+)($Spojnik)$Odstep+/$1$2~/g;
+};
+# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+# niełamliwe spacje przy inicjałach
+sub NielamliweInicjaly {
+ s/($DuzaLitera)\.$Odstep*($DuzaLitera)\.$Odstep*($DuzaLitera$MalaLitera)/$1\.~$2\.~$3/g;
+ s/($DuzaLitera)\.$Odstep*($DuzaLitera$MalaLitera)/$1\.~$2/g;
+};
+# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+# niełamliwe spacje przy skrótach zwi±zanych z pisowni± daty
+sub NielamliweDaty {
+ s/($Cyfra)$Odstep*(r|w)\./$1~$2\./g;
+ s/($NieLitera)(r|w)\.$Odstep*($Cyfra)/$1$2\.~$3/g;
+ s/($CyfraRzymska)$Odstep+w\./$1~w\./g;
+};
+# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+# niełamliwe spacje przy skrótach występuj±cych w zapisie bibliograficznym
+sub NielamliweBibliograf {
+ s/($NieLitera)([sStTzZ]|ss|SS|[vV]ol|[aA]rt)\.$Odstep*($Cyfra|$CyfraRzymska)/$1$2\.~$3/g;
+};
+# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+# niełamliwe spacje między liczb± a skrótem jednostki miary
+$DuzoZer = "tys\\.|mln|mld";
+sub NielamliweJednostki {
+ s/($Cyfra)$Odstep*($DuzoZer)/$1~$2/g;
+ s/($Cyfra|$DuzoZer)$Odstep*([kdcm]?[glmsVAW])($NieLitera)/$1~$2$3/g;
+ s/($Cyfra|$DuzoZer)$Odstep*(zł|gr|ha|t|mies|godz|min|sek)($NieLitera)/$1~$2$3$4/g;
+};
+# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+# niełamliwe spacje po tytułach
+sub NielamliweTytuly {
+ s/($NieLitera)(mgr|dr|prof\.|hab\.|bp|ks\.|o+\.|¶w\.|prez\.|przew\.|red\.|min\.|gen\.|płk|mjr|kpt\.)$Odstep+/$1$2~/g;
+}
+# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+# niełamliwe spacje przy innych skrótach
+sub NielamliweInne {
+ s/($NieLitera)([Tt]ab\.|[Tt]abl\.|[Rr]y[cs]\.|[Rr]ozdz\.|[Nn]r)$Odstep*($Cyfra)/$1$2~$3/g;
+};
+# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+# niełamliwe półfirety przy wyliczeniach
+sub NielamliweWyliczenia {
+ s/^-+$Odstep*/---\\enspace\ /;
+ s/^($Cyfra+[\.\)\/])$Odstep+/$1\\enspace\ /;
+ s/^($Litera[\.\)\/])[\ \t]+/$1\\enspace\ /;
+};
+# ------------------------------------------------------------------------
+# Znaki przestankowe
+sub PoprawPrzestankowe {
+ &PrzestankowePolpauzy;
+ &PrzestankowePauzy;
+ &PrzestankoweDywizy;
+ &PrzestankoweCudzyslowy;
+ &PrzestankoweWielokropki;
+ &PrzestankoweOdstepy;
+ &PrzestankoweSymbole;
+};
+# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+# półpauzy
+sub PrzestankowePolpauzy {
+ s/($Cyfra)$Odstep*-$Odstep*($Cyfra)/$1--$2/g;
+};
+# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+# pauzy
+sub PrzestankowePauzy {
+ s/$Odstep+-$Odstep+/\ ---\ /g;
+ s/$Odstep+---/~---/g;
+};
+# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+# dywizy
+sub PrzestankoweDywizy {
+ s/($Litera)-($Litera)/$1\\dywiz $2/g;
+};
+# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+# cudzysłowy
+sub PrzestankoweCudzyslowy {
+ s/^\"/,,/;
+ s/($NieLitera)\"($Litera)/$1,,$2/g;
+ s/($Odstep)\"($NieOdstep)/$1,,$2/g;
+ s/\"$/''/;
+ s/($Litera)\"($NieLitera)/$1''$2/g;
+ s/($NieOdstep)\"($Odstep)/$1''$2/g;
+ s/\\,,/\\\"/g;
+};
+# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+# wielokropki
+sub PrzestankoweWielokropki {
+ s/\.{5,}/\\dotfill\{\}/g;
+ s/\.{3,4}/\\ldots{}/g;
+};
+# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+# odstępy przy znakach przestankowych (uwaga: ryzykowne - dużo wyj±tków)
+sub PrzestankoweOdstepy {
+ s/$Odstep*([\.;:!?\)\]])/$1/g;
+ s/$Odstep*,([^,])/,$1/g;
+ s/([\.!?;:\)\]])($Litera)/$1 $2/g;
+ s/([^,]),($Litera)/$1, $2/g;
+ s/([\(\[])$Odstep*/$1/g;
+# skróty - wyj±tki
+ s/m\.\ +in\./m\.in\./g;
+ s/p\.\ +n\.\ +e\./p\.n\.e\./g;
+ s/l\.\ +c\./l\.c\./g;
+ s/w\.\ +c\./w\.c\./g;
+# duże liczby
+ 1 while (s/(.*\d\d)(\d\d\d)/$1\\,$2/ or s/(.*\d)(\d\d\d)\\,/$1\\,$2\\,/);
+};
+# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+# uporz±dkowanie kolejno¶ci nawias klamrowy - znak przestankowy (!!!sprawa
+# zwi±zana z grupowaniem texem - nie do załatwienia w tym prostym programie)
+# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+# symbole niematematyczne
+sub PrzestankoweSymbole {
+ s/([^\\])([\$\%])/$1\\$2/g;
+ s/([^\$\<])\<([^\$\<])/$1\$\<\$$2/g;
+ s/([^\$\>])\>([^\$\>])/$1\$\>\$$2/g;
+}
+# ========================================================================
+# Zmiany w kształcie akapitu - usunięcie przeniesień i wcięć od marginesu
+# i przeformatowanie na szeroko¶ć <=70 zn (domy¶lna w AUCTeX-u)
+sub PrzeformatujAkapit {
+ s/$Odstep*\\\\/\ \\\\/g;
+ $IloscSlow = split;
+ $DlugoscWiersza = length($_[0]);
+ for ($i=1; $i<$IloscSlow; $i++) {
+ $DlugoscWiersza += length($_[$i]) + 1;
+ if (($DlugoscWiersza>70) || ($_[$i-1]=~/\\\\/)) {
+ $_[$i-1] .= "\n";
+ $DlugoscWiersza = length($_[$i]);
+ };
+ };
+ $_ = join (" ", @_, "\n");
+ s/$Odstep\\\\/\\\\/g;
+ s/\n*\\\\\n\\\\\n/\n\n/g;
+ s/\n$Odstep+/\n/g;
+};
+# ========================================================================
+# Główny program
+
+$/ = "";
+$\ = "\n";
+
+while (<>) {
+ if (/\\begin{$PominSrodowisko}/../\\end{$PominSrodowisko}/) {
+ next;
+ };
+ &PolaczWiersze;
+ &PoprawAkapit;
+ &PrzeformatujAkapit;
+} continue { print; };
+
+# Koniec skryptu "porzadki".