Skalierung zur Anpassung an die SeitenbreiteDie JMP-Seiteneinrichtung verfügt über eine Skalierung zur Anpassung an die Seite, aber ich möchte dies in einem Skript tun, ohne einen statischen Skalar verwenden zu müssen. Ist das möglich, eine „An Seitenbreite anpassen“?
Insbesondere möchte ich dafür sorgen, dass das Skript automatisch einen Skalar für den Befehl „Seite einrichten“ basierend auf dem Seitenlayout (Hochformat oder Querformat, Randgrößen) auswählt.
Aktuelles Skript:
Journal << Set page setup(
margins( .4, .4, .4, .4 ),
scale( .67 ), portrait( 0 ),
paper size( "Letter" )
);
Ich möchte, dass es so ist
Journal << Set page setup(
margins( .4, .4, .4, .4 ), portrait( 0 ),
paper size( "Letter" )
);
ScaleVariable = /* current page setup width divided by maximum width of objects in journal*/ ;
Journal << Set Page Setup( scale ( ScaleVariable ) ) ;
Betreff: Skalierung zur Anpassung an die SeitenbreiteDer Originalausschnitt von JSL sieht so aus
eval(evalexpr(
Journal << Set page setup( margins( expr(left), expr(top), expr(right), expr(bottom) ),
scale( expr(scale) ), portrait( 1 ), paper size( "Letter" ) )
));
Die zusätzlichen eval(evalexpr( ... expr(...) ...))-Funktionen umgehen ein Problem, das in der JMP 10-Zeit bestand (und anscheinend immer noch besteht). Das Problem lag/liegt im <Es handelt sich um ein Muster zum Ersetzen der Variablen durch den Wert einer Variablen .
Ich glaube, Sie haben den eval/evalexpr-Wrapper weggelassen.
Bearbeiten: Habe eine Nachricht an das Entwicklungsteam gesendet.
Betreff: Skalierung zur Anpassung an die SeitenbreiteVielen Dank, dass Sie dies geteilt haben.
Ich habe Schwierigkeiten, diesen Teil auszuführen:
scale( expr(scale) )
Es scheint, dass jmp16 dies nicht als numerischen Wert erkennt.
Irgendwelche Vorschläge?
Es funktioniert nur, wenn ich dort eine Nummer eingebe.
Danke,
Betreff: Skalierung zur Anpassung an die SeitenbreiteDas ist schön! Danke schön!
Betreff: Skalierung zur Anpassung an die SeitenbreiteEs gibt einen besseren Weg, der auch in JMP 10 funktioniert:
journal << set Print Headers( "", "", "" );
journal << save pdf( "$temp\test.pdf" );
Durch das Entfernen der Druckkopfzeilen (und ggf. Fußzeilen) sieht die PDF-Seite viel besser aus.
PDF without JMP headersPDF without JMP headersPDF ohne JMP-Header
Betreff: Skalierung zur Anpassung an die SeitenbreiteDies funktioniert in JMP 12 ziemlich gut. JMP 11 entfernt die zusätzlichen Seitendekorationen nicht und JMP 10 benötigt Hilfe beim Senden der Parameter an die SetPageSetup-Nachricht. (Empfehlen Sie ein Upgrade auf 12 (oder 13!), wenn möglich.)
// your parameters - paper size and margins
pagewidth = 8.5;
pageheight = 11;
left = .4;
right = .4;
top = .4;
bottom = .4;
dt = Open( "$sample_data/big class.jmp" );
// your reports
//plat = dt << runscript( "bivariate" );
//plat << journal;
//plat << closewindow;
plat = dt << runscript( "fit model" );
plat << journal;
plat << closewindow;
journal = Current Journal();
saved = Get Preferences( "print settings" ); // remember decorations, if any
Preferences( Print Settings( Left Header( "" ), Right Header( "" ) ) ); // remove decorations
{xpix, ypix} = journal << getsize;
marginx = left + right;
marginy = top + bottom;
xinch = pagewidth - marginx;
yinch = pageheight - marginy;
xppi = xpix / xinch;
yppi = ypix / yinch;
ppi = Max( xppi, yppi );
scale = 96 / Ceiling( ppi ); // a little guesswork here.
// 96 is the pixels per inch of the destination. 72 is another common possibility.
// force the larger dimension to fit. you could pick a different strategy, make the
// width fit perhaps, or have a minimum scale you don't go below.
Journal << Set page setup( margins( left, top, right, bottom ), scale( scale ), portrait( 1 ), paper size( "Letter" ) );
journal << save pdf( "$temp\test.pdf" );
journal << closewindow;
Open( "$temp\test.pdf" );
eval( saved );
Entfernen Sie für JMP 11 oder 10 die Einstellung „Speichern/Festlegen/Wiederherstellen“ und für die Verwendung mit JMP 10
// for JMP 10, this will have to suffice...
// your parameters - paper size and margins
pagewidth = 8.5;
pageheight = 11;
left = .4;
right = .4;
top = .4;
bottom = .4;
dt = Open( "$sample_data/big class.jmp" );
// your reports
//plat = dt << runscript( "bivariate" );
//plat << journal;
//plat << closewindow;
plat = dt << runscript( "fit model" );
plat << journal;
plat << closewindow;
journal = Current Journal();
//saved = Get Preferences( "print settings" ); // remember decorations, if any
//Preferences( Print Settings( Left Header( "" ), Right Header( "" ) ) ); // remove decorations
{xpix, ypix} = journal << getsize;
marginx = left + right;
marginy = top + bottom;
xinch = pagewidth - marginx;
yinch = pageheight - marginy;
xppi = xpix / xinch;
yppi = ypix / yinch;
ppi = Max( xppi, yppi );
scale = 96 / Ceiling( ppi ); // a little guesswork here.
// 96 is the pixels per inch of the destination. 72 is another common possibility.
// force the larger dimension to fit. you could pick a different strategy, make the
// width fit perhaps, or have a minimum scale you don't go below.
eval(evalexpr(
Journal << Set page setup( margins( expr(left), expr(top), expr(right), expr(bottom) ),
scale( expr(scale) ), portrait( 1 ), paper size( "Letter" ) )
));
journal << save pdf( "$temp\test.pdf" );
journal << closewindow;
Open( "$temp\test.pdf" );
//eval( saved );
Ich bin nicht 100 % sicher, was den fest codierten 96-DPI-Wert angeht, und möglicherweise gibt es einige Rundungsfehler, die die Deckenfunktion fälschlicherweise zu berücksichtigen versucht.
Betreff: Skalierung zur Anpassung an die SeitenbreiteWenn es hilft, verwende ich JMP 10.0.2
Betreff: Skalierung zur Anpassung an die SeitenbreiteHabe ich alle verblüfft?