I couldn't find a more descriptive title, but I guess an example will explain my problem.
I set up some customized Grid
function including some additional functionalities which I control with custom Options. Additionally, I would like to change some of the standard Grid
Options, e.g. always use Frame->All
. Take the following working example:
Options[myGrid] = {Frame -> All, "Tooltip" -> False};
myGrid[content_, opts : OptionsPattern[]] :=
Module[{con},
If[OptionValue["Tooltip"],
con = MapIndexed[Tooltip[#1, #2] &, content, {-1}],
con = content
];
Grid[con,
Sequence @@
FilterRules[{opts}~Join~Options[myGrid], Options[Grid]]
]
]
defining an example content:
mat = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
We can test the behavior:
myGrid[mat]
The custom "Tooltip" flag works as intended. Now I want to pass an Option
to Grid
, that has not been explicitely set in the above Options[myGrid]
declaration.This eventually makes it through to the Grid, but produces an error message.
myGrid[mat, Background -> Blue]
To get rid of the errors I embed the Options from Grid into my custom function:
Options[myGrid] =
Join[
{Frame -> All, "Tooltip" -> False},
Options[Grid]
];
Now, I can change the Grid Options without raising an error:
myGrid[mat, Background -> Green]
but the custom setting Frame->All
gets lost.
myGrid[mat, Frame -> All]
Apparently, the default Frame->None
setting for Grid
overrules my custom setting. I banged my head against this problem for too long already, therefore my plea for your assistance.