The code that appears in this answer (How do I alter this \$PreRead + \$PrePrint statement so it can be selectively deactivated?) seems well-suited to your needs. If you enter and evaluate it (pasted below for your convenience), you can get the following with no extra typing:
m = Quantity[1, "Kilograms"]
a = Quantity[9.81, "Meters" ("Seconds")^-2]
F = m a
$PreRead =.
$PrePrint =.
$note1 = Null;
$note2 = Null;
$note3 = Null;
$outputStyles = <|
"Default" -> {Blue, 15, Italic, FontFamily -> "Times"},
"Before" -> {Blue, 15, Italic, FontFamily -> "Times"},
"After" -> {Blue, 15, Italic, FontFamily -> "Times"}|>;
boxExpr[body_] :=
RowBox@{"Replace", "[", "\"thisIsJustATag\"", ";", body, ",",
"Null", "->", "\"\"", "]"};
styleNote[note_, style_] :=
Style[ToExpression@note,
Sequence @@ Lookup[$outputStyles, style, $outputStyles["Default"]]];
extractNotes[boxes_] :=
Replace[boxes, {RowBox[{note1_String?(StringMatchQ[#, "\"*\""] &),
";", body__, ";",
note2_String?(StringMatchQ[#, "\"*\""] &)}] :> ($note1 =
styleNote[note1, "Before"]; $note2 =
styleNote[note2, "After"];
boxExpr@body),
RowBox[{body__, ";",
note_String?(StringMatchQ[#, "\"*\""] &)}] :> ($note2 =
styleNote[note, "After"];
$note1 = Null;
boxExpr@body),
RowBox[{note_String?(StringMatchQ[#, "\"*\""] &), ";",
body__}] :> ($note1 = styleNote[note, "After"];
$note2 = Null;
boxExpr@body),
RowBox[{note_String?(StringMatchQ[#, "\"*\""] &),
";"}] :> ($note3 = styleNote[note, "Neither"];
$note2 = Null; $note1 = Null;
note), e_ :> ($note1 = Null; $note2 = Null; boxExpr@e)}];
applyFormatting[out_] :=
With[{line = $Line},
HoldForm[In[line] = $placeHolder] /.
DownValues[In] /. {$placeHolder -> out,
HoldPattern[
Replace[CompoundExpression["thisIsJustATag", expr_],
Null -> ""]] :> expr} /. {HoldPattern[a_ = ""] :> a,
HoldPattern[a_ = a_] :> a, HoldPattern[a_ = HoldForm[a_]] :> a,
HoldPattern[(c : (a_ = b_)) = b_] :> c,
HoldPattern[(a_ = b_) = c_] :> HoldForm[a = b = c]}];
addNotes[formatted_] :=
TraditionalForm@
Switch[{$note1, $note2, $note3}, {Null, Null, Except@Null},
With[{r = $note3}, $note3 = Null; r], {Except@Null,
Except@Null, _},
With[{r1 = $note1, r2 = $note2}, $note1 = $note2 = Null;
Row[{r1, formatted, r2}, Spacer[5]]], {Except@Null, _, _},
With[{r = $note1}, $note1 = Null;
Row[{r, formatted}, Spacer[5]]], {_, Except@Null, _},
With[{r = $note2}, $note2 = Null;
Row[{formatted, r}, Spacer[5]]], _, formatted];
bypass = Replace[
RowBox[{b1___, RowBox[{b2___, ";;"}], ";"}] :> ($bypass = True;
RowBox[{b1, b2}])];
applyFormatting[out_] /; $bypass := Pane[out];
self : addNotes[formatted_] /; $bypass := ($bypass =.;
Unevaluated[self] /. (DownValues[addNotes] /. Row -> Column))
SetAttributes[graphicsQ, HoldFirst]
graphicsQ[_Graphics | _Graphics3D | _Graph | _Image | _Image3D] = True;
graphicsQ[Legended[_?graphicsQ, ___]] = True;
graphicsQ[{___, _?graphicsQ, ___}] = True;
applyFormatting[out_?graphicsQ] :=
Column[{# /. DownValues[In], Pane@out}] &[
HoldForm@TraditionalForm@In@# &@$Line] /.
HoldPattern[Replace["thisIsJustATag"; expr_, Null -> ""]] :> expr
$PreRead = extractNotes@*bypass;
$PrePrint = addNotes@*applyFormatting;
To deactivate the above code, use:
$PreRead =.
$PrePrint =.
Label
andColumnForm
. $\endgroup$