Here's a possible approach, I cannot say how stable it is:
(I will focus on Section
, Subsection
, but actually, you could do pretty nice stuff knowing about the menu and how to manipulate it. Also, as noted in my comment above, you might want to memorize the keyboard shortcuts for these things, but I liked the idea of manipulating that menu)
First we try to figure out where the menu comes from:
SetOptions[EvaluationNotebook[], "CellInsertionPointCell" -> None]
This switches off the menu. To get the normal menu back, we use:
SetOptions[EvaluationNotebook[],
"CellInsertionPointCell" ->
FrontEndResource["FEExpressions", "CellInsertionMenu"]]
For convenience, we define for now:
orig = FrontEndResource["FEExpressions", "CellInsertionMenu"];
Looking at the FullForm
of orig
, we get an idea of the menu.
First, we could e.g. try to remove the Delimiters
:
SetOptions[EvaluationNotebook[],
"CellInsertionPointCell" -> orig /.
Delimiter -> Unevaluated[Sequence[]]]
or set the menu to any random cell (not very useful):
SetOptions[EvaluationNotebook[], "CellInsertionPointCell" -> Cell["foo", "Text"]]
(a possible) solution for the problem at hand
and here's what you could do, just adjusting the original menu:
SetOptions[EvaluationNotebook[],
"CellInsertionPointCell" ->
ReleaseHold@Insert[orig,
Hold@Sequence @@ {Delimiter,
PaneBox[GridBox[{{PaneBox[
DynamicBox[
FEPrivate`FrontEndResource["FEBitmaps",
"InsertionText"]],
BaselinePosition -> Scaled[0.4`] -> Center,
ImageSize -> 14], "Section"}},
GridBoxAlignment -> {"Columns" -> {{Right}},
"Rows" -> {{Baseline}}}, AutoDelete -> False,
GridBoxItemSize -> {"Columns" -> {{All}}, "Rows" -> {{All}}},
GridBoxSpacings -> {"Columns" -> {0, 0.6`, 2, 0},
"Rows" -> {{Automatic}}}],
ImageMargins -> {{0, 0}, {1, 1}}] :>
FrontEndTokenExecute[EvaluationNotebook[], "Style",
"Section"],
PaneBox[
GridBox[{{PaneBox[
DynamicBox[
FEPrivate`FrontEndResource["FEBitmaps",
"InsertionText"]],
BaselinePosition -> Scaled[0.4`] -> Center,
ImageSize -> 14], "SubSection"}},
GridBoxAlignment -> {"Columns" -> {{Right}},
"Rows" -> {{Baseline}}}, AutoDelete -> False,
GridBoxItemSize -> {"Columns" -> {{All}}, "Rows" -> {{All}}},
GridBoxSpacings -> {"Columns" -> {0, 0.6`, 2, 0},
"Rows" -> {{Automatic}}}],
ImageMargins -> {{0, 0}, {1, 1}}] :>
FrontEndTokenExecute[EvaluationNotebook[], "Style",
"Subsection"]}, {1, 1, 1, 1, 2, -1}]]
Note that I used Insert
, so that we can pretty well choose where we insert the menu. I didn't put too much work into the styling, I actually just copied the "Plain Text" one and adjusted. Note that you could modify the menu any way you want, Insert
ing, Delete
ing, Append
ing, Prepend
ing, ... stuff - or just rewrite it all by yourself.
The result:

Format...Style
from the menubar. $\endgroup$