%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \iffalse %%%%
%                                                                              %
%  Copyright (c) 2014 - Michiel Helvensteijn - www.mhelvens.net                %
%                                                                              %
%  http://latex-noindentafter.googlecode.com                                   %
%                                                                              %
%  This work may be distributed and/or modified under the conditions           %
%  of the LaTeX Project Public License, either version 1.3 of this             %
%  license or (at your option) any later version. The latest version           %
%  of this license is in     http://www.latex-project.org/lppl.txt             %
%  and version 1.3 or later is part of all distributions of LaTeX              %
%  version 2005/12/01 or later.                                                %
%                                                                              %
%  This work has the LPPL maintenance status `maintained'.                     %
%                                                                              %
%  The Current Maintainer of this work is Michiel Helvensteijn.                %
%                                                                              %
%  This work consists of the files noindentafter.tex and noindentafter.sty.    %
%                                                                              %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \fi %%%%

% \CheckSum{50}
%
% \CharacterTable
%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!     Double quote  \"     Hash (number) \#
%   Dollar        \$     Percent       \%     Ampersand     \&
%   Acute accent  \'     Left paren    \(     Right paren   \)
%   Asterisk      \*     Plus          \+     Comma         \,
%   Minus         \-     Point         \.     Solidus       \/
%   Colon         \:     Semicolon     \;     Less than     \<
%   Equals        \=     Greater than  \>     Question mark \?
%   Commercial at \@     Left bracket  \[     Backslash     \\
%   Right bracket \]     Circumflex    \^     Underscore    \_
%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%   Right brace   \}     Tilde         \~}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \subsection{Package Info}                                                    %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%    \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{noindentafter}[2014/11/30 0.2.2
  prevent paragraph indentation after specific environments or macros]
%    \end{macrocode}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \subsection{Packages}                                                        %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%    \begin{macrocode}
\RequirePackage{etoolbox}
%    \end{macrocode}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \subsection{Patches}                                                         %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% \needspace{5\baselineskip}\begin{macro}{\end}
%
%  The package |etoolbox| provides the command
%  |\AfterEndEnvironment| which creates a hook executed at a
%  very late point inside the |\end| command. However, this
%  hook is still located before |\ignorespaces|, which is
%  too early to properly suppress the indention after an
%  environment. Therefore another hook is now added to |\end|
%  using |\patchcmd|. This new hook puts new code at the very
%  end.
%
%    \begin{macrocode}
\patchcmd\end{%
  \if@ignore\@ignorefalse\ignorespaces\fi%
}{%
  \if@ignore\@ignorefalse\ignorespaces\fi%
  \csuse{@noindent@#1@hook}%
}{}{%
  \PackageWarningNoLine{noindentafter}{%
    Patching `\string\end' failed!\MessageBreak%
    `\string\NoIndentAfter...' commands won't work%
  }%
}
%    \end{macrocode}
%
%\end{macro}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \subsection{Macros}                                                          %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% \needspace{5\baselineskip}\begin{macro}{\@NoIndentAfter}
%
%  \noindent This command implements the main principle
%  behind this package. It checks whether it is followed by
%  a paragraph. If so, the command |\par| is temporarily
%  changed using |\everypar|, so that the following paragraph
%  is not indented. Immediately afterwards, default paragraph
%  behavior is restored with |\@restorepar| (from the \LaTeX{}
%  base).
%
%    \begin{macrocode}
\newcommand*\@NoIndentAfter{%
  \@ifnextchar\par{%
    \def\par{%
      \everypar{\setbox\z@\lastbox\everypar{}}%
      \@restorepar%
    }%
  }{}%
}
%    \end{macrocode}
%
%\end{macro}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% \needspace{5\baselineskip}\begin{macro}{\NoIndentAfterThis}
%
%  \noindent Enforce a paragraph break and suppress
%  indentation for whatever follows.
% 
%    \begin{macrocode}
\newrobustcmd*{\NoIndentAfterThis}{\@NoIndentAfter\par\par}
%    \end{macrocode}
% 
%\end{macro}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  % \needspace{5\baselineskip}\begin{macro}{\NoIndentAfterEnv}
%%% \marg{environment}\\
%
%  \noindent Append |\@NoIndentAfter| to the output of
%  \meta{environment} by using the new environment hook.
% 
%    \begin{macrocode}
\newrobustcmd{\NoIndentAfterEnv}[1]{%
  \csdef{@noindent@#1@hook}{\@NoIndentAfter}%
}
%    \end{macrocode}
% 
%\end{macro}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  % \needspace{5\baselineskip}\begin{macro}{\NoIndentAfterCmd}
%%% \marg{command}\\
%
%  \noindent Append |\NoIndentAfterThis| to the output of
%  \meta{command}.
% 
%    \begin{macrocode}
\newrobustcmd*{\NoIndentAfterCmd}[1]{%
  \apptocmd{#1}{\NoIndentAfterThis}{}{%
    \PackageWarning{noindentafter}{%
      Patching `\string#1' failed!\MessageBreak%
      `\string\NoIndentAfterCmd' won't work%
    }%
  }%
}
%    \end{macrocode}
% 
%\end{macro}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



