[GastForen Programme Print/Bildbearbeitung Adobe InDesign Scripting: bestimmte Zeichen in Hochformat darstellen

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Scripting: bestimmte Zeichen in Hochformat darstellen

mike123
Beiträge gesamt: 26

17. Okt 2006, 09:22
Beitrag # 1 von 7
Bewertung:
(2176 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, bin noch neu im InDesign scripten, hab jetzt auch schon ein bisschen rumprobiert, komme aber nicht ganz drauf.
Ich will aus einem beliebigen Zeichen oder Zeichenfolge ein hochgestelltes Zeichen machen.
In meinem Fall sieht das in etwa so aus: {hoch3}, daraus soll ein "³" werden. Vielleicht kann mir da irgendwer ne Anregung geben.

Danke schonmal
X

Scripting: bestimmte Zeichen in Hochformat darstellen

Florian Hardwig
Beiträge gesamt: 51

17. Okt 2006, 12:43
Beitrag # 2 von 7
Beitrag ID: #256947
Bewertung:
(2153 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Mike,

mit Scripting kann ich Dir nicht helfen, aber vielleicht hilft Dir auch diese Lösung:
1. Lege für die Hochzahlen ein Zeichenformat mit entsprechender Hochstellung/Größen-/Strichstärkenanpassung an.
2. Suche die (wie ich es verstanden habe im Text enthaltene) Zeichenfolge hoch3 und ersetze durch 3, mit über "erweiterte Optionen" zugewiesenem Zeichenformat

Alternativ, wenn Du einen Font benutzt, der Extra-Glyphen für Hochzahlen besitzt, kannst Du diese auch direkt ohne den Zeichenformat-Umweg über Suchen/Ersetzen einfügen.


als Antwort auf: [#256869]

Scripting: bestimmte Zeichen in Hochformat darstellen

Martin Fischer
  
Beiträge gesamt: 12440

17. Okt 2006, 13:39
Beitrag # 3 von 7
Beitrag ID: #256959
Bewertung:
(2134 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Mike,

das müßte - in etwa so wie es Mike manuell vorgeschlagen hat - mit dem Skript ReplaceInStringProWithConfig.jsx von zaphodbeeblebroxx funktionieren:

1. Suche-String = {hoch^9} (^9 steht für beliebige Zahl)
2. Suche-String = ^9
Ersetze-Formatierung: Zeichenformat für Hochstellung

Viele Grüße
Martin




als Antwort auf: [#256947]
(Dieser Beitrag wurde von Martin Fischer am 17. Okt 2006, 13:39 geändert)

Scripting: bestimmte Zeichen in Hochformat darstellen

mike123
Beiträge gesamt: 26

18. Okt 2006, 12:11
Beitrag # 4 von 7
Beitrag ID: #257172
Bewertung:
(2098 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Also zunächst mal danke für Eure Hilfestellungen. Ich hab jetzt folgendes zusammengebastelt:
Code
characterStyle("", "", "SuperScript"); 
characterStyle("", "", "SubScript");
function characterStyle(myStart, myEnd, myCharacterStyleName) {

var myCharacterStyle;
var myDoc = app.activeDocument;
noCharStyle = app.activeDocument.characterStyles[0];
//Create the character style if it does not already exist.
myCharacterStyle = myDoc.characterStyles.item(myCharacterStyleName);
try{
myCharacterStyle.name;
}
catch (myError){
myCharacterStyle = myDoc.characterStyles.add({name:myCharacterStyleName});
}
app.findPreferences = app.changePreferences = null;

start=myDoc.search(myStart,false,false, undefined);
stop=myDoc.search(myEnd,false,false, undefined);

// there must be at least one occurence of the code at beginning
// count of code at beginning has to be equal to count of code at the end
if(start.length>0 && start.length == stop.length) {
for ( k=start.length-1 ; k >=0 ; k--) {
switch (myCharacterStyleName){
case "SuperScript": myCharacterStyle.position = Position.superscript; break;
case "SubScript": myCharacterStyle.position = Position.subscript; break;
}

st=start[k].parentStory;
st.characters.itemByRange(start[k].index, stop[k].index+(myEnd.length-1)).appliedCharacterStyle=myCharacterStyle;
}
searchAndReplace(myStart,"");
searchAndReplace(myEnd,"");
}
}


Das funktioniert auch schon ganz gut soweit. Nur wollte ich aus meiner importierten XML-Datei eine Tabelle einfügen und das Script da drüber laufen lassen. Dann geht das aber nicht. Die XML-Tabelle sieht so aus:
Code
<tabelle type="array"> 
<aid:table xmlns:aid="http://ns.adobe.com/AdobeInDesign/3.0/" type="array">
<aid:tr type="array">
<aid:td>Order-No</aid:td>
<aid:td>test1</aid:td>
<aid:td>test2</aid:td>
</aid:tr>
<aid:tr type="array">
<aid:td>123</aid:td>
<aid:td>bla1abc[/abc]</aid:td>
<aid:td>bla2</aid:td>
</aid:tr>
</aid:table>
</tabelle>


Die Fehlermeldung bei Ausführung des Scripts lautet dann:
Zitat JavaScript Fehler!

Fehlernummer: 45
Fehlerzeichenfolge: Object is invalid
Zeile 108
Quelle: st.characters.itemByRange(start[k].index, stop[k].index+(myEnd.length-1)).appliedCharacterStyle=myCharacterStyle;


Jetzt habe ich die Vermustung, dass der Befehl itemByRange vom falschen Ausgangspunkt ausgeht, da es in der Tabelle ist. Kann mir da wer nen Tipp geben. Kann man das irgendwie mit textFrames ansprechen.
Wie gesagt, bin noch neu in der Thematik.


als Antwort auf: [#256959]

Scripting: bestimmte Zeichen in Hochformat darstellen

Martin Fischer
  
Beiträge gesamt: 12440

18. Okt 2006, 14:44
Beitrag # 5 von 7
Beitrag ID: #257230
Bewertung:
(2084 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Mike,

Zitat Jetzt habe ich die Vermustung, dass der Befehl itemByRange vom falschen Ausgangspunkt ausgeht, da es in der Tabelle ist.


Du liegst mit Deiner Vermutung richtig.
Der Fehler liegt in diesen beiden Zeilen:
Code
st=start[k].parentStory;   
st.characters.itemByRange(start[k].index, stop[k].index+(myEnd.length-1)).appliedCharacterStyle=myCharacterStyle;

st ist Deine Story.
Dein itemByRange bezieht sich also auf den Textfluß.
start[k].index bezieht sich, wenn start[k] in einer Tabelle ist, nicht auf den Textfluß, sondern auf die Zelle.

Angenommen Du hast in Zelle 3 der ersten Tabelle im Textfluß nach dem 1. Zeichen ein "". Dann lautet dessen Index 1. Und dann folgt das Kommando: Weise den Buchstaben von Index 1 im Textfluß bis zum Index (stop[k]) das Zeichenformat xy zu.
Du siehst das Problem?
start[k].index liefert Dir die relative Position des gesuchten Strings in der Tabelle.
Aber du nimmst diesen, um die Zeichen ab einer relativen Position zum Textfluß auszuzeichnen.

Ein Workaround:
1. Prüfen ob der Treffer in einer Zelle ist (...parent.constructor.name == "Cell").
2. Wenn nein -> weiter wie bisher.
3. Wenn ja -> Index der Zelle und Index der Tabelle bestimmen und relativ zu diesen die Zeichen ab Pos x bis Pos y mit dem Zeichenformat auszeichnen. Im itemByRange darfst Du Dich dabei also nicht auf die story beziehen, sondern auf die relative Postition innerhalb der Tabelle.

Das ist ziemlich mühsam.

Hast Du es mal mit dem oben angegebenen Skript ReplaceInStringWithConfig.jsx versucht?

Viele Grüße
Martin




als Antwort auf: [#257172]
(Dieser Beitrag wurde von Martin Fischer am 18. Okt 2006, 14:45 geändert)

Scripting: bestimmte Zeichen in Hochformat darstellen

mike123
Beiträge gesamt: 26

18. Okt 2006, 16:22
Beitrag # 6 von 7
Beitrag ID: #257265
Bewertung:
(2070 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Habs jetzt geschafft. War gar ned so schwer. Ich hab aus st=start[k].parentStory; einfach st=start[k].parent; gemacht und schon funktionierts.
Es soll ja im kompletten Textfluss geändert werden, daher passts so ja. Ich bin nur noch nicht ganz so firm in den Bezeichnern. Gibts da eigentlich ne anständige Referenz irgendwo?


als Antwort auf: [#257230]

Scripting: bestimmte Zeichen in Hochformat darstellen

Martin Fischer
  
Beiträge gesamt: 12440

18. Okt 2006, 18:37
Beitrag # 7 von 7
Beitrag ID: #257316
Bewertung:
(2058 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> einfach st=start[k].parent; gemacht und schon funktionierts.

Oh, Mann!
Manchmal ist die Lösung so einfach. ;-)


> Gibts da eigentlich ne anständige Referenz irgendwo?

Außer der mitgelieferten Scripting Reference kenne ich nichts.

Viele Grüße
Martin




als Antwort auf: [#257265]
X

Aktuell

PDF / Print
kalenderFebruar_kl

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
05.02.2021 - 05.11.2021

Digicomp Academy AG, Limmatstrasse 50, 8005 Zürich
Freitag, 05. Feb. 2021, 13.00 Uhr - Freitag, 05. Nov. 2021, 17.00 Uhr

Lehrgang

Bilden Sie sich zum zertifizierten Publishing-Multimedia-Profi aus. Neben Fotografie und Video befassen Sie sich mit der Medienproduktion, digitalen Publikationen und dem Webdesign für Desktop- und mobile Endgeräte.

Preis: CHF 10'500.-
Dauer: 30 Tage (ca. 210 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/9PM

Veranstaltungen
05.03.2021 - 30.04.2021

Digicomp Academy AG, Zürich oder virtuell
Freitag, 05. März 2021, 13.00 Uhr - Freitag, 30. Apr. 2021, 17.00 Uhr

Lehrgang

Im berufsbegleitenden Web Publisher Lehrgang vertiefen Sie Ihr Wissen rund um das Thema Screendesign und die Umsetzung von Websites. Wir befähigen Sie dazu selbständig und professionell Ihren Webauftritt zu planen und in die Realität umzusetzen.

Preis: CHF 3'250.–
Dauer: 8.5 Tage - Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt.

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/9PWEB