Filehost.ro - gazduire fisiere
Forum Romania Inedit
Romania Inedit - Resursa ta de Fun
Nu sunteti logat.
Lista Forumurilor Pe Tematici
Nou pe simpatie:
ingera_31
Femeie
25 ani
Constanta
cauta Barbat
30 - 59 ani
Forum Romania IneditReguliInregistrareLoginPoze
Forum Romania Inedit / Totul despre cărți - About e-books / [Discutii] Conversie Diacritice Moderat de Seven, Stelevadris, cuculean, naid, uncris
Autor
Mesaj Pagini:  1 2 3
#26
atari
Membru Junior
Am actualizat postarea de mai sus cu macro-urile pentru conversie din limbaj_clasic in limbaj_contemporan si invers.
N-am testat prea mult... rog pe cei interesati de functia asta sa posteze aici daca vad ceva probleme la rulare.

Varianta curenta contine o subrutina generica de inlocuiri multiple (Sub InlocuiriMultiple), care ia ca parametru o lista de perechi <de_inlocuit> - <inlocuitor>. Subrutina asta generica executa secvantial inlocuirile perechilor din lista, atat in textul documentului cat si in notele de subsol, intr-un mod optimizat pentru marirea vitezei de executie

Pe baza acestei subrutine se pot dezvolta alte secvente de inlocuiri multiple, daca e nevoie.


 
   
#27
picimoc
Membru Puf
un pic "off-main topic" ... eu m-am zbatut cu ghilimelele ... am digitizat o carte in ortografia veche (1974) care avea ghilimele "inceput ghilimele JOS" "sfirsit ghilimele SUS" ... OCR-ul pe care am lucrat avea "ghilimele SUS-SUS" sau "ghilimele SUS - dublu apostrof SUS"

intrebare pentru puristi ... care sint codurile HEX standard pentru limba romana pentru ghilimele?  difera ele pentru ortografia veche si ortografia noua?


 
   
#28
Seven
Moderator
Din: Ţara Perfectului Simplu
***
     @atari,
     Dacă într-un text avem Endnote, ori atât Footnote + cât şi Endnote....
     ...macroul ar trebui să ruleze în forma asta ori ar trebui adăugată încă o linie de cod care să se refere la Endnote.
     Mi-am amintit de chestia asta pentru că tocmai am întâlnit o carte care le are pe ambele în număr destul de mare.


     @picimoc,
     Noi folosim următoarele tipuri de ghilimele româneşti:
     - ghilimele de început [de deschidere] au forma 99 Jos - cod U201E sau ChrW(8222)  [corect DOOM]
     - ghilimele de sfârşit [de închidere] au forma 99 Sus - cod U201D sau ChrW(8221)  [corect DOOM]

     - ghilimele de sfârşit [de închidere] de forma 66 Sus - cod U201C sau ChrW(8220)

     - apostrof de forma 9 Sus - cod U2019 sau ChrW(8217)  [corect DOOM]
     - apostrof de forma 6 Sus - cod U2018 sau ChrW(8216)

RECTIFICARE:
      DOOM2/2010, cap. PRINCIPALELE NORME ORTOGRAFICE, ORTOEPICE ŞI MORFOLOGICE ALE LIMBII ROMÂNE, în tabelul "Semne şi convenţii grafice" de la pag. XXIII, arată ca ghilimele corecte 99 jos şi 99 sus

      Despre apostrof, DOOM2/2010 la pag.XXXVII din "Norme..." în NT 32 arată că "[Apostroful] Care are forma unei virgule plasate după literă, la umărul acesteia."
      Rezultă că apostroful corect este cel sub forma 9 sus.


_______________________________________

     Oameni şi popoare îşi cată libertatea; după ce-o obţin, îşi caută stăpân.


     | TORENTE | Tăunul | ROCAMBOLE+ | FLORIS | VRACIU | Victor HUGO | J.F. COOPER | PAPILLON | POLDARK |
     | Dictionare Lba RO | | Gramatica RO | D. Stănoiu | Zaharia STANCU | H.Y. STAHL | V.CORBUL & E.BURADA |
     | Ultimul regat | Millennium | Shantaram | Pearl BUCK | Anchee MIN | Amy TAN | C. LÄCKBERG | Ph.GREGORY |
     | Extraterestrii şi Intraterestrii | RUFOR | Demonul Roşu | Vraja milioanelor | Cărţi audio |

 
   
#29
samiramida
Membru Senior
știe cineva care sunt codurile VBA pentru apostrof de forma (virgulă 6 sus) și (virgulă 9 sus), adică caracterul de prescurtare a unui cuvânt?

exemplu

'Neața, dom' șef!

seven, ai dat același cod pentru două tipuri diferite de ghilimele la sfârșit


 
   
#30
80Inanna
Moderator
Din: Mitologie

Seven a scris:

Referitor la ghilimele de sfârşit, Academia Română zice că cele corecte sunt 66 Sus, U201D - ChrW(8221), dar noi ne-am obişnuit cu 99 Sus.

Eu știam că recomandarea 99 Jos - 66 Sus este cea veche.

Recomandările Academiei Române așa cum le știu eu sunt:
- în 2003: http://www.secarica.ro/misc/InstitLingv ... 031008.pdf
- în 2006, citând îndrumătorul din 1995: http://www.academiaromana.ro/com2006/doc/ghilimele.doc

În DOOM2 (2005; ed. a II-a, 2007) nu există o specificație expresă, dar peste tot sunt folosite 99 Jos - 99 Sus. S-a revenit?


_______________________________________
Verificati toate linkurile înainte de a descărca!  UNELE sunt expirate.
Cataloage FILME românești și TEATRU românesc.
Eu pot descărca de pe: mediafire, zippyshare, uptobox, mega.
NU pot descărca de pe: depositfiles, uploaded, turbobit, letitbit.

 
   
#31
Seven
Moderator
Din: Ţara Perfectului Simplu
***
      - am corectat coduri pentru ghilimele 66 sus;
      - am adăugat coduri apostrof.
      - am verificat DOOM2/2010: ambele ghilimele şi apostroful sunt corecte sub forma 99 pentru ghilimele, respectiv 9 pentru apostrof.

      Informaţia pe care o postasem mai sus nu era din DOOM, ci din "V.Zaicu - Ghidul corectorului de carte", Partea I, cap.4 Standardul de corectură...


_______________________________________

     Oameni şi popoare îşi cată libertatea; după ce-o obţin, îşi caută stăpân.


     | TORENTE | Tăunul | ROCAMBOLE+ | FLORIS | VRACIU | Victor HUGO | J.F. COOPER | PAPILLON | POLDARK |
     | Dictionare Lba RO | | Gramatica RO | D. Stănoiu | Zaharia STANCU | H.Y. STAHL | V.CORBUL & E.BURADA |
     | Ultimul regat | Millennium | Shantaram | Pearl BUCK | Anchee MIN | Amy TAN | C. LÄCKBERG | Ph.GREGORY |
     | Extraterestrii şi Intraterestrii | RUFOR | Demonul Roşu | Vraja milioanelor | Cărţi audio |

 
   
#32
samiramida
Membru Senior
seven, iar ai pus codurile greșit. ChrW(8220) e pentru ghilimele 6 sus, nu pentru apostrof

Edit Seven: am refăcut codurile


 
   
#33
KEYKO
Membru Junior
Dacă se cunoaște codul caracterului, aveți posibilitatea să introduceți codul în document, apoi apăsați ALT+X pentru a-l transforma într-un caracter. De exemplu, apăsați 002A, apoi apăsați ALT+X pentru a produce *. Funcționează de asemenea și operațiunea inversă. Pentru a afișa codul de caracter Unicode pentru un caracter care se află deja în document, plasați punctul de inserție direct după caracter și apăsați ALT+X.
Sursa: suport Microsoft Office; Utilizarea tastaturii pentru a insera un cod caracter Unicode într-un document


 
   
#34
Seven
Moderator
Din: Ţara Perfectului Simplu

     Rezultate testare macrouri:


     Conversie limbaj Clasic-Contemporan şi conversie limbaj Contemporan-Clasic
          Text pagină – DA – rulează perfect
          Footnote – DA – rulează perfect
          Endnote – NU rulează.

     Conversie diacritice Cedila-Virgula şi conversie diacritice Virgula-Cedila
          Text pagină – DA – rulează perfect
          Footnote – DA – rulează perfect
          Endnote – NU rulează.

     Constatare: Dacă se duce cursorul în zona Endnote rulează toate cele 4 macrouri, dar fără să ruleze în text pagină şi Footnote

     Propunere: Dat fiind că Endnote apar în cazuri foarte rare, iar Footnote concomitent cu Endnote în situaţii şi mai rare, cred că macrourile ar trebui lăsate în forma actuală, iar userii interesaţi să ştie că trebuie să le ruleze de două ori atunci când au şi Endnote.


_______________________________________

     Oameni şi popoare îşi cată libertatea; după ce-o obţin, îşi caută stăpân.


     | TORENTE | Tăunul | ROCAMBOLE+ | FLORIS | VRACIU | Victor HUGO | J.F. COOPER | PAPILLON | POLDARK |
     | Dictionare Lba RO | | Gramatica RO | D. Stănoiu | Zaharia STANCU | H.Y. STAHL | V.CORBUL & E.BURADA |
     | Ultimul regat | Millennium | Shantaram | Pearl BUCK | Anchee MIN | Amy TAN | C. LÄCKBERG | Ph.GREGORY |
     | Extraterestrii şi Intraterestrii | RUFOR | Demonul Roşu | Vraja milioanelor | Cărţi audio |

 
   
#35
atari
Membru Junior
Seven, multumesc pentru teste.
Am actualizat prima mea postare din topic cu versiuni noi in care sa fac si inlocuirile in Endnote. Cred ca rezolva si cea de-a doua problema mentionata: nu se facea nici o inlocuire in cazul in care cursorul e plasat in Endnote.

Probabil ca nu e inca cea mai optima solutie ca si viteza de executie, dar in principiu ar trebui sa mearga.
Am adaugat in cele 4 macrouri masurarea timpului de executie, ar fi interesant de stiut cum se raporteaza macro-urile la functii similare din Autocorect: mai incete / cam la fel / mai rapide ...


 
   
#36
Seven
Moderator
Din: Ţara Perfectului Simplu
***
      Deocamdată eu am o problemă după reactualizarea codului. Nu-mi mai rulează corect Conv. Clasic-Contemporan.
      Până mă dumiresc şi eu unde şi ce am greşit, m-am gândit să dau o mână de ajutor celor interesaţi să testeze macrourile.

      1. Am realizat un mic fişier DOC care cuprinde câteva şiruri de cuvinte care conţin literele ş, ţ, î/â, note de subsol şi note de sfârşit, editat cu mai multe fonturi.
      Arhiva care conţine fişierul se numeşte "Doc TEST Macro Conv.rar"

      2. Există deja în Win câteva fonturi care conţin ambele variante de diacritice. Dintre aceste fonturi am verificat deja pe următoarele: Arial [Arial, Arial Black, Arial Narrow], Calibri, Cambria, Georgia şi  Times New Roman.
      Dacă sunt utilizatori care nu le au, le-am urcat în arhiva "Fnt_INI[Sd+Vg].rar"

      3. Am prelucrat deocamdată două fonturi şi am adăugat diacriticele cu virgulă şi am corectat sedila.
      Este vorba despre fonturile Bookman Old Style şi Droid Serif.
      Deşi numele fişierelor sunt redenumite şi am adăugat menţiunea [RO SV], nu am modificat denumirile din setările fontului astfel că ele nu se adaugă ca font nou ci le înlocuiesc exact pe cele vechi cu acelaşi nume.
      Cele două fonturi le-am urcat în arhiva "Fnt_Prel[Sd+Vg].rar"

      Toate arhivele pot fi descărcate de la:
      Adresa:   Macro A2015 – folder deschis mediafire.


_______________________________________

     Oameni şi popoare îşi cată libertatea; după ce-o obţin, îşi caută stăpân.


     | TORENTE | Tăunul | ROCAMBOLE+ | FLORIS | VRACIU | Victor HUGO | J.F. COOPER | PAPILLON | POLDARK |
     | Dictionare Lba RO | | Gramatica RO | D. Stănoiu | Zaharia STANCU | H.Y. STAHL | V.CORBUL & E.BURADA |
     | Ultimul regat | Millennium | Shantaram | Pearl BUCK | Anchee MIN | Amy TAN | C. LÄCKBERG | Ph.GREGORY |
     | Extraterestrii şi Intraterestrii | RUFOR | Demonul Roşu | Vraja milioanelor | Cărţi audio |

 
   
#37
meridiane
MEMBRU VIP
In epub nu se vad caracterele cu virgula.
Numai patrate.


 
   
#38
uciN
MEMBRU VIP
Salutare @meridiane

Am făcut acum un test şi eu văd caracterele corect pe tabletă.
Am creat epub-ul cu Atlantis Word Processor, iar pe tabletă folosesc Mantano Reader.
Singurul font cu probleme, în sensul că literele se suprapun, este Cambria.

http://i.imgur.com/vpQmftA.png


 
   
#39
Seven
Moderator
Din: Ţara Perfectului Simplu
***
     Bănuiesc că @meridiane se referă la cele două fonturi prelucrate de mine: Bookman Old Style şi Droid Serif...

     Reamintesc că am adăugat dicriticele-virgulă cu High-Logic FontCreator 6.5
     Despre problemele în epub nu ştiam, dar este într-adevăr o problemă cu caracterele adăugate.

     Literele adăugate cu FontCreator 6.5 se văd foarte bine pe computer ca text obişnuit de orice mărime şi formatare; totuşi, în momentul în care se foloseşte WordArt [eu îl folosesc doar pentru titlul de pe copertă] caracterele adăgate cu FontCreator nu se mai văd.
     Probabil că un caracter adăugat cu FontCreator nu îndeplineşte toate condiţiile... undeva se întâmplă ceva... în informaţiile salvate în caracteristicile fontului nu se face reactualizarea completă a datelor.... sau cine mai ştie ce anume se întâmplă.
     Nu ştiu dacă problema se păstrează la o versiune superioară a High-Logic FontCreator ori în cazul altor softuri de editare fonturi.


_______________________________________

     Oameni şi popoare îşi cată libertatea; după ce-o obţin, îşi caută stăpân.


     | TORENTE | Tăunul | ROCAMBOLE+ | FLORIS | VRACIU | Victor HUGO | J.F. COOPER | PAPILLON | POLDARK |
     | Dictionare Lba RO | | Gramatica RO | D. Stănoiu | Zaharia STANCU | H.Y. STAHL | V.CORBUL & E.BURADA |
     | Ultimul regat | Millennium | Shantaram | Pearl BUCK | Anchee MIN | Amy TAN | C. LÄCKBERG | Ph.GREGORY |
     | Extraterestrii şi Intraterestrii | RUFOR | Demonul Roşu | Vraja milioanelor | Cărţi audio |

 
   
#40
uciN
MEMBRU VIP
În modul Word Art, atunci cînd schimbăm stilul de prezentare se schimbă automat şi fontul.
Deci nu Font Creator este vinovatul.

http://i.imgur.com/9gJEKSa.png

Observaţi şi diferenţele care apar după aplicarea funcţiei Get union of contours din FontCreator.

http://i.imgur.com/rfsExh9.png


 
   
#41
atari
Membru Junior
Salutare.
Am actualizat prima mea postare din topic cu noile variante pentru macro-uri. Sarisem cateva prefixe la inlocuirea clasic -> contemporan, si le-am "rezolvat" acum.

Doua explicatii privitoare la macrou-rile astea:

1.
Cum se folosesc?


Exista 3 metode de a insera macro-uri in MS Word:

a. "Record macro". Word-ul va scrie liniile de cod corespondente actiunilor facute de utilizator pe durata inregistrarii macroului. Liniile de cod generate de Word se pot modifica ulterior dupa necesitati. E varianta cea mai folosita.

b. Programare manuala a codului. Se scriu manual liniile de cod in editorul vba al Word-ului. Dupa salvare, Word-ul va vedea noile subrutine ca si macro-uri.

c. Importarea macrourilor. Se importa in  editorul vba al Word-ului un fisier care contine macrouri (de tip .bas)


Macrourile postate de mine in prima pagina folosesc varianta b. de mai sus. Asta inseamna ca trebuie sa deschideti editorul vba al Word-ului (Alt+F11) si sa copiati acolo liniile de cod postate de mine.
Il rog pe Seven sa preia sarcina de a explica cum se face asta mai in detaliu, in caz ca sunt nelamuriri.


2.
Cum pot sa extind subrutinele astea pentru alta lista de inlocuiri multiple?


Toate cele 4 "macrouri" postate de mine (Convert_...)  au acelasi mod de lucru:
a. Pregatesc o lista de inlocuiri multiple numita "perechi"
   - lista specifica un numar de perechi "text_de_inlocuit", "text_inlocuitor".
b. Executa o subrutina interna numita "InlocuiriMultiple" cu lista pregatita la punctul a.

Evident, pentru o alta lista de inlocuiri multiple trebuie adaptat punctul a. de mai sus.
Punctul b. ramane neschimbat.

Exemplu:

Code:

Exemple de corecţie punctuaţie: eliminarea spaţiu din faţa semnelor de puntuaţie următoare:
            spaţiu_punct >> punct
            spaţiu_virgulă >> virgulă
            spaţiu_două puncte >> două puncte
            spaţiu_punct şi virgulă >> punct şi virgulă

Subrutina de mai jos face lista de inlocuiri multiple specificata mai sus.
Nota: in codul vba, tot ce urmeaza pe o linie caracterului ' e comentariu: nu e executat de word, este acolo doar pentru a aduce lamuriri utilizatorului care citeste codul.

Code:

'======================================================================
Sub Corectare_Punctuatie()

  ' Asta e doar un exemplu, nu e o subrutina completa de corectare punctuatie! 

  Dim timp As Single: timp = Timer
  
  Options.DefaultHighlightColorIndex = wdBrightGreen 'sterge linia asta pentru a nu evidentia schimbarile
  
  Dim perechi() As Variant
  perechi = Array( _
            " ." , ".", _   ' text_de_inlocuit=spaţiu_punct            , text_inlocuitor=punct
            " ," , ",", _   ' text_de_inlocuit=spaţiu_virgulă          , text_inlocuitor=virgulă
            " :" , ":", _   ' text_de_inlocuit=spaţiu_două puncte      , text_inlocuitor=două puncte
            " ;" , ";")     ' text_de_inlocuit=spaţiu_punct şi virgulă , text_inlocuitor=punct şi virgulă  
  
  InlocuiriMultiple lista:=perechi, cu_meta:=False

  MsgBox "Numarul total de cuvinte: " & ActiveDocument.Words.count & _
         ", timp de executie: " & Format(Round(Timer - timp, 3), "0.###") & " secunde", vbOKOnly, _
         "Corectare_Punctuatie"

End Sub
'======================================================================

Pentru ca sa functioneze, e necesar sa aveti deja subrutinele  "InlocuiriMultiple" (si " InlocuiriMultiple_Range") postate de mine in prima pagina. Dar inafara de astea doua nu e necesar nimic altceva...


 
   
#42
Seven
Moderator
Din: Ţara Perfectului Simplu
***
     Deşi am fost reticent la început, am constatat că inserarea în Ms Word [mai exact în Template "Normal" al Word] este soluţia cea mai bună.
     Inserarea acestor macrouri în Template Normal ne scuteşte de toate mesajele şi blocajele sistemului de securitate Word, care mie mi-au produs mari dureri de cap.

     Cred că cea mai simplă metodă de inserare este varianta "c", prin importarea in editorul vba al Word a unui fisier de tip .bas.

     M-am apucat de completarea macroului Corectare_Punctuatie şi am mai adăugat pe cel care face convertirea din Bullets în caractere text.

     Dacă este nevoie, după ce completez macrourile şi după ce le verific şi testez, pot să urc un fişier Convert.bas şi câteva explicaţii despre inserare.
     De fapt, aş putea urca două fişiere: unul în varianta cu marcarea înlocuirilor şi unul fără marcarea înlocuirilor. Eu prefer fără...


_______________________________________

     Oameni şi popoare îşi cată libertatea; după ce-o obţin, îşi caută stăpân.


     | TORENTE | Tăunul | ROCAMBOLE+ | FLORIS | VRACIU | Victor HUGO | J.F. COOPER | PAPILLON | POLDARK |
     | Dictionare Lba RO | | Gramatica RO | D. Stănoiu | Zaharia STANCU | H.Y. STAHL | V.CORBUL & E.BURADA |
     | Ultimul regat | Millennium | Shantaram | Pearl BUCK | Anchee MIN | Amy TAN | C. LÄCKBERG | Ph.GREGORY |
     | Extraterestrii şi Intraterestrii | RUFOR | Demonul Roşu | Vraja milioanelor | Cărţi audio |

 
   
#43
tuf
Vizitator



Un fisier .bas ar fi perfect, dar sa nu uiti sa explici utilitatea fiecarui macro in parte.

 
   
#44
Seven
Moderator
Din: Ţara Perfectului Simplu
***
     Am înţeles "cursa" din postarea lui @atari.
     Am modificat postarea şi am eliminat întrebările care nu se mai justifică.

      Mai întâi aş dori să clarificăm câteva lucruri despre editarea macrourilor.
      Cel mai bine este să testăm şi să testăm până le descoperim singuri o parte dintre reguli, dar o mână de ajutor din partea cuiva care a făcut deja asta este foarte folositoare.
      1. La o linie dintr-o listă care conţine pereche/perechi de înlocuiri nu se pot adăuga comentarii precedate de apostrof, deoarece caracterele <spatiu><underscore> arată că linia se continuă pe rândul următor.
      2. Numărul maxim de linii într-o listă este de 25 de linii. Dacă avem mai mult de 25 de înlocuiri le putem pune în mai multe liste, ori putem pune mai multe înlocuiri pe o linie.


     Referitor la liste de înlocuiri.
     După linia
       perechi = Array( _
am constatat că nu poţi pune un număr nelimitat de linii cu modificare în perechi.
    Word acceptă un maxim de 25 linii cu înlocuiri.
    Atenţie!  un număr de 25 linii înlocuiri nu este acelaşi lucru cu 25 de înlocuiri, deoarece Word acceptă mai multe înlocuiri pe acelaşi rând ca în exemplul:

     @atari a explicat:

Code:

perechi = Array(ChrW(350), ChrW(536), _
                  ChrW(351), ChrW(537), _
                  ChrW(354), ChrW(538), _
                  ChrW(355), ChrW(539))

e totuna pentru calculator cu:
  perechi = Array(ChrW(350), ChrW(536), ChrW(351), ChrW(537), ChrW(354), ChrW(538), ChrW(355), ChrW(539))

Am ales varianta să folosesc mai multe "liste", în cazul nostru sunt două liste de genul
       perechi = Array( _

     Întrebare pentru @atari:
     Presupunem că am crea un pachet separat de macrouri, să-i zicem "Corectare cuvinte", deci care nu intră în pachetul "Convert" şi în acest pachet punem 3-4 macrouri cu care înlocuim cuvinte simple, Nume persoane grafie franceză, nume locuri grafie franceză... etc,  macrouri care ar fi similare cu macroul "Corectare_Punctuaţie".
     Întrebarea este: dacă este vorba de un pachet separat, programul mai găseşte subrutinele  "InlocuiriMultiple" si " InlocuiriMultiple_Range", ori aceste subrutine rulează doar cu macrourile din pachetul lor?


_______________________________________

     Oameni şi popoare îşi cată libertatea; după ce-o obţin, îşi caută stăpân.


     | TORENTE | Tăunul | ROCAMBOLE+ | FLORIS | VRACIU | Victor HUGO | J.F. COOPER | PAPILLON | POLDARK |
     | Dictionare Lba RO | | Gramatica RO | D. Stănoiu | Zaharia STANCU | H.Y. STAHL | V.CORBUL & E.BURADA |
     | Ultimul regat | Millennium | Shantaram | Pearl BUCK | Anchee MIN | Amy TAN | C. LÄCKBERG | Ph.GREGORY |
     | Extraterestrii şi Intraterestrii | RUFOR | Demonul Roşu | Vraja milioanelor | Cărţi audio |

 
   
#45
Seven
Moderator
Din: Ţara Perfectului Simplu
1
      Redau mai jos micuţul macroul care converteşte toate bullets în caractere text.
      Macroul înlocuieşte absolut toate marcajele de tip bullets, adică atât bullets cât şi numerotarea.
      [Opţiunea similară din AutoCorect înlocuieşte doar buletts de pit linie de dialog redată prin EmDash, EnDash, Cratima şi Caracter Bar.]
      Nume macrou "Bullets_in_Text"
      Macroul este integrat în pachetul "Convert".

Code:

'======================================================================
Sub Bullets_in_Text()
'
ActiveDocument.ConvertNumbersToText

End Sub
'======================================================================

2
      Redau mai jos macroul Corectare_Punctuatie, aşa cum l-am completat în acest moment.
      Nu am reuşit să adaug şi explicaţii după fiecare linie, aşa că explicaţiile le postez după macrou.
      Nume macrou "Corectare_Punctuatie"
      Macroul este integrat în pachetul "Convert".

      Atenţie!  Nu-l copiaţi deocamdată până cu avem nişte confirmări de la @atari.

Code:

'======================================================================
Sub Corectare_Punctuatie()

  Dim timp As Single: timp = Timer
  
  ' Options.DefaultHighlightColorIndex = wdBrightGreen 'sterge linia asta pentru a nu evidentia schimbarile
  
  Dim perechi() As Variant

  perechi = Array( _
            "    ", " ", _
            "^t", " ", _
            "  ", " ", _
            "...", "…", _
            "....", "…", _
            ",..", "…", _
            ".,.", "…", _
            "..,", "…", _
            "^p ", "^p", _
            " ^p", "^p")

  InlocuiriMultiple lista:=perechi, cu_meta:=False
  
  perechi = Array( _
            " .", ".", _
            " ,", ",", _
            " :", ":", _
            " ;", ";", _
            " ?", ".", _
            " !", "!", _
            " Chr(40)", "Chr(40)", _
            " Chr(91)", "Chr(91)", _
            " Chr(123)", "Chr(123)", _
            " Chr(171)", "Chr(171)", _
            "Chr(41) ", "Chr(41)", _
            "Chr(93) ", "Chr(93)", _
            "Chr(125) ", "Chr(125)", _
            "Chr(187) ", "Chr(187)", _
            "? …", "?…", _
            "? …", "?…", _
            "  ", " ")

  InlocuiriMultiple lista:=perechi, cu_meta:=False

  MsgBox "Numarul total de cuvinte: " & ActiveDocument.Words.count & _
         ", timp de executie: " & Format(Round(Timer - timp, 3), "0.###") & " secunde", vbOKOnly, _
         "Corectare_Punctuatie"

End Sub
'======================================================================

Explicaţii înlocuiri:

     Prima listă

Code:

perechi = Array( _
            "   " , " ", _  ' trei spaţii consecutive se înlocuiesc cu un singur spaţiu
            "^t" , " ", _  ' tab se înlocuieşte cu un spaţiu
            "  " , " ", _    ' două spaţii consecutive se înlocuiesc cu un singur spaţiu
            "..." , "…", _    ' trei puncte se înlocuiesc cu Elipsis
            "...." , "…", _    ' patru puncte se înlocuiesc cu Elipsis
            ",.." , "…", _    ' trei semne puncte şi virgule se înlocuiesc cu Elipsis
            ".,." , "…", _    ' trei semne puncte şi virgule se înlocuiesc cu Elipsis
            "..," , "…", _    ' trei semne puncte şi virgule se înlocuiesc cu Elipsis
            "^p " , "^p", _  ' şterge spaţiu la început de paragraf
            " ^p" , "^p", _  ' şterge spaţiu la sfârşit de paragraf


     A doua listă

Code:

perechi = Array( _
            " ." , ".", _   ' şterge spaţiu înainte de punct
            " ," , ",", _   ' şterge spaţiu înainte de virgulă
            " :" , ":", _   ' şterge spaţiu înainte de două puncte
            " ;" , ";", _  ' şterge spaţiu înainte de punct şi virgulă
            " ?" , ".", _   ' şterge spaţiu înainte de semnul întrebării
            " !" , "!", _   ' şterge spaţiu înainte de semnul exclamării
            " Chr(40)" , "Chr(40)", _   ' şterge spaţiu înainte de paranteză rotundă de deschidere
            " Chr(91)" , "Chr(91)", _   ' şterge spaţiu înainte de paranteză dreaptă de deschidere
            " Chr(123)" , "Chr(123)", _   ' şterge spaţiu înainte de paranteză acoladă de deschidere
            " Chr(171)" , "Chr(171)", _   ' şterge spaţiu înainte de ghilimele franţuzeşti de deschidere
            "Chr(41) " , "Chr(41)", _   ' şterge spaţiu după paranteză rotundă de închidere
            "Chr(93) " , "Chr(93)", _   ' şterge spaţiu după paranteză dreaptă de închidere
            "Chr(125) " , "Chr(125)", _   ' şterge spaţiu după paranteză acoladă de închidere
            "Chr(187) " , "Chr(187)", _   ' şterge spaţiu după ghilimele franţuzeşti de închidere
            "! …" , "!…", _   ' şterge spaţiu dintre semnul exclamării şi elipsis
            "? …" , "?…", _   ' şterge spaţiu dintre semnul întrebării şi elipsis
            "  " , " ")   ' două spaţii consecutive se înlocuiesc cu un singur spaţiu


     Am adăugat apostrof înaintea liniei/liniilor care stabileau marcarea cu fundal color a înlocuirilor, aşa că înlocuirile nu vor fi marcate în text.

     Aşa cum am menţionat, în macrou nu se pot explicaţiile precedate de apostrof în dreptul liniei de comandă a unei perechi.
     Se pare că fiecare linie trebuie să se continue cu grupul de caractere , _ [Virgulă_Underline], ceea ce înseamă "comanda se continuă pe linia următoare", iar ultima linie din listă cu paranteză rotundă închisă ), ceea ce s-ar traduce cu "încheiat lista de înlocuiri".

      Ultima înregistrare din a doua listă este o modificare care se repetă, ea ocupă poz3 din prima listă. Am repetat înregistrarea în mod intenţionat, în ideea că după unele corecţii este posibil să mai apară situaţii de două spaţii consecutive.

      Am să-l rog pe @atari să explice dacă e mai bine să se lucreze cu coduri Word de genul ^w=spaţiu, ori e suficient să folosem spaţiul propriu-zis necodat.

      LE: postarea a fost reeditată
      Am reeditat macroul introducând după fiecare listă linia
             InlocuiriMultiple lista:=perechi, cu_meta:=False

      Am reeditat explicaţiile la macrou.


_______________________________________

     Oameni şi popoare îşi cată libertatea; după ce-o obţin, îşi caută stăpân.


     | TORENTE | Tăunul | ROCAMBOLE+ | FLORIS | VRACIU | Victor HUGO | J.F. COOPER | PAPILLON | POLDARK |
     | Dictionare Lba RO | | Gramatica RO | D. Stănoiu | Zaharia STANCU | H.Y. STAHL | V.CORBUL & E.BURADA |
     | Ultimul regat | Millennium | Shantaram | Pearl BUCK | Anchee MIN | Amy TAN | C. LÄCKBERG | Ph.GREGORY |
     | Extraterestrii şi Intraterestrii | RUFOR | Demonul Roşu | Vraja milioanelor | Cărţi audio |

 
   
#46
atari
Membru Junior
Dom'le Seven,
Izbi-mi-as basca uda de podea sa mi-o izbesc! :-)
(Subiect de bac la romana: faceti analiza sintactica si morfologica a frazei de mai sus. Explicati ce-a vrut de fapt sa spuna poetul si la ce teme metafizice se raporteaza acesta (citati din clasicii studiati in clasele X-XII). Barem de notare: 2 mere si doua nuci pentru un raspuns complet!)

Ok, acum ca am rezolvat basca, stai sa vad intrebarile... Revin dupa ce compilez raspunsurile.


 
   
#47
Seven
Moderator
Din: Ţara Perfectului Simplu
***
     Dom'le atari,
     Legat de problema cu basca, pe mine să nu te bazezi. Eu am făcut liceu industrial acum vreo sută de ani şi deşi am dat şi Literatura română la bac, era vorba doar de analiza literară a unei opere literare... chestia cu "sintactică şi morfologică"...  e mult prea complicat...

     Referitor la macrouri şi orice altceva: eu chiar am fost şi sunt interesat de problemă şi nu aştept să posteze cineva totul... din respect pentru mine şi din respect pentru munca şi bunăvoinţa acelui "cineva".
    Mă chinui să văd concret cum devine chestiunea în dicuţie, aşa că încerc să aplic ceea ce aflu de la cei ce ştiu. Din păcate, macrourile mele se înroşeau la greu de parcă se enervau că tocmai eu m-am apucat să lucrez cu ele... Tot ştergând şi modificând au început să revină la culoarea normală.
     Eu cred că asta e metoda de învăţare. Încerci... nu-ţi iese... încerci din nou... insişti şi la un moment dat iese ce trebuie...


_______________________________________

     Oameni şi popoare îşi cată libertatea; după ce-o obţin, îşi caută stăpân.


     | TORENTE | Tăunul | ROCAMBOLE+ | FLORIS | VRACIU | Victor HUGO | J.F. COOPER | PAPILLON | POLDARK |
     | Dictionare Lba RO | | Gramatica RO | D. Stănoiu | Zaharia STANCU | H.Y. STAHL | V.CORBUL & E.BURADA |
     | Ultimul regat | Millennium | Shantaram | Pearl BUCK | Anchee MIN | Amy TAN | C. LÄCKBERG | Ph.GREGORY |
     | Extraterestrii şi Intraterestrii | RUFOR | Demonul Roşu | Vraja milioanelor | Cărţi audio |

 
   
#48
atari
Membru Junior
Incerc mai jos sa raspund la intrebari:

1.  
...dacă este vorba de un pachet separat, programul mai găseşte subrutinele  "InlocuiriMultiple" si " InlocuiriMultiple_Range", ori aceste subrutine rulează doar cu macrourile din pachetul lor?

Cele doua subrutine ajutatoare "InlocuiriMultiple" si " InlocuiriMultiple_Range" sunt scrise acum cu atributul "Privat Sub ..."
Asta le face "vizibile" doar in pachetul in care sunt definite.
Pentru a le accesa inafara pachetului, exista cateva metode:
1. Se inlocuieste cuvantul "Private" din definitia lor cu "Public". (cred ca daca doar se sterge Private e acelasi lucru, devine automat "Public", dar nu am cum sa verific acum...)
2. Se copie subrutinele ajutatoare si in pachetul respectiv. Fiind Private, putem avea mai multe subrutine cu acelasi nume in pachete diferite, Word-ul le va folosi intotdeauna pe cele din pachetul curent daca exista definite acolo.

2.
...dacă e mai bine să se lucreze cu coduri Word de genul ^w=spaţiu, ori e suficient să folosem spaţiul propriu-zis necodat.
 
Cred ca ^w=spaţiu e mai bine. Asta include si spatiu si "spatiu neseparator" si alte caractere reprezentate drept spatiu de word (gen tab)...

3.
Optimizari 


Ceea ce fac subrutinele astea e in ultima instanta o serie de inlocuiri de tipul "Cauta&Inlocuieste". E de preferat ca numarul modificarilor din lista sa fie cat mai mic, pentru ca viteza de executie a listei sa fie cat mai mare.

"Minimizarea" listei se poate obtine de exemplu prin gruparea inlocuirilor, folosind metacaractere (wildcards).
Subrutina InlocuiriMultiple are pe langa lista cu sirurile de inlocuit un al doilea parametru numit "meta". Daca se executa subrutina cu meta:=True, atunci sirurile din lista vor fi interpretate ca si "siruri cu metacaractere (wildcards)". Este acelasi lucru (aceaasi sintaxa, coduri, etc) ca atunci cand bifati "use wildcards" in fereastra "Search&Replace" a Word-ului.

Cateva exemple mai jos:

Code:

"    " , " ", _  ' patru spaţii consecutive se înlocuiesc cu un singur spaţiu
"   " , " ", _   ' trei spaţii consecutive se înlocuiesc cu un singur spaţiu
"  " , " ", _    ' două spaţii consecutive se înlocuiesc cu un singur spaţiu

e tot una cu urmatorul sir cu metacaractere:

"  @", " ", _    ' două sau mai multe spaţii consecutive se înlocuiesc cu un singur spaţiu



Code:

" ." , ".", _   ' şterge spaţiu înainte de punct
" ," , ",", _   ' şterge spaţiu înainte de virgulă
" :" , ":", _   ' şterge spaţiu înainte de două puncte
" ;" , ";", _  ' şterge spaţiu înainte de punct şi virgulă
" !" , "!", _   ' şterge spaţiu înainte de semnul exclamării
            
e tot una cu cu urmatorul sir cu metacaractere:
            
" @([\.\,\:\;\?\!])" , "\1" ' şterge unul sau mai multe spaţii înainte de
                               '  punct, virgulă, două puncte, punct şi virgulă,
                               '  semnul întrebării sau semnul exclamării

4.
Despre inlocuiri multiple in general


Chestia asta poate fi o arma cu doua taisuri... E foarte usor ca o inregistrare eronata sa strice de fapt cartea. E necesar sa fie testate foarte mult, pe cat mai multe carti diferite si asa mai departe.
Eu unul nu sunt neaparat un fan "cat mai multe inlocuiri multiple" fara confirmare. Sunt bune la unele chestii, dar nu sunt bune la orice.
De aici doua idei:
a. De dezvoltat rutine pentru "InlocuiriMultiple_CuConfirmare"
b. De dezvoltat rutine pentru importarea si executarea dictionarelor pregatite de Seven pentru Autocorect.
Suna interesant?


 
   
#49
Seven
Moderator
Din: Ţara Perfectului Simplu
***
      Complicat... complicat... da' pân' la urmă-i dăm de cap....
     
      Ca să înţeleg:
           similar cu linia:
                            " @([\.\,\:\;\?\!])" , "\1"   
           se poate folosi şi varianta de genul următor?
                            " @([\Chr(40)\Chr(91)\Chr(123)\Chr(171)])" , "\1"     

      Şi cum se scrie în cazul ştergerii spaţiului de după parantezele şi ghilimele de început: Chr(410), Chr(93), Chr125) şi Chr(187)  ?

      Codurile corespund caracterelor următoarele:
                   (  Chr(40),  [  Chr(91),  {  Chr(123),  «  Chr(171)
                   )  Chr(41),   ]  Chr(93),   }  Chr(125),   »  Chr(187).

      ...Şi de ce cocoloşu' ăsta @ se vede într-un fel la tine şi altfel la mine?... că doară l-am copiat din postarea ta?... 
      Aha!... al tău e în format Code...


_______________________________________

     Oameni şi popoare îşi cată libertatea; după ce-o obţin, îşi caută stăpân.


     | TORENTE | Tăunul | ROCAMBOLE+ | FLORIS | VRACIU | Victor HUGO | J.F. COOPER | PAPILLON | POLDARK |
     | Dictionare Lba RO | | Gramatica RO | D. Stănoiu | Zaharia STANCU | H.Y. STAHL | V.CORBUL & E.BURADA |
     | Ultimul regat | Millennium | Shantaram | Pearl BUCK | Anchee MIN | Amy TAN | C. LÄCKBERG | Ph.GREGORY |
     | Extraterestrii şi Intraterestrii | RUFOR | Demonul Roşu | Vraja milioanelor | Cărţi audio |

 
   
#50
atari
Membru Junior
Da, e putin mai complicat dar parca mai e ceva simplu in ziua de azi...?
:-)

Pentru cum se folosesc metacaracterele, vezi aici:
https://support.office.com/ro-ro/articl ... &ad=RO

Cel mai simplu e de testat e din fereastra Serch&Replace a word-ului, apoi dupa ce ai gasit combinatia potrivita o poti copia in macro, ca siruri de_inlocuit si inlocuitor (intre ghilimele)

Chr(xxx) trebuie definit ca ^uxxx unde xxx e codul unicode in zecimal (cred... verifica in pagina de mai sus...)


 
   
Pagini:  1 2 3  
Mergi la