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?

  • $\begingroup$ Try also adding Internal`NewInput=False; to init.m. $\endgroup$ – ilian Jul 18 '15 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$ – Alexey Popkov Jul 18 '15 at 16:14
  • 1
    $\begingroup$ Did you add both SetOptions["stdout", PageWidth -> 125]; and Internal`NewInput=False;? $\endgroup$ – ilian Jul 18 '15 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 Jul 18 '15 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 Jul 18 '15 at 19:44

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.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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