Beschreibung der erweiterten Syntax für TaggedText, wie er in textmodel, frame und table verwendet werden kann.
Es ist uns trotz langem Suchen leider nicht gelungen, eine offizielle Doku für TaggedText von Adobe zu finden. Hier finden Sie eine alte Beschreibung für CS 4 (boah, 2008!). Aber immerhin.
Allgemeine Beispiele zur Verwendung der Klasse TaggedText finden sie hier.
Standardkodierung für Zeichen mit einem Unicode ≥ 128 (0x80) ist UTF-8. Unterstützt werden alle UTF-8 Zeichen einschließlich der 4 Byte-Zeichen. Damit können knapp 17 Millionen Zeichen (der ohnehin "nur" 1,7 Millionen definierten) Unicodes abgebildet werden. Als Eingabe ist eine der folgenden Möglichkeiten erlaubt:
Bitte beachten Sie, dass Schriften in der Regel nicht für alle Unicode-Zeichen auch 'Buchstaben' enthalten. Um Zeichen sichtbar zu machen, muß gegebenfalls zusätzlich eine geeignete Schrift ausgewählt werden.
Außer der direkten Schreibweise haben alle Darstellungen den Nachteil, dass nur Zeichen mit einem Unicode bis max 65.535 (0xFFFF) dargestellt werden können. Um Zeichen mit einem Unicode > 0xFFFF darzustellen, kann eine der folgenden Darstellungen verwendet werden:
Einfacher Text wird direkt in das Dokument eingesetzt. Er empfiehlt sich für alle Situationen, in denen der einzusetzende Text die an der Einfügestelle gültigen Formatierungen des Dokumentes übernehmen kann oder soll.
Hallo Welt!
textmodel::insert ("Hallo Welt!");
Da es mitunter erforderlich ist, den eingefügten Text trotzdem, vielleicht in Abhängigkeit vom Inhalt, zu formatieren, kann der Text eine Reihe von Zeichenformatierungen enthalten. Diese Angaben entsprechen in ihrer Syntax weitgehend der Syntax von InDesign® Tagged Text und sind case sensitiv. Die Texte dürfen Escapesymbole der Form \27A7 beinhalten. Eine Zeichenformtierung wird durch ein öffnendes Tag mit tag-spezifischen Parametern eingeleitet und kann entweder durch eine andere Angabe zur Formatierung oder durch ein parameterfreies Endetag beendet werden. Tags müssen also nicht geschlossen werden, sie werden durch eine neue Information automatisch geschlossen. Alle Tags, die nicht geschlossen oder durch Neudefinition verändert werden, wirken automatisch bis zum Ende des eingefügten Textes
Hallo
Welt
!
Hallo <cUnderline:1> W<cSize:14.0>e<cSize:18.0>l<cSize:24.0>t<cSize:> <cUnderline:>!Die folgenden Angaben sind möglich :
Tag | Beschreibung |
<CharStyle:stilname> | Name eines Zeichenformates. |
<cSize:48.0> | Textgrösse in Punkten |
<cFont:fontname [, face]> | Angabe einer Schrift und (optional) eines Schriftschnittes. Fehlt die Angabe des Schnittes, wird die reguläre Schrift verwendet. Schrift und Schriftschnitt müssen in einfache Anführungszeichen eingeschlossen werden. |
<cUnderline:1> | Unterstreichung an. Es ist nur der Wert 1 erlaubt. |
<cStrikethru:1> | Text durchstreichen. Es ist nur der Wert 1 erlaubt. |
<cCase:All Caps> | Großbuchstaben/Kapitälchen. Folgende case sensitiven Angaben sind möglich: All Caps GROSZBUCHSTABEN Small Caps KAPITÄLCHEN Beachten Sie bitte, dass comet_pdf auch bei Small Caps lediglich in Großbuchstaben umwandelt. Siehe auch hier.
|
<cPosition:Superscript> | Textposition. Folgende case sensitiven Angaben sind möglich: Superscript , Subscript, Superior, Inferior, Numerator, Denominator |
<cSkew:30.0> | Verzerrung, Werte zwischen -85 und 85 Grad im mathematischen Drehsinn Von comet_pdf wird das Attribut ignoriert. |
<cCharRotate:30.0> | Drehung der Buchstaben, Werte zwischen -85 und 85 Grad im mathematischen Drehsinn Von comet_pdf wird das Attribut ignoriert. |
<cColor:r, g, b> <cColor:farbname [, tint]> |
Schriftfarbe. Farben können entweder in RGB-Werten (0-255) angegeben werden oder als Name einer definierten Farbe der Farbpalette. Farbnamen müssen in einfache Anführungszeichen eingeschlossen sein. Ist ein Farbname angegeben, kann optional angegeben werden, wie stark die Färbung sein soll (0.0 - 100.0). |
<cStroke:r, g, b> <cStroke:farbname [, tint]> |
Schriftumrandung. Farben können entweder in RGB-Werten (0-255) angegeben werden oder als Name einer definierten Farbe der Farbpalette. Farbnamen müssen in einfache Anführungszeichen eingeschlossen sein. Ist ein Farbname angegeben, kann optional angegeben werden, wie stark die Färbung sein soll (0.0 - 100.0). |
<cKerning:k> | Zeichenabstand in 1/1000 Gevierts. Die Angaben werden als Ganzzahlen erwartet. |
Direkter Import von InDesign Tagged Text. Der Text muss im Format Ausführlich/ASCII-WIN vorliegen und kann Comet-Platzhalter enthalten.
TaggedText muß nicht immer das Mittel der Wahl beim Import von Text sein:
TaggedText verwendet zwar die Textattribute (Farbe, Größe, Zeichenstil, ...)
des aktuellen Absatzes, aber vom Absatzstil abweichende Textattribute an
der Einfügestelle werden nicht in den importierten Text übernommen.
Lokale Formatierungen des importierten Textes müssen ausschließlich im Import selbst festgelegt werden.
Sollen lokale Abweichungen vom Absatzstil auch für den Import gelten, muß der Text
unformatiert (also ohne %!TT oder Varianten) eingefügt werden.
Den langen Einführungstext eines TaggedTextes können Sie mit Hilfe der Angaben %!TT, %!T+, ... am Anfang des Textes abkürzen. Der Text darf priint:comet tags enthalten, muß aber im Langformat geschrieben sein, also ParaStyle statt pstyle, CellStart statt clStart usw.. Alle verwendeten Absatz-, Zeichen-, Tabellen und Zellenstile des neuen Textes werden vor dem Einfügen gesammelt und der benötigte Tagged Text Header wird automatisch erzeugt. Die Beschreibung der Stile lassen wir dabei leer. Etwa so:
<DefineParaStyle:Brief=> <DefineCharStyle:Hochgestellt=>
Damit die Leer-Definitionen nicht bestehende Stile im Dokument überschreiben, muss die Import-Option
Textformatkonflikte lösen mit : Satzdateidefinition
eingestellt sein. Zum Einstellen dieser Option gehen Sie wie folgt vor:
%!TT-Texte sollten mit einem einleitenden <ParaStyle:...> beginnen. Das erste ParaStyle-Tag direkt hinter der Kennung erzeugt keinen neuen Absatz! Es ist aber zur Importsteuerung notwendig in folgender Weise:
Fehlt das einleitende ParaStyle, wird automatisch die Leerdefinition <ParaStyle:> verwendet.
Soll der importierte Text mit einem neuen Absatz beginnen, müssen also zwei ParaStyles angegeben werden.
Text kann wie folgt mit Formatierungshinweisungen versehen werden :
Texttyp | Prefix | priint:comet-Tag | Kurzbeschreibung |
Einfacher Text | - | Einfacher Text. Der Text kann spezielle Formatierungen für Zeichen enthalten. | |
Tagged Text | <ASCII-WIN> | siehe hier | Klassischer InDesign®-Text wie er von InDesign® beim Exportieren generiert wird. Der Text darf priint:comet-Tags enthalten. |
Tagged Text ohne Stildefinitionen | %!TT | siehe hier |
Wie Tagged Text, aber ohne den Header mit den Stildefintionen. Verwendete Stile, Farben, usw. sollten im Dokument definiert sein, ansonsten werden leere Definitionen angelegt. Beachten Sie bitte auch die Beschreibungen zur Kodierung von Sonderzeichen. Ist die erste Absatzdefinition leer (<ParaStyle:>), bleibt der Absatzstil an der Einfügestelle unverändert. Ist die erste Absatzdefinition nicht leer wird wie folgt unterschieden:Textplatzhalter: Die aktuelle Absatzdefinition wird nicht verändert. [Ab v4.3 R35350] Mit der Angabe !important erzwingen Sie, dass der Absatzstil am Beginn des Platzhalters geändert wird. Die Angabe wird durch Leerzeichen getrennt an den Stilnamen angefügt und ist nur im ersten <ParaStyle:...> erlaubt. Der Absatz, in dem der Platzhalter beginnt, bekommt den Stil Head. Der darauf folgende Absatz bekommt den Stil SubHead. Achtung: Endet der Platzhalter innerhalb eines Absatzes, bekommt der Absatz am Ende trotzdem den Stil SubHead! %!TT<ParaStyle:Head !important>abc<ParaStyle:SubHead>def
Rahmenplatzhalter: Die erste Absatzdefinition wird ebenfalls angewendet. 'Normales' Skript: Der Absatzstil wird nur übernommen, wenn die Einfügestelle an einem Absatzanfang steht. [Ab v4.3 R35350] Mit der Angabe !important erzwingen Sie, dass der Absatzstil der Einfügestelle geändert wird. Die Angabe wird durch Leerzeichen getrennt an den Stilnamen angefügt und ist nur im ersten <ParaStyle:...> erlaubt. Der Absatz an der Einfügestelle bekommt den Stil Head. Der darauf folgende Absatz bekommt den Stil SubHead. Achtung: Endet der eingefügte Text innerhalb eines Absatzes, bekommt der Absatz am Ende trotzdem den Stil SubHead! %!TT<ParaStyle:Head !important>abc<ParaStyle:SubHead>def
Der Name "TT" leitet sich (ganz klar) aus dem Wort TaggedText her. |
%!T+ |
[Ab v4.0.5 R9401] Wie %!TT, aber lokale Änderungen werden nicht entfernt. Der Name "T+" ist eine Zusammenfassung aus "TT" und dem (nicht angewendeten) +-Entferner. | ||
%!CC |
[Ab v4.0.5 R9401] Wie Tagged Text, aber Absatzeigenschaften im importierten Text werden, so weit das möglich ist, in lokale Zeichenattribut-Änderungen umgewandelt. So kann z.B. die Farbe des eingefügten Textes von der Farbe des umgebenden Absatzes abweichen. Reine Absatzeigenschaften wie Textausrichtung oder Einzug werden aber nicht aus dem Import übernommen. Diese Verhalten entspricht dem InDesign®-Verhalten bei Copy/Paste, daher auch der Name "CC". |
||
%!PP |
[Ab v4.0.5 R9401] Wie %!TT, aber alle Absatzeigenschaften des importierten Text werden auf den gesamten Absatz der Einfügestelle angewendet. Lokale Änderungen werden dabei entfernt. Der Name "PP" ist ein Anlehnung an das Kürzel "TT", nur dass hier eben die Paragraph-Eigenschaften im Vordergrund stehen. |
||
%!P+ |
[Ab v4.0.5 R9401] Wie %!PP, aber lokale Änderungen werden nicht entfernt. Der Name "P+" leitet sich aus "PP" und dem (nicht angewendeten) +-Entferner ab. |
||
XPress Markentext | %!XT | siehe hier |
Absatzeigenschaften sind, allgemein gesprochen, alle Eigenschaften, die die Gestaltung des Absatzes betreffen und keine Schrifteigenschaften sind. In TaggedText-Notation sind sie leicht daran zu erkennen, dass die Tagnamen mit 'p' oder 'bn' (Listeneigenschaften) beginnen, also etwa pTextAlignment oder bnListType. Eine vollständige Liste der verwendeten Tags finden Sie hier.
TaggedText ist häufig unvollständig insbesondere in Bezug auf die verwendeten Absatz-, Tabellen- und Zellstile. Die priint:priint:comet InDesign® Plug-Ins bieten deshalb die Möglichkeit von Selbstkorrekturen des Textes vor dem Import. Mehr Informationen dazu finden Sie hier.
Die Autokorrektur wird in der Regel in der Skriptanweisung zum Import des Textes (z.B. textmodel::insert) aktiviert. Soll Text direkt importiert werden, kann die Selbstkorrektur aktiviert werden, indem das ! des Trailers durch den nach untenstehender Tabelle kodierten Wert des Korrektur-Flags ersetzt wird. Diese Angabe hat Vorrang vor dem Autokorrektur- Flag in textmodel::insert et al..
Beachten Sie bitte: Die folgenden Auto-Korrekturen werden nur im integrierten Importmodus unterstützt:
[Seit v4.3 R36870] Sind alle Prüfungen abgeschaltet (!0TT) werden bei Eingaben, die länger als 2 MB sind, auch die folgenden beiden Standard-Korrekturen abgeschaltet:
<w2:xdata>...<CharStyle:AA>...<w2:>
zu
<w2:xdata>...<w2:><CharStyle:AA><w2:xdata>...<w2:>Entfernen leerer <ParaStyle:>s in Zellen, die durch Zellverbindugen (Merges) verdeckt sind. Diese <ParaStyle:>s können zu zusätzlichen leeren Absätzen in der Parent-Zelle oder zum Verschieben von Zellinhalten in vorangegange Zellen führen.
Trailer | 32 Hyperlinks reparieren | 16 <in:> ersetzen durch <w2inline:> | 8 Tabellen prüfen | 4 Unvollständige Abssatstile im gesamten Text | 2 Fehlende Absätze in allen Tabellenzellen | 1 Fehlende Absätze in leeren Tabellenzellen |
! | • | • | • | • | ||
0 |
Alle Auto-Korrekturen abgeschaltet. [Seit v4.3 R36870] Zusätzlich werden bei Eingaben, die länger als 2 MB (Bytes, nicht Zeichen!) sind, automatisch folgende Standard-Korrekturen abgeschaltet:
Nähere Informationen siehe oben. |
|||||
1 | • | |||||
2 | • | |||||
3 | • | • | ||||
4 | • | |||||
5 | • | • | ||||
6 | • | • | ||||
7 | • | • | • | |||
8 | • | |||||
9 | • | • | ||||
A | • | • | ||||
B | • | • | • | |||
C | • | • | ||||
D | • | • | • | |||
E | • | • | • | |||
F | • | • | • | • | ||
G | • | |||||
H | • | • | ||||
I | • | • | ||||
J | • | • | • | |||
K | • | • | ||||
L | • | • | • | |||
M | • | • | • | |||
N | • | • | • | • | ||
O | • | • | ||||
P | • | • | • | |||
Q | • | • | • | |||
R | • | • | • | • | ||
S | • | • | • | |||
T | • | • | • | • | ||
U | • | • | • | • | ||
V | • | • | • | • | • | |
W | • | |||||
X | • | • | ||||
Y | • | • | ||||
Z | • | • | • | |||
a | • | • | ||||
b | • | • | • | |||
c | • | • | • | |||
d | • | • | • | • | ||
e | • | • | ||||
f | • | • | • | |||
g | • | • | • | |||
h | • | • | • | • | ||
i | • | • | • | |||
j | • | • | • | • | ||
k | • | • | • | • | ||
l | • | • | • | • | • | |
m | • | • | ||||
n | • | • | • | |||
o | • | • | • | |||
p | • | • | • | • | ||
q | • | • | • | |||
r | • | • | • | • | ||
s | • | • | • | • | ||
t | • | • | • | • | • | |
u | • | • | • | |||
v | • | • | • | • | ||
w | • | • | • | • | ||
x | • | • | • | • | • | |
y | • | • | • | • | ||
z | • | • | • | • | • | |
# | • | • | • | • | • | |
* | • | • | • | • | • | • |
Aktiviere die Autokorrektur-Flags 2, 4, 8 und 16 direkt im TaggedText.
%UTT... weil Bit 16, 8, 4, und 2 in der Zeile U aktiviert sind
Der eingefügte Text darf Textplatzhalter enthalten. Fehlende Platzhalterdefinitionen werden automatisch aus dem Datenbestand geladen. Nicht definierte Platzhalter werden aus dem eingefügten Text entfernt.
Die Inhalte eingefügter Platzhalter werden automatisch geladen. Mit dem Hinweis
autoload=...%!TT...
ganz am Anfang des eingefügten Textes und noch vor der %!..-Markierung können Sie steuern, wie innere Platzhalter im eingefügten Text behandelt werden sollen.
In cScript-Aufrufen von frame::replace et. al. kann das automatische Laden der inneren Platzhalter auch mit dem Parameter autoload unterdrückt werden. Enthält der eingefügte Text den Importhinweis autoload=off/on, wird dieser Parameter ignoriert.
Folgende Angaben für autoload werden unterstützt. Mehrere Angaben werden durch Leerzeichen oder Komma getrennt:
Schlüsselwort | Beschreibung |
off | Innere Platzhalter im eingefügten Text werden nicht geladen. |
on | Innere Platzhalter im eingefügten Text werden geladen. |
prefer-inner |
Enthält der eingefügte Text keine inneren Platzhalter, wird der originale Platzhalter über den gesamten eingefügten Text gesetzt. Enthält der eingefügte Text mindestens einen inneren Platzhalter, wird der originale Platzhalter entfernt und die inneren Platzhalter werden gemäß on, off behandelt. |
Gegeben sei ein Platzhalter, der folgenden TaggedText einfügt. (Zur besseren Lesbarkeit sind die einzelnen Textabsätze durch Zeilentrenner getrennt.)
%!TT <ParaStyle:H1> <w2: 20, 1, 0, 0, '', infos1 'Travel Report'>Headline<w2:> <ParaStyle:H2> <w2: 30, 1, 0, 0, '', infos1 'Ho Chi Minh City'>Chapter 1<w2:> <ParaStyle:H2> <w2: 30, 1, 0, 0, '', infos1 'Ben Tre'>Chapter 2<w2:> <ParaStyle:H2> <w2: 30, 1, 0, 0, '', infos1 'Miu Ne'>Chapter 3<w2:> <ParaStyle:H2> <w2: 30, 1, 0, 0, '', infos1 'Da Lat'>
Hier ein Screenshot des Platzhalters vor dem Laden:
Die inneren Platzhalter 20 und 30 des eingefügten Textes laden zur Vereinfachung lediglich ihren jeweiligen Infos1-Text.
int main() { textmodel::replace(placeholder::sget_value (gFrame, "Infos1", textmodel::start ()));
return 0; }
Mit den verschiedenen Angaben von autoload erhalten Sie folgende Ergebnisse. Die Ergebnisse unterscheiden sich im integrierten und historischen Import.
Hier die Ergebnisse mit dem historischen Import, also wenn das Menü Integriertes Anlegen von Platzhaltern aus TaggedText deaktiviert ist:
autoload | Ergebnis |
Leer |
![]() Die inneren Platzhalter werden geladen. Aber Achtung: Die 'freien' Texte zwischen den inneren Platzhaltern behalten den aktuellen Platzhalter! Erneutes Laden des Textes wird die Anzahl der Platzhalter im Text also potenzieren! |
off |
![]() Die inneren Platzhalter werden nicht geladen. Aber Achtung: Die 'freien' Texte zwischen den inneren Platzhaltern behalten den aktuellen Platzhalter! Beim Laden des Textes wird die Anzahl der Platzhalter im Text also vervielfacht! |
off, prefer-inner |
![]() Die Angabe hat in diesem Fall keine Auswirkung und erzeugt das gleiche (etwas gefährliche) Ergebnis wie autoload=off%!TT... in der Zeile darüber. |
on |
![]() Das Ergebnis ist das gleiche, wie wenn man die autoload-Info wegläßt. |
on, prefer-inner |
![]() Das Ergebnis ist das fast das gleiche, wie wenn man die autoload-Info wegläßt. In diesem Fall werden aber die gefährlichen Platzhalter zwischen den inneren Platzhaltern entfernt. Das Ergebnis wird also in (fast) allen Fällen das beste sein und wir haben es nur aus Gründen der Rückwärts-Kompatibilität nicht zum Standard gemacht.
|
Hier die Ergebnisse mit integrierten Import, also wenn das Menü Integriertes Anlegen von Platzhaltern aus TaggedText aktiviert ist.
Auch wenn der integrierte Modus bei inneren Platzhaltern auf den ersten Blick die schlechteren Ergebnisse liefert, ist dieser Modus die bessere Wahl.
autoload | Ergebnis |
Leer |
![]() Der aktuelle Platzhalter wird vor dem Laden der inneren Platzhalter über das Ergebnis gesetzt. Die inneren Platzhalter gehen verloren und werden nicht geladen. |
off |
![]() Gleiches Ergebnis wie 'Leer' eine Zeile darüber. |
off, prefer-inner |
![]() Der Platzhalter wird durch seine inneren Platzhalter und den Text zwischen diesen Platzhaltern ersetzt. Die inneren Platzhalter werden aber nicht geladen. Im Unterschied zum historischen Modus haben die Texte zwischen den inneren Platzhaltern keinen Platzhalter mehr - werden also bei erneutem Laden nicht vervielfacht. |
on |
![]() Gleiches Ergebnis wie 'Leer' in der ersten Zeile der Tabelle. |
on, prefer-inner |
![]() Der aktuelle Platzhalter wird entfernt und durch den eingefügten Text inklusive seiner inneren Platzhalter ersetzt. Die inneren Platzhalter werden geladen. Freie Texte zwischen den inneren Platzhaltern haben keinen Platzhalter. Das Ergebnis ist also in (fast) allen Fällen das beste und wir haben es nur aus Gründen der Rückwärts-Kompatibilität nicht zum Standard gemacht.
|
[Seit v4.1 R22423, 30. Apr 2018] Statt InDesign®-TaggedText kann der Text auch HTML-formatiert sein. HTML-formatierter Text wird durch _html_ direkt hinter dem %!TT-Trailer markiert.
HTML-Importe sind nicht Teil des WERK II Supportes!
Füge den Text "Hallo Welt!" ins Dokument ein. Der Zeichenstil "red" muß im Dokument definiert sein!
%!TT_html_Hallo <span class="red">Welt</span>!
TaggedText innerhalb des HTML können Sie im Pseudo-Tag <?IDTT ?> einfügen. Zur Eingabe nicht-xml-konformerer Steuerzeichen für TaggedText verwenden Sie das Pseudo-Tag <?ACE ?>.
Beachten Sie bitte, dass Schriftstile wie <i> oder <b> erst angewendet werden können, wenn vorher im HTML eine Schrift definiert ist. Sonst wird die Schrift an der Einfügestelle im Dokument verwendet. Weitere Informationen zur HTML-Konvertierung finden Sie hier.
Im folgenden wird die unterschiedliche Wirkung der Präfixe an Beispielen gezeigt. Stellen Sie sich vor, sie haben ein Dokument mit den in der Abbildung gezeigten zwei Absatzstilen:
#include "internal/text.h"
int main () { String str = string::alloc (); char tt [2048]; textmodel::gettext (str, 0, 4, kExportPlain); sprintf (tt, "%s%s%s%s", string::get (str), // Prefix "<bnListType:Bullet><cTypeface:Bold>", string::get (str), "<cTypeface:> Aufz<0x00E4>hlung<bnListType:>"); textmodel::replace (tt, 0, -1); return 0; }
Das Bild zeigt dann (links) verschiedene Situationen, in denen sich ein Platzhalter befinden kann und (rechts) die geladenen Platzhalter. Keiner der Platzhalter soll einen neuen Absatzstil setzen. Aber wie Sie sehen, können %!PP und %!P+ die Anweisung, einen Aufzählunspunkt anzulegen, auch
tatsächlich verwirklichen. Bei %!P+ sehen Sie zudem, dass lokale Änderungen im Absatz erhalten bleiben: BLAU und GRüN werden nämlich nicht schwarz.
Jetzt wird der Platzhalter geringfügig geändert: Direkt hinter dem Präfix wird noch der Absatzstil
"<ParaStyle:HTML\\_comet\\:UnorderedList-li>"
eingefügt. Dann ergibt sich das untenstehende Bild. Sie sehen,
dass zwar alle Präfixe den geforderten Stil auch anwenden. Aber auch hier realisieren nur %!PP und %!P+ den Aufzählungspunkt des TaggedTextes. Und nur die +-Präfixe erhalten dabei auch die lokalen Änderungen.
Beim Einfügen des formatierten Textes werden zwar die aktuellen Absatzdefinitionen angewendet. Von der Absatzstildefinition abweichende Formatierungen an der Einfügestelle werden aber nicht über den eingefügten Text weitergezogen.
Stellen Sie sich vor, Sie haben einen Absatz mit der Schrift Courier und
20 Punkt Schriftgrösse. An der Einfügestelle wurde aber - abweichend von diesen Definitionen, die Schriftgrösse auf 30 Punkte verändert und der Font Arial verwendet. Der eingefügte
Text wird dann, wenn nichts anderes angegeben ist, in 20 Punkt Grösse und Courier eingefügt. Im folgenen Text soll hinter nr eine Nummer eingefügt werden, deren letzte beiden Stellen hochgestellt und extra klein sind.
%!TT14<CharStyle:Hochgestellt>.01
Littera gothica quam nr.
Littera gothica quam nr 14.01.
Man hätte eigentlich erwartet, dass die 14 ebenfalls in grösserem Arial erscheint und die 01 immerhin in Arial. Das Problem ist, dass sich hier
zwei Einstellungen streiten, die manuelle Schriftvergrösserung und die Formartierung des eingefügten Textes. Nun, üblicherweise gewinnt in diesem
Konflikt der neue Text - und dort steht ja nichts von einer grösseren Schrift.
Die manuellen Formatierungen am Einfügepunkt kennen Sie aber zur Zeit der Erstellung des TT-Textes gar nicht. Sie benötigen also einen Joker, der Ihnen diese Einstellungen automatisch gibt. Joker dürfen beliebig oft verwendet werden. Sie gelten aber jeweils nur bis zur nächsten Zeichenstilanwendung (<CharStyle:...>) oder bis zum nächsten Absatz (<ParaStyle:...>). Folgende Joker sind definiert :
Anwendung | Syntax | Beschreibung |
Komplett | <???> | Der Joker wird ersetzt durch alle Texteinstellungen, die an der Einfügestelle vom Absatzstil abweichen. |
Partiell | <???: style1:style2...> |
Der Joker wird ersetzt durch alle Texteinstellungen, die an der Einfügestelle vom Absatzstil abweichen und nicht in der durch : getrennten Liste
enthalten sind. Als Stile sind alle von InDesign® TaggedText definierten Zeichenstile erlaubt, siehe hier.
über die Abweichungen an der Einfügestelle wissen Sie vielleicht nichts. Einen Zeichenstil, den Sie im TaggedText verwenden, kennen Sie aber. Sie wissen vielleicht, dass der Stil eine eigene Textgrösse verwendet. Dann schließen Sie die Textgrösse (cSize) beim Joker aus. |
Mit den Jokern können Sie nun das obige Beispiel (Littera gothica quam nr.) richtig beherrschen. Fügen sie einen komplette Joker am Anfang ein. Die 14 wird dadurch groß und in Arial erscheinen.
%!TT<???>14<CharStyle:Hochgestellt><???>.01
Littera gothica quam nr 14.01.
Das stimmt jetzt schon fast. Nur die Schriftgrösse von 01 ist noch nicht richtig. Hochgestellt verwendet ja außerdem eine kleinere Schrift. Im zweiten Joker müssen wir also die Schriftgrösse ausschließen:
%!TT<???>14<CharStyle:Hochgestellt><???:cSize>.01
Littera gothica quam nr 14.01.
Als aufmerksame Leser(innen) haben Sie jetzt natürlich bemerkt, dass das obige Beispiel viel einfacher zu lösen ist und %!TT und Joker gar nicht benötig werden :
Es genügt völlig, den Text einfach unformatiert einzufügen und nur auf die Zeichenformate des einfachen Textes zurückzugreifen:
14<CharStyle:Hochgestellt>.01
Littera gothica quam nr 14.01.
Sollte das bei der Lösung Ihres speziellen Problemes auch gehen, verzichten Sie auf %!TT und Joker und verwenden Sie das viel schnellere einfache Einfügen mit Zeichenformatierung.
Nur zur Erinnerung und damit Sie sehen, was für eine Karte der Joker ist, hier noch einmal alle in InDesign® TaggedText definierten Schlüsselwörter für Zeicheneinstellungen:
Typ | Tag |
Grundlegende Zeicheneinstellungen |
cFont cSize cTypeface cAutoPairKern cLigatures cTracking cCase cKerning cLeading cNoBreak cUnderline cPosition cStrikethru |
Erweiterte Zeicheneinstellungen |
cHorizontalScale cVerticalScale cSkew cBaselineShift cLanguage |
Zeichenfarbe |
cColor cStrokeColor cColorTint cStrokeTint cStrokeWeight cOverprint cStrokeOverprint |
OpenType Funktionen |
cOTFOrdinal cOTFFractions cOTFDiscLig cOTFTitlAlt cOTFContAlt cOTFSwaAlt cFigureStyle |
Unterstreichungsoptionen |
cUnderlineColor cUnderlineGapColor cUnderlineGapOverprint cUnderlineOverprint cUnderlineGapTint cUnderlineOffset cUnderlineTint cUnderlineWeightOffset cUnderline |
Durchstreichungsoptionen |
cStrikeThroughColor cStrikeThroughGapColor cStrikeThroughGapOverprint cStrikeThroughGapTint cStrikeThroughOffset cStrikeThroughOverprint cStrikeThroughTint cStrikeThroughWeightOffset cStrikeThroughType |
Der Text muss mit %!XT beginnen und wird im ersten Schritt automatisch in %!TT-formatierten Text verwandelt. Sie können die Ausgabe diese Umwandlung mit dem Skriptbefehl text::xpress_to_tagged überprüfen. Über technische Details informatiert cxTexttempl2IQuest.
Absätze und Softreturns können mit den in der folgenden Tabelle beschriebenen Angaben ins Dokument eingefügt werden :
Typ | Eingabe | Beschreibung |
%!TT | <ParaStyle:...> | Absatztrenner, mglw. ohne Absatzstil, siehe auch hier |
<nl:> | Absatztrenner, aber im Unterschied zu <ParaStyle:...> wird hier immer der gleiche Absatzstil fortgesetzt. | |
<add_para_delim:> |
Ab 4.1.8 R27406 und nur für InDesign® Platzhalter über mehrere Absätze werden durch InDesign mit geänderten Zeilentrennern im TaggedText markiert (siehe hier). Damit die geänderten Zeilentrenner beim priint:comet-Textimport erhalten bleiben, müssen sie speziell markiert werden. Nach der automatischen Textkorrektur werden die Tags wie folgt ersetzt:
|
|
<rm_para_delim:> | ||
\n | Softreturn | |
\r | wird ignoriert | |
\r\n | ||
%!XT | \n | Absatztrenner |
<\n> | Softreturn | |
<\#10> |
Tagname | Syntax | Beschreibung |
Textplatzhalter | ||
w2 | <w2:...>your text</w2> | Um den von den Tags umschlossenen Text wird ein Textplatzhalter gesetzt. Die Definition des Platzhalterhalters steht im Tag.
Alternativ zum Ende-Tag </w2> kann auch <w2:> verwendet werden. |
w2cross | <w2cross:...> | Erzeuge ein Querverweis-Ziel im Dokument. Das Tag hat kein abschließendes Tag. |
outw2 | <outw2:type 1, color 0>your text<outw2:> | Platzhalter-Prä/Postfix. Weitere Informationen finden Sie hier.. |
Inlines und verankerte Rahmen | ||
in | <in:...>any text</in> |
Erzeuge einen Inline-Rahmen im laufenden Text. Der Rahmen kann wahlweise mit Text oder einem Bild gefüllt werden und mit
einem Rahmenplatzhalter verknüpft wernde. In-Tags
dürfen geschachtelt werden.
Alternativ zum Ende-Tag </in> kann auch <in:> verwendet werden. |
w2inline | <w2inline:...>any text<w2inline:> |
[Ab v4.1 R21000] Das Tag entspricht dem <in:>-Tag mit dem Unterschied, dass es in den Standardimport/-export von TaggedText integriert ist und dadurch auch in tiefer verschachtelten Tabellen verwendet werden kann. Wenn Ihre bisherige Implementierung mit <in>-Tags arbeitet und funktioniert, gibt es keinen Grund, das zu ändern. Für neue Implementierungen empfehlen wir dringend, das neue <w2inline>-Tag zu verwenden. |
graphiccell | <graphiccell:...>any text<graphiccell:> |
[Ab v4.1 R21000 und CC2015] Umwandeln einer Tabellenzelle in eine Grafikzelle und Gestaltung des neuen Grafikrahmens.
Das Tag darf nur innerhalb von Tabellenzellen verwendet werden! |
floating | <floating:...>any text</floating> | Erzeuge einen 'schwebenden Rahmen' zu dem Text, der dem Tag unmittelbar folgt. Nicht mehr unterstützt seit R 333 (11. April 2007). Verwenden Sie statt dessen die Funktionen frame::inline_, frame::inline_above, frame::anchor und frame::gt_anchor oder textmodel::inline_, textmodel::inline_above, textmodel::anchor und textmodel::gt_anchor. In Releases vor R 333 (11. April 2007) muss das Plugin FloatingElements installiert sein.} |
Tabellenaufbau | ||
w2table | <w2table:...> | Tabelleninformation des Tabellenmodules. Weitere Informationen finden Sie hier. |
w2cell | <w2cell:...> | Zellinformation des Tabellenmodules. Weitere Informationen finden Sie hier. |
Absatztrenner | ||
nl | <nl:> | Absatztrenner in den Text einfügen |
w2para | <w2para:> | Absatztrenner mit Platzhalter. Weitere Informationen finden Sie hier. |
Ohne die priint:priint:comet InDesign® Plug-Ins EmebddedLink und Comet oder eine seiner Varianten "kennt" InDesign® die o.g. Tags nicht und kann diese Tags natürlich auch nicht importieren. Die Tags erscheinen dann als Textinhalt im Dokument.
Die für die Textplatzhalter von priint:comet verwendeten Definitionen (w2, w2inline, ...) sind Erweiterungen des InDesign®-Standards. Ohne weitere Lösungen wird InDesign diese Definitionen beim Import von sogenanntem TaggedText als Fehler ansehen (und direkt und unverändert ins Dokument einfügen). Die priint:comet Plug-Ins bieten zwei Möglichkeiten zum Import von TaggedText mit Platzhaltern.
Vor dem eigentlichen Import werden alle Platzhalter aus dem TaggedText gesammelt und dann entfernt. Nach dem Import werden die gesammelten Platzhalter auf den importierten Text angewendet. Dieser Ansatz hat zwei Nachteile: Technische Details von InDesign® machen es unmöglich, aus der Textposition im TaggedText immer die richtige Zielposition im Text vorherzuberechnen. Treten dabei Fehler auf, werden die Platzhalter falsch angelegt. Und natürlich wird diese Lösung nicht im Standard-Import funktionieren.
Durch eine Erweiterung des in InDesign® integrierten TaggedText-Importers können die Platzhalter direkt beim Import angelegt werden. Diese Erweiterung löst beide Probleme des historischen Ansatzes.
Die folgenden priint:comet-Tags können beim integrierten TaggedText-Import verarbeitet werden:
Mit Hilfe der Menüs
Die folgenden Tabelle gibt Aufschluss darüber, wie die im Text enthaltenen Platzhalter(informationen) behandelt werden :
Format/Aktion | Bemerkungen |
Export von InDesign®-TaggedText |
Integrierter Export Ist die Option Platzhalter in TaggedText schreiben aktiviert, werden alle priint:comet Platzhalter und deren Definitionen in den exportierten TaggedText geschrieben. ACHTUNG Inlines und Grafikzellen werden von Adobe nicht in den TaggedText übernommen und der Export kann leider auch von uns nicht so erweitert werden, dass diese Informationen in das Ergebnis übernommen werden!
Historischer Export Ist die Option Platzhalter in TaggedText schreiben deaktiviert, werden keine priint:comet Platzhalter in den TaggedText geschrieben.
Auf Grund eines technischen Details kann der Export der Platzhalter an dieser Stelle aber nicht vollständig unterdrückt werden.
An Stelle der Platzhalter wird die leere Absatzstil-Information |
Import von InDesign®-TaggedText |
Integrierter Import Ist die Option Integriertes Anlegen von Platzhaltern aus TaggedText aktiviert, werden priint:comet Platzhalter mit vollständigen Definitionen in das Dokument übernommen. Bei Platzhaltern ohne vollständige Definition wird versucht, die nötigen Definitionen aus der Datenverbindung zu lesen. Wird die Definition gefunden, kann der Platzhalter vollständig ins Dokument importiert werden. Wird die Definition nicht gefunden, wird ein Platzhalter mit der ID 0 angelegt. ACHTUNG Grafikzellen werden von Adobe nicht in den TaggedText übernommen und der Standart-Import kann leider auch von uns nicht so erweitert werden, dass diese Informationen importiert werden könnten! Die Tags werden, wie alle unbekannten Tags als Text ins Dokument eingefügt. Historischer Import Ist die Option Integriertes Anlegen von Platzhaltern aus TaggedText deaktiviert, werden priint:comet Platzhalter im TaggedText ignoriert (und erscheinen auch nicht als unbekannte Tags im Dokumenttext). |
kExportTagged, <TaggedText> kExportTT, <tttext> |
Der exportierte TaggedText enthält keine Platzhalter-Tags oder leeren <dps:>-Tags. Die Einstellung, dass Platzhalter in den TaggedText geschrieben werden sollen, wird ignoriert. |
kExportW2, <w2text> | Der exportierte TaggedText enthält priint:comet Platzhalter und deren Definitionen. Die Einstellung, dass Platzhalter nicht in den TaggedText geschrieben werden sollen, wird ignoriert. |
Import über Comet-Funktionen (z.B. mit textmodel::insert) und Text-Trailer %!TT et al. |
Integrierter Import Ist die Option Integriertes Anlegen von Platzhaltern aus TaggedText aktiviert, werden Platzhalter und w2inlines beim Import direkt angelegt. Ist keine Definition des Platzhalters (LadenID, SyncID, ...) vorhanden, wird ein leerer Platzhalter mit der Platzhalter-ID 0 angelegt. Historischer Import Ist die Option Integriertes Anlegen von Platzhaltern aus TaggedText deaktiviert, ist der Import weitaus aufwendiger. Da InDesign® unsere Tags nicht kennt, würde es diese Tags als Text ins Dokument einfügen. Wir filtern daher vor dem Import alle unsere Tags aus dem Text heraus und merken uns deren Textposition und Inhalt. Diese Informationen werden dann nach dem Import über den importierten Text gelegt. Das Kritische daran ist die Vorhersage der Textposition allein aus dem TaggedText. So ist beispielweise die Länge von Tabellenankern gar nicht vorhersehbar und der Inhalt von Variablen, also auch deren Textlänge, erst nach dem Import bekannt. Wir empfehlen dringend, den Integrierten Import zu verwenden! |
Mit Hilfe dieses Tags können Textteile des eingefügten Textes mit Textplatzhaltern verknüpft werden. PlatzhalterID und die drei RecordIDs sind Ganzzahlen, für die (optionale) RecordStringID wird ein String in Anführungszeichen erwartet.
<w2: placeHolderID, recordID [, recordID2 [, recordID3 [, recordStringID [, definition]]] [, infos1 string] [, infos2 string] [, prefix string] [, prefixifempty string] [, postfix string] [, postfixifempty string] [, created string] -- im Format YYYYMMDDhhmmss [, modified string] -- im Format YYYYMMDDhhmmss [, rules string] [, functionvariables string] [, valuehashes string] [, apply_infos int] -- Infos1 und 2 übernehmen? 0 oder 1. [, static_link int] -- Feste Produkt-ID? 0 oder 1. [, state int] -- Status des Platzhalters, siehe hier (ab v4.2 R32030). >
Zwischen öffnendem und schließendem Tag muss mindestens ein Zeichen stehen, sonst kann es nicht in den Dokumenttext eingefügt werden : w2-Tags beschreiben Platzhalter, und - nun ja - irgendwas zum Festhalten müssen sie schon haben. Soll der Platzhalter unsichtbar sein, können Sie ein hairspace ( = <0x200A>) verwenden. Und achten Sie (wie bei jedem anderen Tag) bitte darauf, das Tag mit </w2> wieder zu schließen.
Ein Beispiel für einen Textplatzhalter mit einem Objekt, das auch eine StringID enthält, finden Sie hier.
Die Angabe der Platzhalterdefinition ist nicht zwingend. Die entsprechenden Werte können mit Hilfe der PlatzhalterID auch über die Datenbank ermittelt werden. Aber wenn sie diese Nachfragen vermeiden, kann der Dokumentaufbau bis zu 40% schneller werden. Folgende Werte müssen (nach dem Schlüsselwort definition) in dieser Reihenfolge und nur durch Leerzeichen getrennt angegeben werden:
[Ab Version 2.1, R 703, 6. Mai 2008] Mit diesen Angaben setzen Sie die Felder Infos1 und Infos2 des Platzhalters. Wird die Platzhalterdefinition aus dem Datenpool gelesen und nicht über die definition-Angabe gemacht, überschreiben diese Angaben die Werte von Infos1 und Infos2, die aus dem Datenpool gelesen werden.
[Ab Version 4.1, R10822, 9. April 2016] w2-Tags können die Werte von Funktionsvariablen für den
Platzhalter enthalten. Verwenden Sie dazu das Schlüsselwort functionvariables innerhalb des w2-Tags. Die Werte selbst werden als ein String angegeben.
Der String enthält für jeden Wert drei Unterstrings:
'"Name1" "Wert1" "ActionType1" "Name2" "Wert2" "ActionType2" ...'
Die Aktionstypen sind wie folgt definiert:
Wert | Aktion |
1 | Laden-Skript |
2 | Sichern-Skript |
3 | Sync-Skript |
4 | Aufbau-Skript |
Hier die Definition eines Platzhalters mit Werten für die Funktionsvariablen myA und myB im Ladenskript.
<w2: 20, 0, 0, 0, '',
functionvariables '"myA" "a2" "1" "myB" "prolet" "1"'
>dummy
<w2:>
[Ab Version 4.1, R21700] w2-Tags können Gestaltungsregeln für Platzhalter definieren.
Eine vollständige Liste aller Standardregeln für Texte finden Sie hier..
Gestaltungregeln werden mit dem Schlüsselwort
rules
eingeleitet. Die weitere Syntax zur Defintition von Textgestaltungsregeln in Text-Platzhaltern entspricht der
allgemeinen Syntax zur Definition von Gestaltungsregeln in Platzhaltern.
Achten Sie bitte darauf, Anführungszeichen in den Definitionen richtig zu escapen!
Gestaltungregel "Absatzstil setzen" mit dem Stil "blau" an den Platzhalter anfügen
rules '-2 2 ''blau'' '''' ''nein'' '''''
[Ab Version 4.1, R21700] Mit dem =-Werkzeug der Aufgabenpalette
kann der Synchron-Status eines Platzhalters fixiert werden. Mit dem Schlüsselwort
valuehashes
kann diese Fixierung bereits bei der Anlage des Platzhalters gemacht werden. Als Wert wird dabei ein Hashcode des fixierten
Wertes erwartet. Den Hashcode erhalten Sie, indem Sie einen entprechenden Platzhalter des Dokumentes in TaggedText exportieren und
den Hashcode von dort kopieren.
Hier ein Beispiel:
valuehashes 'd41d8cd98f00b204e9800998ecf8427ec7cc14b03ef32c175907b93021dee7e0'
w2-Tags können Festlegungen für Prä- und Postfixe des Platzhalters enthalten.
Verwenden Sie dazu die Schlüsselworte
prefix
prefixifempty
postfix
postfixifempty
innerhalb des w2-Tags. Die Werte
der Angaben sind jeweils Strings.
Hier die Definition eines Platzhalters mit einem Präfix.
<w2:
20,
0, 0, 0, '',
prefix '# pStyle "NITRO"',
prefixifempty '# pStyle "GLYZERIN"'
>
dummy
<w2:>
Wie Sie vielleicht schon bemerkt haben, sind InDesign® und TaggedText ein sehr empfindliches Paar. Kleinste Fehler können zu größten Mißverständnissen führen. Eine der Hauptursachen für fehlerhafte Importe (oder sogar Abstürze) sind falsche Zeilentrenner im TaggedText. Die Comet-Plugins korrigieren deshalb vor dem Import alle Zeilentrenner, die für <ParaStyle:...>s benötigt (oder gerade NICHT benötigt) werden. Generell werden dabei alle \r und \r\n aus dem Text entfernt. Danach wird vor jedem <ParaStyle:...> ein \r\n eingefügt. Dabei ergeben sich zwei Randfälle, in denen nicht mehr entschieden werden kann, ob es sich um eine fehlerhafte Eingabe oder ein gewünschtes Verhalten ergibt:
Der erste Fall tritt auf, wenn ein Absatztrenner am Ende eines Absatzes noch zu einem Platzhalter gehören soll:
Damit InDesign® diesen Text wiederherstellen kann, wird folgender TaggedText benötigt:
<w2:definition>abc\r\n
<w2:><ParaStyle:...
Die Korrektur wird die \r\n nach abc entfernen und statt dessen vor dem <ParaStyle einen neuen Zeilentrenner einfügen. Nach dem Import wird der Absatztrenner nicht mehr Teil des Platzhalters von abc sein.
Der zweite Fall tritt auf, wenn der vorhergehende Absatztrenner zum Platzhalter gehören soll:
Damit InDesign® diesen Text wiederherstellen kann, wird folgender TaggedText benötigt:
abc<w2:definition>\r\n
<w2:><ParaStyle:><w2:definition>
Auch hier wird die Korrektur die \r\n erst einmal entfernen und dann vor dem <ParaStyle einen neuen Zeilentrenner einfügen. Das dadurch entstehende inhaltsleere w2-Tag wird der Import ignorieren und wir erhalten das gleiche Ergebnis wie im Fall 1.
In beiden Fällen ist das Problem also das Gleiche: Der Zeilenumbruch für den Absatz steht nicht direkt vor dem <ParaStyle sondern einige End-Tags weiter vorne. Um das Problem zu lösen, fügen Sie an die Stelle, an der der Absatztrenner tatsächlich stehen soll, das Tag <w2para:> ein. Der Import wird dann (nachdem er die Zeilentrenner absatzkonform korrigiert hat) den Zeilentrenner an dieser Stelle einfügen und dafür vor dem darauf folgenden <ParaStyle den Zeilentrenner entfernen. Wird kein weiterer Absatz gefunden, wird das Tag einfach entfernt.
Achtung: Zwischen dem <w2para:> und dem <ParaStyle:...> dürfen nur schließende Tags stehen!
Mit dem w2para-Tag lösen Sie beide oben beschriebenen Probleme wie folgt (Die \n\r können Sie, wie Sie ja jetzt wissen, sowieso weglassen.):
Fall 1: Absatz-Ende zum Platzhalter
<w2:definition>abc<w2para:><w2:><ParaStyle:...
Fall 2: Vorhergehendes Absatzende zum Platzhalter
abc<w2:definition><w2para:><<w2:>ParaStyle:><w2:definition>
Das Tag definiert für einen Platzhalter einen Präfix- bzw. Postfix-Text: Steht das Tag direkt vor einem w2-Tag und hat die Angabe type 1, wird ein Präfix definiert. Direkt nach dem Ende eines w2-Tags und mit der Angabe type 2 wird ein Postfix-Text für den Platzhalter definiert. Zusätzlich zum Typ des Textes können Sie mit dem Schlüsselwort color die Farbe für die Platzhaltermarkierung festlegen. Geben Sie hier die ID einer definierten Farbe Ihres Datenpools an. Mit der Angabe 0 wird die Standardfarbe verwendet.
Hier ein Beispiel eines Präfixes:
<outw2: type 1, color 0><Mein Präfix<outw2:><w2:...
Erzeuge eine Querverweisdefinition im Dokument, siehe dazu auch die Funktion insert_crossref.
<w2cross: name classid id id2 id3 'stringid' linklen borderVisible borderWidth borderHilite borderStyle col1 col2 col3 col4 deleteBefore >
Alle Werte ab id2 sind optional. Aber wenn Sie einen hinteren Wert angeben wollen, müssen Sie dessen Vorgänger natürlich definieren. Die Bezeichner in der obigen Definition dürfen folgende Werte haben :
Name | Beschreibung | Default |
name | Name des Querverweiszieles. Der Name erscheint in der Palette Hyperlinks. Ist er leer, wird der Name Querverweis verwendet. | "" |
classid | Klassen-ID des folgenden Objektes | - |
id id2 id3 | Verweis-ID | 0 0 0 |
stringid | Verweis-StringID | '' |
linklen | Länge des Verweis-Zieles im Dokument. Um Fehler zu vermeiden, sollten Sie hier 0 verwenden. Aber grössere Werte sind durchaus erlaubt. | 0 |
borderVisible | Soll der Hyperlink im Dokument sichtbar sein? (0|1) | 0 |
borderWidth | Stärke des Rahmens (1|2|3). Andere Werte werden von InDesign® nicht unterstützt. | 1 |
borderHilite | Eines der Schlüsselworte Outline, Inset, Invert oder Invisible. | Outline |
borderStyle | Rahmenstil, Dashed oder Solid sind definiert | Dashed |
col1, col2, col3, col4 | Farbwerte im Bereich 0.0 - 100.0 oder -1.0. Sind drei Werte definiert, wird eine RGB-Farbe verwendet, sind vier Werte definiert, wird CMYK verwendet (funktioniert noch nicht!). Sonst wird orange als Farbe verwendet. | -1.0 -1.0 -1.0 -1.0 |
deleteBefore | Soll eine Querverweisdefinition direkt vor der Einfügestelle zuvor entfernt werden? (0|1) | 1 |
Hier ein Beispiel für ein gültiges w2cross-Tag :
<w2cross: '' 3 14 1 2008 'Paul' 0 1 1 Outline Dashed 100.0 50.0 0.0 -1.0 1 >
Mit Hilfe des Tags in können Rahmen innherhalb von Texten erzeugt werden. Die erzeugten Rahmen laufen dann mit dem Text mit.
Das in-Tag kann nicht in geschachelten Tabellen und in Tabellenzellen hinter Zellen mit inneren Tabellen verwendet werden. Benutzen Sie hierfür bitte das Tag w2inline.
Hier die vollständige Beschreibung der in:-Syntax. Zur besseren Lesbarkeit sind int-Werte mit einem i und float Werte mit einem f am Anfang bezeichnet.Die Syntax des Tags ist wie folgt:
<in:
-- Rahmengrösse in Punkten
-- (werden bei Vorlagen ignoriert!)
fwidth, fheigh -- Ganzzahlen erlaubt ab v4.3 R36043
[, -- Deser ganze Block ist optional.
-- Rahmenplatzhalter
-- (s.a. definition-Attribut)
iplid, id1, id2, id3 [, sRecordStringID] [, iPosNUMBER [, fBoundingVALUE]]
-- Bildpfad oder -URL
| "path" [, iPosNUMBER, [, fBoundingVALUE]]
]
{, -- Beliebig viele kommagetrennte Paare aus Schlüsselwort und Wert(en)
-- Textplatzhalter entfernen
cleartag
-- Einsetzen einer Vorlage
| ID iid -- beliebige Datenquelle, attribute und table müssen definiert sein
attribute name
| table name
| pageitemID iid -- gültiges Template
| classID iclassid
| apply_infos int -- (seit v4.0.5 R20300, 4. Okt. 2017) infos1 und infos2 anwenden, Addition der folgenden Werte:
0 : nein
1 : nur auf verlinkte Rahmen
2 : auch auf nicht-verlinkte Rahmen
4 : Textplatzhalter in den Rahmen
-- Rahmengestaltung
| fitframe -- Rahmen an Inhalt anpassen, einzeilige Texte behalten ihre Breite
| fitframe_hh -- Rahmen an Inhalt anpassen
| columns iNums fGutter
| oval
| polygon iSides
| star iEdges iInset_len
| spline points -- siehe Beschreibung der Spline-Definition in frame::create
| color "name"
| color iR iG iB
| opacity fTint iMode
| stroke "color" fWidth -- Name der Rahmenfarbe und Stärke des Rahmens in Punkten
| stroke iR iG iB fWidth -- Rahmenfarbe in RGB-Werten und Stärke des Rahmens in Punkten
| stroke_type iLinetype iAlignment fMiter -- [seit v3.3.1 R4300] Linientyp, Ausrichtung, Gehrungsgrenze in Punkten
| stroke_gap "color" fTint -- [seit v3.3.1 R4300] Name und Farbton (0-100) der Farbe für die Lücken
| stroke_gap iR iG iB -- [seit v3.3.1 R4300] RGB-Werte der Farbe für die Lücken
| stroke_tint fTint -- [seit v3.3.1 R4300] Farbton (0.0-100.0) des Rahmens, nur bei benannten Rahmenfarben
| shadow "name" fOpac iMode fdDX fDY fBlur
| shadow iR iG iB fOpac iMode fDX fDY fBlur
| vignette iCorner fWidth iType fouter_opacity finner_opacity -- siehe auch hier
| wrap (±iMode | ignore) [fLeft fTop fRight fBottom]
| objectstyle 'object_path' -- [seit v3.4 R5126] Objektstil des Inlines, mehr dazu siehe hier
| embed_image 0 | 1
-- Bildgeometrie -- [seit v4.1 R23700]
Die Operationen werden in der Reihenfolge der jeweils festgelegten Prioritäten ausgeführt.
Position
| i_pos_prio iprio -- 0-4
| i_pos_x fpos
| i_pos_y fpos
Größe
| i_size_prio iprio -- 0-4
| i_size_width fpts -- Wenn die Angabe der Höhe fehlt, wird die Höhe automatisch berechnet.
| i_size_height fpts -- Wenn die Angabe der Breite fehlt, wird die Breite automatisch berechnet.
| i_size_refx fpts -- optional, aber wenn gesetzt, muß auch i_size_refy definiert sein
| i_size_refy fpts -- optional, aber wenn gesetzt, muß auch i_size_refx definiert sein
| i_size_refpoint
topleft | topcenter | topright |
centerleft | center | centerright |
bottomleft | bottomcenter | bottomright
Skalierung
| i_scale_prio iprio -- 0-4
| i_scale_width fvalue -- 1.0 entspricht 100%. Eine evtl. fehlende Höhenskalierung wird automatisch berechnet.
| i_scale_height fvalue -- 1.0 entspricht 100%. Eine evtl. fehlende Skalierung für die Breite wird automatisch berechnet.
| i_scale_refx fpts -- optional, aber wenn gesetzt, muß auch i_scale_refy definiert sein
| i_scale_refy fpts -- optional, aber wenn gesetzt, muß auch i_scale_refx definiert sein
| i_scale_refpoint
topleft | topcenter | topright |
centerleft | center | centerright |
bottomleft | bottomcenter | bottomright
Rotation
| i_rotate_prio iprio -- 0-4
| i_rotate fvalue
| i_rotate_refx fpt
| i_rotate_refy fpt
| i_rotate_refpoint
topleft | topcenter | topright |
centerleft | center | centerright |
bottomleft | bottomcenter | bottomright
Verzerrung
| i_skew_prio iprio -- 0-4
| i_skew fvalue
| i_skew_refx fpt
| i_skew_refy fpt
| i_skew_refpoint
topleft | topcenter | topright |
centerleft | center | centerright |
bottomleft | bottomcenter | bottomright
Abschließende Positionierung
| i_final_align
fillframe | -- InDesign®-Menü 'Anpassen -> Rahmen proportional füllen'
fitcontent | -- InDesign®-Methode 'Anpassen -> Inhalt proportional anpassen'
fitin | -- InDesign®-Methode 'Anpassen -> Inhalt an Rahmen anpassen'
fitframe | -- InDesign®-Methode 'Anpassen -> Rahmen an Inhalt anpassen'
center_ID | -- InDesign®-Methode 'Anpassen -> Inhalt zentrieren'
fitimage ipalignment fsize fmaxScale | -- frame::fit_image mit Comet-Platzierung (Methode 5)
topleft | topcenter | topright |
centerleft | center | centerright |
bottomleft | bottomcenter | bottomright
-- Verankertes Objekt
| type inline | above_line | anchored
Angaben für type inline
| yoffset fOffset -- Abstand von der Grundlinie in Punkten, Default 0.0
Angaben für type above_line
| align left | center | right | text | towards_spine | away_from_spine
| above fDist -- Abstand davor in Punkten, Default 0.0
| below fDist -- Abstand danach in Punkten, Default 0.0
Angaben für type anchored
| spine yes | no | 0 | 1
| object_reference
topleft | topcenter | topright |
centerleft | center | centerright |
bottomleft | bottomcenter | bottomright
| anchor_reference
topleft | topcenter | topright |
centerleft | center} | centerright |
bottomleft | bottomcenter | bottomright
| anchor_relative_x column | frame | margin | page | anchor
| anchor_offset_x fDist -- X-Offset in Punkten, Default 0.0
| anchor_relative_y
column | frame | margin | page|
baseline|
X_height | cap_height | ascent | leading|
em_box_top | em_box_middle | em_box_bttom
| anchor_offset_y fDist -- Y-Offset in Punkten, Default 0.0
| keep yes | no | 0 | 1
| lock yes | no | 0 | 1
-- Vertikale Textposition
| vjust top| center| bottom| system
-- Platzhalterdefinition
| definition
iclassid
irelatedto
iload
istore
isync
ilov
icharStyle
icolorid
isyncstate
iloadConstraint
-- Verwenden von Freistellpfaden und Alphakanälen
| clippath "name" -- siehe frame::image
| clipindex iindex
| clipflags iClipflags
| cliptoframe
| cliptolerance fValue Ignoriert seit v4.0.5 R18123.
| clipminpath fValue Ignoriert seit v4.0.5 R18123.
| clipinset fValue
| alphachannel "name" -- siehe frame::image
| alphaindex iindex
| alphatreshold iivalue
-- Standard-Rahmeneinpassungsoptionen von InDesign®, seit v4.0.5 R21000
-- Abstände und Beschnitt in Punkten und bezogen auf die Originalgröße (100%) des Bildes.
-- Im Bildrahmen wird der Wert mit der aktuellen Skalierung multipliziert.
| fitting
int Referenzpunkt 0-8, siehe hier
int Anpassungsmethode 0-3, siehe hier
float >0.0 : linker Beschnitt, <0.0 : linker Abstand
float >0.0 : oberer Beschnitt, <0.0 : oberer Abstand
float >0.0 : rechter Beschnitt, <0.0 : rechter Abstand
float >0.0 : unterer Beschnitt, <0.0 : unterer Abstand
int Automatisch einpassen? 0 | 1
int Sofort anwenden? 0 | 1
| infos1 sInfos1String
| infos2 sInfos2String
-- iPos ∈ {-9, 9, 10-16}
-- iR, iG, iB ∈ {0, 255}
-- iMode ∈ {0-16}
-- iCorner ∈ {0-2}
-- iType ∈ {0-3}
-- iClipflags ∈ {0-7}
}
> -- Schließende Klammer der Tag-Defintion
Rahmen können auch aus Vorlagen erzeugt werden. In diesem Fall geben Sie in den Attributen table,attribut und ID die Definition der Vorlage auf der Datenbank an. Sie können für die Vorlagen die Comet Palette 'Vorlagen' verwenden (table = pageitems, attribut = data).
Mit der classID können Sie steuern, welche Verweise des eingefügten Rahmens und dessen Text mit dem angegebenen Objekt id1, id2, id3 verknüpft werden sollen. Fehlt die Angabe, werden alle Platzhalter des Rahmens mit diesen Id-Werten verknüpft.
[Ab R1582, 7. Okt. 2009] Mit der Angabe von pageitemID können Sie ein Template direkt angeben. Die Felder table und attribut werden in diesem Fall ignoriert. Ebenso werden die Angaben zum Platzhalter (definition, infos1, infos2) und zur Rahmengestaltung (fitframe - objectstyle) ignoriert.
In der vorliegenden Version können nur Objekte einer Klasse oder alle Objekte neu verknüpft werden. Es ist noch nicht vorgesehen, eine Liste verschiedener ClassIDs und der zugehörigen Objekt-IDs anzugeben.
Im Normalfall werden Inline-Rahmen so in den Text von Textplatzhaltern eingesetzt, dass die Platzhalterdefinition auch über dem Rahmen gilt. Mitunter kann es erwünscht sein, an der Stelle, wo der Rahmen eingefügt wurde, den Platzhalter zu entfernen. Dann wird das Flag cleartag gesetzt. Wird der Rahmen innerhalb des Platzhaltertextes eingefügt, entstehen dadurch zwei Platzhalter (vor und nach dem Rahmen). Das Flag cleartag sollte also nur dann verwendet werden, wenn der Rahmen am Anfang oder am Ende des Platzhaltertextes eingesetzt wird.
Das ganze sieht nun reichlich verwirrend auch - ist es auch. Deshalb hier einige Beispiele für gültige Inline-Tags.
Die einfachste Definition erzeugt lediglich einen leeren Rahmen einer bestimmten Grösse:
<in:11.1, 22.2></in>
Soll dieser Rahmen mit dem Platzhalter 503 und dem Objekt [4, 0, 0] verknüpft werden, könnte folgende Definition verwendet werden:
<in:11.1, 22.2, 503, 4, 0, 0></in>
Ist der oben verwendete Platzhalter ein Bildplatzhalter, soll das Bild vielleicht nicht zentriert werden, sondern der Tabellenzelle angepasst werden, in die der Rahmen eingefügt wurde:
<in:11.1, 22.2, 503, 4, 0, 0, 16></in>
Die vertikale Textposition vjust gibt an, ob ein Text oben, in der Mitte oder unten in der Textbox platziert werden soll. Wählen Sie entsprechend einen der Werte top, center, bottom, system. Um Texte horizontal zu verschieben, kann im Text der Inline-Box (der Text zwischen Anfnags- und EndeTag) entweder ein entsprechender Absatzstil gewählt werden oder das Alignment explizit gesetzt werden:
<in:11.1, 22.2, vjust center>%!TT<pTextAlignment:Center>Mitte<pTextAlignment:></in>
Das Skript zeigt die Verwendung der für verankerte Rahmen defnierten Werte. Setzen Sie type entsprechend.
int main () { char tagged[20000]; int r; int type = 2;
strcpy (tagged, "%!TTHier kommt ein schwebender Rahmen. ");
strcat (tagged, "%lt;in: 50.0, 70.0"); strcat (tagged, ", color 255 0 0"); if (type == 0) { strcat (tagged, ", type inline"); strcat (tagged, ", yoffset 12.3"); } else if (type == 1) { strcat (tagged, ", type above_line"); strcat (tagged, ", align torwards_spine"); strcat (tagged, ", above 11.1"); strcat (tagged, ", below 22.2"); } else if (type == 2) { strcat (tagged, ", type anchored"); strcat (tagged, ", spine yes"); strcat (tagged, ", object_reference center"); strcat (tagged, ", anchor_reference centerleft"); strcat (tagged, ", anchor_relative_x frame"); strcat (tagged, ", anchor_offset_x 33.3"); strcat (tagged, ", anchor_relative_y baseline"); strcat (tagged, ", anchor_offset_y 7.7"); strcat (tagged, ", keep yes"); strcat (tagged, ", lock yes"); } strcat (tagged, ">"); strcat (tagged, "</in>");
strcat (tagged, " Er ist rot.");
frame::append (gFrame, tagged, 0, 0);
return 0; }
Vom in-Tag werden die in cscript verwendeten Konstanten für die Platzierungen nicht unterstützt. Hier müssen Sie entweder den jeweiligen Zahlenwert angeben oder den Platzhaltertext mit sprintf zusammensetzen:
char tt [1024]; char path [512] float width = 60.0 float height = 60.0; int placement = kPlaceTopCenter;
// Set the image path //
sprintf (tt, "%%!TT<in:%f, %f, '%s', %d></in>", width, height, path,
placement);
Hier finden Sie eine InDesign®-Datei mit Skripten und Bildern, in der die einzelnen Bildpositionierungen demonstriert werden.
\span[Deutlich]{Für das Beispiel benötigen Sie das Plugin CometXML.pln. Öffnen Sie die Datei 1.indd. In der Comet-Palette ist ein Popup zu sehen, das
den Eintrag image enthält. (Ist der Eintrag nicht vorhanden, ändern Sie die Datei geringfügig, machen Undo und sichern die Datei. Der Eintrag
sollte jetzt sichtbar sein.) Wählen Sie einen oder mehrere Rahmen ohne Bild aus und klicken einmal den Eintrag image an. Vergleichen Sie das Ergebnis mit den
fertigen Bildrahmen.
Die jeweiligen Skripte finden Sie so : Öffnen Sie die XML-Struktur des Dokumentes (das ist der kleine Knopf mit den Pfeilen unten links am
Dokumentfenster. Wählen Sie den gewünschten Rahmen aus - diesmal nur einen Rahmen. Navigieren Sie durch die XML-Struktur, der unterstrichene Eintrag
gehört zum ausgewählten Rahmen. Öffnen Sie den Eintrag, mit Doppelklick auf das Attribut image wird das Skript geöffnet.
Bilder können in Rahmenecken, zentriert und zentriert an den Rahmenkanten positioniert werden. Bilder, die grösser als der Rahmen sind, werden automatisch in den Rahmen skaliert. Kleinere Bilder bleiben in ihrer Grösse unverändert.
Die folgenden Tabellen geben alle Werte an, die für die automatische Positionierung von Bildern in Rahmen verwendet werden können. Ist über einen Freistellpfad ein Bildausschnitt definiert, wird der (rechteckige) Rahmen um den Bildausschnitt zur Bestimmung der Bildgrösse verwendet und die linke obere Ecke dieses Rahmens als als linke obere Ecke des Bildes verwendet. Hier finden Sie Testdateien für frame::image:
layoutrule_fitimage_CS55.indd
layoutrule_fitimage_CS6.indd
kPlaceTopLeft 8192 0x002000 1 |
kPlaceTopCenter 16384 0x004000 2 |
kPlaceTopRight 24576 0x006000 3 |
kPlaceMiddleLeft 32768 0x008000 4 |
kPlaceCentered 40960 0x00A000 5 |
kPlaceMiddleRight 49152 0x00C000 6 |
kPlaceBottomLeft 57344 0x00E000 7 |
kPlaceBottomCenter 65536 0x010000 8 |
kPlaceBottomRight 73728 0x012000 9 |
Die Platzierungsangaben aus den Comet-Versionen vor 1.4 R342 (kTopCenter, ...) behalten ihre Gültigkeit. Bei fehlerhaftem Verhalten dieser Werte verwenden Sie bitte die entsprechenden neuen Platzierungen. Die übersetzung ist einfach, statt kTopLeft jetzt kPlaceTopLeft, ... .
Für Web-Bilder werden zur Zeit nur die Platzierungen 1-9 (topleft, topcenter, topright, ...) und 10 (place like existing) unterstützt.
Existiert das einzusetzende Bild nicht, bleibt ein evtl. schon bestehendes Bild im Rahmen erhalten.
Diesen Umstand kann man sich zu Nutze machen, indem im Template (mehr oder weniger auffällige) Bilder verwendet werden, die auf ein fehlendes Bild hinweisen.
[Ab v4.1 R21001] Mitunter ist es erwünscht, das alte Rahmenbild zu entfernen, wenn das neue Bild nicht existiert. Um das zu erreichen, addieren Sie zum Wert der Bildposition den Wert kPlaceRemoveIfNoExist:
kPlaceRemoveIfNoExist
= 0x400000
= 4194304
Wurde eine Bilddatei nicht gefunden und das Positionsflag kPlaceRemoveIfNoExist ist gesetzt, geben die Funktionen zum Einfügen von Bildern (Platzhalter laden, frame::image, ...) den Fehler File not found (fnfErr, -43) zurück.
Platziere ein Bild unten rechts im Rahmen. Exisitiert die Bilddatei nicht, wird das bestehende Rahmenbild entfernt.
kPlaceRemoveIfNoExist + kPlaceBottomRight = 0x400000 + 0x012000 = 0x412000 = 4268032
Bild und Rahmen können beim Einsetzen des Bildes aneinander angepasst werden. In jedem Fall wird das Bild zuerst in der linken oberen Rahmenecke platziert, danach werden Bild und/oder Rahmen skaliert. Alle Skalierungen des Bildes berücksichtigen dessen Proportionen. Die Angaben können mit einem der Positionswerte addiert werden, dann wird versucht, das Bild am Ende des Prozesses entsprechend zu verschieben.
Füllt das Bild den Rahmen in einer Richtung vollständig aus, bleibt die entsprechende Positionierung wirkungslos. So ist die Angabe kFitContentWidth mit kPlaceTopCenter wirkungslos, weil das Bild schon die gleiche Breite wie der Rahmen hat und daher also auch schon zentriert ist.
Bezeichner Wert |
Beschreibung |
kImportOnly 10 |
Das Bild wird ohne Änderungen von Bild- oder Rahmengrösse eingefügt. |
kFitFrame 0 |
Rahmengrösse an Bildgrösse anpassen. Im Unterschied zu -kPlaceTopCenter werden bei kFitFrame Bilder, die grösser als der Rahmen sind, nicht verkleinert. |
kFitContent 11 |
Bild an den Rahmen anpassen. Das Bild wird unabhängig von seinen Proportionen auf die Rahmengrösse skaliert und kann sich dabei natürlich verzerren. Angaben zur Positionierung bleiben unberücksichtigt. |
kFitContentWidth 19 |
Bild proportional auf die Rahmenbreite skalieren. Die Rahmenhöhe bleibt unverändert |
kFitFrameHeight 12 |
wie kFitContentWidth, aber die Rahmenhöhe wird an die Höhe des skalierten Bildes angepasst |
kFitContentHeight 20 |
Bild proportional auf die Rahmenhöhe skalieren. Die Rahmenbreite bleibt unverändert |
kFitFrameWidth 13 |
wie kFitContentHeight, aber die Rahmenbreite wird an die Breite des skalierten Bildes angepasst |
kBestSide 17 |
Ist das Verhältnis von Rahmenbreite zu Bildbreite grösser als das der Höhen, wird das Bild an die Rahmenbreite angepasst. Sonst wird es an die Rahmenhöhe angepasst. Das Bild wird also, wenn seine Grösse nicht proportional zur Rahmengrösse ist, an einer Seite über den Bildrahmen hinausragen. |
kBestSideCentered 18 |
entspricht kBestSide + kPlaceCentered |
[Ab Version 2.1, R1320, 24. April 2009] Mit dem Setzen des Wertes kPlaceLikeExisting (=0x00100000=1048576) veranlassen Sie, dass beim Ersetzen bestehender Bilder alle aktuellen Bildeinstellungen im Dokument (Rotation, Zerrung, Schatten, ...) erhalten bleiben. Ist noch kein Bild gesetzt, wird das Flag ignoriert und die übrigen Platzierungs-Hinweise werden verwendet. Bei der Angabe von kPlaceLikeExisting werden Angaben über die Boundingbox, Bildbeschneidungen und eventuelle Rahmengrössenanpassungen ignoriert.
[Ab Version 3.2.1, R2330, 5. März 2011 und CS5] Verwenden Sie die Angabe kPlaceWithFittingOptions (=0x00200000=2097152),
um die im Menü
Objekt:Anpassen:Rahmeneinpassungsoptionen
gemachten Einstellungen zur Bildplatzierung im Rahmen zu verwenden. Diese Einstellungen können erst ab CS5 gemacht werden. In Versionen vor CS5 wird
das Bild oben links im Rahmen platziert. Diese Platzierung wird auch verwendet, wenn der Rahmen keine Rahmeneinpassungenoptionen hat. Die Angabe kann nicht mit anderen Platzierungshinweise verbunden werden.
Achtung: InDesign® scheint bei nicht-proportionalen Grössenänderungen des Rahmens den Beschnittbetrag des Bildes nicht richtig neuzuberechnen : öffnen Sie die Einpassungsoptionen und schauen Sie sich die Beschnittbeträge an. Dann ändern Sie die Rahmengrösse. Danach sind die Beschnittbeträge teilweise geändert. Diese Fehler können wir in den Comet-Plugins natürlich nicht wieder gutmachen.
Nach dem Platzieren des Bildes und möglichen Skalierungen von Bild und Rahmen können Sie den gesamten Rahmen an die aktuelle Bildgrösse anpassen lassen. Dazu übergeben Sie der Bildplatzierung einfach den negativen Wert der Positionsangabe. Achtung: Setzen Sie den negativen Wert erst, wenn Sie den Wert vollständig berechnet haben, es genügt in der Regel nicht, einfach nur Teile negativ zu setzen, wie folgendes Beispiel zeigt :
-kPlaceTopLeft + kPlaceLikeExisting
= -8192 + 1048576
= 1040384 > 0!
Beim Einsetzen von Bildern in Tabellenzellen kann die aktuelle Zellengrösse berücksichtigt werden. Der Zellenrahmen kann sich aber durch weitere Änderungen an der Tabelle ändern. Die Werte werden nur im in-Tag in table::insert_TaggedText unterstützt.
Bezeichner Wert |
Beschreibung |
0 | Bild einfach importieren. Es kann andere Tabellenteile überdecken. |
kConstrainToCell 14 |
Skalieren des Bildes auf die Zellengrösse. |
kConstrainToCellWidth 15 |
Skalieren des Bildes auf die Spaltenbreite. Dadurch kann sich die Zeilenhöhe ändern. |
kConstrainToCellHeight 16 |
Skalieren des Bildes auf die Zeilenhöhe. Dadurch kann sich die Spaltenbreite ändern. |
Angabe zur Grösse des Bildes im Rahmen. Die Angabe erfolgt wie üblich in Punkten.
Bei den Skalerierungs-Methoden kFitContent, ... wird die Angabe der Bildgröße aus naheliegenden Gründen ignoriert.
Teilweise transparente Bildteile können auf vielfältige Weise mit den überdeckten Bildteilen verknüpft werden. Hier eine Liste der möglichen Verfahren. Siehe auch unter frame::opacity, frame::stroke und frame::shadow.
Name | Wert |
BlendNormal | 0 |
BlendMultiply | 1 |
BlendScreen | 2 |
BlendOverlay | 3 |
BlendSoftLight | 4 |
BlendHardLight | 5 |
BlendColorDodge | 6 |
BlendColorBurn | 7 |
BlendDarken | 8 |
BlendLighten | 9 |
BlendDifference | 10 |
BlendExclusion | 11 |
BlendHue | 12 |
BlendSaturation | 13 |
BlendColor | 14 |
BlendLuminosity | 15 |
BlendNonZeroOverprint | 16 |
Mit diesen Werten können die Ecken eines Rahmenrandes gestaltet werden (siehe auch frame::vignette). Folgende Angaben sind möglich:
Name | Wert |
Sharp | 0 |
Soft | 1 |
Diffusion | 2 |
Das Verfahren legt fest, in welcher geometrischen Form die Eckengestaltung angewendet werden soll. Das gibt insbesondere mit Pastellfarben für Rand und Schatten ganz hübsche Effekte. Folgende Angaben sind möglich.
Name | Wert |
None | 0 |
Rectangular | 1 |
Elliptical | 2 |
FollowShape | 3 |
Mit den Angaben zum Freistellpfad kann festgelegt werden, ob und welcher Freistellpfad eines Bildes verwendet werden soll. Der Freistellpfad kann wahlweise über seinen (0-basierten) Index oder über seinen Namen angegeben werden. Namen müssen in Anführungszeichen angegeben werden. Um die Anwendung eines Beschneidungspfades zu unterdrücken, lassen Sie die Namensangabe weg und verwenden den Index -2.
Mit den Clipflags wird festgelegt, was der Freistellpfad bewirken soll. Folgende Werte sind möglich. Die Werte können addiert werden.
Wert | Beschreibung |
1 | Invert the resulting path by combining with a path equal to the bounds of the image. |
2 | Ignoniert seit v4.0.5 R18123. Force edge detection to use the high resolution source image (potentially much slower but higher quality. Although the 72 dpi proxy does a pretty good job). |
4 | Ignoniert seit v4.0.5 R18123. For edge detection, do we remove the holes or leave them in. |
8 | Ignoniert seit v4.0.5 R18123. For edge detection, do we only detect edges within the visible portions of the image? That is, do we crop the image to its frame before performing edge detection? |
[Ab Comet-Version 1.4.2, R 528, 17. Dez. 2007 und ab InDesign® CS2] Mit den Angaben kann die Konturführung des Inline-Rahmens eingestellt werden, siehe auch frame::wrap, frame::wrap_ignore und frame::wrap_invert. Mit negativen Angaben wird die Konturführung umgekehrt.
Wert | Beschreibung |
±0 | Ohne Textumfluss |
±1 | Objekt überspringen |
±2 | In nächste Spalte springen |
±3 | Umfliessen der BoundingBox |
±4 | text within holes in object |
±5 | Umfliessen der Objektform |
±6 | Umfliessen der Objektform (standoff spape) |
±7 | text wraps only to the left side of the standoff. |
±8 | text wraps only to the right side of the standoff |
[Ab v3.4 R5126] Der Objektstil wird NACH dem Setzen der Anker-Eigenschaften und VOR dem Anwenden aller anderen Rahmenattribute angewendet. Das bedeutet:
ACHTUNG
Die Unterstützung von Objektstilen für <in:>-Tags ist ein good will-Feature, das auf Kundennachfrage kostenfrei implementiert wurde. Support dafür machen wir natürlich gerne - aber dann als (kostenpflichtiges) Feature-Request.
Seit v4.1 R21000
Das Tag entspricht dem <in:>-Tag mit dem Unterschied, dass es in den Standardimport/-export
von TaggedText integriert ist und dadurch auch in tiefer verschachtelten Tabellen verwendet werden kann.
Der eigentliche Import legt dabei lediglich eine neue Art Platzhalter für die Inlines an. In einem zweiten
Schritt werden diese Inline-Platzhalter automatisch durch Inlines ersetzt.
Beachten Sie bitte, dass der zweite Schritt, das Ersetzen der Inline-Platzhalter zu Inlines, nur dann gemacht
werden kann, wenn der Import über eine der priint:comet Funktionalitäten (frame::append, Platzhalter laden, ...)
erfolgt. Der reine InDesign®-Import legt lediglich die Inline-Platzhalter an:
Die Artefakte solcher unvollendeten Versuche können Sie mit Hilfe des Menüs Rote Punkte aus ~ entfernen der Palette Platzhalterwerte aus ihren Dokumenten entfernen.
Wenn Ihre bisherige Implementierung mit <in>-Tags arbeitet und funktioniert, gibt es keinen Grund, das zu ändern. Für neue Implementierungen empfehlen wir dringend, das neue <w2inline>-Tag zu verwenden.
Das <w2inline>-Tag entspricht in seiner Syntax vollständig dem <in>-Tag mit den folgenen Unterschieden:
Der Text zwischen öffnendem und schließendem Tag darf nicht leer sein. Dieser Text dient als temporärer Platzhalter für das zu erzeugende Inline und wird direkt im Anschluss an den Import durch das Inline ersetzt.
Sind kein Platzhalter, kein Bild und kein content angegeben, wird der Text zwischen öffnendem und schließendem Tag als Inhalt in den neuen Inline eigefügt. Der innere Text darf wieder TaggedText (mit einem %!TT-Präfix) sein und ebenfalls W2inlines enthalten.
Alternativ kann das neue Inline auch mit der Angabe des (nur im w2inline definierten) Attributes content gefüllt werden. Ist dieses Attribut definiert, wird der Text zwischen öffnendem und schließendem Tag ignoriert.
Das Ende-Tag ist nur in der TaggedText-konformen Schreibweise <w2inline:> definiert. Die HTML-Schreibweise </w2inline> wird nicht unterstützt.
Das Tag wird als integriertes (natives) InDesign®-Textattribut ausgewertet, d.h. alle < und > innnerhalb der Tag-Definition müssen maskiert werden (auch innerhalb von Strings!). Unmaskierte < und > innerhalb des Tags werden von uns automatisch maskiert.
Aber ACHTUNG: < und > in StringIDs in <w2:>-Platzhaltern im Content von W2inlines müssen (in genau dieser Schreibweise) speziell maskiert werden:
< durch <
> durch >
[Ab v4.0.5 R21000 und CC2015] Umwandeln einer Tabellenzelle in eine Grafikzelle und Gestaltung des neuen Grafikrahmens.
Das Tag darf nur innerhalb von Tabellenzellen verwendet werden!
Die Syntax des Tags graphiccell entspricht der Syntax des in-Tags. Alle Informationen, die im in-Tag verwendet werden können, können mit folgenden Ausnahmen auch hier verwendet werden.
Text, der zwischen öffnendem und schließendem graphiccell-Tag steht, wird in den erzeugten Rahmen als TaggedText eingefügt. Angaben zum Bildpfad werden in diesem Fall ignoriert. Der nötige Trailer %!TT wird beim Einfügen des Textes automatisch angewendet (und sollte also nicht im TaggedText stehen).
Füge ein Bild in die neue Grafikzelle ein und färbe der Hintergrund orange.
<graphiccell: '$DESKTOP/Bilder/1.png', 5, color 255 128 0 > <graphiccell:>
Füge einen kurzen roten Text in den erzeugten Grafikrahmen der Zelle ein. Da hier nur ein Standardrahmen ohne weitere Gestatungen verwendet wird, kann der Text im einleitenden Tag beliebig (aber nicht leer!) sein.
<graphiccell:ignore> <cColor:red><cTypeface:Bold><cFont:Helvetica>xyz <graphiccell:>
Der Rahmen der Grafikzellen bekommt den Platzhalter 70 und wird mit dem Objekt [1, 0, 0, ''] geladen. Damit sich das dabei geladene Bild auch dann anpasst, wenn Zeilenhöhe oder Spaltenbreite geändert werden, bekommt der Rahmen zsätzlich eine Rahmeneinpassungsoption.
<graphiccell: 70, 1, 0, 0, '', 5, 64.0, color 255 128 0, fitting 4 1 -10.0 -12.0 -14.0 -15.0 1 1 > <graphiccell:>
Nicht mehr unterstützt seit Release R 333 (11. April 2007). Verwenden Sie statt dessen die Funktionen frame::inline_, frame::inline_above, frame::anchor und frame::get_anchor oder textmodel::inline_, textmodel::inline_above, textmodel::anchor und textmodel::get_anchor. In Releases vor R 333 (11. April 2007) muss das Plugin FloatingElements installiert sein.
Mit Hilfe des Tags floating können Rahmen neben oder über Texten erzeugt werden. Die erzeugten Rahmen laufen dann mit dem Text mit. Die Definition des Tags entspricht vollständig der des In-Tags mit folgenden Erweiterungen :Attribut | Wert | Beschreibung |
anchor_len | >0 | Anzahl der Textzeichen, die mit dem Rahmen verknüpft werden. es wird immer der direkt dem Ende-Tag </floating> folgende Text verwendet. Fehlt die Angabe oder ist <= 0, wird im Text automatisch ein unsichtbares Zeichen eingefügt, mit der der Rahmen verknüpft wird. |
side | siehe unten | Festlegung der horizontalen Positionsorientierung für den Rahmen. |
base | siehe unten | Festlegung der vertikalen Positionsorientierung für den Rahmen. |
xoffset | int oder real | Horizontaler Abstand in Punkten vom Orientierungspunkt des Rahmens |
yoffset | int oder real | Vertikaler Abstand in Punkten vom Orientierungspunkt des Rahmens |
side | Wert | Beschreibung |
right | 0 | Der schwebende Rahmen liegt rechts neben dem Textrahmen. xoffset bezieht sich auf die rechte Textrahmenkante. |
above | 1 | Der Rahmen liegt über dem Text. Der xoffset bezieht sich auf die linke Seite des Textrahmens. Um den unter dem Rahmen liegenden Text um den Rahmen fliessen zu lassen, verwenden Sie bitte einen Rahmen aus einer Vorlage, bei dem vor dem Sichern auf die Datenbank die entsprechenden Einstellungen gemacht wurden (Palette 'Schrift & Tabellen:Konturenführung'). |
inner | 2 | Der schwebende Rahmen liegt auf der Seite des Textrahmens, der zur Seiteninnenkante zeigt. xoffset bezieht sich ebenfalls auf diese Textrahmenseite. |
inner_margin | 3 | Der schwebende Rahmen liegt auf Seiteninnenkante. xoffset bezieht sich auf die Seiteninnenkante. |
outer | 4 | Der schwebende Rahmen liegt auf der Seite des Textrahmens, der zur Seitenaußenkante zeigt. xoffset bezieht sich ebenfalls auf diese Textrahmenseite. |
outer_margin | 5 | Der schwebende Rahmen liegt auf Seitenaußenkante. xoffset bezieht sich auf die Seitenaußenkante. |
base | Wert | Beschreibung |
top_above | 0 | Der Rahmen wird mit seiner Unterkante über die aktuelle Zeilenposition gesetzt. |
top_centered | 1 | Der Rahmen wird neben der Zeilenoberkante zentriert. |
top_below | 2 | Der Rahmen wird unter die Zeilenoberkante gesetzt. |
middle_above | 3 | Der Rahmen wird mit seiner Unterkante über die aktuelle Zeilenmitte gesetzt. |
middle_centered | 4 | Der Rahmen wird neben der Zeilenmitte zentriert. |
middle_below | 5 | Der Rahmen wird unter die Zeilenmitte gesetzt. |
bottom_above | 6 | Der Rahmen wird mit seiner Unterkante unter die aktuelle Zeilenposition gesetzt. |
bottom_centered | 7 | Der Rahmen wird neben der Zeilenunterkante zentriert. |
bottom_below | 8 | Der Rahmen wird unter die Zeilenunterkante gesetzt. |
[Ab Release 477, 2. Okt. 2007] Die Tags verbinden das Tabellenmodul mit dem TaggedText. In den TaggedText können Gruppenzuordnungen für Tabellenzeilen, -spalten und -zellen eingefügt werden. Die Tabelle selbst kann mit der ID einer Tabellenvorlage oder eines Tabellenplatzhalters verknüpft werden. Nach dem Einfügen des Textes werden den entsprechenden Tabellen die im TaggedText angegebenen Gruppen zugeordnet. Aus der in der Tabellenvorlage gegebenen (oder über den Tabellenplatzhalter ermittelte) Tabelle werden alle Tabellengestaltungsmethoden in die neu angelegte Tabelle übernommen. Danach werden die Gestaltungregeln in der neuen Tabelle angewendet.
Die Gestaltungsmethoden werden im Tag TableStart gemacht. Folgende Angaben sind möglich:
Name | Wert | Beschreibung |
Placeholder | int | ID eines Tabellenplatzhalters. Die Load-Aktion dieses Platzhalters wird ausgeführt. Dort muss die im Skript global definierte Variable gTableID den Wert einer gültigen Tabellenvorlage bekommen. |
Pageitem | int | Wert einer gültigen Tabellenvorlage. Der Wert wird nur verwendet, wenn Placeholder nicht nicht gesetzt oder 0 ist. |
ApplyDesign | 0 | 1 | Sollen die Gestalungsmethoden der Tabelle aus der Tabellenvorlage ausgeführt werden? 0 : Nein, Gestaltungsmethoden nicht ausführen 1 : Ja, Gestaltungsmethoden ausführen |
Hier ein erweitertes TableStart-Tag
<TableStart:4,4:0:0 <tCellDefaultCellType:Text> <Placeholder:128> <Pageitem:0> <ApplyDesign:1> >
Das Beispiel zeigt ein sehr einfaches Platzhalterskript zum Ermitteln einer Tabelllenvorlage.
int main () { *gTableID = 128; return 0; }
Die Zellen einer Tabelle können im Tabellenmodul beliebig vielen Gruppen zugeordnet werden. In den Tags ColStart, RowStart und CellStart kann als zusätzliche Angabe jeweils ein Groups-Tag eingefügt werden. Als Wert wird eine durch Leerzeichen getrennte Liste von Strings der Gruppennamen erwartet. Die entsprechenden Zellen werden dann diesen Gruppen zugeordnet.
Hier jeweils ein Tag mit Gruppenzuordnungen.
<ColStart: <tColAttrWidth:79.75597506234413> <Groups:'Column' 'COLUMN'> > <RowStart: <tRowAttrHeight:17> <Groups:'Row' 'ROW'> > <CellStart:1,1 <Groups:'Letzte Zelle' '25"' '10 \> 9'> >
[seit v4.1 R23334] InDesign®-Tabellen können an festgelegten Zeilen umbrochen werden. (Menü Tabelle -> Zellenoptionen -> Zeilen und Spalten). Leider hat Adobe versäumt, diese Einstellung im TaggedText umzusetzen - die Eigenschaft wird weder geschrieben noch gelesen, es gibt gar kein Tag dafür. Tabellenumbrüche können so nur nachträglich eingefügt werden, siehe dazu auch table::set_row_start.
Damit Zeilenumbrüche auch direkt über TaggedText definiert werden können,
haben wir das zusätzliche Tag
<tStartOn:value>
definiert. Folgende Werte sind für value definiert:
Das Tag tStartOn muß innerhalb des Tags <RowStart: ... > definiert werden.
Hier ein Beispiel für einen Seitenumbruch an einer Tabellenzeile:
<RowStart:<tStartOn:page><tRowAttrHeight:16.7>>
Einzelne Tabellenzellen können nicht umbrochen werden. Zeilenumbrüche von Tabellen in Tabellen sind also (zumindest) unnötig und werden deshalb ignoriert.
Das Tag tStartOn wird nur beim Import und nur von Comet-Funktionen unterstützt. Export und Standard-Import dieser Eigenschaft können nur von Adobe implementiert werden.
Das erste Beispiel zeigt zwei Textplatzhalter, der erste enthält keine Platzhalterwerte.
<w2:12,23,-14,-1>Verknüpfter Text</w2>
<w2:12,23,-14,-1,definition 1 1 2 0 0 0 45 7 1 0>
Verknüpfter Text
</w2>
Im zweiten Beispiel wird ein ovaler Bildrahmen um eine Bilddatei erzeugt. Das Bild kann später im Rahmen verschoben werden.
<in: 100.0, 100.0, "Bildpfad", 10, 0.0, oval</in>
In diesem Beispiel sehen sie, wie ein Rahmenplatzhalter angelegt werden kann.
<in: 15.071, 15.071, 11,3,0,0,-7,0.0></in>
Das folgende Skript legt Rahmen und Inlines wie im Bild gezeigt an. Auf Ihrem Desktop sollte sich dazu ein Bild namesn vn1.JPG befinden.
Ansonsten bleibt der erste Inline-Rahmen leer.
// ACHTUNG // Das Beispiel enthält HTML-kompatible Tag-Defintionen, die bei // Verwendung des Copy-Buttons (oben rechts) ausgefiltert werden. // Verwenden Sie zum Kopieren des Textes deshalb bitte // die gute alte Copy/Paste-Methode :-) //
#include "internal/types.h"
int main () { int pg = 1; ItemRef frame = item::alloc (); ItemRef frame2 = item::alloc (); char layerName[256]; char tt[20000]; int result; int i;
// define some colors // color::define ("DOrange", 255, 90, 0); color::define ("Orange", 255, 127, 0); color::define ("HellOrange", 255, 190, 0);
// create the first frame // result = frame::create_textframe ( frame, 10, 10, 200, 200, pg, layer::name (2, layerName)); if (result != 0) { showmessage ("Error %d at first frame.", result); item::release (frame); item::release (frame2); return 1; }
// design first frame // frame::star (frame, 21, 10); frame::color (frame, "Orange"); frame::stroke (frame, "Orange", 1.5); frame::shadow (frame, "DOrange", 50.0, 1, 8.3, 9.3, 3.0);
// create the second frame // result = frame::create_textframe ( frame2, 10, 210, 300, 400, pg, layer::name (2, layerName)); if (result != 0) { showmessage ("Error %d at second frame.", result); item::release (frame); item::release (frame2); return 1; }
// design second frame // frame::color (frame2, "HellOrange"); frame::stroke (frame2, "Orange", 12.3); frame::shadow (frame2, "DOrange", 50.0, 1, 8.3, 9.3, 3.0); frame::vignette (frame2, 3, 10.0, 1, 100.0, 100.0);
// link both frames // frame::link (frame, frame2);
// Insert some text in the first frame. // If the text is too long, it flows into the // second frame automatically. // strcpy (tt, "%!TT<ParaStyle:>"); strcat (tt, "Am es assimos voluten ihitiusam dolorem ulparum quo.#"); strcat (tt, "<in: 100.0, 100.0, '$DESKTOP/vn1.JPG'>Dummy</in>"); strcat (tt, "#Entio tent qui ipis suntint faccust, quibus voluptaque et apiet eseque maios."); strcat (tt, "<ParaStyle:>"); strcat (tt, "<in: 180.0, 60.0, fitframe_hw, color 230 64 130>"); strcat (tt, "%!TT"); for (i = 6; i < 16; i++) sprintf (tt+strlen(tt), "<cSize:%d>A<cSize:>", i); for (i = 14; i >=6; i--) sprintf (tt+strlen(tt), "<cSize:%d>A<cSize:>", i); strcat (tt, "</in>"); strcat (tt, "Serengeti");
frame::insert (frame, tt, 0, true);
// cleaning up // item::release (frame); item::release (frame2);
return 0; }
Das Beispiel zeigt, wie ein Textplatzhalter mit StringID gesetzt werden kann. Im Skript wird die aktuelle Textauswahl durch den Platzhalter 20 mit dem Objekt 305501000, ... ersetzt.
#include "internal/text.h"
int main () { char tt[10000];
*tt = 0; strcat (tt, "%!TT"); strcat (tt, "<w2:"); strcat (tt, "20, 305501000, 1299, 1"); strcat (tt, ", 'Vormerkung Widerspruch Grundst. 5.Aufl.'"); strcat (tt, ">"); strcat (tt, "aaa"); strcat (tt, "</w2>");
textmodel::replace (tt, kSelection);
return 0; }
Alphabetic index HTML hierarchy of classes or Java