All I am trying to do is write an integration by parts table in LaTeX. I can't seem to find an .tex code examples anywhere though I have seen pictures of such tables in PDF form (like at http://cazelais.disted.camosun.bc.ca/187/parts.pdf for example). Hopefully someone can let me know real quick.
-
2There's a lot going on in the link you provided. It would be helpful if you provided a MWE so we can see what you've managed to put together already. – A.Ellett Feb 10 '13 at 21:37
-
Welcome to TeX.sx. No need to add thanks, simply upvote any good answers you may receive. – Peter Jansson Feb 10 '13 at 21:56
-
See http://tex.stackexchange.com/questions/146327/how-to-draw-the-diagram-of-calculating-an-integral-by-parts – minthao_2011 Feb 01 '15 at 10:24
3 Answers
I assume you are asking about the tabular method of integration by parts, and one way would be to use tikzmark to note the location of the points and the after the table draw the arrows between the appropriate points:

Note:
This does require two runs. First one to determine the locations, and the second to do the drawing.
The
\tikzmarkis from Adding a large brace next to a body of text.You can globally alter the style of the arrows via
Arrow Style.
Code
\documentclass{article}
\usepackage{booktabs}
\usepackage{xparse}
\usepackage{tikz}
\usetikzlibrary{calc}
\tikzset{Arrow Style/.style={text=black, font=\boldmath}}
\newcommand{\tikzmark}[1]{%
\tikz[overlay, remember picture, baseline] \node (#1) {};%
}
\newcommand{\XShift}{0.5em}
\newcommand{\YShift}{0.5ex}
\NewDocumentCommand{\DrawArrow}{s O{} m m m}{%
\begin{tikzpicture}[overlay,remember picture]
\draw[->, thick, Arrow Style, #2]
($(#3.west)+(\XShift,\YShift)$) --
($(#4.east)+(-\XShift,\YShift)$)
node [midway,above] {#5};
\end{tikzpicture}%
}
\begin{document}
[
\renewcommand{\arraystretch}{1.5}
\begin{array}{c @{\hspace*{1.0cm}} c}\toprule
D & I \\cmidrule{1-2}
x^2\tikzmark{Left 1} & \tikzmark{Right 1}e^2x \
2x \tikzmark{Left 2} & \tikzmark{Right 2}\frac{1}{2} e^{2x} \
2 \tikzmark{Left 3} & \tikzmark{Right 3}\frac{1}{4} e^{2x} \
0 \tikzmark{Left 4} & \tikzmark{Right 4}\frac{1}{8} e^{2x} \\bottomrule
\end{array}
]
%-----------------------------------------
\DrawArrow[draw=red]{Left 1}{Right 2}{$+$}%
\DrawArrow[draw=brown]{Left 2}{Right 3}{$-$}%
\DrawArrow[draw=blue]{Left 3}{Right 4}{$+$}%
\end{document}
- 223,288
-
Awesome, that was what I was asking about. Is there a way to add labels above the arrows as well with tikzpicture? Perhaps with a way to specify where along the arrow the label will appear. – user25765 Feb 10 '13 at 22:47
-
@user25765: Sorry that I missed that earlier. Have updated the answer to include that. – Peter Grill Feb 10 '13 at 23:37
-
As I've gotten here via a recent link to this answer, I'd just like to note that tikzmark is now a tikz library and it is better to use the library version. – Andrew Stacey Jun 11 '21 at 15:56
Here's a start:
There are various approaches to the arrows. I'll let someone else explain a tikz solution. But you can use pstricks and pst-nodes to accomplish it.
MWE:
\documentclass{article}
\usepackage{amsmath}
\usepackage{pstricks,pst-node}
\pagestyle{empty}
\newcommand{\diff}[1]{\mathrm{d}#1}
\newcommand{\me}{\mathrm{e}}
\begin{document}
\noindent Use \verb=\boxed{...}= to enclose the contents of an equation in a frame.
\[
\boxed{\int_0^\infty \me^{-x^2}\diff{x}}
\]
Use \verb=\quad= and \verb=\text{...}= to add space and add regular
text in an equation
\[
u = x \quad \text{ and } \quad \diff v = \cos x \diff x
\]
Use the \verb=align= environment to align math equation upon a given
position in the equation indicated by \verb=&=
\begin{align*}
\int x \cos x \diff{x} &= x \sin x - \int \sin x \diff x \\
&= x \sin x + \cos x +C
\end{align*}
\noindent\verb=pstricks= provides \verb=pst-node= to allow you to label and
connect nodes.
\renewcommand{\arraystretch}{3}
\[\begin{array}{c@{\hspace*{6em}}c}
D & I \\\hline
x^2\rnode[br]{A1}{} & \me^{2ex} \\
2x\rnode[br]{B1}{} & \rnode[l]{B2}{}\frac{1}{2}\me^{2x} \\
2\rnode[br]{C1}{} & \rnode[l]{C2}{}\frac{1}{4}\me^{2x}
\end{array}\]
%%
\ncline[nodesep=1em,arrows=->]{A1}{B2}
\lput{:U}{\rput[c]{U}(0,2ex){line label}}
%%
\ncline[nodesep=1em,arrows=->]{B1}{C2}
\lput{:U}{\rput[c]{U}(0,2ex){line label}}
\end{document}

If you would like to go the pdflatex route using pstricks try the following MWE:
\documentclass{article}
\usepackage{amsmath}
\usepackage{pstricks}
\usepackage{auto-pst-pdf}
\usepackage{pst-node}
\pagestyle{empty}
\newcommand{\diff}[1]{\mathrm{d}#1}
\newcommand{\me}{\mathrm{e}}
\begin{document}
\noindent Use \verb=\boxed{...}= to enclose the contents of an equation in a frame.
\[
\boxed{\int_0^\infty \me^{-x^2}\diff{x}}
\]
Use \verb=\quad= and \verb=\text{...}= to add space and add regular
text in an equation
\[
u = x \quad \text{ and } \quad \diff v = \cos x \diff x
\]
Use the \verb=align= environment to align math equation upon a given
position in the equation indicated by \verb=&=
\begin{align*}
\int x \cos x \diff{x} &= x \sin x - \int \sin x \diff x \\
&= x \sin x + \cos x +C
\end{align*}
\noindent%
\begin{postscript}
\verb=pstricks= provides \verb=pst-node= to allow you to label and
connect nodes.
\renewcommand{\arraystretch}{3}
\[\begin{array}{c@{\hspace*{6em}}c}
D & I \\\hline
x^2\rnode[br]{A1}{} & \me^{2ex} \\
2x\rnode[br]{B1}{} & \rnode[l]{B2}{}\frac{1}{2}\me^{2x} \\
2\rnode[br]{C1}{} & \rnode[l]{C2}{}\frac{1}{4}\me^{2x}
\end{array}\]
%%
\ncline[nodesep=1em,arrows=->]{A1}{B2}
\lput{:U}{\rput[c]{U}(0,2ex){line label}}
%%
\ncline[nodesep=1em,arrows=->]{B1}{C2}
\lput{:U}{\rput[c]{U}(0,2ex){line label}}
\end{postscript}
\end{document}
This is following the instructions found in the answer to How to use PSTricks in pdfLaTeX?. Also, using the environment \begin{postscript}...\end{postscript} is per the instructions found at the pstricks webside
-
I would have liked this method for the fact that I can readily put labels but I have never been able to get pdflatex to work with PSTricks and I don't yet know how else to get Latex to present a printable form of my work. – user25765 Feb 10 '13 at 22:42
-
I've had problems using
pdflatex, but you should be able write\usepackage[pdf]{pstricks}and the runpdflatex. My problems withpdflatexare very localized, but maybe you're running into similar headaches. I usually go thelatex->dvips->ps2pdfroute since it seems to better respect what I tellpstricksto do. – A.Ellett Feb 10 '13 at 22:44 -
from the command line try
pdflatex -shell-escape <filehandle>. Make sure you've included\usepackage[pdf]{pstricks}and loadpst-nodethrough a second call to\usepackage{pst-node}– A.Ellett Feb 10 '13 at 22:51 -
With {NiceArray} of nicematrix.
\documentclass{article}
\usepackage{nicematrix}
\usepackage{booktabs}
\usepackage{tikz}
\begin{document}
[
\renewcommand{\arraystretch}{1.5}
\begin{NiceArray}{c @{\hspace*{1.0cm}} c}[create-medium-nodes]
\toprule
D & I \
\cmidrule{1-2}
x^2 & e^2x \
2x & \frac{1}{2} e^{2x} \
2 & \frac{1}{4} e^{2x} \
0 & \frac{1}{8} e^{2x} \
\bottomrule
\CodeAfter
\begin{tikzpicture} [->, name suffix = -medium]
\draw [red] (2-1) -- node [above] {$+$} (3-2) ;
\draw [brown] (3-1) -- node [above] {$-$} (4-2) ;
\draw [blue] (4-1) -- node [above] {$+$} (5-2) ;
\end{tikzpicture}
\end{NiceArray}
]
\end{document}
You need several compilations (because nicematrix uses PGF/Tikz nodes under the hood).
- 40,250
