16

I am tired of writing \frac{\partial something}{\partial something_else}. Can I automate it by defining some sort of shortcut to it, so that when I write \p(x)(y) it will transform to \frac{\partial x}{\partial y}?

3

3 Answers 3

19
\documentclass{article}

\usepackage{amsmath}

\newcommand\p[2]{\frac{\partial #1}{\partial #2}}

\begin{document}
    $ \p{x}{y} $
\end{document}
0
24

The ability to define complex macros is one of the strengths of LaTeX. The traditional LaTeX way would be to use \p{x}{y} in the text instead of \p(x)(y). If you are happy with \p{x}{y}, then you can just add

\newcommand{\p}[2]{\frac{\partial#1}{\partial#2}}

to your preamble. Since this new macro is requires mathmode, you may also want to wrap the macro in an \ensuremath so something like

\newcommand{\p}[2]{\ensuremath{\frac{\partial#1}{\partial#2}}}

If you really want \p(x)(y) then you can add

\def\p(#1)(#2){\ensuremath{\frac{\partial #1}{\partial #2}}}

to your preamble. This isn't particularly robust in that something like $\p((a+b)(a-b))(a+b)$ will break it. There are ways to make it more robust including LaTeX3, however, I would advise against using \p(x)(y) unless there is a good reason (especially as a beginner).

One final note is that it is probably better to use a slightly longer and more descriptive names for macros. While \p seems good now, in a few months it likely will not mean anything to you. Short macro names also increase the chances you might run into a name clash with some other package.

4
  • 4
    The \def-variant with the parentheses can break easily if the arguments uses parentheses too. Try e.g. $\p((a+b)(a-b))(a+b)$. I wouldn't recommend it. Commented Jan 7, 2013 at 13:10
  • @UlrikeFischer \usepackage{xparse} and \NewDocumentCommand{\p}{r()r()}{\frac{\partial #1}{\partial #2}} than $ \p((a+b)(a-b))(a+b) $ (Though, I find the usage of () very unnatural and I wouldn’t do it here either.) Commented Jan 7, 2013 at 14:07
  • I think it would be nice if you explained in your answer why it is a good idea to use ensuremath.
    – Vivi
    Commented Jan 7, 2013 at 17:26
  • @Vivi good suggestion. I edited the answer.
    – StrongBad
    Commented Jan 8, 2013 at 12:16
0

The commath package has a lot of these handy macros already defined, like \pd[2]{f}{x}. I happen to use it, but it also has some nasty issues, like incorrect detection of inline vs. display math, and a conflict with TikZ over the colon character (see Why does pdfTeX hang on this file?).

2
  • 2
    The \pd macro, as you surely have noticed, doesn't work as expected. The problem is that \ifinner isn't true or false where the author of commath thinks it should. Thus using commath can cause many more problems than it solves.
    – egreg
    Commented Jan 7, 2013 at 14:03
  • I have to agree with @egreg that the package is not well-made. I don't see such inner details as he does, but I see some problem of concept that make the package bad IMHO (e.g. defining many 2- and 3-letter macros).
    – yo'
    Commented Jan 7, 2013 at 14:14

You must log in to answer this question.

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