Mise à l'échelle pour s'adapter à la largeur de la pageLa configuration de la page JMP est livrée avec une échelle adaptée à la page, mais j'aimerais le faire dans un script sans avoir à utiliser un scalaire statique. Est-ce possible, un « ajustement à la largeur de la page » ?
Plus précisément, j'aimerais faire en sorte que le script sélectionne automatiquement un scalaire pour la commande "Définir la mise en page" en fonction de la mise en page (Portrait ou Paysage, tailles des marges).
Scénario actuel :
Journal << Set page setup(
margins( .4, .4, .4, .4 ),
scale( .67 ), portrait( 0 ),
paper size( "Letter" )
);
j'aimerais que ce soit
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 ) ) ;
Re : Mise à l'échelle pour s'adapter à la largeur de la pageLe extrait original de JSL ressemble à ceci
eval(evalexpr(
Journal << Set page setup( margins( expr(left), expr(top), expr(right), expr(bottom) ),
scale( expr(scale) ), portrait( 1 ), paper size( "Letter" ) )
));
Les fonctions supplémentaires eval(evalexpr( ... expr(...) ...)) contournent un problème qui existait à l'époque de JMP 10 (et existe apparemment toujours.) Le problème était/est dans le fichier <C'est un modèle pour remplacer la valeur d'une variable par la variable .
Je pense que vous avez omis le wrapper eval/evalexpr.
Edit : envoyé une note à l'équipe de développement.
Re : Mise à l'échelle pour s'adapter à la largeur de la pageMerci d'avoir partagé cela.
J'ai du mal à exécuter cette partie :
scale( expr(scale) )
Il semble que jmp16 ne reconnaisse pas cela comme une valeur numérique.
Aucune suggestion?
Cela ne fonctionne que si j'y mets un numéro.
Merci,
Re : Mise à l'échelle pour s'adapter à la largeur de la pageC'est beau! Merci!
Re : Mise à l'échelle pour s'adapter à la largeur de la pageIl existe une meilleure méthode qui fonctionne également dans JMP 10 :
journal << set Print Headers( "", "", "" );
journal << save pdf( "$temp\test.pdf" );
la suppression des en-têtes d'impression (et des pieds de page si nécessaire) rend la page PDF bien meilleure.
PDF without JMP headersPDF without JMP headersPDF sans en-têtes JMP
Re : Mise à l'échelle pour s'adapter à la largeur de la pagecela fonctionne plutôt bien dans JMP 12. JMP 11 ne supprime pas les décorations de page supplémentaires et JMP 10 a besoin d'aide pour envoyer les paramètres au message SetPageSetup. (Je recommande la mise à niveau vers 12 (ou 13 !) si possible.)
// 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 );
Pour JMP 11 ou 10, supprimez la préférence enregistrer/définir/restaurer et pour JMP 10, utilisez
// 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 );
Je ne suis pas sûr à 100 % de la valeur 96 DPI codée en dur, et il peut y avoir des erreurs d'arrondi que la fonction de plafond tente de prendre en compte à tort.
Re : Mise à l'échelle pour s'adapter à la largeur de la pageSi cela peut aider, j'utilise JMP 10.0.2
Re : Mise à l'échelle pour s'adapter à la largeur de la pageEst-ce que j'ai surpris tout le monde ?