blob: 7a362248e28b7049b28e88ff8a743181d20c312f [file] [log] [blame]
%% Notice to comply with Clause 6 of LPPL v 1.3c
%% This file is copied from TeX Live 2015/Debian.
%% Whole package including documentation can be obtained from:
%% https://ctan.org/pkg/noindentafter
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \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}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%