Zeichenkette einlesen

Anwenderaustausch zur PhraseExpress Makroprogrammierung
Forum rules
Bitte beachten Sie die Hinweise zum Forum. Vielen Dank!
Post Reply
ped
Posts: 2
Joined: 21 Dec 17, 12:27

Zeichenkette einlesen

Post by ped » 21 Dec 17, 12:42

Hallo zusammen

Momentan nutze ich PhraseExpress beim Schreiben von Latex-Dokumenten und dort möchte ich, dass eine beliebige Zeichenkette in einer bestimmte Form ausgegeben. Hier ein Beispiele:

Code: Select all

spd    => \acs{SPD}
fd-arv => \acs{FD-ARV}
Als Autotext wähle ich zum Beispiel das Zeichen # aus. Beim Tippen von # soll Phraseexpress also alle Zeichen bis zum letzten Leerzeichen einlesen (abc#), dann # entfernen und die übrig gebliebene Zeichenkette (abc) als \acs{ABC} speichern.

Ist das überhaupt mir PhraseExpress möglich?

Bisher habe ich für jede Abkürzung einen eigenen Textbaustein erstellt, denke jedoch, dass es einfacher gehen müsste.

Gruss

Pere

Peter Stotz
PhraseExpress Expert
Posts: 611
Joined: 27 Feb 08, 15:07

Re: Zeichenkette einlesen

Post by Peter Stotz » 21 Dec 17, 15:23

Hallo, Pere,
ich verstehe die Aufgabenstellung so, dass Zeichenfolgen wie spd oder fd-arv usw.,
unmittelbar nach der Anwendereingabe von spd# oder fd-arv# zu
\acs{SPD} bzw. \acs{FD-ARV} usw. umgeformt und ausgegeben werden sollen.
Das ist mit dem nachfolgenden Textbaustein möglich, wenn die Abkürzungen als
Autotext-String spd#|fd-arv#|... dieses Textbausteins vorgegeben werden:

Code: Select all

\acs{#asc 123}{#uppercase {#substr {#autotext} -from 1 -count {#calc {#length {#autotext}}-1 -round 0}}}{#asc 125}
Der Trick dabei:
Durch die Auswertung von {#autotext} wird nur noch ein Textbaustein für viele Abkürzungen benötigt,
diese müssen jedoch im Autotext-String vorgegeben werden.
Hinweise:
1. Die Elemente des Autotext-Strings werden mit dem Pipe-Zeichen | voneinander abgetrennt
2. Textbausteine, die den {#autotext}-Makro verwenden, sind NICHT zur Verwendung mit #insert
in anderen Textbausteinen vorgesehen.
3. Weil PhraseExpress die geschweiften Klammern auch selbst als Syntaxelement verwendet,
werden diese mit ihren ASCII-Werten im Phrasencode verwendet.
4. Das Textbaustein-Beispiel ist für fest vorgegebene Zeichenfolgen vorgesehen.
Beliebige Zeichenfolgen könnten entsprechend behandelt werden, wenn sie vom Anwender markiert und durch einen Textbaustein mit {#clipboard -copy} in die Zwischenablage übernommen, umgeformt und wieder ausgegeben werden.

Peter
Win 10-1607 64 bit - PhraseExpress 13.0.60i

ped
Posts: 2
Joined: 21 Dec 17, 12:27

Re: Zeichenkette einlesen

Post by ped » 11 Jan 18, 11:29

Hallo Peter

Herzlichen Dank für deine ausführliche Antwort. Aufgrund der Weihnachtszeit habe ich das Problem erst einmal ruhen lassen, aber nun lässt es mir keine Ruhe mehr, sodass mein Dankeschön etwas verspätet kommt.

Ich hatte gehofft, nur einen Textbaustein erstellen zu müssen, dass ist dank deines Codes nun möglich. Ärgerlich ist, dass ich die Abkürzungen alle schon vorher wissen und ins Autotext-Feld eintragen muss. Mal sehen, wie gross der Inhalt des Autotext-Feldes sein kann. :-)

Peter Stotz
PhraseExpress Expert
Posts: 611
Joined: 27 Feb 08, 15:07

Re: Zeichenkette einlesen

Post by Peter Stotz » 11 Jan 18, 13:53

@pere
Es gibt - wie erwähnt - auch für beliebige Zeichenfolgen/Abkürzungen Lösungsvarianten, um diese wie gewünscht aufzubereiten.
Der im letzten Beitrag vorgeschlagene Textbaustein passt bei häufiger vorkommenden Kürzeln und
hat den Vorteil, dass der Schreibfluss sehr gut erhalten bleibt...

Die nachfolgende, alternative Lösung passt für beliebige, auch einmalig vorkommende Abkürzungen
Textbaustein
mit Autotext z.B. #. und einem Hotkey (nach Wahl)

Code: Select all

{#setclipboard}{#clipboard -copy}\acs{#asc 123}{#uppercase {#check -text {#length {#insertclipboard}} -case != 0 -output {#insertclipboard} -else {#input -head Ihre Eingabe umformen zu \acs{#asc 123}IHRE EINGABE{#asc 125} -single -def abc -required}}}{#asc 125} 
Mögliche Textbausteinverwendung am Beispiel fd-arv:
ENTWEDER . . .
1. beim Schreiben wird der (kurze) Textbaustein-Autotext z.B. #. eingetippt
2. die Abkürzung fd-arv wird in das Eingabefenster eingetippt und mit Eingabetaste bestätigt
ODER . . .
1. beim Schreiben fd-arv eintippen
2. fd-arv markieren
3. den Textbaustein auslösen (mit Hotkey)
• Diese Anwendungsform könnte auch nacheinander für mehrere Abkürzungen im Text genutzt werden!
• Wenn die eingesetzte Textanwendung das Markieren des aktuellen Worts mit Tastencode unterstützt (z.B. wie bei WORD: Strg-Shift-links), kann diese Tastenkombination in den Textbausteincode übernommen werden, was die Anwendung sehr komfortabel macht: Abkürzung schreiben, Phrase ausführen - fertig.

Peter
Win 10-1607 64 bit - PhraseExpress 13.0.67i

Post Reply