Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign Skriptwerkstatt » Seitenumfang in bibliographischen Angaben eines Testabschnitts (war: Verankertes Objekt per Script erzeugen?)

Seitenumfang in bibliographischen Angaben eines Testabschnitts (war: Verankertes Objekt per Script erzeugen?)

Quarz
Beiträge gesamt: 3555

14. Dez 2009, 13:18
Bewertung:

gelesen: 13475

Beitrag als Lesezeichen
Hallo Martin,

ich mach mal ein neues Fass auf, und verlängere nicht den
Threat Verankertes Objekt per Script erzeugen?.

Also zu meinem Problem:

Um eine Marginalie, die mir vom Titel aus einen Textrahmen für
die Jahrgangsangaben unten auf der Seite einrichtet, benutzte
ich das Script, s.o.

insertAnchoredFrame_simpleVersion.jxs
http://www.hilfdirselbst.ch/..._P205732.html#205732


Das Script ist im Laufe der Zeit schon dahingehend erweitert
worden, dass ich im Script einen/den Text eintragen konnte.

myFrame.insertionPoints[0].select();
myFrame.contents=mySelection.contents;
app.selection[0].contents = "zmr | 93. Jahrgang | 2009 | x - y"

x = autom Seitenzahl
y = Querverweis für Artikelende

Ließe sich das machen, dass das Script die Angabe für die
autom. Seitenzahl enthält?
(Den Querverweis, kann ich 'mit der Hand' eintragen.)

Gruß
Quarz


--------------------------------------------
InDesign CS4 ver6.04 | WinXP SP3


(Dieser Beitrag wurde von Martin Fischer am 14. Dez 2009, 17:58 geändert)

Verankertes Objekt per Script erzeugen?

Martin Fischer
  
Beiträge gesamt: 12783

14. Dez 2009, 14:25
Bewertung:

gelesen: 13410

Beitrag als Lesezeichen
Hallo Quarz,

versuch's mal damit:
Code
if (app.selection.length == 0 || !app.selection[0].hasOwnProperty('baseline')) 
exit();

var mySelection = app.selection[0];
var myOStyle = app.activeDocument.objectStyles.item("Marginalien"); // Objektstil
if (myOStyle == null)
{
alert('Objektstil \"Marginalien\" nicht vorhanden.');
exit();
}
var myBounds = [ "0p", "0p", "33mm", "18mm"]; // Koordinaten des Marginalientextrahmens [y1, x1, y2, x2]

var myFrame = mySelection.insertionPoints[0].textFrames.add(); // Einfügen eines Textrahmen am Einfügepunkt (Cursor)
myFrame.parent.parentTextFrames[0].characters.length;
myFrame.geometricBounds = myBounds; // Zuweisung der Koordinaten (Höhe und Breite)
myFrame.applyObjectStyle(myOStyle, true); // Zuweisung des Objektstils

//myFrame.contents = "zmr | 93. Jahrgang | 2009 | " + SpecialCharacters.AUTO_PAGE_NUMBER + "–y";

myFrame.contents = SpecialCharacters.AUTO_PAGE_NUMBER;
myFrame.insertionPoints.lastItem().contents = "–y";
myFrame.insertionPoints.firstItem().contents = "zmr | 93. Jahrgang | 2009 | ";
myFrame.characters.lastItem().select();


Viele Grüße
Martin


Verankertes Objekt per Script erzeugen?

Quarz
Beiträge gesamt: 3555

14. Dez 2009, 16:13
Bewertung:

gelesen: 13394

Beitrag als Lesezeichen
Hallo Martin,

Klasse - ganz große Klasse :-)))

Machst Du das auch so?

Gruß
Quarz


--------------------------------------------
InDesign CS4 ver6.04 | WinXP SP3

Verankertes Objekt per Script erzeugen?

Martin Fischer
  
Beiträge gesamt: 12783

14. Dez 2009, 16:37
Bewertung:

gelesen: 13385

Beitrag als Lesezeichen
Nein, ich mach das nicht per Skript.

Für die jeweils ersten Seiten der Beiträge meiner Zeitschriften habe ich eine spezielle Musterseite angelegt, wo neben den bibliographischen Angaben die Hinweise zum Seitenumfang drin stehen.
Die automatische Seitennummer steht schon drin. Den Querverweis auf den Textanker am Ende des Beitrags bringe ich aber (ähnlich wie Du) von Hand ein.

Mein Verfahren ist gewiss nicht das optimale.
(Besser als die Lösung mit der Musterseite wär's etwa über ein Bibliotheksobjekt).
Aber ich habe mich halt dran gewöhnt und nehm's grad so, wie's schon immer kommt. ;-)

Und wenn ich mal wieder viel Zeit habe, werde ich mir dafür noch ein Skript basteln, wo der Textanker ausgewählt werden kann. Du bist jetzt schon als Betatester vorgemerkt. ;-)
Allerdings schätze ich beim jetzigen Vorgehen die Kontrollmöglichkeit.
Ich vertraue nicht blindlings jedem Automatismus.
Schon gar nicht meinen eigenen.

Viele Grüße
Martin



(Dieser Beitrag wurde von Martin Fischer am 14. Dez 2009, 16:40 geändert)

Verankertes Objekt per Script erzeugen?

Quarz
Beiträge gesamt: 3555

14. Dez 2009, 16:56
Bewertung:

gelesen: 13373

Beitrag als Lesezeichen
Hallo Martin,

ich glaube, dass mit den Musterseiten für die erste Seite
der einzelnen Beiträge ist eine gute Idee.
Zumal dort keine Seitenzahl auftaucht und die Kolumnenlinie
bei mir fetter ist.

›Man‹ lernt doch nie aus ;-)

Gruß
Quarz


--------------------------------------------
InDesign CS4 ver6.04 | WinXP SP3

Seitenumfang in bibliographischen Angaben eines Testabschnitts

Martin Fischer
  
Beiträge gesamt: 12783

14. Dez 2009, 17:50
Bewertung:

gelesen: 13359

Beitrag als Lesezeichen
> Zumal dort keine Seitenzahl auftaucht

Eben deswegen und wegen aufgeblendeten Kolumnentiteln und andere Besonderheiten der ersten Seite hatte ich mich vor längerer Zeit für die Musterseitenlösung entschieden.

Das Lösen des bibliographischen Blocks ist allerdings eine wacklige Lösung. Falls die bibliographischen Angaben geändert werden (Bandnr., Erscheinungsdatum), reicht nicht eine Änderung auf den Musterseiten alleine aus (ok, hier könnte man stattdessen auch mit Textvariablen arbeiten, die sich überall anpassen).

Eine erneute Zuweisung der Musterseite auf eine erste Seite mit gelöstem bibliographischen Block hätte zur Konsequenz, dass das Musterseitenobjekt wieder durchscheint.
Deswegen wäre hier einem Bibliotheksobjekt der Vorzug zu geben.

Viele Grüße
Martin



(Dieser Beitrag wurde von Martin Fischer am 14. Dez 2009, 17:58 geändert)

Seitenumfang in bibliographischen Angaben eines Testabschnitts

Quarz
Beiträge gesamt: 3555

14. Dez 2009, 17:59
Bewertung:

gelesen: 13349

Beitrag als Lesezeichen
Hallo Martin,

der Auftrag ist noch nicht da.
Ich mach mir nur schon mal Gedanken, wie es noch besser
gehen könnte.

Vielleicht mache ich eine Kombination aus Musterseite und
Script für die bibliographischen Angaben.

Dann habe ich nicht das Problem mit dem Lösen und dem
Stehenbleiben.
Und, wenn eine Seite mehr oder weniger kommt, gehen die
bibliographischen Angaben durch die Verankerung wunderbar mit.

Gruß
Quarz


--------------------------------------------
InDesign CS4 ver6.04 | WinXP SP3

Seitenumfang in bibliographischen Angaben eines Testabschnitts

Martin Fischer
  
Beiträge gesamt: 12783

14. Dez 2009, 18:27
Bewertung:

gelesen: 13339

Beitrag als Lesezeichen
Antwort auf: Und, wenn eine Seite mehr oder weniger kommt, gehen die
bibliographischen Angaben durch die Verankerung wunderbar mit.


Wo stehen bei Dir die bibliographischen Angaben?
Bei mir stehen sie auf der erste Seite des Beitrags, mit einer Zeile Abstand zur unteren Satzspiegelkante.

Verankerte Objekte suche ich wo es geht zu meiden.
Wie schnell vergisst man einen Anker oder übersieht man bestimmte Konsequenzen, die er mit sich bringen kann (z.B. Silbentrennung).

Viele Grüße
Martin


Seitenumfang in bibliographischen Angaben eines Testabschnitts

Quarz
Beiträge gesamt: 3555

14. Dez 2009, 20:38
Bewertung:

gelesen: 13315

Beitrag als Lesezeichen
Hallo Martin,

bei 'mir' stehen 'sie' - siehe Anlage.

Bis jetzt bin ich mit diesen verankerten Objekten noch
nicht durcheinander gekommen.

Ob ich nun Querverweise oder Hyperlinkziele verwenden
werde, weiß ich noch nicht.

Ich bin die Querverweise so gewöhnt.
FCBL fügt am Ende des Artikels das Wörtchen 'Ende' mit
einem AF ein, sodaß ich mich beim Querverweis darauf
beziehen kann.


Gruß
Quarz


--------------------------------------------
InDesign CS4 ver6.04 | WinXP SP3


Anhang:
Muster bibliographische Angaben.pdf (56.9 KB)

Seitenumfang in bibliographischen Angaben eines Testabschnitts

Martin Fischer
  
Beiträge gesamt: 12783

14. Dez 2009, 23:16
Bewertung:

gelesen: 13296

Beitrag als Lesezeichen
Antwort auf: FCBL fügt am Ende des Artikels das Wörtchen 'Ende' mit
einem AF ein, sodaß ich mich beim Querverweis darauf beziehen kann.


Und dann?
Geht das 'Ende' so – sichtbar – auch in Druck?
Ein Textanker wäre ein unsichtbares Ende.
Über den Druck hinaus. ;-)

So etwa könnte man von einem ausgewählten Text (Autorenname) den Anker ans Ende des Textabschnitts werfen. Der Anker bekommt den Inhalt des ausgewählten Text zum Namen (oder bei Konflikten einen einzugebenden alternativen Namen).

Code
if (app.selection.length == 0 || !app.selection[0].hasOwnProperty('baseline')) 
exit();

var d = app.activeDocument;
var s = app.selection[0];
try
{
var myName = (app.selection[0].constructor.name == 'InsertionPoint')
? s.words.firstItem().contents
: s.contents;
}
catch(e)
{
var myName = 'Irgendwas'
}

while ( myName == '' || d.hyperlinkTextDestinations.itemByName(myName).isValid)
{
myName = prompt('Alternativer Name für Quellenziel', myName+= '_');
if (myName == null)
exit();
}
var hl_destination = d.hyperlinkTextDestinations.add({destinationText:s.parentStory.insertionPoints.lastItem(), name:myName});

alert('Querverweisziel \r»' + myName + '« am Ende des Textabschnitts erstellt.')


Das Gegenstück dazu (Querverweis von ausgewählter Quelle zum ausgewählten Ziel):
Code
if (app.selection.length == 0 || !app.selection[0].hasOwnProperty('baseline')) 
exit();

var doc = app.activeDocument;
var cr_name = 'Seitenverweis';
var myHLdest = myDisplayDialog(doc);
var sel = app.selection[0];

// Prüfung Vorhandensein von Querverweisformat
var cr_format = doc.crossReferenceFormats.itemByName(cr_name);
if (cr_format == null)
{

cr_format = doc.crossReferenceFormats.add({name:cr_name});
// cr_format.buildingBlocks.add({blockType:BuildingBlockTypes.CUSTOM_STRING_BUILDING_BLOCK, customText: '–'});
cr_format.buildingBlocks.add({blockType:BuildingBlockTypes.PAGE_NUMBER_BUILDING_BLOCK});
}

// Quelle des Querverweises hinzufügen
var cr_source = doc.crossReferenceSources.add({sourceText: sel.insertionPoints.firstItem(), appliedFormat: cr_format});

// Querverweis von Quelle zu Ziel hinzufügen
app.documents.firstItem().hyperlinks.add(cr_source, myHLdest);


function myDisplayDialog(doc){
var myFieldWidth = 120;
var hl_destinations = doc.hyperlinkTextDestinations.everyItem().name;
var myDialog = app.dialogs.add({name:"Querverweise"});
with(myDialog.dialogColumns.add()){
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Hyperlinkziel:", minWidth:myFieldWidth});
}
with(dialogColumns.add()){
var mySourceDropdown = dropdowns.add({stringList:hl_destinations, selectedIndex:hl_destinations.length-1});
}
}
}
var myResult = myDialog.show();
if(myResult == true){
var the_hldest =doc.hyperlinkTextDestinations.item(mySourceDropdown.selectedIndex);
myDialog.destroy();
}
else{
myDialog.destroy()
exit();
}
return the_hldest;
}


Oder, um automatische Seitenzahl und Querverweis zum ausgewählten Textanker einzugeben (z.B. '1–10'):
Code
if (app.selection.length == 0 || !app.selection[0].hasOwnProperty('baseline')) 
exit();

var doc = app.activeDocument;
var cr_name = 'Seitenverweis';
var myHLdest = myDisplayDialog(doc);
var sel = app.selection[0];

// Prüfung Vorhandensein von Querverweisformat
var cr_format = doc.crossReferenceFormats.itemByName(cr_name);
if (cr_format == null)
{

cr_format = doc.crossReferenceFormats.add({name:cr_name});
// cr_format.buildingBlocks.add({blockType:BuildingBlockTypes.CUSTOM_STRING_BUILDING_BLOCK, customText: '–'});
cr_format.buildingBlocks.add({blockType:BuildingBlockTypes.PAGE_NUMBER_BUILDING_BLOCK});
}

// Quelle des Querverweises hinzufügen
var cr_source = doc.crossReferenceSources.add({sourceText: sel.insertionPoints.firstItem(), appliedFormat: cr_format});

// Querverweis von Quelle zu Ziel hinzufügen
app.documents.firstItem().hyperlinks.add(cr_source, myHLdest);

// aktuelle Seitenzahl
sel.insertionPoints.firstItem().contents = "–";
sel.insertionPoints.firstItem().contents = SpecialCharacters.AUTO_PAGE_NUMBER;


function myDisplayDialog(doc){
var myFieldWidth = 120;
var hl_destinations = doc.hyperlinkTextDestinations.everyItem().name;
var myDialog = app.dialogs.add({name:"Querverweise"});
with(myDialog.dialogColumns.add()){
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Hyperlinkziel:", minWidth:myFieldWidth});
}
with(dialogColumns.add()){
var mySourceDropdown = dropdowns.add({stringList:hl_destinations, selectedIndex:hl_destinations.length-1});
}
}
}
var myResult = myDialog.show();
if(myResult == true){
var the_hldest =doc.hyperlinkTextDestinations.item(mySourceDropdown.selectedIndex);
myDialog.destroy();
}
else{
myDialog.destroy()
exit();
}
return the_hldest;
}


Viele Grüße
Martin



(Dieser Beitrag wurde von Martin Fischer am 15. Dez 2009, 06:39 geändert)

Seitenumfang in bibliographischen Angaben eines Testabschnitts

Quarz
Beiträge gesamt: 3555

15. Dez 2009, 10:19
Bewertung:

gelesen: 13245

Beitrag als Lesezeichen
Danke Martin :-)))

ich glaube, ich habe jetzt das fast Non-plus-ultra für
mich gefunden.

Mit 3 Klicks steht die bibliographische Angabe unten
auf der Seite.

Verwendet werden folgende Scripte:.
1. Querverweis aus ausgewählten Txt.jsx
2. Textrahmen mit bibliographischen Angaben.jsx
3. autom SZahl + Querverweis.jsx
und
4. Script von Peter Kahrel, um mehrere Scripte
hintereinander laufen zu lassen, in die ich die o.g.
3 Scripte gesetzt habe.


Allerdings gibt es noch einen kleinen Schönheitsfehler.

Wenn ich ein Wort markiere, z.B. den Autor, dann wird
mir Folgendes platziert:
Müllerzmr | 93. Jahrgang | 2009 | 2 - 13

Wenn ich nichts markiere, nur den Cusor positioniere,
dann ist es richtig
zmr | 93. Jahrgang | 2009 | 2 - 13


-------------------------
Script von Peter Kahrel
http://www.hilfdirselbst.ch/...i?post=411580#411580


Gruß
Quarz

--------------------------------------------
InDesign CS4 ver6.04 | WinXP SP3


Anhang:
Danke.jpg (36.7 KB)

Seitenumfang in bibliographischen Angaben eines Testabschnitts

Quarz
Beiträge gesamt: 3555

15. Dez 2009, 18:08
Bewertung:

gelesen: 13219

Beitrag als Lesezeichen
Hallo Martin,

ich hab’s gefunden, wie ich den Schönheitsfehler
beseitigen kann.

zu 1.
Nicht das Wort markieren, sondern den Cursor in das
Wort setzen.

Und alles ist gut ;-)

Gruß
Quarz

--------------------------------------------
InDesign CS4 ver6.04 | WinXP SP3

Seitenumfang in bibliographischen Angaben eines Testabschnitts

Martin Fischer
  
Beiträge gesamt: 12783

15. Dez 2009, 18:21
Bewertung:

gelesen: 13212

Beitrag als Lesezeichen
Hallo Quarz,

> Und alles ist gut ;-)

Nun, Dir kann ich es ja in aller Heimlichkeit verraten:
Es gibt da oben eine Stelle, da habe ich geschlampert, weil ich keine Lust hatte, alle möglichen Situationen auszubrüten und darauf zu reagieren.

Vielleicht bist Du da jetzt in die Falle getappt und bist dem fiesen Trick auf die Schliche gekommen.
Sobald ich mit diesen beiden Skripten oben mal vernünftig arbeiten werde (und das werde ich), folgt Besserung.

Es handelt sich um diese Stelle:
Code
try   
{
var myName = (app.selection[0].constructor.name == 'InsertionPoint')
? s.words.firstItem().contents
: s.contents;
}
catch(e)
{
var myName = 'Irgendwas'
}

Kam bei Dir mal 'Irgendwas' dazwischen?

Viele Grüße
Martin


Seitenumfang in bibliographischen Angaben eines Testabschnitts

Quarz
Beiträge gesamt: 3555

15. Dez 2009, 18:31
Bewertung:

gelesen: 13204

Beitrag als Lesezeichen
Hallo Martin,

wenn ich den Cursor ans Ende eines Wortes stelle wird
Irgendwas als Anker gespeichert, und kommt dann nicht
'dazwischen'.

Aber - es kann nur einmal Irgendwas als Anker gespeichert
werden.

Gruß
Quarz

--------------------------------------------
InDesign CS4 ver6.04 | WinXP SP3

Seitenumfang in bibliographischen Angaben eines Testabschnitts

Quarz
Beiträge gesamt: 3555

18. Okt 2010, 16:46
Bewertung:

gelesen: 12037

Beitrag als Lesezeichen
Hallo Martin,

jetzt ist dieser thread fast ein Jahr alt, und ich bin
mittlerweile von CS4 auf CS5 umgestiegen.

Das Script
automatische Seitenzahl und Querverweis zum
ausgewählten Textanker (z.B. '1–10'):

siehe oben oder folgend:

Code
if (app.selection.length == 0 || !app.selection[0].hasOwnProperty('baseline'))  
exit();

var doc = app.activeDocument;
var cr_name = 'Seitenverweis';
var myHLdest = myDisplayDialog(doc);
var sel = app.selection[0];

// Prüfung Vorhandensein von Querverweisformat
var cr_format = doc.crossReferenceFormats.itemByName(cr_name);
if (cr_format == null)
{

cr_format = doc.crossReferenceFormats.add({name:cr_name});
// cr_format.buildingBlocks.add({blockType:BuildingBlockTypes.CUSTOM_STRING_BUILDING_BLOCK, customText: '–'});
cr_format.buildingBlocks.add({blockType:BuildingBlockTypes.PAGE_NUMBER_BUILDING_BLOCK});
}

// Quelle des Querverweises hinzufügen
var cr_source = doc.crossReferenceSources.add({sourceText: sel.insertionPoints.firstItem(), appliedFormat: cr_format});

// Querverweis von Quelle zu Ziel hinzufügen
app.documents.firstItem().hyperlinks.add(cr_source, myHLdest);

// aktuelle Seitenzahl
sel.insertionPoints.firstItem().contents = " - ";
sel.insertionPoints.firstItem().contents = SpecialCharacters.AUTO_PAGE_NUMBER;


function myDisplayDialog(doc){
var myFieldWidth = 120;
var hl_destinations = doc.hyperlinkTextDestinations.everyItem().name;
var myDialog = app.dialogs.add({name:"Querverweise"});
with(myDialog.dialogColumns.add()){
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Hyperlinkziel:", minWidth:myFieldWidth});
}
with(dialogColumns.add()){
var mySourceDropdown = dropdowns.add({stringList:hl_destinations, selectedIndex:hl_destinations.length-1});
}
}
}
var myResult = myDialog.show();
if(myResult == true){
var the_hldest =doc.hyperlinkTextDestinations.item(mySourceDropdown.selectedIndex);
myDialog.destroy();
}
else{
myDialog.destroy()
exit();
}
return the_hldest;
}

bringt mir unter CS5 einen Absturz.

Ich würde natürlich auch gerne unter CS5
automatisch die ›bibliographischen Angaben‹
machen.

Hat sich irgendetwas am Code in CS5 verändert?

Vielleicht kannst Du ja mal einen Blick drüberwerfen.


Gruß
Quarz

----------------------------------------------------------
InDesign CS4 6.05 + CS5 7.02 | Win7/64 Prof.

Seitenumfang in bibliographischen Angaben eines Testabschnitts

Martin Fischer
  
Beiträge gesamt: 12783

18. Okt 2010, 17:07
Bewertung:

gelesen: 1434

Beitrag als Lesezeichen
Hallo Quarz,

ich kenne mich mit CS5 nicht aus, weil ich es für meine Arbeit nicht einsetzen kann.
Deswegen kann ich Dir im Moment auch nicht sagen, woran es liegt, dass das CS4-Skript unter CS5 nicht läuft.

Vielleicht weiß jemand anderer weiter.

Viele Grüße
Martin


Seitenumfang in bibliographischen Angaben eines Testabschnitts

zaphodbeeblebroxx
Beiträge gesamt: 408

19. Okt 2010, 21:39
Bewertung:

gelesen: 1406

Beitrag als Lesezeichen
 
Hallo Quarz,

ich habe Dein Script unter CS5 auf Windows XP getestet. Es funktioniert bei mir ohne Abstürze.

Hast Du mal probiert das Script unter CS5 mit dem DOM von CS4 zu verwenden, indem Du das Script in einen Unterordner "Version 6.0 Scripts" im Verzeichnis "Scripts Panel" legst?

Oder im Script die "app.scriptPreferences.version" auf die Version von CS4 zu ändern (WICHTIG: diese dann wieder auf die CS5 scriptPreferences.version zurücksetzen).


Matthias

Seitenumfang in bibliographischen Angaben eines Testabschnitts

Quarz
Beiträge gesamt: 3555

21. Okt 2010, 12:19
Bewertung:

gelesen: 1375

Beitrag als Lesezeichen
Hallo Matthias,

danke für Deine Rückmeldung.
Ich habe den Verursacher jetzt gefunden.

Das Script ist in die Menüleiste -
mit dem Script loadScript2Menu von Gerald -
eingebunden.
Der Start von dort, bringt mir ID CS5 also
zum Absturz.

Wenn ich das Script normal aus der
Script-Palette aufrufe, dann ist alles ok.


Gruß
Quarz

----------------------------------------------------------
InDesign CS4 6.05 + CS5 7.02 | Win7/64 Prof.