Ich habe ein Word-Dokument in persischer Sprache und es enthält viele Sätze wie diese:
Mein Problem ist, wo „و نشیب“ mit „هایی“ verbunden ist.
Zunächst scheint es, als stünde zwischen ihnen ein Nichtverbinderzeichen mit der Breite Null, aber als ich versuchte, es zu kopieren, wurde tatsächlich nichts kopiert.
Ich habe auch die gesamte Phrase in den Notizblock kopiert und Folgendes erhalten: „و نشیبهایی“. Wie Sie sehen, steht zwischen den beiden vorhergehenden Wörtern nichts.
Ich habe die Funktion „¶ anzeigen/ausblenden“ in der Gruppe „Absatz“ der Registerkarte „Start“ aktiviert, um zu sehen, ob es versteckte Zeichen gibt. Das ist das Ergebnis:
Nun frage ich mich, ob es eine Möglichkeit gibt, mit diesem Zeichen zu arbeiten, es beispielsweise durch ZWNJ zu ersetzen.
Eine Datei mit diesem Problem(lesen Sie auch unten)
Antwort1
Dies ist ein vollständiger Ersatz für meine ursprüngliche Antwort (der Originaltext steht unten).
In Ihrem Dokument werden Wörter grün („Wörter, die nach Wunsch kopiert werden“) und rot („Wörter, die nicht nach Wunsch kopiert werden“) markiert.
Beide Typen verwenden ein ZWNJ, um es beispielsweise einem Heh-Zeichen voranzustellen, das nur nach links und nicht nach rechts eingefügt werden soll.
Der Unterschied besteht darin, dass ZWNJ bei den grünen Wörtern RTL eingegeben wurde, bei den roten Wörtern jedoch LTR.
Ich weiß nicht, wie man normalerweise einen ZWNJ eingibt, aber wenn ich hier im Symboldialogfeld im Bereich „Sonderzeichen“ den „Optionalen Zeilenumbruch ohne Breite“ auswähle, wird der ZWNJ LTR (in diesem Fall schlecht) eingegeben, während, wenn ich das Zeichen 0x200C aus der Zeichentabelle im Symboldialogfeld auswähle, es RTL (in diesem Fall gut) eingegeben wird. Wenn ich in Word 2010 zu Word->Dateioptionen->Menüband anpassen->Tastaturkürzel->Anpassen... gehe und dem „Optionalen Zeilenumbruch ohne Breite“ eine Tastenkombination zuweise, scheint das Drücken dieser Tastenkombination beim Eingeben von RTL-Text den ZWNJ als RTL (gut) einzufügen. Sie können das wie folgt zuweisen:
- Scrollen Sie in der Liste der Kategorien nach unten zu „Gemeinsame Symbole“ und wählen Sie es aus
- Wählen Sie in der angezeigten Liste der allgemeinen Symbole „Optionaler Umbruch ohne Breite“ aus.
- Klicken Sie in das Feld „Neue Kurztaste drücken“
- Drücken Sie die gewünschte Tastenkombination (ich habe versuchsweise Strg-9 verwendet)
- Klicken Sie auf Zuweisen
- Klicken Sie auf Schließen
Ich weiß nicht, ob Sie damit alles erreichen, was Sie brauchen, aber ich denke, es erklärt zumindest, was vor sich geht.
(Ich vermutete, dass es so etwas war, musste es aber als .docx speichern und mir das XML ansehen. Die „grünen Wörter“ wurden in einem einzigen Wort-„Lauf“ mit „Laufeigenschaft“ RTL codiert (ein Lauf ist eine Zeichenfolge mit denselben Merkmalen, wenn Sie also die Textfarbe ändern, entsteht ein neuer Lauf). Die roten Wörter wurden als drei Läufe codiert: zwei RTL-Läufe, die den Text enthalten, und ein Nicht-RTL-Lauf, der das Zeichen ZWNJ enthält.)
Um die LTR-ZWNJs in RTL-ZWNJs zu ändern, sollten Sie das folgende VBA verwenden können. (Für diejenigen, die VBA kennen: Dies ist eine der Gelegenheiten, bei denen Sie mit der Auswahl statt mit dem Bereich arbeiten müssen, da meines Wissens die einzige Möglichkeit, einen Run-Text auf RTL zu setzen, die RTLRun-Methode des Auswahlobjekts ist):
Sub replace_LTR_NBZWs_with_RTL_ones()
ActiveDocument.Select
With Selection.Find
.ClearFormatting
.Text = ChrW(8204)
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchKashida = False
.MatchDiacritics = False
.MatchAlefHamza = False
.MatchControl = False
.MatchByte = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
While .Execute
Selection.RtlRun
Wend
End With
End Sub
Es folgt der Originaltext meiner Antwort...
Es ist wahrscheinlichIstein ZWNJ . Wenn Sie es auswählen und dann auf Einfügen->Symbol->Weitere Symbole klicken, sollte das ZWNJ (0x200C) ausgewählt sein. Es ist dasselbe wie das Zeichen, das Microsoft im Bereich „Sonderzeichen“ im Symboldialogfeld „No-Width Optional Break“ nennt.
Soweit ich weiß, ignoriert NotePad ZWNJ. Ich vermute, Sie müssen das ZWNJ (falls es das ist) durch ein Leerzeichen ersetzen (wenn Sie eines ausgewählt haben, sollten Sie dazu die Leertaste drücken können), damit NotePad die richtige Zeichenform anzeigt.
Beim Kopieren von einer Stelle in einem Word-Dokument an eine andere sollte die ZWNJ erhalten bleiben, aber ist es das, was Sie sehen?
Antwort2
Heute habe ich einen anderen Weg gefunden, das Problem zu lösen. Der Trick besteht darin, das NWOB (mit einem Zeichen davor und danach) durch sich selbst zu ersetzen, dann erledigt Word den Trick ...
- Finde was:
(?)^o(?)
- Ersetzen mit:
\1^o\2
- Vergessen Sie nicht, das Häkchen neben
Use wildcards
demMore >>
Fenster zu setzen.
Dann werden LTR-ZWNJs in diesen rechteckigen Modus und die RTL-ZWNJs in den von mir erwarteten Modus geändert.