summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/noindentafter
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2014-12-02 00:51:34 +0000
committerKarl Berry <karl@freefriends.org>2014-12-02 00:51:34 +0000
commit2d61f61469832711b5c4f930c95962f722e9a88c (patch)
treea83becc8ef5ae9c39870b6a50837d6c7c901a909 /Master/texmf-dist/tex/latex/noindentafter
parent9be7603a9d9b17519eaa56496d97cebc8a8749c3 (diff)
noindentafter (1dec14)
git-svn-id: svn://tug.org/texlive/trunk@35709 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/noindentafter')
-rw-r--r--Master/texmf-dist/tex/latex/noindentafter/noindentafter.sty90
1 files changed, 73 insertions, 17 deletions
diff --git a/Master/texmf-dist/tex/latex/noindentafter/noindentafter.sty b/Master/texmf-dist/tex/latex/noindentafter/noindentafter.sty
index ef0131d85c2..2ea6e22b37d 100644
--- a/Master/texmf-dist/tex/latex/noindentafter/noindentafter.sty
+++ b/Master/texmf-dist/tex/latex/noindentafter/noindentafter.sty
@@ -1,6 +1,6 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \iffalse %%%%
% %
-% Copyright (c) 2013 - Michiel Helvensteijn - www.mhelvens.net %
+% Copyright (c) 2014 - Michiel Helvensteijn - www.mhelvens.net %
% %
% http://latex-noindentafter.googlecode.com %
% %
@@ -19,7 +19,7 @@
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \fi %%%%
-% \CheckSum{0}
+% \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
@@ -47,7 +47,7 @@
%
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{noindentafter}[2013/08/02 0.0.1
+\ProvidesPackage{noindentafter}[2014/11/30 0.2.2
prevent paragraph indentation after specific environments or macros]
% \end{macrocode}
%
@@ -63,10 +63,6 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
-% We only need |etoolbox|. The definitions below can probably
-% be rewritten not to need it, but for me it has not been
-% worth the effort.
-%
% \begin{macrocode}
\RequirePackage{etoolbox}
% \end{macrocode}
@@ -76,10 +72,69 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \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}
@@ -88,11 +143,7 @@
% indentation for whatever follows.
%
% \begin{macrocode}
-\newrobustcmd*{\NoIndentAfterThis}{%
- \par%
- \@afterindentfalse%
- \@afterheading%
-}
+\newrobustcmd*{\NoIndentAfterThis}{\@NoIndentAfter\par\par}
% \end{macrocode}
%
%\end{macro}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -102,12 +153,12 @@
% \needspace{5\baselineskip}\begin{macro}{\NoIndentAfterEnv}
%%% \marg{environment}\\
%
-% \noindent Append |\NoIndentAfterThis| to the output of
-% \meta{environment}.
+% \noindent Append |\@NoIndentAfter| to the output of
+% \meta{environment} by using the new environment hook.
%
% \begin{macrocode}
-\newrobustcmd*{\NoIndentAfterEnv}[1]{%
- \AfterEndEnvironment{#1}{\NoIndentAfterThis}%
+\newrobustcmd{\NoIndentAfterEnv}[1]{%
+ \csdef{@noindent@#1@hook}{\@NoIndentAfter}%
}
% \end{macrocode}
%
@@ -123,7 +174,12 @@
%
% \begin{macrocode}
\newrobustcmd*{\NoIndentAfterCmd}[1]{%
- \apptocmd{#1}{\NoIndentAfterThis}{}{}%
+ \apptocmd{#1}{\NoIndentAfterThis}{}{%
+ \PackageWarning{noindentafter}{%
+ Patching `\string#1' failed!\MessageBreak%
+ `\string\NoIndentAfterCmd' won't work%
+ }%
+ }%
}
% \end{macrocode}
%