14

I want to define \ext to behave exactly like \lim.

I tried \newcommand{\ext}{{\mathrm{ext}}\,} but that doesn't behave exactly like \lim.

Werner
  • 603,163
Albert
  • 2,707

4 Answers4

27

Use \DeclareMathOperator or its starred form (if the operator should take limits):

\usepackage{amsmath}

% \DeclareMathOperator{<command>}{<text>}
% if the operator shouldn't take limits
\DeclareMathOperator\ext{ext}
% if the operator should take limits
% \DeclareMathOperator*\ext{ext}
Gonzalo Medina
  • 505,128
10

If you use amsmath, which is recommendable for math texts in any way, a similar definition to \lim is

\def\ext{\qopname\relax m{ext}}

since amsmath, specifically amsopn.sty, defines:

\def\lim{\qopname\relax m{lim}}
Stefan Kottwitz
  • 231,401
  • 1
    Why not use \operatorname? I think it is a robust command. – Rushavski Mar 16 '11 at 00:26
  • 1
    @Rushavski: I posted this solution because \ext shall behave exactly like \lim, not a bit different or even better. So I suggested the original definition of \lim in amsmath. – Stefan Kottwitz Mar 16 '11 at 06:39
  • 1
    Curious: In what way would it behave different if I would use \operatorname? – Albert Mar 16 '11 at 09:45
  • 4
    Then you should have suggested \DeclareMathOperator*\ext{ext} which will behave exactly like \lim and has the advantage of not using internal amsmath macros. (The one difference is that there will be some local assignments that are totally irrelevant inside the \mathop for this particular example. Cf. \DeclareMathOperator*\good{foo-bar} \def\bad{\qopname\relax m{foo-bar}}.) – TH. Mar 16 '11 at 19:22
  • @TH: Maybe, I just focused on exactly like. So I showed how to do it in exactly the same way and where it can be found, straightforward. Hope that adds something (general practice in copying macro behavior), otherwise the link to the "duplicate" would have been sufficient. Give me downvotes for it. :-) I upvoted Gonzalos solution because it is good. – Stefan Kottwitz Mar 16 '11 at 20:55
3

try

\makeatletter
\def\ext{\mathop{\operator@font ext}}
\makeatother
1

As an alternative to \DeclareMathOperator, there is also \mathop to be used with \newcommand. For example:

\newcommand{\ext}{\mathop{\mathrm{ext}}
hoyland
  • 1,796
  • \mathop is a tex primitive, so this definition is a hybrid, non-latexy. if you look into the documentatin for amsopn.sty (texdoc mathopn) you will see that \mathop is used there for the "internal" definitions, but command naming quickly shifts into the latex realm. you will also see that the choice of commands is stated to be governed by the amount of memory they use. remember, amsmath and its kin were written when memory use still mattered. – barbara beeton Mar 16 '11 at 13:25