hilfdirselbst.ch
Facebook Twitter gamper-media
ignaz S
Beiträge: 39
29. Jul 2011, 19:03
Beitrag #1 von 8
Bewertung:
(7492 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

InDesign - Seitenzahl als Wort


Hallo,

ich setze in InDesign meine Seitenzahlen ganz normal wie gehabt auf den Musterseiten. Nun habe ich ein Dokment mit bspw. 200 Seiten, jetzt möchte ich das die Seitenzahlen nicht als Zahl sondern als Wort kommt. Beispiel: Seite 50 wird als "Fünfzig" angezeigt, nicht als "50", ist sowas irgendwie möglich?

Vielen Dank,

Gruß Tom
(Dieser Beitrag wurde von ignaz am 29. Jul 2011, 19:17 geändert)
Top
 
X
Hans Haesler  M  p
Beiträge: 5581
29. Jul 2011, 21:50
Beitrag #2 von 8
Beitrag ID: #477178
Bewertung:
(7445 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

InDesign - Seitenzahl als Wort


Hallo Tom,

das sollte realisierbar sein. Man müsste nur ein Script entwickeln. Bedingungen: Der Textrahmen sollte breit genug und mit einer Etikette versehen sein, damit ihn das Script auf der Dokumentseite gezielt "befreien" kann.

Zusätzlich muss mit einer Fleissarbeit die Liste der Alpha-Seitennummern getippt werden, damit das Script die Zahl durch das entsprechende Wort ersetzen kann.

Wenn Du mir diese Zahlenwort-Liste (Eins,Zwei,Drei usw. / oder Eins Return Zwei Return Drei Return) zustellst, werde ich versuchen das Script zu schreiben.

[Edit]: Denkbar wäre natürich auch, dass das Script die Zahlen "selbständig" in Worte über- und zusammensetzt ...

Gruss, Hans
als Antwort auf: [#477171]
(Dieser Beitrag wurde von Hans Haesler am 29. Jul 2011, 22:00 geändert)
Top
 
Gerald Singelmann  M  p
Beiträge: 6178
29. Jul 2011, 22:50
Beitrag #3 von 8
Beitrag ID: #477179
Bewertung:
(7420 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

InDesign - Seitenzahl als Wort


so eins?
--------------------------

InDesign-Wissen und Automatisierung nicht nur rund um die Suite.

http://www.cuppascript.com
als Antwort auf: [#477178] Top
 
Hans Haesler  M  p
Beiträge: 5581
29. Jul 2011, 23:17
Beitrag #4 von 8
Beitrag ID: #477180
Bewertung:
(7405 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

InDesign - Seitenzahl als Wort


Hallo Gerald,

ja, so eins. Das heisst ... nicht ganz ... da hätte ich mehr Zeilen dafür gebraucht. Respekt! :-)

Gruss, Hans
als Antwort auf: [#477179] Top
 
Hans Haesler  M  p
Beiträge: 5581
3. Aug 2011, 12:32
Beitrag #5 von 8
Beitrag ID: #477373
Bewertung:
(7188 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

InDesign - Seitenzahl als Wort


Hallo Tom,

obwohl kaum jemand Verwendung dafür haben wird, poste ich hier die erste Version des Scripts.

Damit es funktioniert müssen mit Deiner CS5 die beiden Musterrahmen der Seitennummern benannt werden. Und zwar mit dem Ebenenbedienfeld:
– Den Rahmen auf der linken Musterseite auswählen.
– Im Ebenenbedienfeld das ausgewählte Element doppelklicken (mit einer kleinen Pause zwischen den Klicks).
– Als Name den Grossbuchstaben L eingeben.

Den Rahmen auf der rechten Seite gleich behandeln. Aber natürlich ein R eintippen.

Zum Umwandeln in Text wird nicht die ursprünglich komplette Liste verwendet. Die Textteile werden modulär zusammengesetzt. Dabei verwendete ich nicht Geralds Code sondern setzte um, was ich bei meiner ersten Antwort im Kopf hatte. Im Moment ist "999" der höchste Wert, welcher behandelt werden kann.

Falls Du "Dreißig" lieber als "Dreissig" haben möchtest, kannst Du das selber im Code ändern. Für andere Modifikationen musst Du Dich bis Freitag gedulden, weil ich bald nach Paris fahren muss.

Code
//SeitenZahlenText_502d.js 
//© 31.07.11 / Hans Haesler, Châtelard 52, CH-1018 Lausanne / hsa@ringier.ch
//DESCRIPTION:Wandelt die Seitennummern in ausgeschriebene Textketten um

// vorbeugenderweise das Anzeigen von Dialogen aktivieren
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;

if (app.documents.length == 0) {
alert ("Es ist kein Dokument offen.", "Achtung");
exit();
}

var curDoc = app.documents[0];

// die Musterseitenobjekte
var pageNumberFrameL = curDoc.masterSpreads[0].pageItems.itemByName("L");
var pageNumberFrameR = curDoc.masterSpreads[0].pageItems.itemByName("R");

// die Listen mit den Strings
oneStrings = new Array ("", "ein", "zwei", "drei", "vier", "fünf", "sechs", "sieben", "acht", "neun");
dblStrings = new Array ("", "", "", "", "", "", "", "", "", "", "zehn", "elf", "zwölf", "dreizehn", "vierzehn", "fünfzehn", "sechzehn", "siebzehn", "achtzehn", "neunzehn");
tenStrings = new Array ("", "zehn", "zwanzig", "dreißig", "vierzig", "fünfzig", "sechzig", "siebzig", "achtzig", "neunzig");

// eine Schleife durch die Seiten, die Rahmen mit den automatischen Seitenzahlen übergehen
// und die Seitennummer durch den entsprechenden String ersetzen
for (var i=0; i<curDoc.pages.length; i++) {
var pNbr = (curDoc.pages[i].name);
var textNumber = getTextNumber(pNbr);
if (pNbr % 2 == 1) {
pageNumberFrameR.override(curDoc.pages[i]);
if (textNumber != "") {
var defString = (textNumber[0].toUpperCase()) + textNumber.slice(1);;
curDoc.pages[i].textFrames.itemByName("R").contents = defString;
}
}
else {
pageNumberFrameL.override(curDoc.pages[i]);
if (textNumber != "") {
var defString = (textNumber[0].toUpperCase()) + textNumber.slice(1);;
curDoc.pages[i].textFrames.itemByName("L").contents = defString;
}
}
}

// die Funktion, welche die Zahlen in Textketten umwandelt
function getTextNumber(pNbr) {
var textNumber = "";
var strLen = pNbr.length;
var strVal = pNbr*1;
if (strLen == 1) {
if (strVal == 1) {
return "eins";
}
else {
return (oneStrings[strVal]);
}
}
else if (strLen == 2) {
if (strVal < 20) {
return (dblStrings[strVal]);
}
else if (strVal > 19) {
if (pNbr[1] == "0") {
return tenStrings[pNbr[0]*1];
}
else {
return (oneStrings[pNbr[1]*1]) + "und" + (tenStrings[pNbr[0]*1]);
}
}
}
else if (strLen == 3) {
var rstVal = strVal % 100;
if (rstVal == 0) {
return (oneStrings[pNbr[0]*1]) + "hundert";
}
else if (rstVal == 1) {
return (oneStrings[pNbr[0]*1]) + "hundertundeins";
}
else if (rstVal < 10) {
return (oneStrings[pNbr[0]*1]) + "hundertund" + (oneStrings[(pNbr[2]*1)]);
}
else if (rstVal < 20) {
return (oneStrings[pNbr[0]*1]) + "hundertund" + (dblStrings[(pNbr[1]+pNbr[2])*1]);
}
else if (rstVal > 19) {
if (rstVal % 10 == 0) {
return (oneStrings[pNbr[0]*1]) + "hundertund" + (tenStrings[(pNbr[1]*1)]);
}
else {
return (oneStrings[pNbr[0]*1]) + "hundertund" + (oneStrings[(pNbr[2]*1)] + "und" + (tenStrings[(pNbr[1]*1)]));
}
}
}
else if (strLen == 4) {
alert ("Für Zahlen ab 1000 ist das Script noch nicht ausgerüstet.");
exit();
}
return textNumber;
}


Ach ja: "Sechzehn" und "Sechzig" werden ohne Mittel-"s" ("Sechszehn" und "Sechszig") geschrieben (laut Duden).

Gruss, Hans
als Antwort auf: [#477180] Top
 
ignaz S
Beiträge: 39
4. Aug 2011, 08:08
Beitrag #6 von 8
Beitrag ID: #477405
Bewertung:
(7110 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

InDesign - Seitenzahl als Wort


Guten Morgen Hans,

Vielen Dank für deine Mühe! Super.
Habe es getestet, funktioninert einwandfrei!

Nochmals vielen Dank!

Gruß tom
als Antwort auf: [#477373] Top
 
Hans Haesler  M  p
Beiträge: 5581
22. Dez 2017, 09:50
Beitrag #7 von 8
Beitrag ID: #561568
Bewertung:
(3808 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

InDesign - Seitenzahl als Wort


Hallo Leute,

vor zwei Monaten bekam ich eine Rückmeldung von Thorsten (HDS-Mitglied: tra): Mit CC 2018 funktioniert das oben gepostete Script nicht mehr.

Weil es nicht an der InDesign-Version liegen konnte, bat ich Thorsten um eine IDML-Datei.
Doch inzwischen hatte er selber die Ursache gefunden. Sein Dokument enthielt mehr als eine Mustervorlage.

Das Script ergänzte ich auf die Schnelle: Wenn mehr als eine Mustervorlage vorhanden ist, werden die Textrahmen der Seitennummern nicht im voraus bestimmt. Sondern auf der Mustervorlage, welche der aktuellen Seite zugewiesen ist.

Beim Testen sagte ich mir, dass das Ganze benutzerfreundlicher gemacht werden sollte.

Gesagt, getan:
– Mit der Version 503d müssen die Textrahmen nicht mehr benannt werden.
– Sind die Musterseiten-Textrahmen schon übergangen worden, werden jene, die sich auf den Dokumentseiten befinden, berücksichtigt.
– Wenn etwas ausgewählt ist, werden nur die Rahmen der Auswahl behandelt.
– Wenn die Seitennummer mit Text ergänzt ist, bleibt dieser erhalten. Ein Beispiel: "Seite 23" wird zu "Seite dreiundzwanzig".

Wichtig:
– Nur automatische Seitenzahlen werden umgewandelt.
– Nur das Format "Arabische Ziffern" wird berücksichtigt.
– Zahlen ab 1000 werden nicht umgewandelt.
– Ein eventuelles Präfix eines Abschnittsbeginns darf nicht sichtbar sein.

Das JavaScript ist hier hochgeladen: http://www.fachhefte.ch / Links "JavaScripts", "Mac OS X deutsch" (oder "Windows deutsch"), "InDesign CS5" (sollte auch mit höheren Versionen funktionieren).

Das Zip-Archiv enthält zwei Scripts:
– "SeitenZahlenText_ss_503d.js" --> "dreissig"
– "SeitenZahlenText_sz_503d.js" --> "dreißig"

Gruss, Hans
als Antwort auf: [#477405] Top
 
Hans Haesler  M  p
Beiträge: 5581
6. Apr 2018, 21:50
Beitrag #8 von 8
Beitrag ID: #563294
Bewertung:
(2163 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

InDesign - Seitenzahl als Wort


Hallo Leute,

eine neue Version (504d) weil: Beim Übersetzen ins Französische wurde mir bewusst, dass das Script zu viel arbeitet, wenn von mehreren Musterseiten nur eine zugewiesen ist. Dann sucht es bei jeder Seite erneut die entsprechenden Textrahmen.

Das Feststellen, ob mehr als eine Musterseite verwendet wird, benötigt nur einen Bruchteil einer Sekunde. Der Unterschied beim Ausführen ist aber spürbar, wenn nur zu Beginn nach den Textrahmen gefahndet werden muss.

Eine Bremswirkung kann der Anwender abstellen: Vor dem Starten des Scripts das Bedienfeld der Seiten schliessen.

Weitere Neuerungen der Version 504d:
– Bei 999 ist nicht mehr Schluss: Jetzt werden Zahlen bis 10000 umgewandelt.
– Wenn ein ausgewählter Textrahmen eine Zahl enthält, welche nicht automatisch ist, wird sie umgewandelt (bei mehreren nur die erste).
– Wenn der Rahmen der Pagina auf der Musterseite in einer Gruppe steckt, wird er dennoch berücksichtigt.

Das JavaScript ist hier hochgeladen: http://www.fachhefte.ch / Links "JavaScripts", "Mac OS X deutsch" (oder "Windows deutsch"), "InDesign CS5" (sollte auch mit höheren Versionen funktionieren).

Das Zip-Archiv SeitenZahlenText enthält zwei Scripts:
– "SeitenZahlenText_ss_504d.js" --> "dreissig"
– "SeitenZahlenText_sz_504d.js" --> "dreißig"

Gruss, Hans

*****
Chers amis francophones... le JavaScript NumeroPageEnTexte est disponible sur http://www.bulletin-technique.ch
Les liens: "JavaScripts", "Mac OS X français" (ou "Windows français"), "InDesign CS5" (devrait fonctionner dès CS5 jusqu'à CC 2018).

L'archive zip contient deux scripts:
– "NumeroPageEnTexte_CH_504f.js" --> "septante", "huitante", "nonante"
– "NumeroPageEnTexte_F_504f.js" --> "soixante-dix", "quatre-vingts", "quatre-vingt-dix"
als Antwort auf: [#561568] Top
 
X