Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I'd like to have an easy way to declare an operator that brackets its argument with a particular delimiter. As an example I'd like to be able to write

\Pr{X}

to mean the same as

\operatorname{Pr}\left[X\right]

FYI I know how to do

\newcommand{\Pr}[1]{\operatorname{Pr}\left[#1\right]}

but I thought I once saw a package that provided some command like

\DeclareBracketedOperator{\Pr}{Pr}{[}{]}

sort of a combination of \DeclarePairedDelimiter and \DeclareMathOperator and I think it also defined a starred version of the operator that didn't take any argument and didn't produce the delimiters.

share|improve this question

2 Answers 2

up vote 6 down vote accepted

I don't remember of any such package. Your \Pr command maybe obtained by

\usepackage{mathtools}
\DeclarePairedDelimiter{\Prfences}{[}{]}
\renewcommand{\Pr}{\operatorname{Pr}\Prfences}

With this definition, \Pr would behave exactly as if it was defined with \DeclarePairedDelimiter; that is, the *-form would use \left and \right.

If you want to always use \left and \right, you might follow Werner's suggestion, or go the hard way:

\makeatletter
\DeclareRobustCommand{\Pr}{\operatorname{Pr}\@ifstar\@firstofone\@Pr}
\newcommand{\@Pr}[1]{\left[#1\right]}
\makeatother

(requires amsmath, of course). Note: \renewcommand{\Pr}{...} is necessary, because \Pr is already defined in LaTeX.

share|improve this answer
    
Is there a way to redeclare existing operators such as \ln to use delimiters as well? –  math Apr 29 at 20:37
1  
@math Just do \renewcommand{\ln}{\operatorname{ln}\Prfences}. But the logarithm doesn't want delimiters: \log x is the best way to write it. –  egreg Apr 29 at 20:48
    
I have the equation by Stejskal and Tanner: $\ln{A(t)} = \ln{A(0)} - bg^TTg$ But when you deal with summation and \ln I want to separate the argument of \ln from the summands. Clearly I could rewrite it to $\ln{A(t)-\ln{A(0)} = - bg^TTg$, but the problem to separate the logarithm expression from summands may remain. So can you comment further on that, why log dislikes delimiters? –  math Apr 29 at 21:34
    
@math Add the delimiters; I don't think you get a clearer input with $\log{A(t)}$ than with $\log(A(t))$. –  egreg Apr 29 at 21:42
    
don't get me wrong. I just asked as to get more insight not to be too picky. I thought about \log[A(0)] - bg^TTg. –  math Apr 30 at 7:56

Here is a way to define your own operator with an optional bracketing:

\documentclass{article}
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\usepackage{xparse}% http://ctan.org/pkg/xparse
\DeclareDocumentCommand{\Pr}{s m}{% \Pr[*]{..}
  \operatorname{Pr}%
  \IfBooleanTF{#1}% Condition on *
    {#2}% Print only the argument in starred * version
    {\left[#2\right]}% Print bracketed argument [ ] in unstarred version
}%
\begin{document}

This is $\Pr{2}$, and here is
\[
  \Pr{\frac{\frac{a}{b+c}}{d-e}}=\Pr*{\frac{8}{9}}.
\]
\end{document}

Operator with starred version that brackets/doesn't bracket argument

The above code defines the macro \Pr{..} (actually redefines \Pr, since it is provided by amsmath), but also provides a starred * version. The unstarred version, as requested, prints its argument in extensible brackets, while the starred * version removes these brackets.

The xparse package provides an easy interface to specify starred versions of commands and environments. The xifthen package provides conditional support.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.