Absätze entfernen (Word 2000)

Hallo auch…

ich hab da ein Problem mit einem Word-Dokument.
Und zwar: es hat auf knapp 1600 Seiten etwa 56.000 Leerzeilen und Zeilenumbrüche (Also, die, die man mit kriegt und die von Word als Absatz gezählt werden) verteilt.
Davon sind etwa 35.000 unnötig. Und ich hab keinen Bock, die einzeln und von Hand zu entfernen. Da muss es doch eine bessere Möglichkeit geben.

Auf gut Deutsch: Ich will aus sowas hier:

_-1
dixit Dominus ad Mosen nunc videbis quae facturus sum Pharaoni per manum enim fortem dimittet eos et in manu robusta eiciet illos de terra sua

-2
locutusque est Dominus ad Mosen dicens ego Dominus

-3
qui apparui Abraham Isaac et Iacob in Deo omnipotente et nomen meum Adonai non indicavi eis

-4
pepigique cum eis foedus ut darem illis terram Chanaan terram peregrinationis eorum in qua fuerunt advenae_

sowas machen:

-1 dixit Dominus ad Mosen nunc videbis quae facturus sum Pharaoni per manum enim fortem dimittet eos et in manu robusta eiciet illos de terra sua
-2 locutusque est Dominus ad Mosen dicens ego Dominus
-3 qui apparui Abraham Isaac et Iacob in Deo omnipotente et nomen meum Adonai non indicavi eis
-4 pepigique cum eis foedus ut darem illis terram Chanaan terram peregrinationis eorum in qua fuerunt advenae

Sprich: 2 Aufgaben müssen erledigt werden:
erstens: Leerzeilen müssen raus
zweitens: wo immer die Kombination auftaucht soll das auch raus.

Ideal wäre, wenn ich das in 2 Schritten machen könnte, weil im zweiten Teil des Textes die Leerzeilen schon entfernt wurden.

hallo

erster schritt:
suchen nach „^p^p“
ersetzen durch „^p“

(das ganze ohne die hochkomma, das ^ ist das zeichen direkt unter der esc-taste und KEINE tastenkombination!)

^p ist das stellvertreterzeichen für ein absatzzeichen, du ersetzt also zwei direkt aufeinanderfolgende absatzzeichen durch ein einzelnes - also alle leerzeichen weg.

zweiter schritt:

diesmal etwas schwieriger: den suchen-und-ersetzen-dialog öffnen, auf den button „erweitern“ klicken und die option „platzhalterzeichen verwenden“ aktivieren.
suchen nach „-([0-9]@)^13“
ersetzen durch "-\1 "

(wobei das abschließende leerzeichen im ersetzen durch geschmackssache ist)

durch die platzhalter-suche hat man ziemlich viele möglichkeiten:
mit der klammerung () definiert man eine gruppe (dazu später mehr)
mit den eckigen klammern [] definiert man eine zeichenklasse. [0-9] bedeutet also, ein zeichen, dass zwischen 0 und 9 liegt (also eine ziffer)
das @ gibt an, dass das vorige zeichen mind. einmal aber beliebig oft vorkommen darf. [0-9]@ findet also nicht nur 1 sondern auch 24.
^13 ist der code für absatzmarken (frage nicht, warum microsoft hier das ^p nicht erlaubt - ich verstehe es auch nicht)
und in ersetzen-durch kommt das geheimnis der gruppe: \1 wird durch den inhalt der ersten gruppe ersetzt.

damit solltest du nun klar kommen

lg
erwin

Danke auch…

So schnell macht man also aus einem 1600-Seiten-Dokument einen 750-Seiten-Text…

KB

^13 ist der code für absatzmarken (frage nicht, warum microsoft hier das ^p nicht erlaubt - ich verstehe es auch nicht)

Ganz einfach: Die Symbole, die aus dem Caret-Zeichen (^) und einem folgenden Buchstaben bestehen, gelten nur OHNE Mustervergleich, sind also quasi nur eine kleine Erweiterung der normalen Suche um ein paar sonst nicht darstellbare Zeichen.

Beim Mustervergleich hingegen hat das Caret-Zeichen eine andere Bedeutung. Dabei wird dahinter eine Zahl erwartet, die für den Code des gesuchten ASCII-Zeichens in Dezimalschreibweise steht.

Die Absatzmarke (dargestellt durch das ¶) ist dabei eben die besagte ^13 (abgeleitet vom Windows-Zeilenumbruch, der aus der Kombi ^13^10 besteht), wohingegen der manuelle (einfache) Zeilenumbruch ohne Absatz-Wirkung (dargestellt durch den Return-Pfeil) durch die ^11 repräsentiert wird oder eben durch das ^l (kleines L) im Modus ohne Mustervergleich.

In Word 2000 heißt es übrigens Mustervergleich und nicht Platzhalterdingsbums.

Kristian

???
hi Kristian

nett, dass du mir erklärst, was ich ohnehin weiss…

meine frage bezug sich nur darauf, warum microsoft nicht in der lage ist, den platzhaltercode so umzuschreiben, dass neben einem ^13 auch ein ^p erlaubt wird. es würde das ganze um einiges leicher anwenden lassen und würde dem konzept, dass ^ + nummerische zeichen was anderes bedeutet auch nicht wiedersprechen. die „richtigen“ regular expressions (z.b. in der „richtigen“ textverarbeitung perl) könne das ja auch.

lg
erwin

nett, dass du mir erklärst, was ich ohnehin weiss…

Bin halt so :wink: Und aus Deiner Aussage ging nun wirklich nicht hervor, dass Du das weißt :wink:

meine frage bezug sich nur darauf, warum microsoft nicht in
der lage ist, den platzhaltercode so umzuschreiben, dass neben
einem ^13 auch ein ^p erlaubt wird. es würde das ganze um
einiges leicher anwenden lassen und würde dem konzept, dass ^

  • nummerische zeichen was anderes bedeutet auch nicht
    wiedersprechen

Darüber gibt es sicher unterschiedliche Meinungen - je nachdem, wie rein man die Lehre anwenden will. Aber möglich wär´s, das stimmt.

die „richtigen“ regular expressions (z.b. in der „richtigen“ textverarbeitung perl) könne das ja auch.

Dass Du Perl eine Textverarbeitung genannt hast, war hoffentlich ein Tippfehler, oder? Der Vergleich mit den regulären Ausdrücken hinkt übrigens. Erstens basiert der Mustervergleich in Word nunmal nicht auf regulären Ausdrücken, auch, wenn´s Ähnlichkeiten gibt, und zweitens muss man die Modi MIT und OHNE Mustervergleich getrennt betrachten. Die Möglichkeit, mit Word-internen Platzhaltern zu arbeiten ist ein zusätzliches Feature der einfachen Suche, das mit dem Mustervergleich nichts zu tun hat.

Wie gesagt, es wäre sicher möglich, das zu harmonisieren, aber so ist es nunmal nicht :wink:

Kristian

hallo Kristian

also, ich unterscheide normalerweise schon zwischen einer textVERARBEITUNG und einem textEDITOR.

word ist ein recht guter textEDITOR, der nebenbei etwas textVERARBEITUNG beherrst.

klassische textVERARBEITUNGEN sind in etwa tex, latex, perl etc. diese sind von vornherein darauf getrimmt, texte von einem format in ein anderes umzuwandeln bzw. vollautomatisiert zu vearbeiten. also in etwa das, was word mit der serienbrieffunktion anbietet.

aber es stimmt schon: dank der wirklich guten feldfunktionen und der relativ gut integrierten makrosprache kann man word zu einer vollwertigen textverarbeitung ausbauen. und im gegensatz zu den echten textverarbeitungen ist das ganze etwas komfortabler zu benutzen (zumindest für anfänger). und natürlich das killerargument: word ist fast überall drauf und jeder kennt sich zumindest ein bisschen damit aus.

aber ich denke, über dieses thema lässt sich vortrefflich streiten, ohne jemals ein ergebnis zu erziehlen. eingefleischte latex-benutzer werden mir nur insofern widersprechen, als dass sie word für völlig unbrauchbar betrachten. echte word-experten sehen das natürlich etwas anders. und für „normalbenutzer“ ist die diskussion sowieso völlig irrelevant.

lg
erwin

Stimmt, darüber ließe sich vortrefflich diskutieren, aber das ist hier schon so oft passiert, dass man es nicht wiederholen muss.

Trotzdem nochmal zu Perl: Du scheinst das zu verwechseln. Perl ist eine Programmiersprache ähnlich C, nur dass sie in der Regel als Interpretersprache daherkommt. Das hat mit Textverarbeitung so wenig zu tun wie ein Kochrezept mit der Spülmaschine. Mir fällt jetzt aber auch kein TV-System ein, das einen ähnlichen Namen hat.

Und nochmal kurz zu Tex: Anhänger dieser Variante werden möglicherweise darauf bestehen, dass es sich um ein Textsatz-System handelt und nicht um ein Textverabeitungssystem, wobei für mich letzteres einen Oberbegriff darstellt, der den Satz mit enthalten kann. Tex und Word unterscheiden sich meiner Meinung nach - mal abgesehen von der völlig anderen Art der Dateneingabe und Formatierung - vor allem darin, dass Tex eben mehr professionelle Satz-Werkzeuge mitbringt als Word. Letzteres hingegen ist auf gute Benutzbarkeit und Ergebnisse im „normalen“ Umfeld getrimmt. Für mich sind es zwei parallele Produkte, die sich damit keine echte Konkurrenz machen. Man würde ja auch nicht Quark Express oder InDesign mit Word vergleichen.

Kristian

auf die gefahr, einen endlos-thread loszutreten…

perl ist von anfang an darauf hingetrimmt worden, damit grosse textdateien bequem und vor allem automatisiert verarbeiten zu können (v.a. logfileanalyse etc.). inzwischen ist perl allerdings durch drastische erweiterungen im sprachumfang und vor allem durch die unüberschaubar grosse anzahl an modulen zu einer allround-programmiersprace geworden, die für fast alles eingesetzt werden kann. daher vergessen die meisten leute inzwischen, wo die wurzeln von perl liegen.

perl und c sind sich übrigens so ähnlich wie javascript und java. es stimmt schon - einige sprachkonstrukte ähneln sich stark - das war es dann aber auch schon. c ist eine klassische compilersprache, in der ich quellcode mit einem compiler in objectcode umwandeln muss. diesen muss ich dann zu einer ausführbaren datei linken. perl ist ein just-in-time-compiler, der quellcode zur laufzeit in objectcode umwandelt und in der eigenen umgebung ausführt, sodass kein linken notwendig ist. die behandlung von variablen ist völlig unterschiedlich usw.

ok, das mit tex ist vielleicht etwas weit hergeholt, da das tatsächlich praktisch ein reines textsatzsystem ist. latex hingegen ist eine textverarbeitung im klassischen sinn.

lg
erwin

Naja, also die Wurzeln von Perl hatte ich dann doch mehr als Tool zum Parsen undso verstanden - wie Du auch schreibst - und weniger als Textverarbeitung im Sinne von Word. Deshalb meine Irritation :wink:

Die besagten Unterschiede sind ja richtig, aber vom Erscheinungsbild und von der Basis-Syntax her sind die beiden schon recht ähnlich. Wie gesagt, ich habe es mit C verglichen, nicht mit C++ oder gar VC++ oderso. Und ob es nun als Compiler oder Interpreter (Du nennst es JIT-Compiler) daherkommt, macht in erster Näherung keinen Unterschied, nämlich wenn es um das Programmieren selbst geht. Selbst VB-Exen sind ja keine compilierten Code-Objekte in dem Sinne. Von außen betrachtet sind sie mit C-Exen identisch, nur dass letztere eben nicht die VB-Runtime als Interpreter benötigen :wink:

Aber ich schlage vor, im Sinne des Brett-Titels die Sache hier zu beenden. War trotzdem interessant :wink:

Schönes Wochenende,
Kristian