[GastForen Programme Print/Bildbearbeitung Adobe InDesign CS2: Nummerierung auf mehr als einer Ebene

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

CS2: Nummerierung auf mehr als einer Ebene

Christoph29
Beiträge gesamt: 5

12. Aug 2006, 17:11
Beitrag # 1 von 9
Bewertung:
(3615 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

Wie kann man in InDesign CS2 Ueberschriften-Nummerierungen mit mehr als einer Ebene anlegen?

Zum Beispiel: 1.1, 1.2, oder 1.2.1.1 usw.

Ich habe ueberall gesucht, aber immer nur die erste Ebene gefunden.

Danke fuer Eure Hilfe!
Christoph


Platform: Windows XP, InDesign CS2 4.0
X

CS2: Nummerierung auf mehr als einer Ebene

Martin Fischer
  
Beiträge gesamt: 12783

12. Aug 2006, 17:50
Beitrag # 2 von 9
Beitrag ID: #244353
Bewertung:
(3611 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Nein.
Geht nur per Hand oder Skript.
Ein fertiges Skript kenne ich allerdings noch nicht.


als Antwort auf: [#244348]

CS2: Nummerierung auf mehr als einer Ebene

MSchmitz
Beiträge gesamt: 545

12. Aug 2006, 20:40
Beitrag # 3 von 9
Beitrag ID: #244371
Bewertung:
(3594 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
schau mal hier rein:
http://share.studio.adobe.com/...%3D54%26rppsel1%3D50
ist aber kostenpflichtig nach ablauf der demo-zeit.

markus schmitz


als Antwort auf: [#244348]

CS2: Nummerierung auf mehr als einer Ebene

Gerald Singelmann
  
Beiträge gesamt: 6269

12. Aug 2006, 21:49
Beitrag # 4 von 9
Beitrag ID: #244378
Bewertung:
(3591 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Robert Tkaczyck schreibt auch im amerikanischen InDesign Forum. Meistens nicht viel mehr als den Satz "You can try my tool (10 days trial)".

Da ich das so ausgesprochen unsympatisch finde, hier ein AppleScript Ansatz. Das hilft dem OP zwar nicht, aber vielleicht hat Martin morgen ja Langeweile und haut das mal eben nach JavaScript rum (hint... hint... ;)

Das Skript ist noch nicht hübsch, eine Menge Code geht dafür drauf, dass sehr viele Absatzformate vorhanden sein können.

Angenommen ich habe diesen Text:

3 Ich bin titel1

3.1 ich bin subtitel

ich bin ein langweiliges format

3.2 ich bin wieder subtitel

schon wieder ein langweiliges format

3.3 ich bin zwischentitel

ich bin eine kapitelüberschrift

4 ich bin mal wieder ein titel

4.1 ich bin ein zwischentitel

Dann müssen für die Absatzformate folgende Werte eingegeben werden
Anfangen bei 3
kapitel -1
langweiligesFormat 0
subtitel 2
titel 1
zwischentitel 2

Wenn sich was ändert, einfach das Skript noch mal starten. Man muss allerdings die Zahlen noch mal eingeben. Das ändert sich in der nächsten Version, sobald ich kapiert habe, wie man dem Dokument einen privaten Label verpasst (das war keine Aufforderung, im Moment will ich das gar nicht wissen ;)

Ich benutze es seit einigen Wochen erfolgreich, aber wie immer kann keine Garantie gegen Überraschungen gegeben werden. Ihr benutzt es auf eigene Gefahr.


Code
set lZiffern to {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"} 
set sInternSeparator to "."
set sLastSeparator to " "

tell application "Adobe InDesign CS2"
set aSel to selection
set aDoc to active document
if aSel = {} then return
set thisStory to item 1 of aSel
if class of thisStory is text frame then
set thisStory to parent story of thisStory
else
repeat until (class of thisStory is story)
set thisStory to parent of thisStory
end repeat
end if
set allStyles to every paragraph style of aDoc
set nStyles to count allStyles

activate

set myDialog to make dialog with properties {name:"Hierarchie bestimmen"}
tell myDialog
tell (make dialog column)
tell (make dialog row)
make static text with properties {static label:"Anfangen bei:"}
set startValueField to make integer editbox with properties {edit value:1}
end tell
make static text with properties {static label:"Oberste Ebene = 1; zweite = 2; etc. ;"}
make static text with properties {static label:"Absätze ohne Nr = 0 / -1 für Neustart 1. Level"}
set lHFields to {}
if nStyles > 10 then
set nHalfOfIt to nStyles div 2 + 2
else
set nHalfOfIt to nStyles
end if
tell (make dialog row)
tell (make dialog column)
repeat with n from 3 to nHalfOfIt
tell (make dialog row)
set aSTmp to (name of (item n of allStyles))
set lHFields to lHFields & (make integer editbox ¬
with properties ¬
{edit value:0, small nudge:1, minimum value:(-1 * nStyles), maximum value:(nStyles - 2)})
make static text with properties {static label:aSTmp}
end tell
end repeat
end tell
if nStyles > 10 then
tell (make dialog column)
repeat with n from (nHalfOfIt + 1) to nStyles
tell (make dialog row)
set aSTmp to (name of (item n of allStyles))
set lHFields to lHFields & (make integer editbox ¬
with properties ¬
{edit value:0, small nudge:1, minimum value:(-1 * nStyles), maximum value:(nStyles - 2)})
make static text with properties {static label:aSTmp}
end tell
end repeat
end tell
end if

end tell
end tell
end tell

set nu to show myDialog

if nu is true then
set startValue to edit value of startValueField as integer
set lStyleHierarchy to {}
set lBreakStyles to {}
set lBreakLevel to {}
repeat with m from 1 to (nStyles - 2) -- minus 2, weil wir [keins] und [basis] nicht berücksichtigen
repeat with n from 3 to nStyles
set aux to edit value of (item (n - 2) of lHFields)
if aux = (-1 * m) then
copy (item n of allStyles) to end of lBreakStyles
copy m to end of lBreakLevel
else if aux = m then
copy (item n of allStyles) to end of lStyleHierarchy
-- set lStyleHierarchy to lStyleHierarchy & (item n of allStyles)
end if
end repeat
end repeat
set nHeadStyles to count lStyleHierarchy
set nBreakStyles to count lBreakStyles
set lCounters to {(startValue - 1)}
repeat with n from 2 to nHeadStyles
set lCounters to lCounters & 0
end repeat

repeat with nPara from 1 to (count paragraphs in thisStory)
set aPara to (a reference to (paragraph nPara in thisStory))
set aStyle to applied paragraph style of aPara
try
set c1 to first character in aPara
set weiter to true
on error
set weiter to false
end try

if weiter then -- leere Absätze werden ignoriert
if aStyle is in lStyleHierarchy then -- Anfangsziffern löschen, wenn Format in Liste
if c1 is in lZiffern then
set c2 to second character in aPara
set c3 to third character in aPara -- Wir können nicht weiter als bis 99 zählen
if (c2 is sInternSeparator) or (c3 is sInternSeparator) or (c2 is sLastSeparator) or (c3 is sLastSeparator) then
repeat until first character of aPara is sLastSeparator
set contents of first character of aPara to ""
end repeat
set contents of first character of aPara to "" -- der last separator ist noch da
end if
end if
end if

if aStyle is in lStyleHierarchy then -- kleinere Level auf 0 setzen
repeat with i from 1 to nHeadStyles
if item i of lStyleHierarchy = aStyle then set thisIndex to i
end repeat
set aufNull to true
else if aStyle is in lBreakStyles then
repeat with i from 1 to nBreakStyles
if item i of lBreakStyles = aStyle then set thisIndex to (item i of lBreakLevel) - 1
end repeat
set aufNull to true
else
set aufNull to false
end if
if aufNull then
repeat with i from (thisIndex + 1) to nHeadStyles
set item i of lCounters to 0
end repeat
end if

if aStyle is in lStyleHierarchy then
set tempCounter to (item thisIndex of lCounters) + 1
set item thisIndex of lCounters to tempCounter
set tempIndex to index of first character of aPara
set hey to first character in aPara
repeat with n from thisIndex to 1 by -1
if n = thisIndex then
set contents of insertion point tempIndex of thisStory to (((item n of lCounters) as string) & sLastSeparator)
else
set contents of insertion point tempIndex of thisStory to (((item n of lCounters) as string) & sInternSeparator)
end if
end repeat
end if
end if
end repeat

else
--destroy dialog
return
end if
end tell



als Antwort auf: [#244371]

CS2: Nummerierung auf mehr als einer Ebene

Martin Fischer
  
Beiträge gesamt: 12783

12. Aug 2006, 22:57
Beitrag # 5 von 9
Beitrag ID: #244383
Bewertung:
(3586 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Lieber Gerald,

> "You can try my tool (10 days trial)".
Robert kommt aus Polen und beherrscht die englische Sprache nur begrenzt.
Außerdem glänzen ihm eben die Dollars in den Augen.
Allerdings sind seine Skripte pfiffig. Da würde ich gerne öfters mal in den Code reinschauen. Aber den weiß er gut zu verbergen. :-(

> aber vielleicht hat Martin morgen ja Langeweile und haut das mal eben nach JavaScript rum

Ich habe morgen bestimmt keine Langeweile, weil mir das Los zugekommen ist, für meinen Schwager einen Win XP Rechner neu einzurichten. Da werde ich morgen wohl ziemlich viel am Schimpfen sein und mir das ESTK herwünschen. ;-)

Im Moment bin ich ziemlich beansprucht und kann's keinem recht machen.
Aber vielleicht bekomme ich nächste Woche mal etwas Luft.

Dank für Deine AS-Vorlage.
Dieser Code haut mich fast um.
Da muß einiges drin stecken.
Ich druck mir das aus und studiere Deine Ausführung morgen während der Formatierung.


als Antwort auf: [#244378]
(Dieser Beitrag wurde von Martin Fischer am 12. Aug 2006, 23:46 geändert)

CS2: Nummerierung auf mehr als einer Ebene

Christoph29
Beiträge gesamt: 5

13. Aug 2006, 13:38
Beitrag # 6 von 9
Beitrag ID: #244404
Bewertung:
(3562 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Gerald,

Danke, das Skript sieht ja echt nach viel Arbeit aus! Dann müssen wir ja jetzt "nur noch" warten, bis es jemand in JS umsetzt :-)

Gruß,
Christoph.


als Antwort auf: [#244378]

CS2: Nummerierung auf mehr als einer Ebene

Martin Fischer
  
Beiträge gesamt: 12783

13. Aug 2006, 14:32
Beitrag # 7 von 9
Beitrag ID: #244407
Bewertung:
(3556 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> das Skript sieht ja echt nach viel Arbeit aus!

Das kann ich - zwischenrein - nur bestäigen.
Das ist ein goldiges Ei, was Du, Gerald, uns da gelegt hast.
Allein der Aufbau des Dialogs.
Ich weiß gar nicht, ob ich das in JS auf die Schnelle so hinbekommen würde.

> Dann müssen wir ja jetzt "nur noch" warten, bis es jemand in JS umsetzt

Bei mir dauert's tatsächlich ne Weile (frühestens Mitte bis Ende dieser Woche), bis ich wieder Zeit für so ein Skript habe.
Deswegen lasse ich diesmal gerne den anderen JavaScriptern den Vortritt.


als Antwort auf: [#244404]

CS2: Nummerierung auf mehr als einer Ebene

Martin Fischer
  
Beiträge gesamt: 12783

20. Aug 2006, 22:02
Beitrag # 8 von 9
Beitrag ID: #245756
Bewertung:
(3464 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Auf folgender Seite wird das Problem auch diskutiert und im Diskussionsverlauf ist ein Link auf ein VBS-Skript angegeben: Funktion Kapitel-Nummerierung?

Link zum Skript: Heading_V1_2.vbs

Zitat von Michael Kohler Hab das script mittlerweile auf meine homepage geladen:
http://www.kunstgebaeude.de/webdesign/Heading_V1_2.vbs

Das Script unter
Adobe Indesign CS2/Presets/Scripts
speichern und über Indesign dann mal laufen lassen.
(Fenster/Automatisieren/Scripten)

Ein Tutorium hab ich nicht dazu. Allerdings gibt es ein paar Dinge, die zu beachten sind:
* Die Überschriften müssen als Absatzformate gespeichert sein
* Textfelder sollten sich nicht überschneiden (bzw. der Text der beiden Textfelder)
* Das Script unterstützt keine Bücher, sondern nur einzelne Dokumente
* Die Nummerierung beginnt immer bei 1 (Man kann also nicht ein Dokument zB. ab der Überschrift
"3 Einführung" nummerieren lassen)

*Um das Script zu starten muß zuerst irgendein Textfeld markiert sein

* Das script startet mit einem Dialogfenster
* Jede zu nummerierende Überschrift (Hier: Heading) muß dem richtigen Absatzformat zugewiesen sein
* Der Haken vor Heading 1, Heading 2 usw. bedeutet das diese nummeriert werden soll
* "Split with" nennt das Zeichen, dass zur Trennung verwendet werden soll (zB 1.2 oder 1/2)
* Zweimal auf OK klicken um das Script zu starten
* Das Dokument wird zur Sicherheit erst gespeichert bevor die Nummerierung beginnt
* Durch "Datei/Zurück zur letzten Version" kann die Nummerierung rückgängig gemacht werden

Ach noch was: Das Script ist recht groß und benötigt etwas Zeit!

Hoffe das reicht erst mal


Erfahrungsberichte erwünscht.


als Antwort auf: [#244378]

CS2: Nummerierung auf mehr als einer Ebene

Heike Burch
Beiträge gesamt: 1241

13. Sep 2006, 21:03
Beitrag # 9 von 9
Beitrag ID: #250687
Bewertung:
(3267 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Genau das hab ich immer schonmal gesucht.
Aber kann mir jemand den Haken unten erklären:
"Heading 1 as Section marker" ???

Bei mir passiert kein Unterschied.


als Antwort auf: [#245756]
X