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:
Alesiandra pe Simpatie
Femeie
24 ani
Cluj
cauta Barbat
28 - 58 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 2 3
Seven
Moderator

Din: Ţara Perfectului Simplu
Inregistrat: acum 16 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 11 ani
   
Seven
Moderator

Din: Ţara Perfectului Simplu
Inregistrat: acum 16 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 11 ani
   
ZVONACFIRST
MEMBRU DE BAZA

Din: Bucuresti
Inregistrat: acum 18 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 11 ani)


pus acum 11 ani
   
samiramida
Membru Senior

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

Din: Ţara Perfectului Simplu
Inregistrat: acum 16 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 11 ani
   
Seven
Moderator

Din: Ţara Perfectului Simplu
Inregistrat: acum 16 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 11 ani
   
inforex
MEMBRU VIP

Inregistrat: acum 11 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 11 ani
   
meridiane
MEMBRU VIP

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


pus acum 11 ani
   
atari
Membru Junior

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


pus acum 11 ani
   
Seven
Moderator

Din: Ţara Perfectului Simplu
Inregistrat: acum 16 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 11 ani
   
uciN
MEMBRU VIP

Inregistrat: acum 17 ani
Îți mulțumesc și eu atari. Subrutinele funcționează perfect.
http://i.imgur.com/v1fFYxQ.png


pus acum 11 ani
   
samiramida
Membru Senior

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


pus acum 11 ani
   
Seven
Moderator

Din: Ţara Perfectului Simplu
Inregistrat: acum 16 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 11 ani
   
80Inanna
Moderator

Din: Mitologie
Inregistrat: acum 20 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 11 ani
   
samiramida
Membru Senior

Inregistrat: acum 11 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 11 ani
   
atari
Membru Junior

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


pus acum 11 ani
   
Seven
Moderator

Din: Ţara Perfectului Simplu
Inregistrat: acum 16 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 11 ani
   
atari
Membru Junior

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

Din: Ţara Perfectului Simplu
Inregistrat: acum 16 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 11 ani
   
atari
Membru Junior

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


pus acum 11 ani
   
Seven
Moderator

Din: Ţara Perfectului Simplu
Inregistrat: acum 16 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 11 ani
   
samiramida
Membru Senior

Inregistrat: acum 11 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 11 ani
   
atari
Membru Junior

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


pus acum 11 ani
   
Seven
Moderator

Din: Ţara Perfectului Simplu
Inregistrat: acum 16 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:
      http://www.mediafire.com/?eh3zovjmdcrxwc4

      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 11 ani
   
samiramida
Membru Senior

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

pus acum 11 ani
   
Pagini:  1 2 3  
Mergi la