% arara: indent: {overwrite: yes}
% http://tex.stackexchange.com/questions/106244/using-a-lot-of-marginpars
\ProvidesPackage{tabto}[2013/03/25 \space v 1.3 \space
Another tabbing mechanism]\relax

\newdimen\CurrentLineWidth
\let\TabPrevPos\z@

\newcommand\tabto[1]{%
	\leavevmode
	\begingroup
	\def\@tempa{*}\def\@tempb{#1}%
	\ifx\@tempa\@tempb % \tab*
		\endgroup
		\TTo@overlaptrue % ... set a flag and re-issue \tabto to get argument
		\expandafter\tabto
	\else
		\ifinner % in a \hbox, so ignore
		\else % unrestricted horizontal mode
			\null% \predisplaysize will tell the position of this box (must be box)
			\parfillskip\fill
			\everydisplay{}\everymath{}%
			\predisplaypenalty\@M \postdisplaypenalty\@M
			$$% math display so we can test \predisplaysize
			\lineskiplimit=-999pt % so we get pure \baselineskip
			\abovedisplayskip=-\baselineskip \abovedisplayshortskip=-\baselineskip
			\belowdisplayskip\z@skip \belowdisplayshortskip\z@skip
			\halign{##\cr\noalign{%
				% get the width of the line above
				%\message{>>> Line \the\inputlineno\space -- \predisplaydirection\the\predisplaydirection, \predisplaysize\the\predisplaysize, \displayindent\the\displayindent, \leftskip\the\leftskip, \linewidth\the\linewidth. }%
				\ifdim\predisplaysize=\maxdimen % mixed R and L; call the line full
					\message{Mixed R and L, so line is full. }%
					\CurrentLineWidth\linewidth
				\else
					\ifdim\predisplaysize=-\maxdimen % impossible, in vmode; call the line empty
						\message{Not in paragraph, so line is empty. }%
						\CurrentLineWidth\z@
					\else
						\ifnum\TTo@Direction<\z@
							\CurrentLineWidth\linewidth \advance\CurrentLineWidth\predisplaysize
						\else
							\CurrentLineWidth\predisplaysize
						\fi
						% Correct the 2em offset
						\advance\CurrentLineWidth -2em
						\advance\CurrentLineWidth -\displayindent
						\advance\CurrentLineWidth -\leftskip
					\fi\fi
					\ifdim\CurrentLineWidth<\z@ \CurrentLineWidth\z@\fi
						% Enshrine the tab-to position; #1 might reference \CurrentLineWidth
						\@tempdimb=#1\relax
						\message{*** Tab to \the\@tempdimb, previous width is \the\CurrentLineWidth. ***}%
						% Save width for possible return use
						\xdef\TabPrevPos{\the\CurrentLineWidth}%
						% Build the action to perform
						\protected@xdef\TTo@action{%
							\vrule\@width\z@\@depth\the\prevdepth
							\ifdim\CurrentLineWidth>\@tempdimb
								\ifTTo@overlap\else
								\protect\newline \protect\null
							\fi\fi
							\protect\nobreak
							\protect\hskip\the\@tempdimb\relax
						}%
						%\message{\string\TTo@action: \meaning \TTo@action. }%
						% get back to the baseline, regardless of its depth.
						\vskip-\prevdepth
						\prevdepth-99\p@
						\vskip\prevdepth
					}}%
					$$
					% Don't count the display as lines in the paragraph
					\count@\prevgraf \advance\count@-4 \prevgraf\count@
					\TTo@action
					%%   \penalty\@m % to allow a penalized line break
				\fi
				\endgroup
				\TTo@overlapfalse
				\ignorespaces
				\fi
			}

			% \tab -- to the next position
			% \hskip so \tab\tab moves two positions
			% Allow a (penalized but flexible) line-break right after the tab.
			%
			\newcommand\tab{\leavevmode\hskip2sp\tabto{\NextTabStop}%
				\nobreak\hskip\z@\@plus 30\p@\penalty4000\hskip\z@\@plus-30\p@\relax}


			% Expandable macro to select the next tab position from the list

			\newcommand\NextTabStop{%
				\expandafter \TTo@nexttabstop \TabStopList,\maxdimen,>%
			}

			\def\TTo@nexttabstop #1,{%
				\ifdim#1<\CurrentLineWidth
					\expandafter\TTo@nexttabstop
				\else
					\ifdim#1<0.9999\linewidth#1\else\z@\fi
						\expandafter\strip@prefix
					\fi
				}
				\def\TTo@foundtabstop#1>{}

				\newcommand\TabPositions[1]{\def\TabStopList{\z@,#1}}

				\newcommand\NumTabs[1]{%
					\def\TabStopList{}%
					\@tempdimb\linewidth
					\divide\@tempdimb by#1\relax
					\advance\@tempdimb 1sp % counteract rounding-down by \divide
					\CurrentLineWidth\z@
					\@whiledim\CurrentLineWidth<\linewidth\do {%
						\edef\TabStopList{\TabStopList\the\CurrentLineWidth,}%
						\advance\CurrentLineWidth\@tempdimb
					}%
					\edef\TabStopList{\TabStopList\linewidth}%
				}

				% default setting of tab positions:
				\TabPositions{\parindent,.5\linewidth}

				\newif\ifTTo@overlap \TTo@overlapfalse

				\@ifundefined{predisplaydirection}{
					\let\TTo@Direction\predisplaysize
					\let\predisplaydirection\@undefined
				}
				{
					\let\TTo@Direction\predisplaydirection
				}
