I want to define a macro, call it \func, so that \func will output\phi, and \func[i] will output \phi(i).

what is the easiest way to achieve this?

I know there are other questions that address this issue - I guess one of them is exactly my question and I just don't get it :)


2 Answers 2


You can define \func to take an optional argument:






enter image description here

  • Thanks! But this just exploits the fact that \phi_{} looks the same as \phi, right? I need a slightly more general solution. I will edit my question to prevent this "loop hole" :)
    – olamundo
    Nov 3, 2012 at 15:37
  • @Qrrbrbirlbel right; will do so. Nov 3, 2012 at 15:38
  • @noam please see my updated answer. Is this what you want? Nov 3, 2012 at 15:45
  • 1
    @GonzaloMedina A subscript (even if it's empty) adds a small space after the symbol; its size is in the parameter \scriptspace, default value 0.5pt. I've also put a better test in the conditional.
    – egreg
    Nov 3, 2012 at 15:48

xparse-based solution





where you want a single optional ('o-type') argument.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .