I would like to wrap double-struck brackets around variables for notation purposes only. For instance [[X]] should display as the first image below. However, these brackets are reserved for the built-in function Part.
At the moment, I use angle brackets and then replace these with the new ones via MaTeX). I apply this to lists of expressions involving elements as ⟨XY⟩ -> ⟨X⟩ ⟨Y⟩, where XY, X and Y are graphs:
(⟨XY⟩ -> ⟨X⟩ ⟨Y⟩) /. ⟨x_⟩ :>
GraphicsRow[{MaTeX["\\llbracket"], x, MaTeX["\\rrbracket"]},
Scaled[.01], Method -> {"ShrinkWrap" -> True}, ImageSize -> 40]
However, as shown in the second image, there are alignment and scaling issues. If the double-struck brackets are defined as a new notation, I could use instead
(⟨XY⟩ -> ⟨X⟩ ⟨Y⟩) /. ⟨x_⟩ :> [[x]]
which would keep XY, X and Y consistent with their original alignment and scaling.




