I have 2 functions Top and Bottom that each have an options list parameter.

Top[quads_, optsTop_: OptionsPattern[]]  
Bottom[quads_, optsBottom_: OptionsPattern[]]

Function Top eventually calls function Bottom and passes the options it received directly to the Bottom function. This works like a charm. However now I want to add some options to the ones received in Top to the call to Bottom. These option lists are not lists so an append doesn't work. However, I have no idea how to to this. So conceptually I want to call (from within Top)

Bottom[quads, Append[opsTop, more->"more"]]
  • 1
    $\begingroup$ Just use Bottom[quads, opsTop, more->"more"] or Bottom[quads, more->"more", opsTop]. The latter should prefer more->"more" over any specification of more in opsTop (options are treated first in-last out). $\endgroup$ Aug 26, 2018 at 13:41
  • $\begingroup$ Thanks for the help. I didn't get it working yet but I guess your answer is correct. I have had a lot of trouble with the Mathematica syntax, especially since it is unlike any other programming language. $\endgroup$ Aug 26, 2018 at 14:27
  • $\begingroup$ Maybe the issue lies somewhere else. Please consider to provide the whole code you use (maybe reduced by the parts that do not involve handling of options). Ping me with an @ in front of my name in a comment. I will have a look at it. $\endgroup$ Aug 26, 2018 at 14:30
  • 2
    $\begingroup$ Willy, if you use optsTop : OptionsPattern[] (and optsBottom : OptionsPattern[]) when you define Top (resp., Bottom), then you can use Henrik's suggestion to call Top or Bottom with any sequence of options. $\endgroup$
    – kglr
    Aug 26, 2018 at 16:59
  • 3
    $\begingroup$ That here seems to explain what you want: mathematica.stackexchange.com/a/355/187 If it indeed solves your problem, I would close this question as a duplicate. $\endgroup$
    – halirutan
    Aug 26, 2018 at 17:25


Browse other questions tagged or ask your own question.