[GastForen Programme Print/Bildbearbeitung Adobe InDesign Inhaltsverzeichnis ausmisten!!!

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

Inhaltsverzeichnis ausmisten!!!

georgeharell
Beiträge gesamt: 6

25. Okt 2006, 10:51
Beitrag # 1 von 14
Bewertung:
(5845 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich habe hier ein über xml importierten text in Indesign.
Die einzelnen Seiten bestehen jeweils aus einer "Überschrift", einem "Bild" und einem "Text". Diese Elemente haben auch unterschiedliche Absatzformate.

Ich möchte nun ein Inhaltsverzeichnis erstellen, das alle Überschriften in alphabetischer Reihenfolge auflistet. Das funktioniert auch wunderbar.

mein Problem ist folgendes: Es kommt des öfteren vor, daß gleiche "Überschriften" auf mehreren hintereinander folgenden Seiten stehen.
Jetzt habe ich also in meinem Index z.B. 10 mal "Kapitel 1" mit jeweils unterschiedlichen Seitenzahlen stehen. Ich hätte aber gerne nur die erste Seite, wo diese Überschrift erscheint.

Gibt es da eine Lösung, dies in den Griff zu bekommen?
(per Skript oder bei den Einstellungen) Ich konnte leider nichts finden.

Vielen Dank, george
X

Inhaltsverzeichnis ausmisten!!!

Martin Fischer
  
Beiträge gesamt: 12783

25. Okt 2006, 11:11
Beitrag # 2 von 14
Beitrag ID: #258419
Bewertung:
(5830 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Du könntest den sich wiederholenden Überschriften ein Absatzformat mit einem anderen Namen zuweisen.

> Jetzt habe ich also in meinem Index z.B. 10 mal "Kapitel 1"
Oh, ich sehe, Du arbeitest gar nicht mit der Inhaltsverzeichnisfunktion, sondern mit dem Index.
Da solltest Du aber nicht 10 mal "Kapitel 1" bekommen, sondern 1 mal "Kapitel 1" mit zehn angehängten Seitenzahlen.
Entweder diese Seitenzahlen löschen oder die Indexmarken bei den Wiederholungen löschen.


als Antwort auf: [#258411]

Inhaltsverzeichnis ausmisten!!!

georgeharell
Beiträge gesamt: 6

25. Okt 2006, 11:22
Beitrag # 3 von 14
Beitrag ID: #258424
Bewertung:
(5827 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
DAs mit den anderen Absatzformaten hab ich auch schon überlegt. Ist nur etwas schwierig und for allem aufwendig. Hab ein paar hundert Seiten. Die XML Datei ändert sich des öfteren und wird aus mehreren (ca. 400) einzelnen XML Dateien erstellt. Deshalb ist das mit den anderen Abschnittsformaten eher schlecht.

Eigentlich wollte ich das ganze mit der Inhaltsverzeichnisfunktion machen.

Kann man den nicht irgendwo einstellen, daß doppelte Einträge nicht im Inhaltsverzeichnis angezeigt werden sollen?


als Antwort auf: [#258419]

Inhaltsverzeichnis ausmisten!!!

georgeharell
Beiträge gesamt: 6

25. Okt 2006, 12:13
Beitrag # 4 von 14
Beitrag ID: #258440
Bewertung:
(5806 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
sonst keiner eine idee?


als Antwort auf: [#258424]

Inhaltsverzeichnis ausmisten!!!

Martin Fischer
  
Beiträge gesamt: 12783

25. Okt 2006, 12:51
Beitrag # 5 von 14
Beitrag ID: #258459
Bewertung:
(5800 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Per Skript könntest Du die aufeinanderfolgenden Absätze überprüfen und Absätze, die gleich beginnen wie der vorhergehende, löschen. Du müßtest halt herausfinden, wie weit die Überprüfung jeweils gehen soll (2. oder 3. oder 4. Wort; bis zum ersten Tabulator oder sonst ein eindeutig und besonderes Zeichen).

Ich hab mal so etwas Ähnliches für eine Bibliographie gemacht, wo die Autorennamen ab Ihrem zweiten Titel in Folge durch "–," ersetzt werden sollten.

Wenn Du Dich mit JavaScript etwas auskennst, könnte ich Dir dieses zur Anpassung an Deine Zwecke überlassen. Ich habe im Moment nicht die Lust und die Zeit dazu.


als Antwort auf: [#258440]

Inhaltsverzeichnis ausmisten!!!

georgeharell
Beiträge gesamt: 6

25. Okt 2006, 19:28
Beitrag # 6 von 14
Beitrag ID: #258539
Bewertung:
(5770 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hy Martin,

das wäre super. Hab Dir eine PN geschickt.

Danke, George


als Antwort auf: [#258459]

Inhaltsverzeichnis ausmisten!!!

Martin Fischer
  
Beiträge gesamt: 12783

25. Okt 2006, 20:58
Beitrag # 7 von 14
Beitrag ID: #258541
Bewertung:
(5753 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi George,

hier das Skript für die Bibliographie.

Code
// cleanUpBib.jsx 

var mySubst = "–,\t";
app.findPreferences = app.changePreferences = null;

cleanUpBib (app.selection[0]);

function cleanUpBib(textRef) {
var myParas = textRef.paragraphs;
var curName = "";
for (var j = myParas.length -1; j >= 0; j--) {
var bibName = getBibName(myParas[j]);
if (bibName) {
if ((bibName != curName) || (bibName == "")) {
curName = bibName;
} else {
clearBibName(myParas[j+1]);
}
}
}
}

function getBibName(thePara) {
if (theCommas = getCommas(thePara))
return thePara.parentStory.characters.itemByRange(thePara.characters[0], theCommas[1]).contents.join();
}

function clearBibName(thePara) {
if (theCommas = getCommas(thePara))
thePara.parentStory.characters.itemByRange(thePara.characters[0], theCommas[1]).contents = mySubst;
}

function getCommas(thePara) {
var theCommas = thePara.search( ', ' );
if (theCommas.length > 0)
return theCommas;
}


Was macht das Skript?
In einer Schleife vom letzten Absatz der Auswahl (ausgewählter Text oder Textrahmen) bis zum ersten prüft es die die Namen (Zeichenfolge vom Anfang eines Absatzes bis zum zweiten Komma im Absatz) zweier aufeinanderfolgender Absätze. Sind sie gleich, wird beim zweiten Absatz der Name durch den String mySubst ersetzt.

Die Identifikation der Namen erfolgt über die Funktion getBibName().
In dieser Funktion wird die Funktion getCommas() aufgerufen, die die Kommata im Absatz und deren Position ermittelt. Die folgende Zeile faßt den Inhalt vom Anfang des Absatzes bis zum 2. Komma.
Code
thePara.parentStory.characters.itemByRange(thePara.characters[0], theCommas[1]).contents.join() 

Diese Funktion müßtest Du durch eine Routine ersetzen, die den Inhalt Deines Inhaltverzeichniseintrags wiedergibt (also z.B. vom ersten Zeichen des Absatzes bis zum ersten – nicht dem zweiten(!) – Tabulator. Anstelle der Kommata würdest Du also in getCommas() nach den Tabulatoren suchen.

Und in der Funktion clearBibName() wäre statt dem Ersetzen eines Teils des Inhalts (Name) das Löschen des ganzen Absatzes zu programmieren: einfach thePara.remove()

Der Knackpunkt dürfte für Dich das Suchen des Tabs sein.
Viel Spaß.


als Antwort auf: [#258539]

Inhaltsverzeichnis ausmisten!!!

Martin Fischer
  
Beiträge gesamt: 12783

25. Okt 2006, 21:06
Beitrag # 8 von 14
Beitrag ID: #258543
Bewertung:
(5747 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ach was, wemmer schon dabei sind ...
Du hast meiner Vermutung, daß Eintrag und Seitenzahl durch einen Tabulator getrennt sind, bislang nicht widersprochen. Deshalb nehme ich an, die Vermutung stimmt so.

Dann müßte Dein Problem mit folgendem Skript zu lösen sein (setze den Cursor vor Ausführung des Skripts in den Textfluß, in dem die Doppelungen gelöscht werden sollen):
Code
// cleanUpIHV.jsx 

app.findPreferences = app.changePreferences = null;

cleanUpIHV (app.selection[0].parentStory);

function cleanUpIHV(textRef) {
var myParas = textRef.paragraphs;
var curName = "";
for (var j = myParas.length -1; j >= 0; j--) {
var theEntry = getEntry(myParas[j]);
if (theEntry) {
if ((theEntry != curName) || (theEntry == "")) {
curName = theEntry;
} else {
clearPara(myParas[j+1]);
}
}
}
}

function getEntry(thePara) {
if (theTabs = getTabs(thePara))
return thePara.parentStory.characters.itemByRange(thePara.characters[0], theTabs[0]).contents.join();
}

function clearPara(thePara) {
if (theTabs = getTabs(thePara))
thePara.remove();
}

function getTabs(thePara) {
var theTabs = thePara.search( '\t' );
if (theTabs.length > 0)
return theTabs;
}



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

Inhaltsverzeichnis ausmisten!!!

georgeharell
Beiträge gesamt: 6

25. Okt 2006, 21:20
Beitrag # 9 von 14
Beitrag ID: #258547
Bewertung:
(5742 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
WOW!!! Vielen, vielen Dank, es funktioniert einwandfrei.

Dankeschön, George


als Antwort auf: [#258543]

Inhaltsverzeichnis ausmisten!!!

Stibi
Beiträge gesamt: 832

27. Okt 2011, 12:06
Beitrag # 10 von 14
Beitrag ID: #483147
Bewertung:
(5074 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich habe grade nach einem Skript gesucht, das oben beschriebene Funktion hat. Leider funktioniert es unter CS5 nicht (mehr?).

Bei 2 Zeilen steigt es mit einer Fehlermeldung aus:


Code
app.findPreferences = app.changePreferences = null;  
.
.
.
var theTabs = thePara.search( '\t' );


Im ersten Fall unterstützt das Objekt die Eigenschaft oder Methode nicht und im zweiten Fall heisst es thePara.search ist keine Funktion.

Heissen diese Funktionen jetzt anders? Was müsste ich da ändern?

Gruß Stibi

[Edit] das erste hab ich schon gefunden:
Code
app.findTextPreferences = app.changeTextPreferences = null; 



als Antwort auf: [#258543]
(Dieser Beitrag wurde von Stibi am 27. Okt 2011, 12:15 geändert)

Inhaltsverzeichnis ausmisten!!!

Martin Fischer
  
Beiträge gesamt: 12783

27. Okt 2011, 12:53
Beitrag # 11 von 14
Beitrag ID: #483161
Bewertung:
(5046 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stibi,

lösch diese Zeile einfach raus.
Die wird nicht benötigt und ist wohl nach dem Texten von verschiedenen Ansätzen (u.a. mit Ersetzen) versehentlich stehen geblieben.


als Antwort auf: [#483147]

Inhaltsverzeichnis ausmisten!!!

Stibi
Beiträge gesamt: 832

27. Okt 2011, 13:15
Beitrag # 12 von 14
Beitrag ID: #483165
Bewertung:
(5034 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke Martin für die schnelle Antwort.
Aber:
welche Zeile soll ich löschen?
das "app.findTextPreferences = app.changeTextPreferences = null;" geht ja jetzt. Die Zeile
Code
var theTabs = thePara.search( '\t' ); 

macht den Ärger. und die allein löschen bringt ja nix.... dann kommen die Fehler ja in den folgenden Zeilen, da "theTabs" nicht definiert ist.


als Antwort auf: [#483161]

Inhaltsverzeichnis ausmisten!!!

Martin Fischer
  
Beiträge gesamt: 12783

27. Okt 2011, 13:20
Beitrag # 13 von 14
Beitrag ID: #483166
Bewertung:
(5028 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Oh Mist.
Die hatte ich übersehen.
Bitte entschuldige den falschen Hinweis.

Die findTextPreferences werden gebraucht.

Ersetze die zitierte Zeile var theTabs = thePara.search( '\t' ); folgendermaßen:

Code
app.findTextPreferences.findWhat = '\t'; 
var theTabs = thePara.findText();



als Antwort auf: [#483165]

Inhaltsverzeichnis ausmisten!!!

Stibi
Beiträge gesamt: 832

27. Okt 2011, 13:42
Beitrag # 14 von 14
Beitrag ID: #483170
Bewertung:
(4997 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke.
Klappt. applause

Gruß Stibi


als Antwort auf: [#483166]
X