[GastForen Programme Print/Bildbearbeitung Adobe InDesign Schusterjungen und Hurenkinder

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

Schusterjungen und Hurenkinder

Gerald Singelmann
  
Beiträge gesamt: 6259

30. Aug 2007, 10:22
Beitrag # 1 von 13
Bewertung:
(5817 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi all,

auf besonderen Wunsch von m.greiner hier ein einfaches AppleScript, das nach Schusterjungen und Hurenkindern sucht. Da es sehr viel einfacher ist rauszufinden, ob zwei Zeilen in verschiedenen Rahmen als in verschiedenen Spalten (des selben Rahmens) stecken, findet dieses Script derzeit nur Zeilen, die in verschiedenen Ramen stecken.
Die Zeilen, die laufend anzeigen, wo gesucht sind, sollten leicht rauszunehmen sein.

Feedback wird gern entgegengenommen.

Code
tell application "Adobe InDesign CS3" 
set aDoc to active document
set shownFrame to "none"
set allStories to stories of aDoc
repeat with aStory in allStories
set nParas to count paragraphs in aStory
repeat with n from 1 to nParas
if (count lines in paragraph n of aStory) > 1 then
set fstFrame to first item of parent text frames of first line of paragraph n of aStory
set sndFrame to first item of parent text frames of second line of paragraph n of aStory
select paragraph n of aStory
if fstFrame is not equal to shownFrame then
set shownFrame to fstFrame
my showFrame(shownFrame)
end if
if fstFrame is not equal to sndFrame then
select first line of paragraph n of aStory
my showFrame(fstFrame)
return
end if
set lstFrame to first item of parent text frames of last line of paragraph n of aStory
set sndFrame to last item of parent text frames of line -2 of paragraph n of aStory
if lstFrame is not equal to sndFrame then
my showFrame(lstFrame)
select last line of paragraph n of aStory
return
end if

end if
end repeat
end repeat
end tell
on showFrame(aFrame)
tell application "Adobe InDesign CS3"
set aSpread to my getSpread(aFrame)
if aSpread is not active spread of active window then
set active spread of active window to aSpread
zoom active window given actual size
end if
end tell
end showFrame
on getSpread(aThing)
tell application "Adobe InDesign CS3"
repeat until class of aThing is spread
set aThing to parent of aThing
end repeat
return aThing
end tell
end getSpread

X

Schusterjungen und Hurenkinder

John
Beiträge gesamt: 91

31. Aug 2007, 09:51
Beitrag # 2 von 13
Beitrag ID: #310497
Bewertung:
(5711 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Tag, Herr Singelmann,


für mich wäre dieses Script auch sehr wertvoll. Wir würden bevor wir die PDF schreiben, noch einmal überprüfen, ob sich Hurenkinder in dem Text eingeschlichen haben. Nebenbei gibt es diese Überprüfung bei Quark. Soweit, so gut. Leider funktioniert dieses Script bei mir nicht. (Indesign CS3)

Es kommt diese Fehlermeldung:

Fehlerzeichenfolge
Es wurde »Ausdruck etc«, erwartet, aber ein »Unbekanntes Token« wurde gefunden.

Mache ich etwas verkehrt.


Viele Grüße aus dem Spessart
John


als Antwort auf: [#310327]

Schusterjungen und Hurenkinder

Gerald Singelmann
  
Beiträge gesamt: 6259

31. Aug 2007, 09:59
Beitrag # 3 von 13
Beitrag ID: #310498
Bewertung:
(5707 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo John,

ich bin mir nicht sicher, was da schief läuft, daher ein paar allgemeine Bemerkungen:

- das Script ist ein AppleScript, das heißt, es läuft nicht unter Windows. Ich brauche etwa 5 mal länger, eine Idee in JavaScript umzusetzen, und habe daher derzeit keine Zeit, eine Windows-kompatible Version des Scripts umzusetzen. Ich hatte gehofft, dass einer der residenten JS Experten in die Bresche springen könnte. Aber die haben wahrscheinlich alle grad ein ähnliches Zeitproblem wie ich.
- ein AppleScript, das hier als Code veröffentlicht wird, muss in Apples AppleScript Editor kopiert werden und von dort gespeichert werden. Es reicht nicht wie bei JavaScripten, das in einen normalen Texteditor zu kopieren.
- ich habe eine erweiterte Version geschrieben, die auch einen Spaltenwechsel in einem mehrspaltigen Textrahmen finden sollte und die fragt, ob weiter gesucht werden soll, statt beim ersten Treffer abzubrechen. Die gibts diesmal als Attachment.

HTH


als Antwort auf: [#310497]
Anhang:
Schusterjungen 2.scpt.zip (12.3 KB)

Schusterjungen und Hurenkinder

Martin Fischer
  
Beiträge gesamt: 12626

31. Aug 2007, 10:40
Beitrag # 4 von 13
Beitrag ID: #310504
Bewertung:
(5681 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gerald,

Antwort auf: Ich hatte gehofft, dass einer der residenten JS Experten in die Bresche springen könnte. Aber die haben wahrscheinlich alle grad ein ähnliches Zeitproblem wie ich.


Also gut.
Wenn Du so laut winkst:
(edit: der folgende Code ist falsch; das Skript sollte in dieser Form nicht verwendet werden; Interessierte können darin studieren, wie man es nicht machen sollte; Praktiker verwenden statt dessen die untenstehende Version von Gerald Singelmann.)

Code
var aDoc = app.activeDocument; 
var allStories = aDoc.stories;

for (aStory = 0; aStory < allStories.length; aStory++)
{
var nParas = allStories[aStory].paragraphs;
for (n = 0; n < nParas.length; n++)
{
if (nParas[n].lines.length > 1)
{
var fstFrame = nParas[n].lines[0].parentTextFrames[0];
var sndFrame = nParas[n].lines[-1].parentTextFrames[0];
if (fstFrame != sndFrame)
selectIt(fstFrame.lines[-1]);
var lstFrame = nParas[n].lines[-1].parentTextFrames[0];
var sndFrame = nParas[n].lines[-2].parentTextFrames[0];
if (lstFrame != sndFrame)
selectIt(lstFrame.lines[0]);
}
}
}
alert("Keine Schusterjungen und Hurenkinder gefunden.")


function selectIt(theObj)
{
// Selects object, turns to page and zooms in on it
app.select(theObj,SelectionOptions.replaceWith);
app.activeWindow.zoomPercentage = 300
exit();
}


Vor lauter Übersetzen und wenig selber Denken ist mir der Sinn und Zweck des Vergleichs von lstFrame und sndFrame rausgegangen.

Was ist
Code
last item of parent text frames of line -2 of paragraph n of aStory 

Gibt es zu einer bestimmten Zeile nicht ausschließlich einen übergeordneten Textrahmen, nämlich den ersten? JavaScript gibt bei "nParas[n].lines[-2].parentTextFrames[-1]" undefined zurück.

Da Du Dir bereits den Kopf zerbrochen hast, laß' ich das selber jetzt sein und stell mich ganz dumm.

Viele Grüße
Martin




als Antwort auf: [#310498]
(Dieser Beitrag wurde von Martin Fischer am 31. Aug 2007, 11:10 geändert)

Schusterjungen und Hurenkinder

Gerald Singelmann
  
Beiträge gesamt: 6259

31. Aug 2007, 10:57
Beitrag # 5 von 13
Beitrag ID: #310509
Bewertung:
(5671 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

vielen Dank für die Übersetzung. Wenn ich das richtig sehe, sind ein paar Indizes durcheinander geraten. So müsste es eigentlich gehen:
Code
var aDoc = app.activeDocument;  
var allStories = aDoc.stories;

for (aStory = 0; aStory < allStories.length; aStory++)
{
var nParas = allStories[aStory].paragraphs;
for (n = 0; n < nParas.length; n++)
{
if (nParas[n].lines.length > 1)
{
var fstFrame = nParas[n].lines[0].parentTextFrames[0];
var sndFrame = nParas[n].lines[1].parentTextFrames[0];
if (fstFrame != sndFrame)
selectIt(fstFrame.lines[-1]);
var lstFrame = nParas[n].lines[-1].parentTextFrames[0];
var penultimateFrame = nParas[n].lines[-2].parentTextFrames[0];
if (lstFrame != penultimateFrame)
selectIt(lstFrame.lines[0]);
}
}
}
alert("Keine Schusterjungen und Hurenkinder gefunden.")


function selectIt(theObj)
{
// Selects object, turns to page and zooms in on it
app.select(theObj,SelectionOptions.replaceWith);
app.activeWindow.zoomPercentage = 200;
exit();
}



Zitat ist mir der Sinn und Zweck des Vergleichs von lstFrame und sndFrame rausgegangen

Ich habe unsauber die Variablen benannt. Das zweite Vorkommnis von sndFrame müsste eigentlich vorletzterRahmen heißen, aber "penultimateFrame" war mir zu umständlich.

Zitat Gibt es zu einer bestimmten Zeile nicht ausschließlich einen übergeordneten Textrahmen, nämlich den ersten?

Ich kann mir grad auch keine Situation vorstellen, in der das nicht so ist. Aber da in AppleScript eine Liste mit einem Element ebenso gut mit "last item" abgefragt werden kann wie mit "first item" ist last item semantisch korrekter, oder? denn es geht ja um den letzten, auch wenn's nur einer ist...

Informatiker unter sich, seufz.

Danke noch mal


als Antwort auf: [#310504]

Schusterjungen und Hurenkinder

Martin Fischer
  
Beiträge gesamt: 12626

31. Aug 2007, 11:07
Beitrag # 6 von 13
Beitrag ID: #310513
Bewertung:
(5666 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Gerald,

wie Schuppen fällt es mir jetzt von den Augen.
Ja klar muß das so sein.
Immerhin habe ich mich dieses Mal vor den Kopfschmerzen bewahrt. ;-)

Ich hau oben noch einen Kommentar rein, damit keiner in Versuchung kommt, das Skript tatsächlich zu verwenden.

Viele Grüße
Martin




als Antwort auf: [#310509]

Schusterjungen und Hurenkinder

John
Beiträge gesamt: 91

31. Aug 2007, 14:56
Beitrag # 7 von 13
Beitrag ID: #310557
Bewertung:
(5601 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,


habe jetzt das Script einmal getestet. Es funktioniert sehr gut. Habe keine Fehler entdekct!

John


als Antwort auf: [#310513]

Schusterjungen und Hurenkinder

Wolfgang J. Kremer
Beiträge gesamt: 62

23. Nov 2007, 14:35
Beitrag # 8 von 13
Beitrag ID: #323975
Bewertung:
(5317 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo !

Ich muss sagen, ich komme mit dem Script überhaupt nicht zurecht. Ich würde dieses Script gerne als letzten Kontrollmechanismus beim Werksatz einsetzen. Dabei genügt es mir, die Hurenkinder aufzuzeigen.

Das sollte dann in etwa so funktionieren: Starten des Scripts "SucheNachHurenkind.scpt". Dann sollte mir die Seite mit dem ersten Hurenkind angezeigt werden - und zwar in der von mir aktuell eingestellten Darstellungsgröße. Somit weiß ich, dass auf dieser Seite ein Hurenkind vorhanden ist. Dieses Hurenkind würde ich jetzt mit den Bordmitteln von InDesign auflösen oder evtl. durch Texteingriffe bereinigen. Anschließend würde ich gerne das Script wieder starten, damit es ab der aktuellen Position im Dokument weiter nach Hurenkindern sucht und dort wieder anhält.

Ich würde auch speziell nur diese Funktion in das Script einbauen und die Suche nach Schusterjungen vernachlässigen. Sollte diese Funktion gewünscht sein, so würde ich dafür ein separates Script einsetzen. Damit wäre dann gewährleistet, dass man schnell zum gewünschten Ergebnis kommt und auch umfangreiche Werke rationell durcharbeiten kann. Das Starten des Scripts würde ich mir dann noch auf eine Funktionstaste legen, damit die Suche mit nur einem Tastenanschlag gestartet wird.

Ich habe leider keinen Durchblick beim Erstellen von Scipten. Momentan behelfe ich mir mit der Funktion "Absatzlinie unten". Diese stelle ich in meinem Absatzformat so ein, dass rechts vom Textrahmen ein ca. 3 Quadratmillimeter großes Quadrat erscheint. Das fällt dann beim Durchsehen der Seiten schneller auf, als nur ein Absatzende mit evtl. Hurenkind.

Vielleicht können Gerald oder Martin mit dieser Idee ja etwas anfangen. Mich würde das sehr freuen.

Viele Grüße
Wolfgang J. Kremer


als Antwort auf: [#310327]

Schusterjungen und Hurenkinder

Ralf Hobirk
Beiträge gesamt: 5955

23. Nov 2007, 14:42
Beitrag # 9 von 13
Beitrag ID: #323977
Bewertung:
(5306 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
(Blöde) Frage meinerseits: Warum arbeitet ihr nicht mit den "Keep Options" (deutsch: Absatzumbruchoptionen) von InDesign?

Ich lasse formatbedingt bei Bodytext immer zwei Zeilen zusammenhalten, und schon erübrigt sich die Suche nach Schusterjungen und Hurenkindern.

Oder gibt es plausible Gründe, die dagegen sprechen? Gerne höre ich eure Meinungen dazu, schließlich hat ja jeder andere Job-Anforderungen.

---
Viele Grüße,
Ralf
---
iMac i7 (18,3) 4,2 GHz, 32 GB 10.15.7 Catalina | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB, 10.13.6 High Sierra | Mac Mini (6,1) als Server 2,5 GHz, 8 GB, 10.13.6 High Sierra | CC 2021 (ID 16.3.2)


als Antwort auf: [#323975]

Schusterjungen und Hurenkinder

Wolfgang J. Kremer
Beiträge gesamt: 62

23. Nov 2007, 14:55
Beitrag # 10 von 13
Beitrag ID: #323985
Bewertung:
(5299 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Ralf !

Die Standard-Funktion von InDesign "Zeilen nicht trennen" gleicht eher der Arbeitsweise eines Textverarbeitungsprogramms. Dabei wird vorgegeben, dass eine Zeile auf der Seite allein oben nicht stehen darf. Gelöst wird das Problem nur dadurch, dass auf der verhergehenden Seite unten eine Zeile weggenommen wird. Diese Vorgehensweise ist für den Werksatz nicht akzeptabel. Außerdem kann man von InDesign ja nicht verlangen, dass alles automatisch funktioniert. Wofür säße ich dann noch am Computer.

Auch die Aktivierung der Umbruchverletzungen bringt nichts, da mit der Einstellung "Zeilen nicht trennen" ja erst gar keine Hurenkinder entstehen, sondern nur immer eine zusätzliche Zeile mit auf die neue Seite genommen wird.

Viele Grüße
Wolfgang J. Kremer


als Antwort auf: [#323977]

Schusterjungen und Hurenkinder

Quarz
Beiträge gesamt: 3489

23. Nov 2007, 14:56
Beitrag # 11 von 13
Beitrag ID: #323986
Bewertung:
(5298 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Ralf,

ich mache es genauso wie Du; jeweils 2 Zeilen
zusammenhalten.

Außerdem ziehe ich mir noch zur schnelleren
Wahrnehmung in der ›Haupt‹Musterseite eine
nichtdruckende Linie auf die letzte untere Schriftlinie.

Gruß
Quarz


als Antwort auf: [#323977]

Schusterjungen und Hurenkinder

Martin Fischer
  
Beiträge gesamt: 12626

23. Nov 2007, 15:19
Beitrag # 12 von 13
Beitrag ID: #323997
Bewertung:
(5268 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Wolfgang,

Antwort auf: Außerdem kann man von InDesign ja nicht verlangen, dass alles automatisch funktioniert. Wofür säße ich dann noch am Computer.


Und deswegen fragst Du nach einem Skript?

So wie ich Dich verstehe, möchtest Du, daß das Skript kurz unterbricht und Dich etwas machen läßt und danach fortfährt. Das geht nicht.

Hier eine leicht modifizierte und schmutzige Version der Funktion selectIt() (bitte austauschen), welche Dir die Stelle einblendet und die Seitenzahl nennt.
Schmutzig, weil es nur mit Schusterjungen und Hurenkindern in Textrahmen funktioniert, die nicht verankert sind. Es funktioniert auch nicht in Tabellen. Ich vermute aber, daß in diesen Fällen in InDesign technisch gar keine Schusterjungen und Hurenkinder möglich sind, oder?

Code
   
function selectIt(theObj)
{
// Selects object, turns to page and zooms in on it
app.select(theObj,SelectionOptions.replaceWith);
app.activeWindow.zoomPercentage = 200;
try
{
alert("Toll!\rEtwas Unanständiges auf S. " + theObj.parentTextFrames[0].parent.name + " gefunden.");
}
catch(e)
{
alert('Ätsch!\rEtwas gefunden, ich sag aber nicht wo.')
}
}


Viele Grüße
Martin




als Antwort auf: [#323985]

Schusterjungen und Hurenkinder

Wolfgang J. Kremer
Beiträge gesamt: 62

23. Nov 2007, 16:02
Beitrag # 13 von 13
Beitrag ID: #324010
Bewertung:
(5248 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin !

Danke für die schnelle Antwort. Aber irgendwie reden wir hier aneinander vorbei. Es werden immer noch Schusterjungen und Hurenkinder abgefragt. Dann erscheint die Meldung "Toll! Etwas Unanständiges auf S. 00 gefunden." Drückt man jetzt "OK" geht die Suche weiter bis zur nächsten Meldung. Das dauert so lange, bis der Text durch ist. Man kann das Prozedere nicht abbrechen um evtl. einzugreifen. Außerdem läuft das Ganze recht zäh.

Ist es nicht möglich, eine Abfrage zu starten, die in etwa wie folgt aussieht:

- Wähle im aktuellen Textrahmen den letzten Absatz aus
- Abfrage: Läuft dieser Absatz auf die nächste Seite um ?
- Wenn nein, gehe auf nächste Seite und starte Abfrage noch einmal
- Wenn ja, ist der Y-Umlauf kleiner/gleich der aktuelle Zeilenvorschub ?
- Wenn ja, gehe zu Seite (aktuelle Seite)
- Wenn nein, Abfrage wiederholen.

Ich weiß, das ist ziemlich grob aufgezeigt. Doch sollte man damit nicht die Möglichkeit haben, die Seite mit dem Hurenkind in der eingestellten Ansicht darzustellen und die gewünschten Änderungen vorzunehmen. Anschließend startet man das Script neu und das Ganze geht weiter.

Hoffentlich habe ich mich verständlich ausgedrückt.

Viele Grüße
Wolfgang J. Kremer


als Antwort auf: [#323997]
(Dieser Beitrag wurde von Wolfgang J. Kremer am 23. Nov 2007, 16:04 geändert)
X

Aktuell

PDF / Print
300_PDF20

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
08.11.2022

Frankfurt, Fraport Conference Center
Dienstag, 08. Nov. 2022, 13.30 - 18.00 Uhr

Seminar

Auf der Enfocus World Tour stellen wir Ihnen gemeinsam mit Enfocus die aktuellen Highlights von Enfocus Switch und dem Impressed Workflow Server (IWS) vor. Wir präsentieren Ihnen anhand typischer Aufgabenstellungen in einem modernen Produktionsbetrieb die Möglichkeiten, die Enfocus Switch für die Automatisierung und Standardisierung von Abläufen bietet. Wir haben sowohl für Produktionsverantwortliche als auch technisch Interessierte ein spannendes Programm vorbereitet, bei dem Sie sicherlich viel Neues erfahren werden, welches Sie in Ihrem eigenen Betrieb umsetzen können. Die Veranstaltung bietet darüber hinaus eine hervorragende Möglichkeit, sich mit anderen Anwendern und Workflow-Spezialisten auszutauschen und Antworten auf konkrete Aufgabenstellungen zu erhalten, welche Sie mit Hilfe von Enfocus Switch/IWS umsetzen möchten.

Wir sind jeweils an 2 Tagen in Frankfurt, Hamburg und München vor Ort. Der erste (halbe) Tag richtet sich in erster Linie an Betriebsleiter und Produktionsverantwortliche in Druckereien - ist also weniger technisch orientiert - sondern gibt einen Überblick zu den heutigen Möglichkeiten einer automatisierten Produktion.

Der zweite Tag (Switch Anwender-Treffen) richtet sich an bestehende Switch-Anwender und Administratoren.

Anmeldung und weitere Infos: https://www.impressed.de/schulung.php?c=sDetail&sid=310

Ja

Organisator: Enfocus/Impressed

Kontaktinformation: Silvia Noack, E-Mailsnoack AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=310

Enfocus World Tour 2022
Veranstaltungen
08.11.2022

Frankfurt, Fraport Conference Center
Dienstag, 08. Nov. 2022, 13.30 - 18.00 Uhr

Seminar

Auf der Enfocus World Tour stellen wir Ihnen gemeinsam mit Enfocus die aktuellen Highlights von Enfocus Switch und dem Impressed Workflow Server (IWS) vor. Wir präsentieren Ihnen anhand typischer Aufgabenstellungen in einem modernen Produktionsbetrieb die Möglichkeiten, die Enfocus Switch für die Automatisierung und Standardisierung von Abläufen bietet. Wir haben sowohl für Produktionsverantwortliche als auch technisch Interessierte ein spannendes Programm vorbereitet, bei dem Sie sicherlich viel Neues erfahren werden, welches Sie in Ihrem eigenen Betrieb umsetzen können. Die Veranstaltung bietet darüber hinaus eine hervorragende Möglichkeit, sich mit anderen Anwendern und Workflow-Spezialisten auszutauschen und Antworten auf konkrete Aufgabenstellungen zu erhalten, welche Sie mit Hilfe von Enfocus Switch/IWS umsetzen möchten.

Wir sind jeweils an 2 Tagen in Frankfurt, Hamburg und München vor Ort. Der erste (halbe) Tag richtet sich in erster Linie an Betriebsleiter und Produktionsverantwortliche in Druckereien - ist also weniger technisch orientiert - sondern gibt einen Überblick zu den heutigen Möglichkeiten einer automatisierten Produktion.

Der zweite Tag (Switch Anwender-Treffen) richtet sich an bestehende Switch-Anwender und Administratoren.

Anmeldung und weitere Infos: https://www.impressed.de/schulung.php?c=sDetail&sid=310

Ja

Organisator: Enfocus/Impressed

Kontaktinformation: Silvia Noack, E-Mailsnoack AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=310

Enfocus World Tour 2022