Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I'm trying to define an environment/command, with the following property: The immediate paragraph after the environment must not be indented. The following shows my attempt at defining such environment/command:

\makeatletter    
\newenvironment{NoIndEnv}{}{\par\@afterindentfalse\@afterheading}    
\newcommand{\NoIndCmd}[1]{#1 \par\@afterindentfalse\@afterheading}    
\makeatother

Now compare the following two:

\begin{NoIndEnv}
   Text ...
\end{NoIndEnv}

Some text ...

and

\NoIndCmd{Text ...}

Some text ...

For some reason, the environment definition works only if it is placed after a \section command; i.e.:

\section{}

\begin{NoIndEnv}
   Text ...
\end{NoIndEnv}

Some text ...

Could you please help me figure out what's wrong?

share|improve this question
1  
Simply ending it with \par\noindent doesn't work? –  Martin Scharrer Jul 17 '11 at 11:09
    
@Martin: Peculiarly, it does not work either! –  Sadeq Dousti Jul 17 '11 at 11:25
add comment

1 Answer 1

up vote 8 down vote accepted

The problem is that \@afterindentfalse\@afterheading are done inside a group, in the environment case. Solution: do them after the group has ended.

\newenvironment{NoIndEnv}
  {}
  {\par\aftergroup\@afterindentfalse\aftergroup\@afterheading}
share|improve this answer
1  
Thank you both for the question, and the answer: it is very useful and not that easy to find! –  Jérémie May 1 '12 at 21:20
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.