Forum Romania Inedit
Romania Inedit - Resursa ta de Fun
Lista Forumurilor Pe Tematici
Forum Romania Inedit | Reguli | Inregistrare | Login

POZE FORUM ROMANIA INEDIT

Nu sunteti logat.
Nou pe simpatie:
surender_lady Profile
Femeie
25 ani
Arad
cauta Barbat
26 - 47 ani
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
Seven
Moderator

Din: Ţara Perfectului Simplu
Inregistrat: acum 14 ani

     ════════   DISCUŢII:  CONVERSIE DIACRITICE   ════════




     Topicul va rămâne pe secţiunea „Cărţi în limba română” 2-3 zile pentru a fi văzut de câţi mai mulţi useri, apoi va fi mutat pe secţiunea „Totul despre cărţi”.


     După cum ştim, la acest moment, avem două variante de diacritice pentru literele Ş,ş, Ţ,ţ.
     Este vorba despre literele Ş,ş, Ţ,ţ cu sedila, care în Unicode (hex) au următoarele coduri de identificare:
          U015E  – litera S cu sedilă;  U015F  – litera s cu sedilă;
          U0162  – litera T cu sedilă;  U0163  – litera t cu sedilă;

     Pentru aceleaşi litere există varianta diacritice cu virgulă şi au în Unicode (hex) următoarele coduri de identificare:
          U0218  – litera S cu virgulă;  U0219  – litera s cu virgulă;
          U021A  – litera T cu virgulă;  U021B  – litera t cu virgulă.

     Ce ar mai trebui subliniat?
          - faptul că diacriticele cu sedila sunt varianta veche de diacritice şi sunt „văzute” de toate sistemele de operare;
          - diacriticele cu virgulă sunt varianta mai nouă, recunoscute de Academia Română ca fiind cele corecte, dar au dezavantajul că se pot „vedea” şi edita doar în versiunile mai noi ale sistemelor de operare, ori în situaţia unor fonturi reactualizate, cărora li s-au inserat şi aceste caractere.

     Cel mai important lucru este faptul că marea majoritate a editoarelor de text au corectoare doar pentru una dintre variantele de diacritice; după câte ştiu OpenOffice are corectoare pentru ambele variante de diacritice; e posibil acest lucru şi în cazul lui Libre…

     Pentru Word avem următoarele situaţii:
          - în cazul Word mai vechi [Word 2000, XP, 2003, 2007, 2010] corectoarele de limba română văd ca fiind „corecte” cuvintele scrise cu diacriticele de tip sedila şi văd ca fiind „greşite” cuvintele scrise cu diacritice de tip virgulă;
          - în cazul Word 2013 lucrurile stau exact invers: corectorul „vede” ca fiind corecte cuvintele scrise cu diacritice-virgulă şi consideră ca fiind greşite toate cuvintele scrise cu diacritice-sedilă.

     Fiecare dintre noi are fişiere vechi [cu diacritice-sedila] pe care ar dori să le editeze în condiţiile noi, ori găseşte fişiere noi [cu diacritice-virgula] şi ar dori să le editeze, dar au la dispoziţie editoare mai vechi.

     M-am gândit că pentru a rezolva astfel de situaţii se impune să găsim o formulă de conversie a diacriticelor dintr-o variantă în alta.
     Formula ar trebui să permită conversia automată şi să poată fi realizată de orice user, inclusiv de către cei care nu cunosc foarte bine lucrul cu Word.
     
     Mă gândeam că probabil este posibilă realizarea unei macrocomenzi… de fapt, două macrocomenzi integrate într-un template: una care să realizeze conversia „diacritice sedila >> diacritice virgulă” şi a doua care să facă modificarea inversă „diacritice virgulă >> diacritice sedila”.

     Cred că trebuie subliniat un aspect important: pentru a face conversia ar trebui să lucrăm cu fonturi care au ambele tipuri de diacritice; asta este problema cea mai simplă; există diverse softuri [printre care High-Logic FontCreator postat şi explicat de @uciN] cu care se pot insera caracterele necesare în orice tip de font. Mă ofer să prelucrez câteva fonturi în acest sens.


     Bineînţeles că eu nu am găsit soluţia... dacă o găseam aş fi postat propunerea mea; eu fac astfel de conversii, dar folosind nişte soluţii mai complicate şi mai  "băbeşti".

     Problema conversiei diacriticelor mi se pare foarte importantă şi cred că mulţi useri ar fi interesaţi.
     Sunt sigur că împreună putem găsi o astfel de soluţie, dacă purtăm o discuţie serioasă pe această temă.


_______________________________________

     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 |

pus acum 9 ani
   
Seven
Moderator

Din: Ţara Perfectului Simplu
Inregistrat: acum 14 ani
***
     Ştiu că există multe variante de realizarea a conversiei diacriticelor.
     Varianta cea mai simplă este în AutoCorect... sunt şi o serie de saituri unde se poate copia textul şi face conversia...
     Problema este că astfel de conversii anulează formatarea textului.
     Imaginaţi-vă că cineva are o lucrare personală din domeniu tehnic în care apare text, tabele, imagini etc... mărimi diferite de font, fonturi diferite etc... şi că pentru a încadra în pagină toate acestea a trebuit să muncească serios.
     Dacă într-un astfel de text se inserează sau se elimină un rând sau două e posibil să apară o catrastofă: tabele care se rup pe două pagini,imagini care sunt "aruncate" pe pagina următoare etc.. etc...

     Dacă se va face conversia în Word se va păstra formatarea; dacă pentru a face conversia trebuie să se piardă formatarea atunci va trebui ca utilizatorul să muncească la greu ca să refacă formatarea, astfel încât toate componentele lucrării să revină la locul lor.
     Acesta este motivul pentru care ar trebui să găsim o soluţie care să se aplice direct în Word şi care să se facă uşor şi rapid.


_______________________________________

     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 |

pus acum 9 ani
   
ZVONACFIRST
MEMBRU DE BAZA

Din: Bucuresti
Inregistrat: acum 16 ani
Bun subiect.
Eu utilizez Office 2013 şi m-am lovit din prima de problema diacriticelor deoarece absolut toate fişierele din calculator le am cu diacritice cu sedilă.
Cel mai simplu cred eu că at fi să stabilim câteva fonturi pe care să le utilizăm, care să conţină atât diacritice cu sedilă cât şi cu virguliţa. Toţi avem niste fonturi preferate, facem propuneri aici, le integrăm diacriticele necesare (în caz ca nu le au deja) şi le utilizăm toţi.
Ulterior cu Autocorect se poate face conversia în ambele sensuri, în funcţie de ce diacritice doreşte fiecare să utilizeze.
Asta bineînţeles cu riscurile prezentate de @Seven in postarea anterioară.

Pot fi făcute şi nişte comenzi macro.
La cât mă pricep eu, văd cam aşa soluţia:
- două comenzi macro, în fiecare sens câte una, cu păstrarea fontului cu condiţia ca fontul să fie instalat pe computerul pe care rulează comanda macro si să conţină ambele tipuri de diacritice
- două comenzi macro, în fiecare sens câte una, cu schimbarea de fiecare dată a fontului, cu condiţia ca fonturile respective, atât cel din sursă cât şi cel din destinaţie, să fie deja instalate pe computerul pe care rulează comanda macro si să conţină tipul de diacritice dorit.

Modificat de ZVONACFIRST (acum 9 ani)


pus acum 9 ani
   
samiramida
Membru Senior

Inregistrat: acum 10 ani
cel mai simplu e să folosiți pachetul de limbă de la Microsoft, disponibil de 10 ani... şi tastatura adecvată.

ș ț ă î â Ș Ț Ă Î Â (cu Română Standard) față de

ş ţ ă î â Ş Ţ Ă Î Â (cu Română Legacy)


pus acum 9 ani
   
Seven
Moderator

Din: Ţara Perfectului Simplu
Inregistrat: acum 14 ani
***
     Mulţumesc, @samiramida! Am gustat şi ironia cu cei "10 ani", dar cred că nu vorbim despre acelaşi lucru.

     Încerc să fiu mai concret.
     Avem un text OCR vechi, redactat cu diacritice de tip sedila şi dorim să-l corectăm.
     Folosim tastatură Romanian Standard, care scrie diacritice-virgulă şi avem la dispoziţie Word 2013 care are corector pentru diacritice-virgulă.
     Dacă nu vom face nicio prelucrare a OCR-ului şi vom corecta cu diacritice-virgula, vom obţine în final un text care are ambele variante de diacritice; mai mult decât atât, corectorul Word 2013 nu-l vom putea folosi.

     Pentru ca să avem un text respectabil ar fi bine să avem un singur tip de diacritice; varianta ar fi ca înainte de a începe corectura să convertim literele cu diacriticele de tip sedila în litere cu diacritice-virgula. La un astfel de "convertor" mă refer eu.


_______________________________________

     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 |

pus acum 9 ani
   
Seven
Moderator

Din: Ţara Perfectului Simplu
Inregistrat: acum 14 ani
***
      Şi acum să vă spun care este dificultatea pentru realizarea unei macrocomenzi [Macro].
      Dacă toţi cunoaştem sau putem afla codul unui caracter în Unicode (hex), în editarea unei macrocomenzi acest cod nu semnifică nimic pentru Word.

      Editorul de macrocomenzi se referă la un caracter prin menţionarea numărului de ordine pe care îl are în fereastra Insert Symbol.
      Atunci când ne referim la Ş cu sedila, în macrocomandă se înregistrează ceva de genul "CharacterNumber:=350, Unicode _"
      În plus trebuie menţionat şi tip font.

      Rezultă două probleme de clarificat:
           - pentru acelaşi font, să zicem Times New Roman, litera Ş cu sedila ocupă poziţia 350 în toate versiunile Word? ori există diferenţe între versiunile Word? Logic ar fi ca Ş-sedila să se găseascăla nr.350 în toate versiunile, dar trebuie verificat.
           - litera Ş-sedila ocupă poziţia 350 în toate tipurile de font? Ar fi logic să fie aşa, dar, din nou trebuie verificat.

      Dacă în toate versiunile Word şi în toate tipurile de font "CharacterNumber:=350, Unicode _" = U015E  = litera S cu sedilă, atunci macrocomanda ar fi foarte simplu de realizat.
      Problema este să clarificăm aceste incertitudini.


      LE: Cred că ar trebui să fac o rectificare la această postare.
      Eu mă pricep foarte puţin la macrocomenzi şi este foarte posibil să existe şi alte variante pe care eu n-am reuşit să le găsesc. Am spus mai sus că editorul de macrocomenzi recunoaşte un caracter dacă este menţionat sub forma "CharacterNumber:=350, Unicode _".
      Mai corect ar fi să spun că asta este varianta pe care am găsit-o eu, dar nu exclude şi o altă variantă de identificare a caracterelor în Word.
      Menţionez că am încercat o grămadă de variante de introducere a codului Unicode de la tastatură, dar nu mi-a ieşit figura nici cu Alt+, nici cu AltGr+, nici cu alte combinaţii de taste. Sunt convins că am greşit ceva pe undeva... chestia este că modul de identificare a caracterelor menţionat mai sus este singurul pe care l-am descoperit.


_______________________________________

     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 |

pus acum 9 ani
   
inforex
MEMBRU VIP

Inregistrat: acum 9 ani
Cea mai simpla metoda, dupa mine este sa folosesti functia "Replace" a oricarui editor de text, singura problma este ca trebuie sa faci de 10 ori "Replace All"(adica pentru tot setul ș ţ ă î â Ş Ţ Ă Î Â) . Eu de pilda am un fisier in care tin cele 10 caractere (atat in forma cu sedila cat si in forma cu virgula(bineinteles si in format hexa)), si copiez de fiecare data in campul "Find what" caracterul care vreau sa-l inlocuiesc(il copiez, de obicei, din textul in lucru), iar in campul "Replace with" caracterul cu care vreau sa-l inlocuiesc., si dureaza foarte putin. Sau in functie de editorul de text pe care sunt bligat sa-l folosesc incerc sa vad cum reprezinta caracterele respective folosind reprezentarea hexa a fiecarui caracter, si pe urma execut functia "Replace"(si din acesta cauza este greu de realizat niste macrocomenzi care sa actioneze diferit in functie de editorul de texte pe care il folosesti).

pus acum 9 ani
   
meridiane
Online
MEMBRU VIP

Inregistrat: acum 12 ani

inforex a scris:

Cea mai simpla metoda, dupa mine este sa folosesti functia "Replace" a oricarui editor de text, singura problma este ca trebuie sa faci de 10 ori "Replace All"(adica pentru tot setul ș ţ ă î â Ş Ţ Ă Î Â) . Eu de pilda am un fisier in care tin cele 10 caractere (atat in forma cu sedila cat si in forma cu virgula(bineinteles si in format hexa)), si copiez de fiecare data in campul "Find what" caracterul care vreau sa-l inlocuiesc(il copiez, de obicei, din textul in lucru), iar in campul "Replace with" caracterul cu care vreau sa-l inlocuiesc., si dureaza foarte putin. Sau in functie de editorul de text pe care sunt bligat sa-l folosesc incerc sa vad cum reprezinta caracterele respective folosind reprezentarea hexa a fiecarui caracter, si pe urma execut functia "Replace"(si din acesta cauza este greu de realizat niste macrocomenzi care sa actioneze diferit in functie de editorul de texte pe care il folosesti).


Sigur ca da. Mai ales când avem î, â, ă, Î, Â, Ă, cu căciuliţă, nu cu sedilă şi incercăm
să înlocuim cu virgulă.
Este un adevarat chin...

Modificat de meridiane (acum 9 ani)


pus acum 9 ani
   
atari
Membru Junior

Inregistrat: acum 11 ani
Macrouri Word pentru convertire diacritice si ortografie mai jos.

1. Am optimizat niste macrocomenzi existente, si nu am testat prea multl... E posibil sa mai fie scapari, trebuie testat mai intensiv 
2. [late edit] am adaugat si niste optimizari pentru viteza de executie a macrourilor
3. [late edit] am adaugat inlocuirea si in Footnote
4. [late edit] am reorganizat codul si adaugat inca 2 macrou-uri pentru converie din ortografie clasica in contemporana si invers.
5. [late edit] Am lasat in cod cateva linii de test pentru a evidentia cu o culoare de fond schimbarile facute. Stergeti liniile care contin comentarii de tipul "sterge linia pentru a nu evidentia schimbarile" daca nu vreti optiunea asta.
6. [late edit] am adugat inlocuirea si in Endnote.
7. [late edit] am adaugat cateva prefixe pe care le sarisem la conversia clasic -> contemporan

Si uite asa se ajunge de la o chestie simpla la un "carnat" de postare... :-)

Code:

'======================================================================
Sub Convert_Cedila_In_Virgula()

  Dim timp As Single: timp = Timer
  
  Options.DefaultHighlightColorIndex = wdYellow 'sterge linia asta pentru a nu evidentia schimbarile
  
  Dim perechi() As Variant
  perechi = Array(ChrW(350), ChrW(536), _
                  ChrW(351), ChrW(537), _
                  ChrW(354), ChrW(538), _
                  ChrW(355), ChrW(539))
  
  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, _
         "Convert_Cedila_In_Virgula"

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


'======================================================================
Sub Convert_Virgula_In_Cedila()

  Dim timp As Single: timp = Timer
  
  Options.DefaultHighlightColorIndex = wdBrightGreen 'sterge linia asta pentru a nu evidentia schimbarile
  
  Dim perechi() As Variant
  perechi = Array(ChrW(536), ChrW(350), _
                  ChrW(537), ChrW(351), _
                  ChrW(538), ChrW(354), _
                  ChrW(539), ChrW(355))
  
  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, _
         "Convert_Virgula_In_Cedila"

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


'======================================================================
Sub Convert_In_Ortografie_Clasica()

  Dim timp As Single: timp = Timer
  
  Options.DefaultHighlightColorIndex = wdGray25 'sterge linia asta pentru a nu evidentia schimbarile

  Dim perechi() As Variant
  perechi = Array("<([Ss])unt", "\1înt", _
                  "<SUNT", "SÎNT", _
                  "â", "î", _
                  "Â", "Î", _
                  "<([Rr]om)î", "\1â", _
                  "<ROMÎ", "ROMÂ")
  
  InlocuiriMultiple lista:=perechi, cu_meta:=True
  
  MsgBox "Numarul total de cuvinte: " & ActiveDocument.Words.count & _
         ", timp de executie: " & Format(Round(Timer - timp, 3), "0.###") & " secunde", vbOKOnly, _
         "Convert_In_Ortografie_Clasica"

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


'======================================================================
Sub Convert_In_Ortografie_Contemporana()

  Dim timp As Single: timp = Timer

  Options.DefaultHighlightColorIndex = wdTurquoise 'sterge linia asta pentru a nu evidentia schimbarile
  
  Dim perechi() As Variant
  
  ' modificari generale
  perechi = Array("<([Ss])înt", "\1unt", _
                  "<SÎNT", "SUNT", _
                  "î", "â", _
                  "Î", "Â", _
                  "<â", "î", _
                  "<Â", "Î", _
                  "â>", "î", _
                  "Â>", "Î")
                  
  InlocuiriMultiple lista:=perechi, cu_meta:=True
  
  ' refacere cuvinte compuse <prefix>î - partea 1
  perechi = Array("<([aA]lt)â", "\1î", _
                  "<([aA]nti)â", "\1î", _
                  "<([aA]rhi)â", "\1î", _
                  "<([aA]toate)â", "\1î", _
                  "<([aA]tot)â", "\1î", _
                  "<([aA]uto)â", "\1î", _
                  "<([bB]ine)â", "\1î", _
                  "<([bB]io)â", "\1î", _
                  "<([bB]un)â", "\1î", _
                  "<([cC]ap)â", "\1î", _
                  "<([cC]o)â", "\1î", _
                  "<([dD]e)â", "\1î", _
                  "<([dD]es)â", "\1î", _
                  "<([dD]ez)â", "\1î", _
                  "<([eE]x)â", "\1î", _
                  "<([fF]oto)â", "\1î")
                  
  InlocuiriMultiple lista:=perechi, cu_meta:=True

  ' refacere cuvinte compuse <prefix>î - partea 2
  perechi = Array("<([hH]iper)â", "\1î", _
                  "<([mM]icro)â", "\1î", _
                  "<([mM]ini)â", "\1î", _
                  "<([mM]ult)â", "\1î", _
                  "<([nN]e)â", "\1î", _
                  "<([nN]emai)â", "\1î", _
                  "<([nN]on)â", "\1î", _
                  "<([pP]rea)â", "\1î", _
                  "<([pP]re)â", "\1î", _
                  "<([pP]ro)â", "\1î", _
                  "<([pP]seudo)â", "\1î", _
                  "<([rR]" & ChrW(259) & "s)â", "\1î", _
                  "<([rR]e)â", "\1î", _
                  "<([sS]emi)â", "\1î", _
                  "<([sS]ub)â", "\1î", _
                  "<([sS]ubt)â", "\1î", _
                  "<([sS]uper)â", "\1î", _
                  "<([sS]upra)â", "\1î", _
                  "<([tT]ele)â", "\1î", _
                  "<([tT]ripla)â", "\1î", _
                  "<([uU]ltra)â", "\1î")
                  
  InlocuiriMultiple lista:=perechi, cu_meta:=True

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

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


'======================================================================
' Executa o secventa de inlocuiri multiple in
'  - tot textul documentului
'  - toate notele de subsol
'  - toate notele de final
' Parametri:
'  - lista(): lista de perechi <de_inlocuit>, <inlocuitor>
'  - cu_meta: Daca e True, inlocuirile se fac cu metacaractere (wildcards)
Private Sub InlocuiriMultiple(ByRef lista() As Variant, cu_meta As Boolean)

  Dim orng As Range

  '----------------------------
  ' activez setarile pentru optimizare viteza macro
  Dim Opt1 As Boolean: Opt1 = Options.Pagination: Options.Pagination = False
  Dim Opt2 As Boolean: Opt2 = Application.ScreenUpdating: Application.ScreenUpdating = False
  
  '---------------------------
  ' executa inlocuirile in textul documentului
  Set orng = ActiveDocument.Range: orng.Expand wdStory
  InlocuiriMultiple_Range lista:=lista, rng:=orng, cu_meta:=cu_meta
  
  '---------------------------
  ' executa inlocuirile in notele de final (Endnote)
  If ActiveDocument.Endnotes.count > 0 Then
    Set orng = ActiveDocument.Endnotes(1).Range: orng.Expand wdStory
    InlocuiriMultiple_Range lista:=lista, rng:=orng, cu_meta:=cu_meta
  End If
 
  '---------------------------
  ' executa inlocuirile in notele de subsol (Footnote)
  If ActiveDocument.Footnotes.count > 0 Then
    Set orng = ActiveDocument.Footnotes(1).Range: orng.Expand wdStory
    InlocuiriMultiple_Range lista:=lista, rng:=orng, cu_meta:=cu_meta
  End If

  '----------------------------
  ' optimizari de memorie
  ActiveDocument.UndoClear
  Set orng = Nothing

  '----------------------------
  ' dezactivez setarile pentru marire viteza macro
  Options.Pagination = Opt1
  Application.ScreenUpdating = Opt2

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


'======================================================================
Private Sub InlocuiriMultiple_Range(ByRef lista() As Variant, rng As Range, cu_meta As Boolean)

  Dim count As Long: count = UBound(lista)
  
  With rng.Find
    .ClearFormatting: .Replacement.ClearFormatting
    .Format = False: .MatchCase = True
    .MatchWildcards = cu_meta

    .Replacement.Highlight = True 'sterge linia asta pentru a nu evidentia schimbarile
  
    ' fac toate inlocuirile din lista
    For i = LBound(lista) To count Step 2
      StatusBar = i / 2 & "/" & (count - 1) / 2 & " Inlocuire " & lista(i) & " cu " & lista(i + 1)
      .text = lista(i): .Replacement.text = lista(i + 1): .Execute Replace:=wdReplaceAll
    Next i
    
  End With
   
End Sub
'======================================================================



Modificat de atari (acum 9 ani)


pus acum 9 ani
   
Seven
Moderator

Din: Ţara Perfectului Simplu
Inregistrat: acum 14 ani
***
      Săru'mâna, @atari!

      Exact de aşa ceva aveam nevoie.
      Cred că ai văzut că eram şi eu pe-aproape... cam la vreo 10.000 de ani lumină... 


_______________________________________

     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 |

pus acum 9 ani
   
uciN
MEMBRU VIP

Inregistrat: acum 15 ani
Îți mulțumesc și eu atari. Subrutinele funcționează perfect.

pus acum 9 ani
   
samiramida
Membru Senior

Inregistrat: acum 10 ani
nu a fost nici o ironie, MS are fișierul ăla disponibil din 2004. nici eu nu am știut de el până în 2006.

în ceea ce privește, înlocuirea, macro sunt cea mai bună opțiune. cineva a postat acum 4 ani un mic tutorial despre cum se face un macro. până atunci eu lucram după metoda băbească: aveam un fișier unde țineam caracterele cu [i]cedila[i] și le tot copiam de acolo când făceam conversia și după aia o luam pe manual.

nu trebuie să fi cine-știe-ce expert în macro, dar să știi ce vrei. când te-ai decis ce, se face pur și simplu o înregistrare a comenzii și după aia o multiplici pentru ce căutări vrei să faci. cât de departe vrei să mergi... ține de tine.

macro-ul meu are 9 pagini (A4) pentru diacritice și erori de citire și 5 pentru punctuație. nu prea îi scapă nimic.

iată comanda mea macro standard:



Sub Diacritice()
'
' Diacritice Macrocomandă
'
'
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "-1"
        .Replacement.Text = "-l"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = True
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll

.......
End Sub

partea roșie e cea de repetiție care se adaugă în locul punctelor de suspensie, cu textul de înlocuit  -1 (adică linie 1) cu -l (adică linie L mic)

Modificat de samiramida (acum 9 ani)


pus acum 9 ani
   
Seven
Moderator

Din: Ţara Perfectului Simplu
Inregistrat: acum 14 ani
***
      Îmi cer scuze, @samiramida! Am înţeles eu altceva.
      În acelaşi mod îmi editez şi eu macro-urile [după modelul tău].

      Ceea ce ne-a oferit @atari pe acest topic este mult mai eficient şi profesionist.
      În afară de faptul că este un fel de 4 în 1, adică nu mai repetăm modelul prezentat de tine de 4 ori, rulează foarte repede şi merge pentru orice font cu condiţia ca fontul să aibă ambele variante de diacritice. Avem deja câteva astfel de fonturi şi mai putem prelucra şi altele.
      Am făcut deja teste în Word 2010 şi 2003; deocamdată pe texte în font Times New Roman.

      Mâine am să încerc să pregătesc un text cu mai multe tipuri de font [de exemplu: Times New Roman + Calibri + Droid Serif prelucrat] şi să văd cum merge.


_______________________________________

     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 |

pus acum 9 ani
   
80Inanna
Moderator

Din: Mitologie
Inregistrat: acum 18 ani
@atari: Mulțumesc. Macro-urile dv. îmi rezolvă o problemă.

Mai folosim sisteme cu WinXP cu Word2003. Spellerul acestuia este cu diacritice cu sedile și semnalează drept greșite cuvintele cu diacritice cu virgule. După conversie spellerul lucrează corect, iar apoi se poate reveni.


_______________________________________
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.

pus acum 9 ani
   
samiramida
Membru Senior

Inregistrat: acum 10 ani
doar pentru diacritice, e okay macro lui atari. eu folosesc macro pentru mai mult decât atât (inclusiv pentru corecția ortografică a cuvintelor cu â). o să încerc să văd dacă merge și acolo.

pus acum 9 ani
   
atari
Membru Junior

Inregistrat: acum 11 ani
Cu placere, ma bucur ca macrourile sunt de folos!

@samiramida: Pai ar trebui sa mearga daca adaugi mai multe campuri de inlocuire, n-ar trebui sa fie nici o problema in principiu... De fapt liniile mele de cod de mai sus nu sunt chiar atat de diferite de structura arata de tine, ambele folosesc functia ReplaceAll. E indicat de lucrat cu un Range si nu cu Selection, in primul rand e mai rapid, apoi nu trebuie neaparat sa selectezi textul inainte de  executarea macrourilor. In functie de formatarile textului "inlocuitor" si "de inlocuit", unele campuri din structura aratata de tine nu sunt neaparat necesare. Nu spun ca strica  , doar nu sunt necesare. Diferenta e in viteza de executie a macroului.

O alta conversie utila, legata si ea de problema arata mai sus de 80Inanna - corectorul lexical - ar fi din "grafia clasica" (sint, i din i)  in "grafia contemporana" (sunt, i din a) si invers. Stiu ca Autocorect rezolva problema, dar poate ar fi utile doua macrouri care sa faca conversia direct in word, pentru cazurile in care se dorecte corectarea unei carti in grafie clasica. Corectoarele lexicale curente nu stiu decat grafie contemporana.
Interesant? Are cineva nevoie de asa ceva?

Modificat de atari (acum 9 ani)


pus acum 9 ani
   
Seven
Moderator

Din: Ţara Perfectului Simplu
Inregistrat: acum 14 ani
***
      atari,
     
     1. Structura folosită de @samiramida o folosesc şi eu... şi probabil că mai sunt şi alţi useri.
     Cred că ai înţeles că atunci când avem multe înlocuiri de făcut pentru fiecare înlocuire folosim structura de mai sus pe care o tot copiem şi reedităm până la ultima înlocuire.
     În afară de faptul că spui că rulează mai încet [şi eu deja m-am convins de chestia asta testând macroul tău], eu observ că avem şi multe linii de cod pe care tu le-ai condensat în ceva sau nu e nevoie de ele.
     
     Aş vrea să te rog să ne ajuţi să folosim o formulă mai suplă, dar pe care să o putem înţelege cât mai bine.

     Ca să fie mai simplu de înţeles pentru noi, propun să pornim de la nişte exemple de la 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ă
    Cred că sunt suficiente cazurile de mai sus ca să putem înţelege cum apare un cod mai suplu.


     2. Nişte macrouri pentru înlocuire limbaj_clasic >> limbaj_contemporan şi invers sunt mai mult decât binevenite în Word, în mod special pentru cei ce lucrează cu stiluri şi nu ar dori să piardă formatarea rulând fişierul prin AutoCorect.
   
     În afară de texte într-unul dintre cele două limbaje, am întâlnit şi texte în limbaj "mixt". Practic s-a plecat de la text în limbaj clasic şi persoana care a corectat cartea a făcut transformarea în contemporan manual prin corectarea cuvintelor. Bineînţeles că unele cuvinte "scapă", aşa că textul rezultat este într-un limbaj cam bălţat.
     Şi în astfel de cazuri un macrou ar rezolva problema. Deci sunt interesat.
     Bănuiesc, totuşi, că ai prefera şi părerea altor useri.     


_______________________________________

     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 |

pus acum 9 ani
   
atari
Membru Junior

Inregistrat: acum 11 ani
Salutare,

Am modificat macrourile din postul initial pentru a face modificarile si in notele de subsol, nu doar in textul documentului.

Ramane o problema de rezolvat legata de fontul caracterelor inlocuite:
In cazul in care fontul folosit contine si caractere de inlocuit atunci tipul fontului e pastrat.
Dar in cazul in care nu contine caracterele de inlocuit (exemplu: BookmanOldStyle, Caractere cu cedila) atunci Word schimba fontul caracterelor inlocuite cu unul care contine caracterele astea (in cazul meu e NewTimesRoman). Asta e deranjant pentru ca la conversia inversa noul font se pastreaza, astfel incat la doua conversii succesive (Virgule_in_Sedila, urmat de Cedila_in_virgula) textul rezultat contine 2 fonturi.


Seven, sigur ca stiu ca structura folosita de Samiramida e "de baza", ca sa spun asa. Acceasi structura am folosit-o si eu ani de zile. E rezultata din cea mai sigura metoda de a obtine macro-uri: inregistrare -> inspectarea codului generat la inregistrare -> modificare. Tot metoda asta o folosesc atunci cand nu-mi vine-n cap cum sa scriu la mana o chestie, si pana acum nu a dat gres niciodata.


Cu "formula mai supla dar care sa fie usor de inteles", putem folosi ca punct de plecare macrourile astea doua, odata ce toate problemele sunt rezolvate si sunt testate putin mai mult. Partea cu usor de inteles o vad in principiu ca explicatii la ce fac liniile astea de cod si de ce sunt necesare.


Cu macrourile pentru limbaj_clasic >> limbaj_contemporan: are cineva poate o lista cu regulile de scriere a lui "i din i" in interiorul cuvintelor ptr limbajul_contemporan? Imi amintesc parca de o lista nu prea lunga de prefixe care cer "i din i"...


pus acum 9 ani
   
Seven
Moderator

Din: Ţara Perfectului Simplu
Inregistrat: acum 14 ani
***
     Referitor la scrierea cu î din i în interiorul cuvintelor:

     Da, există o listă cu prefixele folosite de AutoCorect.
     Ar trebui să o am în calculator, dar există în mod sigur pe unul din topicurile pe care s-a lucrat AC.

     Mă ocup eu de treaba asta.
     După ce găsesc lista o postez aici.

Code:

alt, anti, arhi, atoate, atot, auto,
bine, bio, bun,
cap, co,
de, des, dez,
ex
foto
hiper
micro, mini, mult,
ne, nemai, non,
piţ, piţi, prea, pre, pro, pseudo,
răs, re,
semi, sub, subt, super, supra,
tele, tripla,
ultra

     LE:
     atari, bănuiesc că la conversia "limbaj clasic >> contemporan" vei face nişte înlocuiri mai complexe pentru "â >> î", apoi vei face întoarcerea cu prefixele de mai sus folosind înlocuiri de genul:
          antiâ  >> antiî
          arhiâ  >> arhiî
          atoateâ  >> atoateî
          atotâ  >> atotî .........

     Dacă crezi că este de folos, pot face o scanare a cuvintelor din DEX-ul încorporat în AutoCorect care încep cu prefixele din lista de mai sus.
     Pot extrage câte o listă pentru fiecare prefix. E posibil ca să găsim ceva folositor în sensul că: de regulă după prefixul "ne" şi "re" urmează întotdeauna succesiunea de litere "în", astfel că întoarcerea poate fi de forma:
          neân  >> neîn
          reân  >> reîn
care ar fi mai sigure faţă de
          neâ  >> neî
          reâ  >> reî

     E posibil ca şi în cazul altor prefixe să urmeze doar o succesiune sau două de litere...


_______________________________________

     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 |

pus acum 9 ani
   
atari
Membru Junior

Inregistrat: acum 11 ani
Da, ar fi utila o astfel de lista de extras. Desi sper sa nu gasim o lista infinita de exceptii.

Hmmm... nu stiu de ce aveam impresia ca sistematizarea e mai riguroasa in zona asta...

Conversia o vedeam cam asa:
1. Inlocuieste toate <sînt> cu <sunt> la inceputul cuvintelor
2. Inlocuieste toate <î> cu <â> cu exceptia celor de la inceput sau sfarsit de cuvant
3. Refa  <î> ipentru cuvintele compuse care incep cu unul din prefixele dintr-o lista, acolo unde <î> urmeaza imediat dupa prefix.

Conersia inversa:
1.  Inlocuieste toate <sunt> cu <sînt> la inceputul cuvintelor
2.  Inlocuieste toate <â> cu <î>
3.  Inlocuieste toate <romîn> cu <român> la inceputul cuvintelor

Sântimbreanu si Soljenitîn sunt pagube colaterale... Cum e la  Autocorect? "Supravietuiesc" cei doi?

Modificat de atari (acum 9 ani)


pus acum 9 ani
   
Seven
Moderator

Din: Ţara Perfectului Simplu
Inregistrat: acum 14 ani
***
      Cred că ai perfectă dreptate. Conversia este logică în cei 3 paşi expuşi de tine.
      Nu văd ce excepţii sau efecte secundare ar putea avea.

      O mică menţiune despre dicţionarele DEX şi celelalte dicţionare de limba română din folderul de instalare AutoCorect.
      Au existat două surse:
            - pachete de cuvinte primite de la Dexonline.ro şi alte saituri de acest gen [ din această sursă sunt marea majoritate a dicţionarelor].
            - o altă serie de cuvinte au fost culese de Daniel Morlova şi Cosmin Ciupercă în prima perioadă a dezvoltării programului prin metoda scanării de texte considerate corectate. Din acest motiv apar şi cuvinte care nu există în DEX, dar au existat în nişte texte [cărţi] scanate de ei. E şi cazul cuvintelor compuse cu prefixul piţi şi piţ [piţiîmpărat, piţiîmpărătuş + derivate; piţîmpărat, piţîmpărătuş + derivate].
      Pentru utilizatori: metoda scanării în acest caz n-are nicio legătură cu folosirea unui scaner; este vorba de un progrămel care face o listă cu şiruri de caractere delimitate de spaşii, adică cuvinte cu şi fără cratimă.
      Astfel de progrămele realizate de Cosmin folosesc şi eu la căutare în texte şi le-am postat deja pe forum într-unul din topicurile AutoCorect.

      Nu. Sântimbreanu si Soljenitîn nu rezistă la conversia din AutoCorect... dar se pot corecta prin adăugarea într-un dicţionar. Există un dicţionar special pentru corectarea numelor şi le şi adaug ezakt acuşi. Mulţumesc!

*****************

     Am uitat un lucru foarte important.
     Reactualizarea macrourilor de mai sus, astfel încât să intervină şi în notele de subsol este foarte-foarte importantă.
     Din păcate, AutoCorect nu intervine în notele de subsol dacă sunt deja setate ca note de subsol, astfel că sunt cărţi care au textul de bază convertit în contemporan, iar notele de subsol rămân în limbaj clasic.
     În cazul OCR extrase direct din ABBYY problema se rezolvă dacă OCR este salvat ca Plain Text sau Exact Copy şi la rulare notele sunt văzute ca text obişnuit, deci sunt convertite şi corectate. Atunci când se rulează un document în care avem inserate deja notele de subsol sau de sfârşit, AutoCorect nu vede aceste note.
     Din aceste motive, macrourile tale sunt mult mai utile decât ar părea la prima vedere.


_______________________________________

     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 |

pus acum 9 ani
   
samiramida
Membru Senior

Inregistrat: acum 10 ani
eu folosesc aceleași 3 reguli descrise de atari mai sus. nu țin minte să fi avut vreo problemă (în sensul de a se face modificările aiurea).
seven, în loc de neân >> neîn eu folosesc eân >> eîn.


pus acum 9 ani
   
atari
Membru Junior

Inregistrat: acum 11 ani
Bine atunci, revin cand am ceva functional cat de cat si poate fi testat.

Seven, cred ca-i las pe piţiîmpărat si pe piţiîmpărătuş deoparte la treaba asta... [Cred ca s-a strecurat cumva Piţurca pe cand antrena Steaua sau Nationala in dictionarele de la Autocorect, ca altfel nu prea ma duce gandul de unde ar putea proveni  ]

Ar fi totusi util daca poti sa scoti o lista cu toate cuvintele care au î in interior (nu prima sau ultima litera).
Nu e nevoie de nici o prelucrare, doar o lista txt e suficient.

Cu explicarea macro-urilor, o mai amanam deocamdata. Vreau sa fac ceva mai generic, de folosit pentru un numar arbitrar de inlocuiri automate, adica mare parte din cod sa fie refolosit pentru toate cele 4 macro-uri, si sa fie destul de simplu de extins de utilizatori fara prea multe cunostinte de programare.

Modificat de atari (acum 9 ani)


pus acum 9 ani
   
Seven
Moderator

Din: Ţara Perfectului Simplu
Inregistrat: acum 14 ani
***
     Da. M-am convins şi eu că cele 3 reguli sunt suficiente.
     Referitor la prefixe.
     Eu nu ştiu cum setez în Word căutarea la început de cuvânt sau sfârşit de cuvânt şi aştept să văd cum procedează atari.
     Cred totuşi că prefixele trebuie puse întregi.
     În cazul "eân >> eîn" tu ai vrut să rezolvi atât "neîn..." cât şi "reîn...", deci ai folosit-o ca secvenţă mediană la acer probabil faci modificare cu confirmare Dacă rulează automat înlocuirea asta există riscul să dea peste formele de gerunziu de tipul agreând, creând, neagreând, recreând plus variante.

     @samiramida, dacă vrei să verifici dacă anumite secvenţe de litere există în limba română poţi folosi executabilul de mai jos:
     

      După dexarhivare copiezi executabilul în folderul de instalare al AutoCorect, deci în folderul din Program Files, exact unde este executabilul AutoCorect, apoi scoţi o scurtătură pe ecran ca să-l foloseşti.
      Poţi pune orice succesiune de litere şi executabilul caută în DEX şi celelalte dicţionare din folderul de instalare. Poţi seta ca succesiunea să fie la început de cuvânt sau la sfârţit de cuvânt, ori poţi să nu activezi nici început nici sfârşit şi în acest caz caută în orice poziţie s-ar afla succesiunea în cuvânt.
      Eu mă folosesc de acest executabil foarte des şi cred că poate fi util.


_______________________________________

     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 |

pus acum 9 ani
   
samiramida
Membru Senior

Inregistrat: acum 10 ani
sorry, nu folosesc autocorect. am încercat, nu mi-a plăcut, așa că am renunțat la el.

pus acum 9 ani
   
atari
Membru Junior

Inregistrat: acum 11 ani
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.


pus acum 9 ani
   
picimoc
Membru Puf

Inregistrat: acum 15 ani
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?


pus acum 9 ani
   
Seven
Moderator

Din: Ţara Perfectului Simplu
Inregistrat: acum 14 ani
***
     @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 |

pus acum 9 ani
   
samiramida
Membru Senior

Inregistrat: acum 10 ani
ș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

Modificat de samiramida (acum 9 ani)


pus acum 9 ani
   
80Inanna
Moderator

Din: Mitologie
Inregistrat: acum 18 ani

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:
- în 2006, citând îndrumătorul din 1995:

Î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.

pus acum 9 ani
   
Seven
Moderator

Din: Ţara Perfectului Simplu
Inregistrat: acum 14 ani
***
      - 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 |

pus acum 9 ani
   
samiramida
Membru Senior

Inregistrat: acum 10 ani
seven, iar ai pus codurile greșit. ChrW(8220) e pentru ghilimele 6 sus, nu pentru apostrof

Edit Seven: am refăcut codurile

Modificat de samiramida (acum 9 ani)


pus acum 9 ani
   
KEYKO
Membru Junior

Inregistrat: acum 13 ani
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


pus acum 9 ani
   
Seven
Moderator

Din: Ţara Perfectului Simplu
Inregistrat: acum 14 ani

     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 |

pus acum 9 ani
   
atari
Membru Junior

Inregistrat: acum 11 ani
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 ...

Modificat de atari (acum 9 ani)


pus acum 9 ani
   
Seven
Moderator

Din: Ţara Perfectului Simplu
Inregistrat: acum 14 ani
***
      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 |

pus acum 9 ani
   
meridiane
Online
MEMBRU VIP

Inregistrat: acum 12 ani
In epub nu se vad caracterele cu virgula.
Numai patrate.

Modificat de meridiane (acum 9 ani)


pus acum 9 ani
   
uciN
MEMBRU VIP

Inregistrat: acum 15 ani
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.


pus acum 9 ani
   
Seven
Moderator

Din: Ţara Perfectului Simplu
Inregistrat: acum 14 ani
***
     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 |

pus acum 9 ani
   
uciN
MEMBRU VIP

Inregistrat: acum 15 ani
În modul Word Art, atunci cînd schimbăm stilul de prezentare se schimbă automat şi fontul.
Deci nu Font Creator este vinovatul.


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


Modificat de uciN (acum 9 ani)


pus acum 9 ani
   
atari
Membru Junior

Inregistrat: acum 11 ani
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...

Modificat de atari (acum 9 ani)


pus acum 9 ani
   
Seven
Moderator

Din: Ţara Perfectului Simplu
Inregistrat: acum 14 ani
***
     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 |

pus acum 9 ani
   
tuf
Vizitator



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

pus acum 9 ani
   
Seven
Moderator

Din: Ţara Perfectului Simplu
Inregistrat: acum 14 ani
***
     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 |

pus acum 9 ani
   
Seven
Moderator

Din: Ţara Perfectului Simplu
Inregistrat: acum 14 ani
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 |

pus acum 9 ani
   
atari
Membru Junior

Inregistrat: acum 11 ani
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.

Modificat de atari (acum 9 ani)


pus acum 9 ani
   
Seven
Moderator

Din: Ţara Perfectului Simplu
Inregistrat: acum 14 ani
***
     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 |

pus acum 9 ani
   
atari
Membru Junior

Inregistrat: acum 11 ani
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?

Modificat de atari (acum 9 ani)


pus acum 9 ani
   
Seven
Moderator

Din: Ţara Perfectului Simplu
Inregistrat: acum 14 ani
***
      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 |

pus acum 9 ani
   
atari
Membru Junior

Inregistrat: acum 11 ani
Da, e putin mai complicat dar parca mai e ceva simplu in ziua de azi...?
:-)

Pentru cum se folosesc metacaracterele, vezi aici:

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...)


pus acum 9 ani
   
Seven
Moderator

Din: Ţara Perfectului Simplu
Inregistrat: acum 14 ani
***
     Este clar că macroul "Corectare_Punctuaţie" trebuie să fie refăcut în conformitate cu ultimele informaţii.
     
     Am realizat un fişier de tip .BAS care poate fi folosit pentru inserarea macrourilor în Şablonul [Template] "Normal".

     Cu ajutorul fişierului Convert.bas se vor insera în şablonul Normal următoarele macrouri:
          - cele 4+2 macrouri realizate de @atari şi care se găsesc în prima pagină a acestui topic:
                  - Convert_Cedila_In_Virgula
                  - Convert_Virgula_In_Cedila
                  - Convert_In_Ortografie_Clasica
                  - Convert_In_Ortografie_Contemporana
            cele două macrouri anexă ajutătoare [private] - invizibile în lista macrourilor.
                  - InlocuiriMultiple
                  - InlocuiriMultiple_Range

     La acestea am mai adăugat două macrouri:
                  - Bullets_in_Text
                  - Corectare_Punctuatie

     Menţionez că macroul Corectare_Punctuatie nu este funcţional. În macrou există doar linia de nume şi linia Sub End.
     Atunci când voi definitiva acest macrou el va putea fi copiat exact pe locul pe care-l ocupă cele două linii.
     Cei interesaţi îl pot şterge din listă, dar eu cred că în forma actuală este mai uşor de adăugat macroul final.

     Fişierul Combat.bat poate fi downloadat de la adresa:
           
     Deşi arhiva se numeşte "Convert.bas FĂRĂ marcaje, FĂRĂ Punctuaţie.rar", dar fişierul pe care-l conţine se numeşte simplu "Convert.bat".

     Modul de inserare în şablonul template l-am explicat într-un topic separat, care se află în lucru.
     Explicaţiile care ne interesează se află în prima postare.
     Topicul se află la adresa:


_______________________________________

     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 |

pus acum 9 ani
   
Seven
Moderator

Din: Ţara Perfectului Simplu
Inregistrat: acum 14 ani
***
     @atari,
     am o idee... nu ştiu dacă a apărut ca urmare a unei cugetări profunde sau e doar efectul caniculei asupra unităţii mele centrale...
     Ai spus un lucru mare... ne-ai întrebat dacă o implementare în macro a unei părţi mai mari sau mai mici din AutoCorect ar părea interesantă.

     Mie mi se pare mai mult decât interesantă, dar înainte de a ajunge la implementarea dicţionarelor, eu mă gândeam la ceva un pic diferit.
     Eu cred că lucrurile stau cam aşa: sunt opţiuni care rulează mai repede în Word decât în Autocorect şi multe opţiuni care rulează şi se pot dezvolta mult mai bine şi mai uşor în AutoCorect decât în Word.
     ...şi ar mai fi câte ceva ce încă nu este implementat...

     Cred că am mai spus, folosesc AC de pe vremea versiunii 2.3, iar de la finalizarea AC OCR Plus 5.1. îl folosesc zilnic sau maxim la două zile.
     Din acest motiv ştiu cam ce opţiuni rulează furios şi cu viteză şi care dintre ele merg ceva mai piano.
     Ceva mai liniştit merg chiar cele din primul pachet de opţiuni - mă refer la 1. Conversii preliminare.
     ...şi ar mai fi una, şi anume 2.1 Eliminare paragraf-artefact.
     Mai multe detalii îţi pot trimite pe mail.

     Dacă putem pune la punct în macrouri problemele pe care le rezolvă aceste opţiuni, această realizare ar fi atât în folosul celor ce nu folosesc AutoCorect, dar şi în folosul AutoCorect.
     De ce ar fi în folosul AutoCorect? Pentru că am putea prelucra iniţial OCR-ul în Word timp de 2-3 minute şi apoi continuăm rularea în AC unde având rezolvate deja aceste opţiuni,  vom avea avantajul că timpul de rulare în AC ar fi incontestabil mai scurt.

     Mă gândeasc că acest pachet macro ar putea avea numele ca şi cel din AC [Conversii preliminare] sau ceva asemănător astfel încât să fie mai simplu pentru utilizatorii celor două variante de lucru.
      Ei ce zici?... Să fie doar căldura de vină?...       


_______________________________________

     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 |

pus acum 9 ani
   
Seven
Moderator

Din: Ţara Perfectului Simplu
Inregistrat: acum 14 ani
***
     E vară!...
     Vara apar mult mai multe probleme personale de rezolvat, de la examene de tot felul ale userilor ori copiilor lor, trecând prin tot felul de sarcini în plus la serviciu, adeseori mici amenajări ale căminului... până la binemeritata vacanţă...
     Timpul liber pe timpul verii tinde să se micşoreze foarte mult... din cauza căldurii eficienţa muncii scade şi ea... iar adeseori căldura este de-a dreptul insuportabilă, aşa că nu ne mai "arde" de nimic altceva...

      Din toate aceste motive am convenit cu @atari să întrerupem discuţia despre macrouri şi s-o reluăm undeva mai spre sfârşitul verii.


_______________________________________

     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 |

pus acum 9 ani
   
Pagini: 1  

Mergi la