Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 4542650
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 21, 20262026-05-21T15:25:15+00:00 2026-05-21T15:25:15+00:00

As I learned recently there are some types of expressions in Mathematica which are

  • 0

As I learned recently there are some types of expressions in Mathematica which are automatically parsed by the FrontEnd.

For example if we evaluate HoldComplete[Rotate[Style[expr, Red], 0.5]] we see that the FrontEnd does not display the original expression:

Screenshot

Is it possible to control such behavior of the FrontEnd?

And is it possible to get complete list of expressions those are parsed by the FrontEnd automatically?


EDIT

We can see calls to MakeBoxes when using Print:

On[MakeBoxes]; Print[HoldComplete@Rotate["text", Pi/2]]

But copy-pasting the printed output gives changed expression: HoldComplete[Rotate["text", 1.5707963267948966]]. It shows that Print does not respect HoldComplete.

When creating output Cell there should be calls for MakeBoxes too. Is there a way to see them?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-21T15:25:16+00:00Added an answer on May 21, 2026 at 3:25 pm

    I have found a post by John Fultz with pretty clear explanation of how graphics functionality works:

    In version 6, the kernel has
    absolutely no involvement whatsoever
    in generating the rendered image.
    The steps taken in displaying a
    graphic in version 6 are very much
    like those used in displaying
    non-graphical output. It works as
    follows:

    1) The expression is evaluated, and
    ultimately produces something with
    head Graphics[] or Graphics3D[].

    2) The resulting expression is passed
    through MakeBoxes. MakeBoxes has a
    set of rules which turns the graphics
    expression into the box language which
    the front end uses to represent
    graphics. E.g.,

    In[9]:= MakeBoxes[Graphics[{Point[{0, 0}]}], StandardForm]
    
    Out[9]= GraphicsBox[{PointBox[{0, 0}]}]
    

    Internally, we call this the “typeset”
    expression. It may be a little weird
    thinking of graphics as being
    “typeset”, but it’s fundamentally the
    same operation which happens for
    typesetting (which has worked this way
    for 11 years), so I’ll use the term.

    3) The resulting typeset expression is
    sent via MathLink to the front end.

    4) The front end parses the typeset
    expression and creates internal
    objects which generally have a
    one-to-one correspondence to the
    typeset expression.

    5) The front end renders the internal
    objects.

    This means that the conversion is performed in the Kernel by a call to MakeBoxes.

    This call can be intercepted through high-level code:

    list = {};
    MakeBoxes[expr_, form_] /; (AppendTo[list, HoldComplete[expr]]; 
        True) := Null;
    HoldComplete[Rotate[Style[expr, Red], 0.5]]
    ClearAll[MakeBoxes];
    list
    

    Here is what we get as output:

    screenshot

    One can see that MakeBoxes does not respect HoldAllComplete attribute.

    The list of symbols which are auto-converted before sending to the FrontEnd one can get from FormatValues:

    In[1]:= list = 
      Select[Names["*"], 
       ToExpression[#, InputForm, 
         Function[symbol, Length[FormatValues@symbol] > 0, HoldAll]] &];
    list // Length
    
    During evaluation of In[1]:= General::readp: Symbol I is read-protected. >>
    
    Out[2]= 162
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I'm fairly new to Subversion and recently learned how to automatically import files which
I recently learned about IKVM.net which is a Java for Mono (.NET). So I
I have learned recently that Export in Mathematica uses by default the Printout screen
I recently learned that there are a plethora of WebSocket protocol specifications (a bunch
I just recently learned about self calling anonymous functions. Some snippets of code that
I'm still a C++ newbie who has only recently learned some file manipulation. I
Recently I watched some old Oredev presentation on NoSql databases. I learned a bit
Is there some rare language construct I haven't encountered (like the few I've learned
I have recently learned that there are bugs in JDK7 for hotspot compiler optimization.
I recently learned about Recursive Common Table Expressions (CTEs) while looking for a way

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.