Schmales geschütztes Leerzeichen
Moderator: Moderatoren
Schmales geschütztes Leerzeichen
Ich möchte gerne mit Writer schmale, geschützte Leerzeichen eingeben können (gem. Duden-Empfehlung).
In dem Artikel http://www.ooowiki.de/LeerZeichen habe ich das gewünschte Zeichen gefunden [U+202F (dezimal 8239)], aber wenn ich es mit der Tastenkombination [Alt]+[8]+[2]+[3]+[9] einzugeben versuche, erscheint immer ein '/' (ich arbeite übrigens vorwiegend mit der Schrift 'DejaVu Sans'.
Falls Ihr mir weiterhelfen könnt: Wie könnte ich ein solches Zeichen mit einer Tastenkombination verknüpfen, wie z. B. [Umschalt]+[Leerzeichen]?
Mit einer Lösung des Problems unter Verwendung eines entsprechenden Makros arbeite ich zwar, aber nur ungerne. Wenn ich mich nämlich beim Zeichen nach dem Leerzeichen vertippt habe und es mit [Rück] lösche, habe ich beim Weiterschreiben anschließend nur noch die halbe Schriftbreite, weil diese Umstellung ein Teils des Makros ist.
Viele Grüße
Uodalrich
In dem Artikel http://www.ooowiki.de/LeerZeichen habe ich das gewünschte Zeichen gefunden [U+202F (dezimal 8239)], aber wenn ich es mit der Tastenkombination [Alt]+[8]+[2]+[3]+[9] einzugeben versuche, erscheint immer ein '/' (ich arbeite übrigens vorwiegend mit der Schrift 'DejaVu Sans'.
Falls Ihr mir weiterhelfen könnt: Wie könnte ich ein solches Zeichen mit einer Tastenkombination verknüpfen, wie z. B. [Umschalt]+[Leerzeichen]?
Mit einer Lösung des Problems unter Verwendung eines entsprechenden Makros arbeite ich zwar, aber nur ungerne. Wenn ich mich nämlich beim Zeichen nach dem Leerzeichen vertippt habe und es mit [Rück] lösche, habe ich beim Weiterschreiben anschließend nur noch die halbe Schriftbreite, weil diese Umstellung ein Teils des Makros ist.
Viele Grüße
Uodalrich
-
- ***
- Beiträge: 75
- Registriert: Di, 30.10.2007 10:42
Re: Schmales geschütztes Leerzeichen
Hallo Uodalrich,
ich habe zwar keine Antwort auf Deine konkrete Frage, aber vielleicht bringt Dich mein Ansatz ein kleines Stück weiter. Dieser Ansatz stammt noch aus MS Word, da ich mit OOo gerade erst anfange, aber ich bin sicher, daß sich das in OOo ebenfalls umsetzen läßt.
Ich schreibe häufiger mal spanische Texte und darin kommt ja nun mal ein Buchstabe vor, den wir auf der deutschen Tastatur nicht haben und nur über Alt+[?] oder über Einfügen Sonderzeichen reinkriegen (das n mit der Tilde drüber). Ich schreibe stattdessen einfach ein Zeichen, das es in der spanischen Sprache nicht gibt (z.B. §). Wenn ich den Text dann fertig habe, starte ich ein dafür aufgezeichnetes Makro, das einfach alle vorkommenden § durch ein n mit Tilde ersetzt. Dieses Makro habe mir der Einfachheit halber mit 'ner Schaltfläche in die Symbolleiste gepackt und starte es einfach mit einem Mausklick. Damit spare ich mir die Einrichtung einer Tastenkombination, die ja evtl. auch mit bereits vorhandenen Belegungen seitens Windows kollidieren könnte.
Probier's mal, ich finde diesen Weg eingentlich garnicht so schlecht...........
Gruß,
Elbfischer
ich habe zwar keine Antwort auf Deine konkrete Frage, aber vielleicht bringt Dich mein Ansatz ein kleines Stück weiter. Dieser Ansatz stammt noch aus MS Word, da ich mit OOo gerade erst anfange, aber ich bin sicher, daß sich das in OOo ebenfalls umsetzen läßt.
Ich schreibe häufiger mal spanische Texte und darin kommt ja nun mal ein Buchstabe vor, den wir auf der deutschen Tastatur nicht haben und nur über Alt+[?] oder über Einfügen Sonderzeichen reinkriegen (das n mit der Tilde drüber). Ich schreibe stattdessen einfach ein Zeichen, das es in der spanischen Sprache nicht gibt (z.B. §). Wenn ich den Text dann fertig habe, starte ich ein dafür aufgezeichnetes Makro, das einfach alle vorkommenden § durch ein n mit Tilde ersetzt. Dieses Makro habe mir der Einfachheit halber mit 'ner Schaltfläche in die Symbolleiste gepackt und starte es einfach mit einem Mausklick. Damit spare ich mir die Einrichtung einer Tastenkombination, die ja evtl. auch mit bereits vorhandenen Belegungen seitens Windows kollidieren könnte.
Probier's mal, ich finde diesen Weg eingentlich garnicht so schlecht...........
Gruß,
Elbfischer
Re: Schmales geschütztes Leerzeichen
Hallo Wolfgang,
vielen Dank für Deine Antwort. Ich habe Dein Makro ausprobiert: Es wird zwar ein schmales Leerzeichen gesetzt, aber danach geht's mit einer winzig kleinen Schrift weiter ...
Ich habe ein ähnliches Makro im Einsatz, das dieses Verhalten nicht zeigt:
sub HalberFestabstand1
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:InsertNonBreakingSpace", "", 0, Array())
rem ----------------------------------------------------------------------
dim args3(1) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Count"
args3(0).Value = 1
args3(1).Name = "Select"
args3(1).Value = true
dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args3())
rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "CharacterWidthScalingFactor"
args4(0).Value = 50
dispatcher.executeDispatch(document, ".uno:CharacterWidthScalingFactor", "", 0, args4())
rem ----------------------------------------------------------------------
dim args5(1) as new com.sun.star.beans.PropertyValue
args5(0).Name = "Count"
args5(0).Value = 1
args5(1).Name = "Select"
args5(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args5())
rem ----------------------------------------------------------------------
dim args6(0) as new com.sun.star.beans.PropertyValue
args6(0).Name = "CharacterWidthScalingFactor"
args6(0).Value = 100
dispatcher.executeDispatch(document, ".uno:CharacterWidthScalingFactor", "", 0, args6())
end sub
Dieses Makro weist folgende Macke auf: Wenn ich das schmale Leerzeichen gesetzt habe und direkt danach mit [Rück] wieder lösche, verschwindet zwar das Leerzeichen, aber die Schrift besitzt fortan nur noch die halbe Breite ...
Weil ich diese Krücke leid bin, habe ich mich an Euch gewandt. Also nochmal: Weshalb kann ich in Writer unter Windows XP nicht auf die Sonderzeichen zugreifen, die in dem Artikel http://www.ooowiki.de/LeerZeichen beschrieben sind? Und falls dies doch möglich sein sollte: Wie kann ich mittels einer Tastenkombination auf sie zugreifen?
Viele Grüße
Uodalrich
vielen Dank für Deine Antwort. Ich habe Dein Makro ausprobiert: Es wird zwar ein schmales Leerzeichen gesetzt, aber danach geht's mit einer winzig kleinen Schrift weiter ...
Ich habe ein ähnliches Makro im Einsatz, das dieses Verhalten nicht zeigt:
sub HalberFestabstand1
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:InsertNonBreakingSpace", "", 0, Array())
rem ----------------------------------------------------------------------
dim args3(1) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Count"
args3(0).Value = 1
args3(1).Name = "Select"
args3(1).Value = true
dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args3())
rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "CharacterWidthScalingFactor"
args4(0).Value = 50
dispatcher.executeDispatch(document, ".uno:CharacterWidthScalingFactor", "", 0, args4())
rem ----------------------------------------------------------------------
dim args5(1) as new com.sun.star.beans.PropertyValue
args5(0).Name = "Count"
args5(0).Value = 1
args5(1).Name = "Select"
args5(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args5())
rem ----------------------------------------------------------------------
dim args6(0) as new com.sun.star.beans.PropertyValue
args6(0).Name = "CharacterWidthScalingFactor"
args6(0).Value = 100
dispatcher.executeDispatch(document, ".uno:CharacterWidthScalingFactor", "", 0, args6())
end sub
Dieses Makro weist folgende Macke auf: Wenn ich das schmale Leerzeichen gesetzt habe und direkt danach mit [Rück] wieder lösche, verschwindet zwar das Leerzeichen, aber die Schrift besitzt fortan nur noch die halbe Breite ...
Weil ich diese Krücke leid bin, habe ich mich an Euch gewandt. Also nochmal: Weshalb kann ich in Writer unter Windows XP nicht auf die Sonderzeichen zugreifen, die in dem Artikel http://www.ooowiki.de/LeerZeichen beschrieben sind? Und falls dies doch möglich sein sollte: Wie kann ich mittels einer Tastenkombination auf sie zugreifen?
Viele Grüße
Uodalrich
-
- **
- Beiträge: 32
- Registriert: Di, 09.10.2007 13:05
Re: Schmales geschütztes Leerzeichen
Hallo Udoalrich,
Besser wäre es, wenn Writer um Features für den Schriftsatz erweitert würde, da fällt mir neben solchen Zeichen auch die Unterstützung der OpenType-Features ein. Nur davon, daß wir uns das wünschen, wird es nicht passieren. Ein erster Schritt wäre, umfassend zu definieren, was eigentlich gewünscht wird. In einem zweiten Schritt müßten Ansätze erarbeitet werden, wie sich die Wünsche im OpenDocument Format und in OOo sinnvoll umsetzen ließen. Danach muß das ganze nur noch beim OpenDocument Standard eingereicht und durchgesetzt, sowie die OOo Entwickler davon überzeugt werden, daß man das ganze auch umsetzt. Für letzteres wäre eine gute Vorarbeit und eine größere Anzahl an Benutzern, die sich diese Features wünschen, sicherlich hilfreich.
Wenn sich mehrere Leute finden, die das bewerkstelligen wollen, wäre ich bereit, dabei mitzuwirken.
MfG Peter.
Es ist eine Kombination von zwei Gründen. Zum einen unterstützt Writer solche Zeichen nicht nativ, zum anderen unterstützen viele Fonts diese Zeichen nicht. Ein Ausweg wäre, sich einen Font zu suchen, der dieses Zeichen unterstützt (was sicher nicht leicht ist). Allerdings bleibt dann immer noch ein Problem, Writer bricht auch an solchen Zeichen um, was nach den Regeln der Typografie aber nicht erlaubt ist. Im übrigen unabhängig davon ob das schmale Leerzeichen geschützt ist oder nicht, ein geschütztes wäre in Unicode also gar nicht notwendig gewesen.Uodalrich hat geschrieben:Weil ich diese Krücke leid bin, habe ich mich an Euch gewandt. Also nochmal: Weshalb kann ich in Writer unter Windows XP nicht auf die Sonderzeichen zugreifen, die in dem Artikel http://www.ooowiki.de/LeerZeichen beschrieben sind? Und falls dies doch möglich sein sollte: Wie kann ich mittels einer Tastenkombination auf sie zugreifen?
Besser wäre es, wenn Writer um Features für den Schriftsatz erweitert würde, da fällt mir neben solchen Zeichen auch die Unterstützung der OpenType-Features ein. Nur davon, daß wir uns das wünschen, wird es nicht passieren. Ein erster Schritt wäre, umfassend zu definieren, was eigentlich gewünscht wird. In einem zweiten Schritt müßten Ansätze erarbeitet werden, wie sich die Wünsche im OpenDocument Format und in OOo sinnvoll umsetzen ließen. Danach muß das ganze nur noch beim OpenDocument Standard eingereicht und durchgesetzt, sowie die OOo Entwickler davon überzeugt werden, daß man das ganze auch umsetzt. Für letzteres wäre eine gute Vorarbeit und eine größere Anzahl an Benutzern, die sich diese Features wünschen, sicherlich hilfreich.
Wenn sich mehrere Leute finden, die das bewerkstelligen wollen, wäre ich bereit, dabei mitzuwirken.
MfG Peter.
Re: Schmales geschütztes Leerzeichen
Hallo Peter,
vielen Dank für Deine fundierte Antwort - zu Deinem Ausblick komme ich später.
Wie ich bereits in meinem ursprünglichen Beitrag erwähnte, arbeite ich mit der Schriftart 'DejaVu' (http://dejavu.sourceforge.net/wiki/index.php/Download), die das Zeichen meiner Begierde zur Verfügung stellt; ich wusste nur bisher nicht, wie ich es praktikabel zum Einsatz bringen konnte. Inzwischen habe ich weitergeforscht und (als absolutes Macro Greenhorn) eine wenig ästhetische, aber funktionierende Lösung gefunden.
Sie besteht aus einem uno-basierten Code einer entsprechenden Makro-Aufzeichnung (ich weiß nicht, wie man das richtig nennt, und habe praktisch nichts zu den Befehlen und deren Syntax gefunden), ergänzt durch einen angepassten VB-Code aus einem Forum-Beitrag. Diese Ergänzung ist notwendig, damit nach dem Einfügen des Sonderzeichens &H202F in 'DejaVu Sans' die ursprüngliche Schriftart wieder zu Verfügung steht:
sub SchmalesGeschuetztesLeerzeichen
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
' ------------------------------------------------------------------------
' Mit dem folgenden Programmcode wird die aktuelle Schriftart gesichert,
' um sie später wieder zu reaktivieren:
' ------------------------------------------------------------------------
oDoc = StarDesktop.getCurrentComponent( )
oText = oDoc.getText( )
oController = oDoc.getCurrentController( )
oViewCursor = oController.getViewCursor( )
oOldFontName = oViewCursor.CharFontName
rem ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Symbols"
args1(0).Value = Chr$(&H202F) ' Schmales geschütztes Leerzeichen
args1(1).Name = "FontName"
args1(1).Value = "DejaVu Sans"
dispatcher.executeDispatch(document, ".uno:InsertSymbol", "", 0, args1())
' ------------------------------------------------------------------------
' Hier wird die ursprüngliche Schriftart wieder reaktivert:
' ------------------------------------------------------------------------
dim args2(4) as new com.sun.star.beans.PropertyValue
args2(0).Name = "CharFontName.StyleName"
args2(0).Value = ""
args2(1).Name = "CharFontName.Pitch"
args2(1).Value = -1
args2(2).Name = "CharFontName.CharSet"
args2(2).Value = -1
args2(3).Name = "CharFontName.Family"
args2(3).Value = -1
args2(4).Name = "CharFontName.FamilyName"
args2(4).Value = oOldFontName
dispatcher.executeDispatch(document, ".uno:CharFontName", "", 0, args2())
end sub
Noch ein kleiner Hinweis: Mit einer abschließenden Anweisung ' oViewCursor.CharFontName = oOldFontName' anstelle des letzten uno-Blocks wird am Absatzende (wo ich normalerweise schreibe) nicht die ursprüngliche Schriftart reaktiviert.
Nachteile dieser Lösung: Man muss 'DejaVu' installieren und bekommt z. B. bei Verwendung der Schriftart 'Arial' schmale (geschützte) Leerzeichen, die fast genauso breit sind wie deren normale. Da ich allerdings 'DejaVu' zu "meiner" Standard-Schriftart erklärt habe, bin ich erst einmal zufrieden mit meiner Lösung. Nur das Makro würde ich ich gerne irgendwie in sich konsistenter gestaltet.
Der Grund, weshalb ich mich überhaupt damit beschäftige, ist folgender: Ich habe für meinen Writer den Korrektor (vom Duden-Verlag) installiert. Und der meckert (aus typographischer Sicht zu Recht) z. B. bei Abkürzungen wie z. B. oder bei Datums-Angaben wie 23. 11. 2007, wenn nach den Punkten kein (schmaler) Festabstand eingefügt wird - und ein breites Leerzeichen (wie in diesem Text verwendet) finde ich einfach nicht sonderlich ästhetisch.
Nun zu Deinem Ausblick: Ich würde da schon gerne mitarbeiten, bin aber ein absoluter Anfänger auf diesem Gebiet. Ich könnte mich allerdings (als kleiner Beitrag zu Anfang) in die Grundlagen zu der betreffenden Typographie einarbeiten. Zu weiteren Zusagen fehlt mir zur Zeit einfach der Überblick.
So, jetzt ist Wochenende ... viele Grüße und ein schönes selbiges.
Uodalrich
vielen Dank für Deine fundierte Antwort - zu Deinem Ausblick komme ich später.
Wie ich bereits in meinem ursprünglichen Beitrag erwähnte, arbeite ich mit der Schriftart 'DejaVu' (http://dejavu.sourceforge.net/wiki/index.php/Download), die das Zeichen meiner Begierde zur Verfügung stellt; ich wusste nur bisher nicht, wie ich es praktikabel zum Einsatz bringen konnte. Inzwischen habe ich weitergeforscht und (als absolutes Macro Greenhorn) eine wenig ästhetische, aber funktionierende Lösung gefunden.
Sie besteht aus einem uno-basierten Code einer entsprechenden Makro-Aufzeichnung (ich weiß nicht, wie man das richtig nennt, und habe praktisch nichts zu den Befehlen und deren Syntax gefunden), ergänzt durch einen angepassten VB-Code aus einem Forum-Beitrag. Diese Ergänzung ist notwendig, damit nach dem Einfügen des Sonderzeichens &H202F in 'DejaVu Sans' die ursprüngliche Schriftart wieder zu Verfügung steht:
sub SchmalesGeschuetztesLeerzeichen
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
' ------------------------------------------------------------------------
' Mit dem folgenden Programmcode wird die aktuelle Schriftart gesichert,
' um sie später wieder zu reaktivieren:
' ------------------------------------------------------------------------
oDoc = StarDesktop.getCurrentComponent( )
oText = oDoc.getText( )
oController = oDoc.getCurrentController( )
oViewCursor = oController.getViewCursor( )
oOldFontName = oViewCursor.CharFontName
rem ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Symbols"
args1(0).Value = Chr$(&H202F) ' Schmales geschütztes Leerzeichen
args1(1).Name = "FontName"
args1(1).Value = "DejaVu Sans"
dispatcher.executeDispatch(document, ".uno:InsertSymbol", "", 0, args1())
' ------------------------------------------------------------------------
' Hier wird die ursprüngliche Schriftart wieder reaktivert:
' ------------------------------------------------------------------------
dim args2(4) as new com.sun.star.beans.PropertyValue
args2(0).Name = "CharFontName.StyleName"
args2(0).Value = ""
args2(1).Name = "CharFontName.Pitch"
args2(1).Value = -1
args2(2).Name = "CharFontName.CharSet"
args2(2).Value = -1
args2(3).Name = "CharFontName.Family"
args2(3).Value = -1
args2(4).Name = "CharFontName.FamilyName"
args2(4).Value = oOldFontName
dispatcher.executeDispatch(document, ".uno:CharFontName", "", 0, args2())
end sub
Noch ein kleiner Hinweis: Mit einer abschließenden Anweisung ' oViewCursor.CharFontName = oOldFontName' anstelle des letzten uno-Blocks wird am Absatzende (wo ich normalerweise schreibe) nicht die ursprüngliche Schriftart reaktiviert.
Nachteile dieser Lösung: Man muss 'DejaVu' installieren und bekommt z. B. bei Verwendung der Schriftart 'Arial' schmale (geschützte) Leerzeichen, die fast genauso breit sind wie deren normale. Da ich allerdings 'DejaVu' zu "meiner" Standard-Schriftart erklärt habe, bin ich erst einmal zufrieden mit meiner Lösung. Nur das Makro würde ich ich gerne irgendwie in sich konsistenter gestaltet.
Der Grund, weshalb ich mich überhaupt damit beschäftige, ist folgender: Ich habe für meinen Writer den Korrektor (vom Duden-Verlag) installiert. Und der meckert (aus typographischer Sicht zu Recht) z. B. bei Abkürzungen wie z. B. oder bei Datums-Angaben wie 23. 11. 2007, wenn nach den Punkten kein (schmaler) Festabstand eingefügt wird - und ein breites Leerzeichen (wie in diesem Text verwendet) finde ich einfach nicht sonderlich ästhetisch.
Nun zu Deinem Ausblick: Ich würde da schon gerne mitarbeiten, bin aber ein absoluter Anfänger auf diesem Gebiet. Ich könnte mich allerdings (als kleiner Beitrag zu Anfang) in die Grundlagen zu der betreffenden Typographie einarbeiten. Zu weiteren Zusagen fehlt mir zur Zeit einfach der Überblick.
So, jetzt ist Wochenende ... viele Grüße und ein schönes selbiges.
Uodalrich
Re: Schmales geschütztes Leerzeichen
Hallo
Vielleicht hilft euch das weiter:
Nach einem kurzen Test scheint das ein schmales geschütztes Leerzeichen einzufügen, auch wenn der aktuell eingestellte Font das nicht bereitstellt.
Gruß Karo
Vielleicht hilft euch das weiter:
Code: Alles auswählen
Sub SchmalesGeschuetztesLeerzeichen
odoc=thiscomponent
otext=odoc.text
myViewCursor=oDoc.GetCurrentController.ViewCursor
otext.insertString(myViewCursor,chr(8239),false)
End Sub
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Schmales geschütztes Leerzeichen
Hallo Karo,
vielen Dank für Deine Mithilfe.
Dein Makro funktioniert auf meinem PC zwar unter 'DejaVu', aber z. B. nicht unter 'Arial': Hier wird statt eines Leerzeichens ein Rechteck eingefügt, was wohl soviel bedeutet wie "Zeichen nicht vorhanden". Schade, Dein Makro wäre genial einfach gewesen.
Da Du mehr Ahnung von Makro-Programmierung zu haben scheinst als ich (wozu allerdings nicht viel gehört ...), hast Du vielleicht Lust, es noch zu erweitern. Dazu folgender Hinweis:
Wenn ich die einzelnen Schritte händisch nachvollziehe, sieht das ja etwa folgendermaßen aus, wenn die aktuelle Schriftart z. B. 'Arial' ist:
>>> Einfügen -> Sonderzeichen... -> Schrift wähle 'DejaVu sans' -> Zeichen wähle U+202F (= 8239 dezimal) -> [OK]
Falls ich dies anwende (Cursorposition = Absatzende), bleibt manchmal die Schriftart 'Arial' erhalten, meistens ist nach diesem Prozess allerdings 'DejaVu sans' aktiv (warum dies unterschiedlich ist, weiß ich nicht). Falls ich anschließend 'Arial' reaktivieren will, indem ich dies im Schriftnamen-Fenster wähle, so wird dies von Writer ignoriert. Falls ich stattdessen die Reaktivierung folgendermaßen durchführe:
>>> Format -> Zeichen... -> Schriftart -> Wähle 'Arial' -> [OK]
habe ich 'Arial' wieder reaktiviert.
Nichts anderes mache ich mit dem Makro in dem meiner Beiträge, auf den Du mit Deinem Beitrag geantwortet hast. An "meiner" Lösung stört mich lediglich, dass ich sie erstens kaum verstehe (Kennt jemand Literatur zur Programmierung entsprechender Makros?) und zweitens den Eindruck habe, es mit einem VB-Kauderwelsch zu tun zu haben (uno-Programmierung mit einem Makro-Code an Stellen, wo ich sonst nicht weiterweiß). Das kommt mir so vor wie unnötige Anglizismen in deutschen Texten, weil der Verfasser zu faul ist, nach deutschen Begriffen zu suchen (was natürlich nicht immer möglich ist).
Das heißt: Entweder möchte ich gerne konsistent mit der uno-Programmierung arbeiten, oder mit einem VB-Code, wie Du ihn verwendest (und offensichtlich die meisten Makro-Programmierer, die auf die uno-Programmierung nicht besonders gut zu sprechen sein scheinen).
Vielleicht könnt Ihr mir ja 'mal auf die Sprünge helfen.
Viele Grüße
Uodalrich
vielen Dank für Deine Mithilfe.
Dein Makro funktioniert auf meinem PC zwar unter 'DejaVu', aber z. B. nicht unter 'Arial': Hier wird statt eines Leerzeichens ein Rechteck eingefügt, was wohl soviel bedeutet wie "Zeichen nicht vorhanden". Schade, Dein Makro wäre genial einfach gewesen.
Da Du mehr Ahnung von Makro-Programmierung zu haben scheinst als ich (wozu allerdings nicht viel gehört ...), hast Du vielleicht Lust, es noch zu erweitern. Dazu folgender Hinweis:
Wenn ich die einzelnen Schritte händisch nachvollziehe, sieht das ja etwa folgendermaßen aus, wenn die aktuelle Schriftart z. B. 'Arial' ist:
>>> Einfügen -> Sonderzeichen... -> Schrift wähle 'DejaVu sans' -> Zeichen wähle U+202F (= 8239 dezimal) -> [OK]
Falls ich dies anwende (Cursorposition = Absatzende), bleibt manchmal die Schriftart 'Arial' erhalten, meistens ist nach diesem Prozess allerdings 'DejaVu sans' aktiv (warum dies unterschiedlich ist, weiß ich nicht). Falls ich anschließend 'Arial' reaktivieren will, indem ich dies im Schriftnamen-Fenster wähle, so wird dies von Writer ignoriert. Falls ich stattdessen die Reaktivierung folgendermaßen durchführe:
>>> Format -> Zeichen... -> Schriftart -> Wähle 'Arial' -> [OK]
habe ich 'Arial' wieder reaktiviert.
Nichts anderes mache ich mit dem Makro in dem meiner Beiträge, auf den Du mit Deinem Beitrag geantwortet hast. An "meiner" Lösung stört mich lediglich, dass ich sie erstens kaum verstehe (Kennt jemand Literatur zur Programmierung entsprechender Makros?) und zweitens den Eindruck habe, es mit einem VB-Kauderwelsch zu tun zu haben (uno-Programmierung mit einem Makro-Code an Stellen, wo ich sonst nicht weiterweiß). Das kommt mir so vor wie unnötige Anglizismen in deutschen Texten, weil der Verfasser zu faul ist, nach deutschen Begriffen zu suchen (was natürlich nicht immer möglich ist).
Das heißt: Entweder möchte ich gerne konsistent mit der uno-Programmierung arbeiten, oder mit einem VB-Code, wie Du ihn verwendest (und offensichtlich die meisten Makro-Programmierer, die auf die uno-Programmierung nicht besonders gut zu sprechen sein scheinen).
Vielleicht könnt Ihr mir ja 'mal auf die Sprünge helfen.
Viele Grüße
Uodalrich
Re: Schmales geschütztes Leerzeichen
Hallo Uodalrich
Gruß Karo
Das kann ich hier nicht nachvollziehen, das Makro funktioniert mit jedem Schriftfont ohne Probleme, daher kann ich dir konkret auch nicht weiterhelfen. Evtl. läuft es aber in folgender Form wie gewünscht:Uodalrich hat geschrieben:Hallo Karo,
vielen Dank für Deine Mithilfe.
Dein Makro funktioniert auf meinem PC zwar unter 'DejaVu', aber z. B. nicht unter 'Arial': Hier wird statt eines Leerzeichens ein Rechteck eingefügt, was wohl soviel bedeutet wie "Zeichen nicht vorhanden". Schade, Dein Makro wäre genial einfach gewesen.
Code: Alles auswählen
Sub SchmalesGeschuetztesLeerzeichen
odoc=thiscomponent
otext=odoc.text
myViewCursor = oDoc.GetCurrentController.ViewCursor ' die sichtbare Textmarke
memo = myViewCursor.CharFontName ' aktuell benutzten Font in die Variable 'memo' einlesen
myViewCursor.CharFontName="DejaVu sans" ' den Font auf DejaVu sans ändern
otext.insertString(myViewCursor,chr(8239),false) ' das Geschützte Leerzeichen einfügen
myViewCursor.CharFontName = memo ' wieder den vorherigen Font aus memo übernehmen
End Sub
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Schmales geschütztes Leerzeichen
Hallo Karo,
nochmals vielen Dank - Dein letztes Makro funktioniert leider auch nicht in meiner Umgebung: Wenn ich mit der Schriftart 'Arial' arbeite, ist nach dem Einfügen des Sonderzeichens die Schriftart 'DajaVu Sans' aktiviert.
Weil ich vermutete, dass dies vielleicht an meiner Standard-Dokumentvorlage liegt, weil dort 'DejaVu Sans' als Standard-Schriftart eingestellt ist, habe ich eine andere Dokumentvorlage mit 'Arial' zum Standard gesetzt. Nach einem Neustart von Writer erscheint auch tatsächlich diese Dokument, aber nach dem Einfügen des betreffenden Sonderzeichens mit Deinem Makro wird wieder 'DajaVu Sans' aktiviert.
Danach habe ich - um vom Absatzende wegzukommen - mit der 'Arial'-Vorlage das Datum 25.11.2007 zunächst ohne Leerzeichen geschrieben, habe den Cursor dann hinter den Tages-Punkt gesetzt und das Makro ausführen lassen; dabei wurde die Schriftart der kompletten Datumsangabe in 'DejaVu Sans' geändert.
Ich danke Dir trotzdem, dass Du Dir die Zeit nimmst, eine Lösung zu suchen.
Viele Grüße
Uodalrich
PS: Ich arbeite mit OpenOffice 2.3.0 unter Windows XP.
nochmals vielen Dank - Dein letztes Makro funktioniert leider auch nicht in meiner Umgebung: Wenn ich mit der Schriftart 'Arial' arbeite, ist nach dem Einfügen des Sonderzeichens die Schriftart 'DajaVu Sans' aktiviert.
Weil ich vermutete, dass dies vielleicht an meiner Standard-Dokumentvorlage liegt, weil dort 'DejaVu Sans' als Standard-Schriftart eingestellt ist, habe ich eine andere Dokumentvorlage mit 'Arial' zum Standard gesetzt. Nach einem Neustart von Writer erscheint auch tatsächlich diese Dokument, aber nach dem Einfügen des betreffenden Sonderzeichens mit Deinem Makro wird wieder 'DajaVu Sans' aktiviert.
Danach habe ich - um vom Absatzende wegzukommen - mit der 'Arial'-Vorlage das Datum 25.11.2007 zunächst ohne Leerzeichen geschrieben, habe den Cursor dann hinter den Tages-Punkt gesetzt und das Makro ausführen lassen; dabei wurde die Schriftart der kompletten Datumsangabe in 'DejaVu Sans' geändert.
Ich danke Dir trotzdem, dass Du Dir die Zeit nimmst, eine Lösung zu suchen.
Viele Grüße
Uodalrich
PS: Ich arbeite mit OpenOffice 2.3.0 unter Windows XP.