Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Code-Zeile für Ersetzen gesucht:

  1. #1
    Registrierter Benutzer
    Registriert seit
    28.06.2005
    Ort
    Karlsruhe
    Beiträge
    1.407

    Code-Zeile für Ersetzen gesucht:

    Hallo,

    für umfangreiche Änderungen in einem längeren Text habe ich das schöne "changes"-Paket verwendet. Textänderungen werden darin folgendermaßen markiert:
    Code:
    \replaced[Autor]{aktueller Text}{alter Text}
    Nun habe ich einige hundert dieser \replaced-Befehle im Text und würde gerne eine konsolidierte Fassung herstellen. Mit welchem Befehl auf der Konsole kann ich
    den obigen Code durch den jeweiligen "aktuellen Text" ersetzen? Es soll alles andere wegfallen ("\replaced", [Autor],{alter Text}, sowie die geschweiften Klammern um den neuen Text, wobei letzteres nicht unbedingt notwendig ist).

    Das ganze gibt es dann noch in zwei weiteren Varianten:

    Mit dem Befehl
    Code:
    \added[Autor]{neuer Text}
    wir hinzugefügter Text markiert, hier würde ich gerne alles bis auf "neuer Text" loswerden.

    Mit dem Befehl
    Code:
    \deleted[Autor]{gelöschter Text}
    wird Text entfernt, hier soll schlichtweg alles wegfallen.

    Ich arbeite unter Linux, aber wenn jemand einen Vorschlag für Windows hat, bin ich auch dankbar,

    Gruß,
    Alexander

  2. #2
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.862
    Moin Alexander,
    warum nicht einfach
    Code:
    \renewcommand\replaced[3][]{#2}
    \renewcommand\added[2][]{#2}
    \renewcommand\deleted[2][]{}
    ?
    MfG
    Rainer
    There's nothing a good whack with a hammer won't fix!

  3. #3
    Registrierter Benutzer
    Registriert seit
    28.06.2005
    Ort
    Karlsruhe
    Beiträge
    1.407
    Weil dann die Änderungen in der Datei bleiben. Nun will ich aber -- es geht um einen Vertrag -- in der nächsten Verhandlungsrunde neue Änderungen markieren. Die alten dürfen dabei nicht mehr sichtbar sein, denn die sind "gegessen". Also: raus damit. Nur kenne ich mich mit den "regular expressions" nicht aus.

    Danke für Deine Hilfe,
    Gruß,
    Alexander

  4. #4
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von cookie170 Beitrag anzeigen
    für umfangreiche Änderungen in einem längeren Text habe ich das schöne "changes"-Paket verwendet. Textänderungen werden darin folgendermaßen markiert:
    Code:
    \replaced[Autor]{aktueller Text}{alter Text}
    Nun habe ich einige hundert dieser \replaced-Befehle im Text und würde gerne eine konsolidierte Fassung herstellen. Mit welchem Befehl auf der Konsole kann ich
    den obigen Code durch den jeweiligen "aktuellen Text" ersetzen? Es soll alles andere wegfallen ("\replaced", [Autor],{alter Text}, sowie die geschweiften Klammern um den neuen Text, wobei letzteres nicht unbedingt notwendig ist).

    Das ganze gibt es dann noch in zwei weiteren Varianten:

    Mit dem Befehl
    Code:
    \added[Autor]{neuer Text}
    wir hinzugefügter Text markiert, hier würde ich gerne alles bis auf "neuer Text" loswerden.

    Mit dem Befehl
    Code:
    \deleted[Autor]{gelöschter Text}
    wird Text entfernt, hier soll schlichtweg alles wegfallen.

    Ich arbeite unter Linux, aber wenn jemand einen Vorschlag für Windows hat, bin ich auch dankbar,
    ich würde ein kleines Perl-Programm schreiben, welches einfach zeilenweise
    alles einliest und jeweils auf die drei Befehle testet und dann ersetzt. Wenn ich
    mich recht erinnere, schreibt changes die imemr in eine Zeile, sodass dazwischen
    kein Zeilenumbruch ist.

    Herbert

  5. #5
    Registrierter Benutzer
    Registriert seit
    28.06.2005
    Ort
    Karlsruhe
    Beiträge
    1.407

    Es geht:

    ... wenn man vorher sauber gearbeitet hat. Im ersten Schritt ersetzt man "\replace[Autor]" durch "[Autor]". Im zweiten Arbeitet man mit regulären Ausdrücken und Platzhaltern. Der verbleibende Ausdruck "[Autor]{aktueller Text}{alter Text}"
    lässt sich in einem regulären Ausdruck so abbilden:

    Code:
    \[Autor\]\{(^\})*\}\{(^\})*\}
    Aber ich will ja auch die geschweiften Klammern um den aktuellen Text beseitigen. Dazu baue ich Gruppen und ersetze den gefundenen Ausdruck durch die dritte Gruppe:

    Code:
    (\[Autor\])(\{)((^\})*)(\})(\{(^\})*\})
    Es hat mich drei Stunden gekostet, aber man lernt ja nie aus.

    Gruß,
    Alexander

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •