One possibility: I used \DeclarePairedDelimiterX
from the mathtools
package to define a \MeijerM
command with three arguments which is responsible to typeset the delimited matrix; then I defined \MeijerG
having eight arguments (the first one is optional and will be passed as the optional argument to \MeijerM
); using the \WithSuffix
command from the suffix
package to provide the starred version \MeijerG*
:
\documentclass[11pt]{article}
\usepackage{suffix}
\usepackage{mathtools}
\DeclarePairedDelimiterX\MeijerM[3]{\lparen}{\rparen}%
{\begin{smallmatrix}#1 \\ #2\end{smallmatrix}\delimsize\vert\,#3}
\newcommand\MeijerG[8][]{%
G^{\,#2,#3}_{#4,#5}\MeijerM[#1]{#6}{#7}{#8}}
\WithSuffix\newcommand\MeijerG*[7]{%
G^{\,#1,#2}_{#3,#4}\MeijerM*{#5}{#6}{#7}}
\begin{document}
\[
\MeijerG*{m}{n}{p}{q}{a_1, \dots, a_p}{b_1, \dots, b_q}{z}\quad
\MeijerG[\big]{m}{n}{p}{q}{a_1, \dots, a_p}{b_1, \dots, b_q}{z}\quad
\MeijerG[\Bigg]{m}{n}{p}{q}{a_1, \dots, a_p}{b_1, \dots, b_q}{z}
\]
\end{document}
The size of delimiters in the second and third examples is obviously wrong, but I just included them to test the functionality of the defined commands. Also, I used simple sub/superscripts to typeset the first four arguments, but of course you can use one of your proposed variants instead.
First, let me give a paraphrasing from The TeXbook showing the amounts of spaces between different types of math atoms:
where
Ord
includes things like a
, \theta
, and things inside \mathord
or just plain {}
's;
Op
includes things like \sin
, \gcd
, and things inside \mathop
;
Bin
includes things like \pm
, \otimes
, and things inside \mathbin
;
Rel
includes things like \leq
, \mid
, and things inside \mathrel
;
Open
includes things like \langle
, (
, and things inside \mathopen
;
Close
includes things like \rangle
, )
, and things inside \mathclose
;
Punct
includes things like ,
, .
, and things inside \mathpunct
;
Inner
includes things like \cdots
and things inside \mathinner
.
Here is an example plain-tex document illustrating a couple of different ways:
\let\funarg\mathinner
\def\funop#1{\mathop{{}#1}}
$$ i(x,y,z,t) = \delta(x-\ell_x(z)) \delta(y-\ell_y(z)) \hat\imath(\xi(z),t), $$
$$ i\funarg{x,y,z,t} = \delta\funarg{(x-\ell_x(z))} \delta\funarg{(y-\ell_y(z))} \hat\imath\funarg{(\xi(z),t)}, $$
$$ \funarg{i(x,y,z,t)} = \funarg{\delta(x-\ell_x(z))} \funarg{\delta(y-\ell_y(z))} \funarg{\hat\imath(\xi(z),t)}, $$
$$ \funop i(x,y,z,t) = \funop\delta(x-\ell_x(z)) \funop\delta(y-\ell_y(z)) \funop{\hat\imath}(\xi(z),t), $$
\bye
So as you can see, you probably want the last option of using a \mathop
atom for the function "name".
With LaTeX, this could be defined as follows (the second row below shows the output of your original code):
\documentclass{article}
\newcommand\funop[1]{\mathop{{}#1}}
\begin{document}
$i(x,y,z,t) = \funop\delta(x-\ell_x(z)) \funop\delta(y-\ell_y(z)) \funop{\hat\imath}(\xi(z),t)$
vs.
$i(x,y,z,t) = \delta(x-\ell_x(z)) \delta(y-\ell_y(z)) \hat{\imath}(\xi(z),t)$
\end{document}
(The reason I didn't include the parenthesis in the command is that I felt it would be too much effort to measure the arguments to decide on the size of the fences. I think it's simpler to just manually define the height with \bigl(
etc., and also it's nicer to see the parens in the manuscript instead of {}
's)
Best Answer
You can say (requires
amssymb
, of course)and the result will be as in the second line in the following picture, while the first line represents what you get now