Archiv der Kategorie: FrameScript

Hauptmenü entschlacken

Vor allem bei Beamer-Präsentation mit (nur) 1024×768 Pixeln fällt auf, dass das Hauptmenü von FrameMaker insbesondere in der deutschen Fassung seeehr lang ist. Besonders wenn Sie FrameMaker (Strukturiert) verwenden. Wenn ich Programm-Symbol, Menüleiste, UI-Menü und Arbeitsbereiche-Menü in einer Zeile haben möchte, brauche ich ca. 1600 Pixel.

(anklicken für volle Breite)

Zugegeben: Scripts und FS kommen von FrameScript (aber geht es ohne?) und AXCM sowie InsetPlus sind weitere Plug-ins.

Übersicht schaffen im Hauptmenü

In der Regel werden Sie entweder mit S1000D oder mit DITA oder ohne beides arbeiten, aber nicht mit allem (auf einmal…?). Aber viele von uns können auf einige Menüpunkte verzichten, als da wären (nach Länge geordnet):

FrameScript bzw. ElmScript

Dieses Plug-in ist für viele unverzichtbar, aber der Platzbedarf im Menü lässt sich leicht einschränken. Wählen Sie FrameScript > Options, Menu Customization. Hier können Sie den Menubar Text frei wählen und sogar abschalten:

Schriftmenüs verbergen uns von diesem lästigen Menü befreit, können sämtliche zusätzliche Menüpunkte mit dem kostenlosen Skript von ITL namens »Plug-in-Menüs gruppieren« verwaltet werden. Für manchen lohnt es sich allein deswegen eine Registrierung als Benutzer bei ITL. Das Skript ist samt Beschreibung zu finden auf:

Auf diese Weise optimiert, lande ich bei 1309 Pixel:

Wie zu sehen ist, wird das Menü DITA von diesem Skript nicht erwischt. Wenn ich dies nach der unten geschilderten Methode deaktiviere, passt mein Hauptmenü in 1280 Pixel:

RoboHelp

Öffnen Sie im Explorer das Verzeichnis, in dem FrameMaker installiert ist, z.B. C:\Program Files (x86)\Adobe\AdobeFrameMaker10\*. Im Unterverzeichnis fminit\Plugins\ finden Sie Plug-ins, die automatisch installiert werden. Ändern Sie die Dateinamenserweiterung von RHFrameMakerServer10.dll zum Beispiel zu .dll_not* und nach einem Neustart wird dies Plug-in und damit der dazu gehörende Menüpunkt nicht mehr geladen.

S1000D

Öffnen Sie im FrameMaker-Installationsverzeichnis das Unterverzeichnis startup; die darin befindlichen ExtendScript-Skripte werden beim Start von FrameMaker ausgeführt. Ändern Sie die Dateinamenserweiterung von s1000dMenu.jsxbin zum Beispiel zu .jsxbin_not und nach einem Neustart wird dieses Skript nicht mehr ausgeführt und damit der dazu gehörende Menüpunkt nicht mehr eingerichtet.

DITA

Öffnen Sie aus dem Profilverzeichnis die Datei %appdata%\Adobe\FrameMaker\10\maker.ini und suchen Sie den Abschnitt [APIClients]. Wenn dieser noch nicht vorhanden ist, fügen Sie diesen Eintrag am Ende der Datei hinzu. Ergänzen Sie ihn um zwei Leereinträge für die DITA-Plug-ins:

[APIClients]
ditafm=
ditafm_app=

Das führt beim Neustart von FrameMaker zwar zu zwei Meldungen im Fenster FrameMaker-Konsole, ist aber technisch »sauberer«, als eine Änderung der maker.ini im Programmverzeichnis, da diese je nach Benutzerrechen in ein Schattenverzeichnis (VirtualStore) umgeleitet wird.

CMS

Legen Sie zum Beispiel auf Ihrem Desktop eine neue Datei customui.cfg mit folgendem Inhalt an:

>

Anschließend bewegen Sie diese Datei in den Ordner C:\Program Files (x86)\Adobe\AdobeFrameMaker10\fminit\configui\*. Warum so umständlich? Weil Sie nur auf diesem Weg aufgefordert werden gegebenenfalls das Administrator-Passwort einzugeben, direkt aus einem Texteditor kann es sein, dass die Datei im Schattenverzeichnis (VirtualStore)* gespeichert wird – ohne dass Sie das mitbekommen!

Weitere Menüs von Plug-ins

Was aber nun mit AXCM, InsetPlus, FrameSLT und den vielen anderen Menüeinträgen extrem nützlicher Plug-ins? Da kenne ich nur die Lösung mit dem Skript, siehe oben.

Konnte ich Ihnen mit diesen Tipps helfen?

Veröffentlicht unter FrameMaker, FrameScript | Kommentare deaktiviert für Hauptmenü entschlacken

Automation 1864

1864 schrieb der Ökonom Gustav Schmoller:

Für jede rein gleichförmig sich wiederholende Bewegung,
welche keine geistige Thätigkeit erfordert,
wird mit der Zeit eine Maschine erfunden […]

Die Vermeidung von »gleichförmig sich wiederholenden« Teilaufgaben ist letztlich auch der Grund für Automation in Dokumentationsprozessen, zum Beispiel mit FrameMaker. Und hier ist mit FrameMaker 10 eine neue Option hinzugekommen, die eingebaute ExtendScript-Schnittstelle. Ohne meine gegenwärtige Bewertung zum »Scripting in FrameMaker 10« umzukehren, gibt es doch überschaubare, eher wenig komplexe Anforderungen, die sich praktisch identisch mit FrameScript oder ExtendScript lösen lassen. Ein Beispiel habe ich einmal in beiden Programmiersprachen ausgeführt und erläutert:

Veröffentlicht unter ExtendScript, FrameMaker, FrameScript | Kommentare deaktiviert für Automation 1864

FrameScript für FrameMaker 10

Heute ließ mich Frank Elmore wissen, dass eine Fassung von FrameScript für FrameMaker 10 in Arbeit sei. Mit einer offiziellen Veröffentlichung wird er aber warten, bis auch das FrameMaker Development Kit (FDK) offiziell veröffentlicht ist.

Zum Thema »Scripting in FrameMaker 10« habe ich Rick Quatros und meine Meinung in einem Beitrag zusammengefasst.

Veröffentlicht unter FrameScript | Kommentare deaktiviert für FrameScript für FrameMaker 10

Weg mit »Alle Vorgabeseiten werden erneut zugewiesen…«!

Seit FrameMaker 7.2 gibt es die automatische Vorgabeseitenzuordnung, eine Funktion, die ich in den meisten Projekten benutze. So nützlich die Funktion ist, genauso nervig ist die zugehörige Meldung »Alle Vorgabeseiten werden erneut zugewiesen. Manuell zugewiesene Vorgabeseiten werden überschrieben. Möchten Sie fortfahren?«

Haben Sie jemals auf Abbrechen geklickt? Es wird dann übrigens nicht abgebrochen, sondern lediglich die Vorgabeseitenzuweisung unterbleibt, das Buch wird dennoch aktualisiert. Meine Standard-Empfehlung zum Wegklicken dieser Meldung war der Einsatz eines kleinen Programms, dass man auf das Erscheinen des Dialogs trainieren konnte: Push That Freakin’ Button (PTFB), siehe auch meine Beitrag auf framescript.eu.

Nun tauchte in den FrameMaker-Entwickler-Foren C-Code auf, der diesen und natürlich auch andere Dialog schon bestätigen kann, bevor diese überhaupt sichtbar werden.

Letzterer bietet in seinem Blog auch eine fertig kompilierte DLL zum Download an, die mit FrameMaker 9 getestet ist, allerdings noch einige Microsoft-Komponenten zusätzlich benötigt.

Wenn Sie aber bereits FrameScript/ElmScript einsetzen, tut es auch ein kleines Event-Skript, und zwar unabhängig von der FrameMaker-Version, nur FrameScript Version 5 sollten Sie haben (denn ich teste nicht mehr mit älteren Versionen).

Den Quellcode des Skripts finden Sie auf framescript.eu. Einfach in eine Datei z.B. mit dem Namen SuppressUnnecessaryAlerts.fsl kopieren und in den Ordner legen, aus dem alle Ihre Skripte installiert werden.

Veröffentlicht unter FrameMaker, FrameScript | Kommentare deaktiviert für Weg mit »Alle Vorgabeseiten werden erneut zugewiesen…«!

FrameMaker automatisieren: Sauber skripten

Seit 10 Jahren biete ich Schulungen zur FrameScript-Programmierung an. Nein, falsch, es geht nicht ums Programmieren, es geht darum, FrameMaker-Prozesse zu automatisieren. Und der Einstieg dazu ist nunmal immer noch die Skript-Programmierung. Wenn ich manchmal im frame_dev-Forum mitlese, wie kompliziert bestimmte Aktionen bei der Programmierung in C ausfallen (und dass sich der Programmierer auch um das Freigeben nicht benötigten Speichers kümmern muss), dann bin ich dankbar für FrameScript.

Einschub: So dankbar ich für FrameScript bin, so gerne nutze ich für bestimmte Aufgaben auch »echte« C-Plug-ins mit FrameMaker, insbesondere mit strukturierten Dokumenten. Zum Beispiel AXCM, InsetPlus, FrameSLT

Bei diesen Schulungen fällt immer wieder auf, dass FrameScript keine Deklaration der Variablen erfordert, man kann einfach schreiben

Set lvValues = MyFunction{};

und die Variable lvValues wird den Datentyp des Ergebnisses der Funktion MyFunction annehmen. Was einerseits sehr praktisch zu sein scheint, führt aber beim kleinsten Tippfehler im Namen einer Variable oft nicht zu einem gemeldeten Fehler, sondern schlicht zu unerwartetem Verhalten des Skripts. Tipps ich ein paar Zeilen weiter beispielsweise

Display lvValue;

bekomme ich diese wenig aussagekräftige Anzeige, weil ich das Plural-s beim Variablenbezeichner »vergessen« habe.

Es gibt aber eine Möglichkeit, solche Fehler melden zu lassen, und ich möchte heute dazu aufrufen, diese Möglichkeit sehr diszipliniert zu verwenden. Seit einigen Versionen gibt es die Session-Variable DeclareVarMode, die dazu verwendet werden kann, dass alle Variablen explizit entweder als Local oder als GlobalVar deklariert werden müssen. Folgende zwei Zeilen gehören in jedes Skript:

Set DeclareVarMode = True;
Set PlatformEncodingMode = True;

(Wegen der Rückwärtskompatibilität sind beide nicht standardmäßig gesetzt; den PlatformEncodingMode können Sie ignorieren, wenn Sie für FrameMaker 8 oder später im UTF-8-Mode programmieren.)

Und dann natürlich in jede Funktion oder Subroutine die entsprechenden Anweisungen Local oder GlobalVar.

Haben Sie das bereits ausprobiert? Wie sind Ihre Erfahrungen? Wie lange haben Sie schon nach Fehlern gesucht, nur um schließlich feststellen zu müssen, dass Sie sich bei einem Variablen-Bezeichner vertippt haben…

Veröffentlicht unter FrameScript | Kommentare deaktiviert für FrameMaker automatisieren: Sauber skripten

12 Jahre FrameScript = ElmScript

FrameScript für FrameMaker - seit 1997

Vor zwölf Jahren, im November 1997, wurde die erste Version des FrameMaker-Plug-ins FrameScript vorgestellt. Wegen einer Vorbelegung dieses Namens durch eine deutsche Firma (historische Infos dazu auf framescript.eu) hieß das Produkt hierzulande ElmScript — man wollte jedwedem Streit aus dem Wege gehen.

Vor knapp zehn Jahren, im Januar 2000, beschaffte ich meine erste ElmScript-Lizenz.

Diese beiden Daten bilden den Rahmen, um in Absprache mit FML alle Anwender, die noch ältere Versionen von FrameScript einsetzen, auf den aktuellen Stand zu bringen. Bis zum 30.11.2009 sparen Sie dabei pro Lizenz €30!

Die wichtigsten Vorteile der Version 5:

  • Unterstützung von FrameMaker 8 und 9, d.h. insbesondere der Unicode-Fähigkeiten
  • Dokumente beim Öffnen oder Speichern von XML-Dateien modifizieren
  • Verbesserte Performance durch optimierten Skript-Parser (V.4)
  • Debugger zum Testen Ihrer Skripte Zeile für Zeile (V.4)
  • Gestaltung eigener Dialoge (V.4)
  • Neu gegliederte Dokumentation
  • Beispielskripte für neue Funktionen

Informationen zum Bestellprozess und die Sonderpreise finden Sie unter

Veröffentlicht unter FrameScript | Kommentare deaktiviert für 12 Jahre FrameScript = ElmScript

FrameMaker 9 und FrameScript

Vielen Dank für Ihre Aufmerksamkeit bei diesem eSeminar-Beitrag!

Hier finden Sie meine Vortragsfolien mit aktiven Links, die ganze Präsentation können Sie über die Adobe eSeminar-Webseite (nach einer Registrierung) nochmals ansehen.

Ein schönes Wochenende!

Veröffentlicht unter FrameMaker, FrameScript | Ein Kommentar

FrameScript unterstützt Kartenleser

Im Bemühen, neben der Weiterentwicklung auch die Rückwärtskompatibilität nicht aus dem Auge zu verlieren, hat Chef-Programmierer Frank Elmore mit einem brandaktuellen Zwischenrelease eine Lücke geschlossen: FrameScript-Programmierung kann nun auch mittels Lochkarten erfolgen. Hier abgebildet ist das klassische »Hello World«-Progamm:

FrameScript-Programmierung dank Unterstützung für Lochkarten

Jetzt liegt es an den Anwendern, das Update zu laden und untereinander die besten Tipps zum effizienten Ausnutzen der raren Lochkarten zu tauschen.

Veröffentlicht unter FrameScript | Verschlagwortet mit , , | Kommentare deaktiviert für FrameScript unterstützt Kartenleser

ElmScript/FrameScript 5.1 unicodefähig

Möglicherweise als erstes mir bekanntes Plug-in ist FrameScript 5.1 unicodefähig und verspricht damit volle Unterstützung für FrameMaker 8. Mehr auf framescript.eu.

Veröffentlicht unter FrameScript | Verschlagwortet mit , | Kommentare deaktiviert für ElmScript/FrameScript 5.1 unicodefähig

FrameScript 5.1 in Beta

Ein großes Thema – für alle Plug-in-Programmierer – ist die korrekte Unterstützung von Unicode-Strings in FrameMaker 8. Das betrifft nicht nur Text in Dokumenten, sondern auch Namen von Absatzformaten, Variablen, Elementen, Attributen und naturgemäß sind die Herausforderungen für eine Programmierumgebung größer als für ein Plug-in, welches »nur« eine ganz bestimmte Aufgabe zu lösen hat.

Auf der Liste der relevanten Neuerungen der aktuellen Beta-Version stehen:

  • Unterstützung des Unicode-Modus in FrameMaker 8
  • Die Methoden eSys.GetDefFontEncoding und eSys.SetDefFontEncoding unterstützen den Typ UTF-8 (neben FrameRoman, JISX0208.ShiftJIS [oder Japanese], BIG5 [oder TradChinese], GB2312-80.EUC [oder SimpChinese], KSC5601-1992 [oder Korean]); die Einstellung ist global für die aktuelle FrameMaker-Session
  • Die Methode eStr.ConvertText erlaubt die Konvertierung von Strings aus dem aktuellen Default Encoding in verschiedene Kodierungen: ASCII, ANSI, FrameRoman, UTF8, und noch etliche mehr
  • Lesen und Schreiben von Textdateien in UTF-8-Kodierung
Veröffentlicht unter FrameScript | Kommentare deaktiviert für FrameScript 5.1 in Beta