#!/usr/bin/perl -s our $justfix; use strict; use utf8::all; my $fl=0; ## following line after "\b-\n" my $rom= qr{(?i:[ivx]+)}; my $no= qr{(\d+(?:\.?[°oºaªu]\.?))}; my $tra=qr{[‐‑–—\-]}; my $fbf= 0; ## following line after " part1\n" while(<>){ # print "#"; s{\s+$}{\n}; unicode_fix(); ## for txt from LaTeX pdf if($fl){s{^([ \t]*)(\w\S+ ?)}{$2\n$1} or s{^}{-\n} } $fl=0; unless($justfix){ if($fbf and m{\s*$} ) { $_ .= "\n"; } # ( ...\n) <.... 2 lines title $fbf = 0; s{^(\h*<(b|h[1-4])>.*\s*)$}{\n$1\n} # Title or s{^(\h*<([bp]|li|h[1-4])>)}{\n$1} and $fbf=1 ; # ... s{([.·]{5,})( *(\d*|[XVI]+|[xvi]+))( *(_pb\d+_)? *()?\n)}{ __hfill__. \n\n}; # table of contents s{^(\h*(?:[.*►•●]|||➢|$tra)+)(\s)}{\n•$1$2}i; # -_ s{^(\h*\(?(\d{1,2}|$rom|[a-z]) ?\))}{\n•$1}i; # a) (a) 13) xxvi) s{^(\h*(\d{1,3}|$rom|[a-z])\.\s+)}{\n•$1}i; # 3. a. xxv. s{^(\h*\d{1,2}\.?\s?)($tra\s)}{\n•$1$2}i; # 3_-_ 33-_ s{^(\h*\d{1,3}\.)(\s)}{\n•$1$2}i; # 3._ s{^(\h*\d{1,2}\.\d{1,2}\.)(\s)}{\n•$1$2}i; # 2.3._ s{^(\h*\d{1,2}\.\d{1,2}\.\d{1,2}\.)(\s)}{\n•$1$2}i; # 3.4.3._ s{•( *•)}{\1}; } s{^(\s*(( C(?i:hapter) |[CK](?i:ap[ií]tul[ou]) |K(?i:apitel) |C(?i:hapitre) |P(?i:arte?) |S(?i:ection) |S(?i:ec?ção) |[ÍI](?i:nd(ice|ex)) |I(?i:nhalt) |A(?i:rticle) |A(?i:rtig[ou]) |A(?i:nnex) |A(?i:nexo) |A(?i:ppendix) |A(?i:pêndice) |C(?i:onsiderando) |W(?i:hereas) ) \s+ (\d+|$rom|$no|[A-Z])) ) \s*$}{\n\n$2\n}x; s{\b[\-]\n}{} and $fl=1 ; print $_; } sub unicode_fix{ s/ı´/í/g; s/´ı/í/g; s/c¸/ç/g; s/¸c/ç/g; s/a´/á/g; s/´a/á/g; s/e´/é/g; s/´e/é/g; s/o´/ó/g; s/´o/ó/g; s/a˜/ã/g; s/˜a/ã/g; s/o˜/õ/g; s/˜o/õ/g; s/u´/ú/g; s/´u/ú/g; s/eˆ/ê/g; s/ˆe/ê/g; s/aˆ/â/g; s/ˆa/â/g; s/oˆ/ô/g; s/ˆo/ô/g; s/n˜/ñ/g; s/˜n/ñ/g; #Ă Ĕ Ĭ Ŏ Ŭ s/a˘/ă/g; s/˘a/ă/g; s/e˘/ĕ/g; s/˘e/ĕ/g; s/ı˘/ĭ/g; s/˘ı/ĭ/g; s/o˘/ŏ/g; s/˘o/ŏ/g; s/u˘/ŭ/g; s/˘u/ŭ/g; s/a¯/ā/g; s/¯a/ā/g; s/e¯/ē/g; s/¯e/ē/g; s/ı¯/ī/g; s/¯ı/ī/g; s/o¯/ō/g; s/¯o/ō/g; s/u¯/ū/g; s/¯u/ū/g; s/y¯/ȳ/g; s/¯y/ȳ/g; #Ā Ā #Capital Long A #Ē Ē #Capital Long E #Ī Ī #Capital Long I #Ō Ō #Capital Long O #Ū Ū #Capital Long U #Ȳ Ȳ #Cap long Y #ȳ ȳ #Lower long Y #Æ Æ #Cap AE lig #Œ Œ #Cap OE lig #æ æ #AE lig #œ œ #OE lig }