8
$\begingroup$

We can control the page width used by InputForm by applying SetOptions to "stdout":

SetOptions["stdout", PageWidth -> 10];
Range[5] // InputForm
{1, 2, 3, 
4, 5}

But addition of the line

SetOptions["stdout", PageWidth -> 125];

to the Kernel "init.m" file has no effect. How is it possible to change the default page width used by InputForm?

$\endgroup$
9
  • $\begingroup$ Try also adding Internal`NewInput=False; to init.m. $\endgroup$
    – ilian
    Commented Jul 18, 2015 at 15:57
  • 1
    $\begingroup$ @ilian This does not work: SetOptions["stdout", PageWidth -> 125]; inside init.m does not change the PageWidth setting: Options["stdout", PageWidth] returns {PageWidth -> 32} after launching Mathematica. $\endgroup$ Commented Jul 18, 2015 at 16:14
  • 1
    $\begingroup$ Did you add both SetOptions["stdout", PageWidth -> 125]; and Internal`NewInput=False;? $\endgroup$
    – ilian
    Commented Jul 18, 2015 at 16:16
  • 1
    $\begingroup$ Interesting, it did work for me (V10.2 on Linux). Maybe there is something OS-specific. Another idea: task := SetOptions["stdout", PageWidth -> 125]; RunScheduledTask[task, {1}]. $\endgroup$
    – ilian
    Commented Jul 18, 2015 at 17:02
  • 1
    $\begingroup$ (I think) I see, what I had suggested applies to the standalone kernel... the frontend will tell the kernel to set PageWidth to WindowWidth and also change it dynamically on window resize. Perhaps SetOptions[$FrontEnd, {PrivateEvaluationOptions -> {"OutputFormPageWidth" -> 125}}] will do the trick? $\endgroup$
    – ilian
    Commented Jul 18, 2015 at 19:44

1 Answer 1

9
$\begingroup$

What I think is happening is that the SetOptions statement in init.m is executed during kernel initialization as expected, however when the notebook window is opened, the front-end sets PageWidth to be WindowWidth. Furthermore, the kernel value does get changed accordingly whenever the window is resized.

This being the front-end, I would not be surprised if there are other/better ways, but what seemed to work was

SetOptions[$FrontEnd, PrivateEvaluationOptions -> {"OutputFormPageWidth" -> 125}]

While it was not the culprit in this question, I would still mention that something similar may happen in a console kernel session, where PageWidth can be reset by the terminal input library to be the width of the console at startup time. This can be avoided by either turning the terminal library off or using a scheduled task in init.m, e.g.

task := SetOptions["stdout", PageWidth -> 125]; 
RunScheduledTask[task, {1}]

so that it runs after the terminal library is loaded.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.