MakeBoxes has the attribute HoldAllComplete. For a normal function, it would imply that Upvalues should not be taken into account when the expression is evaluated:
In[1]:= G[F[x_]]^:=x^2 In[2]:= G[F[t]] Out[2]= t^2 In[3]:= Attributes[G]:=HoldAllComplete; G[F[t]] Out[3]= G[F[t]] However, if we evaluate the following code
In[1]:= MakeBoxes[Q[t_],f_]^:=SubscriptBox[t,"Q"] In[2]:= MakeBoxes[Q[t]] Out[2]= SubscriptBox[t,"Q"] Also, in the notebook interface, we can see that the rule is used when Q[t] is formatted: 
My question is then, why MakeBoxes does not have just the HoldAll attribute, which reproduces better how the evaluation is carried on?
MakeBoxesis meant to format anything. CompareMakeBoxes[Evaluate[Print[1]]]andSetAttributes[f, HoldAll]; f[Evaluate[Print[1]]]. $\endgroup$MakeBoxesseems to me the prototypical example of the reason whyHoldAllCompleteis needed at all, that is, whyHoldAllisn't sufficient. $\endgroup$