Redirecting CellPrint outputCan I Print to a different notebook? (within the context of the same...

Called into a meeting and told we are being made redundant (laid off) and "not to share outside". Can I tell my partner?

Can the Shape Water Cantrip be used to manipulate blood?

Are small insurances worth it

How do I deal with being envious of my own players?

is 'sed' thread safe

Book about a time-travel war fought by computers

Was it really inappropriate to write a pull request for the company I interviewed with?

Can a Trickery Domain cleric cast a spell through the Invoke Duplicity clone while inside a Forcecage?

Is there a way to find out the age of climbing ropes?

I encountered my boss during an on-site interview at another company. Should I bring it up when seeing him next time?

How can I highlight parts in a screenshot

Reason why dimensional travelling would be restricted

Sometimes a banana is just a banana

Should we avoid writing fiction about historical events without extensive research?

Being asked to review a paper in conference one has submitted to

Did Amazon pay $0 in taxes last year?

Are all UTXOs locked by an address spent in a transaction?

A peculiar integral identity

“I had a flat in the centre of town, but I didn’t like living there, so …”

Giving a talk in my old university, how prominently should I tell students my salary?

How do you say “my friend is throwing a party, do you wanna come?” in german

It doesn't matter the side you see it

Why won't the strings command stop?

Can an earth elemental drown/bury its opponent underground using earth glide?



Redirecting CellPrint output


Can I Print to a different notebook? (within the context of the same kernel)Temporarily redirect the output of Print[ ] to a second fileA notebook created on demand from a main document showing executable input along with output cellsConsecutive Print to target same output CellConditional printed outputWhy TeXForm[] do not display to notebook if followed by OutputForm[] in same cell?Temporary/popup Output Progress BoxesHow to find the last output cell of the group to which a certain cell belongs?Delete Cell Inside of ModulePrint SlideShowSaving all cell-groups to pdfs with filenamesDelete all output in notebooks













3












$begingroup$


How can I make g[]; or h[]; print the same output as f[];? I am trying to capture the output of one function and put it in a document elsewhere, but the CellPrint output is not cooperating.



f[] := Module[{},
Print["Bob"];
CellPrint[Cell["", Background -> Blue, "Print"]];
Print["Bill"]]

printlist = {};
Block[{Print = AppendTo[printlist, {##}] &,
CellPrint = AppendTo[printlist, {##}] &}, f[]];

g[] := Map[CellPrint, ExpressionCell[#, "Print"] & /@
Flatten[printlist, 1]]

h[] := CreateDocument[ExpressionCell[#, "Print"] & /@
Flatten[printlist, 1]]

f[];
g[];









share|improve this question











$endgroup$

















    3












    $begingroup$


    How can I make g[]; or h[]; print the same output as f[];? I am trying to capture the output of one function and put it in a document elsewhere, but the CellPrint output is not cooperating.



    f[] := Module[{},
    Print["Bob"];
    CellPrint[Cell["", Background -> Blue, "Print"]];
    Print["Bill"]]

    printlist = {};
    Block[{Print = AppendTo[printlist, {##}] &,
    CellPrint = AppendTo[printlist, {##}] &}, f[]];

    g[] := Map[CellPrint, ExpressionCell[#, "Print"] & /@
    Flatten[printlist, 1]]

    h[] := CreateDocument[ExpressionCell[#, "Print"] & /@
    Flatten[printlist, 1]]

    f[];
    g[];









    share|improve this question











    $endgroup$















      3












      3








      3


      1



      $begingroup$


      How can I make g[]; or h[]; print the same output as f[];? I am trying to capture the output of one function and put it in a document elsewhere, but the CellPrint output is not cooperating.



      f[] := Module[{},
      Print["Bob"];
      CellPrint[Cell["", Background -> Blue, "Print"]];
      Print["Bill"]]

      printlist = {};
      Block[{Print = AppendTo[printlist, {##}] &,
      CellPrint = AppendTo[printlist, {##}] &}, f[]];

      g[] := Map[CellPrint, ExpressionCell[#, "Print"] & /@
      Flatten[printlist, 1]]

      h[] := CreateDocument[ExpressionCell[#, "Print"] & /@
      Flatten[printlist, 1]]

      f[];
      g[];









      share|improve this question











      $endgroup$




      How can I make g[]; or h[]; print the same output as f[];? I am trying to capture the output of one function and put it in a document elsewhere, but the CellPrint output is not cooperating.



      f[] := Module[{},
      Print["Bob"];
      CellPrint[Cell["", Background -> Blue, "Print"]];
      Print["Bill"]]

      printlist = {};
      Block[{Print = AppendTo[printlist, {##}] &,
      CellPrint = AppendTo[printlist, {##}] &}, f[]];

      g[] := Map[CellPrint, ExpressionCell[#, "Print"] & /@
      Flatten[printlist, 1]]

      h[] := CreateDocument[ExpressionCell[#, "Print"] & /@
      Flatten[printlist, 1]]

      f[];
      g[];






      notebooks cells monitoring






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 4 hours ago









      Kuba

      106k12206529




      106k12206529










      asked 4 hours ago









      Chris DegnenChris Degnen

      22k23787




      22k23787






















          3 Answers
          3






          active

          oldest

          votes


















          1












          $begingroup$

          a) notice that depending on the settings Print may be printed to the MessagesNotebook while CellPrint always goes to the parent notebook.



          b) I'm not sure what is the context so I will just leave those links here:



          Can I Print to a different notebook? (within the context of the same kernel)



          Temporarily redirect the output of Print[ ] to a second file



          c) the answer:



          The problem is that you are doing CellPrint @ ExpressionCell @ Cell[.... Here is what you can do:



          f[] := Module[{}, Print["Bob"];
          CellPrint[Cell["", Background -> Blue, "Print"]];
          Print["Bill"]]

          printlist = {};
          Block[{Print =
          AppendTo[printlist, ExpressionCell[Row[{##}], "Print"]] &,
          CellPrint = AppendTo[printlist, {##}] &}, f[]];

          g[] := Map[CellPrint, Flatten[printlist, 1]]

          h[] := CreateDocument[Flatten[printlist, 1]]

          f[];
          g[];





          share|improve this answer









          $endgroup$





















            1












            $begingroup$

            Why not wrap ExpressionCell only around Print calls? For example:



            printlist={};
            Block[
            {
            Print = AppendTo[printlist, Thread[ExpressionCell[{##}, "Print"]]]&,
            CellPrint = AppendTo[printlist, #]&
            },
            f[]
            ];

            g[] := CellPrint /@ Flatten @ printlist
            h[] := CreateDocument[
            Flatten @ printlist
            ]


            Then:



            g[];



            enter image description here




            and:



            nb = h[];
            CurrentNotebookImage[nb]



            enter image description here




            seem to do what you want.






            share|improve this answer









            $endgroup$





















              1












              $begingroup$

              CellPrint >> Details:



              In CellPrint[expr]:




              If expr has head TextCell, ExpressionCell, or CellGroup, it is inserted unchanged into the notebook.




              So changing heads Cell to Sequence in the first argument of ExpressionCell works:



              ClearAll[g, h]

              g[] := Map[CellPrint, ExpressionCell[# /. Cell -> Sequence, "Print"] & /@
              Flatten[printlist, 1]]

              h[] := CreateDocument[ExpressionCell[# /. Cell -> Sequence, "Print"] & /@
              Flatten[printlist, 1]]

              g[];


              enter image description here



              h[]


              enter image description here






              share|improve this answer











              $endgroup$













                Your Answer





                StackExchange.ifUsing("editor", function () {
                return StackExchange.using("mathjaxEditing", function () {
                StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
                StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
                });
                });
                }, "mathjax-editing");

                StackExchange.ready(function() {
                var channelOptions = {
                tags: "".split(" "),
                id: "387"
                };
                initTagRenderer("".split(" "), "".split(" "), channelOptions);

                StackExchange.using("externalEditor", function() {
                // Have to fire editor after snippets, if snippets enabled
                if (StackExchange.settings.snippets.snippetsEnabled) {
                StackExchange.using("snippets", function() {
                createEditor();
                });
                }
                else {
                createEditor();
                }
                });

                function createEditor() {
                StackExchange.prepareEditor({
                heartbeatType: 'answer',
                autoActivateHeartbeat: false,
                convertImagesToLinks: false,
                noModals: true,
                showLowRepImageUploadWarning: true,
                reputationToPostImages: null,
                bindNavPrevention: true,
                postfix: "",
                imageUploader: {
                brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
                contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
                allowUrls: true
                },
                onDemand: true,
                discardSelector: ".discard-answer"
                ,immediatelyShowMarkdownHelp:true
                });


                }
                });














                draft saved

                draft discarded


















                StackExchange.ready(
                function () {
                StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f192754%2fredirecting-cellprint-output%23new-answer', 'question_page');
                }
                );

                Post as a guest















                Required, but never shown

























                3 Answers
                3






                active

                oldest

                votes








                3 Answers
                3






                active

                oldest

                votes









                active

                oldest

                votes






                active

                oldest

                votes









                1












                $begingroup$

                a) notice that depending on the settings Print may be printed to the MessagesNotebook while CellPrint always goes to the parent notebook.



                b) I'm not sure what is the context so I will just leave those links here:



                Can I Print to a different notebook? (within the context of the same kernel)



                Temporarily redirect the output of Print[ ] to a second file



                c) the answer:



                The problem is that you are doing CellPrint @ ExpressionCell @ Cell[.... Here is what you can do:



                f[] := Module[{}, Print["Bob"];
                CellPrint[Cell["", Background -> Blue, "Print"]];
                Print["Bill"]]

                printlist = {};
                Block[{Print =
                AppendTo[printlist, ExpressionCell[Row[{##}], "Print"]] &,
                CellPrint = AppendTo[printlist, {##}] &}, f[]];

                g[] := Map[CellPrint, Flatten[printlist, 1]]

                h[] := CreateDocument[Flatten[printlist, 1]]

                f[];
                g[];





                share|improve this answer









                $endgroup$


















                  1












                  $begingroup$

                  a) notice that depending on the settings Print may be printed to the MessagesNotebook while CellPrint always goes to the parent notebook.



                  b) I'm not sure what is the context so I will just leave those links here:



                  Can I Print to a different notebook? (within the context of the same kernel)



                  Temporarily redirect the output of Print[ ] to a second file



                  c) the answer:



                  The problem is that you are doing CellPrint @ ExpressionCell @ Cell[.... Here is what you can do:



                  f[] := Module[{}, Print["Bob"];
                  CellPrint[Cell["", Background -> Blue, "Print"]];
                  Print["Bill"]]

                  printlist = {};
                  Block[{Print =
                  AppendTo[printlist, ExpressionCell[Row[{##}], "Print"]] &,
                  CellPrint = AppendTo[printlist, {##}] &}, f[]];

                  g[] := Map[CellPrint, Flatten[printlist, 1]]

                  h[] := CreateDocument[Flatten[printlist, 1]]

                  f[];
                  g[];





                  share|improve this answer









                  $endgroup$
















                    1












                    1








                    1





                    $begingroup$

                    a) notice that depending on the settings Print may be printed to the MessagesNotebook while CellPrint always goes to the parent notebook.



                    b) I'm not sure what is the context so I will just leave those links here:



                    Can I Print to a different notebook? (within the context of the same kernel)



                    Temporarily redirect the output of Print[ ] to a second file



                    c) the answer:



                    The problem is that you are doing CellPrint @ ExpressionCell @ Cell[.... Here is what you can do:



                    f[] := Module[{}, Print["Bob"];
                    CellPrint[Cell["", Background -> Blue, "Print"]];
                    Print["Bill"]]

                    printlist = {};
                    Block[{Print =
                    AppendTo[printlist, ExpressionCell[Row[{##}], "Print"]] &,
                    CellPrint = AppendTo[printlist, {##}] &}, f[]];

                    g[] := Map[CellPrint, Flatten[printlist, 1]]

                    h[] := CreateDocument[Flatten[printlist, 1]]

                    f[];
                    g[];





                    share|improve this answer









                    $endgroup$



                    a) notice that depending on the settings Print may be printed to the MessagesNotebook while CellPrint always goes to the parent notebook.



                    b) I'm not sure what is the context so I will just leave those links here:



                    Can I Print to a different notebook? (within the context of the same kernel)



                    Temporarily redirect the output of Print[ ] to a second file



                    c) the answer:



                    The problem is that you are doing CellPrint @ ExpressionCell @ Cell[.... Here is what you can do:



                    f[] := Module[{}, Print["Bob"];
                    CellPrint[Cell["", Background -> Blue, "Print"]];
                    Print["Bill"]]

                    printlist = {};
                    Block[{Print =
                    AppendTo[printlist, ExpressionCell[Row[{##}], "Print"]] &,
                    CellPrint = AppendTo[printlist, {##}] &}, f[]];

                    g[] := Map[CellPrint, Flatten[printlist, 1]]

                    h[] := CreateDocument[Flatten[printlist, 1]]

                    f[];
                    g[];






                    share|improve this answer












                    share|improve this answer



                    share|improve this answer










                    answered 4 hours ago









                    KubaKuba

                    106k12206529




                    106k12206529























                        1












                        $begingroup$

                        Why not wrap ExpressionCell only around Print calls? For example:



                        printlist={};
                        Block[
                        {
                        Print = AppendTo[printlist, Thread[ExpressionCell[{##}, "Print"]]]&,
                        CellPrint = AppendTo[printlist, #]&
                        },
                        f[]
                        ];

                        g[] := CellPrint /@ Flatten @ printlist
                        h[] := CreateDocument[
                        Flatten @ printlist
                        ]


                        Then:



                        g[];



                        enter image description here




                        and:



                        nb = h[];
                        CurrentNotebookImage[nb]



                        enter image description here




                        seem to do what you want.






                        share|improve this answer









                        $endgroup$


















                          1












                          $begingroup$

                          Why not wrap ExpressionCell only around Print calls? For example:



                          printlist={};
                          Block[
                          {
                          Print = AppendTo[printlist, Thread[ExpressionCell[{##}, "Print"]]]&,
                          CellPrint = AppendTo[printlist, #]&
                          },
                          f[]
                          ];

                          g[] := CellPrint /@ Flatten @ printlist
                          h[] := CreateDocument[
                          Flatten @ printlist
                          ]


                          Then:



                          g[];



                          enter image description here




                          and:



                          nb = h[];
                          CurrentNotebookImage[nb]



                          enter image description here




                          seem to do what you want.






                          share|improve this answer









                          $endgroup$
















                            1












                            1








                            1





                            $begingroup$

                            Why not wrap ExpressionCell only around Print calls? For example:



                            printlist={};
                            Block[
                            {
                            Print = AppendTo[printlist, Thread[ExpressionCell[{##}, "Print"]]]&,
                            CellPrint = AppendTo[printlist, #]&
                            },
                            f[]
                            ];

                            g[] := CellPrint /@ Flatten @ printlist
                            h[] := CreateDocument[
                            Flatten @ printlist
                            ]


                            Then:



                            g[];



                            enter image description here




                            and:



                            nb = h[];
                            CurrentNotebookImage[nb]



                            enter image description here




                            seem to do what you want.






                            share|improve this answer









                            $endgroup$



                            Why not wrap ExpressionCell only around Print calls? For example:



                            printlist={};
                            Block[
                            {
                            Print = AppendTo[printlist, Thread[ExpressionCell[{##}, "Print"]]]&,
                            CellPrint = AppendTo[printlist, #]&
                            },
                            f[]
                            ];

                            g[] := CellPrint /@ Flatten @ printlist
                            h[] := CreateDocument[
                            Flatten @ printlist
                            ]


                            Then:



                            g[];



                            enter image description here




                            and:



                            nb = h[];
                            CurrentNotebookImage[nb]



                            enter image description here




                            seem to do what you want.







                            share|improve this answer












                            share|improve this answer



                            share|improve this answer










                            answered 4 hours ago









                            Carl WollCarl Woll

                            69.3k393179




                            69.3k393179























                                1












                                $begingroup$

                                CellPrint >> Details:



                                In CellPrint[expr]:




                                If expr has head TextCell, ExpressionCell, or CellGroup, it is inserted unchanged into the notebook.




                                So changing heads Cell to Sequence in the first argument of ExpressionCell works:



                                ClearAll[g, h]

                                g[] := Map[CellPrint, ExpressionCell[# /. Cell -> Sequence, "Print"] & /@
                                Flatten[printlist, 1]]

                                h[] := CreateDocument[ExpressionCell[# /. Cell -> Sequence, "Print"] & /@
                                Flatten[printlist, 1]]

                                g[];


                                enter image description here



                                h[]


                                enter image description here






                                share|improve this answer











                                $endgroup$


















                                  1












                                  $begingroup$

                                  CellPrint >> Details:



                                  In CellPrint[expr]:




                                  If expr has head TextCell, ExpressionCell, or CellGroup, it is inserted unchanged into the notebook.




                                  So changing heads Cell to Sequence in the first argument of ExpressionCell works:



                                  ClearAll[g, h]

                                  g[] := Map[CellPrint, ExpressionCell[# /. Cell -> Sequence, "Print"] & /@
                                  Flatten[printlist, 1]]

                                  h[] := CreateDocument[ExpressionCell[# /. Cell -> Sequence, "Print"] & /@
                                  Flatten[printlist, 1]]

                                  g[];


                                  enter image description here



                                  h[]


                                  enter image description here






                                  share|improve this answer











                                  $endgroup$
















                                    1












                                    1








                                    1





                                    $begingroup$

                                    CellPrint >> Details:



                                    In CellPrint[expr]:




                                    If expr has head TextCell, ExpressionCell, or CellGroup, it is inserted unchanged into the notebook.




                                    So changing heads Cell to Sequence in the first argument of ExpressionCell works:



                                    ClearAll[g, h]

                                    g[] := Map[CellPrint, ExpressionCell[# /. Cell -> Sequence, "Print"] & /@
                                    Flatten[printlist, 1]]

                                    h[] := CreateDocument[ExpressionCell[# /. Cell -> Sequence, "Print"] & /@
                                    Flatten[printlist, 1]]

                                    g[];


                                    enter image description here



                                    h[]


                                    enter image description here






                                    share|improve this answer











                                    $endgroup$



                                    CellPrint >> Details:



                                    In CellPrint[expr]:




                                    If expr has head TextCell, ExpressionCell, or CellGroup, it is inserted unchanged into the notebook.




                                    So changing heads Cell to Sequence in the first argument of ExpressionCell works:



                                    ClearAll[g, h]

                                    g[] := Map[CellPrint, ExpressionCell[# /. Cell -> Sequence, "Print"] & /@
                                    Flatten[printlist, 1]]

                                    h[] := CreateDocument[ExpressionCell[# /. Cell -> Sequence, "Print"] & /@
                                    Flatten[printlist, 1]]

                                    g[];


                                    enter image description here



                                    h[]


                                    enter image description here







                                    share|improve this answer














                                    share|improve this answer



                                    share|improve this answer








                                    edited 2 hours ago

























                                    answered 4 hours ago









                                    kglrkglr

                                    187k10203421




                                    187k10203421






























                                        draft saved

                                        draft discarded




















































                                        Thanks for contributing an answer to Mathematica Stack Exchange!


                                        • Please be sure to answer the question. Provide details and share your research!

                                        But avoid



                                        • Asking for help, clarification, or responding to other answers.

                                        • Making statements based on opinion; back them up with references or personal experience.


                                        Use MathJax to format equations. MathJax reference.


                                        To learn more, see our tips on writing great answers.




                                        draft saved


                                        draft discarded














                                        StackExchange.ready(
                                        function () {
                                        StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f192754%2fredirecting-cellprint-output%23new-answer', 'question_page');
                                        }
                                        );

                                        Post as a guest















                                        Required, but never shown





















































                                        Required, but never shown














                                        Required, but never shown












                                        Required, but never shown







                                        Required, but never shown

































                                        Required, but never shown














                                        Required, but never shown












                                        Required, but never shown







                                        Required, but never shown







                                        Popular posts from this blog

                                        Szabolcs (Ungheria) Altri progetti | Menu di navigazione48°10′14.56″N 21°29′33.14″E /...

                                        Discografia di Klaus Schulze Indice Album in studio | Album dal vivo | Singoli | Antologie | Colonne...

                                        How to make inet_server_addr() return localhost in spite of ::1/128RETURN NEXT in Postgres FunctionConnect to...