Это должно быть быстро для эксперта, но я относительно новичок в определении функций с опциями. Вот схема того, что я пробовал, я объясню после того, как покажу код:
MyPlotFunction[params_, optionalparameter_List:{1,2,3}, opts:OptionsPattern[]]:=
Plot [ stuff, {x,0,1}, Evaluate@FilterRules[{opts},Options@Plot]];
Options[MyPlotFunction] = { PlotRange->{-5,5}, Frame->True, ... other plot options};
Есть четыре небольшие тонкости:
Но то, что я описал выше, не работает. Опции по умолчанию, которые я установил, игнорируются, но они появляются в ??MyPlotFunction
информации для моей функции. Я приведу примеры, если вы еще не заметили ошибку.
Edit: Примеры, которые не работают:
SimplePlot[t_,opts:OptionsPattern[{PlotRange->{-4,4},Frame->True}]]:=
Plot[2x+t,{x,0,1},opts];
Неудача, опция по умолчанию игнорируется.
SimplePlot[t_,opts:OptionPattern[]]:=
Plot[2x+t],{x,0,1},opts];
Options[SimplePlot] = {PlotRange->{-4,4},Frame->True};
Неудача, опция по умолчанию игнорируется.
SimplePlot[t_,opts__:{PlotRange->{-4,4},Frame->True}]:=
Plot[2x+t,{x,0,1},opts];
Опции по умолчанию работают с голым вызовом, но если одна из этих опций или любая другая опция plot переопределяется, остальные опции по умолчанию теряются.