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.EllettFeb 10, 2013 at 21:37
-
Welcome to TeX.sx. No need to add thanks, simply upvote any good answers you may receive.– Peter JanssonFeb 10, 2013 at 21:56
-
See tex.stackexchange.com/questions/146327/…– minthao_2011Feb 1, 2015 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
\tikzmark
is 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}
-
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. Feb 10, 2013 at 22:47
-
@user25765: Sorry that I missed that earlier. Have updated the answer to include that. Feb 10, 2013 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. Jun 11, 2021 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. Feb 10, 2013 at 22:42
-
I've had problems using
pdflatex
, but you should be able write\usepackage[pdf]{pstricks}
and the runpdflatex
. My problems withpdflatex
are very localized, but maybe you're running into similar headaches. I usually go thelatex->dvips->ps2pdf
route since it seems to better respect what I tellpstricks
to do.– A.EllettFeb 10, 2013 at 22:44 -
from the command line try
pdflatex -shell-escape <filehandle>
. Make sure you've included\usepackage[pdf]{pstricks}
and loadpst-node
through a second call to\usepackage{pst-node}
– A.EllettFeb 10, 2013 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).